From 3b502eb09bae69a2ccf8ed344d07b5741bb8b198 Mon Sep 17 00:00:00 2001 From: aB0t Date: Tue, 13 May 2025 13:39:32 +0000 Subject: [PATCH] Release of v5.1.1-alpha5 Refactor initialization flow to accommodate future scalability and integration with all designated areas. Refactor the Creator Builders class. Refactor the FieldString and FieldXML classes. --- CHANGELOG.md | 9 +- ComponentbuilderInstallerScript.php | 4 +- README.md | 14 +- admin/README.txt | 14 +- admin/access.xml | 49 +- ...ppets.css => initialization_selection.css} | 12 +- admin/assets/images/import.gif | Bin 66680 -> 0 bytes admin/assets/js/get_snippets.js | 540 - admin/assets/js/initialization_selection.js | 395 + admin/assets/js/search.js | 42 +- admin/compiler/joomla_3/import.gif | Bin 66680 -> 65516 bytes admin/compiler/joomla_4/ajax.gif | Bin 0 -> 65516 bytes admin/compiler/joomla_4/import.gif | Bin 66680 -> 0 bytes admin/compiler/joomla_4/settings.json | 4 +- admin/forms/dynamic_get.xml | 48 +- admin/forms/filter_snippets.xml | 26 +- admin/forms/joomla_component.xml | 1 - admin/forms/joomla_power.xml | 52 +- admin/forms/power.xml | 2 +- admin/forms/repository.xml | 12 +- admin/forms/snippet.xml | 54 +- .../en-GB/en-GB.com_componentbuilder.ini | 388 +- .../en-GB/en-GB.com_componentbuilder.sys.ini | 98 +- admin/layouts/powerselectiontable.php | 131 + admin/layouts/reposelectioncardbody.php | 59 + admin/sql/install.mysql.utf8.sql | 67 +- admin/src/Controller/Admin_viewController.php | 78 + .../src/Controller/Admin_viewsController.php | 81 + admin/src/Controller/AjaxController.php | 205 +- .../Custom_admin_viewController.php | 78 + .../Custom_admin_viewsController.php | 80 +- .../src/Controller/Custom_codeController.php | 79 + .../src/Controller/Custom_codesController.php | 81 + .../src/Controller/Dynamic_getController.php | 79 + .../src/Controller/Dynamic_getsController.php | 81 + admin/src/Controller/FieldController.php | 78 + admin/src/Controller/FieldsController.php | 81 + admin/src/Controller/FieldtypeController.php | 53 +- admin/src/Controller/FieldtypesController.php | 108 +- .../src/Controller/Get_snippetsController.php | 120 - ...port_joomla_componentsimportController.php | 1 - .../Initialization_selectionController.php | 57 + .../Controller/Joomla_componentController.php | 79 + .../Joomla_componentsController.php | 81 +- .../src/Controller/Joomla_powerController.php | 53 +- .../Controller/Joomla_powersController.php | 108 +- admin/src/Controller/LayoutController.php | 79 + admin/src/Controller/LayoutsController.php | 80 +- admin/src/Controller/LibrariesController.php | 80 +- admin/src/Controller/LibraryController.php | 125 +- admin/src/Controller/PowerController.php | 53 +- admin/src/Controller/PowersController.php | 108 +- admin/src/Controller/Site_viewController.php | 78 + admin/src/Controller/Site_viewsController.php | 80 +- admin/src/Controller/SnippetController.php | 79 + .../src/Controller/Snippet_typeController.php | 46 + admin/src/Controller/SnippetsController.php | 135 +- admin/src/Controller/TemplateController.php | 79 + admin/src/Controller/TemplatesController.php | 80 +- admin/src/Field/AdminviewsField.php | 65 - admin/src/Field/DynamicdashboardField.php | 37 +- admin/src/Field/LibraryField.php | 175 - admin/src/Field/SnippettypeField.php | 68 - admin/src/Helper/ComponentbuilderHelper.php | 2 +- admin/src/Model/AjaxModel.php | 632 +- admin/src/Model/FieldsModel.php | 2 +- admin/src/Model/Get_snippetsModel.php | 283 - .../Import_joomla_componentsimportModel.php | 8 +- .../Model/Initialization_selectionModel.php | 412 + admin/src/Model/Joomla_componentsModel.php | 1 - admin/src/Model/Joomla_powersModel.php | 2 +- admin/src/Model/RepositoriesModel.php | 6 +- admin/src/Model/SnippetModel.php | 28 +- admin/src/Model/SnippetsModel.php | 116 - admin/src/View/Admin_view/HtmlView.php | 20 + admin/src/View/Admin_views/HtmlView.php | 15 + admin/src/View/Custom_admin_view/HtmlView.php | 20 + .../src/View/Custom_admin_views/HtmlView.php | 16 +- admin/src/View/Custom_code/HtmlView.php | 20 + admin/src/View/Custom_codes/HtmlView.php | 16 +- admin/src/View/Dynamic_get/HtmlView.php | 20 + admin/src/View/Dynamic_gets/HtmlView.php | 15 + admin/src/View/Field/HtmlView.php | 20 + admin/src/View/Fields/HtmlView.php | 15 + admin/src/View/Fieldtype/HtmlView.php | 4 +- admin/src/View/Fieldtypes/HtmlView.php | 2 +- admin/src/View/Get_snippets/HtmlView.php | 397 - .../Initialization_selection/HtmlView.php | 211 + .../index.html | 0 admin/src/View/Joomla_component/HtmlView.php | 20 + admin/src/View/Joomla_components/HtmlView.php | 15 + admin/src/View/Layout/HtmlView.php | 20 + admin/src/View/Layouts/HtmlView.php | 16 +- admin/src/View/Libraries/HtmlView.php | 16 +- admin/src/View/Library/HtmlView.php | 20 + admin/src/View/Site_view/HtmlView.php | 20 + admin/src/View/Site_views/HtmlView.php | 16 +- admin/src/View/Snippet/HtmlView.php | 20 + admin/src/View/Snippets/HtmlView.php | 21 +- admin/src/View/Template/HtmlView.php | 20 + admin/src/View/Templates/HtmlView.php | 16 +- admin/tmpl/admin_custom_tabs/default.php | 2 +- admin/tmpl/admin_fields/default.php | 14 +- .../tmpl/admin_fields_conditions/default.php | 2 +- admin/tmpl/admin_fields_relations/default.php | 2 +- admin/tmpl/admin_view/default.php | 2 +- admin/tmpl/admin_views/default.php | 2 +- admin/tmpl/admin_views/modal.php | 2 +- admin/tmpl/class_extends/default.php | 2 +- admin/tmpl/class_method/default.php | 2 +- admin/tmpl/class_property/default.php | 2 +- admin/tmpl/compiler/default.php | 2 +- admin/tmpl/component_admin_views/default.php | 2 +- admin/tmpl/component_config/default.php | 2 +- .../component_custom_admin_menus/default.php | 2 +- .../component_custom_admin_views/default.php | 2 +- admin/tmpl/component_dashboard/default.php | 2 +- .../tmpl/component_files_folders/default.php | 2 +- admin/tmpl/component_modules/default.php | 2 +- admin/tmpl/component_mysql_tweaks/default.php | 2 +- admin/tmpl/component_placeholders/default.php | 2 +- admin/tmpl/component_plugins/default.php | 2 +- admin/tmpl/component_router/default.php | 2 +- admin/tmpl/component_site_views/default.php | 2 +- admin/tmpl/component_updates/default.php | 2 +- admin/tmpl/custom_admin_view/default.php | 2 +- admin/tmpl/custom_code/default.php | 2 +- admin/tmpl/custom_codes/default.php | 2 +- admin/tmpl/custom_codes/modal.php | 2 +- admin/tmpl/dynamic_get/default.php | 18 +- admin/tmpl/field/default.php | 2 +- admin/tmpl/fields/default.php | 2 +- admin/tmpl/fields/modal.php | 2 +- admin/tmpl/fieldtype/default.php | 2 +- admin/tmpl/get_snippets/default.php | 262 - admin/tmpl/help_document/default.php | 2 +- .../default.php | 2 +- .../tmpl/initialization_selection/default.php | 51 + .../default_selectionarea.php | 118 + .../default_selectionheader.php | 43 + .../index.html | 0 admin/tmpl/joomla_component/default.php | 2 +- admin/tmpl/joomla_components/default.php | 2 +- admin/tmpl/joomla_components/modal.php | 2 +- admin/tmpl/joomla_module/default.php | 2 +- .../default.php | 2 +- admin/tmpl/joomla_module_updates/default.php | 2 +- admin/tmpl/joomla_modules/default.php | 2 +- admin/tmpl/joomla_modules/modal.php | 2 +- admin/tmpl/joomla_plugin/default.php | 2 +- .../default.php | 2 +- admin/tmpl/joomla_plugin_group/default.php | 2 +- admin/tmpl/joomla_plugin_updates/default.php | 2 +- admin/tmpl/joomla_plugins/default.php | 2 +- admin/tmpl/joomla_plugins/modal.php | 2 +- admin/tmpl/joomla_power/default.php | 2 +- admin/tmpl/language/default.php | 2 +- admin/tmpl/language_translation/default.php | 2 +- admin/tmpl/languages/default.php | 2 +- admin/tmpl/languages/modal.php | 2 +- admin/tmpl/layout/default.php | 2 +- admin/tmpl/library/default.php | 2 +- admin/tmpl/library/modalreturn.php | 2 +- admin/tmpl/library_config/default.php | 2 +- .../library_files_folders_urls/default.php | 2 +- admin/tmpl/placeholder/default.php | 2 +- admin/tmpl/power/default.php | 2 +- admin/tmpl/powers/default.php | 2 +- admin/tmpl/powers/modal.php | 2 +- admin/tmpl/repository/default.php | 2 +- admin/tmpl/server/default.php | 2 +- admin/tmpl/site_view/default.php | 2 +- admin/tmpl/snippet_type/default.php | 2 +- admin/tmpl/template/default.php | 2 +- admin/tmpl/validation_rule/default.php | 2 +- componentbuilder.xml | 8 +- componentbuilder_update_server.xml | 4 +- .../src/Utilities/Response.php | 48 +- .../VDM.Joomla/src/Abstraction/Grep.php | 293 +- .../src/Abstraction/Remote/Base.php | 411 + .../src/Abstraction/Remote/Config.php | 417 + .../VDM.Joomla/src/Abstraction/Remote/Get.php | 203 +- .../VDM.Joomla/src/Abstraction/Remote/Set.php | 509 +- .../Compiler/Component/Dashboard.php | 323 +- .../src/Componentbuilder/Compiler/Config.php | 1 + .../Compiler/Creator/Builders.php | 1631 +- .../Compiler/Creator/FieldString.php | 1889 ++- .../Compiler/Creator/FieldXML.php | 1840 ++- .../Compiler/Helper/Compiler.php | 2 +- .../Componentbuilder/Compiler/Helper/Get.php | 1 + .../Compiler/Helper/Interpretation.php | 2 +- .../Interfaces/Creator/Fieldtypeinterface.php | 4 +- .../Componentbuilder/Compiler/JoomlaPower.php | 14 +- .../Compiler/Language/Extractor.php | 1 + .../Compiler/Service/Creator.php | 6 +- .../Compiler/Service/JoomlaPower.php | 23 +- .../Compiler/Service/Power.php | 38 + .../Componentbuilder/Data/Migrator/Guid.php | 12 +- .../src/Componentbuilder/Fieldtype/Grep.php | 18 +- .../Fieldtype/Readme/Item.php | 21 +- .../Fieldtype/Remote/Config.php | 154 + .../Componentbuilder/Fieldtype/Remote/Set.php | 101 +- .../Fieldtype/Service/Fieldtype.php | 58 +- .../src/Componentbuilder/JoomlaPower/Grep.php | 18 +- .../JoomlaPower/Remote/Config.php | 154 + .../JoomlaPower/Remote/Set.php | 85 +- .../JoomlaPower/Service/JoomlaPower.php | 58 +- .../{Compiler => JoomlaPower}/index.html | 0 .../Package/AdminView/Readme/Item.php | 80 + .../Package/AdminView/Readme/Main.php | 234 + .../{Database => AdminView/Readme}/index.html | 0 .../Package/AdminView/Remote/Config.php | 151 + .../{Display => AdminView/Remote}/index.html | 0 .../Package/Component/Readme/Item.php | 80 + .../Package/Component/Readme/Main.php | 234 + .../Package/Component/Readme/index.html | 1 + .../Package/Component/Remote/Config.php | 151 + .../Package/Component/Remote/index.html | 1 + .../src/Componentbuilder/Package/Config.php | 148 + .../Package/CustomAdminView/Readme/Item.php | 76 + .../Package/CustomAdminView/Readme/Main.php | 234 + .../Package/CustomAdminView/Readme/index.html | 1 + .../Package/CustomAdminView/Remote/Config.php | 151 + .../Package/CustomAdminView/Remote/index.html | 1 + .../Package/CustomCode/Readme/Item.php | 76 + .../Package/CustomCode/Readme/Main.php | 234 + .../Package/CustomCode/Readme/index.html | 1 + .../Package/CustomCode/Remote/Config.php | 153 + .../Package/CustomCode/Remote/index.html | 1 + .../Package/Database/Insert.php | 187 - .../Package/Database/Load.php | 127 - .../Package/Dependency/Resolver.php | 675 + .../Dependency/Tracker.php} | 19 +- .../Package/Dependency/index.html | 1 + .../Package/Display/Details.php | 281 - .../Package/DynamicGet/Readme/Item.php | 76 + .../Package/DynamicGet/Readme/Main.php | 234 + .../Package/DynamicGet/Readme/index.html | 1 + .../Package/DynamicGet/Remote/Config.php | 151 + .../Package/DynamicGet/Remote/index.html | 1 + .../src/Componentbuilder/Package/Factory.php | 57 +- .../Package/Field/Readme/Item.php | 76 + .../Package/Field/Readme/Main.php | 234 + .../Package/Field/Readme/index.html | 1 + .../Package/Field/Remote/Config.php | 151 + .../Package/Field/Remote/index.html | 1 + .../src/Componentbuilder/Package/Grep.php | 165 + .../Package/Layout/Readme/Item.php | 80 + .../Package/Layout/Readme/Main.php | 236 + .../Package/Layout/Readme/index.html | 1 + .../Package/Layout/Remote/Config.php | 153 + .../Package/Layout/Remote/index.html | 1 + .../Package/Library/Readme/Item.php | 77 + .../Package/Library/Readme/Main.php | 234 + .../Package/Library/Readme/index.html | 1 + .../Package/Library/Remote/Config.php | 152 + .../Package/Library/Remote/index.html | 1 + .../Remote/Get.php => Package/MessageBus.php} | 22 +- .../Package/Remote/CustomCode/Set.php | 145 + .../Package/Remote/CustomCode/index.html | 1 + .../Componentbuilder/Package/Remote/Set.php | 145 + .../Package/Remote/index.html | 1 + .../Package/Service/AdminView.php | 179 + .../Package/Service/Component.php | 179 + .../Package/Service/CustomAdminView.php | 180 + .../Package/Service/CustomCode.php | 180 + .../Package/Service/Database.php | 112 - .../Package/Service/Display.php | 55 - .../Package/Service/DynamicGet.php | 181 + .../Package/Service/Field.php | 179 + .../Package/Service/Layout.php | 180 + .../Package/Service/Library.php | 180 + .../Package/Service/Package.php | 105 + .../Package/Service/SiteView.php | 180 + .../Package/Service/Template.php | 180 + .../Package/SiteView/Readme/Item.php | 76 + .../Package/SiteView/Readme/Main.php | 234 + .../Package/SiteView/Readme/index.html | 1 + .../Package/SiteView/Remote/Config.php | 151 + .../Package/SiteView/Remote/index.html | 1 + .../Package/Template/Readme/Item.php | 82 + .../Package/Template/Readme/Main.php | 236 + .../Package/Template/Readme/index.html | 1 + .../Package/Template/Remote/Config.php | 153 + .../Package/Template/Remote/index.html | 1 + .../src/Componentbuilder/Power/Grep.php | 22 +- .../Power/Interfaces/TableInterface.php | 59 + .../Power/Interfaces/index.html | 1 + .../Componentbuilder/Power/Remote/Config.php | 168 + .../src/Componentbuilder/Power/Remote/Get.php | 7 - .../src/Componentbuilder/Power/Remote/Set.php | 241 +- .../Componentbuilder/Power/Service/Power.php | 58 +- .../src/Componentbuilder/Power/Table.php | 261 + .../src/Componentbuilder/Snippet/Config.php | 147 + .../src/Componentbuilder/Snippet/Factory.php | 66 + .../src/Componentbuilder/Snippet/Grep.php | 165 + .../Componentbuilder/Snippet/Readme/Item.php | 72 + .../Componentbuilder/Snippet/Readme/Main.php | 225 + .../Snippet/Readme/index.html | 1 + .../Snippet/Remote/Config.php | 153 + .../Componentbuilder/Snippet/Remote/Set.php | 158 + .../Snippet/Remote/index.html | 1 + .../Snippet/Service/Snippet.php | 231 + .../Snippet/Service/index.html | 1 + .../src/Componentbuilder/Snippet/index.html | 1 + .../VDM.Joomla/src/Componentbuilder/Table.php | 1986 ++- .../src/Componentbuilder/Table/Search.php | 12742 +--------------- .../VDM.Joomla/src/Data/Migrator/Guid.php | 233 +- .../src/Interfaces/GrepInterface.php | 66 +- .../src/Interfaces/Remote/BaseInterface.php | 53 + .../src/Interfaces/Remote/ConfigInterface.php | 174 + .../Remote/Dependency/ResolverInterface.php | 34 + .../Interfaces/Remote/Dependency/index.html | 1 + .../src/Interfaces/Remote/GetInterface.php | 78 +- .../src/Interfaces/Remote/SetInterface.php | 45 +- .../css/datatables.min.css | 61 + media/datatable-bootstrap5/css/index.html | 1 + media/datatable-bootstrap5/index.html | 1 + .../datatable-bootstrap5/js/datatables.min.js | 197 + media/datatable-bootstrap5/js/index.html | 1 + media/datatable-bootstrap5/js/pdfmake.min.js | 3 + media/datatable-bootstrap5/js/vfs_fonts.js | 6 + media/js/custom_code.js | 4 +- media/js/dynamic_get.js | 469 +- media/js/field.js | 6 +- media/js/joomla_plugin.js | 2 +- media/js/placeholder.js | 4 +- media/js/power.js | 2 +- media/js/validation_rule.js | 4 +- media/uikit-v3/css/index.html | 1 + media/uikit-v3/css/uikit.min.css | 1 + media/uikit-v3/index.html | 1 + media/uikit-v3/js/Uploader.min.js | 2 + media/uikit-v3/js/index.html | 1 + media/uikit-v3/js/uikit-icons.min.js | 1 + media/uikit-v3/js/uikit.min.js | 1 + 336 files changed, 22863 insertions(+), 20677 deletions(-) rename admin/assets/css/{get_snippets.css => initialization_selection.css} (68%) delete mode 100644 admin/assets/images/import.gif delete mode 100644 admin/assets/js/get_snippets.js create mode 100644 admin/assets/js/initialization_selection.js create mode 100644 admin/compiler/joomla_4/ajax.gif delete mode 100644 admin/compiler/joomla_4/import.gif create mode 100644 admin/layouts/powerselectiontable.php create mode 100644 admin/layouts/reposelectioncardbody.php delete mode 100644 admin/src/Controller/Get_snippetsController.php create mode 100644 admin/src/Controller/Initialization_selectionController.php delete mode 100644 admin/src/Field/AdminviewsField.php delete mode 100644 admin/src/Field/LibraryField.php delete mode 100644 admin/src/Field/SnippettypeField.php delete mode 100644 admin/src/Model/Get_snippetsModel.php create mode 100644 admin/src/Model/Initialization_selectionModel.php delete mode 100644 admin/src/View/Get_snippets/HtmlView.php create mode 100644 admin/src/View/Initialization_selection/HtmlView.php rename admin/src/View/{Get_snippets => Initialization_selection}/index.html (100%) delete mode 100644 admin/tmpl/get_snippets/default.php create mode 100644 admin/tmpl/initialization_selection/default.php create mode 100644 admin/tmpl/initialization_selection/default_selectionarea.php create mode 100644 admin/tmpl/initialization_selection/default_selectionheader.php rename admin/tmpl/{get_snippets => initialization_selection}/index.html (100%) create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Abstraction/Remote/Base.php create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Abstraction/Remote/Config.php create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Fieldtype/Remote/Config.php create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/JoomlaPower/Remote/Config.php rename libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/{Compiler => JoomlaPower}/index.html (100%) create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/AdminView/Readme/Item.php create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/AdminView/Readme/Main.php rename libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/{Database => AdminView/Readme}/index.html (100%) create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/AdminView/Remote/Config.php rename libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/{Display => AdminView/Remote}/index.html (100%) create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/Component/Readme/Item.php create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/Component/Readme/Main.php create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/Component/Readme/index.html create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/Component/Remote/Config.php create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/Component/Remote/index.html create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/Config.php create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/CustomAdminView/Readme/Item.php create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/CustomAdminView/Readme/Main.php create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/CustomAdminView/Readme/index.html create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/CustomAdminView/Remote/Config.php create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/CustomAdminView/Remote/index.html create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/CustomCode/Readme/Item.php create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/CustomCode/Readme/Main.php create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/CustomCode/Readme/index.html create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/CustomCode/Remote/Config.php create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/CustomCode/Remote/index.html delete mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/Database/Insert.php delete mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/Database/Load.php create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/Dependency/Resolver.php rename libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/{JoomlaPower/Remote/Get.php => Package/Dependency/Tracker.php} (51%) create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/Dependency/index.html delete mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/Display/Details.php create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/DynamicGet/Readme/Item.php create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/DynamicGet/Readme/Main.php create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/DynamicGet/Readme/index.html create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/DynamicGet/Remote/Config.php create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/DynamicGet/Remote/index.html create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/Field/Readme/Item.php create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/Field/Readme/Main.php create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/Field/Readme/index.html create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/Field/Remote/Config.php create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/Field/Remote/index.html create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/Grep.php create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/Layout/Readme/Item.php create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/Layout/Readme/Main.php create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/Layout/Readme/index.html create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/Layout/Remote/Config.php create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/Layout/Remote/index.html create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/Library/Readme/Item.php create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/Library/Readme/Main.php create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/Library/Readme/index.html create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/Library/Remote/Config.php create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/Library/Remote/index.html rename libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/{Fieldtype/Remote/Get.php => Package/MessageBus.php} (52%) create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/Remote/CustomCode/Set.php create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/Remote/CustomCode/index.html create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/Remote/Set.php create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/Remote/index.html create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/Service/AdminView.php create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/Service/Component.php create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/Service/CustomAdminView.php create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/Service/CustomCode.php delete mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/Service/Database.php delete mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/Service/Display.php create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/Service/DynamicGet.php create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/Service/Field.php create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/Service/Layout.php create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/Service/Library.php create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/Service/Package.php create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/Service/SiteView.php create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/Service/Template.php create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/SiteView/Readme/Item.php create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/SiteView/Readme/Main.php create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/SiteView/Readme/index.html create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/SiteView/Remote/Config.php create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/SiteView/Remote/index.html create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/Template/Readme/Item.php create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/Template/Readme/Main.php create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/Template/Readme/index.html create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/Template/Remote/Config.php create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Package/Template/Remote/index.html create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Power/Interfaces/TableInterface.php create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Power/Interfaces/index.html create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Power/Remote/Config.php create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Power/Table.php create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Snippet/Config.php create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Snippet/Factory.php create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Snippet/Grep.php create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Snippet/Readme/Item.php create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Snippet/Readme/Main.php create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Snippet/Readme/index.html create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Snippet/Remote/Config.php create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Snippet/Remote/Set.php create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Snippet/Remote/index.html create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Snippet/Service/Snippet.php create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Snippet/Service/index.html create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Componentbuilder/Snippet/index.html create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Interfaces/Remote/BaseInterface.php create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Interfaces/Remote/ConfigInterface.php create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Interfaces/Remote/Dependency/ResolverInterface.php create mode 100644 libraries/vendor_jcb/VDM.Joomla/src/Interfaces/Remote/Dependency/index.html create mode 100644 media/datatable-bootstrap5/css/datatables.min.css create mode 100644 media/datatable-bootstrap5/css/index.html create mode 100644 media/datatable-bootstrap5/index.html create mode 100644 media/datatable-bootstrap5/js/datatables.min.js create mode 100644 media/datatable-bootstrap5/js/index.html create mode 100644 media/datatable-bootstrap5/js/pdfmake.min.js create mode 100644 media/datatable-bootstrap5/js/vfs_fonts.js create mode 100644 media/uikit-v3/css/index.html create mode 100644 media/uikit-v3/css/uikit.min.css create mode 100644 media/uikit-v3/index.html create mode 100644 media/uikit-v3/js/Uploader.min.js create mode 100644 media/uikit-v3/js/index.html create mode 100644 media/uikit-v3/js/uikit-icons.min.js create mode 100644 media/uikit-v3/js/uikit.min.js diff --git a/CHANGELOG.md b/CHANGELOG.md index a9c9eb5e9..bc2d25ce5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,8 @@ -# v5.1.1-alpha4 +# v5.1.1-alpha5 -- Add all needed Powers to the release package, to speed-up the build of the demo component. +- Refactor initialization flow to accommodate future scalability and integration with all designated areas. +- Refactor the Creator Builders class. +- Refactor the FieldString and FieldXML classes. # v5.1.1-alpha @@ -14,7 +16,8 @@ - Adds new country related tables and fields to the Demo Component. - Resolves the Database Updating issue in the compiler. #1212,#1209 - Adds the Component Commands Plugin to the CLI for Import of spreadsheet data-sets. -- Add edit and create options to the ModalSelect Field (in Joomla 5) +- Add edit and create options to the ModalSelect Field (in Joomla 5) +- Add all needed Powers to the release package, to speed-up the build of the demo component. # v5.1.0 diff --git a/ComponentbuilderInstallerScript.php b/ComponentbuilderInstallerScript.php index 1857256c0..280cb1605 100644 --- a/ComponentbuilderInstallerScript.php +++ b/ComponentbuilderInstallerScript.php @@ -1516,7 +1516,7 @@ class Com_ComponentbuilderInstallerScript implements InstallerScriptInterface // Fix the assets table rules column size. - $this->setDatabaseAssetsRulesFix(95520, "MEDIUMTEXT"); + $this->setDatabaseAssetsRulesFix(98560, "MEDIUMTEXT"); // Install the global extension params. $this->setExtensionsParams( '{"autorName":"Llewellyn van der Merwe","autorEmail":"joomla@vdm.io","subform_layouts":{"subform_layouts0":{"view_field":"default","layout":"repeatablejcbjfive"}},"editor":"none","manage_jcb_package_directories":"2","set_browser_storage":"1","storage_time_to_live":"global","super_powers_documentation":"0","powers_repository":"0","super_powers_repositories":"0","builder_gif_size":"480-272","compiler_plugin":["componentbuilderactionlogcompiler","componentbuilderfieldorderingcompiler","componentbuilderheaderscompiler","componentbuilderpowersautoloadercompiler","componentbuilderprivacycompiler"],"add_menu_prefix":"1","menu_prefix":"»","namespace_prefix":"JCB","minify":"0","language":"en-GB","percentagelanguageadd":"30","assets_table_fix":"2","compiler_field_builder_type":"2","field_name_builder":"2","type_name_builder":"2","import_guid_only":"1","export_language_strings":"1","cronjob_backup_type":"1","cronjob_backup_server":"0","backup_package_name":"JCB_Backup_[YEAR]_[MONTH]_[DAY]","export_company":"Vast Development Method","export_owner":"Llewellyn van der Merwe","export_email":"joomla@vdm.io","export_website":"https://dev.vdm.io/","export_license":"GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html","export_copyright":"Copyright (C) 2015. All Rights Reserved","check_in":"-1 day","save_history":"1","history_limit":"10","add_jquery_framework":"1","uikit_load":"1","uikit_min":"","uikit_style":""}' @@ -3292,7 +3292,7 @@ class Com_ComponentbuilderInstallerScript implements InstallerScriptInterface echo '
-

