Changeset 3397480
- Timestamp:
- 11/17/2025 06:14:03 PM (5 months ago)
- Location:
- constant-contact-forms
- Files:
-
- 797 added
- 6 edited
-
tags/2.14.2 (added)
-
tags/2.14.2/SECURITY.md (added)
-
tags/2.14.2/assets (added)
-
tags/2.14.2/assets/css (added)
-
tags/2.14.2/assets/css/README.md (added)
-
tags/2.14.2/assets/css/admin-debug.css (added)
-
tags/2.14.2/assets/css/admin-style.css (added)
-
tags/2.14.2/assets/css/admin-style.css.map (added)
-
tags/2.14.2/assets/css/admin-style.min.css (added)
-
tags/2.14.2/assets/css/admin-style.min.css.map (added)
-
tags/2.14.2/assets/css/style.css (added)
-
tags/2.14.2/assets/css/style.css.map (added)
-
tags/2.14.2/assets/css/style.min.css (added)
-
tags/2.14.2/assets/css/style.min.css.map (added)
-
tags/2.14.2/assets/images (added)
-
tags/2.14.2/assets/images/README.md (added)
-
tags/2.14.2/assets/images/cc-login.png (added)
-
tags/2.14.2/assets/images/check_circle.svg (added)
-
tags/2.14.2/assets/images/createAccount.svg (added)
-
tags/2.14.2/assets/images/ctct-admin-notice-logo.png (added)
-
tags/2.14.2/assets/images/ctct-icon-2x.png (added)
-
tags/2.14.2/assets/images/ctct-icon.png (added)
-
tags/2.14.2/assets/images/ctct_ripple.svg (added)
-
tags/2.14.2/assets/images/error.svg (added)
-
tags/2.14.2/assets/images/fields-image.png (added)
-
tags/2.14.2/assets/images/login.svg (added)
-
tags/2.14.2/assets/images/logo-black.png (added)
-
tags/2.14.2/assets/images/oval.min.svg (added)
-
tags/2.14.2/assets/images/question-mail.png (added)
-
tags/2.14.2/assets/js (added)
-
tags/2.14.2/assets/js/ctct-plugin-admin (added)
-
tags/2.14.2/assets/js/ctct-plugin-admin.js (added)
-
tags/2.14.2/assets/js/ctct-plugin-admin.min.js (added)
-
tags/2.14.2/assets/js/ctct-plugin-admin.min.js.map (added)
-
tags/2.14.2/assets/js/ctct-plugin-admin/ajax.js (added)
-
tags/2.14.2/assets/js/ctct-plugin-admin/builder.js (added)
-
tags/2.14.2/assets/js/ctct-plugin-admin/clipboard.js (added)
-
tags/2.14.2/assets/js/ctct-plugin-admin/forms.js (added)
-
tags/2.14.2/assets/js/ctct-plugin-admin/index.js (added)
-
tags/2.14.2/assets/js/ctct-plugin-admin/modal.js (added)
-
tags/2.14.2/assets/js/ctct-plugin-admin/optins.js (added)
-
tags/2.14.2/assets/js/ctct-plugin-admin/required-lists.js (added)
-
tags/2.14.2/assets/js/ctct-plugin-attached-lists.js (added)
-
tags/2.14.2/assets/js/ctct-plugin-frontend (added)
-
tags/2.14.2/assets/js/ctct-plugin-frontend.js (added)
-
tags/2.14.2/assets/js/ctct-plugin-frontend.min.js (added)
-
tags/2.14.2/assets/js/ctct-plugin-frontend.min.js.map (added)
-
tags/2.14.2/assets/js/ctct-plugin-frontend/index.js (added)
-
tags/2.14.2/assets/js/ctct-plugin-frontend/validation.js (added)
-
tags/2.14.2/assets/js/ctct-plugin-hcaptcha (added)
-
tags/2.14.2/assets/js/ctct-plugin-hcaptcha.js (added)
-
tags/2.14.2/assets/js/ctct-plugin-hcaptcha.min.js (added)
-
tags/2.14.2/assets/js/ctct-plugin-hcaptcha.min.js.map (added)
-
tags/2.14.2/assets/js/ctct-plugin-hcaptcha/hcaptcha.js (added)
-
tags/2.14.2/assets/js/ctct-plugin-hcaptcha/index.js (added)
-
tags/2.14.2/assets/js/ctct-plugin-recaptcha (added)
-
tags/2.14.2/assets/js/ctct-plugin-recaptcha-v2 (added)
-
tags/2.14.2/assets/js/ctct-plugin-recaptcha-v2.js (added)
-
tags/2.14.2/assets/js/ctct-plugin-recaptcha-v2.min.js (added)
-
tags/2.14.2/assets/js/ctct-plugin-recaptcha-v2.min.js.map (added)
-
tags/2.14.2/assets/js/ctct-plugin-recaptcha-v2/index.js (added)
-
tags/2.14.2/assets/js/ctct-plugin-recaptcha-v2/recaptcha.js (added)
-
tags/2.14.2/assets/js/ctct-plugin-recaptcha.js (added)
-
tags/2.14.2/assets/js/ctct-plugin-recaptcha.min.js (added)
-
tags/2.14.2/assets/js/ctct-plugin-recaptcha.min.js.map (added)
-
tags/2.14.2/assets/js/ctct-plugin-recaptcha/index.js (added)
-
tags/2.14.2/assets/js/ctct-plugin-recaptcha/recaptcha.js (added)
-
tags/2.14.2/assets/js/webpack.config.js (added)
-
tags/2.14.2/assets/sass (added)
-
tags/2.14.2/assets/sass/_admin-about.scss (added)
-
tags/2.14.2/assets/sass/_admin-attached-lists.scss (added)
-
tags/2.14.2/assets/sass/_admin-connect.scss (added)
-
tags/2.14.2/assets/sass/_admin-debug.scss (added)
-
tags/2.14.2/assets/sass/_admin-forms.scss (added)
-
tags/2.14.2/assets/sass/_admin-lists.scss (added)
-
tags/2.14.2/assets/sass/_admin-notices.scss (added)
-
tags/2.14.2/assets/sass/_admin-pages.scss (added)
-
tags/2.14.2/assets/sass/_admin-toolbar.scss (added)
-
tags/2.14.2/assets/sass/_compatibility.scss (added)
-
tags/2.14.2/assets/sass/_forms.scss (added)
-
tags/2.14.2/assets/sass/_global.scss (added)
-
tags/2.14.2/assets/sass/_inputs.scss (added)
-
tags/2.14.2/assets/sass/_layout.scss (added)
-
tags/2.14.2/assets/sass/_mixins.scss (added)
-
tags/2.14.2/assets/sass/_modal.scss (added)
-
tags/2.14.2/assets/sass/_variables.scss (added)
-
tags/2.14.2/assets/sass/admin-style.scss (added)
-
tags/2.14.2/assets/sass/style.scss (added)
-
tags/2.14.2/build (added)
-
tags/2.14.2/build/block.json (added)
-
tags/2.14.2/build/index-rtl.css (added)
-
tags/2.14.2/build/index.asset.php (added)
-
tags/2.14.2/build/index.css (added)
-
tags/2.14.2/build/index.js (added)
-
tags/2.14.2/constant-contact-forms.php (added)
-
tags/2.14.2/includes (added)
-
tags/2.14.2/includes/Ctct (added)
-
tags/2.14.2/includes/Ctct/Components (added)
-
tags/2.14.2/includes/Ctct/Components/Component.php (added)
-
tags/2.14.2/includes/Ctct/Components/Contacts (added)
-
tags/2.14.2/includes/Ctct/Components/Contacts/Contact.php (added)
-
tags/2.14.2/includes/Ctct/Components/Contacts/ContactList.php (added)
-
tags/2.14.2/includes/Ctct/Exceptions (added)
-
tags/2.14.2/includes/Ctct/Exceptions/CtctException.php (added)
-
tags/2.14.2/includes/cc-modules (added)
-
tags/2.14.2/includes/cc-modules/form (added)
-
tags/2.14.2/includes/cc-modules/form/includes (added)
-
tags/2.14.2/includes/cc-modules/form/includes/frontend.php (added)
-
tags/2.14.2/includes/class-admin-pages.php (added)
-
tags/2.14.2/includes/class-admin.php (added)
-
tags/2.14.2/includes/class-api.php (added)
-
tags/2.14.2/includes/class-attached-lists-field.php (added)
-
tags/2.14.2/includes/class-beaver-builder.php (added)
-
tags/2.14.2/includes/class-block.php (added)
-
tags/2.14.2/includes/class-builder-fields.php (added)
-
tags/2.14.2/includes/class-builder.php (added)
-
tags/2.14.2/includes/class-captchaservice.php (added)
-
tags/2.14.2/includes/class-client.php (added)
-
tags/2.14.2/includes/class-connect.php (added)
-
tags/2.14.2/includes/class-cpts.php (added)
-
tags/2.14.2/includes/class-display-shortcode.php (added)
-
tags/2.14.2/includes/class-display.php (added)
-
tags/2.14.2/includes/class-elementor.php (added)
-
tags/2.14.2/includes/class-hcaptcha.php (added)
-
tags/2.14.2/includes/class-health.php (added)
-
tags/2.14.2/includes/class-lists.php (added)
-
tags/2.14.2/includes/class-logging.php (added)
-
tags/2.14.2/includes/class-mail.php (added)
-
tags/2.14.2/includes/class-notification-content.php (added)
-
tags/2.14.2/includes/class-notifications.php (added)
-
tags/2.14.2/includes/class-process-form.php (added)
-
tags/2.14.2/includes/class-recaptcha-v2.php (added)
-
tags/2.14.2/includes/class-recaptcha-v3.php (added)
-
tags/2.14.2/includes/class-recaptcha.php (added)
-
tags/2.14.2/includes/class-settings.php (added)
-
tags/2.14.2/includes/class-shortcode.php (added)
-
tags/2.14.2/includes/class-uninstall.php (added)
-
tags/2.14.2/includes/class-updates.php (added)
-
tags/2.14.2/includes/class-user-customizations.php (added)
-
tags/2.14.2/includes/compatibility.php (added)
-
tags/2.14.2/includes/deprecated.php (added)
-
tags/2.14.2/includes/helper-functions.php (added)
-
tags/2.14.2/includes/notification-logic.php (added)
-
tags/2.14.2/includes/widgets (added)
-
tags/2.14.2/includes/widgets/contact-form-select.php (added)
-
tags/2.14.2/includes/widgets/elementor-widget.php (added)
-
tags/2.14.2/languages (added)
-
tags/2.14.2/languages/constant-contact-forms.pot (added)
-
tags/2.14.2/license.txt (added)
-
tags/2.14.2/readme.txt (added)
-
tags/2.14.2/vendor (added)
-
tags/2.14.2/vendor/autoload.php (added)
-
tags/2.14.2/vendor/bin (added)
-
tags/2.14.2/vendor/bin/generate-defuse-key (added)
-
tags/2.14.2/vendor/cmb2 (added)
-
tags/2.14.2/vendor/cmb2/cmb2 (added)
-
tags/2.14.2/vendor/cmb2/cmb2/CHANGELOG.md (added)
-
tags/2.14.2/vendor/cmb2/cmb2/CODE_OF_CONDUCT.md (added)
-
tags/2.14.2/vendor/cmb2/cmb2/CONTRIBUTING.md (added)
-
tags/2.14.2/vendor/cmb2/cmb2/LICENSE (added)
-
tags/2.14.2/vendor/cmb2/cmb2/bootstrap.php (added)
-
tags/2.14.2/vendor/cmb2/cmb2/composer.json (added)
-
tags/2.14.2/vendor/cmb2/cmb2/css (added)
-
tags/2.14.2/vendor/cmb2/cmb2/css/cmb2-display-rtl.css (added)
-
tags/2.14.2/vendor/cmb2/cmb2/css/cmb2-display-rtl.min.css (added)
-
tags/2.14.2/vendor/cmb2/cmb2/css/cmb2-display.css (added)
-
tags/2.14.2/vendor/cmb2/cmb2/css/cmb2-display.css.map (added)
-
tags/2.14.2/vendor/cmb2/cmb2/css/cmb2-display.min.css (added)
-
tags/2.14.2/vendor/cmb2/cmb2/css/cmb2-front-rtl.css (added)
-
tags/2.14.2/vendor/cmb2/cmb2/css/cmb2-front-rtl.min.css (added)
-
tags/2.14.2/vendor/cmb2/cmb2/css/cmb2-front.css (added)
-
tags/2.14.2/vendor/cmb2/cmb2/css/cmb2-front.css.map (added)
-
tags/2.14.2/vendor/cmb2/cmb2/css/cmb2-front.min.css (added)
-
tags/2.14.2/vendor/cmb2/cmb2/css/cmb2-rtl.css (added)
-
tags/2.14.2/vendor/cmb2/cmb2/css/cmb2-rtl.min.css (added)
-
tags/2.14.2/vendor/cmb2/cmb2/css/cmb2.css (added)
-
tags/2.14.2/vendor/cmb2/cmb2/css/cmb2.css.map (added)
-
tags/2.14.2/vendor/cmb2/cmb2/css/cmb2.min.css (added)
-
tags/2.14.2/vendor/cmb2/cmb2/css/index.php (added)
-
tags/2.14.2/vendor/cmb2/cmb2/css/sass (added)
-
tags/2.14.2/vendor/cmb2/cmb2/css/sass/cmb2-display.scss (added)
-
tags/2.14.2/vendor/cmb2/cmb2/css/sass/cmb2-front.scss (added)
-
tags/2.14.2/vendor/cmb2/cmb2/css/sass/cmb2.scss (added)
-
tags/2.14.2/vendor/cmb2/cmb2/css/sass/index.php (added)
-
tags/2.14.2/vendor/cmb2/cmb2/css/sass/partials (added)
-
tags/2.14.2/vendor/cmb2/cmb2/css/sass/partials/_char_counter.scss (added)
-
tags/2.14.2/vendor/cmb2/cmb2/css/sass/partials/_collapsible_ui.scss (added)
-
tags/2.14.2/vendor/cmb2/cmb2/css/sass/partials/_context_metaboxes.scss (added)
-
tags/2.14.2/vendor/cmb2/cmb2/css/sass/partials/_display.scss (added)
-
tags/2.14.2/vendor/cmb2/cmb2/css/sass/partials/_front.scss (added)
-
tags/2.14.2/vendor/cmb2/cmb2/css/sass/partials/_jquery_ui.scss (added)
-
tags/2.14.2/vendor/cmb2/cmb2/css/sass/partials/_main_wrap.scss (added)
-
tags/2.14.2/vendor/cmb2/cmb2/css/sass/partials/_misc.scss (added)
-
tags/2.14.2/vendor/cmb2/cmb2/css/sass/partials/_mixins.scss (added)
-
tags/2.14.2/vendor/cmb2/cmb2/css/sass/partials/_new_term.scss (added)
-
tags/2.14.2/vendor/cmb2/cmb2/css/sass/partials/_options-page.scss (added)
-
tags/2.14.2/vendor/cmb2/cmb2/css/sass/partials/_post_metaboxes.scss (added)
-
tags/2.14.2/vendor/cmb2/cmb2/css/sass/partials/_sidebar_placements.scss (added)
-
tags/2.14.2/vendor/cmb2/cmb2/css/sass/partials/_variables.scss (added)
-
tags/2.14.2/vendor/cmb2/cmb2/css/sass/partials/index.php (added)
-
tags/2.14.2/vendor/cmb2/cmb2/example-functions.php (added)
-
tags/2.14.2/vendor/cmb2/cmb2/images (added)
-
tags/2.14.2/vendor/cmb2/cmb2/images/ico-delete.png (added)
-
tags/2.14.2/vendor/cmb2/cmb2/images/index.php (added)
-
tags/2.14.2/vendor/cmb2/cmb2/images/ui-bg_flat_0_aaaaaa_40x100.png (added)
-
tags/2.14.2/vendor/cmb2/cmb2/images/ui-bg_flat_75_ffffff_40x100.png (added)
-
tags/2.14.2/vendor/cmb2/cmb2/images/ui-bg_glass_55_fbf9ee_1x400.png (added)
-
tags/2.14.2/vendor/cmb2/cmb2/images/ui-bg_glass_65_ffffff_1x400.png (added)
-
tags/2.14.2/vendor/cmb2/cmb2/images/ui-bg_glass_75_dadada_1x400.png (added)
-
tags/2.14.2/vendor/cmb2/cmb2/images/ui-bg_glass_75_e6e6e6_1x400.png (added)
-
tags/2.14.2/vendor/cmb2/cmb2/images/ui-bg_glass_95_fef1ec_1x400.png (added)
-
tags/2.14.2/vendor/cmb2/cmb2/images/ui-bg_highlight-soft_75_cccccc_1x100.png (added)
-
tags/2.14.2/vendor/cmb2/cmb2/images/ui-icons_222222_256x240.png (added)
-
tags/2.14.2/vendor/cmb2/cmb2/images/ui-icons_2e83ff_256x240.png (added)
-
tags/2.14.2/vendor/cmb2/cmb2/images/ui-icons_454545_256x240.png (added)
-
tags/2.14.2/vendor/cmb2/cmb2/images/ui-icons_888888_256x240.png (added)
-
tags/2.14.2/vendor/cmb2/cmb2/images/ui-icons_cd0a0a_256x240.png (added)
-
tags/2.14.2/vendor/cmb2/cmb2/includes (added)
-
tags/2.14.2/vendor/cmb2/cmb2/includes/CMB2.php (added)
-
tags/2.14.2/vendor/cmb2/cmb2/includes/CMB2_Ajax.php (added)
-
tags/2.14.2/vendor/cmb2/cmb2/includes/CMB2_Base.php (added)
-
tags/2.14.2/vendor/cmb2/cmb2/includes/CMB2_Boxes.php (added)
-
tags/2.14.2/vendor/cmb2/cmb2/includes/CMB2_Field.php (added)
-
tags/2.14.2/vendor/cmb2/cmb2/includes/CMB2_Field_Display.php (added)
-
tags/2.14.2/vendor/cmb2/cmb2/includes/CMB2_Hookup.php (added)
-
tags/2.14.2/vendor/cmb2/cmb2/includes/CMB2_Hookup_Base.php (added)
-
tags/2.14.2/vendor/cmb2/cmb2/includes/CMB2_Hookup_Field.php (added)
-
tags/2.14.2/vendor/cmb2/cmb2/includes/CMB2_JS.php (added)
-
tags/2.14.2/vendor/cmb2/cmb2/includes/CMB2_Options.php (added)
-
tags/2.14.2/vendor/cmb2/cmb2/includes/CMB2_Options_Hookup.php (added)
-
tags/2.14.2/vendor/cmb2/cmb2/includes/CMB2_Sanitize.php (added)
-
tags/2.14.2/vendor/cmb2/cmb2/includes/CMB2_Show_Filters.php (added)
-
tags/2.14.2/vendor/cmb2/cmb2/includes/CMB2_Types.php (added)
-
tags/2.14.2/vendor/cmb2/cmb2/includes/CMB2_Utils.php (added)
-
tags/2.14.2/vendor/cmb2/cmb2/includes/helper-functions.php (added)
-
tags/2.14.2/vendor/cmb2/cmb2/includes/index.php (added)
-
tags/2.14.2/vendor/cmb2/cmb2/includes/rest-api (added)
-
tags/2.14.2/vendor/cmb2/cmb2/includes/rest-api/CMB2_REST.php (added)
-
tags/2.14.2/vendor/cmb2/cmb2/includes/rest-api/CMB2_REST_Controller.php (added)
-
tags/2.14.2/vendor/cmb2/cmb2/includes/rest-api/CMB2_REST_Controller_Boxes.php (added)
-
tags/2.14.2/vendor/cmb2/cmb2/includes/rest-api/CMB2_REST_Controller_Fields.php (added)
-
tags/2.14.2/vendor/cmb2/cmb2/includes/shim (added)
-
tags/2.14.2/vendor/cmb2/cmb2/includes/shim/WP_REST_Controller.php (added)
-
tags/2.14.2/vendor/cmb2/cmb2/includes/types (added)
-
tags/2.14.2/vendor/cmb2/cmb2/includes/types/CMB2_Type_Base.php (added)
-
tags/2.14.2/vendor/cmb2/cmb2/includes/types/CMB2_Type_Checkbox.php (added)
-
tags/2.14.2/vendor/cmb2/cmb2/includes/types/CMB2_Type_Colorpicker.php (added)
-
tags/2.14.2/vendor/cmb2/cmb2/includes/types/CMB2_Type_Counter_Base.php (added)
-
tags/2.14.2/vendor/cmb2/cmb2/includes/types/CMB2_Type_File.php (added)
-
tags/2.14.2/vendor/cmb2/cmb2/includes/types/CMB2_Type_File_Base.php (added)
-
tags/2.14.2/vendor/cmb2/cmb2/includes/types/CMB2_Type_File_List.php (added)
-
tags/2.14.2/vendor/cmb2/cmb2/includes/types/CMB2_Type_Multi_Base.php (added)
-
tags/2.14.2/vendor/cmb2/cmb2/includes/types/CMB2_Type_Multicheck.php (added)
-
tags/2.14.2/vendor/cmb2/cmb2/includes/types/CMB2_Type_Oembed.php (added)
-
tags/2.14.2/vendor/cmb2/cmb2/includes/types/CMB2_Type_Picker_Base.php (added)
-
tags/2.14.2/vendor/cmb2/cmb2/includes/types/CMB2_Type_Radio.php (added)
-
tags/2.14.2/vendor/cmb2/cmb2/includes/types/CMB2_Type_Select.php (added)
-
tags/2.14.2/vendor/cmb2/cmb2/includes/types/CMB2_Type_Select_Timezone.php (added)
-
tags/2.14.2/vendor/cmb2/cmb2/includes/types/CMB2_Type_Taxonomy_Base.php (added)
-
tags/2.14.2/vendor/cmb2/cmb2/includes/types/CMB2_Type_Taxonomy_Multicheck.php (added)
-
tags/2.14.2/vendor/cmb2/cmb2/includes/types/CMB2_Type_Taxonomy_Multicheck_Hierarchical.php (added)
-
tags/2.14.2/vendor/cmb2/cmb2/includes/types/CMB2_Type_Taxonomy_Radio.php (added)
-
tags/2.14.2/vendor/cmb2/cmb2/includes/types/CMB2_Type_Taxonomy_Radio_Hierarchical.php (added)
-
tags/2.14.2/vendor/cmb2/cmb2/includes/types/CMB2_Type_Taxonomy_Select.php (added)
-
tags/2.14.2/vendor/cmb2/cmb2/includes/types/CMB2_Type_Taxonomy_Select_Hierarchical.php (added)
-
tags/2.14.2/vendor/cmb2/cmb2/includes/types/CMB2_Type_Text.php (added)
-
tags/2.14.2/vendor/cmb2/cmb2/includes/types/CMB2_Type_Text_Date.php (added)
-
tags/2.14.2/vendor/cmb2/cmb2/includes/types/CMB2_Type_Text_Datetime_Timestamp.php (added)
-
tags/2.14.2/vendor/cmb2/cmb2/includes/types/CMB2_Type_Text_Datetime_Timestamp_Timezone.php (added)
-
tags/2.14.2/vendor/cmb2/cmb2/includes/types/CMB2_Type_Text_Time.php (added)
-
tags/2.14.2/vendor/cmb2/cmb2/includes/types/CMB2_Type_Textarea.php (added)
-
tags/2.14.2/vendor/cmb2/cmb2/includes/types/CMB2_Type_Textarea_Code.php (added)
-
tags/2.14.2/vendor/cmb2/cmb2/includes/types/CMB2_Type_Title.php (added)
-
tags/2.14.2/vendor/cmb2/cmb2/includes/types/CMB2_Type_Wysiwyg.php (added)
-
tags/2.14.2/vendor/cmb2/cmb2/index.php (added)
-
tags/2.14.2/vendor/cmb2/cmb2/init.php (added)
-
tags/2.14.2/vendor/cmb2/cmb2/js (added)
-
tags/2.14.2/vendor/cmb2/cmb2/js/cmb2-char-counter.js (added)
-
tags/2.14.2/vendor/cmb2/cmb2/js/cmb2-wysiwyg.js (added)
-
tags/2.14.2/vendor/cmb2/cmb2/js/cmb2.js (added)
-
tags/2.14.2/vendor/cmb2/cmb2/js/cmb2.min.js (added)
-
tags/2.14.2/vendor/cmb2/cmb2/js/index.php (added)
-
tags/2.14.2/vendor/cmb2/cmb2/js/jquery-ui-timepicker-addon.min.js (added)
-
tags/2.14.2/vendor/cmb2/cmb2/js/wp-color-picker-alpha.js (added)
-
tags/2.14.2/vendor/cmb2/cmb2/js/wp-color-picker-alpha.min.js (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-ach.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-ach.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-af.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-af.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-an.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-an.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-ar.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-ar.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-ary.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-ary.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-as.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-as.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-az.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-az.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-be.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-be.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-bg.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-bg.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-bg_BG.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-bg_BG.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-bn_BD.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-bn_BD.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-br.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-br.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-bs.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-bs.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-bs_BA.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-bs_BA.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-ca.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-ca.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-co.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-co.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-cs_CZ.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-cs_CZ.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-cy.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-cy.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-da_DK.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-da_DK.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-de_AT.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-de_AT.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-de_CH.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-de_CH.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-de_DE.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-de_DE.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-dv.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-dv.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-el.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-el.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-en@pirate.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-en@pirate.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-en_AU.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-en_AU.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-en_CA.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-en_CA.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-en_GB.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-en_GB.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-eo.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-eo.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-es_AR.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-es_AR.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-es_CL.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-es_CL.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-es_CO.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-es_CO.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-es_ES.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-es_ES.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-es_MX.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-es_MX.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-es_PE.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-es_PE.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-es_VE.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-es_VE.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-et.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-et.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-eu.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-eu.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-fa.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-fa.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-fa_IR.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-fa_IR.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-fi.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-fi.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-fo.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-fo.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-fr_BE.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-fr_BE.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-fr_CA.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-fr_CA.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-fr_FR.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-fr_FR.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-fy.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-fy.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-ga.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-ga.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-gd.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-gd.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-gl_ES.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-gl_ES.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-gu_IN.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-gu_IN.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-he_IL.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-he_IL.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-hi_IN.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-hi_IN.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-hr.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-hr.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-hu_HU.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-hu_HU.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-hy.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-hy.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-id_ID.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-id_ID.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-is_IS.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-is_IS.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-it_IT.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-it_IT.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-ja.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-ja.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-jv.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-jv.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-ka.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-ka.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-ka_GE.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-ka_GE.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-kk.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-kk.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-km.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-km.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-kn.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-kn.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-ko_KR.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-ko_KR.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-ku.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-ku.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-ky.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-ky.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-lo.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-lo.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-lt_LT.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-lt_LT.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-lv.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-lv.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-mg.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-mg.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-mk_MK.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-mk_MK.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-mn.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-mn.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-mr.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-mr.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-ms_MY.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-ms_MY.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-my_MM.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-my_MM.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-nb_NO.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-nb_NO.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-ne_NP.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-ne_NP.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-nl_BE.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-nl_BE.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-nl_NL.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-nl_NL.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-nn_NO.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-nn_NO.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-oc.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-oc.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-os.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-os.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-pap.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-pap.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-pl_PL.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-pl_PL.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-ps.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-ps.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-pt_BR.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-pt_BR.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-pt_PT.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-pt_PT.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-ro_RO.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-ro_RO.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-ru_RU.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-ru_RU.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-sa.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-sa.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-sah.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-sah.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-si_LK.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-si_LK.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-sk_SK.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-sk_SK.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-sl_SI.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-sl_SI.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-so.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-so.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-sq.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-sq.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-sr_RS.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-sr_RS.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-su.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-su.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-sv_SE.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-sv_SE.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-sw.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-sw.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-ta_IN.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-ta_IN.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-ta_LK.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-ta_LK.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-te.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-te.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-tg.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-tg.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-th.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-th.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-tk_TM.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-tk_TM.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-tl.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-tl.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-tr_TR.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-tr_TR.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-tzm.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-tzm.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-ug.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-ug.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-uk.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-uk.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-ur.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-ur.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-ur_PK.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-ur_PK.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-uz.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-uz.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-vi.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-vi.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-zh_CN.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-zh_CN.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-zh_HK.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-zh_HK.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-zh_TW.mo (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2-zh_TW.po (added)
-
tags/2.14.2/vendor/cmb2/cmb2/languages/cmb2.pot (added)
-
tags/2.14.2/vendor/cmb2/cmb2/package-lock.json (added)
-
tags/2.14.2/vendor/cmb2/cmb2/readme.txt (added)
-
tags/2.14.2/vendor/composer (added)
-
tags/2.14.2/vendor/composer/ClassLoader.php (added)
-
tags/2.14.2/vendor/composer/InstalledVersions.php (added)
-
tags/2.14.2/vendor/composer/LICENSE (added)
-
tags/2.14.2/vendor/composer/autoload_classmap.php (added)
-
tags/2.14.2/vendor/composer/autoload_namespaces.php (added)
-
tags/2.14.2/vendor/composer/autoload_psr4.php (added)
-
tags/2.14.2/vendor/composer/autoload_real.php (added)
-
tags/2.14.2/vendor/composer/autoload_static.php (added)
-
tags/2.14.2/vendor/composer/installed.json (added)
-
tags/2.14.2/vendor/composer/installed.php (added)
-
tags/2.14.2/vendor/composer/platform_check.php (added)
-
tags/2.14.2/vendor/defuse (added)
-
tags/2.14.2/vendor/defuse/php-encryption (added)
-
tags/2.14.2/vendor/defuse/php-encryption/LICENSE (added)
-
tags/2.14.2/vendor/defuse/php-encryption/README.md (added)
-
tags/2.14.2/vendor/defuse/php-encryption/bin (added)
-
tags/2.14.2/vendor/defuse/php-encryption/bin/generate-defuse-key (added)
-
tags/2.14.2/vendor/defuse/php-encryption/composer.json (added)
-
tags/2.14.2/vendor/defuse/php-encryption/dist (added)
-
tags/2.14.2/vendor/defuse/php-encryption/dist/Makefile (added)
-
tags/2.14.2/vendor/defuse/php-encryption/dist/box.json (added)
-
tags/2.14.2/vendor/defuse/php-encryption/dist/signingkey-new.asc (added)
-
tags/2.14.2/vendor/defuse/php-encryption/dist/signingkey-new.asc.sig (added)
-
tags/2.14.2/vendor/defuse/php-encryption/dist/signingkey.asc (added)
-
tags/2.14.2/vendor/defuse/php-encryption/docs (added)
-
tags/2.14.2/vendor/defuse/php-encryption/docs/CryptoDetails.md (added)
-
tags/2.14.2/vendor/defuse/php-encryption/docs/FAQ.md (added)
-
tags/2.14.2/vendor/defuse/php-encryption/docs/InstallingAndVerifying.md (added)
-
tags/2.14.2/vendor/defuse/php-encryption/docs/InternalDeveloperDocs.md (added)
-
tags/2.14.2/vendor/defuse/php-encryption/docs/Tutorial.md (added)
-
tags/2.14.2/vendor/defuse/php-encryption/docs/UpgradingFromV1.2.md (added)
-
tags/2.14.2/vendor/defuse/php-encryption/docs/classes (added)
-
tags/2.14.2/vendor/defuse/php-encryption/docs/classes/Crypto.md (added)
-
tags/2.14.2/vendor/defuse/php-encryption/docs/classes/File.md (added)
-
tags/2.14.2/vendor/defuse/php-encryption/docs/classes/Key.md (added)
-
tags/2.14.2/vendor/defuse/php-encryption/docs/classes/KeyProtectedByPassword.md (added)
-
tags/2.14.2/vendor/defuse/php-encryption/src (added)
-
tags/2.14.2/vendor/defuse/php-encryption/src/Core.php (added)
-
tags/2.14.2/vendor/defuse/php-encryption/src/Crypto.php (added)
-
tags/2.14.2/vendor/defuse/php-encryption/src/DerivedKeys.php (added)
-
tags/2.14.2/vendor/defuse/php-encryption/src/Encoding.php (added)
-
tags/2.14.2/vendor/defuse/php-encryption/src/Exception (added)
-
tags/2.14.2/vendor/defuse/php-encryption/src/Exception/BadFormatException.php (added)
-
tags/2.14.2/vendor/defuse/php-encryption/src/Exception/CryptoException.php (added)
-
tags/2.14.2/vendor/defuse/php-encryption/src/Exception/EnvironmentIsBrokenException.php (added)
-
tags/2.14.2/vendor/defuse/php-encryption/src/Exception/IOException.php (added)
-
tags/2.14.2/vendor/defuse/php-encryption/src/Exception/WrongKeyOrModifiedCiphertextException.php (added)
-
tags/2.14.2/vendor/defuse/php-encryption/src/File.php (added)
-
tags/2.14.2/vendor/defuse/php-encryption/src/Key.php (added)
-
tags/2.14.2/vendor/defuse/php-encryption/src/KeyOrPassword.php (added)
-
tags/2.14.2/vendor/defuse/php-encryption/src/KeyProtectedByPassword.php (added)
-
tags/2.14.2/vendor/defuse/php-encryption/src/RuntimeTests.php (added)
-
tags/2.14.2/vendor/google (added)
-
tags/2.14.2/vendor/google/recaptcha (added)
-
tags/2.14.2/vendor/google/recaptcha/.github (added)
-
tags/2.14.2/vendor/google/recaptcha/.github/ISSUE_TEMPLATE (added)
-
tags/2.14.2/vendor/google/recaptcha/.github/ISSUE_TEMPLATE/bug_report.md (added)
-
tags/2.14.2/vendor/google/recaptcha/.gitignore (added)
-
tags/2.14.2/vendor/google/recaptcha/.travis.yml (added)
-
tags/2.14.2/vendor/google/recaptcha/ARCHITECTURE.md (added)
-
tags/2.14.2/vendor/google/recaptcha/CONTRIBUTING.md (added)
-
tags/2.14.2/vendor/google/recaptcha/LICENSE (added)
-
tags/2.14.2/vendor/google/recaptcha/README.md (added)
-
tags/2.14.2/vendor/google/recaptcha/app.yaml (added)
-
tags/2.14.2/vendor/google/recaptcha/composer.json (added)
-
tags/2.14.2/vendor/google/recaptcha/examples (added)
-
tags/2.14.2/vendor/google/recaptcha/examples/appengine-https.php (added)
-
tags/2.14.2/vendor/google/recaptcha/examples/config.php.dist (added)
-
tags/2.14.2/vendor/google/recaptcha/examples/examples.css (added)
-
tags/2.14.2/vendor/google/recaptcha/examples/google0afd8760fd68f119.html (added)
-
tags/2.14.2/vendor/google/recaptcha/examples/index.php (added)
-
tags/2.14.2/vendor/google/recaptcha/examples/recaptcha-content-security-policy.php (added)
-
tags/2.14.2/vendor/google/recaptcha/examples/recaptcha-v2-checkbox-explicit.php (added)
-
tags/2.14.2/vendor/google/recaptcha/examples/recaptcha-v2-checkbox.php (added)
-
tags/2.14.2/vendor/google/recaptcha/examples/recaptcha-v2-invisible.php (added)
-
tags/2.14.2/vendor/google/recaptcha/examples/recaptcha-v3-request-scores.php (added)
-
tags/2.14.2/vendor/google/recaptcha/examples/recaptcha-v3-verify.php (added)
-
tags/2.14.2/vendor/google/recaptcha/examples/robots.txt (added)
-
tags/2.14.2/vendor/google/recaptcha/phpunit.xml.dist (added)
-
tags/2.14.2/vendor/google/recaptcha/src (added)
-
tags/2.14.2/vendor/google/recaptcha/src/ReCaptcha (added)
-
tags/2.14.2/vendor/google/recaptcha/src/ReCaptcha/ReCaptcha.php (added)
-
tags/2.14.2/vendor/google/recaptcha/src/ReCaptcha/RequestMethod (added)
-
tags/2.14.2/vendor/google/recaptcha/src/ReCaptcha/RequestMethod.php (added)
-
tags/2.14.2/vendor/google/recaptcha/src/ReCaptcha/RequestMethod/Curl.php (added)
-
tags/2.14.2/vendor/google/recaptcha/src/ReCaptcha/RequestMethod/CurlPost.php (added)
-
tags/2.14.2/vendor/google/recaptcha/src/ReCaptcha/RequestMethod/Post.php (added)
-
tags/2.14.2/vendor/google/recaptcha/src/ReCaptcha/RequestMethod/Socket.php (added)
-
tags/2.14.2/vendor/google/recaptcha/src/ReCaptcha/RequestMethod/SocketPost.php (added)
-
tags/2.14.2/vendor/google/recaptcha/src/ReCaptcha/RequestParameters.php (added)
-
tags/2.14.2/vendor/google/recaptcha/src/ReCaptcha/Response.php (added)
-
tags/2.14.2/vendor/google/recaptcha/src/autoload.php (added)
-
tags/2.14.2/vendor/google/recaptcha/tests (added)
-
tags/2.14.2/vendor/google/recaptcha/tests/ReCaptcha (added)
-
tags/2.14.2/vendor/google/recaptcha/tests/ReCaptcha/ReCaptchaTest.php (added)
-
tags/2.14.2/vendor/google/recaptcha/tests/ReCaptcha/RequestMethod (added)
-
tags/2.14.2/vendor/google/recaptcha/tests/ReCaptcha/RequestMethod/CurlPostTest.php (added)
-
tags/2.14.2/vendor/google/recaptcha/tests/ReCaptcha/RequestMethod/PostTest.php (added)
-
tags/2.14.2/vendor/google/recaptcha/tests/ReCaptcha/RequestMethod/SocketPostTest.php (added)
-
tags/2.14.2/vendor/google/recaptcha/tests/ReCaptcha/RequestParametersTest.php (added)
-
tags/2.14.2/vendor/google/recaptcha/tests/ReCaptcha/ResponseTest.php (added)
-
tags/2.14.2/vendor/monolog (added)
-
tags/2.14.2/vendor/monolog/monolog (added)
-
tags/2.14.2/vendor/monolog/monolog/CHANGELOG.md (added)
-
tags/2.14.2/vendor/monolog/monolog/LICENSE (added)
-
tags/2.14.2/vendor/monolog/monolog/README.md (added)
-
tags/2.14.2/vendor/monolog/monolog/UPGRADE.md (added)
-
tags/2.14.2/vendor/monolog/monolog/composer.json (added)
-
tags/2.14.2/vendor/monolog/monolog/src (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Attribute (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Attribute/AsMonologProcessor.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/DateTimeImmutable.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/ErrorHandler.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Formatter (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Formatter/ChromePHPFormatter.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Formatter/ElasticaFormatter.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Formatter/ElasticsearchFormatter.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Formatter/FlowdockFormatter.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Formatter/FluentdFormatter.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Formatter/FormatterInterface.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Formatter/GelfMessageFormatter.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Formatter/GoogleCloudLoggingFormatter.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Formatter/HtmlFormatter.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Formatter/JsonFormatter.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Formatter/LineFormatter.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Formatter/LogglyFormatter.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Formatter/LogmaticFormatter.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Formatter/LogstashFormatter.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Formatter/MongoDBFormatter.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Formatter/NormalizerFormatter.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Formatter/ScalarFormatter.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Formatter/WildfireFormatter.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/AbstractHandler.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/AbstractSyslogHandler.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/AmqpHandler.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/BrowserConsoleHandler.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/BufferHandler.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/ChromePHPHandler.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/CouchDBHandler.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/CubeHandler.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/Curl (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/Curl/Util.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/DeduplicationHandler.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/DoctrineCouchDBHandler.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/DynamoDbHandler.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/ElasticaHandler.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/ElasticsearchHandler.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/ErrorLogHandler.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/FallbackGroupHandler.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/FilterHandler.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ActivationStrategyInterface.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ChannelLevelActivationStrategy.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ErrorLevelActivationStrategy.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossedHandler.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/FirePHPHandler.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/FleepHookHandler.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/FlowdockHandler.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/FormattableHandlerInterface.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/FormattableHandlerTrait.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/GelfHandler.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/GroupHandler.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/Handler.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/HandlerInterface.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/HandlerWrapper.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/IFTTTHandler.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/InsightOpsHandler.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/LogEntriesHandler.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/LogglyHandler.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/LogmaticHandler.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/MailHandler.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/MandrillHandler.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/MissingExtensionException.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/MongoDBHandler.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/NativeMailerHandler.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/NewRelicHandler.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/NoopHandler.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/NullHandler.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/OverflowHandler.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/PHPConsoleHandler.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/ProcessHandler.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/ProcessableHandlerInterface.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/ProcessableHandlerTrait.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/PsrHandler.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/PushoverHandler.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/RedisHandler.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/RedisPubSubHandler.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/RollbarHandler.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/RotatingFileHandler.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/SamplingHandler.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/SendGridHandler.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/Slack (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/Slack/SlackRecord.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/SlackHandler.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/SlackWebhookHandler.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/SocketHandler.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/SqsHandler.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/SwiftMailerHandler.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/SymfonyMailerHandler.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/SyslogHandler.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/SyslogUdp (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/SyslogUdp/UdpSocket.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/SyslogUdpHandler.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/TelegramBotHandler.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/TestHandler.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/WebRequestRecognizerTrait.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/WhatFailureGroupHandler.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Handler/ZendMonitorHandler.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/LogRecord.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Logger.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Processor (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Processor/GitProcessor.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Processor/HostnameProcessor.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Processor/IntrospectionProcessor.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Processor/MemoryPeakUsageProcessor.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Processor/MemoryProcessor.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Processor/MemoryUsageProcessor.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Processor/MercurialProcessor.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Processor/ProcessIdProcessor.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Processor/ProcessorInterface.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Processor/PsrLogMessageProcessor.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Processor/TagProcessor.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Processor/UidProcessor.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Processor/WebProcessor.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Registry.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/ResettableInterface.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/SignalHandler.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Test (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Test/TestCase.php (added)
-
tags/2.14.2/vendor/monolog/monolog/src/Monolog/Utils.php (added)
-
tags/2.14.2/vendor/paragonie (added)
-
tags/2.14.2/vendor/paragonie/random_compat (added)
-
tags/2.14.2/vendor/paragonie/random_compat/LICENSE (added)
-
tags/2.14.2/vendor/paragonie/random_compat/build-phar.sh (added)
-
tags/2.14.2/vendor/paragonie/random_compat/composer.json (added)
-
tags/2.14.2/vendor/paragonie/random_compat/dist (added)
-
tags/2.14.2/vendor/paragonie/random_compat/dist/random_compat.phar.pubkey (added)
-
tags/2.14.2/vendor/paragonie/random_compat/dist/random_compat.phar.pubkey.asc (added)
-
tags/2.14.2/vendor/paragonie/random_compat/lib (added)
-
tags/2.14.2/vendor/paragonie/random_compat/lib/random.php (added)
-
tags/2.14.2/vendor/paragonie/random_compat/other (added)
-
tags/2.14.2/vendor/paragonie/random_compat/other/build_phar.php (added)
-
tags/2.14.2/vendor/paragonie/random_compat/psalm-autoload.php (added)
-
tags/2.14.2/vendor/paragonie/random_compat/psalm.xml (added)
-
tags/2.14.2/vendor/psr (added)
-
tags/2.14.2/vendor/psr/log (added)
-
tags/2.14.2/vendor/psr/log/LICENSE (added)
-
tags/2.14.2/vendor/psr/log/Psr (added)
-
tags/2.14.2/vendor/psr/log/Psr/Log (added)
-
tags/2.14.2/vendor/psr/log/Psr/Log/AbstractLogger.php (added)
-
tags/2.14.2/vendor/psr/log/Psr/Log/InvalidArgumentException.php (added)
-
tags/2.14.2/vendor/psr/log/Psr/Log/LogLevel.php (added)
-
tags/2.14.2/vendor/psr/log/Psr/Log/LoggerAwareInterface.php (added)
-
tags/2.14.2/vendor/psr/log/Psr/Log/LoggerAwareTrait.php (added)
-
tags/2.14.2/vendor/psr/log/Psr/Log/LoggerInterface.php (added)
-
tags/2.14.2/vendor/psr/log/Psr/Log/LoggerTrait.php (added)
-
tags/2.14.2/vendor/psr/log/Psr/Log/NullLogger.php (added)
-
tags/2.14.2/vendor/psr/log/Psr/Log/Test (added)
-
tags/2.14.2/vendor/psr/log/Psr/Log/Test/DummyTest.php (added)
-
tags/2.14.2/vendor/psr/log/Psr/Log/Test/LoggerInterfaceTest.php (added)
-
tags/2.14.2/vendor/psr/log/Psr/Log/Test/TestLogger.php (added)
-
tags/2.14.2/vendor/psr/log/README.md (added)
-
tags/2.14.2/vendor/psr/log/composer.json (added)
-
trunk/assets/js/ctct-plugin-frontend.js (modified) (1 diff)
-
trunk/assets/js/ctct-plugin-frontend.min.js (modified) (1 diff)
-
trunk/assets/js/ctct-plugin-frontend.min.js.map (modified) (1 diff)
-
trunk/assets/js/ctct-plugin-frontend/validation.js (modified) (1 diff)
-
trunk/constant-contact-forms.php (modified) (2 diffs)
-
trunk/readme.txt (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
constant-contact-forms/trunk/assets/js/ctct-plugin-frontend.js
r3389849 r3397480 30 30 /***/ (function() { 31 31 32 eval("{/**\n * Front-end form validation.\n *\n * @since 1.0.0\n */\n\nwindow.CTCTSupport = {};\n(function (window, app) {\n /**\n * @constructor\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n app.init = function () {\n app.cache();\n app.bindEvents();\n };\n\n /**\n * Cache DOM elements.\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n app.cache = function () {\n app.cache = {\n forms: []\n };\n var wrapper = document.querySelectorAll('.ctct-form-wrapper');\n if (wrapper.length) {\n wrapper.forEach(function (formWrapper) {\n var found = formWrapper.querySelector('form');\n if (found) {\n app.cache.forms.push(found);\n }\n });\n }\n app.cache.forms.forEach(function (form, index) {\n app.cache.forms[index].honeypot = form.querySelector('.ctct_usage_field');\n app.cache.forms[index].submitButton = form.querySelector('input[type=submit]');\n app.cache.forms[index].recaptcha = form.querySelector('.g-recaptcha');\n });\n app.timeout = null;\n };\n\n /**\n * Remove the ctct-invalid class from elements that have it.\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n app.setAllInputsValid = function () {\n app.cache.forms.forEach(function (form) {\n var invalid = form.querySelectorAll('.ctct-invalid');\n Array.from(invalid).forEach(function (field) {\n field.classList.remove('ctct-invalid');\n });\n });\n };\n\n /**\n * Adds .ctct-invalid HTML class to inputs whose values are invalid.\n *\n * @author Constant Contact\n * @since 1.0.0\n *\n * @param {object} error AJAX response error object.\n */\n app.processError = function (error) {\n // If we have an id property set.\n if ('undefined' !== typeof error.id) {\n var invalid = document.querySelectorAll('#' + error.id);\n Array.from(invalid).forEach(function (theInvalid) {\n theInvalid.classList.add('ctct-invalid');\n });\n }\n };\n\n /**\n * Check the value of the hidden honeypot field; disable form submission button if anything in it.\n *\n * @author Constant Contact\n * @since 1.0.0\n *\n * @param {object} event The change or keyup event triggering this callback.\n * @param {object} honeyPot The object for the actual input field being checked.\n * @param {object} submitButton The object for the submit button in the same form as the honeypot field.\n */\n app.checkHoneypot = function (event, honeyPot, submitButton) {\n // If there is text in the honeypot, disable the submit button.\n\n // Leaving this disabling in place because it should not be getting used by screen readers in the first place, and I feel it's going to help more than hurt to keep.\n if (0 < honeyPot.value.length) {\n submitButton.setAttribute('disabled', 'disabled');\n } else {\n submitButton.removeAttribute('disabled');\n }\n };\n\n /**\n * Ensures that we should use AJAX to process the specified form, and that all required fields are not empty.\n *\n * @author Constant Contact\n * @since 1.0.0\n *\n * @param {object} form object for the form being validated.\n * @return {boolean} False if AJAX processing is disabled for this form or if a required field is empty.\n */\n app.validateSubmission = function (form) {\n if ('on' !== form.getAttribute('data-doajax')) {\n return false;\n }\n var fields = form.querySelectorAll('[required]');\n Array.from(fields).forEach(function (field) {\n if (false === field.checkValidity()) {\n return false;\n }\n });\n return true;\n };\n\n /**\n * Prepends form with a message that fades out in 5 seconds.\n *\n * @author Constant Contact\n * @since 1.0.0\n *\n * @param {object} form object for the form a message is being displayed for.\n * @param {string} message The message content.\n * @param {string} classes Optional. HTML classes to add to the message wrapper.\n * @param {string} role Role attribute for accessibility.\n */\n app.showMessage = function (form, message) {\n var classes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n var role = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'log';\n var wrapper = form.parentElement;\n if (wrapper.querySelector('p.ctct-message')) {\n wrapper.querySelector('p.ctct-message').remove();\n }\n var message_tag = document.createElement('p');\n message_tag.setAttribute('class', 'ctct-message ' + classes);\n message_tag.setAttribute('role', role);\n message_tag.innerHTML = message;\n var dismiss_btn = document.createElement('button');\n dismiss_btn.setAttribute('class', 'button button-secondary ctct-dismiss ctct-dismiss-ajax-notice');\n dismiss_btn.setAttribute('aria-label', 'Dismiss notification');\n dismiss_btn.innerHTML = '✕';\n message_tag.prepend(dismiss_btn);\n form.parentElement.prepend(message_tag);\n wrapper.querySelector('.ctct-dismiss-ajax-notice').addEventListener('click', function () {\n this.parentElement.remove();\n });\n };\n\n /**\n * Submits the actual form via AJAX.\n *\n * @author Constant Contact\n * @since 1.0.0\n *\n * @param {object} form object for the form being submitted.\n */\n app.submitForm = function (form) {\n var data = new FormData();\n var formData = new FormData(form);\n var formParams = new URLSearchParams(formData);\n data.append('action', 'ctct_process_form');\n data.append('data', formParams);\n var options = {\n method: 'POST',\n body: data\n };\n fetch(window.ajaxurl, options).then(function (response) {\n return response.json();\n }).then(function (response) {\n if ('undefined' === typeof response.status) {\n return false;\n }\n if ('success' !== response.status) {\n if ('undefined' !== typeof response.errors) {\n app.setAllInputsValid();\n response.errors.forEach(app.processError);\n } else {\n app.showMessage(form, response.message, 'ctct-error', 'alert');\n }\n return false;\n }\n form.style.display = 'none';\n // If we're here, the submission was a success; show message and reset form fields.\n app.showMessage(form, response.message, 'ctct-success', 'status');\n form.reset();\n });\n };\n\n /**\n * Handle the form submission.\n *\n * @author Constant Contact\n * @since 1.0.0\n *\n * @param {object} event The submit event.\n * @param {object} form object for the current form being handled.\n * @return {boolean} False if unable to validate the form.\n */\n app.handleSubmission = function (event, form) {\n if (!app.validateSubmission(form)) {\n return false;\n }\n clearTimeout(app.timeout);\n if (form.checkValidity()) {\n app.timeout = setTimeout(app.submitForm, 500, form);\n }\n };\n\n /**\n * Set up event bindings and callbacks.\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n app.bindEvents = function () {\n app.cache.forms.forEach(function (form) {\n var thesubmit = form.querySelector('[type=submit]');\n thesubmit.addEventListener('click', function (event) {\n var doingajax = form.getAttribute('data-doajax');\n if (doingajax && 'on' === doingajax) {\n event.preventDefault();\n app.handlerecaptcha(form);\n }\n if (form.classList.contains('ctct-submitted')) {\n return;\n }\n form.classList.add('ctct-submitted');\n app.handleSubmission(event, form);\n form.classList.remove('ctct-submitted');\n });\n form.honeypot.addEventListener('change', function (event) {\n app.checkHoneypot(event, form.honeypot, form.submitButton);\n });\n form.honeypot.addEventListener('keyup', function (event) {\n app.checkHoneypot(event, form.honeypot, form.submitButton);\n });\n });\n };\n\n /**\n * Custom handling within our validation file, for cases of reCAPTCHA v3 + AJAX submit.\n *\n * @param form Form being submitted.\n */\n app.handlerecaptcha = function (form) {\n if ('undefined' === typeof recaptchav3 .site_key) {\n return;\n }\n grecaptcha.ready(function () {\n try {\n grecaptcha.execute(recaptchav3.site_key, {\n action: 'constantcontactsubmit'\n }).then(function (token) {\n var recaptchaResponse = document.createElement('input');\n recaptchaResponse.setAttribute('type', 'hidden');\n recaptchaResponse.setAttribute('name', 'g-recaptcha-response');\n recaptchaResponse.setAttribute('value', token);\n form.append(recaptchaResponse.cloneNode(true));\n });\n } catch (error) {\n console.log(error);\n }\n });\n };\n app.init();\n})(window, window.CTCTSupport);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9hc3NldHMvanMvY3RjdC1wbHVnaW4tZnJvbnRlbmQvdmFsaWRhdGlvbi5qcyIsIm5hbWVzIjpbIndpbmRvdyIsIkNUQ1RTdXBwb3J0IiwiYXBwIiwiaW5pdCIsImNhY2hlIiwiYmluZEV2ZW50cyIsImZvcm1zIiwid3JhcHBlciIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvckFsbCIsImxlbmd0aCIsImZvckVhY2giLCJmb3JtV3JhcHBlciIsImZvdW5kIiwicXVlcnlTZWxlY3RvciIsInB1c2giLCJmb3JtIiwiaW5kZXgiLCJob25leXBvdCIsInN1Ym1pdEJ1dHRvbiIsInJlY2FwdGNoYSIsInRpbWVvdXQiLCJzZXRBbGxJbnB1dHNWYWxpZCIsImludmFsaWQiLCJBcnJheSIsImZyb20iLCJmaWVsZCIsImNsYXNzTGlzdCIsInJlbW92ZSIsInByb2Nlc3NFcnJvciIsImVycm9yIiwiaWQiLCJ0aGVJbnZhbGlkIiwiYWRkIiwiY2hlY2tIb25leXBvdCIsImV2ZW50IiwiaG9uZXlQb3QiLCJ2YWx1ZSIsInNldEF0dHJpYnV0ZSIsInJlbW92ZUF0dHJpYnV0ZSIsInZhbGlkYXRlU3VibWlzc2lvbiIsImdldEF0dHJpYnV0ZSIsImZpZWxkcyIsImNoZWNrVmFsaWRpdHkiLCJzaG93TWVzc2FnZSIsIm1lc3NhZ2UiLCJjbGFzc2VzIiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwicm9sZSIsInBhcmVudEVsZW1lbnQiLCJtZXNzYWdlX3RhZyIsImNyZWF0ZUVsZW1lbnQiLCJpbm5lckhUTUwiLCJkaXNtaXNzX2J0biIsInByZXBlbmQiLCJhZGRFdmVudExpc3RlbmVyIiwic3VibWl0Rm9ybSIsImRhdGEiLCJGb3JtRGF0YSIsImZvcm1EYXRhIiwiZm9ybVBhcmFtcyIsIlVSTFNlYXJjaFBhcmFtcyIsImFwcGVuZCIsIm9wdGlvbnMiLCJtZXRob2QiLCJib2R5IiwiZmV0Y2giLCJhamF4dXJsIiwidGhlbiIsInJlc3BvbnNlIiwianNvbiIsInN0YXR1cyIsImVycm9ycyIsInN0eWxlIiwiZGlzcGxheSIsInJlc2V0IiwiaGFuZGxlU3VibWlzc2lvbiIsImNsZWFyVGltZW91dCIsInNldFRpbWVvdXQiLCJ0aGVzdWJtaXQiLCJkb2luZ2FqYXgiLCJwcmV2ZW50RGVmYXVsdCIsImhhbmRsZXJlY2FwdGNoYSIsImNvbnRhaW5zIiwicmVjYXB0Y2hhdjMiLCJzaXRlX2tleSIsImdyZWNhcHRjaGEiLCJyZWFkeSIsImV4ZWN1dGUiLCJhY3Rpb24iLCJ0b2tlbiIsInJlY2FwdGNoYVJlc3BvbnNlIiwiY2xvbmVOb2RlIiwiY29uc29sZSIsImxvZyJdLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vY29uc3RhbnQtY29udGFjdC1mb3Jtcy8uL2Fzc2V0cy9qcy9jdGN0LXBsdWdpbi1mcm9udGVuZC92YWxpZGF0aW9uLmpzPzMzOTkiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBGcm9udC1lbmQgZm9ybSB2YWxpZGF0aW9uLlxuICpcbiAqIEBzaW5jZSAxLjAuMFxuICovXG5cbiB3aW5kb3cuQ1RDVFN1cHBvcnQgPSB7fTtcblxuKCBmdW5jdGlvbiggd2luZG93LCBhcHAgKSB7XG5cblx0LyoqXG5cdCAqIEBjb25zdHJ1Y3RvclxuXHQgKlxuXHQgKiBAYXV0aG9yIENvbnN0YW50IENvbnRhY3Rcblx0ICogQHNpbmNlIDEuMC4wXG5cdCAqL1xuXHRhcHAuaW5pdCA9ICgpID0+IHtcblx0XHRhcHAuY2FjaGUoKTtcblx0XHRhcHAuYmluZEV2ZW50cygpO1xuXHR9O1xuXG5cdC8qKlxuXHQgKiBDYWNoZSBET00gZWxlbWVudHMuXG5cdCAqXG5cdCAqIEBhdXRob3IgQ29uc3RhbnQgQ29udGFjdFxuXHQgKiBAc2luY2UgMS4wLjBcblx0ICovXG5cdGFwcC5jYWNoZSA9ICgpID0+IHtcblxuXHRcdGFwcC5jYWNoZSA9IHtcblx0XHRcdGZvcm1zOiBbXVxuXHRcdH07XG5cblx0XHRsZXQgd3JhcHBlciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5jdGN0LWZvcm0td3JhcHBlcicpO1xuXHRcdGlmICh3cmFwcGVyLmxlbmd0aCkge1xuXHRcdFx0d3JhcHBlci5mb3JFYWNoKChmb3JtV3JhcHBlcikgPT4ge1xuXHRcdFx0XHRsZXQgZm91bmQgPSBmb3JtV3JhcHBlci5xdWVyeVNlbGVjdG9yKCdmb3JtJyk7XG5cdFx0XHRcdGlmIChmb3VuZCkge1xuXHRcdFx0XHRcdGFwcC5jYWNoZS5mb3Jtcy5wdXNoKGZvdW5kKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0YXBwLmNhY2hlLmZvcm1zLmZvckVhY2goKGZvcm0sIGluZGV4KSA9PiB7XG5cdFx0XHRhcHAuY2FjaGUuZm9ybXNbaW5kZXhdLmhvbmV5cG90ID0gZm9ybS5xdWVyeVNlbGVjdG9yKCcuY3RjdF91c2FnZV9maWVsZCcpO1xuXHRcdFx0YXBwLmNhY2hlLmZvcm1zW2luZGV4XS5zdWJtaXRCdXR0b24gPSBmb3JtLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W3R5cGU9c3VibWl0XScpO1xuXHRcdFx0YXBwLmNhY2hlLmZvcm1zW2luZGV4XS5yZWNhcHRjaGEgPSBmb3JtLnF1ZXJ5U2VsZWN0b3IoJy5nLXJlY2FwdGNoYScpO1xuXHRcdH0pO1xuXG5cdFx0YXBwLnRpbWVvdXQgPSBudWxsO1xuXHR9O1xuXG5cdC8qKlxuXHQgKiBSZW1vdmUgdGhlIGN0Y3QtaW52YWxpZCBjbGFzcyBmcm9tIGVsZW1lbnRzIHRoYXQgaGF2ZSBpdC5cblx0ICpcblx0ICogQGF1dGhvciBDb25zdGFudCBDb250YWN0XG5cdCAqIEBzaW5jZSAxLjAuMFxuXHQgKi9cblx0YXBwLnNldEFsbElucHV0c1ZhbGlkID0gKCkgPT4ge1xuXHRcdGFwcC5jYWNoZS5mb3Jtcy5mb3JFYWNoKChmb3JtKSA9PiB7XG5cdFx0XHRsZXQgaW52YWxpZCA9IGZvcm0ucXVlcnlTZWxlY3RvckFsbCgnLmN0Y3QtaW52YWxpZCcpO1xuXHRcdFx0QXJyYXkuZnJvbShpbnZhbGlkKS5mb3JFYWNoKChmaWVsZCkgPT4ge1xuXHRcdFx0XHRmaWVsZC5jbGFzc0xpc3QucmVtb3ZlKCdjdGN0LWludmFsaWQnKTtcblx0XHRcdH0pO1xuXHRcdH0pO1xuXHR9O1xuXG5cdC8qKlxuXHQgKiBBZGRzIC5jdGN0LWludmFsaWQgSFRNTCBjbGFzcyB0byBpbnB1dHMgd2hvc2UgdmFsdWVzIGFyZSBpbnZhbGlkLlxuXHQgKlxuXHQgKiBAYXV0aG9yIENvbnN0YW50IENvbnRhY3Rcblx0ICogQHNpbmNlIDEuMC4wXG5cdCAqXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBlcnJvciBBSkFYIHJlc3BvbnNlIGVycm9yIG9iamVjdC5cblx0ICovXG5cdGFwcC5wcm9jZXNzRXJyb3IgPSAoIGVycm9yICkgPT4ge1xuXG5cdFx0Ly8gSWYgd2UgaGF2ZSBhbiBpZCBwcm9wZXJ0eSBzZXQuXG5cdFx0aWYgKCAndW5kZWZpbmVkJyAhPT0gdHlwZW9mKCBlcnJvci5pZCApICkge1xuXHRcdFx0bGV0IGludmFsaWQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcjJyArIGVycm9yLmlkKTtcblx0XHRcdEFycmF5LmZyb20oaW52YWxpZCkuZm9yRWFjaCgodGhlSW52YWxpZCkgPT4ge1xuXHRcdFx0XHR0aGVJbnZhbGlkLmNsYXNzTGlzdC5hZGQoJ2N0Y3QtaW52YWxpZCcpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHR9O1xuXG5cdC8qKlxuXHQgKiBDaGVjayB0aGUgdmFsdWUgb2YgdGhlIGhpZGRlbiBob25leXBvdCBmaWVsZDsgZGlzYWJsZSBmb3JtIHN1Ym1pc3Npb24gYnV0dG9uIGlmIGFueXRoaW5nIGluIGl0LlxuXHQgKlxuXHQgKiBAYXV0aG9yIENvbnN0YW50IENvbnRhY3Rcblx0ICogQHNpbmNlIDEuMC4wXG5cdCAqXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBldmVudCBUaGUgY2hhbmdlIG9yIGtleXVwIGV2ZW50IHRyaWdnZXJpbmcgdGhpcyBjYWxsYmFjay5cblx0ICogQHBhcmFtIHtvYmplY3R9IGhvbmV5UG90IFRoZSBvYmplY3QgZm9yIHRoZSBhY3R1YWwgaW5wdXQgZmllbGQgYmVpbmcgY2hlY2tlZC5cblx0ICogQHBhcmFtIHtvYmplY3R9IHN1Ym1pdEJ1dHRvbiBUaGUgb2JqZWN0IGZvciB0aGUgc3VibWl0IGJ1dHRvbiBpbiB0aGUgc2FtZSBmb3JtIGFzIHRoZSBob25leXBvdCBmaWVsZC5cblx0ICovXG5cdGFwcC5jaGVja0hvbmV5cG90ID0gKCBldmVudCwgaG9uZXlQb3QsIHN1Ym1pdEJ1dHRvbiApID0+IHtcblx0XHQvLyBJZiB0aGVyZSBpcyB0ZXh0IGluIHRoZSBob25leXBvdCwgZGlzYWJsZSB0aGUgc3VibWl0IGJ1dHRvbi5cblxuXHRcdC8vIExlYXZpbmcgdGhpcyBkaXNhYmxpbmcgaW4gcGxhY2UgYmVjYXVzZSBpdCBzaG91bGQgbm90IGJlIGdldHRpbmcgdXNlZCBieSBzY3JlZW4gcmVhZGVycyBpbiB0aGUgZmlyc3QgcGxhY2UsIGFuZCBJIGZlZWwgaXQncyBnb2luZyB0byBoZWxwIG1vcmUgdGhhbiBodXJ0IHRvIGtlZXAuXG5cdFx0aWYgKCAwIDwgaG9uZXlQb3QudmFsdWUubGVuZ3RoICkge1xuXHRcdFx0c3VibWl0QnV0dG9uLnNldEF0dHJpYnV0ZSgnZGlzYWJsZWQnLCdkaXNhYmxlZCcpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRzdWJtaXRCdXR0b24ucmVtb3ZlQXR0cmlidXRlKCdkaXNhYmxlZCcpO1xuXHRcdH1cblx0fTtcblxuXHQvKipcblx0ICogRW5zdXJlcyB0aGF0IHdlIHNob3VsZCB1c2UgQUpBWCB0byBwcm9jZXNzIHRoZSBzcGVjaWZpZWQgZm9ybSwgYW5kIHRoYXQgYWxsIHJlcXVpcmVkIGZpZWxkcyBhcmUgbm90IGVtcHR5LlxuXHQgKlxuXHQgKiBAYXV0aG9yIENvbnN0YW50IENvbnRhY3Rcblx0ICogQHNpbmNlIDEuMC4wXG5cdCAqXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBmb3JtIG9iamVjdCBmb3IgdGhlIGZvcm0gYmVpbmcgdmFsaWRhdGVkLlxuXHQgKiBAcmV0dXJuIHtib29sZWFufSBGYWxzZSBpZiBBSkFYIHByb2Nlc3NpbmcgaXMgZGlzYWJsZWQgZm9yIHRoaXMgZm9ybSBvciBpZiBhIHJlcXVpcmVkIGZpZWxkIGlzIGVtcHR5LlxuXHQgKi9cblx0YXBwLnZhbGlkYXRlU3VibWlzc2lvbiA9ICggZm9ybSApID0+IHtcblx0XHRpZiAoICdvbicgIT09IGZvcm0uZ2V0QXR0cmlidXRlKCAnZGF0YS1kb2FqYXgnICkgKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0bGV0IGZpZWxkcyA9IGZvcm0ucXVlcnlTZWxlY3RvckFsbCgnW3JlcXVpcmVkXScpO1xuXHRcdEFycmF5LmZyb20oZmllbGRzKS5mb3JFYWNoKChmaWVsZCkgPT4ge1xuXHRcdFx0aWYgKGZhbHNlID09PSBmaWVsZC5jaGVja1ZhbGlkaXR5KCkpIHtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0cmV0dXJuIHRydWU7XG5cdH07XG5cblx0LyoqXG5cdCAqIFByZXBlbmRzIGZvcm0gd2l0aCBhIG1lc3NhZ2UgdGhhdCBmYWRlcyBvdXQgaW4gNSBzZWNvbmRzLlxuXHQgKlxuXHQgKiBAYXV0aG9yIENvbnN0YW50IENvbnRhY3Rcblx0ICogQHNpbmNlIDEuMC4wXG5cdCAqXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBmb3JtIG9iamVjdCBmb3IgdGhlIGZvcm0gYSBtZXNzYWdlIGlzIGJlaW5nIGRpc3BsYXllZCBmb3IuXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlIFRoZSBtZXNzYWdlIGNvbnRlbnQuXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBjbGFzc2VzIE9wdGlvbmFsLiBIVE1MIGNsYXNzZXMgdG8gYWRkIHRvIHRoZSBtZXNzYWdlIHdyYXBwZXIuXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSByb2xlIFJvbGUgYXR0cmlidXRlIGZvciBhY2Nlc3NpYmlsaXR5LlxuXHQgKi9cblx0YXBwLnNob3dNZXNzYWdlID0gKCBmb3JtLCBtZXNzYWdlLCBjbGFzc2VzID0gJycsIHJvbGUgPSAnbG9nJyApID0+IHtcblxuXHRcdGNvbnN0IHdyYXBwZXIgPSBmb3JtLnBhcmVudEVsZW1lbnQ7XG5cblx0XHRpZiAoIHdyYXBwZXIucXVlcnlTZWxlY3RvcigncC5jdGN0LW1lc3NhZ2UnKSApIHtcblx0XHRcdHdyYXBwZXIucXVlcnlTZWxlY3RvcigncC5jdGN0LW1lc3NhZ2UnKS5yZW1vdmUoKTtcblx0XHR9XG5cblx0XHRsZXQgbWVzc2FnZV90YWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJyk7XG5cdFx0bWVzc2FnZV90YWcuc2V0QXR0cmlidXRlKCdjbGFzcycsICdjdGN0LW1lc3NhZ2UgJyArIGNsYXNzZXMpO1xuXHRcdG1lc3NhZ2VfdGFnLnNldEF0dHJpYnV0ZSgncm9sZScsIHJvbGUpO1xuXHRcdG1lc3NhZ2VfdGFnLmlubmVySFRNTCA9IG1lc3NhZ2U7XG5cblx0XHRsZXQgZGlzbWlzc19idG4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTtcblx0XHRkaXNtaXNzX2J0bi5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgJ2J1dHRvbiBidXR0b24tc2Vjb25kYXJ5IGN0Y3QtZGlzbWlzcyBjdGN0LWRpc21pc3MtYWpheC1ub3RpY2UnKTtcblx0XHRkaXNtaXNzX2J0bi5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLCAnRGlzbWlzcyBub3RpZmljYXRpb24nKTtcblx0XHRkaXNtaXNzX2J0bi5pbm5lckhUTUwgPSAnJiMxMDAwNTsnO1xuXG5cdFx0bWVzc2FnZV90YWcucHJlcGVuZChkaXNtaXNzX2J0bik7XG5cblx0XHRmb3JtLnBhcmVudEVsZW1lbnQucHJlcGVuZChtZXNzYWdlX3RhZyk7XG5cblx0XHR3cmFwcGVyLnF1ZXJ5U2VsZWN0b3IoICcuY3RjdC1kaXNtaXNzLWFqYXgtbm90aWNlJyApLmFkZEV2ZW50TGlzdGVuZXIoXG5cdFx0XHQnY2xpY2snLFxuXHRcdFx0ZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHRoaXMucGFyZW50RWxlbWVudC5yZW1vdmUoKTtcblx0XHRcdH1cblx0XHQpO1xuXHR9O1xuXG5cdC8qKlxuXHQgKiBTdWJtaXRzIHRoZSBhY3R1YWwgZm9ybSB2aWEgQUpBWC5cblx0ICpcblx0ICogQGF1dGhvciBDb25zdGFudCBDb250YWN0XG5cdCAqIEBzaW5jZSAxLjAuMFxuXHQgKlxuXHQgKiBAcGFyYW0ge29iamVjdH0gZm9ybSBvYmplY3QgZm9yIHRoZSBmb3JtIGJlaW5nIHN1Ym1pdHRlZC5cblx0ICovXG5cdGFwcC5zdWJtaXRGb3JtID0gKCBmb3JtICkgPT4ge1xuXHRcdGNvbnN0IGRhdGEgPSBuZXcgRm9ybURhdGEoKTtcblx0XHRjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YShmb3JtKTtcblx0XHRjb25zdCBmb3JtUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhmb3JtRGF0YSk7XG5cblx0XHRkYXRhLmFwcGVuZCgnYWN0aW9uJywgJ2N0Y3RfcHJvY2Vzc19mb3JtJyk7XG5cdFx0ZGF0YS5hcHBlbmQoJ2RhdGEnLCBmb3JtUGFyYW1zKTtcblxuXHRcdGxldCBvcHRpb25zID0ge1xuXHRcdFx0bWV0aG9kOiAnUE9TVCcsXG5cdFx0XHRib2R5OiBkYXRhXG5cdFx0fTtcblxuXHRcdGZldGNoKFxuXHRcdFx0d2luZG93LmFqYXh1cmwsXG5cdFx0XHRvcHRpb25zXG5cdFx0KVxuXHRcdC50aGVuKChyZXNwb25zZSk9PnJlc3BvbnNlLmpzb24oKSlcblx0XHQudGhlbigocmVzcG9uc2UpPT57XG5cblx0XHRcdGlmICggJ3VuZGVmaW5lZCcgPT09IHR5cGVvZiByZXNwb25zZS5zdGF0dXMgKSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCAnc3VjY2VzcycgIT09IHJlc3BvbnNlLnN0YXR1cyApIHtcblx0XHRcdFx0aWYgKCd1bmRlZmluZWQnICE9PSB0eXBlb2YgKHJlc3BvbnNlLmVycm9ycykpIHtcblx0XHRcdFx0XHRhcHAuc2V0QWxsSW5wdXRzVmFsaWQoKTtcblx0XHRcdFx0XHRyZXNwb25zZS5lcnJvcnMuZm9yRWFjaChhcHAucHJvY2Vzc0Vycm9yKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRhcHAuc2hvd01lc3NhZ2UoZm9ybSwgcmVzcG9uc2UubWVzc2FnZSwgJ2N0Y3QtZXJyb3InLCAnYWxlcnQnKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblxuXHRcdFx0Zm9ybS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuXHRcdFx0Ly8gSWYgd2UncmUgaGVyZSwgdGhlIHN1Ym1pc3Npb24gd2FzIGEgc3VjY2Vzczsgc2hvdyBtZXNzYWdlIGFuZCByZXNldCBmb3JtIGZpZWxkcy5cblx0XHRcdGFwcC5zaG93TWVzc2FnZShmb3JtLCByZXNwb25zZS5tZXNzYWdlLCAnY3RjdC1zdWNjZXNzJywgJ3N0YXR1cycpO1xuXHRcdFx0Zm9ybS5yZXNldCgpO1xuXHRcdH0pO1xuXHR9O1xuXG5cdC8qKlxuXHQgKiBIYW5kbGUgdGhlIGZvcm0gc3VibWlzc2lvbi5cblx0ICpcblx0ICogQGF1dGhvciBDb25zdGFudCBDb250YWN0XG5cdCAqIEBzaW5jZSAxLjAuMFxuXHQgKlxuXHQgKiBAcGFyYW0ge29iamVjdH0gZXZlbnQgVGhlIHN1Ym1pdCBldmVudC5cblx0ICogQHBhcmFtIHtvYmplY3R9IGZvcm0gb2JqZWN0IGZvciB0aGUgY3VycmVudCBmb3JtIGJlaW5nIGhhbmRsZWQuXG5cdCAqIEByZXR1cm4ge2Jvb2xlYW59IEZhbHNlIGlmIHVuYWJsZSB0byB2YWxpZGF0ZSB0aGUgZm9ybS5cblx0ICovXG5cdGFwcC5oYW5kbGVTdWJtaXNzaW9uID0gKCBldmVudCwgZm9ybSApID0+IHtcblxuXHRcdGlmICggISBhcHAudmFsaWRhdGVTdWJtaXNzaW9uKCBmb3JtICkgKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0Y2xlYXJUaW1lb3V0KCBhcHAudGltZW91dCApO1xuXG5cdFx0aWYgKGZvcm0uY2hlY2tWYWxpZGl0eSgpKSB7XG5cdFx0XHRhcHAudGltZW91dCA9IHNldFRpbWVvdXQoYXBwLnN1Ym1pdEZvcm0sIDUwMCwgZm9ybSk7XG5cdFx0fVxuXHR9O1xuXG5cdC8qKlxuXHQgKiBTZXQgdXAgZXZlbnQgYmluZGluZ3MgYW5kIGNhbGxiYWNrcy5cblx0ICpcblx0ICogQGF1dGhvciBDb25zdGFudCBDb250YWN0XG5cdCAqIEBzaW5jZSAxLjAuMFxuXHQgKi9cblx0YXBwLmJpbmRFdmVudHMgPSAoKSA9PiB7XG5cdFx0YXBwLmNhY2hlLmZvcm1zLmZvckVhY2goKGZvcm0pID0+IHtcblx0XHRcdGxldCB0aGVzdWJtaXQgPSBmb3JtLnF1ZXJ5U2VsZWN0b3IoJ1t0eXBlPXN1Ym1pdF0nKTtcblx0XHRcdHRoZXN1Ym1pdC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChldmVudCkgPT4ge1xuXHRcdFx0XHRsZXQgZG9pbmdhamF4ID0gZm9ybS5nZXRBdHRyaWJ1dGUoICdkYXRhLWRvYWpheCcgKTtcblx0XHRcdFx0aWYgKCBkb2luZ2FqYXggJiYgJ29uJyA9PT0gZG9pbmdhamF4ICkge1xuXHRcdFx0XHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cblx0XHRcdFx0XHRhcHAuaGFuZGxlcmVjYXB0Y2hhKGZvcm0pO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKCBmb3JtLmNsYXNzTGlzdC5jb250YWlucyggJ2N0Y3Qtc3VibWl0dGVkJyApICkge1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHRmb3JtLmNsYXNzTGlzdC5hZGQoICdjdGN0LXN1Ym1pdHRlZCcgKTtcblx0XHRcdFx0YXBwLmhhbmRsZVN1Ym1pc3Npb24oIGV2ZW50LCBmb3JtICk7XG5cdFx0XHRcdGZvcm0uY2xhc3NMaXN0LnJlbW92ZSggJ2N0Y3Qtc3VibWl0dGVkJyApO1xuXHRcdFx0fSk7XG5cblx0XHRcdGZvcm0uaG9uZXlwb3QuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgKGV2ZW50KSA9PiB7XG5cdFx0XHRcdGFwcC5jaGVja0hvbmV5cG90KFxuXHRcdFx0XHRcdGV2ZW50LFxuXHRcdFx0XHRcdGZvcm0uaG9uZXlwb3QsXG5cdFx0XHRcdFx0Zm9ybS5zdWJtaXRCdXR0b25cblx0XHRcdFx0KTtcblx0XHRcdH0pO1xuXG5cdFx0XHRmb3JtLmhvbmV5cG90LmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgKGV2ZW50KSA9PiB7XG5cdFx0XHRcdGFwcC5jaGVja0hvbmV5cG90KFxuXHRcdFx0XHRcdGV2ZW50LFxuXHRcdFx0XHRcdGZvcm0uaG9uZXlwb3QsXG5cdFx0XHRcdFx0Zm9ybS5zdWJtaXRCdXR0b25cblx0XHRcdFx0KTtcblx0XHRcdH0pO1xuXHRcdH0pO1xuXHR9O1xuXG5cdC8qKlxuXHQgKiBDdXN0b20gaGFuZGxpbmcgd2l0aGluIG91ciB2YWxpZGF0aW9uIGZpbGUsIGZvciBjYXNlcyBvZiByZUNBUFRDSEEgdjMgKyBBSkFYIHN1Ym1pdC5cblx0ICpcblx0ICogQHBhcmFtIGZvcm0gRm9ybSBiZWluZyBzdWJtaXR0ZWQuXG5cdCAqL1xuXHRhcHAuaGFuZGxlcmVjYXB0Y2hhID0gKGZvcm0pID0+IHtcblx0XHRpZiAoJ3VuZGVmaW5lZCcgPT09IHR5cGVvZiAocmVjYXB0Y2hhdjMuc2l0ZV9rZXkpKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Z3JlY2FwdGNoYS5yZWFkeShmdW5jdGlvbiAoKSB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRncmVjYXB0Y2hhLmV4ZWN1dGUocmVjYXB0Y2hhdjMuc2l0ZV9rZXksIHthY3Rpb246ICdjb25zdGFudGNvbnRhY3RzdWJtaXQnfSkudGhlbihmdW5jdGlvbiAodG9rZW4pIHtcblx0XHRcdFx0XHRsZXQgcmVjYXB0Y2hhUmVzcG9uc2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xuXHRcdFx0XHRcdHJlY2FwdGNoYVJlc3BvbnNlLnNldEF0dHJpYnV0ZSgndHlwZScsICdoaWRkZW4nKTtcblx0XHRcdFx0XHRyZWNhcHRjaGFSZXNwb25zZS5zZXRBdHRyaWJ1dGUoJ25hbWUnLCAnZy1yZWNhcHRjaGEtcmVzcG9uc2UnKTtcblx0XHRcdFx0XHRyZWNhcHRjaGFSZXNwb25zZS5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgdG9rZW4pO1xuXG5cdFx0XHRcdFx0Zm9ybS5hcHBlbmQocmVjYXB0Y2hhUmVzcG9uc2UuY2xvbmVOb2RlKHRydWUpKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0XHRjb25zb2xlLmxvZyhlcnJvcik7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHRhcHAuaW5pdCgpO1xuXG59ICggd2luZG93LCB3aW5kb3cuQ1RDVFN1cHBvcnQgKSApO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVDQSxNQUFNLENBQUNDLFdBQVcsR0FBRyxDQUFDLENBQUM7QUFFdEIsV0FBVUQsTUFBTSxFQUFFRSxHQUFHLEVBQUc7RUFFekI7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0NBLEdBQUcsQ0FBQ0MsSUFBSSxHQUFHLFlBQU07SUFDaEJELEdBQUcsQ0FBQ0UsS0FBSyxDQUFDLENBQUM7SUFDWEYsR0FBRyxDQUFDRyxVQUFVLENBQUMsQ0FBQztFQUNqQixDQUFDOztFQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNDSCxHQUFHLENBQUNFLEtBQUssR0FBRyxZQUFNO0lBRWpCRixHQUFHLENBQUNFLEtBQUssR0FBRztNQUNYRSxLQUFLLEVBQUU7SUFDUixDQUFDO0lBRUQsSUFBSUMsT0FBTyxHQUFHQyxRQUFRLENBQUNDLGdCQUFnQixDQUFDLG9CQUFvQixDQUFDO0lBQzdELElBQUlGLE9BQU8sQ0FBQ0csTUFBTSxFQUFFO01BQ25CSCxPQUFPLENBQUNJLE9BQU8sQ0FBQyxVQUFDQyxXQUFXLEVBQUs7UUFDaEMsSUFBSUMsS0FBSyxHQUFHRCxXQUFXLENBQUNFLGFBQWEsQ0FBQyxNQUFNLENBQUM7UUFDN0MsSUFBSUQsS0FBSyxFQUFFO1VBQ1ZYLEdBQUcsQ0FBQ0UsS0FBSyxDQUFDRSxLQUFLLENBQUNTLElBQUksQ0FBQ0YsS0FBSyxDQUFDO1FBQzVCO01BQ0QsQ0FBQyxDQUFDO0lBQ0g7SUFFQVgsR0FBRyxDQUFDRSxLQUFLLENBQUNFLEtBQUssQ0FBQ0ssT0FBTyxDQUFDLFVBQUNLLElBQUksRUFBRUMsS0FBSyxFQUFLO01BQ3hDZixHQUFHLENBQUNFLEtBQUssQ0FBQ0UsS0FBSyxDQUFDVyxLQUFLLENBQUMsQ0FBQ0MsUUFBUSxHQUFHRixJQUFJLENBQUNGLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQztNQUN6RVosR0FBRyxDQUFDRSxLQUFLLENBQUNFLEtBQUssQ0FBQ1csS0FBSyxDQUFDLENBQUNFLFlBQVksR0FBR0gsSUFBSSxDQUFDRixhQUFhLENBQUMsb0JBQW9CLENBQUM7TUFDOUVaLEdBQUcsQ0FBQ0UsS0FBSyxDQUFDRSxLQUFLLENBQUNXLEtBQUssQ0FBQyxDQUFDRyxTQUFTLEdBQUdKLElBQUksQ0FBQ0YsYUFBYSxDQUFDLGNBQWMsQ0FBQztJQUN0RSxDQUFDLENBQUM7SUFFRlosR0FBRyxDQUFDbUIsT0FBTyxHQUFHLElBQUk7RUFDbkIsQ0FBQzs7RUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDQ25CLEdBQUcsQ0FBQ29CLGlCQUFpQixHQUFHLFlBQU07SUFDN0JwQixHQUFHLENBQUNFLEtBQUssQ0FBQ0UsS0FBSyxDQUFDSyxPQUFPLENBQUMsVUFBQ0ssSUFBSSxFQUFLO01BQ2pDLElBQUlPLE9BQU8sR0FBR1AsSUFBSSxDQUFDUCxnQkFBZ0IsQ0FBQyxlQUFlLENBQUM7TUFDcERlLEtBQUssQ0FBQ0MsSUFBSSxDQUFDRixPQUFPLENBQUMsQ0FBQ1osT0FBTyxDQUFDLFVBQUNlLEtBQUssRUFBSztRQUN0Q0EsS0FBSyxDQUFDQyxTQUFTLENBQUNDLE1BQU0sQ0FBQyxjQUFjLENBQUM7TUFDdkMsQ0FBQyxDQUFDO0lBQ0gsQ0FBQyxDQUFDO0VBQ0gsQ0FBQzs7RUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0MxQixHQUFHLENBQUMyQixZQUFZLEdBQUcsVUFBRUMsS0FBSyxFQUFNO0lBRS9CO0lBQ0EsSUFBSyxXQUFXLEtBQUssT0FBUUEsS0FBSyxDQUFDQyxFQUFJLEVBQUc7TUFDekMsSUFBSVIsT0FBTyxHQUFHZixRQUFRLENBQUNDLGdCQUFnQixDQUFDLEdBQUcsR0FBR3FCLEtBQUssQ0FBQ0MsRUFBRSxDQUFDO01BQ3ZEUCxLQUFLLENBQUNDLElBQUksQ0FBQ0YsT0FBTyxDQUFDLENBQUNaLE9BQU8sQ0FBQyxVQUFDcUIsVUFBVSxFQUFLO1FBQzNDQSxVQUFVLENBQUNMLFNBQVMsQ0FBQ00sR0FBRyxDQUFDLGNBQWMsQ0FBQztNQUN6QyxDQUFDLENBQUM7SUFDSDtFQUNELENBQUM7O0VBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDQy9CLEdBQUcsQ0FBQ2dDLGFBQWEsR0FBRyxVQUFFQyxLQUFLLEVBQUVDLFFBQVEsRUFBRWpCLFlBQVksRUFBTTtJQUN4RDs7SUFFQTtJQUNBLElBQUssQ0FBQyxHQUFHaUIsUUFBUSxDQUFDQyxLQUFLLENBQUMzQixNQUFNLEVBQUc7TUFDaENTLFlBQVksQ0FBQ21CLFlBQVksQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDO0lBQ2pELENBQUMsTUFBTTtNQUNObkIsWUFBWSxDQUFDb0IsZUFBZSxDQUFDLFVBQVUsQ0FBQztJQUN6QztFQUNELENBQUM7O0VBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0NyQyxHQUFHLENBQUNzQyxrQkFBa0IsR0FBRyxVQUFFeEIsSUFBSSxFQUFNO0lBQ3BDLElBQUssSUFBSSxLQUFLQSxJQUFJLENBQUN5QixZQUFZLENBQUUsYUFBYyxDQUFDLEVBQUc7TUFDbEQsT0FBTyxLQUFLO0lBQ2I7SUFFQSxJQUFJQyxNQUFNLEdBQUcxQixJQUFJLENBQUNQLGdCQUFnQixDQUFDLFlBQVksQ0FBQztJQUNoRGUsS0FBSyxDQUFDQyxJQUFJLENBQUNpQixNQUFNLENBQUMsQ0FBQy9CLE9BQU8sQ0FBQyxVQUFDZSxLQUFLLEVBQUs7TUFDckMsSUFBSSxLQUFLLEtBQUtBLEtBQUssQ0FBQ2lCLGFBQWEsQ0FBQyxDQUFDLEVBQUU7UUFDcEMsT0FBTyxLQUFLO01BQ2I7SUFDRCxDQUFDLENBQUM7SUFFRixPQUFPLElBQUk7RUFDWixDQUFDOztFQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDQ3pDLEdBQUcsQ0FBQzBDLFdBQVcsR0FBRyxVQUFFNUIsSUFBSSxFQUFFNkIsT0FBTyxFQUFrQztJQUFBLElBQWhDQyxPQUFPLEdBQUFDLFNBQUEsQ0FBQXJDLE1BQUEsUUFBQXFDLFNBQUEsUUFBQUMsU0FBQSxHQUFBRCxTQUFBLE1BQUcsRUFBRTtJQUFBLElBQUVFLElBQUksR0FBQUYsU0FBQSxDQUFBckMsTUFBQSxRQUFBcUMsU0FBQSxRQUFBQyxTQUFBLEdBQUFELFNBQUEsTUFBRyxLQUFLO0lBRTVELElBQU14QyxPQUFPLEdBQUdTLElBQUksQ0FBQ2tDLGFBQWE7SUFFbEMsSUFBSzNDLE9BQU8sQ0FBQ08sYUFBYSxDQUFDLGdCQUFnQixDQUFDLEVBQUc7TUFDOUNQLE9BQU8sQ0FBQ08sYUFBYSxDQUFDLGdCQUFnQixDQUFDLENBQUNjLE1BQU0sQ0FBQyxDQUFDO0lBQ2pEO0lBRUEsSUFBSXVCLFdBQVcsR0FBRzNDLFFBQVEsQ0FBQzRDLGFBQWEsQ0FBQyxHQUFHLENBQUM7SUFDN0NELFdBQVcsQ0FBQ2IsWUFBWSxDQUFDLE9BQU8sRUFBRSxlQUFlLEdBQUdRLE9BQU8sQ0FBQztJQUM1REssV0FBVyxDQUFDYixZQUFZLENBQUMsTUFBTSxFQUFFVyxJQUFJLENBQUM7SUFDdENFLFdBQVcsQ0FBQ0UsU0FBUyxHQUFHUixPQUFPO0lBRS9CLElBQUlTLFdBQVcsR0FBRzlDLFFBQVEsQ0FBQzRDLGFBQWEsQ0FBQyxRQUFRLENBQUM7SUFDbERFLFdBQVcsQ0FBQ2hCLFlBQVksQ0FBQyxPQUFPLEVBQUUsK0RBQStELENBQUM7SUFDbEdnQixXQUFXLENBQUNoQixZQUFZLENBQUMsWUFBWSxFQUFFLHNCQUFzQixDQUFDO0lBQzlEZ0IsV0FBVyxDQUFDRCxTQUFTLEdBQUcsVUFBVTtJQUVsQ0YsV0FBVyxDQUFDSSxPQUFPLENBQUNELFdBQVcsQ0FBQztJQUVoQ3RDLElBQUksQ0FBQ2tDLGFBQWEsQ0FBQ0ssT0FBTyxDQUFDSixXQUFXLENBQUM7SUFFdkM1QyxPQUFPLENBQUNPLGFBQWEsQ0FBRSwyQkFBNEIsQ0FBQyxDQUFDMEMsZ0JBQWdCLENBQ3BFLE9BQU8sRUFDUCxZQUFXO01BQ1YsSUFBSSxDQUFDTixhQUFhLENBQUN0QixNQUFNLENBQUMsQ0FBQztJQUM1QixDQUNELENBQUM7RUFDRixDQUFDOztFQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDQzFCLEdBQUcsQ0FBQ3VELFVBQVUsR0FBRyxVQUFFekMsSUFBSSxFQUFNO0lBQzVCLElBQU0wQyxJQUFJLEdBQUcsSUFBSUMsUUFBUSxDQUFDLENBQUM7SUFDM0IsSUFBTUMsUUFBUSxHQUFHLElBQUlELFFBQVEsQ0FBQzNDLElBQUksQ0FBQztJQUNuQyxJQUFNNkMsVUFBVSxHQUFHLElBQUlDLGVBQWUsQ0FBQ0YsUUFBUSxDQUFDO0lBRWhERixJQUFJLENBQUNLLE1BQU0sQ0FBQyxRQUFRLEVBQUUsbUJBQW1CLENBQUM7SUFDMUNMLElBQUksQ0FBQ0ssTUFBTSxDQUFDLE1BQU0sRUFBRUYsVUFBVSxDQUFDO0lBRS9CLElBQUlHLE9BQU8sR0FBRztNQUNiQyxNQUFNLEVBQUUsTUFBTTtNQUNkQyxJQUFJLEVBQUVSO0lBQ1AsQ0FBQztJQUVEUyxLQUFLLENBQ0puRSxNQUFNLENBQUNvRSxPQUFPLEVBQ2RKLE9BQ0QsQ0FBQyxDQUNBSyxJQUFJLENBQUMsVUFBQ0MsUUFBUTtNQUFBLE9BQUdBLFFBQVEsQ0FBQ0MsSUFBSSxDQUFDLENBQUM7SUFBQSxFQUFDLENBQ2pDRixJQUFJLENBQUMsVUFBQ0MsUUFBUSxFQUFHO01BRWpCLElBQUssV0FBVyxLQUFLLE9BQU9BLFFBQVEsQ0FBQ0UsTUFBTSxFQUFHO1FBQzdDLE9BQU8sS0FBSztNQUNiO01BRUEsSUFBSyxTQUFTLEtBQUtGLFFBQVEsQ0FBQ0UsTUFBTSxFQUFHO1FBQ3BDLElBQUksV0FBVyxLQUFLLE9BQVFGLFFBQVEsQ0FBQ0csTUFBTyxFQUFFO1VBQzdDdkUsR0FBRyxDQUFDb0IsaUJBQWlCLENBQUMsQ0FBQztVQUN2QmdELFFBQVEsQ0FBQ0csTUFBTSxDQUFDOUQsT0FBTyxDQUFDVCxHQUFHLENBQUMyQixZQUFZLENBQUM7UUFDMUMsQ0FBQyxNQUFNO1VBQ04zQixHQUFHLENBQUMwQyxXQUFXLENBQUM1QixJQUFJLEVBQUVzRCxRQUFRLENBQUN6QixPQUFPLEVBQUUsWUFBWSxFQUFFLE9BQU8sQ0FBQztRQUMvRDtRQUVBLE9BQU8sS0FBSztNQUNiO01BRUE3QixJQUFJLENBQUMwRCxLQUFLLENBQUNDLE9BQU8sR0FBRyxNQUFNO01BQzNCO01BQ0F6RSxHQUFHLENBQUMwQyxXQUFXLENBQUM1QixJQUFJLEVBQUVzRCxRQUFRLENBQUN6QixPQUFPLEVBQUUsY0FBYyxFQUFFLFFBQVEsQ0FBQztNQUNqRTdCLElBQUksQ0FBQzRELEtBQUssQ0FBQyxDQUFDO0lBQ2IsQ0FBQyxDQUFDO0VBQ0gsQ0FBQzs7RUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNDMUUsR0FBRyxDQUFDMkUsZ0JBQWdCLEdBQUcsVUFBRTFDLEtBQUssRUFBRW5CLElBQUksRUFBTTtJQUV6QyxJQUFLLENBQUVkLEdBQUcsQ0FBQ3NDLGtCQUFrQixDQUFFeEIsSUFBSyxDQUFDLEVBQUc7TUFDdkMsT0FBTyxLQUFLO0lBQ2I7SUFFQThELFlBQVksQ0FBRTVFLEdBQUcsQ0FBQ21CLE9BQVEsQ0FBQztJQUUzQixJQUFJTCxJQUFJLENBQUMyQixhQUFhLENBQUMsQ0FBQyxFQUFFO01BQ3pCekMsR0FBRyxDQUFDbUIsT0FBTyxHQUFHMEQsVUFBVSxDQUFDN0UsR0FBRyxDQUFDdUQsVUFBVSxFQUFFLEdBQUcsRUFBRXpDLElBQUksQ0FBQztJQUNwRDtFQUNELENBQUM7O0VBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0NkLEdBQUcsQ0FBQ0csVUFBVSxHQUFHLFlBQU07SUFDdEJILEdBQUcsQ0FBQ0UsS0FBSyxDQUFDRSxLQUFLLENBQUNLLE9BQU8sQ0FBQyxVQUFDSyxJQUFJLEVBQUs7TUFDakMsSUFBSWdFLFNBQVMsR0FBR2hFLElBQUksQ0FBQ0YsYUFBYSxDQUFDLGVBQWUsQ0FBQztNQUNuRGtFLFNBQVMsQ0FBQ3hCLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxVQUFDckIsS0FBSyxFQUFLO1FBQzlDLElBQUk4QyxTQUFTLEdBQUdqRSxJQUFJLENBQUN5QixZQUFZLENBQUUsYUFBYyxDQUFDO1FBQ2xELElBQUt3QyxTQUFTLElBQUksSUFBSSxLQUFLQSxTQUFTLEVBQUc7VUFDdEM5QyxLQUFLLENBQUMrQyxjQUFjLENBQUMsQ0FBQztVQUV0QmhGLEdBQUcsQ0FBQ2lGLGVBQWUsQ0FBQ25FLElBQUksQ0FBQztRQUMxQjtRQUVBLElBQUtBLElBQUksQ0FBQ1csU0FBUyxDQUFDeUQsUUFBUSxDQUFFLGdCQUFpQixDQUFDLEVBQUc7VUFDbEQ7UUFDRDtRQUNBcEUsSUFBSSxDQUFDVyxTQUFTLENBQUNNLEdBQUcsQ0FBRSxnQkFBaUIsQ0FBQztRQUN0Qy9CLEdBQUcsQ0FBQzJFLGdCQUFnQixDQUFFMUMsS0FBSyxFQUFFbkIsSUFBSyxDQUFDO1FBQ25DQSxJQUFJLENBQUNXLFNBQVMsQ0FBQ0MsTUFBTSxDQUFFLGdCQUFpQixDQUFDO01BQzFDLENBQUMsQ0FBQztNQUVGWixJQUFJLENBQUNFLFFBQVEsQ0FBQ3NDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxVQUFDckIsS0FBSyxFQUFLO1FBQ25EakMsR0FBRyxDQUFDZ0MsYUFBYSxDQUNoQkMsS0FBSyxFQUNMbkIsSUFBSSxDQUFDRSxRQUFRLEVBQ2JGLElBQUksQ0FBQ0csWUFDTixDQUFDO01BQ0YsQ0FBQyxDQUFDO01BRUZILElBQUksQ0FBQ0UsUUFBUSxDQUFDc0MsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLFVBQUNyQixLQUFLLEVBQUs7UUFDbERqQyxHQUFHLENBQUNnQyxhQUFhLENBQ2hCQyxLQUFLLEVBQ0xuQixJQUFJLENBQUNFLFFBQVEsRUFDYkYsSUFBSSxDQUFDRyxZQUNOLENBQUM7TUFDRixDQUFDLENBQUM7SUFDSCxDQUFDLENBQUM7RUFDSCxDQUFDOztFQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7RUFDQ2pCLEdBQUcsQ0FBQ2lGLGVBQWUsR0FBRyxVQUFDbkUsSUFBSSxFQUFLO0lBQy9CLElBQUksV0FBVyxLQUFLLE9BQVFxRSxXQUFXLENBQUNDLFFBQVMsRUFBRTtNQUNsRDtJQUNEO0lBRUFDLFVBQVUsQ0FBQ0MsS0FBSyxDQUFDLFlBQVk7TUFDNUIsSUFBSTtRQUNIRCxVQUFVLENBQUNFLE9BQU8sQ0FBQ0osV0FBVyxDQUFDQyxRQUFRLEVBQUU7VUFBQ0ksTUFBTSxFQUFFO1FBQXVCLENBQUMsQ0FBQyxDQUFDckIsSUFBSSxDQUFDLFVBQVVzQixLQUFLLEVBQUU7VUFDakcsSUFBSUMsaUJBQWlCLEdBQUdwRixRQUFRLENBQUM0QyxhQUFhLENBQUMsT0FBTyxDQUFDO1VBQ3ZEd0MsaUJBQWlCLENBQUN0RCxZQUFZLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQztVQUNoRHNELGlCQUFpQixDQUFDdEQsWUFBWSxDQUFDLE1BQU0sRUFBRSxzQkFBc0IsQ0FBQztVQUM5RHNELGlCQUFpQixDQUFDdEQsWUFBWSxDQUFDLE9BQU8sRUFBRXFELEtBQUssQ0FBQztVQUU5QzNFLElBQUksQ0FBQytDLE1BQU0sQ0FBQzZCLGlCQUFpQixDQUFDQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0MsQ0FBQyxDQUFDO01BQ0gsQ0FBQyxDQUFDLE9BQU8vRCxLQUFLLEVBQUU7UUFDZmdFLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDakUsS0FBSyxDQUFDO01BQ25CO0lBQ0QsQ0FBQyxDQUFDO0VBQ0gsQ0FBQztFQUVENUIsR0FBRyxDQUFDQyxJQUFJLENBQUMsQ0FBQztBQUVYLENBQUMsRUFBR0gsTUFBTSxFQUFFQSxNQUFNLENBQUNDLFdBQVksQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==\n//# sourceURL=webpack-internal:///./assets/js/ctct-plugin-frontend/validation.js\n\n}");32 eval("{/**\n * Front-end form validation.\n *\n * @since 1.0.0\n */\n\nwindow.CTCTSupport = {};\n(function (window, app) {\n /**\n * @constructor\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n app.init = function () {\n app.cache();\n app.bindEvents();\n };\n\n /**\n * Cache DOM elements.\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n app.cache = function () {\n app.cache = {\n forms: []\n };\n var wrapper = document.querySelectorAll('.ctct-form-wrapper');\n if (wrapper.length) {\n wrapper.forEach(function (formWrapper) {\n var found = formWrapper.querySelector('form');\n if (found) {\n app.cache.forms.push(found);\n }\n });\n }\n app.cache.forms.forEach(function (form, index) {\n app.cache.forms[index].honeypot = form.querySelector('.ctct_usage_field');\n app.cache.forms[index].submitButton = form.querySelector('input[type=submit]');\n app.cache.forms[index].recaptcha = form.querySelector('.g-recaptcha');\n });\n app.timeout = null;\n };\n\n /**\n * Remove the ctct-invalid class from elements that have it.\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n app.setAllInputsValid = function () {\n app.cache.forms.forEach(function (form) {\n var invalid = form.querySelectorAll('.ctct-invalid');\n Array.from(invalid).forEach(function (field) {\n field.classList.remove('ctct-invalid');\n });\n });\n };\n\n /**\n * Adds .ctct-invalid HTML class to inputs whose values are invalid.\n *\n * @author Constant Contact\n * @since 1.0.0\n *\n * @param {object} error AJAX response error object.\n */\n app.processError = function (error) {\n // If we have an id property set.\n if ('undefined' !== typeof error.id) {\n var invalid = document.querySelectorAll('#' + error.id);\n Array.from(invalid).forEach(function (theInvalid) {\n theInvalid.classList.add('ctct-invalid');\n });\n }\n };\n\n /**\n * Check the value of the hidden honeypot field; disable form submission button if anything in it.\n *\n * @author Constant Contact\n * @since 1.0.0\n *\n * @param {object} event The change or keyup event triggering this callback.\n * @param {object} honeyPot The object for the actual input field being checked.\n * @param {object} submitButton The object for the submit button in the same form as the honeypot field.\n */\n app.checkHoneypot = function (event, honeyPot, submitButton) {\n // If there is text in the honeypot, disable the submit button.\n\n // Leaving this disabling in place because it should not be getting used by screen readers in the first place, and I feel it's going to help more than hurt to keep.\n if (0 < honeyPot.value.length) {\n submitButton.setAttribute('disabled', 'disabled');\n } else {\n submitButton.removeAttribute('disabled');\n }\n };\n\n /**\n * Ensures that we should use AJAX to process the specified form, and that all required fields are not empty.\n *\n * @author Constant Contact\n * @since 1.0.0\n *\n * @param {object} form object for the form being validated.\n * @return {boolean} False if AJAX processing is disabled for this form or if a required field is empty.\n */\n app.validateSubmission = function (form) {\n if ('on' !== form.getAttribute('data-doajax')) {\n return false;\n }\n var fields = form.querySelectorAll('[required]');\n Array.from(fields).forEach(function (field) {\n if (false === field.checkValidity()) {\n return false;\n }\n });\n return true;\n };\n\n /**\n * Prepends form with a message that fades out in 5 seconds.\n *\n * @author Constant Contact\n * @since 1.0.0\n *\n * @param {object} form object for the form a message is being displayed for.\n * @param {string} message The message content.\n * @param {string} classes Optional. HTML classes to add to the message wrapper.\n * @param {string} role Role attribute for accessibility.\n */\n app.showMessage = function (form, message) {\n var classes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n var role = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'log';\n var wrapper = form.parentElement;\n if (wrapper.querySelector('p.ctct-message')) {\n wrapper.querySelector('p.ctct-message').remove();\n }\n var message_tag = document.createElement('p');\n message_tag.setAttribute('class', 'ctct-message ' + classes);\n message_tag.setAttribute('role', role);\n message_tag.innerHTML = message;\n var dismiss_btn = document.createElement('button');\n dismiss_btn.setAttribute('class', 'button button-secondary ctct-dismiss ctct-dismiss-ajax-notice');\n dismiss_btn.setAttribute('aria-label', 'Dismiss notification');\n dismiss_btn.innerHTML = '✕';\n message_tag.prepend(dismiss_btn);\n form.parentElement.prepend(message_tag);\n wrapper.querySelector('.ctct-dismiss-ajax-notice').addEventListener('click', function () {\n this.parentElement.remove();\n });\n };\n\n /**\n * Submits the actual form via AJAX.\n *\n * @author Constant Contact\n * @since 1.0.0\n *\n * @param {object} form object for the form being submitted.\n */\n app.submitForm = function (form) {\n var data = new FormData();\n var formData = new FormData(form);\n var formParams = new URLSearchParams(formData);\n data.append('action', 'ctct_process_form');\n data.append('data', formParams);\n var options = {\n method: 'POST',\n body: data\n };\n fetch(window.ajaxurl, options).then(function (response) {\n return response.json();\n }).then(function (response) {\n if ('undefined' === typeof response.status) {\n return false;\n }\n if ('success' !== response.status) {\n if ('undefined' !== typeof response.errors) {\n app.setAllInputsValid();\n response.errors.forEach(app.processError);\n } else {\n app.showMessage(form, response.message, 'ctct-error', 'alert');\n }\n return false;\n }\n form.style.display = 'none';\n // If we're here, the submission was a success; show message and reset form fields.\n app.showMessage(form, response.message, 'ctct-success', 'status');\n form.reset();\n });\n };\n\n /**\n * Handle the form submission.\n *\n * @author Constant Contact\n * @since 1.0.0\n *\n * @param {object} event The submit event.\n * @param {object} form object for the current form being handled.\n * @return {boolean} False if unable to validate the form.\n */\n app.handleSubmission = function (event, form) {\n if (!app.validateSubmission(form)) {\n return false;\n }\n clearTimeout(app.timeout);\n if (form.checkValidity()) {\n app.timeout = setTimeout(app.submitForm, 500, form);\n }\n };\n\n /**\n * Set up event bindings and callbacks.\n *\n * @author Constant Contact\n * @since 1.0.0\n */\n app.bindEvents = function () {\n app.cache.forms.forEach(function (form) {\n var thesubmit = form.querySelector('[type=submit]');\n thesubmit.addEventListener('click', function (event) {\n var doingajax = form.getAttribute('data-doajax');\n if (doingajax && 'on' === doingajax) {\n event.preventDefault();\n app.handlerecaptcha(form);\n }\n if (form.classList.contains('ctct-submitted')) {\n return;\n }\n form.classList.add('ctct-submitted');\n app.handleSubmission(event, form);\n form.classList.remove('ctct-submitted');\n });\n form.honeypot.addEventListener('change', function (event) {\n app.checkHoneypot(event, form.honeypot, form.submitButton);\n });\n form.honeypot.addEventListener('keyup', function (event) {\n app.checkHoneypot(event, form.honeypot, form.submitButton);\n });\n });\n };\n\n /**\n * Custom handling within our validation file, for cases of reCAPTCHA v3 + AJAX submit.\n *\n * @param form Form being submitted.\n */\n app.handlerecaptcha = function (form) {\n if ('undefined' === typeof recaptchav3) {\n return;\n }\n if ('undefined' === typeof recaptchav3.site_key) {\n return;\n }\n if ('undefined' === typeof grecaptcha) {\n return;\n }\n grecaptcha.ready(function () {\n try {\n grecaptcha.execute(recaptchav3.site_key, {\n action: 'constantcontactsubmit'\n }).then(function (token) {\n var recaptchaResponse = document.createElement('input');\n recaptchaResponse.setAttribute('type', 'hidden');\n recaptchaResponse.setAttribute('name', 'g-recaptcha-response');\n recaptchaResponse.setAttribute('value', token);\n form.append(recaptchaResponse.cloneNode(true));\n });\n } catch (error) {\n console.log(error);\n }\n });\n };\n app.init();\n})(window, window.CTCTSupport);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9hc3NldHMvanMvY3RjdC1wbHVnaW4tZnJvbnRlbmQvdmFsaWRhdGlvbi5qcyIsIm5hbWVzIjpbIndpbmRvdyIsIkNUQ1RTdXBwb3J0IiwiYXBwIiwiaW5pdCIsImNhY2hlIiwiYmluZEV2ZW50cyIsImZvcm1zIiwid3JhcHBlciIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvckFsbCIsImxlbmd0aCIsImZvckVhY2giLCJmb3JtV3JhcHBlciIsImZvdW5kIiwicXVlcnlTZWxlY3RvciIsInB1c2giLCJmb3JtIiwiaW5kZXgiLCJob25leXBvdCIsInN1Ym1pdEJ1dHRvbiIsInJlY2FwdGNoYSIsInRpbWVvdXQiLCJzZXRBbGxJbnB1dHNWYWxpZCIsImludmFsaWQiLCJBcnJheSIsImZyb20iLCJmaWVsZCIsImNsYXNzTGlzdCIsInJlbW92ZSIsInByb2Nlc3NFcnJvciIsImVycm9yIiwiaWQiLCJ0aGVJbnZhbGlkIiwiYWRkIiwiY2hlY2tIb25leXBvdCIsImV2ZW50IiwiaG9uZXlQb3QiLCJ2YWx1ZSIsInNldEF0dHJpYnV0ZSIsInJlbW92ZUF0dHJpYnV0ZSIsInZhbGlkYXRlU3VibWlzc2lvbiIsImdldEF0dHJpYnV0ZSIsImZpZWxkcyIsImNoZWNrVmFsaWRpdHkiLCJzaG93TWVzc2FnZSIsIm1lc3NhZ2UiLCJjbGFzc2VzIiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwicm9sZSIsInBhcmVudEVsZW1lbnQiLCJtZXNzYWdlX3RhZyIsImNyZWF0ZUVsZW1lbnQiLCJpbm5lckhUTUwiLCJkaXNtaXNzX2J0biIsInByZXBlbmQiLCJhZGRFdmVudExpc3RlbmVyIiwic3VibWl0Rm9ybSIsImRhdGEiLCJGb3JtRGF0YSIsImZvcm1EYXRhIiwiZm9ybVBhcmFtcyIsIlVSTFNlYXJjaFBhcmFtcyIsImFwcGVuZCIsIm9wdGlvbnMiLCJtZXRob2QiLCJib2R5IiwiZmV0Y2giLCJhamF4dXJsIiwidGhlbiIsInJlc3BvbnNlIiwianNvbiIsInN0YXR1cyIsImVycm9ycyIsInN0eWxlIiwiZGlzcGxheSIsInJlc2V0IiwiaGFuZGxlU3VibWlzc2lvbiIsImNsZWFyVGltZW91dCIsInNldFRpbWVvdXQiLCJ0aGVzdWJtaXQiLCJkb2luZ2FqYXgiLCJwcmV2ZW50RGVmYXVsdCIsImhhbmRsZXJlY2FwdGNoYSIsImNvbnRhaW5zIiwicmVjYXB0Y2hhdjMiLCJzaXRlX2tleSIsImdyZWNhcHRjaGEiLCJyZWFkeSIsImV4ZWN1dGUiLCJhY3Rpb24iLCJ0b2tlbiIsInJlY2FwdGNoYVJlc3BvbnNlIiwiY2xvbmVOb2RlIiwiY29uc29sZSIsImxvZyJdLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vY29uc3RhbnQtY29udGFjdC1mb3Jtcy8uL2Fzc2V0cy9qcy9jdGN0LXBsdWdpbi1mcm9udGVuZC92YWxpZGF0aW9uLmpzPzMzOTkiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBGcm9udC1lbmQgZm9ybSB2YWxpZGF0aW9uLlxuICpcbiAqIEBzaW5jZSAxLjAuMFxuICovXG5cbiB3aW5kb3cuQ1RDVFN1cHBvcnQgPSB7fTtcblxuKCBmdW5jdGlvbiggd2luZG93LCBhcHAgKSB7XG5cblx0LyoqXG5cdCAqIEBjb25zdHJ1Y3RvclxuXHQgKlxuXHQgKiBAYXV0aG9yIENvbnN0YW50IENvbnRhY3Rcblx0ICogQHNpbmNlIDEuMC4wXG5cdCAqL1xuXHRhcHAuaW5pdCA9ICgpID0+IHtcblx0XHRhcHAuY2FjaGUoKTtcblx0XHRhcHAuYmluZEV2ZW50cygpO1xuXHR9O1xuXG5cdC8qKlxuXHQgKiBDYWNoZSBET00gZWxlbWVudHMuXG5cdCAqXG5cdCAqIEBhdXRob3IgQ29uc3RhbnQgQ29udGFjdFxuXHQgKiBAc2luY2UgMS4wLjBcblx0ICovXG5cdGFwcC5jYWNoZSA9ICgpID0+IHtcblxuXHRcdGFwcC5jYWNoZSA9IHtcblx0XHRcdGZvcm1zOiBbXVxuXHRcdH07XG5cblx0XHRsZXQgd3JhcHBlciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5jdGN0LWZvcm0td3JhcHBlcicpO1xuXHRcdGlmICh3cmFwcGVyLmxlbmd0aCkge1xuXHRcdFx0d3JhcHBlci5mb3JFYWNoKChmb3JtV3JhcHBlcikgPT4ge1xuXHRcdFx0XHRsZXQgZm91bmQgPSBmb3JtV3JhcHBlci5xdWVyeVNlbGVjdG9yKCdmb3JtJyk7XG5cdFx0XHRcdGlmIChmb3VuZCkge1xuXHRcdFx0XHRcdGFwcC5jYWNoZS5mb3Jtcy5wdXNoKGZvdW5kKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0YXBwLmNhY2hlLmZvcm1zLmZvckVhY2goKGZvcm0sIGluZGV4KSA9PiB7XG5cdFx0XHRhcHAuY2FjaGUuZm9ybXNbaW5kZXhdLmhvbmV5cG90ID0gZm9ybS5xdWVyeVNlbGVjdG9yKCcuY3RjdF91c2FnZV9maWVsZCcpO1xuXHRcdFx0YXBwLmNhY2hlLmZvcm1zW2luZGV4XS5zdWJtaXRCdXR0b24gPSBmb3JtLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W3R5cGU9c3VibWl0XScpO1xuXHRcdFx0YXBwLmNhY2hlLmZvcm1zW2luZGV4XS5yZWNhcHRjaGEgPSBmb3JtLnF1ZXJ5U2VsZWN0b3IoJy5nLXJlY2FwdGNoYScpO1xuXHRcdH0pO1xuXG5cdFx0YXBwLnRpbWVvdXQgPSBudWxsO1xuXHR9O1xuXG5cdC8qKlxuXHQgKiBSZW1vdmUgdGhlIGN0Y3QtaW52YWxpZCBjbGFzcyBmcm9tIGVsZW1lbnRzIHRoYXQgaGF2ZSBpdC5cblx0ICpcblx0ICogQGF1dGhvciBDb25zdGFudCBDb250YWN0XG5cdCAqIEBzaW5jZSAxLjAuMFxuXHQgKi9cblx0YXBwLnNldEFsbElucHV0c1ZhbGlkID0gKCkgPT4ge1xuXHRcdGFwcC5jYWNoZS5mb3Jtcy5mb3JFYWNoKChmb3JtKSA9PiB7XG5cdFx0XHRsZXQgaW52YWxpZCA9IGZvcm0ucXVlcnlTZWxlY3RvckFsbCgnLmN0Y3QtaW52YWxpZCcpO1xuXHRcdFx0QXJyYXkuZnJvbShpbnZhbGlkKS5mb3JFYWNoKChmaWVsZCkgPT4ge1xuXHRcdFx0XHRmaWVsZC5jbGFzc0xpc3QucmVtb3ZlKCdjdGN0LWludmFsaWQnKTtcblx0XHRcdH0pO1xuXHRcdH0pO1xuXHR9O1xuXG5cdC8qKlxuXHQgKiBBZGRzIC5jdGN0LWludmFsaWQgSFRNTCBjbGFzcyB0byBpbnB1dHMgd2hvc2UgdmFsdWVzIGFyZSBpbnZhbGlkLlxuXHQgKlxuXHQgKiBAYXV0aG9yIENvbnN0YW50IENvbnRhY3Rcblx0ICogQHNpbmNlIDEuMC4wXG5cdCAqXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBlcnJvciBBSkFYIHJlc3BvbnNlIGVycm9yIG9iamVjdC5cblx0ICovXG5cdGFwcC5wcm9jZXNzRXJyb3IgPSAoIGVycm9yICkgPT4ge1xuXG5cdFx0Ly8gSWYgd2UgaGF2ZSBhbiBpZCBwcm9wZXJ0eSBzZXQuXG5cdFx0aWYgKCAndW5kZWZpbmVkJyAhPT0gdHlwZW9mKCBlcnJvci5pZCApICkge1xuXHRcdFx0bGV0IGludmFsaWQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcjJyArIGVycm9yLmlkKTtcblx0XHRcdEFycmF5LmZyb20oaW52YWxpZCkuZm9yRWFjaCgodGhlSW52YWxpZCkgPT4ge1xuXHRcdFx0XHR0aGVJbnZhbGlkLmNsYXNzTGlzdC5hZGQoJ2N0Y3QtaW52YWxpZCcpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHR9O1xuXG5cdC8qKlxuXHQgKiBDaGVjayB0aGUgdmFsdWUgb2YgdGhlIGhpZGRlbiBob25leXBvdCBmaWVsZDsgZGlzYWJsZSBmb3JtIHN1Ym1pc3Npb24gYnV0dG9uIGlmIGFueXRoaW5nIGluIGl0LlxuXHQgKlxuXHQgKiBAYXV0aG9yIENvbnN0YW50IENvbnRhY3Rcblx0ICogQHNpbmNlIDEuMC4wXG5cdCAqXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBldmVudCBUaGUgY2hhbmdlIG9yIGtleXVwIGV2ZW50IHRyaWdnZXJpbmcgdGhpcyBjYWxsYmFjay5cblx0ICogQHBhcmFtIHtvYmplY3R9IGhvbmV5UG90IFRoZSBvYmplY3QgZm9yIHRoZSBhY3R1YWwgaW5wdXQgZmllbGQgYmVpbmcgY2hlY2tlZC5cblx0ICogQHBhcmFtIHtvYmplY3R9IHN1Ym1pdEJ1dHRvbiBUaGUgb2JqZWN0IGZvciB0aGUgc3VibWl0IGJ1dHRvbiBpbiB0aGUgc2FtZSBmb3JtIGFzIHRoZSBob25leXBvdCBmaWVsZC5cblx0ICovXG5cdGFwcC5jaGVja0hvbmV5cG90ID0gKCBldmVudCwgaG9uZXlQb3QsIHN1Ym1pdEJ1dHRvbiApID0+IHtcblx0XHQvLyBJZiB0aGVyZSBpcyB0ZXh0IGluIHRoZSBob25leXBvdCwgZGlzYWJsZSB0aGUgc3VibWl0IGJ1dHRvbi5cblxuXHRcdC8vIExlYXZpbmcgdGhpcyBkaXNhYmxpbmcgaW4gcGxhY2UgYmVjYXVzZSBpdCBzaG91bGQgbm90IGJlIGdldHRpbmcgdXNlZCBieSBzY3JlZW4gcmVhZGVycyBpbiB0aGUgZmlyc3QgcGxhY2UsIGFuZCBJIGZlZWwgaXQncyBnb2luZyB0byBoZWxwIG1vcmUgdGhhbiBodXJ0IHRvIGtlZXAuXG5cdFx0aWYgKCAwIDwgaG9uZXlQb3QudmFsdWUubGVuZ3RoICkge1xuXHRcdFx0c3VibWl0QnV0dG9uLnNldEF0dHJpYnV0ZSgnZGlzYWJsZWQnLCdkaXNhYmxlZCcpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRzdWJtaXRCdXR0b24ucmVtb3ZlQXR0cmlidXRlKCdkaXNhYmxlZCcpO1xuXHRcdH1cblx0fTtcblxuXHQvKipcblx0ICogRW5zdXJlcyB0aGF0IHdlIHNob3VsZCB1c2UgQUpBWCB0byBwcm9jZXNzIHRoZSBzcGVjaWZpZWQgZm9ybSwgYW5kIHRoYXQgYWxsIHJlcXVpcmVkIGZpZWxkcyBhcmUgbm90IGVtcHR5LlxuXHQgKlxuXHQgKiBAYXV0aG9yIENvbnN0YW50IENvbnRhY3Rcblx0ICogQHNpbmNlIDEuMC4wXG5cdCAqXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBmb3JtIG9iamVjdCBmb3IgdGhlIGZvcm0gYmVpbmcgdmFsaWRhdGVkLlxuXHQgKiBAcmV0dXJuIHtib29sZWFufSBGYWxzZSBpZiBBSkFYIHByb2Nlc3NpbmcgaXMgZGlzYWJsZWQgZm9yIHRoaXMgZm9ybSBvciBpZiBhIHJlcXVpcmVkIGZpZWxkIGlzIGVtcHR5LlxuXHQgKi9cblx0YXBwLnZhbGlkYXRlU3VibWlzc2lvbiA9ICggZm9ybSApID0+IHtcblx0XHRpZiAoICdvbicgIT09IGZvcm0uZ2V0QXR0cmlidXRlKCAnZGF0YS1kb2FqYXgnICkgKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0bGV0IGZpZWxkcyA9IGZvcm0ucXVlcnlTZWxlY3RvckFsbCgnW3JlcXVpcmVkXScpO1xuXHRcdEFycmF5LmZyb20oZmllbGRzKS5mb3JFYWNoKChmaWVsZCkgPT4ge1xuXHRcdFx0aWYgKGZhbHNlID09PSBmaWVsZC5jaGVja1ZhbGlkaXR5KCkpIHtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0cmV0dXJuIHRydWU7XG5cdH07XG5cblx0LyoqXG5cdCAqIFByZXBlbmRzIGZvcm0gd2l0aCBhIG1lc3NhZ2UgdGhhdCBmYWRlcyBvdXQgaW4gNSBzZWNvbmRzLlxuXHQgKlxuXHQgKiBAYXV0aG9yIENvbnN0YW50IENvbnRhY3Rcblx0ICogQHNpbmNlIDEuMC4wXG5cdCAqXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBmb3JtIG9iamVjdCBmb3IgdGhlIGZvcm0gYSBtZXNzYWdlIGlzIGJlaW5nIGRpc3BsYXllZCBmb3IuXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlIFRoZSBtZXNzYWdlIGNvbnRlbnQuXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBjbGFzc2VzIE9wdGlvbmFsLiBIVE1MIGNsYXNzZXMgdG8gYWRkIHRvIHRoZSBtZXNzYWdlIHdyYXBwZXIuXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSByb2xlIFJvbGUgYXR0cmlidXRlIGZvciBhY2Nlc3NpYmlsaXR5LlxuXHQgKi9cblx0YXBwLnNob3dNZXNzYWdlID0gKCBmb3JtLCBtZXNzYWdlLCBjbGFzc2VzID0gJycsIHJvbGUgPSAnbG9nJyApID0+IHtcblxuXHRcdGNvbnN0IHdyYXBwZXIgPSBmb3JtLnBhcmVudEVsZW1lbnQ7XG5cblx0XHRpZiAoIHdyYXBwZXIucXVlcnlTZWxlY3RvcigncC5jdGN0LW1lc3NhZ2UnKSApIHtcblx0XHRcdHdyYXBwZXIucXVlcnlTZWxlY3RvcigncC5jdGN0LW1lc3NhZ2UnKS5yZW1vdmUoKTtcblx0XHR9XG5cblx0XHRsZXQgbWVzc2FnZV90YWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJyk7XG5cdFx0bWVzc2FnZV90YWcuc2V0QXR0cmlidXRlKCdjbGFzcycsICdjdGN0LW1lc3NhZ2UgJyArIGNsYXNzZXMpO1xuXHRcdG1lc3NhZ2VfdGFnLnNldEF0dHJpYnV0ZSgncm9sZScsIHJvbGUpO1xuXHRcdG1lc3NhZ2VfdGFnLmlubmVySFRNTCA9IG1lc3NhZ2U7XG5cblx0XHRsZXQgZGlzbWlzc19idG4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTtcblx0XHRkaXNtaXNzX2J0bi5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgJ2J1dHRvbiBidXR0b24tc2Vjb25kYXJ5IGN0Y3QtZGlzbWlzcyBjdGN0LWRpc21pc3MtYWpheC1ub3RpY2UnKTtcblx0XHRkaXNtaXNzX2J0bi5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLCAnRGlzbWlzcyBub3RpZmljYXRpb24nKTtcblx0XHRkaXNtaXNzX2J0bi5pbm5lckhUTUwgPSAnJiMxMDAwNTsnO1xuXG5cdFx0bWVzc2FnZV90YWcucHJlcGVuZChkaXNtaXNzX2J0bik7XG5cblx0XHRmb3JtLnBhcmVudEVsZW1lbnQucHJlcGVuZChtZXNzYWdlX3RhZyk7XG5cblx0XHR3cmFwcGVyLnF1ZXJ5U2VsZWN0b3IoICcuY3RjdC1kaXNtaXNzLWFqYXgtbm90aWNlJyApLmFkZEV2ZW50TGlzdGVuZXIoXG5cdFx0XHQnY2xpY2snLFxuXHRcdFx0ZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHRoaXMucGFyZW50RWxlbWVudC5yZW1vdmUoKTtcblx0XHRcdH1cblx0XHQpO1xuXHR9O1xuXG5cdC8qKlxuXHQgKiBTdWJtaXRzIHRoZSBhY3R1YWwgZm9ybSB2aWEgQUpBWC5cblx0ICpcblx0ICogQGF1dGhvciBDb25zdGFudCBDb250YWN0XG5cdCAqIEBzaW5jZSAxLjAuMFxuXHQgKlxuXHQgKiBAcGFyYW0ge29iamVjdH0gZm9ybSBvYmplY3QgZm9yIHRoZSBmb3JtIGJlaW5nIHN1Ym1pdHRlZC5cblx0ICovXG5cdGFwcC5zdWJtaXRGb3JtID0gKCBmb3JtICkgPT4ge1xuXHRcdGNvbnN0IGRhdGEgPSBuZXcgRm9ybURhdGEoKTtcblx0XHRjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YShmb3JtKTtcblx0XHRjb25zdCBmb3JtUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhmb3JtRGF0YSk7XG5cblx0XHRkYXRhLmFwcGVuZCgnYWN0aW9uJywgJ2N0Y3RfcHJvY2Vzc19mb3JtJyk7XG5cdFx0ZGF0YS5hcHBlbmQoJ2RhdGEnLCBmb3JtUGFyYW1zKTtcblxuXHRcdGxldCBvcHRpb25zID0ge1xuXHRcdFx0bWV0aG9kOiAnUE9TVCcsXG5cdFx0XHRib2R5OiBkYXRhXG5cdFx0fTtcblxuXHRcdGZldGNoKFxuXHRcdFx0d2luZG93LmFqYXh1cmwsXG5cdFx0XHRvcHRpb25zXG5cdFx0KVxuXHRcdC50aGVuKChyZXNwb25zZSk9PnJlc3BvbnNlLmpzb24oKSlcblx0XHQudGhlbigocmVzcG9uc2UpPT57XG5cblx0XHRcdGlmICggJ3VuZGVmaW5lZCcgPT09IHR5cGVvZiByZXNwb25zZS5zdGF0dXMgKSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCAnc3VjY2VzcycgIT09IHJlc3BvbnNlLnN0YXR1cyApIHtcblx0XHRcdFx0aWYgKCd1bmRlZmluZWQnICE9PSB0eXBlb2YgKHJlc3BvbnNlLmVycm9ycykpIHtcblx0XHRcdFx0XHRhcHAuc2V0QWxsSW5wdXRzVmFsaWQoKTtcblx0XHRcdFx0XHRyZXNwb25zZS5lcnJvcnMuZm9yRWFjaChhcHAucHJvY2Vzc0Vycm9yKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRhcHAuc2hvd01lc3NhZ2UoZm9ybSwgcmVzcG9uc2UubWVzc2FnZSwgJ2N0Y3QtZXJyb3InLCAnYWxlcnQnKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblxuXHRcdFx0Zm9ybS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuXHRcdFx0Ly8gSWYgd2UncmUgaGVyZSwgdGhlIHN1Ym1pc3Npb24gd2FzIGEgc3VjY2Vzczsgc2hvdyBtZXNzYWdlIGFuZCByZXNldCBmb3JtIGZpZWxkcy5cblx0XHRcdGFwcC5zaG93TWVzc2FnZShmb3JtLCByZXNwb25zZS5tZXNzYWdlLCAnY3RjdC1zdWNjZXNzJywgJ3N0YXR1cycpO1xuXHRcdFx0Zm9ybS5yZXNldCgpO1xuXHRcdH0pO1xuXHR9O1xuXG5cdC8qKlxuXHQgKiBIYW5kbGUgdGhlIGZvcm0gc3VibWlzc2lvbi5cblx0ICpcblx0ICogQGF1dGhvciBDb25zdGFudCBDb250YWN0XG5cdCAqIEBzaW5jZSAxLjAuMFxuXHQgKlxuXHQgKiBAcGFyYW0ge29iamVjdH0gZXZlbnQgVGhlIHN1Ym1pdCBldmVudC5cblx0ICogQHBhcmFtIHtvYmplY3R9IGZvcm0gb2JqZWN0IGZvciB0aGUgY3VycmVudCBmb3JtIGJlaW5nIGhhbmRsZWQuXG5cdCAqIEByZXR1cm4ge2Jvb2xlYW59IEZhbHNlIGlmIHVuYWJsZSB0byB2YWxpZGF0ZSB0aGUgZm9ybS5cblx0ICovXG5cdGFwcC5oYW5kbGVTdWJtaXNzaW9uID0gKCBldmVudCwgZm9ybSApID0+IHtcblxuXHRcdGlmICggISBhcHAudmFsaWRhdGVTdWJtaXNzaW9uKCBmb3JtICkgKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0Y2xlYXJUaW1lb3V0KCBhcHAudGltZW91dCApO1xuXG5cdFx0aWYgKGZvcm0uY2hlY2tWYWxpZGl0eSgpKSB7XG5cdFx0XHRhcHAudGltZW91dCA9IHNldFRpbWVvdXQoYXBwLnN1Ym1pdEZvcm0sIDUwMCwgZm9ybSk7XG5cdFx0fVxuXHR9O1xuXG5cdC8qKlxuXHQgKiBTZXQgdXAgZXZlbnQgYmluZGluZ3MgYW5kIGNhbGxiYWNrcy5cblx0ICpcblx0ICogQGF1dGhvciBDb25zdGFudCBDb250YWN0XG5cdCAqIEBzaW5jZSAxLjAuMFxuXHQgKi9cblx0YXBwLmJpbmRFdmVudHMgPSAoKSA9PiB7XG5cdFx0YXBwLmNhY2hlLmZvcm1zLmZvckVhY2goKGZvcm0pID0+IHtcblx0XHRcdGxldCB0aGVzdWJtaXQgPSBmb3JtLnF1ZXJ5U2VsZWN0b3IoJ1t0eXBlPXN1Ym1pdF0nKTtcblx0XHRcdHRoZXN1Ym1pdC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChldmVudCkgPT4ge1xuXHRcdFx0XHRsZXQgZG9pbmdhamF4ID0gZm9ybS5nZXRBdHRyaWJ1dGUoICdkYXRhLWRvYWpheCcgKTtcblx0XHRcdFx0aWYgKCBkb2luZ2FqYXggJiYgJ29uJyA9PT0gZG9pbmdhamF4ICkge1xuXHRcdFx0XHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cblx0XHRcdFx0XHRhcHAuaGFuZGxlcmVjYXB0Y2hhKGZvcm0pO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKCBmb3JtLmNsYXNzTGlzdC5jb250YWlucyggJ2N0Y3Qtc3VibWl0dGVkJyApICkge1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHRmb3JtLmNsYXNzTGlzdC5hZGQoICdjdGN0LXN1Ym1pdHRlZCcgKTtcblx0XHRcdFx0YXBwLmhhbmRsZVN1Ym1pc3Npb24oIGV2ZW50LCBmb3JtICk7XG5cdFx0XHRcdGZvcm0uY2xhc3NMaXN0LnJlbW92ZSggJ2N0Y3Qtc3VibWl0dGVkJyApO1xuXHRcdFx0fSk7XG5cblx0XHRcdGZvcm0uaG9uZXlwb3QuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgKGV2ZW50KSA9PiB7XG5cdFx0XHRcdGFwcC5jaGVja0hvbmV5cG90KFxuXHRcdFx0XHRcdGV2ZW50LFxuXHRcdFx0XHRcdGZvcm0uaG9uZXlwb3QsXG5cdFx0XHRcdFx0Zm9ybS5zdWJtaXRCdXR0b25cblx0XHRcdFx0KTtcblx0XHRcdH0pO1xuXG5cdFx0XHRmb3JtLmhvbmV5cG90LmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgKGV2ZW50KSA9PiB7XG5cdFx0XHRcdGFwcC5jaGVja0hvbmV5cG90KFxuXHRcdFx0XHRcdGV2ZW50LFxuXHRcdFx0XHRcdGZvcm0uaG9uZXlwb3QsXG5cdFx0XHRcdFx0Zm9ybS5zdWJtaXRCdXR0b25cblx0XHRcdFx0KTtcblx0XHRcdH0pO1xuXHRcdH0pO1xuXHR9O1xuXG5cdC8qKlxuXHQgKiBDdXN0b20gaGFuZGxpbmcgd2l0aGluIG91ciB2YWxpZGF0aW9uIGZpbGUsIGZvciBjYXNlcyBvZiByZUNBUFRDSEEgdjMgKyBBSkFYIHN1Ym1pdC5cblx0ICpcblx0ICogQHBhcmFtIGZvcm0gRm9ybSBiZWluZyBzdWJtaXR0ZWQuXG5cdCAqL1xuXHRhcHAuaGFuZGxlcmVjYXB0Y2hhID0gKGZvcm0pID0+IHtcblx0XHRpZiAoJ3VuZGVmaW5lZCcgPT09IHR5cGVvZiAocmVjYXB0Y2hhdjMpKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0aWYgKCd1bmRlZmluZWQnID09PSB0eXBlb2YgKHJlY2FwdGNoYXYzLnNpdGVfa2V5KSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGlmICgndW5kZWZpbmVkJyA9PT0gdHlwZW9mIChncmVjYXB0Y2hhKSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGdyZWNhcHRjaGEucmVhZHkoZnVuY3Rpb24gKCkge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Z3JlY2FwdGNoYS5leGVjdXRlKHJlY2FwdGNoYXYzLnNpdGVfa2V5LCB7YWN0aW9uOiAnY29uc3RhbnRjb250YWN0c3VibWl0J30pLnRoZW4oZnVuY3Rpb24gKHRva2VuKSB7XG5cdFx0XHRcdFx0bGV0IHJlY2FwdGNoYVJlc3BvbnNlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTtcblx0XHRcdFx0XHRyZWNhcHRjaGFSZXNwb25zZS5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAnaGlkZGVuJyk7XG5cdFx0XHRcdFx0cmVjYXB0Y2hhUmVzcG9uc2Uuc2V0QXR0cmlidXRlKCduYW1lJywgJ2ctcmVjYXB0Y2hhLXJlc3BvbnNlJyk7XG5cdFx0XHRcdFx0cmVjYXB0Y2hhUmVzcG9uc2Uuc2V0QXR0cmlidXRlKCd2YWx1ZScsIHRva2VuKTtcblxuXHRcdFx0XHRcdGZvcm0uYXBwZW5kKHJlY2FwdGNoYVJlc3BvbnNlLmNsb25lTm9kZSh0cnVlKSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRcdFx0Y29uc29sZS5sb2coZXJyb3IpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0YXBwLmluaXQoKTtcblxufSAoIHdpbmRvdywgd2luZG93LkNUQ1RTdXBwb3J0ICkgKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQ0EsTUFBTSxDQUFDQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO0FBRXRCLFdBQVVELE1BQU0sRUFBRUUsR0FBRyxFQUFHO0VBRXpCO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNDQSxHQUFHLENBQUNDLElBQUksR0FBRyxZQUFNO0lBQ2hCRCxHQUFHLENBQUNFLEtBQUssQ0FBQyxDQUFDO0lBQ1hGLEdBQUcsQ0FBQ0csVUFBVSxDQUFDLENBQUM7RUFDakIsQ0FBQzs7RUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDQ0gsR0FBRyxDQUFDRSxLQUFLLEdBQUcsWUFBTTtJQUVqQkYsR0FBRyxDQUFDRSxLQUFLLEdBQUc7TUFDWEUsS0FBSyxFQUFFO0lBQ1IsQ0FBQztJQUVELElBQUlDLE9BQU8sR0FBR0MsUUFBUSxDQUFDQyxnQkFBZ0IsQ0FBQyxvQkFBb0IsQ0FBQztJQUM3RCxJQUFJRixPQUFP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\n//# sourceURL=webpack-internal:///./assets/js/ctct-plugin-frontend/validation.js\n\n}"); 33 33 34 34 /***/ }) -
constant-contact-forms/trunk/assets/js/ctct-plugin-frontend.min.js
r3389849 r3397480 1 !function(){var t={30:function(){window.CTCTSupport={},function(t,e){e.init=function(){e.cache(),e.bindEvents()},e.cache=function(){e.cache={forms:[]};var t=document.querySelectorAll(".ctct-form-wrapper");t.length&&t.forEach(function(t){var n=t.querySelector("form");n&&e.cache.forms.push(n)}),e.cache.forms.forEach(function(t,n){e.cache.forms[n].honeypot=t.querySelector(".ctct_usage_field"),e.cache.forms[n].submitButton=t.querySelector("input[type=submit]"),e.cache.forms[n].recaptcha=t.querySelector(".g-recaptcha")}),e.timeout=null},e.setAllInputsValid=function(){e.cache.forms.forEach(function(t){var e=t.querySelectorAll(".ctct-invalid");Array.from(e).forEach(function(t){t.classList.remove("ctct-invalid")})})},e.processError=function(t){if(void 0!==t.id){var e=document.querySelectorAll("#"+t.id);Array.from(e).forEach(function(t){t.classList.add("ctct-invalid")})}},e.checkHoneypot=function(t,e,n){0<e.value.length?n.setAttribute("disabled","disabled"):n.removeAttribute("disabled")},e.validateSubmission=function(t){if("on"!==t.getAttribute("data-doajax"))return!1;var e=t.querySelectorAll("[required]");return Array.from(e).forEach(function(t){if(!1===t.checkValidity())return!1}),!0},e.showMessage=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",c=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"log",r=t.parentElement;r.querySelector("p.ctct-message")&&r.querySelector("p.ctct-message").remove();var o=document.createElement("p");o.setAttribute("class","ctct-message "+n),o.setAttribute("role",c),o.innerHTML=e;var a=document.createElement("button");a.setAttribute("class","button button-secondary ctct-dismiss ctct-dismiss-ajax-notice"),a.setAttribute("aria-label","Dismiss notification"),a.innerHTML="✕",o.prepend(a),t.parentElement.prepend(o),r.querySelector(".ctct-dismiss-ajax-notice").addEventListener("click",function(){this.parentElement.remove()})},e.submitForm=function(n){var c=new FormData,r=new FormData(n),o=new URLSearchParams(r);c.append("action","ctct_process_form"),c.append("data",o);var a={method:"POST",body:c};fetch(t.ajaxurl,a).then(function(t){return t.json()}).then(function(t){return void 0!==t.status&&("success"!==t.status?(void 0!==t.errors?(e.setAllInputsValid(),t.errors.forEach(e.processError)):e.showMessage(n,t.message,"ctct-error","alert"),!1):(n.style.display="none",e.showMessage(n,t.message,"ctct-success","status"),void n.reset()))})},e.handleSubmission=function(t,n){if(!e.validateSubmission(n))return!1;clearTimeout(e.timeout),n.checkValidity()&&(e.timeout=setTimeout(e.submitForm,500,n))},e.bindEvents=function(){e.cache.forms.forEach(function(t){t.querySelector("[type=submit]").addEventListener("click",function(n){var c=t.getAttribute("data-doajax");c&&"on"===c&&(n.preventDefault(),e.handlerecaptcha(t)),t.classList.contains("ctct-submitted")||(t.classList.add("ctct-submitted"),e.handleSubmission(n,t),t.classList.remove("ctct-submitted"))}),t.honeypot.addEventListener("change",function(n){e.checkHoneypot(n,t.honeypot,t.submitButton)}),t.honeypot.addEventListener("keyup",function(n){e.checkHoneypot(n,t.honeypot,t.submitButton)})})},e.handlerecaptcha=function(t){ void 0!==recaptchav3.site_key&&grecaptcha.ready(function(){try{grecaptcha.execute(recaptchav3.site_key,{action:"constantcontactsubmit"}).then(function(e){var n=document.createElement("input");n.setAttribute("type","hidden"),n.setAttribute("name","g-recaptcha-response"),n.setAttribute("value",e),t.append(n.cloneNode(!0))})}catch(t){console.log(t)}})},e.init()}(window,window.CTCTSupport)}},e={};function n(c){var r=e[c];if(void 0!==r)return r.exports;var o=e[c]={exports:{}};return t[c](o,o.exports,n),o.exports}n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,{a:e}),e},n.d=function(t,e){for(var c in e)n.o(e,c)&&!n.o(t,c)&&Object.defineProperty(t,c,{enumerable:!0,get:e[c]})},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},function(){"use strict";n(30)}()}();1 !function(){var t={30:function(){window.CTCTSupport={},function(t,e){e.init=function(){e.cache(),e.bindEvents()},e.cache=function(){e.cache={forms:[]};var t=document.querySelectorAll(".ctct-form-wrapper");t.length&&t.forEach(function(t){var n=t.querySelector("form");n&&e.cache.forms.push(n)}),e.cache.forms.forEach(function(t,n){e.cache.forms[n].honeypot=t.querySelector(".ctct_usage_field"),e.cache.forms[n].submitButton=t.querySelector("input[type=submit]"),e.cache.forms[n].recaptcha=t.querySelector(".g-recaptcha")}),e.timeout=null},e.setAllInputsValid=function(){e.cache.forms.forEach(function(t){var e=t.querySelectorAll(".ctct-invalid");Array.from(e).forEach(function(t){t.classList.remove("ctct-invalid")})})},e.processError=function(t){if(void 0!==t.id){var e=document.querySelectorAll("#"+t.id);Array.from(e).forEach(function(t){t.classList.add("ctct-invalid")})}},e.checkHoneypot=function(t,e,n){0<e.value.length?n.setAttribute("disabled","disabled"):n.removeAttribute("disabled")},e.validateSubmission=function(t){if("on"!==t.getAttribute("data-doajax"))return!1;var e=t.querySelectorAll("[required]");return Array.from(e).forEach(function(t){if(!1===t.checkValidity())return!1}),!0},e.showMessage=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",c=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"log",r=t.parentElement;r.querySelector("p.ctct-message")&&r.querySelector("p.ctct-message").remove();var o=document.createElement("p");o.setAttribute("class","ctct-message "+n),o.setAttribute("role",c),o.innerHTML=e;var a=document.createElement("button");a.setAttribute("class","button button-secondary ctct-dismiss ctct-dismiss-ajax-notice"),a.setAttribute("aria-label","Dismiss notification"),a.innerHTML="✕",o.prepend(a),t.parentElement.prepend(o),r.querySelector(".ctct-dismiss-ajax-notice").addEventListener("click",function(){this.parentElement.remove()})},e.submitForm=function(n){var c=new FormData,r=new FormData(n),o=new URLSearchParams(r);c.append("action","ctct_process_form"),c.append("data",o);var a={method:"POST",body:c};fetch(t.ajaxurl,a).then(function(t){return t.json()}).then(function(t){return void 0!==t.status&&("success"!==t.status?(void 0!==t.errors?(e.setAllInputsValid(),t.errors.forEach(e.processError)):e.showMessage(n,t.message,"ctct-error","alert"),!1):(n.style.display="none",e.showMessage(n,t.message,"ctct-success","status"),void n.reset()))})},e.handleSubmission=function(t,n){if(!e.validateSubmission(n))return!1;clearTimeout(e.timeout),n.checkValidity()&&(e.timeout=setTimeout(e.submitForm,500,n))},e.bindEvents=function(){e.cache.forms.forEach(function(t){t.querySelector("[type=submit]").addEventListener("click",function(n){var c=t.getAttribute("data-doajax");c&&"on"===c&&(n.preventDefault(),e.handlerecaptcha(t)),t.classList.contains("ctct-submitted")||(t.classList.add("ctct-submitted"),e.handleSubmission(n,t),t.classList.remove("ctct-submitted"))}),t.honeypot.addEventListener("change",function(n){e.checkHoneypot(n,t.honeypot,t.submitButton)}),t.honeypot.addEventListener("keyup",function(n){e.checkHoneypot(n,t.honeypot,t.submitButton)})})},e.handlerecaptcha=function(t){"undefined"!=typeof recaptchav3&&void 0!==recaptchav3.site_key&&"undefined"!=typeof grecaptcha&&grecaptcha.ready(function(){try{grecaptcha.execute(recaptchav3.site_key,{action:"constantcontactsubmit"}).then(function(e){var n=document.createElement("input");n.setAttribute("type","hidden"),n.setAttribute("name","g-recaptcha-response"),n.setAttribute("value",e),t.append(n.cloneNode(!0))})}catch(t){console.log(t)}})},e.init()}(window,window.CTCTSupport)}},e={};function n(c){var r=e[c];if(void 0!==r)return r.exports;var o=e[c]={exports:{}};return t[c](o,o.exports,n),o.exports}n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,{a:e}),e},n.d=function(t,e){for(var c in e)n.o(e,c)&&!n.o(t,c)&&Object.defineProperty(t,c,{enumerable:!0,get:e[c]})},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},function(){"use strict";n(30)}()}(); 2 2 //# sourceMappingURL=ctct-plugin-frontend.min.js.map -
constant-contact-forms/trunk/assets/js/ctct-plugin-frontend.min.js.map
r3389849 r3397480 1 {"version":3,"file":"./ctct-plugin-frontend.min.js","mappings":"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","sources":["webpack://constant-contact-forms/./assets/js/ctct-plugin-frontend/validation.js","webpack://constant-contact-forms/webpack/bootstrap","webpack://constant-contact-forms/webpack/runtime/compat get default export","webpack://constant-contact-forms/webpack/runtime/define property getters","webpack://constant-contact-forms/webpack/runtime/hasOwnProperty shorthand"],"sourcesContent":["/**\n * Front-end form validation.\n *\n * @since 1.0.0\n */\n\n window.CTCTSupport = {};\n\n( function( window, app ) {\n\n\t/**\n\t * @constructor\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tapp.init = () => {\n\t\tapp.cache();\n\t\tapp.bindEvents();\n\t};\n\n\t/**\n\t * Cache DOM elements.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tapp.cache = () => {\n\n\t\tapp.cache = {\n\t\t\tforms: []\n\t\t};\n\n\t\tlet wrapper = document.querySelectorAll('.ctct-form-wrapper');\n\t\tif (wrapper.length) {\n\t\t\twrapper.forEach((formWrapper) => {\n\t\t\t\tlet found = formWrapper.querySelector('form');\n\t\t\t\tif (found) {\n\t\t\t\t\tapp.cache.forms.push(found);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tapp.cache.forms.forEach((form, index) => {\n\t\t\tapp.cache.forms[index].honeypot = form.querySelector('.ctct_usage_field');\n\t\t\tapp.cache.forms[index].submitButton = form.querySelector('input[type=submit]');\n\t\t\tapp.cache.forms[index].recaptcha = form.querySelector('.g-recaptcha');\n\t\t});\n\n\t\tapp.timeout = null;\n\t};\n\n\t/**\n\t * Remove the ctct-invalid class from elements that have it.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tapp.setAllInputsValid = () => {\n\t\tapp.cache.forms.forEach((form) => {\n\t\t\tlet invalid = form.querySelectorAll('.ctct-invalid');\n\t\t\tArray.from(invalid).forEach((field) => {\n\t\t\t\tfield.classList.remove('ctct-invalid');\n\t\t\t});\n\t\t});\n\t};\n\n\t/**\n\t * Adds .ctct-invalid HTML class to inputs whose values are invalid.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t *\n\t * @param {object} error AJAX response error object.\n\t */\n\tapp.processError = ( error ) => {\n\n\t\t// If we have an id property set.\n\t\tif ( 'undefined' !== typeof( error.id ) ) {\n\t\t\tlet invalid = document.querySelectorAll('#' + error.id);\n\t\t\tArray.from(invalid).forEach((theInvalid) => {\n\t\t\t\ttheInvalid.classList.add('ctct-invalid');\n\t\t\t});\n\t\t}\n\t};\n\n\t/**\n\t * Check the value of the hidden honeypot field; disable form submission button if anything in it.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t *\n\t * @param {object} event The change or keyup event triggering this callback.\n\t * @param {object} honeyPot The object for the actual input field being checked.\n\t * @param {object} submitButton The object for the submit button in the same form as the honeypot field.\n\t */\n\tapp.checkHoneypot = ( event, honeyPot, submitButton ) => {\n\t\t// If there is text in the honeypot, disable the submit button.\n\n\t\t// Leaving this disabling in place because it should not be getting used by screen readers in the first place, and I feel it's going to help more than hurt to keep.\n\t\tif ( 0 < honeyPot.value.length ) {\n\t\t\tsubmitButton.setAttribute('disabled','disabled');\n\t\t} else {\n\t\t\tsubmitButton.removeAttribute('disabled');\n\t\t}\n\t};\n\n\t/**\n\t * Ensures that we should use AJAX to process the specified form, and that all required fields are not empty.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t *\n\t * @param {object} form object for the form being validated.\n\t * @return {boolean} False if AJAX processing is disabled for this form or if a required field is empty.\n\t */\n\tapp.validateSubmission = ( form ) => {\n\t\tif ( 'on' !== form.getAttribute( 'data-doajax' ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tlet fields = form.querySelectorAll('[required]');\n\t\tArray.from(fields).forEach((field) => {\n\t\t\tif (false === field.checkValidity()) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\n\t\treturn true;\n\t};\n\n\t/**\n\t * Prepends form with a message that fades out in 5 seconds.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t *\n\t * @param {object} form object for the form a message is being displayed for.\n\t * @param {string} message The message content.\n\t * @param {string} classes Optional. HTML classes to add to the message wrapper.\n\t * @param {string} role Role attribute for accessibility.\n\t */\n\tapp.showMessage = ( form, message, classes = '', role = 'log' ) => {\n\n\t\tconst wrapper = form.parentElement;\n\n\t\tif ( wrapper.querySelector('p.ctct-message') ) {\n\t\t\twrapper.querySelector('p.ctct-message').remove();\n\t\t}\n\n\t\tlet message_tag = document.createElement('p');\n\t\tmessage_tag.setAttribute('class', 'ctct-message ' + classes);\n\t\tmessage_tag.setAttribute('role', role);\n\t\tmessage_tag.innerHTML = message;\n\n\t\tlet dismiss_btn = document.createElement('button');\n\t\tdismiss_btn.setAttribute('class', 'button button-secondary ctct-dismiss ctct-dismiss-ajax-notice');\n\t\tdismiss_btn.setAttribute('aria-label', 'Dismiss notification');\n\t\tdismiss_btn.innerHTML = '✕';\n\n\t\tmessage_tag.prepend(dismiss_btn);\n\n\t\tform.parentElement.prepend(message_tag);\n\n\t\twrapper.querySelector( '.ctct-dismiss-ajax-notice' ).addEventListener(\n\t\t\t'click',\n\t\t\tfunction() {\n\t\t\t\tthis.parentElement.remove();\n\t\t\t}\n\t\t);\n\t};\n\n\t/**\n\t * Submits the actual form via AJAX.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t *\n\t * @param {object} form object for the form being submitted.\n\t */\n\tapp.submitForm = ( form ) => {\n\t\tconst data = new FormData();\n\t\tconst formData = new FormData(form);\n\t\tconst formParams = new URLSearchParams(formData);\n\n\t\tdata.append('action', 'ctct_process_form');\n\t\tdata.append('data', formParams);\n\n\t\tlet options = {\n\t\t\tmethod: 'POST',\n\t\t\tbody: data\n\t\t};\n\n\t\tfetch(\n\t\t\twindow.ajaxurl,\n\t\t\toptions\n\t\t)\n\t\t.then((response)=>response.json())\n\t\t.then((response)=>{\n\n\t\t\tif ( 'undefined' === typeof response.status ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif ( 'success' !== response.status ) {\n\t\t\t\tif ('undefined' !== typeof (response.errors)) {\n\t\t\t\t\tapp.setAllInputsValid();\n\t\t\t\t\tresponse.errors.forEach(app.processError);\n\t\t\t\t} else {\n\t\t\t\t\tapp.showMessage(form, response.message, 'ctct-error', 'alert');\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tform.style.display = 'none';\n\t\t\t// If we're here, the submission was a success; show message and reset form fields.\n\t\t\tapp.showMessage(form, response.message, 'ctct-success', 'status');\n\t\t\tform.reset();\n\t\t});\n\t};\n\n\t/**\n\t * Handle the form submission.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t *\n\t * @param {object} event The submit event.\n\t * @param {object} form object for the current form being handled.\n\t * @return {boolean} False if unable to validate the form.\n\t */\n\tapp.handleSubmission = ( event, form ) => {\n\n\t\tif ( ! app.validateSubmission( form ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tclearTimeout( app.timeout );\n\n\t\tif (form.checkValidity()) {\n\t\t\tapp.timeout = setTimeout(app.submitForm, 500, form);\n\t\t}\n\t};\n\n\t/**\n\t * Set up event bindings and callbacks.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tapp.bindEvents = () => {\n\t\tapp.cache.forms.forEach((form) => {\n\t\t\tlet thesubmit = form.querySelector('[type=submit]');\n\t\t\tthesubmit.addEventListener('click', (event) => {\n\t\t\t\tlet doingajax = form.getAttribute( 'data-doajax' );\n\t\t\t\tif ( doingajax && 'on' === doingajax ) {\n\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\tapp.handlerecaptcha(form);\n\t\t\t\t}\n\n\t\t\t\tif ( form.classList.contains( 'ctct-submitted' ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tform.classList.add( 'ctct-submitted' );\n\t\t\t\tapp.handleSubmission( event, form );\n\t\t\t\tform.classList.remove( 'ctct-submitted' );\n\t\t\t});\n\n\t\t\tform.honeypot.addEventListener('change', (event) => {\n\t\t\t\tapp.checkHoneypot(\n\t\t\t\t\tevent,\n\t\t\t\t\tform.honeypot,\n\t\t\t\t\tform.submitButton\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tform.honeypot.addEventListener('keyup', (event) => {\n\t\t\t\tapp.checkHoneypot(\n\t\t\t\t\tevent,\n\t\t\t\t\tform.honeypot,\n\t\t\t\t\tform.submitButton\n\t\t\t\t);\n\t\t\t});\n\t\t});\n\t};\n\n\t/**\n\t * Custom handling within our validation file, for cases of reCAPTCHA v3 + AJAX submit.\n\t *\n\t * @param form Form being submitted.\n\t */\n\tapp.handlerecaptcha = (form) => {\n\t\tif ('undefined' === typeof (recaptchav3.site_key)) {\n\t\t\treturn;\n\t\t}\n\n\t\tgrecaptcha.ready(function () {\n\t\t\ttry {\n\t\t\t\tgrecaptcha.execute(recaptchav3.site_key, {action: 'constantcontactsubmit'}).then(function (token) {\n\t\t\t\t\tlet recaptchaResponse = document.createElement('input');\n\t\t\t\t\trecaptchaResponse.setAttribute('type', 'hidden');\n\t\t\t\t\trecaptchaResponse.setAttribute('name', 'g-recaptcha-response');\n\t\t\t\t\trecaptchaResponse.setAttribute('value', token);\n\n\t\t\t\t\tform.append(recaptchaResponse.cloneNode(true));\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tconsole.log(error);\n\t\t\t}\n\t\t});\n\t}\n\n\tapp.init();\n\n} ( window, window.CTCTSupport ) );\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }"],"names":["window","CTCTSupport","app","init","cache","bindEvents","forms","wrapper","document","querySelectorAll","length","forEach","formWrapper","found","querySelector","push","form","index","honeypot","submitButton","recaptcha","timeout","setAllInputsValid","invalid","Array","from","field","classList","remove","processError","error","id","theInvalid","add","checkHoneypot","event","honeyPot","value","setAttribute","removeAttribute","validateSubmission","getAttribute","fields","checkValidity","showMessage","message","classes","arguments","undefined","role","parentElement","message_tag","createElement","innerHTML","dismiss_btn","prepend","addEventListener","this","submitForm","data","FormData","formData","formParams","URLSearchParams","append","options","method","body","fetch","ajaxurl","then","response","json","status","errors","style","display","reset","handleSubmission","clearTimeout","setTimeout","doingajax","preventDefault","handlerecaptcha","contains","recaptchav3","site_key","grecaptcha","ready","execute","action","token","recaptchaResponse","cloneNode","console","log","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__","n","getter","__esModule","d","a","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call"],"sourceRoot":""}1 {"version":3,"file":"./ctct-plugin-frontend.min.js","mappings":"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","sources":["webpack://constant-contact-forms/./assets/js/ctct-plugin-frontend/validation.js","webpack://constant-contact-forms/webpack/bootstrap","webpack://constant-contact-forms/webpack/runtime/compat get default export","webpack://constant-contact-forms/webpack/runtime/define property getters","webpack://constant-contact-forms/webpack/runtime/hasOwnProperty shorthand"],"sourcesContent":["/**\n * Front-end form validation.\n *\n * @since 1.0.0\n */\n\n window.CTCTSupport = {};\n\n( function( window, app ) {\n\n\t/**\n\t * @constructor\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tapp.init = () => {\n\t\tapp.cache();\n\t\tapp.bindEvents();\n\t};\n\n\t/**\n\t * Cache DOM elements.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tapp.cache = () => {\n\n\t\tapp.cache = {\n\t\t\tforms: []\n\t\t};\n\n\t\tlet wrapper = document.querySelectorAll('.ctct-form-wrapper');\n\t\tif (wrapper.length) {\n\t\t\twrapper.forEach((formWrapper) => {\n\t\t\t\tlet found = formWrapper.querySelector('form');\n\t\t\t\tif (found) {\n\t\t\t\t\tapp.cache.forms.push(found);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tapp.cache.forms.forEach((form, index) => {\n\t\t\tapp.cache.forms[index].honeypot = form.querySelector('.ctct_usage_field');\n\t\t\tapp.cache.forms[index].submitButton = form.querySelector('input[type=submit]');\n\t\t\tapp.cache.forms[index].recaptcha = form.querySelector('.g-recaptcha');\n\t\t});\n\n\t\tapp.timeout = null;\n\t};\n\n\t/**\n\t * Remove the ctct-invalid class from elements that have it.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tapp.setAllInputsValid = () => {\n\t\tapp.cache.forms.forEach((form) => {\n\t\t\tlet invalid = form.querySelectorAll('.ctct-invalid');\n\t\t\tArray.from(invalid).forEach((field) => {\n\t\t\t\tfield.classList.remove('ctct-invalid');\n\t\t\t});\n\t\t});\n\t};\n\n\t/**\n\t * Adds .ctct-invalid HTML class to inputs whose values are invalid.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t *\n\t * @param {object} error AJAX response error object.\n\t */\n\tapp.processError = ( error ) => {\n\n\t\t// If we have an id property set.\n\t\tif ( 'undefined' !== typeof( error.id ) ) {\n\t\t\tlet invalid = document.querySelectorAll('#' + error.id);\n\t\t\tArray.from(invalid).forEach((theInvalid) => {\n\t\t\t\ttheInvalid.classList.add('ctct-invalid');\n\t\t\t});\n\t\t}\n\t};\n\n\t/**\n\t * Check the value of the hidden honeypot field; disable form submission button if anything in it.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t *\n\t * @param {object} event The change or keyup event triggering this callback.\n\t * @param {object} honeyPot The object for the actual input field being checked.\n\t * @param {object} submitButton The object for the submit button in the same form as the honeypot field.\n\t */\n\tapp.checkHoneypot = ( event, honeyPot, submitButton ) => {\n\t\t// If there is text in the honeypot, disable the submit button.\n\n\t\t// Leaving this disabling in place because it should not be getting used by screen readers in the first place, and I feel it's going to help more than hurt to keep.\n\t\tif ( 0 < honeyPot.value.length ) {\n\t\t\tsubmitButton.setAttribute('disabled','disabled');\n\t\t} else {\n\t\t\tsubmitButton.removeAttribute('disabled');\n\t\t}\n\t};\n\n\t/**\n\t * Ensures that we should use AJAX to process the specified form, and that all required fields are not empty.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t *\n\t * @param {object} form object for the form being validated.\n\t * @return {boolean} False if AJAX processing is disabled for this form or if a required field is empty.\n\t */\n\tapp.validateSubmission = ( form ) => {\n\t\tif ( 'on' !== form.getAttribute( 'data-doajax' ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tlet fields = form.querySelectorAll('[required]');\n\t\tArray.from(fields).forEach((field) => {\n\t\t\tif (false === field.checkValidity()) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\n\t\treturn true;\n\t};\n\n\t/**\n\t * Prepends form with a message that fades out in 5 seconds.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t *\n\t * @param {object} form object for the form a message is being displayed for.\n\t * @param {string} message The message content.\n\t * @param {string} classes Optional. HTML classes to add to the message wrapper.\n\t * @param {string} role Role attribute for accessibility.\n\t */\n\tapp.showMessage = ( form, message, classes = '', role = 'log' ) => {\n\n\t\tconst wrapper = form.parentElement;\n\n\t\tif ( wrapper.querySelector('p.ctct-message') ) {\n\t\t\twrapper.querySelector('p.ctct-message').remove();\n\t\t}\n\n\t\tlet message_tag = document.createElement('p');\n\t\tmessage_tag.setAttribute('class', 'ctct-message ' + classes);\n\t\tmessage_tag.setAttribute('role', role);\n\t\tmessage_tag.innerHTML = message;\n\n\t\tlet dismiss_btn = document.createElement('button');\n\t\tdismiss_btn.setAttribute('class', 'button button-secondary ctct-dismiss ctct-dismiss-ajax-notice');\n\t\tdismiss_btn.setAttribute('aria-label', 'Dismiss notification');\n\t\tdismiss_btn.innerHTML = '✕';\n\n\t\tmessage_tag.prepend(dismiss_btn);\n\n\t\tform.parentElement.prepend(message_tag);\n\n\t\twrapper.querySelector( '.ctct-dismiss-ajax-notice' ).addEventListener(\n\t\t\t'click',\n\t\t\tfunction() {\n\t\t\t\tthis.parentElement.remove();\n\t\t\t}\n\t\t);\n\t};\n\n\t/**\n\t * Submits the actual form via AJAX.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t *\n\t * @param {object} form object for the form being submitted.\n\t */\n\tapp.submitForm = ( form ) => {\n\t\tconst data = new FormData();\n\t\tconst formData = new FormData(form);\n\t\tconst formParams = new URLSearchParams(formData);\n\n\t\tdata.append('action', 'ctct_process_form');\n\t\tdata.append('data', formParams);\n\n\t\tlet options = {\n\t\t\tmethod: 'POST',\n\t\t\tbody: data\n\t\t};\n\n\t\tfetch(\n\t\t\twindow.ajaxurl,\n\t\t\toptions\n\t\t)\n\t\t.then((response)=>response.json())\n\t\t.then((response)=>{\n\n\t\t\tif ( 'undefined' === typeof response.status ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif ( 'success' !== response.status ) {\n\t\t\t\tif ('undefined' !== typeof (response.errors)) {\n\t\t\t\t\tapp.setAllInputsValid();\n\t\t\t\t\tresponse.errors.forEach(app.processError);\n\t\t\t\t} else {\n\t\t\t\t\tapp.showMessage(form, response.message, 'ctct-error', 'alert');\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tform.style.display = 'none';\n\t\t\t// If we're here, the submission was a success; show message and reset form fields.\n\t\t\tapp.showMessage(form, response.message, 'ctct-success', 'status');\n\t\t\tform.reset();\n\t\t});\n\t};\n\n\t/**\n\t * Handle the form submission.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t *\n\t * @param {object} event The submit event.\n\t * @param {object} form object for the current form being handled.\n\t * @return {boolean} False if unable to validate the form.\n\t */\n\tapp.handleSubmission = ( event, form ) => {\n\n\t\tif ( ! app.validateSubmission( form ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tclearTimeout( app.timeout );\n\n\t\tif (form.checkValidity()) {\n\t\t\tapp.timeout = setTimeout(app.submitForm, 500, form);\n\t\t}\n\t};\n\n\t/**\n\t * Set up event bindings and callbacks.\n\t *\n\t * @author Constant Contact\n\t * @since 1.0.0\n\t */\n\tapp.bindEvents = () => {\n\t\tapp.cache.forms.forEach((form) => {\n\t\t\tlet thesubmit = form.querySelector('[type=submit]');\n\t\t\tthesubmit.addEventListener('click', (event) => {\n\t\t\t\tlet doingajax = form.getAttribute( 'data-doajax' );\n\t\t\t\tif ( doingajax && 'on' === doingajax ) {\n\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\tapp.handlerecaptcha(form);\n\t\t\t\t}\n\n\t\t\t\tif ( form.classList.contains( 'ctct-submitted' ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tform.classList.add( 'ctct-submitted' );\n\t\t\t\tapp.handleSubmission( event, form );\n\t\t\t\tform.classList.remove( 'ctct-submitted' );\n\t\t\t});\n\n\t\t\tform.honeypot.addEventListener('change', (event) => {\n\t\t\t\tapp.checkHoneypot(\n\t\t\t\t\tevent,\n\t\t\t\t\tform.honeypot,\n\t\t\t\t\tform.submitButton\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tform.honeypot.addEventListener('keyup', (event) => {\n\t\t\t\tapp.checkHoneypot(\n\t\t\t\t\tevent,\n\t\t\t\t\tform.honeypot,\n\t\t\t\t\tform.submitButton\n\t\t\t\t);\n\t\t\t});\n\t\t});\n\t};\n\n\t/**\n\t * Custom handling within our validation file, for cases of reCAPTCHA v3 + AJAX submit.\n\t *\n\t * @param form Form being submitted.\n\t */\n\tapp.handlerecaptcha = (form) => {\n\t\tif ('undefined' === typeof (recaptchav3)) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ('undefined' === typeof (recaptchav3.site_key)) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ('undefined' === typeof (grecaptcha)) {\n\t\t\treturn;\n\t\t}\n\n\t\tgrecaptcha.ready(function () {\n\t\t\ttry {\n\t\t\t\tgrecaptcha.execute(recaptchav3.site_key, {action: 'constantcontactsubmit'}).then(function (token) {\n\t\t\t\t\tlet recaptchaResponse = document.createElement('input');\n\t\t\t\t\trecaptchaResponse.setAttribute('type', 'hidden');\n\t\t\t\t\trecaptchaResponse.setAttribute('name', 'g-recaptcha-response');\n\t\t\t\t\trecaptchaResponse.setAttribute('value', token);\n\n\t\t\t\t\tform.append(recaptchaResponse.cloneNode(true));\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tconsole.log(error);\n\t\t\t}\n\t\t});\n\t}\n\n\tapp.init();\n\n} ( window, window.CTCTSupport ) );\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }"],"names":["window","CTCTSupport","app","init","cache","bindEvents","forms","wrapper","document","querySelectorAll","length","forEach","formWrapper","found","querySelector","push","form","index","honeypot","submitButton","recaptcha","timeout","setAllInputsValid","invalid","Array","from","field","classList","remove","processError","error","id","theInvalid","add","checkHoneypot","event","honeyPot","value","setAttribute","removeAttribute","validateSubmission","getAttribute","fields","checkValidity","showMessage","message","classes","arguments","undefined","role","parentElement","message_tag","createElement","innerHTML","dismiss_btn","prepend","addEventListener","this","submitForm","data","FormData","formData","formParams","URLSearchParams","append","options","method","body","fetch","ajaxurl","then","response","json","status","errors","style","display","reset","handleSubmission","clearTimeout","setTimeout","doingajax","preventDefault","handlerecaptcha","contains","recaptchav3","site_key","grecaptcha","ready","execute","action","token","recaptchaResponse","cloneNode","console","log","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__","n","getter","__esModule","d","a","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call"],"sourceRoot":""} -
constant-contact-forms/trunk/assets/js/ctct-plugin-frontend/validation.js
r3389849 r3397480 293 293 */ 294 294 app.handlerecaptcha = (form) => { 295 if ('undefined' === typeof (recaptchav3)) { 296 return; 297 } 298 295 299 if ('undefined' === typeof (recaptchav3.site_key)) { 300 return; 301 } 302 303 if ('undefined' === typeof (grecaptcha)) { 296 304 return; 297 305 } -
constant-contact-forms/trunk/constant-contact-forms.php
r3393018 r3397480 13 13 * Plugin URI: https://www.constantcontact.com 14 14 * Description: Be a better marketer. All it takes is Constant Contact email marketing. 15 * Version: 2.14. 115 * Version: 2.14.2 16 16 * Author: Constant Contact 17 17 * Author URI: https://www.constantcontact.com/index?pn=miwordpress … … 77 77 * @var string 78 78 */ 79 const VERSION = '2.14. 1';79 const VERSION = '2.14.2'; 80 80 81 81 /** -
constant-contact-forms/trunk/readme.txt
r3393018 r3397480 4 4 Requires at least: 6.4.0 5 5 Tested up to: 6.8 6 Stable tag: 2.14. 16 Stable tag: 2.14.2 7 7 License: GPLv3 8 8 License URI: http://www.gnu.org/licenses/gpl-3.0.html … … 49 49 50 50 == Changelog == 51 52 = 2.14.2 = 53 * Fixed: errors regarding Google reCAPTCHA v3 javascript variables. 51 54 52 55 = 2.14.1 = … … 109 112 110 113 == Upgrade Notice == 111 * Fixes issues around reCAPTCHA , details related to connection issues, and PHP notices. Adds ability to choose address type.114 * Fixes issues around reCAPTCHA 112 115 113 116 == Frequently Asked Questions ==
Note: See TracChangeset
for help on using the changeset viewer.