Upgrade to Version 5.1.1-alpha4 Was Successful! Let us know if anything is not working as expected.

'; +

Upgrade to Version 5.1.1-alpha5 Was Successful! Let us know if anything is not working as expected.

'; // Add/Update component in the action logs extensions table. $this->setActionLogsExtensions(); diff --git a/README.md b/README.md index 784bb8dac..69d386ceb 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ The Component Builder for [Joomla](https://extensions.joomla.org/extension/compo Whether you're a seasoned [Joomla](https://extensions.joomla.org/extension/component-builder/) developer, or have just started, Component Builder will save you lots of time and money. A real must have! -You can install it quite easily and with no limitations. On [gitea](https://git.vdm.dev/joomla/Component-Builder/tags) is the latest release (5.1.1-alpha4) with **ALL** its features and **ALL** concepts totally open-source and free! +You can install it quite easily and with no limitations. On [gitea](https://git.vdm.dev/joomla/Component-Builder/tags) is the latest release (5.1.1-alpha5) with **ALL** its features and **ALL** concepts totally open-source and free! > Watch Quick Build of a Hello World component in [JCB on Youtube](https://www.youtube.com/watch?v=IQfsLYIeblk&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=45) @@ -144,14 +144,14 @@ TODO + *Author*: [Llewellyn van der Merwe](mailto:joomla@vdm.io) + *Name*: [Component Builder](https://git.vdm.dev/joomla/Component-Builder) + *First Build*: 30th April, 2015 -+ *Last Build*: 30th March, 2025 -+ *Version*: 5.1.1-alpha4 ++ *Last Build*: 13th May, 2025 ++ *Version*: 5.1.1-alpha5 + *Copyright*: Copyright (C) 2015 Vast Development Method. All rights reserved. + *License*: GNU General Public License version 2 or later; see LICENSE.txt -+ *Line count*: **979081** -+ *Field count*: **2098** -+ *File count*: **6625** -+ *Folder count*: **645** ++ *Line count*: **1032893** ++ *Field count*: **2099** ++ *File count*: **7002** ++ *Folder count*: **678** > This **component** was build with a [Joomla](https://extensions.joomla.org/extension/component-builder/) [Automated Component Builder](https://www.joomlacomponentbuilder.com). > Developed by [Llewellyn van der Merwe](mailto:joomla@vdm.io) diff --git a/admin/README.txt b/admin/README.txt index 784bb8dac..69d386ceb 100644 --- a/admin/README.txt +++ b/admin/README.txt @@ -9,7 +9,7 @@ The Component Builder for [Joomla](https://extensions.joomla.org/extension/compo Whether you're a seasoned [Joomla](https://extensions.joomla.org/extension/component-builder/) developer, or have just started, Component Builder will save you lots of time and money. A real must have! -You can install it quite easily and with no limitations. On [gitea](https://git.vdm.dev/joomla/Component-Builder/tags) is the latest release (5.1.1-alpha4) with **ALL** its features and **ALL** concepts totally open-source and free! +You can install it quite easily and with no limitations. On [gitea](https://git.vdm.dev/joomla/Component-Builder/tags) is the latest release (5.1.1-alpha5) with **ALL** its features and **ALL** concepts totally open-source and free! > Watch Quick Build of a Hello World component in [JCB on Youtube](https://www.youtube.com/watch?v=IQfsLYIeblk&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=45) @@ -144,14 +144,14 @@ TODO + *Author*: [Llewellyn van der Merwe](mailto:joomla@vdm.io) + *Name*: [Component Builder](https://git.vdm.dev/joomla/Component-Builder) + *First Build*: 30th April, 2015 -+ *Last Build*: 30th March, 2025 -+ *Version*: 5.1.1-alpha4 ++ *Last Build*: 13th May, 2025 ++ *Version*: 5.1.1-alpha5 + *Copyright*: Copyright (C) 2015 Vast Development Method. All rights reserved. + *License*: GNU General Public License version 2 or later; see LICENSE.txt -+ *Line count*: **979081** -+ *Field count*: **2098** -+ *File count*: **6625** -+ *Folder count*: **645** ++ *Line count*: **1032893** ++ *Field count*: **2099** ++ *File count*: **7002** ++ *Folder count*: **678** > This **component** was build with a [Joomla](https://extensions.joomla.org/extension/component-builder/) [Automated Component Builder](https://www.joomlacomponentbuilder.com). > Developed by [Llewellyn van der Merwe](mailto:joomla@vdm.io) diff --git a/admin/access.xml b/admin/access.xml index ae3451105..5c4881b40 100644 --- a/admin/access.xml +++ b/admin/access.xml @@ -13,6 +13,9 @@ + + + @@ -230,13 +233,17 @@ - + + + - + + + @@ -249,6 +256,9 @@ + + + @@ -260,6 +270,9 @@ + + + @@ -284,13 +297,6 @@ - - - - - - - @@ -302,6 +308,9 @@ + + + @@ -419,7 +428,9 @@ - + + + @@ -455,7 +466,9 @@ - + + + @@ -497,6 +510,7 @@ + @@ -509,14 +523,17 @@ - + + + - - + + + @@ -530,7 +547,9 @@ - + + + diff --git a/admin/assets/css/get_snippets.css b/admin/assets/css/initialization_selection.css similarity index 68% rename from admin/assets/css/get_snippets.css rename to admin/assets/css/initialization_selection.css index 2731fc5aa..4ac292920 100644 --- a/admin/assets/css/get_snippets.css +++ b/admin/assets/css/initialization_selection.css @@ -10,4 +10,14 @@ /* CSS Document */ - +html.dark .no-select, +html.dark .no-select td { + color: #515151; + cursor: not-allowed; +} + +html.light .no-select, +html.light .no-select td { + color: #999; + cursor: not-allowed; +} diff --git a/admin/assets/images/import.gif b/admin/assets/images/import.gif deleted file mode 100644 index 10bcb856924dbc48ac739332a40ce1617c88687b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66680 zcmd?RcUY5YyFL1*bEQD&p$MUeYUo%e^eTcPq9TSO(u9bh2#5*2O6Xle6%ddnMNvaj zP?RDFDk@C`Ma4R{aei;ie2nFr`R1J8-uqnFKK!M0a<6r-_1x=zUUN$`gLSTSfDS|h zfTUSaW@V>yXyMr1c^#MJFAp5>TVFg}6=YSn`|M=xk?YSwFHbjw*k}|CEw+T-@W1eIr9IsC?7bK7 zJ0pf(eEOZvh>VJkiH(a-NK8sjIho2#OV7y6%FfBn%P%M_I#tXnDJ?6ns61U&U2~?k zuKsL8V^ed>xz@J!j`J5fFJ8LL?&|L8?YnZdf8ZA(h%gS2;Kk-(;lRWsASRRvx$_V} zi>ITer$q@&40>T&kjejST7t>*YI^P@^w)>5)K8xqJ{-=JA-0C67!cqTKmc(B0y9y$ zno2ouA@W?8V!%JEk3y&kH_&Ew!%&j2cCa4bzBn>}zBn=5It|{QcQ{hG{QM30T7xe= zSf{Dkp#M;{PgJAtuYsRU_fAt&k3!C}>brG*!AG~pMXn17w*4X&%iEz9$27y?^ z((XhU(R$ugf+?5Y z30u0yKs0~|04oYs5u_$qQ5*kE5CI?&K|mDN_j*K>gFpef3)UNiLS{`bhw%^QK{S9A z2hjjx1td2}Xb>?Vga4bL0D>Uxe;x$kLMW7U2Sxx6ToL6ISc>l)g7+#QdQ}qN%qKiN zc?aN!HQ`1^CZ~tt*UzGd=I#O_4Un0omy!*FvsYeDBhKD@_hjXMJ^X#Ml18p7->+jc zdsbB7U592gY~mkb-SlYUZr=2(`~`8l@UkYI@6)o83{gS53l&{PQAiQ3SNWFBl{X3u z4nLV1Xg*CEDyBrC*I2bwjg(nrsO-JgQhn8lE77nZ@c5B3SL6M$&o zLWJ8eKs0~|5vktBp! z13}hoQN{o=KpP;8!Zuq5C@f(BPZI}rie8<$? z9`c0f;QTD0{P^kEt!KlirMaGV^aNt+^HYF>oreUA$!uTo=l~tHNjcIC!3c$U!FfN0 zWMbAH)W%~|ZU8rnMavjzcy;k}J^(wcu)W54psC_|4%z)$;kQso|7$4toEAcfSlDS& zdO6=C3u%Fe6K9Mq2@=mQ!d4&uOigBQ-R$& zP$tvoxVF8ku1@F14mI}WkrK@KcAaZ?+EnjvLwEI$)@jb$%PtMKi!9q?9}i5*zP8sH zeo@AOz(*F9eIy_=mTr$traxAZ?j{k|v%`Q{8DWShmBQmn&FD)d8YfCxHkA)#kp2pB zr~VRgx?Y^0B1(jZgm)0(P)9j6FN1L{2qdgjYLGhM3cI^Uj!+v-R4*V2Yi*O-?s!xv zArtkPA8U%MSa)f~Y>d*ukkRsZY8%lkq4C0UAGIrGTiPfvdkJNKdpfSw-y;*MCe$0u zc!V8K-K(j(0eBF*m%NjSmx+v~*RZ27(zc!LFXv7~elLC6KcNqlKCtnD=;O4cuPz8g zAJ~kzxC0Rfwm-0of#?H4$AO_$IM|gy^sRP1F8V;|aS;c$FtGQ1r;2yyLBxT$0}%>> z4(ym*#DQ?*3M|-O!Ilbw4usx6mr79j^8RnpX9AN(p)ksc{xCcM5OV-d$zbU|D%rVt zxkQno1M;PLHAIz44<$sG{&bHTU*|L+OnBo=PHMa{{Vdj@@Q#+jR4K)>o1;*dA>hmgteb1=!RmY z8ga|*3PGW5t$=~Ac$KKK5?oE>iHVh9Gqm!e$*_Es-($5d%7<*Vjlkipm*SshA*>LC z+55E$1Pb=zdm}1rN?HjJlsTsOewf&6Cjq~T8 zPBge*KegpT>$7|9ho3&UaiQ(SLoWK>_kG{^^#2-qAnriT1uYl1@qy?AamNK9*NJnX z$L)Qf@dD8Y0*V8%uT~6H-c<~O&;#)WVvq|)u&MoN&hB!|83^+~8ed>02tY0p!A=Ka zkSn_&xEjX1)=xz z?d(AD^z@>9ObJb6PE%pYtMP3VOwtd_=Fc%8Rb}YAK*~b=+*bU4N4G~9&x+O?HuyQE+B{<~6DMGnf^LqNvp!|h(e&tguD0)k!H(v~ zLoDMYsV(PQmbkbJ-Omu^=k=hHJJ`@-z=uHDNEO}Xte`+-Kf5MnY3}_j-5{-PQh!=T zF8n(3j@<59_o!G0nxG`ThiE>Y)oSFy`Q4VU6(y)K!w_hqvSo9R7{5{EBl>;8zjOm3D5&{TAe)oS*uq z4VC8JA2c$&`(=3WIS31&ldyWBF}6Bl^oS&Y^V+VBWm+JTPMk>QmrTnyLUP{4NX&{L z8LTTv6HP8jj=)zk4T`gylH}@RaG8xAfI(}h-uY$*iG1l8F8ln2i&qXA)D%~ryFsfe znJC^cM$_kS9>~_ccZg?rLM(cYrZ$&>ghfAhJAIeNF8GCAfSbQ9~01|zEgJu zMCYZBrOikvh*i817o%n?!2}}HrYs<30*Q#b0&Bfr&i3I3{sP;7*HaDB@Jp1( z(dg9mar8bxc096Rr_L9&1%*1W&SwgjCHflXw@g;q{)@PL+e(r!V!YSoHzOF4 z_e9IDrJpkiTJ{Wqcuelwm%@5=7RanUXXNQ?Jh7~!TcUDxiBVxa61{D^V4`obFxa$U zPZ$n0-N5ES5FXDa6(PO{|Ic1_)lGcc(m~jBXDVPz=Neh=Neb-hpqt<}bFlaR+|Rj= z76d%l)j`06Egi)C>S2ltc3v?5IIE%zu5bazy0rvKvq5ktM<{x_5-5U&o zEa<%QE%hfvB>~_jisE*J;Y5@QrG>=JM? z#8_3P5Fy87$J)Vk$LLj-RIH3GoIp#b|wV*d%rHiGIUmLr&znCQ2b_q6A%vV+r zt9+Zac2J(Cs(qhD5KWK8J*p-tK(*jx9pUA7zrO$Q@zdwuzWn|t>?ReG%^NMFyIRHsJ%863@|s2;*+z=RRViaa&h6*x($(&G2z`8x*vvanS@vmF*k5FI6CMo`kcTzjJaBI`pFIrI* zPG*g6S|Y}y8VLn%xa$Y*?x@|^F2kF0AlKruIneQ5r!<2u-2ufBREPi!g=Tq9Gk6rM zrX#U>i__eeF68Jn6GQL}F~NV=+1LL+?Cjj0&K(e}x)yF{|F)-t_JwO!K-~Y(*0~KG z^e!OQ|4Cct%nM@6xow?mSwO6VF8bS^&ILLM?xMfx?7o(|)O60_h-4fBMIRG@XaEC?=D_5UfIv^qx# zQBiM$Ey+C=f422#O;eaw+eH&ZN?vTZ#-%IBrV=GlgDY3$&*b_G-@Ky6ACniLhabN} zhL41<^?Yzem-kKpN^;==T3=pIULXDZPjF{>wev?_iG=Y$kJO}f^Q&+GCoZI-wc_Sf zgAtL3MiLG0m0{9#MyrWi?klEw(HzF!_DfwOt3)c_i<;d}FzYGhmvt2!{DKbF`gLV_ zNx@SqNk2Z6F>F@Y5N&lKs6YGg9*4EM8uMe>b2T}VyKxMwC*#)vKi=14YM&5Lq=eF| zAlkq?oBs15ubAe%sk1gZrn6(A$HYyye1 zDit7`IPuBXX)CA`ph9q^0;CeiqaUsR*Rcnv6QD?d$5l`*K>Bcv5y%>@`(O1&Ka*%x zGycZ?S40?)uOY5z1`l~@kb)uY59RntTh1CAR`64XPRJ3CFe1%l{X@fI zGDO534DeU8TQtsA=a=3riG-@QoDoLGv>}tzgBH6u=!-w=+@fXS^EF9It`-_zZ(;*j z*eNO2jLkhQuRu$fr~525jl{&>a~SJ%h}{0gX0ynV-CFF%5^PDfgWY^C-dj#gE&CF~ zzNcD2%*yWLnRa%Nr{F7Vwq@KJu5A`QXZ&o2q;;ol2{r2ho>!%NgE?)+7HYAr#e@X>4SeUQ^{rb{ST3ryc z@~tUV|qsNUNb3(?l96S?c9BMvR_Zc;PGY>Dp@ za-;F(UZEToN}(2b^RK+)vs4f=AJmbfAGnL<>u*Ve?&yn!Cf3#BrO;oz_U{kDuqpN^ z)$<3SoZ@Iq(z{VgKlm?$e;`pHoj}_K5(%_mAi+Rht&S5p=MSrJkU}84KvIDO`1aVr zHD4g3xC0%KU7#$12M&$}`~J)Ua%T0|0U9xoUEIkI$TTjyxWnwfcVVDJ6@D*KE$vVG zJ(8-yNYcnY4nuXGHRxPy5%+;+POY@Dn(FUO5Slh`#@zp%ZZ94X9TouaF%pw3&~Y&_ z{-UbMSxGW(abYxnt?c3xuuz56L+(DOD+a+VPqNA^|?Y;zzu8!7W!VNdA zwClEnu#iRMHCJB2%|X8g?xd&JTMbur_;!7k@n)SXjZxh$k&WIn zY~-m?eZjH8AhgO9Qak9_&qG|1ocudRnV}2uhYf+)B6=H(gv0@;iiDDOCVlw^LO892 z;B>%YD2A3-Ald(6#l%YyCr|MUeibC(DEb=0vml;;WepQe>yFRAv)Tt7d99I76{P96 z#0h%SQxt&aYjJ+$;Bd1bIb@;Fs~yn3U^$r9qvvmai$_8ydD=q?oRcX~mmW5Uc#k32 zE(oo2S~rejbXtp~lp79o`HVrRYr<5&R9@Zj@Z#{blzokH&~?lfyuk52GmeSYZ*__E z%un-5QQOOCOm>7$e**&$lcZF}ge+7)J{A6M>2Wa~DZcA_|F`ZZa&ZG9a8&y9$sXj_ zD!I7Fde9E89_zoJMc%9)>p}kqj;ui40?Eal*n<>X@z*+> zk)&9CrkPsUP_)0K<-&Fxp+4zAZfCQ)7zza;*`l&D4`X`IK(VKVuUqTj+fVC^mMINI zbl9j9=FTeeJuH=DCq1OTKl7AlkPZE6&lP_ z7TKG$F5<2AW4<|K{?nxFuIZOEt)Z0wo|H!een}j0YLXav;kYqxRD6>5jzdx43#{;i z4rRr|O(2$!@|yE5BI%~|rSfI92ExZUIHigYQN^CYotZdG?MYl?-TJ3u?b#tKHE6(u z#KpIrH1Swjxn>%R40)?#Vfe--`2yqKlttIU(V1Sq?n9s5jYQ|y>O03vKIVJ*NMjB9 zLQT|Ma}Kuc!8)Byrmw6WYEQRV)p-T`k;D}b`yJYon36LjFtxbG6k%?im0<1q66+-Q z=z0-2X%Jg41kv1h$Ikse1}CZ1enfifrOpqp7jK>UOU1f50igHZY5S@b`6)qw-m7Zb zsN{Yo9?2_D6r=-;O)I=awdWxv-2sUX>^*y=?RMl!>l=1WZJ2L}v9PGG6+-xI{J?-5 z_1;ApSE|gVy9-KtjXA8*0J0r18!yTy32MK2e{%nUj>Fdu5h;d1GTV=pjaIu2V?(w& zHOQ!Gm1Y%K6y;JS1d-T*6pZiQfnmuWoe_$COOb2O?h4k@RlvR%kO@3MufC1DQ{m`P zWcy~_9cea=MOmN?na6-iaot&$Wb zkRLLPKN!-n<2OzlV$>(aryF`je3u*h70)a;4eC8zZXPyMebzGO==<#4WDS^3f4lne zH)8qiumY4xkjxy$at>jCW^aFznVY@+G@}D)&y`Hjfr5Mn`3dSJ$XIR&_oEdBHw^xj zz;VdT&0D^PaNqLzuT1ElV(F2tn6Yl#HSYe-b}=kl7vhJk1^0LMiA8F#uRF#MuCz~u z8rO}7^o0+-aDVPX_i;TQ6YGRkcMf6r!Q+@|R=7yN5MS~1`~pbi(JVl#pp41KC{Cd( zmDg^QmRBHXscchVW&4!YT`*M^EA~a}WF+_b!a4^Gv_zBIdE_jy`1b0P*E*4`Vtk$j z@_%`hVrmU{75T$j;R9p{h8`Ei6YBKv` zytP5HSf3n?h<WflnI0u)I(_t4*2b<5d%)rtKRxQ7#gM;Vd9Dgno1Ny<@4$xi6w;c5HG z^pxxzQ)Ozpf6+m7ZV9*yNAxFRrL8nhor(=Wlr}lwq{5D4^)0l|*4ODYcbUt}w#6Bo zHxq3Oj}P0>J!0G%SBEvjGo33w6IoWv4mJw?DMgeVFDUuRn}@D1E3h< z>mAL$?sIW?eNd=}5p94CJh?x|eb**H#i$;qSLUGvJ-mQC?A@5R@nREp(Q*O>rP_z@ zd;THpeR|HpD_Zgg2djEE^pRS&c}7PSYXkZEeA`~O=6j4Jd-RkQ37dxT}lBs15A&kf)>((3(k9XCHN=`=N`P5W*C?(Jm3{vusNJ1k31D$o2QpLxM zNty*`4v5m+U7?=l5)Ii6z=qljPU5Xqy7DbM|RPm*V8@Kq;dY!$5U)sCTnqM8k(}pzS*bZs@tAiag?GTV!dIs zxxScWvN+}zlE)#8P`h7(Y@U)Gw{1AstJ~dB$nICSJu6R`(ibC}b*aa;QfB=$KdTgG zFEwhxV&`_W7OM3q_xRiSP1hzfq_bU((ihIn&7Hg6Odwp2+3n6Uj=^nP~Jl`*OZr&fA*Bk5_lDN`bV zGVx|x>6Xx)GS`(;4@kmkv_}|aFJ@$+@AtOb<^La~9-TbjFH4%@Y5arK;S>moPN-=5 zO6qFZg&tR+zY`?2b@t?@=M#Y-sm;}SASh)#-3mtxryU2$oyic9Vp55GR-pl5c_d6$ zxv%EQRDZc7Gt?pGpv-VsZrSjSZ@ zbGfUmrqKtc;x{kRnoV`mW&wkT%SLyn*o|w=^!F{EC5b;<)^1n~xRyN3(}x2fj-N`8 zO^Wbgv*a{*x)Uf$B`wh7&);^Wm9ul4NIryy_jRW(pMYlT+yNB2kXZS9-oOF|i}uny ztT7-{Ci5lHKr{%w!zdDBNM0Y?lyu0|Fiu=fhgr3ag{(ywWSPm$uK{2=dh4EyBOhu@&$ z0FQLB1*t1X)|Dh4qT9otbq)zWG8eXNewv3F-825lk8Pl`z_%Q&H`#5ZS=x0l9j}L{ zYs)=-G1s4=y6kGr8G5|c4+PdXWIvz{!r5nwGYZe>P7U`E!b zZVgNPrgaayHd1x@uMf}69|q0;OQl&W&t22!9PG@w zKUnNM15DEvx;Qr52TgZtdkC1xZ8@9sOMVZD*3>jfr_OlsB z1dGd!JCT(RNLlI>CebDGDua~7$}$d$TVQFlBL8)#Tb-GijsAk>`)Z4t0KK+8rxG^X zRpV0A%}C8Fqt+5#%>g91In;Hi>+r1^vo+_-(x*)z-4_lT%)T%o-!9B>Fcn6#v<$a<7~9SwbrPuqifW4~++0M`{-O6gHsjP)Gi-R7QHB%hc7H>A7EX-%#Me&1q6+*k?8a(T*1m z&d4sv6U6sV95kGZM2SZR|FO5aN@p4OjVm-F5S>4qqC7343cbACiZ{WJ$BMnTk(9+R zmw)V(F-4nSr0wgMwKJ$#oH#^v6h#MpEV9q_v_^}aNXW*U3OZfu00qvLhf8D z1*tsGH2HUQ&aYylcL>Wl!6{dMfZ7iljr4;avJGQ z8F&}Mb>}VTMRqEY4c1wQ*BVrxT36^X?Sacs-xigj;DJcywGFgzQ8=hkZRn6xj(>y* zflysC5$z%tNUGH?ItJQLG~K`Jipta4mfJp0>)ID;p4NB1d-C+`zh$(5*!M%Q4L=RF zf8N*u(B+*O-|HY@BgR=4Q{oyt@+Ey9xxqLe zs}-p!2Tc;U(r76->Nd*HD^|YumW+KGgaaVf{4j;?5p(W1(~T!oS-^f^qdZ}-3&}!! z5fGhrG-OwK^zrPFYq{T>;hQZ<-keJ0v0TfDR8b9LQCwN<(T)6tw{<+rDVSsX0?D5e z`OKjwul34!uh7pZw<3QbsqI`;d2rcuv*~sMq`_52LF$!42%+K1-VMgW{-1w^T=0@o zZa%lN&96i>AF@Hb&?j*52Cv|?jAI`IaDldvUgC&2ElP6ImO{3>a0mulXEsl5tZsX` zs>rtx4#~${Mvdrghux-1A_9PSnN&B@qvwOBlJ<)MwF)n;cPDwog*N>zJl#}JdA*_Q z-Nw^9B5WU2$vUEcKUB&#>wpkVS5+xb2l8fC|ZVA&5v zF_H0CA&oKVc?lsp4PE<{n7y;Ir2biR)U6xs@woN#Oel=Ep?vP&Qy8??hg1pEY=}6~ zZYs-cl9sK3XVEaZ#zGB%hYQcjqbw03Oca2ZR;SS;avk?Wia15_ut?Y*`{=Rmd;6s> z>dJ8gg+#-1Wsfsc_f{p9ZgV3p$(ii918n)+c;t~1Enya#Z@@#mp@1#vh)PPYtf|2x z4NR_DofU^fK}d^C@4COH@ShWH&oj?jr;a>*);1lh`n-J!{{8X!XKMeGyz1Lc)Ky+{ z^Qv#RmR2LHZ>hbST7lI5b`$m6)aqMyuclVtj=2AAD*P?AkI8Ft?x%_$Jnp5_=g`m& zu}kYqveGE1t}#Zk%@|Tc*;QN22mBs)x)gu>XdeL+vBJqkoH!_K8fZcW5u0czn=3XNKDN$tCj~t0KH6=S-hx16L(>vsa2isBI z+9s+LftP^#_UPRf;xy)?IM^57>`)&QySPPY`a0dqCb_xMCMR=9I>3EFvcNBZ*ekIS z{0sptie!!TYtCIsL5R25>P8v6cG~v_%38>D!*GSZyRI~#HFrO_Y=g(nZvYxx<)Ltw z-`rj`xXXN6Z}hhL)yp|C(zcW0?jJNUeH{zIt%EX;G}X(bGYBiMFp06%>T~T(F?&R1 zqk0=l#;q?>sPOO~(tOu1*MLlqj1%m~p$KzC#|y?QOGsJX>?eK=?4>>@CpLJc6nEuVEEGCm?GaKRKt%xph6>e`v{ao zQs!7ITMNxHDW}w~P49xkGCGB;5+cy{6&~@(?Zzd>Q?#tOT^~7&-?vdtfxU@9H|$D$PN;=O)vj8Caz` zclqPbyJTOlK7-*j*b}(1G?P$K$mI z?`+ZTxa~V?$|=D8j$om?^_+hxVs{FugUcm(LruM=I^E}eVUJJB^PM@vo2)!aG$!xz zwVl+OH9A%0eC_?qjuKgdEE;z*8cI^R1(i48UBB^=p=>cAci@~>q?Jgwpbm44zTzhW z_$j^}CiiO+zO0oK#V%}^F-%}&W>6Q#1X*$|meQ$yRI)&1g@XC(U3+Wdd@k+6XEqRq z@sVhet#DdZtUGZ+OT+VqZ^no)4o9-%p?wm0-W4AH32i$YtWkuG5?rhKa>ps2K4vO? zda=oNpg%W`T2-s!voM5F*(!^F-#m*f2v#Q@6n_;fqGwwOj^+%X-fI`W96~9vjYIr$ z*!&U$A`S@G#;i?gOcY@VUqh8q#sq=5#p9TA@tkVXyNX*l>+@eWJqA1$pG}bhnqb>@ zYutjcBcRpLhy;2BFJu2H8f%FS3Cr-9wQXz3=q`(2FM<2NqY>JgKQ|ee&c?!$0-mKat()`(=~ASvLNG)!e9< zYs$H6^xQinAd|V={$V{5r1ZCUL%B$ZtRD399VBe8Logix0x zA6I)hyq}LKAwDMuOsm6^{owY5jL>qC+|$7dei^3<6~!%;%bI=3Rc-E&^5hGlnwH1v ze3G@>+htUhP$H^WD_l$MUL^~`?y{tYD>?cQo9o!R%|RJ?2b zv{lS&$}eWXER+`S)^+i}z$ZF(yD;UtDd}uS7BhbK=uJ#lWUx@lYme?s{=F?nQY_Nv zrpz=_$@zDPb^JLZ`pHwdGwE4?0&dSuEymXUU-BSfq|kvwCVklGy>K;??wPw}Kr%c( z;pMQ0xxBubfrl}~MFu6x@!!+~iS(F0*(hgcImo zR$%Wji@Lya5t$yP&oOX9lCuIDf{$X?&62S$=TfIXCD9DkjimB<9O#Xz5 zYIli&m!;#$!cF>NUIKD4+6o$X7lyM7$XG-t&|+X;(tcRRfE1y;vQgin#f67icXB=B zmKmzOY_nakDDGu}m@_50er;$sC9U=O>r*R{r`;e^wW$*gZyeveRLTl{-!Yd)-!_2X zq7*}1%sBDk82Ct#kX;SbBlqk{Sut*3&e2ZAhCHGOs^ZwlQU`GYt((Iv0god;QF>#b zIgIG*ykdyG{5FIKDYV?vhqNPjn+J{VrR8Mow^(^7uKvcPf}kJ7y0sbSx6aHm8wX<~ zxj91i2gYs5QxryPbXSVEU)=R|Vqq2QVN`U)*41`LEq>yF5IOvg6(-8jFvIDTWUiMG zZ15PbP3ksRHbQZ%83~tmTpxpUZLFr8K4sel?t4yB=s03uNOD&L5>d8TNg}pePWnxS1&!bR;3G06C z!0+}{V4qo&>cnG6qv687-0r~O<1gYnzN zv(H<%Y+su#Okj%zht`J+cX2YVGeoUv z=j8G^W!7~QiO+}e5*4mQcd3r#?7Hx_6Zavn4EsiiW#NvBN~K-=j^EIe)bB7B9j+(=T~;tXS3nlc33O0-yB|2^zj73TLj|Psq^Z z`Bu9(`Zz_wWEMq?kr{6+PGbEU-~dv);edw%G6hLN@7knnf$Z}*OwWp{WyS5!BVXCS z2J$BB#yXDjU$@)F~@ZJeAC z=fjUH2qOhl{|N=3MbMUZ#vsVJ%h6{Lvf9Op#Yr?XE3>z!cO^AZk?4Ds`o_VVq;aW^$~ zHdne!mGuR~ZuSFUrmfUcMMXQRC)~O};j2u$b%>K|KMr`tL8c?$vyc9lo_MKVU@~?& zz^`IL`!$?);mIS=6JBqYXXj4$@xx|Fr$R$#%DNq;0_&| zd0pnbh$vA##iCTE=Zgk^LrqHwAu!pfV3!Y%&||ZxbYWiqPJSve$>!()AZeNy6MLmp z$;WFn!|!22g!9>HlVcVYmB@XztuUZ#_g&S6mOe|ogGk+3rNF5*O>XG|lE;oJ&^xLb z4wV7^lcqIBX3juKrU{X@7@d5nz-MFSucegT0uPxZ&uL$MEx9wTqW5}4#kyLxfgQ7b zVLs1)gSWhyQGH*@d3}fmpPyCVOSO+UvHniSfX8U@5rbsCE1P%Vs_p}A>n6;x=-4=W z1OF*tcXW3L%}xvTTTpaK2$D?e!D-I3C*w$!RkMj-4Z1lS&p@HzD{L)tUuO&4Hxi}NK)^}A4q4;N)H3K?T`yt?&lg1L+7v&TwOxWeii5}eQA4K;^BSs%(u zLpD-+WQ19$C8BOS8=9AM2XQVUGT@U;mq78+S9DJ81(? zKy%tAv!4L+)GX0iuu3w>wh(7<0?6L5dSAb^zZz7xxlXL<(_G##{Y`79TWhn zAjJm#mE_9M)Sj7L`#~{3Q`6@38F~6SonfX5rrJt)eMeo5<6)uh3XvH{gx93HOY`mk zZ&ZYb!!paf*Gkiv@`;x6{-;;~0bAa(OI7kD&5h3redyzYeSa~ygv_gu{Jby z@4nzKCUS?efb40C*zEy#KQKF!1~iZpWE!jnQXqoTt_0*uD^#r5Ria(GQQ0XTo!X%F zxxQwWY6v^c@a@JNM16^}es*Ot-n-At%E9gZ{n~AE-6mU0Yj}t=-318XU=cYxv6`a(M)#n^|nA_ z*Cqua^Al27vX+p6FpjUG2|5lKeE6r|zw>o^G~>I5`stFl2~jh;ICt-@8p(3}(?YBS-Ze?*u!~`X@TF*N!f$V>%`NRm z*OUNfO(@SJl!G>-Rw6GRm!G;Zl5jg(v@Avf|Y;?`t$qEvuPNz%tslVTc zIkn%z2qvJ>4#jkRk!Mk3-zn3&Ve&du{`fx_KFJ3o_2Q!d&vw#Y1SI_B08IXl(xVV$T-V*7NA z0O4)Xx@%a-l6-8Q|ARyHjmoAwl@!*+zqN`ELkC8|`Jl!QtjJEg`w^US$XF#H$FpK9 z$})zj1eJXI-PbXiK{N}U{QnkibLMSm?y#*@!s2_={xi@2iI{^7=Q{SE^RiXb{y!X+ zeb4j2b&`){)3&8>P5U{1HgE|TG^_xFZ?6UVYhB3H^C878XWcjDMUm{fRfquxBNg$m zBXRMjFc}6-k9UWhc1mOlTrMFmST)O^vBp7^5mmO2KflUT!G%@?h}mH4PPH(g)$KcV zr7M~P6a}sQ%Ffl{JNj+-dk3j%*7&{~{sZF{;^l*iig0V`x?2H++w&%Vr!p4qmZXUWw0rn$Oj$8^4KGWnH+lxS7BRR2dntq9uc!ZT-uW5 z$i^v|kPXthZQxit0LAONx0RE1gB;Eoy~tTfn1fq(Uzz ze~M99fCW)-MrH3!d6nHn63adg*jG=cjl*Tnm>^TCs~QGvkoAHyKCVFiE)JZb33ngR ztxTO<*SA!p#bbA(532}`-bP>J-@y53?qA)O*>r-ObC} z1lMj?w#&J&7$nbY5GHWS+OgN{>Se)oE&4AZCb|foEyfRy zTeMIpzpSx|O-6sTPX{dEDrrXWHE<#<{B{-I5LolY1lSWzj3v#+%RjNBpqDc(rU9(o z@D;3Bd6k==T#F+bfIH~Ad&-3i^TXFaUu5o%ITo0}1V-3aX#s`w`He$+;U{rhv!f&q zrjVQzG(2KN`s4P@HnETO83->>vqHvVlMhsOCxiq{je2U}!h6akI&b79nLb05GENQ9 zvv=4BK=PAd5Z=hBlG{2Bkv!Ui_#T&JN1vsNT+f=N%EJFX4bQ&tA5Y|~$mz8PskDCtHoja;)v$n^#PC@JT{5p|`y+`0S$eD*e z&_}nm2S<|TY}D_xhFp0yuG_-@x(#lB-d^p?@nigQMrbetkDd!YV~OCoxC~)cGOfR6 z;M2V_lv1esMH9&aA)*L}IBw?3vXawja4JGTL`>h1w&YRqg~B80Vr$tvbn=EAkJifT z3@RfNA`$ptQdY+*`gl2gjb=k+Mx_L{eR!DK-HWQ(Q8H;k;a}4xkCnDo?ysgw8^jc8+nDn=Q=rXzBQ_IhAN2t>~wlUn)BZ+FX@&#SwJLO zLa&j1Fw&dS2Sv@uL>*Dqco~UVci&!0SjKB!!d+L35d|Ain2zLp&1=&}%AWE`%{|Q9 zfa8$9pn9Iu1(aggt; zk00Y+mtLK)gB;{K_SNW&>)1g$uaccRfdd`;>UGXl#}3kYb;8bd?BLo9_r~<lUA=a`H3{H0S z>DD{e^+G1zTf$$>sjI|zbBB%OrHlGtLaxwZBRfZH*UZ|0J}VY%lNVjI<;jiIL1yZ>&rUB5>!~^Wzok5VI;`SBw`iP>Ubx4Oy52~e?utZ`*x}R} z%9Vhby+)I2Q3qn-8VVYIfrq-0L2Fe68ZU`J)PyATuHOuKvo|pX^2D)&2q@66`trH7 z{yy&~;I0JiA5GQ!w5icZAD!0)XiaO`Yziz7&+v81aNpvC^?s5#S9}J<&3h7g0=g}V%yrUuVY4Pq`_SFL= z1?E-5U3S50Oi59^WP3c~!Hi`p^k`@!1F7V-Qdq(?`yZnAyvq-n_}{p6F0nz9bGO<+ z@#a1U0TgnO;b4IF!)cs5UH?JIxd9sYwl*lt-~~@m#kteYu_B0MIz5La5{m)1Bc#M`lA&BSZ2Y!7t`*O?e0RT{>%}3wLA6nGO_WTsvL#4Az zz$NoZ`+GN1F)QGs*>Q&gV*Irt6O%mE_-XqN9fv1pWm_R)6>0fYNNr)9Iw<7& zX@%*93A=drrX9kfs@qN1)Q8sr;=54V7sL5s9sQ!c%zVTyXlFiuTmLSMESAGWKzmKG z!@AD67_yUi-D4_xe5V|4Fb%oQiudlNSgQ6e`0OR>{L}3;7SYiQxkf=eyAj$9SfefD zZWaLs3Y61ffQ#K7{7t(!HI-pg7!c_uAnx*je?w(C(mV~>;*n@EY+{*V4pr;St+)CD zf&S_@Prg<9aFc;3P0DpxS(47PQ>5R(o{r2H7c()FtZ9kI#J`)B?5zOiMo#Zd39mTj zD5XJgnUuBK6YYISHG|e*InkN|K+P^czN=LG99&E@4 zec-F4*A&c|oV3g}-jVcs!&Sis{exS(md2_@Ya7zCVDYgHho4@;mNBBqdO{6TYsBN4 zDoHMaFFwvLOF-4KZ*7_p8bvPc^T?!D+gO34bmdp~>c z@7~Y;=sf2VA^!NOD4p9~qkn}f8cBAQoYpVq#YC1+``iQ`>@ zpt5K(^_|kZs3E)FSk(tQER%hsOtXy6nf@Xq@j=5-czg*x{y+wfGHEYJP+{z!=^>aN zus+;l=6j)da!YPp?gAWRGVu!A(o=eLRIQ%nSjTz0yF;)4VJjP2?7?adKrI@F8WZTa7ksJkqOJw#0#Jb7D5UF^D~<3c~aJm_2{F$>Nqc@N3}F^P6Sg=!XNp1}?mKPW5}T^S~a= z$~t#U`=2xCPCr=FX`QY1D#i!1y=dY`` zZj+;A#HE^;SLE;zLWNi;MQ#)q~ES{ikY2goQ zsWo`arT3XV+Z5O0B*M6ec6s!CFsv(a=UUUC>3v3`40mT@Ngx>#e64;oF{-By9VgwR zp1qDGsbN8Ww05=;ezT_L{<@lAp&Q@2AGW1WYmfP9Y;-O%mM)ym^OjGJz!J1sWe+Xu ziy<>cp6kO6HtSIs-kvGBahz~s$xiECP(BZaY5!rv6=VwhVv^ztyvD!f9H1Z1@**3Z z982WB?v880NTT-C5Rddtkm(W^_%N~|6L_jwO&zrNA)eyc9g|fNHnr=7*C*CPk4s$- zcbGT?I5s?hUoG;};}BX*cg&0z7xV2I=Z<%G?-*L0J!(?=`>>!LEhS2TY3lm%uUF(`CU<||XH8YOKgx%E3H&lgR+up4Kg#}{;E zM%kMk>m$Zj*x-ytg(eep+;EJVy-tlME!Cus?^SngI}%HyN^}mI88-J;`?fgqj@HDe zogX}qdx1(gv_ZU^VQ_u0G^JbBSxszWB24_jNs&jR)v_+c*L_@uzci9_YWs+uQ?nN> zxWqp>?7(+q<(sG(y0u97qP)$V^ph_pIIc*i;|cF6#BhQrDp~v|A+o#Q0Jj)_TC31b zjfrjyXlm2z&kuZt%|%x+%*rH{F>NCz*fUCD<)RTm-uo^}w%X@sZW49Hec0B^m0Yqi z(C@?h$Iyg`WXP@#M9+g!R5Fy-#yw*RzXDM=07o51J};5jYJmKN#SCNwDxvAKO>0d} ztt6pnBCnmqmO*Ea+GgCO_d!wFM`u6Up^g_MmEE*&bCm6nZmci3i^&vFe6CMYH5`TX z_T<|2wUywhPYCYoV`G&~x12t(ZKZ(m@rZiK^>0Ibbvo-%h^;%GT|dC8UoWS*{-?FZ7XB zK_{bQBbTuaMuboORRcE~LCmk04fvQD_RN#j7j%QBYip4yi21 z&`v@e%K5R0dqg68aM6tGSyduEpVgXh5occ?aaTgexP-YqrX2FOJ#{_kM&6+Q$rR#A z?OXBGTb*zGQ1rCHF@IZ2Q9c#)nl3Y01Jn4!c@ksE4EP5Vb7*9(f7V5-C@@ZBK?nny zoyo?4rPi$kG-;G9@a_Mlx5mB@lMXAGA~Vd_n}U*?s+bO$6kLdR1sjyqB6wKQUiDqS zY`;)vb~F?1r5KQ~Gm*S1D%D93{*CV3h177wCS@gVqbQ`6ZbakT%7dEci&fDw$+)JB^n7lU%1q)C*2V7}*)Hj$IrcITc=bD8XQp z@ui+5otvjruU&)an{-Z`U`kIntDd{a4Bo_j=X}7kSEbSw<>BcL^32nGpIy9ZDTlN5 z$&zw2x~PYiy|%`*_U#yIaX!&6qsoms`QWgWr1#X2UR@G8Gijv>rSa$Z6UOknmW!R5 zt(N(0yG2ijAvFHt$z>6>>bsqG=G8J5mbOQWW$pR-o$Zes$RcRInYA8$(!;GilO>on z18KJ58D48Uf;F6kqaGtYTa{Q{3E_s%8Obm0ic`l8o9HKEei8oc9v9lzo-VjYKmBl^ zUmgZ&Ai?!QCm$_7ff#C;jK8D_#5ncIkMR3I5^?e-FLX@EXEr_bFuWBWntfjL<5(3d z+#@oV9j=gj9c&(PKi|wFPTb~@R&(U;RxE`TXP(Tjd9|pW+44&1!|aIN{ax=R&S>&o z#jl8evcCv@Dqdy$*kx?bZ!EW0C)cA+sPLruBSUp=sU?!~Nopc=7G6<|^ns~_8r5g0 z5NA9))A_iAP$(X0uj73fBMW*0q~7ARc)D%zbo$@i1O1y74PcKZd+CaDp&=K^j0>8i zpduX3;;$q_lGL31gKj(!MnvannpOTaN_w8c2Z#HTFEpa#<5Yj>Vpa#}rA@CM=|J6T zFjR?rmUGJ_IJIG&X1mzB723C05wC9LBJ)Qvu4qKwn#R60Mg%2AuFm*gR+Zy@ra51L zLQ78wZNU}L#etfWj)P2kK|0RS&tU2L%c66Tk%KaOel8B;>Vg^@#A*=9=Oi>(68o}5 z3B>C8*Go8gIgrpmnLQ_=fuIe-HOLM?>i;h#w0VL0i!;MDw%ZoQ;aSQCavTjD&fn5c4n&N_2DI zJc^&|dn*6Nicw);cB z|L1I-1jfd(7B>~ysv-8TOeSU*4}$9yqkpZA&g-m9TMJh1I`Z=&UqSs0fs1GrKKR$l zjU#wYLVVohf3=zc-iRCECR|MKL-2TJ*A^*oF=Y}WTGT46$jlsM;9C7>( z5XYHAyxj1vLq1-eXCVgbj9zx1J(zdx(T`+`!QP}~d%fM;cKrz9z;3j4#w2=r+HURK zvK&;L|E?rKsv-&+$fD8AAC4PyeP96(%g>Luk<6RpGscEEQ}+I zQu+GN93>9#)i`=CWAj#?%3}~A@n$q`;0T3^7Mr>RwLS{PicJ>csiMbj?|k-pt%jat zLl3hbA}f7J!lDBb&g>9mr_@1{bb^#vSE&%A43|UE6n>^JJ_g zTTXh*vksmqc^zzk$~P7KEQHeXn0dv_tP~UY0}BN^ucP$q zH|fYDoDgrM<#`urK_i{L{_iW5b3PrekYW*DG7e!1a|`5uZRSJ&E+8~9;vJ@)ye(;h zITdG$-M%fNK_e}Q_TYlmYOCwKBy-d#Gkt==(z8n&Ye=CMKeJx@?B?n{HvIjN%JXX) zt66sK)JHoeuwDR1bQ%ze=5BT`xpZaWZnWcSRD`V0KIP*WdfKGy^?xeRo+}K&4)}+Z zw<*t^p&Z0|ZUJqi=a2ZwtqIzC$6Yt`p;=b(0dGEBrEX>?;pfe-@R-}19IJ0+833{`pQXE#6x&P_7?#WE_Ugi?)05sge4{f4-VBi(LP)Nfs8d_D?CX|+G-Pp_ZG zYH6$;L?2d-HpgtpBzlKB79+}mM-2|s;WPU(|*OB<*{M5Yc6 z-lr5a0`))mRl;vG0G2*eyR_n5xI%P%!X9G*+D?YIN@8Y~yG*!mE`#epQSrK!sj>Nx zc1cyS?#}%O!&X%v&crb)VjG*)SC`pq&rW%W-peDS9u#R%9;Z??Hmeh!Q`BaQq|dEJ z(0b~Uc!;#%K+N=Id(@tjc782mEph_5F`)u8L{IfPIdM`9iZxS{gXcfXB+;lP4ZH-y zkuGZ6&?yIRgS)(I6Qn<1GSmy^4=M=9WgRS5vO>OB;wM+B%*YCmg5w4&$-$UM-X>d3 z9Hn%R&~{_jo+_2~e~&OPP}U3+Kk*vhazY*Jtf$jrPH;Nfk+b_}h7QxWq8KARI`n9~ z>g8sz`|sUm8@~jbdh$z$L zfw4GqTm~WU%gxYvuC3KGX=cGEh7j5i_V&TCN*s@Ph>V|)7E!G8{IOdoKDW*9wl`}J z2#c&KU7;Np)NvrdakL}n)uAN+y5Z?uy1UyR-T)rCr~!mgDieJq`^avKStC=jv7D;GBdXH&l)FtkMYePT-00cQN0pUp;O@|KV@@HLjdWKc zk{+0+J;byR2w&UPhdxt9H;49J8V>k+6m9Wb`8Sj@j!XswGR_sT1x>ESBd45w#Pdf^ zL54op!v>l7T%T*cST_F(3Fvc!)EngB^ZQ(XCzj2>-`yqX#-CE2${9ryZbv{H?+Z>< zvq#aef}dl~bhYo>cu4McSj!s6Uw(fg#}yq)P1OI9k?N|pBPNO(o|cT8pR3T zdIPzt$E%aH&v~dQxApD2$`CtnKv^WZYbC zrB4n`wugP*^X>2QzQhLiC!>=l1e+CT-j^cpO%b*g75qDch3GUZ`Re2wL$RjbZFK^C z(#~?U^=}wlv9ARtnua4%KJypc@OvwHswTnEUV_0tFz#JZA#gkY{Wb3vzD!|<a_@DHNQ9wzX9Hr$f&8F&`xZ)uaDh~VS1bpw}W4| zj`{r>QDN-n@u~+`aQj_4f5;QIZxfK@LGD38StA&4m7b8-&9zVMDF=(xS?fc!x65(A zi7=kvDwqCo3gb9Cc8_@LGqDltDf#d8KiN zk*^ebXv_@$c@?us53`os#PWR}&E8^qkiGajqMn3;UlKVpqlglj5kRA*aKm-T_(Y@$ z*UEkD&!{6RD2_!d7<=yV8qgZuV-j21{R3y89xp8%F;=|*e~GHs$2h~;Xw!QI1Nsf? z4tW@yaF^GjmE1|c|Mrj~|4aBwA}%(&)zjoy*`J7G|sJQ1h!~V|g=QMKA4_n~*OE$y) zru3d@CbTjUav6DR!P1tTV+iUFpLKpuIzJt@f^J6{OzQpedx;#^_Q;qWk)l7QT3}?o zG`)TOlw%SLb{HC^{fG|E-%9h4NsLa8RxOQHldNf0l5!^%=GQ^$4LgkvCO1biT`t=X2f5oI9dAO|r=O%XZ zh-S%ick#<(k*{6(Lc8-iG`EUK^qlI@PIi=}da`keh-^QaRi{xf*Jzn-Fy_I)V+pVoalH$U7!=QCmw>dAG@4{`=ZUDw z-ly9=B(FjUU=dUj>#(cb`Js}b+3Pm=x5rQ89|((mcRc;(VK`BfKM_H(!g>6Rpx6+khC>y_BoejVn)HSzcPd!c6LgIvkw2|bqFss5PWgoK9;2?T zM2o(YYY9Dgc@WnhMHy`|l?cd`R6X@xn#~KH7s8iViO9~*pJ7(wtW134(yly7w`rg> ztl^n@m5O0NNBEK@Kk~K4lMg(N>)}E?W0}RZh2WVOp|{Exct0X^v-N{>L<@Zi?%N2- z{7`Z2VP5pMTf#V*S4UV(vkwPPvW#l)(i6EAD6C3elu*7DhFI)ooo;S4i`OzFGw-1k zhRq5I%0i5FTqZ6>3B3Q@?UIPy=l;MMh)lqwnL&OwGObiC}BammyXbx~W)lPatg*@g%eOl|oP>ub;zj ztc`^svjTPIli59xVas{5eCEG%k)&^dZuY-45&udzljhM4^glN_d-Z`8WCuZvLc!BN zO(HP1|3C$!JNK`6WHA=BJJ2Y4Uvi3tf>hj|jBQ9pPO{z}dVCxvw=|5GUXT?ipR9mV zSH_n4h*dJT@*5R4{tjbh7uYnAXB^sowzQX z4uVv}40}$GOWbhcZ|)A%3lp6>Le`qLFyyn5ZF-SOcpEA({(dt$t+3AS`ULt zLiU!SD>Ppm_CAtC-!Wp~X7#|NT8fVrGP{!pO4jE6r`vcAjdwkQcpHNoi;%z5t80|8 zqa`S{=X0)KEAv%SLgNY#|VD(?PnQkTYih5@FQ!sRP2xkqMVV4Ct2?=;_CNR z*N?RE-P!x3v6*Y*sI`j&{8{$>c{2tNlu>^VyUdiO=P=~;&Cnk7p;HSF; zLs5?&avi4<86j)D@_lsFCOeT^c4K~H8k^Q9GwI}0R_o}(nzXES*4R$L%&dNvH?|c0 z+BFGXOU~h46YL+jZOsY##pb8#K?ykDDwcANaV^D{M5eIr=S!NH^zn9|dCF!898vl| zA&@EL>QTeXq88R=fs8UFTR!22A zkV4<}_&tUv$;MS|a{Gl{`0GR`Mc> zho2rlc2QjY-M&=lS!jh^llQAr?)(TWPt}ow9wwUlr=ues(^L>Urg)5NiFb*AEi-** zrJ*<4(8Dr)^D{%-h@QNj6*S9GXRsQTdZD)|PIQUO}@CG;aJEYpwfQwZC^mbUBw z_Y-(m)%ev7ipl!-6E_tSpB3S-{|tI6VAFhxrAU$Ce|@uaAHqnTf()b=Zr7|tF7WcjiT1Zg&gL3iAnE38VVP@laZ2oO zkDPr~Ujv?q<-YvG{oj~6`~Ld+>)T#!ZoJ)is4V2mFv{p|NU6omZW7FqzP*ABOz)ez zWC7pmY%;ie=Hxwat8yk{fw% ziq8%T^Vm9^WU0>zeV4}eawSyDSuE(~t{)#)>Yi?<;$4iwvT69yH=3qXwHGD?;HR$fTWSe{ z!c=tlBLjPF;>~0(G~+q&M7gi<;MLzN|98z zvAZgX{hyCgw5DIxrcTA1QTUQoox{!Od`MlIo|ARQ;pRx~op2Qg9p4ElF z1O3a+-Jdde5z6p?>_RmYP5F8Gd}>*8Q*nG;20D{mnX@r^IX<{LhKopvACAR($#U;^14~R=z_bkd_ zbO+=#Buk)l7vdu1`L&rAp$u7vw6*=z%hGbaMi%Jej{!9VoWgrqA~~_;A%TKtTJ!4j z2PLAFsq~&**5BAe9#8_m^=v$XD3v|Q%*TO&Iq<8knE$pG>i~zC9!T5f_BA!rJRh>&AxHT+J3It#r>%`P{(6<8VKF zgCUY+G|gv34?s4#T%q^jG)NQ_5B$>QDu1`fc=P{H0d4V}?f-8A+HlB9ctIk2N<73N zJSWG&=tz`}i&r51E&L0b9Z9?}3%J1)R=AWt^$btHTX>wU$_hd(K}yg!I(GX$Wo2Gm zeEvH5tQd%><{=te$%I4-YRxi=iy<+0-o}PlqFi0RTGfHQ$`n_@eU)d5%a6xN#+_n#GWg0o?)=6b<7kp#MNvXU3d{+ndHaY7LTnT>o%(v*} zk~$=|{pEJv~zgL$_8JCS z1yjfNZRC0BuyT)~S>11jDhTzTRVNAjs3G%?|s_^0xp0HAHEEoLY($u6!Kk5BM{zeE46p`Wi-U_&LhypMqC!4C(E z`E<3X4b4}L<_F5~pH5|5%zE2H6E#x38+kivU|*n&7QWQ+X|=ADlTG+L?JKgnJMSGT zOAiiVR+`Toc4GT)2mSAYf)_Rc=((s2If)V z6=qq@oU0z3n;(l~HITFyZ%mt8zX0Y)fhY#9dH_EL!zlA(^}-E^Y^*Gp7X=bH7()S9 zz~%xqkia;@D0BBWzjF^F$D5n?T&Rm#sWYjT@87F?ZIjrs3yNa9QR6omI#Zj}>gp7BKO7rT#Jse{$<&nVM9i@4 zp8SGG$Ns*uA4P-g4nn+Dh!*-7Y$}=j!w}wxs+65-E>I(Oyua5ho=?Y$ig6ns%CMh) z-w-HNZCYj+>NOhTo{0F&74}LJ>q8*{IIUEa2%)vvHMKSadrxew7g^}wy$Xp} z_zykkx%GoK*YocY#ZH#WIX`{n7zzl1!^x<7GbJ`d4ULJJ)~`y0qAo^XPJi=JHoPp5 zq==^qXz3^2*vKO?E)sWP^%#?&^_C}BTFb_*-|78}K&$>ucuQ19ikZULg;d3Mb02<@ zT9>qK3iXpCfqOGLeE2CsLhC&ZPc%@K4MnDU!)om)X4#e$DxIn!NkQ(j`bKbG4Dveb z9*3Y9F`;}b7p9#YzM1BluRHzd8uAJ0X|L@F1evZeykRG68r#q*hxRDwWu~A!PNXEN zy%unk$+i7JbbDsfB8SrJbudd-v!sh`Bvp;c8-z)9`S5jE)SgEkzt><^)6$8r!y4Z5 zW#warOh$Q99ZKS0qtKpY#(TFf(8&JX))wcg$G3;Tzaek~kDk-G|85R^L2C=h+`y?9 z2;4yOUaWD?Z*6fRbNkTi(SS5I$JUVtN8R@un`4`XEWbPZD+}h>inXoTDDfA^77uf5 zaWKc0s17)`@@$T+F5uWAW0V2MRt|7%l>o<9Vm`-K9dK;Pe{yVUT!Fq0CQ~N2ho8-+UXKbXaJP0zG}y1WidOxm11%$M*+t+oBaiBltnNPFbIML9xflaeT&!gE6JODIXsY0ydESqNQ)@~Ft z1Ji8XM*pJO?mZNjg5x0>k%mOBW$aF(NHRCOjx!J@5Ao1=Q4Y>gWb3Sk=OL4(bR8nf ztXNAKH@rtxJZVp$Y=FMf&NeREJ6-Yf)jJ9d?s3PB?z4BV3Ca$Ns6Ey;PN5GOn-1Oe za`<3|BN1tOV$u<%g|&37HWBSN5&dZh7ZQs8V47P^)PrR5U6iZ6J|THG+jtgFq6Lpkk;=Z=dqk97kw5lT#vU^n_uD4) z>dOl8{t^YZ%q9v1Fqrj_s|U$ZZPdOIN)$oT`U>LX8ifZ+-!HNBaQ@v6PR{*}))ffp^RIVsn%3Y9m>;DV`!p!0*%kFN zM0XjYyA06^$+Ea}Lc1RHK7EkksdA-c;D-DQX_d(k(iYqg+!{>FtX zPSBT*1&{ST$ zbr6L6Wr*%FM0XjYyA08V2SewkLjPstW)GVzLv)uRy2}vVe~IjwoBCd?gwGG$AQp3C zHz>X5A$yjXC;P8hg|H0KU54l`Lv)*-w~ZS7%)U_lqWzl7_OB*Ilhs~!viF@VLv)uR zy2}vVWr!|3O!|#r{_k!yTYMpN{uQo&xy}q|a{s}6eHo&=4AEVN=*oU%?^0%~ZQrw2 zVR64~E@NNZF9UZo7jIUWy9Y9VxOC3X7pzs7y95HXbTC=EnB=phqW)D~Ub_s@U54l` zLv$BQ>2o(i7F6UQf&)RFa}OJo=JT83^D6RXi0(2(cNwC)4AF%N*mD^>h|+VBoYNRz zhUhLsbeAEz|6vXv(B76Iy2}vVWr*%FM7NnU=mN5HP=n9SoP#MBPTdV^?YVImuzz83 z-OU+s0Yx_`z&SB{{@(Bfb+@`p;@qMnP|b zz9FRlT~~a*mjkC?JkB;JuyMQ`I4&4jU67V@u5K^bvcl2Qzh`;U*8>u5a&Zt>=Q?4Wy`^Bd4NSRlGI9{E!G%(woB)gx?#^j5x?d!pJ1Ai8yIh^`z) z*#{G;CMFLcx?}*+RSv|fzz|(&7^161gdw_WhA!FwqDzD!x*7nYt4wefgCV-=hYtgi z^%-prL|3D$SRFug)xLu0N;~lYh^{yXqN|K^5&{riqX)@qe?oLAv%3_(g6O&dh_0=L z@ShM}ehx%e4u@53M;C#`YOnlzj;@VSF^8ioJ?$lg0vuh+7mlvV5**zM%AXuv)B=uf z?mUjJ9N_4VayYvEn57`P%6~$1GqD_q?f@?#f2;@heGuJw>yzeT1n6kh8D^qL@Jtm$ z>F`W-hQTv((SoJ^i1GfV{2VCkex7!c9-CSl2pm}raP!?Cg3+{7$ zyAXzJ?cn@>IT*fpx#+b{v${a+c{ba2V;NxEmJg+I!E9Sz?CYl?2IdBUZJU`6*tW`= z`Y_v8_b;}sku=P<)%wD=6^n*Vk{7KC@V1ID-c~BaNX#$|F9-0pVlduTV>`EAr5_&P zZC3)ktuhC1t2Dek-WGmE;$)$~7s9QYjwG{(4hXl3FyYqnYr-wD ztCUD*6K=5$KRC@1Zhhoa($^|m%p=?;0>W)RQrl(bDInaI5dOgZNw`%7gxlIb3AgtU z<}l$F3kbJL=Wj?YAlx2h9O7jYZbJa!7Ehcw#Ub2YD;|$SV5L&SzYuO$0>UlCCfr`5 zv-I#V;dZ9@nJOUMuG)1?a2O`s8m#Qri!kdMxzi%p&+tZlAA{%3%+;o?OK<-E145H0 z>0Bb1Qa)WtD8ZL^a&{|#&OYb~`;bY3p|jOL5nrZxBE|M=hsX;fPTY!|f~m7I{Kt2^ zAKCIg782DB7^7`P*1d}8i#5p4@pb%gkCJkr88Mp^EB5@_DEvsKCvHNBBX$WBv8wHT zx5V`F8I{=6AFJaEKi;Av5tKL+?;q9rC-dUI-deV_+kF=MdN23lT6D3y%?*2iT9gyw zK-8M+2hSCv!1XxpHW%gQd))kTloRFVm!k{ZZEoHJ1XbYXARhipU;DZib(mmaLh#Aw zzffnLZb6fR#B5bIb=LR-n>uR&Q)dsu)Y%a3wKOr0fvO`SD@sk0P7oz;e^v&Mir z%e#;|YdlAtHP%4laDX~%2vcW`0Cg5ON1es%UoBRJALcyjtTLd^s%bq=)l%E6j(@JD z%Aw8%_V_2Ih|-8(sIwdYqRy^-#rm2$TfPK!RyYo(&Jx(v*^JDC#R`8?XUQ;i);f8x zQkjUkZqK34Hqv%Kv-pZS`wUQLpTqCdnV{3M>I-;QmF`&)D>Rz8jv&81&2CE;kf}J0q=ZPLNpA zd^ev9qfLM28*|DI?x?#jy+)MSlc=H(=zvD*#xLVpss(eK^$ z3Zz%`RiAy74449Yu?SFL4^qt`xqt>hI+#C8Ww59m{5z=!m^o+M0yq}u>cjj&D&Pme zx8@vc{!TBDR)V!&AZwhj<1Tp}8Mqx#bLWe=AcK7S{u5{0{of^ya5>BV19tV5{kf}e zXOJMBKgET?p}<~uL_!u`gdR2pw*KjBzP)FTa44{otEFKItPEEubw?BhrobwNW+rkd zutHHqF_12x!0H~zO3*u4YapW}&qGqe1xY3`TOj4Se7!#*uq#M1+q7bOifcO3lu^ae zTJ8Sis?4og1G$RKR<*Mp3a!0V0D&c5J|IU5AoqqPsvepAQS506q}uNeCJYG;4tLDrkKjFwbsBi)L5Nw>A1>zdso*@#cG$YYaZmKOZJ!@ub~ zsNJB*yJqK`_{qA9@|AwDF>J8=rT+6}@!vX4XV>pypbxZJ3vIDBH$SPR-KL@8@sL?2 zs#G5=+*>`!5LY;n#zE8sUOl|!!ighyjL}v?q^egtTE(}#wVT;iB$SC-dFI`VU3!A# z)C6H+x>1Dp0}ErBXYQ|vZgroyFdOX94nwq3AeCI-@E}e7#LR*3aVn#j_r9W`l&y11t$Oss#J7Tb);%ZESWp8 zRzb~OIw3zPk>}7({qnZx$VwO4rkG~biEv8Z@%$CMuIKVkU+(J<@M5u|>RohO&*yhs z@e{g!IZ?(<<@CWw1&N>hlun&b(smQQ(Uh-V{KB1B`#$o`QFSBH=G>Kges3F_cx;pEYKr=#9HyLaK_ zv7gS-QM}SNoh?&+3_&%o(azR~=V|86L^>-DDNL4FS4?ejKp?WXSGU|8?ByLKb7ji= z$@V@#HAw{6;mnXveKiCOe;&T$KGZuHx*|UNgIQmEG+q2YE7MSR4a2@ai+g1&GW>>v zdKT4Ge)pinn11)<2X5Xgk}@?EySEz=7(LR3%1!6a{`2<_Z+`yi^0{+=d`aQ{E}*dO z9woBCyp6v5WCzDOCu^EdKmaz+Nt`%Y(|ikGJPJRj3d~QLmOSF&ZXH_^08a5eDbw7^ zUjF4|pJ(1~o`Z6BFevo+Yb(eaqVu=_P$)Hy2Y^CFU{L5q6Brb##|DMUO2D8{6aa-% zzJNltU{I)bvMf?X0f0h9*`QEWNdO8Z>NdIw15hYFMqN6iLQkO6MV12!MGB4-C~ABG zg_6T`0Vwp|4aXG#6iNw0Ofdu1ryVo_B@~Yf(;L6NjpvmE@wU6_)FdBjQ&GOg2W5YY zc5C9~(ByTjEpM^|ww-ByJ^}hcx6QdWE_{SfP}`^Y!_YQg`Lu0v`Q_1xeFpxwv150Q z{k%T^utDSY?6lZy9aBI(2CRQPje_BLgY>URO-| zoKX?p#9{D}cW}h3iA4M7XQd?qZwp;a8`5UvXW()g=@&Oa4e}*8((?%P&fM$N-neb~ zc!X=A|0IM{=M`$Z10UlQ%Bi1qV5>ZeZykdjSRrPmNZz z0~_R2eCz!LdE3d2tE?aBKqu2WLEp z4?rvfUiA&ZYwqx#`v)k;OE_k(a7CV+`GusZV#USc+v0Y!CCcV(b!XtN8OPAmKizbV zxwN+Dmk+BGE)_lcgYK;@ux}S7j*)7OOxm|8EjwEzbC+695ko9LLaw+XTCOZeq_Qqd zr#cW*-|WY~xtgGTq}^Myv9RNm6Tebf%IO{lLGDaGV(+jWapx|w^vJlipc?*$n&6e& zckbT1|C1AuB*&xHGMo zVGM6IqvNy>uD4QsP`3j94n%$no6hOn%PlEy?52F!WN1U4#g5hR=Tt1yZSihiJ58#` z*OU}rYu%iB^=deVAg8YWe0_Vvc#Tz_>XwoA#;b?yYOMcDj`PJPUzPxUl^3foWmcf_ zoRfHfaRDO&HU;bj&RZWm2UZ5G1{fMhgu$T+ObMg{AeM9VQucWV4fcXFs6__E%f`EB`JN(aC(31ZE$wA?tr)L`jt1e9+Yxsh0 ztPO-FDO3|Sx=}|y6s4!uv2WwC{dZqxAHMX<1vTZUP=WnP$?lQyJ7iNbv(}N)Lcz9;ed%7GZ2c;SnEW~*Mk%Y@Fx#Z z0-Wr%ufqTI65CLYl*cNJl*rk%m6Y^M(=Iw1n;I0upJP6@_RHN^EF_1VagY_%v5ivY zibJjyRJD`3GHFsKXnIm$isapA-ujMt>aV+vV+>Gi;vI42c2qkwS$ zI|CUgCnnEHhTtHALpQtf0x2X%H3TOcFe6}gz~(r~CWzR;;NVP?%@&&z=z-ya^No{o za-uP?JaA-vkF^1-DqSKbPlV`HMYmh)!pOj23cVeZ-3EApox4xiqi#e(O{8CbFWVip zJzfsS2dXVI@#y&IAV?@JFBTVdV2_-fFe$&nSD+-bSPorz$W1w+x@o&kLyOajn%V=h zt(|u0>;p}EB)WQR1WMbpw%7NLSgD_{j?}(zWvyEAAjGyWS%Cu zzO8mRkL-BZbGWVULJ`Gxqrt4-g9$Y z9;cbAzoxnK5iat^{d>`m+AisCg*3Yp?WgW`jc9G29mqG68s*u0v)In`4KmeN-t($D zm72(X&MkpgW@Gmk$r!8Sk@0a#ePB}HFazNVoK21I0@?8up2hkeOIq^K`t}Dwq|8~$_yFPV zMa;QL5GggwF3+^bTm+GFHcCJ5?`)`>< zCx~)DTXmv6{GB&uo$_ zivSYlkL(-oE~U!Sh4IBNs+5Ub;Lse#HWdB%KmtKU@eB5#d3ekigx0bXP>WUFfmMlP8jG z7~G2&kKW!DYUO$P>vQfFfydzwpB%jt@5+ne@4k7dM-7EL{jMf*@;Z7C@5S(@8El_L z=38|xy0eM51uurW<%8R?`*b%crQ+2o4k8TXyXWgy8*S)O;R$=LSKH3r+mnJMuxvN~ MO(NYF4?(N`A5CA*Q2+n{ diff --git a/admin/assets/js/get_snippets.js b/admin/assets/js/get_snippets.js deleted file mode 100644 index a810ae982..000000000 --- a/admin/assets/js/get_snippets.js +++ /dev/null @@ -1,540 +0,0 @@ -/** - * @package Joomla.Component.Builder - * - * @created 30th April, 2015 - * @author Llewellyn van der Merwe - * @git Joomla Component Builder - * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. - * @license GNU General Public License version 2 or later; see LICENSE.txt - */ - -/* JS Document */ - -// start the moment the document is ready -jQuery(document).ready(function () { - // just get the available libraries - getLibraries(snippetsPath); -}); - -// add an ajax call tracker -var ajaxcall = null; -var fromLocal = false; - -jQuery(document).ready(function(){ - jQuery('body').on('click','.getreaction',function(){ - // Ajax request - var btn = jQuery(this); - btn.prop('disabled', true); - setTimeout(function(){ - btn.prop('disabled', false); - }, 3000); - var type = btn.data('type'); - if ('getLibraries' === type) { - getLibraries(snippetsPath); - } else if ('getSnippets' === type) { - var name = btn.data('name'); - getSnippets(snippetsPath, name); - } else if ('all' === type) { - var status = btn.data('status'); - bulkSnippetGithub(status); - } else if ('bulk' === type) { - checkBulkSnippetGithub(); - } else if ('get' === type) { - var path = btn.data('path'); - var status = btn.data('status'); - setSnippetGithub(path, status); - } else { - var path = btn.data('path'); - getSnippetModal(path, type); - } - }); -}); - -// load every thing once ready -jQuery(document).ajaxStop(function () { - if (0 === jQuery.active) { - //do something special - if ('snippets' === ajaxcall) { - setTimeout( function() { - jQuery('#snippets-github').html('

'+Joomla.JText._('COM_COMPONENTBUILDER_JCB_COMMUNITY_SNIPPETS')+'

'); - jQuery('#snippets-display').show(); - jQuery('#snippets-grid').trigger('display.uk.check'); - jQuery('#loading').hide(); - }, 1000); - } - } -}); - -// get the libraries -function getLibraries(path) { - var _paths = jQuery.jStorage.get('JCB-Snippets-Paths', null); - // always hide the snippets display - jQuery('#snippets-display').hide(); - // always reset the grid - jQuery('#libraries-grid').html(''); - // set the ajax scope - ajaxcall = 'libraries'; - if (_paths) { - buildLibraries(_paths); - } else { - jQuery.get(path) - .done(function(paths) { - // load only this library paths - jQuery.jStorage.set('JCB-Snippets-Paths', paths, {TTL: expire}); - buildLibraries(paths); - }) - .error(function(jqXHR, textStatus, errorThrown) { - jQuery('#snippets-github').html(returnError); - }); - } -} - -// build the ibraries object -function buildLibraries(paths) { - var _temp = jQuery.jStorage.get('JCB-Libraries', null); - if (_temp) { - setLibraries(_temp); - } else { - var temp = {}; - jQuery.each(paths.tree, function(key,value) { - if (value.path.match(".json$")) { - var libraryName = value.path.split(/ -(.+)/)[0]; - libraryName = libraryName.trim() - temp[libraryName] = libraryName; - } - }); - // load only this library paths - jQuery.jStorage.set('JCB-Libraries', temp, {TTL: expire}); - setLibraries(temp); - } -} - -// set the libraries -function setLibraries(names) { - // now load the library buttons - jQuery.each(names, function(value) { - setLibrary(value); - }); - setTimeout( function() { - jQuery('#snippets-github').html('

'+Joomla.JText._('COM_COMPONENTBUILDER_AVAILABLE_LIBRARIES')+'

'); - jQuery('#libraries-display').show(); - jQuery('#libraries-grid').trigger('display.uk.check'); - }, 1000); -} - -// set the snippets -function setLibrary(name) { - // get useful ID - var keyID = getKeyID(name); - // build the library display - var html = '
'; - html += '
'; - html += '

' + name + '

'; - html += '
'; - // set the data buttons - html += setLibraryButtons(name); - // close the box panel - html += '
'; - html += '
'; - // now we have the library - jQuery('#libraries-grid').append(html); -} - -function setLibraryButtons(name) { - return ''; -} - -// get the snippets -function getSnippets(path, libraryName) { - jQuery('#loading').show(); - // get local values if set - var _paths = jQuery.jStorage.get('JCB-Snippets-Paths', null); - // always reset the grid - jQuery('#snippets-grid').html(''); - // always hide libraries - jQuery('#libraries-display').hide(); - // set the ajax scope - ajaxcall = 'snippets'; - fromLocal = false; - if (_paths) { - setSnippets(_paths, libraryName); - jQuery('#snippets-github').html('

'+Joomla.JText._('COM_COMPONENTBUILDER_JCB_COMMUNITY_SNIPPETS')+'

'); - } else { - jQuery.get(path) - .done(function(paths) { - // load only this library paths - jQuery.jStorage.set('JCB-Snippets-Paths', paths, {TTL: expire}); - setSnippets(paths, libraryName); - }) - .error(function(jqXHR, textStatus, errorThrown) { - jQuery('#snippets-github').html(returnError); - }); - } - // only use if loading localy - if (fromLocal) { - jQuery('#snippets-display').show(); - jQuery('#snippets-grid').trigger('display.uk.check'); - jQuery('#loading').hide(); - } -} - -// set the snippets -function setSnippets(paths, libraryName) { - // set the ajax scope - ajaxcall = 'snippets'; - jQuery.each(paths.tree, function(key,value) { - if (value.path.match(".json$") && value.path.match("^"+libraryName)) { - var _snippet = jQuery.jStorage.get(value.path, null); - if (_snippet) { - setSnippet(_snippet, value.path); - fromLocal = true; - } else { - jQuery.get(snippetPath+value.path) - .done(function(snippet) { - // convert the string to json.object - snippet = jQuery.parseJSON(snippet); - jQuery.jStorage.set(value.path, snippet, {TTL: expire}); - setSnippet(snippet, value.path); - }) - .error(function(jqXHR, textStatus, errorThrown) { - // we could do more - }); - } - } - }); -} - -// set the snippets -function setSnippet(snippet, key) { - // get useful ID - var keyID = getKeyID(key); - // get the status - var status = getSnippetStatus(snippet, key); - // add to bulk updater - if ('equal' !== status) { - bulkItems[status].push(key); - } - // build the snippet display - var html = '
'; - html += '
'; - html += '
'; - html += '

' + snippet.library+ ' - (' + snippet.type + ') ' + snippet.name + '

'; - html += snippet.heading + '
'; - // set the data buttons - html += setDataButtons(snippet, key, status); - // set the snippet ref button - html += setRefButtons(snippet, key, status, keyID); - // set the contributor buttons - html += setContributorButtons(snippet, key); - // close the box panel - html += '
'; - html += '
'; - // now we have the snippet - jQuery('#snippets-grid').append(html); -} - -// set the snippet status -function getSnippetStatus(snippet, key) { - // check if JCB already has this snippet - if(local_snippets.hasOwnProperty(key)){ - // first get local time stamp - var local_created = strtotime(local_snippets[key].created); - var local_modified = strtotime(local_snippets[key].modified); - // now get github time stamps - var created = strtotime(snippet.created); - var modified = strtotime(snippet.modified); - // work out the status - if (local_created == created) { - if (local_modified == modified) { - return 'equal'; - } else if (local_modified > modified) { - return 'ahead'; - } else if (local_modified < modified) { - return 'behind'; - } - } - return 'diverged'; - } - return 'new'; -} - -function setDataButtons(snippet, key, status) { - var html = '
'; - html += ''; - html += ''; - html += ''; - html += '
'; - // return data buttons - return html; -} - -function setRefButtons(snippet, key, status, keyID) { - var html = ''; - // set the update button - html += '
'; - if ('equal' !== status) { - if ('new' === status) { - var tooltip = Joomla.JText._('COM_COMPONENTBUILDER_GET_THE_SNIPPET_FROM_GITHUB_AND_INSTALL_IT_LOCALLY'); - } else { - var tooltip = Joomla.JText._('COM_COMPONENTBUILDER_GET_THE_SNIPPET_FROM_GITHUB_AND_UPDATE_THE_LOCAL_VERSION'); - } - html += ''; - } else { - html += ''; - } - html += '
'; - // return data buttons - return html; -} - -function setContributorButtons(snippet, key) { - // set the contributor name - if (snippet.contributor_company) { - var contributor_name = snippet.contributor_company; - } else if (snippet.contributor_name) { - var contributor_name = snippet.contributor_name; - } else { - var contributor_name = Joomla.JText._('COM_COMPONENTBUILDER_JCB_COMMUNITY'); - } - // set the contributor url - if (snippet.contributor_website) { - var contributor_url = snippet.contributor_website; - } else if (snippet.contributor_email) { - var contributor_url = 'mailto:'+snippet.contributor_email; - } else { - var contributor_url = 'https://github.com/vdm-io/Joomla-Component-Builder-Snippets'; - } - var html = '
'; - html += ''; - html += ' ' + contributor_name + ''; - html += ' '+Joomla.JText._('COM_COMPONENTBUILDER_VIEW_BLAME')+''; - html += '
'; - // return contributor buttons - return html; -} - -// do a bulk update -function checkBulkSnippetGithub() { - // check if there is new items - if (bulkItems.new.length === 0) { - jQuery('#bulk-button-new').prop('disabled', true); - jQuery('#bulk-button-new').attr('title', Joomla.JText._('COM_COMPONENTBUILDER_THERE_ARE_NO_NEW_SNIPPETS_AT_THIS_TIME')); - jQuery('#bulk-notice-new').show(); - } - // check if there is diverged items - if (bulkItems.diverged.length === 0) { - jQuery('#bulk-button-diverged').prop('disabled', true); - jQuery('#bulk-button-diverged').attr('title', Joomla.JText._('COM_COMPONENTBUILDER_THERE_ARE_NO_DIVERGED_SNIPPETS_AT_THIS_TIME')); - jQuery('#bulk-notice-diverged').show(); - } - // check if there is ahead items - if (bulkItems.ahead.length === 0) { - jQuery('#bulk-button-ahead').prop('disabled', true); - jQuery('#bulk-button-ahead').attr('title', Joomla.JText._('COM_COMPONENTBUILDER_THERE_ARE_NO_AHEAD_SNIPPETS_AT_THIS_TIME')); - jQuery('#bulk-notice-ahead').show(); - } - // check if there is behind items - if (bulkItems.behind.length === 0) { - jQuery('#bulk-button-behind').prop('disabled', true); - jQuery('#bulk-button-behind').attr('title', Joomla.JText._('COM_COMPONENTBUILDER_THERE_ARE_NO_OUT_OF_DATE_SNIPPETS_AT_THIS_TIME')); - jQuery('#bulk-notice-behind').show(); - } - // check if all we should close the all button - if (bulkItems.behind.length === 0 && bulkItems.new.length === 0 && bulkItems.ahead.length === 0 && bulkItems.diverged.length === 0) { - jQuery('#bulk-button-all').prop('disabled', true); - jQuery('#bulk-button-all').attr('title', Joomla.JText._('COM_COMPONENTBUILDER_THERE_ARE_NO_SNIPPETS_TO_UPDATE_AT_THIS_TIME')); - jQuery('#bulk-notice-all').show(); - } -} - -// do a bulk update -function bulkSnippetGithub(status) { - // if all then trigger those with values - if ('all' === status) { - bulkSnippetGithub('behind'); - bulkSnippetGithub('new'); - bulkSnippetGithub('ahead'); - bulkSnippetGithub('diverged'); - } else if (bulkItems[status].length > 0) { - jQuery.each(bulkItems[status], function(i, key){ - setTimeout(function(){ - doBulkUpdate_server(key, status).done(function(result) { - if (result.message) { - // only show errors - if ('error' === result.status || 'warning' === result.status) { - UIkit.notify(result.message, {status: result.status}); - } - // update local items - if ('success' === result.status) { - // get key ID - var keyID = getKeyID(key); - // update snippet if we can - updateSnippetDisplay(keyID, 'equal'); - } - } else { - UIkit.notify(Joomla.JText._('COM_COMPONENTBUILDER_SNIPPET_COULD_NOT_BE_UPDATEDSAVED'), {status:'danger'}); - } - }); - }, 200); - }); - // reset array - bulkItems[status].length = 0; - // update the buttons (since we only do the bulk update once) - checkBulkSnippetGithub(); - } -} - -function doBulkUpdate_server(path, status) { - // set the ajax scope - ajaxcall = null; - var getUrl = JRouter("index.php?option=com_componentbuilder&task=ajax.setSnippetGithub&format=json&raw=true"); - if (token.length > 0 && path.length > 0 && status.length > 0) { - var request = token+'=1&path='+path+'&status='+status; - } - return jQuery.ajax({ - type: 'POST', - url: getUrl, - dataType: 'json', - data: request, - jsonp: false - }); -} - -// set the snippet from gitHub -function setSnippetGithub(key, status) { - var message = getConfirmUpdate(status); - UIkit.modal.confirm(message, function(){ - // will be executed on confirm. - setSnippetGithub_server(key, status).done(function(result) { - if (result.message) { - UIkit.notify(result.message, {status: result.status}); - if ('success' === result.status) { - // get key ID - var keyID = getKeyID(key); - // update snippet if we can - updateSnippetDisplay(keyID, 'equal'); - } - } else { - UIkit.notify(Joomla.JText._('COM_COMPONENTBUILDER_SNIPPET_COULD_NOT_BE_UPDATEDSAVED'), {status:'danger'}); - } - }); - }); -} - -function setSnippetGithub_server(path, status) { - // set the ajax scope - ajaxcall = null; - var getUrl = JRouter("index.php?option=com_componentbuilder&task=ajax.setSnippetGithub&format=json&raw=true"); - if (token.length > 0 && path.length > 0 && status.length > 0) { - var request = token+'=1&path='+path+'&status='+status; - } - return jQuery.ajax({ - type: 'POST', - url: getUrl, - dataType: 'json', - data: request, - jsonp: false - }); -} - -// update the snippet display -function updateSnippetDisplay(keyID, status) { - // update badge - jQuery('#'+keyID+'-badge').html(' ' +status); - jQuery('#'+keyID+'-badge').attr('href' , '#'+status+'-meaning'); - // update button - if ('equal' === status) { - // update notice - jQuery('#'+keyID+'-getbutton').attr('title', Joomla.JText._('COM_COMPONENTBUILDER_NO_NEED_TO_GET_IT_SINCE_IT_IS_ALREADY_IN_SYNC_WITH_YOUR_LOCAL_VERSION')); - jQuery('#'+keyID+'-getbutton').prop('disabled', true); - jQuery('#'+keyID+'-getbutton').html(' ' + Joomla.JText._('COM_COMPONENTBUILDER_LOCAL_SNIPPET')); - // counter delay just incase - setTimeout(function(){ - jQuery('#'+keyID+'-getbutton').prop('disabled', true); - }, 2000); - } - // update the data filter - jQuery('#'+keyID+'-panel').attr('data-uk-filter', status); - // tell the grid to update - jQuery('#snippets-grid').trigger('display.uk.check'); -} - -// set the modal -function getSnippetModal(key, type) { - // set the ajax scope - ajaxcall = 'snippets'; - var _snippet = jQuery.jStorage.get(key, null); - if (_snippet) { - // show modal - showSnippetModal(_snippet, type); - } else { - jQuery.get('https://raw.githubusercontent.com/vdm-io/Joomla-Component-Builder-Snippets/master/'+key) - .done(function(snippet) { - // convert the string to json.object - snippet = jQuery.parseJSON(snippet); - jQuery.jStorage.set(key, snippet, {TTL: expire}); - // show modal - showSnippetModal(snippet, type); - }) - .error(function(jqXHR, textStatus, errorThrown) { - // we could do more - }); - } -} - -// show the modal -function showSnippetModal(snippet, type) { - var html = '
'; - html += ''; - html += '

' + snippet.library + ' - (' + snippet.type + ') ' + snippet.name + '

'; - if ('contributor' === type) { - html += '
'; - html += '
'+Joomla.JText._('COM_COMPONENTBUILDER_COMPANY_NAME')+'
'; - html += '
'+snippet.contributor_company+'
'; - html += '
'+Joomla.JText._('COM_COMPONENTBUILDER_AUTHOR_NAME')+'
'; - html += '
'+snippet.contributor_name+'
'; - html += '
'+Joomla.JText._('COM_COMPONENTBUILDER_AUTHOR_EMAIL')+'
'; - html += '
'+snippet.contributor_email+'
'; - html += '
'+Joomla.JText._('COM_COMPONENTBUILDER_AUTHOR_WEBSITE')+'
'; - html += '
'+snippet.contributor_website+'
'; - html += '
'; - } else { - html += '
'; - } - html += '
C: ' + snippet.created + ' | M: ' + snippet.modified + ''; - html += '
'; - // get current page position - var scroll = jQuery(window).scrollTop(); - // add html to modal - var modal = UIkit.modal.blockUI(html, {center:true, bgclose:true}).on({ - 'hide.uk.modal': function(){ - // scroll fix since the modal pops to the top of the page - jQuery(window).scrollTop(scroll); - } - }); - // show modal - modal.show(); -} - -// get key ID -function getKeyID(key) { - // get useful ID - var keyID = key.replace('-', ''); - keyID = keyID.replace('.json', ''); - keyID = keyID.replace(/\s+/ig, '-'); - keyID = keyID.replace(/\(/g, ''); - keyID = keyID.replace(/\)/g, ''); - // return the id build - return keyID; -} -// get key ID -function getKeyID(key) { - // get useful ID - var keyID = key.replace('-', ''); - keyID = keyID.replace('.json', ''); - keyID = keyID.replace(/\s+/ig, '-'); - keyID = keyID.replace(/\(/g, ''); - keyID = keyID.replace(/\)/g, ''); - // return the id build - return keyID; -} diff --git a/admin/assets/js/initialization_selection.js b/admin/assets/js/initialization_selection.js new file mode 100644 index 000000000..ceac379f8 --- /dev/null +++ b/admin/assets/js/initialization_selection.js @@ -0,0 +1,395 @@ +/** + * @package Joomla.Component.Builder + * + * @created 30th April, 2015 + * @author Llewellyn van der Merwe + * @git Joomla Component Builder + * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved. + * @license GNU General Public License version 2 or later; see LICENSE.txt + */ + +/* JS Document */ + +const memoryinitialization = []; + +function setSessionMemory(key, values, merge = true) { + if (merge) { + values = mergeSessionMemory(key, values); + } else { + values = JSON.stringify(values); + } + + if (typeof Storage !== "undefined") { + sessionStorage.setItem(key, values); + } else { + memoryinitialization[key] = values; + } +} + +function mergeSessionMemory(key, values) { + const oldValues = getSessionMemory(key); + + if (oldValues) { + values = { ...oldValues, ...values }; + } + + return JSON.stringify(values); +} + +function getSessionMemory(key, defaultValue = null) { + if (typeof Storage !== "undefined") { + const localValue = sessionStorage.getItem(key); + + if (isJsonString(localValue)) { + defaultValue = JSON.parse(localValue); + } + } else if (typeof memoryinitialization[key] !== "undefined") { + const localValue = memoryinitialization[key]; + + if (isJsonString(localValue)) { + defaultValue = JSON.parse(localValue); + } + } + + return defaultValue; +} + +function isJsonString(str) { + try { + JSON.parse(str); + } catch (e) { + return false; + } + + return true; +} + +function getArrayFormat(items) { + // Check if items is an object and not an array + if (typeof items === 'object' && !Array.isArray(items)) { + return Object.values(items); + } + return items; +} +class InitializationManager { + #repoArea = document.getElementById('select-repo-area'); + #powersArea = document.getElementById('select-powers-area'); + #initButton = document.getElementById('init-selected-powers'); + #backButton = document.getElementById('back-to-select-repo'); + #loadingDiv = window.loadingDiv || null; + #buildTable = typeof buildPowerSelectionTable === 'function' ? buildPowerSelectionTable : null; + #drawTable = typeof drawPowerSelectionTable === 'function' ? drawPowerSelectionTable : null; + + currentRepo = null; + currentArea = null; + + constructor() { + this._bindRepoButtons(); + this._bindInitSelectedPowers(); + this._updateInitButtonState(); + } + + /** Getter for selected items using global window reference. */ + get selectedItems() { + if (!Array.isArray(window.selectedPowerItems)) { + window.selectedPowerItems = []; + } + return window.selectedPowerItems; + } + + /** Setter for selected items with sync to window and button state update. */ + set selectedItems(items) { + window.selectedPowerItems = items; + this._updateInitButtonState(); + } + + /** Add items to selection if not already selected. */ + addSelectedItems(data) { + if (!data || typeof data.length !== 'number') return; + + const updated = [...this.selectedItems]; + + for (let i = 0; i < data.length; i++) { + const item = data[i]; + if (!updated.some(existing => this.#isSameItem(existing, item))) { + updated.push(item); + } + } + + this.selectedItems = updated; + } + + /** Remove items from selection based on identity comparison. */ + removeSelectedItems(data) { + if (!data || typeof data.length !== 'number') return; + + const updated = this.selectedItems.filter(existing => { + for (let i = 0; i < data.length; i++) { + if (this.#isSameItem(existing, data[i])) { + return false; + } + } + return true; + }); + + this.selectedItems = updated; + } + + /** Check if two items are the same using GUID. */ + #isSameItem(a, b) { + return a?.guid && b?.guid && a.guid === b.guid; + } + + /** Enable/disable the init button based on selection state. */ + _updateInitButtonState() { + if (this.#initButton) { + this.#initButton.disabled = this.selectedItems.length === 0; + } + } + + _bindRepoButtons() { + document.querySelectorAll('.select-repo-to-initialize').forEach(button => { + button.addEventListener('click', (e) => this._handleRepoClick(e)); + }); + } + + _bindInitSelectedPowers() { + if (this.#initButton) { + this.#initButton.addEventListener('click', () => this._handleInitSelectedPowers()); + } + if (this.#backButton) { + this.#backButton.addEventListener('click', () => this._handleBackToRepos()); + } + } + + async _handleRepoClick(event) { + const button = event.currentTarget; + const repo = button?.dataset?.repo; + const area = button?.dataset?.area; + + if (!repo || !area) { + this._notify(Joomla.Text._("COM_COMPONENTBUILDER_MISSING_REPOSITORY_OR_AREA_DATA"), "danger"); + return; + } + + this._showLoading(); + clearPowerSelectionTable(); + + const url = `${UrlAjax}getRepoIndex&repo=${encodeURIComponent(repo)}&area=${encodeURIComponent(area)}`; + + try { + const response = await fetch(url); + + if (!response.ok) throw new Error(`HTTP ${response.status}`); + + const data = await response.json(); + + if (data.success && data.index && this.#buildTable) { + const repoData = data.index[0]; + + const repoBase = repoData.base || 'https://git.vdm.dev'; + const repoPath = repoData.path || 'joomla/super-powers'; + const repoBranch = repoData.read_branch || 'master'; + + window.targetPowerRepoUrl = `${repoBase}/${repoPath}/src/branch/${repoBranch}/`; + + this.#buildTable(repoData.index); + + setTimeout(() => { + this._transitionTo(this.#repoArea, this.#powersArea); + this._hideLoading(); + }, 500); + + this.currentRepo = repoData.guid; + this.currentArea = area; + } else { + this._notify(data.message || Joomla.Text._("COM_COMPONENTBUILDER_FAILED_TO_RETRIEVE_REPOSITORY_INDEX"), "danger"); + this._hideLoading(); + } + } catch (error) { + console.error("Fetch error:", error); + this._hideLoading(); + this._notify(Joomla.Text._("COM_COMPONENTBUILDER_NETWORK_OR_SERVER_ERROR_OCCURRED_WHILE_FETCHING_INDEX"), "danger"); + } + } + + _handleBackToRepos() { + this._transitionTo(this.#powersArea, this.#repoArea); + } + + async _handleInitSelectedPowers() { + if (!Array.isArray(this.selectedItems) || this.selectedItems.length === 0) { + this._notify(Joomla.Text._("COM_COMPONENTBUILDER_NO_ITEMS_SELECTED"), "warning"); + return; + } + + this._showLoading(); + + const area = this.currentArea || 'error'; + const repo = this.currentRepo || 'error'; + + try { + // Convert selected items to form data + const formData = new FormData(); + + // Assuming Joomla expects `selected[]` for multiple values + for (const item of this.selectedItems) { + formData.append('selected[]', item.guid); // Only sending GUIDs + } + formData.append('area', area); + formData.append('repo', repo); + + const response = await fetch(`${UrlAjax}initSelectedPowers`, { + method: 'POST', + body: formData + }); + + if (!response.ok) throw new Error(`HTTP ${response.status}`); + + const data = await response.json(); + + if (!data.success) { + this._notify(data.message || Joomla.Text._("COM_COMPONENTBUILDER_FAILED_TO_INITIALIZE_SELECTED_POWERS"), "danger"); + } else { + this._handleResultLog(data.result_log || {}); + } + + this._hideLoading(); + this._transitionTo(this.#powersArea, this.#repoArea); + } catch (error) { + console.error("Submission error:", error); + this._notify(Joomla.Text._("COM_COMPONENTBUILDER_ERROR_OCCURRED_WHILE_INITIALIZING_POWERS"), "danger"); + + this._hideLoading(); + this._transitionTo(this.#powersArea, this.#repoArea); + } + } + + _handleResultLog(resultLog) { + const localGuids = this._normalizeGuids(resultLog.local); + const notFoundGuids = this._normalizeGuids(resultLog.not_found); + const addedGuids = this._normalizeGuids(resultLog.added); + + if (localGuids.length > 0) { + this._notify( + this._generateResultMessage(localGuids, 'local'), + 'info' + ); + } + + if (notFoundGuids.length > 0) { + this._notify( + this._generateResultMessage(notFoundGuids, 'not_found'), + 'info' + ); + } + + if (addedGuids.length > 0) { + this._notify( + this._generateResultMessage(addedGuids, 'added'), + 'success' + ); + } + } + + _normalizeGuids(value) { + if (!value) return []; + + if (Array.isArray(value)) { + return value; + } + + if (typeof value === 'object') { + return Object.keys(value); + } + + return []; + } + + _generateResultMessage(guids, type) { + const messages = { + local: Joomla.Text._('COM_COMPONENTBUILDER_THESE_ITEMS_WERE_ALREADY_PRESENT_LOCALLY_AND_WERE_NOT_INITIALIZED'), + not_found: Joomla.Text._('COM_COMPONENTBUILDER_THESE_ITEMS_COULD_NOT_BE_FOUND_IN_THE_REMOTE_REPOSITORY_AND_WERE_NOT_INITIALIZED'), + added: Joomla.Text._('COM_COMPONENTBUILDER_THESE_ITEMS_WERE_SUCCESSFULLY_INITIALIZED') + }; + + const names = []; + + for (const guid of guids) { + const item = this.selectedItems.find(i => i.guid === guid); + if (item?.name) { + names.push(item.name); + } + } + + if (names.length === 0) { + return null; + } + + return `${messages[type]}\n
- ${names.join('\n
- ')}`; + } + + _transitionTo(hideEl, showEl) { + if (hideEl && showEl) { + UIkit.util.ready(() => { + UIkit.util.removeClass(hideEl, 'uk-animation-slide-top-small'); + UIkit.util.removeClass(showEl, 'uk-animation-slide-bottom-small'); + UIkit.util.addClass(hideEl, 'uk-animation-slide-top-small'); + + setTimeout(() => { + hideEl.style.display = 'none'; + showEl.style.display = ''; + UIkit.util.addClass(showEl, 'uk-animation-slide-bottom-small'); + if (this.#drawTable) this.#drawTable(); + }, 300); + }); + } + } + + _showLoading() { + if (this.#loadingDiv) this.#loadingDiv.style.display = 'block'; + } + + _hideLoading() { + if (this.#loadingDiv) this.#loadingDiv.style.display = 'none'; + } + + _notify(message, type = 'info') { + const alertTypes = { + primary: 'alert-primary', + info: 'alert-info', + success: 'alert-success', + warning: 'alert-warning', + danger: 'alert-danger', + }; + + const alertClass = alertTypes[type] || alertTypes.primary; + + let container = document.getElementById('alert-container'); + if (!container) { + container = document.createElement('div'); + container.id = 'alert-container'; + container.className = 'position-fixed top-0 start-50 translate-middle-x p-3'; + container.style.zIndex = '1060'; + document.body.appendChild(container); + } + + const alert = document.createElement('div'); + alert.className = `alert ${alertClass} alert-dismissible fade show`; + alert.setAttribute('role', 'alert'); + alert.innerHTML = ` + ${message} + + `; + + container.appendChild(alert); + + setTimeout(() => { + alert.classList.remove('show'); + alert.classList.add('hide'); + alert.addEventListener('transitionend', () => { + alert.remove(); + }); + }, 5000); + } +} \ No newline at end of file diff --git a/admin/assets/js/search.js b/admin/assets/js/search.js index bffebc42d..263a7d356 100644 --- a/admin/assets/js/search.js +++ b/admin/assets/js/search.js @@ -91,7 +91,7 @@ const doSearch = async (signal, tables) => { if (response.ok) { return response.json(); } else { - UIkit.notify(Joomla.JText._('COM_COMPONENTBUILDER_THE_SEARCH_PROCESS_HAD_AN_ERROR_WITH_TABLE') + ' ' + tableName, {pos:'top-right', status:'danger'}); + UIkit.notify(Joomla.Text._('COM_COMPONENTBUILDER_THE_SEARCH_PROCESS_HAD_AN_ERROR_WITH_TABLE') + ' ' + tableName, {pos:'top-right', status:'danger'}); } }).then((data) => { if (typeof data.success !== 'undefined') { @@ -116,11 +116,11 @@ const doSearch = async (signal, tables) => { searchProgressBarObject.innerHTML = percent.toFixed(2) + '%'; // when complete hide the progress bar if (progress == total) { - let total_field_line = ' ' + fieldCount + ' ' + Joomla.JText._('COM_COMPONENTBUILDER_FIELDS_THAT_HAD') + ' ' + lineCount + ' ' + Joomla.JText._('COM_COMPONENTBUILDER_LINES') + ' '; + let total_field_line = ' ' + fieldCount + ' ' + Joomla.Text._('COM_COMPONENTBUILDER_FIELDS_THAT_HAD') + ' ' + lineCount + ' ' + Joomla.Text._('COM_COMPONENTBUILDER_LINES') + ' '; if (progress == 1) { - searchProgressBarObject.innerHTML = Joomla.JText._('COM_COMPONENTBUILDER_SEARCHING') + ' ' + tableName + total_field_line + Joomla.JText._('COM_COMPONENTBUILDER_AND_FINISHED_THE_SEARCH_IN') + ' ' + getSearchLenght() + ' ' + Joomla.JText._('COM_COMPONENTBUILDER_SECONDS'); + searchProgressBarObject.innerHTML = Joomla.Text._('COM_COMPONENTBUILDER_SEARCHING') + ' ' + tableName + total_field_line + Joomla.Text._('COM_COMPONENTBUILDER_AND_FINISHED_THE_SEARCH_IN') + ' ' + getSearchLenght() + ' ' + Joomla.Text._('COM_COMPONENTBUILDER_SECONDS'); } else { - searchProgressBarObject.innerHTML = Joomla.JText._('COM_COMPONENTBUILDER_SEARCHING') + ' ' + progress + ' ' + Joomla.JText._('COM_COMPONENTBUILDER_TABLES_WITH') + total_field_line + Joomla.JText._('COM_COMPONENTBUILDER_AND_FINISHED_THE_SEARCH_IN') + ' ' + getSearchLenght() + ' ' + Joomla.JText._('COM_COMPONENTBUILDER_SECONDS'); + searchProgressBarObject.innerHTML = Joomla.Text._('COM_COMPONENTBUILDER_SEARCHING') + ' ' + progress + ' ' + Joomla.Text._('COM_COMPONENTBUILDER_TABLES_WITH') + total_field_line + Joomla.Text._('COM_COMPONENTBUILDER_AND_FINISHED_THE_SEARCH_IN') + ' ' + getSearchLenght() + ' ' + Joomla.Text._('COM_COMPONENTBUILDER_SECONDS'); } // show the search button startSearchButton.style.display = ''; @@ -235,11 +235,11 @@ const replaceAllCheck = () => { let searchValue = searchObject.value; let replaceValue = replaceObject.value; // load question - let question = Joomla.JText._('COM_COMPONENTBUILDER_YOUR_ARE_ABOUT_TO_UPDATE_BALLB_VALUES_THAT_CAN_BE_FOUND_IN_THE_DATABASE') + '
' + - Joomla.JText._('COM_COMPONENTBUILDER_YOU_WILL_REPLACE') + ': [' + htmlentities(searchValue) + '] ' + - Joomla.JText._('COM_COMPONENTBUILDER_WITH') + ': [' + htmlentities(replaceValue) + ']
' + - Joomla.JText._('COM_COMPONENTBUILDER_THIS_CAN_NOT_BE_UNDONE_BYOU_HAVE_BEEN_WARNEDB') + '

' + - Joomla.JText._('COM_COMPONENTBUILDER_ARE_YOU_THEREFORE_ABSOLUTELY_SURE_YOU_WANT_TO_CONTINUE'); + let question = Joomla.Text._('COM_COMPONENTBUILDER_YOUR_ARE_ABOUT_TO_UPDATE_BALLB_VALUES_THAT_CAN_BE_FOUND_IN_THE_DATABASE') + '
' + + Joomla.Text._('COM_COMPONENTBUILDER_YOU_WILL_REPLACE') + ': [' + htmlentities(searchValue) + '] ' + + Joomla.Text._('COM_COMPONENTBUILDER_WITH') + ': [' + htmlentities(replaceValue) + ']
' + + Joomla.Text._('COM_COMPONENTBUILDER_THIS_CAN_NOT_BE_UNDONE_BYOU_HAVE_BEEN_WARNEDB') + '

' + + Joomla.Text._('COM_COMPONENTBUILDER_ARE_YOU_THEREFORE_ABSOLUTELY_SURE_YOU_WANT_TO_CONTINUE'); // do check UIkit.modal.confirm(question, function () { @@ -258,7 +258,7 @@ const replaceAllCheck = () => { } else { replaceAll(controller_replace.signal, searchTables); } - }, {labels: { Ok: Joomla.JText._('COM_COMPONENTBUILDER_YES_UPDATE_ALL'), Cancel: Joomla.JText._('COM_COMPONENTBUILDER_NO') }}); + }, {labels: { Ok: Joomla.Text._('COM_COMPONENTBUILDER_YES_UPDATE_ALL'), Cancel: Joomla.Text._('COM_COMPONENTBUILDER_NO') }}); }; /** @@ -321,7 +321,7 @@ const replaceAll = async (signal, tables) => { if (response.ok) { return response.json(); } else { - UIkit.notify(Joomla.JText._('COM_COMPONENTBUILDER_THE_REPLACE_PROCESS_HAD_AN_ERROR_WITH_TABLE') + ' ' + tableName, {pos:'top-right', status:'danger'}); + UIkit.notify(Joomla.Text._('COM_COMPONENTBUILDER_THE_REPLACE_PROCESS_HAD_AN_ERROR_WITH_TABLE') + ' ' + tableName, {pos:'top-right', status:'danger'}); } }).then((data) => { if (typeof data.success !== 'undefined') { @@ -343,22 +343,22 @@ const replaceAll = async (signal, tables) => { // if not reqex we reverse the search for you so you can see the update was a success if (regexValue == 0) { // set the replace value as the search value - UIkit.modal.confirm(Joomla.JText._('COM_COMPONENTBUILDER_WOULD_YOU_LIKE_TO_DO_A_REVERSE_SEARCH'), function(){ + UIkit.modal.confirm(Joomla.Text._('COM_COMPONENTBUILDER_WOULD_YOU_LIKE_TO_DO_A_REVERSE_SEARCH'), function(){ startNewSearch(replaceValue, searchValue, matchValue, wholeValue, regexValue, 2); }, function () { - UIkit.modal.confirm(Joomla.JText._('COM_COMPONENTBUILDER_WOULD_YOU_LIKE_TO_REPEAT_THE_SAME_SEARCH'), function(){ + UIkit.modal.confirm(Joomla.Text._('COM_COMPONENTBUILDER_WOULD_YOU_LIKE_TO_REPEAT_THE_SAME_SEARCH'), function(){ startSearch(); }, function () { clearSearch(); - }, {labels: { Ok: Joomla.JText._('COM_COMPONENTBUILDER_YES'), Cancel: Joomla.JText._('COM_COMPONENTBUILDER_NO') }}); - }, {labels: { Ok: Joomla.JText._('COM_COMPONENTBUILDER_YES'), Cancel: Joomla.JText._('COM_COMPONENTBUILDER_NO') }}); + }, {labels: { Ok: Joomla.Text._('COM_COMPONENTBUILDER_YES'), Cancel: Joomla.Text._('COM_COMPONENTBUILDER_NO') }}); + }, {labels: { Ok: Joomla.Text._('COM_COMPONENTBUILDER_YES'), Cancel: Joomla.Text._('COM_COMPONENTBUILDER_NO') }}); } else { // else we search it again just to prove its changed - UIkit.modal.confirm(Joomla.JText._('COM_COMPONENTBUILDER_WOULD_YOU_LIKE_TO_REPEAT_THE_SAME_SEARCH'), function(){ + UIkit.modal.confirm(Joomla.Text._('COM_COMPONENTBUILDER_WOULD_YOU_LIKE_TO_REPEAT_THE_SAME_SEARCH'), function(){ startSearch(); }, function () { clearSearch(); - }, {labels: { Ok: Joomla.JText._('COM_COMPONENTBUILDER_YES'), Cancel: Joomla.JText._('COM_COMPONENTBUILDER_NO') }}); + }, {labels: { Ok: Joomla.Text._('COM_COMPONENTBUILDER_YES'), Cancel: Joomla.Text._('COM_COMPONENTBUILDER_NO') }}); } }, 3000); } @@ -381,13 +381,13 @@ const replaceAll = async (signal, tables) => { */ const setValueCheck = (row, field, table) => { // load question - let question = Joomla.JText._('COM_COMPONENTBUILDER_YOUR_ARE_ABOUT_TO_UPDATE_ROW') + ' (' + row + ') -> (' + field + ') ' + - Joomla.JText._('COM_COMPONENTBUILDER_FIELD_IN_THE') + ' (' + table + ') ' + Joomla.JText._('COM_COMPONENTBUILDER_TABLE') + '.

' + - Joomla.JText._('COM_COMPONENTBUILDER_THIS_CAN_NOT_BE_UNDONE_ARE_YOU_SURE_YOU_WANT_TO_CONTINUE'); + let question = Joomla.Text._('COM_COMPONENTBUILDER_YOUR_ARE_ABOUT_TO_UPDATE_ROW') + ' (' + row + ') -> (' + field + ') ' + + Joomla.Text._('COM_COMPONENTBUILDER_FIELD_IN_THE') + ' (' + table + ') ' + Joomla.Text._('COM_COMPONENTBUILDER_TABLE') + '.

' + + Joomla.Text._('COM_COMPONENTBUILDER_THIS_CAN_NOT_BE_UNDONE_ARE_YOU_SURE_YOU_WANT_TO_CONTINUE'); // do check UIkit.modal.confirm(question, function () { setValue(row, field, table); - }, {labels: { Ok: Joomla.JText._('COM_COMPONENTBUILDER_YES'), Cancel: Joomla.JText._('COM_COMPONENTBUILDER_NO') }}); + }, {labels: { Ok: Joomla.Text._('COM_COMPONENTBUILDER_YES'), Cancel: Joomla.Text._('COM_COMPONENTBUILDER_NO') }}); }; /** diff --git a/admin/compiler/joomla_3/import.gif b/admin/compiler/joomla_3/import.gif index 10bcb856924dbc48ac739332a40ce1617c88687b..4371cc618bdc1702aad69fc871a50182a01537ec 100644 GIT binary patch delta 2752 zcmeHJ`&Z0q81Fl`dYjs2=r+@I9V()tqzh||R_^5zp{20OCY2RS*)Ehzp}eg`+F7hD z9c|u5II%@*J7{wkT1^htC0({XyOhg5&s6Ncu;=*Yb7nrz=lwj-dwbsR%gut8cl?|U zJVMH{EI0un29C5$YsIR$c^pTmJwFpUC2byV&d&4wfZHiNf|R#jc1ak^4Ixd|6B>5K z$T!A$4{1=kHe0I=#cf388aV#sstThi2Ym(OGmRb9?$Om!LSqe8;9F*xfF?d*V#_8P zMPaUTvItOatk38L8Re|TScs82u@*4XwldyB$kl} zTwMu$YhH(DDz$<}xLGiPrM|p4s~a#f$od+@n4?U?8I#SW;pM|8d?_I8s@w{TX|Y); zCGHKW=L}thoPpyjOyUbOQL?>?2oSJ$wwF2dF4Zb%RaQS*(rCsc4%;~?F?h=_eC4fb zU$UrQrkSdf(5~G#VZe4LQ~j=>i=6$e?8G$Pg}(x(Im-dRa}EU@U1SY7wOhp3IFB8tnUHbCA)e5LgAah6^TRnn+e3c6V&+r)nAbP( z^^sOS8BFLgZ$~h;E(twz}@;a>ewmqTE^`5|A3A@-c7uoTv z1z5qpYfG?#s_+v%6)0HKjX-2vZk>m4>n$hzQy-Cxi;FeLSzM$Sa?kJl2)O(1L_p2r zNr0`3#{;gvrvY?q3`N8CsqU<#QG@!B`=0_%jXEqM9*Wv)gmTeaf!Glp1Zc1GLV3?+ z3IHOZ`8c4D6V zDM8`NudMWAb64F1WqjgtKwYAffYc`tX0kdAU82`?{`UZ>X(6?sR@qDGsI^fLE?yf9 z*tK>&VA8sSfXbvmz?dZD&n8&{HYC{tcI(kDSq8rYlI6Y20Qb&?QfkBMlJ&JO|3-;f zX-dk6s*PAzssLGDI&>^HK7D6z)wgNI#&qCEXW)^TpRpQ6H#2el7H^u51}gP9MmA63 z%*oKMEd`vXX5fsr#*E1L&oVMh2#wnk1Je6j+yG6tx{HaZZDr!?Y%%9T=#;G$mLx~Q zS=;95G5=8{dsLr`1(kS-SR(c3{D_v%3-OYk7%F;_ zHDa)~-bEH->MwKhzuYj}BS%OY>^j`Sf@=^KwW*)ij$H4)a4XRq%X zAMWVK9tVf{V~_iv_PA25B^&*)2rpIBqgj9>A9ov*U&PY9E7c}KSDKbIfO*D{nLaJtDRSk*`|(ijE?Di zjU#>EKgBvBVe9_#$4Bkt-|+2147?y_&Q$+=j{5Ikx?2%0@29Ux=sBT6=@;g5L{&SP z2F8vewC&|qsFt3p3->0#R8`(#|sLoAI8_s^c(B5 zo6tqwv6#eL|6Fx;&*kAiC05B|-%f+CE@4fffsoMJcllthjp97PJRjQfY*P~065!;p auROd_WJmG^JT4v-70Em<5+%)iF8^Od#l!;u delta 4162 zcmeHKYgm&<7S5MIE)Xuka1RiIcvnJE7O+;tsI<09tst#biMkbwNRYA?9xV|F0i-rK zRG?77T9sC$DFgJ8b=`u>qQYv?LKbg$tE`I))cRPeXfqf1g8koL=1TA|H z8%G|sPGV#z^1553X>X!OPV(#-Cch~++#&?F1DH`Ma26ngm+B9E#cn_?@F%JCf)ti5 z*v#ey-Gv)zs-2>B1a(_vAt=Z!$OGotSX0z)+XjMCi9cnz{$fUX0;7{H=v~W)BD+%* z{crnHg5K!x^4N3$W95IqM~-t{k;Z^rL!|Yt%*;ZGtmv}{J{kgN9otA0kUV8`1fv|# z=yZ*-Lns&Zfhkik{8MQMiweVfwa(kAf)STXgsaoFlSN^@@T6Nd` zgi#)@G&aF=s~d99GHF``ldTz!?=Xg-F`z7!0j;wL+RNez9433UGi;GXbuv&D>Inu+ zd{|Swo59s`p7JV&XNM1NSm%`M5dHuYE#3PgN$gu<$HqftsRI{}gYeJ(r9jATq18iY z)qeS!)B5=JQh)!o!Z-H67m+hmwiWXX`A4IFxiDV4eupBGFXbpNX)8A@R)i&NpWfe^ zi$U>|;>IMx!SXUHz2NgnwB~R3jj#Y?CyQO8xpYejf%jbzFh+^M{1ab* z?~nA5sPdX38a1<4KQ5|x4!mDGg-7(b)Fry3bbW`8{J*K+#nZ}i4PjAT0%MQdSC6Gh zduovdnfg1F_-;coON{mv-r-Q&_#IuCkYj5|mXc$8$La*^!aIPprW*vY>hDL0@x$UF zY`}-dB^HOmAF74(Pb?-nVD3L@ioNsKe+rV^t$X4M1~B{+T~ zeuDT(?BQ-7^a)nAD+wU4{jBBGy2GT7(M>Bjzkyb@`9kCPsytx$4=U=^b)Ljj@YRco zQT(OtmZYcx5x8(#1PnSc=(r_<6MuB3(6Fwrh>+V|uM%Tc_iMyR?_Nxd@4Ksrp*BTZ z>IiI7!KbD?%B1gkg`iq{s>P_t09jinF7|`V1;q30@)BY!xe~+*B*&!y#9a*{Uc=Qo zVn{aS5Tosy7dGHe*OpuCDzs@`p?6|AkpP=E2T(EhlH?@Pc1!E?nfRbC`8c6V);Q8o zZHlYKst=Z%1S?EcSbbXRWFP;Hn@|ED@CMQsu zzX=3v+eipXwk;>d-EBLF@z)Q(B!*48iWtk&DW)>rg^V<&`w*im-NzSYPVK0PJ*4sT zy{D-@Xn*dIbajbRY;a!Q_Wm5>el(C*x9J1Yy>W|xz z`TQK&9%%lEdRsEXaem0t?in{l-C#>r7LhiT>Rr2_PW)Uf<_yuw$T&T z>Rx9&km{Mg<(DzaD*qJ&S9EI4BApIzAYiXgB>Wlr>BKmspM}q9{=n9>Cxy1mWL)!g z{df4rU~pvIybQfn#bWuzZiYYg?QG>?45-PA#jUquDtI&04fx~>SV^M`)=DyX71Wbb zIt$j)QeG;gr_s7XEjv*~bv}^yv6f(9&Ta`8mlD`pm8Gt?9@k7cB!_o}2wpaXF%d{p z1CJXOBx#(<@7pzJTEqFt?ooDO?uxK>Q%r!t8Uak+L(^lIpQ_exsZ-YQ6)R3G6i8YMe7KfcUNqwu&G2|@ zR=yc{5#iRjFRkGE*-SiJrg*)stgQLArsJ*91;M4rx93sP*wVq|M`>I(n;*{hYmHZA0 Cx!!>Q diff --git a/admin/compiler/joomla_4/ajax.gif b/admin/compiler/joomla_4/ajax.gif new file mode 100644 index 0000000000000000000000000000000000000000..4371cc618bdc1702aad69fc871a50182a01537ec GIT binary patch literal 65516 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⩔~=H6=m7FYh!npll+IG}^SCgmBL&iIsRn&)OjFj(NYOmnWrod2qn{cQcR)G3l_K z9nhZpqwo|+dK>SoH43jEgdvZ^o)t@NHiCUbBL^~rRS?vs*Hr5y1L1qalKQkn#8;?Q^cIP?twH0H@k8qxA zvh(_p_{ioxpsh6$4iC1TyZbKmv4^Hod@HYah>ql zB0ql1?yg2iBn*)veN|JBZjjqt|MO~7q+$_DM|$Wo>RiVo!aBXoj`cjIc1SS+&6f?l z2q>OjFCX+FEBME<`CIQWzWEN)G%&*RIwe6V1K>8#eo3mC`x9e1SkOpBRYW6L0c_9w4}T+bggJduh&p?fode6#a)0GygWI2LGc zEiRyjSk+}AZ)BcuC|_zUg@%%FYGkc_(nYB#Fim1Xphgr2v-LsWG7<@D(kkZW@c+=a zRG(oxhm_1=nU-tK!JJH1&VZN|oKJ8EWh&LpR^Jn z?5t!GB^|U{=qGqijc68}*kR&e#5#Imc;sYc;lV_s4W<`+lJ#z!RKI!^LfxQu{5Vr~ zx>^0~1!m|5-rMJbp1drPttgAka8hKR68PliOG!PHV@Q-%nAL|ru0Gg9NzgyW_tg}AA?YPnDLn+)`5BIC~=T@ur%zSHSo zSuJN}ZGVIz?UhjZ9!l}gs`cuV9d7NJEJm&xNVkv7^jX~zs^uaYJp=P@Rbh1{ zMjAh(rMz%pq>URlQIE&|BKpZQKD@6zLwL7g#-ZSVd?d_Bis!i=9U(aZ9cr0OxTp;@ zGR?^kC>S22X!cysjCgv(125y7k>NS#v_Fhhu_C>q@~|k_9w)npyw5iBN#eISrPmz3 zvl&fd#apHbYF{a8XSTdlc|SMeaBt^3sngm5SFp#~KY9t>^Bc?K<%zZM z<7#~Afv|ABn;J<3IzdB>%EBs35Z*IY;G>2#HTvOCRX<|i9glM+7 zEZz}Yyv6-DZz2E2ivYMh&U=Zd78>&qEO;Q3B=`=eGuX>15NUEQz1)Kjf)vwxoNhzE zO3KJrdhc{k`ngt2LcIDYU=B?eDv86gsdj7AID{EAE>&Q&tBt_-Pl z=#X4R*=YqAqxjnLXxT1?R_&1tO&3I6`#84hT#C?mN4uPhc6)!h^tBYD)3Nxtp-FVuUAy}^iL0TX1`RNj0fX%idXB8X zT1_PR0qGl_Ge{w`u*pa%%PbM*Aq*tR!*ka(t2KTACN0$`)GB{TP7)LPK*f}FRG6n~ z`|Br=m)nYUPshNmMiG;|ligBiTdVwc6c7F+Q8?|1NfY`6Zke0xh`Qck49Pg-%}sa5 z65i^*Hdc|fJ?pBdyP*CD@pof*ow+IsdE>T>@N#VTi=Pb4(|Hx7smcqVF)y$Yv01;8 ziGymqH|4dR_ECb3#^~z8ik*4Pdw$o{5c_m$$CEP!QcdGE_Q9XbeW`0<)n=CQ&Pp?4 zsxT69z|pk;7N6v3HkKEF|J|b1Cs|_G`~JXBIeLk-^JSe%?oqSN9leGTT zdU~(2v+S){d25KzhWv#MGlec7)C5qx7@YScM1Yt0Pc{T>gVrDqQ3kaS%IBR^TcpIp zluIfJxd{nKtRnSL+>XGN;^Ms0;;AvrDThLsbULBR){Qi=lITr+h|a|wgBGG!POMFG zKSC9#hkV@rP(U)aa7~6g%zex>+S4;}-$^L7uMp=Qdk$mh^|a7i~}Faw84 zWQ4@jMM&$zaJ0l^A(kwD^w#z#uU2arNH_E_`yoV?_sM8PP~z!r!kqG?-H^ZGCvW+23+d1;#GPBWTk>VDCR$JWDzeH?7rzQMg44}~KZ(F~yk=iAvnnNo z{y;-QUDr_i!JLXWM{nJ-qd_Y@gmVA9%}SeV`~*w*C^KV% z#xih7A8SY@GoIM4esW{wZacw#h}yHOS}R!&?c|5sCeS{BYI6#JZMct`ziBG+wW-%J z4Kh^TZ?EbxBsG0f{@TBlD9@CJP=Cnyn)BTr%7w1w71D)y@5fGVPSiCx=Dtw?!LmsR zdj0+inb)Hr$SiRsw$Eh^My$bkjTqEyeSFFD0AE3+8D3vvoS}(*NXFz)i z*btw2xZ8sa|EPo>9x~n9j(=ah(qczmS`T960F4U)mSh8s)s-LoC?8} zssD$z(@qmi6eYLh(E@7%vIw53M`2q7g^WP@@Bbj^s!T0 zS9Bhyp}Lz^Xu}K*1zk3p^3><=Ti#cNHuTSj$!~6#LI~74< zmD;Sl5Fs>vu#y;xeCTVo+00o+|1f12diBW?`M`Hj%K}yH2+8BGur0?m(XIx1EtWW! zBOSTBp3?M~{uKvw$uPM9 zKOMY8=eeUd;Q}5T-)?Qz9S{{;RkBPsKBVJ7kn?Cq?#qM8fpx>vc~no2-TXm(3ef{l zlQbSGOfb}uYK%oW`-%xXv7$(jE{8EzdmS8tX4AZ|uGK4up}C3s*Hw-6tk4SgP2`IW zbhF%SSUqk={poM53BEZJFS6!S){%CwDZN`-fwUVasUbw2ski3iDb&k+=)*X(S z5Gz7Oo`8w4yy{BzMyfj=Mh(u_9b!5LMXv7ZL!7RnT0-_-91i-t)3td2`a60SN6Z2; z7U#XxS9eT{_cb}jxC{3+LC4L#HU^zF_nK*;q_yyE1-M!Utu*MV7hW^{ousw!MRS+1 zhhS=18fT|Vv>ggre@}R-dVZ%1E&M6=bXWV{^#>JhMYODP{^j>a3Oq64v~u-$M-_6X8fttaeNbM0eC zQhAXkYi+phRt4TSyh`2E)(s3*@|{)pe`lV-y9AFW&eTuO$^St$-d<6g)bMjSX{AnY zWY-Cp-3ya$H@_9Rh=!;O>W8PVyiMIK!jSXx?Os`BM_#VXv;7R#dg5^3Z6S@!La&%l zs2+$EG{y0NsHBVGIvyn@8!P_7#$S2&xPC(B^k9~?^cE&-VkdJIjh_X`%Lp@~%cYF3 zcKFE{(OD_WO*2jWWe`JS7AWN$!h`H@`ilHm^3MBemd~3_@2DrhQLx!rWw_X^5CS2C z8LopRB*DyhmhVNuG@%tF=b~k_-FNwoD2<-6NiFSx!E=v~l@yMcs-H)x`+SHuo{KTR zTQFeQu;!qb(Q!{j9ZK=-jC*emDhs|q?YPkFQBP5ne?n=f6FgrpvayJS$q|CW6Hsup zSv6Ina^9d|{=F2>tPk$|)A7PSu1XDVp1#WJ zZ(ck7&6qsVjB8~=6*BWz1KW|@qfqiTzcm4mIzJw=f!vBVnl$+3_hJQ}tx>VtqQv*7 zSs~?pw0->pRAZA0wi%nG??;5vH&eXil44R~)Jx(tq-&a0WIPFl^g4)U!*-MMl;$X= z8}e9B6#PV_UfZb@oPayB_Ha%AK#))OC6$A2hP~}k$FBs4T_1wTdl=uLFPjV?4!0Fx zJS1)$)-HbLDS2ru>Xo}dcz1q>_GU4uo|7HAsSj842%~R|l5A3-|MJ>~4sNWPDbY#y z$Uc33hbnB9mZ=faKt4VRniD{==`;!D87;LBMcyBnkpgagYuzyTkOUrwM3{}V$t06E zUrb&89@XIiaRpQe4J8v;hujs;4HXZ~U3;3iuWnUga!Aj5Nl^c>TVhmveCUQeMUJDkjLxUz&)lCDRS!SLjECF^>ezKJyK=T$0{%R6*aKO%j{ z$jd7c;%^mN!pkoWV)~;=qb=rAL0Qu3C*R4=6C)Rt&6PKS1?!3`29p3;hc2 z*@?*gRB`n|e$1Aeq8PcChgnRE_vI&8Cbf5{NxVuVRwX}Ngf4@`GdyfFEKTOHI>toi zUAWS)MIlaAgtmsq%&jPq|KGdZlF)lS?^`HM+;m_$L}ASmysal88{@=d@S9QTxziR@ z8BE?S;<2tF=YK&4f34ocI}>vcQ)+JMyH^ZdbFLJ+ywF3H z{l;2f7&a$VXE~YE12JwnXF+HFC$B2{xVqN=&>s2=T}zfvKREF0gP!)(*9rYP( z`BNbf^$6phQ{z(CT?CuEgAF3Yrw$W!rmc(x?BtuCXW`z23yr_$d+8BI%TcjNma#QJ z!joaWrHBgc=ZAa`CsVhL7;KrpoGnB=Yyo^^8edoJeR`17K*=x#Ek7wyxpsB zlDVxVB(3LDo{U;hrj2g?vQcaGOYiO8n%}k;S^WU@l8S3=gLPUnZ(p~eyU6S6wPzq} z?A7tvVwXeS6{PmkdYO_BiVr`>?q1m{d8+7YzRoEN0?Wk>UeH0OG*u6wqLB_&YMA`j zq{5=?K}KrQZ0V@=%%$addavd_><~oUdXlNJ>9>T50HStF#WqEtn3;%q6Ak_XZvNOL z{7@I$owHXKowYiiTuZvWZ*4~TBlHdT%Lu*&~% z4NED{fE-B&mOwy}K6uoT2Vxe8Z*5{5)Boh{Qp7*x4UFkO#(Lbow&@ZurnkHv9h%_1 zA}%G>&r~Ry8WLhi%gwWeXJ^KTY{)Mym1HC`AqHi&xq^w=QQm5Ghn?hA#3c>19Mr<9 z4oM#AUZWwkdlSZJt!hJO77=-R)WSewC>o_>BY=5C|5GPPPClIteP%bJ%VmY>k#28Azg72%w#$}NLg z%d=r2yB%LxzmYyWTw44*nop3L zFm^#w^X=X=$dm92g(lyZCp`tBXuhh$sRe;I4Owb3#d zZRlZ{zkW)SG@+)fWrfVqG-<3xm0rl3R2QlgeQM=LQ%y1bO^OdbRkXd1e^s%c(oVe+ zzZ{EPqs&;{9-k1Dc^s?fW$uvztMjeTPfq(}V<<=15E-2eH{O(z;H%){OLZZ74-QDF zWxuolR^bYXD|OR#si{RImTR{Eog5e@f!V@xG!uK@%a2h0ma*nPTqZr@G|=<3mTSp` z>kLyyi;puz30AGAuZwZ|b5I`w?T4 z(Vf#L?t({*JLR<^Qesu`>?MyF-`JEKqb#tprJ0+PM>Z&`bc6HBL@pzE5cj0|Z6h&{ zuE9u`_$@PZYiuu5fw!EokeAC%H9E15FZIx#inA@ph9j1_BKC~r@?2<^=;$XKU1lHs+o*+Gl|HdU`JnTn@`oApAbT6{gze?B{7wqez}wE zOIe+qj6vZ7-p^pKW`wtU?Ue4CPC6MHYm?(0V>OWMni|_$X4>DQ5=HhHyQ7xW|LF)x zXZmGr+EjuCNgzetHPV7A0Mn-!xY%|ay4K`zER<_j&!NRo@%;`EXr=(a=$MZr;YAQX zYP(cHbmRIBUENggcGm_w74nK@+0{Ix2Q4z9#E3KFlZ^Fgkth4h8k!M_sNM$z<%gMr zD($5zlpO1P#W%x7x^9)e5c#|JNzQ>=Zl*emuDBcIf+f&~c<1y{h+nqv`k2WNRYf_3 zYbTit@(cLYvJ|G`1$d0~ChLwou%^cQVLvJ#txHK5AoDl`9C(;Q%7O5Vo%3^gHU9Q@ z`AEx6zY?z|I6!5g76GU5g-je?WWpWa`cpKIR1-BQK6%ZPXrs|>5SJl&9I3kyvqMo( zmuVGFlXpsA-A}$GtI%s=gBrMaG-%v0l386}+_UyF%j@flk zF)9ZO#mnSOGU*t?l^almnr9;EAc_z`FYZR9+1l2Ve1jwEP55c0(#&ZDZrl%MWO=54 zGS$}h)~xIYObFZt?Wi}c9~W73B}bC5+>@UAsezBr>0Zt{V;I3?TEK)F1Z#4;Ozp#H z5lC=8RGHe}ndNT$Kci?Zeu4adOwk$+Th8|Ao8OuabBfH(buu{|ZRh3_Onrlz8%a7p z2iUMAR-}v}`7~d@M`XOc+A>@mPDa>2CT{CqRaJgW0)35Qb}R(1;Uykd$%Kd%)LLXR z7!V0h{>Fwlyh0saqw2sORg$~#-pbRAvSabmu_r3w?iEL~VoiG^wU3_PN_EvcGm)iy zi9!syc|w)f4cl0JLgr4Oz?FeLO|FImmqQ;s@h^HYvsKSs_cYVtW~XsI^>9R^w|ClL z*yiO4ewcR4uIxIlPW`sJKVgfgfnw1hV2~23lw>8!lz7^$O^=SuGDArTdYw zkl{hWPZHw9?My61_z^>LnVzg!NV}Q{uc_@FVytvAyg0UN|k^ZER8Zo3R>H^XKJl zVSB|AF~)@FkLNl~jeD+tlQi*d0^w_IY0ys^NRv10-*$7mW!P^$bLMM9$deoQDOjB- zR>arlR2r8&F1EDXw<1kU5CXe%5Mq)4lY%9x@gq;{OoJUwc_q!N)8_{Jg5M5(Ao zQux*lNESnh>=>t!T)&3&9!0oAgS4|MA##jkd^y~P4f zBsjz~u-HUDl;IoW0Dqm}hDu&VKOyt-_vH)$ecfqe%N3*aU^&54X|xO3Z+a-=ChB*h zZY2-w4VKfvmN-AI)|YXyi+rnlSzdqp-GikWp<&EQ^Fi_}nDhJLF+4;%skjoMo|I_e z__4JGhL#|v&n!Yc6^ebi)$SKmMwv9 z1s*zptOdIr3k&bp_IvXTQLt1A6lk#30UkYZt1eKfIJ+I(H;F%J!pF(o=H2J(VwdZU ztiEmv=%L}kY!%HN=eW~r)bGCkP<(F6%y zEKQtGw%K)_BN{Izp0`)!q_a`o8QQ^JDrZ{4P0l&WP|D6!guu%B_vl~UAaV4(vcxX< z_zjxg)CP^ZI;C9?#zvHpFYGaLHD!7`W?2r8e!(K*eqY`Xr$8LaA^cU)7U~!(OK=#1 zH6g3yq*)5pNF3|$wMY=qvmqlr#)mQ;r{6UMi&UGJ8i)IghIuAIKk-Dolt%lJ2mnJW z6D@{oZFWzq%|zeT-|5hpBUwFiI>s>(XMC`RP}`y&0E-Wf6B`Q_vE0-xq&QqpUGvQR zhBd#^Z*US-6DKKVgCY3J7uAW7grA1Y+}Ol>LSDjH(AZAnpjiIfs@Zym-wXwj`9!Pr z-HuMNdwb0d?Xw0mu7(HPAwSPXgziyFx-59`e$UOHba|frh;DVFM8Wm(OXqL^iyKaX z-<>VC8)|4w%Cdb~EE0Vo=2FJ%5Au;#?GfHw_ExNiq*QMZ&9kB90}f&+2JQh5)oPJZG60etZFPa z)f-XkK(ffOCXuOREol;Lug!M~?_$c+8P9kq$%F}^+qf|u6tK+{ce?)c!>h1IgvY)1 zBM^xBD&y-8^5$_3oeBuAf?j4S-0OI1lEy0`XSqE4_jr#dW-SVEgI*_#6b);t*m^?M zn4(dHOqZWPhgI!4*s;3}7BwxM*gCZFO@9_0Ib=4NY8C{t@C=x-(Fs7fa6zZ<9E+w|(f)d%QOSga~Qmnr~ssR}@s zN-ac}Y65gA@lSNADjQuY{ux~=b9@hO9$l(o=%_Fhj$@-sQ5|rYgFf!K7C@I8s&`yc zm2ePPE}^h|6rf9Ucv17{(hdC_bSXjspi43H=+d827!xkK)CHhRZTJ?VOV>{{bgi35 zmm(IRO9$=)bg4`s+IemsUFy+p5&247-zA~b6Va9&6+aw@Nf%;jw)t&x4LBV?qK;KLzV4qJe0TklIN>S3-?Du?N)>;ODXh;^zgDT$e!?nQH}1>%q}?5a_j>I$PODD*7EjLL6r;mAU`0uPCtwf{-}`XuD^2KwH@viOp$ z_~eSz_RihK!ySqO(JwQ1TgZ9dGNV>sQc4JvD!6GeQ6Pjwu7$XJ5u7zf9UCD@VlYZy zfuWL3S*E+ntt#0jd$m6Q!)4Ucg5DndIsUVox?CG6o%BFBy!+&aB7GCX5kBPJkUoqI zrlkkkdpQJP7XPxlHsW3(eWw(Ef?#U7 z1nTy}hYp;JVUY9-OY!0)1_SW?47@~4T_UC~5mR@Ufp!`okH1=#2HDF_(IsN)5;1j& zn7Twvokzzke(La*OAlu>{=s${>~K_2Y&0bg4Am|XQHL&+;MwJ9iI}=XOkES|Vd@m7G zmx!rL#MC8X>Q|NnOT^SAV(Jnxwfo%<8qn{4I?rYU+V>JMb%~g|L`+>Grn0w6I3qI{ zlez09zGrhZnq zmx!srhv2J`d9jfQM+W=qz6vDw;x#d@2FA%|ke~}Su!Z{eS4JWniTg(`tG?90mWZiK z#8i&HJ^SB6TU;WhvayTYG+roW|8Mgm_-s$VL`+>Gre^$oMgC#x@gl?%n-cSXnV9-b zA1~10{zXj9Yu0p10<{-hM1k&>;{*gO`9S>y{WQ?6|Lmj_YC$Ir(vo`x#c|aH#Tis- zPCpH@7c8HE4G?h243c(XOU%jmtpK1{O^gWb|wrC zF;#ZjM+6Rtsie=uRJCsqQ!7Y+5>w${5mWOP5K|QZF?EzfOzlU0i8S|yS!R-0=xh~D<}N-6Gsi^M(HyzUB4om8Q+#_MH9$f*?*(dBl(<0{YUBM1TItxy=AC zdcP;)eHMX@7p?vo|03NRCb3U9Oi>hi{ASb?n=dLScx>CdkxlR7AmaK#W0cLXx|cip z;*99I{?703l2Q*eL+5hiB%WOzMNLoKfItsBBu>PsxA)zYFrd>a(WgFC#}|IMNrgd4 z@n*jJHToy>;{lfVACv5p#Aj3JAE7aDmncAHaVi)nO58hFt`-Cmjgws5BDOHUxXmZK zD9snKg)`(=q7ZlCk^O!!oDRy}KW5gK1EkXg4HT(k@DU8oipXZC3o}cH7 zTCw?}huD14ZS#ClV^KC=l=vlI)P&6!B>}#uE}JiE3izV@U-LyxIebx5Ef@v^_@c&a zzNiV{i(tFM91uzNjjPFM3p@bn5VDzG$||^9@OlggJcCjcmSX56jnb zl>eK2(Z7S4{XlXBPsSrv8YUAkMzfQNSZm@`l89UIR5D&+suzlhGMh_)5DC1Sp=#cU z9?Z*eNP@rL*z`St>)t6y#EV^S*Of#&qipPs6IikWH=cyhTB7gse-9)G!E?ZnllVy<%8>)hke#R zekHKy^kEL{b8@9D8}=#36HeY1O=817Rl>89IIvHV=%QGNK7f7dAIMHLD6ch=Q&Hq2 zs9-{*lbJ0L)jGNXoAtSjAh$&)wue#Ek**47#OSmK605Q{>kQ;6Gg~#zcqz5^k^$=z zf9Ze%A&A%;k)(cja=*mmVu*UbCosV;+N=P3u^%?p+z~>a=||)43f0d2$_J~rXc;Z8 z(uH|2_zAakpXpoNCD=($vxsApW7bxJ{=>iN-LGAz%)e^;>x9X=3yPHisC5p%)PK4p z`CF&?+}fQq#DO+jkxjOimM3&{+qAU29xzMARq8`Ud#eX&l1j(ZIb4(AD~C3nKYsYO zDZ)mCQ1x(?FP*mMAJpHQC{N-^x_(iRVlFI3oV!8%DGD zLB$7giD=4;2WHzFB5EG-FeG*cKQZOKAICHKewQR7Y~_fs`K5Pdy(xTE@3LliQuo5P zyiwYRK*S#`Vdxe)%Oj+wwF)Kd(R2{o%imNkI)$DbmurXQxsLDa89U zrNZF*X~e&zm{9!Z!tr!|BJsIxLubK=}YI+59;2jJv7BjdjqB zfs(;#*tl~KM{@)<2vh-(0N=dV=MFs}c|dT3W(?#QND}VQ^G%4r=V*s44EKejPqS_< z1tQxjG*7`i3?wx-tEAy6n@CSi;ybwAu&ga6s?trqDYhAYJd%`ujJ}ND{Ve^| zrM~_k9~LXR-c7&t9KGXmfXKB=Npc=)r^=(0q<#)iIe9Kw*F*ez6J3+>+!J5>F6#9W zO%w6vyyd%pZyTGKvD;v(sU@3P(=RVyjQ=EgT$dSWePqvRO+Q`4FE`yupG=@p(DAIN9^-nSprim)%x>Qk=ghjqOt|gBrO+-3~SpGK{pU>fbg7RRb zeBFs7cTYvXescHxiK9QCrNa4T?K)eg`e?!$KBJwj56)36oAFduJWP}*wT3}%ae_j# zc~`dF80_UAB=Te_2FUl`hc`(DIbbYckNvfTjGqqQ_8jUR3}2Rz^WLH_A%-e>kCkOC zzl!GApUu0x6&88jNi&;luDEMZYRs^E@;xvAWofw@lEa(zP^1CjeC39-Xa4>B``1r@ zzI68NAD_FjzbhQ`;SLw$MzzTgAL3x9=k!7g4fa8(bJ`(JFSIbQ7cYx*NBM<~&_Xf& z3wQnSc~*0J^N%z_+(W$V^C7+8$YZZ;Ahr-HpBq3$lH>URDpHJ%io9UP zMnxLTqax*{*r-T2Kt+;1qatI01=&Wid&8MuE4`V|Ppgd_MiOPV3g(w8UH;Q%E!Q6^3BPSYKx=(;3zd5xv@^>Ri$i z+tGC6D0!aP+uoZ^R;gtj%;#Q2!%zKu!#(!m>YiWTuS~pH^zaX=uddMEouqhLnk_7O?}qf89I>pO8o5O@ z3HlBNMn#N5X^2>5U4&kBFtWZmKyYIBSpxXpVF zokZD@aa&;x>~#&{%eQXdxqI(t7d%0MPort_mWKKcRM%{eDk%#t_{&LIfl~2z9neOe zj~=IO0~MHR=*G^KdbHuq7F3LG`C1$G`*q7uPCbeASV z{_Jx#zZFD4k>P4FAe2DJfCvK7!R|xn#ZM3;Agn-R3rqr-*vC8u~sC2W&V&B|Uw zNDq%ZP>>~)x6P%nY#*c87gk=g3&HfI*B%N^WAZh%Y(d5|lUh%B@gCXJdD>kiZ&~A+ zep|WrZEAf3qibZPgdJ3cMJ`;wF>#XQ-S1VtEx7kd|UoZYxF4J|IqYHAP2 zw{|)pat<`@mg?%U6Dn!X-df)~VxxJkI!gEa<<%ODK?v*0EepQHGl?qYw{Oem9ERY> zA3Rv5R-_;-miqLKhN7M#{PmkJV@O!td#I(VFBPk3TV~T*J&=Ld54|(gT669I!7^QX zZCmYdKGFG*_i$U?`6814NZHzB^%qJ_c09Q=eC%M&rAo6zw2bYy4>hPc36qg_Xo&rdk!DmZ$^j(qUCq!?*a+0%k8)bkRe&t6>^bXtAuWP(knX3vdr zMT~Zu;i~4&hnT4A_wL3#Y`dtx8KT{t90C_>;&0>>3NUFL_Bc2ML%z=5L(#2;95 z0zn2s1e|l=3fDnsLw1;BjAaUvVq^vbiTKYbke0HHC zEUhHJOq{PM3tpO+2N7W=B1`IMX>rJgD1m+D9ccos+jB~f)1Y0E_@=%-@w2Q5zV_xC zNaavCVQ)unK4C0^zk47}bRq)9+g}FZMg1JX!&{q+mYSsq%8UvC;(*T$&KD2{oQ4UUV&G%}^Dl@cP^>^-1wsqN%nu$V-~Zy@{MY{|3_3vt z1Da>|zDvLS{s%QaAu%aAC6$(zo{^cAeIO?{FP~meSi~qUDJ?56UnUEc!Qv4WUP35{ zcoPICQ-9D!OcHXu`LH-Iq0L#oi`B&2dV0NFXJ?PNz`zEP!#!i--51tjPK>cSq1V<4 z4~;iB^WC*Qck}-2^g|outqB(PnawiX+~knlYa4<0vk;WkvlR-2@^~7d~nW5z>cGP(;$36T!2slCj|KHphAJ~|6goV zzWL=B{t`q%&JQ03|3MT~R5GioYijH24>mL&YHB`w3`IxD@8@!#iTK?IJT`j~+?4Au-RN zKYVjXq?PZ*ug`c}gk~ZiJUVha!JQu|*nQ(-j|Lob>TONbPGU6J+h=Q6nyl+l literal 0 HcmV?d00001 diff --git a/admin/compiler/joomla_4/import.gif b/admin/compiler/joomla_4/import.gif deleted file mode 100644 index 10bcb856924dbc48ac739332a40ce1617c88687b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66680 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 MO(NYF4?(N`A5CA*Q2+n{ diff --git a/admin/compiler/joomla_4/settings.json b/admin/compiler/joomla_4/settings.json index 56faa4878..7cb59cf80 100644 --- a/admin/compiler/joomla_4/settings.json +++ b/admin/compiler/joomla_4/settings.json @@ -252,8 +252,8 @@ "newName": "HeaderCheck.php", "type": "file" }, - "import.gif": { - "naam": "import.gif", + "ajax.gif": { + "naam": "ajax.gif", "path": "c0mp0n3nt/admin/assets/images", "rename": false, "type": "file" diff --git a/admin/forms/dynamic_get.xml b/admin/forms/dynamic_get.xml index 67acff77c..eda9e8c75 100644 --- a/admin/forms/dynamic_get.xml +++ b/admin/forms/dynamic_get.xml @@ -332,15 +332,30 @@ hint="COM_COMPONENTBUILDER_DYNAMIC_GET_DB_SELECTION_HINT" required="true" /> - +