Easy Forms for MailChimp - Version 6.0.5.5

Version Description

Download this release

Release Info

Developer eherman24
Plugin Icon 128x128 Easy Forms for MailChimp
Version 6.0.5.5
Comparing to
See all releases

Code changes from version 6.0.5.4 to 6.0.5.5

admin/class-yikes-inc-easy-mailchimp-extender-admin.php CHANGED
@@ -1,2979 +1,2979 @@
1
- <?php
2
- /**
3
- * The admin-specific functionality of the plugin.
4
- *
5
- * Defines the plugin name, version, and two examples hooks for how to
6
- * enqueue the admin-specific stylesheet and JavaScript.
7
- *
8
- * @package Yikes_Inc_Easy_Mailchimp_Forms
9
- * @subpackage Yikes_Inc_Easy_Mailchimp_Forms/admin
10
- * @author YIKES Inc. <info@yikesinc.com>
11
- */
12
- class Yikes_Inc_Easy_Mailchimp_Forms_Admin {
13
- /**
14
- * The ID of this plugin.
15
- *
16
- * @since 1.0.0
17
- * @access private
18
- * @var string $yikes_inc_easy_mailchimp_extender The ID of this plugin.
19
- */
20
- private $yikes_inc_easy_mailchimp_extender;
21
- /**
22
- * The version of this plugin.
23
- *
24
- * @since 1.0.0
25
- * @access private
26
- * @var string $version The current version of this plugin.
27
- */
28
- private $version;
29
- /**
30
- * Initialize the class and set its properties.
31
- *
32
- * @since 1.0.0
33
- * @param string $yikes_inc_easy_mailchimp_extender The name of this plugin.
34
- * @param string $version The version of this plugin.
35
- */
36
- public function __construct( $yikes_inc_easy_mailchimp_extender, $version ) {
37
-
38
- $this->yikes_inc_easy_mailchimp_extender = $yikes_inc_easy_mailchimp_extender;
39
- $this->version = $version;
40
- // check for old plugin options and migrate if exist
41
- add_action( 'admin_menu' , array( $this , 'register_admin_pages' ) , 11 );
42
- // check for old plugin options and migrate if exist
43
- add_action( 'admin_init' , array( $this , 'check_for_old_yks_mc_options' ) );
44
- // Ajax function to update new options...
45
- add_action( 'wp_ajax_migrate_old_plugin_settings', array( $this , 'migrate_archived_options' ) );
46
- // Ajax function to migrate our forms
47
- add_action( 'wp_ajax_migrate_prevoious_forms', array( $this , 'migrate_previously_setup_forms' ) );
48
- // fix menu icon spacing
49
- add_action( 'admin_head' , array( $this , 'fix_menu_icon_spacing' ) );
50
- // register our plugin settings
51
- add_action( 'admin_init', array( $this , 'yikes_easy_mc_settings_init' ) );
52
- // plugin redirect on activation
53
- add_action( 'admin_init' , array( $this , 'yikes_easy_mc_activation_redirect' ) );
54
- // Include Third Party Extensions
55
- include_once( YIKES_MC_PATH . 'includes/third-party-integrations/third-party-init.php' );
56
- // Include our dashboard widget class
57
- include_once( YIKES_MC_PATH . 'admin/partials/dashboard-widgets/class.list-activity-widget.php' );
58
- // Include our front end widget class
59
- include_once( YIKES_MC_PATH . 'admin/partials/front-end-widgets/front-end-widget-form.php' );
60
- // Include our ajax processing class
61
- include_once( YIKES_MC_PATH . 'admin/partials/ajax/class.ajax.php' );
62
- // load up our helper class
63
- add_action( 'admin_init' , array( $this , 'yikes_mailchimp_load_helper_class' ) );
64
- // process the subscriber count shortcode in form descriptions
65
- add_action( 'yikes-mailchimp-form-description', array( $this, 'process_subscriber_count_shortcode_in_form_descriptions' ), 10, 2 );
66
- /***********************/
67
- /** Create A Form **/
68
- /**********************/
69
- if ( isset( $_REQUEST[ 'action' ] ) && $_REQUEST[ 'action' ] == 'yikes-easy-mc-create-form' ) {
70
- add_action( 'init' , array( $this , 'yikes_easy_mailchimp_create_form' ) );
71
- }
72
- /***********************/
73
- /** Delete A Form **/
74
- /**********************/
75
- if ( isset( $_REQUEST[ 'action' ] ) && $_REQUEST[ 'action' ] == 'yikes-easy-mc-delete-form' ) {
76
- add_action( 'init' , array( $this , 'yikes_easy_mailchimp_delete_form' ) );
77
- }
78
- /**********************************/
79
- /** Duplicate/Clone A Form **/
80
- /********************************/
81
- if ( isset( $_REQUEST[ 'action' ] ) && $_REQUEST[ 'action' ] == 'yikes-easy-mc-duplicate-form' ) {
82
- add_action( 'init' , array( $this , 'yikes_easy_mailchimp_duplicate_form' ) );
83
- }
84
- /*************************************/
85
- /** Reset Form Impression Stats **/
86
- /***********************************/
87
- if ( isset( $_REQUEST[ 'action' ] ) && $_REQUEST[ 'action' ] == 'yikes-easy-mc-reset-stats' ) {
88
- add_action( 'init' , array( $this , 'yikes_easy_mailchimp_reset_impression_stats' ) );
89
- }
90
- /**********************************/
91
- /** Update A Form **/
92
- /********************************/
93
- if ( isset( $_REQUEST[ 'action' ] ) && $_REQUEST[ 'action' ] == 'yikes-easy-mc-update-form' ) {
94
- add_action( 'init' , array( $this , 'yikes_easy_mailchimp_update_form' ) );
95
- }
96
- /**************************************************/
97
- /** Clear Store MailChimp Transient Data **/
98
- /*************************************************/
99
- if ( isset( $_REQUEST[ 'action' ] ) && $_REQUEST[ 'action' ] == 'yikes-easy-mc-clear-transient-data' ) {
100
- add_action( 'init' , array( $this , 'yikes_easy_mailchimp_clear_transient_data' ) );
101
- }
102
- /*******************************************/
103
- /** Remove a user from a mailing list **/
104
- /*****************************************/
105
- if ( isset( $_REQUEST[ 'action' ] ) && $_REQUEST[ 'action' ] == 'yikes-easy-mc-unsubscribe-user' ) {
106
- add_action( 'init' , array( $this , 'yikes_easy_mailchimp_unsubscribe_user' ) );
107
- }
108
- /*******************************************/
109
- /** Create misisng error log file **/
110
- /*****************************************/
111
- if ( isset( $_REQUEST[ 'action' ] ) && $_REQUEST[ 'action' ] == 'yikes-easy-mc-create-error-log' ) {
112
- add_action( 'init' , array( $this , 'yikes_easy_mailchimp_create_missing_error_log' ) );
113
- }
114
- /*******************************************/
115
- /** TinyMCE Initialization Functions **/
116
- /*****************************************/
117
- add_action( 'admin_head' , array( $this, 'add_tinyMCE_buttons' ) );
118
- // pass our lists data to tinyMCE button for use
119
- foreach ( array('post.php','post-new.php') as $hook ) {
120
- add_action( "admin_head-$hook", array( $this, 'tinymce_yikes_easy_mc' ) );
121
- }
122
- // display an admin notice for users on PHP < 5.3
123
- if( phpversion() < '5.3' ) {
124
- add_action( "admin_notices", array( $this, 'display_php_warning' ), 999 );
125
- }
126
- // two week , dismissable notification - check the users plugin installation date
127
- add_action( 'admin_init', array( $this , 'yikes_easy_mailchimp_check_installation_date' ) );
128
- // dismissable notice admin side
129
- add_action( 'admin_init', array( $this , 'yikes_easy_mailchimp_stop_bugging_me' ), 5 );
130
- /**************************************************/
131
- /** Clear MailChimp Error Log Data **/
132
- /*************************************************/
133
- if ( isset( $_REQUEST[ 'action' ] ) && $_REQUEST[ 'action' ] == 'yikes-easy-mc-clear-error-log' ) {
134
- add_action( 'init' , array( $this , 'yikes_easy_mailchimp_clear_error_log' ) );
135
- }
136
- /*********************************************/
137
- /** Export MailChimp Opt-in Forms **/
138
- /*******************************************/
139
- if ( isset( $_REQUEST[ 'action' ] ) && $_REQUEST[ 'action' ] == 'yikes-easy-mc-export-forms' ) {
140
- add_action( 'init' , array( $this , 'yikes_easy_mailchimp_export_forms' ) );
141
- }
142
- /*********************************************/
143
- /** Export Plugin Settings **/
144
- /*******************************************/
145
- if ( isset( $_REQUEST[ 'action' ] ) && $_REQUEST[ 'action' ] == 'yikes-easy-mc-export-settings' ) {
146
- add_action( 'init' , array( $this , 'yikes_easy_mailchimp_export_plugin_settings' ) );
147
- }
148
- /*******************************************/
149
- /** Import Class Inclusion **/
150
- /*****************************************/
151
- if ( isset( $_REQUEST[ 'action' ] ) && $_REQUEST[ 'action' ] == 'yikes-easy-mc-import-forms' ) {
152
- add_action( 'init' , array( $this , 'yikes_easy_mailchimp_import_forms' ) );
153
- }
154
- /*******************************************/
155
- /** Premium Support Request **/
156
- /*****************************************/
157
- if ( isset( $_POST[ 'submit-premium-support-request' ] ) ) {
158
- add_action( 'init' , array( $this , 'yikes_easy_mailchimp_premium_support_request' ) );
159
- }
160
- /****************************************/
161
- /** Dismiss Options Migrations **/
162
- /****************************************/
163
- if( isset( $_REQUEST['dismiss_migration_nonce'] ) ) {
164
- add_action( 'init' , array( $this , 'yikes_easy_mailchimp_dismiss_option_migrate' ) );
165
- }
166
- /** Parse default value into usable dynamic data **/
167
- add_filter( 'yikes-mailchimp-process-default-tag' , array( $this , 'parse_mailchimp_default_tag' ) );
168
- /** Add a disclaimer to ensure that we let people know we are not endorsed/backed by MailChimp at all **/
169
- add_filter( 'admin_footer_text', array( $this, 'yikes_easy_forms_admin_disclaimer' ) );
170
- /** Add custom plugin action links **/
171
- add_filter( 'plugin_action_links_yikes-inc-easy-mailchimp-extender/yikes-inc-easy-mailchimp-extender.php', array( $this, 'easy_forms_plugin_action_links' ) );
172
- /* Alter the color scheme based on the users selection */
173
- add_action( 'admin_print_scripts', array( $this, 'alter_yikes_easy_mc_color_scheme' ) );
174
- // hook in and display our knowledge base articles on the support page
175
- add_action( 'yikes-mailchimp-support-page', array( $this, 'hook_and_display_kb_article_RSS' ) );
176
- // ensure that the upgrade went smoothly, else we have to let the user know we need to upgrade the database
177
- // after upgrading f rom 6.0.3.7 users need to upgrade the database as well
178
- add_action( 'plugins_loaded', array( $this, 'check_yikes_mc_table_version' ) );
179
- }
180
-
181
- /*
182
- * Add custom action links on plugins.php
183
- * @ param array $links Pre-existing plugin action links
184
- * @ return array $links New array of plugin actions
185
- */
186
- public function easy_forms_plugin_action_links( $links ) {
187
- $links[] = '<a href="'. esc_url( get_admin_url(null, 'admin.php?page=yikes-inc-easy-mailchimp-settings') ) .'">' . __( 'Settings', 'yikes-inc-easy-mailchimp-extender' ) . '</a>';
188
- $links[] = '<a href="' . esc_url( 'http://www.yikesplugins.com?utm_source=plugins-page&utm_medium=plugin-row&utm_campaign=admin' ) . '" target="_blank">' . __( 'More plugins by YIKES' , 'yikes-inc-easy-mailchimp-extender' ) . '</a>';
189
- return $links;
190
- }
191
-
192
- /**
193
- * Add a disclaimer to the admin footer for all YIKES pages to ensure that users understand there is no coorelation between this plugin and MailChimp.
194
- * This plugin simply provides the service of linking MailChimp with your site.
195
- *
196
- * @since 6.0
197
- *
198
- * @param string $footer_text The existing footer text
199
- *
200
- * @return string
201
- */
202
- public function yikes_easy_forms_admin_disclaimer( $footer_text ) {
203
- $page = get_current_screen();
204
- $base = $page->base;
205
- if ( strpos( $base, 'yikes-' ) !== false ) {
206
- $disclaimer_text = sprintf( '<em>' . __( 'Disclaimer: <strong>Easy Forms for MailChimp by YIKES</strong> is in no way endorsed, affiliated or backed by MailChimp, or its parent company Rocket Science Group.', 'yikes-inc-easy-mailchimp-extender' ), '<a href="https://wordpress.org/support/view/plugin-reviews/give?filter=5#postform" target="_blank" class="give-rating-link" data-rated="' . __( 'Thanks :)', 'yikes-inc-easy-mailchimp-extender' ) . '">', '</a></em>' );
207
- return $disclaimer_text;
208
- } else {
209
- return $footer_text;
210
- }
211
- }
212
-
213
- /*
214
- * Parse our default tag into dynamic data
215
- * to be passed to MailChimp
216
- *
217
- * @since 6.0.0
218
- * @return parsed tag content
219
- */
220
- public function parse_mailchimp_default_tag( $default_tag ) {
221
- if( ! $default_tag || $default_tag == '' ) {
222
- return $default_tag;
223
- }
224
- global $post;
225
- // page title
226
- if( $default_tag == '{page_title}' ) {
227
- $default_tag = get_the_title( $post->ID );
228
- }
229
- // page id
230
- if( $default_tag == '{page_title}' ) {
231
- $default_tag = $post->ID;
232
- }
233
- // page url
234
- if( $default_tag == '{page_url}' ) {
235
- $default_tag = get_permalink( $post->ID );
236
- }
237
- // blog name
238
- if( $default_tag == '{blog_name}' ) {
239
- $default_tag = get_bloginfo( 'name' );
240
- }
241
- // is user logged in
242
- if( $default_tag == '{user_logged_in}' ) {
243
- if( is_user_logged_in() ) {
244
- $default_tag = 'Registered User';
245
- } else {
246
- $default_tag = 'Guest User';
247
- }
248
- }
249
- /* Return our filtered tag */
250
- return apply_filters( 'yikes-mailchimp-parse-custom-default-value', $default_tag );
251
- }
252
-
253
- /*
254
- * Delete the contents of our error log
255
- *
256
- * When a user clicks 'Clear Log' on the debug settings page, this funciton
257
- * is used to clear the data out of our php file.
258
- */
259
- public function yikes_easy_mailchimp_clear_error_log() {
260
- // file put contents $returned error + other data
261
- if( file_exists( YIKES_MC_PATH . 'includes/error_log/yikes-easy-mailchimp-error-log.php' ) ) {
262
- $clear_log = file_put_contents(
263
- YIKES_MC_PATH . 'includes/error_log/yikes-easy-mailchimp-error-log.php',
264
- ''
265
- );
266
- if( $clear_log === false ) {
267
- // redirect the user to the manage forms page, display error message
268
- wp_redirect( esc_url_raw( admin_url( 'admin.php?page=yikes-inc-easy-mailchimp-settings&section=debug-settings&error-log-cleared=false' ) ) );
269
- } else {
270
- // redirect the user to the manage forms page, display confirmation
271
- wp_redirect( esc_url_raw( admin_url( 'admin.php?page=yikes-inc-easy-mailchimp-settings&section=debug-settings&error-log-cleared=true' ) ) );
272
- }
273
- }
274
- }
275
-
276
- /*
277
- * Custom export function to export all or specific forms
278
- * to allow for easy transpot to other sites
279
- * @since 6.0.0
280
- * @return CSV export file
281
- */
282
- public function yikes_easy_mailchimp_export_forms() {
283
- // grab our nonce
284
- $nonce = $_REQUEST['nonce'];
285
- // grab the forms
286
- $forms = isset( $_REQUEST['export_forms'] ) ? $_REQUEST['export_forms'] : 'all';
287
- // validate nonce
288
- if( ! wp_verify_nonce( $nonce, 'export-forms' ) ) {
289
- wp_die( __( "We've run into an error. The security check didn't pass. Please try again." , 'yikes-inc-easy-mailchimp-extender' ) , __( "Failed nonce validation" , 'yikes-inc-easy-mailchimp-extender' ) , array( 'response' => 500 , 'back_link' => true ) );
290
- }
291
- // include the export class
292
- if( ! class_exists( 'Yikes_Inc_Easy_MailChimp_Export_Class' ) ) {
293
- include_once( YIKES_MC_PATH . 'includes/import-export/yikes-easy-mailchimp-export.class.php' );
294
- }
295
- // run the export function
296
- // parameters: ( $table_name, $form_ids, $file_name )
297
- Yikes_Inc_Easy_MailChimp_Export_Class::yikes_mailchimp_form_export( 'yikes_easy_mc_forms' , $forms, 'Yikes-Inc-Easy-MailChimp-Forms-Export' );
298
- // re-direct the user back to the page
299
- wp_redirect( esc_url_raw( admin_url( 'admin.php?page=yikes-inc-easy-mailchimp-settings&section=import-export-forms' ) ) );
300
- die();
301
- }
302
-
303
- /*
304
- * Custom export function to export YIKES Easy Forms for MailChimp Plugin Settings
305
- * to allow for easy transpot to other sites
306
- * @since 6.0.0
307
- * @return CSV export file
308
- */
309
- public function yikes_easy_mailchimp_export_plugin_settings() {
310
- // grab our nonce
311
- $nonce = $_REQUEST['nonce'];
312
- // validate nonce
313
- if( ! wp_verify_nonce( $nonce, 'export-settings' ) ) {
314
- wp_die( __( "We've run into an error. The security check didn't pass. Please try again." , 'yikes-inc-easy-mailchimp-extender' ) , __( "Failed nonce validation" , 'yikes-inc-easy-mailchimp-extender' ) , array( 'response' => 500 , 'back_link' => true ) );
315
- }
316
- // include the export class
317
- if( ! class_exists( 'Yikes_Inc_Easy_MailChimp_Export_Class' ) ) {
318
- include_once( YIKES_MC_PATH . 'includes/import-export/yikes-easy-mailchimp-export.class.php' );
319
- }
320
- // run the export function
321
- // parameters: ( $table_name, $form_ids, $file_name )
322
- Yikes_Inc_Easy_MailChimp_Export_Class::yikes_mailchimp_settings_export( 'Yikes-Inc-Easy-MailChimp-Settings-Export' );
323
- // re-direct the user back to the page
324
- wp_redirect( esc_url_raw( admin_url( 'admin.php?page=yikes-inc-easy-mailchimp-settings&section=import-export-forms' ) ) );
325
- die();
326
- }
327
-
328
- /*
329
- * Custom import function to import all or specific forms
330
- * @since 6.0.0
331
- */
332
- public function yikes_easy_mailchimp_import_forms() {
333
- // grab our nonce
334
- $nonce = $_REQUEST['nonce'];
335
- // validate nonce
336
- if( ! wp_verify_nonce( $nonce, 'import-forms' ) ) {
337
- wp_die( __( "We've run into an error. The security check didn't pass. Please try again." , 'yikes-inc-easy-mailchimp-extender' ) , __( "Failed nonce validation" , 'yikes-inc-easy-mailchimp-extender' ) , array( 'response' => 500 , 'back_link' => true ) );
338
- }
339
- // include the export class
340
- if( ! class_exists( 'Yikes_Inc_Easy_MailChimp_Import_Class' ) ) {
341
- include_once( YIKES_MC_PATH . 'includes/import-export/yikes-easy-mailchimp-import.class.php' );
342
- }
343
- // run the import function
344
- // parameters: ( $_FILES )
345
- Yikes_Inc_Easy_MailChimp_Import_Class::yikes_mailchimp_import_forms( $_FILES );
346
- $import_query_arg = Yikes_Inc_Easy_MailChimp_Import_Class::yikes_mailchimp_import_type( $_FILES );
347
- // re-direct the user back to the page
348
- wp_redirect( esc_url_raw( admin_url( 'admin.php?page=yikes-inc-easy-mailchimp-settings&section=import-export-forms&' . $import_query_arg . '=true' ) ) );
349
- die();
350
- }
351
-
352
- /*
353
- * Premium Support Request
354
- * @since 6.0.0
355
- */
356
- public function yikes_easy_mailchimp_premium_support_request() {
357
-
358
- if( isset( $_POST['action'] ) && $_POST['action'] != 'yikes-support-request' ) {
359
- return __( 'We encountered an error. Please contact the YIKES Inc. support team.' , 'yikes-inc-easy-mailchimp-extender' );
360
- }
361
-
362
- $license = $_POST['license_key'];
363
- $user_email = $_POST['user-email'];
364
- $support_topic = $_POST['support-topic'];
365
- $support_priority = $_POST['support-priority'];
366
- $support_content = $_POST['support-content'];
367
-
368
- // wp_die( print_r( $support_content) );
369
-
370
- $ticket_array = array(
371
- 'action' => 'yikes-support-request',
372
- 'license_key' => urlencode( base64_encode( $license ) ),
373
- 'user_email' => urlencode( $user_email ),
374
- 'site_url' => urlencode( esc_url( home_url() ) ),
375
- 'support_topic' => urlencode( $support_topic ),
376
- 'support_priority' => $support_priority,
377
- 'support_content' => $support_content,
378
- );
379
-
380
- $yikes_plugin_support_url = 'https://yikesplugins.com';
381
-
382
- if( $license != 'plugin-core' ) {
383
- $split_license = explode( '|', $license );
384
- // first let's check that the license key is actually active
385
- $is_license_key_active = wp_remote_post( esc_url( $yikes_plugin_support_url ), array(
386
- 'action' => 'check_license',
387
- 'product_name' => urlencode( str_replace( '-', '', $split_license[1] ) . 'for Easy MailChimp' ),
388
- 'license' => $split_license[0],
389
- ) );
390
-
391
- $response_body = wp_remote_retrieve_body( $is_license_key_active );
392
- if( $response_body ) {
393
- if( $response_body->status != 'valid' ) {
394
- wp_die( 'Invalid License Key...' );
395
- }
396
- }
397
- }
398
-
399
- // Call the custom API.
400
- $response = wp_remote_post( esc_url( $yikes_plugin_support_url ), array(
401
- 'timeout' => 30,
402
- 'sslverify' => false,
403
- 'body' => $ticket_array
404
- ) );
405
-
406
- // catch the error
407
- if( is_wp_error( $response ) ) {
408
- wp_die( $create_ticket_request->getMessage() );
409
- return;
410
- }
411
-
412
- // retrieve our body
413
- $create_ticket_response = wp_remote_retrieve_body( $response );
414
-
415
- // display it
416
- if( $create_ticket_response )
417
- echo $create_ticket_response;
418
-
419
- }
420
-
421
- /**
422
- * Dismiss the migrate options notice (incase the user wants to do things manually)
423
- *
424
- * @since 6.0.0
425
- **/
426
- public function yikes_easy_mailchimp_dismiss_option_migrate() {
427
- // delete the options and allow the user to manually updadte things
428
-
429
- // Verify the NONCE is valid
430
- check_admin_referer( 'yikes-mc-dismiss-migration' , 'dismiss_migration_nonce' );
431
-
432
- // re-direct the user back to the page
433
- wp_redirect( esc_url_raw( admin_url( 'index.php?yikes-mc-options-migration-dismissed="true"' ) ) );
434
- die();
435
- }
436
-
437
- /**
438
- * Error logging class
439
- *
440
- * This is our main error logging class file, used to log errors to the error log.
441
- *
442
- * @since 6.0.0
443
- */
444
- public function load_error_logging_class() {
445
- if( get_option( 'yikes-mailchimp-debug-status' , '' ) == '1' ) {
446
- // if error logging is enabled we should include our error logging class
447
- /* Generate oure error logging table */
448
- require_once YIKES_MC_PATH . '/includes/error_log/class-yikes-inc-easy-mailchimp-error-logging.php';
449
- $error_logging = new Yikes_Inc_Easy_Mailchimp_Error_Logging();
450
- }
451
- }
452
-
453
- /*
454
- yikes_easy_mailchimp_check_installation_date()
455
- checks the user installation date, and adds our action
456
- - if it's past 2 weeks we ask the user for a review :)
457
- @since v6.0.0
458
- */
459
- public function yikes_easy_mailchimp_check_installation_date() {
460
-
461
- // add a new option to store the plugin activation date/time
462
- // @since v6.0.0
463
- // this is used to notify the user that they should review after 2 weeks
464
- if ( !get_option( 'yikes_easy_mailchimp_activation_date' ) ) {
465
- add_option( 'yikes_easy_mailchimp_activation_date', strtotime( "now" ) );
466
- }
467
-
468
- $stop_bugging_me = get_option( 'yikes_easy_mailchimp_review_stop_bugging_me' );
469
-
470
- if( !$stop_bugging_me ) {
471
- $install_date = get_option( 'yikes_easy_mailchimp_activation_date' );
472
- $past_date = strtotime( '-14 days' );
473
- if ( $past_date >= $install_date && current_user_can( 'install_plugins' ) ) {
474
- add_action( 'admin_notices', array( $this , 'yikes_easy_mailchimp_display_review_us_notice' ) );
475
- }
476
- }
477
-
478
- }
479
-
480
- /*
481
- Display our admin notification
482
- asking for a review, and for user feedback
483
- @since v6.0.0
484
- */
485
- public function yikes_easy_mailchimp_display_review_us_notice() {
486
- /* Lets only display our admin notice on YT4WP pages to not annoy the hell out of people :) */
487
- if ( in_array( get_current_screen()->base , array( 'dashboard' , 'post' , 'edit' ) ) || strpos( get_current_screen()->base ,'yikes-inc-easy-mailchimp') !== false ) {
488
- // Review URL - Change to the URL of your plugin on WordPress.org
489
- $reviewurl = 'https://wordpress.org/support/view/plugin-reviews/yikes-inc-easy-mailchimp-extender';
490
- $addons_url = esc_url( admin_url( 'admin.php?page=yikes-inc-easy-mailchimp-addons' ) );
491
- $nobugurl = esc_url_raw( add_query_arg( 'yikes_easy_mc_icons_nobug', '1', admin_url() ) );
492
- global $current_user;
493
- get_currentuserinfo();
494
- if ( isset( $current_user->user_firstname ) && '' != $current_user->user_firstname ) {
495
- $review_message = '<div id="yikes-mailchimp-logo"></div>';
496
- $review_message .= sprintf( __( "Hi, %s, you've been using %s for 2 weeks now. We hope you're enjoying the features included with the free version. If so, please consider leaving us a review. Reviews provide us with feedback to grow and improve the plugin. If you're really enjoying the plugin, consider buying an add-on or developer license for some really awesome features and premium support." , 'yikes-inc-easy-mailchimp-extender' ) . "<span class='button-container'> <a href='%s' target='_blank' class='button-secondary'><span class='dashicons dashicons-star-filled'></span>" . __( "Leave A Review" , 'yikes-inc-easy-mailchimp-extender' ) . "</a> <a href='%s' class='button-secondary'><span class='dashicons dashicons-upload'></span>" . __( "View Addons" , 'yikes-inc-easy-mailchimp-extender' ) . "</a> <a href='%s' class='button-secondary'><span class='dashicons dashicons-no-alt'></span>" . __( "Dismiss" , 'yikes-inc-easy-mailchimp-extender' ) . "</a> </span>", $current_user->user_firstname, '<strong>Easy Forms for MailChimp by YIKES Inc.</strong>', $reviewurl, $addons_url, $nobugurl );
497
- $review_message .= '';
498
- } else {
499
- $review_message = '<div id="yikes-mailchimp-logo"></div>';
500
- $review_message .= sprintf( __( "It looks like you've been using %s for 2 weeks now. We hope you're enjoying the features included with the free version. If so, please consider leaving us a review. Reviews only help to catch other users attention as well as provide us with feedback to grow and improve upon. If you're really enjoying the plugin, consider buying an add-on or developer license for some really awesome features and premium support." , 'yikes-inc-easy-mailchimp-extender' ) . "<span class='button-container'> <a href='%s' target='_blank' class='button-secondary'><span class='dashicons dashicons-star-filled'></span>" . __( "Leave A Review" , 'yikes-inc-easy-mailchimp-extender' ) . "</a> <a href='%s' class='button-secondary'><span class='dashicons dashicons-upload'></span>" . __( "View Addons" , 'yikes-inc-easy-mailchimp-extender' ) . "</a> <a href='%s' class='button-secondary'><span class='dashicons dashicons-no-alt'></span>" . __( "Dismiss" , 'yikes-inc-easy-mailchimp-extender' ) . "</a> </span>", '<strong>Easy Forms for MailChimp by YIKES Inc.</strong>', $reviewurl, $addons_url, $nobugurl ) . '';
501
- }
502
- ?>
503
- <div id="review-yikes-easy-mailchimp-notice">
504
- <?php echo $review_message; ?>
505
- </div>
506
- <?php
507
- }
508
- }
509
-
510
- /*
511
- yikes_easy_mailchimp_stop_bugging_me()
512
- Remove the Review us notification when user clicks 'Dismiss'
513
- @since v3.1.1
514
- */
515
- public function yikes_easy_mailchimp_stop_bugging_me() {
516
- $nobug = "";
517
- if ( isset( $_GET['yikes_easy_mc_icons_nobug'] ) ) {
518
- $nobug = (int) esc_attr( $_GET['yikes_easy_mc_icons_nobug'] );
519
- }
520
- if ( 1 == $nobug ) {
521
- add_option( 'yikes_easy_mailchimp_review_stop_bugging_me', TRUE );
522
- }
523
- }
524
-
525
- /* End Two Week Notificaition */
526
-
527
- /* Display a warning users who are using PHP < 5.3 */
528
- public function display_php_warning() {
529
- $message = __( 'YIKES Inc. Easy Forms for MailChimp requires a minimum of PHP 5.3. The plugin will not function properly until you update. Reach out to your host provider for assistance.' , 'yikes-inc-easy-mailchimp-extender' );
530
- echo "<div class='error'> <p><span class='dashicons dashicons-no-alt' style='color:rgb(231, 98, 98)'></span> $message</p></div>";
531
- }
532
-
533
-
534
-
535
- /* TinyMCE Functions */
536
- // load our button and pass in the JS form data variable
537
- public function add_tinyMCE_buttons() {
538
- global $typenow;
539
- // only on Post Type: post and page
540
- if( ! in_array( $typenow, array( 'post', 'page' ) ) ) {
541
- return;
542
- }
543
- add_filter( 'mce_buttons', array( $this, 'yks_mc_add_tinymce_button' ) );
544
- add_filter( 'mce_external_plugins', array( $this, 'yks_mc_add_tinymce_plugin' ) );
545
- }
546
-
547
- // Add the button key for address via JS
548
- public function yks_mc_add_tinymce_button( $buttons ) {
549
- array_push( $buttons, 'yks_mc_tinymce_button_key' );
550
- // Print all buttons
551
- return $buttons;
552
- }
553
-
554
- // inlcude the js for tinymce
555
- public function yks_mc_add_tinymce_plugin( $plugin_array ) {
556
- $plugin_array['yks_mc_tinymce_button'] = plugins_url( '/js/min/yikes-inc-easy-mailchimp-tinymce-button.min.js', __FILE__ );
557
- // Print all plugin js path
558
- // var_dump( $plugin_array );
559
- return $plugin_array;
560
- }
561
-
562
- /**
563
- * Localize Script
564
- * Pass our imported list data, to the JS file
565
- * to build the drop down list in the modal
566
- */
567
- public function tinymce_yikes_easy_mc() {
568
- // check capabilities
569
- if( ! current_user_can( apply_filters( 'yikes-mailchimp-user-role-access' , 'manage_options' ) ) ) {
570
- return;
571
- }
572
- global $wpdb;
573
- $list_data = $wpdb->get_results( 'SELECT * FROM ' . $wpdb->prefix . 'yikes_easy_mc_forms', ARRAY_A );
574
- $lists = array();
575
- $i = 0;
576
- if( !empty( $list_data ) ) {
577
- // build an array to pass to our javascript
578
- foreach( $list_data as $form ) {
579
- $lists[$i] = array(
580
- 'text' => urlencode( $form['form_name'] ),
581
- 'value' => $form['id']
582
- );
583
- $i++;
584
- }
585
- } else {
586
- $lists[0] = array(
587
- 'text' => __( 'Please Import Some MailChimp Lists' , 'yikes-inc-easy-mailchimp-extender' ),
588
- 'value' => '-'
589
- );
590
- }
591
- /* Pass our form data to our JS file for use */
592
- ?>
593
- <script type="text/javascript">
594
- var forms = {
595
- 'data' : '<?php echo json_encode( $lists ); ?>'
596
- };
597
- var localized_data = {
598
- 'button_title' : '<?php _e( 'Easy Forms for MailChimp by YIKES', 'yikes-inc-easy-mailchimp-extender' ); ?>',
599
- 'popup_title' : '<?php _e( 'Easy Forms for MailChimp by YIKES', 'yikes-inc-easy-mailchimp-extender' ); ?>',
600
- 'list_id_label' : '<?php _e( 'MailChimp Opt-In Form' , 'yikes-inc-easy-mailchimp-extender' ); ?>',
601
- 'show_title_label' : '<?php _e( 'Display Form Title' , 'yikes-inc-easy-mailchimp-extender' ); ?>',
602
- 'show_description_label' : '<?php _e( 'Display Form Description' , 'yikes-inc-easy-mailchimp-extender' ); ?>',
603
- 'submit_button_text_label' : '<?php _e( 'Submit Button Text' , 'yikes-inc-easy-mailchimp-extender' ); ?>',
604
- };
605
- <?php
606
- $link = sprintf( __( 'You need to <a href="%s" title="%s">create a form</a> before you can add one to a page or post.', 'yikes-inc-easy-mailchimp-extender' ), esc_url_raw( admin_url( 'admin.php?page=yikes-inc-easy-mailchimp' ) ), __( 'Create a form', 'yikes-inc-easy-mailchimp-extender' ) );
607
- ?>
608
- var alert_translated = '<?php echo $link; ?>';
609
- </script>
610
- <?php
611
- }
612
- /* End TinyMCE Functions */
613
-
614
- /*
615
- * Redirect the user to our Welcome page
616
- * when they activate the plug in, if they haven't been redirected before
617
- */
618
- public function yikes_easy_mc_activation_redirect() {
619
- if ( get_option( 'yikes_mailchimp_activation_redirect', 'true' ) == 'true' ) {
620
- update_option( 'yikes_mailchimp_activation_redirect', 'false' );
621
- /* If the user had this plugin activated prior to today, redirect to 'Whats New' */
622
- if( get_option( 'yikes_easy_mailchimp_activation_date', strtotime( 'now' ) ) == strtotime( 'now' ) ) {
623
- wp_redirect( esc_url( admin_url( 'admin.php?page=yikes-mailchimp-welcome' ) ) );
624
- } else {
625
- /* Else redirect the user over to the 'Getting Started' tab */
626
- wp_redirect( esc_url_raw( admin_url( 'admin.php?page=yikes-mailchimp-welcome&section=whats-new' ) ) );
627
- }
628
- exit();
629
- }
630
- }
631
-
632
- /*
633
- * Fix the MailChimp icon spacing in the admin menu
634
- */
635
- public function fix_menu_icon_spacing() {
636
- ?>
637
- <style>
638
- a[href="admin.php?page=yikes-inc-easy-mailchimp"] .wp-menu-image img {
639
- padding-top: 5px !important;
640
- }
641
- </style>
642
- <?php
643
- }
644
-
645
- /**
646
- * Register the stylesheets for the admin area.
647
- *
648
- * @since 6.0.0
649
- */
650
- public function enqueue_styles() {
651
- /**
652
- * Enqueue our global dashboard styles
653
- */
654
- wp_enqueue_style( 'yikes-inc-easy-mailchimp-extender-admin', plugin_dir_url( __FILE__ ) . 'css/yikes-inc-easy-mailchimp-extender-admin.min.css', array(), $this->version, 'all' );
655
- /*
656
- * Enqueue Add-ons styles
657
- */
658
- if ( get_current_screen()->base == 'easy-forms_page_yikes-inc-easy-mailchimp-addons' ) {
659
- wp_enqueue_style( 'yikes-inc-easy-mailchimp-extender-addons-styles', plugin_dir_url( __FILE__ ) . 'css/yikes-inc-easy-mailchimp-extender-addons.min.css', array(), $this->version, 'all' );
660
- }
661
- /*
662
- * Enqueue Subscriber Profile Flags
663
- */
664
- if ( get_current_screen()->base == 'admin_page_yikes-mailchimp-view-user' ) {
665
- wp_enqueue_style( 'yikes-inc-easy-mailchimp-extender-subscriber-flags', plugin_dir_url( __FILE__ ) . 'css/flag-icon.min.css', array(), $this->version, 'all' );
666
- }
667
- }
668
- /**
669
- * Register the JavaScript for the admin area.
670
- *
671
- * @since 6.0.0
672
- */
673
- public function enqueue_scripts() {
674
-
675
- /**
676
- * Enqueue our scripts across the dashboard as needed
677
- */
678
- wp_register_script( 'yikes-inc-easy-mailchimp-extender-admin-js', plugin_dir_url( __FILE__ ) . 'js/min/yikes-inc-easy-mailchimp-extender-admin.min.js', array( 'jquery' , 'jquery-ui-sortable' ), $this->version, false );
679
- $localized_data = array(
680
- 'admin_url' => esc_url_raw( admin_url() ),
681
- 'ajax_url' => esc_url_raw( admin_url( 'admin-ajax.php' ) ),
682
- 'locating_interest_groups' => __( 'Locating Interest Groups', 'yikes-inc-easy-mailchimp-extender' ),
683
- 'search_preloader_url' => YIKES_MC_URL . 'includes/images/search-interest-group-preloader.gif',
684
- 'preloader_url' => esc_url_raw( admin_url( '/images/wpspin_light.gif' ) )
685
- );
686
- wp_localize_script( 'yikes-inc-easy-mailchimp-extender-admin-js' , 'object_data' , $localized_data );
687
- wp_enqueue_script( 'yikes-inc-easy-mailchimp-extender-admin-js' );
688
-
689
-
690
- /*
691
- * Enqueue required scripts for the form editor
692
- */
693
- if( get_current_screen()->base == 'admin_page_yikes-mailchimp-edit-form' ) {
694
- global $wp_locale;
695
- wp_enqueue_style( 'wp-color-picker' );
696
- wp_enqueue_script( 'wp-color-picker' );
697
- wp_enqueue_script( 'jquery.timepicker.js',YIKES_MC_URL . 'admin/js/jquery.timepicker.min.js' , array( 'jquery' ) , $this->version, false );
698
- wp_register_script( 'edit-form-js' , YIKES_MC_URL . 'admin/js/min/yikes-inc-easy-mailchimp-extender-edit-form.min.js' , array( 'jquery.timepicker.js', 'jquery-ui-datepicker' ) , $this->version, false );
699
- $localized_data = array(
700
- 'ajax_url' => esc_url_raw( admin_url( 'admin-ajax.php' ) ),
701
- 'no_fields_assigned' => __( 'No fields assigned to this form. Select some fields to add to this form from the right hand column.', 'yikes-inc-easy-mailchimp-extender' ),
702
- 'bulk_delete_alert' => __( 'Are you sure you want to delete all of the fields assigned to this form?', 'yikes-inc-easy-mailchimp-extender' ),
703
- 'closeText' => __( 'Done', 'yikes-inc-easy-mailchimp-extender' ),
704
- 'currentText' => __( 'Today', 'yikes-inc-easy-mailchimp-extender' ),
705
- 'monthNames' => $this->yikes_jQuery_datepicker_strip_array_indices( $wp_locale->month ),
706
- 'monthNamesShort' => $this->yikes_jQuery_datepicker_strip_array_indices( $wp_locale->month_abbrev ),
707
- 'monthStatus' => __( 'Show a different month', 'yikes-inc-easy-mailchimp-extender' ),
708
- 'dayNames' => $this->yikes_jQuery_datepicker_strip_array_indices( $wp_locale->weekday ),
709
- 'dayNamesShort' => $this->yikes_jQuery_datepicker_strip_array_indices( $wp_locale->weekday_abbrev ),
710
- 'dayNamesMin' => $this->yikes_jQuery_datepicker_strip_array_indices( $wp_locale->weekday_initial ),
711
- // set the date format to match the WP general date settings
712
- 'dateFormat' => $this->yikes_jQuery_datepicker_date_format_php_to_js( get_option( 'date_format' ) ),
713
- // get the start of week from WP general setting
714
- 'firstDay' => get_option( 'start_of_week' ),
715
- // is Right to left language? default is false
716
- 'isRTL' => $wp_locale->is_rtl(),
717
- 'start_date_exceeds_end_date_error' => __( 'Error: The start date and time cannot occur after the end date and time. Chosen date reverted to previous selection.', 'yikes-inc-easy-mailchimp-extender' ),
718
- );
719
- wp_localize_script( 'edit-form-js' , 'object' , $localized_data );
720
- wp_enqueue_script( 'edit-form-js' );
721
- }
722
-
723
- }
724
-
725
- /** Functionality **/
726
- /******************/
727
-
728
-
729
- /**
730
- * Localization functions for jQuery ui datepicker
731
- * @since 6.0.3.8
732
- */
733
- /**
734
- * Format array for the datepicker
735
- * WordPress stores the locale information in an array with a alphanumeric index, and
736
- * the datepicker wants a numerical index. This function replaces the index with a number
737
- */
738
- public function yikes_jQuery_datepicker_strip_array_indices( $ArrayToStrip ) {
739
- foreach( $ArrayToStrip as $objArrayItem) {
740
- $NewArray[] = $objArrayItem;
741
- }
742
- return( $NewArray );
743
- }
744
-
745
- /**
746
- * Convert the php date format string to a js date format
747
- */
748
- public function yikes_jQuery_datepicker_date_format_php_to_js( $sFormat ) {
749
- switch( $sFormat ) {
750
- //Predefined WP date formats
751
- case 'F j, Y':
752
- case 'j F Y':
753
- case 'm/d/Y':
754
- case 'mm/dd/yyyy':
755
- case 'MM/DD/YYYY':
756
- default:
757
- return( 'mm/dd/yy' );
758
- break;
759
- case 'Y/m/d':
760
- case 'Y-m-d':
761
- return( 'yy/mm/dd' );
762
- break;
763
- case 'd/m/Y':
764
- case 'dd/mm/yyyy':
765
- case 'DD/MM/YYYY':
766
- return( 'dd/mm/yyyy' );
767
- break;
768
- }
769
- }
770
-
771
- /**
772
- * Convert the php date format string to a js date format
773
- */
774
- public function yikes_jQuery_datepicker_date_format( $site_option ) {
775
- switch( $site_option ) {
776
- //Predefined WP date formats
777
- default:
778
- case 'F j, Y':
779
- case 'm/d/Y':
780
- return( 'm/d/Y' );
781
- break;
782
- case 'Y-m-d':
783
- return( 'Y/m/d' );
784
- break;
785
- case 'd/m/Y':
786
- return( 'd/m/Y' );
787
- break;
788
- }
789
- }
790
- /**
791
- * end Localization functions for jQuery ui datepicker
792
- */
793
-
794
- /**
795
- * Register our admin pages
796
- * used to display data back to the user
797
- **/
798
- public function register_admin_pages() {
799
-
800
- /* Top Level Menu 'Easy MailChimp' */
801
- add_menu_page(
802
- __( 'Easy Forms' , 'yikes-inc-easy-mailchimp-extender' ),
803
- 'Easy Forms',
804
- apply_filters( 'yikes-mailchimp-user-role-access' , 'manage_options' ),
805
- 'yikes-inc-easy-mailchimp',
806
- '', // no callback,
807
- YIKES_MC_URL . 'includes/images/MailChimp_Assets/Freddie_wink_icon.png'
808
- );
809
-
810
- // Sub Pages
811
- /*************/
812
-
813
- /* YIKES Inc. Easy MailChimp Settings */
814
-
815
- /* YIKES Inc. Easy MailChimp Manage Forms */
816
- add_submenu_page(
817
- 'yikes-inc-easy-mailchimp',
818
- __( 'Opt-in Forms' , 'yikes-inc-easy-mailchimp-extender' ),
819
- __( 'Opt-in Forms' , 'yikes-inc-easy-mailchimp-extender' ),
820
- apply_filters( 'yikes-mailchimp-user-role-access' , 'manage_options' ),
821
- 'yikes-inc-easy-mailchimp',
822
- array( $this, 'generateManageFormsPage' )
823
- );
824
-
825
- /* YIKES Inc. Easy MailChimp Manage Lists */
826
- add_submenu_page(
827
- 'yikes-inc-easy-mailchimp',
828
- __( 'Mailing Lists' , 'yikes-inc-easy-mailchimp-extender' ),
829
- __( 'Mailing Lists' , 'yikes-inc-easy-mailchimp-extender' ),
830
- apply_filters( 'yikes-mailchimp-user-role-access' , 'manage_options' ),
831
- 'yikes-inc-easy-mailchimp-lists',
832
- array( $this, 'generateManageListsPage' )
833
- );
834
-
835
-
836
- /*
837
- * Custom action hook to hook into to add additional
838
- * menu items from extensions
839
- */
840
- do_action( 'yikes-mailchimp-menu' );
841
-
842
-
843
- /* YIKES Inc. Easy MailChimp Account Overview */
844
- if ( get_option('yikes-mc-api-validation') == 'valid_api_key' ) {
845
- /* YIKES Inc. Easy MailChimp Settings */
846
- add_submenu_page(
847
- 'yikes-inc-easy-mailchimp',
848
- __( 'Account' , 'yikes-inc-easy-mailchimp-extender' ),
849
- __( 'Account' , 'yikes-inc-easy-mailchimp-extender' ),
850
- apply_filters( 'yikes-mailchimp-user-role-access' , 'manage_options' ),
851
- 'yikes-inc-easy-mailchimp-account-overview',
852
- array( $this, 'generateAccountDetailsPage' )
853
- );
854
- }
855
-
856
-
857
- /* YIKES Inc. Easy MailChimp Settings */
858
- add_submenu_page(
859
- 'yikes-inc-easy-mailchimp',
860
- __( 'Settings.' , 'yikes-inc-easy-mailchimp-extender' ),
861
- __( 'Settings' , 'yikes-inc-easy-mailchimp-extender' ),
862
- apply_filters( 'yikes-mailchimp-user-role-access' , 'manage_options' ),
863
- 'yikes-inc-easy-mailchimp-settings',
864
- array( $this, 'generatePageOptions' )
865
- );
866
-
867
- /* Support Page */
868
- add_submenu_page(
869
- 'yikes-inc-easy-mailchimp',
870
- __( 'Support' , 'yikes-inc-easy-mailchimp-extender' ),
871
- __( 'Support' , 'yikes-inc-easy-mailchimp-extender' ),
872
- apply_filters( 'yikes-mailchimp-user-role-access' , 'manage_options' ),
873
- 'yikes-inc-easy-mailchimp-support',
874
- array( $this, 'generateSupportPage' )
875
- );
876
-
877
- /* Add-Ons Page */
878
- add_submenu_page(
879
- 'yikes-inc-easy-mailchimp',
880
- __( 'Add-Ons' , 'yikes-inc-easy-mailchimp-extender' ),
881
- __( 'Add-Ons' , 'yikes-inc-easy-mailchimp-extender' ),
882
- apply_filters( 'yikes-mailchimp-user-role-access' , 'manage_options' ),
883
- 'yikes-inc-easy-mailchimp-addons',
884
- array( $this , 'generateAddOnsPage' )
885
- );
886
-
887
- /** Hidden Pages **/
888
-
889
- /* Add Hidden Edit Form Page */
890
- add_submenu_page(
891
- 'options.php',
892
- __( 'Edit Form' , 'yikes-inc-easy-mailchimp-extender' ),
893
- __( 'Edit Form' , 'yikes-inc-easy-mailchimp-extender' ),
894
- apply_filters( 'yikes-mailchimp-user-role-access' , 'manage_options' ),
895
- 'yikes-mailchimp-edit-form',
896
- array( $this, 'generateEditFormPage' )
897
- );
898
-
899
- /* Add Hidden Migrate Options Page */
900
- add_submenu_page(
901
- 'options-writing.php',
902
- __( 'YIKES Inc. Easy Forms for MailChimp Upgrade Options Structure' , 'yikes-inc-easy-mailchimp-extender' ),
903
- 'YIKES Inc. Easy Forms for MailChimp Upgrade Options Structure',
904
- 'manage_options',
905
- 'yikes-inc-easy-mailchimp-update' ,
906
- array( $this , 'migrate_old_yks_mc_options' )
907
- );
908
-
909
- /* Add Hidden Welcome Page */
910
- add_submenu_page(
911
- 'options.php',
912
- __( 'Welcome' , 'yikes-inc-easy-mailchimp-extender' ),
913
- __( 'Welcome' , 'yikes-inc-easy-mailchimp-extender' ),
914
- apply_filters( 'yikes-mailchimp-user-role-access' , 'manage_options' ),
915
- 'yikes-mailchimp-welcome',
916
- array( $this, 'generateWelcomePage' )
917
- );
918
-
919
- /* Add Hidden 'View List' Page */
920
- add_submenu_page(
921
- 'options.php',
922
- __( 'View List' , 'yikes-inc-easy-mailchimp-extender' ),
923
- __( 'View List' , 'yikes-inc-easy-mailchimp-extender' ),
924
- apply_filters( 'yikes-mailchimp-user-role-access' , 'manage_options' ),
925
- 'yikes-mailchimp-view-list',
926
- array( $this, 'generateViewListPage' )
927
- );
928
-
929
- /* Add Hidden View User Page */
930
- add_submenu_page(
931
- 'options.php',
932
- __( 'View User' , 'yikes-inc-easy-mailchimp-extender' ),
933
- __( 'View User' , 'yikes-inc-easy-mailchimp-extender' ),
934
- apply_filters( 'yikes-mailchimp-user-role-access' , 'manage_options' ),
935
- 'yikes-mailchimp-view-user',
936
- array( $this, 'generateViewUserPage' )
937
- );
938
-
939
- }
940
-
941
- /*
942
- * Redirect a user to an external page
943
- * when they click 'Go Pro' in the admin menu
944
- * to do: populate with sales URL
945
- */
946
- public function generateAddOnsPage() {
947
- require_once YIKES_MC_PATH . 'admin/partials/menu/add-ons.php'; // include our add-ons page
948
- }
949
-
950
- /**
951
- * Generate YIKES Inc. Easy MailChimp Manage Forms Page
952
- *
953
- * @since 1.0.0
954
- */
955
- function generateManageFormsPage() {
956
- require_once YIKES_MC_PATH . 'admin/partials/menu/manage-forms.php'; // include our manage forms page
957
- }
958
-
959
- /**
960
- * Generate YIKES Inc. Easy MailChimp Manage Lists Page
961
- *
962
- * @since 1.0.0
963
- */
964
- function generateManageListsPage() {
965
- require_once YIKES_MC_PATH . 'admin/partials/menu/manage-lists.php'; // include our lists page
966
- }
967
-
968
- /**
969
- * Generate YIKES Inc. Easy MailChimp Account Details Page
970
- *
971
- * @since 1.0.0
972
- */
973
- function generateAccountDetailsPage() {
974
- require_once YIKES_MC_PATH . 'admin/partials/menu/account-details.php'; // include our account details page
975
- }
976
-
977
- /**
978
- * Generate YIKES Inc. Easy MailChimp Support Page
979
- *
980
- * @since 1.0.0
981
- */
982
- function generateSupportPage() {
983
- require_once YIKES_MC_PATH . 'admin/partials/menu/support.php'; // include our options page
984
- }
985
-
986
- /**
987
- * Generate YIKES Inc. Easy MailChimp Edit Form Page
988
- *
989
- * @since 1.0.0
990
- */
991
- function generateEditFormPage() {
992
- require_once YIKES_MC_PATH . 'admin/partials/edit-form.php'; // include our options page
993
- }
994
-
995
- /**
996
- * Generate YIKES Inc. Easy MailChimp Welcome Page
997
- *
998
- * @since 1.0.0
999
- */
1000
- function generateWelcomePage() {
1001
- require_once YIKES_MC_PATH . 'admin/partials/welcome-page/welcome.php'; // include our options page
1002
- }
1003
-
1004
- /**
1005
- * Generate YIKES Inc. Easy MailChimp View List Page
1006
- *
1007
- * @since 1.0.0
1008
- */
1009
- function generateViewListPage() {
1010
- require_once YIKES_MC_PATH . 'admin/partials/view-list.php'; // include our options page
1011
- }
1012
-
1013
- /**
1014
- * Generate YIKES Inc. Easy MailChimp View User Page
1015
- *
1016
- * @since 1.0.0
1017
- */
1018
- function generateViewUserPage() {
1019
- require_once YIKES_MC_PATH . 'admin/partials/view-user.php'; // include our options page
1020
- }
1021
-
1022
- /**
1023
- * Register our plugin settings, and display them on our settings page
1024
- *
1025
- * @since v.5.4
1026
- **/
1027
- function yikes_easy_mc_settings_init() {
1028
-
1029
- /* Register General Settings Section */
1030
-
1031
- register_setting( 'yikes_inc_easy_mc_general_settings_page', 'yikes-mc-api-key', array( $this , 'yikes_mc_validate_api_key' ) );
1032
-
1033
- add_settings_section(
1034
- 'yikes_easy_mc_settings_general_section_callback',
1035
- '',
1036
- '',
1037
- 'yikes_inc_easy_mc_general_settings_page'
1038
- );
1039
-
1040
- /* Register Visual Representation of Connection */
1041
- add_settings_field(
1042
- 'connection',
1043
- __( 'API Connection', 'yikes-inc-easy-mailchimp-extender' ),
1044
- 'yikes_inc_easy_mc_visual_representation_of_connection_callback', // callback + validation inside of admin/partials/menu/options.php
1045
- 'yikes_inc_easy_mc_general_settings_page',
1046
- 'yikes_easy_mc_settings_general_section_callback'
1047
- );
1048
-
1049
- /* Register Check Box Setting */
1050
- add_settings_field(
1051
- 'yikes-mc-api-key',
1052
- __( 'MailChimp API Key', 'yikes-inc-easy-mailchimp-extender' ),
1053
- 'yikes_inc_easy_mc_api_key_field_callback', // callback + validation inside of admin/partials/menu/options.php
1054
- 'yikes_inc_easy_mc_general_settings_page',
1055
- 'yikes_easy_mc_settings_general_section_callback'
1056
- );
1057
-
1058
- /* End General Settings */
1059
-
1060
- /* Checkbox Settings */
1061
- register_setting( 'yikes_inc_easy_mc_checkbox_settings_page', 'optin-checkbox-init' );
1062
-
1063
- /* Register General Settings Section */
1064
- add_settings_section(
1065
- 'yikes_inc_easy_mc_checkbox_settings',
1066
- '',
1067
- '',
1068
- 'yikes_inc_easy_mc_checkbox_settings_page'
1069
- );
1070
-
1071
- add_settings_field(
1072
- 'optin-checkbox-init',
1073
- __( 'Select Checkboxes to Generate', 'yikes-inc-easy-mailchimp-extender' ),
1074
- '', // callback + validation inside of admin/partials/menu/options.php
1075
- 'yikes_inc_easy_mc_checkbox_settings'
1076
- );
1077
- /* End Checkbox Settings */
1078
-
1079
- /* reCAPTCHA Settings */
1080
-
1081
- register_setting( 'yikes_inc_easy_mc_recaptcha_settings_page' , 'yikes-mc-recaptcha-status' );
1082
- register_setting( 'yikes_inc_easy_mc_recaptcha_settings_page' , 'yikes-mc-recaptcha-site-key' );
1083
- register_setting( 'yikes_inc_easy_mc_recaptcha_settings_page' , 'yikes-mc-recaptcha-secret-key' );
1084
-
1085
- /* Register reCAPTCHA Settings Section */
1086
- add_settings_section(
1087
- 'yikes_easy_mc_settings_recpatcha_section',
1088
- '',
1089
- '',
1090
- 'yikes_inc_easy_mc_recaptcha_settings_page'
1091
- );
1092
-
1093
- add_settings_field(
1094
- 'yikes-mc-recaptcha-site-key',
1095
- __( 'Enter reCAPTCHA Site Key', 'yikes-inc-easy-mailchimp-extender' ),
1096
- '', // callback + validation inside of admin/partials/menu/options.php
1097
- 'yikes_easy_mc_settings_recpatcha_section'
1098
- );
1099
-
1100
- add_settings_field(
1101
- 'yikes-mc-recaptcha-secret-key',
1102
- __( 'Enter reCAPTCHA Secret Key', 'yikes-inc-easy-mailchimp-extender' ),
1103
- '', // callback + validation inside of admin/partials/menu/options.php
1104
- 'yikes_easy_mc_settings_recpatcha_section'
1105
- );
1106
-
1107
- add_settings_field(
1108
- 'yikes-mc-recaptcha-status',
1109
- __( 'Enable ReCaptcha', 'yikes-inc-easy-mailchimp-extender' ),
1110
- '', // callback + validation inside of admin/partials/menu/options.php
1111
- 'yikes_easy_mc_settings_recpatcha_section'
1112
- );
1113
-
1114
- /* End reCAPTCHA Settings */
1115
-
1116
- /* Debug Settings */
1117
- register_setting( 'yikes_inc_easy_mc_debug_settings_page' , 'yikes-mailchimp-debug-status' );
1118
-
1119
- /* Register Debug Settings Section */
1120
- add_settings_section(
1121
- 'yikes_easy_mc_settings_debug_section',
1122
- '',
1123
- '',
1124
- 'yikes_inc_easy_mc_debug_settings_page'
1125
- );
1126
-
1127
- add_settings_field(
1128
- 'yikes-mailchimp-debug-status',
1129
- __( 'Enable Debugging', 'yikes-inc-easy-mailchimp-extender' ),
1130
- '', // callback + validation inside of admin/partials/menu/options.php
1131
- 'yikes_easy_mc_settings_debug_section'
1132
- );
1133
-
1134
- /* Custom Action Hook For Addon Settings */
1135
- // custom action hook to allow our add-ons to take
1136
- // advantage of our base settings
1137
- do_action( 'yikes-mailchimp-settings-field' );
1138
-
1139
- }
1140
-
1141
- /**
1142
- * Options Sanitization & Validation
1143
- * @since complete re-write
1144
- **/
1145
- function yikes_mc_validate_api_key( $input ) {
1146
- if( $input == '' ) {
1147
- return;
1148
- }
1149
- $api_key = trim( $input );
1150
- $dash_position = strpos( trim( $input ), '-' );
1151
- if( $dash_position !== false ) {
1152
- $api_endpoint = 'https://' . substr( $api_key, $dash_position + 1 ) . '.api.mailchimp.com/2.0/helper/ping.json';
1153
- } else {
1154
- update_option( 'yikes-mc-api-invalid-key-response', __( 'Your API key appears to be invalid.', 'yikes-inc-easy-mailchimp-extender' ) );
1155
- update_option( 'yikes-mc-api-validation' , 'invalid_api_key' );
1156
- return $api_key;
1157
- }
1158
- $request_args = array(
1159
- 'body' => array(
1160
- 'apikey' => $api_key,
1161
- ),
1162
- 'timeout' => 10,
1163
- 'sslverify' => apply_filters( 'yikes-mailchimp-sslverify', true ),
1164
- );
1165
- $api_key_response = wp_remote_post( $api_endpoint, $request_args );
1166
- if( ! is_wp_error( $api_key_response ) ) {
1167
- $body = json_decode( wp_remote_retrieve_body( $api_key_response ), true );
1168
- if( isset( $body['msg'] ) && $body['msg'] == "Everything's Chimpy!" ) {
1169
- update_option( 'yikes-mc-api-validation' , 'valid_api_key' );
1170
- }
1171
- } else {
1172
- require_once YIKES_MC_PATH . 'includes/error_log/class-yikes-inc-easy-mailchimp-error-logging.php';
1173
- $error_logging = new Yikes_Inc_Easy_Mailchimp_Error_Logging();
1174
- $error_logging->yikes_easy_mailchimp_write_to_error_log( $api_key_response->get_error_message() , __( "Connecting to MailChimp" , 'yikes-inc-easy-mailchimp-extender' ) , __( "Settings Page/General Settings" , 'yikes-inc-easy-mailchimp-extender' ) );
1175
- update_option( 'yikes-mc-api-invalid-key-response' , $api_key_response->get_error_message() );
1176
- update_option( 'yikes-mc-api-validation' , 'invalid_api_key' );
1177
- }
1178
- // returned the api key
1179
- return $api_key;
1180
- }
1181
-
1182
- /**
1183
- * Generate YIKES Inc. Easy Forms for MailChimp Options Page
1184
- *
1185
- * @since 1.0.0
1186
- */
1187
- function generatePageOptions() {
1188
- require_once YIKES_MC_PATH . 'admin/partials/menu/options.php'; // include our options page
1189
- }
1190
-
1191
- /**
1192
- * Check if users API key is valid, if not
1193
- * this function will apply a disabled attribute
1194
- * to form fields. (input, dropdowns, buttons etc.)
1195
- * @since v5.5 re-write
1196
- **/
1197
- public function is_user_mc_api_valid_form( $echo=true ) {
1198
- if( $echo == true ) {
1199
- if( get_option( 'yikes-mc-api-validation' , 'invalid_api_key' ) == 'invalid_api_key' ) {
1200
- echo 'disabled="disabled"';
1201
- }
1202
- } else {
1203
- if( get_option( 'yikes-mc-api-validation' , 'invalid_api_key' ) == 'invalid_api_key' ) {
1204
- return false;
1205
- } else {
1206
- return true;
1207
- }
1208
- }
1209
- }
1210
-
1211
- /**
1212
- * Check for existing plugin options
1213
- * if they exist, we need to migrate our options to
1214
- * the correct WordPress options API (old plugin stored options wierdly)
1215
- *
1216
- * @since 1.0.0
1217
- * @param string $yikes_inc_easy_mailchimp_extender The name of this plugin.
1218
- * @param string $version The version of this plugin.
1219
- */
1220
- public function check_for_old_yks_mc_options() {
1221
- $old_plugin_options = get_option( 'ykseme_storage' );
1222
- // only perform options migrations if the site is not a multi-site setup
1223
- if ( !is_multisite() ) {
1224
- if( apply_filters( 'yikes_mc_old_options_filter' , $old_plugin_options ) ) {
1225
- // display a notice to the user that they should 'migrate'
1226
- // from the old plugin settings to the new ones
1227
- add_action( 'admin_notices', array( $this , 'display_options_migrate_notice' ) , 11 );
1228
- }
1229
- }
1230
- }
1231
-
1232
- /**
1233
- * Migrate our old options , to the new options API
1234
- * moving from 5.5 and beyond..
1235
- * @since
1236
- */
1237
- public function migrate_old_yks_mc_options() {
1238
- // include our migrate options helper file
1239
- include_once YIKES_MC_PATH . 'admin/partials/upgrade-helpers/upgrade-migrate-options.php';
1240
- }
1241
-
1242
- /**
1243
- Admin Notices
1244
- - Notifications displayed at the top of admin pages, back to the user
1245
- **/
1246
-
1247
- /**
1248
- * Check for existing plugin options
1249
- * if they exist, we need to migrate our options to
1250
- * the correct WordPress options API (old plugin stored options wierdly)
1251
- *
1252
- * @since 1.0.0
1253
- * @param string $yikes_inc_easy_mailchimp_extender The name of this plugin.
1254
- * @param string $version The version of this plugin.
1255
- */
1256
- public function display_options_migrate_notice() {
1257
-
1258
- // Confirm that the necessary forms table in the database exists, else bail
1259
- global $wpdb;
1260
- if( $wpdb->get_var("show tables like '" . $wpdb->prefix . "yikes_easy_mc_forms'") != $wpdb->prefix . "yikes_easy_mc_forms" ) {
1261
- return;
1262
- }
1263
-
1264
- if( isset( $_GET['yikes-mc-options-migration-dismissed'] ) && $_GET['yikes-mc-options-migration-dismissed'] == 'true' ) {
1265
- // Delete the options, start a-new! (this will disable the migration notice altogether)
1266
- delete_option( 'widget_yikes_mc_widget' );
1267
- delete_option( 'api_validation' );
1268
- delete_option( 'ykseme_storage' );
1269
- delete_option( 'yikes-mc-lists' );
1270
- ?>
1271
- <div class="yikes-easy-mc-updated migrate-options-notice">
1272
- <p><?php printf( __( "The previously stored options for %s have been cleared from the database. You should update the plugin options on the <a href='%s' title='Settings Page'>settings page</a> before continuing. You should also update the shortcodes used to generate your forms, and any widgets you may have previously set-up.", 'yikes-inc-easy-mailchimp-extender' ), '<strong>YIKES Inc. Easy Forms for MailChimp</strong>', admin_url( 'admin.php?page=yikes-inc-easy-mailchimp-settings' ) ); ?></p>
1273
- </div>
1274
- <?php
1275
- } else {
1276
- ?>
1277
- <div class="yikes-easy-mc-updated migrate-options-notice">
1278
- <p><?php printf( __( "It looks like you're upgrading from a previous version of %s.", 'yikes-inc-easy-mailchimp-extender' ), '<strong>YIKES Inc. Easy Forms for MailChimp</strong>' ); ?> <?php printf( __( "In the newest version of %s, the options data structure has changed. We've also moved the mailing lists into its own database table to allow for some higher level customization. Now you can easily create multiple forms and assign them to the same mailing list." , 'yikes-inc-easy-mailchimp-extender' ), '<strong>YIKES Inc. Easy Forms for MailChimp</strong>' ); ?></p>
1279
- <p><?php _e( "Before you continue, it's strongly recommended you the perform the migration to ensure the plugin continues to function properly.", 'yikes-inc-easy-mailchimp-extender' ); ?></p>
1280
- <p><em><?php _e( "It's also strongly recommended that you take a backup of your database.", 'yikes-inc-easy-mailchimp-extender' ); ?></em></p>
1281
- <section id="migration-buttons">
1282
- <!-- migrate button -->
1283
- <form>
1284
- <input type="hidden" name="yikes-mc-update-option-structure" value="yikes-mc-update-option-structure" />
1285
- <a href="<?php echo wp_nonce_url( esc_url_raw( admin_url( 'admin.php?page=yikes-inc-easy-mailchimp-update' ) ), 'yikes-mc-migrate-options' , 'migrate_options_nonce' ); ?>" class="button-secondary"><?php _e( 'Perform Migration' , 'yikes-inc-easy-mailchimp-extender' ); ?></a>
1286
- </form>
1287
- <!-- dismiss button -->
1288
- <form>
1289
- <a href="<?php echo wp_nonce_url( esc_url_raw( admin_url() ), 'yikes-mc-dismiss-migration' , 'dismiss_migration_nonce' ); ?>" class="button-secondary"><?php _e( 'Dismiss Notice' , 'yikes-inc-easy-mailchimp-extender' ); ?></a>
1290
- </form>
1291
- </section>
1292
-
1293
- </div>
1294
- <?php
1295
- }
1296
- }
1297
-
1298
- /*
1299
- * Search through multi dimensional array
1300
- * and return the index ( used to find the list name assigned to a form )
1301
- * - http://stackoverflow.com/questions/6661530/php-multi-dimensional-array-search
1302
- */
1303
- function findMCListID($id, $array) {
1304
- foreach ($array as $key => $val) {
1305
- if ($val['id'] === $id) {
1306
- return $key;
1307
- }
1308
- }
1309
- return null;
1310
- } // end
1311
-
1312
- /* Ajax Migrate Options */
1313
- function migrate_archived_options() {
1314
- // all options prefixed with 'yikes-mc-'
1315
- $option_name = 'yikes-mc-'.$_POST['option_name'];
1316
- $option_value = $_POST['option_value'];
1317
- if( json_decode( $option_value ) ) {
1318
- // decode our lists() array, and store it
1319
- $opt_value = json_decode( $option_value, true );
1320
- } else {
1321
- $opt_value = $option_value;
1322
- }
1323
- update_option( $option_name, $opt_value );
1324
- wp_die(); // this is required to terminate immediately and return a proper response
1325
- exit;
1326
- }
1327
-
1328
- /* Ajax Migrate Forms */
1329
- function migrate_previously_setup_forms() {
1330
- $option_name = $_POST['option_name'];
1331
- $done = $_POST['done_import'];
1332
- // Create some starter forms for the user
1333
- // based on previously imported lists (to our old version)
1334
- if( $option_name == 'yikes-mc-lists' ) {
1335
- global $wpdb;
1336
- $option_value = $_POST['option_value'];
1337
- $new_options = json_decode( stripslashes_deep( $option_value ) , true );
1338
-
1339
- $list_id = $new_options['id'];
1340
- $form_name = $new_options['name'];
1341
- $fields = $new_options['fields']; // our fields array
1342
-
1343
- $custom_styles = isset( $new_options['custom_styles'] ) ? json_encode( $new_options['custom_styles'] ) : '0'; // store as an array with all of our styles
1344
- $custom_template = isset( $new_options['custom_template'] ) ? json_encode( $new_options['custom_template'] ) : '0'; // store template data as an array ( active , template used )
1345
- $send_welcome_email = isset( $new_options['yks_mailchimp_send_welcome_'.$list_id] ) ? '0' : '1';
1346
- $redirect_user_on_submit = isset( $new_options['yks_mailchimp_redirect_'.$list_id] ) ? '1' : '0';
1347
- $redirect_page = isset( $new_options['page_id_'.$list_id] ) ? $new_options['page_id_'.$list_id] : '';
1348
-
1349
- /* Insert Forms Function */
1350
- $wpdb->insert(
1351
- $wpdb->prefix . 'yikes_easy_mc_forms',
1352
- array(
1353
- 'list_id' => $list_id,
1354
- 'form_name' => $form_name,
1355
- 'form_description' => '',
1356
- 'fields' => json_encode( $fields ),
1357
- 'custom_styles' => $custom_styles,
1358
- 'custom_template' => $custom_template,
1359
- 'send_welcome_email' => $send_welcome_email,
1360
- 'redirect_user_on_submit' => $redirect_user_on_submit,
1361
- 'redirect_page' => $redirect_page,
1362
- 'submission_settings' => '',
1363
- 'optin_settings' => '',
1364
- 'error_messages' => '',
1365
- 'custom_notifications' => '',
1366
- 'impressions' => '0',
1367
- 'submissions' => '0',
1368
- 'custom_fields' => '',
1369
- )
1370
- );
1371
- }
1372
- if( $done == 'done' ) {
1373
- wp_send_json( array( 'form_name' => $form_name, 'completed_import' => true ) );
1374
- } else {
1375
- wp_send_json( array( 'form_name' => $form_name, 'completed_import' => false ) );
1376
- }
1377
- wp_die();
1378
- exit;
1379
- }
1380
-
1381
- /*
1382
- * generate_options_pages_sidebar_menu();
1383
- * Render our sidebar menu on all of the setings pages (general, form, checkbox, recaptcha, popup, debug etc. )
1384
- * @since v5.6 - complete re-write
1385
- */
1386
- public function generate_options_pages_sidebar_menu() {
1387
- if( isset( $_REQUEST['section'] ) ) {
1388
- $selected = $_REQUEST['section'];
1389
- }
1390
- $installed_addons = get_option( 'yikes-easy-mc-active-addons' , array() );
1391
- // sort our addons array alphabetically so they appear in similar orders across all sites
1392
- asort( $installed_addons );
1393
- ?>
1394
- <h3><span><?php _e( 'Additional Settings' , 'yikes-inc-easy-mailchimp-extender' ); ?></span></h3>
1395
- <div class="inside">
1396
- <ul id="settings-nav">
1397
- <li><?php if( isset( $_REQUEST['section'] ) && $_REQUEST['section'] == 'general-settings' || !isset( $_REQUEST['section'] ) ) { ?><div class="option-menu-selected-arrow"></div><?php } ?><a href="<?php echo esc_url_raw( add_query_arg( array( 'section' => 'general-settings' ) , admin_url( 'admin.php?page=yikes-inc-easy-mailchimp-settings&section=general-settings' ) ) ); ?>"><?php _e( 'General Settings' , 'yikes-inc-easy-mailchimp-extender' ); ?></a></li>
1398
- <li><?php if( isset( $_REQUEST['section'] ) && $_REQUEST['section'] == 'integration-settings' ) { ?><div class="option-menu-selected-arrow"></div><?php } ?><a href="<?php echo esc_url_raw( add_query_arg( array( 'section' => 'integration-settings' ) , admin_url( 'admin.php?page=yikes-inc-easy-mailchimp-settings&section=integration-settings' ) ) ); ?>"><?php _e( 'Integration Settings' , 'yikes-inc-easy-mailchimp-extender' ); ?></a></li>
1399
- <li><?php if( isset( $_REQUEST['section'] ) && $_REQUEST['section'] == 'recaptcha-settings' ) { ?><div class="option-menu-selected-arrow"></div><?php } ?><a href="<?php echo esc_url_raw( add_query_arg( array( 'section' => 'recaptcha-settings' ) , admin_url( 'admin.php?page=yikes-inc-easy-mailchimp-settings&section=recaptcha-settings' ) ) ); ?>"><?php _e( 'ReCaptcha Settings' , 'yikes-inc-easy-mailchimp-extender' ); ?></a></li>
1400
- <li><?php if( isset( $_REQUEST['section'] ) && $_REQUEST['section'] == 'api-cache-settings' ) { ?><div class="option-menu-selected-arrow"></div><?php } ?><a href="<?php echo esc_url_raw( add_query_arg( array( 'section' => 'api-cache-settings' ) , admin_url( 'admin.php?page=yikes-inc-easy-mailchimp-settings&section=api-cache-settings' ) ) ); ?>"><?php _e( 'API Cache Settings' , 'yikes-inc-easy-mailchimp-extender' ); ?></a></li>
1401
- <li><?php if( isset( $_REQUEST['section'] ) && $_REQUEST['section'] == 'debug-settings' ) { ?><div class="option-menu-selected-arrow"></div><?php } ?><a href="<?php echo esc_url_raw( add_query_arg( array( 'section' => 'debug-settings' ) , admin_url( 'admin.php?page=yikes-inc-easy-mailchimp-settings&section=debug-settings' ) ) ); ?>"><?php _e( 'Debug Settings' , 'yikes-inc-easy-mailchimp-extender' ); ?></a></li>
1402
- <li><?php if( isset( $_REQUEST['section'] ) && $_REQUEST['section'] == 'import-export-forms' ) { ?><div class="option-menu-selected-arrow"></div><?php } ?><a href="<?php echo esc_url_raw( add_query_arg( array( 'section' => 'import-export-forms' ) , admin_url( 'admin.php?page=yikes-inc-easy-mailchimp-settings&section=import-export-forms' ) ) ); ?>"><?php _e( 'Import/Export' , 'yikes-inc-easy-mailchimp-extender' ); ?></a></li>
1403
- </ul>
1404
- <?php
1405
- // create our add-on settings pages
1406
- if( !empty( $installed_addons ) ) {
1407
- ?>
1408
- <hr class="add-on-settings-divider" />
1409
- <strong><?php _e( 'Addon Settings' , 'yikes-inc-easy-mailchimp-extender' ); ?></strong>
1410
- <ul id="addon-settings-nav">
1411
- <?php
1412
- foreach( $installed_addons as $addon_name ) {
1413
- ?>
1414
- <li>
1415
- <?php if( isset( $_REQUEST['section'] ) && $_REQUEST['section'] == $addon_name ) { ?><div class="option-menu-selected-arrow"></div><?php } ?><a href="<?php echo esc_url_raw( add_query_arg( array( 'section' => $addon_name, 'addon' => 'true' ) , admin_url( 'admin.php?page=yikes-inc-easy-mailchimp-settings&section='.$addon_name ) ) ); ?>"><?php echo ucwords( str_replace( '-' , ' ' , $addon_name ) ); ?></a></li>
1416
- <?php
1417
- }
1418
- ?>
1419
- </ul>
1420
- <?php
1421
- }
1422
- ?>
1423
- </div> <!-- .inside -->
1424
- <?php
1425
- }
1426
-
1427
- /*
1428
- * generate_manage_forms_sidebar();
1429
- * Render our sidebar menu on all of the setings pages (general, form, checkbox, recaptcha, popup, debug etc. )
1430
- * @since v5.6 - complete re-write
1431
- */
1432
- public function generate_manage_forms_sidebar( $lists ) {
1433
- // create a custom URL to allow for creating fields
1434
- $url = esc_url_raw(
1435
- add_query_arg(
1436
- array(
1437
- 'action' => 'yikes-easy-mc-create-form',
1438
- 'nonce' => wp_create_nonce( 'create_mailchimp_form' )
1439
- )
1440
- )
1441
- );
1442
- ?>
1443
- <h3><?php _e( 'Create a New Signup Form' , 'yikes-inc-easy-mailchimp-extender' ); ?></h3>
1444
-
1445
- <div class="inside">
1446
-
1447
- <p class="description"><?php _e( "Give your form a name, select a MailChimp list to assign users to, then click 'Create'.", 'yikes-inc-easy-mailchimp-extender' ); ?></p>
1448
-
1449
- <form id="import-list-to-site" method="POST" action="<?php echo $url; ?>">
1450
- <input type="hidden" name="import-list-to-site" value="1" />
1451
- <!-- Name your new form -->
1452
- <label for="form-name"><strong><?php _e( 'Form Name' , 'yikes-inc-easy-mailchimp-extender' ); ?></strong>
1453
- <input type="text" class="widefat input-field" placeholder="<?php _e( 'Form Name' , 'yikes-inc-easy-mailchimp-extender' ); ?>" name="form-name" id="form-name" <?php $this->is_user_mc_api_valid_form( true ); ?> required>
1454
- </label>
1455
- <!-- Name your new form -->
1456
- <label for="form-description"><strong><?php _e( 'Form Description' , 'yikes-inc-easy-mailchimp-extender' ); ?></strong>
1457
- <textarea class="widefat input-field form-description" placeholder="<?php _e( 'Form Description' , 'yikes-inc-easy-mailchimp-extender' ); ?>" name="form-description" id="form-description" <?php $this->is_user_mc_api_valid_form( true ); ?>></textarea>
1458
- </label>
1459
- <!-- Associate this form with a list! -->
1460
- <label for="associated-list"><strong><?php _e( 'Associated List' , 'yikes-inc-easy-mailchimp-extender' ); ?></strong>
1461
- <select name="associated-list" id="associated-list" class=" input-field" <?php $this->is_user_mc_api_valid_form( true ); if( isset( $lists ) && empty( $lists ) ) { echo 'disabled="disabled"'; } ?>>
1462
- <?php
1463
- if( isset( $lists ) && !empty( $lists ) ) {
1464
- foreach( $lists as $mailing_list ) {
1465
- ?>
1466
- <option value="<?php echo $mailing_list['id']; ?>"><?php echo stripslashes( $mailing_list['name'] ) . ' (' . $mailing_list['stats']['member_count'] . ') '; ?></option>
1467
- <?php
1468
- }
1469
- } else {
1470
- if( get_option( 'yikes-mc-api-validation' , 'invalid_api_key' ) == 'invalid_api_key' ) {
1471
- ?>
1472
- <option><?php echo __( "Please enter a valid API key." , 'yikes-inc-easy-mailchimp-extender' ); ?></option>
1473
- <?php
1474
- } else {
1475
- ?>
1476
- <option><?php echo __( "No lists were found on the account." , 'yikes-inc-easy-mailchimp-extender' ); ?></option>
1477
- <?php
1478
-
1479
- }
1480
- }
1481
- ?>
1482
- </select>
1483
- <?php
1484
- if( isset( $lists ) && empty( $lists ) ) {
1485
- if( get_option( 'yikes-mc-api-validation' , 'invalid_api_key' ) != 'invalid_api_key' ) {
1486
- ?>
1487
- <p class="description">
1488
- <?php printf( __( 'Head over to <a href="http://www.MailChimp.com" title="%s">MailChimp</a> to create a new list.', 'yikes-inc-easy-mailchimp-extender' ) , __( 'Create a list' , 'yikes-inc-easy-mailchimp-extender' ) ); ?>
1489
- </p>
1490
- <?php
1491
- }
1492
- }
1493
- ?>
1494
- </label>
1495
- <?php
1496
- if( $this->is_user_mc_api_valid_form( false ) ) {
1497
- echo submit_button( __( 'Create', 'yikes-inc-easy-mailchimp-extender' ) , 'primary' , '' , false , array( 'style' => 'margin:.75em 0 .5em 0;' ) );
1498
- } else {
1499
- echo '<p class="description">' . __( "Please enter a valid MailChimp API key to get started." , 'yikes-inc-easy-mailchimp-extender' ) . '</p>';
1500
- ?>
1501
- <a href="<?php echo esc_url_raw( admin_url( 'admin.php?page=yikes-inc-easy-mailchimp-settings&settings-updated=true' ) ); ?>"><?php _e( 'general settings' , 'yikes-inc-easy-mailchimp-extender' ); ?></a>
1502
- <?php
1503
- }
1504
- ?>
1505
- </form>
1506
- </div> <!-- .inside -->
1507
- <?php
1508
- }
1509
-
1510
- /*
1511
- * Generate a dropdown of post and pages
1512
- * so the user can send the user to on form submission
1513
- */
1514
- public function generate_page_redirect_dropdown( $redirect, $redirect_page, $custom_redirect_url ) {
1515
- $post_types = get_post_types();
1516
- ?>
1517
- <label id="redirect-user-to-selection-label" for="redirect-user-to-selection" class="<?php if( $redirect == '0' ) { echo 'yikes-easy-mc-hidden'; } ?>">
1518
- <?php _e( "Select A Page or Post" , 'yikes-inc-easy-mailchimp-extender' ); ?>
1519
- <select id="redirect-user-to-selection" name="redirect-user-to-selection" onchange="shouldWeDisplayCustomURL( this );return;">
1520
- <?php
1521
- // loop over registered post types, and query!
1522
- foreach( $post_types as $registered_post_type ) {
1523
- // exclude a few built in custom post types
1524
- if( ! in_array( $registered_post_type , array( 'attachment' , 'revision' , 'nav_menu_item' ) ) ) {
1525
- // run our query, to retreive the posts
1526
- $pages = get_posts( array(
1527
- 'order' => 'ASC',
1528
- 'orderby' => 'post_title',
1529
- 'post_type' => $registered_post_type,
1530
- 'post_status' => 'publish',
1531
- 'numberposts' => -1
1532
- ) );
1533
- // only show cpt's that have posts assigned
1534
- if( !empty( $pages ) ) {
1535
- ?>
1536
- <optgroup label="<?php echo ucwords( str_replace( '_' , ' ' , $registered_post_type ) ); ?>">
1537
- <?php
1538
- foreach( $pages as $page ) {
1539
- ?><option <?php selected( $redirect_page , $page->ID ); ?> value="<?php echo $page->ID; ?>"><?php echo $page->post_title; ?></option><?php
1540
- }
1541
- ?>
1542
- <option <?php selected( $redirect_page, 'custom_url' ); ?> value="custom_url"><?php echo __( 'Custom URL', 'yikes-inc-easy-mailchimp-extender' ); ?></option>
1543
- </optgroup>
1544
- <?php
1545
- }
1546
- }
1547
- }
1548
- ?>
1549
- </select>
1550
-
1551
- <label name="custom-redirect-url" class="custom_redirect_url_label" <?php if( ! isset( $redirect_page ) || $redirect_page != 'custom_url' ) { echo 'style="display:none;"'; } ?>>
1552
- <?php _e( "Enter Custom URL" , 'yikes-inc-easy-mailchimp-extender' ); ?>
1553
- <input type="text" class="widefat custom-redirect-url" name="custom-redirect-url" value="<?php echo $custom_redirect_url; ?>" />
1554
- </label>
1555
-
1556
- </label>
1557
- <?php
1558
- }
1559
-
1560
- /*
1561
- * generate_show_some_love_container()
1562
- * Generate a container, with some author info
1563
- *
1564
- * Displayed in sidebars
1565
- */
1566
- public function generate_show_some_love_container() {
1567
- // if no active add-ons are installed,
1568
- // lets display our branding and add-on sidebar
1569
- if( get_option( 'yikes-easy-mc-active-addons' , array() ) == array() ) {
1570
-
1571
- /* On Edit Forms Page Display Upsell to Customizer */
1572
- $screen = get_current_screen();
1573
- if( isset( $screen ) && $screen->base == 'admin_page_yikes-mailchimp-edit-form' ) {
1574
- ?>
1575
-
1576
- <div class="postbox yikes-easy-mc-postbox show-some-love-container">
1577
-
1578
- <?php $this->generate_edit_forms_upsell_ad(); ?>
1579
-
1580
- </div>
1581
-
1582
- <?php } else { ?>
1583
-
1584
- <div class="postbox yikes-easy-mc-postbox show-some-love-container">
1585
-
1586
- <!-- review us container -->
1587
- <h3 data-alt-text="<?php _e( 'About YIKES Inc.', 'yikes-inc-easy-mailchimp-extender' ); ?>"><?php _e( 'Show YIKES Inc. Some Love' , 'yikes-inc-easy-mailchimp-extender' ); ?></h3>
1588
- <div id="review-yikes-easy-mc" class="inside">
1589
-
1590
- <p>
1591
- <?php _e( 'Leave a review' , 'yikes-inc-easy-mailchimp-extender' ); ?>
1592
- <p class="star-container">
1593
- <a href="https://wordpress.org/support/view/plugin-reviews/yikes-inc-easy-mailchimp-extender" target="_blank">
1594
- <b class="dashicons dashicons-star-filled"></b>
1595
- <b class="dashicons dashicons-star-filled"></b>
1596
- <b class="dashicons dashicons-star-filled"></b>
1597
- <b class="dashicons dashicons-star-filled"></b>
1598
- <b class="dashicons dashicons-star-filled"></b>
1599
- </a>
1600
- </p>
1601
- </p>
1602
-
1603
- <?php _e( 'Tweet about it' , 'yikes-inc-easy-mailchimp-extender' ); ?>
1604
- <p class="sidebar-container">
1605
- <a href="https://twitter.com/share" class="twitter-share-button" data-url="https://wordpress.org/plugins/yikes-inc-easy-mailchimp-extender/" data-text="I'm using the Easy Forms for MailChimp plugin by @YikesInc to grow my mailing list - it's awesome! -" data-hashtags="MailChimp">Tweet</a>
1606
- <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>
1607
- </p>
1608
-
1609
- <?php _e( 'Vote that the plugin works' , 'yikes-inc-easy-mailchimp-extender' ); ?>
1610
- <p class="sidebar-container">
1611
- <a href="https://wordpress.org/plugins/yikes-inc-easy-mailchimp-extender/" target="_blank">
1612
- <?php _e( 'Vote for Compatibility' , 'yikes-inc-easy-mailchimp-extender' ); ?>
1613
- </a>
1614
- </p>
1615
- </div>
1616
-
1617
- <p class="description sidebar-footer-text"><?php printf( __( "This plugin made with %s by %s" , 'yikes-inc-easy-mailchimp-extender' ), '<span class="dashicons dashicons-heart yikes-love"></span>', '<a href="http://www.yikesinc.com" target="_blank" title="YIKES Inc.">YIKES Inc.</a>' ); ?> </p>
1618
-
1619
- <section id="about-yikes-inc" class="inside">
1620
- <a href="https://www.yikesinc.com" target="_blank" title="YIKES Inc.">
1621
- <img src="<?php echo YIKES_MC_URL . 'includes/images/About_Page/yikes-logo.png'; ?>" class="about-sidebar-yikes-logo" />
1622
- </a>
1623
- <p><strong>YIKES Inc.</strong> &mdash; <?php _e( 'is a web design and development company located in Philadelphia, Pennsylvania, US. YIKES specializes in custom WordPress theme and plugin development, site maintenance, eCommerce, custom-built web-based applications and more.', 'yikes-inc-easy-mailchimp-extender' ); ?></p>
1624
- </section>
1625
-
1626
- <p class="description sidebar-footer-text"><a href="#" class="about-yikes-inc-toggle" data-alt-text="<?php _e( 'Show YIKES Some Love', 'yikes-inc-easy-mailchimp-extender' ); ?>"><?php _e( 'About YIKES', 'yikes-inc-easy-mailchimp-extender' ); ?></a></p>
1627
-
1628
- </div>
1629
-
1630
- <?php } ?>
1631
-
1632
- <div class="postbox yikes-easy-mc-postbox">
1633
-
1634
- <!-- review us container -->
1635
- <h3><?php _e( 'Easy Forms for MailChimp Add-Ons' , 'yikes-inc-easy-mailchimp-extender' ); ?></h3>
1636
- <div id="review-yikes-easy-mc" class="inside">
1637
- <p><?php _e( "Check out available add-ons for some seriously enhanced features." , 'yikes-inc-easy-mailchimp-extender' ); ?></p>
1638
- <p><a class="button-secondary" href="<?php echo esc_url_raw( admin_url( 'admin.php?page=yikes-inc-easy-mailchimp-addons' ) ); ?>" title="<?php _e( 'View Add-Ons' , 'yikes-inc-easy-mailchimp-extender' ); ?>"><?php _e( 'View Add-Ons' , 'yikes-inc-easy-mailchimp-extender' ); ?></a></p>
1639
- </div>
1640
-
1641
- </div>
1642
- <?php
1643
- }
1644
-
1645
- /**
1646
- * Custom action hook for our extensions to hook into
1647
- * @parameter get_current_screen() current screen information
1648
- */
1649
- do_action( 'yikes-mailchimp-admin-sidebar', get_current_screen() );
1650
-
1651
- }
1652
-
1653
- /*
1654
- * generate_form_editor( $list_id )
1655
- * Submit an API request to get our merge variables, and build up a small form editor
1656
- * for users to 'customize' their form
1657
- * -
1658
- * @parameters - $list_id - pass in the list ID to retreive merge variables from
1659
- */
1660
- public function generate_form_editor( $form_fields, $list_id, $merge_variables, $interest_groups ) {
1661
-
1662
- // if no list id, die!
1663
- if( ! $list_id ) {
1664
- die( __( "We've encountered an error. No list ID was sent." , 'yikes-inc-easy-mailchimp-extender' ) );
1665
- }
1666
-
1667
- if( ! $merge_variables ) {
1668
- die( __( "We've encountered an error. Reload the page and try again. If the error persists, please reach out to support." , 'yikes-inc-easy-mailchimp-extender' ) );
1669
- }
1670
-
1671
- if( ! empty( $form_fields ) ) {
1672
-
1673
- // find any fields that are assigned to this form, that don't exist in MailChimp
1674
- // or else were going to run into issues when we submit the form
1675
- $available_merge_variables = array();
1676
- $available_interest_groups = array();
1677
-
1678
- $assigned_fields= array();
1679
-
1680
- // loop over merge variables
1681
- if( ! empty( $merge_variables['data'][0]['merge_vars'] ) ) {
1682
- foreach( $merge_variables['data'][0]['merge_vars'] as $merge_tag ) {
1683
- $available_merge_variables[] = $merge_tag['tag'];
1684
- }
1685
- }
1686
-
1687
- // loop over interest groups
1688
- if( ! empty( $interest_groups ) && ! isset( $interest_groups['error'] ) ) {
1689
- foreach( $interest_groups as $interest_group ) {
1690
- $available_interest_groups[] = $interest_group['id'];
1691
- }
1692
- }
1693
-
1694
- // build our assigned fields
1695
- foreach( $form_fields as $field => $value ) {
1696
- $assigned_fields[] = $field;
1697
- }
1698
-
1699
- $merged_fields = array_merge( $available_merge_variables , $available_interest_groups );
1700
- $excluded_fields = array_diff( $assigned_fields , $merged_fields );
1701
-
1702
- $i = 1;
1703
- foreach( $form_fields as $field ) {
1704
-
1705
- if( isset( $field['merge'] ) ) {
1706
- ?>
1707
- <section class="draggable" id="<?php echo $field['merge']; ?>">
1708
- <!-- top -->
1709
- <a href="#" class="expansion-section-title settings-sidebar">
1710
- <span class="dashicons dashicons-plus"></span><?php echo stripslashes( $field['label'] ); ?>
1711
- <?php if( in_array( $field['merge'] , $excluded_fields ) ) { ?>
1712
- <img src="<?php echo YIKES_MC_URL . 'includes/images/warning.svg'; ?>" class="field-doesnt-exist-notice" title="<?php _e( 'Field no longer exists.' , 'yikes-inc-easy-mailchimp-extender' ); ?>" alt="<?php _e( 'Field no longer exists.' , 'yikes-inc-easy-mailchimp-extender' ); ?>">
1713
- <?php } ?>
1714
- <span class="field-type-text"><small><?php echo __( 'type' , 'yikes-inc-easy-mailchimp-extender' ) . ' : ' . $field['type']; ?></small></span>
1715
- </a>
1716
- <!-- expansion section -->
1717
- <div class="yikes-mc-settings-expansion-section">
1718
-
1719
- <?php if( in_array( $field['merge'] , $excluded_fields ) ) { ?>
1720
- <p class="yikes-mc-warning-message"><?php _e( "This field no longer exists in this list. Delete this field from the form to prevent issues on your website." , 'yikes-inc-easy-mailchimp-extender' ); ?></p>
1721
- <?php } ?>
1722
-
1723
- <!-- store the label -->
1724
- <input type="hidden" name="field[<?php echo $field['merge']; ?>][label]" value="<?php echo $field['label']; ?>" />
1725
- <input type="hidden" name="field[<?php echo $field['merge']; ?>][type]" value="<?php echo $field['type']; ?>" />
1726
- <input type="hidden" name="field[<?php echo $field['merge']; ?>][merge]" value="<?php echo $field['merge']; ?>" />
1727
- <input type="hidden" class="field-<?php echo $field['merge']; ?>-position position-input" name="field[<?php echo $field['merge']; ?>][position]" value="<?php echo $i++; ?>" />
1728
-
1729
- <?php if ( $field['type'] == 'radio' || $field['type'] == 'dropdown' || $field['type'] == 'select' ) {
1730
- $choices = json_decode( $field['choices'], true );
1731
- ?>
1732
- <input type="hidden" name="field[<?php echo $field['merge']; ?>][choices]" value='<?php echo esc_attr( json_encode( $choices ) ); ?>' />
1733
- <?php } ?>
1734
-
1735
- <!-- Single or Double Opt-in -->
1736
- <p class="type-container"><!-- necessary to prevent skipping on slideToggle(); -->
1737
-
1738
- <table class="form-table form-field-container">
1739
-
1740
- <!-- Merge Tag -->
1741
- <tr valign="top">
1742
- <td scope="row">
1743
- <label for="merge-tag">
1744
- <?php _e( 'Merge Tag' , 'yikes-inc-easy-mailchimp-extender' ); ?>
1745
- </label>
1746
- </td>
1747
- <td>
1748
- <input class="widefat merge-tag-text" type="text" readonly value="<?php echo $field['merge']; ?>">
1749
- </td>
1750
- </tr>
1751
-
1752
- <!-- Placeholder Value -->
1753
- <?php switch( $field['type'] ) {
1754
-
1755
- case 'text':
1756
- case 'email':
1757
- case 'url':
1758
- case 'number';
1759
- case 'birthday':
1760
- case 'date':
1761
- case 'zip':
1762
- case 'phone':
1763
- ?>
1764
- <!-- Placeholder -->
1765
- <tr valign="top">
1766
- <td scope="row">
1767
- <label for="placeholder">
1768
- <?php _e( 'Placeholder' , 'yikes-inc-easy-mailchimp-extender' ); ?>
1769
- </label>
1770
- </td>
1771
- <td>
1772
- <input type="text" class="widefat" name="field[<?php echo $field['merge']; ?>][placeholder]" value="<?php echo isset( $field['placeholder'] ) ? $field['placeholder'] : '' ; ?>" />
1773
- <p class="description"><small><?php _e( "Assign a placeholder value to this field.", 'yikes-inc-easy-mailchimp-extender' );?></small></p>
1774
- </td>
1775
- </tr>
1776
- <?php
1777
- break;
1778
- }
1779
- ?>
1780
-
1781
- <!-- Default Value -->
1782
- <?php switch( $field['type'] ) {
1783
- default:
1784
- case 'text':
1785
- case 'number':
1786
- case 'url':
1787
- ?>
1788
- <tr valign="top">
1789
- <td scope="row">
1790
- <label for="placeholder">
1791
- <?php _e( 'Default Value' , 'yikes-inc-easy-mailchimp-extender' ); ?>
1792
- </label>
1793
- </td>
1794
- <td>
1795
- <input <?php if( $field['type'] != 'number' ) { ?> type="text" <?php } else { ?> type="number" <?php } ?> class="widefat" name="field[<?php echo $field['merge']; ?>][default]" <?php if( $field['type'] != 'url' ) { ?> value="<?php echo isset( $field['default'] ) ? stripslashes( wp_strip_all_tags( $field['default'] ) ) : ''; ?>" <?php } else { ?> value="<?php echo isset( $field['default'] ) ? stripslashes( wp_strip_all_tags( esc_url_raw( $field['default'] ) ) ) : ''; ?>" <?php } ?> />
1796
- <p class="description"><small><?php _e( "Assign a default value to populate this field with on initial page load.", 'yikes-inc-easy-mailchimp-extender' );?></small></p>
1797
- <?php
1798
- switch( $field['type'] ) {
1799
- case 'text':
1800
- ?>
1801
- <p><small class="pre-defined-tag-link"><a href="#TB_inline?width=600&height=550&inlineId=pre-defined-tag-container" onclick="storeGlobalClicked( jQuery( this ) );" class="thickbox"><?php _e( 'View Pre-Defined Tags' , 'yikes-inc-easy-mailchimp-extender' ); ?></a></small></p>
1802
- <?php
1803
- break;
1804
- } ?>
1805
- </td>
1806
- </tr>
1807
- <?php
1808
- break;
1809
-
1810
- case 'radio':
1811
- ?>
1812
- <tr valign="top">
1813
- <td scope="row">
1814
- <label for="placeholder">
1815
- <?php _e( 'Default Selection' , 'yikes-inc-easy-mailchimp-extender' ); ?>
1816
- </label>
1817
- </td>
1818
- <td>
1819
- <?php if( ! isset( $field['default_choice'] ) || empty( $field['default_choice'] ) ) { $decode = json_decode( $field['choices'], true ); $field['default_choice'] = $decode[0]; }
1820
- $x = 0;
1821
- foreach( json_decode( $field['choices'], true ) as $choice => $value ) { ?>
1822
- <label for="<?php echo $field['merge'].'-'.$x; ?>">
1823
- <input id="<?php echo $field['merge'].'-'.$x; ?>" type="radio" name="field[<?php echo $field['merge']; ?>][default_choice]" value="<?php echo $x; ?>" <?php checked( $field['default_choice'], $x ); ?>><?php echo $value; ?>&nbsp;
1824
- </label>
1825
- <?php $x++; } ?>
1826
- <p class="description"><small><?php _e( "Select the option that should be selected by default.", 'yikes-inc-easy-mailchimp-extender' );?></small></p>
1827
- </td>
1828
- </tr>
1829
-
1830
- <?php
1831
- break;
1832
-
1833
- case 'dropdown':
1834
- ?>
1835
- <tr valign="top">
1836
- <td scope="row">
1837
- <label for="placeholder">
1838
- <?php _e( 'Default Selection' , 'yikes-inc-easy-mailchimp-extender' ); ?>
1839
- </label>
1840
- </td>
1841
- <td>
1842
- <select type="default" name="field[<?php echo $field['merge']; ?>][default_choice]">
1843
- <?php foreach( json_decode( $field['choices'], true ) as $choice => $value ) { ?>
1844
- <option value="<?php echo $choice; ?>" <?php selected( $field['default_choice'] , $choice ); ?>><?php echo $value; ?></option>
1845
- <?php } ?>
1846
- </select>
1847
- <p class="description"><small><?php _e( "Which option should be selected by default?", 'yikes-inc-easy-mailchimp-extender' );?></small></p>
1848
- </td>
1849
- </tr>
1850
-
1851
- <?php
1852
- break;
1853
-
1854
- case "birthday":
1855
- case "address":
1856
- break;
1857
-
1858
- ?>
1859
-
1860
- <?php } // end Default Value ?>
1861
-
1862
-
1863
- <!-- Field Description -->
1864
- <tr valign="top">
1865
- <td scope="row">
1866
- <label for="placeholder">
1867
- <?php _e( 'Description' , 'yikes-inc-easy-mailchimp-extender' ); ?>
1868
- </label>
1869
- </td>
1870
- <td>
1871
- <textarea class="widefat field-description-input" name="field[<?php echo $field['merge']; ?>][description]"><?php echo isset( $field['description'] ) ? stripslashes( esc_html( $field['description'] ) ) : '' ; ?></textarea>
1872
- <p class="description"><small><?php _e( "Enter the description for the form field. This will be displayed to the user and will provide some direction on how the field should be filled out or selected.", 'yikes-inc-easy-mailchimp-extender' );?></small></p>
1873
- </td>
1874
- </tr>
1875
- <!-- Additional Classes -->
1876
- <tr valign="top">
1877
- <td scope="row">
1878
- <label for="placeholder">
1879
- <?php _e( 'Additional Classes' , 'yikes-inc-easy-mailchimp-extender' ); ?>
1880
- </label>
1881
- </td>
1882
- <td>
1883
- <input type="text" class="widefat" name="field[<?php echo $field['merge']; ?>][additional-classes]" value="<?php echo isset( $field['additional-classes'] ) ? stripslashes( wp_strip_all_tags( $field['additional-classes'] ) ) : '' ; ?>" />
1884
- <p class="description"><small><?php printf( __( "Assign additional classes to this field. %s.", 'yikes-inc-easy-mailchimp-extender' ), '<a target="_blank" href="' . esc_url( 'https://yikesplugins.com/support/knowledge-base/bundled-css-classes/' ) . '">' . __( 'View bundled classes', 'yikes-inc-easy-mailchimp-extender' ) . '</a>' );?></small></p>
1885
- </td>
1886
- </tr>
1887
- <!-- Required Toggle -->
1888
- <tr valign="top">
1889
- <td scope="row">
1890
- <label for="field-required">
1891
- <?php _e( 'Field Required?' , 'yikes-inc-easy-mailchimp-extender' ); ?>
1892
- </label>
1893
- </td>
1894
- <td>
1895
- <?php $checked = isset( $field['require'] ) ? $field['require'] : '0'; ?>
1896
- <input type="checkbox" class="widefat" value="1" name="field[<?php echo $field['merge']; ?>][require]" <?php checked( $checked , 1 ); ?> <?php if( $field['merge'] == 'EMAIL' ) { ?> disabled="disabled" checked="checked" title="<?php echo __( 'Email is a required field.' , 'yikes-inc-easy-mailchimp-extender' ); } ?>">
1897
- <p class="description"><small><?php _e( "Require this field to be filled in before the form can be submitted.", 'yikes-inc-easy-mailchimp-extender' );?></small></p>
1898
- </td>
1899
- </tr>
1900
- <!-- Visible Toggle -->
1901
- <tr valign="top">
1902
- <td scope="row">
1903
- <label for="hide-field">
1904
- <?php _e( 'Hide Field' , 'yikes-inc-easy-mailchimp-extender' ); ?>
1905
- </label>
1906
- </td>
1907
- <td>
1908
- <?php $hide = isset( $field['hide'] ) ? $field['hide'] : '0'; ?>
1909
- <input type="checkbox" class="widefat" value="1" name="field[<?php echo $field['merge']; ?>][hide]" <?php checked( $hide , 1 ); ?> <?php if( $field['merge'] == 'EMAIL' ) { ?> disabled="disabled" title="<?php echo __( 'Cannot toggle email field visibility.' , 'yikes-inc-easy-mailchimp-extender' ); } ?>">
1910
- <p class="description"><small><?php _e( "Hide this field from being displayed on the front end.", 'yikes-inc-easy-mailchimp-extender' );?></small></p>
1911
- </td>
1912
- </tr>
1913
- <!-- Toggle Field Label Visibility -->
1914
- <tr valign="top">
1915
- <td scope="row">
1916
- <label for="placeholder">
1917
- <?php _e( 'Hide Label' , 'yikes-inc-easy-mailchimp-extender' ); ?>
1918
- </label>
1919
- </td>
1920
- <td>
1921
- <?php $hide_label = isset( $field['hide-label'] ) ? $field['hide-label'] : '0'; ?>
1922
- <input type="checkbox" name="field[<?php echo $field['merge']; ?>][hide-label]" value="1" <?php checked( $hide_label , 1 ); ?>/>
1923
- <p class="description"><small><?php _e( "Toggle field label visibility.", 'yikes-inc-easy-mailchimp-extender' );?></small></p>
1924
- </td>
1925
- </tr>
1926
- <!-- Display Phone/Date Formats back to the user -->
1927
- <!-- Phone Format Initial Load -->
1928
- <?php
1929
- switch( $field['type'] ) {
1930
- /* Store the phone format, for properly regex pattern */
1931
- case 'phone':
1932
- case 'birthday':
1933
- case 'date':
1934
- ?>
1935
- <tr valign="top">
1936
- <td scope="row">
1937
- <label for="placeholder">
1938
- <?php
1939
- switch( $field['type'] ) {
1940
- default:
1941
- case 'birthday':
1942
- $type = __( 'Date Format' , 'yikes-inc-easy-mailchimp-extender' );
1943
- $format = ( isset( $field['date_format'] ) ) ? $field['date_format'] : 'MM/DD';
1944
- $format_name = 'date_format';
1945
- break;
1946
-
1947
- case 'date':
1948
- $type = __( 'Date Format' , 'yikes-inc-easy-mailchimp-extender' );
1949
- $format = ( isset( $field['date_format'] ) ) ? $field['date_format'] : 'MM/DD/YYYY';
1950
- $format_name = 'date_format';
1951
- break;
1952
-
1953
- case 'phone':
1954
- $type = __( 'Phone Format' , 'yikes-inc-easy-mailchimp-extender' );
1955
- $format = ( ( $field['phone_format'] == 'none' ) ? __( 'International', 'yikes-inc-easy-mailchimp-extender' ) : $field['phone_format'] . ' - (###) ### - ####' );
1956
- $format_name = 'phone_format';
1957
- break;
1958
- }
1959
- echo $type;
1960
- ?>
1961
- </label>
1962
- </td>
1963
- <td>
1964
- <strong><?php echo $format; ?></strong>
1965
- <input type="hidden" name="field[<?php echo $field['merge']; ?>][<?php echo $format_name; ?>]" value="<?php echo $format; ?>" />
1966
- <p class="description"><small>
1967
- <?php printf( __( 'To change the %s please head over to <a href="%s" title="MailChimp" target="_blank">MailChimp</a>. If you alter the format, you should re-import this field.', 'yikes-inc-easy-mailchimp-extender' ), strtolower( $type ), esc_url( 'http://www.mailchimp.com' ) ); ?>
1968
- </small></p>
1969
- </td>
1970
- </tr>
1971
- <?php
1972
- break;
1973
- // others..
1974
- default:
1975
- break;
1976
- }
1977
- ?>
1978
- <!-- End Date/Phone Formats -->
1979
- <!-- Toggle Buttons -->
1980
- <tr valign="top">
1981
- <td scope="row">
1982
- &nbsp;
1983
- </td>
1984
- <td>
1985
- <span class="toggle-container">
1986
- <a href="#" class="close-form-expansion"><?php _e( "Close" , 'yikes-inc-easy-mailchimp-extender' ); ?></a> |
1987
- <a href="#" class="remove-field" alt="<?php echo $field['merge']; ?>"><?php _e( "Remove Field" , 'yikes-inc-easy-mailchimp-extender' ); ?></a>
1988
- </span>
1989
- </td>
1990
- </tr>
1991
- </table>
1992
- </p>
1993
-
1994
- </div>
1995
- </section>
1996
- <?php
1997
-
1998
-
1999
-
2000
- } else { // THIS IS AN INTEREST GROUP!
2001
-
2002
- ?>
2003
- <section class="draggable" id="<?php echo $field['group_id']; ?>">
2004
- <!-- top -->
2005
- <a href="#" class="expansion-section-title settings-sidebar">
2006
- <span class="dashicons dashicons-plus"></span><?php echo stripslashes( $field['label'] ); ?>
2007
- <?php if( in_array( $field['group_id'] , $excluded_fields ) ) { ?>
2008
- <img src="<?php echo YIKES_MC_URL . 'includes/images/warning.svg'; ?>" class="field-no-longer-exists-warning" title="<?php _e( 'Field no longer exists.' , 'yikes-inc-easy-mailchimp-extender' ); ?>" alt="<?php _e( 'Field no longer exists.' , 'yikes-inc-easy-mailchimp-extender' ); ?>">
2009
- <?php } ?>
2010
- <span class="field-type-text"><small><?php echo __( 'type' , 'yikes-inc-easy-mailchimp-extender' ) . ' : ' . $field['type']; ?></small></span>
2011
- </a>
2012
- <!-- expansion section -->
2013
- <div class="yikes-mc-settings-expansion-section">
2014
-
2015
- <!-- check if this field exists in the available interest group array -->
2016
- <?php if( in_array( $field['group_id'] , $excluded_fields ) ) { ?>
2017
- <p class="yikes-mc-warning-message"><?php _e( "This field no longer exists in this list. Delete this field from the form to prevent issues on the front end." , 'yikes-inc-easy-mailchimp-extender' ); ?></p>
2018
- <?php } ?>
2019
-
2020
- <!-- store the label -->
2021
- <input type="hidden" name="field[<?php echo $field['group_id']; ?>][label]" value="<?php echo $field['label']; ?>" />
2022
- <input type="hidden" name="field[<?php echo $field['group_id']; ?>][type]" value="<?php echo $field['type']; ?>" />
2023
- <input type="hidden" name="field[<?php echo $field['group_id']; ?>][group_id]" value="<?php echo $field['group_id']; ?>" />
2024
- <input type="hidden" name="field[<?php echo $field['group_id']; ?>][groups]" value='<?php echo esc_attr( json_encode( json_decode( $field['groups'], true ) ) ); ?>' />
2025
-
2026
- <!-- Single or Double Opt-in -->
2027
- <p class="type-container"><!-- necessary to prevent skipping on slideToggle(); -->
2028
-
2029
- <table class="form-table form-field-container">
2030
- <!-- Default Value -->
2031
- <?php switch( $field['type'] ) {
2032
-
2033
- default:
2034
- case 'radio':
2035
- case 'checkboxes':
2036
- ?>
2037
- <tr valign="top">
2038
- <td scope="row">
2039
- <label for="placeholder">
2040
- <?php _e( 'Default Selection' , 'yikes-inc-easy-mailchimp-extender' ); ?>
2041
- </label>
2042
- </td>
2043
- <td>
2044
- <?php
2045
- if( $field['type'] != 'checkboxes' ) {
2046
- if( !isset( $field['default_choice'] ) ) { $field['default_choice'] = json_decode( stripslashes( $field['groups'] ) , true ); }
2047
- } else {
2048
- if( !isset( $field['default_choice'] ) ) { $field['default_choice'] = array(); }
2049
- }
2050
- $i = 0;
2051
- foreach( json_decode( $field['groups'], true ) as $group ) { ?>
2052
- <label for="<?php echo $field['group_id'].'-'.$i; ?>">
2053
- <input id="<?php echo $field['group_id'].'-'.$i; ?>" type="<?php if( $field['type'] == 'radio' || $field['type'] == 'hidden' ) { ?>radio<?php } else if( $field['type'] == 'checkboxes' ) { ?>checkbox<?php } ?>" name="field[<?php echo $field['group_id']; ?>][default_choice]<?php if( $field['type'] == 'checkboxes' ) {echo '[]';}?>" value="<?php echo $i; ?>" <?php if( $field['type'] == 'radio' || $field['type'] == 'hidden' ) { checked( $field['default_choice'][0] , $i ); } else if( $field['type'] == 'checkboxes' ) { if( in_array( $i , $field['default_choice'] ) ) { echo 'checked="checked"'; } }?>><?php echo stripslashes( str_replace( '~' , '\'' , $group['name'] ) ); ?>&nbsp;
2054
- </label>
2055
- <?php
2056
- $i++;
2057
- }
2058
- ?>
2059
- <p class="description"><small><?php _e( "Select the option that should be selected by default.", 'yikes-inc-easy-mailchimp-extender' );?></small></p>
2060
- </td>
2061
- </tr>
2062
-
2063
- <?php
2064
- break;
2065
-
2066
- case 'dropdown':
2067
- ?>
2068
- <tr valign="top">
2069
- <td scope="row">
2070
- <label for="placeholder">
2071
- <?php _e( 'Default Selection' , 'yikes-inc-easy-mailchimp-extender' ); ?>
2072
- </label>
2073
- </td>
2074
- <td>
2075
- <select type="default" name="field[<?php echo $field['group_id']; ?>][default_choice]">
2076
- <?php $i = 0; foreach( json_decode( stripslashes_deep( $field['groups'] ) , true ) as $group ) { ?>
2077
- <option value="<?php echo $i; ?>" <?php selected( $field['default_choice'] , $i ); ?>><?php echo stripslashes( $group['name'] ); ?></option>
2078
- <?php $i++; } ?>
2079
- </select>
2080
- <p class="description"><small><?php _e( "Which option should be selected by default?", 'yikes-inc-easy-mailchimp-extender' );?></small></p>
2081
- </td>
2082
- </tr>
2083
-
2084
- <?php
2085
- break;
2086
- ?>
2087
-
2088
- <?php } // end Default Value ?>
2089
-
2090
- <!-- Field Description -->
2091
- <tr valign="top">
2092
- <td scope="row">
2093
- <label for="placeholder">
2094
- <?php _e( 'Description' , 'yikes-inc-easy-mailchimp-extender' ); ?>
2095
- </label>
2096
- </td>
2097
- <td>
2098
- <textarea class="widefat field-description-input" name="field[<?php echo $field['group_id']; ?>][description]"><?php echo isset( $field['description'] ) ? stripslashes( esc_html( $field['description'] ) ) : '' ; ?></textarea>
2099
- <p class="description"><small><?php _e( "Enter the description for the form field. This will be displayed to the user and provide some direction on how the field should be filled out or selected.", 'yikes-inc-easy-mailchimp-extender' );?></small></p>
2100
- </td>
2101
- </tr>
2102
-
2103
- <!-- Additional Classes -->
2104
- <tr valign="top">
2105
- <td scope="row">
2106
- <label for="placeholder">
2107
- <?php _e( 'Additional Classes' , 'yikes-inc-easy-mailchimp-extender' ); ?>
2108
- </label>
2109
- </td>
2110
- <td>
2111
- <input type="text" class="widefat" name="field[<?php echo $field['group_id']; ?>][additional-classes]" value="<?php echo isset( $field['additional-classes'] ) ? stripslashes( wp_strip_all_tags( $field['additional-classes'] ) ) : '' ; ?>" />
2112
- <p class="description"><small><?php printf( __( "Assign additional classes to this field. %s.", 'yikes-inc-easy-mailchimp-extender' ), '<a target="_blank" href="' . esc_url( 'https://yikesplugins.com/support/knowledge-base/bundled-css-classes/' ) . '">' . __( 'View bundled classes', 'yikes-inc-easy-mailchimp-extender' ) . '</a>' );?></small></p>
2113
- </td>
2114
- </tr>
2115
- <!-- Required Toggle -->
2116
- <tr valign="top">
2117
- <td scope="row">
2118
- <label for="field-required">
2119
- <?php _e( 'Field Required?' , 'yikes-inc-easy-mailchimp-extender' ); ?>
2120
- </label>
2121
- </td>
2122
- <td>
2123
- <?php $checked = isset( $field['require'] ) ? $field['require'] : '0'; ?>
2124
- <input type="checkbox" class="widefat" value="1" name="field[<?php echo $field['group_id']; ?>][require]" <?php checked( $checked , 1 ); ?>>
2125
- <p class="description"><small><?php _e( "Require this field to be filled in before the form can be submitted.", 'yikes-inc-easy-mailchimp-extender' );?></small></p>
2126
- </td>
2127
- </tr>
2128
- <!-- Visible Toggle -->
2129
- <tr valign="top">
2130
- <td scope="row">
2131
- <label for="hide-field">
2132
- <?php _e( 'Hide Field' , 'yikes-inc-easy-mailchimp-extender' ); ?>
2133
- </label>
2134
- </td>
2135
- <td>
2136
- <?php $hide = isset( $field['hide'] ) ? $field['hide'] : '0'; ?>
2137
- <input type="checkbox" class="widefat" value="1" name="field[<?php echo $field['group_id']; ?>][hide]" <?php checked( $hide , 1 ); ?>>
2138
- <p class="description"><small><?php _e( "Hide this field from being displayed on the front end.", 'yikes-inc-easy-mailchimp-extender' );?></small></p>
2139
- </td>
2140
- </tr>
2141
- <!-- Toggle Field Label Visibility -->
2142
- <tr valign="top">
2143
- <td scope="row">
2144
- <label for="placeholder">
2145
- <?php _e( 'Hide Label' , 'yikes-inc-easy-mailchimp-extender' ); ?>
2146
- </label>
2147
- </td>
2148
- <td>
2149
- <?php $hide = isset( $field['hide-label'] ) ? $field['hide-label'] : '0'; ?>
2150
- <input type="checkbox" name="field[<?php echo $field['group_id']; ?>][hide-label]" value="1" <?php checked( $hide , 1 ); ?>/>
2151
- <p class="description"><small><?php _e( "Toggle field label visibility.", 'yikes-inc-easy-mailchimp-extender' );?></small></p>
2152
- </td>
2153
- </tr>
2154
- <!-- Toggle Buttons -->
2155
- <tr valign="top">
2156
- <td scope="row">
2157
- &nbsp;
2158
- </td>
2159
- <td>
2160
- <span class="toggle-container">
2161
- <a href="#" class="close-form-expansion"><?php _e( "Close" , 'yikes-inc-easy-mailchimp-extender' ); ?></a> |
2162
- <a href="#" class="remove-field" alt="<?php echo $field['group_id']; ?>"><?php _e( "Remove Field" , 'yikes-inc-easy-mailchimp-extender' ); ?></a>
2163
- </span>
2164
- </td>
2165
- </tr>
2166
- </table>
2167
- </p>
2168
-
2169
- </div>
2170
- </section>
2171
- <?php
2172
- } // its an interest group!
2173
- }
2174
- } else {
2175
- ?>
2176
- <h4 class="no-fields-assigned-notice non-draggable-yikes"><em><?php _e( 'No fields are assigned to this form. Select fields from the right hand column to add to this form.' , 'yikes-inc-easy-mailchimp-extender' ); ?></em></h4>
2177
- <?php
2178
- }
2179
- /* Pre Defined Merge Tag Container - Always rendered so the modal appears and links are clickable on initial page load */
2180
- add_thickbox();
2181
- // enqueue jquery qtip for our tooltip
2182
- wp_enqueue_script( 'jquery-qtip-tooltip' , YIKES_MC_URL . 'admin/js/min/jquery.qtip.min.js' , array( 'jquery' ) );
2183
- wp_enqueue_style( 'jquery-qtip-style' , YIKES_MC_URL . 'admin/css/jquery.qtip.min.css' );
2184
- $available_tags = array(
2185
- array(
2186
- 'tag' => '{page_title}',
2187
- 'description' => '<h4 class="tooltip-title">' . __( 'Page Title', 'yikes-inc-easy-mailchimp-extender' ) . ' | <small>{page_title}</small></h4><hr />' . __( 'Pre-populate the field with the current page or post title that the user is on when opting in to your mailing list.' , 'yikes-inc-easy-mailchimp-extender' ),
2188
- 'title' => __( 'Page Title', 'yikes-inc-easy-mailchimp-extender' )
2189
- ),
2190
- array(
2191
- 'tag' => '{page_id}',
2192
- 'description' => '<h4 class="tooltip-title">' . __( 'Page ID', 'yikes-inc-easy-mailchimp-extender' ) . ' | <small>{page_id}</small></h4><hr />' . __( 'Pre-populate the field with the current page or post ID that the user is on when opting in to your mailing list.' , 'yikes-inc-easy-mailchimp-extender' ),
2193
- 'title' => __( 'Page ID', 'yikes-inc-easy-mailchimp-extender' )
2194
- ),
2195
- array(
2196
- 'tag' => '{page_url}',
2197
- 'description' => '<h4 class="tooltip-title">' . __( 'Page URL', 'yikes-inc-easy-mailchimp-extender' ) . ' | <small>{page_url}</small></h4><hr />' . __( 'Pre-populate the field with the current page URL that the user is on when opting in to your mailing list.' , 'yikes-inc-easy-mailchimp-extender' ),
2198
- 'title' => __( 'Page URL', 'yikes-inc-easy-mailchimp-extender' )
2199
- ),
2200
- array(
2201
- 'tag' => '{blog_name}',
2202
- 'description' => '<h4 class="tooltip-title">' . __( 'Blog Name', 'yikes-inc-easy-mailchimp-extender' ) . ' | <small>{blog_name}</small></h4><hr />' . __( 'Pre-populate the field with the current blog name that the user is on when opting in to your mailing list. This is especially helpful for multi-site networks.' , 'yikes-inc-easy-mailchimp-extender' ),
2203
- 'title' => __( 'Blog Name', 'yikes-inc-easy-mailchimp-extender' )
2204
- ),
2205
- array(
2206
- 'tag' => '{user_logged_in}',
2207
- 'description' => '<h4 class="tooltip-title">' . __( 'User Logged In', 'yikes-inc-easy-mailchimp-extender' ) . ' | <small>{user_logged_in}</small></h4><hr />' . __( 'Detects if a user is logged in and pre-populates the field with an appropriate value.' , 'yikes-inc-easy-mailchimp-extender' ),
2208
- 'title' => __( 'User Logged In', 'yikes-inc-easy-mailchimp-extender' )
2209
- ),
2210
- );
2211
- ?>
2212
- <!-- tooltips -->
2213
- <script type="text/javascript">
2214
- /* Initialize Qtip tooltips for pre-defined tags */
2215
- jQuery( document ).ready( function() {
2216
- jQuery( '.dashicons-editor-help' ).each( function() {
2217
- jQuery( this ).qtip({
2218
- content: {
2219
- text: jQuery( this ).next( '.tooltiptext' ),
2220
- style: {
2221
- def: false
2222
- }
2223
- }
2224
- });
2225
- });
2226
- jQuery( '.qtip' ).each( function() {
2227
- jQuery( this ).removeClass( 'qtip-default' );
2228
- });
2229
- });
2230
- </script>
2231
-
2232
- <div id="pre-defined-tag-container">
2233
- <input type="hidden" value="" class="clicked-input">
2234
- <div id="pre-defined-tag-interior-container">
2235
- <h3><?php _e( 'Pre Defined Tags' , 'yikes-inc-easy-mailchimp-extender' ); ?></h3>
2236
- <p class="description"><?php _e( 'You can use any of the following tags to populate a MailChimp text field with dynamic content. This can be used to determine which page the user signed up on, if the user was logged in and more.' , 'yikes-inc-easy-mailchimp-extender' ); ?></p>
2237
- <ul>
2238
- <?php foreach( apply_filters( 'yikes-mailchimp-custom-default-value-tags' , $available_tags ) as $tag ) { ?>
2239
- <li class="tooltop-tag">
2240
- <!-- link/tag -->
2241
- <a href="#" onclick="populateDefaultValue( '<?php echo $tag['tag']; ?>' );return false;" data-attr-tag="<?php echo $tag['tag']; ?>" title="<?php echo $tag['title']; ?>"><?php echo $tag['title']; ?></a>
2242
- <!-- help icon -->
2243
- <span class="dashicons dashicons-editor-help"></span>
2244
- <!-- tooltip -->
2245
- <div class="tooltiptext qtip-bootstrap yikes-easy-mc-hidden"><?php echo $tag['description']; ?></div>
2246
- </li>
2247
- <?php } ?>
2248
- </ul>
2249
- </div>
2250
- </div>
2251
- <?php
2252
- }
2253
-
2254
- /*
2255
- * build_available_merge_vars( $list_id )
2256
- * Submit an API request to get our merge variables, and build up a small form editor
2257
- * for users to 'customize' their form
2258
- * -
2259
- * @parameters - $list_id - pass in the list ID to retreive merge variables from
2260
- */
2261
- public function build_available_merge_vars( $form_fields , $available_merge_variables ) {
2262
- $fields_assigned_to_form = array();
2263
- if( !empty( $form_fields ) ) {
2264
- foreach( $form_fields as $assigned_field ) {
2265
- // print_r( $assigned_field) ;
2266
- // switch between merge variables and interest groups
2267
- if( isset( $assigned_field['merge'] ) ) {
2268
- $fields_assigned_to_form[] = $assigned_field['merge'];
2269
- }
2270
- }
2271
- }
2272
- if( !empty( $available_merge_variables['data'][0] ) ) {
2273
- ?><ul id="available-fields"><?php
2274
- foreach( $available_merge_variables['data'][0]['merge_vars'] as $merge_var ) {
2275
- if( in_array( $merge_var['tag'] , $fields_assigned_to_form ) ) {
2276
- ?>
2277
- <li class="available-form-field not-available" alt="<?php echo $merge_var['tag']; ?>" data-attr-field-type="<?php echo $merge_var['field_type']; ?>" data-attr-field-name="<?php echo $merge_var['name']; ?>" data-attr-form-id="<?php echo $available_merge_variables['data'][0]['id']; ?>" title="<?php _e( 'Already assigned to your form' , 'yikes-inc-easy-mailchimp-extender' ); ?>" disabled="disabled"><?php echo stripslashes( $merge_var['name'] ); if( $merge_var['req'] == '1' ) { echo ' <span class="field-required" title="' . __( 'required field' , 'yikes-inc-easy-mailchimp-extender' ) . '">*</span>'; } ?> <small class="field-type-text"><?php echo $merge_var['field_type']; ?></small></li>
2278
- <?php
2279
- } else {
2280
- ?>
2281
- <li class="available-form-field" alt="<?php echo $merge_var['tag']; ?>" data-attr-field-type="<?php echo $merge_var['field_type']; ?>" data-attr-field-name="<?php echo $merge_var['name']; ?>" data-attr-form-id="<?php echo $available_merge_variables['data'][0]['id']; ?>"><?php echo stripslashes( $merge_var['name'] ); if( $merge_var['req'] == '1' ) { echo ' <span class="field-required" title="' . __( 'required field' , 'yikes-inc-easy-mailchimp-extender' ) . '">*</span>'; } ?> <small class="field-type-text"><?php echo $merge_var['field_type']; ?></small></li>
2282
- <?php
2283
- }
2284
- }
2285
- ?></ul>
2286
- <a href="#" class="add-field-to-editor button-secondary yikes-easy-mc-hidden" style="display:none;"><small><span class="dashicons dashicons-arrow-left-alt add-to-form-builder-arrow"></span> <?php _e( 'Add to Form Builder' , 'yikes-inc-easy-mailchimp-extender' ); ?></small></a>
2287
- <?php
2288
- }
2289
- }
2290
-
2291
- /*
2292
- * build_available_interest_groups( $form_fields , $available_interest_groups )
2293
- * Submit an API request to get our merge variables, and build up a small form editor
2294
- * for users to 'customize' their form
2295
- * -
2296
- * @parameters - $list_id - pass in the list ID to retreive merge variables from
2297
- */
2298
- public function build_available_interest_groups( $form_fields , $available_interest_groups , $list_id ) {
2299
- $fields_assigned_to_form = array();
2300
- if( !empty( $form_fields ) ) {
2301
- foreach( $form_fields as $assigned_interest_group ) {
2302
- if( isset( $assigned_interest_group['group_id'] ) ) {
2303
- $fields_assigned_to_form[] = $assigned_interest_group['group_id'];
2304
- }
2305
- }
2306
- }
2307
- if( !empty( $available_interest_groups) ) {
2308
- ?><ul id="available-interest-groups"><?php
2309
- foreach( $available_interest_groups as $interest_group ) {
2310
- if( in_array( $interest_group['id'] , $fields_assigned_to_form ) ) {
2311
- ?>
2312
- <li class="available-interest-group not-available" alt="<?php echo $interest_group['id']; ?>" data-attr-field-name="<?php echo stripslashes( $interest_group['name'] ); ?>" data-attr-field-type="<?php echo $interest_group['form_field']; ?>" data-attr-form-id="<?php echo $list_id; ?>" title="<?php _e( 'Already assigned to your form' , 'yikes-inc-easy-mailchimp-extender' ); ?>" disabled="disabled"><?php echo stripslashes( $interest_group['name'] ); ?> <small class="field-type-text"><?php echo $interest_group['form_field']; ?></small></li>
2313
- <?php
2314
- } else {
2315
- ?>
2316
- <li class="available-interest-group" alt="<?php echo $interest_group['id']; ?>" data-attr-field-name="<?php echo stripslashes( $interest_group['name'] ); ?>" data-attr-field-type="<?php echo $interest_group['form_field']; ?>" data-attr-form-id="<?php echo $list_id; ?>"><?php echo stripslashes( $interest_group['name'] ); ?> <small class="field-type-text"><?php echo $interest_group['form_field']; ?></small></li>
2317
- <?php
2318
- }
2319
- }
2320
- ?></ul>
2321
- <a href="#" class="add-interest-group-to-editor button-secondary yikes-easy-mc-hidden" style="display:none;"><small><span class="dashicons dashicons-arrow-left-alt add-to-form-builder-arrow"></span> <?php _e( 'Add to Form Builder' , 'yikes-inc-easy-mailchimp-extender' ); ?></small></a>
2322
- <?php
2323
- }
2324
- }
2325
-
2326
- /*
2327
- * Create A New Form!
2328
- * Probably Move these to its own file,
2329
- * and include it here for easy maintenance
2330
- * - must clean up db tables , ensure what data is going in and what is needed...
2331
- */
2332
- public function yikes_easy_mailchimp_create_form() {
2333
- $nonce = $_REQUEST['nonce'];
2334
- if( ! wp_verify_nonce( $nonce, 'create_mailchimp_form' ) ) {
2335
- die( __( "We've run into an error. The security check didn't pass. Please try again." , 'yikes-inc-easy-mailchimp-extender' ) );
2336
- }
2337
- global $wpdb;
2338
- /* Default values */
2339
- // setup our default submission settings serialized array
2340
- $submission_settings = json_encode(
2341
- array(
2342
- 'ajax' => 1,
2343
- 'redirect_on_submission' => 0,
2344
- 'redirect_page' => 1,
2345
- 'hide_form_post_signup' => 0
2346
- )
2347
- );
2348
- // setup our default opt-in settings serialized array
2349
- $optin_settings = json_encode(
2350
- array(
2351
- 'optin' => 1,
2352
- 'update_existing_user' => 1,
2353
- 'send_welcome_email' => 1,
2354
- )
2355
- );
2356
- // setup our default error message array
2357
- $error_settings= json_encode(
2358
- array(
2359
- 'success' => '',
2360
- 'general-error' => '',
2361
- 'invalid-email' => '',
2362
- 'email-already-subscribed' => ''
2363
- )
2364
- );
2365
- /* End default values */
2366
- /* Working Insert Function */
2367
- $wpdb->insert(
2368
- $wpdb->prefix . 'yikes_easy_mc_forms',
2369
- array(
2370
- 'list_id' => $_POST['associated-list'],
2371
- 'form_name' => stripslashes( $_POST['form-name'] ),
2372
- 'form_description' => stripslashes( $_POST['form-description'] ),
2373
- 'fields' => '',
2374
- 'custom_styles' => 0,
2375
- 'custom_template' => 0,
2376
- 'send_welcome_email' => 1,
2377
- 'redirect_user_on_submit' => 0,
2378
- 'redirect_page' => '',
2379
- 'submission_settings' => $submission_settings,
2380
- 'optin_settings' => $optin_settings,
2381
- 'error_messages' => $error_settings,
2382
- 'custom_notifications' => '',
2383
- 'impressions' => 0,
2384
- 'submissions' => 0,
2385
- 'custom_fields' => '',
2386
- ),
2387
- array(
2388
- '%s', // list id
2389
- '%s', // form name
2390
- '%s', // form description
2391
- '%s', // fields
2392
- '%s', // custom styles
2393
- '%d', // custom template
2394
- '%d', // send welcome email
2395
- '%s', // redirect user
2396
- '%s', // redirect page
2397
- '%s', // submission
2398
- '%s', // optin
2399
- '%s', // error
2400
- '%s', // custom notifications
2401
- '%d', // impressions #
2402
- '%d', // submissions #
2403
- '%s', // custom fields
2404
- )
2405
- );
2406
-
2407
- // if an error occurs during the form creation process
2408
- if( $wpdb->insert_id == '0' ) {
2409
- // write it to the error log
2410
- // if the form was not created successfully
2411
- if( get_option( 'yikes-mailchimp-debug-status' , '' ) == '1' ) {
2412
- require_once YIKES_MC_PATH . 'includes/error_log/class-yikes-inc-easy-mailchimp-error-logging.php';
2413
- $error_logging = new Yikes_Inc_Easy_Mailchimp_Error_Logging();
2414
- $error_logging->yikes_easy_mailchimp_write_to_error_log( $wpdb->last_error , __( "Creating a new form" , 'yikes-inc-easy-mailchimp-extender' ) , __( "Forms" , 'yikes-inc-easy-mailchimp-extender' ) );
2415
- }
2416
- wp_redirect( esc_url_raw( admin_url( 'admin.php?page=yikes-mailchimp-edit-form&sql_error='.urlencode( $wpdb->last_error ) ) ) );
2417
- } else {
2418
- // redirect the user to the new form edit page
2419
- wp_redirect( esc_url_raw( admin_url( 'admin.php?page=yikes-mailchimp-edit-form&id='.$wpdb->insert_id ) ) );
2420
- }
2421
- exit();
2422
- die();
2423
- }
2424
-
2425
- /*
2426
- * Delete A Form !
2427
- * Probably Move these to its own file,
2428
- * and include it here for easy maintenance
2429
- * - must clean up db tables , ensure what data is going in and what is needed...
2430
- */
2431
- public function yikes_easy_mailchimp_delete_form() {
2432
- // grab & store our variables ( associated list & form name )
2433
- $nonce = $_REQUEST['nonce'];
2434
- $post_id_to_delete = $_REQUEST['mailchimp-form'];
2435
- // verify our nonce
2436
- if( ! wp_verify_nonce( $nonce, 'delete-mailchimp-form-'.$post_id_to_delete ) ) {
2437
- wp_die( __( "We've run into an error. The security check didn't pass. Please try again." , 'yikes-inc-easy-mailchimp-extender' ) , __( "Failed nonce validation" , 'yikes-inc-easy-mailchimp-extender' ) , array( 'response' => 500 , 'back_link' => true ) );
2438
- }
2439
- global $wpdb;
2440
- /* Working Insert Function */
2441
- $wpdb->delete(
2442
- $wpdb->prefix . 'yikes_easy_mc_forms',
2443
- array(
2444
- 'id' => $post_id_to_delete
2445
- ),
2446
- array(
2447
- '%d',
2448
- )
2449
- );
2450
- // redirect the user to the manage forms page, display confirmation
2451
- wp_redirect( esc_url_raw( admin_url( 'admin.php?page=yikes-inc-easy-mailchimp&deleted-form=true' ) ) );
2452
- exit();
2453
- die();
2454
- }
2455
-
2456
- /*
2457
- * Duplicate an entire form !
2458
- * Probably Move these to its own file,
2459
- */
2460
- public function yikes_easy_mailchimp_duplicate_form() {
2461
- // grab & store our variables ( associated list & form name )
2462
- $nonce = $_REQUEST['nonce'];
2463
- $post_id_to_clone = $_REQUEST['mailchimp-form'];
2464
- // verify our nonce
2465
- if( ! wp_verify_nonce( $nonce, 'duplicate-mailchimp-form-'.$post_id_to_clone ) ) {
2466
- wp_die( __( "We've run into an error. The security check didn't pass. Please try again." , 'yikes-inc-easy-mailchimp-extender' ) , __( "Failed nonce validation" , 'yikes-inc-easy-mailchimp-extender' ) , array( 'response' => 500 , 'back_link' => true ) );
2467
- }
2468
- global $wpdb;
2469
- /* Working Insert Function */
2470
- $form_data = $wpdb->get_row("SELECT * FROM " . $wpdb->prefix . "yikes_easy_mc_forms WHERE id = ".$post_id_to_clone."");
2471
- // create empty array to populate with row data
2472
- $data = array();
2473
- // build a data array to duplicate
2474
- foreach( $form_data as $id => $value ) {
2475
- // skip the ID field this is unique
2476
- if( $id != 'id' ) {
2477
- // append -Copy- to our new form
2478
- if( $id == 'form_name' ) {
2479
- $value = $value . ' - Copy -';
2480
- }
2481
- // reset the impressions and submissions back to 0
2482
- if( $id == 'impressions' || $id == 'submissions' ) {
2483
- $value = '0';
2484
- }
2485
-
2486
- // add data to our array
2487
- $data[$id] = $value;
2488
- }
2489
- }
2490
- // insert our new data
2491
- if( $wpdb->insert(
2492
- $wpdb->prefix . 'yikes_easy_mc_forms',
2493
- apply_filters( 'yikes-mailchimp-duplicate-form-data', $data )
2494
- ) === FALSE ) {
2495
- // redirect the user to the manage forms page, display error
2496
- wp_redirect( esc_url_raw( admin_url( 'admin.php?page=yikes-inc-easy-mailchimp&duplicated-form=false' ) ) );
2497
- } else {
2498
- // redirect the user to the manage forms page, display confirmation
2499
- wp_redirect( esc_url_raw( admin_url( 'admin.php?page=yikes-inc-easy-mailchimp&duplicated-form=true' ) ) );
2500
- }
2501
- exit();
2502
- die();
2503
- }
2504
-
2505
- /*
2506
- * Reset a forms impression stats
2507
- */
2508
- public function yikes_easy_mailchimp_reset_impression_stats() {
2509
- // grab & store our variables ( associated list & form name )
2510
- $nonce = $_REQUEST['nonce'];
2511
- $form_id_to_reset = $_REQUEST['mailchimp-form'];
2512
- // verify our nonce
2513
- if( ! wp_verify_nonce( $nonce, 'reset-stats-mailchimp-form-'.$form_id_to_reset ) ) {
2514
- wp_die( __( "We've run into an error. The security check didn't pass. Please try again." , 'yikes-inc-easy-mailchimp-extender' ) , __( "Failed nonce validation" , 'yikes-inc-easy-mailchimp-extender' ) , array( 'response' => 500 , 'back_link' => true ) );
2515
- }
2516
- global $wpdb;
2517
- /* Update 'Impressions/Submissions' */
2518
- if( $wpdb->update(
2519
- $wpdb->prefix . 'yikes_easy_mc_forms',
2520
- array(
2521
- 'impressions' => 0,
2522
- 'submissions' => 0
2523
- ),
2524
- array( 'ID' => $form_id_to_reset )
2525
- ) === FALSE ) {
2526
- // redirect the user to the manage forms page, display error
2527
- wp_redirect( esc_url_raw( admin_url( 'admin.php?page=yikes-inc-easy-mailchimp&reset-stats=false' ) ) );
2528
- } else {
2529
- // redirect the user to the manage forms page, display confirmation
2530
- wp_redirect( esc_url_raw( admin_url( 'admin.php?page=yikes-inc-easy-mailchimp&reset-stats=true' ) ) );
2531
- }
2532
- exit();
2533
- die();
2534
- }
2535
-
2536
- /*
2537
- * Update an entire form !
2538
- * Probably Move these to its own file,
2539
- */
2540
- public function yikes_easy_mailchimp_update_form() {
2541
- // grab & store our variables ( associated list & form name )
2542
- $nonce = $_REQUEST['nonce'];
2543
- $form_id = $_REQUEST['id'];
2544
-
2545
- // store our values!
2546
- $list_id = $_POST['associated-list'];
2547
- $form_name = stripslashes( $_POST['form-name'] );
2548
- $form_description = sanitize_text_field( stripslashes( $_POST['form-description'] ) );
2549
- $send_welcome_email = $_POST['send-welcome-email'];
2550
- $redirect_user_on_submit = $_POST['redirect-user-on-submission'];
2551
- $redirect_page = $_POST['redirect-user-to-selection'];
2552
- if( isset( $_POST['custom-styles'] ) ) {
2553
- $custom_styles = $_POST['custom-styles'];
2554
- }
2555
-
2556
- // stripslashes_deep on save, to prevent foreign languages from added excessive backslashes
2557
- $assigned_fields = isset( $_POST['field'] ) ? json_encode( stripslashes_deep( $_POST['field'] ) ) : '';
2558
-
2559
- // setup our custom styles serialized array
2560
- if( isset( $custom_styles ) ) {
2561
- $custom_styles = json_encode( array(
2562
- 'active' => $_POST['custom-styles'],
2563
- 'background_color' => $_POST['form-background-color'],
2564
- 'font_color' => $_POST['form-font-color'],
2565
- 'submit_button_color' => $_POST['form-submit-button-color'],
2566
- 'submit_button_text_color' => $_POST['form-submit-button-text-color'],
2567
- 'form_padding' => $_POST['form-padding'],
2568
- 'form_width' => $_POST['form-width'],
2569
- 'form_alignment' => $_POST['form-alignment'],
2570
- 'label_visible' => $_POST['label-visible']
2571
- ) );
2572
- } else {
2573
- $custom_styles = 0;
2574
- }
2575
-
2576
- // setup our submission settings serialized array
2577
- $submission_settings = json_encode(
2578
- array(
2579
- 'ajax' => $_POST['form-ajax-submission'],
2580
- 'redirect_on_submission' => $_POST['redirect-user-on-submission'],
2581
- 'redirect_page' => $_POST['redirect-user-to-selection'],
2582
- 'custom_redirect_url' => esc_url( $_POST['custom-redirect-url'] ),
2583
- 'hide_form_post_signup' => $_POST['hide-form-post-signup'],
2584
- 'replace_interests' => $_POST['replace-interest-groups'],
2585
- )
2586
- );
2587
-
2588
- // setup our opt-in settings serialized array
2589
- $optin_settings = json_encode(
2590
- array(
2591
- 'optin' => $_POST['single-double-optin'],
2592
- 'update_existing_user' => $_POST['update-existing-user'],
2593
- 'send_welcome_email' => $_POST['send-welcome-email'],
2594
- )
2595
- );
2596
-
2597
- // setup our error settings serialized array
2598
- $error_settings = json_encode(
2599
- array(
2600
- 'success' => trim( $_POST['yikes-easy-mc-success-message'] ) ? trim( stripslashes( $_POST['yikes-easy-mc-success-message'] ) ) : '',
2601
- 'general-error' => trim( $_POST['yikes-easy-mc-general-error-message'] ) ? trim( stripslashes( $_POST['yikes-easy-mc-general-error-message'] ) ) : '',
2602
- 'invalid-email' => trim( $_POST['yikes-easy-mc-invalid-email-message'] ) ? trim( stripslashes( $_POST['yikes-easy-mc-invalid-email-message'] ) ) : '',
2603
- 'already-subscribed' => trim( $_POST['yikes-easy-mc-user-subscribed-message'] ) ? trim( stripslashes( $_POST['yikes-easy-mc-user-subscribed-message'] ) ) : '',
2604
- )
2605
- );
2606
-
2607
- // Setup the new form settings array
2608
- // @since 6.0.3.8
2609
- // To Do: Combine date & time so it's a single unix timestamp
2610
- $form_settings = json_encode(
2611
- array(
2612
- 'yikes-easy-mc-form-class-names' => trim( $_POST['yikes-easy-mc-form-class-names'] ),
2613
- 'yikes-easy-mc-inline-form' => $_POST['yikes-easy-mc-inline-form'][0],
2614
- 'yikes-easy-mc-submit-button-type' => $_POST['yikes-easy-mc-submit-button-type'][0],
2615
- 'yikes-easy-mc-submit-button-text' => trim( $_POST['yikes-easy-mc-submit-button-text'] ),
2616
- 'yikes-easy-mc-submit-button-image' => esc_url( trim( $_POST['yikes-easy-mc-submit-button-image'] ) ),
2617
- 'yikes-easy-mc-submit-button-classes' => trim( $_POST['yikes-easy-mc-submit-button-classes'] ),
2618
- 'yikes-easy-mc-form-schedule' => ( isset( $_POST['yikes-easy-mc-form-schedule'] ) ) ? '1' : '0',
2619
- 'yikes-easy-mc-form-restriction-start' => strtotime( $_POST['yikes-easy-mc-form-restriction-start-date'] . ' ' . $_POST['yikes-easy-mc-form-restriction-start-time'] ),
2620
- 'yikes-easy-mc-form-restriction-end' => strtotime( $_POST['yikes-easy-mc-form-restriction-end-date'] . ' ' . $_POST['yikes-easy-mc-form-restriction-end-time'] ),
2621
- 'yikes-easy-mc-form-restriction-pending-message' => trim( $_POST['yikes-easy-mc-form-restriction-pending-message'] ),
2622
- 'yikes-easy-mc-form-restriction-expired-message' => trim( $_POST['yikes-easy-mc-form-restriction-expired-message'] ),
2623
- 'yikes-easy-mc-form-login-required' => ( isset( $_POST['yikes-easy-mc-form-login-required'] ) ) ? '1' : '0',
2624
- 'yikes-easy-mc-form-restriction-login-message' => trim( $_POST['yikes-easy-mc-form-restriction-login-message'] ),
2625
- )
2626
- );
2627
-
2628
- // setup and store our notification array
2629
- $custom_notifications = isset( $_POST['custom-notification'] ) ? stripslashes( json_encode( $_POST['custom-notification'] ) ) : '';
2630
-
2631
- // additional custom fields (extensions / user defined fields)
2632
- if( isset( $_POST['custom-field'] ) ) {
2633
- $custom_field_array = array();
2634
- foreach( $_POST['custom-field'] as $custom_field => $custom_value ) {
2635
- if( is_array( $custom_value ) ) {
2636
- $custom_field_array[$custom_field] = array_filter( stripslashes_deep( $custom_value ) ); // array_filters to remove empty items (don't save them!)
2637
- } else {
2638
- $custom_field_array[$custom_field] = stripslashes( $custom_value );
2639
- }
2640
- }
2641
- $custom_fields = json_encode( $custom_field_array );
2642
- } else {
2643
- $custom_fields = '';
2644
- }
2645
-
2646
- // verify our nonce
2647
- if( ! wp_verify_nonce( $nonce, 'update-mailchimp-form-'.$form_id ) ) {
2648
- wp_die( __( "We've run into an error. The security check didn't pass. Please try again." , 'yikes-inc-easy-mailchimp-extender' ) , __( "Failed nonce validation" , 'yikes-inc-easy-mailchimp-extender' ) , array( 'response' => 500 , 'back_link' => true ) );
2649
- }
2650
-
2651
- global $wpdb;
2652
- /* Working Insert Function */
2653
- // $form_data = $wpdb->get_row("SELECT * FROM " . $wpdb->prefix . "yikes_easy_mc_forms WHERE id = ".$form_id."");
2654
- $wpdb->update(
2655
- $wpdb->prefix . 'yikes_easy_mc_forms',
2656
- array(
2657
- 'list_id' => $list_id,
2658
- 'form_name' => $form_name,
2659
- 'form_description' => $form_description,
2660
- 'fields' => $assigned_fields,
2661
- 'custom_styles' => $custom_styles,
2662
- 'custom_template' => 0,
2663
- 'send_welcome_email' => $send_welcome_email,
2664
- 'redirect_user_on_submit' => $redirect_user_on_submit,
2665
- 'redirect_page' => $redirect_page,
2666
- 'submission_settings' => $submission_settings,
2667
- 'optin_settings' => $optin_settings,
2668
- 'error_messages' => $error_settings,
2669
- 'form_settings' => $form_settings,
2670
- 'custom_notifications' => $custom_notifications,
2671
- 'custom_fields' => $custom_fields,
2672
- ),
2673
- array( 'ID' => $form_id ),
2674
- array(
2675
- '%s', // list id
2676
- '%s', // form name
2677
- '%s', // form description
2678
- '%s', // fields
2679
- '%s', // custom styles
2680
- '%d', //custom template
2681
- '%d', // send welcome email
2682
- '%s', // redirect user
2683
- '%s', // redirect page
2684
- '%s', // submission
2685
- '%s', // opt-in
2686
- '%s', // error
2687
- '%s', // custom notifications
2688
- '%s', // custom fields
2689
- ),
2690
- array( '%d' )
2691
- );
2692
-
2693
- /* Custom action hook which allows users to update specific options when a form is updated - used in add ons */
2694
- do_action( 'yikes-mailchimp-save-form', $form_id, json_decode( $custom_fields, true ) );
2695
-
2696
- // redirect the user to the manage forms page, display confirmation
2697
- wp_redirect( esc_url_raw( admin_url( 'admin.php?page=yikes-mailchimp-edit-form&id=' . $form_id . '&updated-form=true' ) ) );
2698
- exit();
2699
- die();
2700
- }
2701
-
2702
- /* Unsubscribe a given user from our list */
2703
- public function yikes_easy_mailchimp_unsubscribe_user() {
2704
- $nonce = $_REQUEST['nonce'];
2705
- $list_id = $_REQUEST['mailchimp-list'];
2706
- $email_id = $_REQUEST['email_id'];
2707
- // verify our nonce
2708
- if( ! wp_verify_nonce( $nonce, 'unsubscribe-user-' . $email_id ) ) {
2709
- wp_die( __( "We've run into an error. The security check didn't pass. Please try again." , 'yikes-inc-easy-mailchimp-extender' ) , __( "Failed nonce validation" , 'yikes-inc-easy-mailchimp-extender' ) , array( 'response' => 500 , 'back_link' => true ) );
2710
- }
2711
- // only re-run the API request if our API key has changed
2712
- // initialize MailChimp Class
2713
- $api_key = trim( get_option( 'yikes-mc-api-key' , '' ) );
2714
- $dash_position = strpos( $api_key, '-' );
2715
- if( $dash_position !== false ) {
2716
- $api_endpoint = 'https://' . substr( $api_key, $dash_position + 1 ) . '.api.mailchimp.com/2.0/lists/unsubscribe.json';
2717
- }
2718
- $response = wp_remote_post( $api_endpoint, array(
2719
- 'body' => array(
2720
- 'apikey' => $api_key,
2721
- 'id' => $list_id,
2722
- 'email' => array( 'leid' => $email_id ),
2723
- 'send_goodbye' => false,
2724
- 'send_notify' => false
2725
- ),
2726
- 'timeout' => 10,
2727
- 'sslverify' => apply_filters( 'yikes-mailchimp-sslverify', true )
2728
- ) );
2729
- if( ! is_wp_error( $response ) ) {
2730
- $response_body = json_decode( wp_remote_retrieve_body( $response ), true );
2731
- if( isset( $response_body['error'] ) ) {
2732
- if( WP_DEBUG || get_option( 'yikes-mailchimp-debug-status' , '' ) == '1' ) {
2733
- require_once YIKES_MC_PATH . 'includes/error_log/class-yikes-inc-easy-mailchimp-error-logging.php';
2734
- $error_logging = new Yikes_Inc_Easy_Mailchimp_Error_Logging();
2735
- $error_logging->yikes_easy_mailchimp_write_to_error_log( $response_body['error'], __( "Unsubscribe User" , 'yikes-inc-easy-mailchimp-extender' ) , __( "Manage List Page" , 'yikes-inc-easy-mailchimp-extender' ) );
2736
- }
2737
- }
2738
- wp_redirect( esc_url_raw( admin_url( 'admin.php?page=yikes-mailchimp-view-list&list-id=' . $list_id . '&user-unsubscribed=true' ) ) );
2739
- exit;
2740
- }
2741
-
2742
- }
2743
-
2744
- public function yikes_easy_mailchimp_create_missing_error_log() {
2745
- // grab our nonnce
2746
- $nonce = $_REQUEST['nonce'];
2747
- // validate nonce
2748
- if( !wp_verify_nonce( $nonce, 'create_error_log' ) ) {
2749
- wp_die( __( "We've run into an error. The security check didn't pass. Please try again." , 'yikes-inc-easy-mailchimp-extender' ) , __( "Failed nonce validation" , 'yikes-inc-easy-mailchimp-extender' ) , array( 'response' => 500 , 'back_link' => true ) );
2750
- }
2751
- // setup the path to the error log
2752
- $error_log = fopen( plugin_dir_path( __FILE__ ) . '../includes/error_log/yikes-easy-mailchimp-error-log.php' , 'w' );
2753
- try {
2754
- // create the file
2755
- fwrite( $error_log , '' );
2756
- // close out
2757
- fclose( $error_log );
2758
- wp_redirect( esc_url_raw( admin_url( 'admin.php?page=yikes-inc-easy-mailchimp-settings&section=debug-settings&error_log_created=true' ) ) );
2759
- } catch ( Exception $e ) {
2760
- wp_redirect( esc_url_raw( admin_url( 'admin.php?page=yikes-inc-easy-mailchimp-settings&section=debug-settings&error_log_created=false&error_message='.urlencode( $e->getMessage() ) ) ) );
2761
- }
2762
- }
2763
-
2764
- /*
2765
- * Clear Transient Data !
2766
- * Probably Move these to its own file,
2767
- */
2768
- public function yikes_easy_mailchimp_clear_transient_data() {
2769
- // grab & store our variables ( associated list & form name )
2770
- $nonce = $_REQUEST['nonce'];
2771
- // verify our nonce
2772
- if( ! wp_verify_nonce( $nonce, 'clear-mc-transient-data' ) ) {
2773
- wp_die( __( "We've run into an error. The security check didn't pass. Please try again." , 'yikes-inc-easy-mailchimp-extender' ) , __( "Failed nonce validation" , 'yikes-inc-easy-mailchimp-extender' ) , array( 'response' => 500 , 'back_link' => true ) );
2774
- }
2775
- // delete all of the integration settings list data in the cache
2776
- $list_ids = $this->get_mailchimp_list_ids_on_account();
2777
- // confirm the list IDs was returned and is not empty
2778
- if( isset( $list_ids ) && ! empty( $list_ids ) ) {
2779
- foreach( $list_ids as $id ) {
2780
- // loop over each interest group and delete the transient associated with it
2781
- // this is created & stored on the integration list page
2782
- // id = groupID_interest_group
2783
- delete_transient( $id . '_interest_group' );
2784
- }
2785
- }
2786
- // Delete list data transient
2787
- delete_transient( 'yikes-easy-mailchimp-list-data' );
2788
- // Delete list account data
2789
- delete_transient( 'yikes-easy-mailchimp-account-data' );
2790
- // Delete list account data
2791
- delete_transient( 'yikes-easy-mailchimp-profile-data' );
2792
- // redirect the user to the manage forms page, display confirmation
2793
- wp_redirect( esc_url_raw( admin_url( 'admin.php?page=yikes-inc-easy-mailchimp-settings&section=api-cache-settings&transient-cleared=true' ) ) );
2794
- exit;
2795
- }
2796
-
2797
- /**
2798
- * Return an array of MailChimp lists associated with this account
2799
- *
2800
- * Used when deleting the sites MailChimp cache stored
2801
- * @since 6.0.2
2802
- * @return $list_id_array - array of list id's to loop over
2803
- */
2804
- public function get_mailchimp_list_ids_on_account() {
2805
- $api_key = trim( get_option( 'yikes-mc-api-key' , '' ) );
2806
- if( ! $api_key ) {
2807
- // if no api key is set/site is not connected, return an empty array
2808
- return array();
2809
- }
2810
- $dash_position = strpos( $api_key, '-' );
2811
- if( $dash_position !== false ) {
2812
- $api_endpoint = 'https://' . substr( $api_key, $dash_position + 1 ) . '.api.mailchimp.com/2.0/lists/list.json';
2813
- }
2814
- $mailchimp_lists = wp_remote_post( $api_endpoint, array(
2815
- 'body' => array(
2816
- 'apikey' => $api_key,
2817
- 'limit' => 100
2818
- ),
2819
- 'timeout' => 10,
2820
- 'sslverify' => apply_filters( 'yikes-mailchimp-sslverify', true )
2821
- ) );
2822
- if( ! is_wp_error( $mailchimp_lists ) ) {
2823
- $list_data = json_decode( wp_remote_retrieve_body( $mailchimp_lists ), true );
2824
- if( isset( $list_data['error'] ) ) {
2825
- if( WP_DEBUG || get_option( 'yikes-mailchimp-debug-status' , '' ) == '1' ) {
2826
- require_once YIKES_MC_PATH . 'includes/error_log/class-yikes-inc-easy-mailchimp-error-logging.php';
2827
- $error_logging = new Yikes_Inc_Easy_Mailchimp_Error_Logging();
2828
- $error_logging->yikes_easy_mailchimp_write_to_error_log( $list_data['error'], __( "Get List IDs" , 'yikes-inc-easy-mailchimp-extender' ) , __( "Clear API Cache" , 'yikes-inc-easy-mailchimp-extender' ) );
2829
- }
2830
- }
2831
- $mail_chimp_list_ids = array();
2832
- if( $mailchimp_lists ) {
2833
- foreach( $list_data as $list ) {
2834
- $mail_chimp_list_ids[] = $list['id'];
2835
- }
2836
- return $mail_chimp_list_ids;
2837
- } else {
2838
- return array();
2839
- }
2840
- }
2841
- return;
2842
- }
2843
-
2844
- /*
2845
- * Include our main Helper class file
2846
- * @since 6.0
2847
- */
2848
- public function yikes_mailchimp_load_helper_class() {
2849
- // check to see if it's already loaded up
2850
- if( !class_exists( 'Yikes_Inc_Easy_Mailchimp_Forms_Helper' ) ) {
2851
- // Include our main helper class file
2852
- include_once( YIKES_MC_PATH . 'admin/partials/helpers/init.php' );
2853
- }
2854
- }
2855
-
2856
- /*
2857
- * Alter the color scheme based on the current user selection (this is done to help integrate the plugin into the dashboard more seamlessly)
2858
- *
2859
- * @since 0.1
2860
- * @order requires that yikes-inc-easy-mailchimp-extender-admin.min.css be enqueued, so we can override the defaults (handle: yikes-inc-easy-mailchimp-extender-admin)
2861
- * @retutrn print out custom styles to the admin header to alter the defualt blue color
2862
- */
2863
- public function alter_yikes_easy_mc_color_scheme() {
2864
- // get the current set color scheme for the logged in user
2865
- $current_color_scheme = get_user_option( 'admin_color' );
2866
- // switch over each color scheme, and set our variable
2867
- switch( $current_color_scheme ) {
2868
- default:
2869
- case 'fresh': // default blue (defined by this plugin)
2870
- $main_color = '#00a0d2';
2871
- break;
2872
- case 'light': // light grey
2873
- $main_color = '#E5E5E5';
2874
- break;
2875
- case 'blue': // light blue
2876
- $main_color = '#52ACCC';
2877
- break;
2878
- case 'coffee': // light brown-ish
2879
- $main_color = '#59524C';
2880
- break;
2881
- case 'ectoplasm': // purple
2882
- $main_color = '#523F6D';
2883
- break;
2884
- case 'midnight': // black
2885
- $main_color = '#363B3F';
2886
- break;
2887
- case 'ocean': // green/teal-ish
2888
- $main_color = '#738E96';
2889
- break;
2890
- case 'sunrish': // red/orange
2891
- $main_color = '#CF4944';
2892
- break;
2893
- }
2894
- ob_start();
2895
- ?>
2896
- <style>
2897
- .yikes-easy-mc-postbox h3,
2898
- .column-columnname .form-id-container,
2899
- .mv_ig_list .nav-tab-active {
2900
- background: <?php echo $main_color; ?>;
2901
- }
2902
- .mv_ig_list .arrow-down {
2903
- border-top: 9pt solid <?php echo $main_color; ?>;
2904
- }
2905
- </style>
2906
- <?php
2907
- $override_admin_styles = ob_get_clean();
2908
- // add our inline styles
2909
- echo $override_admin_styles;
2910
- }
2911
-
2912
- /**
2913
- * Hook in and display our support page/knowledge base articles
2914
- * on the support page
2915
- * @since 6.0.3.8
2916
- */
2917
- public function hook_and_display_kb_article_RSS() {
2918
- include_once( YIKES_MC_PATH . 'admin/partials/helpers/knowledge-base-articles-RSS.php' );
2919
- }
2920
-
2921
- /**
2922
- * Check the users version number, and display a notice to upgrade the databse if needed
2923
- * @since 6.0.4
2924
- */
2925
- public function check_yikes_mc_table_version() {
2926
- if( get_option( 'yikes_mc_database_version', '0.00' ) < '1.0' ) {
2927
- require_once YIKES_MC_PATH . 'includes/class-yikes-inc-easy-mailchimp-extender-activator.php';
2928
- global $wpdb;
2929
- Yikes_Inc_Easy_Mailchimp_Extender_Activator::_activate_yikes_easy_mailchimp( $wpdb );
2930
- // update the database option
2931
- update_option( 'yikes_mc_database_version', '1.0' );
2932
- }
2933
- }
2934
-
2935
- /*
2936
- * Process [yikes-mailchimp-form-description] into the shortcode
2937
- * @since 6.0.4.4
2938
- */
2939
- public function process_subscriber_count_shortcode_in_form_descriptions( $form_description, $form_id ) {
2940
- $form_description = str_replace( '[yikes-mailchimp-subscriber-count]', do_shortcode( '[yikes-mailchimp-subscriber-count form="' . $form_id . '"]' ), $form_description );
2941
- return $form_description;
2942
- }
2943
-
2944
- /*
2945
- * Generate the sidebar advertisment on the 'Edit Form' page
2946
- * @since 6.0.3
2947
- */
2948
- public function generate_edit_forms_upsell_ad() {
2949
- /*
2950
- * SimplePie strips out all query strings
2951
- * we had to implement a workaround
2952
- * https://github.com/simplepie/simplepie/issues/317
2953
- */
2954
- include_once( ABSPATH . WPINC . '/feed.php' );
2955
- $rss = fetch_feed( esc_url( 'http://yikesplugins.com/feed/?post_type=product_ads&genre=easy-forms-for-mailchimp' ) );
2956
- $maxitems = 0;
2957
- if ( ! is_wp_error( $rss ) ) { // Checks that the object is created correctly
2958
- // Figure out how many total items there are, but limit it to 1.
2959
- $maxitems = $rss->get_item_quantity( 1 );
2960
- // Build an array of all the items, starting with element 0 (first element).
2961
- $rss_items = $rss->get_items( 0, $maxitems );
2962
- } else {
2963
- return $feed = new WP_Error( 'Simple Pie RSS Error', $feed->error() );
2964
- }
2965
- // loop over returned results
2966
- foreach ( $rss_items as $add_on ) {
2967
- $add_on_desc = $add_on->get_content();
2968
- ?>
2969
- <h3><?php echo $add_on->get_title(); ?></h3>
2970
- <div class="inside">
2971
- <?php
2972
- echo $add_on_desc;
2973
- ?>
2974
- </div>
2975
- <?php
2976
- }
2977
- }
2978
-
2979
- }
1
+ <?php
2
+ /**
3
+ * The admin-specific functionality of the plugin.
4
+ *
5
+ * Defines the plugin name, version, and two examples hooks for how to
6
+ * enqueue the admin-specific stylesheet and JavaScript.
7
+ *
8
+ * @package Yikes_Inc_Easy_Mailchimp_Forms
9
+ * @subpackage Yikes_Inc_Easy_Mailchimp_Forms/admin
10
+ * @author YIKES Inc. <info@yikesinc.com>
11
+ */
12
+ class Yikes_Inc_Easy_Mailchimp_Forms_Admin {
13
+ /**
14
+ * The ID of this plugin.
15
+ *
16
+ * @since 1.0.0
17
+ * @access private
18
+ * @var string $yikes_inc_easy_mailchimp_extender The ID of this plugin.
19
+ */
20
+ private $yikes_inc_easy_mailchimp_extender;
21
+ /**
22
+ * The version of this plugin.
23
+ *
24
+ * @since 1.0.0
25
+ * @access private
26
+ * @var string $version The current version of this plugin.
27
+ */
28
+ private $version;
29
+ /**
30
+ * Initialize the class and set its properties.
31
+ *
32
+ * @since 1.0.0
33
+ * @param string $yikes_inc_easy_mailchimp_extender The name of this plugin.
34
+ * @param string $version The version of this plugin.
35
+ */
36
+ public function __construct( $yikes_inc_easy_mailchimp_extender, $version ) {
37
+
38
+ $this->yikes_inc_easy_mailchimp_extender = $yikes_inc_easy_mailchimp_extender;
39
+ $this->version = $version;
40
+ // check for old plugin options and migrate if exist
41
+ add_action( 'admin_menu' , array( $this , 'register_admin_pages' ) , 11 );
42
+ // check for old plugin options and migrate if exist
43
+ add_action( 'admin_init' , array( $this , 'check_for_old_yks_mc_options' ) );
44
+ // Ajax function to update new options...
45
+ add_action( 'wp_ajax_migrate_old_plugin_settings', array( $this , 'migrate_archived_options' ) );
46
+ // Ajax function to migrate our forms
47
+ add_action( 'wp_ajax_migrate_prevoious_forms', array( $this , 'migrate_previously_setup_forms' ) );
48
+ // fix menu icon spacing
49
+ add_action( 'admin_head' , array( $this , 'fix_menu_icon_spacing' ) );
50
+ // register our plugin settings
51
+ add_action( 'admin_init', array( $this , 'yikes_easy_mc_settings_init' ) );
52
+ // plugin redirect on activation
53
+ add_action( 'admin_init' , array( $this , 'yikes_easy_mc_activation_redirect' ) );
54
+ // Include Third Party Extensions
55
+ include_once( YIKES_MC_PATH . 'includes/third-party-integrations/third-party-init.php' );
56
+ // Include our dashboard widget class
57
+ include_once( YIKES_MC_PATH . 'admin/partials/dashboard-widgets/class.list-activity-widget.php' );
58
+ // Include our front end widget class
59
+ include_once( YIKES_MC_PATH . 'admin/partials/front-end-widgets/front-end-widget-form.php' );
60
+ // Include our ajax processing class
61
+ include_once( YIKES_MC_PATH . 'admin/partials/ajax/class.ajax.php' );
62
+ // load up our helper class
63
+ add_action( 'admin_init' , array( $this , 'yikes_mailchimp_load_helper_class' ) );
64
+ // process the subscriber count shortcode in form descriptions
65
+ add_action( 'yikes-mailchimp-form-description', array( $this, 'process_subscriber_count_shortcode_in_form_descriptions' ), 10, 2 );
66
+ /***********************/
67
+ /** Create A Form **/
68
+ /**********************/
69
+ if ( isset( $_REQUEST[ 'action' ] ) && $_REQUEST[ 'action' ] == 'yikes-easy-mc-create-form' ) {
70
+ add_action( 'init' , array( $this , 'yikes_easy_mailchimp_create_form' ) );
71
+ }
72
+ /***********************/
73
+ /** Delete A Form **/
74
+ /**********************/
75
+ if ( isset( $_REQUEST[ 'action' ] ) && $_REQUEST[ 'action' ] == 'yikes-easy-mc-delete-form' ) {
76
+ add_action( 'init' , array( $this , 'yikes_easy_mailchimp_delete_form' ) );
77
+ }
78
+ /**********************************/
79
+ /** Duplicate/Clone A Form **/
80
+ /********************************/
81
+ if ( isset( $_REQUEST[ 'action' ] ) && $_REQUEST[ 'action' ] == 'yikes-easy-mc-duplicate-form' ) {
82
+ add_action( 'init' , array( $this , 'yikes_easy_mailchimp_duplicate_form' ) );
83
+ }
84
+ /*************************************/
85
+ /** Reset Form Impression Stats **/
86
+ /***********************************/
87
+ if ( isset( $_REQUEST[ 'action' ] ) && $_REQUEST[ 'action' ] == 'yikes-easy-mc-reset-stats' ) {
88
+ add_action( 'init' , array( $this , 'yikes_easy_mailchimp_reset_impression_stats' ) );
89
+ }
90
+ /**********************************/
91
+ /** Update A Form **/
92
+ /********************************/
93
+ if ( isset( $_REQUEST[ 'action' ] ) && $_REQUEST[ 'action' ] == 'yikes-easy-mc-update-form' ) {
94
+ add_action( 'init' , array( $this , 'yikes_easy_mailchimp_update_form' ) );
95
+ }
96
+ /**************************************************/
97
+ /** Clear Store MailChimp Transient Data **/
98
+ /*************************************************/
99
+ if ( isset( $_REQUEST[ 'action' ] ) && $_REQUEST[ 'action' ] == 'yikes-easy-mc-clear-transient-data' ) {
100
+ add_action( 'init' , array( $this , 'yikes_easy_mailchimp_clear_transient_data' ) );
101
+ }
102
+ /*******************************************/
103
+ /** Remove a user from a mailing list **/
104
+ /*****************************************/
105
+ if ( isset( $_REQUEST[ 'action' ] ) && $_REQUEST[ 'action' ] == 'yikes-easy-mc-unsubscribe-user' ) {
106
+ add_action( 'init' , array( $this , 'yikes_easy_mailchimp_unsubscribe_user' ) );
107
+ }
108
+ /*******************************************/
109
+ /** Create misisng error log file **/
110
+ /*****************************************/
111
+ if ( isset( $_REQUEST[ 'action' ] ) && $_REQUEST[ 'action' ] == 'yikes-easy-mc-create-error-log' ) {
112
+ add_action( 'init' , array( $this , 'yikes_easy_mailchimp_create_missing_error_log' ) );
113
+ }
114
+ /*******************************************/
115
+ /** TinyMCE Initialization Functions **/
116
+ /*****************************************/
117
+ add_action( 'admin_head' , array( $this, 'add_tinyMCE_buttons' ) );
118
+ // pass our lists data to tinyMCE button for use
119
+ foreach ( array('post.php','post-new.php') as $hook ) {
120
+ add_action( "admin_head-$hook", array( $this, 'tinymce_yikes_easy_mc' ) );
121
+ }
122
+ // display an admin notice for users on PHP < 5.3
123
+ if( phpversion() < '5.3' ) {
124
+ add_action( "admin_notices", array( $this, 'display_php_warning' ), 999 );
125
+ }
126
+ // two week , dismissable notification - check the users plugin installation date
127
+ add_action( 'admin_init', array( $this , 'yikes_easy_mailchimp_check_installation_date' ) );
128
+ // dismissable notice admin side
129
+ add_action( 'admin_init', array( $this , 'yikes_easy_mailchimp_stop_bugging_me' ), 5 );
130
+ /**************************************************/
131
+ /** Clear MailChimp Error Log Data **/
132
+ /*************************************************/
133
+ if ( isset( $_REQUEST[ 'action' ] ) && $_REQUEST[ 'action' ] == 'yikes-easy-mc-clear-error-log' ) {
134
+ add_action( 'init' , array( $this , 'yikes_easy_mailchimp_clear_error_log' ) );
135
+ }
136
+ /*********************************************/
137
+ /** Export MailChimp Opt-in Forms **/
138
+ /*******************************************/
139
+ if ( isset( $_REQUEST[ 'action' ] ) && $_REQUEST[ 'action' ] == 'yikes-easy-mc-export-forms' ) {
140
+ add_action( 'init' , array( $this , 'yikes_easy_mailchimp_export_forms' ) );
141
+ }
142
+ /*********************************************/
143
+ /** Export Plugin Settings **/
144
+ /*******************************************/
145
+ if ( isset( $_REQUEST[ 'action' ] ) && $_REQUEST[ 'action' ] == 'yikes-easy-mc-export-settings' ) {
146
+ add_action( 'init' , array( $this , 'yikes_easy_mailchimp_export_plugin_settings' ) );
147
+ }
148
+ /*******************************************/
149
+ /** Import Class Inclusion **/
150
+ /*****************************************/
151
+ if ( isset( $_REQUEST[ 'action' ] ) && $_REQUEST[ 'action' ] == 'yikes-easy-mc-import-forms' ) {
152
+ add_action( 'init' , array( $this , 'yikes_easy_mailchimp_import_forms' ) );
153
+ }
154
+ /*******************************************/
155
+ /** Premium Support Request **/
156
+ /*****************************************/
157
+ if ( isset( $_POST[ 'submit-premium-support-request' ] ) ) {
158
+ add_action( 'init' , array( $this , 'yikes_easy_mailchimp_premium_support_request' ) );
159
+ }
160
+ /****************************************/
161
+ /** Dismiss Options Migrations **/
162
+ /****************************************/
163
+ if( isset( $_REQUEST['dismiss_migration_nonce'] ) ) {
164
+ add_action( 'init' , array( $this , 'yikes_easy_mailchimp_dismiss_option_migrate' ) );
165
+ }
166
+ /** Parse default value into usable dynamic data **/
167
+ add_filter( 'yikes-mailchimp-process-default-tag' , array( $this , 'parse_mailchimp_default_tag' ) );
168
+ /** Add a disclaimer to ensure that we let people know we are not endorsed/backed by MailChimp at all **/
169
+ add_filter( 'admin_footer_text', array( $this, 'yikes_easy_forms_admin_disclaimer' ) );
170
+ /** Add custom plugin action links **/
171
+ add_filter( 'plugin_action_links_yikes-inc-easy-mailchimp-extender/yikes-inc-easy-mailchimp-extender.php', array( $this, 'easy_forms_plugin_action_links' ) );
172
+ /* Alter the color scheme based on the users selection */
173
+ add_action( 'admin_print_scripts', array( $this, 'alter_yikes_easy_mc_color_scheme' ) );
174
+ // hook in and display our knowledge base articles on the support page
175
+ add_action( 'yikes-mailchimp-support-page', array( $this, 'hook_and_display_kb_article_RSS' ) );
176
+ // ensure that the upgrade went smoothly, else we have to let the user know we need to upgrade the database
177
+ // after upgrading f rom 6.0.3.7 users need to upgrade the database as well
178
+ add_action( 'plugins_loaded', array( $this, 'check_yikes_mc_table_version' ) );
179
+ }
180
+
181
+ /*
182
+ * Add custom action links on plugins.php
183
+ * @ param array $links Pre-existing plugin action links
184
+ * @ return array $links New array of plugin actions
185
+ */
186
+ public function easy_forms_plugin_action_links( $links ) {
187
+ $links[] = '<a href="'. esc_url( get_admin_url(null, 'admin.php?page=yikes-inc-easy-mailchimp-settings') ) .'">' . __( 'Settings', 'yikes-inc-easy-mailchimp-extender' ) . '</a>';
188
+ $links[] = '<a href="' . esc_url( 'http://www.yikesplugins.com?utm_source=plugins-page&utm_medium=plugin-row&utm_campaign=admin' ) . '" target="_blank">' . __( 'More plugins by YIKES' , 'yikes-inc-easy-mailchimp-extender' ) . '</a>';
189
+ return $links;
190
+ }
191
+
192
+ /**
193
+ * Add a disclaimer to the admin footer for all YIKES pages to ensure that users understand there is no coorelation between this plugin and MailChimp.
194
+ * This plugin simply provides the service of linking MailChimp with your site.
195
+ *
196
+ * @since 6.0
197
+ *
198
+ * @param string $footer_text The existing footer text
199
+ *
200
+ * @return string
201
+ */
202
+ public function yikes_easy_forms_admin_disclaimer( $footer_text ) {
203
+ $page = get_current_screen();
204
+ $base = $page->base;
205
+ if ( strpos( $base, 'yikes-' ) !== false ) {
206
+ $disclaimer_text = sprintf( '<em>' . __( 'Disclaimer: <strong>Easy Forms for MailChimp by YIKES</strong> is in no way endorsed, affiliated or backed by MailChimp, or its parent company Rocket Science Group.', 'yikes-inc-easy-mailchimp-extender' ), '<a href="https://wordpress.org/support/view/plugin-reviews/give?filter=5#postform" target="_blank" class="give-rating-link" data-rated="' . __( 'Thanks :)', 'yikes-inc-easy-mailchimp-extender' ) . '">', '</a></em>' );
207
+ return $disclaimer_text;
208
+ } else {
209
+ return $footer_text;
210
+ }
211
+ }
212
+
213
+ /*
214
+ * Parse our default tag into dynamic data
215
+ * to be passed to MailChimp
216
+ *
217
+ * @since 6.0.0
218
+ * @return parsed tag content
219
+ */
220
+ public function parse_mailchimp_default_tag( $default_tag ) {
221
+ if( ! $default_tag || $default_tag == '' ) {
222
+ return $default_tag;
223
+ }
224
+ global $post;
225
+ // page title
226
+ if( $default_tag == '{page_title}' ) {
227
+ $default_tag = get_the_title( $post->ID );
228
+ }
229
+ // page id
230
+ if( $default_tag == '{page_title}' ) {
231
+ $default_tag = $post->ID;
232
+ }
233
+ // page url
234
+ if( $default_tag == '{page_url}' ) {
235
+ $default_tag = get_permalink( $post->ID );
236
+ }
237
+ // blog name
238
+ if( $default_tag == '{blog_name}' ) {
239
+ $default_tag = get_bloginfo( 'name' );
240
+ }
241
+ // is user logged in
242
+ if( $default_tag == '{user_logged_in}' ) {
243
+ if( is_user_logged_in() ) {
244
+ $default_tag = 'Registered User';
245
+ } else {
246
+ $default_tag = 'Guest User';
247
+ }
248
+ }
249
+ /* Return our filtered tag */
250
+ return apply_filters( 'yikes-mailchimp-parse-custom-default-value', $default_tag );
251
+ }
252
+
253
+ /*
254
+ * Delete the contents of our error log
255
+ *
256
+ * When a user clicks 'Clear Log' on the debug settings page, this funciton
257
+ * is used to clear the data out of our php file.
258
+ */
259
+ public function yikes_easy_mailchimp_clear_error_log() {
260
+ // file put contents $returned error + other data
261
+ if( file_exists( YIKES_MC_PATH . 'includes/error_log/yikes-easy-mailchimp-error-log.php' ) ) {
262
+ $clear_log = file_put_contents(
263
+ YIKES_MC_PATH . 'includes/error_log/yikes-easy-mailchimp-error-log.php',
264
+ ''
265
+ );
266
+ if( $clear_log === false ) {
267
+ // redirect the user to the manage forms page, display error message
268
+ wp_redirect( esc_url_raw( admin_url( 'admin.php?page=yikes-inc-easy-mailchimp-settings&section=debug-settings&error-log-cleared=false' ) ) );
269
+ } else {
270
+ // redirect the user to the manage forms page, display confirmation
271
+ wp_redirect( esc_url_raw( admin_url( 'admin.php?page=yikes-inc-easy-mailchimp-settings&section=debug-settings&error-log-cleared=true' ) ) );
272
+ }
273
+ }
274
+ }
275
+
276
+ /*
277
+ * Custom export function to export all or specific forms
278
+ * to allow for easy transpot to other sites
279
+ * @since 6.0.0
280
+ * @return CSV export file
281
+ */
282
+ public function yikes_easy_mailchimp_export_forms() {
283
+ // grab our nonce
284
+ $nonce = $_REQUEST['nonce'];
285
+ // grab the forms
286
+ $forms = isset( $_REQUEST['export_forms'] ) ? $_REQUEST['export_forms'] : 'all';
287
+ // validate nonce
288
+ if( ! wp_verify_nonce( $nonce, 'export-forms' ) ) {
289
+ wp_die( __( "We've run into an error. The security check didn't pass. Please try again." , 'yikes-inc-easy-mailchimp-extender' ) , __( "Failed nonce validation" , 'yikes-inc-easy-mailchimp-extender' ) , array( 'response' => 500 , 'back_link' => true ) );
290
+ }
291
+ // include the export class
292
+ if( ! class_exists( 'Yikes_Inc_Easy_MailChimp_Export_Class' ) ) {
293
+ include_once( YIKES_MC_PATH . 'includes/import-export/yikes-easy-mailchimp-export.class.php' );
294
+ }
295
+ // run the export function
296
+ // parameters: ( $table_name, $form_ids, $file_name )
297
+ Yikes_Inc_Easy_MailChimp_Export_Class::yikes_mailchimp_form_export( 'yikes_easy_mc_forms' , $forms, 'Yikes-Inc-Easy-MailChimp-Forms-Export' );
298
+ // re-direct the user back to the page
299
+ wp_redirect( esc_url_raw( admin_url( 'admin.php?page=yikes-inc-easy-mailchimp-settings&section=import-export-forms' ) ) );
300
+ die();
301
+ }
302
+
303
+ /*
304
+ * Custom export function to export YIKES Easy Forms for MailChimp Plugin Settings
305
+ * to allow for easy transpot to other sites
306
+ * @since 6.0.0
307
+ * @return CSV export file
308
+ */
309
+ public function yikes_easy_mailchimp_export_plugin_settings() {
310
+ // grab our nonce
311
+ $nonce = $_REQUEST['nonce'];
312
+ // validate nonce
313
+ if( ! wp_verify_nonce( $nonce, 'export-settings' ) ) {
314
+ wp_die( __( "We've run into an error. The security check didn't pass. Please try again." , 'yikes-inc-easy-mailchimp-extender' ) , __( "Failed nonce validation" , 'yikes-inc-easy-mailchimp-extender' ) , array( 'response' => 500 , 'back_link' => true ) );
315
+ }
316
+ // include the export class
317
+ if( ! class_exists( 'Yikes_Inc_Easy_MailChimp_Export_Class' ) ) {
318
+ include_once( YIKES_MC_PATH . 'includes/import-export/yikes-easy-mailchimp-export.class.php' );
319
+ }
320
+ // run the export function
321
+ // parameters: ( $table_name, $form_ids, $file_name )
322
+ Yikes_Inc_Easy_MailChimp_Export_Class::yikes_mailchimp_settings_export( 'Yikes-Inc-Easy-MailChimp-Settings-Export' );
323
+ // re-direct the user back to the page
324
+ wp_redirect( esc_url_raw( admin_url( 'admin.php?page=yikes-inc-easy-mailchimp-settings&section=import-export-forms' ) ) );
325
+ die();
326
+ }
327
+
328
+ /*
329
+ * Custom import function to import all or specific forms
330
+ * @since 6.0.0
331
+ */
332
+ public function yikes_easy_mailchimp_import_forms() {
333
+ // grab our nonce
334
+ $nonce = $_REQUEST['nonce'];
335
+ // validate nonce
336
+ if( ! wp_verify_nonce( $nonce, 'import-forms' ) ) {
337
+ wp_die( __( "We've run into an error. The security check didn't pass. Please try again." , 'yikes-inc-easy-mailchimp-extender' ) , __( "Failed nonce validation" , 'yikes-inc-easy-mailchimp-extender' ) , array( 'response' => 500 , 'back_link' => true ) );
338
+ }
339
+ // include the export class
340
+ if( ! class_exists( 'Yikes_Inc_Easy_MailChimp_Import_Class' ) ) {
341
+ include_once( YIKES_MC_PATH . 'includes/import-export/yikes-easy-mailchimp-import.class.php' );
342
+ }
343
+ // run the import function
344
+ // parameters: ( $_FILES )
345
+ Yikes_Inc_Easy_MailChimp_Import_Class::yikes_mailchimp_import_forms( $_FILES );
346
+ $import_query_arg = Yikes_Inc_Easy_MailChimp_Import_Class::yikes_mailchimp_import_type( $_FILES );
347
+ // re-direct the user back to the page
348
+ wp_redirect( esc_url_raw( admin_url( 'admin.php?page=yikes-inc-easy-mailchimp-settings&section=import-export-forms&' . $import_query_arg . '=true' ) ) );
349
+ die();
350
+ }
351
+
352
+ /*
353
+ * Premium Support Request
354
+ * @since 6.0.0
355
+ */
356
+ public function yikes_easy_mailchimp_premium_support_request() {
357
+
358
+ if( isset( $_POST['action'] ) && $_POST['action'] != 'yikes-support-request' ) {
359
+ return __( 'We encountered an error. Please contact the YIKES Inc. support team.' , 'yikes-inc-easy-mailchimp-extender' );
360
+ }
361
+
362
+ $license = $_POST['license_key'];
363
+ $user_email = $_POST['user-email'];
364
+ $support_topic = $_POST['support-topic'];
365
+ $support_priority = $_POST['support-priority'];
366
+ $support_content = $_POST['support-content'];
367
+
368
+ // wp_die( print_r( $support_content) );
369
+
370
+ $ticket_array = array(
371
+ 'action' => 'yikes-support-request',
372
+ 'license_key' => urlencode( base64_encode( $license ) ),
373
+ 'user_email' => urlencode( $user_email ),
374
+ 'site_url' => urlencode( esc_url( home_url() ) ),
375
+ 'support_topic' => urlencode( $support_topic ),
376
+ 'support_priority' => $support_priority,
377
+ 'support_content' => $support_content,
378
+ );
379
+
380
+ $yikes_plugin_support_url = 'https://yikesplugins.com';
381
+
382
+ if( $license != 'plugin-core' ) {
383
+ $split_license = explode( '|', $license );
384
+ // first let's check that the license key is actually active
385
+ $is_license_key_active = wp_remote_post( esc_url( $yikes_plugin_support_url ), array(
386
+ 'action' => 'check_license',
387
+ 'product_name' => urlencode( str_replace( '-', '', $split_license[1] ) . 'for Easy MailChimp' ),
388
+ 'license' => $split_license[0],
389
+ ) );
390
+
391
+ $response_body = wp_remote_retrieve_body( $is_license_key_active );
392
+ if( $response_body ) {
393
+ if( $response_body->status != 'valid' ) {
394
+ wp_die( 'Invalid License Key...' );
395
+ }
396
+ }
397
+ }
398
+
399
+ // Call the custom API.
400
+ $response = wp_remote_post( esc_url( $yikes_plugin_support_url ), array(
401
+ 'timeout' => 30,
402
+ 'sslverify' => false,
403
+ 'body' => $ticket_array
404
+ ) );
405
+
406
+ // catch the error
407
+ if( is_wp_error( $response ) ) {
408
+ wp_die( $create_ticket_request->getMessage() );
409
+ return;
410
+ }
411
+
412
+ // retrieve our body
413
+ $create_ticket_response = wp_remote_retrieve_body( $response );
414
+
415
+ // display it
416
+ if( $create_ticket_response )
417
+ echo $create_ticket_response;
418
+
419
+ }
420
+
421
+ /**
422
+ * Dismiss the migrate options notice (incase the user wants to do things manually)
423
+ *
424
+ * @since 6.0.0
425
+ **/
426
+ public function yikes_easy_mailchimp_dismiss_option_migrate() {
427
+ // delete the options and allow the user to manually updadte things
428
+
429
+ // Verify the NONCE is valid
430
+ check_admin_referer( 'yikes-mc-dismiss-migration' , 'dismiss_migration_nonce' );
431
+
432
+ // re-direct the user back to the page
433
+ wp_redirect( esc_url_raw( admin_url( 'index.php?yikes-mc-options-migration-dismissed="true"' ) ) );
434
+ die();
435
+ }
436
+
437
+ /**
438
+ * Error logging class
439
+ *
440
+ * This is our main error logging class file, used to log errors to the error log.
441
+ *
442
+ * @since 6.0.0
443
+ */
444
+ public function load_error_logging_class() {
445
+ if( get_option( 'yikes-mailchimp-debug-status' , '' ) == '1' ) {
446
+ // if error logging is enabled we should include our error logging class
447
+ /* Generate oure error logging table */
448
+ require_once YIKES_MC_PATH . '/includes/error_log/class-yikes-inc-easy-mailchimp-error-logging.php';
449
+ $error_logging = new Yikes_Inc_Easy_Mailchimp_Error_Logging();
450
+ }
451
+ }
452
+
453
+ /*
454
+ yikes_easy_mailchimp_check_installation_date()
455
+ checks the user installation date, and adds our action
456
+ - if it's past 2 weeks we ask the user for a review :)
457
+ @since v6.0.0
458
+ */
459
+ public function yikes_easy_mailchimp_check_installation_date() {
460
+
461
+ // add a new option to store the plugin activation date/time
462
+ // @since v6.0.0
463
+ // this is used to notify the user that they should review after 2 weeks
464
+ if ( !get_option( 'yikes_easy_mailchimp_activation_date' ) ) {
465
+ add_option( 'yikes_easy_mailchimp_activation_date', strtotime( "now" ) );
466
+ }
467
+
468
+ $stop_bugging_me = get_option( 'yikes_easy_mailchimp_review_stop_bugging_me' );
469
+
470
+ if( !$stop_bugging_me ) {
471
+ $install_date = get_option( 'yikes_easy_mailchimp_activation_date' );
472
+ $past_date = strtotime( '-14 days' );
473
+ if ( $past_date >= $install_date && current_user_can( 'install_plugins' ) ) {
474
+ add_action( 'admin_notices', array( $this , 'yikes_easy_mailchimp_display_review_us_notice' ) );
475
+ }
476
+ }
477
+
478
+ }
479
+
480
+ /*
481
+ Display our admin notification
482
+ asking for a review, and for user feedback
483
+ @since v6.0.0
484
+ */
485
+ public function yikes_easy_mailchimp_display_review_us_notice() {
486
+ /* Lets only display our admin notice on YT4WP pages to not annoy the hell out of people :) */
487
+ if ( in_array( get_current_screen()->base , array( 'dashboard' , 'post' , 'edit' ) ) || strpos( get_current_screen()->base ,'yikes-inc-easy-mailchimp') !== false ) {
488
+ // Review URL - Change to the URL of your plugin on WordPress.org
489
+ $reviewurl = 'https://wordpress.org/support/view/plugin-reviews/yikes-inc-easy-mailchimp-extender';
490
+ $addons_url = esc_url( admin_url( 'admin.php?page=yikes-inc-easy-mailchimp-addons' ) );
491
+ $nobugurl = esc_url_raw( add_query_arg( 'yikes_easy_mc_icons_nobug', '1', admin_url() ) );
492
+ global $current_user;
493
+ get_currentuserinfo();
494
+ if ( isset( $current_user->user_firstname ) && '' != $current_user->user_firstname ) {
495
+ $review_message = '<div id="yikes-mailchimp-logo"></div>';
496
+ $review_message .= sprintf( __( "Hi, %s, you've been using %s for 2 weeks now. We hope you're enjoying the features included with the free version. If so, please consider leaving us a review. Reviews provide us with feedback to grow and improve the plugin. If you're really enjoying the plugin, consider buying an add-on or developer license for some really awesome features and premium support." , 'yikes-inc-easy-mailchimp-extender' ) . "<span class='button-container'> <a href='%s' target='_blank' class='button-secondary'><span class='dashicons dashicons-star-filled'></span>" . __( "Leave A Review" , 'yikes-inc-easy-mailchimp-extender' ) . "</a> <a href='%s' class='button-secondary'><span class='dashicons dashicons-upload'></span>" . __( "View Addons" , 'yikes-inc-easy-mailchimp-extender' ) . "</a> <a href='%s' class='button-secondary'><span class='dashicons dashicons-no-alt'></span>" . __( "Dismiss" , 'yikes-inc-easy-mailchimp-extender' ) . "</a> </span>", $current_user->user_firstname, '<strong>Easy Forms for MailChimp by YIKES Inc.</strong>', $reviewurl, $addons_url, $nobugurl );
497
+ $review_message .= '';
498
+ } else {
499
+ $review_message = '<div id="yikes-mailchimp-logo"></div>';
500
+ $review_message .= sprintf( __( "It looks like you've been using %s for 2 weeks now. We hope you're enjoying the features included with the free version. If so, please consider leaving us a review. Reviews only help to catch other users attention as well as provide us with feedback to grow and improve upon. If you're really enjoying the plugin, consider buying an add-on or developer license for some really awesome features and premium support." , 'yikes-inc-easy-mailchimp-extender' ) . "<span class='button-container'> <a href='%s' target='_blank' class='button-secondary'><span class='dashicons dashicons-star-filled'></span>" . __( "Leave A Review" , 'yikes-inc-easy-mailchimp-extender' ) . "</a> <a href='%s' class='button-secondary'><span class='dashicons dashicons-upload'></span>" . __( "View Addons" , 'yikes-inc-easy-mailchimp-extender' ) . "</a> <a href='%s' class='button-secondary'><span class='dashicons dashicons-no-alt'></span>" . __( "Dismiss" , 'yikes-inc-easy-mailchimp-extender' ) . "</a> </span>", '<strong>Easy Forms for MailChimp by YIKES Inc.</strong>', $reviewurl, $addons_url, $nobugurl ) . '';
501
+ }
502
+ ?>
503
+ <div id="review-yikes-easy-mailchimp-notice">
504
+ <?php echo $review_message; ?>
505
+ </div>
506
+ <?php
507
+ }
508
+ }
509
+
510
+ /*
511
+ yikes_easy_mailchimp_stop_bugging_me()
512
+ Remove the Review us notification when user clicks 'Dismiss'
513
+ @since v3.1.1
514
+ */
515
+ public function yikes_easy_mailchimp_stop_bugging_me() {
516
+ $nobug = "";
517
+ if ( isset( $_GET['yikes_easy_mc_icons_nobug'] ) ) {
518
+ $nobug = (int) esc_attr( $_GET['yikes_easy_mc_icons_nobug'] );
519
+ }
520
+ if ( 1 == $nobug ) {
521
+ add_option( 'yikes_easy_mailchimp_review_stop_bugging_me', TRUE );
522
+ }
523
+ }
524
+
525
+ /* End Two Week Notificaition */
526
+
527
+ /* Display a warning users who are using PHP < 5.3 */
528
+ public function display_php_warning() {
529
+ $message = __( 'YIKES Inc. Easy Forms for MailChimp requires a minimum of PHP 5.3. The plugin will not function properly until you update. Reach out to your host provider for assistance.' , 'yikes-inc-easy-mailchimp-extender' );
530
+ echo "<div class='error'> <p><span class='dashicons dashicons-no-alt' style='color:rgb(231, 98, 98)'></span> $message</p></div>";
531
+ }
532
+
533
+
534
+
535
+ /* TinyMCE Functions */
536
+ // load our button and pass in the JS form data variable
537
+ public function add_tinyMCE_buttons() {
538
+ global $typenow;
539
+ // only on Post Type: post and page
540
+ if( ! in_array( $typenow, array( 'post', 'page' ) ) ) {
541
+ return;
542
+ }
543
+ add_filter( 'mce_buttons', array( $this, 'yks_mc_add_tinymce_button' ) );
544
+ add_filter( 'mce_external_plugins', array( $this, 'yks_mc_add_tinymce_plugin' ) );
545
+ }
546
+
547
+ // Add the button key for address via JS
548
+ public function yks_mc_add_tinymce_button( $buttons ) {
549
+ array_push( $buttons, 'yks_mc_tinymce_button_key' );
550
+ // Print all buttons
551
+ return $buttons;
552
+ }
553
+
554
+ // inlcude the js for tinymce
555
+ public function yks_mc_add_tinymce_plugin( $plugin_array ) {
556
+ $plugin_array['yks_mc_tinymce_button'] = plugins_url( '/js/min/yikes-inc-easy-mailchimp-tinymce-button.min.js', __FILE__ );
557
+ // Print all plugin js path
558
+ // var_dump( $plugin_array );
559
+ return $plugin_array;
560
+ }
561
+
562
+ /**
563
+ * Localize Script
564
+ * Pass our imported list data, to the JS file
565
+ * to build the drop down list in the modal
566
+ */
567
+ public function tinymce_yikes_easy_mc() {
568
+ // check capabilities
569
+ if( ! current_user_can( apply_filters( 'yikes-mailchimp-user-role-access' , 'manage_options' ) ) ) {
570
+ return;
571
+ }
572
+ global $wpdb;
573
+ $list_data = $wpdb->get_results( 'SELECT * FROM ' . $wpdb->prefix . 'yikes_easy_mc_forms', ARRAY_A );
574
+ $lists = array();
575
+ $i = 0;
576
+ if( !empty( $list_data ) ) {
577
+ // build an array to pass to our javascript
578
+ foreach( $list_data as $form ) {
579
+ $lists[$i] = array(
580
+ 'text' => urlencode( $form['form_name'] ),
581
+ 'value' => $form['id']
582
+ );
583
+ $i++;
584
+ }
585
+ } else {
586
+ $lists[0] = array(
587
+ 'text' => __( 'Please Import Some MailChimp Lists' , 'yikes-inc-easy-mailchimp-extender' ),
588
+ 'value' => '-'
589
+ );
590
+ }
591
+ /* Pass our form data to our JS file for use */
592
+ ?>
593
+ <script type="text/javascript">
594
+ var forms = {
595
+ 'data' : '<?php echo json_encode( $lists ); ?>'
596
+ };
597
+ var localized_data = {
598
+ 'button_title' : '<?php _e( 'Easy Forms for MailChimp by YIKES', 'yikes-inc-easy-mailchimp-extender' ); ?>',
599
+ 'popup_title' : '<?php _e( 'Easy Forms for MailChimp by YIKES', 'yikes-inc-easy-mailchimp-extender' ); ?>',
600
+ 'list_id_label' : '<?php _e( 'MailChimp Opt-In Form' , 'yikes-inc-easy-mailchimp-extender' ); ?>',
601
+ 'show_title_label' : '<?php _e( 'Display Form Title' , 'yikes-inc-easy-mailchimp-extender' ); ?>',
602
+ 'show_description_label' : '<?php _e( 'Display Form Description' , 'yikes-inc-easy-mailchimp-extender' ); ?>',
603
+ 'submit_button_text_label' : '<?php _e( 'Submit Button Text' , 'yikes-inc-easy-mailchimp-extender' ); ?>',
604
+ };
605
+ <?php
606
+ $link = sprintf( __( 'You need to <a href="%s" title="%s">create a form</a> before you can add one to a page or post.', 'yikes-inc-easy-mailchimp-extender' ), esc_url_raw( admin_url( 'admin.php?page=yikes-inc-easy-mailchimp' ) ), __( 'Create a form', 'yikes-inc-easy-mailchimp-extender' ) );
607
+ ?>
608
+ var alert_translated = '<?php echo $link; ?>';
609
+ </script>
610
+ <?php
611
+ }
612
+ /* End TinyMCE Functions */
613
+
614
+ /*
615
+ * Redirect the user to our Welcome page
616
+ * when they activate the plug in, if they haven't been redirected before
617
+ */
618
+ public function yikes_easy_mc_activation_redirect() {
619
+ if ( get_option( 'yikes_mailchimp_activation_redirect', 'true' ) == 'true' ) {
620
+ update_option( 'yikes_mailchimp_activation_redirect', 'false' );
621
+ /* If the user had this plugin activated prior to today, redirect to 'Whats New' */
622
+ if( get_option( 'yikes_easy_mailchimp_activation_date', strtotime( 'now' ) ) == strtotime( 'now' ) ) {
623
+ wp_redirect( esc_url( admin_url( 'admin.php?page=yikes-mailchimp-welcome' ) ) );
624
+ } else {
625
+ /* Else redirect the user over to the 'Getting Started' tab */
626
+ wp_redirect( esc_url_raw( admin_url( 'admin.php?page=yikes-mailchimp-welcome&section=whats-new' ) ) );
627
+ }
628
+ exit();
629
+ }
630
+ }
631
+
632
+ /*
633
+ * Fix the MailChimp icon spacing in the admin menu
634
+ */
635
+ public function fix_menu_icon_spacing() {
636
+ ?>
637
+ <style>
638
+ a[href="admin.php?page=yikes-inc-easy-mailchimp"] .wp-menu-image img {
639
+ padding-top: 5px !important;
640
+ }
641
+ </style>
642
+ <?php
643
+ }
644
+
645
+ /**
646
+ * Register the stylesheets for the admin area.
647
+ *
648
+ * @since 6.0.0
649
+ */
650
+ public function enqueue_styles() {
651
+ /**
652
+ * Enqueue our global dashboard styles
653
+ */
654
+ wp_enqueue_style( 'yikes-inc-easy-mailchimp-extender-admin', plugin_dir_url( __FILE__ ) . 'css/yikes-inc-easy-mailchimp-extender-admin.min.css', array(), $this->version, 'all' );
655
+ /*
656
+ * Enqueue Add-ons styles
657
+ */
658
+ if ( get_current_screen()->base == 'easy-forms_page_yikes-inc-easy-mailchimp-addons' ) {
659
+ wp_enqueue_style( 'yikes-inc-easy-mailchimp-extender-addons-styles', plugin_dir_url( __FILE__ ) . 'css/yikes-inc-easy-mailchimp-extender-addons.min.css', array(), $this->version, 'all' );
660
+ }
661
+ /*
662
+ * Enqueue Subscriber Profile Flags
663
+ */
664
+ if ( get_current_screen()->base == 'admin_page_yikes-mailchimp-view-user' ) {
665
+ wp_enqueue_style( 'yikes-inc-easy-mailchimp-extender-subscriber-flags', plugin_dir_url( __FILE__ ) . 'css/flag-icon.min.css', array(), $this->version, 'all' );
666
+ }
667
+ }
668
+ /**
669
+ * Register the JavaScript for the admin area.
670
+ *
671
+ * @since 6.0.0
672
+ */
673
+ public function enqueue_scripts() {
674
+
675
+ /**
676
+ * Enqueue our scripts across the dashboard as needed
677
+ */
678
+ wp_register_script( 'yikes-inc-easy-mailchimp-extender-admin-js', plugin_dir_url( __FILE__ ) . 'js/min/yikes-inc-easy-mailchimp-extender-admin.min.js', array( 'jquery' , 'jquery-ui-sortable' ), $this->version, false );
679
+ $localized_data = array(
680
+ 'admin_url' => esc_url_raw( admin_url() ),
681
+ 'ajax_url' => esc_url_raw( admin_url( 'admin-ajax.php' ) ),
682
+ 'locating_interest_groups' => __( 'Locating Interest Groups', 'yikes-inc-easy-mailchimp-extender' ),
683
+ 'search_preloader_url' => YIKES_MC_URL . 'includes/images/search-interest-group-preloader.gif',
684
+ 'preloader_url' => esc_url_raw( admin_url( '/images/wpspin_light.gif' ) )
685
+ );
686
+ wp_localize_script( 'yikes-inc-easy-mailchimp-extender-admin-js' , 'object_data' , $localized_data );
687
+ wp_enqueue_script( 'yikes-inc-easy-mailchimp-extender-admin-js' );
688
+
689
+
690
+ /*
691
+ * Enqueue required scripts for the form editor
692
+ */
693
+ if( get_current_screen()->base == 'admin_page_yikes-mailchimp-edit-form' ) {
694
+ global $wp_locale;
695
+ wp_enqueue_style( 'wp-color-picker' );
696
+ wp_enqueue_script( 'wp-color-picker' );
697
+ wp_enqueue_script( 'jquery.timepicker.js',YIKES_MC_URL . 'admin/js/jquery.timepicker.min.js' , array( 'jquery' ) , $this->version, false );
698
+ wp_register_script( 'edit-form-js' , YIKES_MC_URL . 'admin/js/min/yikes-inc-easy-mailchimp-extender-edit-form.min.js' , array( 'jquery.timepicker.js', 'jquery-ui-datepicker' ) , $this->version, false );
699
+ $localized_data = array(
700
+ 'ajax_url' => esc_url_raw( admin_url( 'admin-ajax.php' ) ),
701
+ 'no_fields_assigned' => __( 'No fields assigned to this form. Select some fields to add to this form from the right hand column.', 'yikes-inc-easy-mailchimp-extender' ),
702
+ 'bulk_delete_alert' => __( 'Are you sure you want to delete all of the fields assigned to this form?', 'yikes-inc-easy-mailchimp-extender' ),
703
+ 'closeText' => __( 'Done', 'yikes-inc-easy-mailchimp-extender' ),
704
+ 'currentText' => __( 'Today', 'yikes-inc-easy-mailchimp-extender' ),
705
+ 'monthNames' => $this->yikes_jQuery_datepicker_strip_array_indices( $wp_locale->month ),
706
+ 'monthNamesShort' => $this->yikes_jQuery_datepicker_strip_array_indices( $wp_locale->month_abbrev ),
707
+ 'monthStatus' => __( 'Show a different month', 'yikes-inc-easy-mailchimp-extender' ),
708
+ 'dayNames' => $this->yikes_jQuery_datepicker_strip_array_indices( $wp_locale->weekday ),
709
+ 'dayNamesShort' => $this->yikes_jQuery_datepicker_strip_array_indices( $wp_locale->weekday_abbrev ),
710
+ 'dayNamesMin' => $this->yikes_jQuery_datepicker_strip_array_indices( $wp_locale->weekday_initial ),
711
+ // set the date format to match the WP general date settings
712
+ 'dateFormat' => $this->yikes_jQuery_datepicker_date_format_php_to_js( get_option( 'date_format' ) ),
713
+ // get the start of week from WP general setting
714
+ 'firstDay' => get_option( 'start_of_week' ),
715
+ // is Right to left language? default is false
716
+ 'isRTL' => $wp_locale->is_rtl(),
717
+ 'start_date_exceeds_end_date_error' => __( 'Error: The start date and time cannot occur after the end date and time. Chosen date reverted to previous selection.', 'yikes-inc-easy-mailchimp-extender' ),
718
+ );
719
+ wp_localize_script( 'edit-form-js' , 'object' , $localized_data );
720
+ wp_enqueue_script( 'edit-form-js' );
721
+ }
722
+
723
+ }
724
+
725
+ /** Functionality **/
726
+ /******************/
727
+
728
+
729
+ /**
730
+ * Localization functions for jQuery ui datepicker
731
+ * @since 6.0.3.8
732
+ */
733
+ /**
734
+ * Format array for the datepicker
735
+ * WordPress stores the locale information in an array with a alphanumeric index, and
736
+ * the datepicker wants a numerical index. This function replaces the index with a number
737
+ */
738
+ public function yikes_jQuery_datepicker_strip_array_indices( $ArrayToStrip ) {
739
+ foreach( $ArrayToStrip as $objArrayItem) {
740
+ $NewArray[] = $objArrayItem;
741
+ }
742
+ return( $NewArray );
743
+ }
744
+
745
+ /**
746
+ * Convert the php date format string to a js date format
747
+ */
748
+ public function yikes_jQuery_datepicker_date_format_php_to_js( $sFormat ) {
749
+ switch( $sFormat ) {
750
+ //Predefined WP date formats
751
+ case 'F j, Y':
752
+ case 'j F Y':
753
+ case 'm/d/Y':
754
+ case 'mm/dd/yyyy':
755
+ case 'MM/DD/YYYY':
756
+ default:
757
+ return( 'mm/dd/yy' );
758
+ break;
759
+ case 'Y/m/d':
760
+ case 'Y-m-d':
761
+ return( 'yy/mm/dd' );
762
+ break;
763
+ case 'd/m/Y':
764
+ case 'dd/mm/yyyy':
765
+ case 'DD/MM/YYYY':
766
+ return( 'dd/mm/yyyy' );
767
+ break;
768
+ }
769
+ }
770
+
771
+ /**
772
+ * Convert the php date format string to a js date format
773
+ */
774
+ public function yikes_jQuery_datepicker_date_format( $site_option ) {
775
+ switch( $site_option ) {
776
+ //Predefined WP date formats
777
+ default:
778
+ case 'F j, Y':
779
+ case 'm/d/Y':
780
+ return( 'm/d/Y' );
781
+ break;
782
+ case 'Y-m-d':
783
+ return( 'Y/m/d' );
784
+ break;
785
+ case 'd/m/Y':
786
+ return( 'd/m/Y' );
787
+ break;
788
+ }
789
+ }
790
+ /**
791
+ * end Localization functions for jQuery ui datepicker
792
+ */
793
+
794
+ /**
795
+ * Register our admin pages
796
+ * used to display data back to the user
797
+ **/
798
+ public function register_admin_pages() {
799
+
800
+ /* Top Level Menu 'Easy MailChimp' */
801
+ add_menu_page(
802
+ __( 'Easy Forms' , 'yikes-inc-easy-mailchimp-extender' ),
803
+ 'Easy Forms',
804
+ apply_filters( 'yikes-mailchimp-user-role-access' , 'manage_options' ),
805
+ 'yikes-inc-easy-mailchimp',
806
+ '', // no callback,
807
+ YIKES_MC_URL . 'includes/images/MailChimp_Assets/Freddie_wink_icon.png'
808
+ );
809
+
810
+ // Sub Pages
811
+ /*************/
812
+
813
+ /* YIKES Inc. Easy MailChimp Settings */
814
+
815
+ /* YIKES Inc. Easy MailChimp Manage Forms */
816
+ add_submenu_page(
817
+ 'yikes-inc-easy-mailchimp',
818
+ __( 'Opt-in Forms' , 'yikes-inc-easy-mailchimp-extender' ),
819
+ __( 'Opt-in Forms' , 'yikes-inc-easy-mailchimp-extender' ),
820
+ apply_filters( 'yikes-mailchimp-user-role-access' , 'manage_options' ),
821
+ 'yikes-inc-easy-mailchimp',
822
+ array( $this, 'generateManageFormsPage' )
823
+ );
824
+
825
+ /* YIKES Inc. Easy MailChimp Manage Lists */
826
+ add_submenu_page(
827
+ 'yikes-inc-easy-mailchimp',
828
+ __( 'Mailing Lists' , 'yikes-inc-easy-mailchimp-extender' ),
829
+ __( 'Mailing Lists' , 'yikes-inc-easy-mailchimp-extender' ),
830
+ apply_filters( 'yikes-mailchimp-user-role-access' , 'manage_options' ),
831
+ 'yikes-inc-easy-mailchimp-lists',
832
+ array( $this, 'generateManageListsPage' )
833
+ );
834
+
835
+
836
+ /*
837
+ * Custom action hook to hook into to add additional
838
+ * menu items from extensions
839
+ */
840
+ do_action( 'yikes-mailchimp-menu' );
841
+
842
+
843
+ /* YIKES Inc. Easy MailChimp Account Overview */
844
+ if ( get_option('yikes-mc-api-validation') == 'valid_api_key' ) {
845
+ /* YIKES Inc. Easy MailChimp Settings */
846
+ add_submenu_page(
847
+ 'yikes-inc-easy-mailchimp',
848
+ __( 'Account' , 'yikes-inc-easy-mailchimp-extender' ),
849
+ __( 'Account' , 'yikes-inc-easy-mailchimp-extender' ),
850
+ apply_filters( 'yikes-mailchimp-user-role-access' , 'manage_options' ),
851
+ 'yikes-inc-easy-mailchimp-account-overview',
852
+ array( $this, 'generateAccountDetailsPage' )
853
+ );
854
+ }
855
+
856
+
857
+ /* YIKES Inc. Easy MailChimp Settings */
858
+ add_submenu_page(
859
+ 'yikes-inc-easy-mailchimp',
860
+ __( 'Settings.' , 'yikes-inc-easy-mailchimp-extender' ),
861
+ __( 'Settings' , 'yikes-inc-easy-mailchimp-extender' ),
862
+ apply_filters( 'yikes-mailchimp-user-role-access' , 'manage_options' ),
863
+ 'yikes-inc-easy-mailchimp-settings',
864
+ array( $this, 'generatePageOptions' )
865
+ );
866
+
867
+ /* Support Page */
868
+ add_submenu_page(
869
+ 'yikes-inc-easy-mailchimp',
870
+ __( 'Support' , 'yikes-inc-easy-mailchimp-extender' ),
871
+ __( 'Support' , 'yikes-inc-easy-mailchimp-extender' ),
872
+ apply_filters( 'yikes-mailchimp-user-role-access' , 'manage_options' ),
873
+ 'yikes-inc-easy-mailchimp-support',
874
+ array( $this, 'generateSupportPage' )
875
+ );
876
+
877
+ /* Add-Ons Page */
878
+ add_submenu_page(
879
+ 'yikes-inc-easy-mailchimp',
880
+ __( 'Add-Ons' , 'yikes-inc-easy-mailchimp-extender' ),
881
+ __( 'Add-Ons' , 'yikes-inc-easy-mailchimp-extender' ),
882
+ apply_filters( 'yikes-mailchimp-user-role-access' , 'manage_options' ),
883
+ 'yikes-inc-easy-mailchimp-addons',
884
+ array( $this , 'generateAddOnsPage' )
885
+ );
886
+
887
+ /** Hidden Pages **/
888
+
889
+ /* Add Hidden Edit Form Page */
890
+ add_submenu_page(
891
+ 'options.php',
892
+ __( 'Edit Form' , 'yikes-inc-easy-mailchimp-extender' ),
893
+ __( 'Edit Form' , 'yikes-inc-easy-mailchimp-extender' ),
894
+ apply_filters( 'yikes-mailchimp-user-role-access' , 'manage_options' ),
895
+ 'yikes-mailchimp-edit-form',
896
+ array( $this, 'generateEditFormPage' )
897
+ );
898
+
899
+ /* Add Hidden Migrate Options Page */
900
+ add_submenu_page(
901
+ 'options-writing.php',
902
+ __( 'YIKES Inc. Easy Forms for MailChimp Upgrade Options Structure' , 'yikes-inc-easy-mailchimp-extender' ),
903
+ 'YIKES Inc. Easy Forms for MailChimp Upgrade Options Structure',
904
+ 'manage_options',
905
+ 'yikes-inc-easy-mailchimp-update' ,
906
+ array( $this , 'migrate_old_yks_mc_options' )
907
+ );
908
+
909
+ /* Add Hidden Welcome Page */
910
+ add_submenu_page(
911
+ 'options.php',
912
+ __( 'Welcome' , 'yikes-inc-easy-mailchimp-extender' ),
913
+ __( 'Welcome' , 'yikes-inc-easy-mailchimp-extender' ),
914
+ apply_filters( 'yikes-mailchimp-user-role-access' , 'manage_options' ),
915
+ 'yikes-mailchimp-welcome',
916
+ array( $this, 'generateWelcomePage' )
917
+ );
918
+
919
+ /* Add Hidden 'View List' Page */
920
+ add_submenu_page(
921
+ 'options.php',
922
+ __( 'View List' , 'yikes-inc-easy-mailchimp-extender' ),
923
+ __( 'View List' , 'yikes-inc-easy-mailchimp-extender' ),
924
+ apply_filters( 'yikes-mailchimp-user-role-access' , 'manage_options' ),
925
+ 'yikes-mailchimp-view-list',
926
+ array( $this, 'generateViewListPage' )
927
+ );
928
+
929
+ /* Add Hidden View User Page */
930
+ add_submenu_page(
931
+ 'options.php',
932
+ __( 'View User' , 'yikes-inc-easy-mailchimp-extender' ),
933
+ __( 'View User' , 'yikes-inc-easy-mailchimp-extender' ),
934
+ apply_filters( 'yikes-mailchimp-user-role-access' , 'manage_options' ),
935
+ 'yikes-mailchimp-view-user',
936
+ array( $this, 'generateViewUserPage' )
937
+ );
938
+
939
+ }
940
+
941
+ /*
942
+ * Redirect a user to an external page
943
+ * when they click 'Go Pro' in the admin menu
944
+ * to do: populate with sales URL
945
+ */
946
+ public function generateAddOnsPage() {
947
+ require_once YIKES_MC_PATH . 'admin/partials/menu/add-ons.php'; // include our add-ons page
948
+ }
949
+
950
+ /**
951
+ * Generate YIKES Inc. Easy MailChimp Manage Forms Page
952
+ *
953
+ * @since 1.0.0
954
+ */
955
+ function generateManageFormsPage() {
956
+ require_once YIKES_MC_PATH . 'admin/partials/menu/manage-forms.php'; // include our manage forms page
957
+ }
958
+
959
+ /**
960
+ * Generate YIKES Inc. Easy MailChimp Manage Lists Page
961
+ *
962
+ * @since 1.0.0
963
+ */
964
+ function generateManageListsPage() {
965
+ require_once YIKES_MC_PATH . 'admin/partials/menu/manage-lists.php'; // include our lists page
966
+ }
967
+
968
+ /**
969
+ * Generate YIKES Inc. Easy MailChimp Account Details Page
970
+ *
971
+ * @since 1.0.0
972
+ */
973
+ function generateAccountDetailsPage() {
974
+ require_once YIKES_MC_PATH . 'admin/partials/menu/account-details.php'; // include our account details page
975
+ }
976
+
977
+ /**
978
+ * Generate YIKES Inc. Easy MailChimp Support Page
979
+ *
980
+ * @since 1.0.0
981
+ */
982
+ function generateSupportPage() {
983
+ require_once YIKES_MC_PATH . 'admin/partials/menu/support.php'; // include our options page
984
+ }
985
+
986
+ /**
987
+ * Generate YIKES Inc. Easy MailChimp Edit Form Page
988
+ *
989
+ * @since 1.0.0
990
+ */
991
+ function generateEditFormPage() {
992
+ require_once YIKES_MC_PATH . 'admin/partials/edit-form.php'; // include our options page
993
+ }
994
+
995
+ /**
996
+ * Generate YIKES Inc. Easy MailChimp Welcome Page
997
+ *
998
+ * @since 1.0.0
999
+ */
1000
+ function generateWelcomePage() {
1001
+ require_once YIKES_MC_PATH . 'admin/partials/welcome-page/welcome.php'; // include our options page
1002
+ }
1003
+
1004
+ /**
1005
+ * Generate YIKES Inc. Easy MailChimp View List Page
1006
+ *
1007
+ * @since 1.0.0
1008
+ */
1009
+ function generateViewListPage() {
1010
+ require_once YIKES_MC_PATH . 'admin/partials/view-list.php'; // include our options page
1011
+ }
1012
+
1013
+ /**
1014
+ * Generate YIKES Inc. Easy MailChimp View User Page
1015
+ *
1016
+ * @since 1.0.0
1017
+ */
1018
+ function generateViewUserPage() {
1019
+ require_once YIKES_MC_PATH . 'admin/partials/view-user.php'; // include our options page
1020
+ }
1021
+
1022
+ /**
1023
+ * Register our plugin settings, and display them on our settings page
1024
+ *
1025
+ * @since v.5.4
1026
+ **/
1027
+ function yikes_easy_mc_settings_init() {
1028
+
1029
+ /* Register General Settings Section */
1030
+
1031
+ register_setting( 'yikes_inc_easy_mc_general_settings_page', 'yikes-mc-api-key', array( $this , 'yikes_mc_validate_api_key' ) );
1032
+
1033
+ add_settings_section(
1034
+ 'yikes_easy_mc_settings_general_section_callback',
1035
+ '',
1036
+ '',
1037
+ 'yikes_inc_easy_mc_general_settings_page'
1038
+ );
1039
+
1040
+ /* Register Visual Representation of Connection */
1041
+ add_settings_field(
1042
+ 'connection',
1043
+ __( 'API Connection', 'yikes-inc-easy-mailchimp-extender' ),
1044
+ 'yikes_inc_easy_mc_visual_representation_of_connection_callback', // callback + validation inside of admin/partials/menu/options.php
1045
+ 'yikes_inc_easy_mc_general_settings_page',
1046
+ 'yikes_easy_mc_settings_general_section_callback'
1047
+ );
1048
+
1049
+ /* Register Check Box Setting */
1050
+ add_settings_field(
1051
+ 'yikes-mc-api-key',
1052
+ __( 'MailChimp API Key', 'yikes-inc-easy-mailchimp-extender' ),
1053
+ 'yikes_inc_easy_mc_api_key_field_callback', // callback + validation inside of admin/partials/menu/options.php
1054
+ 'yikes_inc_easy_mc_general_settings_page',
1055
+ 'yikes_easy_mc_settings_general_section_callback'
1056
+ );
1057
+
1058
+ /* End General Settings */
1059
+
1060
+ /* Checkbox Settings */
1061
+ register_setting( 'yikes_inc_easy_mc_checkbox_settings_page', 'optin-checkbox-init' );
1062
+
1063
+ /* Register General Settings Section */
1064
+ add_settings_section(
1065
+ 'yikes_inc_easy_mc_checkbox_settings',
1066
+ '',
1067
+ '',
1068
+ 'yikes_inc_easy_mc_checkbox_settings_page'
1069
+ );
1070
+
1071
+ add_settings_field(
1072
+ 'optin-checkbox-init',
1073
+ __( 'Select Checkboxes to Generate', 'yikes-inc-easy-mailchimp-extender' ),
1074
+ '', // callback + validation inside of admin/partials/menu/options.php
1075
+ 'yikes_inc_easy_mc_checkbox_settings'
1076
+ );
1077
+ /* End Checkbox Settings */
1078
+
1079
+ /* reCAPTCHA Settings */
1080
+
1081
+ register_setting( 'yikes_inc_easy_mc_recaptcha_settings_page' , 'yikes-mc-recaptcha-status' );
1082
+ register_setting( 'yikes_inc_easy_mc_recaptcha_settings_page' , 'yikes-mc-recaptcha-site-key' );
1083
+ register_setting( 'yikes_inc_easy_mc_recaptcha_settings_page' , 'yikes-mc-recaptcha-secret-key' );
1084
+
1085
+ /* Register reCAPTCHA Settings Section */
1086
+ add_settings_section(
1087
+ 'yikes_easy_mc_settings_recpatcha_section',
1088
+ '',
1089
+ '',
1090
+ 'yikes_inc_easy_mc_recaptcha_settings_page'
1091
+ );
1092
+
1093
+ add_settings_field(
1094
+ 'yikes-mc-recaptcha-site-key',
1095
+ __( 'Enter reCAPTCHA Site Key', 'yikes-inc-easy-mailchimp-extender' ),
1096
+ '', // callback + validation inside of admin/partials/menu/options.php
1097
+ 'yikes_easy_mc_settings_recpatcha_section'
1098
+ );
1099
+
1100
+ add_settings_field(
1101
+ 'yikes-mc-recaptcha-secret-key',
1102
+ __( 'Enter reCAPTCHA Secret Key', 'yikes-inc-easy-mailchimp-extender' ),
1103
+ '', // callback + validation inside of admin/partials/menu/options.php
1104
+ 'yikes_easy_mc_settings_recpatcha_section'
1105
+ );
1106
+
1107
+ add_settings_field(
1108
+ 'yikes-mc-recaptcha-status',
1109
+ __( 'Enable ReCaptcha', 'yikes-inc-easy-mailchimp-extender' ),
1110
+ '', // callback + validation inside of admin/partials/menu/options.php
1111
+ 'yikes_easy_mc_settings_recpatcha_section'
1112
+ );
1113
+
1114
+ /* End reCAPTCHA Settings */
1115
+
1116
+ /* Debug Settings */
1117
+ register_setting( 'yikes_inc_easy_mc_debug_settings_page' , 'yikes-mailchimp-debug-status' );
1118
+
1119
+ /* Register Debug Settings Section */
1120
+ add_settings_section(
1121
+ 'yikes_easy_mc_settings_debug_section',
1122
+ '',
1123
+ '',
1124
+ 'yikes_inc_easy_mc_debug_settings_page'
1125
+ );
1126
+
1127
+ add_settings_field(
1128
+ 'yikes-mailchimp-debug-status',
1129
+ __( 'Enable Debugging', 'yikes-inc-easy-mailchimp-extender' ),
1130
+ '', // callback + validation inside of admin/partials/menu/options.php
1131
+ 'yikes_easy_mc_settings_debug_section'
1132
+ );
1133
+
1134
+ /* Custom Action Hook For Addon Settings */
1135
+ // custom action hook to allow our add-ons to take
1136
+ // advantage of our base settings
1137
+ do_action( 'yikes-mailchimp-settings-field' );
1138
+
1139
+ }
1140
+
1141
+ /**
1142
+ * Options Sanitization & Validation
1143
+ * @since complete re-write
1144
+ **/
1145
+ function yikes_mc_validate_api_key( $input ) {
1146
+ if( $input == '' ) {
1147
+ return;
1148
+ }
1149
+ $api_key = trim( $input );
1150
+ $dash_position = strpos( trim( $input ), '-' );
1151
+ if( $dash_position !== false ) {
1152
+ $api_endpoint = 'https://' . substr( $api_key, $dash_position + 1 ) . '.api.mailchimp.com/2.0/helper/ping.json';
1153
+ } else {
1154
+ update_option( 'yikes-mc-api-invalid-key-response', __( 'Your API key appears to be invalid.', 'yikes-inc-easy-mailchimp-extender' ) );
1155
+ update_option( 'yikes-mc-api-validation' , 'invalid_api_key' );
1156
+ return $api_key;
1157
+ }
1158
+ $request_args = array(
1159
+ 'body' => array(
1160
+ 'apikey' => $api_key,
1161
+ ),
1162
+ 'timeout' => 10,
1163
+ 'sslverify' => apply_filters( 'yikes-mailchimp-sslverify', true ),
1164
+ );
1165
+ $api_key_response = wp_remote_post( $api_endpoint, $request_args );
1166
+ if( ! is_wp_error( $api_key_response ) ) {
1167
+ $body = json_decode( wp_remote_retrieve_body( $api_key_response ), true );
1168
+ if( isset( $body['msg'] ) && $body['msg'] == "Everything's Chimpy!" ) {
1169
+ update_option( 'yikes-mc-api-validation' , 'valid_api_key' );
1170
+ }
1171
+ } else {
1172
+ require_once YIKES_MC_PATH . 'includes/error_log/class-yikes-inc-easy-mailchimp-error-logging.php';
1173
+ $error_logging = new Yikes_Inc_Easy_Mailchimp_Error_Logging();
1174
+ $error_logging->yikes_easy_mailchimp_write_to_error_log( $api_key_response->get_error_message() , __( "Connecting to MailChimp" , 'yikes-inc-easy-mailchimp-extender' ) , __( "Settings Page/General Settings" , 'yikes-inc-easy-mailchimp-extender' ) );
1175
+ update_option( 'yikes-mc-api-invalid-key-response' , $api_key_response->get_error_message() );
1176
+ update_option( 'yikes-mc-api-validation' , 'invalid_api_key' );
1177
+ }
1178
+ // returned the api key
1179
+ return $api_key;
1180
+ }
1181
+
1182
+ /**
1183
+ * Generate YIKES Inc. Easy Forms for MailChimp Options Page
1184
+ *
1185
+ * @since 1.0.0
1186
+ */
1187
+ function generatePageOptions() {
1188
+ require_once YIKES_MC_PATH . 'admin/partials/menu/options.php'; // include our options page
1189
+ }
1190
+
1191
+ /**
1192
+ * Check if users API key is valid, if not
1193
+ * this function will apply a disabled attribute
1194
+ * to form fields. (input, dropdowns, buttons etc.)
1195
+ * @since v5.5 re-write
1196
+ **/
1197
+ public function is_user_mc_api_valid_form( $echo=true ) {
1198
+ if( $echo == true ) {
1199
+ if( get_option( 'yikes-mc-api-validation' , 'invalid_api_key' ) == 'invalid_api_key' ) {
1200
+ echo 'disabled="disabled"';
1201
+ }
1202
+ } else {
1203
+ if( get_option( 'yikes-mc-api-validation' , 'invalid_api_key' ) == 'invalid_api_key' ) {
1204
+ return false;
1205
+ } else {
1206
+ return true;
1207
+ }
1208
+ }
1209
+ }
1210
+
1211
+ /**
1212
+ * Check for existing plugin options
1213
+ * if they exist, we need to migrate our options to
1214
+ * the correct WordPress options API (old plugin stored options wierdly)
1215
+ *
1216
+ * @since 1.0.0
1217
+ * @param string $yikes_inc_easy_mailchimp_extender The name of this plugin.
1218
+ * @param string $version The version of this plugin.
1219
+ */
1220
+ public function check_for_old_yks_mc_options() {
1221
+ $old_plugin_options = get_option( 'ykseme_storage' );
1222
+ // only perform options migrations if the site is not a multi-site setup
1223
+ if ( !is_multisite() ) {
1224
+ if( apply_filters( 'yikes_mc_old_options_filter' , $old_plugin_options ) ) {
1225
+ // display a notice to the user that they should 'migrate'
1226
+ // from the old plugin settings to the new ones
1227
+ add_action( 'admin_notices', array( $this , 'display_options_migrate_notice' ) , 11 );
1228
+ }
1229
+ }
1230
+ }
1231
+
1232
+ /**
1233
+ * Migrate our old options , to the new options API
1234
+ * moving from 5.5 and beyond..
1235
+ * @since
1236
+ */
1237
+ public function migrate_old_yks_mc_options() {
1238
+ // include our migrate options helper file
1239
+ include_once YIKES_MC_PATH . 'admin/partials/upgrade-helpers/upgrade-migrate-options.php';
1240
+ }
1241
+
1242
+ /**
1243
+ Admin Notices
1244
+ - Notifications displayed at the top of admin pages, back to the user
1245
+ **/
1246
+
1247
+ /**
1248
+ * Check for existing plugin options
1249
+ * if they exist, we need to migrate our options to
1250
+ * the correct WordPress options API (old plugin stored options wierdly)
1251
+ *
1252
+ * @since 1.0.0
1253
+ * @param string $yikes_inc_easy_mailchimp_extender The name of this plugin.
1254
+ * @param string $version The version of this plugin.
1255
+ */
1256
+ public function display_options_migrate_notice() {
1257
+
1258
+ // Confirm that the necessary forms table in the database exists, else bail
1259
+ global $wpdb;
1260
+ if( $wpdb->get_var("show tables like '" . $wpdb->prefix . "yikes_easy_mc_forms'") != $wpdb->prefix . "yikes_easy_mc_forms" ) {
1261
+ return;
1262
+ }
1263
+
1264
+ if( isset( $_GET['yikes-mc-options-migration-dismissed'] ) && $_GET['yikes-mc-options-migration-dismissed'] == 'true' ) {
1265
+ // Delete the options, start a-new! (this will disable the migration notice altogether)
1266
+ delete_option( 'widget_yikes_mc_widget' );
1267
+ delete_option( 'api_validation' );
1268
+ delete_option( 'ykseme_storage' );
1269
+ delete_option( 'yikes-mc-lists' );
1270
+ ?>
1271
+ <div class="yikes-easy-mc-updated migrate-options-notice">
1272
+ <p><?php printf( __( "The previously stored options for %s have been cleared from the database. You should update the plugin options on the <a href='%s' title='Settings Page'>settings page</a> before continuing. You should also update the shortcodes used to generate your forms, and any widgets you may have previously set-up.", 'yikes-inc-easy-mailchimp-extender' ), '<strong>YIKES Inc. Easy Forms for MailChimp</strong>', admin_url( 'admin.php?page=yikes-inc-easy-mailchimp-settings' ) ); ?></p>
1273
+ </div>
1274
+ <?php
1275
+ } else {
1276
+ ?>
1277
+ <div class="yikes-easy-mc-updated migrate-options-notice">
1278
+ <p><?php printf( __( "It looks like you're upgrading from a previous version of %s.", 'yikes-inc-easy-mailchimp-extender' ), '<strong>YIKES Inc. Easy Forms for MailChimp</strong>' ); ?> <?php printf( __( "In the newest version of %s, the options data structure has changed. We've also moved the mailing lists into its own database table to allow for some higher level customization. Now you can easily create multiple forms and assign them to the same mailing list." , 'yikes-inc-easy-mailchimp-extender' ), '<strong>YIKES Inc. Easy Forms for MailChimp</strong>' ); ?></p>
1279
+ <p><?php _e( "Before you continue, it's strongly recommended you the perform the migration to ensure the plugin continues to function properly.", 'yikes-inc-easy-mailchimp-extender' ); ?></p>
1280
+ <p><em><?php _e( "It's also strongly recommended that you take a backup of your database.", 'yikes-inc-easy-mailchimp-extender' ); ?></em></p>
1281
+ <section id="migration-buttons">
1282
+ <!-- migrate button -->
1283
+ <form>
1284
+ <input type="hidden" name="yikes-mc-update-option-structure" value="yikes-mc-update-option-structure" />
1285
+ <a href="<?php echo wp_nonce_url( esc_url_raw( admin_url( 'admin.php?page=yikes-inc-easy-mailchimp-update' ) ), 'yikes-mc-migrate-options' , 'migrate_options_nonce' ); ?>" class="button-secondary"><?php _e( 'Perform Migration' , 'yikes-inc-easy-mailchimp-extender' ); ?></a>
1286
+ </form>
1287
+ <!-- dismiss button -->
1288
+ <form>
1289
+ <a href="<?php echo wp_nonce_url( esc_url_raw( admin_url() ), 'yikes-mc-dismiss-migration' , 'dismiss_migration_nonce' ); ?>" class="button-secondary"><?php _e( 'Dismiss Notice' , 'yikes-inc-easy-mailchimp-extender' ); ?></a>
1290
+ </form>
1291
+ </section>
1292
+
1293
+ </div>
1294
+ <?php
1295
+ }
1296
+ }
1297
+
1298
+ /*
1299
+ * Search through multi dimensional array
1300
+ * and return the index ( used to find the list name assigned to a form )
1301
+ * - http://stackoverflow.com/questions/6661530/php-multi-dimensional-array-search
1302
+ */
1303
+ function findMCListID($id, $array) {
1304
+ foreach ($array as $key => $val) {
1305
+ if ($val['id'] === $id) {
1306
+ return $key;
1307
+ }
1308
+ }
1309
+ return null;
1310
+ } // end
1311
+
1312
+ /* Ajax Migrate Options */
1313
+ function migrate_archived_options() {
1314
+ // all options prefixed with 'yikes-mc-'
1315
+ $option_name = 'yikes-mc-'.$_POST['option_name'];
1316
+ $option_value = $_POST['option_value'];
1317
+ if( json_decode( $option_value ) ) {
1318
+ // decode our lists() array, and store it
1319
+ $opt_value = json_decode( $option_value, true );
1320
+ } else {
1321
+ $opt_value = $option_value;
1322
+ }
1323
+ update_option( $option_name, $opt_value );
1324
+ wp_die(); // this is required to terminate immediately and return a proper response
1325
+ exit;
1326
+ }
1327
+
1328
+ /* Ajax Migrate Forms */
1329
+ function migrate_previously_setup_forms() {
1330
+ $option_name = $_POST['option_name'];
1331
+ $done = $_POST['done_import'];
1332
+ // Create some starter forms for the user
1333
+ // based on previously imported lists (to our old version)
1334
+ if( $option_name == 'yikes-mc-lists' ) {
1335
+ global $wpdb;
1336
+ $option_value = $_POST['option_value'];
1337
+ $new_options = json_decode( stripslashes_deep( $option_value ) , true );
1338
+
1339
+ $list_id = $new_options['id'];
1340
+ $form_name = $new_options['name'];
1341
+ $fields = $new_options['fields']; // our fields array
1342
+
1343
+ $custom_styles = isset( $new_options['custom_styles'] ) ? json_encode( $new_options['custom_styles'] ) : '0'; // store as an array with all of our styles
1344
+ $custom_template = isset( $new_options['custom_template'] ) ? json_encode( $new_options['custom_template'] ) : '0'; // store template data as an array ( active , template used )
1345
+ $send_welcome_email = isset( $new_options['yks_mailchimp_send_welcome_'.$list_id] ) ? '0' : '1';
1346
+ $redirect_user_on_submit = isset( $new_options['yks_mailchimp_redirect_'.$list_id] ) ? '1' : '0';
1347
+ $redirect_page = isset( $new_options['page_id_'.$list_id] ) ? $new_options['page_id_'.$list_id] : '';
1348
+
1349
+ /* Insert Forms Function */
1350
+ $wpdb->insert(
1351
+ $wpdb->prefix . 'yikes_easy_mc_forms',
1352
+ array(
1353
+ 'list_id' => $list_id,
1354
+ 'form_name' => $form_name,
1355
+ 'form_description' => '',
1356
+ 'fields' => json_encode( $fields ),
1357
+ 'custom_styles' => $custom_styles,
1358
+ 'custom_template' => $custom_template,
1359
+ 'send_welcome_email' => $send_welcome_email,
1360
+ 'redirect_user_on_submit' => $redirect_user_on_submit,
1361
+ 'redirect_page' => $redirect_page,
1362
+ 'submission_settings' => '',
1363
+ 'optin_settings' => '',
1364
+ 'error_messages' => '',
1365
+ 'custom_notifications' => '',
1366
+ 'impressions' => '0',
1367
+ 'submissions' => '0',
1368
+ 'custom_fields' => '',
1369
+ )
1370
+ );
1371
+ }
1372
+ if( $done == 'done' ) {
1373
+ wp_send_json( array( 'form_name' => $form_name, 'completed_import' => true ) );
1374
+ } else {
1375
+ wp_send_json( array( 'form_name' => $form_name, 'completed_import' => false ) );
1376
+ }
1377
+ wp_die();
1378
+ exit;
1379
+ }
1380
+
1381
+ /*
1382
+ * generate_options_pages_sidebar_menu();
1383
+ * Render our sidebar menu on all of the setings pages (general, form, checkbox, recaptcha, popup, debug etc. )
1384
+ * @since v5.6 - complete re-write
1385
+ */
1386
+ public function generate_options_pages_sidebar_menu() {
1387
+ if( isset( $_REQUEST['section'] ) ) {
1388
+ $selected = $_REQUEST['section'];
1389
+ }
1390
+ $installed_addons = get_option( 'yikes-easy-mc-active-addons' , array() );
1391
+ // sort our addons array alphabetically so they appear in similar orders across all sites
1392
+ asort( $installed_addons );
1393
+ ?>
1394
+ <h3><span><?php _e( 'Additional Settings' , 'yikes-inc-easy-mailchimp-extender' ); ?></span></h3>
1395
+ <div class="inside">
1396
+ <ul id="settings-nav">
1397
+ <li><?php if( isset( $_REQUEST['section'] ) && $_REQUEST['section'] == 'general-settings' || !isset( $_REQUEST['section'] ) ) { ?><div class="option-menu-selected-arrow"></div><?php } ?><a href="<?php echo esc_url_raw( add_query_arg( array( 'section' => 'general-settings' ) , admin_url( 'admin.php?page=yikes-inc-easy-mailchimp-settings&section=general-settings' ) ) ); ?>"><?php _e( 'General Settings' , 'yikes-inc-easy-mailchimp-extender' ); ?></a></li>
1398
+ <li><?php if( isset( $_REQUEST['section'] ) && $_REQUEST['section'] == 'integration-settings' ) { ?><div class="option-menu-selected-arrow"></div><?php } ?><a href="<?php echo esc_url_raw( add_query_arg( array( 'section' => 'integration-settings' ) , admin_url( 'admin.php?page=yikes-inc-easy-mailchimp-settings&section=integration-settings' ) ) ); ?>"><?php _e( 'Integration Settings' , 'yikes-inc-easy-mailchimp-extender' ); ?></a></li>
1399
+ <li><?php if( isset( $_REQUEST['section'] ) && $_REQUEST['section'] == 'recaptcha-settings' ) { ?><div class="option-menu-selected-arrow"></div><?php } ?><a href="<?php echo esc_url_raw( add_query_arg( array( 'section' => 'recaptcha-settings' ) , admin_url( 'admin.php?page=yikes-inc-easy-mailchimp-settings&section=recaptcha-settings' ) ) ); ?>"><?php _e( 'ReCaptcha Settings' , 'yikes-inc-easy-mailchimp-extender' ); ?></a></li>
1400
+ <li><?php if( isset( $_REQUEST['section'] ) && $_REQUEST['section'] == 'api-cache-settings' ) { ?><div class="option-menu-selected-arrow"></div><?php } ?><a href="<?php echo esc_url_raw( add_query_arg( array( 'section' => 'api-cache-settings' ) , admin_url( 'admin.php?page=yikes-inc-easy-mailchimp-settings&section=api-cache-settings' ) ) ); ?>"><?php _e( 'API Cache Settings' , 'yikes-inc-easy-mailchimp-extender' ); ?></a></li>
1401
+ <li><?php if( isset( $_REQUEST['section'] ) && $_REQUEST['section'] == 'debug-settings' ) { ?><div class="option-menu-selected-arrow"></div><?php } ?><a href="<?php echo esc_url_raw( add_query_arg( array( 'section' => 'debug-settings' ) , admin_url( 'admin.php?page=yikes-inc-easy-mailchimp-settings&section=debug-settings' ) ) ); ?>"><?php _e( 'Debug Settings' , 'yikes-inc-easy-mailchimp-extender' ); ?></a></li>
1402
+ <li><?php if( isset( $_REQUEST['section'] ) && $_REQUEST['section'] == 'import-export-forms' ) { ?><div class="option-menu-selected-arrow"></div><?php } ?><a href="<?php echo esc_url_raw( add_query_arg( array( 'section' => 'import-export-forms' ) , admin_url( 'admin.php?page=yikes-inc-easy-mailchimp-settings&section=import-export-forms' ) ) ); ?>"><?php _e( 'Import/Export' , 'yikes-inc-easy-mailchimp-extender' ); ?></a></li>
1403
+ </ul>
1404
+ <?php
1405
+ // create our add-on settings pages
1406
+ if( !empty( $installed_addons ) ) {
1407
+ ?>
1408
+ <hr class="add-on-settings-divider" />
1409
+ <strong><?php _e( 'Addon Settings' , 'yikes-inc-easy-mailchimp-extender' ); ?></strong>
1410
+ <ul id="addon-settings-nav">
1411
+ <?php
1412
+ foreach( $installed_addons as $addon_name ) {
1413
+ ?>
1414
+ <li>
1415
+ <?php if( isset( $_REQUEST['section'] ) && $_REQUEST['section'] == $addon_name ) { ?><div class="option-menu-selected-arrow"></div><?php } ?><a href="<?php echo esc_url_raw( add_query_arg( array( 'section' => $addon_name, 'addon' => 'true' ) , admin_url( 'admin.php?page=yikes-inc-easy-mailchimp-settings&section='.$addon_name ) ) ); ?>"><?php echo ucwords( str_replace( '-' , ' ' , $addon_name ) ); ?></a></li>
1416
+ <?php
1417
+ }
1418
+ ?>
1419
+ </ul>
1420
+ <?php
1421
+ }
1422
+ ?>
1423
+ </div> <!-- .inside -->
1424
+ <?php
1425
+ }
1426
+
1427
+ /*
1428
+ * generate_manage_forms_sidebar();
1429
+ * Render our sidebar menu on all of the setings pages (general, form, checkbox, recaptcha, popup, debug etc. )
1430
+ * @since v5.6 - complete re-write
1431
+ */
1432
+ public function generate_manage_forms_sidebar( $lists ) {
1433
+ // create a custom URL to allow for creating fields
1434
+ $url = esc_url_raw(
1435
+ add_query_arg(
1436
+ array(
1437
+ 'action' => 'yikes-easy-mc-create-form',
1438
+ 'nonce' => wp_create_nonce( 'create_mailchimp_form' )
1439
+ )
1440
+ )
1441
+ );
1442
+ ?>
1443
+ <h3><?php _e( 'Create a New Signup Form' , 'yikes-inc-easy-mailchimp-extender' ); ?></h3>
1444
+
1445
+ <div class="inside">
1446
+
1447
+ <p class="description"><?php _e( "Give your form a name, select a MailChimp list to assign users to, then click 'Create'.", 'yikes-inc-easy-mailchimp-extender' ); ?></p>
1448
+
1449
+ <form id="import-list-to-site" method="POST" action="<?php echo $url; ?>">
1450
+ <input type="hidden" name="import-list-to-site" value="1" />
1451
+ <!-- Name your new form -->
1452
+ <label for="form-name"><strong><?php _e( 'Form Name' , 'yikes-inc-easy-mailchimp-extender' ); ?></strong>
1453
+ <input type="text" class="widefat input-field" placeholder="<?php _e( 'Form Name' , 'yikes-inc-easy-mailchimp-extender' ); ?>" name="form-name" id="form-name" <?php $this->is_user_mc_api_valid_form( true ); ?> required>
1454
+ </label>
1455
+ <!-- Name your new form -->
1456
+ <label for="form-description"><strong><?php _e( 'Form Description' , 'yikes-inc-easy-mailchimp-extender' ); ?></strong>
1457
+ <textarea class="widefat input-field form-description" placeholder="<?php _e( 'Form Description' , 'yikes-inc-easy-mailchimp-extender' ); ?>" name="form-description" id="form-description" <?php $this->is_user_mc_api_valid_form( true ); ?>></textarea>
1458
+ </label>
1459
+ <!-- Associate this form with a list! -->
1460
+ <label for="associated-list"><strong><?php _e( 'Associated List' , 'yikes-inc-easy-mailchimp-extender' ); ?></strong>
1461
+ <select name="associated-list" id="associated-list" class=" input-field" <?php $this->is_user_mc_api_valid_form( true ); if( isset( $lists ) && empty( $lists ) ) { echo 'disabled="disabled"'; } ?>>
1462
+ <?php
1463
+ if( isset( $lists ) && !empty( $lists ) ) {
1464
+ foreach( $lists as $mailing_list ) {
1465
+ ?>
1466
+ <option value="<?php echo $mailing_list['id']; ?>"><?php echo stripslashes( $mailing_list['name'] ) . ' (' . $mailing_list['stats']['member_count'] . ') '; ?></option>
1467
+ <?php
1468
+ }
1469
+ } else {
1470
+ if( get_option( 'yikes-mc-api-validation' , 'invalid_api_key' ) == 'invalid_api_key' ) {
1471
+ ?>
1472
+ <option><?php echo __( "Please enter a valid API key." , 'yikes-inc-easy-mailchimp-extender' ); ?></option>
1473
+ <?php
1474
+ } else {
1475
+ ?>
1476
+ <option><?php echo __( "No lists were found on the account." , 'yikes-inc-easy-mailchimp-extender' ); ?></option>
1477
+ <?php
1478
+
1479
+ }
1480
+ }
1481
+ ?>
1482
+ </select>
1483
+ <?php
1484
+ if( isset( $lists ) && empty( $lists ) ) {
1485
+ if( get_option( 'yikes-mc-api-validation' , 'invalid_api_key' ) != 'invalid_api_key' ) {
1486
+ ?>
1487
+ <p class="description">
1488
+ <?php printf( __( 'Head over to <a href="http://www.MailChimp.com" title="%s">MailChimp</a> to create a new list.', 'yikes-inc-easy-mailchimp-extender' ) , __( 'Create a list' , 'yikes-inc-easy-mailchimp-extender' ) ); ?>
1489
+ </p>
1490
+ <?php
1491
+ }
1492
+ }
1493
+ ?>
1494
+ </label>
1495
+ <?php
1496
+ if( $this->is_user_mc_api_valid_form( false ) ) {
1497
+ echo submit_button( __( 'Create', 'yikes-inc-easy-mailchimp-extender' ) , 'primary' , '' , false , array( 'style' => 'margin:.75em 0 .5em 0;' ) );
1498
+ } else {
1499
+ echo '<p class="description">' . __( "Please enter a valid MailChimp API key to get started." , 'yikes-inc-easy-mailchimp-extender' ) . '</p>';
1500
+ ?>
1501
+ <a href="<?php echo esc_url_raw( admin_url( 'admin.php?page=yikes-inc-easy-mailchimp-settings&settings-updated=true' ) ); ?>"><?php _e( 'general settings' , 'yikes-inc-easy-mailchimp-extender' ); ?></a>
1502
+ <?php
1503
+ }
1504
+ ?>
1505
+ </form>
1506
+ </div> <!-- .inside -->
1507
+ <?php
1508
+ }
1509
+
1510
+ /*
1511
+ * Generate a dropdown of post and pages
1512
+ * so the user can send the user to on form submission
1513
+ */
1514
+ public function generate_page_redirect_dropdown( $redirect, $redirect_page, $custom_redirect_url ) {
1515
+ $post_types = get_post_types();
1516
+ ?>
1517
+ <label id="redirect-user-to-selection-label" for="redirect-user-to-selection" class="<?php if( $redirect == '0' ) { echo 'yikes-easy-mc-hidden'; } ?>">
1518
+ <?php _e( "Select A Page or Post" , 'yikes-inc-easy-mailchimp-extender' ); ?>
1519
+ <select id="redirect-user-to-selection" name="redirect-user-to-selection" onchange="shouldWeDisplayCustomURL( this );return;">
1520
+ <?php
1521
+ // loop over registered post types, and query!
1522
+ foreach( $post_types as $registered_post_type ) {
1523
+ // exclude a few built in custom post types
1524
+ if( ! in_array( $registered_post_type , array( 'attachment' , 'revision' , 'nav_menu_item' ) ) ) {
1525
+ // run our query, to retreive the posts
1526
+ $pages = get_posts( array(
1527
+ 'order' => 'ASC',
1528
+ 'orderby' => 'post_title',
1529
+ 'post_type' => $registered_post_type,
1530
+ 'post_status' => 'publish',
1531
+ 'numberposts' => -1
1532
+ ) );
1533
+ // only show cpt's that have posts assigned
1534
+ if( !empty( $pages ) ) {
1535
+ ?>
1536
+ <optgroup label="<?php echo ucwords( str_replace( '_' , ' ' , $registered_post_type ) ); ?>">
1537
+ <?php
1538
+ foreach( $pages as $page ) {
1539
+ ?><option <?php selected( $redirect_page , $page->ID ); ?> value="<?php echo $page->ID; ?>"><?php echo $page->post_title; ?></option><?php
1540
+ }
1541
+ ?>
1542
+ <option <?php selected( $redirect_page, 'custom_url' ); ?> value="custom_url"><?php echo __( 'Custom URL', 'yikes-inc-easy-mailchimp-extender' ); ?></option>
1543
+ </optgroup>
1544
+ <?php
1545
+ }
1546
+ }
1547
+ }
1548
+ ?>
1549
+ </select>
1550
+
1551
+ <label name="custom-redirect-url" class="custom_redirect_url_label" <?php if( ! isset( $redirect_page ) || $redirect_page != 'custom_url' ) { echo 'style="display:none;"'; } ?>>
1552
+ <?php _e( "Enter Custom URL" , 'yikes-inc-easy-mailchimp-extender' ); ?>
1553
+ <input type="text" class="widefat custom-redirect-url" name="custom-redirect-url" value="<?php echo $custom_redirect_url; ?>" />
1554
+ </label>
1555
+
1556
+ </label>
1557
+ <?php
1558
+ }
1559
+
1560
+ /*
1561
+ * generate_show_some_love_container()
1562
+ * Generate a container, with some author info
1563
+ *
1564
+ * Displayed in sidebars
1565
+ */
1566
+ public function generate_show_some_love_container() {
1567
+ // if no active add-ons are installed,
1568
+ // lets display our branding and add-on sidebar
1569
+ if( get_option( 'yikes-easy-mc-active-addons' , array() ) == array() ) {
1570
+
1571
+ /* On Edit Forms Page Display Upsell to Customizer */
1572
+ $screen = get_current_screen();
1573
+ if( isset( $screen ) && $screen->base == 'admin_page_yikes-mailchimp-edit-form' ) {
1574
+ ?>
1575
+
1576
+ <div class="postbox yikes-easy-mc-postbox show-some-love-container">
1577
+
1578
+ <?php $this->generate_edit_forms_upsell_ad(); ?>
1579
+
1580
+ </div>
1581
+
1582
+ <?php } else { ?>
1583
+
1584
+ <div class="postbox yikes-easy-mc-postbox show-some-love-container">
1585
+
1586
+ <!-- review us container -->
1587
+ <h3 data-alt-text="<?php _e( 'About YIKES Inc.', 'yikes-inc-easy-mailchimp-extender' ); ?>"><?php _e( 'Show YIKES Inc. Some Love' , 'yikes-inc-easy-mailchimp-extender' ); ?></h3>
1588
+ <div id="review-yikes-easy-mc" class="inside">
1589
+
1590
+ <p>
1591
+ <?php _e( 'Leave a review' , 'yikes-inc-easy-mailchimp-extender' ); ?>
1592
+ <p class="star-container">
1593
+ <a href="https://wordpress.org/support/view/plugin-reviews/yikes-inc-easy-mailchimp-extender" target="_blank">
1594
+ <b class="dashicons dashicons-star-filled"></b>
1595
+ <b class="dashicons dashicons-star-filled"></b>
1596
+ <b class="dashicons dashicons-star-filled"></b>
1597
+ <b class="dashicons dashicons-star-filled"></b>
1598
+ <b class="dashicons dashicons-star-filled"></b>
1599
+ </a>
1600
+ </p>
1601
+ </p>
1602
+
1603
+ <?php _e( 'Tweet about it' , 'yikes-inc-easy-mailchimp-extender' ); ?>
1604
+ <p class="sidebar-container">
1605
+ <a href="https://twitter.com/share" class="twitter-share-button" data-url="https://wordpress.org/plugins/yikes-inc-easy-mailchimp-extender/" data-text="I'm using the Easy Forms for MailChimp plugin by @YikesInc to grow my mailing list - it's awesome! -" data-hashtags="MailChimp">Tweet</a>
1606
+ <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>
1607
+ </p>
1608
+
1609
+ <?php _e( 'Vote that the plugin works' , 'yikes-inc-easy-mailchimp-extender' ); ?>
1610
+ <p class="sidebar-container">
1611
+ <a href="https://wordpress.org/plugins/yikes-inc-easy-mailchimp-extender/" target="_blank">
1612
+ <?php _e( 'Vote for Compatibility' , 'yikes-inc-easy-mailchimp-extender' ); ?>
1613
+ </a>
1614
+ </p>
1615
+ </div>
1616
+
1617
+ <p class="description sidebar-footer-text"><?php printf( __( "This plugin made with %s by %s" , 'yikes-inc-easy-mailchimp-extender' ), '<span class="dashicons dashicons-heart yikes-love"></span>', '<a href="http://www.yikesinc.com" target="_blank" title="YIKES Inc.">YIKES Inc.</a>' ); ?> </p>
1618
+
1619
+ <section id="about-yikes-inc" class="inside">
1620
+ <a href="https://www.yikesinc.com" target="_blank" title="YIKES Inc.">
1621
+ <img src="<?php echo YIKES_MC_URL . 'includes/images/About_Page/yikes-logo.png'; ?>" class="about-sidebar-yikes-logo" />
1622
+ </a>
1623
+ <p><strong>YIKES Inc.</strong> &mdash; <?php _e( 'is a web design and development company located in Philadelphia, Pennsylvania, US. YIKES specializes in custom WordPress theme and plugin development, site maintenance, eCommerce, custom-built web-based applications and more.', 'yikes-inc-easy-mailchimp-extender' ); ?></p>
1624
+ </section>
1625
+
1626
+ <p class="description sidebar-footer-text"><a href="#" class="about-yikes-inc-toggle" data-alt-text="<?php _e( 'Show YIKES Some Love', 'yikes-inc-easy-mailchimp-extender' ); ?>"><?php _e( 'About YIKES', 'yikes-inc-easy-mailchimp-extender' ); ?></a></p>
1627
+
1628
+ </div>
1629
+
1630
+ <?php } ?>
1631
+
1632
+ <div class="postbox yikes-easy-mc-postbox">
1633
+
1634
+ <!-- review us container -->
1635
+ <h3><?php _e( 'Easy Forms for MailChimp Add-Ons' , 'yikes-inc-easy-mailchimp-extender' ); ?></h3>
1636
+ <div id="review-yikes-easy-mc" class="inside">
1637
+ <p><?php _e( "Check out available add-ons for some seriously enhanced features." , 'yikes-inc-easy-mailchimp-extender' ); ?></p>
1638
+ <p><a class="button-secondary" href="<?php echo esc_url_raw( admin_url( 'admin.php?page=yikes-inc-easy-mailchimp-addons' ) ); ?>" title="<?php _e( 'View Add-Ons' , 'yikes-inc-easy-mailchimp-extender' ); ?>"><?php _e( 'View Add-Ons' , 'yikes-inc-easy-mailchimp-extender' ); ?></a></p>
1639
+ </div>
1640
+
1641
+ </div>
1642
+ <?php
1643
+ }
1644
+
1645
+ /**
1646
+ * Custom action hook for our extensions to hook into
1647
+ * @parameter get_current_screen() current screen information
1648
+ */
1649
+ do_action( 'yikes-mailchimp-admin-sidebar', get_current_screen() );
1650
+
1651
+ }
1652
+
1653
+ /*
1654
+ * generate_form_editor( $list_id )
1655
+ * Submit an API request to get our merge variables, and build up a small form editor
1656
+ * for users to 'customize' their form
1657
+ * -
1658
+ * @parameters - $list_id - pass in the list ID to retreive merge variables from
1659
+ */
1660
+ public function generate_form_editor( $form_fields, $list_id, $merge_variables, $interest_groups ) {
1661
+
1662
+ // if no list id, die!
1663
+ if( ! $list_id ) {
1664
+ die( __( "We've encountered an error. No list ID was sent." , 'yikes-inc-easy-mailchimp-extender' ) );
1665
+ }
1666
+
1667
+ if( ! $merge_variables ) {
1668
+ die( __( "We've encountered an error. Reload the page and try again. If the error persists, please reach out to support." , 'yikes-inc-easy-mailchimp-extender' ) );
1669
+ }
1670
+
1671
+ if( ! empty( $form_fields ) ) {
1672
+
1673
+ // find any fields that are assigned to this form, that don't exist in MailChimp
1674
+ // or else were going to run into issues when we submit the form
1675
+ $available_merge_variables = array();
1676
+ $available_interest_groups = array();
1677
+
1678
+ $assigned_fields= array();
1679
+
1680
+ // loop over merge variables
1681
+ if( ! empty( $merge_variables['data'][0]['merge_vars'] ) ) {
1682
+ foreach( $merge_variables['data'][0]['merge_vars'] as $merge_tag ) {
1683
+ $available_merge_variables[] = $merge_tag['tag'];
1684
+ }
1685
+ }
1686
+
1687
+ // loop over interest groups
1688
+ if( ! empty( $interest_groups ) && ! isset( $interest_groups['error'] ) ) {
1689
+ foreach( $interest_groups as $interest_group ) {
1690
+ $available_interest_groups[] = $interest_group['id'];
1691
+ }
1692
+ }
1693
+
1694
+ // build our assigned fields
1695
+ foreach( $form_fields as $field => $value ) {
1696
+ $assigned_fields[] = $field;
1697
+ }
1698
+
1699
+ $merged_fields = array_merge( $available_merge_variables , $available_interest_groups );
1700
+ $excluded_fields = array_diff( $assigned_fields , $merged_fields );
1701
+
1702
+ $i = 1;
1703
+ foreach( $form_fields as $field ) {
1704
+
1705
+ if( isset( $field['merge'] ) ) {
1706
+ ?>
1707
+ <section class="draggable" id="<?php echo $field['merge']; ?>">
1708
+ <!-- top -->
1709
+ <a href="#" class="expansion-section-title settings-sidebar">
1710
+ <span class="dashicons dashicons-plus"></span><?php echo stripslashes( $field['label'] ); ?>
1711
+ <?php if( in_array( $field['merge'] , $excluded_fields ) ) { ?>
1712
+ <img src="<?php echo YIKES_MC_URL . 'includes/images/warning.svg'; ?>" class="field-doesnt-exist-notice" title="<?php _e( 'Field no longer exists.' , 'yikes-inc-easy-mailchimp-extender' ); ?>" alt="<?php _e( 'Field no longer exists.' , 'yikes-inc-easy-mailchimp-extender' ); ?>">
1713
+ <?php } ?>
1714
+ <span class="field-type-text"><small><?php echo __( 'type' , 'yikes-inc-easy-mailchimp-extender' ) . ' : ' . $field['type']; ?></small></span>
1715
+ </a>
1716
+ <!-- expansion section -->
1717
+ <div class="yikes-mc-settings-expansion-section">
1718
+
1719
+ <?php if( in_array( $field['merge'] , $excluded_fields ) ) { ?>
1720
+ <p class="yikes-mc-warning-message"><?php _e( "This field no longer exists in this list. Delete this field from the form to prevent issues on your website." , 'yikes-inc-easy-mailchimp-extender' ); ?></p>
1721
+ <?php } ?>
1722
+
1723
+ <!-- store the label -->
1724
+ <input type="hidden" name="field[<?php echo $field['merge']; ?>][label]" value="<?php echo $field['label']; ?>" />
1725
+ <input type="hidden" name="field[<?php echo $field['merge']; ?>][type]" value="<?php echo $field['type']; ?>" />
1726
+ <input type="hidden" name="field[<?php echo $field['merge']; ?>][merge]" value="<?php echo $field['merge']; ?>" />
1727
+ <input type="hidden" class="field-<?php echo $field['merge']; ?>-position position-input" name="field[<?php echo $field['merge']; ?>][position]" value="<?php echo $i++; ?>" />
1728
+
1729
+ <?php if ( $field['type'] == 'radio' || $field['type'] == 'dropdown' || $field['type'] == 'select' ) {
1730
+ $choices = json_decode( $field['choices'], true );
1731
+ ?>
1732
+ <input type="hidden" name="field[<?php echo $field['merge']; ?>][choices]" value='<?php echo esc_attr( json_encode( $choices ) ); ?>' />
1733
+ <?php } ?>
1734
+
1735
+ <!-- Single or Double Opt-in -->
1736
+ <p class="type-container"><!-- necessary to prevent skipping on slideToggle(); -->
1737
+
1738
+ <table class="form-table form-field-container">
1739
+
1740
+ <!-- Merge Tag -->
1741
+ <tr valign="top">
1742
+ <td scope="row">
1743
+ <label for="merge-tag">
1744
+ <?php _e( 'Merge Tag' , 'yikes-inc-easy-mailchimp-extender' ); ?>
1745
+ </label>
1746
+ </td>
1747
+ <td>
1748
+ <input class="widefat merge-tag-text" type="text" readonly value="<?php echo $field['merge']; ?>">
1749
+ </td>
1750
+ </tr>
1751
+
1752
+ <!-- Placeholder Value -->
1753
+ <?php switch( $field['type'] ) {
1754
+
1755
+ case 'text':
1756
+ case 'email':
1757
+ case 'url':
1758
+ case 'number';
1759
+ case 'birthday':
1760
+ case 'date':
1761
+ case 'zip':
1762
+ case 'phone':
1763
+ ?>
1764
+ <!-- Placeholder -->
1765
+ <tr valign="top">
1766
+ <td scope="row">
1767
+ <label for="placeholder">
1768
+ <?php _e( 'Placeholder' , 'yikes-inc-easy-mailchimp-extender' ); ?>
1769
+ </label>
1770
+ </td>
1771
+ <td>
1772
+ <input type="text" class="widefat" name="field[<?php echo $field['merge']; ?>][placeholder]" value="<?php echo isset( $field['placeholder'] ) ? $field['placeholder'] : '' ; ?>" />
1773
+ <p class="description"><small><?php _e( "Assign a placeholder value to this field.", 'yikes-inc-easy-mailchimp-extender' );?></small></p>
1774
+ </td>
1775
+ </tr>
1776
+ <?php
1777
+ break;
1778
+ }
1779
+ ?>
1780
+
1781
+ <!-- Default Value -->
1782
+ <?php switch( $field['type'] ) {
1783
+ default:
1784
+ case 'text':
1785
+ case 'number':
1786
+ case 'url':
1787
+ ?>
1788
+ <tr valign="top">
1789
+ <td scope="row">
1790
+ <label for="placeholder">
1791
+ <?php _e( 'Default Value' , 'yikes-inc-easy-mailchimp-extender' ); ?>
1792
+ </label>
1793
+ </td>
1794
+ <td>
1795
+ <input <?php if( $field['type'] != 'number' ) { ?> type="text" <?php } else { ?> type="number" <?php } ?> class="widefat" name="field[<?php echo $field['merge']; ?>][default]" <?php if( $field['type'] != 'url' ) { ?> value="<?php echo isset( $field['default'] ) ? stripslashes( wp_strip_all_tags( $field['default'] ) ) : ''; ?>" <?php } else { ?> value="<?php echo isset( $field['default'] ) ? stripslashes( wp_strip_all_tags( esc_url_raw( $field['default'] ) ) ) : ''; ?>" <?php } ?> />
1796
+ <p class="description"><small><?php _e( "Assign a default value to populate this field with on initial page load.", 'yikes-inc-easy-mailchimp-extender' );?></small></p>
1797
+ <?php
1798
+ switch( $field['type'] ) {
1799
+ case 'text':
1800
+ ?>
1801
+ <p><small class="pre-defined-tag-link"><a href="#TB_inline?width=600&height=550&inlineId=pre-defined-tag-container" onclick="storeGlobalClicked( jQuery( this ) );" class="thickbox"><?php _e( 'View Pre-Defined Tags' , 'yikes-inc-easy-mailchimp-extender' ); ?></a></small></p>
1802
+ <?php
1803
+ break;
1804
+ } ?>
1805
+ </td>
1806
+ </tr>
1807
+ <?php
1808
+ break;
1809
+
1810
+ case 'radio':
1811
+ ?>
1812
+ <tr valign="top">
1813
+ <td scope="row">
1814
+ <label for="placeholder">
1815
+ <?php _e( 'Default Selection' , 'yikes-inc-easy-mailchimp-extender' ); ?>
1816
+ </label>
1817
+ </td>
1818
+ <td>
1819
+ <?php if( ! isset( $field['default_choice'] ) || empty( $field['default_choice'] ) ) { $decode = json_decode( $field['choices'], true ); $field['default_choice'] = $decode[0]; }
1820
+ $x = 0;
1821
+ foreach( json_decode( $field['choices'], true ) as $choice => $value ) { ?>
1822
+ <label for="<?php echo $field['merge'].'-'.$x; ?>">
1823
+ <input id="<?php echo $field['merge'].'-'.$x; ?>" type="radio" name="field[<?php echo $field['merge']; ?>][default_choice]" value="<?php echo $x; ?>" <?php checked( $field['default_choice'], $x ); ?>><?php echo $value; ?>&nbsp;
1824
+ </label>
1825
+ <?php $x++; } ?>
1826
+ <p class="description"><small><?php _e( "Select the option that should be selected by default.", 'yikes-inc-easy-mailchimp-extender' );?></small></p>
1827
+ </td>
1828
+ </tr>
1829
+
1830
+ <?php
1831
+ break;
1832
+
1833
+ case 'dropdown':
1834
+ ?>
1835
+ <tr valign="top">
1836
+ <td scope="row">
1837
+ <label for="placeholder">
1838
+ <?php _e( 'Default Selection' , 'yikes-inc-easy-mailchimp-extender' ); ?>
1839
+ </label>
1840
+ </td>
1841
+ <td>
1842
+ <select type="default" name="field[<?php echo $field['merge']; ?>][default_choice]">
1843
+ <?php foreach( json_decode( $field['choices'], true ) as $choice => $value ) { ?>
1844
+ <option value="<?php echo $choice; ?>" <?php selected( $field['default_choice'] , $choice ); ?>><?php echo $value; ?></option>
1845
+ <?php } ?>
1846
+ </select>
1847
+ <p class="description"><small><?php _e( "Which option should be selected by default?", 'yikes-inc-easy-mailchimp-extender' );?></small></p>
1848
+ </td>
1849
+ </tr>
1850
+
1851
+ <?php
1852
+ break;
1853
+
1854
+ case "birthday":
1855
+ case "address":
1856
+ break;
1857
+
1858
+ ?>
1859
+
1860
+ <?php } // end Default Value ?>
1861
+
1862
+
1863
+ <!-- Field Description -->
1864
+ <tr valign="top">
1865
+ <td scope="row">
1866
+ <label for="placeholder">
1867
+ <?php _e( 'Description' , 'yikes-inc-easy-mailchimp-extender' ); ?>
1868
+ </label>
1869
+ </td>
1870
+ <td>
1871
+ <textarea class="widefat field-description-input" name="field[<?php echo $field['merge']; ?>][description]"><?php echo isset( $field['description'] ) ? stripslashes( esc_html( $field['description'] ) ) : '' ; ?></textarea>
1872
+ <p class="description"><small><?php _e( "Enter the description for the form field. This will be displayed to the user and will provide some direction on how the field should be filled out or selected.", 'yikes-inc-easy-mailchimp-extender' );?></small></p>
1873
+ </td>
1874
+ </tr>
1875
+ <!-- Additional Classes -->
1876
+ <tr valign="top">
1877
+ <td scope="row">
1878
+ <label for="placeholder">
1879
+ <?php _e( 'Additional Classes' , 'yikes-inc-easy-mailchimp-extender' ); ?>
1880
+ </label>
1881
+ </td>
1882
+ <td>
1883
+ <input type="text" class="widefat" name="field[<?php echo $field['merge']; ?>][additional-classes]" value="<?php echo isset( $field['additional-classes'] ) ? stripslashes( wp_strip_all_tags( $field['additional-classes'] ) ) : '' ; ?>" />
1884
+ <p class="description"><small><?php printf( __( "Assign additional classes to this field. %s.", 'yikes-inc-easy-mailchimp-extender' ), '<a target="_blank" href="' . esc_url( 'https://yikesplugins.com/support/knowledge-base/bundled-css-classes/' ) . '">' . __( 'View bundled classes', 'yikes-inc-easy-mailchimp-extender' ) . '</a>' );?></small></p>
1885
+ </td>
1886
+ </tr>
1887
+ <!-- Required Toggle -->
1888
+ <tr valign="top">
1889
+ <td scope="row">
1890
+ <label for="field-required">
1891
+ <?php _e( 'Field Required?' , 'yikes-inc-easy-mailchimp-extender' ); ?>
1892
+ </label>
1893
+ </td>
1894
+ <td>
1895
+ <?php $checked = isset( $field['require'] ) ? $field['require'] : '0'; ?>
1896
+ <input type="checkbox" class="widefat" value="1" name="field[<?php echo $field['merge']; ?>][require]" <?php checked( $checked , 1 ); ?> <?php if( $field['merge'] == 'EMAIL' ) { ?> disabled="disabled" checked="checked" title="<?php echo __( 'Email is a required field.' , 'yikes-inc-easy-mailchimp-extender' ); } ?>">
1897
+ <p class="description"><small><?php _e( "Require this field to be filled in before the form can be submitted.", 'yikes-inc-easy-mailchimp-extender' );?></small></p>
1898
+ </td>
1899
+ </tr>
1900
+ <!-- Visible Toggle -->
1901
+ <tr valign="top">
1902
+ <td scope="row">
1903
+ <label for="hide-field">
1904
+ <?php _e( 'Hide Field' , 'yikes-inc-easy-mailchimp-extender' ); ?>
1905
+ </label>
1906
+ </td>
1907
+ <td>
1908
+ <?php $hide = isset( $field['hide'] ) ? $field['hide'] : '0'; ?>
1909
+ <input type="checkbox" class="widefat" value="1" name="field[<?php echo $field['merge']; ?>][hide]" <?php checked( $hide , 1 ); ?> <?php if( $field['merge'] == 'EMAIL' ) { ?> disabled="disabled" title="<?php echo __( 'Cannot toggle email field visibility.' , 'yikes-inc-easy-mailchimp-extender' ); } ?>">
1910
+ <p class="description"><small><?php _e( "Hide this field from being displayed on the front end.", 'yikes-inc-easy-mailchimp-extender' );?></small></p>
1911
+ </td>
1912
+ </tr>
1913
+ <!-- Toggle Field Label Visibility -->
1914
+ <tr valign="top">
1915
+ <td scope="row">
1916
+ <label for="placeholder">
1917
+ <?php _e( 'Hide Label' , 'yikes-inc-easy-mailchimp-extender' ); ?>
1918
+ </label>
1919
+ </td>
1920
+ <td>
1921
+ <?php $hide_label = isset( $field['hide-label'] ) ? $field['hide-label'] : '0'; ?>
1922
+ <input type="checkbox" name="field[<?php echo $field['merge']; ?>][hide-label]" value="1" <?php checked( $hide_label , 1 ); ?>/>
1923
+ <p class="description"><small><?php _e( "Toggle field label visibility.", 'yikes-inc-easy-mailchimp-extender' );?></small></p>
1924
+ </td>
1925
+ </tr>
1926
+ <!-- Display Phone/Date Formats back to the user -->
1927
+ <!-- Phone Format Initial Load -->
1928
+ <?php
1929
+ switch( $field['type'] ) {
1930
+ /* Store the phone format, for properly regex pattern */
1931
+ case 'phone':
1932
+ case 'birthday':
1933
+ case 'date':
1934
+ ?>
1935
+ <tr valign="top">
1936
+ <td scope="row">
1937
+ <label for="placeholder">
1938
+ <?php
1939
+ switch( $field['type'] ) {
1940
+ default:
1941
+ case 'birthday':
1942
+ $type = __( 'Date Format' , 'yikes-inc-easy-mailchimp-extender' );
1943
+ $format = ( isset( $field['date_format'] ) ) ? $field['date_format'] : 'MM/DD';
1944
+ $format_name = 'date_format';
1945
+ break;
1946
+
1947
+ case 'date':
1948
+ $type = __( 'Date Format' , 'yikes-inc-easy-mailchimp-extender' );
1949
+ $format = ( isset( $field['date_format'] ) ) ? $field['date_format'] : 'MM/DD/YYYY';
1950
+ $format_name = 'date_format';
1951
+ break;
1952
+
1953
+ case 'phone':
1954
+ $type = __( 'Phone Format' , 'yikes-inc-easy-mailchimp-extender' );
1955
+ $format = ( ( $field['phone_format'] == 'none' ) ? __( 'International', 'yikes-inc-easy-mailchimp-extender' ) : $field['phone_format'] . ' - (###) ### - ####' );
1956
+ $format_name = 'phone_format';
1957
+ break;
1958
+ }
1959
+ echo $type;
1960
+ ?>
1961
+ </label>
1962
+ </td>
1963
+ <td>
1964
+ <strong><?php echo $format; ?></strong>
1965
+ <input type="hidden" name="field[<?php echo $field['merge']; ?>][<?php echo $format_name; ?>]" value="<?php echo $format; ?>" />
1966
+ <p class="description"><small>
1967
+ <?php printf( __( 'To change the %s please head over to <a href="%s" title="MailChimp" target="_blank">MailChimp</a>. If you alter the format, you should re-import this field.', 'yikes-inc-easy-mailchimp-extender' ), strtolower( $type ), esc_url( 'http://www.mailchimp.com' ) ); ?>
1968
+ </small></p>
1969
+ </td>
1970
+ </tr>
1971
+ <?php
1972
+ break;
1973
+ // others..
1974
+ default:
1975
+ break;
1976
+ }
1977
+ ?>
1978
+ <!-- End Date/Phone Formats -->
1979
+ <!-- Toggle Buttons -->
1980
+ <tr valign="top">
1981
+ <td scope="row">
1982
+ &nbsp;
1983
+ </td>
1984
+ <td>
1985
+ <span class="toggle-container">
1986
+ <a href="#" class="close-form-expansion"><?php _e( "Close" , 'yikes-inc-easy-mailchimp-extender' ); ?></a> |
1987
+ <a href="#" class="remove-field" alt="<?php echo $field['merge']; ?>"><?php _e( "Remove Field" , 'yikes-inc-easy-mailchimp-extender' ); ?></a>
1988
+ </span>
1989
+ </td>
1990
+ </tr>
1991
+ </table>
1992
+ </p>
1993
+
1994
+ </div>
1995
+ </section>
1996
+ <?php
1997
+
1998
+
1999
+
2000
+ } else { // THIS IS AN INTEREST GROUP!
2001
+
2002
+ ?>
2003
+ <section class="draggable" id="<?php echo $field['group_id']; ?>">
2004
+ <!-- top -->
2005
+ <a href="#" class="expansion-section-title settings-sidebar">
2006
+ <span class="dashicons dashicons-plus"></span><?php echo stripslashes( $field['label'] ); ?>
2007
+ <?php if( in_array( $field['group_id'] , $excluded_fields ) ) { ?>
2008
+ <img src="<?php echo YIKES_MC_URL . 'includes/images/warning.svg'; ?>" class="field-no-longer-exists-warning" title="<?php _e( 'Field no longer exists.' , 'yikes-inc-easy-mailchimp-extender' ); ?>" alt="<?php _e( 'Field no longer exists.' , 'yikes-inc-easy-mailchimp-extender' ); ?>">
2009
+ <?php } ?>
2010
+ <span class="field-type-text"><small><?php echo __( 'type' , 'yikes-inc-easy-mailchimp-extender' ) . ' : ' . $field['type']; ?></small></span>
2011
+ </a>
2012
+ <!-- expansion section -->
2013
+ <div class="yikes-mc-settings-expansion-section">
2014
+
2015
+ <!-- check if this field exists in the available interest group array -->
2016
+ <?php if( in_array( $field['group_id'] , $excluded_fields ) ) { ?>
2017
+ <p class="yikes-mc-warning-message"><?php _e( "This field no longer exists in this list. Delete this field from the form to prevent issues on the front end." , 'yikes-inc-easy-mailchimp-extender' ); ?></p>
2018
+ <?php } ?>
2019
+
2020
+ <!-- store the label -->
2021
+ <input type="hidden" name="field[<?php echo $field['group_id']; ?>][label]" value="<?php echo $field['label']; ?>" />
2022
+ <input type="hidden" name="field[<?php echo $field['group_id']; ?>][type]" value="<?php echo $field['type']; ?>" />
2023
+ <input type="hidden" name="field[<?php echo $field['group_id']; ?>][group_id]" value="<?php echo $field['group_id']; ?>" />
2024
+ <input type="hidden" name="field[<?php echo $field['group_id']; ?>][groups]" value='<?php echo esc_attr( json_encode( json_decode( $field['groups'], true ) ) ); ?>' />
2025
+
2026
+ <!-- Single or Double Opt-in -->
2027
+ <p class="type-container"><!-- necessary to prevent skipping on slideToggle(); -->
2028
+
2029
+ <table class="form-table form-field-container">
2030
+ <!-- Default Value -->
2031
+ <?php switch( $field['type'] ) {
2032
+
2033
+ default:
2034
+ case 'radio':
2035
+ case 'checkboxes':
2036
+ ?>
2037
+ <tr valign="top">
2038
+ <td scope="row">
2039
+ <label for="placeholder">
2040
+ <?php _e( 'Default Selection' , 'yikes-inc-easy-mailchimp-extender' ); ?>
2041
+ </label>
2042
+ </td>
2043
+ <td>
2044
+ <?php
2045
+ if( $field['type'] != 'checkboxes' ) {
2046
+ if( !isset( $field['default_choice'] ) ) { $field['default_choice'] = json_decode( stripslashes( $field['groups'] ) , true ); }
2047
+ } else {
2048
+ if( !isset( $field['default_choice'] ) ) { $field['default_choice'] = array(); }
2049
+ }
2050
+ $i = 0;
2051
+ foreach( json_decode( $field['groups'], true ) as $group ) { ?>
2052
+ <label for="<?php echo $field['group_id'].'-'.$i; ?>">
2053
+ <input id="<?php echo $field['group_id'].'-'.$i; ?>" type="<?php if( $field['type'] == 'radio' || $field['type'] == 'hidden' ) { ?>radio<?php } else if( $field['type'] == 'checkboxes' ) { ?>checkbox<?php } ?>" name="field[<?php echo $field['group_id']; ?>][default_choice]<?php if( $field['type'] == 'checkboxes' ) {echo '[]';}?>" value="<?php echo $i; ?>" <?php if( $field['type'] == 'radio' || $field['type'] == 'hidden' ) { checked( $field['default_choice'][0] , $i ); } else if( $field['type'] == 'checkboxes' ) { if( in_array( $i , $field['default_choice'] ) ) { echo 'checked="checked"'; } }?>><?php echo stripslashes( str_replace( '~' , '\'' , $group['name'] ) ); ?>&nbsp;
2054
+ </label>
2055
+ <?php
2056
+ $i++;
2057
+ }
2058
+ ?>
2059
+ <p class="description"><small><?php _e( "Select the option that should be selected by default.", 'yikes-inc-easy-mailchimp-extender' );?></small></p>
2060
+ </td>
2061
+ </tr>
2062
+
2063
+ <?php
2064
+ break;
2065
+
2066
+ case 'dropdown':
2067
+ ?>
2068
+ <tr valign="top">
2069
+ <td scope="row">
2070
+ <label for="placeholder">
2071
+ <?php _e( 'Default Selection' , 'yikes-inc-easy-mailchimp-extender' ); ?>
2072
+ </label>
2073
+ </td>
2074
+ <td>
2075
+ <select type="default" name="field[<?php echo $field['group_id']; ?>][default_choice]">
2076
+ <?php $i = 0; foreach( json_decode( stripslashes_deep( $field['groups'] ) , true ) as $group ) { ?>
2077
+ <option value="<?php echo $i; ?>" <?php selected( $field['default_choice'] , $i ); ?>><?php echo stripslashes( $group['name'] ); ?></option>
2078
+ <?php $i++; } ?>
2079
+ </select>
2080
+ <p class="description"><small><?php _e( "Which option should be selected by default?", 'yikes-inc-easy-mailchimp-extender' );?></small></p>
2081
+ </td>
2082
+ </tr>
2083
+
2084
+ <?php
2085
+ break;
2086
+ ?>
2087
+
2088
+ <?php } // end Default Value ?>
2089
+
2090
+ <!-- Field Description -->
2091
+ <tr valign="top">
2092
+ <td scope="row">
2093
+ <label for="placeholder">
2094
+ <?php _e( 'Description' , 'yikes-inc-easy-mailchimp-extender' ); ?>
2095
+ </label>
2096
+ </td>
2097
+ <td>
2098
+ <textarea class="widefat field-description-input" name="field[<?php echo $field['group_id']; ?>][description]"><?php echo isset( $field['description'] ) ? stripslashes( esc_html( $field['description'] ) ) : '' ; ?></textarea>
2099
+ <p class="description"><small><?php _e( "Enter the description for the form field. This will be displayed to the user and provide some direction on how the field should be filled out or selected.", 'yikes-inc-easy-mailchimp-extender' );?></small></p>
2100
+ </td>
2101
+ </tr>
2102
+
2103
+ <!-- Additional Classes -->
2104
+ <tr valign="top">
2105
+ <td scope="row">
2106
+ <label for="placeholder">
2107
+ <?php _e( 'Additional Classes' , 'yikes-inc-easy-mailchimp-extender' ); ?>
2108
+ </label>
2109
+ </td>
2110
+ <td>
2111
+ <input type="text" class="widefat" name="field[<?php echo $field['group_id']; ?>][additional-classes]" value="<?php echo isset( $field['additional-classes'] ) ? stripslashes( wp_strip_all_tags( $field['additional-classes'] ) ) : '' ; ?>" />
2112
+ <p class="description"><small><?php printf( __( "Assign additional classes to this field. %s.", 'yikes-inc-easy-mailchimp-extender' ), '<a target="_blank" href="' . esc_url( 'https://yikesplugins.com/support/knowledge-base/bundled-css-classes/' ) . '">' . __( 'View bundled classes', 'yikes-inc-easy-mailchimp-extender' ) . '</a>' );?></small></p>
2113
+ </td>
2114
+ </tr>
2115
+ <!-- Required Toggle -->
2116
+ <tr valign="top">
2117
+ <td scope="row">
2118
+ <label for="field-required">
2119
+ <?php _e( 'Field Required?' , 'yikes-inc-easy-mailchimp-extender' ); ?>
2120
+ </label>
2121
+ </td>
2122
+ <td>
2123
+ <?php $checked = isset( $field['require'] ) ? $field['require'] : '0'; ?>
2124
+ <input type="checkbox" class="widefat" value="1" name="field[<?php echo $field['group_id']; ?>][require]" <?php checked( $checked , 1 ); ?>>
2125
+ <p class="description"><small><?php _e( "Require this field to be filled in before the form can be submitted.", 'yikes-inc-easy-mailchimp-extender' );?></small></p>
2126
+ </td>
2127
+ </tr>
2128
+ <!-- Visible Toggle -->
2129
+ <tr valign="top">
2130
+ <td scope="row">
2131
+ <label for="hide-field">
2132
+ <?php _e( 'Hide Field' , 'yikes-inc-easy-mailchimp-extender' ); ?>
2133
+ </label>
2134
+ </td>
2135
+ <td>
2136
+ <?php $hide = isset( $field['hide'] ) ? $field['hide'] : '0'; ?>
2137
+ <input type="checkbox" class="widefat" value="1" name="field[<?php echo $field['group_id']; ?>][hide]" <?php checked( $hide , 1 ); ?>>
2138
+ <p class="description"><small><?php _e( "Hide this field from being displayed on the front end.", 'yikes-inc-easy-mailchimp-extender' );?></small></p>
2139
+ </td>
2140
+ </tr>
2141
+ <!-- Toggle Field Label Visibility -->
2142
+ <tr valign="top">
2143
+ <td scope="row">
2144
+ <label for="placeholder">
2145
+ <?php _e( 'Hide Label' , 'yikes-inc-easy-mailchimp-extender' ); ?>
2146
+ </label>
2147
+ </td>
2148
+ <td>
2149
+ <?php $hide = isset( $field['hide-label'] ) ? $field['hide-label'] : '0'; ?>
2150
+ <input type="checkbox" name="field[<?php echo $field['group_id']; ?>][hide-label]" value="1" <?php checked( $hide , 1 ); ?>/>
2151
+ <p class="description"><small><?php _e( "Toggle field label visibility.", 'yikes-inc-easy-mailchimp-extender' );?></small></p>
2152
+ </td>
2153
+ </tr>
2154
+ <!-- Toggle Buttons -->
2155
+ <tr valign="top">
2156
+ <td scope="row">
2157
+ &nbsp;
2158
+ </td>
2159
+ <td>
2160
+ <span class="toggle-container">
2161
+ <a href="#" class="close-form-expansion"><?php _e( "Close" , 'yikes-inc-easy-mailchimp-extender' ); ?></a> |
2162
+ <a href="#" class="remove-field" alt="<?php echo $field['group_id']; ?>"><?php _e( "Remove Field" , 'yikes-inc-easy-mailchimp-extender' ); ?></a>
2163
+ </span>
2164
+ </td>
2165
+ </tr>
2166
+ </table>
2167
+ </p>
2168
+
2169
+ </div>
2170
+ </section>
2171
+ <?php
2172
+ } // its an interest group!
2173
+ }
2174
+ } else {
2175
+ ?>
2176
+ <h4 class="no-fields-assigned-notice non-draggable-yikes"><em><?php _e( 'No fields are assigned to this form. Select fields from the right hand column to add to this form.' , 'yikes-inc-easy-mailchimp-extender' ); ?></em></h4>
2177
+ <?php
2178
+ }
2179
+ /* Pre Defined Merge Tag Container - Always rendered so the modal appears and links are clickable on initial page load */
2180
+ add_thickbox();
2181
+ // enqueue jquery qtip for our tooltip
2182
+ wp_enqueue_script( 'jquery-qtip-tooltip' , YIKES_MC_URL . 'admin/js/min/jquery.qtip.min.js' , array( 'jquery' ) );
2183
+ wp_enqueue_style( 'jquery-qtip-style' , YIKES_MC_URL . 'admin/css/jquery.qtip.min.css' );
2184
+ $available_tags = array(
2185
+ array(
2186
+ 'tag' => '{page_title}',
2187
+ 'description' => '<h4 class="tooltip-title">' . __( 'Page Title', 'yikes-inc-easy-mailchimp-extender' ) . ' | <small>{page_title}</small></h4><hr />' . __( 'Pre-populate the field with the current page or post title that the user is on when opting in to your mailing list.' , 'yikes-inc-easy-mailchimp-extender' ),
2188
+ 'title' => __( 'Page Title', 'yikes-inc-easy-mailchimp-extender' )
2189
+ ),
2190
+ array(
2191
+ 'tag' => '{page_id}',
2192
+ 'description' => '<h4 class="tooltip-title">' . __( 'Page ID', 'yikes-inc-easy-mailchimp-extender' ) . ' | <small>{page_id}</small></h4><hr />' . __( 'Pre-populate the field with the current page or post ID that the user is on when opting in to your mailing list.' , 'yikes-inc-easy-mailchimp-extender' ),
2193
+ 'title' => __( 'Page ID', 'yikes-inc-easy-mailchimp-extender' )
2194
+ ),
2195
+ array(
2196
+ 'tag' => '{page_url}',
2197
+ 'description' => '<h4 class="tooltip-title">' . __( 'Page URL', 'yikes-inc-easy-mailchimp-extender' ) . ' | <small>{page_url}</small></h4><hr />' . __( 'Pre-populate the field with the current page URL that the user is on when opting in to your mailing list.' , 'yikes-inc-easy-mailchimp-extender' ),
2198
+ 'title' => __( 'Page URL', 'yikes-inc-easy-mailchimp-extender' )
2199
+ ),
2200
+ array(
2201
+ 'tag' => '{blog_name}',
2202
+ 'description' => '<h4 class="tooltip-title">' . __( 'Blog Name', 'yikes-inc-easy-mailchimp-extender' ) . ' | <small>{blog_name}</small></h4><hr />' . __( 'Pre-populate the field with the current blog name that the user is on when opting in to your mailing list. This is especially helpful for multi-site networks.' , 'yikes-inc-easy-mailchimp-extender' ),
2203
+ 'title' => __( 'Blog Name', 'yikes-inc-easy-mailchimp-extender' )
2204
+ ),
2205
+ array(
2206
+ 'tag' => '{user_logged_in}',
2207
+ 'description' => '<h4 class="tooltip-title">' . __( 'User Logged In', 'yikes-inc-easy-mailchimp-extender' ) . ' | <small>{user_logged_in}</small></h4><hr />' . __( 'Detects if a user is logged in and pre-populates the field with an appropriate value.' , 'yikes-inc-easy-mailchimp-extender' ),
2208
+ 'title' => __( 'User Logged In', 'yikes-inc-easy-mailchimp-extender' )
2209
+ ),
2210
+ );
2211
+ ?>
2212
+ <!-- tooltips -->
2213
+ <script type="text/javascript">
2214
+ /* Initialize Qtip tooltips for pre-defined tags */
2215
+ jQuery( document ).ready( function() {
2216
+ jQuery( '.dashicons-editor-help' ).each( function() {
2217
+ jQuery( this ).qtip({
2218
+ content: {
2219
+ text: jQuery( this ).next( '.tooltiptext' ),
2220
+ style: {
2221
+ def: false
2222
+ }
2223
+ }
2224
+ });
2225
+ });
2226
+ jQuery( '.qtip' ).each( function() {
2227
+ jQuery( this ).removeClass( 'qtip-default' );
2228
+ });
2229
+ });
2230
+ </script>
2231
+
2232
+ <div id="pre-defined-tag-container">
2233
+ <input type="hidden" value="" class="clicked-input">
2234
+ <div id="pre-defined-tag-interior-container">
2235
+ <h3><?php _e( 'Pre Defined Tags' , 'yikes-inc-easy-mailchimp-extender' ); ?></h3>
2236
+ <p class="description"><?php _e( 'You can use any of the following tags to populate a MailChimp text field with dynamic content. This can be used to determine which page the user signed up on, if the user was logged in and more.' , 'yikes-inc-easy-mailchimp-extender' ); ?></p>
2237
+ <ul>
2238
+ <?php foreach( apply_filters( 'yikes-mailchimp-custom-default-value-tags' , $available_tags ) as $tag ) { ?>
2239
+ <li class="tooltop-tag">
2240
+ <!-- link/tag -->
2241
+ <a href="#" onclick="populateDefaultValue( '<?php echo $tag['tag']; ?>' );return false;" data-attr-tag="<?php echo $tag['tag']; ?>" title="<?php echo $tag['title']; ?>"><?php echo $tag['title']; ?></a>
2242
+ <!-- help icon -->
2243
+ <span class="dashicons dashicons-editor-help"></span>
2244
+ <!-- tooltip -->
2245
+ <div class="tooltiptext qtip-bootstrap yikes-easy-mc-hidden"><?php echo $tag['description']; ?></div>
2246
+ </li>
2247
+ <?php } ?>
2248
+ </ul>
2249
+ </div>
2250
+ </div>
2251
+ <?php
2252
+ }
2253
+
2254
+ /*
2255
+ * build_available_merge_vars( $list_id )
2256
+ * Submit an API request to get our merge variables, and build up a small form editor
2257
+ * for users to 'customize' their form
2258
+ * -
2259
+ * @parameters - $list_id - pass in the list ID to retreive merge variables from
2260
+ */
2261
+ public function build_available_merge_vars( $form_fields , $available_merge_variables ) {
2262
+ $fields_assigned_to_form = array();
2263
+ if( !empty( $form_fields ) ) {
2264
+ foreach( $form_fields as $assigned_field ) {
2265
+ // print_r( $assigned_field) ;
2266
+ // switch between merge variables and interest groups
2267
+ if( isset( $assigned_field['merge'] ) ) {
2268
+ $fields_assigned_to_form[] = $assigned_field['merge'];
2269
+ }
2270
+ }
2271
+ }
2272
+ if( !empty( $available_merge_variables['data'][0] ) ) {
2273
+ ?><ul id="available-fields"><?php
2274
+ foreach( $available_merge_variables['data'][0]['merge_vars'] as $merge_var ) {
2275
+ if( in_array( $merge_var['tag'] , $fields_assigned_to_form ) ) {
2276
+ ?>
2277
+ <li class="available-form-field not-available" alt="<?php echo $merge_var['tag']; ?>" data-attr-field-type="<?php echo $merge_var['field_type']; ?>" data-attr-field-name="<?php echo $merge_var['name']; ?>" data-attr-form-id="<?php echo $available_merge_variables['data'][0]['id']; ?>" title="<?php _e( 'Already assigned to your form' , 'yikes-inc-easy-mailchimp-extender' ); ?>" disabled="disabled"><?php echo stripslashes( $merge_var['name'] ); if( $merge_var['req'] == '1' ) { echo ' <span class="field-required" title="' . __( 'required field' , 'yikes-inc-easy-mailchimp-extender' ) . '">*</span>'; } ?> <small class="field-type-text"><?php echo $merge_var['field_type']; ?></small></li>
2278
+ <?php
2279
+ } else {
2280
+ ?>
2281
+ <li class="available-form-field" alt="<?php echo $merge_var['tag']; ?>" data-attr-field-type="<?php echo $merge_var['field_type']; ?>" data-attr-field-name="<?php echo $merge_var['name']; ?>" data-attr-form-id="<?php echo $available_merge_variables['data'][0]['id']; ?>"><?php echo stripslashes( $merge_var['name'] ); if( $merge_var['req'] == '1' ) { echo ' <span class="field-required" title="' . __( 'required field' , 'yikes-inc-easy-mailchimp-extender' ) . '">*</span>'; } ?> <small class="field-type-text"><?php echo $merge_var['field_type']; ?></small></li>
2282
+ <?php
2283
+ }
2284
+ }
2285
+ ?></ul>
2286
+ <a href="#" class="add-field-to-editor button-secondary yikes-easy-mc-hidden" style="display:none;"><small><span class="dashicons dashicons-arrow-left-alt add-to-form-builder-arrow"></span> <?php _e( 'Add to Form Builder' , 'yikes-inc-easy-mailchimp-extender' ); ?></small></a>
2287
+ <?php
2288
+ }
2289
+ }
2290
+
2291
+ /*
2292
+ * build_available_interest_groups( $form_fields , $available_interest_groups )
2293
+ * Submit an API request to get our merge variables, and build up a small form editor
2294
+ * for users to 'customize' their form
2295
+ * -
2296
+ * @parameters - $list_id - pass in the list ID to retreive merge variables from
2297
+ */
2298
+ public function build_available_interest_groups( $form_fields , $available_interest_groups , $list_id ) {
2299
+ $fields_assigned_to_form = array();
2300
+ if( !empty( $form_fields ) ) {
2301
+ foreach( $form_fields as $assigned_interest_group ) {
2302
+ if( isset( $assigned_interest_group['group_id'] ) ) {
2303
+ $fields_assigned_to_form[] = $assigned_interest_group['group_id'];
2304
+ }
2305
+ }
2306
+ }
2307
+ if( !empty( $available_interest_groups) ) {
2308
+ ?><ul id="available-interest-groups"><?php
2309
+ foreach( $available_interest_groups as $interest_group ) {
2310
+ if( in_array( $interest_group['id'] , $fields_assigned_to_form ) ) {
2311
+ ?>
2312
+ <li class="available-interest-group not-available" alt="<?php echo $interest_group['id']; ?>" data-attr-field-name="<?php echo stripslashes( $interest_group['name'] ); ?>" data-attr-field-type="<?php echo $interest_group['form_field']; ?>" data-attr-form-id="<?php echo $list_id; ?>" title="<?php _e( 'Already assigned to your form' , 'yikes-inc-easy-mailchimp-extender' ); ?>" disabled="disabled"><?php echo stripslashes( $interest_group['name'] ); ?> <small class="field-type-text"><?php echo $interest_group['form_field']; ?></small></li>
2313
+ <?php
2314
+ } else {
2315
+ ?>
2316
+ <li class="available-interest-group" alt="<?php echo $interest_group['id']; ?>" data-attr-field-name="<?php echo stripslashes( $interest_group['name'] ); ?>" data-attr-field-type="<?php echo $interest_group['form_field']; ?>" data-attr-form-id="<?php echo $list_id; ?>"><?php echo stripslashes( $interest_group['name'] ); ?> <small class="field-type-text"><?php echo $interest_group['form_field']; ?></small></li>
2317
+ <?php
2318
+ }
2319
+ }
2320
+ ?></ul>
2321
+ <a href="#" class="add-interest-group-to-editor button-secondary yikes-easy-mc-hidden" style="display:none;"><small><span class="dashicons dashicons-arrow-left-alt add-to-form-builder-arrow"></span> <?php _e( 'Add to Form Builder' , 'yikes-inc-easy-mailchimp-extender' ); ?></small></a>
2322
+ <?php
2323
+ }
2324
+ }
2325
+
2326
+ /*
2327
+ * Create A New Form!
2328
+ * Probably Move these to its own file,
2329
+ * and include it here for easy maintenance
2330
+ * - must clean up db tables , ensure what data is going in and what is needed...
2331
+ */
2332
+ public function yikes_easy_mailchimp_create_form() {
2333
+ $nonce = $_REQUEST['nonce'];
2334
+ if( ! wp_verify_nonce( $nonce, 'create_mailchimp_form' ) ) {
2335
+ die( __( "We've run into an error. The security check didn't pass. Please try again." , 'yikes-inc-easy-mailchimp-extender' ) );
2336
+ }
2337
+ global $wpdb;
2338
+ /* Default values */
2339
+ // setup our default submission settings serialized array
2340
+ $submission_settings = json_encode(
2341
+ array(
2342
+ 'ajax' => 1,
2343
+ 'redirect_on_submission' => 0,
2344
+ 'redirect_page' => 1,
2345
+ 'hide_form_post_signup' => 0
2346
+ )
2347
+ );
2348
+ // setup our default opt-in settings serialized array
2349
+ $optin_settings = json_encode(
2350
+ array(
2351
+ 'optin' => 1,
2352
+ 'update_existing_user' => 1,
2353
+ 'send_welcome_email' => 1,
2354
+ )
2355
+ );
2356
+ // setup our default error message array
2357
+ $error_settings= json_encode(
2358
+ array(
2359
+ 'success' => '',
2360
+ 'general-error' => '',
2361
+ 'invalid-email' => '',
2362
+ 'email-already-subscribed' => ''
2363
+ )
2364
+ );
2365
+ /* End default values */
2366
+ /* Working Insert Function */
2367
+ $wpdb->insert(
2368
+ $wpdb->prefix . 'yikes_easy_mc_forms',
2369
+ array(
2370
+ 'list_id' => $_POST['associated-list'],
2371
+ 'form_name' => stripslashes( $_POST['form-name'] ),
2372
+ 'form_description' => stripslashes( $_POST['form-description'] ),
2373
+ 'fields' => '',
2374
+ 'custom_styles' => 0,
2375
+ 'custom_template' => 0,
2376
+ 'send_welcome_email' => 1,
2377
+ 'redirect_user_on_submit' => 0,
2378
+ 'redirect_page' => '',
2379
+ 'submission_settings' => $submission_settings,
2380
+ 'optin_settings' => $optin_settings,
2381
+ 'error_messages' => $error_settings,
2382
+ 'custom_notifications' => '',
2383
+ 'impressions' => 0,
2384
+ 'submissions' => 0,
2385
+ 'custom_fields' => '',
2386
+ ),
2387
+ array(
2388
+ '%s', // list id
2389
+ '%s', // form name
2390
+ '%s', // form description
2391
+ '%s', // fields
2392
+ '%s', // custom styles
2393
+ '%d', // custom template
2394
+ '%d', // send welcome email
2395
+ '%s', // redirect user
2396
+ '%s', // redirect page
2397
+ '%s', // submission
2398
+ '%s', // optin
2399
+ '%s', // error
2400
+ '%s', // custom notifications
2401
+ '%d', // impressions #
2402
+ '%d', // submissions #
2403
+ '%s', // custom fields
2404
+ )
2405
+ );
2406
+
2407
+ // if an error occurs during the form creation process
2408
+ if( $wpdb->insert_id == '0' ) {
2409
+ // write it to the error log
2410
+ // if the form was not created successfully
2411
+ if( get_option( 'yikes-mailchimp-debug-status' , '' ) == '1' ) {
2412
+ require_once YIKES_MC_PATH . 'includes/error_log/class-yikes-inc-easy-mailchimp-error-logging.php';
2413
+ $error_logging = new Yikes_Inc_Easy_Mailchimp_Error_Logging();
2414
+ $error_logging->yikes_easy_mailchimp_write_to_error_log( $wpdb->last_error , __( "Creating a new form" , 'yikes-inc-easy-mailchimp-extender' ) , __( "Forms" , 'yikes-inc-easy-mailchimp-extender' ) );
2415
+ }
2416
+ wp_redirect( esc_url_raw( admin_url( 'admin.php?page=yikes-mailchimp-edit-form&sql_error='.urlencode( $wpdb->last_error ) ) ) );
2417
+ } else {
2418
+ // redirect the user to the new form edit page
2419
+ wp_redirect( esc_url_raw( admin_url( 'admin.php?page=yikes-mailchimp-edit-form&id='.$wpdb->insert_id ) ) );
2420
+ }
2421
+ exit();
2422
+ die();
2423
+ }
2424
+
2425
+ /*
2426
+ * Delete A Form !
2427
+ * Probably Move these to its own file,
2428
+ * and include it here for easy maintenance
2429
+ * - must clean up db tables , ensure what data is going in and what is needed...
2430
+ */
2431
+ public function yikes_easy_mailchimp_delete_form() {
2432
+ // grab & store our variables ( associated list & form name )
2433
+ $nonce = $_REQUEST['nonce'];
2434
+ $post_id_to_delete = $_REQUEST['mailchimp-form'];
2435
+ // verify our nonce
2436
+ if( ! wp_verify_nonce( $nonce, 'delete-mailchimp-form-'.$post_id_to_delete ) ) {
2437
+ wp_die( __( "We've run into an error. The security check didn't pass. Please try again." , 'yikes-inc-easy-mailchimp-extender' ) , __( "Failed nonce validation" , 'yikes-inc-easy-mailchimp-extender' ) , array( 'response' => 500 , 'back_link' => true ) );
2438
+ }
2439
+ global $wpdb;
2440
+ /* Working Insert Function */
2441
+ $wpdb->delete(
2442
+ $wpdb->prefix . 'yikes_easy_mc_forms',
2443
+ array(
2444
+ 'id' => $post_id_to_delete
2445
+ ),
2446
+ array(
2447
+ '%d',
2448
+ )
2449
+ );
2450
+ // redirect the user to the manage forms page, display confirmation
2451
+ wp_redirect( esc_url_raw( admin_url( 'admin.php?page=yikes-inc-easy-mailchimp&deleted-form=true' ) ) );
2452
+ exit();
2453
+ die();
2454
+ }
2455
+
2456
+ /*
2457
+ * Duplicate an entire form !
2458
+ * Probably Move these to its own file,
2459
+ */
2460
+ public function yikes_easy_mailchimp_duplicate_form() {
2461
+ // grab & store our variables ( associated list & form name )
2462
+ $nonce = $_REQUEST['nonce'];
2463
+ $post_id_to_clone = $_REQUEST['mailchimp-form'];
2464
+ // verify our nonce
2465
+ if( ! wp_verify_nonce( $nonce, 'duplicate-mailchimp-form-'.$post_id_to_clone ) ) {
2466
+ wp_die( __( "We've run into an error. The security check didn't pass. Please try again." , 'yikes-inc-easy-mailchimp-extender' ) , __( "Failed nonce validation" , 'yikes-inc-easy-mailchimp-extender' ) , array( 'response' => 500 , 'back_link' => true ) );
2467
+ }
2468
+ global $wpdb;
2469
+ /* Working Insert Function */
2470
+ $form_data = $wpdb->get_row("SELECT * FROM " . $wpdb->prefix . "yikes_easy_mc_forms WHERE id = ".$post_id_to_clone."");
2471
+ // create empty array to populate with row data
2472
+ $data = array();
2473
+ // build a data array to duplicate
2474
+ foreach( $form_data as $id => $value ) {
2475
+ // skip the ID field this is unique
2476
+ if( $id != 'id' ) {
2477
+ // append -Copy- to our new form
2478
+ if( $id == 'form_name' ) {
2479
+ $value = $value . ' - Copy -';
2480
+ }
2481
+ // reset the impressions and submissions back to 0
2482
+ if( $id == 'impressions' || $id == 'submissions' ) {
2483
+ $value = '0';
2484
+ }
2485
+
2486
+ // add data to our array
2487
+ $data[$id] = $value;
2488
+ }
2489
+ }
2490
+ // insert our new data
2491
+ if( $wpdb->insert(
2492
+ $wpdb->prefix . 'yikes_easy_mc_forms',
2493
+ apply_filters( 'yikes-mailchimp-duplicate-form-data', $data )
2494
+ ) === FALSE ) {
2495
+ // redirect the user to the manage forms page, display error
2496
+ wp_redirect( esc_url_raw( admin_url( 'admin.php?page=yikes-inc-easy-mailchimp&duplicated-form=false' ) ) );
2497
+ } else {
2498
+ // redirect the user to the manage forms page, display confirmation
2499
+ wp_redirect( esc_url_raw( admin_url( 'admin.php?page=yikes-inc-easy-mailchimp&duplicated-form=true' ) ) );
2500
+ }
2501
+ exit();
2502
+ die();
2503
+ }
2504
+
2505
+ /*
2506
+ * Reset a forms impression stats
2507
+ */
2508
+ public function yikes_easy_mailchimp_reset_impression_stats() {
2509
+ // grab & store our variables ( associated list & form name )
2510
+ $nonce = $_REQUEST['nonce'];
2511
+ $form_id_to_reset = $_REQUEST['mailchimp-form'];
2512
+ // verify our nonce
2513
+ if( ! wp_verify_nonce( $nonce, 'reset-stats-mailchimp-form-'.$form_id_to_reset ) ) {
2514
+ wp_die( __( "We've run into an error. The security check didn't pass. Please try again." , 'yikes-inc-easy-mailchimp-extender' ) , __( "Failed nonce validation" , 'yikes-inc-easy-mailchimp-extender' ) , array( 'response' => 500 , 'back_link' => true ) );
2515
+ }
2516
+ global $wpdb;
2517
+ /* Update 'Impressions/Submissions' */
2518
+ if( $wpdb->update(
2519
+ $wpdb->prefix . 'yikes_easy_mc_forms',
2520
+ array(
2521
+ 'impressions' => 0,
2522
+ 'submissions' => 0
2523
+ ),
2524
+ array( 'ID' => $form_id_to_reset )
2525
+ ) === FALSE ) {
2526
+ // redirect the user to the manage forms page, display error
2527
+ wp_redirect( esc_url_raw( admin_url( 'admin.php?page=yikes-inc-easy-mailchimp&reset-stats=false' ) ) );
2528
+ } else {
2529
+ // redirect the user to the manage forms page, display confirmation
2530
+ wp_redirect( esc_url_raw( admin_url( 'admin.php?page=yikes-inc-easy-mailchimp&reset-stats=true' ) ) );
2531
+ }
2532
+ exit();
2533
+ die();
2534
+ }
2535
+
2536
+ /*
2537
+ * Update an entire form !
2538
+ * Probably Move these to its own file,
2539
+ */
2540
+ public function yikes_easy_mailchimp_update_form() {
2541
+ // grab & store our variables ( associated list & form name )
2542
+ $nonce = $_REQUEST['nonce'];
2543
+ $form_id = $_REQUEST['id'];
2544
+
2545
+ // store our values!
2546
+ $list_id = $_POST['associated-list'];
2547
+ $form_name = stripslashes( $_POST['form-name'] );
2548
+ $form_description = sanitize_text_field( stripslashes( $_POST['form-description'] ) );
2549
+ $send_welcome_email = $_POST['send-welcome-email'];
2550
+ $redirect_user_on_submit = $_POST['redirect-user-on-submission'];
2551
+ $redirect_page = $_POST['redirect-user-to-selection'];
2552
+ if( isset( $_POST['custom-styles'] ) ) {
2553
+ $custom_styles = $_POST['custom-styles'];
2554
+ }
2555
+
2556
+ // stripslashes_deep on save, to prevent foreign languages from added excessive backslashes
2557
+ $assigned_fields = isset( $_POST['field'] ) ? json_encode( stripslashes_deep( $_POST['field'] ) ) : '';
2558
+
2559
+ // setup our custom styles serialized array
2560
+ if( isset( $custom_styles ) ) {
2561
+ $custom_styles = json_encode( array(
2562
+ 'active' => $_POST['custom-styles'],
2563
+ 'background_color' => $_POST['form-background-color'],
2564
+ 'font_color' => $_POST['form-font-color'],
2565
+ 'submit_button_color' => $_POST['form-submit-button-color'],
2566
+ 'submit_button_text_color' => $_POST['form-submit-button-text-color'],
2567
+ 'form_padding' => $_POST['form-padding'],
2568
+ 'form_width' => $_POST['form-width'],
2569
+ 'form_alignment' => $_POST['form-alignment'],
2570
+ 'label_visible' => $_POST['label-visible']
2571
+ ) );
2572
+ } else {
2573
+ $custom_styles = 0;
2574
+ }
2575
+
2576
+ // setup our submission settings serialized array
2577
+ $submission_settings = json_encode(
2578
+ array(
2579
+ 'ajax' => $_POST['form-ajax-submission'],
2580
+ 'redirect_on_submission' => $_POST['redirect-user-on-submission'],
2581
+ 'redirect_page' => $_POST['redirect-user-to-selection'],
2582
+ 'custom_redirect_url' => esc_url( $_POST['custom-redirect-url'] ),
2583
+ 'hide_form_post_signup' => $_POST['hide-form-post-signup'],
2584
+ 'replace_interests' => $_POST['replace-interest-groups'],
2585
+ )
2586
+ );
2587
+
2588
+ // setup our opt-in settings serialized array
2589
+ $optin_settings = json_encode(
2590
+ array(
2591
+ 'optin' => $_POST['single-double-optin'],
2592
+ 'update_existing_user' => $_POST['update-existing-user'],
2593
+ 'send_welcome_email' => $_POST['send-welcome-email'],
2594
+ )
2595
+ );
2596
+
2597
+ // setup our error settings serialized array
2598
+ $error_settings = json_encode(
2599
+ array(
2600
+ 'success' => trim( $_POST['yikes-easy-mc-success-message'] ) ? trim( stripslashes( $_POST['yikes-easy-mc-success-message'] ) ) : '',
2601
+ 'general-error' => trim( $_POST['yikes-easy-mc-general-error-message'] ) ? trim( stripslashes( $_POST['yikes-easy-mc-general-error-message'] ) ) : '',
2602
+ 'invalid-email' => trim( $_POST['yikes-easy-mc-invalid-email-message'] ) ? trim( stripslashes( $_POST['yikes-easy-mc-invalid-email-message'] ) ) : '',
2603
+ 'already-subscribed' => trim( $_POST['yikes-easy-mc-user-subscribed-message'] ) ? trim( stripslashes( $_POST['yikes-easy-mc-user-subscribed-message'] ) ) : '',
2604
+ )
2605
+ );
2606
+
2607
+ // Setup the new form settings array
2608
+ // @since 6.0.3.8
2609
+ // To Do: Combine date & time so it's a single unix timestamp
2610
+ $form_settings = json_encode(
2611
+ array(
2612
+ 'yikes-easy-mc-form-class-names' => trim( $_POST['yikes-easy-mc-form-class-names'] ),
2613
+ 'yikes-easy-mc-inline-form' => $_POST['yikes-easy-mc-inline-form'][0],
2614
+ 'yikes-easy-mc-submit-button-type' => $_POST['yikes-easy-mc-submit-button-type'][0],
2615
+ 'yikes-easy-mc-submit-button-text' => trim( $_POST['yikes-easy-mc-submit-button-text'] ),
2616
+ 'yikes-easy-mc-submit-button-image' => esc_url( trim( $_POST['yikes-easy-mc-submit-button-image'] ) ),
2617
+ 'yikes-easy-mc-submit-button-classes' => trim( $_POST['yikes-easy-mc-submit-button-classes'] ),
2618
+ 'yikes-easy-mc-form-schedule' => ( isset( $_POST['yikes-easy-mc-form-schedule'] ) ) ? '1' : '0',
2619
+ 'yikes-easy-mc-form-restriction-start' => strtotime( $_POST['yikes-easy-mc-form-restriction-start-date'] . ' ' . $_POST['yikes-easy-mc-form-restriction-start-time'] ),
2620
+ 'yikes-easy-mc-form-restriction-end' => strtotime( $_POST['yikes-easy-mc-form-restriction-end-date'] . ' ' . $_POST['yikes-easy-mc-form-restriction-end-time'] ),
2621
+ 'yikes-easy-mc-form-restriction-pending-message' => trim( $_POST['yikes-easy-mc-form-restriction-pending-message'] ),
2622
+ 'yikes-easy-mc-form-restriction-expired-message' => trim( $_POST['yikes-easy-mc-form-restriction-expired-message'] ),
2623
+ 'yikes-easy-mc-form-login-required' => ( isset( $_POST['yikes-easy-mc-form-login-required'] ) ) ? '1' : '0',
2624
+ 'yikes-easy-mc-form-restriction-login-message' => trim( $_POST['yikes-easy-mc-form-restriction-login-message'] ),
2625
+ )
2626
+ );
2627
+
2628
+ // setup and store our notification array
2629
+ $custom_notifications = isset( $_POST['custom-notification'] ) ? stripslashes( json_encode( $_POST['custom-notification'] ) ) : '';
2630
+
2631
+ // additional custom fields (extensions / user defined fields)
2632
+ if( isset( $_POST['custom-field'] ) ) {
2633
+ $custom_field_array = array();
2634
+ foreach( $_POST['custom-field'] as $custom_field => $custom_value ) {
2635
+ if( is_array( $custom_value ) ) {
2636
+ $custom_field_array[$custom_field] = array_filter( stripslashes_deep( $custom_value ) ); // array_filters to remove empty items (don't save them!)
2637
+ } else {
2638
+ $custom_field_array[$custom_field] = stripslashes( $custom_value );
2639
+ }
2640
+ }
2641
+ $custom_fields = json_encode( $custom_field_array );
2642
+ } else {
2643
+ $custom_fields = '';
2644
+ }
2645
+
2646
+ // verify our nonce
2647
+ if( ! wp_verify_nonce( $nonce, 'update-mailchimp-form-'.$form_id ) ) {
2648
+ wp_die( __( "We've run into an error. The security check didn't pass. Please try again." , 'yikes-inc-easy-mailchimp-extender' ) , __( "Failed nonce validation" , 'yikes-inc-easy-mailchimp-extender' ) , array( 'response' => 500 , 'back_link' => true ) );
2649
+ }
2650
+
2651
+ global $wpdb;
2652
+ /* Working Insert Function */
2653
+ // $form_data = $wpdb->get_row("SELECT * FROM " . $wpdb->prefix . "yikes_easy_mc_forms WHERE id = ".$form_id."");
2654
+ $wpdb->update(
2655
+ $wpdb->prefix . 'yikes_easy_mc_forms',
2656
+ array(
2657
+ 'list_id' => $list_id,
2658
+ 'form_name' => $form_name,
2659
+ 'form_description' => $form_description,
2660
+ 'fields' => $assigned_fields,
2661
+ 'custom_styles' => $custom_styles,
2662
+ 'custom_template' => 0,
2663
+ 'send_welcome_email' => $send_welcome_email,
2664
+ 'redirect_user_on_submit' => $redirect_user_on_submit,
2665
+ 'redirect_page' => $redirect_page,
2666
+ 'submission_settings' => $submission_settings,
2667
+ 'optin_settings' => $optin_settings,
2668
+ 'error_messages' => $error_settings,
2669
+ 'form_settings' => $form_settings,
2670
+ 'custom_notifications' => $custom_notifications,
2671
+ 'custom_fields' => $custom_fields,
2672
+ ),
2673
+ array( 'ID' => $form_id ),
2674
+ array(
2675
+ '%s', // list id
2676
+ '%s', // form name
2677
+ '%s', // form description
2678
+ '%s', // fields
2679
+ '%s', // custom styles
2680
+ '%d', //custom template
2681
+ '%d', // send welcome email
2682
+ '%s', // redirect user
2683
+ '%s', // redirect page
2684
+ '%s', // submission
2685
+ '%s', // opt-in
2686
+ '%s', // error
2687
+ '%s', // custom notifications
2688
+ '%s', // custom fields
2689
+ ),
2690
+ array( '%d' )
2691
+ );
2692
+
2693
+ /* Custom action hook which allows users to update specific options when a form is updated - used in add ons */
2694
+ do_action( 'yikes-mailchimp-save-form', $form_id, json_decode( $custom_fields, true ) );
2695
+
2696
+ // redirect the user to the manage forms page, display confirmation
2697
+ wp_redirect( esc_url_raw( admin_url( 'admin.php?page=yikes-mailchimp-edit-form&id=' . $form_id . '&updated-form=true' ) ) );
2698
+ exit();
2699
+ die();
2700
+ }
2701
+
2702
+ /* Unsubscribe a given user from our list */
2703
+ public function yikes_easy_mailchimp_unsubscribe_user() {
2704
+ $nonce = $_REQUEST['nonce'];
2705
+ $list_id = $_REQUEST['mailchimp-list'];
2706
+ $email_id = $_REQUEST['email_id'];
2707
+ // verify our nonce
2708
+ if( ! wp_verify_nonce( $nonce, 'unsubscribe-user-' . $email_id ) ) {
2709
+ wp_die( __( "We've run into an error. The security check didn't pass. Please try again." , 'yikes-inc-easy-mailchimp-extender' ) , __( "Failed nonce validation" , 'yikes-inc-easy-mailchimp-extender' ) , array( 'response' => 500 , 'back_link' => true ) );
2710
+ }
2711
+ // only re-run the API request if our API key has changed
2712
+ // initialize MailChimp Class
2713
+ $api_key = trim( get_option( 'yikes-mc-api-key' , '' ) );
2714
+ $dash_position = strpos( $api_key, '-' );
2715
+ if( $dash_position !== false ) {
2716
+ $api_endpoint = 'https://' . substr( $api_key, $dash_position + 1 ) . '.api.mailchimp.com/2.0/lists/unsubscribe.json';
2717
+ }
2718
+ $response = wp_remote_post( $api_endpoint, array(
2719
+ 'body' => array(
2720
+ 'apikey' => $api_key,
2721
+ 'id' => $list_id,
2722
+ 'email' => array( 'leid' => $email_id ),
2723
+ 'send_goodbye' => false,
2724
+ 'send_notify' => false
2725
+ ),
2726
+ 'timeout' => 10,
2727
+ 'sslverify' => apply_filters( 'yikes-mailchimp-sslverify', true )
2728
+ ) );
2729
+ if( ! is_wp_error( $response ) ) {
2730
+ $response_body = json_decode( wp_remote_retrieve_body( $response ), true );
2731
+ if( isset( $response_body['error'] ) ) {
2732
+ if( WP_DEBUG || get_option( 'yikes-mailchimp-debug-status' , '' ) == '1' ) {
2733
+ require_once YIKES_MC_PATH . 'includes/error_log/class-yikes-inc-easy-mailchimp-error-logging.php';
2734
+ $error_logging = new Yikes_Inc_Easy_Mailchimp_Error_Logging();
2735
+ $error_logging->yikes_easy_mailchimp_write_to_error_log( $response_body['error'], __( "Unsubscribe User" , 'yikes-inc-easy-mailchimp-extender' ) , __( "Manage List Page" , 'yikes-inc-easy-mailchimp-extender' ) );
2736
+ }
2737
+ }
2738
+ wp_redirect( esc_url_raw( admin_url( 'admin.php?page=yikes-mailchimp-view-list&list-id=' . $list_id . '&user-unsubscribed=true' ) ) );
2739
+ exit;
2740
+ }
2741
+
2742
+ }
2743
+
2744
+ public function yikes_easy_mailchimp_create_missing_error_log() {
2745
+ // grab our nonnce
2746
+ $nonce = $_REQUEST['nonce'];
2747
+ // validate nonce
2748
+ if( !wp_verify_nonce( $nonce, 'create_error_log' ) ) {
2749
+ wp_die( __( "We've run into an error. The security check didn't pass. Please try again." , 'yikes-inc-easy-mailchimp-extender' ) , __( "Failed nonce validation" , 'yikes-inc-easy-mailchimp-extender' ) , array( 'response' => 500 , 'back_link' => true ) );
2750
+ }
2751
+ // setup the path to the error log
2752
+ $error_log = fopen( plugin_dir_path( __FILE__ ) . '../includes/error_log/yikes-easy-mailchimp-error-log.php' , 'w' );
2753
+ try {
2754
+ // create the file
2755
+ fwrite( $error_log , '' );
2756
+ // close out
2757
+ fclose( $error_log );
2758
+ wp_redirect( esc_url_raw( admin_url( 'admin.php?page=yikes-inc-easy-mailchimp-settings&section=debug-settings&error_log_created=true' ) ) );
2759
+ } catch ( Exception $e ) {
2760
+ wp_redirect( esc_url_raw( admin_url( 'admin.php?page=yikes-inc-easy-mailchimp-settings&section=debug-settings&error_log_created=false&error_message='.urlencode( $e->getMessage() ) ) ) );
2761
+ }
2762
+ }
2763
+
2764
+ /*
2765
+ * Clear Transient Data !
2766
+ * Probably Move these to its own file,
2767
+ */
2768
+ public function yikes_easy_mailchimp_clear_transient_data() {
2769
+ // grab & store our variables ( associated list & form name )
2770
+ $nonce = $_REQUEST['nonce'];
2771
+ // verify our nonce
2772
+ if( ! wp_verify_nonce( $nonce, 'clear-mc-transient-data' ) ) {
2773
+ wp_die( __( "We've run into an error. The security check didn't pass. Please try again." , 'yikes-inc-easy-mailchimp-extender' ) , __( "Failed nonce validation" , 'yikes-inc-easy-mailchimp-extender' ) , array( 'response' => 500 , 'back_link' => true ) );
2774
+ }
2775
+ // delete all of the integration settings list data in the cache
2776
+ $list_ids = $this->get_mailchimp_list_ids_on_account();
2777
+ // confirm the list IDs was returned and is not empty
2778
+ if( isset( $list_ids ) && ! empty( $list_ids ) ) {
2779
+ foreach( $list_ids as $id ) {
2780
+ // loop over each interest group and delete the transient associated with it
2781
+ // this is created & stored on the integration list page
2782
+ // id = groupID_interest_group
2783
+ delete_transient( $id . '_interest_group' );
2784
+ }
2785
+ }
2786
+ // Delete list data transient
2787
+ delete_transient( 'yikes-easy-mailchimp-list-data' );
2788
+ // Delete list account data
2789
+ delete_transient( 'yikes-easy-mailchimp-account-data' );
2790
+ // Delete list account data
2791
+ delete_transient( 'yikes-easy-mailchimp-profile-data' );
2792
+ // redirect the user to the manage forms page, display confirmation
2793
+ wp_redirect( esc_url_raw( admin_url( 'admin.php?page=yikes-inc-easy-mailchimp-settings&section=api-cache-settings&transient-cleared=true' ) ) );
2794
+ exit;
2795
+ }
2796
+
2797
+ /**
2798
+ * Return an array of MailChimp lists associated with this account
2799
+ *
2800
+ * Used when deleting the sites MailChimp cache stored
2801
+ * @since 6.0.2
2802
+ * @return $list_id_array - array of list id's to loop over
2803
+ */
2804
+ public function get_mailchimp_list_ids_on_account() {
2805
+ $api_key = trim( get_option( 'yikes-mc-api-key' , '' ) );
2806
+ if( ! $api_key ) {
2807
+ // if no api key is set/site is not connected, return an empty array
2808
+ return array();
2809
+ }
2810
+ $dash_position = strpos( $api_key, '-' );
2811
+ if( $dash_position !== false ) {
2812
+ $api_endpoint = 'https://' . substr( $api_key, $dash_position + 1 ) . '.api.mailchimp.com/2.0/lists/list.json';
2813
+ }
2814
+ $mailchimp_lists = wp_remote_post( $api_endpoint, array(
2815
+ 'body' => array(
2816
+ 'apikey' => $api_key,
2817
+ 'limit' => 100
2818
+ ),
2819
+ 'timeout' => 10,
2820
+ 'sslverify' => apply_filters( 'yikes-mailchimp-sslverify', true )
2821
+ ) );
2822
+ if( ! is_wp_error( $mailchimp_lists ) ) {
2823
+ $list_data = json_decode( wp_remote_retrieve_body( $mailchimp_lists ), true );
2824
+ if( isset( $list_data['error'] ) ) {
2825
+ if( WP_DEBUG || get_option( 'yikes-mailchimp-debug-status' , '' ) == '1' ) {
2826
+ require_once YIKES_MC_PATH . 'includes/error_log/class-yikes-inc-easy-mailchimp-error-logging.php';
2827
+ $error_logging = new Yikes_Inc_Easy_Mailchimp_Error_Logging();
2828
+ $error_logging->yikes_easy_mailchimp_write_to_error_log( $list_data['error'], __( "Get List IDs" , 'yikes-inc-easy-mailchimp-extender' ) , __( "Clear API Cache" , 'yikes-inc-easy-mailchimp-extender' ) );
2829
+ }
2830
+ }
2831
+ $mail_chimp_list_ids = array();
2832
+ if( $mailchimp_lists ) {
2833
+ foreach( $list_data as $list ) {
2834
+ $mail_chimp_list_ids[] = $list['id'];
2835
+ }
2836
+ return $mail_chimp_list_ids;
2837
+ } else {
2838
+ return array();
2839
+ }
2840
+ }
2841
+ return;
2842
+ }
2843
+
2844
+ /*
2845
+ * Include our main Helper class file
2846
+ * @since 6.0
2847
+ */
2848
+ public function yikes_mailchimp_load_helper_class() {
2849
+ // check to see if it's already loaded up
2850
+ if( !class_exists( 'Yikes_Inc_Easy_Mailchimp_Forms_Helper' ) ) {
2851
+ // Include our main helper class file
2852
+ include_once( YIKES_MC_PATH . 'admin/partials/helpers/init.php' );
2853
+ }
2854
+ }
2855
+
2856
+ /*
2857
+ * Alter the color scheme based on the current user selection (this is done to help integrate the plugin into the dashboard more seamlessly)
2858
+ *
2859
+ * @since 0.1
2860
+ * @order requires that yikes-inc-easy-mailchimp-extender-admin.min.css be enqueued, so we can override the defaults (handle: yikes-inc-easy-mailchimp-extender-admin)
2861
+ * @retutrn print out custom styles to the admin header to alter the defualt blue color
2862
+ */
2863
+ public function alter_yikes_easy_mc_color_scheme() {
2864
+ // get the current set color scheme for the logged in user
2865
+ $current_color_scheme = get_user_option( 'admin_color' );
2866
+ // switch over each color scheme, and set our variable
2867
+ switch( $current_color_scheme ) {
2868
+ default:
2869
+ case 'fresh': // default blue (defined by this plugin)
2870
+ $main_color = '#00a0d2';
2871
+ break;
2872
+ case 'light': // light grey
2873
+ $main_color = '#E5E5E5';
2874
+ break;
2875
+ case 'blue': // light blue
2876
+ $main_color = '#52ACCC';
2877
+ break;
2878
+ case 'coffee': // light brown-ish
2879
+ $main_color = '#59524C';
2880
+ break;
2881
+ case 'ectoplasm': // purple
2882
+ $main_color = '#523F6D';
2883
+ break;
2884
+ case 'midnight': // black
2885
+ $main_color = '#363B3F';
2886
+ break;
2887
+ case 'ocean': // green/teal-ish
2888
+ $main_color = '#738E96';
2889
+ break;
2890
+ case 'sunrish': // red/orange
2891
+ $main_color = '#CF4944';
2892
+ break;
2893
+ }
2894
+ ob_start();
2895
+ ?>
2896
+ <style>
2897
+ .yikes-easy-mc-postbox h3,
2898
+ .column-columnname .form-id-container,
2899
+ .mv_ig_list .nav-tab-active {
2900
+ background: <?php echo $main_color; ?>;
2901
+ }
2902
+ .mv_ig_list .arrow-down {
2903
+ border-top: 9pt solid <?php echo $main_color; ?>;
2904
+ }
2905
+ </style>
2906
+ <?php
2907
+ $override_admin_styles = ob_get_clean();
2908
+ // add our inline styles
2909
+ echo $override_admin_styles;
2910
+ }
2911
+
2912
+ /**
2913
+ * Hook in and display our support page/knowledge base articles
2914
+ * on the support page
2915
+ * @since 6.0.3.8
2916
+ */
2917
+ public function hook_and_display_kb_article_RSS() {
2918
+ include_once( YIKES_MC_PATH . 'admin/partials/helpers/knowledge-base-articles-RSS.php' );
2919
+ }
2920
+
2921
+ /**
2922
+ * Check the users version number, and display a notice to upgrade the databse if needed
2923
+ * @since 6.0.4
2924
+ */
2925
+ public function check_yikes_mc_table_version() {
2926
+ if( get_option( 'yikes_mc_database_version', '0.00' ) < '1.0' ) {
2927
+ require_once YIKES_MC_PATH . 'includes/class-yikes-inc-easy-mailchimp-extender-activator.php';
2928
+ global $wpdb;
2929
+ Yikes_Inc_Easy_Mailchimp_Extender_Activator::_activate_yikes_easy_mailchimp( $wpdb );
2930
+ // update the database option
2931
+ update_option( 'yikes_mc_database_version', '1.0' );
2932
+ }
2933
+ }
2934
+
2935
+ /*
2936
+ * Process [yikes-mailchimp-form-description] into the shortcode
2937
+ * @since 6.0.4.4
2938
+ */
2939
+ public function process_subscriber_count_shortcode_in_form_descriptions( $form_description, $form_id ) {
2940
+ $form_description = str_replace( '[yikes-mailchimp-subscriber-count]', do_shortcode( '[yikes-mailchimp-subscriber-count form="' . $form_id . '"]' ), $form_description );
2941
+ return $form_description;
2942
+ }
2943
+
2944
+ /*
2945
+ * Generate the sidebar advertisment on the 'Edit Form' page
2946
+ * @since 6.0.3
2947
+ */
2948
+ public function generate_edit_forms_upsell_ad() {
2949
+ /*
2950
+ * SimplePie strips out all query strings
2951
+ * we had to implement a workaround
2952
+ * https://github.com/simplepie/simplepie/issues/317
2953
+ */
2954
+ include_once( ABSPATH . WPINC . '/feed.php' );
2955
+ $rss = fetch_feed( esc_url( 'http://yikesplugins.com/feed/?post_type=product_ads&genre=easy-forms-for-mailchimp' ) );
2956
+ $maxitems = 0;
2957
+ if ( ! is_wp_error( $rss ) ) { // Checks that the object is created correctly
2958
+ // Figure out how many total items there are, but limit it to 1.
2959
+ $maxitems = $rss->get_item_quantity( 1 );
2960
+ // Build an array of all the items, starting with element 0 (first element).
2961
+ $rss_items = $rss->get_items( 0, $maxitems );
2962
+ } else {
2963
+ return $feed = new WP_Error( 'Simple Pie RSS Error', $feed->error() );
2964
+ }
2965
+ // loop over returned results
2966
+ foreach ( $rss_items as $add_on ) {
2967
+ $add_on_desc = $add_on->get_content();
2968
+ ?>
2969
+ <h3><?php echo $add_on->get_title(); ?></h3>
2970
+ <div class="inside">
2971
+ <?php
2972
+ echo $add_on_desc;
2973
+ ?>
2974
+ </div>
2975
+ <?php
2976
+ }
2977
+ }
2978
+
2979
+ }
admin/css/yikes-inc-easy-mailchimp-extender-admin.css CHANGED
@@ -1,2 +1,3 @@
1
- /**
2
  * All of the CSS for your admin-specific functionality should be
3
  * included in this file.
4
  */
5
 
6
  .yikes-easy-mc-hidden {
7
  }
8
 
9
  .shortcode-input-field {
10
  }
11
 
12
  .edit-form-field-container-span {
13
  }
14
 
15
  .no-forms-widget {
16
  }
17
 
18
  .no-forms-found-icon {
19
  }
20
 
21
  .coming-soon-button {
22
  }
23
  /*****************************/
24
  /* Dashboard Widgets */
25
  /****************************/
26
  /************************/
27
  /* Global Styles */
28
  /***********************/
29
 
30
  /* Logo */
31
  #review-yikes-easy-mailchimp-notice #yikes-mailchimp-logo {
32
  /* Dismiss-able Notice */
33
  #review-yikes-easy-mailchimp-notice {
34
  }
35
 
36
  /* Readonly Textareas */
37
  textarea[readonly],
38
  input[readonly],
39
  textarea.readonly,
40
  input.readonly {
41
  }
42
 
43
  .dashicons.yikes-love {
44
  }
45
 
46
  .field-description-input {
47
  }
48
  .yikes-easy-mc-postbox h3 {
49
  background: #00a0d2;
50
  }
51
  .yikes-mc-warning-message {
52
  }
53
 
54
  .error-message-container label[for="yikes-easy-mc-success-message"],
55
  .error-message-container label[for="yikes-easy-mc-general-error-message"],
56
  .error-message-container label[for="yikes-easy-mc-invalid-email-message"],
57
  .error-message-container label[for="yikes-easy-mc-user-subscribed-message"] {
58
  }
59
 
60
 
61
  .error-message-container label[for="yikes-easy-mc-user-subscribed-message"] {
62
  }
63
 
64
  .error-message-container label,
65
  .form-settings-container label {
66
  }
67
 
68
  .yikes-easy-forms-sidebar .yikes-mc-settings-expansion-section {
69
  }
70
 
71
  .yikes-mc-settings-expansion-section {
72
  }
73
  /*********************************/
74
  /** Settings/Options Page **/
75
  /********************************/
76
  /****************************************/
77
  font-weight: 600;
78
  font-family: "open sans";
79
  font-size: 14px;
80
  margin: 5px 5px 0 5px;
81
  margin: 2px 2px 15px 2px !important;
82
  table-layout: fixed;
83
- /*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInlpa2VzLWluYy1lYXN5LW1haWxjaGltcC1leHRlbmRlci1hZG1pbi5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsbUdBQW1HLElBQUkseUJBQUEsY0FBaUMsR0FBQSxJQUFBLDBCQUEyQixlQUFBLEVBQUEsaURBQTJELEdBQUEsSUFBQSxtQ0FBQSxlQUFBLEVBQUEsZUFBQSxHQUFBLElBQUEsb0JBQWdILGNBQUcsR0FBQSxJQUFBLHdCQUFBLGdCQUFBLEVBQUEsaUJBQWlGLEVBQUEsWUFBQSxFQUFBLDBCQUE0QixHQUFBLElBQUEsdUJBQUEsbUJBQWtELEdBQUEsRUFBZ0IsbUNBQThCLGdCQUFBLEdBQUEsaUJBQThCLEdBQUEsR0FBQSx3QkFBd0IsY0FBQSxFQUFBLEVBQUEsWUFBb0QsY0FBQSxFQUFBLEVBQUEsZ0JBQWtCLGVBQUEsRUFBQSxtQkFBQSxFQUFBLEVBQUEsNkJBQXNELDBCQUEwQixFQUFBLEVBQUEsNkJBQUEsQ0FBQSx1QkFBbUUsQ0FBQSw0QkFBc0IsQ0FBQSw4QkFBQSxjQUFBLEVBQUEsY0FBZ0UsRUFBQSxFQUFBLHNDQUFzRCxjQUFBLEVBQUEsaUJBQUEsRUFBQSxFQUFBLDBDQUFBLGNBQUEsR0FBQSxJQUFBLHdCQUFBLEVBQUEsdUJBQTJKLEVBQUEsd0JBQU8sRUFBQSx1QkFBQSxzQkFBQSxHQUFBLG9CQUFBLEdBQUEsSUFBQSx3Q0FBNEcsbUJBQUEsR0FBQSxJQUFBLDRCQUFBLFlBQUEsR0FBQSxLQUFBLCtCQUFzRSxFQUFBLHlCQUFvRCxFQUFBLDhCQUEwQyxJQUFBLHVCQUFBLEVBQUEsOEZBQW9FLHNIQUE4SSxHQUFBLHNCQUFBLEdBQUEsZUFBQSxHQUFBLGFBQXVHLEdBQUEsa0JBQUEsR0FBQSxpQkFBQSxHQUFBLElBQUEsb0RBQTJDLFdBQWtFLEdBQUEsSUFBQSx3Q0FBQSxXQUFBLEdBQUEsbUJBQUEsR0FBQSxJQUFBLDZDQUFBLG1CQUFBLEdBQUEsSUFBQSxnQkFBZ0ssRUFBQSw2Q0FBMEIsV0FBQSxHQUFBLEtB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MENBQUEsRUFBQSxDQUFBLHNDQUFBLENBQUEsd0JBQUEsaUJBQUEsRUFBQSxFQUFBLHNDQUFBLGVBQUEsR0FBQSxZQUFBLEdBQUEsZ0JBQUEsR0FBQSxtQkFBQSxHQUFBLEVBQUEsMkNBQUEsaUJBQUEsR0FBQSxpQkFBQSxHQUFBLEVBQUEsc0NBQUEsZ0JBQUEsR0FBQSxFQUFBLG9CQUFBLGdCQUFBLEdBQUEscUJBQUEsR0FBQSxFQUFBLHNCQUFBLHNCQUFBLEdBQUEsRUFBQSwyQ0FBQSxrQkFBQSxHQUFBLEVBQUEsdUJBQUEsZ0JBQUEsR0FBQSxxQkFBQSxHQUFBLEVBQUEseUJBQUEsMEJBQUEsR0FBQSxtQkFBQSxHQUFBLEVBQUEsMEJBQUEsc0JBQUEsR0FBQSxlQUFBLEdBQUEsRUFBQSxvQ0FBQSxFQUFBLCtCQUFBLG1CQUFBLEdBQUEsaUJBQUEsR0FBQSxZQUFBLEdBQUEsRUFBQSxxQkFBQSxhQUFBLEdBQUEsRUFBQSxvQkFBQSxjQUFBLEdBQUEsVUFBQSxHQUFBLEVBQUEsMEJBQUEsY0FBQSxHQUFBLGlCQUFBLEdBQUEsR0FBQSxlQUFBLEVBQUEsb0NBQUEsbUJBQUEsR0FBQSxpQkFBQSxHQUFBLFlBQUEsR0FBQSxFQUFBLGtDQUFBLEVBQUEsbUdBQUEsY0FBQSxHQUFBLEdBQUEsNkhBQUEsMEJBQUEsSUFBQSxFQUFBLHVCQUFBLEVBQUEsb0JBQUEsd0JBQUEsR0FBQSxpQkFBQSxHQUFBLGFBQUEsSUFBQSxFQUFBLDBCQUFBLGdCQUFBLEdBQUEsRUFBQSwwQkFBQSxFQUFBLHNCQUFBLGlCQUFBLEdBQUEsYUFBQSxHQUFBLEVBQUEscUNBQUEsRUFBQSwrQkFBQSxjQUFBLEdBQUEsR0FBQSxtQ0FBQSxpQkFBQSxJQUFBLEdBQUEsb0VBQUEsZ0JBQUEsSUFBQSxpQkFBQSxJQUFBLEdBQUEsZ0NBQUEsdUJBQUEsSUFBQSxvQkFBQSxJQUFBLFlBQUEsSUFBQSxtQkFBQSxJQUFBLHVGQUFBLElBQUEsbUNBQUEsSUFBQSx1QkFBQSxJQUFBLEVBQUEsK0JBQUEsRUFBQSxvQ0FBQSxtQkFBQSxHQUFBLFVB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dUJBQUEsYUFBQSxFQUFBLEVBQUEsd0JBQUEsQ0FBQSw0QkFBQSx3QkFBQSxFQUFBLEVBQUEsc0JBQUEsQ0FBQSwwQkFBQSxpRUFBQSxFQUFBLHlCQUFBLEVBQUEsZ0JBQUEsRUFBQSxrQkFBQSxFQUFBLFdBQUEsRUFBQSxxQ0FBQSxFQUFBLDhCQUFBLEVBQUEscUNBQUEsRUFBQSw2QkFBQSxFQUFBLDhCQUFBLEVBQUEsc0JBQUEsRUFBQSxDQUFBLDBCQUFBLGlFQUFBLEVBQUEseUJBQUEsRUFBQSxnQkFBQSxFQUFBLGtCQUFBLEVBQUEsV0FBQSxFQUFBLHFDQUFBLEVBQUEsOEJBQUEsRUFBQSxxQ0FBQSxFQUFBLDZCQUFBLEVBQUEsOEJBQUEsRUFBQSxzQkFBQSxFQUFBLENBQUEsNEJBQUEsaUVBQUEsRUFBQSx5QkFBQSxFQUFBLGdCQUFBLEVBQUEsa0JBQUEsRUFBQSxXQUFBLEVBQUEscUNBQUEsRUFBQSw4QkFBQSxHQUFBLHFDQUFBLEdBQUEsNkJBQUEsR0FBQSw4QkFBQSxHQUFBLHNCQUFBLEVBQUEsRUFBQSxnQkFBQSxDQUFBLDRCQUFBLEtBQUEsV0FBQSxFQUFBLEdBQUEsTUFBQSxXQUFBLEVBQUEsRUFBQSxPQUFBLFdBQUEsRUFBQSxFQUFBLENBQUEsb0JBQUEsS0FBQSxXQUFBLEVBQUEsR0FBQSxNQUFBLFdBQUEsRUFBQSxFQUFBLE9BQUEsV0FBQSxFQUFBLEVBQUEiLCJmaWxlIjoieWlrZXMtaW5jLWVhc3ktbWFpbGNoaW1wLWV4dGVuZGVyLWFkbWluLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyICogQWxsIG9mIHRoZSBDU1MgZm9yIHlvdXIgYWRtaW4tc3BlY2lmaWMgZnVuY3Rpb25hbGl0eSBzaG91bGQgYmVcciAqIGluY2x1ZGVkIGluIHRoaXMgZmlsZS5cciAqL1xyIFxyIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cciAvKlx0RGFzaGJvYXJkIFdpZGdldHMgICAqL1xyIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xyXHRcclx0LyoqIExpc3QgU3RhdGlzdGljcyAqKi9cclx0I3lpa2VzX2Vhc3lfbWNfbGlzdF9zdGF0c193aWRnZXQgaDMgc3Bhbixcclx0I3lpa2VzX2Vhc3lfbWNfYWNjb3VudF9hY3Rpdml0eV93aWRnZXQgaDMgc3BhbiB7XHJcdFx0cGFkZGluZy1sZWZ0OiAzZW07XHJcdFx0YmFja2dyb3VuZDogdXJsKCAnLi4vLi4vaW5jbHVkZXMvaW1hZ2VzL01haWxDaGltcF9Bc3NldHMvRnJlZGRpZV9vcmlnaW5hbC5wbmcnICk7XHJcdFx0YmFja2dyb3VuZC1zaXplOiAyNXB4O1xyXHRcdGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XHJcdFx0ZGlzcGxheTogYmxvY2s7XHJcdFx0aGVpZ2h0OiAzMHB4O1xyXHRcdGJhY2tncm91bmQtcG9zaXRpb24teTogM3B4O1xyXHRcdGJhY2tncm91bmQtcG9zaXRpb24teDogOHB4O1xyXHRcdHBhZGRpbmctdG9wOiA1cHg7XHJcdH1cclx0XHJcdCN5aWtlc19lYXN5X21jX2FjY291bnRfYWN0aXZpdHlfd2lkZ2V0IGgzLmhuZGxlIHtcclx0XHRwYWRkaW5nOiAwO1xyXHR9XHJcdFxyXHQjeWlrZXNfZWFzeV9tY19saXN0X3N0YXRzX3dpZGdldCBoMyB7XHJcdFx0cGFkZGluZzogMDtcclx0XHRsaW5lLWhlaWdodDogMS42ZW07XHJcdH1cclx0XHJcdCN5aWtlcy1lYXN5LW1jLWRhc2hib2FyZC13aWRnZXQtc3RhdHMgaDMge1xyXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcclx0fVxyXHRcclx0LyogU3RhdCBUYWJsZSAqL1xyXHQjeWlrZXNfZWFzeV9tY19saXN0X3N0YXRzX3dpZGdldCAuaW5zaWRlIHtcclx0XHRwYWRkaW5nOiAwO1xyXHR9XHJcdFx0XHJcdC55aWtlcy1lYXN5LW1jLXN0YXRzLXRhYmxlIHtcclx0XHRtYXJnaW4tdG9wOiAxZW07XHJcdH1cclx0XHJcdC55aWtlcy1lYXN5LW1jLXN0YXRzLXRhYmxlLFxyXHQueWlrZXMtZWFzeS1tYy1zdGF0cy10YWJsZSB0Ym9keSxcclx0Lnlpa2VzLWVhc3ktbWMtc3RhdHMtdGFibGUgLnlpa2VzLWVhc3ktbWMtdGFibGUtc3RhdHMtdHIge1xyXHRcdGRpc3BsYXk6IGJsb2NrO1xyXHRcdHdpZHRoOiAxMDAlO1xyXHR9XHRcclx0XHQueWlrZXMtZWFzeS1tYy10YWJsZS1zdGF0cy10ciB0ZCB7XHJcdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcdFx0XHR3aWR0aDogNDglO1xyXHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xyXHRcdH1cclx0XHRcclx0XHQueWlrZXMtZWFzeS1tYy10YWJsZS1zdGF0cy10ciB0ZDpob3ZlciB7XHJcdFx0XHRjdXJzb3I6IHBvaW50ZXI7XHJcdFx0fVxyXHRcdFxyXHRcdC55aWtlcy1lYXN5LW1jLXRhYmxlLXN0YXRzLXRyIHRkOmZpcnN0LW9mLXR5cGUge1xyXHRcdFx0Ym9yZGVyLXJpZ2h0OiAxcHggc29saWQgI2VjZWNlYztcclx0XHR9XHJcdFx0XHJcdFx0Lnlpa2VzLWVhc3ktbWMtc3RhdHMtdGFibGUgLnlpa2VzLWVhc3ktbWMtdGFibGUtc3RhdHMtdHItZmlyc3Qge1xyXHRcdFx0Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlY2VjZWM7XHJcdFx0XHRib3JkZXItdG9wOiAxcHggc29saWQgI2VjZWNlYztcclx0XHR9XHJcdFx0XHJcdFx0I3lpa2VzLWVhc3ktbWMtd2lkZ2V0LXN0YXQtaG9sZGVyIHtcclx0XHRcdG1hcmdpbi10b3A6IDFlbTtcclx0XHR9XHJcdFx0XHJcdFx0Lnlpa2VzLWVhc3ktbWMtc3RhdHMtdGFibGUgcC55aWtlcy1lYXN5LW1jLWRhc2hib2FyZC1zdGF0IHtcclx0XHRcdGNvbG9yOiAjNTJCQUQ1O1xyXHRcdFx0Zm9udC13ZWlnaHQ6IDgwMDtcclx0XHRcdGZvbnQtc2l6ZTogMjBweDtcclx0XHRcdG1hcmdpbi1ib3R0b206IDJweDtcclx0XHRcdG1hcmdpbi10b3A6IDE1cHg7XHJcdFx0XHRsaW5lLWhlaWdodDogMS4yO1xyXHRcdFx0bWF4LWhlaWdodDogODBweDtcclx0XHR9XHJcdFx0Lnlpa2VzLWVhc3ktbWMtc3RhdHMtdGFibGUgcC55aWtlcy1lYXN5LW1jLXN0YXQtbGlzdC1sYWJlbCB7XHJcdFx0XHRmb250LXNpemU6IDEzcHg7XHJcdFx0XHRtYXJnaW4tdG9wOiAwO1xyXHRcdFx0bWFyZ2luLWJvdHRvbTogMTVweDtcclx0XHRcdGZvbnQtZmFtaWx5OiBcIk9wZW4gU2Fuc1wiO1xyXHRcdH1cclx0XHRcclx0LyoqIEFjY291bnQgQWN0aXZpdHkgKiovXHJcdCN5aWtlc19lYXN5X21jX2FjY291bnRfYWN0aXZpdHlfd2lkZ2V0IHRhYmxlIHRoLnJvdy10aXRsZSB7XHJcdFx0cGFkZGluZy1sZWZ0OiAxMHB4O1xyXHR9XHJcdFxyXHQvKiBUaGlja2JveCBmb3IgVGFncyAqL1xyXHQjcHJlLWRlZmluZWQtdGFnLWludGVyaW9yLWNvbnRhaW5lciB7XHJcdFx0YmFja2dyb3VuZDogdXJsKC4uLy4uL2luY2x1ZGVzL2ltYWdlcy90aW55TUNFL3lpa2VzLW1haWxjaGltcC1jb21iby1mYWRlZC5wbmcpIGJvdHRvbSByaWdodCBuby1yZXBlYXQgI2ZmZjtcclx0XHRiYWNrZ3JvdW5kLXNpemU6IDQwJTtcclx0fVxyXHRcclx0LyoqIFF0aXAgVG9vbHRpcHMgKiovXHJcdC5xdGlwLWRlZmF1bHQgeyBcclx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50OyBcclx0XHRib3JkZXI6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7IFxyXHRcdHotaW5kZXg6IDk5OTk5OTkgIWltcG9ydGFudDsgXHJcdH1cclx0XHJcdC5xdGlwLWJvb3RzdHJhcCB7IFxyXHRcdHBhZGRpbmc6IDEwcHggIWltcG9ydGFudDsgXHJcdFx0ei1pbmRleDogOTk5OTk5OSAhaW1wb3J0YW50OyBcclx0XHRmb250LXNpemU6MTJweDsgXHJcdH1cclx0XHRcclx0LnRvb2x0aXAtaW50ZWdyYXRpb24tYmFubmVyIHsgXHJcdFx0bWF4LXdpZHRoOiAxMDAlOyBcclx0XHRtYXJnaW46IDAgMCAuMjVlbSAwOyBcclx0fVx0XHJcdFxyXHQudG9vbHRpcHRleHQucXRpcC1ib290c3RyYXAge1xyXHRcdGZvbnQtc2l6ZTogMTJweDtcclx0fVxyXHRcclx0LnRvb2x0aXAtdGl0bGUge1xyXHRcdG1hcmdpbjogMDtcclx0fVxyXHRcclx0LmRhc2hpY29ucy1lZGl0b3ItaGVscDpob3ZlciB7XHJcdFx0Y3Vyc29yOiBwb2ludGVyO1xyXHR9XHJcdFxyXHQvKiBUaW55TUNFIEJ1dHRvbiBJY29uICovXHJcdGkubWNlLWljby5tY2UtaS15a3NfbWNfdGlueW1jZV9idXR0b25fa2V5IHtcclx0XHRiYWNrZ3JvdW5kOiB1cmwoICcuLi8uLi9pbmNsdWRlcy9pbWFnZXMvdGlueU1DRS9GcmVkZGllX3dpbmsucG5nJyk7XHJcdFx0YmFja2dyb3VuZC1zaXplOiAxOHB4O1xyXHRcdGJhY2tncm91bmQtcG9zaXRpb24teTogMXB4O1xyXHRcdGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XHJcdH1cclx0XHJcdC8qIFRpbnlNQ0UgTW9kYWwgKi9cclx0I3lpa2VzX21haWxjaGltcF90aW55TUNFX21vZGFsLXRpdGxlIHtcclx0XHRwYWRkaW5nLWxlZnQ6IDQycHg7XHJcdFx0YmFja2dyb3VuZDogdHJhbnNwYXJlbnQgdXJsKCcuLi8uLi9pbmNsdWRlcy9pbWFnZXMvTWFpbENoaW1wX0Fzc2V0cy9GcmVkZGllX29yaWdpbmFsLnBuZycpO1xyXHRcdGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XHJcdFx0YmFja2dyb3VuZC1zaXplOiAyNXB4O1xyXHRcdGJhY2tncm91bmQtcG9zaXRpb246IGxlZnQ7XHJcdFx0YmFja2dyb3VuZC1wb3NpdGlvbi14OiAxMHB4O1xyXHR9XHJcdFxyXHQvKiBNb2RhbCBCYWNrZ3JvdW5kIFRlc3QgKi9cclx0I3lpa2VzX21haWxjaGltcF90aW55TUNFX21vZGFsIHtcclx0XHRiYWNrZ3JvdW5kOiAjZmZmIHVybCgnLi4vLi4vaW5jbHVkZXMvaW1hZ2VzL3RpbnlNQ0UveWlrZXMtbWFpbGNoaW1wLWNvbWJvLWZhZGVkLnBuZycpO1xyXHRcdGJhY2tncm91bmQtcG9zaXRpb246IGJvdHRvbSBsZWZ0O1xyXHRcdGJhY2tncm91bmQtc2l6ZTogNDAlO1xyXHRcdGJhY2tncm91bmQtcG9zaXRpb24teDogMTBweDtcclx0XHRiYWNrZ3JvdW5kLXBvc2l0aW9uLXk6IDk1JTtcclx0XHRiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xyXHR9XHJcdFx0I3lpa2VzX21haWxjaGltcF90aW55TUNFX21vZGFsIC5tY2UtZm9vdCB7XHJcdFx0XHRiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcclx0XHR9XHIvKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xyLypcdFx0RnJvbnQgZW5kIFdpZGdldFx0ICovXHIvKioqKioqKioqKioqKioqKioqKioqKioqKiovXHIqW2lkKj1cIl95aWtlc19lYXN5X21jX3dpZGdldFwiXSA+IGRpdi53aWRnZXQtdG9wID4gZGl2LndpZGdldC10aXRsZSA+IGg0IHtcclx0YmFja2dyb3VuZDogI0ZBRkFGQSB1cmwoJy4uLy4uL2luY2x1ZGVzL2ltYWdlcy9NYWlsQ2hpbXBfQXNzZXRzL0ZyZWRkaWVfb3JpZ2luYWwucG5nJyk7XHJcdGJhY2tncm91bmQtc2l6ZTogMjVweDtcclx0YmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcclx0YmFja2dyb3VuZC1wb3NpdGlvbi14OiAxMnB4O1xyXHRiYWNrZ3JvdW5kLXBvc2l0aW9uLXk6IDdweDtcclx0cGFkZGluZy1sZWZ0OiA0OHB4O1xyfVxyXHIgLyoqKioqKioqKioqKioqKioqKioqKioqKi9cciAvKlx0ICAgR2xvYmFsIFN0eWxlc1x0ICAqL1xyIC8qKioqKioqKioqKioqKioqKioqKioqKi9cciBcciAvKiBMb2dvICovXHIgI3Jldmlldy15aWtlcy1lYXN5LW1haWxjaGltcC1ub3RpY2UgI3lpa2VzLW1haWxjaGltcC1sb2dvIHtcclx0aGVpZ2h0OiA4MHB4O1xyXHR3aWR0aDogODBweDtcclx0Zm9udC1zaXplOiAxNHB4O1xyXHR0ZXh0LWFsaWduOiBjZW50ZXI7XHJcdGJhY2tncm91bmQ6IHVybCgnLi4vLi4vaW5jbHVkZXMvaW1hZ2VzL1dlbGNvbWVfUGFnZS95aWtlcy1tYWlsY2hpbXAtd2VsY29tZS1sb2dvLnBuZycpIG5vLXJlcGVhdDtcclx0YmFja2dyb3VuZC1zaXplOiA2MHB4O1xyXHRmbG9hdDogbGVmdDtccn1cclxyXHQvKiBCdXR0b24gQ29udGFpbmVyIGluIFJldmlldyBVcyBDb250YWluZXIgKi9cclx0I3Jldmlldy15aWtlcy1lYXN5LW1haWxjaGltcC1ub3RpY2UgLmJ1dHRvbi1jb250YWluZXIge1xyXHRcdGRpc3BsYXk6IGJsb2NrO1xyXHRcdHdpZHRoOiAxMDAlO1xyXHRcdG1hcmdpbjogLjc1ZW0gMCAxLjVlbSAwO1xyXHR9XHJcdFxyXHRcdCNyZXZpZXcteWlrZXMtZWFzeS1tYWlsY2hpbXAtbm90aWNlIC5idXR0b24tY29udGFpbmVyIC5kYXNoaWNvbnMge1xyXHRcdFx0Zm9udC1zaXplOiAxNHB4O1xyXHRcdFx0bGluZS1oZWlnaHQ6IDEuOTtcclx0XHRcdG1hcmdpbi1sZWZ0OiAtNHB4O1xyXHRcdH1cclx0XHRcclx0XHQvKiBTdGFyIEljb24gKi9cclx0XHQjcmV2aWV3LXlpa2VzLWVhc3ktbWFpbGNoaW1wLW5vdGljZSAuYnV0dG9uLWNvbnRhaW5lciAuZGFzaGljb25zLXN0YXItZmlsbGVkIHtcclx0XHRcdGNvbG9yOiAjRTZCODAwO1xyXHRcdH1cclx0XHRcclx0XHQvKiBVcGdyYWRlIEljb24gKi9cclx0XHQjcmV2aWV3LXlpa2VzLWVhc3ktbWFpbGNoaW1wLW5vdGljZSAuYnV0dG9uLWNvbnRhaW5lciAuZGFzaGljb25zLXVwbG9hZCB7XHJcdFx0XHRjb2xvcjogIzZFODg0MTtcclx0XHR9XHJcclx0XHQvKiBEaXNtaXNzIEljb24gKi9cclx0XHQjcmV2aWV3LXlpa2VzLWVhc3ktbWFpbGNoaW1wLW5vdGljZSAuYnV0dG9uLWNvbnRhaW5lciAuZGFzaGljb25zLW5vLWFsdCB7XHJcdFx0XHRjb2xvcjogcmdiKDIyMCwgNTgsIDU4KTtcclx0XHRcdGxpbmUtaGVpZ2h0OiAyO1xyXHRcdH1cclx0XHRcclx0XHRib2R5LmVhc3ktbWFpbGNoaW1wX3BhZ2VfeWlrZXMtaW5jLWVhc3ktbWFpbGNoaW1wLXNldHRpbmdzIC5kYXNoaWNvbnMtbm8tYWx0IHtcclx0XHRcdGNvbG9yOiByZ2IoMjIwLCA1OCwgNTgpO1xyXHRcdH1cclx0XHRcclx0XHQjcmV2aWV3LXlpa2VzLWVhc3ktbWFpbGNoaW1wLW5vdGljZSAuYnV0dG9uLWNvbnRhaW5lciBhIHtcclx0XHRcdG1hcmdpbi1yaWdodDogMTBweDtcclx0XHR9XHJcciAvKiBEaXNtaXNzYWJsZSBOb3RpY2UgKi9cciAjcmV2aWV3LXlpa2VzLWVhc3ktbWFpbGNoaW1wLW5vdGljZSB7XHJcdGJvcmRlci1sZWZ0OiA0cHggc29saWQgIzUyQkFENTtcclx0YmFja2dyb3VuZDogI2ZlZmVmZTtcclx0cGFkZGluZzogMXB4IDEycHg7XHJcdGJveC1zaGFkb3c6IDAgMXB4IDFweCAwIHJnYmEoMCwwLDAsLjEpO1xyXHQtd2Via2l0LWJveC1zaGFkb3c6IDAgMXB4IDFweCAwIHJnYmEoMCwwLDAsLjEpO1xyXHRtYXJnaW46IDE1cHggMjVweCAyMHB4IDVweDtcciB9XHIgXHIgLyogUmVhZG9ubHkgVGV4dGFyZWFzICovXHIgdGV4dGFyZWFbcmVhZG9ubHldLFxyIGlucHV0W3JlYWRvbmx5XSxcciB0ZXh0YXJlYS5yZWFkb25seSxcciBpbnB1dC5yZWFkb25seSB7XHJcdGJhY2tncm91bmQ6ICNlZWU7XHIgfVxyIFxyIC5kYXNoaWNvbnMueWlrZXMtbG92ZSB7XHJcdGNvbG9yOiBwaW5rO1xyIH1cciBcciAuZmllbGQtZGVzY3JpcHRpb24taW5wdXQge1xyXHRyZXNpemU6IHZlcnRpY2FsO1xyXHRtYXgtaGVpZ2h0OiAxMDBweDtcciB9XHIgLnlpa2VzLWVhc3ktbWMtcG9zdGJveCBoMyB7XHIgICAgYmFja2dyb3VuZDogIzUyQkFENTtcclx0Zm9udC13ZWlnaHQ6IDgwMDtcclx0Y29sb3I6ICNmZmZmZmY7XHIgfVxyXHQueWlrZXMtZWFzeS1tYy1wb3N0Ym94IGgzLmJnLXRyYW5zcGFyZW50IHtcclx0XHRjb2xvcjogIzMzMztcclx0XHRmb250LXdlaWdodDogNDAwO1xyXHRcdGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xyXHR9XHJcdFxyIC55aWtlcy1tYy13YXJuaW5nLW1lc3NhZ2Uge1xyXHRwYWRkaW5nLWxlZnQ6IDE1cHg7XHJcdG1hcmdpbi10b3A6IDA7XHJcdHBhZGRpbmctdG9wOiAxMHB4O1xyXHRjb2xvcjogcmdiKDIxOCwgMTEwLCAxMTApO1xyIH1cciBcciAuZXJyb3ItbWVzc2FnZS1jb250YWluZXIgbGFiZWwge1xyXHRkaXNwbGF5OiBibG9jazsgXHJcdG1hcmdpbjogMWVtIDA7XHIgfVxyIFxyIC55aWtlcy1tYy1zZXR0aW5ncy1leHBhbnNpb24tc2VjdGlvbiB7XHJcdGRpc3BsYXk6IG5vbmU7XHIgfVxyXHQuZXhwYW5zaW9uLXNlY3Rpb24tdGl0bGUge1xyXHRcdGJhY2tncm91bmQ6ICNmZmZmZmY7XHJcdH1cclx0LmV4cGFuc2lvbi1zZWN0aW9uLXRpdGxlLnNldHRpbmdzLXNpZGViYXIsIC5mb3JtLWJ1aWxkZXItc2VjdGlvbi10aXRsZSB7XHJcdFx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXHRcdGRpc3BsYXk6IGJsb2NrO1xyXHRcdGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMTc3LCAxNzcsIDE3NywgMC43MSk7XHJcdFx0Y29sb3I6ICMzMzMzMzM7XHJcdFx0cGFkZGluZzogNXB4O1xyXHRcdG1hcmdpbjogLjVlbSAwO1xyXHR9XHJcdC5leHBhbnNpb24tc2VjdGlvbi10aXRsZS5zZXR0aW5ncy1zaWRlYmFyIC5kYXNoaWNvbnMsIC5mb3JtLWJ1aWxkZXItc2VjdGlvbi10aXRsZSAuZGFzaGljb25zIHtcclx0XHRjb250ZW50OiBcIlxcZjEzMlwiO1xyXHRcdGZvbnQtZmFtaWx5OiBcImRhc2hpY29uc1wiO1xyXHRcdGZvbnQtc2l6ZTogMTVweDtcclx0XHRsaW5lLWhlaWdodDogMS41O1xyXHR9XHIgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cciAvKiogU2V0dGluZ3MvT3B0aW9ucyBQYWdlICAqKi9cciAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXHJcdC8qIEFib3V0IFRleHQgU3BhY2luZyAqL1xyXHQueWlrZXMtZWFzeS1tYy1hYm91dC10ZXh0IHsgXHJcdFx0bWFyZ2luLXRvcDogMDsgXHJcdH1cclx0XHJcdC8qIElucHV0IEZpZWxkIFN0eWxlcyAqL1xyXHQjeWtzLW1haWxjaGltcC1kb3VibGUtb3B0aW4tbWVzc2FnZSxcclx0I3lrcy1tYWlsY2hpbXAtc2luZ2xlLW9wdGluLW1lc3NhZ2UsXHJcdC5zZXR0aW5ncy1wYWdlLWlucHV0IHtcclx0XHR3aWR0aDogNTAlO1xyXHR9XHJcdFxyXHQjeWtzLW1haWxjaGltcC1kb3VibGUtb3B0aW4tbWVzc2FnZSxcclx0I3lrcy1tYWlsY2hpbXAtc2luZ2xlLW9wdGluLW1lc3NhZ2Uge1xyXHRcdG1pbi1oZWlnaHQ6IDc1cHg7XHJcdFx0bWF4LWhlaWdodDogMjAwcHg7XHJcdFx0cmVzaXplOiB2ZXJ0aWNhbDtcclx0fVxyXHRcclx0I3NldHRpbmdzLW5hdiBsaSBhIHtcclx0XHRjb2xvcjogIzMzMzMzMztcclx0XHR0ZXh0LWRlY29yYXRpb246IG5vbmUgIWltcG9ydGFudDtcclx0XHQgdHJhbnNpdGlvbjogY29sb3IgLjE1cyBlYXNlLW91dDtcclx0XHQtbW96LXRyYW5zaXRpb246IGNvbG9yIC4xNXMgZWFzZS1vdXQ7XHJcdFx0LXdlYmtpdC10cmFuc2l0aW9uOiBjb2xvciAuMTVzIGVhc2Utb3V0O1xyXHRcdC1vLXRyYW5zaXRpb246IGNvbG9yIC4xNXMgZWFzZS1vdXQ7XHJcdH1cclx0XHQjc2V0dGluZ3MtbmF2IGxpIGE6aG92ZXIge1xyXHRcdFx0Y29sb3I6ICM1MkJBRDUgIWltcG9ydGFudDtcclx0XHR9XHJcdFxyXHQvKiBTZWxlY3RlZCBPcHRpb25zIFBhZ2UgQXJyb3cgKi9cclx0Lm9wdGlvbi1tZW51LXNlbGVjdGVkLWFycm93IHtcclx0XHR3aWR0aDogMDsgXHJcdFx0aGVpZ2h0OiAwOyBcclx0XHRib3JkZXItdG9wOiAxMHB4IHNvbGlkIHRyYW5zcGFyZW50O1xyXHRcdGJvcmRlci1ib3R0b206IDEwcHggc29saWQgdHJhbnNwYXJlbnQ7IFxyXHRcdGJvcmRlci1yaWdodDogMTBweCBzb2xpZCBibHVlOyBcclx0XHRib3JkZXItcmlnaHQ6IDEwcHggc29saWQgI2ZmZjtcclx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcdFx0bGVmdDogLS42ZW07XHJcdH1cclx0XHJcdC5vcHRpb24tbWVudS1zZWxlY3RlZC1hcnJvdythIHtcclx0XHRjb2xvcjogIzUyQkFENSAhaW1wb3J0YW50O1xyXHR9XHJcdFxyXHQvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cclx0LypcdFx0XHREZWJ1ZyBQYWdlXHRcdCAqL1xyXHQvKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXHJcdCN5aWtlcy1tYWlsY2hpbXAtZXJyb3ItbG9nIC5yb3ctdGl0bGUge1xyXHRcdGZvbnQtd2VpZ2h0OiA0MDA7XHJcdH1cclx0XHJcdC5jcmVhdGUtZXJyb3ItbG9nLWhlbHA6aG92ZXIge1xyXHRcdGN1cnNvcjogcG9pbnRlcjtcclx0fVxyXHRcci8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXHIvKlx0XHRMaXN0cyBQYWdlXHRcdFx0ICovXHIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXHIubGlzdC1yYXRpbmctc3RhciB7XHJcdGNvbG9yOiAjRTZCODAwO1xyfVxyLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cci8qXHRcdEFjY29udCBEZXRhaWxzIFBhZ2VcdCovXHIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXHIvKiBDaGltcCBDaGF0dGVyICovXHIjY2hpbXAtY2hhdHRlciB7XHJcdHRleHQtYWxpZ246IGNlbnRlcjtccn1cclx0I2NoaW1wLWNoYXR0ZXIgLmNoaW1wLWNoYXR0ZXItY29udGFpbmVyIHtcclx0XHRtYXJnaW46IDJlbSAwO1xyXHRcdGJhY2tncm91bmQ6ICNGOEY4Rjg7XHJcdFx0Ym9yZGVyLXJhZGl1czogMTBweDtcclx0XHRwYWRkaW5nOiAxMHB4O1xyXHR9XHIvKiBJbmFjdGl2ZSArIEFjdGl2ZSBNYXJrZXJzICovXHIuY2lyY2xlLWFjY291bnQtaW5hY3RpdmUge1xyXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcdG1hcmdpbi10b3A6IC0zcHg7XHJcdG1hcmdpbi1yaWdodDogNXB4O1xyXHRoZWlnaHQ6IDE1cHg7XHJcdHdpZHRoOiAxNXB4O1xyXHRib3JkZXItcmFkaXVzOiA1MCU7XHJcdGJhY2tncm91bmQ6IHJnYmEoMjUwLCAxMzgsIDEzOCwgMC43OSk7XHJ9XHIuY2hhdHRlci10eXBlIHtcciAgICBmb250LXdlaWdodDogNjAwO1xyICAgIGZvbnQtZmFtaWx5OiBcIm9wZW4gc2Fuc1wiO1xyICAgIGZvbnQtc2l6ZTogMTRweDtcciAgICBtYXJnaW46IDVweDtccn1cci5jaGF0dGVyLW1lc3NhZ2Uge1x0XHIgICBtYXJnaW46IDE1cHggIWltcG9ydGFudDtccn1cci5jaXJjbGUtYWNjb3VudC1hY3RpdmUge1xyXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcdG1hcmdpbi10b3A6IC0zcHg7XHJcdG1hcmdpbi1yaWdodDogNXB4O1xyXHRoZWlnaHQ6IDE1cHg7XHJcdHdpZHRoOiAxNXB4O1xyXHRib3JkZXItcmFkaXVzOiA1MCU7XHJcdGJhY2tncm91bmQ6IHJnYmEoMTI4LCAyMTQsIDEyOCwgMC43Nyk7XHJ9XHIjYWNjb3VudC1kZXRhaWxzIC5tYWlsY2hpbXAtYXZhdGFyIHtcclx0d2lkdGg6IDEyMHB4O1xyXHRib3JkZXItcmFkaXVzOiAxMCU7XHJ9XHIvKiBDaGF0dGVyIENvbnRhaW5lciBDb2xvcnMgKi9cci5jaGltcC1jaGF0dGVyLXBvc2l0aXZlIHtcclx0Ym9yZGVyLXRvcDogMnB4IHNvbGlkIHJnYigxNTcsIDIyMywgMTU3KTtccn1cci5jaGltcC1jaGF0dGVyLW5lZ2F0aXZlIHtcclx0Ym9yZGVyLXRvcDogMnB4IHNvbGlkICNGQkEyQTI7XHJ9XHIuY2hpbXAtY2hhdHRlci1uZXV0cmFsIHtcclx0Ym9yZGVyLXRvcDogMnB4IHNvbGlkIHJnYigxNzcsIDE3NywgMTc3KTtccn1cci8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cci8qXHQgIE1hbmFnZSBMaXN0cyBQYWdlICovXHIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cci8qIE1lcmdlIFZhcmlhYmxlIC8gSW50ZXJlc3QgR3JvdXAgVG9nZ2xlICovXHIubXZfaWdfbGlzdCB7XHJcdHdpZHRoOjEwMCU7XHJcdG1hcmdpbi1ib3R0b206IC4yNWVtO1xyfVxyXHQubXZfaWdfbGlzdCAubGlzdC1jb250YWluZXIge1xyXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcclx0fVxyXHQubXZfaWdfbGlzdCBhIHtcclx0XHR3aWR0aDogNDglO1xyXHRcdHBhZGRpbmc6IDVweCAwICFpbXBvcnRhbnQ7XHJcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xyXHRcdG1hcmdpbjogMDtcclx0fVxyXHQubXZfaWdfbGlzdCBhOmZpcnN0LWNoaWxkIHtcclx0XHRtYXJnaW4tcmlnaHQ6IDA7XHJcdH1cclx0Lm12X2lnX2xpc3QgYTpsYXN0LWNoaWxkIHtcclx0XHRmbG9hdDogcmlnaHQ7XHJcdH1cclx0XHJcdC5tdl9pZ19saXN0IHtcclx0XHRtYXJnaW4tYm90dG9tOiAuNWVtO1xyXHR9XHJcdC5tdl9pZ19saXN0IC5uYXYtdGFiIHtcclx0XHRib3JkZXI6IDFweCBzb2xpZCAjY2NjO1xyXHR9XHRcclx0XHQubXZfaWdfbGlzdCAubmF2LXRhYi1hY3RpdmUge1xyXHRcdFx0Y29sb3I6ICNmZmY7XHJcdFx0XHRmb250LXdlaWdodDogYm9sZDtcclx0XHRcdGJhY2tncm91bmQ6ICM1MmJhZDU7XHJcdFx0fVxyXHRcdFxyXHQubXZfaWdfbGlzdCAuYXJyb3ctZG93biB7XHJcdFx0cG9zaXRpb246IGFic29sdXRlO1xyXHRcdG1hcmdpbi10b3A6IDIxcHg7XHJcdFx0bWFyZ2luLWxlZnQ6IDUwcHg7XHJcdFx0d2lkdGg6IDA7IFxyXHRcdGhlaWdodDogMDsgXHJcdFx0Ym9yZGVyLWxlZnQ6IDEycHggc29saWQgdHJhbnNwYXJlbnQ7XHJcdFx0Ym9yZGVyLXJpZ2h0OiAxMnB4IHNvbGlkIHRyYW5zcGFyZW50O1xyXHRcdGJvcmRlci10b3A6IDEycHggc29saWQgIzUyQkFENTtcclx0fVxyXHRcciNjb250YWluZXItY29udGFpbmVyIHtcclx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXHR3aWR0aDogNTIxcHg7XHJ9XHJcdCNjb250YWluZXItY29udGFpbmVyIC5saXN0LWNvbnRhaW5lciB7XHJcdFx0ZmxvYXQ6IGxlZnQ7XHJcdFx0d2lkdGg6IDI1NHB4O1xyXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcclx0fVxyXHQjY29udGFpbmVyLWNvbnRhaW5lciAubGlzdC1jb250YWluZXI6bGFzdC1jaGlsZCB7XHJcdFx0bWFyZ2luLWxlZnQ6IDFlbTtcclx0fVxyXHRcciN5aWtlc19lYXN5X21jX3Rvb2xiYXIge1xyXHRtYXJnaW4tdG9wOiAtLjc1ZW07XHJ9XHIjeWlrZXNfZWFzeV9tY190b29sYmFyX2xpbmtzIHtcclx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXHR3aWR0aDogMTAwJTtcclx0bWFyZ2luOiAwO1xyXHRwYWRkaW5nOiAxMHB4IDA7XHJ9XHJcdCN5aWtlc19lYXN5X21jX3Rvb2xiYXJfbGlua3MgbGkge1xyXHRcdGZsb2F0OiBsZWZ0O1xyXHRcdG1hcmdpbjogMCAuNWVtO1xyXHR9XHJcdCN5aWtlc19lYXN5X21jX3Rvb2xiYXJfbGlua3MgbGkgYSB7XHJcdFx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXHR9XHJcdCN5aWtlc19lYXN5X21jX3Rvb2xiYXJfbGlua3MgbGkgYS5zZWxlY3RlZF9oaWRkZW5fc2V0dGluZyB7XHJcdFx0Y29sb3I6ICMzMzMzMzM7XHJcdFx0Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEoMjA2LCAyMDYsIDIwNiwgMSk7XHJcdFx0bWFyZ2luLWJvdHRvbTogM3B4O1xyXHR9XHJcdCN5aWtlc19lYXN5X21jX3Rvb2xiYXJfbGlua3MgbGkgLnNlbGVjdGVkX3NldHRpbmdfdHJpYW5nbGUge1xyXHRcdHdpZHRoOiAwOyBcclx0XHRoZWlnaHQ6IDA7IFxyXHRcdGJvcmRlci1sZWZ0OiAxM3B4IHNvbGlkIHRyYW5zcGFyZW50O1xyXHRcdGJvcmRlci1yaWdodDogMTNweCBzb2xpZCB0cmFuc3BhcmVudDtcclx0XHRib3JkZXItdG9wOiAxM3B4IHNvbGlkIHJnYmEoMjA2LCAyMDYsIDIwNiwgMSk7XHJcdFx0bWFyZ2luOiAwIGF1dG87XHJcdH1cclx0XHQvKiBUb29sYmFyIEljb25zICovXHJcdFx0I3lpa2VzX2Vhc3lfbWNfdG9vbGJhcl9saW5rcyBsaSBhLmZvcm0tYnVpbGRlcjpiZWZvcmUge1xyXHRcdFx0Y29udGVudDogXCJcXGYxMTZcIjtcclx0XHRcdGZvbnQtZmFtaWx5OiBcImRhc2hpY29uc1wiO1xyXHRcdH1cclx0XHQjeWlrZXNfZWFzeV9tY190b29sYmFyX2xpbmtzIGxpIGEuZm9ybS1jdXN0b21pemVyOmJlZm9yZSB7XHJcdFx0XHRjb250ZW50OiBcIlxcZjEwMFwiO1xyXHRcdFx0Zm9udC1mYW1pbHk6IFwiZGFzaGljb25zXCI7XHJcdFx0fVxyXHRcdCN5aWtlc19lYXN5X21jX3Rvb2xiYXJfbGlua3MgbGkgYS5lcnJvci1tZXNzYWdlczpiZWZvcmUge1xyXHRcdFx0Y29udGVudDogXCJcXGYxMTdcIjtcclx0XHRcdGZvbnQtZmFtaWx5OiBcImRhc2hpY29uc1wiO1xyXHRcdH1cclx0XHQjeWlrZXNfZWFzeV9tY190b29sYmFyX2xpbmtzIGxpIGEuY3VzdG9tLW5vdGlmaWNhdGlvbnM6YmVmb3JlIHtcclx0XHRcdGNvbnRlbnQ6IFwiXFxmNDY2XCI7XHJcdFx0XHRmb250LWZhbWlseTogXCJkYXNoaWNvbnNcIjtcclx0XHR9XHJcdFxyLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xyLyogTWFuYWdlIEZvcm1zIFBhZ2UgKi9cci8qKioqKioqKioqKioqKioqKioqKioqKioqKiovXHJzcGFuW3RpdGxlPVwiSW1wcmVzc2lvbnNcIl06aG92ZXIsXHJzcGFuW3RpdGxlPVwiU3VibWlzc2lvbnNcIl06aG92ZXIsXHJzcGFuW3RpdGxlPVwiQ29udmVyc2lvbiBSYXRlXCJdOmhvdmVyIHtcclx0ZGlzcGxheTogYmxvY2s7XHJcdGN1cnNvcjogcG9pbnRlcjtccn1cclxyLyogQ29udGFpbmVyIGhvbGRpbmcgdGhlIGZvcm0gSUQgKi9cci5mb3JtLWlkLWNvbnRhaW5lciB7XHJcdHBhZGRpbmc6IDFweCA4cHg7XHJcdGJvcmRlci1yYWRpdXM6IDVweDtcclx0YmFja2dyb3VuZDogcmdiKDczLCAxNjksIDIzNik7XHJcdGZvbnQtd2VpZ2h0OiBib2xkO1xyXHRjb2xvcjogI2ZmZmZmZjtccn1cci5tYW5hZ2UtZm9ybS1hZG1pbi1ub3RpY2Uge1xyXHRtYXJnaW4tdG9wOiAxLjc1ZW0gIWltcG9ydGFudDtccn1ccmEueWlrZXMtZGVsZXRlLW1haWxjaGltcC1mb3JtLFxyYS55aWtlcy1kZWxldGUtc3Vic2NyaWJlcixcci55aWtlcy1tYy1zZXR0aW5ncy1leHBhbnNpb24tc2VjdGlvbiBhLnJlbW92ZS1maWVsZCxcci5yZW1vdmUtbm90aWZpY2F0aW9uIHtcclx0Y29sb3I6IHJnYigyMTcsIDk2LCA5NikgIWltcG9ydGFudDtccn1cci55aWtlcy1tYy1zaG9ydGNvZGUtaW5wdXQge1xyXHR0ZXh0LWFsaWduOiBjZW50ZXI7XHJ9XHIuaGlkZGVuLWNsYXNzIHtcclx0ZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xyfVxyLmNvbHVtbi1jb2x1bW5uYW1lIHNwYW4uc3RhdHMge1xyXHRkaXNwbGF5OiBibG9jaztcclx0d2lkdGg6IDEwMCU7XHJcdHRleHQtYWxpZ246IGNlbnRlcjtccn1cclx0LmNvbHVtbi1jb2x1bW5uYW1lIHNwYW4uc3RhdHMgc3BhbiB7XHJcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXHRcdHdpZHRoOiAyMCU7XHJcdH1cclx0XHQuY29sdW1uLWNvbHVtbm5hbWUgc3Bhbi5zdGF0cyBzcGFuOmhvdmVyIHtcclx0XHRcdGN1cnNvcjogcG9pbnRlcjtcclx0XHR9XHIvKiBBdmFpbGFibGUgRm9ybSBGaWVsZCBMaXN0ICovXHIjYXZhaWxhYmxlLWZpZWxkcyBsaSwgXHIjYXZhaWxhYmxlLWludGVyZXN0LWdyb3VwcyBsaSB7XHJcdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclx0ZGlzcGxheTogYmxvY2s7XHJcdGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMTc3LCAxNzcsIDE3NywgMC43MSk7XHJcdGNvbG9yOiAjMzMzMzMzO1xyXHRwYWRkaW5nOiA1cHg7XHJcdG1hcmdpbjogLjVlbSAwO1xyfVxyXHQjYXZhaWxhYmxlLWZpZWxkcyBsaS5ub3QtYXZhaWxhYmxlLCBcclx0I2F2YWlsYWJsZS1pbnRlcmVzdC1ncm91cHMgbGkubm90LWF2YWlsYWJsZSB7XHJcdFx0b3BhY2l0eTogLjYgIWltcG9ydGFudDtcclx0fVxyXHRcclx0I2F2YWlsYWJsZS1maWVsZHMgbGkuZmllbGQtdG8tYWRkLXRvLWZvcm0sXHJcdCNhdmFpbGFibGUtaW50ZXJlc3QtZ3JvdXBzIGxpLmdyb3VwLXRvLWFkZC10by1mb3JtIHtcclx0XHRiYWNrZ3JvdW5kOiByZ2JhKDQ2LCAxNjIsIDIwNCwgMC4yNSk7XHJcdH1cci8qKioqKioqKioqKioqKioqKioqKioqKi9cci8qIEVkaXQgRm9ybSBQYWdlICAqL1xyLyoqKioqKioqKioqKioqKioqKioqKiovXHIjZWRpdC15aWtlcy1tYy1mb3JtIGxhYmVsIGgzIHtcclx0bWFyZ2luLWxlZnQ6MDtcclx0cGFkZGluZy1sZWZ0OiAwO1xyfVxyI2F2YWlsYWJsZS1maWVsZHMgLmZpZWxkLXJlcXVpcmVkIHtcclx0Y29sb3I6IHJnYigyMTcsIDk2LCA5NikgIWltcG9ydGFudDtccn1cclx0LyogUG9zdCBTdHVmZiBIZWFkaW5nICovXHJcdGJvZHkuYWRtaW5fcGFnZV95aWtlcy1tYWlsY2hpbXAtZWRpdC1mb3JtICNwb3N0c3R1ZmYgaDIge1xyXHRcdHBhZGRpbmc6IDhweCAxMnB4O1xyXHRcdG1hcmdpbi10b3A6IDA7XHJcdH1cclx0XHIvKiBTdHlsZSBMaXN0IC0gY29sb3IgcGlja2VycyBldGMuICovXHIjc3R5bGUtbGlzdCB1bCBsaSB7XHJcdGRpc3BsYXk6IGJsb2NrO1xyXHR3aWR0aDogMTAwJTtcclx0bWFyZ2luOiAxZW0gMDtccn1cclx0LndwLXBpY2tlci1jb250YWluZXIsXHJcdC5mb3JtLXN0eWxlLWFkanVzdG1lbnQge1xyXHRcdGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XHJcdFx0d2lkdGg6IDEwMCU7XHJcdFx0bWFyZ2luOiAuNWVtIDA7XHJcdH1cclx0XHIuZHluYW1pYy1lbWFpbC10YWcge1xyXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcdG1hcmdpbi1yaWdodDogNXB4O1xyfVxyLmR5bmFtaWMtdGFnLWRlc2NyaXB0aW9uIHRkIHtcclx0cGFkZGluZy10b3A6IDA7XHJ9XHJcciNjcmVhdGUtbmV3LW5vdGlmaWNhdGlvbi1idXR0b24ge1xyXHRtYXJnaW4tdG9wOiAxZW07XHJ9XHJcdFxyLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXHIvKiBBYm91dCBZaWtlcyBJbmMgUGFnZSAgICovXHIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXHRcciN0ZWFtLW1lbWJlci1jb250YWluZXIge1xyXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcdHdpZHRoOiBhdXRvO1xyXHRtYXJnaW46IDAgYXV0bztcclx0d2lkdGg6IDEwMCU7XHJ9XHJcdC55aWtlcy1uZXdzLWFydGljbGUge1xyXHRcdG1hcmdpbjogMTJweCAwO1xyXHR9XHJcdFx0Lnlpa2VzLW5ld3MtYXJ0aWNsZSBhIHtcclx0XHRcdHRleHQtZGVjb3JhdGlvbjogbm9uZSAhaW1wb3J0YW50O1xyXHRcdH1cclx0XHRcdFx0XHJcdFx0LnN0YWZmLXBvc2l0aW9uIHtcclx0XHRcdGRpc3BsYXk6IGJsb2NrO1xyXHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xyXHRcdH1cclx0XHJcdCNhYm91dC15aWtlcyAudGVhbS1tZW1iZXIgaW1nIHtcclx0XHRib3JkZXItcmFkaXVzOiA1MCU7XHJcdFx0ZGlzcGxheTpibG9jaztcclx0XHRtYXJnaW46MCBhdXRvO1xyXHR9XHJcdC5hYm91dC15aWtlcy1pbmMtdGV4dCB7XHJcdFx0LW1zLWZpbHRlcjogXCJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0wKVwiO1xyXHRcdC8qIElFIDUtNyAqL1xyXHRcdGZpbHRlcjogYWxwaGEob3BhY2l0eT0wKTtcclx0XHQvKiBOZXRzY2FwZSAqL1xyXHRcdC1tb3otb3BhY2l0eTogMDtcclx0XHQvKiBTYWZhcmkgMS54ICovXHJcdFx0LWtodG1sLW9wYWNpdHk6IDA7XHJcdFx0LyogR29vZCBicm93c2VycyAqL1xyXHRcdG9wYWNpdHk6IDA7XHJcdH1cclx0I2Fib3V0LXlpa2VzIC50ZWFtLW1lbWJlciB7XHJcdFx0LW1zLWZpbHRlcjogXCJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0wKVwiO1xyXHRcdC8qIElFIDUtNyAqL1xyXHRcdGZpbHRlcjogYWxwaGEob3BhY2l0eT0wKTtcclx0XHQvKiBOZXRzY2FwZSAqL1xyXHRcdC1tb3otb3BhY2l0eTogMDtcclx0XHQvKiBTYWZhcmkgMS54ICovXHJcdFx0LWtodG1sLW9wYWNpdHk6IDA7XHJcdFx0LyogR29vZCBicm93c2VycyAqL1xyXHRcdG9wYWNpdHk6IDA7XHJcdFx0ZmxvYXQ6IGxlZnQ7XHJcdFx0ZGlzcGxheTpibG9jaztcclx0XHR3aWR0aDogMzElO1xyXHRcdG1hcmdpbjogMWVtIDVweCAxZW0gNXB4O1xyXHR9XHJcdFxyXHQueWlrZXMtYWJvdXQtaW1hZ2UtY29udGFpbmVyIHtcclx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XHJcdFx0ZGlzcGxheTogYmxvY2s7XHJcdFx0d2lkdGg6IDEwNXB4O1xyXHRcdG1hcmdpbjogMCBhdXRvO1xyXHR9XHJcdFxyXHQueWlrZXMtYWJvdXQtaW1hZ2UtY29udGFpbmVyOmhvdmVyIHtcclx0XHRjdXJzb3I6IHBvaW50ZXI7XHJcdH1cclx0XHRcclx0XHQueWlrZXMtYWJvdXQtaW1hZ2UtY29udGFpbmVyIC5kYXNoaWNvbnMtaG9sZGVyIHtcclx0XHRcdG1hcmdpbjogYXV0bztcclx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcclx0XHRcdHRvcDogMDsgXHJcdFx0XHRsZWZ0OiAwOyBcclx0XHRcdGJvdHRvbTogMDsgXHJcdFx0XHRyaWdodDogMDtcclx0XHRcdHBhZGRpbmc6IDVweDtcclx0XHRcdGJhY2tncm91bmQtY29sb3I6IHJnYmEoNTEsIDUxLCA1MSwgMC43MSk7XHJcdFx0XHRib3JkZXItcmFkaXVzOiA1MCU7XHJcdFx0XHR2aXNpYmlsaXR5OiBoaWRkZW47XHJcdFx0fVxyXHRcdFxyXHRcdC55aWtlcy1hYm91dC1pbWFnZS1jb250YWluZXIgLmRhc2hpY29ucy5mYWRlT3V0TGVmdCxcclx0XHQueWlrZXMtYWJvdXQtaW1hZ2UtY29udGFpbmVyIC5kYXNoaWNvbnMuZmFkZUluUmlnaHQge1xyXHRcdFx0dmlzaWJpbGl0eTogdmlzaWJsZSAhaW1wb3J0YW50O1xyXHRcdH1cclx0XHRcclx0XHRcdC55aWtlcy1hYm91dC1pbWFnZS1jb250YWluZXIgLmRhc2hpY29ucy10d2l0dGVyIHtcclx0XHRcdFx0Y29sb3I6ICMwMEIwRUQ7XHJcdFx0XHR9XHJcdFx0XHRcclx0XHJcdCNhYm91dC15aWtlcyAudGVhbS1yb3c6Zmlyc3QtY2hpbGQge1xyXHRcdG1hcmdpbi10b3A6IDJlbTtcclx0fVxyXHRcclx0I2Fib3V0LXlpa2VzIC50ZWFtLXJvdyB7XHJcdFx0d2lkdGg6IDEwMCU7XHJcdFx0ZmxvYXQ6IGxlZnQ7XHJcdH1cclx0I2Fib3V0LXlpa2VzIC50ZWFtLW1lbWJlciBwIHtcclx0XHRwYWRkaW5nLWxlZnQ6IDEwcHg7XHJcdFx0Zm9udC1zaXplOiAxNnB4O1xyXHR9XHJcdFxyXHQjY2VydGlmaWNhdGlvbnMgdWwge1xyXHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcclx0XHR3aWR0aDogMTAwJTtcclx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XHJcdH1cclx0XHQjY2VydGlmaWNhdGlvbnMgdWwgbGkge1xyXHRcdFx0ZmxvYXQ6IGxlZnQ7XHJcdFx0fVxyXHRcdFx0I2NlcnRpZmljYXRpb25zIHVsIGxpIGltZyB7XHJcdFx0XHRcdG1heC13aWR0aDogMTAwJTtcclx0XHRcdFx0ZGlzcGxheTpibG9jaztcclx0XHRcdFx0bWFyZ2luOiAwIGF1dG87XHJcdFx0XHR9XHJcdFx0XHRcclx0LyoqKioqKioqKioqKioqKioqKioqKioqKioqKi9cclx0LyogQVBJIENvbm5lY3Rpb24gU3R5bGVzICovXHJcdC8qKioqKioqKioqKioqKioqKioqKioqKioqKi9cclx0I2Nvbm5lY3Rpb24tY29udGFpbmVyIHtcclx0XHRmbG9hdDogcmlnaHQ7XHJcdFx0Y29sb3I6ICNmZmZmZmY7XHJcdFx0cGFkZGluZzogLjI1ZW0gLjc1ZW0gLjI1ZW0gLjI1ZW07XHJcdFx0bWFyZ2luLXRvcDogLTRweDtcclx0fVxyXHRcdFxyXHRcdCNjb25uZWN0aW9uLWNvbnRhaW5lci5hcGktY29ubmVjdGVkIHtcclx0XHRcdGJhY2tncm91bmQ6IHJnYig2OCwgMTg2LCA2OCk7XHJcdFx0fVxyXHRcdFxyXHRcdCNjb25uZWN0aW9uLWNvbnRhaW5lci5hcGktbm90LWNvbm5lY3RlZCB7XHJcdFx0XHRiYWNrZ3JvdW5kOiByZ2IoMTgxLCAxODEsIDE4MSk7XHJcdFx0fVxyXHRcdFxyXHRcdC8qIEFkanVzdCBMaW5laGVpZ2h0IG9mIENvbmVuY3RlZCB2cyBOb3QtY29ubmVjdGVkIEljb25zICovXHJcdFx0Lnlpa2VzLW1jLWFwaS1jb25uZWN0ZWQsXHJcdFx0Lnlpa2VzLW1jLWFwaS1ub3QtY29ubmVjdGVkIHtcclx0XHRcdGxpbmUtaGVpZ2h0OiAxO1xyXHRcdH1cclx0XHQvKiBFbmQgSWNvbiBsaW5lIGhlaWdodCBhZGp1c3RtZW50ICovXHJcdFxyXHQvKioqKioqKioqKioqKioqKioqKioqKiovXHJcdC8qICBTZXR0aW5ncyBTaWRlYmFyICAgKi9cclx0LyoqKioqKioqKioqKioqKioqKioqKiovXHJcdFx0LyogTGVhdmUgVXMgQSBSZXZpZXcgKi9cclx0XHQjcmV2aWV3LXlpa2VzLWVhc3ktbWMge1xyXHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xyXHRcdH1cclx0XHRcdCNyZXZpZXcteWlrZXMtZWFzeS1tYyAuZGFzaGljb25zLXN0YXItZmlsbGVkIHtcclx0XHRcdFx0Y29sb3I6ICNFNkI4MDA7XHJcdFx0XHR9XHJcdFx0Lm1ldGEtYm94LXNvcnRhYmxlcyBociB7XHJcdFx0XHRtYXJnaW46IDEuNzVlbSAwIDAgMDtcclx0XHR9XHJcdFx0XHJcdC8qKioqKioqKioqKioqKioqKioqKioqKioqL1xyXHQvKlx0ICBBZG1pbiBOb3RpY2VzICAgKi9cclx0LyoqKioqKioqKioqKioqKioqKioqKioqKi9cclx0Lnlpa2VzLWVhc3ktbWMtdXBkYXRlZCB7XHJcdFx0ZGlzcGxheTogYmxvY2s7XHJcdFx0Ym9yZGVyLWxlZnQ6IDRweCBzb2xpZCAjNEVBRUYwO1xyXHRcdG1hcmdpbjowIDIwcHggMnB4IDBweDtcclx0XHRtYXJnaW4tdG9wOiAxZW07XHJcdFx0bWFyZ2luLWJvdHRvbTogMWVtO1xyXHRcdHBhZGRpbmc6IDJweCAxMHB4O1xyXHRcdGJhY2tncm91bmQ6ICNmZmY7XHJcdFx0YmFja2dyb3VuZC1zaXplOiAxMjBweDtcclx0XHRiYWNrZ3JvdW5kLXBvc2l0aW9uOiByaWdodCBib3R0b207XHJcdFx0YmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcclx0XHRiYWNrZ3JvdW5kLXBvc2l0aW9uLXk6IDI5cHg7XHJcdH1cclx0XHJcdC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xyXHQvKiBTaXIgVHJldm9yIENTUyBBZGp1c3RtZW50cyAgKi9cclx0LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cclx0LnN0LWJsb2NrLWNvbnRyb2xzIGEge1xyXHRcdHRyYW5zaXRpb246IGNvbG9yIC4yNXMgZWFzZS1vdXQ7XHJcdFx0LW1vei10cmFuc2l0aW9uOiBjb2xvciAuMjVzIGVhc2Utb3V0O1xyXHRcdC13ZWJraXQtdHJhbnNpdGlvbjogY29sb3IgLjI1cyBlYXNlLW91dDtcclx0XHQtby10cmFuc2l0aW9uOiBjb2xvciAuMjVzIGVhc2Utb3V0O1xyXHR9XHJcdC5zdC1ibG9jay11aS1idG4sIFxyXHQuc3QtYmxvY2stY29udHJvbC11aS1idG4ge1xyXHRcdGZvbnQtc2l6ZTogMWVtICFpbXBvcnRhbnQ7XHJcdH1cclx0XHRcclx0XHQvKiBPdmVycnJpZGUgQ29sdW1ucyBJY29uICovXHJcdFx0LyogRmlndXJlIG91dCBhIGJldHRlciB3YXkgdG8gYXNzaWduIHRoZSBmb250IGZhbWlseSAqL1xyXHRcdC5zdC1ibG9jay1jb250cm9scyAuc3QtYmxvY2stY29udHJvbFtkYXRhLXR5cGU9XCJDb2x1bW5zXCJdID4gc3BhbiB7XHJcdFx0XHRmb250LWZhbWlseTogJ1NULUNvbHVtbnMtSWNvbnMnICFpbXBvcnRhbnQ7XHJcdFx0fVxyXHRcdFxyXHRcdFxyXHRcdFxyLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cci8qXHRcdFx0ICAgIFN1cHBvcnQgUGFnZVx0XHQgICovXHIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xyLnN1cHBvcnQtc2VjdGlvblx0e1xyXHRtYXJnaW46IDEuNWVtIDA7XHJcdHBhZGRpbmc6IDFlbSAwO1xyfVxyXHIuZ2l0aHViLW9jdG9jYXQge1xyXHRiYWNrZ3JvdW5kOiB1cmwoICcuLi8uLi9pbmNsdWRlcy9pbWFnZXMvU3VwcG9ydF9QYWdlL09jdG9jYXQucG5nJyApO1xyXHRiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xyXHRiYWNrZ3JvdW5kLXNpemU6IDEwMCU7XHJcdGJhY2tncm91bmQtcG9zaXRpb246IGxlZnQgdG9wO1xyXHR3aWR0aDogNTBweDtcclx0aGVpZ2h0OiA0NXB4O1xyXHRkaXNwbGF5OiBibG9jaztcclx0ZmxvYXQ6IGxlZnQ7XHJcdG1hcmdpbi10b3A6IC01cHg7XHJ9XHRcdFxyXHRcdFxyXHRcci8qKiBCcmVhayBQb2ludHMgKiovXHIvKiBBYm91dCBQYWdlICovXHJAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0OTVweCkge1xyXHQjdGVhbS1tZW1iZXItY29udGFpbmVyIC50ZWFtLW1lbWJlciB7XHJcdFx0d2lkdGg6IDEwMCU7XHJcdH1cclx0XHJ9XHIvKiBPcHRpb25zIFBhZ2UgKi9cckBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDg1MHB4KSB7XHJcdFxyXHQvKiBIaWRlIFNlbGVjdGVkIE9wdGlvbiBBcnJvdyB3aGVuIGl0IGRyb3BzIGJlbG93IHRoZSBtYWluIGNvbnRlbnQgYm94ICovXHJcdC5vcHRpb24tbWVudS1zZWxlY3RlZC1hcnJvdyB7XHJcdFx0ZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xyXHR9XHJcdFxyfVxyXHIvKiBwcm8gdmVyc2lvbiBub3RpY2UgKi9cci5wcm8tdmVyc2lvbi1vbmx5LW5vdGljZSB7XHJcdGNvbG9yOiByZ2IoMjE3LCA5NiwgOTYpO1xyfVxyXHIvKiBVcGdyYWRlIEVsaXBzZXMgKi9cci51cGdyYWRpbmctZWxsaXBzZS1vbmUge1xyXHQtbXMtZmlsdGVyOiBcInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PTApXCI7XHJcdGZpbHRlcjogYWxwaGEob3BhY2l0eT0wKTtcclx0LW1vei1vcGFjaXR5OiAwO1xyXHQta2h0bWwtb3BhY2l0eTogMDtcclx0b3BhY2l0eTogMDtcclx0LXdlYmtpdC1hbmltYXRpb246IGRvdCAxLjNzIGluZmluaXRlO1xyXHQtd2Via2l0LWFuaW1hdGlvbi1kZWxheTogMC4wcztcclx0YW5pbWF0aW9uOiBkb3QgMS4zcyBpbmZpbml0ZTtcclx0YW5pbWF0aW9uLWRlbGF5OiAwLjBzO1xyfVxyLnVwZ3JhZGluZy1lbGxpcHNlLXR3byB7XHJcdC1tcy1maWx0ZXI6IFwicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9MClcIjtcclx0ZmlsdGVyOiBhbHBoYShvcGFjaXR5PTApO1xyXHQtbW96LW9wYWNpdHk6IDA7XHJcdC1raHRtbC1vcGFjaXR5OiAwO1xyXHRvcGFjaXR5OiAwO1xyXHQtd2Via2l0LWFuaW1hdGlvbjogZG90IDEuM3MgaW5maW5pdGU7XHJcdC13ZWJraXQtYW5pbWF0aW9uLWRlbGF5OiAwLjJzO1xyXHRhbmltYXRpb246IGRvdCAxLjNzIGluZmluaXRlO1xyXHRhbmltYXRpb24tZGVsYXk6IDAuMnM7XHJ9XHIudXBncmFkaW5nLWVsbGlwc2UtdGhyZWUge1xyXHQtbXMtZmlsdGVyOiBcInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PTApXCI7XHJcdGZpbHRlcjogYWxwaGEob3BhY2l0eT0wKTtcclx0LW1vei1vcGFjaXR5OiAwO1xyXHQta2h0bWwtb3BhY2l0eTogMDtcclx0b3BhY2l0eTogMDtcclx0LXdlYmtpdC1hbmltYXRpb246IGRvdCAxLjNzIGluZmluaXRlO1xyXHQtd2Via2l0LWFuaW1hdGlvbi1kZWxheTogMC4zcztcclx0IGFuaW1hdGlvbjogZG90IDEuM3MgaW5maW5pdGU7XHJcdCBhbmltYXRpb24tZGVsYXk6IDAuM3M7XHJ9XHJcci8qIEFuaW1hdGlvbnMgKi9cckAtd2Via2l0LWtleWZyYW1lcyBkb3Qge1xyXHQgIDAlIHsgb3BhY2l0eTogMDsgfVxyXHQgNTAlIHsgb3BhY2l0eTogMDsgfVxyXHQxMDAlIHsgb3BhY2l0eTogMTsgfVxyfVxyQGtleWZyYW1lcyBkb3Qge1xyXHQgIDAlIHsgb3BhY2l0eTogMDsgfVxyXHQgNTAlIHsgb3BhY2l0eTogMDsgfVxyXHQxMDAlIHsgb3BhY2l0eTogMTsgfVxyfSJdfQ== */
84
  * All of the CSS for your admin-specific functionality should be
85
  * included in this file.
86
  */
87
  .yikes-easy-mc-hidden {
88
  }
89
  .shortcode-input-field {
90
  }
91
  .edit-form-field-container-span {
92
  }
93
  .no-forms-widget {
94
  }
95
  .no-forms-found-icon {
96
  }
97
  .coming-soon-button {
98
  }
99
  /*****************************/
100
  /* Dashboard Widgets */
101
  /****************************/
102
  /************************/
103
  /* Global Styles */
104
  /***********************/
105
  /* Logo */
106
  #review-yikes-easy-mailchimp-notice #yikes-mailchimp-logo {
107
  /* Dismiss-able Notice */
108
  #review-yikes-easy-mailchimp-notice {
109
  }
110
  /* Readonly Textareas */
111
  textarea[readonly],
112
  input[readonly],
113
  textarea.readonly,
114
  input.readonly {
115
  }
116
  .dashicons.yikes-love {
117
  }
118
  .field-description-input {
119
  }
120
  .yikes-easy-mc-postbox h3 {
121
  background: #00a0d2;
122
  }
123
  .yikes-mc-warning-message {
124
  }
125
  .error-message-container label[for="yikes-easy-mc-success-message"],
126
  .error-message-container label[for="yikes-easy-mc-general-error-message"],
127
  .error-message-container label[for="yikes-easy-mc-invalid-email-message"],
128
  .error-message-container label[for="yikes-easy-mc-user-subscribed-message"] {
129
  }
130
  .error-message-container label[for="yikes-easy-mc-user-subscribed-message"] {
131
  }
132
  .error-message-container label,
133
  .form-settings-container label {
134
  }
135
  .yikes-easy-forms-sidebar .yikes-mc-settings-expansion-section {
136
  }
137
  .yikes-mc-settings-expansion-section {
138
  }
139
  /*********************************/
140
  /** Settings/Options Page **/
141
  /********************************/
142
  /****************************************/
143
  font-weight: 600;
144
  font-family: "open sans";
145
  font-size: 14px;
146
  margin: 5px 5px 0 5px;
147
  margin: 2px 2px 15px 2px !important;
148
  table-layout: fixed;
 
 
 
1
  * All of the CSS for your admin-specific functionality should be
2
  * included in this file.
3
  */
4
 
5
  .yikes-easy-mc-hidden {
6
  }
7
 
8
  .shortcode-input-field {
9
  }
10
 
11
  .edit-form-field-container-span {
12
  }
13
 
14
  .no-forms-widget {
15
  }
16
 
17
  .no-forms-found-icon {
18
  }
19
 
20
  .coming-soon-button {
21
  }
22
  /*****************************/
23
  /* Dashboard Widgets */
24
  /****************************/
25
  /************************/
26
  /* Global Styles */
27
  /***********************/
28
 
29
  /* Logo */
30
  #review-yikes-easy-mailchimp-notice #yikes-mailchimp-logo {
31
  /* Dismiss-able Notice */
32
  #review-yikes-easy-mailchimp-notice {
33
  }
34
 
35
  /* Readonly Textareas */
36
  textarea[readonly],
37
  input[readonly],
38
  textarea.readonly,
39
  input.readonly {
40
  }
41
 
42
  .dashicons.yikes-love {
43
  }
44
 
45
  .field-description-input {
46
  }
47
  .yikes-easy-mc-postbox h3 {
48
  background: #00a0d2;
49
  }
50
  .yikes-mc-warning-message {
51
  }
52
 
53
  .error-message-container label[for="yikes-easy-mc-success-message"],
54
  .error-message-container label[for="yikes-easy-mc-general-error-message"],
55
  .error-message-container label[for="yikes-easy-mc-invalid-email-message"],
56
  .error-message-container label[for="yikes-easy-mc-user-subscribed-message"] {
57
  }
58
 
59
 
60
  .error-message-container label[for="yikes-easy-mc-user-subscribed-message"] {
61
  }
62
 
63
  .error-message-container label,
64
  .form-settings-container label {
65
  }
66
 
67
  .yikes-easy-forms-sidebar .yikes-mc-settings-expansion-section {
68
  }
69
 
70
  .yikes-mc-settings-expansion-section {
71
  }
72
  /*********************************/
73
  /** Settings/Options Page **/
74
  /********************************/
75
  /****************************************/
76
  font-weight: 600;
77
  font-family: "open sans";
78
  font-size: 14px;
79
  margin: 5px 5px 0 5px;
80
  margin: 2px 2px 15px 2px !important;
81
  table-layout: fixed;
82
+ /**
83
  * All of the CSS for your admin-specific functionality should be
84
  * included in this file.
85
  */
86
  .yikes-easy-mc-hidden {
87
  }
88
  .shortcode-input-field {
89
  }
90
  .edit-form-field-container-span {
91
  }
92
  .no-forms-widget {
93
  }
94
  .no-forms-found-icon {
95
  }
96
  .coming-soon-button {
97
  }
98
  /*****************************/
99
  /* Dashboard Widgets */
100
  /****************************/
101
  /************************/
102
  /* Global Styles */
103
  /***********************/
104
  /* Logo */
105
  #review-yikes-easy-mailchimp-notice #yikes-mailchimp-logo {
106
  /* Dismiss-able Notice */
107
  #review-yikes-easy-mailchimp-notice {
108
  }
109
  /* Readonly Textareas */
110
  textarea[readonly],
111
  input[readonly],
112
  textarea.readonly,
113
  input.readonly {
114
  }
115
  .dashicons.yikes-love {
116
  }
117
  .field-description-input {
118
  }
119
  .yikes-easy-mc-postbox h3 {
120
  background: #00a0d2;
121
  }
122
  .yikes-mc-warning-message {
123
  }
124
  .error-message-container label[for="yikes-easy-mc-success-message"],
125
  .error-message-container label[for="yikes-easy-mc-general-error-message"],
126
  .error-message-container label[for="yikes-easy-mc-invalid-email-message"],
127
  .error-message-container label[for="yikes-easy-mc-user-subscribed-message"] {
128
  }
129
  .error-message-container label[for="yikes-easy-mc-user-subscribed-message"] {
130
  }
131
  .error-message-container label,
132
  .form-settings-container label {
133
  }
134
  .yikes-easy-forms-sidebar .yikes-mc-settings-expansion-section {
135
  }
136
  .yikes-mc-settings-expansion-section {
137
  }
138
  /*********************************/
139
  /** Settings/Options Page **/
140
  /********************************/
141
  /****************************************/
142
  font-weight: 600;
143
  font-family: "open sans";
144
  font-size: 14px;
145
  margin: 5px 5px 0 5px;
146
  margin: 2px 2px 15px 2px !important;
147
  table-layout: fixed;
148
+
149
+ /*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInlpa2VzLWluYy1lYXN5LW1haWxjaGltcC1leHRlbmRlci1hZG1pbi5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsbUdBQW1HLEdBQUEseUJBQUksY0FBQSxHQUFpQyxHQUFBLDBCQUFBLGVBQTJCLEVBQUEsaURBQUEsR0FBMkQsR0FBQSxtQ0FBQSxlQUFBLEVBQUEsZUFBQSxHQUFBLEdBQUEsb0JBQUEsY0FBZ0gsR0FBQSxHQUFHLHdCQUFBLGdCQUFBLEVBQUEsaUJBQUEsRUFBQSxZQUFpRixFQUFBLDBCQUFBLEdBQUEsR0FBNEIsdUJBQUEsbUJBQUEsR0FBQSxFQUFBLG1DQUFrRSxnQkFBOEIsR0FBQSxpQkFBQSxHQUFBLEVBQUEsd0JBQThCLGNBQXdCLEVBQUEsRUFBQSxZQUFBLGNBQW9ELEVBQUEsRUFBQSxnQkFBQSxlQUFrQixFQUFBLG1CQUFBLEVBQUEsRUFBQSw2QkFBQSwwQkFBc0QsRUFBQSxFQUFBLDZCQUEwQixDQUFBLHVCQUFBLENBQUEsNEJBQW1FLENBQUEsOEJBQXNCLGNBQUEsRUFBQSxjQUFBLEVBQUEsRUFBQSxzQ0FBZ0UsY0FBc0QsRUFBQSxpQkFBQSxFQUFBLEVBQUEsMENBQUEsY0FBQSxHQUFBLEdBQUEsd0JBQUEsRUFBQSx1QkFBQSxFQUFBLHdCQUEySixFQUFBLHVCQUFPLHNCQUFBLEdBQUEsb0JBQUEsR0FBQSxHQUFBLHdDQUFBLG1CQUE0RyxHQUFBLEdBQUEsNEJBQUEsWUFBQSxHQUFBLEdBQUEsK0JBQUEsRUFBQSx5QkFBc0UsRUFBQSw4QkFBb0QsR0FBQSx1QkFBMEMsRUFBQSw4RkFBQSxzSEFBb0UsR0FBQSxzQkFBOEksR0FBQSxlQUFBLEdBQUEsYUFBQSxHQUFBLGtCQUF1RyxHQUFBLGlCQUFBLEdBQUEsR0FBQSxvREFBQSxXQUFBLEdBQTJDLEdBQUEsd0NBQWtFLFdBQUEsR0FBQSxtQkFBQSxHQUFBLEdBQUEsNkNBQUEsbUJBQUEsR0FBQSxHQUFBLGdCQUFBLEVBQUEsNkNBQWdLLFdBQUEsR0FBQSxHQUEw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QUFBLEdBQUEsMkRBQUEsaUJBQUEsSUFBQSx5QkFBQSxJQUFBLEdBQUEsOERBQUEsaUJBQUEsSUFBQSx5QkFBQSxJQUFBLEdBQUEsNkRBQUEsaUJBQUEsSUFBQSx5QkFBQSxJQUFBLEdBQUEsNERBQUEsaUJBQUEsSUFBQSx5QkFBQSxJQUFBLEVBQUEsbUNBQUEsQ0FBQSw0QkFBQSxDQUFBLGtDQUFBLENBQUEsbURBQUEsZ0JBQUEsR0FBQSxpQkFBQSxFQUFBLEVBQUEsb0NBQUEsZUFBQSxFQUFBLGFBQUEsRUFBQSxFQUFBLDBCQUFBLHVCQUFBLEVBQUEsRUFBQSwrQkFBQSxlQUFBLEVBQUEsYUFBQSxFQUFBLEVBQUEsK0JBQUEsQ0FBQSx1QkFBQSxDQUFBLDZCQUFBLEVBQUEsV0FBQSxDQUFBLHlCQUFBLFlBQUEsRUFBQSxFQUFBLHlHQUFBLGVBQUEsRUFBQSxnQkFBQSxFQUFBLEVBQUEsbUNBQUEsQ0FBQSxzQkFBQSxpQkFBQSxFQUFBLG1CQUFBLEVBQUEsOEJBQUEsRUFBQSxrQkFBQSxFQUFBLGVBQUEsRUFBQSxDQUFBLDZCQUFBLDhCQUFBLEVBQUEsQ0FBQSx1SUFBQSxtQ0FBQSxFQUFBLENBQUEsZ0NBQUEsZ0JBQUEsRUFBQSxDQUFBLHFEQUFBLGFBQUEsRUFBQSxDQUFBLDJCQUFBLGVBQUEsRUFBQSxtQkFBQSxFQUFBLEVBQUEsa0RBQUEsbUJBQUEsR0FBQSxDQUFBLHdCQUFBLG1CQUFBLEVBQUEsUUFBQSxFQUFBLFNBQUEsRUFBQSxlQUFBLEVBQUEsYUFBQSxFQUFBLENBQUEsNkJBQUEsbUJBQUEsRUFBQSxZQUFBLEVBQUEsZUFBQSxFQUFBLENBQUEsaUJBQUEseUJBQUEsRUFBQSxFQUFBLG1CQUFBLFVBQUEsRUFBQSxnQkFBQSxFQUFBLEVBQUEsa0VBQUEsMEJBQUEsRUFBQSxFQUFBLGlDQUFBLGVBQUEsRUFBQSxZQUFBLEVBQUEsbUJBQUEsRUFBQSxFQUFBLHVDQUFBLHNCQUFBLEdBQUEsV0FBQSxHQUFBLEdBQUEsOENBQUEsZ0JBQUEsSUFBQSxDQUFBLCtCQUFBLENBQUEsdURBQUEsc0JB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QUEsRUFBQSxFQUFBLHdCQUFBLENBQUEsNEJBQUEsd0JBQUEsRUFBQSxFQUFBLHNCQUFBLENBQUEsMEJBQUEsaUVBQUEsRUFBQSx5QkFBQSxFQUFBLGdCQUFBLEVBQUEsa0JBQUEsRUFBQSxXQUFBLEVBQUEscUNBQUEsRUFBQSw4QkFBQSxFQUFBLHFDQUFBLEVBQUEsNkJBQUEsRUFBQSw4QkFBQSxFQUFBLHNCQUFBLEVBQUEsQ0FBQSwwQkFBQSxpRUFBQSxFQUFBLHlCQUFBLEVBQUEsZ0JBQUEsRUFBQSxrQkFBQSxFQUFBLFdBQUEsRUFBQSxxQ0FBQSxFQUFBLDhCQUFBLEVBQUEscUNBQUEsRUFBQSw2QkFBQSxFQUFBLDhCQUFBLEVBQUEsc0JBQUEsRUFBQSxDQUFBLDRCQUFBLGlFQUFBLEVBQUEseUJBQUEsRUFBQSxnQkFBQSxFQUFBLGtCQUFBLEVBQUEsV0FBQSxFQUFBLHFDQUFBLEVBQUEsOEJBQUEsR0FBQSxxQ0FBQSxHQUFBLDZCQUFBLEdBQUEsOEJBQUEsR0FBQSxzQkFBQSxFQUFBLEVBQUEsZ0JBQUEsQ0FBQSw0QkFBQSxLQUFBLFdBQUEsRUFBQSxHQUFBLE1BQUEsV0FBQSxFQUFBLEVBQUEsT0FBQSxXQUFBLEVBQUEsRUFBQSxDQUFBLG9CQUFBLEtBQUEsV0FBQSxFQUFBLEdBQUEsTUFBQSxXQUFBLEVBQUEsRUFBQSxPQUFBLFdBQUEsRUFBQSxFQUFBIiwiZmlsZSI6Inlpa2VzLWluYy1lYXN5LW1haWxjaGltcC1leHRlbmRlci1hZG1pbi5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcciAqIEFsbCBvZiB0aGUgQ1NTIGZvciB5b3VyIGFkbWluLXNwZWNpZmljIGZ1bmN0aW9uYWxpdHkgc2hvdWxkIGJlXHIgKiBpbmNsdWRlZCBpbiB0aGlzIGZpbGUuXHIgKi9cciBcciAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXHIgLypcdERhc2hib2FyZCBXaWRnZXRzICAgKi9cciAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cclx0XHJcdC8qKiBMaXN0IFN0YXRpc3RpY3MgKiovXHJcdCN5aWtlc19lYXN5X21jX2xpc3Rfc3RhdHNfd2lkZ2V0IGgzIHNwYW4sXHJcdCN5aWtlc19lYXN5X21jX2FjY291bnRfYWN0aXZpdHlfd2lkZ2V0IGgzIHNwYW4ge1xyXHRcdHBhZGRpbmctbGVmdDogM2VtO1xyXHRcdGJhY2tncm91bmQ6IHVybCggJy4uLy4uL2luY2x1ZGVzL2ltYWdlcy9NYWlsQ2hpbXBfQXNzZXRzL0ZyZWRkaWVfb3JpZ2luYWwucG5nJyApO1xyXHRcdGJhY2tncm91bmQtc2l6ZTogMjVweDtcclx0XHRiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xyXHRcdGRpc3BsYXk6IGJsb2NrO1xyXHRcdGhlaWdodDogMzBweDtcclx0XHRiYWNrZ3JvdW5kLXBvc2l0aW9uLXk6IDNweDtcclx0XHRiYWNrZ3JvdW5kLXBvc2l0aW9uLXg6IDhweDtcclx0XHRwYWRkaW5nLXRvcDogNXB4O1xyXHR9XHJcdFxyXHQjeWlrZXNfZWFzeV9tY19hY2NvdW50X2FjdGl2aXR5X3dpZGdldCBoMy5obmRsZSB7XHJcdFx0cGFkZGluZzogMDtcclx0fVxyXHRcclx0I3lpa2VzX2Vhc3lfbWNfbGlzdF9zdGF0c193aWRnZXQgaDMge1xyXHRcdHBhZGRpbmc6IDA7XHJcdFx0bGluZS1oZWlnaHQ6IDEuNmVtO1xyXHR9XHJcdFxyXHQjeWlrZXMtZWFzeS1tYy1kYXNoYm9hcmQtd2lkZ2V0LXN0YXRzIGgzIHtcclx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XHJcdH1cclx0XHJcdC8qIFN0YXQgVGFibGUgKi9cclx0I3lpa2VzX2Vhc3lfbWNfbGlzdF9zdGF0c193aWRnZXQgLmluc2lkZSB7XHJcdFx0cGFkZGluZzogMDtcclx0fVxyXHRcdFxyXHQueWlrZXMtZWFzeS1tYy1zdGF0cy10YWJsZSB7XHJcdFx0bWFyZ2luLXRvcDogMWVtO1xyXHR9XHJcdFxyXHQueWlrZXMtZWFzeS1tYy1zdGF0cy10YWJsZSxcclx0Lnlpa2VzLWVhc3ktbWMtc3RhdHMtdGFibGUgdGJvZHksXHJcdC55aWtlcy1lYXN5LW1jLXN0YXRzLXRhYmxlIC55aWtlcy1lYXN5LW1jLXRhYmxlLXN0YXRzLXRyIHtcclx0XHRkaXNwbGF5OiBibG9jaztcclx0XHR3aWR0aDogMTAwJTtcclx0fVx0XHJcdFx0Lnlpa2VzLWVhc3ktbWMtdGFibGUtc3RhdHMtdHIgdGQge1xyXHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXHRcdFx0d2lkdGg6IDQ4JTtcclx0XHRcdHRleHQtYWxpZ246IGNlbnRlcjtcclx0XHR9XHJcdFx0XHJcdFx0Lnlpa2VzLWVhc3ktbWMtdGFibGUtc3RhdHMtdHIgdGQ6aG92ZXIge1xyXHRcdFx0Y3Vyc29yOiBwb2ludGVyO1xyXHRcdH1cclx0XHRcclx0XHQueWlrZXMtZWFzeS1tYy10YWJsZS1zdGF0cy10ciB0ZDpmaXJzdC1vZi10eXBlIHtcclx0XHRcdGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNlY2VjZWM7XHJcdFx0fVxyXHRcdFxyXHRcdC55aWtlcy1lYXN5LW1jLXN0YXRzLXRhYmxlIC55aWtlcy1lYXN5LW1jLXRhYmxlLXN0YXRzLXRyLWZpcnN0IHtcclx0XHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWNlY2VjO1xyXHRcdFx0Ym9yZGVyLXRvcDogMXB4IHNvbGlkICNlY2VjZWM7XHJcdFx0fVxyXHRcdFxyXHRcdCN5aWtlcy1lYXN5LW1jLXdpZGdldC1zdGF0LWhvbGRlciB7XHJcdFx0XHRtYXJnaW4tdG9wOiAxZW07XHJcdFx0fVxyXHRcdFxyXHRcdC55aWtlcy1lYXN5LW1jLXN0YXRzLXRhYmxlIHAueWlrZXMtZWFzeS1tYy1kYXNoYm9hcmQtc3RhdCB7XHJcdFx0XHRjb2xvcjogIzUyQkFENTtcclx0XHRcdGZvbnQtd2VpZ2h0OiA4MDA7XHJcdFx0XHRmb250LXNpemU6IDIwcHg7XHJcdFx0XHRtYXJnaW4tYm90dG9tOiAycHg7XHJcdFx0XHRtYXJnaW4tdG9wOiAxNXB4O1xyXHRcdFx0bGluZS1oZWlnaHQ6IDEuMjtcclx0XHRcdG1heC1oZWlnaHQ6IDgwcHg7XHJcdFx0fVxyXHRcdC55aWtlcy1lYXN5LW1jLXN0YXRzLXRhYmxlIHAueWlrZXMtZWFzeS1tYy1zdGF0LWxpc3QtbGFiZWwge1xyXHRcdFx0Zm9udC1zaXplOiAxM3B4O1xyXHRcdFx0bWFyZ2luLXRvcDogMDtcclx0XHRcdG1hcmdpbi1ib3R0b206IDE1cHg7XHJcdFx0XHRmb250LWZhbWlseTogXCJPcGVuIFNhbnNcIjtcclx0XHR9XHJcdFx0XHJcdC8qKiBBY2NvdW50IEFjdGl2aXR5ICoqL1xyXHQjeWlrZXNfZWFzeV9tY19hY2NvdW50X2FjdGl2aXR5X3dpZGdldCB0YWJsZSB0aC5yb3ctdGl0bGUge1xyXHRcdHBhZGRpbmctbGVmdDogMTBweDtcclx0fVxyXHRcclx0LyogVGhpY2tib3ggZm9yIFRhZ3MgKi9cclx0I3ByZS1kZWZpbmVkLXRhZy1pbnRlcmlvci1jb250YWluZXIge1xyXHRcdGJhY2tncm91bmQ6IHVybCguLi8uLi9pbmNsdWRlcy9pbWFnZXMvdGlueU1DRS95aWtlcy1tYWlsY2hpbXAtY29tYm8tZmFkZWQucG5nKSBib3R0b20gcmlnaHQgbm8tcmVwZWF0ICNmZmY7XHJcdFx0YmFja2dyb3VuZC1zaXplOiA0MCU7XHJcdH1cclx0XHJcdC8qKiBRdGlwIFRvb2x0aXBzICoqL1xyXHQucXRpcC1kZWZhdWx0IHsgXHJcdFx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDsgXHJcdFx0Ym9yZGVyOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50OyBcclx0XHR6LWluZGV4OiA5OTk5OTk5ICFpbXBvcnRhbnQ7IFxyXHR9XHJcdFxyXHQucXRpcC1ib290c3RyYXAgeyBcclx0XHRwYWRkaW5nOiAxMHB4ICFpbXBvcnRhbnQ7IFxyXHRcdHotaW5kZXg6IDk5OTk5OTkgIWltcG9ydGFudDsgXHJcdFx0Zm9udC1zaXplOjEycHg7IFxyXHR9XHJcdFx0XHJcdC50b29sdGlwLWludGVncmF0aW9uLWJhbm5lciB7IFxyXHRcdG1heC13aWR0aDogMTAwJTsgXHJcdFx0bWFyZ2luOiAwIDAgLjI1ZW0gMDsgXHJcdH1cdFxyXHRcclx0LnRvb2x0aXB0ZXh0LnF0aXAtYm9vdHN0cmFwIHtcclx0XHRmb250LXNpemU6IDEycHg7XHJcdH1cclx0XHJcdC50b29sdGlwLXRpdGxlIHtcclx0XHRtYXJnaW46IDA7XHJcdH1cclx0XHJcdC5kYXNoaWNvbnMtZWRpdG9yLWhlbHA6aG92ZXIge1xyXHRcdGN1cnNvcjogcG9pbnRlcjtcclx0fVxyXHRcclx0LyogVGlueU1DRSBCdXR0b24gSWNvbiAqL1xyXHRpLm1jZS1pY28ubWNlLWkteWtzX21jX3RpbnltY2VfYnV0dG9uX2tleSB7XHJcdFx0YmFja2dyb3VuZDogdXJsKCAnLi4vLi4vaW5jbHVkZXMvaW1hZ2VzL3RpbnlNQ0UvRnJlZGRpZV93aW5rLnBuZycpO1xyXHRcdGJhY2tncm91bmQtc2l6ZTogMThweDtcclx0XHRiYWNrZ3JvdW5kLXBvc2l0aW9uLXk6IDFweDtcclx0XHRiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xyXHR9XHJcdFxyXHQvKiBUaW55TUNFIE1vZGFsICovXHJcdCN5aWtlc19tYWlsY2hpbXBfdGlueU1DRV9tb2RhbC10aXRsZSB7XHJcdFx0cGFkZGluZy1sZWZ0OiA0MnB4O1xyXHRcdGJhY2tncm91bmQ6IHRyYW5zcGFyZW50IHVybCgnLi4vLi4vaW5jbHVkZXMvaW1hZ2VzL01haWxDaGltcF9Bc3NldHMvRnJlZGRpZV9vcmlnaW5hbC5wbmcnKTtcclx0XHRiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xyXHRcdGJhY2tncm91bmQtc2l6ZTogMjVweDtcclx0XHRiYWNrZ3JvdW5kLXBvc2l0aW9uOiBsZWZ0O1xyXHRcdGJhY2tncm91bmQtcG9zaXRpb24teDogMTBweDtcclx0fVxyXHRcclx0LyogTW9kYWwgQmFja2dyb3VuZCBUZXN0ICovXHJcdCN5aWtlc19tYWlsY2hpbXBfdGlueU1DRV9tb2RhbCB7XHJcdFx0YmFja2dyb3VuZDogI2ZmZiB1cmwoJy4uLy4uL2luY2x1ZGVzL2ltYWdlcy90aW55TUNFL3lpa2VzLW1haWxjaGltcC1jb21iby1mYWRlZC5wbmcnKTtcclx0XHRiYWNrZ3JvdW5kLXBvc2l0aW9uOiBib3R0b20gbGVmdDtcclx0XHRiYWNrZ3JvdW5kLXNpemU6IDQwJTtcclx0XHRiYWNrZ3JvdW5kLXBvc2l0aW9uLXg6IDEwcHg7XHJcdFx0YmFja2dyb3VuZC1wb3NpdGlvbi15OiA5NSU7XHJcdFx0YmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcclx0fVxyXHRcdCN5aWtlc19tYWlsY2hpbXBfdGlueU1DRV9tb2RhbCAubWNlLWZvb3Qge1xyXHRcdFx0YmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XHJcdFx0fVxyLyoqKioqKioqKioqKioqKioqKioqKioqKioqKi9cci8qXHRcdEZyb250IGVuZCBXaWRnZXRcdCAqL1xyLyoqKioqKioqKioqKioqKioqKioqKioqKioqL1xyKltpZCo9XCJfeWlrZXNfZWFzeV9tY193aWRnZXRcIl0gPiBkaXYud2lkZ2V0LXRvcCA+IGRpdi53aWRnZXQtdGl0bGUgPiBoNCB7XHJcdGJhY2tncm91bmQ6ICNGQUZBRkEgdXJsKCcuLi8uLi9pbmNsdWRlcy9pbWFnZXMvTWFpbENoaW1wX0Fzc2V0cy9GcmVkZGllX29yaWdpbmFsLnBuZycpO1xyXHRiYWNrZ3JvdW5kLXNpemU6IDI1cHg7XHJcdGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XHJcdGJhY2tncm91bmQtcG9zaXRpb24teDogMTJweDtcclx0YmFja2dyb3VuZC1wb3NpdGlvbi15OiA3cHg7XHJcdHBhZGRpbmctbGVmdDogNDhweDtccn1cclxyIC8qKioqKioqKioqKioqKioqKioqKioqKiovXHIgLypcdCAgIEdsb2JhbCBTdHlsZXNcdCAgKi9cciAvKioqKioqKioqKioqKioqKioqKioqKiovXHIgXHIgLyogTG9nbyAqL1xyICNyZXZpZXcteWlrZXMtZWFzeS1tYWlsY2hpbXAtbm90aWNlICN5aWtlcy1tYWlsY2hpbXAtbG9nbyB7XHJcdGhlaWdodDogODBweDtcclx0d2lkdGg6IDgwcHg7XHJcdGZvbnQtc2l6ZTogMTRweDtcclx0dGV4dC1hbGlnbjogY2VudGVyO1xyXHRiYWNrZ3JvdW5kOiB1cmwoJy4uLy4uL2luY2x1ZGVzL2ltYWdlcy9XZWxjb21lX1BhZ2UveWlrZXMtbWFpbGNoaW1wLXdlbGNvbWUtbG9nby5wbmcnKSBuby1yZXBlYXQ7XHJcdGJhY2tncm91bmQtc2l6ZTogNjBweDtcclx0ZmxvYXQ6IGxlZnQ7XHJ9XHJcclx0LyogQnV0dG9uIENvbnRhaW5lciBpbiBSZXZpZXcgVXMgQ29udGFpbmVyICovXHJcdCNyZXZpZXcteWlrZXMtZWFzeS1tYWlsY2hpbXAtbm90aWNlIC5idXR0b24tY29udGFpbmVyIHtcclx0XHRkaXNwbGF5OiBibG9jaztcclx0XHR3aWR0aDogMTAwJTtcclx0XHRtYXJnaW46IC43NWVtIDAgMS41ZW0gMDtcclx0fVxyXHRcclx0XHQjcmV2aWV3LXlpa2VzLWVhc3ktbWFpbGNoaW1wLW5vdGljZSAuYnV0dG9uLWNvbnRhaW5lciAuZGFzaGljb25zIHtcclx0XHRcdGZvbnQtc2l6ZTogMTRweDtcclx0XHRcdGxpbmUtaGVpZ2h0OiAxLjk7XHJcdFx0XHRtYXJnaW4tbGVmdDogLTRweDtcclx0XHR9XHJcdFx0XHJcdFx0LyogU3RhciBJY29uICovXHJcdFx0I3Jldmlldy15aWtlcy1lYXN5LW1haWxjaGltcC1ub3RpY2UgLmJ1dHRvbi1jb250YWluZXIgLmRhc2hpY29ucy1zdGFyLWZpbGxlZCB7XHJcdFx0XHRjb2xvcjogI0U2QjgwMDtcclx0XHR9XHJcdFx0XHJcdFx0LyogVXBncmFkZSBJY29uICovXHJcdFx0I3Jldmlldy15aWtlcy1lYXN5LW1haWxjaGltcC1ub3RpY2UgLmJ1dHRvbi1jb250YWluZXIgLmRhc2hpY29ucy11cGxvYWQge1xyXHRcdFx0Y29sb3I6ICM2RTg4NDE7XHJcdFx0fVxyXHJcdFx0LyogRGlzbWlzcyBJY29uICovXHJcdFx0I3Jldmlldy15aWtlcy1lYXN5LW1haWxjaGltcC1ub3RpY2UgLmJ1dHRvbi1jb250YWluZXIgLmRhc2hpY29ucy1uby1hbHQge1xyXHRcdFx0Y29sb3I6IHJnYigyMjAsIDU4LCA1OCk7XHJcdFx0XHRsaW5lLWhlaWdodDogMjtcclx0XHR9XHJcdFx0XHJcdFx0Ym9keS5lYXN5LW1haWxjaGltcF9wYWdlX3lpa2VzLWluYy1lYXN5LW1haWxjaGltcC1zZXR0aW5ncyAuZGFzaGljb25zLW5vLWFsdCB7XHJcdFx0XHRjb2xvcjogcmdiKDIyMCwgNTgsIDU4KTtcclx0XHR9XHJcdFx0XHJcdFx0I3Jldmlldy15aWtlcy1lYXN5LW1haWxjaGltcC1ub3RpY2UgLmJ1dHRvbi1jb250YWluZXIgYSB7XHJcdFx0XHRtYXJnaW4tcmlnaHQ6IDEwcHg7XHJcdFx0fVxyXHIgLyogRGlzbWlzc2FibGUgTm90aWNlICovXHIgI3Jldmlldy15aWtlcy1lYXN5LW1haWxjaGltcC1ub3RpY2Uge1xyXHRib3JkZXItbGVmdDogNHB4IHNvbGlkICM1MkJBRDU7XHJcdGJhY2tncm91bmQ6ICNmZWZlZmU7XHJcdHBhZGRpbmc6IDFweCAxMnB4O1xyXHRib3gtc2hhZG93OiAwIDFweCAxcHggMCByZ2JhKDAsMCwwLC4xKTtcclx0LXdlYmtpdC1ib3gtc2hhZG93OiAwIDFweCAxcHggMCByZ2JhKDAsMCwwLC4xKTtcclx0bWFyZ2luOiAxNXB4IDI1cHggMjBweCA1cHg7XHIgfVxyIFxyIC8qIFJlYWRvbmx5IFRleHRhcmVhcyAqL1xyIHRleHRhcmVhW3JlYWRvbmx5XSxcciBpbnB1dFtyZWFkb25seV0sXHIgdGV4dGFyZWEucmVhZG9ubHksXHIgaW5wdXQucmVhZG9ubHkge1xyXHRiYWNrZ3JvdW5kOiAjZWVlO1xyIH1cciBcciAuZGFzaGljb25zLnlpa2VzLWxvdmUge1xyXHRjb2xvcjogcGluaztcciB9XHIgXHIgLmZpZWxkLWRlc2NyaXB0aW9uLWlucHV0IHtcclx0cmVzaXplOiB2ZXJ0aWNhbDtcclx0bWF4LWhlaWdodDogMTAwcHg7XHIgfVxyIC55aWtlcy1lYXN5LW1jLXBvc3Rib3ggaDMge1xyICAgIGJhY2tncm91bmQ6ICM1MkJBRDU7XHJcdGZvbnQtd2VpZ2h0OiA4MDA7XHJcdGNvbG9yOiAjZmZmZmZmO1xyIH1cclx0Lnlpa2VzLWVhc3ktbWMtcG9zdGJveCBoMy5iZy10cmFuc3BhcmVudCB7XHJcdFx0Y29sb3I6ICMzMzM7XHJcdFx0Zm9udC13ZWlnaHQ6IDQwMDtcclx0XHRiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcclx0fVxyXHRcciAueWlrZXMtbWMtd2FybmluZy1tZXNzYWdlIHtcclx0cGFkZGluZy1sZWZ0OiAxNXB4O1xyXHRtYXJnaW4tdG9wOiAwO1xyXHRwYWRkaW5nLXRvcDogMTBweDtcclx0Y29sb3I6IHJnYigyMTgsIDExMCwgMTEwKTtcciB9XHIgXHIgLmVycm9yLW1lc3NhZ2UtY29udGFpbmVyIGxhYmVsIHtcclx0ZGlzcGxheTogYmxvY2s7IFxyXHRtYXJnaW46IDFlbSAwO1xyIH1cciBcciAueWlrZXMtbWMtc2V0dGluZ3MtZXhwYW5zaW9uLXNlY3Rpb24ge1xyXHRkaXNwbGF5OiBub25lO1xyIH1cclx0LmV4cGFuc2lvbi1zZWN0aW9uLXRpdGxlIHtcclx0XHRiYWNrZ3JvdW5kOiAjZmZmZmZmO1xyXHR9XHJcdC5leHBhbnNpb24tc2VjdGlvbi10aXRsZS5zZXR0aW5ncy1zaWRlYmFyLCAuZm9ybS1idWlsZGVyLXNlY3Rpb24tdGl0bGUge1xyXHRcdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclx0XHRkaXNwbGF5OiBibG9jaztcclx0XHRib3JkZXI6IDFweCBzb2xpZCByZ2JhKDE3NywgMTc3LCAxNzcsIDAuNzEpO1xyXHRcdGNvbG9yOiAjMzMzMzMzO1xyXHRcdHBhZGRpbmc6IDVweDtcclx0XHRtYXJnaW46IC41ZW0gMDtcclx0fVxyXHQuZXhwYW5zaW9uLXNlY3Rpb24tdGl0bGUuc2V0dGluZ3Mtc2lkZWJhciAuZGFzaGljb25zLCAuZm9ybS1idWlsZGVyLXNlY3Rpb24tdGl0bGUgLmRhc2hpY29ucyB7XHJcdFx0Y29udGVudDogXCJcXGYxMzJcIjtcclx0XHRmb250LWZhbWlseTogXCJkYXNoaWNvbnNcIjtcclx0XHRmb250LXNpemU6IDE1cHg7XHJcdFx0bGluZS1oZWlnaHQ6IDEuNTtcclx0fVxyIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXHIgLyoqIFNldHRpbmdzL09wdGlvbnMgUGFnZSAgKiovXHIgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xyXHQvKiBBYm91dCBUZXh0IFNwYWNpbmcgKi9cclx0Lnlpa2VzLWVhc3ktbWMtYWJvdXQtdGV4dCB7IFxyXHRcdG1hcmdpbi10b3A6IDA7IFxyXHR9XHJcdFxyXHQvKiBJbnB1dCBGaWVsZCBTdHlsZXMgKi9cclx0I3lrcy1tYWlsY2hpbXAtZG91YmxlLW9wdGluLW1lc3NhZ2UsXHJcdCN5a3MtbWFpbGNoaW1wLXNpbmdsZS1vcHRpbi1tZXNzYWdlLFxyXHQuc2V0dGluZ3MtcGFnZS1pbnB1dCB7XHJcdFx0d2lkdGg6IDUwJTtcclx0fVxyXHRcclx0I3lrcy1tYWlsY2hpbXAtZG91YmxlLW9wdGluLW1lc3NhZ2UsXHJcdCN5a3MtbWFpbGNoaW1wLXNpbmdsZS1vcHRpbi1tZXNzYWdlIHtcclx0XHRtaW4taGVpZ2h0OiA3NXB4O1xyXHRcdG1heC1oZWlnaHQ6IDIwMHB4O1xyXHRcdHJlc2l6ZTogdmVydGljYWw7XHJcdH1cclx0XHJcdCNzZXR0aW5ncy1uYXYgbGkgYSB7XHJcdFx0Y29sb3I6ICMzMzMzMzM7XHJcdFx0dGV4dC1kZWNvcmF0aW9uOiBub25lICFpbXBvcnRhbnQ7XHJcdFx0IHRyYW5zaXRpb246IGNvbG9yIC4xNXMgZWFzZS1vdXQ7XHJcdFx0LW1vei10cmFuc2l0aW9uOiBjb2xvciAuMTVzIGVhc2Utb3V0O1xyXHRcdC13ZWJraXQtdHJhbnNpdGlvbjogY29sb3IgLjE1cyBlYXNlLW91dDtcclx0XHQtby10cmFuc2l0aW9uOiBjb2xvciAuMTVzIGVhc2Utb3V0O1xyXHR9XHJcdFx0I3NldHRpbmdzLW5hdiBsaSBhOmhvdmVyIHtcclx0XHRcdGNvbG9yOiAjNTJCQUQ1ICFpbXBvcnRhbnQ7XHJcdFx0fVxyXHRcclx0LyogU2VsZWN0ZWQgT3B0aW9ucyBQYWdlIEFycm93ICovXHJcdC5vcHRpb24tbWVudS1zZWxlY3RlZC1hcnJvdyB7XHJcdFx0d2lkdGg6IDA7IFxyXHRcdGhlaWdodDogMDsgXHJcdFx0Ym9yZGVyLXRvcDogMTBweCBzb2xpZCB0cmFuc3BhcmVudDtcclx0XHRib3JkZXItYm90dG9tOiAxMHB4IHNvbGlkIHRyYW5zcGFyZW50OyBcclx0XHRib3JkZXItcmlnaHQ6IDEwcHggc29saWQgYmx1ZTsgXHJcdFx0Ym9yZGVyLXJpZ2h0OiAxMHB4IHNvbGlkICNmZmY7XHJcdFx0cG9zaXRpb246IGFic29sdXRlO1xyXHRcdGxlZnQ6IC0uNmVtO1xyXHR9XHJcdFxyXHQub3B0aW9uLW1lbnUtc2VsZWN0ZWQtYXJyb3crYSB7XHJcdFx0Y29sb3I6ICM1MkJBRDUgIWltcG9ydGFudDtcclx0fVxyXHRcclx0LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXHJcdC8qXHRcdFx0RGVidWcgUGFnZVx0XHQgKi9cclx0LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xyXHQjeWlrZXMtbWFpbGNoaW1wLWVycm9yLWxvZyAucm93LXRpdGxlIHtcclx0XHRmb250LXdlaWdodDogNDAwO1xyXHR9XHJcdFxyXHQuY3JlYXRlLWVycm9yLWxvZy1oZWxwOmhvdmVyIHtcclx0XHRjdXJzb3I6IHBvaW50ZXI7XHJcdH1cclx0XHIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xyLypcdFx0TGlzdHMgUGFnZVx0XHRcdCAqL1xyLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xyLmxpc3QtcmF0aW5nLXN0YXIge1xyXHRjb2xvcjogI0U2QjgwMDtccn1cci8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXHIvKlx0XHRBY2NvbnQgRGV0YWlscyBQYWdlXHQqL1xyLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xyLyogQ2hpbXAgQ2hhdHRlciAqL1xyI2NoaW1wLWNoYXR0ZXIge1xyXHR0ZXh0LWFsaWduOiBjZW50ZXI7XHJ9XHJcdCNjaGltcC1jaGF0dGVyIC5jaGltcC1jaGF0dGVyLWNvbnRhaW5lciB7XHJcdFx0bWFyZ2luOiAyZW0gMDtcclx0XHRiYWNrZ3JvdW5kOiAjRjhGOEY4O1xyXHRcdGJvcmRlci1yYWRpdXM6IDEwcHg7XHJcdFx0cGFkZGluZzogMTBweDtcclx0fVxyLyogSW5hY3RpdmUgKyBBY3RpdmUgTWFya2VycyAqL1xyLmNpcmNsZS1hY2NvdW50LWluYWN0aXZlIHtcclx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXHRtYXJnaW4tdG9wOiAtM3B4O1xyXHRtYXJnaW4tcmlnaHQ6IDVweDtcclx0aGVpZ2h0OiAxNXB4O1xyXHR3aWR0aDogMTVweDtcclx0Ym9yZGVyLXJhZGl1czogNTAlO1xyXHRiYWNrZ3JvdW5kOiByZ2JhKDI1MCwgMTM4LCAxMzgsIDAuNzkpO1xyfVxyLmNoYXR0ZXItdHlwZSB7XHIgICAgZm9udC13ZWlnaHQ6IDYwMDtcciAgICBmb250LWZhbWlseTogXCJvcGVuIHNhbnNcIjtcciAgICBmb250LXNpemU6IDE0cHg7XHIgICAgbWFyZ2luOiA1cHg7XHJ9XHIuY2hhdHRlci1tZXNzYWdlIHtcdFxyICAgbWFyZ2luOiAxNXB4ICFpbXBvcnRhbnQ7XHJ9XHIuY2lyY2xlLWFjY291bnQtYWN0aXZlIHtcclx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXHRtYXJnaW4tdG9wOiAtM3B4O1xyXHRtYXJnaW4tcmlnaHQ6IDVweDtcclx0aGVpZ2h0OiAxNXB4O1xyXHR3aWR0aDogMTVweDtcclx0Ym9yZGVyLXJhZGl1czogNTAlO1xyXHRiYWNrZ3JvdW5kOiByZ2JhKDEyOCwgMjE0LCAxMjgsIDAuNzcpO1xyfVxyI2FjY291bnQtZGV0YWlscyAubWFpbGNoaW1wLWF2YXRhciB7XHJcdHdpZHRoOiAxMjBweDtcclx0Ym9yZGVyLXJhZGl1czogMTAlO1xyfVxyLyogQ2hhdHRlciBDb250YWluZXIgQ29sb3JzICovXHIuY2hpbXAtY2hhdHRlci1wb3NpdGl2ZSB7XHJcdGJvcmRlci10b3A6IDJweCBzb2xpZCByZ2IoMTU3LCAyMjMsIDE1Nyk7XHJ9XHIuY2hpbXAtY2hhdHRlci1uZWdhdGl2ZSB7XHJcdGJvcmRlci10b3A6IDJweCBzb2xpZCAjRkJBMkEyO1xyfVxyLmNoaW1wLWNoYXR0ZXItbmV1dHJhbCB7XHJcdGJvcmRlci10b3A6IDJweCBzb2xpZCByZ2IoMTc3LCAxNzcsIDE3Nyk7XHJ9XHIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXHIvKlx0ICBNYW5hZ2UgTGlzdHMgUGFnZSAqL1xyLyoqKioqKioqKioqKioqKioqKioqKioqKioqKiovXHIvKiBNZXJnZSBWYXJpYWJsZSAvIEludGVyZXN0IEdyb3VwIFRvZ2dsZSAqL1xyLm12X2lnX2xpc3Qge1xyXHR3aWR0aDoxMDAlO1xyXHRtYXJnaW4tYm90dG9tOiAuMjVlbTtccn1cclx0Lm12X2lnX2xpc3QgLmxpc3QtY29udGFpbmVyIHtcclx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcdH1cclx0Lm12X2lnX2xpc3QgYSB7XHJcdFx0d2lkdGg6IDQ4JTtcclx0XHRwYWRkaW5nOiA1cHggMCAhaW1wb3J0YW50O1xyXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcclx0XHRtYXJnaW46IDA7XHJcdH1cclx0Lm12X2lnX2xpc3QgYTpmaXJzdC1jaGlsZCB7XHJcdFx0bWFyZ2luLXJpZ2h0OiAwO1xyXHR9XHJcdC5tdl9pZ19saXN0IGE6bGFzdC1jaGlsZCB7XHJcdFx0ZmxvYXQ6IHJpZ2h0O1xyXHR9XHJcdFxyXHQubXZfaWdfbGlzdCB7XHJcdFx0bWFyZ2luLWJvdHRvbTogLjVlbTtcclx0fVxyXHQubXZfaWdfbGlzdCAubmF2LXRhYiB7XHJcdFx0Ym9yZGVyOiAxcHggc29saWQgI2NjYztcclx0fVx0XHJcdFx0Lm12X2lnX2xpc3QgLm5hdi10YWItYWN0aXZlIHtcclx0XHRcdGNvbG9yOiAjZmZmO1xyXHRcdFx0Zm9udC13ZWlnaHQ6IGJvbGQ7XHJcdFx0XHRiYWNrZ3JvdW5kOiAjNTJiYWQ1O1xyXHRcdH1cclx0XHRcclx0Lm12X2lnX2xpc3QgLmFycm93LWRvd24ge1xyXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcclx0XHRtYXJnaW4tdG9wOiAyMXB4O1xyXHRcdG1hcmdpbi1sZWZ0OiA1MHB4O1xyXHRcdHdpZHRoOiAwOyBcclx0XHRoZWlnaHQ6IDA7IFxyXHRcdGJvcmRlci1sZWZ0OiAxMnB4IHNvbGlkIHRyYW5zcGFyZW50O1xyXHRcdGJvcmRlci1yaWdodDogMTJweCBzb2xpZCB0cmFuc3BhcmVudDtcclx0XHRib3JkZXItdG9wOiAxMnB4IHNvbGlkICM1MkJBRDU7XHJcdH1cclx0XHIjY29udGFpbmVyLWNvbnRhaW5lciB7XHJcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcclx0d2lkdGg6IDUyMXB4O1xyfVxyXHQjY29udGFpbmVyLWNvbnRhaW5lciAubGlzdC1jb250YWluZXIge1xyXHRcdGZsb2F0OiBsZWZ0O1xyXHRcdHdpZHRoOiAyNTRweDtcclx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XHJcdH1cclx0I2NvbnRhaW5lci1jb250YWluZXIgLmxpc3QtY29udGFpbmVyOmxhc3QtY2hpbGQge1xyXHRcdG1hcmdpbi1sZWZ0OiAxZW07XHJcdH1cclx0XHIjeWlrZXNfZWFzeV9tY190b29sYmFyIHtcclx0bWFyZ2luLXRvcDogLS43NWVtO1xyfVxyI3lpa2VzX2Vhc3lfbWNfdG9vbGJhcl9saW5rcyB7XHJcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcclx0d2lkdGg6IDEwMCU7XHJcdG1hcmdpbjogMDtcclx0cGFkZGluZzogMTBweCAwO1xyfVxyXHQjeWlrZXNfZWFzeV9tY190b29sYmFyX2xpbmtzIGxpIHtcclx0XHRmbG9hdDogbGVmdDtcclx0XHRtYXJnaW46IDAgLjVlbTtcclx0fVxyXHQjeWlrZXNfZWFzeV9tY190b29sYmFyX2xpbmtzIGxpIGEge1xyXHRcdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclx0fVxyXHQjeWlrZXNfZWFzeV9tY190b29sYmFyX2xpbmtzIGxpIGEuc2VsZWN0ZWRfaGlkZGVuX3NldHRpbmcge1xyXHRcdGNvbG9yOiAjMzMzMzMzO1xyXHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2JhKDIwNiwgMjA2LCAyMDYsIDEpO1xyXHRcdG1hcmdpbi1ib3R0b206IDNweDtcclx0fVxyXHQjeWlrZXNfZWFzeV9tY190b29sYmFyX2xpbmtzIGxpIC5zZWxlY3RlZF9zZXR0aW5nX3RyaWFuZ2xlIHtcclx0XHR3aWR0aDogMDsgXHJcdFx0aGVpZ2h0OiAwOyBcclx0XHRib3JkZXItbGVmdDogMTNweCBzb2xpZCB0cmFuc3BhcmVudDtcclx0XHRib3JkZXItcmlnaHQ6IDEzcHggc29saWQgdHJhbnNwYXJlbnQ7XHJcdFx0Ym9yZGVyLXRvcDogMTNweCBzb2xpZCByZ2JhKDIwNiwgMjA2LCAyMDYsIDEpO1xyXHRcdG1hcmdpbjogMCBhdXRvO1xyXHR9XHJcdFx0LyogVG9vbGJhciBJY29ucyAqL1xyXHRcdCN5aWtlc19lYXN5X21jX3Rvb2xiYXJfbGlua3MgbGkgYS5mb3JtLWJ1aWxkZXI6YmVmb3JlIHtcclx0XHRcdGNvbnRlbnQ6IFwiXFxmMTE2XCI7XHJcdFx0XHRmb250LWZhbWlseTogXCJkYXNoaWNvbnNcIjtcclx0XHR9XHJcdFx0I3lpa2VzX2Vhc3lfbWNfdG9vbGJhcl9saW5rcyBsaSBhLmZvcm0tY3VzdG9taXplcjpiZWZvcmUge1xyXHRcdFx0Y29udGVudDogXCJcXGYxMDBcIjtcclx0XHRcdGZvbnQtZmFtaWx5OiBcImRhc2hpY29uc1wiO1xyXHRcdH1cclx0XHQjeWlrZXNfZWFzeV9tY190b29sYmFyX2xpbmtzIGxpIGEuZXJyb3ItbWVzc2FnZXM6YmVmb3JlIHtcclx0XHRcdGNvbnRlbnQ6IFwiXFxmMTE3XCI7XHJcdFx0XHRmb250LWZhbWlseTogXCJkYXNoaWNvbnNcIjtcclx0XHR9XHJcdFx0I3lpa2VzX2Vhc3lfbWNfdG9vbGJhcl9saW5rcyBsaSBhLmN1c3RvbS1ub3RpZmljYXRpb25zOmJlZm9yZSB7XHJcdFx0XHRjb250ZW50OiBcIlxcZjQ2NlwiO1xyXHRcdFx0Zm9udC1mYW1pbHk6IFwiZGFzaGljb25zXCI7XHJcdFx0fVxyXHRcci8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cci8qIE1hbmFnZSBGb3JtcyBQYWdlICovXHIvKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xyc3Bhblt0aXRsZT1cIkltcHJlc3Npb25zXCJdOmhvdmVyLFxyc3Bhblt0aXRsZT1cIlN1Ym1pc3Npb25zXCJdOmhvdmVyLFxyc3Bhblt0aXRsZT1cIkNvbnZlcnNpb24gUmF0ZVwiXTpob3ZlciB7XHJcdGRpc3BsYXk6IGJsb2NrO1xyXHRjdXJzb3I6IHBvaW50ZXI7XHJ9XHJcci8qIENvbnRhaW5lciBob2xkaW5nIHRoZSBmb3JtIElEICovXHIuZm9ybS1pZC1jb250YWluZXIge1xyXHRwYWRkaW5nOiAxcHggOHB4O1xyXHRib3JkZXItcmFkaXVzOiA1cHg7XHJcdGJhY2tncm91bmQ6IHJnYig3MywgMTY5LCAyMzYpO1xyXHRmb250LXdlaWdodDogYm9sZDtcclx0Y29sb3I6ICNmZmZmZmY7XHJ9XHIubWFuYWdlLWZvcm0tYWRtaW4tbm90aWNlIHtcclx0bWFyZ2luLXRvcDogMS43NWVtICFpbXBvcnRhbnQ7XHJ9XHJhLnlpa2VzLWRlbGV0ZS1tYWlsY2hpbXAtZm9ybSxccmEueWlrZXMtZGVsZXRlLXN1YnNjcmliZXIsXHIueWlrZXMtbWMtc2V0dGluZ3MtZXhwYW5zaW9uLXNlY3Rpb24gYS5yZW1vdmUtZmllbGQsXHIucmVtb3ZlLW5vdGlmaWNhdGlvbiB7XHJcdGNvbG9yOiByZ2IoMjE3LCA5NiwgOTYpICFpbXBvcnRhbnQ7XHJ9XHIueWlrZXMtbWMtc2hvcnRjb2RlLWlucHV0IHtcclx0dGV4dC1hbGlnbjogY2VudGVyO1xyfVxyLmhpZGRlbi1jbGFzcyB7XHJcdGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtccn1cci5jb2x1bW4tY29sdW1ubmFtZSBzcGFuLnN0YXRzIHtcclx0ZGlzcGxheTogYmxvY2s7XHJcdHdpZHRoOiAxMDAlO1xyXHR0ZXh0LWFsaWduOiBjZW50ZXI7XHJ9XHJcdC5jb2x1bW4tY29sdW1ubmFtZSBzcGFuLnN0YXRzIHNwYW4ge1xyXHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcclx0XHR3aWR0aDogMjAlO1xyXHR9XHJcdFx0LmNvbHVtbi1jb2x1bW5uYW1lIHNwYW4uc3RhdHMgc3Bhbjpob3ZlciB7XHJcdFx0XHRjdXJzb3I6IHBvaW50ZXI7XHJcdFx0fVxyLyogQXZhaWxhYmxlIEZvcm0gRmllbGQgTGlzdCAqL1xyI2F2YWlsYWJsZS1maWVsZHMgbGksIFxyI2F2YWlsYWJsZS1pbnRlcmVzdC1ncm91cHMgbGkge1xyXHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcdGRpc3BsYXk6IGJsb2NrO1xyXHRib3JkZXI6IDFweCBzb2xpZCByZ2JhKDE3NywgMTc3LCAxNzcsIDAuNzEpO1xyXHRjb2xvcjogIzMzMzMzMztcclx0cGFkZGluZzogNXB4O1xyXHRtYXJnaW46IC41ZW0gMDtccn1cclx0I2F2YWlsYWJsZS1maWVsZHMgbGkubm90LWF2YWlsYWJsZSwgXHJcdCNhdmFpbGFibGUtaW50ZXJlc3QtZ3JvdXBzIGxpLm5vdC1hdmFpbGFibGUge1xyXHRcdG9wYWNpdHk6IC42ICFpbXBvcnRhbnQ7XHJcdH1cclx0XHJcdCNhdmFpbGFibGUtZmllbGRzIGxpLmZpZWxkLXRvLWFkZC10by1mb3JtLFxyXHQjYXZhaWxhYmxlLWludGVyZXN0LWdyb3VwcyBsaS5ncm91cC10by1hZGQtdG8tZm9ybSB7XHJcdFx0YmFja2dyb3VuZDogcmdiYSg0NiwgMTYyLCAyMDQsIDAuMjUpO1xyXHR9XHIvKioqKioqKioqKioqKioqKioqKioqKiovXHIvKiBFZGl0IEZvcm0gUGFnZSAgKi9cci8qKioqKioqKioqKioqKioqKioqKioqL1xyI2VkaXQteWlrZXMtbWMtZm9ybSBsYWJlbCBoMyB7XHJcdG1hcmdpbi1sZWZ0OjA7XHJcdHBhZGRpbmctbGVmdDogMDtccn1cciNhdmFpbGFibGUtZmllbGRzIC5maWVsZC1yZXF1aXJlZCB7XHJcdGNvbG9yOiByZ2IoMjE3LCA5NiwgOTYpICFpbXBvcnRhbnQ7XHJ9XHJcdC8qIFBvc3QgU3R1ZmYgSGVhZGluZyAqL1xyXHRib2R5LmFkbWluX3BhZ2VfeWlrZXMtbWFpbGNoaW1wLWVkaXQtZm9ybSAjcG9zdHN0dWZmIGgyIHtcclx0XHRwYWRkaW5nOiA4cHggMTJweDtcclx0XHRtYXJnaW4tdG9wOiAwO1xyXHR9XHJcdFxyLyogU3R5bGUgTGlzdCAtIGNvbG9yIHBpY2tlcnMgZXRjLiAqL1xyI3N0eWxlLWxpc3QgdWwgbGkge1xyXHRkaXNwbGF5OiBibG9jaztcclx0d2lkdGg6IDEwMCU7XHJcdG1hcmdpbjogMWVtIDA7XHJ9XHJcdC53cC1waWNrZXItY29udGFpbmVyLFxyXHQuZm9ybS1zdHlsZS1hZGp1c3RtZW50IHtcclx0XHRkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xyXHRcdHdpZHRoOiAxMDAlO1xyXHRcdG1hcmdpbjogLjVlbSAwO1xyXHR9XHJcdFxyLmR5bmFtaWMtZW1haWwtdGFnIHtcclx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXHRtYXJnaW4tcmlnaHQ6IDVweDtccn1cci5keW5hbWljLXRhZy1kZXNjcmlwdGlvbiB0ZCB7XHJcdHBhZGRpbmctdG9wOiAwO1xyfVxyXHIjY3JlYXRlLW5ldy1ub3RpZmljYXRpb24tYnV0dG9uIHtcclx0bWFyZ2luLXRvcDogMWVtO1xyfVxyXHRcci8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xyLyogQWJvdXQgWWlrZXMgSW5jIFBhZ2UgICAqL1xyLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1x0XHIjdGVhbS1tZW1iZXItY29udGFpbmVyIHtcclx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXHR3aWR0aDogYXV0bztcclx0bWFyZ2luOiAwIGF1dG87XHJcdHdpZHRoOiAxMDAlO1xyfVxyXHQueWlrZXMtbmV3cy1hcnRpY2xlIHtcclx0XHRtYXJnaW46IDEycHggMDtcclx0fVxyXHRcdC55aWtlcy1uZXdzLWFydGljbGUgYSB7XHJcdFx0XHR0ZXh0LWRlY29yYXRpb246IG5vbmUgIWltcG9ydGFudDtcclx0XHR9XHJcdFx0XHRcdFxyXHRcdC5zdGFmZi1wb3NpdGlvbiB7XHJcdFx0XHRkaXNwbGF5OiBibG9jaztcclx0XHRcdHRleHQtYWxpZ246IGNlbnRlcjtcclx0XHR9XHJcdFxyXHQjYWJvdXQteWlrZXMgLnRlYW0tbWVtYmVyIGltZyB7XHJcdFx0Ym9yZGVyLXJhZGl1czogNTAlO1xyXHRcdGRpc3BsYXk6YmxvY2s7XHJcdFx0bWFyZ2luOjAgYXV0bztcclx0fVxyXHQuYWJvdXQteWlrZXMtaW5jLXRleHQge1xyXHRcdC1tcy1maWx0ZXI6IFwicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9MClcIjtcclx0XHQvKiBJRSA1LTcgKi9cclx0XHRmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MCk7XHJcdFx0LyogTmV0c2NhcGUgKi9cclx0XHQtbW96LW9wYWNpdHk6IDA7XHJcdFx0LyogU2FmYXJpIDEueCAqL1xyXHRcdC1raHRtbC1vcGFjaXR5OiAwO1xyXHRcdC8qIEdvb2QgYnJvd3NlcnMgKi9cclx0XHRvcGFjaXR5OiAwO1xyXHR9XHJcdCNhYm91dC15aWtlcyAudGVhbS1tZW1iZXIge1xyXHRcdC1tcy1maWx0ZXI6IFwicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9MClcIjtcclx0XHQvKiBJRSA1LTcgKi9cclx0XHRmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MCk7XHJcdFx0LyogTmV0c2NhcGUgKi9cclx0XHQtbW96LW9wYWNpdHk6IDA7XHJcdFx0LyogU2FmYXJpIDEueCAqL1xyXHRcdC1raHRtbC1vcGFjaXR5OiAwO1xyXHRcdC8qIEdvb2QgYnJvd3NlcnMgKi9cclx0XHRvcGFjaXR5OiAwO1xyXHRcdGZsb2F0OiBsZWZ0O1xyXHRcdGRpc3BsYXk6YmxvY2s7XHJcdFx0d2lkdGg6IDMxJTtcclx0XHRtYXJnaW46IDFlbSA1cHggMWVtIDVweDtcclx0fVxyXHRcclx0Lnlpa2VzLWFib3V0LWltYWdlLWNvbnRhaW5lciB7XHJcdFx0cG9zaXRpb246IHJlbGF0aXZlO1xyXHRcdGRpc3BsYXk6IGJsb2NrO1xyXHRcdHdpZHRoOiAxMDVweDtcclx0XHRtYXJnaW46IDAgYXV0bztcclx0fVxyXHRcclx0Lnlpa2VzLWFib3V0LWltYWdlLWNvbnRhaW5lcjpob3ZlciB7XHJcdFx0Y3Vyc29yOiBwb2ludGVyO1xyXHR9XHJcdFx0XHJcdFx0Lnlpa2VzLWFib3V0LWltYWdlLWNvbnRhaW5lciAuZGFzaGljb25zLWhvbGRlciB7XHJcdFx0XHRtYXJnaW46IGF1dG87XHJcdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcdFx0XHR0b3A6IDA7IFxyXHRcdFx0bGVmdDogMDsgXHJcdFx0XHRib3R0b206IDA7IFxyXHRcdFx0cmlnaHQ6IDA7XHJcdFx0XHRwYWRkaW5nOiA1cHg7XHJcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDUxLCA1MSwgNTEsIDAuNzEpO1xyXHRcdFx0Ym9yZGVyLXJhZGl1czogNTAlO1xyXHRcdFx0dmlzaWJpbGl0eTogaGlkZGVuO1xyXHRcdH1cclx0XHRcclx0XHQueWlrZXMtYWJvdXQtaW1hZ2UtY29udGFpbmVyIC5kYXNoaWNvbnMuZmFkZU91dExlZnQsXHJcdFx0Lnlpa2VzLWFib3V0LWltYWdlLWNvbnRhaW5lciAuZGFzaGljb25zLmZhZGVJblJpZ2h0IHtcclx0XHRcdHZpc2liaWxpdHk6IHZpc2libGUgIWltcG9ydGFudDtcclx0XHR9XHJcdFx0XHJcdFx0XHQueWlrZXMtYWJvdXQtaW1hZ2UtY29udGFpbmVyIC5kYXNoaWNvbnMtdHdpdHRlciB7XHJcdFx0XHRcdGNvbG9yOiAjMDBCMEVEO1xyXHRcdFx0fVxyXHRcdFx0XHJcdFxyXHQjYWJvdXQteWlrZXMgLnRlYW0tcm93OmZpcnN0LWNoaWxkIHtcclx0XHRtYXJnaW4tdG9wOiAyZW07XHJcdH1cclx0XHJcdCNhYm91dC15aWtlcyAudGVhbS1yb3cge1xyXHRcdHdpZHRoOiAxMDAlO1xyXHRcdGZsb2F0OiBsZWZ0O1xyXHR9XHJcdCNhYm91dC15aWtlcyAudGVhbS1tZW1iZXIgcCB7XHJcdFx0cGFkZGluZy1sZWZ0OiAxMHB4O1xyXHRcdGZvbnQtc2l6ZTogMTZweDtcclx0fVxyXHRcclx0I2NlcnRpZmljYXRpb25zIHVsIHtcclx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcdFx0d2lkdGg6IDEwMCU7XHJcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xyXHR9XHJcdFx0I2NlcnRpZmljYXRpb25zIHVsIGxpIHtcclx0XHRcdGZsb2F0OiBsZWZ0O1xyXHRcdH1cclx0XHRcdCNjZXJ0aWZpY2F0aW9ucyB1bCBsaSBpbWcge1xyXHRcdFx0XHRtYXgtd2lkdGg6IDEwMCU7XHJcdFx0XHRcdGRpc3BsYXk6YmxvY2s7XHJcdFx0XHRcdG1hcmdpbjogMCBhdXRvO1xyXHRcdFx0fVxyXHRcdFx0XHJcdC8qKioqKioqKioqKioqKioqKioqKioqKioqKiovXHJcdC8qIEFQSSBDb25uZWN0aW9uIFN0eWxlcyAqL1xyXHQvKioqKioqKioqKioqKioqKioqKioqKioqKiovXHJcdCNjb25uZWN0aW9uLWNvbnRhaW5lciB7XHJcdFx0ZmxvYXQ6IHJpZ2h0O1xyXHRcdGNvbG9yOiAjZmZmZmZmO1xyXHRcdHBhZGRpbmc6IC4yNWVtIC43NWVtIC4yNWVtIC4yNWVtO1xyXHRcdG1hcmdpbi10b3A6IC00cHg7XHJcdH1cclx0XHRcclx0XHQjY29ubmVjdGlvbi1jb250YWluZXIuYXBpLWNvbm5lY3RlZCB7XHJcdFx0XHRiYWNrZ3JvdW5kOiByZ2IoNjgsIDE4NiwgNjgpO1xyXHRcdH1cclx0XHRcclx0XHQjY29ubmVjdGlvbi1jb250YWluZXIuYXBpLW5vdC1jb25uZWN0ZWQge1xyXHRcdFx0YmFja2dyb3VuZDogcmdiKDE4MSwgMTgxLCAxODEpO1xyXHRcdH1cclx0XHRcclx0XHQvKiBBZGp1c3QgTGluZWhlaWdodCBvZiBDb25lbmN0ZWQgdnMgTm90LWNvbm5lY3RlZCBJY29ucyAqL1xyXHRcdC55aWtlcy1tYy1hcGktY29ubmVjdGVkLFxyXHRcdC55aWtlcy1tYy1hcGktbm90LWNvbm5lY3RlZCB7XHJcdFx0XHRsaW5lLWhlaWdodDogMTtcclx0XHR9XHJcdFx0LyogRW5kIEljb24gbGluZSBoZWlnaHQgYWRqdXN0bWVudCAqL1xyXHRcclx0LyoqKioqKioqKioqKioqKioqKioqKioqL1xyXHQvKiAgU2V0dGluZ3MgU2lkZWJhciAgICovXHJcdC8qKioqKioqKioqKioqKioqKioqKioqL1xyXHRcdC8qIExlYXZlIFVzIEEgUmV2aWV3ICovXHJcdFx0I3Jldmlldy15aWtlcy1lYXN5LW1jIHtcclx0XHRcdHRleHQtYWxpZ246IGNlbnRlcjtcclx0XHR9XHJcdFx0XHQjcmV2aWV3LXlpa2VzLWVhc3ktbWMgLmRhc2hpY29ucy1zdGFyLWZpbGxlZCB7XHJcdFx0XHRcdGNvbG9yOiAjRTZCODAwO1xyXHRcdFx0fVxyXHRcdC5tZXRhLWJveC1zb3J0YWJsZXMgaHIge1xyXHRcdFx0bWFyZ2luOiAxLjc1ZW0gMCAwIDA7XHJcdFx0fVxyXHRcdFxyXHQvKioqKioqKioqKioqKioqKioqKioqKioqKi9cclx0LypcdCAgQWRtaW4gTm90aWNlcyAgICovXHJcdC8qKioqKioqKioqKioqKioqKioqKioqKiovXHJcdC55aWtlcy1lYXN5LW1jLXVwZGF0ZWQge1xyXHRcdGRpc3BsYXk6IGJsb2NrO1xyXHRcdGJvcmRlci1sZWZ0OiA0cHggc29saWQgIzRFQUVGMDtcclx0XHRtYXJnaW46MCAyMHB4IDJweCAwcHg7XHJcdFx0bWFyZ2luLXRvcDogMWVtO1xyXHRcdG1hcmdpbi1ib3R0b206IDFlbTtcclx0XHRwYWRkaW5nOiAycHggMTBweDtcclx0XHRiYWNrZ3JvdW5kOiAjZmZmO1xyXHRcdGJhY2tncm91bmQtc2l6ZTogMTIwcHg7XHJcdFx0YmFja2dyb3VuZC1wb3NpdGlvbjogcmlnaHQgYm90dG9tO1xyXHRcdGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XHJcdFx0YmFja2dyb3VuZC1wb3NpdGlvbi15OiAyOXB4O1xyXHR9XHJcdFxyXHQvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cclx0LyogU2lyIFRyZXZvciBDU1MgQWRqdXN0bWVudHMgICovXHJcdC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXHJcdC5zdC1ibG9jay1jb250cm9scyBhIHtcclx0XHR0cmFuc2l0aW9uOiBjb2xvciAuMjVzIGVhc2Utb3V0O1xyXHRcdC1tb3otdHJhbnNpdGlvbjogY29sb3IgLjI1cyBlYXNlLW91dDtcclx0XHQtd2Via2l0LXRyYW5zaXRpb246IGNvbG9yIC4yNXMgZWFzZS1vdXQ7XHJcdFx0LW8tdHJhbnNpdGlvbjogY29sb3IgLjI1cyBlYXNlLW91dDtcclx0fVxyXHQuc3QtYmxvY2stdWktYnRuLCBcclx0LnN0LWJsb2NrLWNvbnRyb2wtdWktYnRuIHtcclx0XHRmb250LXNpemU6IDFlbSAhaW1wb3J0YW50O1xyXHR9XHJcdFx0XHJcdFx0LyogT3ZlcnJyaWRlIENvbHVtbnMgSWNvbiAqL1xyXHRcdC8qIEZpZ3VyZSBvdXQgYSBiZXR0ZXIgd2F5IHRvIGFzc2lnbiB0aGUgZm9udCBmYW1pbHkgKi9cclx0XHQuc3QtYmxvY2stY29udHJvbHMgLnN0LWJsb2NrLWNvbnRyb2xbZGF0YS10eXBlPVwiQ29sdW1uc1wiXSA+IHNwYW4ge1xyXHRcdFx0Zm9udC1mYW1pbHk6ICdTVC1Db2x1bW5zLUljb25zJyAhaW1wb3J0YW50O1xyXHRcdH1cclx0XHRcclx0XHRcclx0XHRcci8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXHIvKlx0XHRcdCAgICBTdXBwb3J0IFBhZ2VcdFx0ICAqL1xyLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cci5zdXBwb3J0LXNlY3Rpb25cdHtcclx0bWFyZ2luOiAxLjVlbSAwO1xyXHRwYWRkaW5nOiAxZW0gMDtccn1cclxyLmdpdGh1Yi1vY3RvY2F0IHtcclx0YmFja2dyb3VuZDogdXJsKCAnLi4vLi4vaW5jbHVkZXMvaW1hZ2VzL1N1cHBvcnRfUGFnZS9PY3RvY2F0LnBuZycgKTtcclx0YmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcclx0YmFja2dyb3VuZC1zaXplOiAxMDAlO1xyXHRiYWNrZ3JvdW5kLXBvc2l0aW9uOiBsZWZ0IHRvcDtcclx0d2lkdGg6IDUwcHg7XHJcdGhlaWdodDogNDVweDtcclx0ZGlzcGxheTogYmxvY2s7XHJcdGZsb2F0OiBsZWZ0O1xyXHRtYXJnaW4tdG9wOiAtNXB4O1xyfVx0XHRcclx0XHRcclx0XHIvKiogQnJlYWsgUG9pbnRzICoqL1xyLyogQWJvdXQgUGFnZSAqL1xyQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDk1cHgpIHtcclx0I3RlYW0tbWVtYmVyLWNvbnRhaW5lciAudGVhbS1tZW1iZXIge1xyXHRcdHdpZHRoOiAxMDAlO1xyXHR9XHJcdFxyfVxyLyogT3B0aW9ucyBQYWdlICovXHJAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA4NTBweCkge1xyXHRcclx0LyogSGlkZSBTZWxlY3RlZCBPcHRpb24gQXJyb3cgd2hlbiBpdCBkcm9wcyBiZWxvdyB0aGUgbWFpbiBjb250ZW50IGJveCAqL1xyXHQub3B0aW9uLW1lbnUtc2VsZWN0ZWQtYXJyb3cge1xyXHRcdGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcclx0fVxyXHRccn1cclxyLyogcHJvIHZlcnNpb24gbm90aWNlICovXHIucHJvLXZlcnNpb24tb25seS1ub3RpY2Uge1xyXHRjb2xvcjogcmdiKDIxNywgOTYsIDk2KTtccn1cclxyLyogVXBncmFkZSBFbGlwc2VzICovXHIudXBncmFkaW5nLWVsbGlwc2Utb25lIHtcclx0LW1zLWZpbHRlcjogXCJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0wKVwiO1xyXHRmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MCk7XHJcdC1tb3otb3BhY2l0eTogMDtcclx0LWtodG1sLW9wYWNpdHk6IDA7XHJcdG9wYWNpdHk6IDA7XHJcdC13ZWJraXQtYW5pbWF0aW9uOiBkb3QgMS4zcyBpbmZpbml0ZTtcclx0LXdlYmtpdC1hbmltYXRpb24tZGVsYXk6IDAuMHM7XHJcdGFuaW1hdGlvbjogZG90IDEuM3MgaW5maW5pdGU7XHJcdGFuaW1hdGlvbi1kZWxheTogMC4wcztccn1cci51cGdyYWRpbmctZWxsaXBzZS10d28ge1xyXHQtbXMtZmlsdGVyOiBcInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PTApXCI7XHJcdGZpbHRlcjogYWxwaGEob3BhY2l0eT0wKTtcclx0LW1vei1vcGFjaXR5OiAwO1xyXHQta2h0bWwtb3BhY2l0eTogMDtcclx0b3BhY2l0eTogMDtcclx0LXdlYmtpdC1hbmltYXRpb246IGRvdCAxLjNzIGluZmluaXRlO1xyXHQtd2Via2l0LWFuaW1hdGlvbi1kZWxheTogMC4ycztcclx0YW5pbWF0aW9uOiBkb3QgMS4zcyBpbmZpbml0ZTtcclx0YW5pbWF0aW9uLWRlbGF5OiAwLjJzO1xyfVxyLnVwZ3JhZGluZy1lbGxpcHNlLXRocmVlIHtcclx0LW1zLWZpbHRlcjogXCJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0wKVwiO1xyXHRmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MCk7XHJcdC1tb3otb3BhY2l0eTogMDtcclx0LWtodG1sLW9wYWNpdHk6IDA7XHJcdG9wYWNpdHk6IDA7XHJcdC13ZWJraXQtYW5pbWF0aW9uOiBkb3QgMS4zcyBpbmZpbml0ZTtcclx0LXdlYmtpdC1hbmltYXRpb24tZGVsYXk6IDAuM3M7XHJcdCBhbmltYXRpb246IGRvdCAxLjNzIGluZmluaXRlO1xyXHQgYW5pbWF0aW9uLWRlbGF5OiAwLjNzO1xyfVxyXHIvKiBBbmltYXRpb25zICovXHJALXdlYmtpdC1rZXlmcmFtZXMgZG90IHtcclx0ICAwJSB7IG9wYWNpdHk6IDA7IH1cclx0IDUwJSB7IG9wYWNpdHk6IDA7IH1cclx0MTAwJSB7IG9wYWNpdHk6IDE7IH1ccn1cckBrZXlmcmFtZXMgZG90IHtcclx0ICAwJSB7IG9wYWNpdHk6IDA7IH1cclx0IDUwJSB7IG9wYWNpdHk6IDA7IH1cclx0MTAwJSB7IG9wYWNpdHk6IDE7IH1ccn0iXX0= */
admin/css/yikes-inc-easy-mailchimp-extender-admin.min.css CHANGED
@@ -1,2 +1 @@
1
- #yikes-easy-mc-dashboard-widget-stats h3,.addon-image{text-align:center}.yikes-easy-mc-hidden{display:none}.shortcode-input-field{color:#333;background:rgba(216,216,216,.35)!important}.edit-form-field-container-span{display:block;margin:.5em 0}.no-forms-widget{margin:2em 0}.no-forms-found-icon{font-size:14px;line-height:1.4;width:14px;color:#e07d7d}.coming-soon-button{position:absolute}.coming-soon-button .dashicons{font-size:14px;line-height:1.8}.add-ons-about-text{margin-top:0}#add-ons{margin:3em 0}.addon-image{display:block}.no-mailchimp-lists-found{padding:25px 0 25px 25px}.add-new-subscriber-button{display:block;margin-top:2em}.add-new-subscriber-form-container{display:none;padding-top:1em}.add-new-subscriber-form-container h4{margin-top:0}#yikes-easy-mc-widget-stat-holder,.yikes-easy-mc-stats-table{margin-top:1em}#migration-buttons{display:inline-block;margin-bottom:.5em}#migration-buttons form:first-child{margin-right:10px}#migration-buttons form{float:left}#yikes_easy_mc_account_activity_widget h3 span,#yikes_easy_mc_list_stats_widget h3 span{background:url(../../includes/images/MailChimp_Assets/Freddie_original.png) 8px 4px/25px auto no-repeat;background-size:25px;display:block;height:30px;padding-left:3em;padding-top:5px}#yikes_easy_mc_account_activity_widget h3.hndle,#yikes_easy_mc_list_stats_widget .inside{padding:0}#yikes_easy_mc_list_stats_widget h3{padding:0;line-height:1.6em}.yikes-easy-mc-stats-table,.yikes-easy-mc-stats-table .yikes-easy-mc-table-stats-tr,.yikes-easy-mc-stats-table tbody{display:block;width:100%}.yikes-easy-mc-table-stats-tr td{display:inline-block;width:48%;text-align:center}.yikes-easy-mc-table-stats-tr td:hover{cursor:pointer}.yikes-easy-mc-table-stats-tr td:first-of-type{border-right:1px solid #ececec}.yikes-easy-mc-stats-table .yikes-easy-mc-table-stats-tr-first{border-bottom:1px solid #ececec;border-top:1px solid #ececec}.yikes-easy-mc-stats-table p.yikes-easy-mc-dashboard-stat{color:#00a0d2;font-weight:800;font-size:20px;margin-bottom:2px;margin-top:15px;line-height:1.2;max-height:80px}.yikes-easy-mc-stats-table p.yikes-easy-mc-stat-list-label{font-size:13px;margin-top:0;margin-bottom:15px;font-family:"Open Sans"}#yikes_easy_mc_account_activity_widget table th.row-title{padding-left:10px}#pre-defined-tag-interior-container{background:url(../../includes/images/tinyMCE/yikes-mailchimp-combo-faded.png) bottom right no-repeat #fff;background-size:40%}.qtip-default{background-color:transparent!important;border:transparent!important;z-index:9999999!important}.qtip-bootstrap{padding:10px!important;z-index:9999999!important;font-size:12px}.search-interest-group-preloader{display:block;margin:8px 0 0 55px;width:12px}.no-interest-groupings-enabled-message{display:block;margin-top:12px!important;width:100%}.tooltip-integration-banner{max-width:100%;margin:0 0 .25em}.tooltiptext.qtip-bootstrap{font-size:12px}.tooltip-title{margin:0}.dashicons-editor-help:hover{cursor:pointer}body.easy-forms_page_yikes-inc-easy-mailchimp-settings .interest-group-section{display:block;width:100%;margin:1.5em 0}body.easy-forms_page_yikes-inc-easy-mailchimp-settings .interest-group-section .interest-group-section-title{display:block;width:100%;margin:.5em 0;text-decoration:underline}.github-avatar-url,body.admin_page_yikes-mailchimp-welcome #kb-container .knowledge-base-listing li a,body.easy-forms_page_yikes-inc-easy-mailchimp-support .knowledge-base-articles .knowledge-base-listing li a{text-decoration:none}body.easy-forms_page_yikes-inc-easy-mailchimp-settings .interest-group-section input{margin-right:0}body.easy-forms_page_yikes-inc-easy-mailchimp-settings .interest-group-section label{margin-right:10px}i.mce-ico.mce-i-yks_mc_tinymce_button_key{background:url(../../includes/images/tinyMCE/Freddie_wink.png) no-repeat;background-size:18px;background-position-y:1px}#yikes_mailchimp_tinyMCE_modal-title{padding-left:42px;background:url(../../includes/images/MailChimp_Assets/Freddie_original.png) left no-repeat;background-size:25px;background-position-x:10px}#yikes_mailchimp_tinyMCE_modal{background:url(../../includes/images/tinyMCE/yikes-mailchimp-combo-faded.png) bottom left no-repeat #fff;background-size:40%;background-position-x:10px;background-position-y:95%}#yikes_mailchimp_tinyMCE_modal .mce-foot{border-top:none!important;background:0 0}[id*="_yikes_easy_mc_widget"]>div.widget-top>div.widget-title>h4{background:url(../../includes/images/MailChimp_Assets/Freddie_original.png) 2% 50%/25px auto no-repeat #FAFAFA;padding-left:40px}#review-yikes-easy-mailchimp-notice #yikes-mailchimp-logo,#yikes-mailchimp-logo{font-size:14px;background:url(../../includes/images/Welcome_Page/yikes-mailchimp-welcome-logo.png) no-repeat;text-align:center}#review-yikes-easy-mailchimp-notice #yikes-mailchimp-logo{background-size:60px;float:left;height:80px;width:80px}.yikes-easy-mc-feature-image-left{float:left;margin-right:30px;margin-left:0!important}.need-support-icon{line-height:1.5}ul.support-option-list{display:inline-block;width:100%}.support-option{float:left}.support-option-second{margin-left:10px}#yikes-mailchimp-logo.support-page{float:left;width:80pt}.yikes-easy-mc-whats-new-section-image{float:none;width:100%;margin-left:0!important}.welcome-page-tabs{margin-top:2em!important}.welcome-page-about-wrap .about-text,.welcome-page-about-wrap h2.welcome-title{margin-left:115px}.whats-new-wrap img.yikes-easy-mc-whats-new-section-image{margin-top:10px}.whats-new-wrap .feature-section:nth-child(1) img{float:left;width:500px;margin-left:0!important;margin-right:30px}.whats-new-wrap .feature-section:nth-child(3) img{float:right;width:250px;margin-right:0!important;margin-left:30px}.whats-new-wrap .feature-section:nth-child(4) img{margin-left:0!important}#yikes-mailchimp-logo{height:132px;width:132px}.about-wrap #yikes-mailchimp-logo{position:absolute;top:0;left:0}.edd-welcome-screenshots{float:right;margin-left:10px!important}.about-wrap .feature-section{margin-top:20px}.yikes-easy-mc-feature-image{float:right;margin-left:30px!important}#credit-container,#translators-container{display:inline-block;width:100%}#credit-container h2,#translators-container h2{margin:0 0 .5em 1em}#translators-container{margin-top:5em}#translators-container .translation-language{color:#333}#credit-container .team-member,#translators-container .translator{margin:1em 5% 1em 0;text-align:center}#credit-container .team-member img,#translators-container .translator img{border-radius:50%}.about-wrap div.error,.about-wrap div.updated{display:block!important;margin-left:115px!important}.github-avatar-image{width:100px}.github-avatar-url{display:inline-block;width:20%}github-avatar-url:focus{outline:0}body.admin_page_yikes-mailchimp-edit-form div.show-some-love-container img,div.show-some-love-container img.customizer-upsell-banner{max-width:100%}body.admin_page_yikes-mailchimp-edit-form div.show-some-love-container p:first-child{font-style:italic}body.admin_page_yikes-mailchimp-edit-form div.show-some-love-container hr{margin:1em 0}body.admin_page_yikes-mailchimp-welcome .nav-tab-wrapper .nav-tab .dashicons{font-size:17px;line-height:1.5}body.admin_page_yikes-mailchimp-welcome #kb-container,body.easy-forms_page_yikes-inc-easy-mailchimp-support .knowledge-base-articles{display:inline-block;margin-top:1em}body.admin_page_yikes-mailchimp-welcome #kb-container h1{font-size:20px;margin-top:-1em}body.admin_page_yikes-mailchimp-welcome #kb-container .knowledge-base-listing,body.easy-forms_page_yikes-inc-easy-mailchimp-support .knowledge-base-articles .knowledge-base-listing{width:45%;margin-right:2%;float:left;min-height:260px}body.admin_page_yikes-mailchimp-welcome #kb-container .knowledge-base-listing li,body.easy-forms_page_yikes-inc-easy-mailchimp-support .knowledge-base-articles .knowledge-base-listing li{margin:12px 0;text-decoration:none}body.admin_page_yikes-mailchimp-welcome #kb-container .knowledge-base-listing li:before,body.easy-forms_page_yikes-inc-easy-mailchimp-support .knowledge-base-articles .knowledge-base-listing li:before{font-family:dashicons;content:"\f123";vertical-align:middle;display:block;float:left;margin:0 5px 5px 0}body.admin_page_yikes-mailchimp-welcome #kb-container .knowledge-base-listing li.list-title,body.easy-forms_page_yikes-inc-easy-mailchimp-support .knowledge-base-articles .knowledge-base-listing li.list-title{font-size:17px;font-weight:200;text-decoration:underline}body.admin_page_yikes-mailchimp-welcome #kb-container .knowledge-base-listing li.list-title:before,body.easy-forms_page_yikes-inc-easy-mailchimp-support .knowledge-base-articles .knowledge-base-listing li.list-title:before{content:"";padding-left:12px}body.admin_page_yikes-mailchimp-welcome .new-feature-list{list-style:none;line-height:middle}body.admin_page_yikes-mailchimp-welcome .new-feature-list li{margin-bottom:10px}body.admin_page_yikes-mailchimp-welcome .new-feature-list li:before{font-family:dashicons;content:"\f139";padding-right:2px;font-size:20px;vertical-align:middle}#review-yikes-easy-mailchimp-notice .button-container{display:block;width:100%;margin:.75em 0 1.5em}#review-yikes-easy-mailchimp-notice .button-container .dashicons{font-size:14px;line-height:1.9;margin-left:-4px}#review-yikes-easy-mailchimp-notice .button-container .dashicons-star-filled{color:#E6B800}#review-yikes-easy-mailchimp-notice .button-container .dashicons-upload{color:#6E8841}#review-yikes-easy-mailchimp-notice .button-container .dashicons-no-alt{color:#dc3a3a;line-height:2}body.easy-mailchimp_page_yikes-inc-easy-mailchimp-settings .dashicons-no-alt{color:#dc3a3a}#review-yikes-easy-mailchimp-notice .button-container a{margin-right:10px}#review-yikes-easy-mailchimp-notice{border-left:4px solid #00a0d2;background:#fefefe;padding:10px 12px 1px;box-shadow:0 1px 1px 0 rgba(0,0,0,.1);-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);margin:15px 25px 20px 5px}input.readonly,input[readonly],textarea.readonly,textarea[readonly]{background:#D8D8D8}.dashicons.yikes-love{color:pink}.field-description-input{resize:vertical;max-height:100px}.yikes-easy-mc-postbox h3{background:#00a0d2;font-weight:800;color:#fff}.yikes-easy-mc-postbox h3.bg-transparent{color:#333;font-weight:400;background:0 0}.yikes-mc-warning-message{padding-left:15px;margin-top:0;padding-top:10px;color:#da6e6e}.error-message-container label[for=yikes-easy-mc-success-message],.error-message-container label[for=yikes-easy-mc-general-error-message],.error-message-container label[for=yikes-easy-mc-invalid-email-message],.error-message-container label[for=yikes-easy-mc-user-subscribed-message]{padding:.5em 1em;background:rgba(241,241,241,.75);box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;margin:0}body.admin_page_yikes-mailchimp-edit-form #error-container{padding:2px 1em;background:rgba(241,241,241,.75);box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;margin:0;color:#F56060}.error-message-container label[for=yikes-easy-mc-user-subscribed-message]{padding-bottom:1em;margin-bottom:.5em}.error-message-container label,.form-settings-container label{display:block;margin:1em 0}.yikes-easy-forms-sidebar .yikes-mc-settings-expansion-section{padding:.5em .75em;-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.yikes-mc-settings-expansion-section{display:none;background:rgba(241,241,241,.75)}.expansion-section-title{background:#fff}.expansion-section-title.settings-sidebar,.form-builder-section-title{text-decoration:none;display:block;border:1px solid rgba(177,177,177,.71);color:#333;padding:5px;margin:.5em 0 0}.expansion-section-title.settings-sidebar .dashicons,.form-builder-section-title .dashicons{content:"\f132";font-family:dashicons;font-size:15px;line-height:1.5}span.easy-mailchimp-add-on-valid-license-container{color:#44ba44;display:block;margin-top:1em}.easy-mailchimp-add-on-invalid-license-container{color:rgba(227,107,107,.86);display:block;margin-top:1em}.options-sidebar .yikes-easy-mc-postbox{overflow:visible}.options-sidebar .inside{padding:0 20px 12px}.yikes-easy-mc-about-text{margin-top:0}.add-on-settings-divider{margin:1em 0!important}#yks-mailchimp-double-optin-message,#yks-mailchimp-single-optin-message,.settings-page-input{width:50%}#yks-mailchimp-double-optin-message,#yks-mailchimp-single-optin-message{min-height:75px;max-height:200px;resize:vertical}#addon-settings-nav li a,#settings-nav li a{color:#333;text-decoration:none!important;transition:color .15s ease-out;-moz-transition:color .15s ease-out;-webkit-transition:color .15s ease-out;-o-transition:color .15s ease-out}#addon-settings-nav li a:hover,#settings-nav li a:hover,.option-menu-selected-arrow+a{color:#00a0d2!important}#addon-settings-nav{margin-bottom:0;margin-top:5px}.option-menu-selected-arrow{width:0;height:0;border-top:10px solid transparent;border-bottom:10px solid transparent;border-left:10px solid #a0a5aa;position:absolute;left:-.1em}label[for=yikes-mailchimp-debug-status]{display:inline-block;margin-bottom:1em;line-height:2.25}#yikes-mailchimp-debug-status{float:left;margin-top:.5em}label[for=yikes-mc-recaptcha-setting],label[for=yikes-mc-recaptcha-api-key]{display:block;margin-bottom:1em}.recaptcha-preview-link,input.recaptcha-setting-checkbox{display:block;margin-top:.5em}.recaptcha-preview-container{width:100%;display:none;margin:1em 0}#premium-support-form,.support-page-button,.support-page-logo{display:block;width:100%}.wrap #col-left,.wrap #col-right{width:49%}@media (max-width:800px){.wrap #col-left,.wrap #col-right{width:100%}}.support-page-logo{opacity:.7;max-width:100%}.support-page-button{min-height:40px;font-weight:700;text-align:center;line-height:3!important;margin-top:1em!important}.support-page-wordpress-font{font-size:1.3em;margin-right:13px}h2.premium-support-title{margin:1em 0 .5em}#premium-support-form input,#premium-support-form select{display:block;width:100%;min-width:200px;margin:.5em 0}#premium-support-form label{font-weight:800}#premium-support-form label input,#premium-support-form label select{font-weight:500}#premium-support-form p{font-weight:300;display:block;margin-bottom:1em}#wp-support-content-wrap{min-height:150px;width:100%}.support-form-hidden{display:none!important}#yikes-mailchimp-error-log .row-title{font-weight:400}.create-error-log-help:hover{cursor:pointer}.error-log-tr td{display:table;margin-bottom:1em;margin-top:.5em}p.error-log-missing-file em,p.to-start-logging-errors-notice em{margin:10px 0}.export-custom-forms-list{display:none;margin:1em 0 2em}.export-custom-forms-list p{margin-top:0}.list-rating-star{color:#E6B800}#chimp-chatter{text-align:center}#chimp-chatter .chimp-chatter-container{margin:1em .2em;background:#F8F8F8;border-radius:10px;float:left;height:220px;padding:10px;width:44%}.chimp-chatter-mailchimp-logo{width:100%;display:block;margin:0 auto}.chimp-chatter-sidebar h2.account-status{text-align:center}.mailchimp-affiliate-link{color:#333;display:none}.mailchimp-avatar{display:block;margin:0 auto;box-shadow:3px 3px 10px 0 rgba(214,214,214,.75)}#yikes_easy_mc_toolbar_links li a:focus,.merge-tag-text{box-shadow:none}.chimpchatter-button-container{clear:both;display:block}.chimp-chatter-postbox{float:left;width:49%;margin-right:1%}.circle-account-active,.circle-account-inactive{display:inline-block;vertical-align:middle;height:15px;width:15px;border-radius:50%}#account-details .chimp-chatter-postbox.even{margin-right:0}.circle-account-inactive{margin-top:-3px;margin-right:5px;background:rgba(250,138,138,.79)}.chatter-type{font-weight:600;font-family:"open sans";font-size:14px;margin:5px 5px 0}.chatter-message{margin:2px 2px 15px!important}.circle-account-active{margin-top:-3px;margin-right:5px;background:rgba(128,214,128,.77)}#account-details .mailchimp-avatar{width:120px;border-radius:10%;margin-top:.5em}.chimp-chatter-positive{border-left:4px solid #9ddf9d}.chimp-chatter-negative{border-left:4px solid #FBA2A2}.chimp-chatter-neutral{border-left:4px solid #b1b1b1}#import-list-to-site{margin-top:10px}#import-list-to-site .input-field{display:block;width:100%;margin-top:5px;margin-bottom:5px}.sidebar-container,.star-container{margin-top:5px;margin-bottom:1.5em}#import-list-to-site .form-description{resize:vertical;max-height:65px}#import-list-to-site .description{margin-top:5px}.star-container a{text-decoration:none}.star-container .dashicons-star-filled{font-size:1.75em}.sidebar-footer-text{margin:15px 0!important;text-align:center}.sidebar-twitter-icon{text-decoration:none;color:#55ACEE}.field-doesnt-exist-notice{position:absolute;margin-left:5px;width:18px}.field-type-text{float:right}.type-container{margin:0}.form-field-container{margin-top:0;margin-bottom:0}.field-no-longer-exists-warning{position:absolute;margin-left:5px;width:18px}.form-field-container td input[type=checkbox],.form-field-container td input[type=radio]{margin:0 5px}.form-field-container td input[type=checkbox]:first-child,.form-field-container td input[type=radio]:first-child{margin-left:0!important}.merge-tag-text{background:0 0;border:none}.pre-defined-tag-link{font-size:11px}.toggle-container{font-size:small;float:right}#pre-defined-tag-container{display:none}#pre-defined-tag-container h3{margin-bottom:0}#pre-defined-tag-container .tooltop-tag .dashicons-editor-help{font-size:13px;line-height:1.5}.no-fields-assigned-notice{margin:4em 0 2.25em;padding-bottom:6em;width:100%;text-align:center;background:url(../../includes/images/no-form-fields-assigned-arrow.jpg) bottom center no-repeat;background-size:105px}.yikes-easy-mc-widget-preloader{position:absolute;left:48%;margin-top:-96px}.yikes-dashboard-widget-section{padding:0 12px 12px}.select-list-title{padding-left:0}.yikes-dashboard-widget-section .description{margin:.5em 0 0}. error-descripion{padding-top:.5em}.yikes-mc-freddie-logo{float:left;margin-right:10px}.mv_ig_list{width:94%;margin-bottom:8px!important;border:none!important;background:0 0!important}.mv_ig_list .list-container{position:absolute}.mv_ig_list a{width:48%;padding:5px 0!important;text-align:center;margin:0}.mv_ig_list a:first-child{margin-right:0}.mv_ig_list a:last-child{float:right}.mv_ig_list .nav-tab{border:1px solid #ccc}.mv_ig_list .nav-tab-active{color:#fff;font-weight:700;background:#00a0d2}.mv_ig_list .arrow-down{position:absolute;margin-top:21px;margin-left:50px;width:0;height:0;border-left:12px solid transparent;border-right:12px solid transparent;border-top:12px solid #00a0d2}#container-container{display:inline-block;width:521px}#container-container .list-container{float:left;width:240px;position:relative}#container-container .list-container:last-child{margin-left:2em}#yikes_easy_mc_toolbar{margin-top:-.75em}#yikes_easy_mc_toolbar_links{display:inline-block;width:100%;margin:0;padding:10px 0}#yikes_easy_mc_toolbar_links li{float:left;margin:0 .5em}#yikes_easy_mc_toolbar_links li a{text-decoration:none;display:inline-block}#yikes_easy_mc_toolbar_links li a.selected_hidden_setting{color:#333;margin-bottom:3px}#yikes_easy_mc_toolbar_links li .selected_setting_triangle{width:0;height:0;border-left:13px solid transparent;border-right:13px solid transparent;border-top:13px solid rgba(206,206,206,1);margin:0 auto}.checkbox-settings-list-dropdown,.optin-checkbox-label-input{width:250px;display:block}#yikes_easy_mc_toolbar_links li a.form-builder:before{content:"\f116";font-family:dashicons}#yikes_easy_mc_toolbar_links li a.form-customizer:before{content:"\f100";font-family:dashicons}#yikes_easy_mc_toolbar_links li a.error-messages:before{content:"\f117";font-family:dashicons}#yikes_easy_mc_toolbar_links li a.form-settings:before{content:"\f111";font-family:dashicons}#checkbox-settings-form .dashicons-editor-help{font-size:15px;line-height:1.6}.no-lists-setup-notice{padding:.5em 0}.yikes-form-id-number{width:55px}span[title=Impressions]:hover,span[title=Submissions]:hover,span[title="Conversion Rate"]:hover{display:block;cursor:pointer}.form-id-container{padding:1px 8px;border-radius:5px;background:#49a9ec;font-weight:700;color:#fff}.manage-form-admin-notice{margin-top:1.75em!important}.remove-notification,.yikes-mc-settings-expansion-section a.remove-field,a.yikes-delete-mailchimp-form,a.yikes-delete-subscriber{color:#d96060!important}.yikes-delete-mailchimp-form{margin-top:6px}#postbox-container-1 .yikes-delete-mailchimp-form{float:right}.form-buttons-container{display:block;padding:11px 10px}.forms-buttons-container input[type=submit]{margin:0 0 .5em}.update-form-spinner{position:absolute;left:0;right:0;margin:0 auto;bottom:13px}.yikes-mc-shortcode-input{text-align:center;width:100%;color:#333}.hidden-class{display:none!important}.stat-container{width:10%;max-width:75px}.no-current-subscriber-notice em,.no-mailchimp-forms-found em{padding:25px 0 25px 25px}.column-columnname span.stats{display:block;width:100%;text-align:center}.column-columnname span.stats span{display:inline-block;width:20%}.column-columnname span.stats span:hover{cursor:pointer}#available-fields li,#available-interest-groups li{text-decoration:none;display:block;border:1px solid rgba(177,177,177,.71);color:#333;padding:5px;margin:.5em 0}#available-fields li.not-available,#available-interest-groups li.not-available{opacity:.6!important}#available-fields li.field-to-add-to-form,#available-interest-groups li.group-to-add-to-form{background:rgba(46,162,204,.25)}.add-field-to-editor .add-to-form-builder-arrow,.button-secondary .add-to-form-builder-arrow{width:15px;font-size:15px;line-height:1.8}.clear-form-fields{background:#e14d43;border-color:#d02c21;color:#fff;box-shadow:inset 0 1px 0 #ec8b85,0 1px 0 rgba(0,0,0,.15);text-decoration:none;display:inline-block;height:28px;padding:0 10px 1px;border-width:1px;-webkit-appearance:none;border-radius:3px;white-space:nowrap;font-size:13px;line-height:26px;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;float:right;margin:0 11px 10px 0}.clear-form-fields:active,.clear-form-fields:focus,.clear-form-fields:hover{background:#dd382d;border-color:#ba281e;color:#fff;box-shadow:inset 0 1px 0 #e8776f}.yikes-mc-view-list-breadcrumbs{padding:.8em;border:1px solid #D8D8D8;background:#ECECEC;margin:1.5em 0 .8em}.yikes-mc-member-rating-star{color:#daa520}#yikes-mc-subscriber-card-wrapper{background:#fefefe;min-height:200px;display:inline-block;box-shadow:0 1px 1px rgba(0,0,0,.04);webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);border:1px solid #e5e5e5;padding:15px 20px;width:500px;float:left}#yikes-mc-subscriber-card-wrapper .subscriber-optin-ip{display:inline-block;margin:1em 0 0;font-style:italic}.view-user-data-wrap #customer-tab-wrapper-list{float:left;background:#fefefe;margin-top:0;padding:12px;margin-left:-1px;border-right:1px solid #e5e5e5;border-top:1px solid #e5e5e5;border-bottom:1px solid #e5e5e5}.view-user-data-wrap #customer-tab-wrapper-list .dashicons{font-size:23px;height:23px;width:23px;margin:3px 0}.view-user-data-wrap #customer-tab-wrapper-list li.inactive{color:rgba(51,51,51,.31);transition:color ease-out .1s}.view-user-data-wrap #customer-tab-wrapper-list li.active,.view-user-data-wrap #customer-tab-wrapper-list li.inactive:hover{color:rgba(51,51,51,1)}#yikes-mc-subscriber-card-wrapper .yikes-mc-card-top .member-star-rating-container,#yikes-mc-subscriber-card-wrapper .yikes-mc-card-top h2,#yikes-mc-subscriber-card-wrapper .yikes-mc-card-top img{float:left}#yikes-mc-subscriber-card-wrapper #delete-mailchimp-subscriber{display:block;margin:0 auto}#yikes-mc-subscriber-card-wrapper .yikes-mc-card-top img{border-radius:3px}#yikes-mc-subscriber-card-wrapper .merge-variable-section li{display:inline-block;list-style:none;float:left;width:50%;min-height:65px;border-bottom:1px dotted #ddd}#yikes-mc-subscriber-card-wrapper .merge-variable-section li p{margin:0 0 1em}#yikes-mc-subscriber-card-wrapper .yikes-mc-card-top h2{max-width:370px;width:75%;padding:0}#yikes-mc-subscriber-card-wrapper .member-star-rating-container{display:block;margin:.5em 0 .5em 10px}#yikes-mc-subscriber-card-wrapper h2{margin-left:10px;margin-top:0;padding-top:0}#yikes-mc-subscriber-card-wrapper .yikes-mc-card-body,#yikes-mc-subscriber-card-wrapper .yikes-mc-card-top{display:inline-block;width:100%}.member-location-data,.member-subscription-date{width:70%;max-width:370px;display:block;float:left}#yikes-mc-subscriber-card-wrapper .yikes-mc-card-body h4{margin-top:0;margin-left:5px}.yikes-mc-subscriber-hr{margin:1.5em 0}.member-subscription-date{margin:.5em 0 .5em 10px}.member-location-data{margin:.25em 0 .25em 10px}.addon-required-link{color:#333;opacity:.5}.view-list-sidebar-input{color:#333}.interest-group-ul,.merge-variable-ul,.segment-ul{padding-left:15px;font-size:14px}.interest-group-ul li .dashicons,.merge-variable-ul li .dashicons{line-height:1.8;font-size:9px}a.button-primary.edit-fields-button{margin:0 0 10px 15px}.interest-group-count,.merge-variable-count,.segment-group-count{text-decoration:underline;margin-bottom:.75em;padding-left:7px}body.admin_page_yikes-mailchimp-edit-form .ui-datepicker .ui-datepicker-calendar td a,body.admin_page_yikes-mailchimp-edit-form .ui-datepicker a,body.admin_page_yikes-mailchimp-edit-form .ui-datepicker a:hover{text-decoration:none}.interest-group-title{padding-left:5px}.edit-segments-button{margin:0 0 10px 15px}.edit-segment-description{padding:0 0 10px 15px}#credit-container{margin-top:1.5em}.yikes-easy-mailchimp-custom-content-icon{font-size:15px;line-height:1}.custom-field-section{display:block;margin:1em 0}#associated-list{width:100%;margin-top:5px}#redirect-user-to-selection{width:100%}#edit-yikes-mc-form label h3{margin-left:0;padding-left:0}#available-fields .field-required{color:#d96060!important}body.admin_page_yikes-mailchimp-edit-form #poststuff h2{padding:8px 12px;margin-top:0}.edit-form-form-description{width:100%;resize:vertical;min-height:65px;max-height:100px}.edit-form-title{padding-left:12px!important}#edit-form-description{padding:0 12px;margin:1em 0}.yikes-easy-mc-postbox{overflow:hidden}.no-interest-groups-found-message{opacity:.35}.upgrading-ellipse-one,.upgrading-ellipse-two{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";-moz-opacity:0;-webkit-animation:dot 1.3s infinite}#interest-groups-container .description,#merge-variables-container .description{padding-top:.5em}.inside-section-1{margin-top:0;margin-bottom:1.5em}.inside-section-2{margin-top:0;margin-bottom:2em}.form-field-container-span{display:block;margin:.5em 0}#style-list ul li{display:block;width:100%;margin:1em 0}.form-style-adjustment,.wp-picker-container{display:block!important;width:100%;margin:.5em 0}.dynamic-email-tag{display:inline-block;margin-right:5px}.dynamic-tag-description td{padding-top:0}#create-new-notification-button{margin-top:1em}.file-container{display:none}.yikes-mailchimp-file-field input[name*="custom-field[incentive-attachment]"]{margin-bottom:.5em}.yikes-mailchimp-file-field input[name*="custom-field[incentive-attachment]"]+.button-secondary{margin-left:4px}input#upload-btn[data-attr-position="1"]{margin-left:0}.remove-file-button{background:url(../partials/helpers/fields/img/icon-delete.png);height:16px;position:absolute;text-indent:-99999px;width:16px}a.add-new-incentive-attachment{display:block;width:40px;margin-right:100%!important;margin-top:.5em!important}a.add-new-incentive-attachment .dashicons{font-size:15px;line-height:1.8}.form-builder-placeholder{background:rgba(206,206,206,.2);height:30px}.admin_page_yikes-mailchimp-edit-form #form-settings .section-title{font-size:1em;border-bottom:1px solid rgba(187,187,187,.29);display:block;width:100%;padding-bottom:6px;margin-bottom:.5em;margin-top:1.5em}.admin_page_yikes-mailchimp-edit-form #form-settings .section-interior label,.admin_page_yikes-mailchimp-edit-form #form-settings .section-title.first{margin-top:0}.admin_page_yikes-mailchimp-edit-form #form-settings .section-interior{display:inline-block;width:100%;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;background:rgba(241,241,241,.75);padding:1em}label.login-restriction-center{display:block;width:100%}.admin_page_yikes-mailchimp-edit-form #form-settings .section-interior .date-restirction-section{display:inline-block}.admin_page_yikes-mailchimp-edit-form #form-settings .section-interior .date-restirction-section p.description.error{color:#F56060}.admin_page_yikes-mailchimp-edit-form #form-settings .section-interior .date-restirction-section label{float:left;margin-right:.5em;margin-top:0;margin-bottom:0}.admin_page_yikes-mailchimp-edit-form #form-settings .section-interior .nested-child .yikes-easy-mc-form-restriction-expired-message,.admin_page_yikes-mailchimp-edit-form #form-settings .section-interior .nested-child .yikes-easy-mc-form-restriction-login-message,.admin_page_yikes-mailchimp-edit-form #form-settings .section-interior .nested-child .yikes-easy-mc-form-restriction-pending-message{display:block;width:100%;min-height:50px}.admin_page_yikes-mailchimp-edit-form #form-settings .section-interior .nested-child{float:left;padding-left:2%;width:98%;border-left:1px dashed #BDBDBD;border-spacing:2px;margin:.5em 0 1em}.admin_page_yikes-mailchimp-edit-form #form-settings .section-interior .nested-child .yikes-easy-mc-submit-button-text{margin:0}.admin_page_yikes-mailchimp-edit-form #form-settings .section-interior .date-restirction-section{margin-bottom:0}.admin_page_yikes-mailchimp-edit-form #form-settings .section-interior .date-restirction-section.last{margin-bottom:.75em}.admin_page_yikes-mailchimp-edit-form #form-settings .section-interior .nested-child.hidden{display:none}.admin_page_yikes-mailchimp-edit-form #form-settings .section-interior .description+label{margin-top:1em;float:left;width:100%}.admin_page_yikes-mailchimp-edit-form #form-settings .section-interior label.inline-form-label{margin-bottom:0;margin-top:0}.admin_page_yikes-mailchimp-edit-form #form-settings .section-interior .description{display:block;width:100%;float:left}.admin_page_yikes-mailchimp-edit-form #form-settings .nested-child strong:first-child,.admin_page_yikes-mailchimp-edit-form #form-settings .section-interior strong:first-child{display:block;width:100%}.admin_page_yikes-mailchimp-edit-form #form-settings .inline-form-label{float:left;margin-right:10px}body.admin_page_yikes-mailchimp-edit-form .ui-timepicker-wrapper{overflow-y:auto;height:150px;width:170px;background:#fff;border:1px solid #ddd;box-shadow:0 5px 10px rgba(0,0,0,.2);outline:0;z-index:10001;margin:0}body.admin_page_yikes-mailchimp-edit-form .ui-timepicker-wrapper.ui-timepicker-with-duration{width:13em}body.admin_page_yikes-mailchimp-edit-form .ui-timepicker-wrapper.ui-timepicker-with-duration.ui-timepicker-step-30,body.admin_page_yikes-mailchimp-edit-form .ui-timepicker-wrapper.ui-timepicker-with-duration.ui-timepicker-step-60{width:11em}body.admin_page_yikes-mailchimp-edit-form .ui-timepicker-list{margin:0;padding:0;list-style:none}body.admin_page_yikes-mailchimp-edit-form .ui-timepicker-duration{margin-left:5px;color:#888}body.admin_page_yikes-mailchimp-edit-form .ui-timepicker-list:hover .ui-timepicker-duration{color:#888}body.admin_page_yikes-mailchimp-edit-form .ui-timepicker-list li{padding:3px 0 3px 5px;cursor:pointer;white-space:nowrap;color:#000;list-style:none;margin:0}body.admin_page_yikes-mailchimp-edit-form .ui-timepicker-list:hover .ui-timepicker-selected{background:#fff;color:#000}body.admin_page_yikes-mailchimp-edit-form .ui-timepicker-list .ui-timepicker-selected:hover,body.admin_page_yikes-mailchimp-edit-form .ui-timepicker-list li:hover,body.admin_page_yikes-mailchimp-edit-form li.ui-timepicker-selected{background:#1980EC;color:#fff}body.admin_page_yikes-mailchimp-edit-form .ui-timepicker-list li:hover .ui-timepicker-duration,body.admin_page_yikes-mailchimp-edit-form li.ui-timepicker-selected .ui-timepicker-duration{color:#ccc}body.admin_page_yikes-mailchimp-edit-form .ui-timepicker-list li.ui-timepicker-disabled,body.admin_page_yikes-mailchimp-edit-form .ui-timepicker-list li.ui-timepicker-disabled:hover,body.admin_page_yikes-mailchimp-edit-form .ui-timepicker-list li.ui-timepicker-selected.ui-timepicker-disabled{color:#888;cursor:default}body.admin_page_yikes-mailchimp-edit-form .ui-timepicker-list li.ui-timepicker-disabled:hover,body.admin_page_yikes-mailchimp-edit-form .ui-timepicker-list li.ui-timepicker-selected.ui-timepicker-disabled{background:#f2f2f2}body.admin_page_yikes-mailchimp-edit-form .ui-datepicker{background-color:#fff;border:1px solid #66AFE9;border-radius:4px;box-shadow:0 0 8px rgba(102,175,233,.6);display:none;margin-top:4px;padding:10px;width:240px}body.admin_page_yikes-mailchimp-edit-form .ui-datepicker a:hover,body.admin_page_yikes-mailchimp-edit-form .ui-datepicker td:hover a{color:#2A6496;transition:color .1s ease-in-out}body.admin_page_yikes-mailchimp-edit-form .ui-datepicker .ui-datepicker-header{margin-bottom:4px;text-align:center}body.admin_page_yikes-mailchimp-edit-form .ui-datepicker .ui-datepicker-title{font-weight:700}body.admin_page_yikes-mailchimp-edit-form .ui-datepicker .ui-datepicker-next,body.admin_page_yikes-mailchimp-edit-form .ui-datepicker .ui-datepicker-prev{cursor:default;font-family:'Glyphicons Halflings';-webkit-font-smoothing:antialiased;font-style:normal;font-weight:400;height:20px;line-height:1;margin-top:2px;width:30px}body.admin_page_yikes-mailchimp-edit-form .ui-datepicker .ui-datepicker-prev{float:left;text-align:left}body.admin_page_yikes-mailchimp-edit-form .ui-datepicker .ui-datepicker-next{float:right;text-align:right}body.admin_page_yikes-mailchimp-edit-form .ui-datepicker .ui-datepicker-prev:before{content:"\f141";font-family:dashicons}body.admin_page_yikes-mailchimp-edit-form .ui-datepicker .ui-datepicker-next:before{content:"\f139";font-family:dashicons}body.admin_page_yikes-mailchimp-edit-form .ui-datepicker-next:hover,body.admin_page_yikes-mailchimp-edit-form .ui-datepicker-prev:hover{cursor:pointer!important}body.admin_page_yikes-mailchimp-edit-form .ui-datepicker-close{display:none}body.admin_page_yikes-mailchimp-edit-form .ui-datepicker-current{color:#555!important;border-color:#ccc!important;background:#f7f7f7!important;box-shadow:0 1px 0 #ccc!important;vertical-align:top!important;display:inline-block;text-decoration:none;font-size:13px;line-height:26px;height:28px;padding:0 10px 1px;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;border-radius:3px;white-space:nowrap;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;margin-top:10px}body.admin_page_yikes-mailchimp-edit-form .ui-datepicker .ui-datepicker-current-day a,body.admin_page_yikes-mailchimp-edit-form .ui-datepicker .ui-datepicker-today a{color:#fff}body.admin_page_yikes-mailchimp-edit-form .ui-datepicker .ui-icon{display:none}body.admin_page_yikes-mailchimp-edit-form .ui-datepicker .ui-datepicker-calendar{table-layout:fixed;width:100%}body.admin_page_yikes-mailchimp-edit-form .ui-datepicker .ui-datepicker-calendar td,body.admin_page_yikes-mailchimp-edit-form .ui-datepicker .ui-datepicker-calendar th{text-align:center;padding:4px 0}body.admin_page_yikes-mailchimp-edit-form .ui-datepicker .ui-datepicker-calendar td{border-radius:4px;transition:background-color .1s ease-in-out,color .1s ease-in-out}body.admin_page_yikes-mailchimp-edit-form .ui-datepicker .ui-datepicker-calendar td:hover{background-color:#EBEBEB;cursor:pointer}body.admin_page_yikes-mailchimp-edit-form .ui-datepicker .ui-datepicker-today{background-color:rgba(66,137,204,.65)}body.admin_page_yikes-mailchimp-edit-form .ui-datepicker .ui-datepicker-current-day{background-color:#4289cc}body.admin_page_yikes-mailchimp-edit-form .ui-datepicker .ui-datepicker-calendar .ui-datepicker-unselectable:hover{background-color:#fff;cursor:default}.custom-radio-holder{display:inline-block;width:100%;margin:.5em 0}.custom-radio-label{display:block;float:left;margin:0 5px}.custom-radio-label:first-child{margin-left:0!important}.custom-radio-label input[type=radio]{margin-right:0!important}.custom-select-field{display:block;width:100%;margin:.5em 0}#available-widgets [class*=yikes_easy] .widget-title:before{content:""!important;background:url(../../includes/images/MailChimp_Assets/Freddie_original.png) no-repeat #FAFAFA;background-size:contain}body.wp-customizer #available-widgets [id*="_yikes_easy_mc_widget"]>div.widget-top>div.widget-title>h4{background:0 0!important}#connection-container{float:right;color:#fff;padding:.25em .75em .25em .25em;margin-top:-4px}#connection-container.api-connected{background:#44ba44}#connection-container.api-not-connected{background:#b5b5b5}.yikes-mc-api-connected,.yikes-mc-api-not-connected{line-height:1}.show-some-love-container{transition:max-height .75s}#review-yikes-easy-mc{text-align:center}#review-yikes-easy-mc .dashicons-star-filled{color:#E6B800}.meta-box-sortables hr{margin:1.75em 0 0}#about-yikes-inc{display:none}#about-yikes-inc .about-sidebar-yikes-logo{float:left;width:95px;margin:5px 7px 0 0}#about-yikes-inc p{margin-top:0}.yikes-easy-mc-updated{display:block;border-left:4px solid #4EAEF0;margin:1em 20px 1em 0;padding:2px 10px;background:right bottom no-repeat #fff;background-size:120px;background-position-y:29px}.support-section{margin:1.5em 0;padding:1em 0}.github-octocat{background:url(../../includes/images/Support_Page/Octocat.png) left top no-repeat;background-size:100%;width:50px;height:45px;display:block;float:left;margin-top:-5px}@media screen and (max-width:1200px){.yikes-easy-mc-postbox #post-body.columns-2 #postbox-container-1{float:none}}@media screen and (max-width:850px){.option-menu-selected-arrow{display:none!important}}@media screen and (max-width:782px){#chimp-chatter .chimp-chatter-container{float:none;height:auto;width:100%}}.recaptcha-demo-gif{width:275px}.pro-version-only-notice{color:#d96060}.upgrading-ellipse-one{filter:alpha(opacity=0);-khtml-opacity:0;opacity:0;-webkit-animation:dot 1.3s infinite;animation:dot 1.3s infinite;-webkit-animation-delay:0ms;animation-delay:0ms}.upgrading-ellipse-two{filter:alpha(opacity=0);-khtml-opacity:0;opacity:0;-webkit-animation:dot 1.3s infinite;animation:dot 1.3s infinite;-webkit-animation-delay:.2s;animation-delay:.2s}.upgrading-ellipse-three{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);-moz-opacity:0;-khtml-opacity:0;opacity:0;-webkit-animation:dot 1.3s infinite;animation:dot 1.3s infinite;-webkit-animation-delay:.3s;animation-delay:.3s}@-webkit-keyframes dot{0%,50%{opacity:0}100%{opacity:1}}@keyframes dot{0%,50%{opacity:0}100%{opacity:1}}
2
- /*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInlpa2VzLWluYy1lYXN5LW1haWxjaGltcC1leHRlbmRlci1hZG1pbi5taW4uY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHNEQUFzRCxpQkFBaUIsQ0FBQyxzQkFBc0IsWUFBWSxDQUFDLHVCQUF1QixXQUFXLDBDQUEwQyxDQUFDLGdDQUFnQyxjQUFjLGFBQWEsQ0FBQyxpQkFBaUIsWUFBWSxDQUFDLHFCQUFxQixlQUFlLGdCQUFnQixXQUFXLGFBQWEsQ0FBQyxvQkFBb0IsaUJBQWlCLENBQUMsK0JBQStCLGVBQWUsZUFBZSxDQUFDLG9CQUFvQixZQUFZLENBQUMsU0FBUyxZQUFZLENBQUMsYUFBYSxhQUFhLENBQUMsMEJBQTBCLHdCQUF3QixDQUFDLDJCQUEyQixjQUFjLGNBQWMsQ0FBQyxtQ0FBbUMsYUFBYSxlQUFlLENBQUMsc0NBQXNDLFlBQVksQ0FBQyw2REFBNkQsY0FBYyxDQUFDLG1CQUFtQixxQkFBcUIsa0JBQWtCLENBQUMsb0NBQW9DLGlCQUFpQixDQUFDLHdCQUF3QixVQUFVLENBQUMsd0ZBQXdGLHdHQUF3RyxxQkFBcUIsY0FBYyxZQUFZLGlCQUFpQixlQUFlLENBQUMseUZBQXlGLFNBQVMsQ0FBQyxvQ0FBb0MsVUFBVSxpQkFBaUIsQ0FBQyxxSEFBcUgsY0FBYyxVQUFVLENBQUMsaUNBQWlDLHFCQUFxQixVQUFVLGlCQUFpQixDQUFDLHVDQUF1QyxjQUFjLENBQUMsK0NBQStDLDhCQUE4QixDQUFDLCtEQUErRCxnQ0FBZ0MsNEJBQTRCLENBQUMsMERBQTBELGNBQWMsZ0JBQWdCLGVBQWUsa0JBQWtCLGdCQUFnQixnQkFBZ0IsZUFBZSxDQUFDLDJEQUEyRCxlQUFlLGFBQWEsbUJBQW1CLHVCQUF1QixDQUFDLDBEQUEwRCxpQkFBaUIsQ0FBQyxvQ0FBb0MsMEdBQTBHLG1CQUFtQixDQUFDLGNBQWMsdUNBQXVDLDZCQUE2Qix5QkFBeUIsQ0FBQyxnQkFBZ0IsdUJBQXVCLDBCQUEwQixjQUFjLENBQUMsaUNBQWlDLGNBQWMsb0JB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QThCLHNCQUFzQixpQkFBaUIsdUNBQXVDLHNCQUFzQiwwQkFBMEIsQ0FBQyxpQkFBaUIsZUFBZSxhQUFhLENBQUMsZ0JBQWdCLGtGQUFrRixxQkFBcUIsV0FBVyxZQUFZLGNBQWMsV0FBVyxlQUFlLENBQUMscUNBQXFDLGlFQUFpRSxVQUFVLENBQUMsQ0FBQyxvQ0FBb0MsNEJBQTRCLHNCQUFzQixDQUFDLENBQUMsb0NBQW9DLHdDQUF3QyxXQUFXLFlBQVksVUFBVSxDQUFDLENBQUMsb0JBQW9CLFdBQVcsQ0FBQyx5QkFBeUIsYUFBYSxDQUFDLHVCQUF1Qix3QkFBd0IsaUJBQWlCLFVBQVUsb0NBQTRCLEFBQTVCLDRCQUE0Qiw0QkFBNEIsbUJBQW1CLENBQUMsdUJBQXVCLHdCQUF3QixpQkFBaUIsVUFBVSxvQ0FBNEIsQUFBNUIsNEJBQTRCLDRCQUE0QixtQkFBbUIsQ0FBQyx5QkFBeUIsZ0VBQWdFLHdCQUF3QixlQUFlLGlCQUFpQixVQUFVLG9DQUFvQyw0QkFBNEIsNEJBQTRCLG1CQUFtQixDQUFDLHVCQUF1QixPQUFPLFNBQVMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLGVBQWUsT0FBTyxTQUFTLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQyIsImZpbGUiOiJ5aWtlcy1pbmMtZWFzeS1tYWlsY2hpbXAtZXh0ZW5kZXItYWRtaW4ubWluLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIiN5aWtlcy1lYXN5LW1jLWRhc2hib2FyZC13aWRnZXQtc3RhdHMgaDMsLmFkZG9uLWltYWdle3RleHQtYWxpZ246Y2VudGVyfS55aWtlcy1lYXN5LW1jLWhpZGRlbntkaXNwbGF5Om5vbmV9LnNob3J0Y29kZS1pbnB1dC1maWVsZHtjb2xvcjojMzMzO2JhY2tncm91bmQ6cmdiYSgyMTYsMjE2LDIxNiwuMzUpIWltcG9ydGFudH0uZWRpdC1mb3JtLWZpZWxkLWNvbnRhaW5lci1zcGFue2Rpc3BsYXk6YmxvY2s7bWFyZ2luOi41ZW0gMH0ubm8tZm9ybXMtd2lkZ2V0e21hcmdpbjoyZW0gMH0ubm8tZm9ybXMtZm91bmQtaWNvbntmb250LXNpemU6MTRweDtsaW5lLWhlaWdodDoxLjQ7d2lkdGg6MTRweDtjb2xvcjojZTA3ZDdkfS5jb21pbmctc29vbi1idXR0b257cG9zaXRpb246YWJzb2x1dGV9LmNvbWluZy1zb29uLWJ1dHRvbiAuZGFzaGljb25ze2ZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjEuOH0uYWRkLW9ucy1hYm91dC10ZXh0e21hcmdpbi10b3A6MH0jYWRkLW9uc3ttYXJnaW46M2VtIDB9LmFkZG9uLWltYWdle2Rpc3BsYXk6YmxvY2t9Lm5vLW1haWxjaGltcC1saXN0cy1mb3VuZHtwYWRkaW5nOjI1cHggMCAyNXB4IDI1cHh9LmFkZC1uZXctc3Vic2NyaWJlci1idXR0b257ZGlzcGxheTpibG9jazttYXJnaW4tdG9wOjJlbX0uYWRkLW5ldy1zdWJzY3JpYmVyLWZvcm0tY29udGFpbmVye2Rpc3BsYXk6bm9uZTtwYWRkaW5nLXRvcDoxZW19LmFkZC1uZXctc3Vic2NyaWJlci1mb3JtLWNvbnRhaW5lciBoNHttYXJnaW4tdG9wOjB9I3lpa2VzLWVhc3ktbWMtd2lkZ2V0LXN0YXQtaG9sZGVyLC55aWtlcy1lYXN5LW1jLXN0YXRzLXRhYmxle21hcmdpbi10b3A6MWVtfSNtaWdyYXRpb24tYnV0dG9uc3tkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW4tYm90dG9tOi41ZW19I21pZ3JhdGlvbi1idXR0b25zIGZvcm06Zmlyc3QtY2hpbGR7bWFyZ2luLXJpZ2h0OjEwcHh9I21pZ3JhdGlvbi1idXR0b25zIGZvcm17ZmxvYXQ6bGVmdH0jeWlrZXNfZWFzeV9tY19hY2NvdW50X2FjdGl2aXR5X3dpZGdldCBoMyBzcGFuLCN5aWtlc19lYXN5X21jX2xpc3Rfc3RhdHNfd2lkZ2V0IGgzIHNwYW57YmFja2dyb3VuZDp1cmwoLi4vLi4vaW5jbHVkZXMvaW1hZ2VzL01haWxDaGltcF9Bc3NldHMvRnJlZGRpZV9vcmlnaW5hbC5wbmcpIDhweCA0cHgvMjVweCBhdXRvIG5vLXJlcGVhdDtiYWNrZ3JvdW5kLXNpemU6MjVweDtkaXNwbGF5OmJsb2NrO2hlaWdodDozMHB4O3BhZGRpbmctbGVmdDozZW07cGFkZGluZy10b3A6NXB4fSN5aWtlc19lYXN5X21jX2FjY291bnRfYWN0aXZpdHlfd2lkZ2V0IGgzLmhuZGxlLCN5aWtlc19lYXN5X21jX2xpc3Rfc3RhdHNfd2lkZ2V0IC5pbnNpZGV7cGFkZGluZzowfSN5aWtlc19lYXN5X21jX2xpc3Rfc3RhdHNfd2lkZ2V0IGgze3BhZGRpbmc6MDtsaW5lLWhlaWdodDoxLjZlbX0ueWlrZXMtZWFzeS1tYy1zdGF0cy10YWJsZSwueWlrZXMtZWFzeS1tYy1zdGF0cy10YWJsZSAueWlrZXMtZWFzeS1tYy10YWJsZS1zdGF0cy10ciwueWlrZXMtZWFzeS1tYy1zdGF0cy10YWJsZSB0Ym9keXtkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCV9Lnlpa2VzLWVhc3ktbWMtdGFibGUtc3RhdHMtdHIgdGR7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6NDglO3RleHQtYWxpZ246Y2VudGVyfS55aWtlcy1lYXN5LW1jLXRhYmxlLXN0YXRzLXRyIHRkOmhvdmVye2N1cnNvcjpwb2ludGVyfS55aWtlcy1lYXN5LW1jLXRhYmxlLXN0YXRzLXRyIHRkOmZpcnN0LW9mLXR5cGV7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjZWNlY2VjfS55aWtlcy1lYXN5LW1jLXN0YXRzLXRhYmxlIC55aWtlcy1lYXN5LW1jLXRhYmxlLXN0YXRzLXRyLWZpcnN0e2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlY2VjZWM7Ym9yZGVyLXRvcDoxcHggc29saWQgI2VjZWNlY30ueWlrZXMtZWFzeS1tYy1zdGF0cy10YWJsZSBwLnlpa2VzLWVhc3ktbWMtZGFzaGJvYXJkLXN0YXR7Y29sb3I6IzAwYTBkMjtmb250LXdlaWdodDo4MDA7Zm9udC1zaXplOjIwcHg7bWFyZ2luLWJvdHRvbToycHg7bWFyZ2luLXRvcDoxNXB4O2xpbmUtaGVpZ2h0OjEuMjttYXgtaGVpZ2h0OjgwcHh9Lnlpa2VzLWVhc3ktbWMtc3RhdHMtdGFibGUgcC55aWtlcy1lYXN5LW1jLXN0YXQtbGlzdC1sYWJlbHtmb250LXNpemU6MTNweDttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbToxNXB4O2ZvbnQtZmFtaWx5OlwiT3BlbiBTYW5zXCJ9I3lpa2VzX2Vhc3lfbWNfYWNjb3VudF9hY3Rpdml0eV93aWRnZXQgdGFibGUgdGgucm93LXRpdGxle3BhZGRpbmctbGVmdDoxMHB4fSNwcmUtZGVmaW5lZC10YWctaW50ZXJpb3ItY29udGFpbmVye2JhY2tncm91bmQ6dXJsKC4uLy4uL2luY2x1ZGVzL2ltYWdlcy90aW55TUNFL3lpa2VzLW1haWxjaGltcC1jb21iby1mYWRlZC5wbmcpIGJvdHRvbSByaWdodCBuby1yZXBlYXQgI2ZmZjtiYWNrZ3JvdW5kLXNpemU6NDAlfS5xdGlwLWRlZmF1bHR7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudCFpbXBvcnRhbnQ7Ym9yZGVyOnRyYW5zcGFyZW50IWltcG9ydGFudDt6LWluZGV4Ojk5OTk5OTkhaW1wb3J0YW50fS5xdGlwLWJvb3RzdHJhcHtwYWRkaW5nOjEwcHghaW1wb3J0YW50O3otaW5kZXg6OTk5OTk5OSFpbXBvcnRhbnQ7Zm9udC1zaXplOjEycHh9LnNlYXJjaC1pbnRlcmVzdC1ncm91cC1wcmVsb2FkZXJ7ZGlzcGxheTpibG9jazttYXJnaW46OHB4IDAgMCA1NXB4O3dpZHRoOjEycHh9Lm5vLWludGVyZXN0LWdyb3VwaW5ncy1lbmFibGVkLW1lc3NhZ2V7ZGlzcGxheTpibG9jazttYXJnaW4tdG9wOjEycHghaW1wb3J0YW50O3dpZHRoOjEwMCV9LnRvb2x0aXAtaW50ZWdyYXRpb24tYmFubmVye21heC13aWR0aDoxMDAlO21hcmdpbjowIDAgLjI1ZW19LnRvb2x0aXB0ZXh0LnF0aXAtYm9vdHN0cmFwe2ZvbnQtc2l6ZToxMnB4fS50b29sdGlwLXRpdGxle21hcmdpbjowfS5kYXNoaWNvbnMtZWRpdG9yLWhlbHA6aG92ZXJ7Y3Vyc29yOnBvaW50ZXJ9Ym9keS5lYXN5LWZvcm1zX3BhZ2VfeWlrZXMtaW5jLWVhc3ktbWFpbGNoaW1wLXNldHRpbmdzIC5pbnRlcmVzdC1ncm91cC1zZWN0aW9ue2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJTttYXJnaW46MS41ZW0gMH1ib2R5LmVhc3ktZm9ybXNfcGFnZV95aWtlcy1pbmMtZWFzeS1tYWlsY2hpbXAtc2V0dGluZ3MgLmludGVyZXN0LWdyb3VwLXNlY3Rpb24gLmludGVyZXN0LWdyb3VwLXNlY3Rpb24tdGl0bGV7ZGlzcGxheTpibG9jazt3aWR0aDoxMDAlO21hcmdpbjouNWVtIDA7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX0uZ2l0aHViLWF2YXRhci11cmwsYm9keS5hZG1pbl9wYWdlX3lpa2VzLW1haWxjaGltcC13ZWxjb21lICNrYi1jb250YWluZXIgLmtub3dsZWRnZS1iYXNlLWxpc3RpbmcgbGkgYSxib2R5LmVhc3ktZm9ybXNfcGFnZV95aWtlcy1pbmMtZWFzeS1tYWlsY2hpbXAtc3VwcG9ydCAua25vd2xlZGdlLWJhc2UtYXJ0aWNsZXMgLmtub3dsZWRnZS1iYXNlLWxpc3RpbmcgbGkgYXt0ZXh0LWRlY29yYXRpb246bm9uZX1ib2R5LmVhc3ktZm9ybXNfcGFnZV95aWtlcy1pbmMtZWFzeS1tYWlsY2hpbXAtc2V0dGluZ3MgLmludGVyZXN0LWdyb3VwLXNlY3Rpb24gaW5wdXR7bWFyZ2luLXJpZ2h0OjB9Ym9keS5lYXN5LWZvcm1zX3BhZ2VfeWlrZXMtaW5jLWVhc3ktbWFpbGNoaW1wLXNldHRpbmdzIC5pbnRlcmVzdC1ncm91cC1zZWN0aW9uIGxhYmVse21hcmdpbi1yaWdodDoxMHB4fWkubWNlLWljby5tY2UtaS15a3NfbWNfdGlueW1jZV9idXR0b25fa2V5e2JhY2tncm91bmQ6dXJsKC4uLy4uL2luY2x1ZGVzL2ltYWdlcy90aW55TUNFL0ZyZWRkaWVfd2luay5wbmcpIG5vLXJlcGVhdDtiYWNrZ3JvdW5kLXNpemU6MThweDtiYWNrZ3JvdW5kLXBvc2l0aW9uLXk6MXB4fSN5aWtlc19tYWlsY2hpbXBfdGlueU1DRV9tb2RhbC10aXRsZXtwYWRkaW5nLWxlZnQ6NDJweDtiYWNrZ3JvdW5kOnVybCguLi8uLi9pbmNsdWRlcy9pbWFnZXMvTWFpbENoaW1wX0Fzc2V0cy9GcmVkZGllX29yaWdpbmFsLnBuZykgbGVmdCBuby1yZXBlYXQ7YmFja2dyb3VuZC1zaXplOjI1cHg7YmFja2dyb3VuZC1wb3NpdGlvbi14OjEwcHh9I3lpa2VzX21haWxjaGltcF90aW55TUNFX21vZGFse2JhY2tncm91bmQ6dXJsKC4uLy4uL2luY2x1ZGVzL2ltYWdlcy90aW55TUNFL3lpa2VzLW1haWxjaGltcC1jb21iby1mYWRlZC5wbmcpIGJvdHRvbSBsZWZ0IG5vLXJlcGVhdCAjZmZmO2JhY2tncm91bmQtc2l6ZTo0MCU7YmFja2dyb3VuZC1wb3NpdGlvbi14OjEwcHg7YmFja2dyb3VuZC1wb3NpdGlvbi15Ojk1JX0jeWlrZXNfbWFpbGNoaW1wX3RpbnlNQ0VfbW9kYWwgLm1jZS1mb290e2JvcmRlci10b3A6bm9uZSFpbXBvcnRhbnQ7YmFja2dyb3VuZDowIDB9W2lkKj1cIl95aWtlc19lYXN5X21jX3dpZGdldFwiXT5kaXYud2lkZ2V0LXRvcD5kaXYud2lkZ2V0LXRpdGxlPmg0e2JhY2tncm91bmQ6dXJsKC4uLy4uL2luY2x1ZGVzL2ltYWdlcy9NYWlsQ2hpbXBfQXNzZXRzL0ZyZWRkaWVfb3JpZ2luYWwucG5nKSAyJSA1MCUvMjVweCBhdXRvIG5vLXJlcGVhdCAjRkFGQUZBO3BhZGRpbmctbGVmdDo0MHB4fSNyZXZpZXcteWlrZXMtZWFzeS1tYWlsY2hpbXAtbm90aWNlICN5aWtlcy1tYWlsY2hpbXAtbG9nbywjeWlrZXMtbWFpbGNoaW1wLWxvZ297Zm9udC1zaXplOjE0cHg7YmFja2dyb3VuZDp1cmwoLi4vLi4vaW5jbHVkZXMvaW1hZ2VzL1dlbGNvbWVfUGFnZS95aWtlcy1tYWlsY2hpbXAtd2VsY29tZS1sb2dvLnBuZykgbm8tcmVwZWF0O3RleHQtYWxpZ246Y2VudGVyfSNyZXZpZXcteWlrZXMtZWFzeS1tYWlsY2hpbXAtbm90aWNlICN5aWtlcy1tYWlsY2hpbXAtbG9nb3tiYWNrZ3JvdW5kLXNpemU6NjBweDtmbG9hdDpsZWZ0O2hlaWdodDo4MHB4O3dpZHRoOjgwcHh9Lnlpa2VzLWVhc3ktbWMtZmVhdHVyZS1pbWFnZS1sZWZ0e2Zsb2F0OmxlZnQ7bWFyZ2luLXJpZ2h0OjMwcHg7bWFyZ2luLWxlZnQ6MCFpbXBvcnRhbnR9Lm5lZWQtc3VwcG9ydC1pY29ue2xpbmUtaGVpZ2h0OjEuNX11bC5zdXBwb3J0LW9wdGlvbi1saXN0e2Rpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOjEwMCV9LnN1cHBvcnQtb3B0aW9ue2Zsb2F0OmxlZnR9LnN1cHBvcnQtb3B0aW9uLXNlY29uZHttYXJnaW4tbGVmdDoxMHB4fSN5aWtlcy1tYWlsY2hpbXAtbG9nby5zdXBwb3J0LXBhZ2V7ZmxvYXQ6bGVmdDt3aWR0aDo4MHB0fS55aWtlcy1lYXN5LW1jLXdoYXRzLW5ldy1zZWN0aW9uLWltYWdle2Zsb2F0Om5vbmU7d2lkdGg6MTAwJTttYXJnaW4tbGVmdDowIWltcG9ydGFudH0ud2VsY29tZS1wYWdlLXRhYnN7bWFyZ2luLXRvcDoyZW0haW1wb3J0YW50fS53ZWxjb21lLXBhZ2UtYWJvdXQtd3JhcCAuYWJvdXQtdGV4dCwud2VsY29tZS1wYWdlLWFib3V0LXdyYXAgaDIud2VsY29tZS10aXRsZXttYXJnaW4tbGVmdDoxMTVweH0ud2hhdHMtbmV3LXdyYXAgaW1nLnlpa2VzLWVhc3ktbWMtd2hhdHMtbmV3LXNlY3Rpb24taW1hZ2V7bWFyZ2luLXRvcDoxMHB4fS53aGF0cy1uZXctd3JhcCAuZmVhdHVyZS1zZWN0aW9uOm50aC1jaGlsZCgxKSBpbWd7ZmxvYXQ6bGVmdDt3aWR0aDo1MDBweDttYXJnaW4tbGVmdDowIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6MzBweH0ud2hhdHMtbmV3LXdyYXAgLmZlYXR1cmUtc2VjdGlvbjpudGgtY2hpbGQoMykgaW1ne2Zsb2F0OnJpZ2h0O3dpZHRoOjI1MHB4O21hcmdpbi1yaWdodDowIWltcG9ydGFudDttYXJnaW4tbGVmdDozMHB4fS53aGF0cy1uZXctd3JhcCAuZmVhdHVyZS1zZWN0aW9uOm50aC1jaGlsZCg0KSBpbWd7bWFyZ2luLWxlZnQ6MCFpbXBvcnRhbnR9I3lpa2VzLW1haWxjaGltcC1sb2dve2hlaWdodDoxMzJweDt3aWR0aDoxMzJweH0uYWJvdXQtd3JhcCAjeWlrZXMtbWFpbGNoaW1wLWxvZ297cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowfS5lZGQtd2VsY29tZS1zY3JlZW5zaG90c3tmbG9hdDpyaWdodDttYXJnaW4tbGVmdDoxMHB4IWltcG9ydGFudH0uYWJvdXQtd3JhcCAuZmVhdHVyZS1zZWN0aW9ue21hcmdpbi10b3A6MjBweH0ueWlrZXMtZWFzeS1tYy1mZWF0dXJlLWltYWdle2Zsb2F0OnJpZ2h0O21hcmdpbi1sZWZ0OjMwcHghaW1wb3J0YW50fSNjcmVkaXQtY29udGFpbmVyLCN0cmFuc2xhdG9ycy1jb250YWluZXJ7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6MTAwJX0jY3JlZGl0LWNvbnRhaW5lciBoMiwjdHJhbnNsYXRvcnMtY29udGFpbmVyIGgye21hcmdpbjowIDAgLjVlbSAxZW19I3RyYW5zbGF0b3JzLWNvbnRhaW5lcnttYXJnaW4tdG9wOjVlbX0jdHJhbnNsYXRvcnMtY29udGFpbmVyIC50cmFuc2xhdGlvbi1sYW5ndWFnZXtjb2xvcjojMzMzfSNjcmVkaXQtY29udGFpbmVyIC50ZWFtLW1lbWJlciwjdHJhbnNsYXRvcnMtY29udGFpbmVyIC50cmFuc2xhdG9ye21hcmdpbjoxZW0gNSUgMWVtIDA7dGV4dC1hbGlnbjpjZW50ZXJ9I2NyZWRpdC1jb250YWluZXIgLnRlYW0tbWVtYmVyIGltZywjdHJhbnNsYXRvcnMtY29udGFpbmVyIC50cmFuc2xhdG9yIGltZ3tib3JkZXItcmFkaXVzOjUwJX0uYWJvdXQtd3JhcCBkaXYuZXJyb3IsLmFib3V0LXdyYXAgZGl2LnVwZGF0ZWR7ZGlzcGxheTpibG9jayFpbXBvcnRhbnQ7bWFyZ2luLWxlZnQ6MTE1cHghaW1wb3J0YW50fS5naXRodWItYXZhdGFyLWltYWdle3dpZHRoOjEwMHB4fS5naXRodWItYXZhdGFyLXVybHtkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDoyMCV9Z2l0aHViLWF2YXRhci11cmw6Zm9jdXN7b3V0bGluZTowfWJvZHkuYWRtaW5fcGFnZV95aWtlcy1tYWlsY2hpbXAtZWRpdC1mb3JtIGRpdi5zaG93LXNvbWUtbG92ZS1jb250YWluZXIgaW1nLGRpdi5zaG93LXNvbWUtbG92ZS1jb250YWluZXIgaW1nLmN1c3RvbWl6ZXItdXBzZWxsLWJhbm5lcnttYXgtd2lkdGg6MTAwJX1ib2R5LmFkbWluX3BhZ2VfeWlrZXMtbWFpbGNoaW1wLWVkaXQtZm9ybSBkaXYuc2hvdy1zb21lLWxvdmUtY29udGFpbmVyIHA6Zmlyc3QtY2hpbGR7Zm9udC1zdHlsZTppdGFsaWN9Ym9keS5hZG1pbl9wYWdlX3lpa2VzLW1haWxjaGltcC1lZGl0LWZvcm0gZGl2LnNob3ctc29tZS1sb3ZlLWNvbnRhaW5lciBocnttYXJnaW46MWVtIDB9Ym9keS5hZG1pbl9wYWdlX3lpa2VzLW1haWxjaGltcC13ZWxjb21lIC5uYXYtdGFiLXdyYXBwZXIgLm5hdi10YWIgLmRhc2hpY29uc3tmb250LXNpemU6MTdweDtsaW5lLWhlaWdodDoxLjV9Ym9keS5hZG1pbl9wYWdlX3lpa2VzLW1haWxjaGltcC13ZWxjb21lICNrYi1jb250YWluZXIsYm9keS5lYXN5LWZvcm1zX3BhZ2VfeWlrZXMtaW5jLWVhc3ktbWFpbGNoaW1wLXN1cHBvcnQgLmtub3dsZWRnZS1iYXNlLWFydGljbGVze2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi10b3A6MWVtfWJvZHkuYWRtaW5fcGFnZV95aWtlcy1tYWlsY2hpbXAtd2VsY29tZSAja2ItY29udGFpbmVyIGgxe2ZvbnQtc2l6ZToyMHB4O21hcmdpbi10b3A6LTFlbX1ib2R5LmFkbWluX3BhZ2VfeWlrZXMtbWFpbGNoaW1wLXdlbGNvbWUgI2tiLWNvbnRhaW5lciAua25vd2xlZGdlLWJhc2UtbGlzdGluZyxib2R5LmVhc3ktZm9ybXNfcGFnZV95aWtlcy1pbmMtZWFzeS1tYWlsY2hpbXAtc3VwcG9ydCAua25vd2xlZGdlLWJhc2UtYXJ0aWNsZXMgLmtub3dsZWRnZS1iYXNlLWxpc3Rpbmd7d2lkdGg6NDUlO21hcmdpbi1yaWdodDoyJTtmbG9hdDpsZWZ0O21pbi1oZWlnaHQ6MjYwcHh9Ym9keS5hZG1pbl9wYWdlX3lpa2VzLW1haWxjaGltcC13ZWxjb21lICNrYi1jb250YWluZXIgLmtub3dsZWRnZS1iYXNlLWxpc3RpbmcgbGksYm9keS5lYXN5LWZvcm1zX3BhZ2VfeWlrZXMtaW5jLWVhc3ktbWFpbGNoaW1wLXN1cHBvcnQgLmtub3dsZWRnZS1iYXNlLWFydGljbGVzIC5rbm93bGVkZ2UtYmFzZS1saXN0aW5nIGxpe21hcmdpbjoxMnB4IDA7dGV4dC1kZWNvcmF0aW9uOm5vbmV9Ym9keS5hZG1pbl9wYWdlX3lpa2VzLW1haWxjaGltcC13ZWxjb21lICNrYi1jb250YWluZXIgLmtub3dsZWRnZS1iYXNlLWxpc3RpbmcgbGk6YmVmb3JlLGJvZHkuZWFzeS1mb3Jtc19wYWdlX3lpa2VzLWluYy1lYXN5LW1haWxjaGltcC1zdXBwb3J0IC5rbm93bGVkZ2UtYmFzZS1hcnRpY2xlcyAua25vd2xlZGdlLWJhc2UtbGlzdGluZyBsaTpiZWZvcmV7Zm9udC1mYW1pbHk6ZGFzaGljb25zO2NvbnRlbnQ6XCJcXGYxMjNcIjt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7ZGlzcGxheTpibG9jaztmbG9hdDpsZWZ0O21hcmdpbjowIDVweCA1cHggMH1ib2R5LmFkbWluX3BhZ2VfeWlrZXMtbWFpbGNoaW1wLXdlbGNvbWUgI2tiLWNvbnRhaW5lciAua25vd2xlZGdlLWJhc2UtbGlzdGluZyBsaS5saXN0LXRpdGxlLGJvZHkuZWFzeS1mb3Jtc19wYWdlX3lpa2VzLWluYy1lYXN5LW1haWxjaGltcC1zdXBwb3J0IC5rbm93bGVkZ2UtYmFzZS1hcnRpY2xlcyAua25vd2xlZGdlLWJhc2UtbGlzdGluZyBsaS5saXN0LXRpdGxle2ZvbnQtc2l6ZToxN3B4O2ZvbnQtd2VpZ2h0OjIwMDt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfWJvZHkuYWRtaW5fcGFnZV95aWtlcy1tYWlsY2hpbXAtd2VsY29tZSAja2ItY29udGFpbmVyIC5rbm93bGVkZ2UtYmFzZS1saXN0aW5nIGxpLmxpc3QtdGl0bGU6YmVmb3JlLGJvZHkuZWFzeS1mb3Jtc19wYWdlX3lpa2VzLWluYy1lYXN5LW1haWxjaGltcC1zdXBwb3J0IC5rbm93bGVkZ2UtYmFzZS1hcnRpY2xlcyAua25vd2xlZGdlLWJhc2UtbGlzdGluZyBsaS5saXN0LXRpdGxlOmJlZm9yZXtjb250ZW50OlwiXCI7cGFkZGluZy1sZWZ0OjEycHh9Ym9keS5hZG1pbl9wYWdlX3lpa2VzLW1haWxjaGltcC13ZWxjb21lIC5uZXctZmVhdHVyZS1saXN0e2xpc3Qtc3R5bGU6bm9uZTtsaW5lLWhlaWdodDptaWRkbGV9Ym9keS5hZG1pbl9wYWdlX3lpa2VzLW1haWxjaGltcC13ZWxjb21lIC5uZXctZmVhdHVyZS1saXN0IGxpe21hcmdpbi1ib3R0b206MTBweH1ib2R5LmFkbWluX3BhZ2VfeWlrZXMtbWFpbGNoaW1wLXdlbGNvbWUgLm5ldy1mZWF0dXJlLWxpc3QgbGk6YmVmb3Jle2ZvbnQtZmFtaWx5OmRhc2hpY29ucztjb250ZW50OlwiXFxmMTM5XCI7cGFkZGluZy1yaWdodDoycHg7Zm9udC1zaXplOjIwcHg7dmVydGljYWwtYWxpZ246bWlkZGxlfSNyZXZpZXcteWlrZXMtZWFzeS1tYWlsY2hpbXAtbm90aWNlIC5idXR0b24tY29udGFpbmVye2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJTttYXJnaW46Ljc1ZW0gMCAxLjVlbX0jcmV2aWV3LXlpa2VzLWVhc3ktbWFpbGNoaW1wLW5vdGljZSAuYnV0dG9uLWNvbnRhaW5lciAuZGFzaGljb25ze2ZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjEuOTttYXJnaW4tbGVmdDotNHB4fSNyZXZpZXcteWlrZXMtZWFzeS1tYWlsY2hpbXAtbm90aWNlIC5idXR0b24tY29udGFpbmVyIC5kYXNoaWNvbnMtc3Rhci1maWxsZWR7Y29sb3I6I0U2QjgwMH0jcmV2aWV3LXlpa2VzLWVhc3ktbWFpbGNoaW1wLW5vdGljZSAuYnV0dG9uLWNvbnRhaW5lciAuZGFzaGljb25zLXVwbG9hZHtjb2xvcjojNkU4ODQxfSNyZXZpZXcteWlrZXMtZWFzeS1tYWlsY2hpbXAtbm90aWNlIC5idXR0b24tY29udGFpbmVyIC5kYXNoaWNvbnMtbm8tYWx0e2NvbG9yOiNkYzNhM2E7bGluZS1oZWlnaHQ6Mn1ib2R5LmVhc3ktbWFpbGNoaW1wX3BhZ2VfeWlrZXMtaW5jLWVhc3ktbWFpbGNoaW1wLXNldHRpbmdzIC5kYXNoaWNvbnMtbm8tYWx0e2NvbG9yOiNkYzNhM2F9I3Jldmlldy15aWtlcy1lYXN5LW1haWxjaGltcC1ub3RpY2UgLmJ1dHRvbi1jb250YWluZXIgYXttYXJnaW4tcmlnaHQ6MTBweH0jcmV2aWV3LXlpa2VzLWVhc3ktbWFpbGNoaW1wLW5vdGljZXtib3JkZXItbGVmdDo0cHggc29saWQgIzAwYTBkMjtiYWNrZ3JvdW5kOiNmZWZlZmU7cGFkZGluZzoxMHB4IDEycHggMXB4O2JveC1zaGFkb3c6MCAxcHggMXB4IDAgcmdiYSgwLDAsMCwuMSk7LXdlYmtpdC1ib3gtc2hhZG93OjAgMXB4IDFweCAwIHJnYmEoMCwwLDAsLjEpO21hcmdpbjoxNXB4IDI1cHggMjBweCA1cHh9aW5wdXQucmVhZG9ubHksaW5wdXRbcmVhZG9ubHldLHRleHRhcmVhLnJlYWRvbmx5LHRleHRhcmVhW3JlYWRvbmx5XXtiYWNrZ3JvdW5kOiNEOEQ4RDh9LmRhc2hpY29ucy55aWtlcy1sb3Zle2NvbG9yOnBpbmt9LmZpZWxkLWRlc2NyaXB0aW9uLWlucHV0e3Jlc2l6ZTp2ZXJ0aWNhbDttYXgtaGVpZ2h0OjEwMHB4fS55aWtlcy1lYXN5LW1jLXBvc3Rib3ggaDN7YmFja2dyb3VuZDojMDBhMGQyO2ZvbnQtd2VpZ2h0OjgwMDtjb2xvcjojZmZmfS55aWtlcy1lYXN5LW1jLXBvc3Rib3ggaDMuYmctdHJhbnNwYXJlbnR7Y29sb3I6IzMzMztmb250LXdlaWdodDo0MDA7YmFja2dyb3VuZDowIDB9Lnlpa2VzLW1jLXdhcm5pbmctbWVzc2FnZXtwYWRkaW5nLWxlZnQ6MTVweDttYXJnaW4tdG9wOjA7cGFkZGluZy10b3A6MTBweDtjb2xvcjojZGE2ZTZlfS5lcnJvci1tZXNzYWdlLWNvbnRhaW5lciBsYWJlbFtmb3I9eWlrZXMtZWFzeS1tYy1zdWNjZXNzLW1lc3NhZ2VdLC5lcnJvci1tZXNzYWdlLWNvbnRhaW5lciBsYWJlbFtmb3I9eWlrZXMtZWFzeS1tYy1nZW5lcmFsLWVycm9yLW1lc3NhZ2VdLC5lcnJvci1tZXNzYWdlLWNvbnRhaW5lciBsYWJlbFtmb3I9eWlrZXMtZWFzeS1tYy1pbnZhbGlkLWVtYWlsLW1lc3NhZ2VdLC5lcnJvci1tZXNzYWdlLWNvbnRhaW5lciBsYWJlbFtmb3I9eWlrZXMtZWFzeS1tYy11c2VyLXN1YnNjcmliZWQtbWVzc2FnZV17cGFkZGluZzouNWVtIDFlbTtiYWNrZ3JvdW5kOnJnYmEoMjQxLDI0MSwyNDEsLjc1KTtib3gtc2l6aW5nOmJvcmRlci1ib3g7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7LW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7bWFyZ2luOjB9Ym9keS5hZG1pbl9wYWdlX3lpa2VzLW1haWxjaGltcC1lZGl0LWZvcm0gI2Vycm9yLWNvbnRhaW5lcntwYWRkaW5nOjJweCAxZW07YmFja2dyb3VuZDpyZ2JhKDI0MSwyNDEsMjQxLC43NSk7Ym94LXNpemluZzpib3JkZXItYm94Oy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94Oy1tb3otYm94LXNpemluZzpib3JkZXItYm94O21hcmdpbjowO2NvbG9yOiNGNTYwNjB9LmVycm9yLW1lc3NhZ2UtY29udGFpbmVyIGxhYmVsW2Zvcj15aWtlcy1lYXN5LW1jLXVzZXItc3Vic2NyaWJlZC1tZXNzYWdlXXtwYWRkaW5nLWJvdHRvbToxZW07bWFyZ2luLWJvdHRvbTouNWVtfS5lcnJvci1tZXNzYWdlLWNvbnRhaW5lciBsYWJlbCwuZm9ybS1zZXR0aW5ncy1jb250YWluZXIgbGFiZWx7ZGlzcGxheTpibG9jazttYXJnaW46MWVtIDB9Lnlpa2VzLWVhc3ktZm9ybXMtc2lkZWJhciAueWlrZXMtbWMtc2V0dGluZ3MtZXhwYW5zaW9uLXNlY3Rpb257cGFkZGluZzouNWVtIC43NWVtOy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94Oy1tb3otYm94LXNpemluZzpib3JkZXItYm94fS55aWtlcy1tYy1zZXR0aW5ncy1leHBhbnNpb24tc2VjdGlvbntkaXNwbGF5Om5vbmU7YmFja2dyb3VuZDpyZ2JhKDI0MSwyNDEsMjQxLC43NSl9LmV4cGFuc2lvbi1zZWN0aW9uLXRpdGxle2JhY2tncm91bmQ6I2ZmZn0uZXhwYW5zaW9uLXNlY3Rpb24tdGl0bGUuc2V0dGluZ3Mtc2lkZWJhciwuZm9ybS1idWlsZGVyLXNlY3Rpb24tdGl0bGV7dGV4dC1kZWNvcmF0aW9uOm5vbmU7ZGlzcGxheTpibG9jaztib3JkZXI6MXB4IHNvbGlkIHJnYmEoMTc3LDE3NywxNzcsLjcxKTtjb2xvcjojMzMzO3BhZGRpbmc6NXB4O21hcmdpbjouNWVtIDAgMH0uZXhwYW5zaW9uLXNlY3Rpb24tdGl0bGUuc2V0dGluZ3Mtc2lkZWJhciAuZGFzaGljb25zLC5mb3JtLWJ1aWxkZXItc2VjdGlvbi10aXRsZSAuZGFzaGljb25ze2NvbnRlbnQ6XCJcXGYxMzJcIjtmb250LWZhbWlseTpkYXNoaWNvbnM7Zm9udC1zaXplOjE1cHg7bGluZS1oZWlnaHQ6MS41fXNwYW4uZWFzeS1tYWlsY2hpbXAtYWRkLW9uLXZhbGlkLWxpY2Vuc2UtY29udGFpbmVye2NvbG9yOiM0NGJhNDQ7ZGlzcGxheTpibG9jazttYXJnaW4tdG9wOjFlbX0uZWFzeS1tYWlsY2hpbXAtYWRkLW9uLWludmFsaWQtbGljZW5zZS1jb250YWluZXJ7Y29sb3I6cmdiYSgyMjcsMTA3LDEwNywuODYpO2Rpc3BsYXk6YmxvY2s7bWFyZ2luLXRvcDoxZW19Lm9wdGlvbnMtc2lkZWJhciAueWlrZXMtZWFzeS1tYy1wb3N0Ym94e292ZXJmbG93OnZpc2libGV9Lm9wdGlvbnMtc2lkZWJhciAuaW5zaWRle3BhZGRpbmc6MCAyMHB4IDEycHh9Lnlpa2VzLWVhc3ktbWMtYWJvdXQtdGV4dHttYXJnaW4tdG9wOjB9LmFkZC1vbi1zZXR0aW5ncy1kaXZpZGVye21hcmdpbjoxZW0gMCFpbXBvcnRhbnR9I3lrcy1tYWlsY2hpbXAtZG91YmxlLW9wdGluLW1lc3NhZ2UsI3lrcy1tYWlsY2hpbXAtc2luZ2xlLW9wdGluLW1lc3NhZ2UsLnNldHRpbmdzLXBhZ2UtaW5wdXR7d2lkdGg6NTAlfSN5a3MtbWFpbGNoaW1wLWRvdWJsZS1vcHRpbi1tZXNzYWdlLCN5a3MtbWFpbGNoaW1wLXNpbmdsZS1vcHRpbi1tZXNzYWdle21pbi1oZWlnaHQ6NzVweDttYXgtaGVpZ2h0OjIwMHB4O3Jlc2l6ZTp2ZXJ0aWNhbH0jYWRkb24tc2V0dGluZ3MtbmF2IGxpIGEsI3NldHRpbmdzLW5hdiBsaSBhe2NvbG9yOiMzMzM7dGV4dC1kZWNvcmF0aW9uOm5vbmUhaW1wb3J0YW50O3RyYW5zaXRpb246Y29sb3IgLjE1cyBlYXNlLW91dDstbW96LXRyYW5zaXRpb246Y29sb3IgLjE1cyBlYXNlLW91dDstd2Via2l0LXRyYW5zaXRpb246Y29sb3IgLjE1cyBlYXNlLW91dDstby10cmFuc2l0aW9uOmNvbG9yIC4xNXMgZWFzZS1vdXR9I2FkZG9uLXNldHRpbmdzLW5hdiBsaSBhOmhvdmVyLCNzZXR0aW5ncy1uYXYgbGkgYTpob3Zlciwub3B0aW9uLW1lbnUtc2VsZWN0ZWQtYXJyb3crYXtjb2xvcjojMDBhMGQyIWltcG9ydGFudH0jYWRkb24tc2V0dGluZ3MtbmF2e21hcmdpbi1ib3R0b206MDttYXJnaW4tdG9wOjVweH0ub3B0aW9uLW1lbnUtc2VsZWN0ZWQtYXJyb3d7d2lkdGg6MDtoZWlnaHQ6MDtib3JkZXItdG9wOjEwcHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLWJvdHRvbToxMHB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1sZWZ0OjEwcHggc29saWQgI2EwYTVhYTtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0Oi0uMWVtfWxhYmVsW2Zvcj15aWtlcy1tYWlsY2hpbXAtZGVidWctc3RhdHVzXXtkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW4tYm90dG9tOjFlbTtsaW5lLWhlaWdodDoyLjI1fSN5aWtlcy1tYWlsY2hpbXAtZGVidWctc3RhdHVze2Zsb2F0OmxlZnQ7bWFyZ2luLXRvcDouNWVtfWxhYmVsW2Zvcj15aWtlcy1tYy1yZWNhcHRjaGEtc2V0dGluZ10sbGFiZWxbZm9yPXlpa2VzLW1jLXJlY2FwdGNoYS1hcGkta2V5XXtkaXNwbGF5OmJsb2NrO21hcmdpbi1ib3R0b206MWVtfS5yZWNhcHRjaGEtcHJldmlldy1saW5rLGlucHV0LnJlY2FwdGNoYS1zZXR0aW5nLWNoZWNrYm94e2Rpc3BsYXk6YmxvY2s7bWFyZ2luLXRvcDouNWVtfS5yZWNhcHRjaGEtcHJldmlldy1jb250YWluZXJ7d2lkdGg6MTAwJTtkaXNwbGF5Om5vbmU7bWFyZ2luOjFlbSAwfSNwcmVtaXVtLXN1cHBvcnQtZm9ybSwuc3VwcG9ydC1wYWdlLWJ1dHRvbiwuc3VwcG9ydC1wYWdlLWxvZ297ZGlzcGxheTpibG9jazt3aWR0aDoxMDAlfS53cmFwICNjb2wtbGVmdCwud3JhcCAjY29sLXJpZ2h0e3dpZHRoOjQ5JX1AbWVkaWEgKG1heC13aWR0aDo4MDBweCl7LndyYXAgI2NvbC1sZWZ0LC53cmFwICNjb2wtcmlnaHR7d2lkdGg6MTAwJX19LnN1cHBvcnQtcGFnZS1sb2dve29wYWNpdHk6Ljc7bWF4LXdpZHRoOjEwMCV9LnN1cHBvcnQtcGFnZS1idXR0b257bWluLWhlaWdodDo0MHB4O2ZvbnQtd2VpZ2h0OjcwMDt0ZXh0LWFsaWduOmNlbnRlcjtsaW5lLWhlaWdodDozIWltcG9ydGFudDttYXJnaW4tdG9wOjFlbSFpbXBvcnRhbnR9LnN1cHBvcnQtcGFnZS13b3JkcHJlc3MtZm9udHtmb250LXNpemU6MS4zZW07bWFyZ2luLXJpZ2h0OjEzcHh9aDIucHJlbWl1bS1zdXBwb3J0LXRpdGxle21hcmdpbjoxZW0gMCAuNWVtfSNwcmVtaXVtLXN1cHBvcnQtZm9ybSBpbnB1dCwjcHJlbWl1bS1zdXBwb3J0LWZvcm0gc2VsZWN0e2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJTttaW4td2lkdGg6MjAwcHg7bWFyZ2luOi41ZW0gMH0jcHJlbWl1bS1zdXBwb3J0LWZvcm0gbGFiZWx7Zm9udC13ZWlnaHQ6ODAwfSNwcmVtaXVtLXN1cHBvcnQtZm9ybSBsYWJlbCBpbnB1dCwjcHJlbWl1bS1zdXBwb3J0LWZvcm0gbGFiZWwgc2VsZWN0e2ZvbnQtd2VpZ2h0OjUwMH0jcHJlbWl1bS1zdXBwb3J0LWZvcm0gcHtmb250LXdlaWdodDozMDA7ZGlzcGxheTpibG9jazttYXJnaW4tYm90dG9tOjFlbX0jd3Atc3VwcG9ydC1jb250ZW50LXdyYXB7bWluLWhlaWdodDoxNTBweDt3aWR0aDoxMDAlfS5zdXBwb3J0LWZvcm0taGlkZGVue2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9I3lpa2VzLW1haWxjaGltcC1lcnJvci1sb2cgLnJvdy10aXRsZXtmb250LXdlaWdodDo0MDB9LmNyZWF0ZS1lcnJvci1sb2ctaGVscDpob3ZlcntjdXJzb3I6cG9pbnRlcn0uZXJyb3ItbG9nLXRyIHRke2Rpc3BsYXk6dGFibGU7bWFyZ2luLWJvdHRvbToxZW07bWFyZ2luLXRvcDouNWVtfXAuZXJyb3ItbG9nLW1pc3NpbmctZmlsZSBlbSxwLnRvLXN0YXJ0LWxvZ2dpbmctZXJyb3JzLW5vdGljZSBlbXttYXJnaW46MTBweCAwfS5leHBvcnQtY3VzdG9tLWZvcm1zLWxpc3R7ZGlzcGxheTpub25lO21hcmdpbjoxZW0gMCAyZW19LmV4cG9ydC1jdXN0b20tZm9ybXMtbGlzdCBwe21hcmdpbi10b3A6MH0ubGlzdC1yYXRpbmctc3Rhcntjb2xvcjojRTZCODAwfSNjaGltcC1jaGF0dGVye3RleHQtYWxpZ246Y2VudGVyfSNjaGltcC1jaGF0dGVyIC5jaGltcC1jaGF0dGVyLWNvbnRhaW5lcnttYXJnaW46MWVtIC4yZW07YmFja2dyb3VuZDojRjhGOEY4O2JvcmRlci1yYWRpdXM6MTBweDtmbG9hdDpsZWZ0O2hlaWdodDoyMjBweDtwYWRkaW5nOjEwcHg7d2lkdGg6NDQlfS5jaGltcC1jaGF0dGVyLW1haWxjaGltcC1sb2dve3dpZHRoOjEwMCU7ZGlzcGxheTpibG9jazttYXJnaW46MCBhdXRvfS5jaGltcC1jaGF0dGVyLXNpZGViYXIgaDIuYWNjb3VudC1zdGF0dXN7dGV4dC1hbGlnbjpjZW50ZXJ9Lm1haWxjaGltcC1hZmZpbGlhdGUtbGlua3tjb2xvcjojMzMzO2Rpc3BsYXk6bm9uZX0ubWFpbGNoaW1wLWF2YXRhcntkaXNwbGF5OmJsb2NrO21hcmdpbjowIGF1dG87Ym94LXNoYWRvdzozcHggM3B4IDEwcHggMCByZ2JhKDIxNCwyMTQsMjE0LC43NSl9I3lpa2VzX2Vhc3lfbWNfdG9vbGJhcl9saW5rcyBsaSBhOmZvY3VzLC5tZXJnZS10YWctdGV4dHtib3gtc2hhZG93Om5vbmV9LmNoaW1wY2hhdHRlci1idXR0b24tY29udGFpbmVye2NsZWFyOmJvdGg7ZGlzcGxheTpibG9ja30uY2hpbXAtY2hhdHRlci1wb3N0Ym94e2Zsb2F0OmxlZnQ7d2lkdGg6NDklO21hcmdpbi1yaWdodDoxJX0uY2lyY2xlLWFjY291bnQtYWN0aXZlLC5jaXJjbGUtYWNjb3VudC1pbmFjdGl2ZXtkaXNwbGF5OmlubGluZS1ibG9jazt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7aGVpZ2h0OjE1cHg7d2lkdGg6MTVweDtib3JkZXItcmFkaXVzOjUwJX0jYWNjb3VudC1kZXRhaWxzIC5jaGltcC1jaGF0dGVyLXBvc3Rib3guZXZlbnttYXJnaW4tcmlnaHQ6MH0uY2lyY2xlLWFjY291bnQtaW5hY3RpdmV7bWFyZ2luLXRvcDotM3B4O21hcmdpbi1yaWdodDo1cHg7YmFja2dyb3VuZDpyZ2JhKDI1MCwxMzgsMTM4LC43OSl9LmNoYXR0ZXItdHlwZXtmb250LXdlaWdodDo2MDA7Zm9udC1mYW1pbHk6XCJvcGVuIHNhbnNcIjtmb250LXNpemU6MTRweDttYXJnaW46NXB4IDVweCAwfS5jaGF0dGVyLW1lc3NhZ2V7bWFyZ2luOjJweCAycHggMTVweCFpbXBvcnRhbnR9LmNpcmNsZS1hY2NvdW50LWFjdGl2ZXttYXJnaW4tdG9wOi0zcHg7bWFyZ2luLXJpZ2h0OjVweDtiYWNrZ3JvdW5kOnJnYmEoMTI4LDIxNCwxMjgsLjc3KX0jYWNjb3VudC1kZXRhaWxzIC5tYWlsY2hpbXAtYXZhdGFye3dpZHRoOjEyMHB4O2JvcmRlci1yYWRpdXM6MTAlO21hcmdpbi10b3A6LjVlbX0uY2hpbXAtY2hhdHRlci1wb3NpdGl2ZXtib3JkZXItbGVmdDo0cHggc29saWQgIzlkZGY5ZH0uY2hpbXAtY2hhdHRlci1uZWdhdGl2ZXtib3JkZXItbGVmdDo0cHggc29saWQgI0ZCQTJBMn0uY2hpbXAtY2hhdHRlci1uZXV0cmFse2JvcmRlci1sZWZ0OjRweCBzb2xpZCAjYjFiMWIxfSNpbXBvcnQtbGlzdC10by1zaXRle21hcmdpbi10b3A6MTBweH0jaW1wb3J0LWxpc3QtdG8tc2l0ZSAuaW5wdXQtZmllbGR7ZGlzcGxheTpibG9jazt3aWR0aDoxMDAlO21hcmdpbi10b3A6NXB4O21hcmdpbi1ib3R0b206NXB4fS5zaWRlYmFyLWNvbnRhaW5lciwuc3Rhci1jb250YWluZXJ7bWFyZ2luLXRvcDo1cHg7bWFyZ2luLWJvdHRvbToxLjVlbX0jaW1wb3J0LWxpc3QtdG8tc2l0ZSAuZm9ybS1kZXNjcmlwdGlvbntyZXNpemU6dmVydGljYWw7bWF4LWhlaWdodDo2NXB4fSNpbXBvcnQtbGlzdC10by1zaXRlIC5kZXNjcmlwdGlvbnttYXJnaW4tdG9wOjVweH0uc3Rhci1jb250YWluZXIgYXt0ZXh0LWRlY29yYXRpb246bm9uZX0uc3Rhci1jb250YWluZXIgLmRhc2hpY29ucy1zdGFyLWZpbGxlZHtmb250LXNpemU6MS43NWVtfS5zaWRlYmFyLWZvb3Rlci10ZXh0e21hcmdpbjoxNXB4IDAhaW1wb3J0YW50O3RleHQtYWxpZ246Y2VudGVyfS5zaWRlYmFyLXR3aXR0ZXItaWNvbnt0ZXh0LWRlY29yYXRpb246bm9uZTtjb2xvcjojNTVBQ0VFfS5maWVsZC1kb2VzbnQtZXhpc3Qtbm90aWNle3Bvc2l0aW9uOmFic29sdXRlO21hcmdpbi1sZWZ0OjVweDt3aWR0aDoxOHB4fS5maWVsZC10eXBlLXRleHR7ZmxvYXQ6cmlnaHR9LnR5cGUtY29udGFpbmVye21hcmdpbjowfS5mb3JtLWZpZWxkLWNvbnRhaW5lcnttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbTowfS5maWVsZC1uby1sb25nZXItZXhpc3RzLXdhcm5pbmd7cG9zaXRpb246YWJzb2x1dGU7bWFyZ2luLWxlZnQ6NXB4O3dpZHRoOjE4cHh9LmZvcm0tZmllbGQtY29udGFpbmVyIHRkIGlucHV0W3R5cGU9Y2hlY2tib3hdLC5mb3JtLWZpZWxkLWNvbnRhaW5lciB0ZCBpbnB1dFt0eXBlPXJhZGlvXXttYXJnaW46MCA1cHh9LmZvcm0tZmllbGQtY29udGFpbmVyIHRkIGlucHV0W3R5cGU9Y2hlY2tib3hdOmZpcnN0LWNoaWxkLC5mb3JtLWZpZWxkLWNvbnRhaW5lciB0ZCBpbnB1dFt0eXBlPXJhZGlvXTpmaXJzdC1jaGlsZHttYXJnaW4tbGVmdDowIWltcG9ydGFudH0ubWVyZ2UtdGFnLXRleHR7YmFja2dyb3VuZDowIDA7Ym9yZGVyOm5vbmV9LnByZS1kZWZpbmVkLXRhZy1saW5re2ZvbnQtc2l6ZToxMXB4fS50b2dnbGUtY29udGFpbmVye2ZvbnQtc2l6ZTpzbWFsbDtmbG9hdDpyaWdodH0jcHJlLWRlZmluZWQtdGFnLWNvbnRhaW5lcntkaXNwbGF5Om5vbmV9I3ByZS1kZWZpbmVkLXRhZy1jb250YWluZXIgaDN7bWFyZ2luLWJvdHRvbTowfSNwcmUtZGVmaW5lZC10YWctY29udGFpbmVyIC50b29sdG9wLXRhZyAuZGFzaGljb25zLWVkaXRvci1oZWxwe2ZvbnQtc2l6ZToxM3B4O2xpbmUtaGVpZ2h0OjEuNX0ubm8tZmllbGRzLWFzc2lnbmVkLW5vdGljZXttYXJnaW46NGVtIDAgMi4yNWVtO3BhZGRpbmctYm90dG9tOjZlbTt3aWR0aDoxMDAlO3RleHQtYWxpZ246Y2VudGVyO2JhY2tncm91bmQ6dXJsKC4uLy4uL2luY2x1ZGVzL2ltYWdlcy9uby1mb3JtLWZpZWxkcy1hc3NpZ25lZC1hcnJvdy5qcGcpIGJvdHRvbSBjZW50ZXIgbm8tcmVwZWF0O2JhY2tncm91bmQtc2l6ZToxMDVweH0ueWlrZXMtZWFzeS1tYy13aWRnZXQtcHJlbG9hZGVye3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6NDglO21hcmdpbi10b3A6LTk2cHh9Lnlpa2VzLWRhc2hib2FyZC13aWRnZXQtc2VjdGlvbntwYWRkaW5nOjAgMTJweCAxMnB4fS5zZWxlY3QtbGlzdC10aXRsZXtwYWRkaW5nLWxlZnQ6MH0ueWlrZXMtZGFzaGJvYXJkLXdpZGdldC1zZWN0aW9uIC5kZXNjcmlwdGlvbnttYXJnaW46LjVlbSAwIDB9LiBlcnJvci1kZXNjcmlwaW9ue3BhZGRpbmctdG9wOi41ZW19Lnlpa2VzLW1jLWZyZWRkaWUtbG9nb3tmbG9hdDpsZWZ0O21hcmdpbi1yaWdodDoxMHB4fS5tdl9pZ19saXN0e3dpZHRoOjk0JTttYXJnaW4tYm90dG9tOjhweCFpbXBvcnRhbnQ7Ym9yZGVyOm5vbmUhaW1wb3J0YW50O2JhY2tncm91bmQ6MCAwIWltcG9ydGFudH0ubXZfaWdfbGlzdCAubGlzdC1jb250YWluZXJ7cG9zaXRpb246YWJzb2x1dGV9Lm12X2lnX2xpc3QgYXt3aWR0aDo0OCU7cGFkZGluZzo1cHggMCFpbXBvcnRhbnQ7dGV4dC1hbGlnbjpjZW50ZXI7bWFyZ2luOjB9Lm12X2lnX2xpc3QgYTpmaXJzdC1jaGlsZHttYXJnaW4tcmlnaHQ6MH0ubXZfaWdfbGlzdCBhOmxhc3QtY2hpbGR7ZmxvYXQ6cmlnaHR9Lm12X2lnX2xpc3QgLm5hdi10YWJ7Ym9yZGVyOjFweCBzb2xpZCAjY2NjfS5tdl9pZ19saXN0IC5uYXYtdGFiLWFjdGl2ZXtjb2xvcjojZmZmO2ZvbnQtd2VpZ2h0OjcwMDtiYWNrZ3JvdW5kOiMwMGEwZDJ9Lm12X2lnX2xpc3QgLmFycm93LWRvd257cG9zaXRpb246YWJzb2x1dGU7bWFyZ2luLXRvcDoyMXB4O21hcmdpbi1sZWZ0OjUwcHg7d2lkdGg6MDtoZWlnaHQ6MDtib3JkZXItbGVmdDoxMnB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yaWdodDoxMnB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci10b3A6MTJweCBzb2xpZCAjMDBhMGQyfSNjb250YWluZXItY29udGFpbmVye2Rpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOjUyMXB4fSNjb250YWluZXItY29udGFpbmVyIC5saXN0LWNvbnRhaW5lcntmbG9hdDpsZWZ0O3dpZHRoOjI0MHB4O3Bvc2l0aW9uOnJlbGF0aXZlfSNjb250YWluZXItY29udGFpbmVyIC5saXN0LWNvbnRhaW5lcjpsYXN0LWNoaWxke21hcmdpbi1sZWZ0OjJlbX0jeWlrZXNfZWFzeV9tY190b29sYmFye21hcmdpbi10b3A6LS43NWVtfSN5aWtlc19lYXN5X21jX3Rvb2xiYXJfbGlua3N7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6MTAwJTttYXJnaW46MDtwYWRkaW5nOjEwcHggMH0jeWlrZXNfZWFzeV9tY190b29sYmFyX2xpbmtzIGxpe2Zsb2F0OmxlZnQ7bWFyZ2luOjAgLjVlbX0jeWlrZXNfZWFzeV9tY190b29sYmFyX2xpbmtzIGxpIGF7dGV4dC1kZWNvcmF0aW9uOm5vbmU7ZGlzcGxheTppbmxpbmUtYmxvY2t9I3lpa2VzX2Vhc3lfbWNfdG9vbGJhcl9saW5rcyBsaSBhLnNlbGVjdGVkX2hpZGRlbl9zZXR0aW5ne2NvbG9yOiMzMzM7bWFyZ2luLWJvdHRvbTozcHh9I3lpa2VzX2Vhc3lfbWNfdG9vbGJhcl9saW5rcyBsaSAuc2VsZWN0ZWRfc2V0dGluZ190cmlhbmdsZXt3aWR0aDowO2hlaWdodDowO2JvcmRlci1sZWZ0OjEzcHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJpZ2h0OjEzcHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXRvcDoxM3B4IHNvbGlkIHJnYmEoMjA2LDIwNiwyMDYsMSk7bWFyZ2luOjAgYXV0b30uY2hlY2tib3gtc2V0dGluZ3MtbGlzdC1kcm9wZG93biwub3B0aW4tY2hlY2tib3gtbGFiZWwtaW5wdXR7d2lkdGg6MjUwcHg7ZGlzcGxheTpibG9ja30jeWlrZXNfZWFzeV9tY190b29sYmFyX2xpbmtzIGxpIGEuZm9ybS1idWlsZGVyOmJlZm9yZXtjb250ZW50OlwiXFxmMTE2XCI7Zm9udC1mYW1pbHk6ZGFzaGljb25zfSN5aWtlc19lYXN5X21jX3Rvb2xiYXJfbGlua3MgbGkgYS5mb3JtLWN1c3RvbWl6ZXI6YmVmb3Jle2NvbnRlbnQ6XCJcXGYxMDBcIjtmb250LWZhbWlseTpkYXNoaWNvbnN9I3lpa2VzX2Vhc3lfbWNfdG9vbGJhcl9saW5rcyBsaSBhLmVycm9yLW1lc3NhZ2VzOmJlZm9yZXtjb250ZW50OlwiXFxmMTE3XCI7Zm9udC1mYW1pbHk6ZGFzaGljb25zfSN5aWtlc19lYXN5X21jX3Rvb2xiYXJfbGlua3MgbGkgYS5mb3JtLXNldHRpbmdzOmJlZm9yZXtjb250ZW50OlwiXFxmMTExXCI7Zm9udC1mYW1pbHk6ZGFzaGljb25zfSNjaGVja2JveC1zZXR0aW5ncy1mb3JtIC5kYXNoaWNvbnMtZWRpdG9yLWhlbHB7Zm9udC1zaXplOjE1cHg7bGluZS1oZWlnaHQ6MS42fS5uby1saXN0cy1zZXR1cC1ub3RpY2V7cGFkZGluZzouNWVtIDB9Lnlpa2VzLWZvcm0taWQtbnVtYmVye3dpZHRoOjU1cHh9c3Bhblt0aXRsZT1JbXByZXNzaW9uc106aG92ZXIsc3Bhblt0aXRsZT1TdWJtaXNzaW9uc106aG92ZXIsc3Bhblt0aXRsZT1cIkNvbnZlcnNpb24gUmF0ZVwiXTpob3ZlcntkaXNwbGF5OmJsb2NrO2N1cnNvcjpwb2ludGVyfS5mb3JtLWlkLWNvbnRhaW5lcntwYWRkaW5nOjFweCA4cHg7Ym9yZGVyLXJhZGl1czo1cHg7YmFja2dyb3VuZDojNDlhOWVjO2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojZmZmfS5tYW5hZ2UtZm9ybS1hZG1pbi1ub3RpY2V7bWFyZ2luLXRvcDoxLjc1ZW0haW1wb3J0YW50fS5yZW1vdmUtbm90aWZpY2F0aW9uLC55aWtlcy1tYy1zZXR0aW5ncy1leHBhbnNpb24tc2VjdGlvbiBhLnJlbW92ZS1maWVsZCxhLnlpa2VzLWRlbGV0ZS1tYWlsY2hpbXAtZm9ybSxhLnlpa2VzLWRlbGV0ZS1zdWJzY3JpYmVye2NvbG9yOiNkOTYwNjAhaW1wb3J0YW50fS55aWtlcy1kZWxldGUtbWFpbGNoaW1wLWZvcm17bWFyZ2luLXRvcDo2cHh9I3Bvc3Rib3gtY29udGFpbmVyLTEgLnlpa2VzLWRlbGV0ZS1tYWlsY2hpbXAtZm9ybXtmbG9hdDpyaWdodH0uZm9ybS1idXR0b25zLWNvbnRhaW5lcntkaXNwbGF5OmJsb2NrO3BhZGRpbmc6MTFweCAxMHB4fS5mb3Jtcy1idXR0b25zLWNvbnRhaW5lciBpbnB1dFt0eXBlPXN1Ym1pdF17bWFyZ2luOjAgMCAuNWVtfS51cGRhdGUtZm9ybS1zcGlubmVye3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDtyaWdodDowO21hcmdpbjowIGF1dG87Ym90dG9tOjEzcHh9Lnlpa2VzLW1jLXNob3J0Y29kZS1pbnB1dHt0ZXh0LWFsaWduOmNlbnRlcjt3aWR0aDoxMDAlO2NvbG9yOiMzMzN9LmhpZGRlbi1jbGFzc3tkaXNwbGF5Om5vbmUhaW1wb3J0YW50fS5zdGF0LWNvbnRhaW5lcnt3aWR0aDoxMCU7bWF4LXdpZHRoOjc1cHh9Lm5vLWN1cnJlbnQtc3Vic2NyaWJlci1ub3RpY2UgZW0sLm5vLW1haWxjaGltcC1mb3Jtcy1mb3VuZCBlbXtwYWRkaW5nOjI1cHggMCAyNXB4IDI1cHh9LmNvbHVtbi1jb2x1bW5uYW1lIHNwYW4uc3RhdHN7ZGlzcGxheTpibG9jazt3aWR0aDoxMDAlO3RleHQtYWxpZ246Y2VudGVyfS5jb2x1bW4tY29sdW1ubmFtZSBzcGFuLnN0YXRzIHNwYW57ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6MjAlfS5jb2x1bW4tY29sdW1ubmFtZSBzcGFuLnN0YXRzIHNwYW46aG92ZXJ7Y3Vyc29yOnBvaW50ZXJ9I2F2YWlsYWJsZS1maWVsZHMgbGksI2F2YWlsYWJsZS1pbnRlcmVzdC1ncm91cHMgbGl7dGV4dC1kZWNvcmF0aW9uOm5vbmU7ZGlzcGxheTpibG9jaztib3JkZXI6MXB4IHNvbGlkIHJnYmEoMTc3LDE3NywxNzcsLjcxKTtjb2xvcjojMzMzO3BhZGRpbmc6NXB4O21hcmdpbjouNWVtIDB9I2F2YWlsYWJsZS1maWVsZHMgbGkubm90LWF2YWlsYWJsZSwjYXZhaWxhYmxlLWludGVyZXN0LWdyb3VwcyBsaS5ub3QtYXZhaWxhYmxle29wYWNpdHk6LjYhaW1wb3J0YW50fSNhdmFpbGFibGUtZmllbGRzIGxpLmZpZWxkLXRvLWFkZC10by1mb3JtLCNhdmFpbGFibGUtaW50ZXJlc3QtZ3JvdXBzIGxpLmdyb3VwLXRvLWFkZC10by1mb3Jte2JhY2tncm91bmQ6cmdiYSg0NiwxNjIsMjA0LC4yNSl9LmFkZC1maWVsZC10by1lZGl0b3IgLmFkZC10by1mb3JtLWJ1aWxkZXItYXJyb3csLmJ1dHRvbi1zZWNvbmRhcnkgLmFkZC10by1mb3JtLWJ1aWxkZXItYXJyb3d7d2lkdGg6MTVweDtmb250LXNpemU6MTVweDtsaW5lLWhlaWdodDoxLjh9LmNsZWFyLWZvcm0tZmllbGRze2JhY2tncm91bmQ6I2UxNGQ0Mztib3JkZXItY29sb3I6I2QwMmMyMTtjb2xvcjojZmZmO2JveC1zaGFkb3c6aW5zZXQgMCAxcHggMCAjZWM4Yjg1LDAgMXB4IDAgcmdiYSgwLDAsMCwuMTUpO3RleHQtZGVjb3JhdGlvbjpub25lO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDoyOHB4O3BhZGRpbmc6MCAxMHB4IDFweDtib3JkZXItd2lkdGg6MXB4Oy13ZWJraXQtYXBwZWFyYW5jZTpub25lO2JvcmRlci1yYWRpdXM6M3B4O3doaXRlLXNwYWNlOm5vd3JhcDtmb250LXNpemU6MTNweDtsaW5lLWhlaWdodDoyNnB4O2JveC1zaXppbmc6Ym9yZGVyLWJveDstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDstbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDtmbG9hdDpyaWdodDttYXJnaW46MCAxMXB4IDEwcHggMH0uY2xlYXItZm9ybS1maWVsZHM6YWN0aXZlLC5jbGVhci1mb3JtLWZpZWxkczpmb2N1cywuY2xlYXItZm9ybS1maWVsZHM6aG92ZXJ7YmFja2dyb3VuZDojZGQzODJkO2JvcmRlci1jb2xvcjojYmEyODFlO2NvbG9yOiNmZmY7Ym94LXNoYWRvdzppbnNldCAwIDFweCAwICNlODc3NmZ9Lnlpa2VzLW1jLXZpZXctbGlzdC1icmVhZGNydW1ic3twYWRkaW5nOi44ZW07Ym9yZGVyOjFweCBzb2xpZCAjRDhEOEQ4O2JhY2tncm91bmQ6I0VDRUNFQzttYXJnaW46MS41ZW0gMCAuOGVtfS55aWtlcy1tYy1tZW1iZXItcmF0aW5nLXN0YXJ7Y29sb3I6I2RhYTUyMH0jeWlrZXMtbWMtc3Vic2NyaWJlci1jYXJkLXdyYXBwZXJ7YmFja2dyb3VuZDojZmVmZWZlO21pbi1oZWlnaHQ6MjAwcHg7ZGlzcGxheTppbmxpbmUtYmxvY2s7Ym94LXNoYWRvdzowIDFweCAxcHggcmdiYSgwLDAsMCwuMDQpO3dlYmtpdC1ib3gtc2hhZG93OjAgMXB4IDFweCByZ2JhKDAsMCwwLC4wNCk7Ym9yZGVyOjFweCBzb2xpZCAjZTVlNWU1O3BhZGRpbmc6MTVweCAyMHB4O3dpZHRoOjUwMHB4O2Zsb2F0OmxlZnR9I3lpa2VzLW1jLXN1YnNjcmliZXItY2FyZC13cmFwcGVyIC5zdWJzY3JpYmVyLW9wdGluLWlwe2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbjoxZW0gMCAwO2ZvbnQtc3R5bGU6aXRhbGljfS52aWV3LXVzZXItZGF0YS13cmFwICNjdXN0b21lci10YWItd3JhcHBlci1saXN0e2Zsb2F0OmxlZnQ7YmFja2dyb3VuZDojZmVmZWZlO21hcmdpbi10b3A6MDtwYWRkaW5nOjEycHg7bWFyZ2luLWxlZnQ6LTFweDtib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNlNWU1ZTU7Ym9yZGVyLXRvcDoxcHggc29saWQgI2U1ZTVlNTtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZTVlNWU1fS52aWV3LXVzZXItZGF0YS13cmFwICNjdXN0b21lci10YWItd3JhcHBlci1saXN0IC5kYXNoaWNvbnN7Zm9udC1zaXplOjIzcHg7aGVpZ2h0OjIzcHg7d2lkdGg6MjNweDttYXJnaW46M3B4IDB9LnZpZXctdXNlci1kYXRhLXdyYXAgI2N1c3RvbWVyLXRhYi13cmFwcGVyLWxpc3QgbGkuaW5hY3RpdmV7Y29sb3I6cmdiYSg1MSw1MSw1MSwuMzEpO3RyYW5zaXRpb246Y29sb3IgZWFzZS1vdXQgLjFzfS52aWV3LXVzZXItZGF0YS13cmFwICNjdXN0b21lci10YWItd3JhcHBlci1saXN0IGxpLmFjdGl2ZSwudmlldy11c2VyLWRhdGEtd3JhcCAjY3VzdG9tZXItdGFiLXdyYXBwZXItbGlzdCBsaS5pbmFjdGl2ZTpob3Zlcntjb2xvcjpyZ2JhKDUxLDUxLDUxLDEpfSN5aWtlcy1tYy1zdWJzY3JpYmVyLWNhcmQtd3JhcHBlciAueWlrZXMtbWMtY2FyZC10b3AgLm1lbWJlci1zdGFyLXJhdGluZy1jb250YWluZXIsI3lpa2VzLW1jLXN1YnNjcmliZXItY2FyZC13cmFwcGVyIC55aWtlcy1tYy1jYXJkLXRvcCBoMiwjeWlrZXMtbWMtc3Vic2NyaWJlci1jYXJkLXdyYXBwZXIgLnlpa2VzLW1jLWNhcmQtdG9wIGltZ3tmbG9hdDpsZWZ0fSN5aWtlcy1tYy1zdWJzY3JpYmVyLWNhcmQtd3JhcHBlciAjZGVsZXRlLW1haWxjaGltcC1zdWJzY3JpYmVye2Rpc3BsYXk6YmxvY2s7bWFyZ2luOjAgYXV0b30jeWlrZXMtbWMtc3Vic2NyaWJlci1jYXJkLXdyYXBwZXIgLnlpa2VzLW1jLWNhcmQtdG9wIGltZ3tib3JkZXItcmFkaXVzOjNweH0jeWlrZXMtbWMtc3Vic2NyaWJlci1jYXJkLXdyYXBwZXIgLm1lcmdlLXZhcmlhYmxlLXNlY3Rpb24gbGl7ZGlzcGxheTppbmxpbmUtYmxvY2s7bGlzdC1zdHlsZTpub25lO2Zsb2F0OmxlZnQ7d2lkdGg6NTAlO21pbi1oZWlnaHQ6NjVweDtib3JkZXItYm90dG9tOjFweCBkb3R0ZWQgI2RkZH0jeWlrZXMtbWMtc3Vic2NyaWJlci1jYXJkLXdyYXBwZXIgLm1lcmdlLXZhcmlhYmxlLXNlY3Rpb24gbGkgcHttYXJnaW46MCAwIDFlbX0jeWlrZXMtbWMtc3Vic2NyaWJlci1jYXJkLXdyYXBwZXIgLnlpa2VzLW1jLWNhcmQtdG9wIGgye21heC13aWR0aDozNzBweDt3aWR0aDo3NSU7cGFkZGluZzowfSN5aWtlcy1tYy1zdWJzY3JpYmVyLWNhcmQtd3JhcHBlciAubWVtYmVyLXN0YXItcmF0aW5nLWNvbnRhaW5lcntkaXNwbGF5OmJsb2NrO21hcmdpbjouNWVtIDAgLjVlbSAxMHB4fSN5aWtlcy1tYy1zdWJzY3JpYmVyLWNhcmQtd3JhcHBlciBoMnttYXJnaW4tbGVmdDoxMHB4O21hcmdpbi10b3A6MDtwYWRkaW5nLXRvcDowfSN5aWtlcy1tYy1zdWJzY3JpYmVyLWNhcmQtd3JhcHBlciAueWlrZXMtbWMtY2FyZC1ib2R5LCN5aWtlcy1tYy1zdWJzY3JpYmVyLWNhcmQtd3JhcHBlciAueWlrZXMtbWMtY2FyZC10b3B7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6MTAwJX0ubWVtYmVyLWxvY2F0aW9uLWRhdGEsLm1lbWJlci1zdWJzY3JpcHRpb24tZGF0ZXt3aWR0aDo3MCU7bWF4LXdpZHRoOjM3MHB4O2Rpc3BsYXk6YmxvY2s7ZmxvYXQ6bGVmdH0jeWlrZXMtbWMtc3Vic2NyaWJlci1jYXJkLXdyYXBwZXIgLnlpa2VzLW1jLWNhcmQtYm9keSBoNHttYXJnaW4tdG9wOjA7bWFyZ2luLWxlZnQ6NXB4fS55aWtlcy1tYy1zdWJzY3JpYmVyLWhye21hcmdpbjoxLjVlbSAwfS5tZW1iZXItc3Vic2NyaXB0aW9uLWRhdGV7bWFyZ2luOi41ZW0gMCAuNWVtIDEwcHh9Lm1lbWJlci1sb2NhdGlvbi1kYXRhe21hcmdpbjouMjVlbSAwIC4yNWVtIDEwcHh9LmFkZG9uLXJlcXVpcmVkLWxpbmt7Y29sb3I6IzMzMztvcGFjaXR5Oi41fS52aWV3LWxpc3Qtc2lkZWJhci1pbnB1dHtjb2xvcjojMzMzfS5pbnRlcmVzdC1ncm91cC11bCwubWVyZ2UtdmFyaWFibGUtdWwsLnNlZ21lbnQtdWx7cGFkZGluZy1sZWZ0OjE1cHg7Zm9udC1zaXplOjE0cHh9LmludGVyZXN0LWdyb3VwLXVsIGxpIC5kYXNoaWNvbnMsLm1lcmdlLXZhcmlhYmxlLXVsIGxpIC5kYXNoaWNvbnN7bGluZS1oZWlnaHQ6MS44O2ZvbnQtc2l6ZTo5cHh9YS5idXR0b24tcHJpbWFyeS5lZGl0LWZpZWxkcy1idXR0b257bWFyZ2luOjAgMCAxMHB4IDE1cHh9LmludGVyZXN0LWdyb3VwLWNvdW50LC5tZXJnZS12YXJpYWJsZS1jb3VudCwuc2VnbWVudC1ncm91cC1jb3VudHt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO21hcmdpbi1ib3R0b206Ljc1ZW07cGFkZGluZy1sZWZ0OjdweH1ib2R5LmFkbWluX3BhZ2VfeWlrZXMtbWFpbGNoaW1wLWVkaXQtZm9ybSAudWktZGF0ZXBpY2tlciAudWktZGF0ZXBpY2tlci1jYWxlbmRhciB0ZCBhLGJvZHkuYWRtaW5fcGFnZV95aWtlcy1tYWlsY2hpbXAtZWRpdC1mb3JtIC51aS1kYXRlcGlja2VyIGEsYm9keS5hZG1pbl9wYWdlX3lpa2VzLW1haWxjaGltcC1lZGl0LWZvcm0gLnVpLWRhdGVwaWNrZXIgYTpob3Zlcnt0ZXh0LWRlY29yYXRpb246bm9uZX0uaW50ZXJlc3QtZ3JvdXAtdGl0bGV7cGFkZGluZy1sZWZ0OjVweH0uZWRpdC1zZWdtZW50cy1idXR0b257bWFyZ2luOjAgMCAxMHB4IDE1cHh9LmVkaXQtc2VnbWVudC1kZXNjcmlwdGlvbntwYWRkaW5nOjAgMCAxMHB4IDE1cHh9I2NyZWRpdC1jb250YWluZXJ7bWFyZ2luLXRvcDoxLjVlbX0ueWlrZXMtZWFzeS1tYWlsY2hpbXAtY3VzdG9tLWNvbnRlbnQtaWNvbntmb250LXNpemU6MTVweDtsaW5lLWhlaWdodDoxfS5jdXN0b20tZmllbGQtc2VjdGlvbntkaXNwbGF5OmJsb2NrO21hcmdpbjoxZW0gMH0jYXNzb2NpYXRlZC1saXN0e3dpZHRoOjEwMCU7bWFyZ2luLXRvcDo1cHh9I3JlZGlyZWN0LXVzZXItdG8tc2VsZWN0aW9ue3dpZHRoOjEwMCV9I2VkaXQteWlrZXMtbWMtZm9ybSBsYWJlbCBoM3ttYXJnaW4tbGVmdDowO3BhZGRpbmctbGVmdDowfSNhdmFpbGFibGUtZmllbGRzIC5maWVsZC1yZXF1aXJlZHtjb2xvcjojZDk2MDYwIWltcG9ydGFudH1ib2R5LmFkbWluX3BhZ2VfeWlrZXMtbWFpbGNoaW1wLWVkaXQtZm9ybSAjcG9zdHN0dWZmIGgye3BhZGRpbmc6OHB4IDEycHg7bWFyZ2luLXRvcDowfS5lZGl0LWZvcm0tZm9ybS1kZXNjcmlwdGlvbnt3aWR0aDoxMDAlO3Jlc2l6ZTp2ZXJ0aWNhbDttaW4taGVpZ2h0OjY1cHg7bWF4LWhlaWdodDoxMDBweH0uZWRpdC1mb3JtLXRpdGxle3BhZGRpbmctbGVmdDoxMnB4IWltcG9ydGFudH0jZWRpdC1mb3JtLWRlc2NyaXB0aW9ue3BhZGRpbmc6MCAxMnB4O21hcmdpbjoxZW0gMH0ueWlrZXMtZWFzeS1tYy1wb3N0Ym94e292ZXJmbG93OmhpZGRlbn0ubm8taW50ZXJlc3QtZ3JvdXBzLWZvdW5kLW1lc3NhZ2V7b3BhY2l0eTouMzV9LnVwZ3JhZGluZy1lbGxpcHNlLW9uZSwudXBncmFkaW5nLWVsbGlwc2UtdHdvey1tcy1maWx0ZXI6XCJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0wKVwiOy1tb3otb3BhY2l0eTowOy13ZWJraXQtYW5pbWF0aW9uOmRvdCAxLjNzIGluZmluaXRlfSNpbnRlcmVzdC1ncm91cHMtY29udGFpbmVyIC5kZXNjcmlwdGlvbiwjbWVyZ2UtdmFyaWFibGVzLWNvbnRhaW5lciAuZGVzY3JpcHRpb257cGFkZGluZy10b3A6LjVlbX0uaW5zaWRlLXNlY3Rpb24tMXttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbToxLjVlbX0uaW5zaWRlLXNlY3Rpb24tMnttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbToyZW19LmZvcm0tZmllbGQtY29udGFpbmVyLXNwYW57ZGlzcGxheTpibG9jazttYXJnaW46LjVlbSAwfSNzdHlsZS1saXN0IHVsIGxpe2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJTttYXJnaW46MWVtIDB9LmZvcm0tc3R5bGUtYWRqdXN0bWVudCwud3AtcGlja2VyLWNvbnRhaW5lcntkaXNwbGF5OmJsb2NrIWltcG9ydGFudDt3aWR0aDoxMDAlO21hcmdpbjouNWVtIDB9LmR5bmFtaWMtZW1haWwtdGFne2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi1yaWdodDo1cHh9LmR5bmFtaWMtdGFnLWRlc2NyaXB0aW9uIHRke3BhZGRpbmctdG9wOjB9I2NyZWF0ZS1uZXctbm90aWZpY2F0aW9uLWJ1dHRvbnttYXJnaW4tdG9wOjFlbX0uZmlsZS1jb250YWluZXJ7ZGlzcGxheTpub25lfS55aWtlcy1tYWlsY2hpbXAtZmlsZS1maWVsZCBpbnB1dFtuYW1lKj1cImN1c3RvbS1maWVsZFtpbmNlbnRpdmUtYXR0YWNobWVudF1cIl17bWFyZ2luLWJvdHRvbTouNWVtfS55aWtlcy1tYWlsY2hpbXAtZmlsZS1maWVsZCBpbnB1dFtuYW1lKj1cImN1c3RvbS1maWVsZFtpbmNlbnRpdmUtYXR0YWNobWVudF1cIl0rLmJ1dHRvbi1zZWNvbmRhcnl7bWFyZ2luLWxlZnQ6NHB4fWlucHV0I3VwbG9hZC1idG5bZGF0YS1hdHRyLXBvc2l0aW9uPVwiMVwiXXttYXJnaW4tbGVmdDowfS5yZW1vdmUtZmlsZS1idXR0b257YmFja2dyb3VuZDp1cmwoLi4vcGFydGlhbHMvaGVscGVycy9maWVsZHMvaW1nL2ljb24tZGVsZXRlLnBuZyk7aGVpZ2h0OjE2cHg7cG9zaXRpb246YWJzb2x1dGU7dGV4dC1pbmRlbnQ6LTk5OTk5cHg7d2lkdGg6MTZweH1hLmFkZC1uZXctaW5jZW50aXZlLWF0dGFjaG1lbnR7ZGlzcGxheTpibG9jazt3aWR0aDo0MHB4O21hcmdpbi1yaWdodDoxMDAlIWltcG9ydGFudDttYXJnaW4tdG9wOi41ZW0haW1wb3J0YW50fWEuYWRkLW5ldy1pbmNlbnRpdmUtYXR0YWNobWVudCAuZGFzaGljb25ze2ZvbnQtc2l6ZToxNXB4O2xpbmUtaGVpZ2h0OjEuOH0uZm9ybS1idWlsZGVyLXBsYWNlaG9sZGVye2JhY2tncm91bmQ6cmdiYSgyMDYsMjA2LDIwNiwuMik7aGVpZ2h0OjMwcHh9LmFkbWluX3BhZ2VfeWlrZXMtbWFpbGNoaW1wLWVkaXQtZm9ybSAjZm9ybS1zZXR0aW5ncyAuc2VjdGlvbi10aXRsZXtmb250LXNpemU6MWVtO2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHJnYmEoMTg3LDE4NywxODcsLjI5KTtkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCU7cGFkZGluZy1ib3R0b206NnB4O21hcmdpbi1ib3R0b206LjVlbTttYXJnaW4tdG9wOjEuNWVtfS5hZG1pbl9wYWdlX3lpa2VzLW1haWxjaGltcC1lZGl0LWZvcm0gI2Zvcm0tc2V0dGluZ3MgLnNlY3Rpb24taW50ZXJpb3IgbGFiZWwsLmFkbWluX3BhZ2VfeWlrZXMtbWFpbGNoaW1wLWVkaXQtZm9ybSAjZm9ybS1zZXR0aW5ncyAuc2VjdGlvbi10aXRsZS5maXJzdHttYXJnaW4tdG9wOjB9LmFkbWluX3BhZ2VfeWlrZXMtbWFpbGNoaW1wLWVkaXQtZm9ybSAjZm9ybS1zZXR0aW5ncyAuc2VjdGlvbi1pbnRlcmlvcntkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDoxMDAlO2JveC1zaXppbmc6Ym9yZGVyLWJveDstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDstbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDtiYWNrZ3JvdW5kOnJnYmEoMjQxLDI0MSwyNDEsLjc1KTtwYWRkaW5nOjFlbX1sYWJlbC5sb2dpbi1yZXN0cmljdGlvbi1jZW50ZXJ7ZGlzcGxheTpibG9jazt3aWR0aDoxMDAlfS5hZG1pbl9wYWdlX3lpa2VzLW1haWxjaGltcC1lZGl0LWZvcm0gI2Zvcm0tc2V0dGluZ3MgLnNlY3Rpb24taW50ZXJpb3IgLmRhdGUtcmVzdGlyY3Rpb24tc2VjdGlvbntkaXNwbGF5OmlubGluZS1ibG9ja30uYWRtaW5fcGFnZV95aWtlcy1tYWlsY2hpbXAtZWRpdC1mb3JtICNmb3JtLXNldHRpbmdzIC5zZWN0aW9uLWludGVyaW9yIC5kYXRlLXJlc3RpcmN0aW9uLXNlY3Rpb24gcC5kZXNjcmlwdGlvbi5lcnJvcntjb2xvcjojRjU2MDYwfS5hZG1pbl9wYWdlX3lpa2VzLW1haWxjaGltcC1lZGl0LWZvcm0gI2Zvcm0tc2V0dGluZ3MgLnNlY3Rpb24taW50ZXJpb3IgLmRhdGUtcmVzdGlyY3Rpb24tc2VjdGlvbiBsYWJlbHtmbG9hdDpsZWZ0O21hcmdpbi1yaWdodDouNWVtO21hcmdpbi10b3A6MDttYXJnaW4tYm90dG9tOjB9LmFkbWluX3BhZ2VfeWlrZXMtbWFpbGNoaW1wLWVkaXQtZm9ybSAjZm9ybS1zZXR0aW5ncyAuc2VjdGlvbi1pbnRlcmlvciAubmVzdGVkLWNoaWxkIC55aWtlcy1lYXN5LW1jLWZvcm0tcmVzdHJpY3Rpb24tZXhwaXJlZC1tZXNzYWdlLC5hZG1pbl9wYWdlX3lpa2VzLW1haWxjaGltcC1lZGl0LWZvcm0gI2Zvcm0tc2V0dGluZ3MgLnNlY3Rpb24taW50ZXJpb3IgLm5lc3RlZC1jaGlsZCAueWlrZXMtZWFzeS1tYy1mb3JtLXJlc3RyaWN0aW9uLWxvZ2luLW1lc3NhZ2UsLmFkbWluX3BhZ2VfeWlrZXMtbWFpbGNoaW1wLWVkaXQtZm9ybSAjZm9ybS1zZXR0aW5ncyAuc2VjdGlvbi1pbnRlcmlvciAubmVzdGVkLWNoaWxkIC55aWtlcy1lYXN5LW1jLWZvcm0tcmVzdHJpY3Rpb24tcGVuZGluZy1tZXNzYWdle2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJTttaW4taGVpZ2h0OjUwcHh9LmFkbWluX3BhZ2VfeWlrZXMtbWFpbGNoaW1wLWVkaXQtZm9ybSAjZm9ybS1zZXR0aW5ncyAuc2VjdGlvbi1pbnRlcmlvciAubmVzdGVkLWNoaWxke2Zsb2F0OmxlZnQ7cGFkZGluZy1sZWZ0OjIlO3dpZHRoOjk4JTtib3JkZXItbGVmdDoxcHggZGFzaGVkICNCREJEQkQ7Ym9yZGVyLXNwYWNpbmc6MnB4O21hcmdpbjouNWVtIDAgMWVtfS5hZG1pbl9wYWdlX3lpa2VzLW1haWxjaGltcC1lZGl0LWZvcm0gI2Zvcm0tc2V0dGluZ3MgLnNlY3Rpb24taW50ZXJpb3IgLm5lc3RlZC1jaGlsZCAueWlrZXMtZWFzeS1tYy1zdWJtaXQtYnV0dG9uLXRleHR7bWFyZ2luOjB9LmFkbWluX3BhZ2VfeWlrZXMtbWFpbGNoaW1wLWVkaXQtZm9ybSAjZm9ybS1zZXR0aW5ncyAuc2VjdGlvbi1pbnRlcmlvciAuZGF0ZS1yZXN0aXJjdGlvbi1zZWN0aW9ue21hcmdpbi1ib3R0b206MH0uYWRtaW5fcGFnZV95aWtlcy1tYWlsY2hpbXAtZWRpdC1mb3JtICNmb3JtLXNldHRpbmdzIC5zZWN0aW9uLWludGVyaW9yIC5kYXRlLXJlc3RpcmN0aW9uLXNlY3Rpb24ubGFzdHttYXJnaW4tYm90dG9tOi43NWVtfS5hZG1pbl9wYWdlX3lpa2VzLW1haWxjaGltcC1lZGl0LWZvcm0gI2Zvcm0tc2V0dGluZ3MgLnNlY3Rpb24taW50ZXJpb3IgLm5lc3RlZC1jaGlsZC5oaWRkZW57ZGlzcGxheTpub25lfS5hZG1pbl9wYWdlX3lpa2VzLW1haWxjaGltcC1lZGl0LWZvcm0gI2Zvcm0tc2V0dGluZ3MgLnNlY3Rpb24taW50ZXJpb3IgLmRlc2NyaXB0aW9uK2xhYmVse21hcmdpbi10b3A6MWVtO2Zsb2F0OmxlZnQ7d2lkdGg6MTAwJX0uYWRtaW5fcGFnZV95aWtlcy1tYWlsY2hpbXAtZWRpdC1mb3JtICNmb3JtLXNldHRpbmdzIC5zZWN0aW9uLWludGVyaW9yIGxhYmVsLmlubGluZS1mb3JtLWxhYmVse21hcmdpbi1ib3R0b206MDttYXJnaW4tdG9wOjB9LmFkbWluX3BhZ2VfeWlrZXMtbWFpbGNoaW1wLWVkaXQtZm9ybSAjZm9ybS1zZXR0aW5ncyAuc2VjdGlvbi1pbnRlcmlvciAuZGVzY3JpcHRpb257ZGlzcGxheTpibG9jazt3aWR0aDoxMDAlO2Zsb2F0OmxlZnR9LmFkbWluX3BhZ2VfeWlrZXMtbWFpbGNoaW1wLWVkaXQtZm9ybSAjZm9ybS1zZXR0aW5ncyAubmVzdGVkLWNoaWxkIHN0cm9uZzpmaXJzdC1jaGlsZCwuYWRtaW5fcGFnZV95aWtlcy1tYWlsY2hpbXAtZWRpdC1mb3JtICNmb3JtLXNldHRpbmdzIC5zZWN0aW9uLWludGVyaW9yIHN0cm9uZzpmaXJzdC1jaGlsZHtkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCV9LmFkbWluX3BhZ2VfeWlrZXMtbWFpbGNoaW1wLWVkaXQtZm9ybSAjZm9ybS1zZXR0aW5ncyAuaW5saW5lLWZvcm0tbGFiZWx7ZmxvYXQ6bGVmdDttYXJnaW4tcmlnaHQ6MTBweH1ib2R5LmFkbWluX3BhZ2VfeWlrZXMtbWFpbGNoaW1wLWVkaXQtZm9ybSAudWktdGltZXBpY2tlci13cmFwcGVye292ZXJmbG93LXk6YXV0bztoZWlnaHQ6MTUwcHg7d2lkdGg6MTcwcHg7YmFja2dyb3VuZDojZmZmO2JvcmRlcjoxcHggc29saWQgI2RkZDtib3gtc2hhZG93OjAgNXB4IDEwcHggcmdiYSgwLDAsMCwuMik7b3V0bGluZTowO3otaW5kZXg6MTAwMDE7bWFyZ2luOjB9Ym9keS5hZG1pbl9wYWdlX3lpa2VzLW1haWxjaGltcC1lZGl0LWZvcm0gLnVpLXRpbWVwaWNrZXItd3JhcHBlci51aS10aW1lcGlja2VyLXdpdGgtZHVyYXRpb257d2lkdGg6MTNlbX1ib2R5LmFkbWluX3BhZ2VfeWlrZXMtbWFpbGNoaW1wLWVkaXQtZm9ybSAudWktdGltZXBpY2tlci13cmFwcGVyLnVpLXRpbWVwaWNrZXItd2l0aC1kdXJhdGlvbi51aS10aW1lcGlja2VyLXN0ZXAtMzAsYm9keS5hZG1pbl9wYWdlX3lpa2VzLW1haWxjaGltcC1lZGl0LWZvcm0gLnVpLXRpbWVwaWNrZXItd3JhcHBlci51aS10aW1lcGlja2VyLXdpdGgtZHVyYXRpb24udWktdGltZXBpY2tlci1zdGVwLTYwe3dpZHRoOjExZW19Ym9keS5hZG1pbl9wYWdlX3lpa2VzLW1haWxjaGltcC1lZGl0LWZvcm0gLnVpLXRpbWVwaWNrZXItbGlzdHttYXJnaW46MDtwYWRkaW5nOjA7bGlzdC1zdHlsZTpub25lfWJvZHkuYWRtaW5fcGFnZV95aWtlcy1tYWlsY2hpbXAtZWRpdC1mb3JtIC51aS10aW1lcGlja2VyLWR1cmF0aW9ue21hcmdpbi1sZWZ0OjVweDtjb2xvcjojODg4fWJvZHkuYWRtaW5fcGFnZV95aWtlcy1tYWlsY2hpbXAtZWRpdC1mb3JtIC51aS10aW1lcGlja2VyLWxpc3Q6aG92ZXIgLnVpLXRpbWVwaWNrZXItZHVyYXRpb257Y29sb3I6Izg4OH1ib2R5LmFkbWluX3BhZ2VfeWlrZXMtbWFpbGNoaW1wLWVkaXQtZm9ybSAudWktdGltZXBpY2tlci1saXN0IGxpe3BhZGRpbmc6M3B4IDAgM3B4IDVweDtjdXJzb3I6cG9pbnRlcjt3aGl0ZS1zcGFjZTpub3dyYXA7Y29sb3I6IzAwMDtsaXN0LXN0eWxlOm5vbmU7bWFyZ2luOjB9Ym9keS5hZG1pbl9wYWdlX3lpa2VzLW1haWxjaGltcC1lZGl0LWZvcm0gLnVpLXRpbWVwaWNrZXItbGlzdDpob3ZlciAudWktdGltZXBpY2tlci1zZWxlY3RlZHtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzAwMH1ib2R5LmFkbWluX3BhZ2VfeWlrZXMtbWFpbGNoaW1wLWVkaXQtZm9ybSAudWktdGltZXBpY2tlci1saXN0IC51aS10aW1lcGlja2VyLXNlbGVjdGVkOmhvdmVyLGJvZHkuYWRtaW5fcGFnZV95aWtlcy1tYWlsY2hpbXAtZWRpdC1mb3JtIC51aS10aW1lcGlja2VyLWxpc3QgbGk6aG92ZXIsYm9keS5hZG1pbl9wYWdlX3lpa2VzLW1haWxjaGltcC1lZGl0LWZvcm0gbGkudWktdGltZXBpY2tlci1zZWxlY3RlZHtiYWNrZ3JvdW5kOiMxOTgwRUM7Y29sb3I6I2ZmZn1ib2R5LmFkbWluX3BhZ2VfeWlrZXMtbWFpbGNoaW1wLWVkaXQtZm9ybSAudWktdGltZXBpY2tlci1saXN0IGxpOmhvdmVyIC51aS10aW1lcGlja2VyLWR1cmF0aW9uLGJvZHkuYWRtaW5fcGFnZV95aWtlcy1tYWlsY2hpbXAtZWRpdC1mb3JtIGxpLnVpLXRpbWVwaWNrZXItc2VsZWN0ZWQgLnVpLXRpbWVwaWNrZXItZHVyYXRpb257Y29sb3I6I2NjY31ib2R5LmFkbWluX3BhZ2VfeWlrZXMtbWFpbGNoaW1wLWVkaXQtZm9ybSAudWktdGltZXBpY2tlci1saXN0IGxpLnVpLXRpbWVwaWNrZXItZGlzYWJsZWQsYm9keS5hZG1pbl9wYWdlX3lpa2VzLW1haWxjaGltcC1lZGl0LWZvcm0gLnVpLXRpbWVwaWNrZXItbGlzdCBsaS51aS10aW1lcGlja2VyLWRpc2FibGVkOmhvdmVyLGJvZHkuYWRtaW5fcGFnZV95aWtlcy1tYWlsY2hpbXAtZWRpdC1mb3JtIC51aS10aW1lcGlja2VyLWxpc3QgbGkudWktdGltZXBpY2tlci1zZWxlY3RlZC51aS10aW1lcGlja2VyLWRpc2FibGVke2NvbG9yOiM4ODg7Y3Vyc29yOmRlZmF1bHR9Ym9keS5hZG1pbl9wYWdlX3lpa2VzLW1haWxjaGltcC1lZGl0LWZvcm0gLnVpLXRpbWVwaWNrZXItbGlzdCBsaS51aS10aW1lcGlja2VyLWRpc2FibGVkOmhvdmVyLGJvZHkuYWRtaW5fcGFnZV95aWtlcy1tYWlsY2hpbXAtZWRpdC1mb3JtIC51aS10aW1lcGlja2VyLWxpc3QgbGkudWktdGltZXBpY2tlci1zZWxlY3RlZC51aS10aW1lcGlja2VyLWRpc2FibGVke2JhY2tncm91bmQ6I2YyZjJmMn1ib2R5LmFkbWluX3BhZ2VfeWlrZXMtbWFpbGNoaW1wLWVkaXQtZm9ybSAudWktZGF0ZXBpY2tlcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjNjZBRkU5O2JvcmRlci1yYWRpdXM6NHB4O2JveC1zaGFkb3c6MCAwIDhweCByZ2JhKDEwMiwxNzUsMjMzLC42KTtkaXNwbGF5Om5vbmU7bWFyZ2luLXRvcDo0cHg7cGFkZGluZzoxMHB4O3dpZHRoOjI0MHB4fWJvZHkuYWRtaW5fcGFnZV95aWtlcy1tYWlsY2hpbXAtZWRpdC1mb3JtIC51aS1kYXRlcGlja2VyIGE6aG92ZXIsYm9keS5hZG1pbl9wYWdlX3lpa2VzLW1haWxjaGltcC1lZGl0LWZvcm0gLnVpLWRhdGVwaWNrZXIgdGQ6aG92ZXIgYXtjb2xvcjojMkE2NDk2O3RyYW5zaXRpb246Y29sb3IgLjFzIGVhc2UtaW4tb3V0fWJvZHkuYWRtaW5fcGFnZV95aWtlcy1tYWlsY2hpbXAtZWRpdC1mb3JtIC51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLWhlYWRlcnttYXJnaW4tYm90dG9tOjRweDt0ZXh0LWFsaWduOmNlbnRlcn1ib2R5LmFkbWluX3BhZ2VfeWlrZXMtbWFpbGNoaW1wLWVkaXQtZm9ybSAudWktZGF0ZXBpY2tlciAudWktZGF0ZXBpY2tlci10aXRsZXtmb250LXdlaWdodDo3MDB9Ym9keS5hZG1pbl9wYWdlX3lpa2VzLW1haWxjaGltcC1lZGl0LWZvcm0gLnVpLWRhdGVwaWNrZXIgLnVpLWRhdGVwaWNrZXItbmV4dCxib2R5LmFkbWluX3BhZ2VfeWlrZXMtbWFpbGNoaW1wLWVkaXQtZm9ybSAudWktZGF0ZXBpY2tlciAudWktZGF0ZXBpY2tlci1wcmV2e2N1cnNvcjpkZWZhdWx0O2ZvbnQtZmFtaWx5OidHbHlwaGljb25zIEhhbGZsaW5ncyc7LXdlYmtpdC1mb250LXNtb290aGluZzphbnRpYWxpYXNlZDtmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDo0MDA7aGVpZ2h0OjIwcHg7bGluZS1oZWlnaHQ6MTttYXJnaW4tdG9wOjJweDt3aWR0aDozMHB4fWJvZHkuYWRtaW5fcGFnZV95aWtlcy1tYWlsY2hpbXAtZWRpdC1mb3JtIC51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLXByZXZ7ZmxvYXQ6bGVmdDt0ZXh0LWFsaWduOmxlZnR9Ym9keS5hZG1pbl9wYWdlX3lpa2VzLW1haWxjaGltcC1lZGl0LWZvcm0gLnVpLWRhdGVwaWNrZXIgLnVpLWRhdGVwaWNrZXItbmV4dHtmbG9hdDpyaWdodDt0ZXh0LWFsaWduOnJpZ2h0fWJvZHkuYWRtaW5fcGFnZV95aWtlcy1tYWlsY2hpbXAtZWRpdC1mb3JtIC51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLXByZXY6YmVmb3Jle2NvbnRlbnQ6XCJcXGYxNDFcIjtmb250LWZhbWlseTpkYXNoaWNvbnN9Ym9keS5hZG1pbl9wYWdlX3lpa2VzLW1haWxjaGltcC1lZGl0LWZvcm0gLnVpLWRhdGVwaWNrZXIgLnVpLWRhdGVwaWNrZXItbmV4dDpiZWZvcmV7Y29udGVudDpcIlxcZjEzOVwiO2ZvbnQtZmFtaWx5OmRhc2hpY29uc31ib2R5LmFkbWluX3BhZ2VfeWlrZXMtbWFpbGNoaW1wLWVkaXQtZm9ybSAudWktZGF0ZXBpY2tlci1uZXh0OmhvdmVyLGJvZHkuYWRtaW5fcGFnZV95aWtlcy1tYWlsY2hpbXAtZWRpdC1mb3JtIC51aS1kYXRlcGlja2VyLXByZXY6aG92ZXJ7Y3Vyc29yOnBvaW50ZXIhaW1wb3J0YW50fWJvZHkuYWRtaW5fcGFnZV95aWtlcy1tYWlsY2hpbXAtZWRpdC1mb3JtIC51aS1kYXRlcGlja2VyLWNsb3Nle2Rpc3BsYXk6bm9uZX1ib2R5LmFkbWluX3BhZ2VfeWlrZXMtbWFpbGNoaW1wLWVkaXQtZm9ybSAudWktZGF0ZXBpY2tlci1jdXJyZW50e2NvbG9yOiM1NTUhaW1wb3J0YW50O2JvcmRlci1jb2xvcjojY2NjIWltcG9ydGFudDtiYWNrZ3JvdW5kOiNmN2Y3ZjchaW1wb3J0YW50O2JveC1zaGFkb3c6MCAxcHggMCAjY2NjIWltcG9ydGFudDt2ZXJ0aWNhbC1hbGlnbjp0b3AhaW1wb3J0YW50O2Rpc3BsYXk6aW5saW5lLWJsb2NrO3RleHQtZGVjb3JhdGlvbjpub25lO2ZvbnQtc2l6ZToxM3B4O2xpbmUtaGVpZ2h0OjI2cHg7aGVpZ2h0OjI4cHg7cGFkZGluZzowIDEwcHggMXB4O2N1cnNvcjpwb2ludGVyO2JvcmRlci13aWR0aDoxcHg7Ym9yZGVyLXN0eWxlOnNvbGlkOy13ZWJraXQtYXBwZWFyYW5jZTpub25lO2JvcmRlci1yYWRpdXM6M3B4O3doaXRlLXNwYWNlOm5vd3JhcDtib3gtc2l6aW5nOmJvcmRlci1ib3g7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7LW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7bWFyZ2luLXRvcDoxMHB4fWJvZHkuYWRtaW5fcGFnZV95aWtlcy1tYWlsY2hpbXAtZWRpdC1mb3JtIC51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLWN1cnJlbnQtZGF5IGEsYm9keS5hZG1pbl9wYWdlX3lpa2VzLW1haWxjaGltcC1lZGl0LWZvcm0gLnVpLWRhdGVwaWNrZXIgLnVpLWRhdGVwaWNrZXItdG9kYXkgYXtjb2xvcjojZmZmfWJvZHkuYWRtaW5fcGFnZV95aWtlcy1tYWlsY2hpbXAtZWRpdC1mb3JtIC51aS1kYXRlcGlja2VyIC51aS1pY29ue2Rpc3BsYXk6bm9uZX1ib2R5LmFkbWluX3BhZ2VfeWlrZXMtbWFpbGNoaW1wLWVkaXQtZm9ybSAudWktZGF0ZXBpY2tlciAudWktZGF0ZXBpY2tlci1jYWxlbmRhcnt0YWJsZS1sYXlvdXQ6Zml4ZWQ7d2lkdGg6MTAwJX1ib2R5LmFkbWluX3BhZ2VfeWlrZXMtbWFpbGNoaW1wLWVkaXQtZm9ybSAudWktZGF0ZXBpY2tlciAudWktZGF0ZXBpY2tlci1jYWxlbmRhciB0ZCxib2R5LmFkbWluX3BhZ2VfeWlrZXMtbWFpbGNoaW1wLWVkaXQtZm9ybSAudWktZGF0ZXBpY2tlciAudWktZGF0ZXBpY2tlci1jYWxlbmRhciB0aHt0ZXh0LWFsaWduOmNlbnRlcjtwYWRkaW5nOjRweCAwfWJvZHkuYWRtaW5fcGFnZV95aWtlcy1tYWlsY2hpbXAtZWRpdC1mb3JtIC51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLWNhbGVuZGFyIHRke2JvcmRlci1yYWRpdXM6NHB4O3RyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAuMXMgZWFzZS1pbi1vdXQsY29sb3IgLjFzIGVhc2UtaW4tb3V0fWJvZHkuYWRtaW5fcGFnZV95aWtlcy1tYWlsY2hpbXAtZWRpdC1mb3JtIC51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLWNhbGVuZGFyIHRkOmhvdmVye2JhY2tncm91bmQtY29sb3I6I0VCRUJFQjtjdXJzb3I6cG9pbnRlcn1ib2R5LmFkbWluX3BhZ2VfeWlrZXMtbWFpbGNoaW1wLWVkaXQtZm9ybSAudWktZGF0ZXBpY2tlciAudWktZGF0ZXBpY2tlci10b2RheXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoNjYsMTM3LDIwNCwuNjUpfWJvZHkuYWRtaW5fcGFnZV95aWtlcy1tYWlsY2hpbXAtZWRpdC1mb3JtIC51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLWN1cnJlbnQtZGF5e2JhY2tncm91bmQtY29sb3I6IzQyODljY31ib2R5LmFkbWluX3BhZ2VfeWlrZXMtbWFpbGNoaW1wLWVkaXQtZm9ybSAudWktZGF0ZXBpY2tlciAudWktZGF0ZXBpY2tlci1jYWxlbmRhciAudWktZGF0ZXBpY2tlci11bnNlbGVjdGFibGU6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZmZmO2N1cnNvcjpkZWZhdWx0fS5jdXN0b20tcmFkaW8taG9sZGVye2Rpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOjEwMCU7bWFyZ2luOi41ZW0gMH0uY3VzdG9tLXJhZGlvLWxhYmVse2Rpc3BsYXk6YmxvY2s7ZmxvYXQ6bGVmdDttYXJnaW46MCA1cHh9LmN1c3RvbS1yYWRpby1sYWJlbDpmaXJzdC1jaGlsZHttYXJnaW4tbGVmdDowIWltcG9ydGFudH0uY3VzdG9tLXJhZGlvLWxhYmVsIGlucHV0W3R5cGU9cmFkaW9de21hcmdpbi1yaWdodDowIWltcG9ydGFudH0uY3VzdG9tLXNlbGVjdC1maWVsZHtkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCU7bWFyZ2luOi41ZW0gMH0jYXZhaWxhYmxlLXdpZGdldHMgW2NsYXNzKj15aWtlc19lYXN5XSAud2lkZ2V0LXRpdGxlOmJlZm9yZXtjb250ZW50OlwiXCIhaW1wb3J0YW50O2JhY2tncm91bmQ6dXJsKC4uLy4uL2luY2x1ZGVzL2ltYWdlcy9NYWlsQ2hpbXBfQXNzZXRzL0ZyZWRkaWVfb3JpZ2luYWwucG5nKSBuby1yZXBlYXQgI0ZBRkFGQTtiYWNrZ3JvdW5kLXNpemU6Y29udGFpbn1ib2R5LndwLWN1c3RvbWl6ZXIgI2F2YWlsYWJsZS13aWRnZXRzIFtpZCo9XCJfeWlrZXNfZWFzeV9tY193aWRnZXRcIl0+ZGl2LndpZGdldC10b3A+ZGl2LndpZGdldC10aXRsZT5oNHtiYWNrZ3JvdW5kOjAgMCFpbXBvcnRhbnR9I2Nvbm5lY3Rpb24tY29udGFpbmVye2Zsb2F0OnJpZ2h0O2NvbG9yOiNmZmY7cGFkZGluZzouMjVlbSAuNzVlbSAuMjVlbSAuMjVlbTttYXJnaW4tdG9wOi00cHh9I2Nvbm5lY3Rpb24tY29udGFpbmVyLmFwaS1jb25uZWN0ZWR7YmFja2dyb3VuZDojNDRiYTQ0fSNjb25uZWN0aW9uLWNvbnRhaW5lci5hcGktbm90LWNvbm5lY3RlZHtiYWNrZ3JvdW5kOiNiNWI1YjV9Lnlpa2VzLW1jLWFwaS1jb25uZWN0ZWQsLnlpa2VzLW1jLWFwaS1ub3QtY29ubmVjdGVke2xpbmUtaGVpZ2h0OjF9LnNob3ctc29tZS1sb3ZlLWNvbnRhaW5lcnt0cmFuc2l0aW9uOm1heC1oZWlnaHQgLjc1c30jcmV2aWV3LXlpa2VzLWVhc3ktbWN7dGV4dC1hbGlnbjpjZW50ZXJ9I3Jldmlldy15aWtlcy1lYXN5LW1jIC5kYXNoaWNvbnMtc3Rhci1maWxsZWR7Y29sb3I6I0U2QjgwMH0ubWV0YS1ib3gtc29ydGFibGVzIGhye21hcmdpbjoxLjc1ZW0gMCAwfSNhYm91dC15aWtlcy1pbmN7ZGlzcGxheTpub25lfSNhYm91dC15aWtlcy1pbmMgLmFib3V0LXNpZGViYXIteWlrZXMtbG9nb3tmbG9hdDpsZWZ0O3dpZHRoOjk1cHg7bWFyZ2luOjVweCA3cHggMCAwfSNhYm91dC15aWtlcy1pbmMgcHttYXJnaW4tdG9wOjB9Lnlpa2VzLWVhc3ktbWMtdXBkYXRlZHtkaXNwbGF5OmJsb2NrO2JvcmRlci1sZWZ0OjRweCBzb2xpZCAjNEVBRUYwO21hcmdpbjoxZW0gMjBweCAxZW0gMDtwYWRkaW5nOjJweCAxMHB4O2JhY2tncm91bmQ6cmlnaHQgYm90dG9tIG5vLXJlcGVhdCAjZmZmO2JhY2tncm91bmQtc2l6ZToxMjBweDtiYWNrZ3JvdW5kLXBvc2l0aW9uLXk6MjlweH0uc3VwcG9ydC1zZWN0aW9ue21hcmdpbjoxLjVlbSAwO3BhZGRpbmc6MWVtIDB9LmdpdGh1Yi1vY3RvY2F0e2JhY2tncm91bmQ6dXJsKC4uLy4uL2luY2x1ZGVzL2ltYWdlcy9TdXBwb3J0X1BhZ2UvT2N0b2NhdC5wbmcpIGxlZnQgdG9wIG5vLXJlcGVhdDtiYWNrZ3JvdW5kLXNpemU6MTAwJTt3aWR0aDo1MHB4O2hlaWdodDo0NXB4O2Rpc3BsYXk6YmxvY2s7ZmxvYXQ6bGVmdDttYXJnaW4tdG9wOi01cHh9QG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDoxMjAwcHgpey55aWtlcy1lYXN5LW1jLXBvc3Rib3ggI3Bvc3QtYm9keS5jb2x1bW5zLTIgI3Bvc3Rib3gtY29udGFpbmVyLTF7ZmxvYXQ6bm9uZX19QG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDo4NTBweCl7Lm9wdGlvbi1tZW51LXNlbGVjdGVkLWFycm93e2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9fUBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NzgycHgpeyNjaGltcC1jaGF0dGVyIC5jaGltcC1jaGF0dGVyLWNvbnRhaW5lcntmbG9hdDpub25lO2hlaWdodDphdXRvO3dpZHRoOjEwMCV9fS5yZWNhcHRjaGEtZGVtby1naWZ7d2lkdGg6Mjc1cHh9LnByby12ZXJzaW9uLW9ubHktbm90aWNle2NvbG9yOiNkOTYwNjB9LnVwZ3JhZGluZy1lbGxpcHNlLW9uZXtmaWx0ZXI6YWxwaGEob3BhY2l0eT0wKTsta2h0bWwtb3BhY2l0eTowO29wYWNpdHk6MDthbmltYXRpb246ZG90IDEuM3MgaW5maW5pdGU7LXdlYmtpdC1hbmltYXRpb24tZGVsYXk6MG1zO2FuaW1hdGlvbi1kZWxheTowbXN9LnVwZ3JhZGluZy1lbGxpcHNlLXR3b3tmaWx0ZXI6YWxwaGEob3BhY2l0eT0wKTsta2h0bWwtb3BhY2l0eTowO29wYWNpdHk6MDthbmltYXRpb246ZG90IDEuM3MgaW5maW5pdGU7LXdlYmtpdC1hbmltYXRpb24tZGVsYXk6LjJzO2FuaW1hdGlvbi1kZWxheTouMnN9LnVwZ3JhZGluZy1lbGxpcHNlLXRocmVley1tcy1maWx0ZXI6XCJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0wKVwiO2ZpbHRlcjphbHBoYShvcGFjaXR5PTApOy1tb3otb3BhY2l0eTowOy1raHRtbC1vcGFjaXR5OjA7b3BhY2l0eTowOy13ZWJraXQtYW5pbWF0aW9uOmRvdCAxLjNzIGluZmluaXRlO2FuaW1hdGlvbjpkb3QgMS4zcyBpbmZpbml0ZTstd2Via2l0LWFuaW1hdGlvbi1kZWxheTouM3M7YW5pbWF0aW9uLWRlbGF5Oi4zc31ALXdlYmtpdC1rZXlmcmFtZXMgZG90ezAlLDUwJXtvcGFjaXR5OjB9MTAwJXtvcGFjaXR5OjF9fUBrZXlmcmFtZXMgZG90ezAlLDUwJXtvcGFjaXR5OjB9MTAwJXtvcGFjaXR5OjF9fSJdfQ== */
1
+ #yikes-easy-mc-dashboard-widget-stats h3,.addon-image{text-align:center}.yikes-easy-mc-hidden{display:none}.shortcode-input-field{color:#333;background:rgba(216,216,216,.35)!important}.edit-form-field-container-span{display:block;margin:.5em 0}.no-forms-widget{margin:2em 0}.no-forms-found-icon{font-size:14px;line-height:1.4;width:14px;color:#e07d7d}.coming-soon-button{position:absolute}.coming-soon-button .dashicons{font-size:14px;line-height:1.8}.add-ons-about-text{margin-top:0}#add-ons{margin:3em 0}.addon-image{display:block}.no-mailchimp-lists-found{padding:25px 0 25px 25px}.add-new-subscriber-button{display:block;margin-top:2em}.add-new-subscriber-form-container{display:none;padding-top:1em}.add-new-subscriber-form-container h4{margin-top:0}#yikes-easy-mc-widget-stat-holder,.yikes-easy-mc-stats-table{margin-top:1em}#migration-buttons{display:inline-block;margin-bottom:.5em}#migration-buttons form:first-child{margin-right:10px}#migration-buttons form{float:left}#yikes_easy_mc_account_activity_widget h3 span,#yikes_easy_mc_list_stats_widget h3 span{background:url(../../includes/images/MailChimp_Assets/Freddie_original.png) 8px 4px/25px auto no-repeat;background-size:25px;display:block;height:30px;padding-left:3em;padding-top:5px}#yikes_easy_mc_account_activity_widget h3.hndle,#yikes_easy_mc_list_stats_widget .inside{padding:0}#yikes_easy_mc_list_stats_widget h3{padding:0;line-height:1.6em}.yikes-easy-mc-stats-table,.yikes-easy-mc-stats-table .yikes-easy-mc-table-stats-tr,.yikes-easy-mc-stats-table tbody{display:block;width:100%}.yikes-easy-mc-table-stats-tr td{display:inline-block;width:48%;text-align:center}.yikes-easy-mc-table-stats-tr td:hover{cursor:pointer}.yikes-easy-mc-table-stats-tr td:first-of-type{border-right:1px solid #ececec}.yikes-easy-mc-stats-table .yikes-easy-mc-table-stats-tr-first{border-bottom:1px solid #ececec;border-top:1px solid #ececec}.yikes-easy-mc-stats-table p.yikes-easy-mc-dashboard-stat{color:#00a0d2;font-weight:800;font-size:20px;margin-bottom:2px;margin-top:15px;line-height:1.2;max-height:80px}.yikes-easy-mc-stats-table p.yikes-easy-mc-stat-list-label{font-size:13px;margin-top:0;margin-bottom:15px;font-family:"Open Sans"}#yikes_easy_mc_account_activity_widget table th.row-title{padding-left:10px}#pre-defined-tag-interior-container{background:url(../../includes/images/tinyMCE/yikes-mailchimp-combo-faded.png) bottom right no-repeat #fff;background-size:40%}.qtip-default{background-color:transparent!important;border:transparent!important;z-index:9999999!important}.qtip-bootstrap{padding:10px!important;z-index:9999999!important;font-size:12px}.search-interest-group-preloader{display:block;margin:8px 0 0 55px;width:12px}.no-interest-groupings-enabled-message{display:block;margin-top:12px!important;width:100%}.tooltip-integration-banner{max-width:100%;margin:0 0 .25em}.tooltiptext.qtip-bootstrap{font-size:12px}.tooltip-title{margin:0}.dashicons-editor-help:hover{cursor:pointer}body.easy-forms_page_yikes-inc-easy-mailchimp-settings .interest-group-section{display:block;width:100%;margin:1.5em 0}body.easy-forms_page_yikes-inc-easy-mailchimp-settings .interest-group-section .interest-group-section-title{display:block;width:100%;margin:.5em 0;text-decoration:underline}.github-avatar-url,body.admin_page_yikes-mailchimp-welcome #kb-container .knowledge-base-listing li a,body.easy-forms_page_yikes-inc-easy-mailchimp-support .knowledge-base-articles .knowledge-base-listing li a{text-decoration:none}body.easy-forms_page_yikes-inc-easy-mailchimp-settings .interest-group-section input{margin-right:0}body.easy-forms_page_yikes-inc-easy-mailchimp-settings .interest-group-section label{margin-right:10px}i.mce-ico.mce-i-yks_mc_tinymce_button_key{background:url(../../includes/images/tinyMCE/Freddie_wink.png) no-repeat;background-size:18px;background-position-y:1px}#yikes_mailchimp_tinyMCE_modal-title{padding-left:42px;background:url(../../includes/images/MailChimp_Assets/Freddie_original.png) left no-repeat;background-size:25px;background-position-x:10px}#yikes_mailchimp_tinyMCE_modal{background:url(../../includes/images/tinyMCE/yikes-mailchimp-combo-faded.png) bottom left no-repeat #fff;background-size:40%;background-position-x:10px;background-position-y:95%}#yikes_mailchimp_tinyMCE_modal .mce-foot{border-top:none!important;background:0 0}[id*="_yikes_easy_mc_widget"]>div.widget-top>div.widget-title>h4{background:url(../../includes/images/MailChimp_Assets/Freddie_original.png) 2% 50%/25px auto no-repeat #FAFAFA;padding-left:40px}#review-yikes-easy-mailchimp-notice #yikes-mailchimp-logo,#yikes-mailchimp-logo{font-size:14px;background:url(../../includes/images/Welcome_Page/yikes-mailchimp-welcome-logo.png) no-repeat;text-align:center}#review-yikes-easy-mailchimp-notice #yikes-mailchimp-logo{background-size:60px;float:left;height:80px;width:80px}.yikes-easy-mc-feature-image-left{float:left;margin-right:30px;margin-left:0!important}.need-support-icon{line-height:1.5}ul.support-option-list{display:inline-block;width:100%}.support-option{float:left}.support-option-second{margin-left:10px}#yikes-mailchimp-logo.support-page{float:left;width:80pt}.yikes-easy-mc-whats-new-section-image{float:none;width:100%;margin-left:0!important}.welcome-page-tabs{margin-top:2em!important}.welcome-page-about-wrap .about-text,.welcome-page-about-wrap h2.welcome-title{margin-left:115px}.whats-new-wrap img.yikes-easy-mc-whats-new-section-image{margin-top:10px}.whats-new-wrap .feature-section:nth-child(1) img{float:left;width:500px;margin-left:0!important;margin-right:30px}.whats-new-wrap .feature-section:nth-child(3) img{float:right;width:250px;margin-right:0!important;margin-left:30px}.whats-new-wrap .feature-section:nth-child(4) img{margin-left:0!important}#yikes-mailchimp-logo{height:132px;width:132px}.about-wrap #yikes-mailchimp-logo{position:absolute;top:0;left:0}.edd-welcome-screenshots{float:right;margin-left:10px!important}.about-wrap .feature-section{margin-top:20px}.yikes-easy-mc-feature-image{float:right;margin-left:30px!important}#credit-container,#translators-container{display:inline-block;width:100%}#credit-container h2,#translators-container h2{margin:0 0 .5em 1em}#translators-container{margin-top:5em}#translators-container .translation-language{color:#333}#credit-container .team-member,#translators-container .translator{margin:1em 5% 1em 0;text-align:center}#credit-container .team-member img,#translators-container .translator img{border-radius:50%}.admin_page_yikes-mailchimp-welcome .about-wrap div.error,.admin_page_yikes-mailchimp-welcome .about-wrap div.updated{display:block;margin-left:115px}.github-avatar-image{width:100px}.github-avatar-url{display:inline-block;width:20%}github-avatar-url:focus{outline:0}body.admin_page_yikes-mailchimp-edit-form div.show-some-love-container img,div.show-some-love-container img.customizer-upsell-banner{max-width:100%}body.admin_page_yikes-mailchimp-edit-form div.show-some-love-container p:first-child{font-style:italic}body.admin_page_yikes-mailchimp-edit-form div.show-some-love-container hr{margin:1em 0}body.admin_page_yikes-mailchimp-welcome .nav-tab-wrapper .nav-tab .dashicons{font-size:17px;line-height:1.5}body.admin_page_yikes-mailchimp-welcome #kb-container,body.easy-forms_page_yikes-inc-easy-mailchimp-support .knowledge-base-articles{display:inline-block;margin-top:1em}body.admin_page_yikes-mailchimp-welcome #kb-container h1{font-size:20px;margin-top:-1em}body.admin_page_yikes-mailchimp-welcome #kb-container .knowledge-base-listing,body.easy-forms_page_yikes-inc-easy-mailchimp-support .knowledge-base-articles .knowledge-base-listing{width:45%;margin-right:2%;float:left;min-height:260px}body.admin_page_yikes-mailchimp-welcome #kb-container .knowledge-base-listing li,body.easy-forms_page_yikes-inc-easy-mailchimp-support .knowledge-base-articles .knowledge-base-listing li{margin:12px 0;text-decoration:none}body.admin_page_yikes-mailchimp-welcome #kb-container .knowledge-base-listing li:before,body.easy-forms_page_yikes-inc-easy-mailchimp-support .knowledge-base-articles .knowledge-base-listing li:before{font-family:dashicons;content:"\f123";vertical-align:middle;display:block;float:left;margin:0 5px 5px 0}body.admin_page_yikes-mailchimp-welcome #kb-container .knowledge-base-listing li.list-title,body.easy-forms_page_yikes-inc-easy-mailchimp-support .knowledge-base-articles .knowledge-base-listing li.list-title{font-size:17px;font-weight:200;text-decoration:underline}body.admin_page_yikes-mailchimp-welcome #kb-container .knowledge-base-listing li.list-title:before,body.easy-forms_page_yikes-inc-easy-mailchimp-support .knowledge-base-articles .knowledge-base-listing li.list-title:before{content:"";padding-left:12px}body.admin_page_yikes-mailchimp-welcome .new-feature-list{list-style:none;line-height:middle}body.admin_page_yikes-mailchimp-welcome .new-feature-list li{margin-bottom:10px}body.admin_page_yikes-mailchimp-welcome .new-feature-list li:before{font-family:dashicons;content:"\f139";padding-right:2px;font-size:20px;vertical-align:middle}#review-yikes-easy-mailchimp-notice .button-container{display:block;width:100%;margin:.75em 0 1.5em}#review-yikes-easy-mailchimp-notice .button-container .dashicons{font-size:14px;line-height:1.9;margin-left:-4px}#review-yikes-easy-mailchimp-notice .button-container .dashicons-star-filled{color:#E6B800}#review-yikes-easy-mailchimp-notice .button-container .dashicons-upload{color:#6E8841}#review-yikes-easy-mailchimp-notice .button-container .dashicons-no-alt{color:#dc3a3a;line-height:2}body.easy-mailchimp_page_yikes-inc-easy-mailchimp-settings .dashicons-no-alt{color:#dc3a3a}#review-yikes-easy-mailchimp-notice .button-container a{margin-right:10px}#review-yikes-easy-mailchimp-notice{border-left:4px solid #00a0d2;background:#fefefe;padding:10px 12px 1px;box-shadow:0 1px 1px 0 rgba(0,0,0,.1);-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);margin:15px 25px 20px 5px}input.readonly,input[readonly],textarea.readonly,textarea[readonly]{background:#D8D8D8}.dashicons.yikes-love{color:pink}.field-description-input{resize:vertical;max-height:100px}.yikes-easy-mc-postbox h3{background:#00a0d2;font-weight:800;color:#fff}.yikes-easy-mc-postbox h3.bg-transparent{color:#333;font-weight:400;background:0 0}.yikes-mc-warning-message{padding-left:15px;margin-top:0;padding-top:10px;color:#da6e6e}.error-message-container label[for=yikes-easy-mc-success-message],.error-message-container label[for=yikes-easy-mc-general-error-message],.error-message-container label[for=yikes-easy-mc-invalid-email-message],.error-message-container label[for=yikes-easy-mc-user-subscribed-message]{padding:.5em 1em;background:rgba(241,241,241,.75);box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;margin:0}body.admin_page_yikes-mailchimp-edit-form #error-container{padding:2px 1em;background:rgba(241,241,241,.75);box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;margin:0;color:#F56060}.error-message-container label[for=yikes-easy-mc-user-subscribed-message]{padding-bottom:1em;margin-bottom:.5em}.error-message-container label,.form-settings-container label{display:block;margin:1em 0}.yikes-easy-forms-sidebar .yikes-mc-settings-expansion-section{padding:.5em .75em;-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.yikes-mc-settings-expansion-section{display:none;background:rgba(241,241,241,.75)}.expansion-section-title{background:#fff}.expansion-section-title.settings-sidebar,.form-builder-section-title{text-decoration:none;display:block;border:1px solid rgba(177,177,177,.71);color:#333;padding:5px;margin:.5em 0 0}.expansion-section-title.settings-sidebar .dashicons,.form-builder-section-title .dashicons{content:"\f132";font-family:dashicons;font-size:15px;line-height:1.5}span.easy-mailchimp-add-on-valid-license-container{color:#44ba44;display:block;margin-top:1em}.easy-mailchimp-add-on-invalid-license-container{color:rgba(227,107,107,.86);display:block;margin-top:1em}.options-sidebar .yikes-easy-mc-postbox{overflow:visible}.options-sidebar .inside{padding:0 20px 12px}.yikes-easy-mc-about-text{margin-top:0}.add-on-settings-divider{margin:1em 0!important}#yks-mailchimp-double-optin-message,#yks-mailchimp-single-optin-message,.settings-page-input{width:50%}#yks-mailchimp-double-optin-message,#yks-mailchimp-single-optin-message{min-height:75px;max-height:200px;resize:vertical}#addon-settings-nav li a,#settings-nav li a{color:#333;text-decoration:none!important;transition:color .15s ease-out;-moz-transition:color .15s ease-out;-webkit-transition:color .15s ease-out;-o-transition:color .15s ease-out}#addon-settings-nav li a:hover,#settings-nav li a:hover,.option-menu-selected-arrow+a{color:#00a0d2!important}#addon-settings-nav{margin-bottom:0;margin-top:5px}.option-menu-selected-arrow{width:0;height:0;border-top:10px solid transparent;border-bottom:10px solid transparent;border-left:10px solid #a0a5aa;position:absolute;left:-.1em}label[for=yikes-mailchimp-debug-status]{display:inline-block;margin-bottom:1em;line-height:2.25}#yikes-mailchimp-debug-status{float:left;margin-top:.5em}label[for=yikes-mc-recaptcha-setting],label[for=yikes-mc-recaptcha-api-key]{display:block;margin-bottom:1em}.recaptcha-preview-link,input.recaptcha-setting-checkbox{display:block;margin-top:.5em}.recaptcha-preview-container{width:100%;display:none;margin:1em 0}#premium-support-form,.support-page-button,.support-page-logo{display:block;width:100%}.wrap #col-left,.wrap #col-right{width:49%}@media (max-width:800px){.wrap #col-left,.wrap #col-right{width:100%}}.support-page-logo{opacity:.7;max-width:100%}.support-page-button{min-height:40px;font-weight:700;text-align:center;line-height:3!important;margin-top:1em!important}.support-page-wordpress-font{font-size:1.3em;margin-right:13px}h2.premium-support-title{margin:1em 0 .5em}#premium-support-form input,#premium-support-form select{display:block;width:100%;min-width:200px;margin:.5em 0}#premium-support-form label{font-weight:800}#premium-support-form label input,#premium-support-form label select{font-weight:500}#premium-support-form p{font-weight:300;display:block;margin-bottom:1em}#wp-support-content-wrap{min-height:150px;width:100%}.support-form-hidden{display:none!important}#yikes-mailchimp-error-log .row-title{font-weight:400}.create-error-log-help:hover{cursor:pointer}.error-log-tr td{display:table;margin-bottom:1em;margin-top:.5em}p.error-log-missing-file em,p.to-start-logging-errors-notice em{margin:10px 0}.export-custom-forms-list{display:none;margin:1em 0 2em}.export-custom-forms-list p{margin-top:0}.list-rating-star{color:#E6B800}#chimp-chatter{text-align:center}#chimp-chatter .chimp-chatter-container{margin:1em .2em;background:#F8F8F8;border-radius:10px;float:left;height:220px;padding:10px;width:44%}.chimp-chatter-mailchimp-logo{width:100%;display:block;margin:0 auto}.chimp-chatter-sidebar h2.account-status{text-align:center}.mailchimp-affiliate-link{color:#333;display:none}.mailchimp-avatar{display:block;margin:0 auto;box-shadow:3px 3px 10px 0 rgba(214,214,214,.75)}#yikes_easy_mc_toolbar_links li a:focus,.merge-tag-text{box-shadow:none}.chimpchatter-button-container{clear:both;display:block}.chimp-chatter-postbox{float:left;width:49%;margin-right:1%}.circle-account-active,.circle-account-inactive{display:inline-block;vertical-align:middle;height:15px;width:15px;border-radius:50%}#account-details .chimp-chatter-postbox.even{margin-right:0}.circle-account-inactive{margin-top:-3px;margin-right:5px;background:rgba(250,138,138,.79)}.chatter-type{font-weight:600;font-family:"open sans";font-size:14px;margin:5px 5px 0}.chatter-message{margin:2px 2px 15px!important}.circle-account-active{margin-top:-3px;margin-right:5px;background:rgba(128,214,128,.77)}#account-details .mailchimp-avatar{width:120px;border-radius:10%;margin-top:.5em}.chimp-chatter-positive{border-left:4px solid #9ddf9d}.chimp-chatter-negative{border-left:4px solid #FBA2A2}.chimp-chatter-neutral{border-left:4px solid #b1b1b1}#import-list-to-site{margin-top:10px}#import-list-to-site .input-field{display:block;width:100%;margin-top:5px;margin-bottom:5px}.sidebar-container,.star-container{margin-top:5px;margin-bottom:1.5em}#import-list-to-site .form-description{resize:vertical;max-height:65px}#import-list-to-site .description{margin-top:5px}.star-container a{text-decoration:none}.star-container .dashicons-star-filled{font-size:1.75em}.sidebar-footer-text{margin:15px 0!important;text-align:center}.sidebar-twitter-icon{text-decoration:none;color:#55ACEE}.field-doesnt-exist-notice{position:absolute;margin-left:5px;width:18px}.field-type-text{float:right}.type-container{margin:0}.form-field-container{margin-top:0;margin-bottom:0}.field-no-longer-exists-warning{position:absolute;margin-left:5px;width:18px}.form-field-container td input[type=checkbox],.form-field-container td input[type=radio]{margin:0 5px}.form-field-container td input[type=checkbox]:first-child,.form-field-container td input[type=radio]:first-child{margin-left:0!important}.merge-tag-text{background:0 0;border:none}.pre-defined-tag-link{font-size:11px}.toggle-container{font-size:small;float:right}#pre-defined-tag-container{display:none}#pre-defined-tag-container h3{margin-bottom:0}#pre-defined-tag-container .tooltop-tag .dashicons-editor-help{font-size:13px;line-height:1.5}.no-fields-assigned-notice{margin:4em 0 2.25em;padding-bottom:6em;width:100%;text-align:center;background:url(../../includes/images/no-form-fields-assigned-arrow.jpg) bottom center no-repeat;background-size:105px}.yikes-easy-mc-widget-preloader{position:absolute;left:48%;margin-top:-96px}.yikes-dashboard-widget-section{padding:0 12px 12px}.select-list-title{padding-left:0}.yikes-dashboard-widget-section .description{margin:.5em 0 0}. error-descripion{padding-top:.5em}.yikes-mc-freddie-logo{float:left;margin-right:10px}.mv_ig_list{width:94%;margin-bottom:8px!important;border:none!important;background:0 0!important}.mv_ig_list .list-container{position:absolute}.mv_ig_list a{width:48%;padding:5px 0!important;text-align:center;margin:0}.mv_ig_list a:first-child{margin-right:0}.mv_ig_list a:last-child{float:right}.mv_ig_list .nav-tab{border:1px solid #ccc}.mv_ig_list .nav-tab-active{color:#fff;font-weight:700;background:#00a0d2}.mv_ig_list .arrow-down{position:absolute;margin-top:21px;margin-left:50px;width:0;height:0;border-left:12px solid transparent;border-right:12px solid transparent;border-top:12px solid #00a0d2}#container-container{display:inline-block;width:521px}#container-container .list-container{float:left;width:240px;position:relative}#container-container .list-container:last-child{margin-left:2em}#yikes_easy_mc_toolbar{margin-top:-.75em}#yikes_easy_mc_toolbar_links{display:inline-block;width:100%;margin:0;padding:10px 0}#yikes_easy_mc_toolbar_links li{float:left;margin:0 .5em}#yikes_easy_mc_toolbar_links li a{text-decoration:none;display:inline-block}#yikes_easy_mc_toolbar_links li a.selected_hidden_setting{color:#333;margin-bottom:3px}#yikes_easy_mc_toolbar_links li .selected_setting_triangle{width:0;height:0;border-left:13px solid transparent;border-right:13px solid transparent;border-top:13px solid rgba(206,206,206,1);margin:0 auto}.checkbox-settings-list-dropdown,.optin-checkbox-label-input{width:250px;display:block}#yikes_easy_mc_toolbar_links li a.form-builder:before{content:"\f116";font-family:dashicons}#yikes_easy_mc_toolbar_links li a.form-customizer:before{content:"\f100";font-family:dashicons}#yikes_easy_mc_toolbar_links li a.error-messages:before{content:"\f117";font-family:dashicons}#yikes_easy_mc_toolbar_links li a.form-settings:before{content:"\f111";font-family:dashicons}#checkbox-settings-form .dashicons-editor-help{font-size:15px;line-height:1.6}.no-lists-setup-notice{padding:.5em 0}.yikes-form-id-number{width:55px}span[title=Impressions]:hover,span[title=Submissions]:hover,span[title="Conversion Rate"]:hover{display:block;cursor:pointer}.form-id-container{padding:1px 8px;border-radius:5px;background:#49a9ec;font-weight:700;color:#fff}.manage-form-admin-notice{margin-top:1.75em!important}.remove-notification,.yikes-mc-settings-expansion-section a.remove-field,a.yikes-delete-mailchimp-form,a.yikes-delete-subscriber{color:#d96060!important}.yikes-delete-mailchimp-form{margin-top:6px}#postbox-container-1 .yikes-delete-mailchimp-form{float:right}.form-buttons-container{display:block;padding:11px 10px}.forms-buttons-container input[type=submit]{margin:0 0 .5em}.update-form-spinner{position:absolute;left:0;right:0;margin:0 auto;bottom:13px}.yikes-mc-shortcode-input{text-align:center;width:100%;color:#333}.hidden-class{display:none!important}.stat-container{width:10%;max-width:75px}.no-current-subscriber-notice em,.no-mailchimp-forms-found em{padding:25px 0 25px 25px}.column-columnname span.stats{display:block;width:100%;text-align:center}.column-columnname span.stats span{display:inline-block;width:20%}.column-columnname span.stats span:hover{cursor:pointer}#available-fields li,#available-interest-groups li{text-decoration:none;display:block;border:1px solid rgba(177,177,177,.71);color:#333;padding:5px;margin:.5em 0}#available-fields li.not-available,#available-interest-groups li.not-available{opacity:.6!important}#available-fields li.field-to-add-to-form,#available-interest-groups li.group-to-add-to-form{background:rgba(46,162,204,.25)}.add-field-to-editor .add-to-form-builder-arrow,.button-secondary .add-to-form-builder-arrow{width:15px;font-size:15px;line-height:1.8}.clear-form-fields{background:#e14d43;border-color:#d02c21;color:#fff;box-shadow:inset 0 1px 0 #ec8b85,0 1px 0 rgba(0,0,0,.15);text-decoration:none;display:inline-block;height:28px;padding:0 10px 1px;border-width:1px;-webkit-appearance:none;border-radius:3px;white-space:nowrap;font-size:13px;line-height:26px;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;float:right;margin:0 11px 10px 0}.clear-form-fields:active,.clear-form-fields:focus,.clear-form-fields:hover{background:#dd382d;border-color:#ba281e;color:#fff;box-shadow:inset 0 1px 0 #e8776f}.yikes-mc-view-list-breadcrumbs{padding:.8em;border:1px solid #D8D8D8;background:#ECECEC;margin:1.5em 0 .8em}.yikes-mc-member-rating-star{color:#daa520}#yikes-mc-subscriber-card-wrapper{background:#fefefe;min-height:200px;display:inline-block;box-shadow:0 1px 1px rgba(0,0,0,.04);webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);border:1px solid #e5e5e5;padding:15px 20px;width:500px;float:left}#yikes-mc-subscriber-card-wrapper .subscriber-optin-ip{display:inline-block;margin:1em 0 0;font-style:italic}.view-user-data-wrap #customer-tab-wrapper-list{float:left;background:#fefefe;margin-top:0;padding:12px;margin-left:-1px;border-right:1px solid #e5e5e5;border-top:1px solid #e5e5e5;border-bottom:1px solid #e5e5e5}.view-user-data-wrap #customer-tab-wrapper-list .dashicons{font-size:23px;height:23px;width:23px;margin:3px 0}.view-user-data-wrap #customer-tab-wrapper-list li.inactive{color:rgba(51,51,51,.31);transition:color ease-out .1s}.view-user-data-wrap #customer-tab-wrapper-list li.active,.view-user-data-wrap #customer-tab-wrapper-list li.inactive:hover{color:rgba(51,51,51,1)}#yikes-mc-subscriber-card-wrapper .yikes-mc-card-top .member-star-rating-container,#yikes-mc-subscriber-card-wrapper .yikes-mc-card-top h2,#yikes-mc-subscriber-card-wrapper .yikes-mc-card-top img{float:left}#yikes-mc-subscriber-card-wrapper #delete-mailchimp-subscriber{display:block;margin:0 auto}#yikes-mc-subscriber-card-wrapper .yikes-mc-card-top img{border-radius:3px}#yikes-mc-subscriber-card-wrapper .merge-variable-section li{display:inline-block;list-style:none;float:left;width:50%;min-height:65px;border-bottom:1px dotted #ddd}#yikes-mc-subscriber-card-wrapper .merge-variable-section li p{margin:0 0 1em}#yikes-mc-subscriber-card-wrapper .yikes-mc-card-top h2{max-width:370px;width:75%;padding:0}#yikes-mc-subscriber-card-wrapper .member-star-rating-container{display:block;margin:.5em 0 .5em 10px}#yikes-mc-subscriber-card-wrapper h2{margin-left:10px;margin-top:0;padding-top:0}#yikes-mc-subscriber-card-wrapper .yikes-mc-card-body,#yikes-mc-subscriber-card-wrapper .yikes-mc-card-top{display:inline-block;width:100%}.member-location-data,.member-subscription-date{width:70%;max-width:370px;display:block;float:left}#yikes-mc-subscriber-card-wrapper .yikes-mc-card-body h4{margin-top:0;margin-left:5px}.yikes-mc-subscriber-hr{margin:1.5em 0}.member-subscription-date{margin:.5em 0 .5em 10px}.member-location-data{margin:.25em 0 .25em 10px}.addon-required-link{color:#333;opacity:.5}.view-list-sidebar-input{color:#333}.interest-group-ul,.merge-variable-ul,.segment-ul{padding-left:15px;font-size:14px}.interest-group-ul li .dashicons,.merge-variable-ul li .dashicons{line-height:1.8;font-size:9px}a.button-primary.edit-fields-button{margin:0 0 10px 15px}.interest-group-count,.merge-variable-count,.segment-group-count{text-decoration:underline;margin-bottom:.75em;padding-left:7px}body.admin_page_yikes-mailchimp-edit-form .ui-datepicker .ui-datepicker-calendar td a,body.admin_page_yikes-mailchimp-edit-form .ui-datepicker a,body.admin_page_yikes-mailchimp-edit-form .ui-datepicker a:hover{text-decoration:none}.interest-group-title{padding-left:5px}.edit-segments-button{margin:0 0 10px 15px}.edit-segment-description{padding:0 0 10px 15px}#credit-container{margin-top:1.5em}.yikes-easy-mailchimp-custom-content-icon{font-size:15px;line-height:1}.custom-field-section{display:block;margin:1em 0}#associated-list{width:100%;margin-top:5px}#redirect-user-to-selection{width:100%}#edit-yikes-mc-form label h3{margin-left:0;padding-left:0}#available-fields .field-required{color:#d96060!important}body.admin_page_yikes-mailchimp-edit-form #poststuff h2{padding:8px 12px;margin-top:0}.edit-form-form-description{width:100%;resize:vertical;min-height:65px;max-height:100px}.edit-form-title{padding-left:12px!important}#edit-form-description{padding:0 12px;margin:1em 0}.yikes-easy-mc-postbox{overflow:hidden}.no-interest-groups-found-message{opacity:.35}.upgrading-ellipse-one,.upgrading-ellipse-two{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";-moz-opacity:0;-webkit-animation:dot 1.3s infinite}#interest-groups-container .description,#merge-variables-container .description{padding-top:.5em}.inside-section-1{margin-top:0;margin-bottom:1.5em}.inside-section-2{margin-top:0;margin-bottom:2em}.form-field-container-span{display:block;margin:.5em 0}#style-list ul li{display:block;width:100%;margin:1em 0}.form-style-adjustment,.wp-picker-container{display:block!important;width:100%;margin:.5em 0}.dynamic-email-tag{display:inline-block;margin-right:5px}.dynamic-tag-description td{padding-top:0}#create-new-notification-button{margin-top:1em}.file-container{display:none}.yikes-mailchimp-file-field input[name*="custom-field[incentive-attachment]"]{margin-bottom:.5em}.yikes-mailchimp-file-field input[name*="custom-field[incentive-attachment]"]+.button-secondary{margin-left:4px}input#upload-btn[data-attr-position="1"]{margin-left:0}.remove-file-button{background:url(../partials/helpers/fields/img/icon-delete.png);height:16px;position:absolute;text-indent:-99999px;width:16px}a.add-new-incentive-attachment{display:block;width:40px;margin-right:100%!important;margin-top:.5em!important}a.add-new-incentive-attachment .dashicons{font-size:15px;line-height:1.8}.form-builder-placeholder{background:rgba(206,206,206,.2);height:30px}.admin_page_yikes-mailchimp-edit-form #form-settings .section-title{font-size:1em;border-bottom:1px solid rgba(187,187,187,.29);display:block;width:100%;padding-bottom:6px;margin-bottom:.5em;margin-top:1.5em}.admin_page_yikes-mailchimp-edit-form #form-settings .section-interior label,.admin_page_yikes-mailchimp-edit-form #form-settings .section-title.first{margin-top:0}.admin_page_yikes-mailchimp-edit-form #form-settings .section-interior{display:inline-block;width:100%;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;background:rgba(241,241,241,.75);padding:1em}label.login-restriction-center{display:block;width:100%}.admin_page_yikes-mailchimp-edit-form #form-settings .section-interior .date-restirction-section{display:inline-block}.admin_page_yikes-mailchimp-edit-form #form-settings .section-interior .date-restirction-section p.description.error{color:#F56060}.admin_page_yikes-mailchimp-edit-form #form-settings .section-interior .date-restirction-section label{float:left;margin-right:.5em;margin-top:0;margin-bottom:0}.admin_page_yikes-mailchimp-edit-form #form-settings .section-interior .nested-child .yikes-easy-mc-form-restriction-expired-message,.admin_page_yikes-mailchimp-edit-form #form-settings .section-interior .nested-child .yikes-easy-mc-form-restriction-login-message,.admin_page_yikes-mailchimp-edit-form #form-settings .section-interior .nested-child .yikes-easy-mc-form-restriction-pending-message{display:block;width:100%;min-height:50px}.admin_page_yikes-mailchimp-edit-form #form-settings .section-interior .nested-child{float:left;padding-left:2%;width:98%;border-left:1px dashed #BDBDBD;border-spacing:2px;margin:.5em 0 1em}.admin_page_yikes-mailchimp-edit-form #form-settings .section-interior .nested-child .yikes-easy-mc-submit-button-text{margin:0}.admin_page_yikes-mailchimp-edit-form #form-settings .section-interior .date-restirction-section{margin-bottom:0}.admin_page_yikes-mailchimp-edit-form #form-settings .section-interior .date-restirction-section.last{margin-bottom:.75em}.admin_page_yikes-mailchimp-edit-form #form-settings .section-interior .nested-child.hidden{display:none}.admin_page_yikes-mailchimp-edit-form #form-settings .section-interior .description+label{margin-top:1em;float:left;width:100%}.admin_page_yikes-mailchimp-edit-form #form-settings .section-interior label.inline-form-label{margin-bottom:0;margin-top:0}.admin_page_yikes-mailchimp-edit-form #form-settings .section-interior .description{display:block;width:100%;float:left}.admin_page_yikes-mailchimp-edit-form #form-settings .nested-child strong:first-child,.admin_page_yikes-mailchimp-edit-form #form-settings .section-interior strong:first-child{display:block;width:100%}.admin_page_yikes-mailchimp-edit-form #form-settings .inline-form-label{float:left;margin-right:10px}body.admin_page_yikes-mailchimp-edit-form .ui-timepicker-wrapper{overflow-y:auto;height:150px;width:170px;background:#fff;border:1px solid #ddd;box-shadow:0 5px 10px rgba(0,0,0,.2);outline:0;z-index:10001;margin:0}body.admin_page_yikes-mailchimp-edit-form .ui-timepicker-wrapper.ui-timepicker-with-duration{width:13em}body.admin_page_yikes-mailchimp-edit-form .ui-timepicker-wrapper.ui-timepicker-with-duration.ui-timepicker-step-30,body.admin_page_yikes-mailchimp-edit-form .ui-timepicker-wrapper.ui-timepicker-with-duration.ui-timepicker-step-60{width:11em}body.admin_page_yikes-mailchimp-edit-form .ui-timepicker-list{margin:0;padding:0;list-style:none}body.admin_page_yikes-mailchimp-edit-form .ui-timepicker-duration{margin-left:5px;color:#888}body.admin_page_yikes-mailchimp-edit-form .ui-timepicker-list:hover .ui-timepicker-duration{color:#888}body.admin_page_yikes-mailchimp-edit-form .ui-timepicker-list li{padding:3px 0 3px 5px;cursor:pointer;white-space:nowrap;color:#000;list-style:none;margin:0}body.admin_page_yikes-mailchimp-edit-form .ui-timepicker-list:hover .ui-timepicker-selected{background:#fff;color:#000}body.admin_page_yikes-mailchimp-edit-form .ui-timepicker-list .ui-timepicker-selected:hover,body.admin_page_yikes-mailchimp-edit-form .ui-timepicker-list li:hover,body.admin_page_yikes-mailchimp-edit-form li.ui-timepicker-selected{background:#1980EC;color:#fff}body.admin_page_yikes-mailchimp-edit-form .ui-timepicker-list li:hover .ui-timepicker-duration,body.admin_page_yikes-mailchimp-edit-form li.ui-timepicker-selected .ui-timepicker-duration{color:#ccc}body.admin_page_yikes-mailchimp-edit-form .ui-timepicker-list li.ui-timepicker-disabled,body.admin_page_yikes-mailchimp-edit-form .ui-timepicker-list li.ui-timepicker-disabled:hover,body.admin_page_yikes-mailchimp-edit-form .ui-timepicker-list li.ui-timepicker-selected.ui-timepicker-disabled{color:#888;cursor:default}body.admin_page_yikes-mailchimp-edit-form .ui-timepicker-list li.ui-timepicker-disabled:hover,body.admin_page_yikes-mailchimp-edit-form .ui-timepicker-list li.ui-timepicker-selected.ui-timepicker-disabled{background:#f2f2f2}body.admin_page_yikes-mailchimp-edit-form .ui-datepicker{background-color:#fff;border:1px solid #66AFE9;border-radius:4px;box-shadow:0 0 8px rgba(102,175,233,.6);display:none;margin-top:4px;padding:10px;width:240px}body.admin_page_yikes-mailchimp-edit-form .ui-datepicker a:hover,body.admin_page_yikes-mailchimp-edit-form .ui-datepicker td:hover a{color:#2A6496;transition:color .1s ease-in-out}body.admin_page_yikes-mailchimp-edit-form .ui-datepicker .ui-datepicker-header{margin-bottom:4px;text-align:center}body.admin_page_yikes-mailchimp-edit-form .ui-datepicker .ui-datepicker-title{font-weight:700}body.admin_page_yikes-mailchimp-edit-form .ui-datepicker .ui-datepicker-next,body.admin_page_yikes-mailchimp-edit-form .ui-datepicker .ui-datepicker-prev{cursor:default;font-family:'Glyphicons Halflings';-webkit-font-smoothing:antialiased;font-style:normal;font-weight:400;height:20px;line-height:1;margin-top:2px;width:30px}body.admin_page_yikes-mailchimp-edit-form .ui-datepicker .ui-datepicker-prev{float:left;text-align:left}body.admin_page_yikes-mailchimp-edit-form .ui-datepicker .ui-datepicker-next{float:right;text-align:right}body.admin_page_yikes-mailchimp-edit-form .ui-datepicker .ui-datepicker-prev:before{content:"\f141";font-family:dashicons}body.admin_page_yikes-mailchimp-edit-form .ui-datepicker .ui-datepicker-next:before{content:"\f139";font-family:dashicons}body.admin_page_yikes-mailchimp-edit-form .ui-datepicker-next:hover,body.admin_page_yikes-mailchimp-edit-form .ui-datepicker-prev:hover{cursor:pointer!important}body.admin_page_yikes-mailchimp-edit-form .ui-datepicker-close{display:none}body.admin_page_yikes-mailchimp-edit-form .ui-datepicker-current{color:#555!important;border-color:#ccc!important;background:#f7f7f7!important;box-shadow:0 1px 0 #ccc!important;vertical-align:top!important;display:inline-block;text-decoration:none;font-size:13px;line-height:26px;height:28px;padding:0 10px 1px;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;border-radius:3px;white-space:nowrap;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;margin-top:10px}body.admin_page_yikes-mailchimp-edit-form .ui-datepicker .ui-datepicker-current-day a,body.admin_page_yikes-mailchimp-edit-form .ui-datepicker .ui-datepicker-today a{color:#fff}body.admin_page_yikes-mailchimp-edit-form .ui-datepicker .ui-icon{display:none}body.admin_page_yikes-mailchimp-edit-form .ui-datepicker .ui-datepicker-calendar{table-layout:fixed;width:100%}body.admin_page_yikes-mailchimp-edit-form .ui-datepicker .ui-datepicker-calendar td,body.admin_page_yikes-mailchimp-edit-form .ui-datepicker .ui-datepicker-calendar th{text-align:center;padding:4px 0}body.admin_page_yikes-mailchimp-edit-form .ui-datepicker .ui-datepicker-calendar td{border-radius:4px;transition:background-color .1s ease-in-out,color .1s ease-in-out}body.admin_page_yikes-mailchimp-edit-form .ui-datepicker .ui-datepicker-calendar td:hover{background-color:#EBEBEB;cursor:pointer}body.admin_page_yikes-mailchimp-edit-form .ui-datepicker .ui-datepicker-today{background-color:rgba(66,137,204,.65)}body.admin_page_yikes-mailchimp-edit-form .ui-datepicker .ui-datepicker-current-day{background-color:#4289cc}body.admin_page_yikes-mailchimp-edit-form .ui-datepicker .ui-datepicker-calendar .ui-datepicker-unselectable:hover{background-color:#fff;cursor:default}.custom-radio-holder{display:inline-block;width:100%;margin:.5em 0}.custom-radio-label{display:block;float:left;margin:0 5px}.custom-radio-label:first-child{margin-left:0!important}.custom-radio-label input[type=radio]{margin-right:0!important}.custom-select-field{display:block;width:100%;margin:.5em 0}#available-widgets [class*=yikes_easy] .widget-title:before{content:""!important;background:url(../../includes/images/MailChimp_Assets/Freddie_original.png) no-repeat #FAFAFA;background-size:contain}body.wp-customizer #available-widgets [id*="_yikes_easy_mc_widget"]>div.widget-top>div.widget-title>h4{background:0 0!important}#connection-container{float:right;color:#fff;padding:.25em .75em .25em .25em;margin-top:-4px}#connection-container.api-connected{background:#44ba44}#connection-container.api-not-connected{background:#b5b5b5}.yikes-mc-api-connected,.yikes-mc-api-not-connected{line-height:1}.show-some-love-container{transition:max-height .75s}#review-yikes-easy-mc{text-align:center}#review-yikes-easy-mc .dashicons-star-filled{color:#E6B800}.meta-box-sortables hr{margin:1.75em 0 0}#about-yikes-inc{display:none}#about-yikes-inc .about-sidebar-yikes-logo{float:left;width:95px;margin:5px 7px 0 0}#about-yikes-inc p{margin-top:0}.yikes-easy-mc-updated{display:block;border-left:4px solid #4EAEF0;margin:1em 20px 1em 0;padding:2px 10px;background:right bottom no-repeat #fff;background-size:120px;background-position-y:29px}.support-section{margin:1.5em 0;padding:1em 0}.github-octocat{background:url(../../includes/images/Support_Page/Octocat.png) left top no-repeat;background-size:100%;width:50px;height:45px;display:block;float:left;margin-top:-5px}@media screen and (max-width:1200px){.yikes-easy-mc-postbox #post-body.columns-2 #postbox-container-1{float:none}}@media screen and (max-width:850px){.option-menu-selected-arrow{display:none!important}}@media screen and (max-width:782px){#chimp-chatter .chimp-chatter-container{float:none;height:auto;width:100%}}.recaptcha-demo-gif{width:275px}.pro-version-only-notice{color:#d96060}.upgrading-ellipse-one{filter:alpha(opacity=0);-khtml-opacity:0;opacity:0;animation:dot 1.3s infinite;-webkit-animation-delay:0ms;animation-delay:0ms}.upgrading-ellipse-two{filter:alpha(opacity=0);-khtml-opacity:0;opacity:0;animation:dot 1.3s infinite;-webkit-animation-delay:.2s;animation-delay:.2s}.upgrading-ellipse-three{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);-moz-opacity:0;-khtml-opacity:0;opacity:0;-webkit-animation:dot 1.3s infinite;animation:dot 1.3s infinite;-webkit-animation-delay:.3s;animation-delay:.3s}@-webkit-keyframes dot{0%,50%{opacity:0}100%{opacity:1}}@keyframes dot{0%,50%{opacity:0}100%{opacity:1}}
 
admin/css/yikes-inc-easy-mailchimp-migrate-option-styles.min.css CHANGED
@@ -1,2 +1 @@
1
- .upgrading-ellipse-one,.upgrading-ellipse-two{-webkit-animation:dot 1.3s infinite;opacity:0}.migrate-options-notice{display:none}.migration-complete-notification{margin-top:2em;font-size:18px;font-weight:200}#options-updated li:before{background:#FCFCFC;border-radius:50%;margin-right:5px;color:rgba(74,209,74,.69);font-family:Dashicons;content:"\f147"}#options-updated li:last-child:before{content:"";font-family:"";margin-left:15px;margin-top:2em!important}#options-updated li{margin:1em 0}.upgrading-ellipse-one{-webkit-animation:dot 1.3s infinite;animation:dot 1.3s infinite;-webkit-animation-delay:0ms;animation-delay:0ms}.upgrading-ellipse-two{-webkit-animation:dot 1.3s infinite;animation:dot 1.3s infinite;-webkit-animation-delay:.2s;animation-delay:.2s}.upgrading-ellipse-three{opacity:0;-webkit-animation:dot 1.3s infinite;animation:dot 1.3s infinite;-webkit-animation-delay:.3s;animation-delay:.3s}@-webkit-keyframes dot{0%,50%{opacity:0}100%{opacity:1}}@keyframes dot{0%,50%{opacity:0}100%{opacity:1}}
2
- /*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInlpa2VzLWluYy1lYXN5LW1haWxjaGltcC1taWdyYXRlLW9wdGlvbi1zdHlsZXMubWluLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw4Q0FBOEMsb0NBQW9DLFNBQVMsQ0FBQyx3QkFBd0IsWUFBWSxDQUFDLGlDQUFpQyxlQUFlLGVBQWUsZUFBZSxDQUFDLDJCQUEyQixtQkFBbUIsa0JBQWtCLGlCQUFpQiwwQkFBMEIsc0JBQXNCLGVBQWUsQ0FBQyxzQ0FBc0MsV0FBVyxlQUFlLGlCQUFpQix3QkFBd0IsQ0FBQyxvQkFBb0IsWUFBWSxDQUFDLHVCQUF1QixvQ0FBNEIsQUFBNUIsNEJBQTRCLDRCQUE0QixtQkFBbUIsQ0FBQyx1QkFBdUIsb0NBQTRCLEFBQTVCLDRCQUE0Qiw0QkFBNEIsbUJBQW1CLENBQUMseUJBQXlCLFVBQVUsb0NBQW9DLDRCQUE0Qiw0QkFBNEIsbUJBQW1CLENBQUMsdUJBQXVCLE9BQU8sU0FBUyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsZUFBZSxPQUFPLFNBQVMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDIiwiZmlsZSI6Inlpa2VzLWluYy1lYXN5LW1haWxjaGltcC1taWdyYXRlLW9wdGlvbi1zdHlsZXMubWluLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi51cGdyYWRpbmctZWxsaXBzZS1vbmUsLnVwZ3JhZGluZy1lbGxpcHNlLXR3b3std2Via2l0LWFuaW1hdGlvbjpkb3QgMS4zcyBpbmZpbml0ZTtvcGFjaXR5OjB9Lm1pZ3JhdGUtb3B0aW9ucy1ub3RpY2V7ZGlzcGxheTpub25lfS5taWdyYXRpb24tY29tcGxldGUtbm90aWZpY2F0aW9ue21hcmdpbi10b3A6MmVtO2ZvbnQtc2l6ZToxOHB4O2ZvbnQtd2VpZ2h0OjIwMH0jb3B0aW9ucy11cGRhdGVkIGxpOmJlZm9yZXtiYWNrZ3JvdW5kOiNGQ0ZDRkM7Ym9yZGVyLXJhZGl1czo1MCU7bWFyZ2luLXJpZ2h0OjVweDtjb2xvcjpyZ2JhKDc0LDIwOSw3NCwuNjkpO2ZvbnQtZmFtaWx5OkRhc2hpY29ucztjb250ZW50OlwiXFxmMTQ3XCJ9I29wdGlvbnMtdXBkYXRlZCBsaTpsYXN0LWNoaWxkOmJlZm9yZXtjb250ZW50OlwiXCI7Zm9udC1mYW1pbHk6XCJcIjttYXJnaW4tbGVmdDoxNXB4O21hcmdpbi10b3A6MmVtIWltcG9ydGFudH0jb3B0aW9ucy11cGRhdGVkIGxpe21hcmdpbjoxZW0gMH0udXBncmFkaW5nLWVsbGlwc2Utb25le2FuaW1hdGlvbjpkb3QgMS4zcyBpbmZpbml0ZTstd2Via2l0LWFuaW1hdGlvbi1kZWxheTowbXM7YW5pbWF0aW9uLWRlbGF5OjBtc30udXBncmFkaW5nLWVsbGlwc2UtdHdve2FuaW1hdGlvbjpkb3QgMS4zcyBpbmZpbml0ZTstd2Via2l0LWFuaW1hdGlvbi1kZWxheTouMnM7YW5pbWF0aW9uLWRlbGF5Oi4yc30udXBncmFkaW5nLWVsbGlwc2UtdGhyZWV7b3BhY2l0eTowOy13ZWJraXQtYW5pbWF0aW9uOmRvdCAxLjNzIGluZmluaXRlO2FuaW1hdGlvbjpkb3QgMS4zcyBpbmZpbml0ZTstd2Via2l0LWFuaW1hdGlvbi1kZWxheTouM3M7YW5pbWF0aW9uLWRlbGF5Oi4zc31ALXdlYmtpdC1rZXlmcmFtZXMgZG90ezAlLDUwJXtvcGFjaXR5OjB9MTAwJXtvcGFjaXR5OjF9fUBrZXlmcmFtZXMgZG90ezAlLDUwJXtvcGFjaXR5OjB9MTAwJXtvcGFjaXR5OjF9fSJdfQ== */
1
+ .upgrading-ellipse-one,.upgrading-ellipse-two{-webkit-animation:dot 1.3s infinite;opacity:0}.migrate-options-notice{display:none}.migration-complete-notification{margin-top:2em;font-size:18px;font-weight:200}#options-updated li:before{background:#FCFCFC;border-radius:50%;margin-right:5px;color:rgba(74,209,74,.69);font-family:Dashicons;content:"\f147"}#options-updated li:last-child:before{content:"";font-family:"";margin-left:15px;margin-top:2em!important}#options-updated li{margin:1em 0}.upgrading-ellipse-one{animation:dot 1.3s infinite;-webkit-animation-delay:0ms;animation-delay:0ms}.upgrading-ellipse-two{animation:dot 1.3s infinite;-webkit-animation-delay:.2s;animation-delay:.2s}.upgrading-ellipse-three{opacity:0;-webkit-animation:dot 1.3s infinite;animation:dot 1.3s infinite;-webkit-animation-delay:.3s;animation-delay:.3s}@-webkit-keyframes dot{0%,50%{opacity:0}100%{opacity:1}}@keyframes dot{0%,50%{opacity:0}100%{opacity:1}}
 
admin/partials/dashboard-widgets/class.list-activity-widget.php CHANGED
@@ -1,155 +1,156 @@
1
- <?php
2
- /*
3
- * Our ajax is processed inside of class.ajax.php
4
- */
5
- class YIKES_Inc_Easy_MailChimp_Dashboard_Widgets
6
- {
7
-
8
- // Construction
9
- public function __construct() {
10
- if( get_option( 'yikes-mc-api-key' , '' ) != '' && get_option( 'yikes-mc-api-validation' , 'invalid_api_key' ) == 'valid_api_key' ) {
11
- // hook in and display our list stats dashboard widget
12
- add_action( 'wp_dashboard_setup', array( $this , 'yks_mc_add_chimp_chatter_dashboard_widget' ) , 10 );
13
- // hook in and display our chimp chatter dashboard widget
14
- add_action( 'wp_dashboard_setup', array( $this , 'yks_mc_add_chimp_chatter_dashboard_widget' ) , 10 );
15
- }
16
- add_action( 'admin_enqueue_scripts' , array( $this, 'enqueue_dashboard_widget_script' ) );
17
- }
18
-
19
- // enqueue our JS file on the main dashboard page
20
- function enqueue_dashboard_widget_script( $hook ) {
21
- if( 'index.php' == $hook ) { // default 'dashboard' page
22
- wp_register_script( 'yikes-easy-mc-dashboard-widget-script' , YIKES_MC_URL . 'admin/js/min/yikes-inc-easy-mailchimp-dashboard-widget.min.js' , array( 'jquery' ) , 'all' , false );
23
- $data_array = array(
24
- 'ajax_url' => esc_url_raw( admin_url( 'admin-ajax.php' ) ),
25
- 'preloader' => '<img src="' . esc_url_raw( admin_url( 'images/wpspin_light.gif' ) ) . '" title="' . __( 'Preloader' , 'yikes-inc-easy-mailchimp-extender' ) . '" alt="' . __( 'Preloader' , 'yikes-inc-easy-mailchimp-extender' ) . '" class="yikes-easy-mc-widget-preloader">'
26
- );
27
- // localize our data, to pass along to JS file
28
- wp_localize_script( 'yikes-easy-mc-dashboard-widget-script' , 'object' , $data_array );
29
- wp_enqueue_script( 'yikes-easy-mc-dashboard-widget-script' );
30
- }
31
- }
32
-
33
- /*******************************************************
34
- Custom Dashboard MailChimp Account Activity Widget
35
- ********************************************************/
36
- /**
37
- * Add a widget to the dashboard.
38
- *
39
- * This function is hooked into the 'wp_dashboard_setup' action below.
40
- */
41
- function yks_mc_add_chimp_chatter_dashboard_widget() {
42
- /* List Stats Dashboard Widget */
43
- wp_add_dashboard_widget(
44
- 'yikes_easy_mc_list_stats_widget', // Widget slug.
45
- __( 'MailChimp List Stats', 'yikes-inc-easy-mailchimp-extender' ), // Title.
46
- array( $this , 'list_stats_dashboard_widget' ) // Display function.
47
- );
48
- /* Chimp Chatter Dashboard Widget */
49
- wp_add_dashboard_widget(
50
- 'yikes_easy_mc_account_activity_widget', // Widget slug.
51
- __( 'MailChimp Account Activity', 'yikes-inc-easy-mailchimp-extender' ), // Title.
52
- array( $this , 'account_activity_dashboard_widget' ) // Display function.
53
- );
54
- }
55
-
56
- /**
57
- * Create the function to output our list stats dashboard widget
58
- */
59
- function list_stats_dashboard_widget() {
60
- // Get our list data!
61
- // Check for a transient, if not - set one up for one hour
62
- if ( false === ( $list_data = get_transient( 'yikes-easy-mailchimp-list-data' ) ) ) {
63
- $api_key = trim( get_option( 'yikes-mc-api-key' , '' ) );
64
- $dash_position = strpos( $api_key, '-' );
65
- if( $dash_position !== false ) {
66
- $api_endpoint = 'https://' . substr( $api_key, $dash_position + 1 ) . '.api.mailchimp.com/2.0/lists/list.json';
67
- }
68
- $list_data = wp_remote_post( $api_endpoint, array(
69
- 'body' => array(
70
- 'apikey' => $api_key,
71
- 'limit' => 100
72
- ),
73
- 'timeout' => 10,
74
- 'sslverify' => apply_filters( 'yikes-mailchimp-sslverify', true )
75
- ) );
76
- $list_data = json_decode( wp_remote_retrieve_body( $list_data ), true );
77
- if( isset( $list_data['error'] ) ) {
78
- if( WP_DEBUG || get_option( 'yikes-mailchimp-debug-status' , '' ) == '1' ) {
79
- require_once YIKES_MC_PATH . 'includes/error_log/class-yikes-inc-easy-mailchimp-error-logging.php';
80
- $error_logging = new Yikes_Inc_Easy_Mailchimp_Error_Logging();
81
- $error_logging->yikes_easy_mailchimp_write_to_error_log( $list_data['error'], __( "Get Account Lists" , 'yikes-inc-easy-mailchimp-extender' ), "Dashboard Activity Widget" );
82
- }
83
- } else {
84
- // set our transient
85
- set_transient( 'yikes-easy-mailchimp-list-data', $list_data, 1 * HOUR_IN_SECONDS );
86
- }
87
- }
88
- ?>
89
- <!-- Dropdown to Change the list -->
90
- <?php if( ! empty( $list_data['data'] ) ) {
91
- ?><section class="inside-widget yikes-dashboard-widget-section">
92
- <strong class="select-list-title"><?php _e( 'Select a list' , 'yikes-inc-easy-mailchimp-extender' ) ?>:</strong>
93
- <select id="yikes-easy-mc-dashboard-change-list" class="widefat">
94
- <?php
95
- foreach( $list_data['data'] as $list ) {
96
- ?><option val="<?php echo $list['id']; ?>"><?php echo $list['name']; ?></option><?php
97
- }
98
- ?>
99
- </select>
100
- <p class="description"><?php _e( 'Select a list from the dropdown above. View statistics related to this list below.' , 'yikes-inc-easy-mailchimp-extender' ); ?></p>
101
- </section>
102
- <!-- display stats here! -->
103
- <section id="yikes-easy-mc-dashboard-widget-stats">
104
- <?php
105
- if( !empty( $list_data['data'] ) ) {
106
- include_once( YIKES_MC_PATH . 'admin/partials/dashboard-widgets/templates/stats-list-template.php' );
107
- }
108
- ?>
109
- </section>
110
- <?php } else { ?>
111
- <section id="yikes-easy-mc-dashboard-widget-stats">
112
- <p class="no-lists-error"><?php _e( "Whoops, you don't have any lists set up. Head over to MailChimp to set up lists." , 'yikes-inc-easy-mailchimp-extender' ); ?></p>
113
- </section>
114
- <?php }
115
- }
116
-
117
- /**
118
- * Create the function to output our account activity dashboard widget
119
- */
120
- function account_activity_dashboard_widget() {
121
- // Get our list data!
122
- // Check for a transient, if not - set one up for one hour
123
- if ( false === ( $account_activity = get_transient( 'yikes-easy-mailchimp-account-activity' ) ) ) {
124
- $api_key = trim( get_option( 'yikes-mc-api-key' , '' ) );
125
- $dash_position = strpos( $api_key, '-' );
126
- if( $dash_position !== false ) {
127
- $api_endpoint = 'https://' . substr( $api_key, $dash_position + 1 ) . '.api.mailchimp.com/2.0/helper/chimp-chatter.json';
128
- }
129
- $account_activity = wp_remote_post( $api_endpoint, array(
130
- 'body' => array(
131
- 'apikey' => $api_key
132
- ),
133
- 'timeout' => 10,
134
- 'sslverify' => apply_filters( 'yikes-mailchimp-sslverify', true )
135
- ) );
136
- $account_activity = json_decode( wp_remote_retrieve_body( $account_activity ), true );
137
- if( isset( $account_activity['error'] ) ) {
138
- if( WP_DEBUG || get_option( 'yikes-mailchimp-debug-status' , '' ) == '1' ) {
139
- require_once YIKES_MC_PATH . 'includes/error_log/class-yikes-inc-easy-mailchimp-error-logging.php';
140
- $error_logging = new Yikes_Inc_Easy_Mailchimp_Error_Logging();
141
- $error_logging->yikes_easy_mailchimp_write_to_error_log( $account_activity['error'], __( "Get Account Activity" , 'yikes-inc-easy-mailchimp-extender' ), "Dashboard Activity Widget" );
142
- }
143
- } else {
144
- // set our transient for one hour
145
- set_transient( 'yikes-easy-mailchimp-account-activity', $account_activity, 1 * HOUR_IN_SECONDS );
146
- }
147
- }
148
- if( ! empty( $account_activity ) ) {
149
- include_once( YIKES_MC_PATH . 'admin/partials/dashboard-widgets/templates/account-activity-template.php' );
150
- }
151
- }
152
-
153
- } // end class
154
- new YIKES_Inc_Easy_MailChimp_Dashboard_Widgets();
155
- ?>
 
1
+ <?php
2
+ /*
3
+ * Our ajax is processed inside of class.ajax.php
4
+ */
5
+ class YIKES_Inc_Easy_MailChimp_Dashboard_Widgets
6
+ {
7
+
8
+ // Construction
9
+ public function __construct() {
10
+ if( get_option( 'yikes-mc-api-key' , '' ) != '' && get_option( 'yikes-mc-api-validation' , 'invalid_api_key' ) == 'valid_api_key' ) {
11
+ // hook in and display our list stats dashboard widget
12
+ add_action( 'wp_dashboard_setup', array( $this , 'yks_mc_add_chimp_chatter_dashboard_widget' ) , 10 );
13
+ }
14
+ add_action( 'admin_enqueue_scripts' , array( $this, 'enqueue_dashboard_widget_script' ) );
15
+ }
16
+
17
+ // enqueue our JS file on the main dashboard page
18
+ function enqueue_dashboard_widget_script( $hook ) {
19
+ if( 'index.php' == $hook ) { // default 'dashboard' page
20
+ wp_register_script( 'yikes-easy-mc-dashboard-widget-script' , YIKES_MC_URL . 'admin/js/min/yikes-inc-easy-mailchimp-dashboard-widget.min.js' , array( 'jquery' ) , 'all' , false );
21
+ $data_array = array(
22
+ 'ajax_url' => esc_url_raw( admin_url( 'admin-ajax.php' ) ),
23
+ 'preloader' => '<img src="' . esc_url_raw( admin_url( 'images/wpspin_light.gif' ) ) . '" title="' . __( 'Preloader' , 'yikes-inc-easy-mailchimp-extender' ) . '" alt="' . __( 'Preloader' , 'yikes-inc-easy-mailchimp-extender' ) . '" class="yikes-easy-mc-widget-preloader">'
24
+ );
25
+ // localize our data, to pass along to JS file
26
+ wp_localize_script( 'yikes-easy-mc-dashboard-widget-script' , 'object' , $data_array );
27
+ wp_enqueue_script( 'yikes-easy-mc-dashboard-widget-script' );
28
+ }
29
+ }
30
+
31
+ /*******************************************************
32
+ Custom Dashboard MailChimp Account Activity Widget
33
+ ********************************************************/
34
+ /**
35
+ * Add a widget to the dashboard.
36
+ *
37
+ * This function is hooked into the 'wp_dashboard_setup' action below.
38
+ */
39
+ function yks_mc_add_chimp_chatter_dashboard_widget() {
40
+ // If the current user is not an admin, abort
41
+ if ( apply_filters( 'yikes-mailchimp-user-role-access', current_user_can( 'manage_options' ) ) ) {
42
+ /* List Stats Dashboard Widget */
43
+ wp_add_dashboard_widget(
44
+ 'yikes_easy_mc_list_stats_widget', // Widget slug.
45
+ __( 'MailChimp List Stats', 'yikes-inc-easy-mailchimp-extender' ), // Title.
46
+ array( $this , 'list_stats_dashboard_widget' ) // Display function.
47
+ );
48
+ /* Chimp Chatter Dashboard Widget */
49
+ wp_add_dashboard_widget(
50
+ 'yikes_easy_mc_account_activity_widget', // Widget slug.
51
+ __( 'MailChimp Account Activity', 'yikes-inc-easy-mailchimp-extender' ), // Title.
52
+ array( $this , 'account_activity_dashboard_widget' ) // Display function.
53
+ );
54
+ }
55
+ }
56
+
57
+ /**
58
+ * Create the function to output our list stats dashboard widget
59
+ */
60
+ function list_stats_dashboard_widget() {
61
+ // Get our list data!
62
+ // Check for a transient, if not - set one up for one hour
63
+ if ( false === ( $list_data = get_transient( 'yikes-easy-mailchimp-list-data' ) ) ) {
64
+ $api_key = trim( get_option( 'yikes-mc-api-key' , '' ) );
65
+ $dash_position = strpos( $api_key, '-' );
66
+ if( $dash_position !== false ) {
67
+ $api_endpoint = 'https://' . substr( $api_key, $dash_position + 1 ) . '.api.mailchimp.com/2.0/lists/list.json';
68
+ }
69
+ $list_data = wp_remote_post( $api_endpoint, array(
70
+ 'body' => array(
71
+ 'apikey' => $api_key,
72
+ 'limit' => 100
73
+ ),
74
+ 'timeout' => 10,
75
+ 'sslverify' => apply_filters( 'yikes-mailchimp-sslverify', true )
76
+ ) );
77
+ $list_data = json_decode( wp_remote_retrieve_body( $list_data ), true );
78
+ if( isset( $list_data['error'] ) ) {
79
+ if( WP_DEBUG || get_option( 'yikes-mailchimp-debug-status' , '' ) == '1' ) {
80
+ require_once YIKES_MC_PATH . 'includes/error_log/class-yikes-inc-easy-mailchimp-error-logging.php';
81
+ $error_logging = new Yikes_Inc_Easy_Mailchimp_Error_Logging();
82
+ $error_logging->yikes_easy_mailchimp_write_to_error_log( $list_data['error'], __( "Get Account Lists" , 'yikes-inc-easy-mailchimp-extender' ), "Dashboard Activity Widget" );
83
+ }
84
+ } else {
85
+ // set our transient
86
+ set_transient( 'yikes-easy-mailchimp-list-data', $list_data, 1 * HOUR_IN_SECONDS );
87
+ }
88
+ }
89
+ ?>
90
+ <!-- Dropdown to Change the list -->
91
+ <?php if( ! empty( $list_data['data'] ) ) {
92
+ ?><section class="inside-widget yikes-dashboard-widget-section">
93
+ <strong class="select-list-title"><?php _e( 'Select a list' , 'yikes-inc-easy-mailchimp-extender' ) ?>:</strong>
94
+ <select id="yikes-easy-mc-dashboard-change-list" class="widefat">
95
+ <?php
96
+ foreach( $list_data['data'] as $list ) {
97
+ ?><option val="<?php echo $list['id']; ?>"><?php echo $list['name']; ?></option><?php
98
+ }
99
+ ?>
100
+ </select>
101
+ <p class="description"><?php _e( 'Select a list from the dropdown above. View statistics related to this list below.' , 'yikes-inc-easy-mailchimp-extender' ); ?></p>
102
+ </section>
103
+ <!-- display stats here! -->
104
+ <section id="yikes-easy-mc-dashboard-widget-stats">
105
+ <?php
106
+ if( !empty( $list_data['data'] ) ) {
107
+ include_once( YIKES_MC_PATH . 'admin/partials/dashboard-widgets/templates/stats-list-template.php' );
108
+ }
109
+ ?>
110
+ </section>
111
+ <?php } else { ?>
112
+ <section id="yikes-easy-mc-dashboard-widget-stats">
113
+ <p class="no-lists-error"><?php _e( "Whoops, you don't have any lists set up. Head over to MailChimp to set up lists." , 'yikes-inc-easy-mailchimp-extender' ); ?></p>
114
+ </section>
115
+ <?php }
116
+ }
117
+
118
+ /**
119
+ * Create the function to output our account activity dashboard widget
120
+ */
121
+ function account_activity_dashboard_widget() {
122
+ // Get our list data!
123
+ // Check for a transient, if not - set one up for one hour
124
+ if ( false === ( $account_activity = get_transient( 'yikes-easy-mailchimp-account-activity' ) ) ) {
125
+ $api_key = trim( get_option( 'yikes-mc-api-key' , '' ) );
126
+ $dash_position = strpos( $api_key, '-' );
127
+ if( $dash_position !== false ) {
128
+ $api_endpoint = 'https://' . substr( $api_key, $dash_position + 1 ) . '.api.mailchimp.com/2.0/helper/chimp-chatter.json';
129
+ }
130
+ $account_activity = wp_remote_post( $api_endpoint, array(
131
+ 'body' => array(
132
+ 'apikey' => $api_key
133
+ ),
134
+ 'timeout' => 10,
135
+ 'sslverify' => apply_filters( 'yikes-mailchimp-sslverify', true )
136
+ ) );
137
+ $account_activity = json_decode( wp_remote_retrieve_body( $account_activity ), true );
138
+ if( isset( $account_activity['error'] ) ) {
139
+ if( WP_DEBUG || get_option( 'yikes-mailchimp-debug-status' , '' ) == '1' ) {
140
+ require_once YIKES_MC_PATH . 'includes/error_log/class-yikes-inc-easy-mailchimp-error-logging.php';
141
+ $error_logging = new Yikes_Inc_Easy_Mailchimp_Error_Logging();
142
+ $error_logging->yikes_easy_mailchimp_write_to_error_log( $account_activity['error'], __( "Get Account Activity" , 'yikes-inc-easy-mailchimp-extender' ), "Dashboard Activity Widget" );
143
+ }
144
+ } else {
145
+ // set our transient for one hour
146
+ set_transient( 'yikes-easy-mailchimp-account-activity', $account_activity, 1 * HOUR_IN_SECONDS );
147
+ }
148
+ }
149
+ if( ! empty( $account_activity ) ) {
150
+ include_once( YIKES_MC_PATH . 'admin/partials/dashboard-widgets/templates/account-activity-template.php' );
151
+ }
152
+ }
153
+
154
+ } // end class
155
+ new YIKES_Inc_Easy_MailChimp_Dashboard_Widgets();
156
+ ?>
includes/class-yikes-inc-easy-mailchimp-extender.php CHANGED
@@ -62,7 +62,7 @@ class Yikes_Inc_Easy_Mailchimp_Extender {
62
  */
63
  public function __construct() {
64
  $this->yikes_inc_easy_mailchimp_extender = 'yikes-inc-easy-mailchimp-extender';
65
- $this->version = '6.0.5.4';
66
  $this->load_dependencies();
67
  $this->define_admin_hooks();
68
  $this->define_public_hooks();
62
  */
63
  public function __construct() {
64
  $this->yikes_inc_easy_mailchimp_extender = 'yikes-inc-easy-mailchimp-extender';
65
+ $this->version = '6.0.5.5';
66
  $this->load_dependencies();
67
  $this->define_admin_hooks();
68
  $this->define_public_hooks();
public/css/yikes-inc-easy-mailchimp-checkbox-integration.min.css CHANGED
@@ -1,2 +1 @@
1
- input[name=yikes_mailchimp_checkbox_easy_digital_downloads_checkout_form]{margin-top:3px!important}.yikes-easy-mailchimp-registration_form-checkbox{margin-bottom:.8em!important}#yikes-easy-mailchimp-buddypress_form-checkbox{display:inline-block}#yikes-mailchimp-checkbox-section{width:48%;float:right}
2
- /*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInlpa2VzLWluYy1lYXN5LW1haWxjaGltcC1jaGVja2JveC1pbnRlZ3JhdGlvbi5taW4uY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBFQUEwRSx3QkFBd0IsQ0FBQyxpREFBaUQsNEJBQTRCLENBQUMsK0NBQStDLG9CQUFvQixDQUFDLGtDQUFrQyxVQUFVLFdBQVcsQ0FBQyIsImZpbGUiOiJ5aWtlcy1pbmMtZWFzeS1tYWlsY2hpbXAtY2hlY2tib3gtaW50ZWdyYXRpb24ubWluLmNzcyIsInNvdXJjZXNDb250ZW50IjpbImlucHV0W25hbWU9eWlrZXNfbWFpbGNoaW1wX2NoZWNrYm94X2Vhc3lfZGlnaXRhbF9kb3dubG9hZHNfY2hlY2tvdXRfZm9ybV17bWFyZ2luLXRvcDozcHghaW1wb3J0YW50fS55aWtlcy1lYXN5LW1haWxjaGltcC1yZWdpc3RyYXRpb25fZm9ybS1jaGVja2JveHttYXJnaW4tYm90dG9tOi44ZW0haW1wb3J0YW50fSN5aWtlcy1lYXN5LW1haWxjaGltcC1idWRkeXByZXNzX2Zvcm0tY2hlY2tib3h7ZGlzcGxheTppbmxpbmUtYmxvY2t9I3lpa2VzLW1haWxjaGltcC1jaGVja2JveC1zZWN0aW9ue3dpZHRoOjQ4JTtmbG9hdDpyaWdodH0iXX0= */
1
+ input[name=yikes_mailchimp_checkbox_easy_digital_downloads_checkout_form]{margin-top:3px!important}.yikes-easy-mailchimp-registration_form-checkbox{margin-bottom:.8em!important}#yikes-easy-mailchimp-buddypress_form-checkbox{display:inline-block}#yikes-mailchimp-checkbox-section{width:48%;float:right}
 
public/css/yikes-inc-easy-mailchimp-datepicker-styles.min.css CHANGED
@@ -4,5 +4,4 @@
4
  * Copyright 2012 Stefan Petre
5
  * Improvements by Andrew Rowls
6
  * Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0)
7
- */.datepicker-dropdown:after,.datepicker-dropdown:before{content:'';display:inline-block;border-top:0;position:absolute}.datepicker{padding:4px;border-radius:4px;direction:ltr}.datepicker-inline{width:220px}.datepicker.datepicker-rtl{direction:rtl}.datepicker.datepicker-rtl table tr td span{float:right}.datepicker-dropdown{top:0;left:0}.datepicker-dropdown:before{border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0,0,0,.2)}.datepicker-dropdown:after{border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff}.datepicker-dropdown.datepicker-orient-left:before{left:6px}.datepicker-dropdown.datepicker-orient-left:after{left:7px}.datepicker-dropdown.datepicker-orient-right:before{right:6px}.datepicker-dropdown.datepicker-orient-right:after{right:7px}.datepicker-dropdown.datepicker-orient-top:before{top:-7px}.datepicker-dropdown.datepicker-orient-top:after{top:-6px}.datepicker-dropdown.datepicker-orient-bottom:before{bottom:-7px;border-bottom:0;border-top:7px solid #999}.datepicker-dropdown.datepicker-orient-bottom:after{bottom:-6px;border-bottom:0;border-top:6px solid #fff}.datepicker>div{display:none}.datepicker.days .datepicker-days,.datepicker.months .datepicker-months,.datepicker.years .datepicker-years{display:block}.datepicker table{margin:0;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.datepicker table tr td,.datepicker table tr th{text-align:center;width:30px;height:30px;border-radius:4px;border:none}.table-striped .datepicker table tr td,.table-striped .datepicker table tr th{background-color:transparent}.datepicker table tr td.day.focused,.datepicker table tr td.day:hover{background:#eee;cursor:pointer}.datepicker table tr td.new,.datepicker table tr td.old{color:#999}.datepicker table tr td.disabled,.datepicker table tr td.disabled:hover{background:0 0;color:#999;cursor:default}.datepicker table tr td.today,.datepicker table tr td.today.disabled,.datepicker table tr td.today.disabled:hover,.datepicker table tr td.today:hover{color:#000;background-color:#ffdb99;border-color:#ffb733}.datepicker table tr td.today.active,.datepicker table tr td.today.disabled.active,.datepicker table tr td.today.disabled:active,.datepicker table tr td.today.disabled:focus,.datepicker table tr td.today.disabled:hover,.datepicker table tr td.today.disabled:hover.active,.datepicker table tr td.today.disabled:hover:active,.datepicker table tr td.today.disabled:hover:focus,.datepicker table tr td.today.disabled:hover:hover,.datepicker table tr td.today:active,.datepicker table tr td.today:focus,.datepicker table tr td.today:hover,.datepicker table tr td.today:hover.active,.datepicker table tr td.today:hover:active,.datepicker table tr td.today:hover:focus,.datepicker table tr td.today:hover:hover,.open .dropdown-toggle.datepicker table tr td.today,.open .dropdown-toggle.datepicker table tr td.today.disabled,.open .dropdown-toggle.datepicker table tr td.today.disabled:hover,.open .dropdown-toggle.datepicker table tr td.today:hover{color:#000;background-color:#ffcd70;border-color:#f59e00}.datepicker table tr td.today.active,.datepicker table tr td.today.disabled.active,.datepicker table tr td.today.disabled:active,.datepicker table tr td.today.disabled:hover.active,.datepicker table tr td.today.disabled:hover:active,.datepicker table tr td.today:active,.datepicker table tr td.today:hover.active,.datepicker table tr td.today:hover:active,.open .dropdown-toggle.datepicker table tr td.today,.open .dropdown-toggle.datepicker table tr td.today.disabled,.open .dropdown-toggle.datepicker table tr td.today.disabled:hover,.open .dropdown-toggle.datepicker table tr td.today:hover{background-image:none}.datepicker table tr td.today.disabled,.datepicker table tr td.today.disabled.active,.datepicker table tr td.today.disabled.disabled,.datepicker table tr td.today.disabled.disabled.active,.datepicker table tr td.today.disabled.disabled:active,.datepicker table tr td.today.disabled.disabled:focus,.datepicker table tr td.today.disabled.disabled:hover,.datepicker table tr td.today.disabled:active,.datepicker table tr td.today.disabled:focus,.datepicker table tr td.today.disabled:hover,.datepicker table tr td.today.disabled:hover.disabled,.datepicker table tr td.today.disabled:hover.disabled.active,.datepicker table tr td.today.disabled:hover.disabled:active,.datepicker table tr td.today.disabled:hover.disabled:focus,.datepicker table tr td.today.disabled:hover.disabled:hover,.datepicker table tr td.today.disabled:hover[disabled],.datepicker table tr td.today.disabled:hover[disabled].active,.datepicker table tr td.today.disabled:hover[disabled]:active,.datepicker table tr td.today.disabled:hover[disabled]:focus,.datepicker table tr td.today.disabled:hover[disabled]:hover,.datepicker table tr td.today.disabled[disabled],.datepicker table tr td.today.disabled[disabled].active,.datepicker table tr td.today.disabled[disabled]:active,.datepicker table tr td.today.disabled[disabled]:focus,.datepicker table tr td.today.disabled[disabled]:hover,.datepicker table tr td.today:hover.disabled,.datepicker table tr td.today:hover.disabled.active,.datepicker table tr td.today:hover.disabled:active,.datepicker table tr td.today:hover.disabled:focus,.datepicker table tr td.today:hover.disabled:hover,.datepicker table tr td.today:hover[disabled],.datepicker table tr td.today:hover[disabled].active,.datepicker table tr td.today:hover[disabled]:active,.datepicker table tr td.today:hover[disabled]:focus,.datepicker table tr td.today:hover[disabled]:hover,.datepicker table tr td.today[disabled],.datepicker table tr td.today[disabled].active,.datepicker table tr td.today[disabled]:active,.datepicker table tr td.today[disabled]:focus,.datepicker table tr td.today[disabled]:hover,fieldset[disabled] .datepicker table tr td.today,fieldset[disabled] .datepicker table tr td.today.active,fieldset[disabled] .datepicker table tr td.today.disabled,fieldset[disabled] .datepicker table tr td.today.disabled.active,fieldset[disabled] .datepicker table tr td.today.disabled:active,fieldset[disabled] .datepicker table tr td.today.disabled:focus,fieldset[disabled] .datepicker table tr td.today.disabled:hover,fieldset[disabled] .datepicker table tr td.today.disabled:hover.active,fieldset[disabled] .datepicker table tr td.today.disabled:hover:active,fieldset[disabled] .datepicker table tr td.today.disabled:hover:focus,fieldset[disabled] .datepicker table tr td.today.disabled:hover:hover,fieldset[disabled] .datepicker table tr td.today:active,fieldset[disabled] .datepicker table tr td.today:focus,fieldset[disabled] .datepicker table tr td.today:hover,fieldset[disabled] .datepicker table tr td.today:hover.active,fieldset[disabled] .datepicker table tr td.today:hover:active,fieldset[disabled] .datepicker table tr td.today:hover:focus,fieldset[disabled] .datepicker table tr td.today:hover:hover{background-color:#ffdb99;border-color:#ffb733}.datepicker table tr td.today:hover:hover{color:#000}.datepicker table tr td.today.active:hover{color:#fff}.datepicker table tr td.range,.datepicker table tr td.range.disabled,.datepicker table tr td.range.disabled:hover,.datepicker table tr td.range:hover{background:#eee;border-radius:0}.datepicker table tr td.active.active,.datepicker table tr td.active.disabled.active,.datepicker table tr td.active.disabled:active,.datepicker table tr td.active.disabled:hover.active,.datepicker table tr td.active.disabled:hover:active,.datepicker table tr td.active:active,.datepicker table tr td.active:hover.active,.datepicker table tr td.active:hover:active,.datepicker table tr td.range.today.active,.datepicker table tr td.range.today.disabled.active,.datepicker table tr td.range.today.disabled:active,.datepicker table tr td.range.today.disabled:hover.active,.datepicker table tr td.range.today.disabled:hover:active,.datepicker table tr td.range.today:active,.datepicker table tr td.range.today:hover.active,.datepicker table tr td.range.today:hover:active,.datepicker table tr td.selected.active,.datepicker table tr td.selected.disabled.active,.datepicker table tr td.selected.disabled:active,.datepicker table tr td.selected.disabled:hover.active,.datepicker table tr td.selected.disabled:hover:active,.datepicker table tr td.selected:active,.datepicker table tr td.selected:hover.active,.datepicker table tr td.selected:hover:active,.open .dropdown-toggle.datepicker table tr td.active,.open .dropdown-toggle.datepicker table tr td.active.disabled,.open .dropdown-toggle.datepicker table tr td.active.disabled:hover,.open .dropdown-toggle.datepicker table tr td.active:hover,.open .dropdown-toggle.datepicker table tr td.range.today,.open .dropdown-toggle.datepicker table tr td.range.today.disabled,.open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover,.open .dropdown-toggle.datepicker table tr td.range.today:hover,.open .dropdown-toggle.datepicker table tr td.selected,.open .dropdown-toggle.datepicker table tr td.selected.disabled,.open .dropdown-toggle.datepicker table tr td.selected.disabled:hover,.open .dropdown-toggle.datepicker table tr td.selected:hover{background-image:none}.datepicker table tr td.range.today,.datepicker table tr td.range.today.disabled,.datepicker table tr td.range.today.disabled:hover,.datepicker table tr td.range.today:hover{color:#000;background-color:#f7ca77;border-color:#f1a417;border-radius:0}.datepicker table tr td.range.today.active,.datepicker table tr td.range.today.disabled.active,.datepicker table tr td.range.today.disabled:active,.datepicker table tr td.range.today.disabled:focus,.datepicker table tr td.range.today.disabled:hover,.datepicker table tr td.range.today.disabled:hover.active,.datepicker table tr td.range.today.disabled:hover:active,.datepicker table tr td.range.today.disabled:hover:focus,.datepicker table tr td.range.today.disabled:hover:hover,.datepicker table tr td.range.today:active,.datepicker table tr td.range.today:focus,.datepicker table tr td.range.today:hover,.datepicker table tr td.range.today:hover.active,.datepicker table tr td.range.today:hover:active,.datepicker table tr td.range.today:hover:focus,.datepicker table tr td.range.today:hover:hover,.open .dropdown-toggle.datepicker table tr td.range.today,.open .dropdown-toggle.datepicker table tr td.range.today.disabled,.open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover,.open .dropdown-toggle.datepicker table tr td.range.today:hover{color:#000;background-color:#f4bb51;border-color:#bf800c}.datepicker table tr td.range.today.disabled,.datepicker table tr td.range.today.disabled.active,.datepicker table tr td.range.today.disabled.disabled,.datepicker table tr td.range.today.disabled.disabled.active,.datepicker table tr td.range.today.disabled.disabled:active,.datepicker table tr td.range.today.disabled.disabled:focus,.datepicker table tr td.range.today.disabled.disabled:hover,.datepicker table tr td.range.today.disabled:active,.datepicker table tr td.range.today.disabled:focus,.datepicker table tr td.range.today.disabled:hover,.datepicker table tr td.range.today.disabled:hover.disabled,.datepicker table tr td.range.today.disabled:hover.disabled.active,.datepicker table tr td.range.today.disabled:hover.disabled:active,.datepicker table tr td.range.today.disabled:hover.disabled:focus,.datepicker table tr td.range.today.disabled:hover.disabled:hover,.datepicker table tr td.range.today.disabled:hover[disabled],.datepicker table tr td.range.today.disabled:hover[disabled].active,.datepicker table tr td.range.today.disabled:hover[disabled]:active,.datepicker table tr td.range.today.disabled:hover[disabled]:focus,.datepicker table tr td.range.today.disabled:hover[disabled]:hover,.datepicker table tr td.range.today.disabled[disabled],.datepicker table tr td.range.today.disabled[disabled].active,.datepicker table tr td.range.today.disabled[disabled]:active,.datepicker table tr td.range.today.disabled[disabled]:focus,.datepicker table tr td.range.today.disabled[disabled]:hover,.datepicker table tr td.range.today:hover.disabled,.datepicker table tr td.range.today:hover.disabled.active,.datepicker table tr td.range.today:hover.disabled:active,.datepicker table tr td.range.today:hover.disabled:focus,.datepicker table tr td.range.today:hover.disabled:hover,.datepicker table tr td.range.today:hover[disabled],.datepicker table tr td.range.today:hover[disabled].active,.datepicker table tr td.range.today:hover[disabled]:active,.datepicker table tr td.range.today:hover[disabled]:focus,.datepicker table tr td.range.today:hover[disabled]:hover,.datepicker table tr td.range.today[disabled],.datepicker table tr td.range.today[disabled].active,.datepicker table tr td.range.today[disabled]:active,.datepicker table tr td.range.today[disabled]:focus,.datepicker table tr td.range.today[disabled]:hover,fieldset[disabled] .datepicker table tr td.range.today,fieldset[disabled] .datepicker table tr td.range.today.active,fieldset[disabled] .datepicker table tr td.range.today.disabled,fieldset[disabled] .datepicker table tr td.range.today.disabled.active,fieldset[disabled] .datepicker table tr td.range.today.disabled:active,fieldset[disabled] .datepicker table tr td.range.today.disabled:focus,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover.active,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:active,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:focus,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:hover,fieldset[disabled] .datepicker table tr td.range.today:active,fieldset[disabled] .datepicker table tr td.range.today:focus,fieldset[disabled] .datepicker table tr td.range.today:hover,fieldset[disabled] .datepicker table tr td.range.today:hover.active,fieldset[disabled] .datepicker table tr td.range.today:hover:active,fieldset[disabled] .datepicker table tr td.range.today:hover:focus,fieldset[disabled] .datepicker table tr td.range.today:hover:hover{background-color:#f7ca77;border-color:#f1a417}.datepicker table tr td.selected,.datepicker table tr td.selected.disabled,.datepicker table tr td.selected.disabled:hover,.datepicker table tr td.selected:hover{color:#fff;background-color:#999;border-color:#555;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td.selected.active,.datepicker table tr td.selected.disabled.active,.datepicker table tr td.selected.disabled:active,.datepicker table tr td.selected.disabled:focus,.datepicker table tr td.selected.disabled:hover,.datepicker table tr td.selected.disabled:hover.active,.datepicker table tr td.selected.disabled:hover:active,.datepicker table tr td.selected.disabled:hover:focus,.datepicker table tr td.selected.disabled:hover:hover,.datepicker table tr td.selected:active,.datepicker table tr td.selected:focus,.datepicker table tr td.selected:hover,.datepicker table tr td.selected:hover.active,.datepicker table tr td.selected:hover:active,.datepicker table tr td.selected:hover:focus,.datepicker table tr td.selected:hover:hover,.open .dropdown-toggle.datepicker table tr td.selected,.open .dropdown-toggle.datepicker table tr td.selected.disabled,.open .dropdown-toggle.datepicker table tr td.selected.disabled:hover,.open .dropdown-toggle.datepicker table tr td.selected:hover{color:#fff;background-color:#858585;border-color:#373737}.datepicker table tr td.selected.disabled,.datepicker table tr td.selected.disabled.active,.datepicker table tr td.selected.disabled.disabled,.datepicker table tr td.selected.disabled.disabled.active,.datepicker table tr td.selected.disabled.disabled:active,.datepicker table tr td.selected.disabled.disabled:focus,.datepicker table tr td.selected.disabled.disabled:hover,.datepicker table tr td.selected.disabled:active,.datepicker table tr td.selected.disabled:focus,.datepicker table tr td.selected.disabled:hover,.datepicker table tr td.selected.disabled:hover.disabled,.datepicker table tr td.selected.disabled:hover.disabled.active,.datepicker table tr td.selected.disabled:hover.disabled:active,.datepicker table tr td.selected.disabled:hover.disabled:focus,.datepicker table tr td.selected.disabled:hover.disabled:hover,.datepicker table tr td.selected.disabled:hover[disabled],.datepicker table tr td.selected.disabled:hover[disabled].active,.datepicker table tr td.selected.disabled:hover[disabled]:active,.datepicker table tr td.selected.disabled:hover[disabled]:focus,.datepicker table tr td.selected.disabled:hover[disabled]:hover,.datepicker table tr td.selected.disabled[disabled],.datepicker table tr td.selected.disabled[disabled].active,.datepicker table tr td.selected.disabled[disabled]:active,.datepicker table tr td.selected.disabled[disabled]:focus,.datepicker table tr td.selected.disabled[disabled]:hover,.datepicker table tr td.selected:hover.disabled,.datepicker table tr td.selected:hover.disabled.active,.datepicker table tr td.selected:hover.disabled:active,.datepicker table tr td.selected:hover.disabled:focus,.datepicker table tr td.selected:hover.disabled:hover,.datepicker table tr td.selected:hover[disabled],.datepicker table tr td.selected:hover[disabled].active,.datepicker table tr td.selected:hover[disabled]:active,.datepicker table tr td.selected:hover[disabled]:focus,.datepicker table tr td.selected:hover[disabled]:hover,.datepicker table tr td.selected[disabled],.datepicker table tr td.selected[disabled].active,.datepicker table tr td.selected[disabled]:active,.datepicker table tr td.selected[disabled]:focus,.datepicker table tr td.selected[disabled]:hover,fieldset[disabled] .datepicker table tr td.selected,fieldset[disabled] .datepicker table tr td.selected.active,fieldset[disabled] .datepicker table tr td.selected.disabled,fieldset[disabled] .datepicker table tr td.selected.disabled.active,fieldset[disabled] .datepicker table tr td.selected.disabled:active,fieldset[disabled] .datepicker table tr td.selected.disabled:focus,fieldset[disabled] .datepicker table tr td.selected.disabled:hover,fieldset[disabled] .datepicker table tr td.selected.disabled:hover.active,fieldset[disabled] .datepicker table tr td.selected.disabled:hover:active,fieldset[disabled] .datepicker table tr td.selected.disabled:hover:focus,fieldset[disabled] .datepicker table tr td.selected.disabled:hover:hover,fieldset[disabled] .datepicker table tr td.selected:active,fieldset[disabled] .datepicker table tr td.selected:focus,fieldset[disabled] .datepicker table tr td.selected:hover,fieldset[disabled] .datepicker table tr td.selected:hover.active,fieldset[disabled] .datepicker table tr td.selected:hover:active,fieldset[disabled] .datepicker table tr td.selected:hover:focus,fieldset[disabled] .datepicker table tr td.selected:hover:hover{background-color:#999;border-color:#555}.datepicker table tr td.active,.datepicker table tr td.active.disabled,.datepicker table tr td.active.disabled:hover,.datepicker table tr td.active:hover{color:#fff;background-color:#428bca;border-color:#357ebd;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td.active.active,.datepicker table tr td.active.disabled.active,.datepicker table tr td.active.disabled:active,.datepicker table tr td.active.disabled:focus,.datepicker table tr td.active.disabled:hover,.datepicker table tr td.active.disabled:hover.active,.datepicker table tr td.active.disabled:hover:active,.datepicker table tr td.active.disabled:hover:focus,.datepicker table tr td.active.disabled:hover:hover,.datepicker table tr td.active:active,.datepicker table tr td.active:focus,.datepicker table tr td.active:hover,.datepicker table tr td.active:hover.active,.datepicker table tr td.active:hover:active,.datepicker table tr td.active:hover:focus,.datepicker table tr td.active:hover:hover,.open .dropdown-toggle.datepicker table tr td.active,.open .dropdown-toggle.datepicker table tr td.active.disabled,.open .dropdown-toggle.datepicker table tr td.active.disabled:hover,.open .dropdown-toggle.datepicker table tr td.active:hover{color:#fff;background-color:rgba(190,190,190,.76);border-color:rgba(190,190,190,.76)}.datepicker table tr td.active.disabled,.datepicker table tr td.active.disabled.active,.datepicker table tr td.active.disabled.disabled,.datepicker table tr td.active.disabled.disabled.active,.datepicker table tr td.active.disabled.disabled:active,.datepicker table tr td.active.disabled.disabled:focus,.datepicker table tr td.active.disabled.disabled:hover,.datepicker table tr td.active.disabled:active,.datepicker table tr td.active.disabled:focus,.datepicker table tr td.active.disabled:hover,.datepicker table tr td.active.disabled:hover.disabled,.datepicker table tr td.active.disabled:hover.disabled.active,.datepicker table tr td.active.disabled:hover.disabled:active,.datepicker table tr td.active.disabled:hover.disabled:focus,.datepicker table tr td.active.disabled:hover.disabled:hover,.datepicker table tr td.active.disabled:hover[disabled],.datepicker table tr td.active.disabled:hover[disabled].active,.datepicker table tr td.active.disabled:hover[disabled]:active,.datepicker table tr td.active.disabled:hover[disabled]:focus,.datepicker table tr td.active.disabled:hover[disabled]:hover,.datepicker table tr td.active.disabled[disabled],.datepicker table tr td.active.disabled[disabled].active,.datepicker table tr td.active.disabled[disabled]:active,.datepicker table tr td.active.disabled[disabled]:focus,.datepicker table tr td.active.disabled[disabled]:hover,.datepicker table tr td.active:hover.disabled,.datepicker table tr td.active:hover.disabled.active,.datepicker table tr td.active:hover.disabled:active,.datepicker table tr td.active:hover.disabled:focus,.datepicker table tr td.active:hover.disabled:hover,.datepicker table tr td.active:hover[disabled],.datepicker table tr td.active:hover[disabled].active,.datepicker table tr td.active:hover[disabled]:active,.datepicker table tr td.active:hover[disabled]:focus,.datepicker table tr td.active:hover[disabled]:hover,.datepicker table tr td.active[disabled],.datepicker table tr td.active[disabled].active,.datepicker table tr td.active[disabled]:active,.datepicker table tr td.active[disabled]:focus,.datepicker table tr td.active[disabled]:hover,fieldset[disabled] .datepicker table tr td.active,fieldset[disabled] .datepicker table tr td.active.active,fieldset[disabled] .datepicker table tr td.active.disabled,fieldset[disabled] .datepicker table tr td.active.disabled.active,fieldset[disabled] .datepicker table tr td.active.disabled:active,fieldset[disabled] .datepicker table tr td.active.disabled:focus,fieldset[disabled] .datepicker table tr td.active.disabled:hover,fieldset[disabled] .datepicker table tr td.active.disabled:hover.active,fieldset[disabled] .datepicker table tr td.active.disabled:hover:active,fieldset[disabled] .datepicker table tr td.active.disabled:hover:focus,fieldset[disabled] .datepicker table tr td.active.disabled:hover:hover,fieldset[disabled] .datepicker table tr td.active:active,fieldset[disabled] .datepicker table tr td.active:focus,fieldset[disabled] .datepicker table tr td.active:hover,fieldset[disabled] .datepicker table tr td.active:hover.active,fieldset[disabled] .datepicker table tr td.active:hover:active,fieldset[disabled] .datepicker table tr td.active:hover:focus,fieldset[disabled] .datepicker table tr td.active:hover:hover{background-color:#428bca;border-color:#357ebd}.datepicker table tr td span{display:block;width:23%;height:54px;line-height:54px;float:left;margin:1%;cursor:pointer;border-radius:4px}.datepicker table tr td span:hover{background:#eee}.datepicker table tr td span.disabled,.datepicker table tr td span.disabled:hover{background:0 0;color:#999;cursor:default}.datepicker table tr td span.active,.datepicker table tr td span.active.disabled,.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active:hover{color:#fff;background-color:#428bca;border-color:#357ebd;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td span.active.active,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active.disabled:focus,.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active.disabled:hover.active,.datepicker table tr td span.active.disabled:hover:active,.datepicker table tr td span.active.disabled:hover:focus,.datepicker table tr td span.active.disabled:hover:hover,.datepicker table tr td span.active:active,.datepicker table tr td span.active:focus,.datepicker table tr td span.active:hover,.datepicker table tr td span.active:hover.active,.datepicker table tr td span.active:hover:active,.datepicker table tr td span.active:hover:focus,.datepicker table tr td span.active:hover:hover,.open .dropdown-toggle.datepicker table tr td span.active,.open .dropdown-toggle.datepicker table tr td span.active.disabled,.open .dropdown-toggle.datepicker table tr td span.active.disabled:hover,.open .dropdown-toggle.datepicker table tr td span.active:hover{color:#fff;background-color:rgba(190,190,190,.76);border-color:rgba(190,190,190,.76)}.datepicker table tr td span.active.active,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active.disabled:hover.active,.datepicker table tr td span.active.disabled:hover:active,.datepicker table tr td span.active:active,.datepicker table tr td span.active:hover.active,.datepicker table tr td span.active:hover:active,.open .dropdown-toggle.datepicker table tr td span.active,.open .dropdown-toggle.datepicker table tr td span.active.disabled,.open .dropdown-toggle.datepicker table tr td span.active.disabled:hover,.open .dropdown-toggle.datepicker table tr td span.active:hover{background-image:none}.datepicker table tr td span.active.disabled,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active.disabled.disabled,.datepicker table tr td span.active.disabled.disabled.active,.datepicker table tr td span.active.disabled.disabled:active,.datepicker table tr td span.active.disabled.disabled:focus,.datepicker table tr td span.active.disabled.disabled:hover,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active.disabled:focus,.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active.disabled:hover.disabled,.datepicker table tr td span.active.disabled:hover.disabled.active,.datepicker table tr td span.active.disabled:hover.disabled:active,.datepicker table tr td span.active.disabled:hover.disabled:focus,.datepicker table tr td span.active.disabled:hover.disabled:hover,.datepicker table tr td span.active.disabled:hover[disabled],.datepicker table tr td span.active.disabled:hover[disabled].active,.datepicker table tr td span.active.disabled:hover[disabled]:active,.datepicker table tr td span.active.disabled:hover[disabled]:focus,.datepicker table tr td span.active.disabled:hover[disabled]:hover,.datepicker table tr td span.active.disabled[disabled],.datepicker table tr td span.active.disabled[disabled].active,.datepicker table tr td span.active.disabled[disabled]:active,.datepicker table tr td span.active.disabled[disabled]:focus,.datepicker table tr td span.active.disabled[disabled]:hover,.datepicker table tr td span.active:hover.disabled,.datepicker table tr td span.active:hover.disabled.active,.datepicker table tr td span.active:hover.disabled:active,.datepicker table tr td span.active:hover.disabled:focus,.datepicker table tr td span.active:hover.disabled:hover,.datepicker table tr td span.active:hover[disabled],.datepicker table tr td span.active:hover[disabled].active,.datepicker table tr td span.active:hover[disabled]:active,.datepicker table tr td span.active:hover[disabled]:focus,.datepicker table tr td span.active:hover[disabled]:hover,.datepicker table tr td span.active[disabled],.datepicker table tr td span.active[disabled].active,.datepicker table tr td span.active[disabled]:active,.datepicker table tr td span.active[disabled]:focus,.datepicker table tr td span.active[disabled]:hover,fieldset[disabled] .datepicker table tr td span.active,fieldset[disabled] .datepicker table tr td span.active.active,fieldset[disabled] .datepicker table tr td span.active.disabled,fieldset[disabled] .datepicker table tr td span.active.disabled.active,fieldset[disabled] .datepicker table tr td span.active.disabled:active,fieldset[disabled] .datepicker table tr td span.active.disabled:focus,fieldset[disabled] .datepicker table tr td span.active.disabled:hover,fieldset[disabled] .datepicker table tr td span.active.disabled:hover.active,fieldset[disabled] .datepicker table tr td span.active.disabled:hover:active,fieldset[disabled] .datepicker table tr td span.active.disabled:hover:focus,fieldset[disabled] .datepicker table tr td span.active.disabled:hover:hover,fieldset[disabled] .datepicker table tr td span.active:active,fieldset[disabled] .datepicker table tr td span.active:focus,fieldset[disabled] .datepicker table tr td span.active:hover,fieldset[disabled] .datepicker table tr td span.active:hover.active,fieldset[disabled] .datepicker table tr td span.active:hover:active,fieldset[disabled] .datepicker table tr td span.active:hover:focus,fieldset[disabled] .datepicker table tr td span.active:hover:hover{background-color:#428bca;border-color:#357ebd}.datepicker table tr td span.new,.datepicker table tr td span.old{color:#999}.datepicker .datepicker-switch{width:145px}.datepicker tfoot tr th,.datepicker thead tr:first-child th{cursor:pointer}.datepicker tfoot tr th:hover,.datepicker thead tr:first-child th:hover{background:#eee}.datepicker .cw{font-size:10px;width:12px;padding:0 2px 0 5px;vertical-align:middle}.datepicker thead tr:first-child .cw{cursor:default;background-color:transparent}.input-group.date .input-group-addon{cursor:pointer}.input-daterange{width:100%}.input-daterange input{text-align:center}.input-daterange input:first-child{border-radius:3px 0 0 3px}.input-daterange input:last-child{border-radius:0 3px 3px 0}.input-daterange .input-group-addon{width:auto;min-width:16px;padding:4px 5px;font-weight:400;line-height:1.42857143;text-align:center;text-shadow:0 1px 0 #fff;vertical-align:middle;background-color:#eee;border:solid #ccc;border-width:1px 0;margin-left:-5px;margin-right:-5px}.datepicker td.day{padding:5px!important}.datepicker thead{line-height:2.2;font-size:15px}.datepicker .table-condensed{border:none;width:100%}
8
- /*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInlpa2VzLWluYy1lYXN5LW1haWxjaGltcC1kYXRlcGlja2VyLXN0eWxlcy5taW4uY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRyx1REFBdUQsV0FBVyxxQkFBcUIsYUFBYSxpQkFBaUIsQ0FBQyxZQUFZLFlBQVksa0JBQWtCLGFBQWEsQ0FBQyxtQkFBbUIsV0FBVyxDQUFDLDJCQUEyQixhQUFhLENBQUMsNENBQTRDLFdBQVcsQ0FBQyxxQkFBcUIsTUFBTSxNQUFNLENBQUMsNEJBQTRCLGtDQUFrQyxtQ0FBbUMsNkJBQTZCLGtDQUFrQyxDQUFDLDJCQUEyQixrQ0FBa0MsbUNBQW1DLDRCQUE0QixDQUFDLG1EQUFtRCxRQUFRLENBQUMsa0RBQWtELFFBQVEsQ0FBQyxvREFBb0QsU0FBUyxDQUFDLG1EQUFtRCxTQUFTLENBQUMsa0RBQWtELFFBQVEsQ0FBQyxpREFBaUQsUUFBUSxDQUFDLHFEQUFxRCxZQUFZLGdCQUFnQix5QkFBeUIsQ0FBQyxvREFBb0QsWUFBWSxnQkFBZ0IseUJBQXlCLENBQUMsZ0JBQWdCLFlBQVksQ0FBQyw0R0FBNEcsYUFBYSxDQUFDLGtCQUFrQixTQUFTLDJCQUEyQix5QkFBeUIsd0JBQXdCLHNCQUFzQixxQkFBcUIsZ0JBQWdCLENBQUMsZ0RBQWdELGtCQUFrQixXQUFXLFlBQVksa0JBQWtCLFdBQVcsQ0FBQyw4RUFBOEUsNEJBQTRCLENBQUMsc0VBQXNFLGdCQUFnQixjQUFjLENBQUMsd0RBQXdELFVBQVUsQ0FBQyx3RUFBd0UsZUFBZSxXQUFXLGNBQWMsQ0FBQyxzSkFBc0osV0FBVyx5QkFBeUIsb0JBQW9CLENBQUMsODZCQUE4NkIsV0FBVyx5QkFBeUIsb0JBQW9CLENBQUMsa2xCQUFrbEIscUJBQXFCLENBQUMsbW9HQUFtb0cseUJBQXlCLG9CQUFvQixDQUFDLDBDQUEwQyxVQUFVLENBQUMsMkNBQTJDLFVBQVUsQ0FBQyxzSkFBc0osZ0JBQWdCLGVBQWUsQ0FBQyw4MkRBQTgyRCxxQkFBcUIsQ0FBQyw4S0FBOEssV0FBVyx5QkFBeUIscUJBQXFCLGVBQWUsQ0FBQyxzaUNBQXNpQyxXQUFXLHlCQUF5QixvQkFBb0IsQ0FBQywrOUdBQSs5Ryx5QkFBeUIsb0JBQW9CLENBQUMsa0tBQWtLLFdBQVcsc0JBQXNCLGtCQUFrQixvQ0FBb0MsQ0FBQywwK0JBQTArQixXQUFXLHlCQUF5QixvQkFBb0IsQ0FBQyxpekdBQWl6RyxzQkFBc0IsaUJBQWlCLENBQUMsMEpBQTBKLFdBQVcseUJBQXlCLHFCQUFxQixvQ0FBb0MsQ0FBQyxrOEJBQWs4QixXQUFXLHVDQUF1QyxrQ0FBa0MsQ0FBQyw2ckdBQTZyRyx5QkFBeUIsb0JBQW9CLENBQUMsNkJBQTZCLGNBQWMsVUFBVSxZQUFZLGlCQUFpQixXQUFXLFVBQVUsZUFBZSxpQkFBaUIsQ0FBQyxtQ0FBbUMsZUFBZSxDQUFDLGtGQUFrRixlQUFlLFdBQVcsY0FBYyxDQUFDLDhLQUE4SyxXQUFXLHlCQUF5QixxQkFBcUIsb0NBQW9DLENBQUMsc2lDQUFzaUMsV0FBVyx1Q0FBdUMsa0NBQWtDLENBQUMsMHBCQUEwcEIscUJBQXFCLENBQUMsKzlHQUErOUcseUJBQXlCLG9CQUFvQixDQUFDLGtFQUFrRSxVQUFVLENBQUMsK0JBQStCLFdBQVcsQ0FBQyw0REFBNEQsY0FBYyxDQUFDLHdFQUF3RSxlQUFlLENBQUMsZ0JBQWdCLGVBQWUsV0FBVyxvQkFBb0IscUJBQXFCLENBQUMscUNBQXFDLGVBQWUsNEJBQTRCLENBQUMscUNBQXFDLGNBQWMsQ0FBQyxpQkFBaUIsVUFBVSxDQUFDLHVCQUF1QixpQkFBaUIsQ0FBQyxtQ0FBbUMseUJBQXlCLENBQUMsa0NBQWtDLHlCQUF5QixDQUFDLG9DQUFvQyxXQUFXLGVBQWUsZ0JBQWdCLGdCQUFnQix1QkFBdUIsa0JBQWtCLHlCQUF5QixzQkFBc0Isc0JBQXNCLGtCQUFrQixtQkFBbUIsaUJBQWlCLGlCQUFpQixDQUFDLG1CQUFtQixxQkFBcUIsQ0FBQyxrQkFBa0IsZ0JBQWdCLGNBQWMsQ0FBQyw2QkFBNkIsWUFBWSxVQUFVLENBQUMiLCJmaWxlIjoieWlrZXMtaW5jLWVhc3ktbWFpbGNoaW1wLWRhdGVwaWNrZXItc3R5bGVzLm1pbi5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcclxuICogRGF0ZXBpY2tlciBmb3IgQm9vdHN0cmFwIHYxLjQuMCAoaHR0cHM6Ly9naXRodWIuY29tL2V0ZXJuaWNvZGUvYm9vdHN0cmFwLWRhdGVwaWNrZXIpXHJcbiAqXHJcbiAqIENvcHlyaWdodCAyMDEyIFN0ZWZhbiBQZXRyZVxyXG4gKiBJbXByb3ZlbWVudHMgYnkgQW5kcmV3IFJvd2xzXHJcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIChodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjApXHJcbiAqLy5kYXRlcGlja2VyLWRyb3Bkb3duOmFmdGVyLC5kYXRlcGlja2VyLWRyb3Bkb3duOmJlZm9yZXtjb250ZW50OicnO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2JvcmRlci10b3A6MDtwb3NpdGlvbjphYnNvbHV0ZX0uZGF0ZXBpY2tlcntwYWRkaW5nOjRweDtib3JkZXItcmFkaXVzOjRweDtkaXJlY3Rpb246bHRyfS5kYXRlcGlja2VyLWlubGluZXt3aWR0aDoyMjBweH0uZGF0ZXBpY2tlci5kYXRlcGlja2VyLXJ0bHtkaXJlY3Rpb246cnRsfS5kYXRlcGlja2VyLmRhdGVwaWNrZXItcnRsIHRhYmxlIHRyIHRkIHNwYW57ZmxvYXQ6cmlnaHR9LmRhdGVwaWNrZXItZHJvcGRvd257dG9wOjA7bGVmdDowfS5kYXRlcGlja2VyLWRyb3Bkb3duOmJlZm9yZXtib3JkZXItbGVmdDo3cHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJpZ2h0OjdweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItYm90dG9tOjdweCBzb2xpZCAjY2NjO2JvcmRlci1ib3R0b20tY29sb3I6cmdiYSgwLDAsMCwuMil9LmRhdGVwaWNrZXItZHJvcGRvd246YWZ0ZXJ7Ym9yZGVyLWxlZnQ6NnB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yaWdodDo2cHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLWJvdHRvbTo2cHggc29saWQgI2ZmZn0uZGF0ZXBpY2tlci1kcm9wZG93bi5kYXRlcGlja2VyLW9yaWVudC1sZWZ0OmJlZm9yZXtsZWZ0OjZweH0uZGF0ZXBpY2tlci1kcm9wZG93bi5kYXRlcGlja2VyLW9yaWVudC1sZWZ0OmFmdGVye2xlZnQ6N3B4fS5kYXRlcGlja2VyLWRyb3Bkb3duLmRhdGVwaWNrZXItb3JpZW50LXJpZ2h0OmJlZm9yZXtyaWdodDo2cHh9LmRhdGVwaWNrZXItZHJvcGRvd24uZGF0ZXBpY2tlci1vcmllbnQtcmlnaHQ6YWZ0ZXJ7cmlnaHQ6N3B4fS5kYXRlcGlja2VyLWRyb3Bkb3duLmRhdGVwaWNrZXItb3JpZW50LXRvcDpiZWZvcmV7dG9wOi03cHh9LmRhdGVwaWNrZXItZHJvcGRvd24uZGF0ZXBpY2tlci1vcmllbnQtdG9wOmFmdGVye3RvcDotNnB4fS5kYXRlcGlja2VyLWRyb3Bkb3duLmRhdGVwaWNrZXItb3JpZW50LWJvdHRvbTpiZWZvcmV7Ym90dG9tOi03cHg7Ym9yZGVyLWJvdHRvbTowO2JvcmRlci10b3A6N3B4IHNvbGlkICM5OTl9LmRhdGVwaWNrZXItZHJvcGRvd24uZGF0ZXBpY2tlci1vcmllbnQtYm90dG9tOmFmdGVye2JvdHRvbTotNnB4O2JvcmRlci1ib3R0b206MDtib3JkZXItdG9wOjZweCBzb2xpZCAjZmZmfS5kYXRlcGlja2VyPmRpdntkaXNwbGF5Om5vbmV9LmRhdGVwaWNrZXIuZGF5cyAuZGF0ZXBpY2tlci1kYXlzLC5kYXRlcGlja2VyLm1vbnRocyAuZGF0ZXBpY2tlci1tb250aHMsLmRhdGVwaWNrZXIueWVhcnMgLmRhdGVwaWNrZXIteWVhcnN7ZGlzcGxheTpibG9ja30uZGF0ZXBpY2tlciB0YWJsZXttYXJnaW46MDstd2Via2l0LXRvdWNoLWNhbGxvdXQ6bm9uZTstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LWtodG1sLXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmV9LmRhdGVwaWNrZXIgdGFibGUgdHIgdGQsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGh7dGV4dC1hbGlnbjpjZW50ZXI7d2lkdGg6MzBweDtoZWlnaHQ6MzBweDtib3JkZXItcmFkaXVzOjRweDtib3JkZXI6bm9uZX0udGFibGUtc3RyaXBlZCAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZCwudGFibGUtc3RyaXBlZCAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0aHtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLmRheS5mb2N1c2VkLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLmRheTpob3ZlcntiYWNrZ3JvdW5kOiNlZWU7Y3Vyc29yOnBvaW50ZXJ9LmRhdGVwaWNrZXIgdGFibGUgdHIgdGQubmV3LC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLm9sZHtjb2xvcjojOTk5fS5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLmRpc2FibGVkLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLmRpc2FibGVkOmhvdmVye2JhY2tncm91bmQ6MCAwO2NvbG9yOiM5OTk7Y3Vyc29yOmRlZmF1bHR9LmRhdGVwaWNrZXIgdGFibGUgdHIgdGQudG9kYXksLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQudG9kYXkuZGlzYWJsZWQsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQudG9kYXkuZGlzYWJsZWQ6aG92ZXIsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQudG9kYXk6aG92ZXJ7Y29sb3I6IzAwMDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmRiOTk7Ym9yZGVyLWNvbG9yOiNmZmI3MzN9LmRhdGVwaWNrZXIgdGFibGUgdHIgdGQudG9kYXkuYWN0aXZlLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnRvZGF5LmRpc2FibGVkLmFjdGl2ZSwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC50b2RheS5kaXNhYmxlZDphY3RpdmUsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQudG9kYXkuZGlzYWJsZWQ6Zm9jdXMsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQudG9kYXkuZGlzYWJsZWQ6aG92ZXIsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQudG9kYXkuZGlzYWJsZWQ6aG92ZXIuYWN0aXZlLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnRvZGF5LmRpc2FibGVkOmhvdmVyOmFjdGl2ZSwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC50b2RheS5kaXNhYmxlZDpob3Zlcjpmb2N1cywuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC50b2RheS5kaXNhYmxlZDpob3Zlcjpob3ZlciwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC50b2RheTphY3RpdmUsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQudG9kYXk6Zm9jdXMsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQudG9kYXk6aG92ZXIsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQudG9kYXk6aG92ZXIuYWN0aXZlLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnRvZGF5OmhvdmVyOmFjdGl2ZSwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC50b2RheTpob3Zlcjpmb2N1cywuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC50b2RheTpob3Zlcjpob3Zlciwub3BlbiAuZHJvcGRvd24tdG9nZ2xlLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQudG9kYXksLm9wZW4gLmRyb3Bkb3duLXRvZ2dsZS5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnRvZGF5LmRpc2FibGVkLC5vcGVuIC5kcm9wZG93bi10b2dnbGUuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC50b2RheS5kaXNhYmxlZDpob3Zlciwub3BlbiAuZHJvcGRvd24tdG9nZ2xlLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQudG9kYXk6aG92ZXJ7Y29sb3I6IzAwMDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmNkNzA7Ym9yZGVyLWNvbG9yOiNmNTllMDB9LmRhdGVwaWNrZXIgdGFibGUgdHIgdGQudG9kYXkuYWN0aXZlLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnRvZGF5LmRpc2FibGVkLmFjdGl2ZSwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC50b2RheS5kaXNhYmxlZDphY3RpdmUsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQudG9kYXkuZGlzYWJsZWQ6aG92ZXIuYWN0aXZlLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnRvZGF5LmRpc2FibGVkOmhvdmVyOmFjdGl2ZSwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC50b2RheTphY3RpdmUsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQudG9kYXk6aG92ZXIuYWN0aXZlLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnRvZGF5OmhvdmVyOmFjdGl2ZSwub3BlbiAuZHJvcGRvd24tdG9nZ2xlLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQudG9kYXksLm9wZW4gLmRyb3Bkb3duLXRvZ2dsZS5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnRvZGF5LmRpc2FibGVkLC5vcGVuIC5kcm9wZG93bi10b2dnbGUuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC50b2RheS5kaXNhYmxlZDpob3Zlciwub3BlbiAuZHJvcGRvd24tdG9nZ2xlLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQudG9kYXk6aG92ZXJ7YmFja2dyb3VuZC1pbWFnZTpub25lfS5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnRvZGF5LmRpc2FibGVkLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnRvZGF5LmRpc2FibGVkLmFjdGl2ZSwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC50b2RheS5kaXNhYmxlZC5kaXNhYmxlZCwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC50b2RheS5kaXNhYmxlZC5kaXNhYmxlZC5hY3RpdmUsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQudG9kYXkuZGlzYWJsZWQuZGlzYWJsZWQ6YWN0aXZlLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnRvZGF5LmRpc2FibGVkLmRpc2FibGVkOmZvY3VzLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnRvZGF5LmRpc2FibGVkLmRpc2FibGVkOmhvdmVyLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnRvZGF5LmRpc2FibGVkOmFjdGl2ZSwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC50b2RheS5kaXNhYmxlZDpmb2N1cywuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC50b2RheS5kaXNhYmxlZDpob3ZlciwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC50b2RheS5kaXNhYmxlZDpob3Zlci5kaXNhYmxlZCwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC50b2RheS5kaXNhYmxlZDpob3Zlci5kaXNhYmxlZC5hY3RpdmUsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQudG9kYXkuZGlzYWJsZWQ6aG92ZXIuZGlzYWJsZWQ6YWN0aXZlLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnRvZGF5LmRpc2FibGVkOmhvdmVyLmRpc2FibGVkOmZvY3VzLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnRvZGF5LmRpc2FibGVkOmhvdmVyLmRpc2FibGVkOmhvdmVyLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnRvZGF5LmRpc2FibGVkOmhvdmVyW2Rpc2FibGVkXSwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC50b2RheS5kaXNhYmxlZDpob3ZlcltkaXNhYmxlZF0uYWN0aXZlLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnRvZGF5LmRpc2FibGVkOmhvdmVyW2Rpc2FibGVkXTphY3RpdmUsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQudG9kYXkuZGlzYWJsZWQ6aG92ZXJbZGlzYWJsZWRdOmZvY3VzLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnRvZGF5LmRpc2FibGVkOmhvdmVyW2Rpc2FibGVkXTpob3ZlciwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC50b2RheS5kaXNhYmxlZFtkaXNhYmxlZF0sLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQudG9kYXkuZGlzYWJsZWRbZGlzYWJsZWRdLmFjdGl2ZSwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC50b2RheS5kaXNhYmxlZFtkaXNhYmxlZF06YWN0aXZlLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnRvZGF5LmRpc2FibGVkW2Rpc2FibGVkXTpmb2N1cywuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC50b2RheS5kaXNhYmxlZFtkaXNhYmxlZF06aG92ZXIsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQudG9kYXk6aG92ZXIuZGlzYWJsZWQsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQudG9kYXk6aG92ZXIuZGlzYWJsZWQuYWN0aXZlLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnRvZGF5OmhvdmVyLmRpc2FibGVkOmFjdGl2ZSwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC50b2RheTpob3Zlci5kaXNhYmxlZDpmb2N1cywuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC50b2RheTpob3Zlci5kaXNhYmxlZDpob3ZlciwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC50b2RheTpob3ZlcltkaXNhYmxlZF0sLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQudG9kYXk6aG92ZXJbZGlzYWJsZWRdLmFjdGl2ZSwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC50b2RheTpob3ZlcltkaXNhYmxlZF06YWN0aXZlLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnRvZGF5OmhvdmVyW2Rpc2FibGVkXTpmb2N1cywuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC50b2RheTpob3ZlcltkaXNhYmxlZF06aG92ZXIsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQudG9kYXlbZGlzYWJsZWRdLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnRvZGF5W2Rpc2FibGVkXS5hY3RpdmUsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQudG9kYXlbZGlzYWJsZWRdOmFjdGl2ZSwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC50b2RheVtkaXNhYmxlZF06Zm9jdXMsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQudG9kYXlbZGlzYWJsZWRdOmhvdmVyLGZpZWxkc2V0W2Rpc2FibGVkXSAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC50b2RheSxmaWVsZHNldFtkaXNhYmxlZF0gLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQudG9kYXkuYWN0aXZlLGZpZWxkc2V0W2Rpc2FibGVkXSAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC50b2RheS5kaXNhYmxlZCxmaWVsZHNldFtkaXNhYmxlZF0gLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQudG9kYXkuZGlzYWJsZWQuYWN0aXZlLGZpZWxkc2V0W2Rpc2FibGVkXSAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC50b2RheS5kaXNhYmxlZDphY3RpdmUsZmllbGRzZXRbZGlzYWJsZWRdIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnRvZGF5LmRpc2FibGVkOmZvY3VzLGZpZWxkc2V0W2Rpc2FibGVkXSAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC50b2RheS5kaXNhYmxlZDpob3ZlcixmaWVsZHNldFtkaXNhYmxlZF0gLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQudG9kYXkuZGlzYWJsZWQ6aG92ZXIuYWN0aXZlLGZpZWxkc2V0W2Rpc2FibGVkXSAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC50b2RheS5kaXNhYmxlZDpob3ZlcjphY3RpdmUsZmllbGRzZXRbZGlzYWJsZWRdIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnRvZGF5LmRpc2FibGVkOmhvdmVyOmZvY3VzLGZpZWxkc2V0W2Rpc2FibGVkXSAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC50b2RheS5kaXNhYmxlZDpob3Zlcjpob3ZlcixmaWVsZHNldFtkaXNhYmxlZF0gLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQudG9kYXk6YWN0aXZlLGZpZWxkc2V0W2Rpc2FibGVkXSAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC50b2RheTpmb2N1cyxmaWVsZHNldFtkaXNhYmxlZF0gLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQudG9kYXk6aG92ZXIsZmllbGRzZXRbZGlzYWJsZWRdIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnRvZGF5OmhvdmVyLmFjdGl2ZSxmaWVsZHNldFtkaXNhYmxlZF0gLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQudG9kYXk6aG92ZXI6YWN0aXZlLGZpZWxkc2V0W2Rpc2FibGVkXSAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC50b2RheTpob3Zlcjpmb2N1cyxmaWVsZHNldFtkaXNhYmxlZF0gLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQudG9kYXk6aG92ZXI6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZmZkYjk5O2JvcmRlci1jb2xvcjojZmZiNzMzfS5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnRvZGF5OmhvdmVyOmhvdmVye2NvbG9yOiMwMDB9LmRhdGVwaWNrZXIgdGFibGUgdHIgdGQudG9kYXkuYWN0aXZlOmhvdmVye2NvbG9yOiNmZmZ9LmRhdGVwaWNrZXIgdGFibGUgdHIgdGQucmFuZ2UsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQucmFuZ2UuZGlzYWJsZWQsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQucmFuZ2UuZGlzYWJsZWQ6aG92ZXIsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQucmFuZ2U6aG92ZXJ7YmFja2dyb3VuZDojZWVlO2JvcmRlci1yYWRpdXM6MH0uZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5hY3RpdmUuYWN0aXZlLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLmFjdGl2ZS5kaXNhYmxlZC5hY3RpdmUsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlLmRpc2FibGVkOmFjdGl2ZSwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5hY3RpdmUuZGlzYWJsZWQ6aG92ZXIuYWN0aXZlLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLmFjdGl2ZS5kaXNhYmxlZDpob3ZlcjphY3RpdmUsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlOmFjdGl2ZSwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5hY3RpdmU6aG92ZXIuYWN0aXZlLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLmFjdGl2ZTpob3ZlcjphY3RpdmUsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQucmFuZ2UudG9kYXkuYWN0aXZlLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnJhbmdlLnRvZGF5LmRpc2FibGVkLmFjdGl2ZSwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5yYW5nZS50b2RheS5kaXNhYmxlZDphY3RpdmUsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQucmFuZ2UudG9kYXkuZGlzYWJsZWQ6aG92ZXIuYWN0aXZlLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnJhbmdlLnRvZGF5LmRpc2FibGVkOmhvdmVyOmFjdGl2ZSwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5yYW5nZS50b2RheTphY3RpdmUsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQucmFuZ2UudG9kYXk6aG92ZXIuYWN0aXZlLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnJhbmdlLnRvZGF5OmhvdmVyOmFjdGl2ZSwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5zZWxlY3RlZC5hY3RpdmUsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuc2VsZWN0ZWQuZGlzYWJsZWQuYWN0aXZlLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnNlbGVjdGVkLmRpc2FibGVkOmFjdGl2ZSwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5zZWxlY3RlZC5kaXNhYmxlZDpob3Zlci5hY3RpdmUsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuc2VsZWN0ZWQuZGlzYWJsZWQ6aG92ZXI6YWN0aXZlLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnNlbGVjdGVkOmFjdGl2ZSwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5zZWxlY3RlZDpob3Zlci5hY3RpdmUsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuc2VsZWN0ZWQ6aG92ZXI6YWN0aXZlLC5vcGVuIC5kcm9wZG93bi10b2dnbGUuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5hY3RpdmUsLm9wZW4gLmRyb3Bkb3duLXRvZ2dsZS5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLmFjdGl2ZS5kaXNhYmxlZCwub3BlbiAuZHJvcGRvd24tdG9nZ2xlLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlLmRpc2FibGVkOmhvdmVyLC5vcGVuIC5kcm9wZG93bi10b2dnbGUuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5hY3RpdmU6aG92ZXIsLm9wZW4gLmRyb3Bkb3duLXRvZ2dsZS5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnJhbmdlLnRvZGF5LC5vcGVuIC5kcm9wZG93bi10b2dnbGUuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5yYW5nZS50b2RheS5kaXNhYmxlZCwub3BlbiAuZHJvcGRvd24tdG9nZ2xlLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQucmFuZ2UudG9kYXkuZGlzYWJsZWQ6aG92ZXIsLm9wZW4gLmRyb3Bkb3duLXRvZ2dsZS5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnJhbmdlLnRvZGF5OmhvdmVyLC5vcGVuIC5kcm9wZG93bi10b2dnbGUuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5zZWxlY3RlZCwub3BlbiAuZHJvcGRvd24tdG9nZ2xlLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuc2VsZWN0ZWQuZGlzYWJsZWQsLm9wZW4gLmRyb3Bkb3duLXRvZ2dsZS5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnNlbGVjdGVkLmRpc2FibGVkOmhvdmVyLC5vcGVuIC5kcm9wZG93bi10b2dnbGUuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5zZWxlY3RlZDpob3ZlcntiYWNrZ3JvdW5kLWltYWdlOm5vbmV9LmRhdGVwaWNrZXIgdGFibGUgdHIgdGQucmFuZ2UudG9kYXksLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQucmFuZ2UudG9kYXkuZGlzYWJsZWQsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQucmFuZ2UudG9kYXkuZGlzYWJsZWQ6aG92ZXIsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQucmFuZ2UudG9kYXk6aG92ZXJ7Y29sb3I6IzAwMDtiYWNrZ3JvdW5kLWNvbG9yOiNmN2NhNzc7Ym9yZGVyLWNvbG9yOiNmMWE0MTc7Ym9yZGVyLXJhZGl1czowfS5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnJhbmdlLnRvZGF5LmFjdGl2ZSwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5yYW5nZS50b2RheS5kaXNhYmxlZC5hY3RpdmUsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQucmFuZ2UudG9kYXkuZGlzYWJsZWQ6YWN0aXZlLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnJhbmdlLnRvZGF5LmRpc2FibGVkOmZvY3VzLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnJhbmdlLnRvZGF5LmRpc2FibGVkOmhvdmVyLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnJhbmdlLnRvZGF5LmRpc2FibGVkOmhvdmVyLmFjdGl2ZSwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5yYW5nZS50b2RheS5kaXNhYmxlZDpob3ZlcjphY3RpdmUsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQucmFuZ2UudG9kYXkuZGlzYWJsZWQ6aG92ZXI6Zm9jdXMsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQucmFuZ2UudG9kYXkuZGlzYWJsZWQ6aG92ZXI6aG92ZXIsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQucmFuZ2UudG9kYXk6YWN0aXZlLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnJhbmdlLnRvZGF5OmZvY3VzLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnJhbmdlLnRvZGF5OmhvdmVyLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnJhbmdlLnRvZGF5OmhvdmVyLmFjdGl2ZSwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5yYW5nZS50b2RheTpob3ZlcjphY3RpdmUsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQucmFuZ2UudG9kYXk6aG92ZXI6Zm9jdXMsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQucmFuZ2UudG9kYXk6aG92ZXI6aG92ZXIsLm9wZW4gLmRyb3Bkb3duLXRvZ2dsZS5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnJhbmdlLnRvZGF5LC5vcGVuIC5kcm9wZG93bi10b2dnbGUuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5yYW5nZS50b2RheS5kaXNhYmxlZCwub3BlbiAuZHJvcGRvd24tdG9nZ2xlLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQucmFuZ2UudG9kYXkuZGlzYWJsZWQ6aG92ZXIsLm9wZW4gLmRyb3Bkb3duLXRvZ2dsZS5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnJhbmdlLnRvZGF5OmhvdmVye2NvbG9yOiMwMDA7YmFja2dyb3VuZC1jb2xvcjojZjRiYjUxO2JvcmRlci1jb2xvcjojYmY4MDBjfS5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnJhbmdlLnRvZGF5LmRpc2FibGVkLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnJhbmdlLnRvZGF5LmRpc2FibGVkLmFjdGl2ZSwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5yYW5nZS50b2RheS5kaXNhYmxlZC5kaXNhYmxlZCwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5yYW5nZS50b2RheS5kaXNhYmxlZC5kaXNhYmxlZC5hY3RpdmUsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQucmFuZ2UudG9kYXkuZGlzYWJsZWQuZGlzYWJsZWQ6YWN0aXZlLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnJhbmdlLnRvZGF5LmRpc2FibGVkLmRpc2FibGVkOmZvY3VzLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnJhbmdlLnRvZGF5LmRpc2FibGVkLmRpc2FibGVkOmhvdmVyLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnJhbmdlLnRvZGF5LmRpc2FibGVkOmFjdGl2ZSwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5yYW5nZS50b2RheS5kaXNhYmxlZDpmb2N1cywuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5yYW5nZS50b2RheS5kaXNhYmxlZDpob3ZlciwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5yYW5nZS50b2RheS5kaXNhYmxlZDpob3Zlci5kaXNhYmxlZCwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5yYW5nZS50b2RheS5kaXNhYmxlZDpob3Zlci5kaXNhYmxlZC5hY3RpdmUsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQucmFuZ2UudG9kYXkuZGlzYWJsZWQ6aG92ZXIuZGlzYWJsZWQ6YWN0aXZlLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnJhbmdlLnRvZGF5LmRpc2FibGVkOmhvdmVyLmRpc2FibGVkOmZvY3VzLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnJhbmdlLnRvZGF5LmRpc2FibGVkOmhvdmVyLmRpc2FibGVkOmhvdmVyLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnJhbmdlLnRvZGF5LmRpc2FibGVkOmhvdmVyW2Rpc2FibGVkXSwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5yYW5nZS50b2RheS5kaXNhYmxlZDpob3ZlcltkaXNhYmxlZF0uYWN0aXZlLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnJhbmdlLnRvZGF5LmRpc2FibGVkOmhvdmVyW2Rpc2FibGVkXTphY3RpdmUsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQucmFuZ2UudG9kYXkuZGlzYWJsZWQ6aG92ZXJbZGlzYWJsZWRdOmZvY3VzLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnJhbmdlLnRvZGF5LmRpc2FibGVkOmhvdmVyW2Rpc2FibGVkXTpob3ZlciwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5yYW5nZS50b2RheS5kaXNhYmxlZFtkaXNhYmxlZF0sLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQucmFuZ2UudG9kYXkuZGlzYWJsZWRbZGlzYWJsZWRdLmFjdGl2ZSwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5yYW5nZS50b2RheS5kaXNhYmxlZFtkaXNhYmxlZF06YWN0aXZlLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnJhbmdlLnRvZGF5LmRpc2FibGVkW2Rpc2FibGVkXTpmb2N1cywuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5yYW5nZS50b2RheS5kaXNhYmxlZFtkaXNhYmxlZF06aG92ZXIsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQucmFuZ2UudG9kYXk6aG92ZXIuZGlzYWJsZWQsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQucmFuZ2UudG9kYXk6aG92ZXIuZGlzYWJsZWQuYWN0aXZlLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnJhbmdlLnRvZGF5OmhvdmVyLmRpc2FibGVkOmFjdGl2ZSwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5yYW5nZS50b2RheTpob3Zlci5kaXNhYmxlZDpmb2N1cywuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5yYW5nZS50b2RheTpob3Zlci5kaXNhYmxlZDpob3ZlciwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5yYW5nZS50b2RheTpob3ZlcltkaXNhYmxlZF0sLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQucmFuZ2UudG9kYXk6aG92ZXJbZGlzYWJsZWRdLmFjdGl2ZSwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5yYW5nZS50b2RheTpob3ZlcltkaXNhYmxlZF06YWN0aXZlLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnJhbmdlLnRvZGF5OmhvdmVyW2Rpc2FibGVkXTpmb2N1cywuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5yYW5nZS50b2RheTpob3ZlcltkaXNhYmxlZF06aG92ZXIsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQucmFuZ2UudG9kYXlbZGlzYWJsZWRdLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnJhbmdlLnRvZGF5W2Rpc2FibGVkXS5hY3RpdmUsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQucmFuZ2UudG9kYXlbZGlzYWJsZWRdOmFjdGl2ZSwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5yYW5nZS50b2RheVtkaXNhYmxlZF06Zm9jdXMsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQucmFuZ2UudG9kYXlbZGlzYWJsZWRdOmhvdmVyLGZpZWxkc2V0W2Rpc2FibGVkXSAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5yYW5nZS50b2RheSxmaWVsZHNldFtkaXNhYmxlZF0gLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQucmFuZ2UudG9kYXkuYWN0aXZlLGZpZWxkc2V0W2Rpc2FibGVkXSAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5yYW5nZS50b2RheS5kaXNhYmxlZCxmaWVsZHNldFtkaXNhYmxlZF0gLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQucmFuZ2UudG9kYXkuZGlzYWJsZWQuYWN0aXZlLGZpZWxkc2V0W2Rpc2FibGVkXSAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5yYW5nZS50b2RheS5kaXNhYmxlZDphY3RpdmUsZmllbGRzZXRbZGlzYWJsZWRdIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnJhbmdlLnRvZGF5LmRpc2FibGVkOmZvY3VzLGZpZWxkc2V0W2Rpc2FibGVkXSAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5yYW5nZS50b2RheS5kaXNhYmxlZDpob3ZlcixmaWVsZHNldFtkaXNhYmxlZF0gLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQucmFuZ2UudG9kYXkuZGlzYWJsZWQ6aG92ZXIuYWN0aXZlLGZpZWxkc2V0W2Rpc2FibGVkXSAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5yYW5nZS50b2RheS5kaXNhYmxlZDpob3ZlcjphY3RpdmUsZmllbGRzZXRbZGlzYWJsZWRdIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnJhbmdlLnRvZGF5LmRpc2FibGVkOmhvdmVyOmZvY3VzLGZpZWxkc2V0W2Rpc2FibGVkXSAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5yYW5nZS50b2RheS5kaXNhYmxlZDpob3Zlcjpob3ZlcixmaWVsZHNldFtkaXNhYmxlZF0gLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQucmFuZ2UudG9kYXk6YWN0aXZlLGZpZWxkc2V0W2Rpc2FibGVkXSAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5yYW5nZS50b2RheTpmb2N1cyxmaWVsZHNldFtkaXNhYmxlZF0gLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQucmFuZ2UudG9kYXk6aG92ZXIsZmllbGRzZXRbZGlzYWJsZWRdIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnJhbmdlLnRvZGF5OmhvdmVyLmFjdGl2ZSxmaWVsZHNldFtkaXNhYmxlZF0gLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQucmFuZ2UudG9kYXk6aG92ZXI6YWN0aXZlLGZpZWxkc2V0W2Rpc2FibGVkXSAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5yYW5nZS50b2RheTpob3Zlcjpmb2N1cyxmaWVsZHNldFtkaXNhYmxlZF0gLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQucmFuZ2UudG9kYXk6aG92ZXI6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZjdjYTc3O2JvcmRlci1jb2xvcjojZjFhNDE3fS5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnNlbGVjdGVkLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnNlbGVjdGVkLmRpc2FibGVkLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnNlbGVjdGVkLmRpc2FibGVkOmhvdmVyLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnNlbGVjdGVkOmhvdmVye2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojOTk5O2JvcmRlci1jb2xvcjojNTU1O3RleHQtc2hhZG93OjAgLTFweCAwIHJnYmEoMCwwLDAsLjI1KX0uZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5zZWxlY3RlZC5hY3RpdmUsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuc2VsZWN0ZWQuZGlzYWJsZWQuYWN0aXZlLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnNlbGVjdGVkLmRpc2FibGVkOmFjdGl2ZSwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5zZWxlY3RlZC5kaXNhYmxlZDpmb2N1cywuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5zZWxlY3RlZC5kaXNhYmxlZDpob3ZlciwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5zZWxlY3RlZC5kaXNhYmxlZDpob3Zlci5hY3RpdmUsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuc2VsZWN0ZWQuZGlzYWJsZWQ6aG92ZXI6YWN0aXZlLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnNlbGVjdGVkLmRpc2FibGVkOmhvdmVyOmZvY3VzLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnNlbGVjdGVkLmRpc2FibGVkOmhvdmVyOmhvdmVyLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnNlbGVjdGVkOmFjdGl2ZSwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5zZWxlY3RlZDpmb2N1cywuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5zZWxlY3RlZDpob3ZlciwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5zZWxlY3RlZDpob3Zlci5hY3RpdmUsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuc2VsZWN0ZWQ6aG92ZXI6YWN0aXZlLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnNlbGVjdGVkOmhvdmVyOmZvY3VzLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnNlbGVjdGVkOmhvdmVyOmhvdmVyLC5vcGVuIC5kcm9wZG93bi10b2dnbGUuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5zZWxlY3RlZCwub3BlbiAuZHJvcGRvd24tdG9nZ2xlLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuc2VsZWN0ZWQuZGlzYWJsZWQsLm9wZW4gLmRyb3Bkb3duLXRvZ2dsZS5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnNlbGVjdGVkLmRpc2FibGVkOmhvdmVyLC5vcGVuIC5kcm9wZG93bi10b2dnbGUuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5zZWxlY3RlZDpob3Zlcntjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6Izg1ODU4NTtib3JkZXItY29sb3I6IzM3MzczN30uZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5zZWxlY3RlZC5kaXNhYmxlZCwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5zZWxlY3RlZC5kaXNhYmxlZC5hY3RpdmUsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuc2VsZWN0ZWQuZGlzYWJsZWQuZGlzYWJsZWQsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuc2VsZWN0ZWQuZGlzYWJsZWQuZGlzYWJsZWQuYWN0aXZlLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnNlbGVjdGVkLmRpc2FibGVkLmRpc2FibGVkOmFjdGl2ZSwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5zZWxlY3RlZC5kaXNhYmxlZC5kaXNhYmxlZDpmb2N1cywuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5zZWxlY3RlZC5kaXNhYmxlZC5kaXNhYmxlZDpob3ZlciwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5zZWxlY3RlZC5kaXNhYmxlZDphY3RpdmUsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuc2VsZWN0ZWQuZGlzYWJsZWQ6Zm9jdXMsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuc2VsZWN0ZWQuZGlzYWJsZWQ6aG92ZXIsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuc2VsZWN0ZWQuZGlzYWJsZWQ6aG92ZXIuZGlzYWJsZWQsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuc2VsZWN0ZWQuZGlzYWJsZWQ6aG92ZXIuZGlzYWJsZWQuYWN0aXZlLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnNlbGVjdGVkLmRpc2FibGVkOmhvdmVyLmRpc2FibGVkOmFjdGl2ZSwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5zZWxlY3RlZC5kaXNhYmxlZDpob3Zlci5kaXNhYmxlZDpmb2N1cywuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5zZWxlY3RlZC5kaXNhYmxlZDpob3Zlci5kaXNhYmxlZDpob3ZlciwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5zZWxlY3RlZC5kaXNhYmxlZDpob3ZlcltkaXNhYmxlZF0sLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuc2VsZWN0ZWQuZGlzYWJsZWQ6aG92ZXJbZGlzYWJsZWRdLmFjdGl2ZSwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5zZWxlY3RlZC5kaXNhYmxlZDpob3ZlcltkaXNhYmxlZF06YWN0aXZlLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnNlbGVjdGVkLmRpc2FibGVkOmhvdmVyW2Rpc2FibGVkXTpmb2N1cywuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5zZWxlY3RlZC5kaXNhYmxlZDpob3ZlcltkaXNhYmxlZF06aG92ZXIsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuc2VsZWN0ZWQuZGlzYWJsZWRbZGlzYWJsZWRdLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnNlbGVjdGVkLmRpc2FibGVkW2Rpc2FibGVkXS5hY3RpdmUsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuc2VsZWN0ZWQuZGlzYWJsZWRbZGlzYWJsZWRdOmFjdGl2ZSwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5zZWxlY3RlZC5kaXNhYmxlZFtkaXNhYmxlZF06Zm9jdXMsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuc2VsZWN0ZWQuZGlzYWJsZWRbZGlzYWJsZWRdOmhvdmVyLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnNlbGVjdGVkOmhvdmVyLmRpc2FibGVkLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnNlbGVjdGVkOmhvdmVyLmRpc2FibGVkLmFjdGl2ZSwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5zZWxlY3RlZDpob3Zlci5kaXNhYmxlZDphY3RpdmUsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuc2VsZWN0ZWQ6aG92ZXIuZGlzYWJsZWQ6Zm9jdXMsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuc2VsZWN0ZWQ6aG92ZXIuZGlzYWJsZWQ6aG92ZXIsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuc2VsZWN0ZWQ6aG92ZXJbZGlzYWJsZWRdLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnNlbGVjdGVkOmhvdmVyW2Rpc2FibGVkXS5hY3RpdmUsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuc2VsZWN0ZWQ6aG92ZXJbZGlzYWJsZWRdOmFjdGl2ZSwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5zZWxlY3RlZDpob3ZlcltkaXNhYmxlZF06Zm9jdXMsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuc2VsZWN0ZWQ6aG92ZXJbZGlzYWJsZWRdOmhvdmVyLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnNlbGVjdGVkW2Rpc2FibGVkXSwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5zZWxlY3RlZFtkaXNhYmxlZF0uYWN0aXZlLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnNlbGVjdGVkW2Rpc2FibGVkXTphY3RpdmUsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuc2VsZWN0ZWRbZGlzYWJsZWRdOmZvY3VzLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnNlbGVjdGVkW2Rpc2FibGVkXTpob3ZlcixmaWVsZHNldFtkaXNhYmxlZF0gLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuc2VsZWN0ZWQsZmllbGRzZXRbZGlzYWJsZWRdIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnNlbGVjdGVkLmFjdGl2ZSxmaWVsZHNldFtkaXNhYmxlZF0gLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuc2VsZWN0ZWQuZGlzYWJsZWQsZmllbGRzZXRbZGlzYWJsZWRdIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnNlbGVjdGVkLmRpc2FibGVkLmFjdGl2ZSxmaWVsZHNldFtkaXNhYmxlZF0gLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuc2VsZWN0ZWQuZGlzYWJsZWQ6YWN0aXZlLGZpZWxkc2V0W2Rpc2FibGVkXSAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5zZWxlY3RlZC5kaXNhYmxlZDpmb2N1cyxmaWVsZHNldFtkaXNhYmxlZF0gLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuc2VsZWN0ZWQuZGlzYWJsZWQ6aG92ZXIsZmllbGRzZXRbZGlzYWJsZWRdIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnNlbGVjdGVkLmRpc2FibGVkOmhvdmVyLmFjdGl2ZSxmaWVsZHNldFtkaXNhYmxlZF0gLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuc2VsZWN0ZWQuZGlzYWJsZWQ6aG92ZXI6YWN0aXZlLGZpZWxkc2V0W2Rpc2FibGVkXSAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5zZWxlY3RlZC5kaXNhYmxlZDpob3Zlcjpmb2N1cyxmaWVsZHNldFtkaXNhYmxlZF0gLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuc2VsZWN0ZWQuZGlzYWJsZWQ6aG92ZXI6aG92ZXIsZmllbGRzZXRbZGlzYWJsZWRdIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnNlbGVjdGVkOmFjdGl2ZSxmaWVsZHNldFtkaXNhYmxlZF0gLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuc2VsZWN0ZWQ6Zm9jdXMsZmllbGRzZXRbZGlzYWJsZWRdIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnNlbGVjdGVkOmhvdmVyLGZpZWxkc2V0W2Rpc2FibGVkXSAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5zZWxlY3RlZDpob3Zlci5hY3RpdmUsZmllbGRzZXRbZGlzYWJsZWRdIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnNlbGVjdGVkOmhvdmVyOmFjdGl2ZSxmaWVsZHNldFtkaXNhYmxlZF0gLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuc2VsZWN0ZWQ6aG92ZXI6Zm9jdXMsZmllbGRzZXRbZGlzYWJsZWRdIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnNlbGVjdGVkOmhvdmVyOmhvdmVye2JhY2tncm91bmQtY29sb3I6Izk5OTtib3JkZXItY29sb3I6IzU1NX0uZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5hY3RpdmUsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlLmRpc2FibGVkLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLmFjdGl2ZS5kaXNhYmxlZDpob3ZlciwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5hY3RpdmU6aG92ZXJ7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiM0MjhiY2E7Ym9yZGVyLWNvbG9yOiMzNTdlYmQ7dGV4dC1zaGFkb3c6MCAtMXB4IDAgcmdiYSgwLDAsMCwuMjUpfS5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLmFjdGl2ZS5hY3RpdmUsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlLmRpc2FibGVkLmFjdGl2ZSwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5hY3RpdmUuZGlzYWJsZWQ6YWN0aXZlLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLmFjdGl2ZS5kaXNhYmxlZDpmb2N1cywuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5hY3RpdmUuZGlzYWJsZWQ6aG92ZXIsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlLmRpc2FibGVkOmhvdmVyLmFjdGl2ZSwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5hY3RpdmUuZGlzYWJsZWQ6aG92ZXI6YWN0aXZlLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLmFjdGl2ZS5kaXNhYmxlZDpob3Zlcjpmb2N1cywuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5hY3RpdmUuZGlzYWJsZWQ6aG92ZXI6aG92ZXIsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlOmFjdGl2ZSwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5hY3RpdmU6Zm9jdXMsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlOmhvdmVyLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLmFjdGl2ZTpob3Zlci5hY3RpdmUsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlOmhvdmVyOmFjdGl2ZSwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5hY3RpdmU6aG92ZXI6Zm9jdXMsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlOmhvdmVyOmhvdmVyLC5vcGVuIC5kcm9wZG93bi10b2dnbGUuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5hY3RpdmUsLm9wZW4gLmRyb3Bkb3duLXRvZ2dsZS5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLmFjdGl2ZS5kaXNhYmxlZCwub3BlbiAuZHJvcGRvd24tdG9nZ2xlLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlLmRpc2FibGVkOmhvdmVyLC5vcGVuIC5kcm9wZG93bi10b2dnbGUuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5hY3RpdmU6aG92ZXJ7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMTkwLDE5MCwxOTAsLjc2KTtib3JkZXItY29sb3I6cmdiYSgxOTAsMTkwLDE5MCwuNzYpfS5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLmFjdGl2ZS5kaXNhYmxlZCwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5hY3RpdmUuZGlzYWJsZWQuYWN0aXZlLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLmFjdGl2ZS5kaXNhYmxlZC5kaXNhYmxlZCwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5hY3RpdmUuZGlzYWJsZWQuZGlzYWJsZWQuYWN0aXZlLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLmFjdGl2ZS5kaXNhYmxlZC5kaXNhYmxlZDphY3RpdmUsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlLmRpc2FibGVkLmRpc2FibGVkOmZvY3VzLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLmFjdGl2ZS5kaXNhYmxlZC5kaXNhYmxlZDpob3ZlciwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5hY3RpdmUuZGlzYWJsZWQ6YWN0aXZlLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLmFjdGl2ZS5kaXNhYmxlZDpmb2N1cywuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5hY3RpdmUuZGlzYWJsZWQ6aG92ZXIsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlLmRpc2FibGVkOmhvdmVyLmRpc2FibGVkLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLmFjdGl2ZS5kaXNhYmxlZDpob3Zlci5kaXNhYmxlZC5hY3RpdmUsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlLmRpc2FibGVkOmhvdmVyLmRpc2FibGVkOmFjdGl2ZSwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5hY3RpdmUuZGlzYWJsZWQ6aG92ZXIuZGlzYWJsZWQ6Zm9jdXMsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlLmRpc2FibGVkOmhvdmVyLmRpc2FibGVkOmhvdmVyLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLmFjdGl2ZS5kaXNhYmxlZDpob3ZlcltkaXNhYmxlZF0sLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlLmRpc2FibGVkOmhvdmVyW2Rpc2FibGVkXS5hY3RpdmUsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlLmRpc2FibGVkOmhvdmVyW2Rpc2FibGVkXTphY3RpdmUsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlLmRpc2FibGVkOmhvdmVyW2Rpc2FibGVkXTpmb2N1cywuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5hY3RpdmUuZGlzYWJsZWQ6aG92ZXJbZGlzYWJsZWRdOmhvdmVyLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLmFjdGl2ZS5kaXNhYmxlZFtkaXNhYmxlZF0sLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlLmRpc2FibGVkW2Rpc2FibGVkXS5hY3RpdmUsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlLmRpc2FibGVkW2Rpc2FibGVkXTphY3RpdmUsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlLmRpc2FibGVkW2Rpc2FibGVkXTpmb2N1cywuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5hY3RpdmUuZGlzYWJsZWRbZGlzYWJsZWRdOmhvdmVyLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLmFjdGl2ZTpob3Zlci5kaXNhYmxlZCwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5hY3RpdmU6aG92ZXIuZGlzYWJsZWQuYWN0aXZlLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLmFjdGl2ZTpob3Zlci5kaXNhYmxlZDphY3RpdmUsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlOmhvdmVyLmRpc2FibGVkOmZvY3VzLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLmFjdGl2ZTpob3Zlci5kaXNhYmxlZDpob3ZlciwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5hY3RpdmU6aG92ZXJbZGlzYWJsZWRdLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLmFjdGl2ZTpob3ZlcltkaXNhYmxlZF0uYWN0aXZlLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLmFjdGl2ZTpob3ZlcltkaXNhYmxlZF06YWN0aXZlLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLmFjdGl2ZTpob3ZlcltkaXNhYmxlZF06Zm9jdXMsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlOmhvdmVyW2Rpc2FibGVkXTpob3ZlciwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5hY3RpdmVbZGlzYWJsZWRdLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLmFjdGl2ZVtkaXNhYmxlZF0uYWN0aXZlLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLmFjdGl2ZVtkaXNhYmxlZF06YWN0aXZlLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLmFjdGl2ZVtkaXNhYmxlZF06Zm9jdXMsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlW2Rpc2FibGVkXTpob3ZlcixmaWVsZHNldFtkaXNhYmxlZF0gLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlLGZpZWxkc2V0W2Rpc2FibGVkXSAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5hY3RpdmUuYWN0aXZlLGZpZWxkc2V0W2Rpc2FibGVkXSAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5hY3RpdmUuZGlzYWJsZWQsZmllbGRzZXRbZGlzYWJsZWRdIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLmFjdGl2ZS5kaXNhYmxlZC5hY3RpdmUsZmllbGRzZXRbZGlzYWJsZWRdIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLmFjdGl2ZS5kaXNhYmxlZDphY3RpdmUsZmllbGRzZXRbZGlzYWJsZWRdIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLmFjdGl2ZS5kaXNhYmxlZDpmb2N1cyxmaWVsZHNldFtkaXNhYmxlZF0gLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlLmRpc2FibGVkOmhvdmVyLGZpZWxkc2V0W2Rpc2FibGVkXSAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5hY3RpdmUuZGlzYWJsZWQ6aG92ZXIuYWN0aXZlLGZpZWxkc2V0W2Rpc2FibGVkXSAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5hY3RpdmUuZGlzYWJsZWQ6aG92ZXI6YWN0aXZlLGZpZWxkc2V0W2Rpc2FibGVkXSAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5hY3RpdmUuZGlzYWJsZWQ6aG92ZXI6Zm9jdXMsZmllbGRzZXRbZGlzYWJsZWRdIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLmFjdGl2ZS5kaXNhYmxlZDpob3Zlcjpob3ZlcixmaWVsZHNldFtkaXNhYmxlZF0gLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlOmFjdGl2ZSxmaWVsZHNldFtkaXNhYmxlZF0gLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlOmZvY3VzLGZpZWxkc2V0W2Rpc2FibGVkXSAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5hY3RpdmU6aG92ZXIsZmllbGRzZXRbZGlzYWJsZWRdIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLmFjdGl2ZTpob3Zlci5hY3RpdmUsZmllbGRzZXRbZGlzYWJsZWRdIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLmFjdGl2ZTpob3ZlcjphY3RpdmUsZmllbGRzZXRbZGlzYWJsZWRdIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLmFjdGl2ZTpob3Zlcjpmb2N1cyxmaWVsZHNldFtkaXNhYmxlZF0gLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlOmhvdmVyOmhvdmVye2JhY2tncm91bmQtY29sb3I6IzQyOGJjYTtib3JkZXItY29sb3I6IzM1N2ViZH0uZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZCBzcGFue2Rpc3BsYXk6YmxvY2s7d2lkdGg6MjMlO2hlaWdodDo1NHB4O2xpbmUtaGVpZ2h0OjU0cHg7ZmxvYXQ6bGVmdDttYXJnaW46MSU7Y3Vyc29yOnBvaW50ZXI7Ym9yZGVyLXJhZGl1czo0cHh9LmRhdGVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbjpob3ZlcntiYWNrZ3JvdW5kOiNlZWV9LmRhdGVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5kaXNhYmxlZCwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZCBzcGFuLmRpc2FibGVkOmhvdmVye2JhY2tncm91bmQ6MCAwO2NvbG9yOiM5OTk7Y3Vyc29yOmRlZmF1bHR9LmRhdGVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5hY3RpdmUsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5hY3RpdmUuZGlzYWJsZWQsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5hY3RpdmUuZGlzYWJsZWQ6aG92ZXIsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5hY3RpdmU6aG92ZXJ7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOiM0MjhiY2E7Ym9yZGVyLWNvbG9yOiMzNTdlYmQ7dGV4dC1zaGFkb3c6MCAtMXB4IDAgcmdiYSgwLDAsMCwuMjUpfS5kYXRlcGlja2VyIHRhYmxlIHRyIHRkIHNwYW4uYWN0aXZlLmFjdGl2ZSwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZCBzcGFuLmFjdGl2ZS5kaXNhYmxlZC5hY3RpdmUsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5hY3RpdmUuZGlzYWJsZWQ6YWN0aXZlLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkIHNwYW4uYWN0aXZlLmRpc2FibGVkOmZvY3VzLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkIHNwYW4uYWN0aXZlLmRpc2FibGVkOmhvdmVyLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkIHNwYW4uYWN0aXZlLmRpc2FibGVkOmhvdmVyLmFjdGl2ZSwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZCBzcGFuLmFjdGl2ZS5kaXNhYmxlZDpob3ZlcjphY3RpdmUsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5hY3RpdmUuZGlzYWJsZWQ6aG92ZXI6Zm9jdXMsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5hY3RpdmUuZGlzYWJsZWQ6aG92ZXI6aG92ZXIsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5hY3RpdmU6YWN0aXZlLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkIHNwYW4uYWN0aXZlOmZvY3VzLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkIHNwYW4uYWN0aXZlOmhvdmVyLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkIHNwYW4uYWN0aXZlOmhvdmVyLmFjdGl2ZSwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZCBzcGFuLmFjdGl2ZTpob3ZlcjphY3RpdmUsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5hY3RpdmU6aG92ZXI6Zm9jdXMsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5hY3RpdmU6aG92ZXI6aG92ZXIsLm9wZW4gLmRyb3Bkb3duLXRvZ2dsZS5kYXRlcGlja2VyIHRhYmxlIHRyIHRkIHNwYW4uYWN0aXZlLC5vcGVuIC5kcm9wZG93bi10b2dnbGUuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZCBzcGFuLmFjdGl2ZS5kaXNhYmxlZCwub3BlbiAuZHJvcGRvd24tdG9nZ2xlLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5hY3RpdmUuZGlzYWJsZWQ6aG92ZXIsLm9wZW4gLmRyb3Bkb3duLXRvZ2dsZS5kYXRlcGlja2VyIHRhYmxlIHRyIHRkIHNwYW4uYWN0aXZlOmhvdmVye2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDE5MCwxOTAsMTkwLC43Nik7Ym9yZGVyLWNvbG9yOnJnYmEoMTkwLDE5MCwxOTAsLjc2KX0uZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZCBzcGFuLmFjdGl2ZS5hY3RpdmUsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5hY3RpdmUuZGlzYWJsZWQuYWN0aXZlLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkIHNwYW4uYWN0aXZlLmRpc2FibGVkOmFjdGl2ZSwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZCBzcGFuLmFjdGl2ZS5kaXNhYmxlZDpob3Zlci5hY3RpdmUsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5hY3RpdmUuZGlzYWJsZWQ6aG92ZXI6YWN0aXZlLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkIHNwYW4uYWN0aXZlOmFjdGl2ZSwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZCBzcGFuLmFjdGl2ZTpob3Zlci5hY3RpdmUsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5hY3RpdmU6aG92ZXI6YWN0aXZlLC5vcGVuIC5kcm9wZG93bi10b2dnbGUuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZCBzcGFuLmFjdGl2ZSwub3BlbiAuZHJvcGRvd24tdG9nZ2xlLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5hY3RpdmUuZGlzYWJsZWQsLm9wZW4gLmRyb3Bkb3duLXRvZ2dsZS5kYXRlcGlja2VyIHRhYmxlIHRyIHRkIHNwYW4uYWN0aXZlLmRpc2FibGVkOmhvdmVyLC5vcGVuIC5kcm9wZG93bi10b2dnbGUuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZCBzcGFuLmFjdGl2ZTpob3ZlcntiYWNrZ3JvdW5kLWltYWdlOm5vbmV9LmRhdGVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5hY3RpdmUuZGlzYWJsZWQsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5hY3RpdmUuZGlzYWJsZWQuYWN0aXZlLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkIHNwYW4uYWN0aXZlLmRpc2FibGVkLmRpc2FibGVkLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkIHNwYW4uYWN0aXZlLmRpc2FibGVkLmRpc2FibGVkLmFjdGl2ZSwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZCBzcGFuLmFjdGl2ZS5kaXNhYmxlZC5kaXNhYmxlZDphY3RpdmUsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5hY3RpdmUuZGlzYWJsZWQuZGlzYWJsZWQ6Zm9jdXMsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5hY3RpdmUuZGlzYWJsZWQuZGlzYWJsZWQ6aG92ZXIsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5hY3RpdmUuZGlzYWJsZWQ6YWN0aXZlLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkIHNwYW4uYWN0aXZlLmRpc2FibGVkOmZvY3VzLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkIHNwYW4uYWN0aXZlLmRpc2FibGVkOmhvdmVyLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkIHNwYW4uYWN0aXZlLmRpc2FibGVkOmhvdmVyLmRpc2FibGVkLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkIHNwYW4uYWN0aXZlLmRpc2FibGVkOmhvdmVyLmRpc2FibGVkLmFjdGl2ZSwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZCBzcGFuLmFjdGl2ZS5kaXNhYmxlZDpob3Zlci5kaXNhYmxlZDphY3RpdmUsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5hY3RpdmUuZGlzYWJsZWQ6aG92ZXIuZGlzYWJsZWQ6Zm9jdXMsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5hY3RpdmUuZGlzYWJsZWQ6aG92ZXIuZGlzYWJsZWQ6aG92ZXIsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5hY3RpdmUuZGlzYWJsZWQ6aG92ZXJbZGlzYWJsZWRdLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkIHNwYW4uYWN0aXZlLmRpc2FibGVkOmhvdmVyW2Rpc2FibGVkXS5hY3RpdmUsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5hY3RpdmUuZGlzYWJsZWQ6aG92ZXJbZGlzYWJsZWRdOmFjdGl2ZSwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZCBzcGFuLmFjdGl2ZS5kaXNhYmxlZDpob3ZlcltkaXNhYmxlZF06Zm9jdXMsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5hY3RpdmUuZGlzYWJsZWQ6aG92ZXJbZGlzYWJsZWRdOmhvdmVyLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkIHNwYW4uYWN0aXZlLmRpc2FibGVkW2Rpc2FibGVkXSwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZCBzcGFuLmFjdGl2ZS5kaXNhYmxlZFtkaXNhYmxlZF0uYWN0aXZlLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkIHNwYW4uYWN0aXZlLmRpc2FibGVkW2Rpc2FibGVkXTphY3RpdmUsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5hY3RpdmUuZGlzYWJsZWRbZGlzYWJsZWRdOmZvY3VzLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkIHNwYW4uYWN0aXZlLmRpc2FibGVkW2Rpc2FibGVkXTpob3ZlciwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZCBzcGFuLmFjdGl2ZTpob3Zlci5kaXNhYmxlZCwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZCBzcGFuLmFjdGl2ZTpob3Zlci5kaXNhYmxlZC5hY3RpdmUsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5hY3RpdmU6aG92ZXIuZGlzYWJsZWQ6YWN0aXZlLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkIHNwYW4uYWN0aXZlOmhvdmVyLmRpc2FibGVkOmZvY3VzLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkIHNwYW4uYWN0aXZlOmhvdmVyLmRpc2FibGVkOmhvdmVyLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkIHNwYW4uYWN0aXZlOmhvdmVyW2Rpc2FibGVkXSwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZCBzcGFuLmFjdGl2ZTpob3ZlcltkaXNhYmxlZF0uYWN0aXZlLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkIHNwYW4uYWN0aXZlOmhvdmVyW2Rpc2FibGVkXTphY3RpdmUsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5hY3RpdmU6aG92ZXJbZGlzYWJsZWRdOmZvY3VzLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkIHNwYW4uYWN0aXZlOmhvdmVyW2Rpc2FibGVkXTpob3ZlciwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZCBzcGFuLmFjdGl2ZVtkaXNhYmxlZF0sLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5hY3RpdmVbZGlzYWJsZWRdLmFjdGl2ZSwuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZCBzcGFuLmFjdGl2ZVtkaXNhYmxlZF06YWN0aXZlLC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkIHNwYW4uYWN0aXZlW2Rpc2FibGVkXTpmb2N1cywuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZCBzcGFuLmFjdGl2ZVtkaXNhYmxlZF06aG92ZXIsZmllbGRzZXRbZGlzYWJsZWRdIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkIHNwYW4uYWN0aXZlLGZpZWxkc2V0W2Rpc2FibGVkXSAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZCBzcGFuLmFjdGl2ZS5hY3RpdmUsZmllbGRzZXRbZGlzYWJsZWRdIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkIHNwYW4uYWN0aXZlLmRpc2FibGVkLGZpZWxkc2V0W2Rpc2FibGVkXSAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZCBzcGFuLmFjdGl2ZS5kaXNhYmxlZC5hY3RpdmUsZmllbGRzZXRbZGlzYWJsZWRdIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkIHNwYW4uYWN0aXZlLmRpc2FibGVkOmFjdGl2ZSxmaWVsZHNldFtkaXNhYmxlZF0gLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5hY3RpdmUuZGlzYWJsZWQ6Zm9jdXMsZmllbGRzZXRbZGlzYWJsZWRdIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkIHNwYW4uYWN0aXZlLmRpc2FibGVkOmhvdmVyLGZpZWxkc2V0W2Rpc2FibGVkXSAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZCBzcGFuLmFjdGl2ZS5kaXNhYmxlZDpob3Zlci5hY3RpdmUsZmllbGRzZXRbZGlzYWJsZWRdIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkIHNwYW4uYWN0aXZlLmRpc2FibGVkOmhvdmVyOmFjdGl2ZSxmaWVsZHNldFtkaXNhYmxlZF0gLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5hY3RpdmUuZGlzYWJsZWQ6aG92ZXI6Zm9jdXMsZmllbGRzZXRbZGlzYWJsZWRdIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkIHNwYW4uYWN0aXZlLmRpc2FibGVkOmhvdmVyOmhvdmVyLGZpZWxkc2V0W2Rpc2FibGVkXSAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZCBzcGFuLmFjdGl2ZTphY3RpdmUsZmllbGRzZXRbZGlzYWJsZWRdIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkIHNwYW4uYWN0aXZlOmZvY3VzLGZpZWxkc2V0W2Rpc2FibGVkXSAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZCBzcGFuLmFjdGl2ZTpob3ZlcixmaWVsZHNldFtkaXNhYmxlZF0gLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5hY3RpdmU6aG92ZXIuYWN0aXZlLGZpZWxkc2V0W2Rpc2FibGVkXSAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZCBzcGFuLmFjdGl2ZTpob3ZlcjphY3RpdmUsZmllbGRzZXRbZGlzYWJsZWRdIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkIHNwYW4uYWN0aXZlOmhvdmVyOmZvY3VzLGZpZWxkc2V0W2Rpc2FibGVkXSAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZCBzcGFuLmFjdGl2ZTpob3Zlcjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiM0MjhiY2E7Ym9yZGVyLWNvbG9yOiMzNTdlYmR9LmRhdGVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5uZXcsLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5vbGR7Y29sb3I6Izk5OX0uZGF0ZXBpY2tlciAuZGF0ZXBpY2tlci1zd2l0Y2h7d2lkdGg6MTQ1cHh9LmRhdGVwaWNrZXIgdGZvb3QgdHIgdGgsLmRhdGVwaWNrZXIgdGhlYWQgdHI6Zmlyc3QtY2hpbGQgdGh7Y3Vyc29yOnBvaW50ZXJ9LmRhdGVwaWNrZXIgdGZvb3QgdHIgdGg6aG92ZXIsLmRhdGVwaWNrZXIgdGhlYWQgdHI6Zmlyc3QtY2hpbGQgdGg6aG92ZXJ7YmFja2dyb3VuZDojZWVlfS5kYXRlcGlja2VyIC5jd3tmb250LXNpemU6MTBweDt3aWR0aDoxMnB4O3BhZGRpbmc6MCAycHggMCA1cHg7dmVydGljYWwtYWxpZ246bWlkZGxlfS5kYXRlcGlja2VyIHRoZWFkIHRyOmZpcnN0LWNoaWxkIC5jd3tjdXJzb3I6ZGVmYXVsdDtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5pbnB1dC1ncm91cC5kYXRlIC5pbnB1dC1ncm91cC1hZGRvbntjdXJzb3I6cG9pbnRlcn0uaW5wdXQtZGF0ZXJhbmdle3dpZHRoOjEwMCV9LmlucHV0LWRhdGVyYW5nZSBpbnB1dHt0ZXh0LWFsaWduOmNlbnRlcn0uaW5wdXQtZGF0ZXJhbmdlIGlucHV0OmZpcnN0LWNoaWxke2JvcmRlci1yYWRpdXM6M3B4IDAgMCAzcHh9LmlucHV0LWRhdGVyYW5nZSBpbnB1dDpsYXN0LWNoaWxke2JvcmRlci1yYWRpdXM6MCAzcHggM3B4IDB9LmlucHV0LWRhdGVyYW5nZSAuaW5wdXQtZ3JvdXAtYWRkb257d2lkdGg6YXV0bzttaW4td2lkdGg6MTZweDtwYWRkaW5nOjRweCA1cHg7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuNDI4NTcxNDM7dGV4dC1hbGlnbjpjZW50ZXI7dGV4dC1zaGFkb3c6MCAxcHggMCAjZmZmO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtiYWNrZ3JvdW5kLWNvbG9yOiNlZWU7Ym9yZGVyOnNvbGlkICNjY2M7Ym9yZGVyLXdpZHRoOjFweCAwO21hcmdpbi1sZWZ0Oi01cHg7bWFyZ2luLXJpZ2h0Oi01cHh9LmRhdGVwaWNrZXIgdGQuZGF5e3BhZGRpbmc6NXB4IWltcG9ydGFudH0uZGF0ZXBpY2tlciB0aGVhZHtsaW5lLWhlaWdodDoyLjI7Zm9udC1zaXplOjE1cHh9LmRhdGVwaWNrZXIgLnRhYmxlLWNvbmRlbnNlZHtib3JkZXI6bm9uZTt3aWR0aDoxMDAlfSJdfQ== */
4
  * Copyright 2012 Stefan Petre
5
  * Improvements by Andrew Rowls
6
  * Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0)
7
+ */.datepicker-dropdown:after,.datepicker-dropdown:before{content:'';display:inline-block;border-top:0;position:absolute}.datepicker{padding:4px;border-radius:4px;direction:ltr}.datepicker-inline{width:220px}.datepicker.datepicker-rtl{direction:rtl}.datepicker.datepicker-rtl table tr td span{float:right}.datepicker-dropdown{top:0;left:0}.datepicker-dropdown:before{border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0,0,0,.2)}.datepicker-dropdown:after{border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff}.datepicker-dropdown.datepicker-orient-left:before{left:6px}.datepicker-dropdown.datepicker-orient-left:after{left:7px}.datepicker-dropdown.datepicker-orient-right:before{right:6px}.datepicker-dropdown.datepicker-orient-right:after{right:7px}.datepicker-dropdown.datepicker-orient-top:before{top:-7px}.datepicker-dropdown.datepicker-orient-top:after{top:-6px}.datepicker-dropdown.datepicker-orient-bottom:before{bottom:-7px;border-bottom:0;border-top:7px solid #999}.datepicker-dropdown.datepicker-orient-bottom:after{bottom:-6px;border-bottom:0;border-top:6px solid #fff}.datepicker>div{display:none}.datepicker.days .datepicker-days,.datepicker.months .datepicker-months,.datepicker.years .datepicker-years{display:block}.datepicker table{margin:0;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.datepicker table tr td,.datepicker table tr th{text-align:center;width:30px;height:30px;border-radius:4px;border:none}.table-striped .datepicker table tr td,.table-striped .datepicker table tr th{background-color:transparent}.datepicker table tr td.day.focused,.datepicker table tr td.day:hover{background:#eee;cursor:pointer}.datepicker table tr td.new,.datepicker table tr td.old{color:#999}.datepicker table tr td.disabled,.datepicker table tr td.disabled:hover{background:0 0;color:#999;cursor:default}.datepicker table tr td.today,.datepicker table tr td.today.disabled,.datepicker table tr td.today.disabled:hover,.datepicker table tr td.today:hover{color:#000;background-color:#ffdb99;border-color:#ffb733}.datepicker table tr td.today.active,.datepicker table tr td.today.disabled.active,.datepicker table tr td.today.disabled:active,.datepicker table tr td.today.disabled:focus,.datepicker table tr td.today.disabled:hover,.datepicker table tr td.today.disabled:hover.active,.datepicker table tr td.today.disabled:hover:active,.datepicker table tr td.today.disabled:hover:focus,.datepicker table tr td.today.disabled:hover:hover,.datepicker table tr td.today:active,.datepicker table tr td.today:focus,.datepicker table tr td.today:hover,.datepicker table tr td.today:hover.active,.datepicker table tr td.today:hover:active,.datepicker table tr td.today:hover:focus,.datepicker table tr td.today:hover:hover,.open .dropdown-toggle.datepicker table tr td.today,.open .dropdown-toggle.datepicker table tr td.today.disabled,.open .dropdown-toggle.datepicker table tr td.today.disabled:hover,.open .dropdown-toggle.datepicker table tr td.today:hover{color:#000;background-color:#ffcd70;border-color:#f59e00}.datepicker table tr td.today.active,.datepicker table tr td.today.disabled.active,.datepicker table tr td.today.disabled:active,.datepicker table tr td.today.disabled:hover.active,.datepicker table tr td.today.disabled:hover:active,.datepicker table tr td.today:active,.datepicker table tr td.today:hover.active,.datepicker table tr td.today:hover:active,.open .dropdown-toggle.datepicker table tr td.today,.open .dropdown-toggle.datepicker table tr td.today.disabled,.open .dropdown-toggle.datepicker table tr td.today.disabled:hover,.open .dropdown-toggle.datepicker table tr td.today:hover{background-image:none}.datepicker table tr td.today.disabled,.datepicker table tr td.today.disabled.active,.datepicker table tr td.today.disabled.disabled,.datepicker table tr td.today.disabled.disabled.active,.datepicker table tr td.today.disabled.disabled:active,.datepicker table tr td.today.disabled.disabled:focus,.datepicker table tr td.today.disabled.disabled:hover,.datepicker table tr td.today.disabled:active,.datepicker table tr td.today.disabled:focus,.datepicker table tr td.today.disabled:hover,.datepicker table tr td.today.disabled:hover.disabled,.datepicker table tr td.today.disabled:hover.disabled.active,.datepicker table tr td.today.disabled:hover.disabled:active,.datepicker table tr td.today.disabled:hover.disabled:focus,.datepicker table tr td.today.disabled:hover.disabled:hover,.datepicker table tr td.today.disabled:hover[disabled],.datepicker table tr td.today.disabled:hover[disabled].active,.datepicker table tr td.today.disabled:hover[disabled]:active,.datepicker table tr td.today.disabled:hover[disabled]:focus,.datepicker table tr td.today.disabled:hover[disabled]:hover,.datepicker table tr td.today.disabled[disabled],.datepicker table tr td.today.disabled[disabled].active,.datepicker table tr td.today.disabled[disabled]:active,.datepicker table tr td.today.disabled[disabled]:focus,.datepicker table tr td.today.disabled[disabled]:hover,.datepicker table tr td.today:hover.disabled,.datepicker table tr td.today:hover.disabled.active,.datepicker table tr td.today:hover.disabled:active,.datepicker table tr td.today:hover.disabled:focus,.datepicker table tr td.today:hover.disabled:hover,.datepicker table tr td.today:hover[disabled],.datepicker table tr td.today:hover[disabled].active,.datepicker table tr td.today:hover[disabled]:active,.datepicker table tr td.today:hover[disabled]:focus,.datepicker table tr td.today:hover[disabled]:hover,.datepicker table tr td.today[disabled],.datepicker table tr td.today[disabled].active,.datepicker table tr td.today[disabled]:active,.datepicker table tr td.today[disabled]:focus,.datepicker table tr td.today[disabled]:hover,fieldset[disabled] .datepicker table tr td.today,fieldset[disabled] .datepicker table tr td.today.active,fieldset[disabled] .datepicker table tr td.today.disabled,fieldset[disabled] .datepicker table tr td.today.disabled.active,fieldset[disabled] .datepicker table tr td.today.disabled:active,fieldset[disabled] .datepicker table tr td.today.disabled:focus,fieldset[disabled] .datepicker table tr td.today.disabled:hover,fieldset[disabled] .datepicker table tr td.today.disabled:hover.active,fieldset[disabled] .datepicker table tr td.today.disabled:hover:active,fieldset[disabled] .datepicker table tr td.today.disabled:hover:focus,fieldset[disabled] .datepicker table tr td.today.disabled:hover:hover,fieldset[disabled] .datepicker table tr td.today:active,fieldset[disabled] .datepicker table tr td.today:focus,fieldset[disabled] .datepicker table tr td.today:hover,fieldset[disabled] .datepicker table tr td.today:hover.active,fieldset[disabled] .datepicker table tr td.today:hover:active,fieldset[disabled] .datepicker table tr td.today:hover:focus,fieldset[disabled] .datepicker table tr td.today:hover:hover{background-color:#ffdb99;border-color:#ffb733}.datepicker table tr td.today:hover:hover{color:#000}.datepicker table tr td.today.active:hover{color:#fff}.datepicker table tr td.range,.datepicker table tr td.range.disabled,.datepicker table tr td.range.disabled:hover,.datepicker table tr td.range:hover{background:#eee;border-radius:0}.datepicker table tr td.active.active,.datepicker table tr td.active.disabled.active,.datepicker table tr td.active.disabled:active,.datepicker table tr td.active.disabled:hover.active,.datepicker table tr td.active.disabled:hover:active,.datepicker table tr td.active:active,.datepicker table tr td.active:hover.active,.datepicker table tr td.active:hover:active,.datepicker table tr td.range.today.active,.datepicker table tr td.range.today.disabled.active,.datepicker table tr td.range.today.disabled:active,.datepicker table tr td.range.today.disabled:hover.active,.datepicker table tr td.range.today.disabled:hover:active,.datepicker table tr td.range.today:active,.datepicker table tr td.range.today:hover.active,.datepicker table tr td.range.today:hover:active,.datepicker table tr td.selected.active,.datepicker table tr td.selected.disabled.active,.datepicker table tr td.selected.disabled:active,.datepicker table tr td.selected.disabled:hover.active,.datepicker table tr td.selected.disabled:hover:active,.datepicker table tr td.selected:active,.datepicker table tr td.selected:hover.active,.datepicker table tr td.selected:hover:active,.open .dropdown-toggle.datepicker table tr td.active,.open .dropdown-toggle.datepicker table tr td.active.disabled,.open .dropdown-toggle.datepicker table tr td.active.disabled:hover,.open .dropdown-toggle.datepicker table tr td.active:hover,.open .dropdown-toggle.datepicker table tr td.range.today,.open .dropdown-toggle.datepicker table tr td.range.today.disabled,.open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover,.open .dropdown-toggle.datepicker table tr td.range.today:hover,.open .dropdown-toggle.datepicker table tr td.selected,.open .dropdown-toggle.datepicker table tr td.selected.disabled,.open .dropdown-toggle.datepicker table tr td.selected.disabled:hover,.open .dropdown-toggle.datepicker table tr td.selected:hover{background-image:none}.datepicker table tr td.range.today,.datepicker table tr td.range.today.disabled,.datepicker table tr td.range.today.disabled:hover,.datepicker table tr td.range.today:hover{color:#000;background-color:#f7ca77;border-color:#f1a417;border-radius:0}.datepicker table tr td.range.today.active,.datepicker table tr td.range.today.disabled.active,.datepicker table tr td.range.today.disabled:active,.datepicker table tr td.range.today.disabled:focus,.datepicker table tr td.range.today.disabled:hover,.datepicker table tr td.range.today.disabled:hover.active,.datepicker table tr td.range.today.disabled:hover:active,.datepicker table tr td.range.today.disabled:hover:focus,.datepicker table tr td.range.today.disabled:hover:hover,.datepicker table tr td.range.today:active,.datepicker table tr td.range.today:focus,.datepicker table tr td.range.today:hover,.datepicker table tr td.range.today:hover.active,.datepicker table tr td.range.today:hover:active,.datepicker table tr td.range.today:hover:focus,.datepicker table tr td.range.today:hover:hover,.open .dropdown-toggle.datepicker table tr td.range.today,.open .dropdown-toggle.datepicker table tr td.range.today.disabled,.open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover,.open .dropdown-toggle.datepicker table tr td.range.today:hover{color:#000;background-color:#f4bb51;border-color:#bf800c}.datepicker table tr td.range.today.disabled,.datepicker table tr td.range.today.disabled.active,.datepicker table tr td.range.today.disabled.disabled,.datepicker table tr td.range.today.disabled.disabled.active,.datepicker table tr td.range.today.disabled.disabled:active,.datepicker table tr td.range.today.disabled.disabled:focus,.datepicker table tr td.range.today.disabled.disabled:hover,.datepicker table tr td.range.today.disabled:active,.datepicker table tr td.range.today.disabled:focus,.datepicker table tr td.range.today.disabled:hover,.datepicker table tr td.range.today.disabled:hover.disabled,.datepicker table tr td.range.today.disabled:hover.disabled.active,.datepicker table tr td.range.today.disabled:hover.disabled:active,.datepicker table tr td.range.today.disabled:hover.disabled:focus,.datepicker table tr td.range.today.disabled:hover.disabled:hover,.datepicker table tr td.range.today.disabled:hover[disabled],.datepicker table tr td.range.today.disabled:hover[disabled].active,.datepicker table tr td.range.today.disabled:hover[disabled]:active,.datepicker table tr td.range.today.disabled:hover[disabled]:focus,.datepicker table tr td.range.today.disabled:hover[disabled]:hover,.datepicker table tr td.range.today.disabled[disabled],.datepicker table tr td.range.today.disabled[disabled].active,.datepicker table tr td.range.today.disabled[disabled]:active,.datepicker table tr td.range.today.disabled[disabled]:focus,.datepicker table tr td.range.today.disabled[disabled]:hover,.datepicker table tr td.range.today:hover.disabled,.datepicker table tr td.range.today:hover.disabled.active,.datepicker table tr td.range.today:hover.disabled:active,.datepicker table tr td.range.today:hover.disabled:focus,.datepicker table tr td.range.today:hover.disabled:hover,.datepicker table tr td.range.today:hover[disabled],.datepicker table tr td.range.today:hover[disabled].active,.datepicker table tr td.range.today:hover[disabled]:active,.datepicker table tr td.range.today:hover[disabled]:focus,.datepicker table tr td.range.today:hover[disabled]:hover,.datepicker table tr td.range.today[disabled],.datepicker table tr td.range.today[disabled].active,.datepicker table tr td.range.today[disabled]:active,.datepicker table tr td.range.today[disabled]:focus,.datepicker table tr td.range.today[disabled]:hover,fieldset[disabled] .datepicker table tr td.range.today,fieldset[disabled] .datepicker table tr td.range.today.active,fieldset[disabled] .datepicker table tr td.range.today.disabled,fieldset[disabled] .datepicker table tr td.range.today.disabled.active,fieldset[disabled] .datepicker table tr td.range.today.disabled:active,fieldset[disabled] .datepicker table tr td.range.today.disabled:focus,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover.active,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:active,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:focus,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:hover,fieldset[disabled] .datepicker table tr td.range.today:active,fieldset[disabled] .datepicker table tr td.range.today:focus,fieldset[disabled] .datepicker table tr td.range.today:hover,fieldset[disabled] .datepicker table tr td.range.today:hover.active,fieldset[disabled] .datepicker table tr td.range.today:hover:active,fieldset[disabled] .datepicker table tr td.range.today:hover:focus,fieldset[disabled] .datepicker table tr td.range.today:hover:hover{background-color:#f7ca77;border-color:#f1a417}.datepicker table tr td.selected,.datepicker table tr td.selected.disabled,.datepicker table tr td.selected.disabled:hover,.datepicker table tr td.selected:hover{color:#fff;background-color:#999;border-color:#555;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td.selected.active,.datepicker table tr td.selected.disabled.active,.datepicker table tr td.selected.disabled:active,.datepicker table tr td.selected.disabled:focus,.datepicker table tr td.selected.disabled:hover,.datepicker table tr td.selected.disabled:hover.active,.datepicker table tr td.selected.disabled:hover:active,.datepicker table tr td.selected.disabled:hover:focus,.datepicker table tr td.selected.disabled:hover:hover,.datepicker table tr td.selected:active,.datepicker table tr td.selected:focus,.datepicker table tr td.selected:hover,.datepicker table tr td.selected:hover.active,.datepicker table tr td.selected:hover:active,.datepicker table tr td.selected:hover:focus,.datepicker table tr td.selected:hover:hover,.open .dropdown-toggle.datepicker table tr td.selected,.open .dropdown-toggle.datepicker table tr td.selected.disabled,.open .dropdown-toggle.datepicker table tr td.selected.disabled:hover,.open .dropdown-toggle.datepicker table tr td.selected:hover{color:#fff;background-color:#858585;border-color:#373737}.datepicker table tr td.selected.disabled,.datepicker table tr td.selected.disabled.active,.datepicker table tr td.selected.disabled.disabled,.datepicker table tr td.selected.disabled.disabled.active,.datepicker table tr td.selected.disabled.disabled:active,.datepicker table tr td.selected.disabled.disabled:focus,.datepicker table tr td.selected.disabled.disabled:hover,.datepicker table tr td.selected.disabled:active,.datepicker table tr td.selected.disabled:focus,.datepicker table tr td.selected.disabled:hover,.datepicker table tr td.selected.disabled:hover.disabled,.datepicker table tr td.selected.disabled:hover.disabled.active,.datepicker table tr td.selected.disabled:hover.disabled:active,.datepicker table tr td.selected.disabled:hover.disabled:focus,.datepicker table tr td.selected.disabled:hover.disabled:hover,.datepicker table tr td.selected.disabled:hover[disabled],.datepicker table tr td.selected.disabled:hover[disabled].active,.datepicker table tr td.selected.disabled:hover[disabled]:active,.datepicker table tr td.selected.disabled:hover[disabled]:focus,.datepicker table tr td.selected.disabled:hover[disabled]:hover,.datepicker table tr td.selected.disabled[disabled],.datepicker table tr td.selected.disabled[disabled].active,.datepicker table tr td.selected.disabled[disabled]:active,.datepicker table tr td.selected.disabled[disabled]:focus,.datepicker table tr td.selected.disabled[disabled]:hover,.datepicker table tr td.selected:hover.disabled,.datepicker table tr td.selected:hover.disabled.active,.datepicker table tr td.selected:hover.disabled:active,.datepicker table tr td.selected:hover.disabled:focus,.datepicker table tr td.selected:hover.disabled:hover,.datepicker table tr td.selected:hover[disabled],.datepicker table tr td.selected:hover[disabled].active,.datepicker table tr td.selected:hover[disabled]:active,.datepicker table tr td.selected:hover[disabled]:focus,.datepicker table tr td.selected:hover[disabled]:hover,.datepicker table tr td.selected[disabled],.datepicker table tr td.selected[disabled].active,.datepicker table tr td.selected[disabled]:active,.datepicker table tr td.selected[disabled]:focus,.datepicker table tr td.selected[disabled]:hover,fieldset[disabled] .datepicker table tr td.selected,fieldset[disabled] .datepicker table tr td.selected.active,fieldset[disabled] .datepicker table tr td.selected.disabled,fieldset[disabled] .datepicker table tr td.selected.disabled.active,fieldset[disabled] .datepicker table tr td.selected.disabled:active,fieldset[disabled] .datepicker table tr td.selected.disabled:focus,fieldset[disabled] .datepicker table tr td.selected.disabled:hover,fieldset[disabled] .datepicker table tr td.selected.disabled:hover.active,fieldset[disabled] .datepicker table tr td.selected.disabled:hover:active,fieldset[disabled] .datepicker table tr td.selected.disabled:hover:focus,fieldset[disabled] .datepicker table tr td.selected.disabled:hover:hover,fieldset[disabled] .datepicker table tr td.selected:active,fieldset[disabled] .datepicker table tr td.selected:focus,fieldset[disabled] .datepicker table tr td.selected:hover,fieldset[disabled] .datepicker table tr td.selected:hover.active,fieldset[disabled] .datepicker table tr td.selected:hover:active,fieldset[disabled] .datepicker table tr td.selected:hover:focus,fieldset[disabled] .datepicker table tr td.selected:hover:hover{background-color:#999;border-color:#555}.datepicker table tr td.active,.datepicker table tr td.active.disabled,.datepicker table tr td.active.disabled:hover,.datepicker table tr td.active:hover{color:#fff;background-color:#428bca;border-color:#357ebd;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td.active.active,.datepicker table tr td.active.disabled.active,.datepicker table tr td.active.disabled:active,.datepicker table tr td.active.disabled:focus,.datepicker table tr td.active.disabled:hover,.datepicker table tr td.active.disabled:hover.active,.datepicker table tr td.active.disabled:hover:active,.datepicker table tr td.active.disabled:hover:focus,.datepicker table tr td.active.disabled:hover:hover,.datepicker table tr td.active:active,.datepicker table tr td.active:focus,.datepicker table tr td.active:hover,.datepicker table tr td.active:hover.active,.datepicker table tr td.active:hover:active,.datepicker table tr td.active:hover:focus,.datepicker table tr td.active:hover:hover,.open .dropdown-toggle.datepicker table tr td.active,.open .dropdown-toggle.datepicker table tr td.active.disabled,.open .dropdown-toggle.datepicker table tr td.active.disabled:hover,.open .dropdown-toggle.datepicker table tr td.active:hover{color:#fff;background-color:rgba(190,190,190,.76);border-color:rgba(190,190,190,.76)}.datepicker table tr td.active.disabled,.datepicker table tr td.active.disabled.active,.datepicker table tr td.active.disabled.disabled,.datepicker table tr td.active.disabled.disabled.active,.datepicker table tr td.active.disabled.disabled:active,.datepicker table tr td.active.disabled.disabled:focus,.datepicker table tr td.active.disabled.disabled:hover,.datepicker table tr td.active.disabled:active,.datepicker table tr td.active.disabled:focus,.datepicker table tr td.active.disabled:hover,.datepicker table tr td.active.disabled:hover.disabled,.datepicker table tr td.active.disabled:hover.disabled.active,.datepicker table tr td.active.disabled:hover.disabled:active,.datepicker table tr td.active.disabled:hover.disabled:focus,.datepicker table tr td.active.disabled:hover.disabled:hover,.datepicker table tr td.active.disabled:hover[disabled],.datepicker table tr td.active.disabled:hover[disabled].active,.datepicker table tr td.active.disabled:hover[disabled]:active,.datepicker table tr td.active.disabled:hover[disabled]:focus,.datepicker table tr td.active.disabled:hover[disabled]:hover,.datepicker table tr td.active.disabled[disabled],.datepicker table tr td.active.disabled[disabled].active,.datepicker table tr td.active.disabled[disabled]:active,.datepicker table tr td.active.disabled[disabled]:focus,.datepicker table tr td.active.disabled[disabled]:hover,.datepicker table tr td.active:hover.disabled,.datepicker table tr td.active:hover.disabled.active,.datepicker table tr td.active:hover.disabled:active,.datepicker table tr td.active:hover.disabled:focus,.datepicker table tr td.active:hover.disabled:hover,.datepicker table tr td.active:hover[disabled],.datepicker table tr td.active:hover[disabled].active,.datepicker table tr td.active:hover[disabled]:active,.datepicker table tr td.active:hover[disabled]:focus,.datepicker table tr td.active:hover[disabled]:hover,.datepicker table tr td.active[disabled],.datepicker table tr td.active[disabled].active,.datepicker table tr td.active[disabled]:active,.datepicker table tr td.active[disabled]:focus,.datepicker table tr td.active[disabled]:hover,fieldset[disabled] .datepicker table tr td.active,fieldset[disabled] .datepicker table tr td.active.active,fieldset[disabled] .datepicker table tr td.active.disabled,fieldset[disabled] .datepicker table tr td.active.disabled.active,fieldset[disabled] .datepicker table tr td.active.disabled:active,fieldset[disabled] .datepicker table tr td.active.disabled:focus,fieldset[disabled] .datepicker table tr td.active.disabled:hover,fieldset[disabled] .datepicker table tr td.active.disabled:hover.active,fieldset[disabled] .datepicker table tr td.active.disabled:hover:active,fieldset[disabled] .datepicker table tr td.active.disabled:hover:focus,fieldset[disabled] .datepicker table tr td.active.disabled:hover:hover,fieldset[disabled] .datepicker table tr td.active:active,fieldset[disabled] .datepicker table tr td.active:focus,fieldset[disabled] .datepicker table tr td.active:hover,fieldset[disabled] .datepicker table tr td.active:hover.active,fieldset[disabled] .datepicker table tr td.active:hover:active,fieldset[disabled] .datepicker table tr td.active:hover:focus,fieldset[disabled] .datepicker table tr td.active:hover:hover{background-color:#428bca;border-color:#357ebd}.datepicker table tr td span{display:block;width:23%;height:54px;line-height:54px;float:left;margin:1%;cursor:pointer;border-radius:4px}.datepicker table tr td span:hover{background:#eee}.datepicker table tr td span.disabled,.datepicker table tr td span.disabled:hover{background:0 0;color:#999;cursor:default}.datepicker table tr td span.active,.datepicker table tr td span.active.disabled,.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active:hover{color:#fff;background-color:#428bca;border-color:#357ebd;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td span.active.active,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active.disabled:focus,.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active.disabled:hover.active,.datepicker table tr td span.active.disabled:hover:active,.datepicker table tr td span.active.disabled:hover:focus,.datepicker table tr td span.active.disabled:hover:hover,.datepicker table tr td span.active:active,.datepicker table tr td span.active:focus,.datepicker table tr td span.active:hover,.datepicker table tr td span.active:hover.active,.datepicker table tr td span.active:hover:active,.datepicker table tr td span.active:hover:focus,.datepicker table tr td span.active:hover:hover,.open .dropdown-toggle.datepicker table tr td span.active,.open .dropdown-toggle.datepicker table tr td span.active.disabled,.open .dropdown-toggle.datepicker table tr td span.active.disabled:hover,.open .dropdown-toggle.datepicker table tr td span.active:hover{color:#fff;background-color:rgba(190,190,190,.76);border-color:rgba(190,190,190,.76)}.datepicker table tr td span.active.active,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active.disabled:hover.active,.datepicker table tr td span.active.disabled:hover:active,.datepicker table tr td span.active:active,.datepicker table tr td span.active:hover.active,.datepicker table tr td span.active:hover:active,.open .dropdown-toggle.datepicker table tr td span.active,.open .dropdown-toggle.datepicker table tr td span.active.disabled,.open .dropdown-toggle.datepicker table tr td span.active.disabled:hover,.open .dropdown-toggle.datepicker table tr td span.active:hover{background-image:none}.datepicker table tr td span.active.disabled,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active.disabled.disabled,.datepicker table tr td span.active.disabled.disabled.active,.datepicker table tr td span.active.disabled.disabled:active,.datepicker table tr td span.active.disabled.disabled:focus,.datepicker table tr td span.active.disabled.disabled:hover,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active.disabled:focus,.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active.disabled:hover.disabled,.datepicker table tr td span.active.disabled:hover.disabled.active,.datepicker table tr td span.active.disabled:hover.disabled:active,.datepicker table tr td span.active.disabled:hover.disabled:focus,.datepicker table tr td span.active.disabled:hover.disabled:hover,.datepicker table tr td span.active.disabled:hover[disabled],.datepicker table tr td span.active.disabled:hover[disabled].active,.datepicker table tr td span.active.disabled:hover[disabled]:active,.datepicker table tr td span.active.disabled:hover[disabled]:focus,.datepicker table tr td span.active.disabled:hover[disabled]:hover,.datepicker table tr td span.active.disabled[disabled],.datepicker table tr td span.active.disabled[disabled].active,.datepicker table tr td span.active.disabled[disabled]:active,.datepicker table tr td span.active.disabled[disabled]:focus,.datepicker table tr td span.active.disabled[disabled]:hover,.datepicker table tr td span.active:hover.disabled,.datepicker table tr td span.active:hover.disabled.active,.datepicker table tr td span.active:hover.disabled:active,.datepicker table tr td span.active:hover.disabled:focus,.datepicker table tr td span.active:hover.disabled:hover,.datepicker table tr td span.active:hover[disabled],.datepicker table tr td span.active:hover[disabled].active,.datepicker table tr td span.active:hover[disabled]:active,.datepicker table tr td span.active:hover[disabled]:focus,.datepicker table tr td span.active:hover[disabled]:hover,.datepicker table tr td span.active[disabled],.datepicker table tr td span.active[disabled].active,.datepicker table tr td span.active[disabled]:active,.datepicker table tr td span.active[disabled]:focus,.datepicker table tr td span.active[disabled]:hover,fieldset[disabled] .datepicker table tr td span.active,fieldset[disabled] .datepicker table tr td span.active.active,fieldset[disabled] .datepicker table tr td span.active.disabled,fieldset[disabled] .datepicker table tr td span.active.disabled.active,fieldset[disabled] .datepicker table tr td span.active.disabled:active,fieldset[disabled] .datepicker table tr td span.active.disabled:focus,fieldset[disabled] .datepicker table tr td span.active.disabled:hover,fieldset[disabled] .datepicker table tr td span.active.disabled:hover.active,fieldset[disabled] .datepicker table tr td span.active.disabled:hover:active,fieldset[disabled] .datepicker table tr td span.active.disabled:hover:focus,fieldset[disabled] .datepicker table tr td span.active.disabled:hover:hover,fieldset[disabled] .datepicker table tr td span.active:active,fieldset[disabled] .datepicker table tr td span.active:focus,fieldset[disabled] .datepicker table tr td span.active:hover,fieldset[disabled] .datepicker table tr td span.active:hover.active,fieldset[disabled] .datepicker table tr td span.active:hover:active,fieldset[disabled] .datepicker table tr td span.active:hover:focus,fieldset[disabled] .datepicker table tr td span.active:hover:hover{background-color:#428bca;border-color:#357ebd}.datepicker table tr td span.new,.datepicker table tr td span.old{color:#999}.datepicker .datepicker-switch{width:145px}.datepicker tfoot tr th,.datepicker thead tr:first-child th{cursor:pointer}.datepicker tfoot tr th:hover,.datepicker thead tr:first-child th:hover{background:#eee}.datepicker .cw{font-size:10px;width:12px;padding:0 2px 0 5px;vertical-align:middle}.datepicker thead tr:first-child .cw{cursor:default;background-color:transparent}.input-group.date .input-group-addon{cursor:pointer}.input-daterange{width:100%}.input-daterange input{text-align:center}.input-daterange input:first-child{border-radius:3px 0 0 3px}.input-daterange input:last-child{border-radius:0 3px 3px 0}.input-daterange .input-group-addon{width:auto;min-width:16px;padding:4px 5px;font-weight:400;line-height:1.42857143;text-align:center;text-shadow:0 1px 0 #fff;vertical-align:middle;background-color:#eee;border:solid #ccc;border-width:1px 0;margin-left:-5px;margin-right:-5px}.datepicker td.day{padding:5px!important}.datepicker thead{line-height:2.2;font-size:15px}.datepicker .table-condensed{border:none;width:100%}
 
public/css/yikes-inc-easy-mailchimp-extender-public.min.css CHANGED
@@ -1,2 +1 @@
1
- .yikes-easy-mc-form{display:block;width:100%}.yikes-easy-mailchimp-edit-form-link{display:block;margin-bottom:1em}.yikes-easy-mc-form.yikes-mailchimp-form-inline{display:inline-block;width:100%}.yikes-easy-mc-form input[type=text],.yikes-easy-mc-form input[type=url],.yikes-easy-mc-form input[type=email],.yikes-easy-mc-form input[type=number],.yikes-easy-mc-form select{padding:.5278em;background-color:#F1F1F1;border:2px solid rgba(51,51,51,.1);-moz-box-sizing:border-box;margin-bottom:8px}.yikes-easy-mc-form input[type=text]:focus,.yikes-easy-mc-form input[type=url]:focus,.yikes-easy-mc-form input[type=email]:focus,.yikes-easy-mc-form input[type=number]:focus,.yikes-easy-mc-form select:focus{outline:rgba(51,51,51,.3) solid 2px}.datepicker.datepicker-dropdown.dropdown-menu.datepicker-orient-left.datepicker-orient-top{min-width:258px}.yikes-easy-mc-form .yikes-easy-mc-submit-button{display:block;width:100%;margin-top:.5em;min-height:40px;padding:10px;cursor:pointer}.yikes-easy-mc-form .yikes-easy-mc-submit-button.admin-logged-in{margin-bottom:1em}.yikes-easy-mc-form .submit-button-inline-label{width:20%;min-width:90px;float:left}.yikes-easy-mc-form .submit-button-inline-label .yikes-easy-mc-submit-button{margin-top:0;margin-bottom:.5em}.yikes-easy-mc-form .form-field-description{display:block;margin-top:-.25em;margin-bottom:.75em;font-style:italic}.yikes-easy-mc-form label>.form-field-description{display:block;margin-bottom:5px;font-style:italic}.yikes-easy-mc-error-message{color:rgba(216,48,57,.87);background:#FFBABA;padding:12px;position:relative}.yikes-easy-mc-success-message{color:#4F8A10;background:#DFF2BF;padding:12px;position:relative}.yikes-easy-mc-form .field-no-label,.yikes-easy-mc-form label{display:inline-block;margin-bottom:.5em;width:100%}p.yikes-mailchimp-required-interest-group-error{color:rgba(216,48,57,.87);margin:8px 0}.yikes-easy-mc-form input[type=text],.yikes-easy-mc-form input[type=url],.yikes-easy-mc-form input[type=email],.yikes-easy-mc-form input[type=number],.yikes-easy-mc-form input[type=password],.yikes-easy-mc-form select,.yikes-easy-mc-form textarea{box-sizing:border-box;display:block;width:100%;max-width:100%}.yikes-easy-mc-form .yikes-easy-mc-submit-button-image{padding:0;width:16%;min-width:140px;max-width:200px}.yikes-easy-mc-form .submit-button-inline-label .yikes-easy-mc-submit-button-image{width:100%;max-width:100%}.checkbox-parent-label{width:100%;display:block}.yikes-easy-mc-form .yikes-easy-mc-checkbox-label{display:inline-block}.mailchimp-field-hidden,.yikes-easy-mc-display-none{display:none!important}.yikes-easy-mc-text-align-right{text-align:right}#yikes-mailchimp-container .yikes-form-title{margin-top:0}.yikes-mailchimp-disclaimer-text{display:block;margin-top:1em}.update-email-preloader{position:absolute;top:40%;left:0;right:0;bottom:0;margin:0 auto}.g-recaptcha{transform:scale(.81);-webkit-transform:scale(.81);transform-origin:0 0;-webkit-transform-origin:0 0;margin:7px 0 -3px}@media screen and (max-height:575px){#rc-imageselect,.g-recaptcha{transform:scale(.81);-webkit-transform:scale(.81);transform-origin:0 0;-webkit-transform-origin:0 0}}.yikes-easy-mc-form label.option-inline>label{display:inline-block;float:left;width:auto!important;margin-right:15px}.yikes-easy-mc-form label.option-height-25{height:25px}.yikes-easy-mc-form label.option-height-50{height:50px}.yikes-easy-mc-form label.option-height-75{height:75px}.yikes-easy-mc-form label.option-height-100{height:100px}.yikes-easy-mc-form label.option-height-125{height:125px}.yikes-easy-mc-form label.option-height-150{height:150px}.yikes-easy-mc-form label.option-2-col>label{display:inline-block;float:left;width:50%}.yikes-easy-mc-form label.option-3-col>label{display:inline-block;float:left;width:33%}.yikes-easy-mc-form label.option-4-col>label{display:inline-block;float:left;width:25%}.yikes-easy-mc-form input.field-left-half,.yikes-easy-mc-form label.field-left-half{width:48%;float:left;margin-right:2%}.yikes-easy-mc-form input.field-right-half,.yikes-easy-mc-form label.field-right-half{width:48%;float:right;margin-left:2%}.yikes-easy-mc-form input.field-third,.yikes-easy-mc-form label.field-third{width:32%;float:left;margin-right:1.33333%}@media only screen and (max-width:525px){.yikes-easy-mc-form input.field-left-half,.yikes-easy-mc-form input.field-right-half,.yikes-easy-mc-form label.field-left-half,.yikes-easy-mc-form label.field-right-half{width:100%}}@media only screen and (max-width:955px){.yikes-easy-mc-form input.field-third:nth-child(odd),.yikes-easy-mc-form label.field-third:nth-child(odd){width:48%;float:left;margin-right:2%}.yikes-easy-mc-form input.field-third:nth-child(even),.yikes-easy-mc-form label.field-third:nth-child(even){width:48%;float:right;margin-left:0}}@media only screen and (max-width:525px){.yikes-easy-mc-form input.field-third,.yikes-easy-mc-form label.field-third{width:100%!important;margin-right:0;margin-left:0;float:none}.datepicker.datepicker-dropdown.dropdown-menu.datepicker-orient-left.datepicker-orient-top{min-width:84%}}
2
- /*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInlpa2VzLWluYy1lYXN5LW1haWxjaGltcC1leHRlbmRlci1wdWJsaWMubWluLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQkFBb0IsY0FBYyxVQUFVLENBQUMscUNBQXFDLGNBQWMsaUJBQWlCLENBQUMsZ0RBQWdELHFCQUFxQixVQUFVLENBQUMsaUxBQWlMLGdCQUFnQix5QkFBeUIsbUNBQW1DLDJCQUEyQixpQkFBaUIsQ0FBQywrTUFBK00sbUNBQW1DLENBQUMsMkZBQTJGLGVBQWUsQ0FBQyxpREFBaUQsY0FBYyxXQUFXLGdCQUFnQixnQkFBZ0IsYUFBYSxjQUFjLENBQUMsaUVBQWlFLGlCQUFpQixDQUFDLGdEQUFnRCxVQUFVLGVBQWUsVUFBVSxDQUFDLDZFQUE2RSxhQUFhLGtCQUFrQixDQUFDLDRDQUE0QyxjQUFjLGtCQUFrQixvQkFBb0IsaUJBQWlCLENBQUMsa0RBQWtELGNBQWMsa0JBQWtCLGlCQUFpQixDQUFDLDZCQUE2QiwwQkFBMEIsbUJBQW1CLGFBQWEsaUJBQWlCLENBQUMsK0JBQStCLGNBQWMsbUJBQW1CLGFBQWEsaUJBQWlCLENBQUMsOERBQThELHFCQUFxQixtQkFBbUIsVUFBVSxDQUFDLGdEQUFnRCwwQkFBMEIsWUFBWSxDQUFDLHVQQUF1UCxzQkFBc0IsY0FBYyxXQUFXLGNBQWMsQ0FBQyx1REFBdUQsVUFBVSxVQUFVLGdCQUFnQixlQUFlLENBQUMsbUZBQW1GLFdBQVcsY0FBYyxDQUFDLHVCQUF1QixXQUFXLGFBQWEsQ0FBQyxrREFBa0Qsb0JBQW9CLENBQUMsb0RBQW9ELHNCQUFzQixDQUFDLGdDQUFnQyxnQkFBZ0IsQ0FBQyw2Q0FBNkMsWUFBWSxDQUFDLGlDQUFpQyxjQUFjLGNBQWMsQ0FBQyx3QkFBd0Isa0JBQWtCLFFBQVEsT0FBTyxRQUFRLFNBQVMsYUFBYSxDQUFDLGFBQWEscUJBQXFCLDZCQUE2QixxQkFBcUIsNkJBQTZCLGlCQUFpQixDQUFDLHFDQUFxQyw2QkFBNkIscUJBQXFCLDZCQUE2QixxQkFBcUIsNEJBQTRCLENBQUMsQ0FBQyw4Q0FBOEMscUJBQXFCLFdBQVcscUJBQXFCLGlCQUFpQixDQUFDLDJDQUEyQyxXQUFXLENBQUMsMkNBQTJDLFdBQVcsQ0FBQywyQ0FBMkMsV0FBVyxDQUFDLDRDQUE0QyxZQUFZLENBQUMsNENBQTRDLFlBQVksQ0FBQyw0Q0FBNEMsWUFBWSxDQUFDLDZDQUE2QyxxQkFBcUIsV0FBVyxTQUFTLENBQUMsNkNBQTZDLHFCQUFxQixXQUFXLFNBQVMsQ0FBQyw2Q0FBNkMscUJBQXFCLFdBQVcsU0FBUyxDQUFDLG9GQUFvRixVQUFVLFdBQVcsZUFBZSxDQUFDLHNGQUFzRixVQUFVLFlBQVksY0FBYyxDQUFDLDRFQUE0RSxVQUFVLFdBQVcscUJBQXFCLENBQUMseUNBQXlDLDBLQUEwSyxVQUFVLENBQUMsQ0FBQyx5Q0FBeUMsMEdBQTBHLFVBQVUsV0FBVyxlQUFlLENBQUMsNEdBQTRHLFVBQVUsWUFBWSxhQUFhLENBQUMsQ0FBQyx5Q0FBeUMsNEVBQTRFLHFCQUFxQixlQUFlLGNBQWMsVUFBVSxDQUFDLDJGQUEyRixhQUFhLENBQUMsQ0FBQyIsImZpbGUiOiJ5aWtlcy1pbmMtZWFzeS1tYWlsY2hpbXAtZXh0ZW5kZXItcHVibGljLm1pbi5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIueWlrZXMtZWFzeS1tYy1mb3Jte2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJX0ueWlrZXMtZWFzeS1tYWlsY2hpbXAtZWRpdC1mb3JtLWxpbmt7ZGlzcGxheTpibG9jazttYXJnaW4tYm90dG9tOjFlbX0ueWlrZXMtZWFzeS1tYy1mb3JtLnlpa2VzLW1haWxjaGltcC1mb3JtLWlubGluZXtkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDoxMDAlfS55aWtlcy1lYXN5LW1jLWZvcm0gaW5wdXRbdHlwZT10ZXh0XSwueWlrZXMtZWFzeS1tYy1mb3JtIGlucHV0W3R5cGU9dXJsXSwueWlrZXMtZWFzeS1tYy1mb3JtIGlucHV0W3R5cGU9ZW1haWxdLC55aWtlcy1lYXN5LW1jLWZvcm0gaW5wdXRbdHlwZT1udW1iZXJdLC55aWtlcy1lYXN5LW1jLWZvcm0gc2VsZWN0e3BhZGRpbmc6LjUyNzhlbTtiYWNrZ3JvdW5kLWNvbG9yOiNGMUYxRjE7Ym9yZGVyOjJweCBzb2xpZCByZ2JhKDUxLDUxLDUxLC4xKTstbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDttYXJnaW4tYm90dG9tOjhweH0ueWlrZXMtZWFzeS1tYy1mb3JtIGlucHV0W3R5cGU9dGV4dF06Zm9jdXMsLnlpa2VzLWVhc3ktbWMtZm9ybSBpbnB1dFt0eXBlPXVybF06Zm9jdXMsLnlpa2VzLWVhc3ktbWMtZm9ybSBpbnB1dFt0eXBlPWVtYWlsXTpmb2N1cywueWlrZXMtZWFzeS1tYy1mb3JtIGlucHV0W3R5cGU9bnVtYmVyXTpmb2N1cywueWlrZXMtZWFzeS1tYy1mb3JtIHNlbGVjdDpmb2N1c3tvdXRsaW5lOnJnYmEoNTEsNTEsNTEsLjMpIHNvbGlkIDJweH0uZGF0ZXBpY2tlci5kYXRlcGlja2VyLWRyb3Bkb3duLmRyb3Bkb3duLW1lbnUuZGF0ZXBpY2tlci1vcmllbnQtbGVmdC5kYXRlcGlja2VyLW9yaWVudC10b3B7bWluLXdpZHRoOjI1OHB4fS55aWtlcy1lYXN5LW1jLWZvcm0gLnlpa2VzLWVhc3ktbWMtc3VibWl0LWJ1dHRvbntkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCU7bWFyZ2luLXRvcDouNWVtO21pbi1oZWlnaHQ6NDBweDtwYWRkaW5nOjEwcHg7Y3Vyc29yOnBvaW50ZXJ9Lnlpa2VzLWVhc3ktbWMtZm9ybSAueWlrZXMtZWFzeS1tYy1zdWJtaXQtYnV0dG9uLmFkbWluLWxvZ2dlZC1pbnttYXJnaW4tYm90dG9tOjFlbX0ueWlrZXMtZWFzeS1tYy1mb3JtIC5zdWJtaXQtYnV0dG9uLWlubGluZS1sYWJlbHt3aWR0aDoyMCU7bWluLXdpZHRoOjkwcHg7ZmxvYXQ6bGVmdH0ueWlrZXMtZWFzeS1tYy1mb3JtIC5zdWJtaXQtYnV0dG9uLWlubGluZS1sYWJlbCAueWlrZXMtZWFzeS1tYy1zdWJtaXQtYnV0dG9ue21hcmdpbi10b3A6MDttYXJnaW4tYm90dG9tOi41ZW19Lnlpa2VzLWVhc3ktbWMtZm9ybSAuZm9ybS1maWVsZC1kZXNjcmlwdGlvbntkaXNwbGF5OmJsb2NrO21hcmdpbi10b3A6LS4yNWVtO21hcmdpbi1ib3R0b206Ljc1ZW07Zm9udC1zdHlsZTppdGFsaWN9Lnlpa2VzLWVhc3ktbWMtZm9ybSBsYWJlbD4uZm9ybS1maWVsZC1kZXNjcmlwdGlvbntkaXNwbGF5OmJsb2NrO21hcmdpbi1ib3R0b206NXB4O2ZvbnQtc3R5bGU6aXRhbGljfS55aWtlcy1lYXN5LW1jLWVycm9yLW1lc3NhZ2V7Y29sb3I6cmdiYSgyMTYsNDgsNTcsLjg3KTtiYWNrZ3JvdW5kOiNGRkJBQkE7cGFkZGluZzoxMnB4O3Bvc2l0aW9uOnJlbGF0aXZlfS55aWtlcy1lYXN5LW1jLXN1Y2Nlc3MtbWVzc2FnZXtjb2xvcjojNEY4QTEwO2JhY2tncm91bmQ6I0RGRjJCRjtwYWRkaW5nOjEycHg7cG9zaXRpb246cmVsYXRpdmV9Lnlpa2VzLWVhc3ktbWMtZm9ybSAuZmllbGQtbm8tbGFiZWwsLnlpa2VzLWVhc3ktbWMtZm9ybSBsYWJlbHtkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW4tYm90dG9tOi41ZW07d2lkdGg6MTAwJX1wLnlpa2VzLW1haWxjaGltcC1yZXF1aXJlZC1pbnRlcmVzdC1ncm91cC1lcnJvcntjb2xvcjpyZ2JhKDIxNiw0OCw1NywuODcpO21hcmdpbjo4cHggMH0ueWlrZXMtZWFzeS1tYy1mb3JtIGlucHV0W3R5cGU9dGV4dF0sLnlpa2VzLWVhc3ktbWMtZm9ybSBpbnB1dFt0eXBlPXVybF0sLnlpa2VzLWVhc3ktbWMtZm9ybSBpbnB1dFt0eXBlPWVtYWlsXSwueWlrZXMtZWFzeS1tYy1mb3JtIGlucHV0W3R5cGU9bnVtYmVyXSwueWlrZXMtZWFzeS1tYy1mb3JtIGlucHV0W3R5cGU9cGFzc3dvcmRdLC55aWtlcy1lYXN5LW1jLWZvcm0gc2VsZWN0LC55aWtlcy1lYXN5LW1jLWZvcm0gdGV4dGFyZWF7Ym94LXNpemluZzpib3JkZXItYm94O2Rpc3BsYXk6YmxvY2s7d2lkdGg6MTAwJTttYXgtd2lkdGg6MTAwJX0ueWlrZXMtZWFzeS1tYy1mb3JtIC55aWtlcy1lYXN5LW1jLXN1Ym1pdC1idXR0b24taW1hZ2V7cGFkZGluZzowO3dpZHRoOjE2JTttaW4td2lkdGg6MTQwcHg7bWF4LXdpZHRoOjIwMHB4fS55aWtlcy1lYXN5LW1jLWZvcm0gLnN1Ym1pdC1idXR0b24taW5saW5lLWxhYmVsIC55aWtlcy1lYXN5LW1jLXN1Ym1pdC1idXR0b24taW1hZ2V7d2lkdGg6MTAwJTttYXgtd2lkdGg6MTAwJX0uY2hlY2tib3gtcGFyZW50LWxhYmVse3dpZHRoOjEwMCU7ZGlzcGxheTpibG9ja30ueWlrZXMtZWFzeS1tYy1mb3JtIC55aWtlcy1lYXN5LW1jLWNoZWNrYm94LWxhYmVse2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5tYWlsY2hpbXAtZmllbGQtaGlkZGVuLC55aWtlcy1lYXN5LW1jLWRpc3BsYXktbm9uZXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fS55aWtlcy1lYXN5LW1jLXRleHQtYWxpZ24tcmlnaHR7dGV4dC1hbGlnbjpyaWdodH0jeWlrZXMtbWFpbGNoaW1wLWNvbnRhaW5lciAueWlrZXMtZm9ybS10aXRsZXttYXJnaW4tdG9wOjB9Lnlpa2VzLW1haWxjaGltcC1kaXNjbGFpbWVyLXRleHR7ZGlzcGxheTpibG9jazttYXJnaW4tdG9wOjFlbX0udXBkYXRlLWVtYWlsLXByZWxvYWRlcntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6NDAlO2xlZnQ6MDtyaWdodDowO2JvdHRvbTowO21hcmdpbjowIGF1dG99LmctcmVjYXB0Y2hhe3RyYW5zZm9ybTpzY2FsZSguODEpOy13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKC44MSk7dHJhbnNmb3JtLW9yaWdpbjowIDA7LXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOjAgMDttYXJnaW46N3B4IDAgLTNweH1AbWVkaWEgc2NyZWVuIGFuZCAobWF4LWhlaWdodDo1NzVweCl7I3JjLWltYWdlc2VsZWN0LC5nLXJlY2FwdGNoYXt0cmFuc2Zvcm06c2NhbGUoLjgxKTstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSguODEpO3RyYW5zZm9ybS1vcmlnaW46MCAwOy13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjowIDB9fS55aWtlcy1lYXN5LW1jLWZvcm0gbGFiZWwub3B0aW9uLWlubGluZT5sYWJlbHtkaXNwbGF5OmlubGluZS1ibG9jaztmbG9hdDpsZWZ0O3dpZHRoOmF1dG8haW1wb3J0YW50O21hcmdpbi1yaWdodDoxNXB4fS55aWtlcy1lYXN5LW1jLWZvcm0gbGFiZWwub3B0aW9uLWhlaWdodC0yNXtoZWlnaHQ6MjVweH0ueWlrZXMtZWFzeS1tYy1mb3JtIGxhYmVsLm9wdGlvbi1oZWlnaHQtNTB7aGVpZ2h0OjUwcHh9Lnlpa2VzLWVhc3ktbWMtZm9ybSBsYWJlbC5vcHRpb24taGVpZ2h0LTc1e2hlaWdodDo3NXB4fS55aWtlcy1lYXN5LW1jLWZvcm0gbGFiZWwub3B0aW9uLWhlaWdodC0xMDB7aGVpZ2h0OjEwMHB4fS55aWtlcy1lYXN5LW1jLWZvcm0gbGFiZWwub3B0aW9uLWhlaWdodC0xMjV7aGVpZ2h0OjEyNXB4fS55aWtlcy1lYXN5LW1jLWZvcm0gbGFiZWwub3B0aW9uLWhlaWdodC0xNTB7aGVpZ2h0OjE1MHB4fS55aWtlcy1lYXN5LW1jLWZvcm0gbGFiZWwub3B0aW9uLTItY29sPmxhYmVse2Rpc3BsYXk6aW5saW5lLWJsb2NrO2Zsb2F0OmxlZnQ7d2lkdGg6NTAlfS55aWtlcy1lYXN5LW1jLWZvcm0gbGFiZWwub3B0aW9uLTMtY29sPmxhYmVse2Rpc3BsYXk6aW5saW5lLWJsb2NrO2Zsb2F0OmxlZnQ7d2lkdGg6MzMlfS55aWtlcy1lYXN5LW1jLWZvcm0gbGFiZWwub3B0aW9uLTQtY29sPmxhYmVse2Rpc3BsYXk6aW5saW5lLWJsb2NrO2Zsb2F0OmxlZnQ7d2lkdGg6MjUlfS55aWtlcy1lYXN5LW1jLWZvcm0gaW5wdXQuZmllbGQtbGVmdC1oYWxmLC55aWtlcy1lYXN5LW1jLWZvcm0gbGFiZWwuZmllbGQtbGVmdC1oYWxme3dpZHRoOjQ4JTtmbG9hdDpsZWZ0O21hcmdpbi1yaWdodDoyJX0ueWlrZXMtZWFzeS1tYy1mb3JtIGlucHV0LmZpZWxkLXJpZ2h0LWhhbGYsLnlpa2VzLWVhc3ktbWMtZm9ybSBsYWJlbC5maWVsZC1yaWdodC1oYWxme3dpZHRoOjQ4JTtmbG9hdDpyaWdodDttYXJnaW4tbGVmdDoyJX0ueWlrZXMtZWFzeS1tYy1mb3JtIGlucHV0LmZpZWxkLXRoaXJkLC55aWtlcy1lYXN5LW1jLWZvcm0gbGFiZWwuZmllbGQtdGhpcmR7d2lkdGg6MzIlO2Zsb2F0OmxlZnQ7bWFyZ2luLXJpZ2h0OjEuMzMzMzMlfUBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDo1MjVweCl7Lnlpa2VzLWVhc3ktbWMtZm9ybSBpbnB1dC5maWVsZC1sZWZ0LWhhbGYsLnlpa2VzLWVhc3ktbWMtZm9ybSBpbnB1dC5maWVsZC1yaWdodC1oYWxmLC55aWtlcy1lYXN5LW1jLWZvcm0gbGFiZWwuZmllbGQtbGVmdC1oYWxmLC55aWtlcy1lYXN5LW1jLWZvcm0gbGFiZWwuZmllbGQtcmlnaHQtaGFsZnt3aWR0aDoxMDAlfX1AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6OTU1cHgpey55aWtlcy1lYXN5LW1jLWZvcm0gaW5wdXQuZmllbGQtdGhpcmQ6bnRoLWNoaWxkKG9kZCksLnlpa2VzLWVhc3ktbWMtZm9ybSBsYWJlbC5maWVsZC10aGlyZDpudGgtY2hpbGQob2RkKXt3aWR0aDo0OCU7ZmxvYXQ6bGVmdDttYXJnaW4tcmlnaHQ6MiV9Lnlpa2VzLWVhc3ktbWMtZm9ybSBpbnB1dC5maWVsZC10aGlyZDpudGgtY2hpbGQoZXZlbiksLnlpa2VzLWVhc3ktbWMtZm9ybSBsYWJlbC5maWVsZC10aGlyZDpudGgtY2hpbGQoZXZlbil7d2lkdGg6NDglO2Zsb2F0OnJpZ2h0O21hcmdpbi1sZWZ0OjB9fUBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDo1MjVweCl7Lnlpa2VzLWVhc3ktbWMtZm9ybSBpbnB1dC5maWVsZC10aGlyZCwueWlrZXMtZWFzeS1tYy1mb3JtIGxhYmVsLmZpZWxkLXRoaXJke3dpZHRoOjEwMCUhaW1wb3J0YW50O21hcmdpbi1yaWdodDowO21hcmdpbi1sZWZ0OjA7ZmxvYXQ6bm9uZX0uZGF0ZXBpY2tlci5kYXRlcGlja2VyLWRyb3Bkb3duLmRyb3Bkb3duLW1lbnUuZGF0ZXBpY2tlci1vcmllbnQtbGVmdC5kYXRlcGlja2VyLW9yaWVudC10b3B7bWluLXdpZHRoOjg0JX19Il19 */
1
+ .yikes-easy-mc-form{display:block;width:100%}.yikes-easy-mailchimp-edit-form-link{display:block;margin-bottom:1em}.yikes-easy-mc-form.yikes-mailchimp-form-inline{display:inline-block;width:100%}.yikes-easy-mc-form input[type=text],.yikes-easy-mc-form input[type=url],.yikes-easy-mc-form input[type=email],.yikes-easy-mc-form input[type=number],.yikes-easy-mc-form select{padding:.5278em;background-color:#F1F1F1;border:2px solid rgba(51,51,51,.1);-moz-box-sizing:border-box;margin-bottom:8px}.yikes-easy-mc-form input[type=text]:focus,.yikes-easy-mc-form input[type=url]:focus,.yikes-easy-mc-form input[type=email]:focus,.yikes-easy-mc-form input[type=number]:focus,.yikes-easy-mc-form select:focus{outline:rgba(51,51,51,.3) solid 2px}.datepicker.datepicker-dropdown.dropdown-menu.datepicker-orient-left.datepicker-orient-top{min-width:258px}.yikes-easy-mc-form .yikes-easy-mc-submit-button{display:block;width:100%;margin-top:.5em;min-height:40px;padding:10px;cursor:pointer}.yikes-easy-mc-form .yikes-easy-mc-submit-button.admin-logged-in{margin-bottom:1em}.yikes-easy-mc-form .submit-button-inline-label{width:20%;min-width:90px;float:left}.yikes-easy-mc-form .submit-button-inline-label .yikes-easy-mc-submit-button{margin-top:0;margin-bottom:.5em}.yikes-easy-mc-form .form-field-description{display:block;margin-top:-.25em;margin-bottom:.75em;font-style:italic}.yikes-easy-mc-form label>.form-field-description{display:block;margin-bottom:5px;font-style:italic}.yikes-easy-mc-error-message{color:rgba(216,48,57,.87);background:#FFBABA;padding:12px;position:relative}.yikes-easy-mc-success-message{color:#4F8A10;background:#DFF2BF;padding:12px;position:relative}.yikes-easy-mc-form .field-no-label,.yikes-easy-mc-form label{display:inline-block;margin-bottom:.5em;width:100%}p.yikes-mailchimp-required-interest-group-error{color:rgba(216,48,57,.87);margin:8px 0}.yikes-easy-mc-form input[type=text],.yikes-easy-mc-form input[type=url],.yikes-easy-mc-form input[type=email],.yikes-easy-mc-form input[type=number],.yikes-easy-mc-form input[type=password],.yikes-easy-mc-form select,.yikes-easy-mc-form textarea{box-sizing:border-box;display:block;width:100%;max-width:100%}.yikes-easy-mc-form .yikes-easy-mc-submit-button-image{padding:0;width:16%;min-width:140px;max-width:200px}.yikes-easy-mc-form .submit-button-inline-label .yikes-easy-mc-submit-button-image{width:100%;max-width:100%}.checkbox-parent-label{width:100%;display:block}.yikes-easy-mc-form .yikes-easy-mc-checkbox-label{display:inline-block}.mailchimp-field-hidden,.yikes-easy-mc-display-none{display:none!important}.yikes-easy-mc-text-align-right{text-align:right}#yikes-mailchimp-container .yikes-form-title{margin-top:0}.yikes-mailchimp-disclaimer-text{display:block;margin-top:1em}.update-email-preloader{position:absolute;top:40%;left:0;right:0;bottom:0;margin:0 auto}.g-recaptcha{transform:scale(.81);-webkit-transform:scale(.81);transform-origin:0 0;-webkit-transform-origin:0 0;margin:7px 0 -3px}@media screen and (max-height:575px){#rc-imageselect,.g-recaptcha{transform:scale(.81);-webkit-transform:scale(.81);transform-origin:0 0;-webkit-transform-origin:0 0}}.yikes-easy-mc-form label.option-inline>label{display:inline-block;float:left;width:auto!important;margin-right:15px}.yikes-easy-mc-form label.option-height-25{height:25px}.yikes-easy-mc-form label.option-height-50{height:50px}.yikes-easy-mc-form label.option-height-75{height:75px}.yikes-easy-mc-form label.option-height-100{height:100px}.yikes-easy-mc-form label.option-height-125{height:125px}.yikes-easy-mc-form label.option-height-150{height:150px}.yikes-easy-mc-form label.option-2-col>label{display:inline-block;float:left;width:50%}.yikes-easy-mc-form label.option-3-col>label{display:inline-block;float:left;width:33%}.yikes-easy-mc-form label.option-4-col>label{display:inline-block;float:left;width:25%}.yikes-easy-mc-form input.field-left-half,.yikes-easy-mc-form label.field-left-half{width:48%;float:left;margin-right:2%}.yikes-easy-mc-form input.field-right-half,.yikes-easy-mc-form label.field-right-half{width:48%;float:right;margin-left:2%}.yikes-easy-mc-form input.field-third,.yikes-easy-mc-form label.field-third{width:32%;float:left;margin-right:1.33333%}@media only screen and (max-width:525px){.yikes-easy-mc-form input.field-left-half,.yikes-easy-mc-form input.field-right-half,.yikes-easy-mc-form label.field-left-half,.yikes-easy-mc-form label.field-right-half{width:100%}}@media only screen and (max-width:955px){.yikes-easy-mc-form input.field-third:nth-child(odd),.yikes-easy-mc-form label.field-third:nth-child(odd){width:48%;float:left;margin-right:2%}.yikes-easy-mc-form input.field-third:nth-child(even),.yikes-easy-mc-form label.field-third:nth-child(even){width:48%;float:right;margin-left:0}}@media only screen and (max-width:525px){.yikes-easy-mc-form input.field-third,.yikes-easy-mc-form label.field-third{width:100%!important;margin-right:0;margin-left:0;float:none}.datepicker.datepicker-dropdown.dropdown-menu.datepicker-orient-left.datepicker-orient-top{min-width:84%}}
 
readme.txt CHANGED
@@ -1 +1,1025 @@
1
- === Easy Forms for MailChimp ===
2
- added `stripslashes()` to the following settings fields :
3
- Updated readme FAQ section
4
- added `stripslashes()` to the following settings fields :
5
- Updated readme FAQ section
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ === Easy Forms for MailChimp ===
2
+ Contributors: yikesinc, eherman24, liljimmi, hiwhatsup
3
+ Donate link: https://yikesplugins.com/?utm_source=wp_plugin_repo&utm_medium=donate_link&utm_campaign=easy_forms_for_mailchimp
4
+ Tags: MailChimp, MailChimp forms, MailChimp lists, opt-in forms, sign up form, MailChimp, email, forms, mailing lists, marketing, newsletter, sign up
5
+ Requires at least: 4.0
6
+ Tested up to: 4.5
7
+ Stable tag: 6.0.5.5
8
+ License: GPLv2 or later
9
+ License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
+
11
+ The ultimate MailChimp WordPress plugin. Easily build unlimited forms for your MailChimp lists, add them to your site and track subscriber activity.
12
+
13
+ == Description ==
14
+
15
+ Easy Forms for MailChimp allows you to add unlimited MailChimp sign up forms to your WordPress site. You can add forms to posts, pages, sidebars and other widgetized areas. Your MailChimp API Key connects your site to your MailChimp account and pulls in all of your MailChimp list information.
16
+
17
+ MailChimp List statistics and user activity can be viewed right from your dashboard. From there, you can manage users and list settings.
18
+
19
+ You can also extend the plugin's functionality with our [free and paid add-ons](https://yikesplugins.com/?utm_source=wp_plugin_repo&utm_medium=link&utm_campaign=easy_forms_for_mailchimp).
20
+
21
+ **Add a MailChimp form to a site in a minute and a half**
22
+
23
+ https://www.youtube.com/watch?v=NRZbW-Da1XA
24
+
25
+ **Features**
26
+
27
+ * Build **unlimited** forms for any of your MailChimp lists with an easy-to-use admin, including multiple forms for the same list.
28
+ * Connect your website to your MailChimp account with a MailChimp API key and a click.
29
+ * Toggle inline forms with the click of a button.
30
+ * Schedule form visibility by date/time.
31
+ * Limit opt-ins by logged in users.
32
+ * Localized data/time pickers
33
+ * Duplicate forms with a click.
34
+ * Easily add MailChimp forms to any post or page with our custom editor button or with a shortcode.
35
+ * Toggle on/off AJAX functionality on a per form basis.
36
+ * Add MailChimp forms to widgetized areas with our custom widget.
37
+ * Allow users to sign up for MailChimp interest groups, or pre-check groups in a hidden field.
38
+ * Use our built-in CSS classes or add your own additional classes to form fields to easily style and customize forms.
39
+ * Customize the MailChimp submission button text.
40
+ * Shortcode available to display the number of subscribers on a given MailChimp list.
41
+ * Fully customize the success and error messages displayed back to the user.
42
+ * Quickly toggle between single or double opt-in.
43
+ * Disable or Enable the default MailChimp welcome email.
44
+ * Remove bogus subscribers from your MailChimp list through the admin interface.
45
+ * Allow existing subscribers to update their account info (**new** now including two factor authentication).
46
+ * Redirect users to another post or page after form submission.
47
+ * Enable Google reCAPTCHA protection on your forms.
48
+ * Import/Export all MailChimp forms and associated settings for use on other sites with Easy Forms for MailChimp installed.
49
+ * Seamless integration with core WordPress forms: comments and registration.
50
+ * Seamless integration with many popular third party plugins: WooCommerce, Easy Digital Downloads, BuddyPress, BbPress, Contact Form 7.
51
+ * View your MailChimp account activity like subscribes and unsubscribes.
52
+ * View your MailChimp list statistics and manage users and list settings.
53
+ * Advanced debugging to log MailChimp errors as they occur, for easy troubleshooting.
54
+ * Developer friendly! We've provided hooks and filters to allow developers to extend the plugin.
55
+ * Add-ons available to extend the core functionality of the plugin. [Check them out](https://yikesplugins.com/?utm_source=wp_plugin_repo&utm_medium=link&utm_campaign=easy_forms_for_mailchimp)!
56
+
57
+ **Integrations**
58
+
59
+ Add MailChimp opt-in checkboxes to the forms generated by these popular plugins.
60
+
61
+ * WooCommerce
62
+ * Easy Digital Downloads
63
+ * BuddyPress
64
+ * BbPress
65
+ * Contact Form 7
66
+
67
+ Instructions on how to use the plugin can be [found in our Knowledge Base](https://yikesplugins.com/support/knowledge-base/?utm_source=wp_plugin_repo&utm_medium=link&utm_campaign=easy_forms_for_mailchimp).
68
+
69
+ If you experience any problems, please submit a New Issue on our [Github Issue Tracker](https://github.com/yikesinc/yikes-inc-easy-mailchimp-extender/issues). We respond to issues regarding the free plugin within a week. For expedited help, [purchase one of our paid add-ons](https://yikesplugins.com/?utm_source=wp_plugin_repo&utm_medium=link&utm_campaign=easy_forms_for_mailchimp).
70
+
71
+ <br />
72
+
73
+ <em>Check out some of our [other plugins](https://yikesplugins.com/?utm_source=wp_plugin_repo&utm_medium=link&utm_campaign=easy_forms_for_mailchimp).</em>
74
+
75
+ == Installation ==
76
+
77
+ 1. Download the plugin .zip file and make note of where on your computer you downloaded it to.
78
+ 2. In the WordPress admin (yourdomain.com/wp-admin) go to Plugins > Add New or click the "Add New" button on the main plugins screen.
79
+ 3. On the following screen, click the "Upload Plugin" button.
80
+ 4. Browse your computer to where you downloaded the plugin .zip file, select it and click the "Install Now" button.
81
+ 5. After the plugin has successfully installed, click "Activate Plugin" and enjoy!
82
+
83
+ Visit [our Knowledge Base](https://yikesplugins.com/support/knowledge-base/how-to-install-the-plugin-2/?utm_source=wp_plugin_repo&utm_medium=link&utm_campaign=easy_forms_for_mailchimp) for more detailed installation instructions.
84
+
85
+ == Frequently Asked Questions ==
86
+
87
+ **All documentation can be found in [our Knowledge Base](https://yikesplugins.com/support/knowledge-base/?utm_source=wp_plugin_repo&utm_medium=link&utm_campaign=easy_forms_for_mailchimp).**
88
+
89
+ = Do I need a MailChimp account to use this plugin? =
90
+ Yes, you must have a MailChimp account and at least 1 list set up in order to use the plugin. You can register for one for free at [MailChimp](https://login.mailchimp.com/signup? "MailChimp").
91
+
92
+ = How does the plugin connect my MailChimp account to my site? =
93
+ Our plugin uses a MailChimp API Key to allow your site to communicate with your MailChimp account. After you enter your MailChimp API key into the plugin settings your site is connected to MailChimp and ready to make forms.
94
+
95
+ = How do I create a MailChimp API key? =
96
+ Go to the MailChimp article [About MailChimp API Keys](http://kb.mailchimp.com/accounts/management/about-api-keys) for detailed information on creating MailChimp API keys.
97
+
98
+ Step-by-step instructions from MailChimp:
99
+
100
+ 1. Click your profile name to expand the Account Panel, and choose Account.
101
+ 2. Click the Extras drop-down menu and choose MailChimp API keys.
102
+ 3. Copy an existing MailChimp API key or click the Create A Key button.
103
+ 4. Name your key descriptively, so you know what application uses that key.
104
+
105
+ Copy your MailChimp API key so you can paste it into the plugin General Settings.
106
+
107
+ = How do I change the submit button text? =
108
+ The submit button text can be customized to use any text you like. This is done via the shortcode. Please visit our How-to article [How do I change the submit button text](https://yikesplugins.com/support/knowledge-base/how-do-i-change-the-submit-button-text/) for step-by-step instructions.
109
+
110
+ = How do I add new fields to my form? =
111
+ The fields that are assigned to a list are managed on the MailChimp site. To add or remove fields you need to log in to your MailChimp account and manage them there.
112
+
113
+ Please read the MailChimp article [Manage List and Signup Form Fields](http://kb.mailchimp.com/lists/managing-subscribers/manage-list-and-signup-form-fields) to learn how to add and edit the fields for your lists.
114
+
115
+ After you’ve added fields, they may not show up immediately in our plugin’s Form Builder. Our plugin pulls the information from MailChimp and stores it for a period of time before pulling it again. To get the new information immediately you will need to clear the MailChimp API cache. Please read our article [API Cache Settings](https://yikesplugins.com/support/knowledge-base/api-cache-settings/) for instructions on how to clear the MailChimp API cache.
116
+
117
+ = How do I change the field labels? =
118
+ The text next to or above each field of a form is called a “label” and you may want to change them. For instance by default MailChimp uses “First” instead of “First Name” and you may want to change it to make more sense. These labels are controlled on the MailChimp end, you will need to log into your MailChimp account to edit them. Please read the MailChimp Knowledge Base article, [Manage List and Signup Form Fields](http://kb.mailchimp.com/lists/managing-subscribers/manage-list-and-signup-form-fields) for detailed info on how to edit field labels.
119
+
120
+ = I’m not seeing all my lists on the drop-down menu when I go to make a new form, why? =
121
+ Our plugin fetches your list information from MailChimp and stores it on your site in a cache. If you make changes to your MailChimp lists, our plugin will update your site with those changes within an hour. If you want it updated immediately (for instance if you add a new list), you can delete the MailChimp cache. Please read [our Knowledge Base Article](https://yikesplugins.com/support/knowledge-base/im-not-seeing-all-my-lists-on-the-drop-down-menu-when-i-go-to-make-a-new-form/?utm_source=wp_plugin_repo&utm_medium=link&utm_campaign=easy_forms_for_mailchimp) for more info.
122
+
123
+ = Is there a way to display the number of subscribers for a given list? =
124
+ Yes! You can use the shortcode, `[yikes-mailchimp-subscriber-count]` in the form description field to display the number of subscribers to that MailChimp list.
125
+
126
+ To display the count for a specific MailChimp list, you can use the `form="#"` or `list="#"` parameters. If using `form="#"` you should pass in a specific form ID, which will display the total number of subscribers associated with that form. If using `list="#"` you should pass in a MailChimp list ID.
127
+
128
+ = I want to use my own styles. Can I remove the styles bundled with this plugin? =
129
+ Yes, we've included a constant you can use to prevent our styles from loading, `YIKES_MAILCHIMP_EXCLUDE_STYLES`. For usage, please see [our Knowledge Base Article](https://yikesplugins.com/support/knowledge-base/how-do-i-deregister-the-styles-included-with-this-plugin/?utm_source=wp_plugin_repo&utm_medium=link&utm_campaign=easy_forms_for_mailchimp).
130
+
131
+ = Some of the characters in my form are being stored as ??? instead of in the correct format. =
132
+ You'll want to make sure that your database collation is set properly. The best collation setting for all web languages is UTF8. If you need help switching collation settings in your database, please see the following article from Media Temple: [Default MySQL character set and collation](https://mediatemple.net/community/products/dv/204403914/default-mysql-character-set-and-collation).
133
+
134
+ = I'm having trouble upgrading to version 6, what do I do? =
135
+ We want our users to have as smooth a transition as possible so we created [Guides to Updating](https://yikesplugins.com/support/knowledge-base/product/installation-easy-forms-for-mailchimp/?utm_source=wp_plugin_repo&utm_medium=link&utm_campaign=easy_forms_for_mailchimp). Please check them out if you are experiencing problems.
136
+
137
+ == Screenshots ==
138
+
139
+ 1. General Form Settings - Enter your MailChimp API key to connect your site to your MailChimp account
140
+ 2. Manage Forms Page - See all the forms you have created for your MailChimp lists and create new forms
141
+ 3. Form Editor Page - Build, edit and adjust the settings for your forms
142
+ 4. Form Field Options - Set a variety of options for each form field
143
+ 5. Form Opt-In and Submission Settings - Set the options for each form
144
+ 6. Account Overview Page - View your MailChimp account activity
145
+ 7. Integration Settings - Integrate MailChimp opt-in checkboxes with other forms
146
+ 8. reCAPTCHA Settings - Add a Google reCAPTCHA key
147
+ 9. Account Activity Dashboard Widget - View your MailChimp account activity
148
+ 10. MailChimp List Stats Dashboard Widget
149
+ 11. MailChimp List Information Screen
150
+ 12. Subscriber Details Screen
151
+ 13. MailChimp Form Widget
152
+ 14. MailChimp Form Widget in the Sidebar on Live Website
153
+ 15. Editor Button to easily add Forms to Page and Posts
154
+ 16. MailChimp Form on a Page on Live Website
155
+ 17. *New* Additional Form Settings
156
+ 18. *New* Inline Form on a Page on Live Website
157
+
158
+ == Other Notes ==
159
+
160
+ Alongside the default functionality of Easy Forms for MailChimp by YIKES we've included a number of hooks and filters to allow for a higher level of customization of your MailChimp forms.
161
+
162
+ For information and code examples on how to implement the hooks and filters provided by Easy Forms for MailChimp by YIKES, please see our [Developer Documentation in the Knowledge Base](https://yikesplugins.com/support/knowledge-base/product/developer-documentation/?utm_source=wp_plugin_repo&utm_medium=link&utm_campaign=easy_forms_for_mailchimp).
163
+
164
+ Below you'll find a complete list of the hooks and filters available in Easy Forms for MailChimp by YIKES.
165
+
166
+ **Filters**
167
+
168
+ * yikes-mailchimp-form-title-FORM_ID - alter the output of the form title of the specified form
169
+ * yikes-mailchimp-form-description-FORM_ID - alter the output of the form description of the specified form
170
+ * yikes-mailchimp-redirect-timer (ms : 1 second = 1000ms) alter the amount of time the user sees the success message before being redirected (default: 1500ms) (@parameters - $time, $form_id)
171
+ * yikes-mailchimp-redirect-url - Alter the URL of the page that the user will be redirected too on a successful submission. (@parameters - $url, $form_id, $page_data)
172
+ * yikes-mailchimp-before-submission - catch the merge variables of all forms before they get sent over to MailChimp
173
+ * yikes-mailchimp-before-submission-FORM_ID - catch the merge variables of the specified form before they get sent over to MailChimp
174
+ * yikes-mailchimp-after-submission - catch the merge variables of all forms after they get sent over to MailChimp
175
+ * yikes-mailchimp-after-submission-FORM_ID - catch the merge variables of the specified form after they get sent over to MailChimp
176
+ * yikes-mailchimp-user-role-access - Alter who can access this plugin page by capability (default 'manage_options' - admins)
177
+ * yikes-mailchimp-international-phone-pattern - Alter the regex pattern for acceptable international phone number formats. (process form shortcode.php - line 295)
178
+ * yikes-mailchimp-us-phone-pattern - Alter the regex pattern for acceptable US phone number formats. (process form shortcode.php - line 295)
179
+ * yikes-mailchimp-zip-pattern - Alter the zip code regex pattern (Defaults to: \d{5,5}(-\d{4,4})?)
180
+ * yikes-mailchimp-process-default-tag - Pass the default tag through a filter to populate with dynamic content from the current site (process_form_shortcode.php - line 256)
181
+ * yikes-mailchimp-MERGE_TAG-label - Alter the specified field label text (affects standard fields & interest groups) (process_form_shortcode.php)
182
+ * yikes-mailchimp-MERGE_TAG-description - Alter the specified field description text (affects standard fields & interest groups) (process_form_shortcode.php) (if targeting an interest group, it will be the group_id instead of the merge tag) ($parameter - $description_content, $form_id)
183
+ * yikes-mailchimp-address-TYPE-label - Alter the field sub-label text for a specified address field (affects only standard address fields) (process_form_shortcode.php)
184
+ * yikes-mailchimp-form-submit-button - Alter the submit button to your liking (process_form_shortcode.php line 660) (@parameters - $submit_button, $form_id)
185
+ * yikes-mailchimp-form-submit-button-text - Alter the submit button text value (process_form_shortcode.php line 660) (@parameters - $submit_button_text, $form_id )
186
+ * yikes-mailchimp-form-submit-button-classes - Add additional classes to the submit button for further styling (process_form_shortcode.php line 660) (@parameters - $classes, $form_id )
187
+ * yikes-mailchimp-form-container-class - add additional classes to the parent form container (process_form_shortcode.php line 91) (@parameters - $class_name, $form_id)
188
+ * yikes-mailchimp-form-class - add additional classes to `<form>` element of your opt-in form (process_form_shortcode.php line 157) (@parameters - $class_name, $form_id)
189
+ * yikes-mailchimp-front-end-form-action-links - Add custom front end action links alongside Edit Form, Customize Form etc. (@parameters - $form_action_links, $form_id, $form_name)
190
+ * yikes-mailchimp-custom-default-value-tags - Define your own custom pre-defined tags to populate the default value fields with - these tags appear in the modal - (@parameters - $pre_defined_tags_array)
191
+ * yikes-mailchimp-parse-custom-default-value - Process your custom default merge tag into a custom value to populate the form field with - (Goes hand in hand with `yikes-mailchimp-custom-default-value-tags` filter)
192
+ * yikes-mailchimp-field-data - Filter form field data such as placeholder, label, etc. (@parameters - $field_array, $field, $form_id) (process_form_shortcode.php - line 258 & process_preview_form_shortcode.php - line 258)
193
+ * yikes-mailchimp-user-subscribe-api-request - Alter the API request whenever a new user subscribed (@parameters - $api_request data, $form_id, $list_id, $email ) (process_form_shortcode.php/process_form_shortcode_ajax.php)
194
+ * yikes-mailchimp-subscriber-count-value - Adjust the returned value for the total subscriber count of a given MailChimp mailing list as needed. (@parameters - $subscriber_count) (yikes-mailchimp-subscriber-count.php- line 80)
195
+ * yikes-mailchimp-interest-group-checkbox-error - Alter the checkbox interest group required error response (displayed when a checkbox interest group is set to required, but is left blank)(@since 6.0.3)
196
+ * yikes-mailchimp-frontend-content - Custom content filter for this plugin to prevent others from hooking in where not wanted.
197
+ * yikes-mailchimp-interest-group-required-top-error - Alter the top of form error message. (displays only when interest group checkbox group is set to required and left blank (non-ajax only)) (@parameters - $count (# ofmissing required fields (integer)), $form_id )
198
+ * yikes-mailchimp-interest-group-checkbox-error - Alter the error displayed above each required interest group checkbox group only. Effects checkbox groups only. (@ajax forms only) (@parameter - $form_id)
199
+ * yikes-mailchimp-recaptcha-parameters - Alter any of the possible reCAPTCHA shortcode parameters (process_form_shortcode.php line 68) (parameters: $recaptcha_parameter_array, $form_id)
200
+ * yikes-mailchimp-checkbox-integration-subscribe-api-request - Filter the API request sent to MailChimp. (parameters: @type - the integration type (ie: comment, contact_form_7 etc.)
201
+ * yikes-mailchimp-frontend-date-picker-format - Alter the date format. For additional help, see the [knowledge base](https://yikesplugins.com/support/knowledge-base/how-do-i-change-the-frontend-date-picker-format/).
202
+ * yikes-mailchimp-preloader - Filter allowing users to setup a custom preloader image.
203
+ * yikes-mailchimp-update-email-subject - Filter the subject line for the email that is generated and sent when a user needs to update their subscription info.
204
+ * yikes-mailchimp-update-email-content - Filter the content of the email that is generated and sent when a user needs to update their subscription info.
205
+ * yikes-mailchimp-success-response - Alter the success response text (@parameters: $response_text, $form_id, $submitted_form_variables)
206
+ * yikes-mailchimp-default-country-value - Alter the default country selected in the country dropdown.
207
+ * yikes-mailchimp-recaptcha-required-error - Filter the error displayed back to the user when an error occurs during the reCAPTCHA submission process. (@parameters: $error_text)
208
+ * yikes-mailchimp-sslverify - Toggle sslverify on/off when attempting to validate your API key with the MailChimp API servers.
209
+
210
+ **Actions**
211
+
212
+ * yikes-mailchimp-form-submission - do something with the user email + form data on form submission
213
+ * yikes-mailchimp-form-submission-FORM_ID - do something with the user email + form data on form submission (specific form)
214
+ * yikes-mailchimp-before-form - output content before all forms (@parameters - $form_id)
215
+ * yikes-mailchimp-after-form - output content after all forms (@parameters - $form_id)
216
+ * yikes-mailchimp-before-checkbox - output custom content before the opt-in checkbox for all integrations
217
+ * yikes-mailchimp-after-checkbox - output custom content after the opt-in checkbox for all integrations
218
+ * yikes-mailchimp-support-page - output custom content on the support page (used to add our support form for premium users)
219
+ * yikes-mailchimp-edit-form-section-links - add additional links to the edit form page next to 'Custom Messages'
220
+ * yikes-mailchimp-edit-form-sections - add custom section to the edit form page
221
+ * yikes-mailchimp-edit-form-notice - hook to display a custom notice on the edit form page
222
+ * yikes-mailchimp-shortcode-enqueue-scripts-styles - hook to enqueue custom scripts & styles wherever the shortcode is being used (@paremeter $form_id - pass the id of the current form)
223
+ * yikes-mailchimp-additional-form-fields - define additional fields to add below all forms (@parameter $form_data - all data associated with the given form)
224
+ * yikes-mailchimp-custom-form-actions - add custom action links on the manage forms page (alongside Edit, Duplicate, Shortcode, Delete ) (@parameter $form_id - the id of the form)
225
+ * yikes-mailchimp-api-curl-request - custom action hook to disable curl verification (not recommended - see the following [KB article](https://yikesplugins.com/support/knowledge-base/i-receive-the-error-ssl-certificate-problem-unable-to-get-local-issuer-certificate-why/))
226
+ * yikes-mailchimp-list-form-fields-metabox - action hook allowing additional content to be added to the 'Form Fields' metabox on the view list page.
227
+ * yikes-mailchimp-list-interest-groups-metabox - action hook allowing users to add additional content inside of the interest groups metabox on the view list page.
228
+
229
+ == Changelog ==
230
+
231
+ = Easy Forms for MailChimp 6.0.5.5 - April 5th, 2016 =
232
+ * Fixed icompatability with the avada theme options page.
233
+ * Removed the admin dashboard widgets for non-admins. Note: To alter, use the `yikes-mailchimp-user-role-access` filter.
234
+
235
+ = Easy Forms for MailChimp 6.0.5.4 - March 30th, 2016 =
236
+ * Added `yikes-mailchimp-before-form-submission` hook, to perform actions before data gets sent to MailChimp.
237
+ * Setup unit tests, wrote a few basic tests to start.
238
+ * Added `no_priv` to the update profile email, so users who are not logged in do not hit an error.
239
+
240
+ = Easy Forms for MailChimp 6.0.5.3 - March 14th, 2016 =
241
+ * Removed rogue `return;` causing blank screen on certain pages.
242
+ * Wrapped transient in else statement to prevent wrong data from being stored when an error is hit.
243
+
244
+ = Easy Forms for MailChimp 6.0.5.2 - March 11th, 2016 =
245
+ * Added extra error check for empty forms.
246
+ * Fixed incorrect 'Invalid Email' response being displayed to the user. (Now more user friendly)
247
+ * Fixed some checkbox integrations not working properly.
248
+ * Enhanced error logging.
249
+
250
+ = Easy Forms for MailChimp 6.0.5.1 - March 7th, 2016 =
251
+ * Cleaned up an error getting by the check when no interest groups were enabled on a form.
252
+ * Ensured 'invalid email' error was being used where appropriate.
253
+
254
+ = Easy Forms for MailChimp 6.0.5 - March 5th, 2016 =
255
+ * Removed the old MailChimp PHP wrapper (increasing stability, and decreasing overall plugin size by 200+kb).
256
+ * All API requests are now handled via WP HTTP class (goodbye SSL cert errors)
257
+ * Added new `yikes-mailchimp-sslverify` filter to toggle true/false on API requests.
258
+ * Added a new 'View List' link below the associated lists on the form edit page.
259
+ * Updated all api requests throughout the plugin.
260
+ * Re-wrote both the ajax and non-ajax form submission files.
261
+ * Re-wrote form validation, error checks and success/error responses.
262
+ * More specific error messages now coming from MailChimp for a better debugging experience.
263
+ * Repaired broken strings, Optin/optin to Opt-in/opt-in, reCaptcha to reCAPTCHA.
264
+ * Fixed user data not properly displaying on the user cards page.
265
+
266
+ = Easy Forms for MailChimp 6.0.4.7 - March 4th, 2016 =
267
+ * Fix error being thrown when the user has not set their name on the profile page.
268
+ * Updated the API validation function to use WP HTTP class. (workaround for SSL cert error preventing API key validation)
269
+ * Add 'Custom URL' selection to page redirect drop down, allow users to hard code a custom URL to redirect users to (third party site etc.)
270
+
271
+ = Easy Forms for MailChimp 6.0.4.6 - March 2nd, 2016 =
272
+ * Repair 'update existing subscriber' parameter in the API request to respect the options set for the given form (AJAX and non-AJAX forms).
273
+
274
+ = Easy Forms for MailChimp 6.0.4.5 - March 1st, 2016 =
275
+ * Added `load_plugin_textdomain()` call to base class.
276
+ * Added missing string to translation.
277
+
278
+ = Easy Forms for MailChimp 6.0.4.4 - February 29th, 2016 =
279
+ * Fixed reCAPTCHA check being skipped when a non-ajax form is submitted.
280
+ * Fixed incorrect variable name in reCAPTCHA form submission (non-ajax).
281
+ * Re-worded the reCAPTCHA error message when left blank.
282
+ * Passed new reCAPTCHA error message through new filter (`yikes-mailchimp-recaptcha-required-error` - works for AJAX and standard forms).
283
+ * Added missing placeholder/default values to the date form fields.
284
+ * Fixed foreign characters causing issues on certain form fields (all languages should now work without issues).
285
+
286
+ = Easy Forms for MailChimp 6.0.4.3 - February 23rd, 2016 =
287
+ * Added new filter to alter the success message from the form (`yikes-mailchimp-success-response` - see readme.txt for help).
288
+ * Added new filter to alter the zip code regex pattern (`yikes-mailchimp-zip-pattern` - see readme.txt for help and default value).
289
+ * Added new filter to alter the default country selection in the dropdown. (`yikes-mailchimp-default-country-value` - Defaults to 'US'.)
290
+ * Altered zip/state fields, when the default value is set to something other than US via `yikes-mailchimp-default-country-value`.
291
+ * Removed `height: 100%` CSS declaration on form fields (causing minor issues on some themes).
292
+ * Tweaked front end .js.
293
+
294
+ = Easy Forms for MailChimp 6.0.4.2 - February 18th, 2016 =
295
+ * Add missing .js file to trigger the update existing subscriber detials email on non-ajax forms.
296
+ * Re-worded a few strings.
297
+
298
+ = Easy Forms for MailChimp 6.0.4.1 - February 17th, 2016 =
299
+ * Fixed foreign languages saving field labels with backslashes.
300
+ * Fixed foreign language dropdown not saving/displaying properly.
301
+ * Setup two-factor authentication when users go to update subscription details.
302
+ * Added new filters, `yikes-mailchimp-update-email-subject` and `yikes-mailchimp-update-email-content`.
303
+ * Removed languages directory, as everything is now handled within GlotPress.
304
+
305
+ = Easy Forms for MailChimp 6.0.4 - February 1st, 2016 =
306
+ * Added a conditional to upgrade the database if the user is not currently up to date.
307
+ * Some users report not being able to update form settings, due to database tables not being present.
308
+
309
+ = Easy Forms for MailChimp 6.0.3.9 - January 31st, 2016 =
310
+ * Refactored date form field submissions, to properly format international dates (dd/mm/yyyy).
311
+ * Re-worded sections.
312
+ * Added new screenshots.
313
+
314
+ = Easy Forms for MailChimp 6.0.3.8 - January 29th, 2016 =
315
+ * Added a new custom description parameter to the shortcode. eg: `[yikes-mailchimp custom_description="This is a custom description" description="1"]`
316
+ * Added all new settings on a per form level. New options now include - Form classes, Inline form, Submit button type, Submit button classes, schedule form by date/time, and require users to be logged in.
317
+ * Users can now specify if they want a form to display inline by using the `inline="1"` parameter in the shortcode. Example: `[yikes-mailchimp inline="1"]`. The shortcode parameter will take precedence over the form setting.
318
+ * Users can now set the submit button to image, and specify a custom image to use.
319
+ * Tweaked styles on the 'Account Activity/Chimp Chatter' page.
320
+ * Re-factored a few functions to be more performant.
321
+ * Added new, additional hooks for our add-ons to make use of. (`yikes-mailchimp-list-interest-groups-metabox`)
322
+ * Fixed the typo in our check box integration filter from `yikes-mailchimp-checkbox-integration-subscibe-api-request` to `yikes-mailchimp-checkbox-integration-subscribe-api-request`.
323
+ * Added missing `$charset_collate` variable when creating the database tables - which caused encoding issues with a few foreign characters.
324
+ * Localized all date pickers - for our international users.
325
+ * Added new sections to the welcome screen - 'Knowledge Base' and 'Add-Ons'.
326
+ * Fixed foreign language character encoding, and storing in database as question marks.
327
+ * Fixed date formats not storing properly when adding a date/birthday field to your form.
328
+ * Fixed the form editor being hidden on medium-width screens.
329
+
330
+ = Easy Forms for MailChimp 6.0.3.7 - December 28th, 2015 =
331
+ * Fixed certain [recaptcha parameters](https://yikesplugins.com/support/knowledge-base/how-do-i-customize-the-recaptcha-field/) not working properly
332
+
333
+ = Easy Forms for MailChimp 6.0.3.6 - December 28th, 2015 =
334
+ * Removed extra closing php tag after 'Interest Group' dropdown field
335
+
336
+ = Easy Forms for MailChimp 6.0.3.5 - December 20th, 2015 =
337
+ * Ensured the `$form_id` variable is set before including the form processing file for non-ajax forms.
338
+ * Updated `yikes_retrieve_form_settings()`, to ensure we have a `$form_id` and settings to return.
339
+
340
+ = Easy Forms for MailChimp 6.0.3.4 - December 18th, 2015 =
341
+ * Make bundled classes work when field labels are hidden.
342
+ * Way to reset submission counts for individual forms.
343
+ * URL fields now prepend http:// to prevent confusion with the end user.
344
+ * Added conditionals to hide state/zip input fields in the address section when the country != US.
345
+ * Multiple reCAPTCHAs on a single page should now work.
346
+ * Non-Ajax Forms set to redirect, throw errors
347
+ * Check form descriptions generating additional `<p>` tags.yikes-mailchimp-form-description is not wrapped around the description.
348
+ * Add helper function to retrieve form data by ID. (eg: `$form_data = yikes_get_form_data( 1 );` )
349
+
350
+ = Easy Forms for MailChimp 6.0.3.3 - November 12th, 2015 =
351
+ * Patched a minor security issue where post passwords were accessible prior to entering the password - (props @ldwd)
352
+
353
+ = Easy Forms for MailChimp 6.0.3.2 - November 9th, 2015 =
354
+ * International characters in custom messages causing some escaping issues for AJAX forms.
355
+ * Added Google reCAPTCHA override to the shortcode recaptcha="1"/recpatcha="0" to manually set it on a per form basis (still needs to be globally enabled on the settings page).
356
+ * Added additional reCAPTCHA parameters to the shortcode. (see <a href="https://yikesplugins.com/support/knowledge-base/how-do-i-customize-the-recaptcha-field/" target="_blank">https://yikesplugins.com/support/knowledge-base/how-do-i-customize-the-recaptcha-field/</a>).
357
+ * Re-coded the redirect function for non-ajax forms, so that it properly utilizes `wp_redirect()` instead of a .js injection after submission.
358
+ * Added new constant `YIKES_MAILCHIMP_NULL_DEBUG` to debug 'null' API response from MailChimp API (see <a href="https://yikesplugins.com/support/knowledge-base/i-received-the-following-error-we-received-an-unexpected-error-null/" target="_blank">https://yikesplugins.com/support/knowledge-base/i-received-the-following-error-we-received-an-unexpected-error-null/</a>).
359
+
360
+ = Easy Forms for MailChimp 6.0.3.1 - November 2nd, 2015 =
361
+ * Repair issue where multiple MailChimp AJAX forms on same page was only submitting last displayed form.
362
+ * Parsed `[yikes-mailchimp-subscriber-count]`, to display the number of subscribers in the associated MailChimp list on the manage forms page for form descriptions.
363
+ * When 'Hide Label' and 'Hide Field' are both checked, ensure that the associated MailChimp form field is hidden.
364
+ * Confirmed error messages via the MailChimp API are working as intended for both AJAX/standard opt-in forms.
365
+ * Fixed issue/spacing of the secondary 'Update Form' button on the edit forms page.
366
+
367
+ = Easy Forms for MailChimp 6.0.3 - October 29th, 2015 =
368
+ * Add filter to allow altering field descriptions. `yikes_mailchimp_frontend_content`
369
+ * Resolve error thrown when no default is set for checkbox inerest groups.
370
+ * Alter old knowledge base URLs to new KB URL.
371
+ * Confirm each MailChimp form field type 'Hide Field' works as expected.
372
+ * Added a bit of spacing between checkbox/radio button default options.
373
+ * Added new class `yikes-mailchimp-form-class` to allow for additional classes to be added to the `<form>` element.
374
+ * Implemented a fix for required MailChimp interest group checkbox type. (ajax = js validation/non-ajax = php).
375
+ * Appended form IDs to input field ID parameter. The new form IDs now prepended with yikes-mc-form-#- -- eg: Old: id="EMAIL", New: id="yikes-mc-form-1-EMAIL".
376
+ * Add a "Save Form" button to the left of the new "Clear Form Fields" on the Form builder. (better UX)
377
+ * Integrate with Visual Composer plugin.
378
+ * Ability to add a class to the form tag. Appropriate filter is `yikes-mailchimp-form-class` for `<form>` element, and `yikes-mailchimp-form-container-class` for parent `<section>` container.
379
+ * Fix Site Origin Page builder issues saving the widget form IDs.
380
+
381
+ = Easy Forms for MailChimp 6.0.3 - October 29th, 2015 =
382
+ * Fixed undefined variable warning for interest group labels
383
+ * Added new filter to allow alterations of each form field description
384
+
385
+ = Easy Forms for MailChimp 6.0.2.4 - October 17th, 2015 =
386
+ * Fixed error thrown for some users on edit forms page 'save'.
387
+ * Added new shortcode: `[yikes-mailchimp-subscriber-count list="#"]` to display the number of subscribers to a specified list (use: `[yikes-mailchimp-subscriber-count form="form_id"]` (preferred) or `[yikes-mailchimp-subscriber-count list="mc_list_id"]`)
388
+ * Added new filter to filter the submit button text (yikes-mailchimp-form-submit-button-text)
389
+ * Tweaked international phone number validation - now regex checks [0-9]{1,}
390
+ * Added two new classes to field labels - `.merge_tag-label` (eg: EMAIL-label) on all fields & `.yikes-mailchimp-field-required` on fields set to required.
391
+ * Added capability check to TinyMCE button in wp editor (defaults to manage_options).
392
+ * Tweaked 'show some love' container on the edit forms page.
393
+ * Ensured 'Clear Form Fields' button was hidden after all form fields were removed.
394
+ * Passed form descriptions through `the_content()` to allow for shortcodes to be processed.
395
+
396
+ = Easy Forms for MailChimp 6.0.2.3 - October 16th, 2015 =
397
+ * Fixed incorrect opt-in time being sent to MailChimp for new subscribers (fixed for checkbox integrations, ajax and non-ajax forms)
398
+ * Fixed 'Hide Label' displaying twice under interest groups
399
+ * Fixed error thrown for custom_fields for some users
400
+ * Fixed dropdown interest group data not being sent to MailChimp properly
401
+
402
+ = Easy Forms for MailChimp 6.0.2.2 - October 15th, 2015 =
403
+ * Added the ability to bulk remove form fields from the form builder
404
+ * Fixed hidden interest groups from not displaying the default value properly
405
+ * Added hidden interest groups to the field type switch
406
+ * Fixed interest group errors thrown for some users
407
+ * Added new option to replace/update interest groups
408
+
409
+ = Easy Forms for MailChimp 6.0.2/6.0.2.1 - October 12th, 2015 =
410
+ * Added ability to pre-select interest groups for each third party integration (bbpress, contact form 7, buddypress, edd, woocommerce, comment form, registration form).
411
+ * Removed "Check your email for the confirmation message." from the default success message if single opt-in is checked.
412
+ * Fixed Address field, zip not hiding properly.
413
+ * Tweaked class names, labels.
414
+ * Renamed clickable pre-defined tags to something more user friendly instead of tags (eg: 'Page Title' instead of {page_title}).
415
+ * Renamed the `field-third-left/right` class to `field-third` as it made more sense. Now elements floated left.
416
+ * Tweaked pre-defined class styles.
417
+ * Altered pre-defined class names for the address fields.
418
+ * Built in check for MailChimp class to prevent conflict with other plugins integrating MailChimp.
419
+ * Built in responsive styles for pre-defined form class styles (field-half-left/right & field-third).
420
+ * Tweak responsive styles on calendar date picker on mobile devices.
421
+ * Confirm each integration is working as intended.
422
+
423
+ = Easy Forms for MailChimp 6.0.1 - October 7th, 2015 =
424
+ * This release is a <strong>complete</strong> rewrite of the previous version. Before upgrading to the latest release, it is <em>highly recommended</em> that you take a backup of your database.
425
+ * Changed plugin name to Easy Forms for MailChimp to comply with new guidelines for [Plugins that Include Company and/or Product Names in the Plugin Name](https://make.wordpress.org/plugins/2015/10/05/guidelines-for-plugins-that-include-company-andor-product-names-in-the-plugin-name/)
426
+ * Enhancements:
427
+ * All forms have moved to their own table in the database, yikes_easy_mc_forms.
428
+ * Admin interface has been re-designed for a seamless integration into the WordPress dashboard.
429
+ * You can now create an unlimited number of forms, and assign them to any of your MailChimp lists (even multiple forms to the same list).
430
+ * Now you can easily duplicate forms at the click of a button.
431
+ * We have built out an advanced debugging feature that will log MailChimp errors as they occur, for easy debugging.
432
+ * You can now toggle on/off AJAX form submissions on a per form basis.
433
+ * Toggle on or off the MailChimp welcome email being sent.
434
+ * You can now quickly switch which MailChimp list your forms assign subscribers to.
435
+ * We now support every type of MailChimp field you can assign to a form, including interest groups.
436
+ * You can now set custom success and error messages, to set messages in your native language.
437
+ * Easily browse your MailChimp lists and view individual subscribers. Manage your subscriptions directly within the plugin.
438
+ * We've completely re-designed the settings pages to allow for easier navigation.
439
+ * A whole number of additional settings have been enabled for different form input fields.
440
+ * Español translated started by @hiwhatsup
441
+ * Française translated by @mialevesque
442
+ * Português do Brasil translated by @enxaqueca
443
+ * reCAPTCHA now loads in the language of the site it's being displayed on.
444
+ * All translations functions have been implemented for worldwide i18n.
445
+ * We have built out an API and implemented a number of hooks and filters to enable developers to easily extend the plugin [see knowledge base](https://yikesplugins.com/support/knowledge-base/product/developer-documentation/?utm_source=wp_plugin_repo&utm_medium=link&utm_campaign=easy_forms_for_mailchimp)
446
+ * We have started building out a number of add ons to extend the base functionality of the plugin. [check them out](https://yikesplugins.com/plugins/?utm_source=wp_plugin_repo&utm_medium=link&utm_campaign=easy_forms_for_mailchimp)
447
+
448
+ = Easy MailChimp Forms 5.4.3 - March 17th, 2015 =
449
+ * Fixed: Re-import form fields function not properly refreshing the page
450
+ * Fixed: Updating a MailChimp list field no longer throws an empty error
451
+
452
+ = Easy MailChimp Forms 5.4.2 - March 10th, 2015 =
453
+ * Fixed: custom class names on input fields merged together with other class names making them un-usable.
454
+
455
+ = Easy MailChimp Forms 5.4.1 - March 3rd, 2015 =
456
+ * Fixed: tinyMCE error thrown when saving settings page, ultimately preventing the ability to store the MailChimp API key.
457
+
458
+ = Easy MailChimp Forms 5.4 - March 2nd, 2015 =
459
+ * Enhancement: Re-bundled unaltered MailChimp API wrapper class file, and added appropriate class check to prevent conflicts with other MailChimp plugins (Gravity Forms etc.)
460
+ * Enhancement: Removed the WYSIWYG editor from the options page. This caused issues for some users who were unable to validate the MailChimp API key.
461
+ * Enhancement: Added a new setting to toggle the sending of the MailChimp welcome email. Users can now disable the email all together, on a list by list basis. (checked = disabled)
462
+ * Enhancement: Prevented users from being able to update the 'EMAIL' merge variable. Added a notification with instruction on what filter to use.
463
+ * Enhancement: Replaced all instances of the old class name (wpyksMCMailChimp API) with the appropriate MailChimp class (Mailchimp)
464
+ * Enhancement: Stripped slashes and properly escaped interest group labels
465
+
466
+
467
+ = Easy MailChimp Forms 5.3.3 - February 26th, 2015 =
468
+ * Enhancement: Added a new filter to alter field labels. Very helpful when you want to alter the default MailChimp 'Email Address' field label to something else. (`yikes_mc_field_label`) (see 'filters' section in 'Other Notes')
469
+
470
+ = Easy MailChimp Forms 5.3.2 - February 17th, 2015 =
471
+ * Fixed: Patched the error displayed below the opt-in forms when `display_yikes_mc_form_messages` is not defined.
472
+
473
+ = Easy MailChimp Forms 5.3.1 - January 13th, 2014 =
474
+ * Enhancement: Added new filter to allow users to change which role has access to the MailChimp administration pages ( `yks-mailchimp-user-role` ) ( check readme for example )
475
+
476
+ = Easy MailChimp Forms 5.3 - January 11th, 2014 =
477
+ * Enhancement: Added ability to move the success + error messages above or below the form based on a defined constant ( `display_yikes_mc_form_messages` [options: before/after] )
478
+ * Enhancement: Added new settings and the ability to show/hide * = required field , from the top of the forms, via the settings page
479
+ * Enhancement: Fixed incorrect error 'click here to update your profile' shown on front end on all errors
480
+
481
+ = Easy MailChimp Forms 5.2 - December 10th, 2014 =
482
+ * New Feature: Added ability to add, edit or delete form fields directly from the WordPress dashboard
483
+ * New Feature: Added ability to add, edit or delete interest groups directly from the WordPress dashboard
484
+ * New Feature: Add "Update" link to forms when a user has previously subscribed
485
+ * New Feature: Added 'default' option to text fields ( with custom pre-defined tags : {post_id} , {post_title} , {page_url} , {blog_name} , {user_logged_in} with the ability to define your own! )
486
+ * New Feature: Added the ability to adjust required state, visibility state, merge tag and more
487
+ * New Feature: Added the ability to toggle between ssl_verifypeer true/false
488
+ * New Feature: Added an error log to help users diagnose errors happening within the plugin (and updated advanced debugging) - found on the debug options of the settings page
489
+ * Enhancement: Remove JavaScript dependency to populate place holder values
490
+ * Enhancement: Replaced CAPTCHA with the all new reCAPTCHA API from Google
491
+ * Enhancement: Introduced all new filters ( check documentation for examples )
492
+ * Enhancement: Un-checking 'visibility' now hides the input field (instead of not generating it at all)
493
+ * Enhancement: Re-defined YKSEME_PATH for users who have the plugins folder outside of wp-content
494
+ * Enhancement: Added new classes to labels and input fields on the front end forms ( new classes yks-mc-label-field-label , yks-mc-form-row-field-label , yks-mc-input-field-row-field-label , yks-mc-input-field-label )
495
+ * Bug Fix: Re-sorting fields that had a stored custom class name didn't store properly
496
+ * Bug Fix: Wrapped bundled template text in filters
497
+ * Bug Fix: Repaired some broken filters (get_form_data_before_send)
498
+ * Bug Fix: Fixed labels on 'Manage List Forms' page and added field names to titles
499
+ * Bug Fix: Fixed path to check box images on 'Clean Blue' bundled templates
500
+ * Bug Fix: Fixed empty MailChimp API key from outputting any string (confused some users)
501
+ * Other: Split main class file into multiple included files (help organize the main class file (sub-files located in /lib/inc/)
502
+ * Other: Began to build up a [Wiki](https://github.com/yikesinc/yikes-inc-easy-mailchimp-extender/wiki) on Github , for plug in installation/usage instructions
503
+ * Other: Altered single/double opt-in strings inside shortcode_form.php ([reference thread](https://wordpress.org/support/topic/code-mangling-on-script-use-in-messageserror-handling))
504
+ * Other: Removed 'Interest Group Label' option, as users can now update the name from within the plugin
505
+
506
+ = Easy MailChimp Forms 5.1.1 - November 5, 2014 =
507
+ Fix: repair 'Opt In' default list drop down on options page
508
+ Fix: repair errors being thrown when a commenter is added to a list
509
+
510
+ = Easy MailChimp Forms 5.1.0.1 - November 4, 2014 =
511
+
512
+ Removed the update MailChimp profile info link, some users brought up security concerns.
513
+ Fixed missing argument when using table display formatting.
514
+
515
+ = Easy MailChimp Forms 5.1 - November 3, 2014 =
516
+
517
+ We have added brand new functionality, allowing users to easily customize forms on the fly, through a familiar UI as well as a templating framework to allow users to design and implement their own custom forms. A minor security bug was patched in this release as well. We fixed an issue with the MailChimp API key check running on each page load, and added a few new filters to allow users to alter text.
518
+
519
+ = Easy MailChimp Forms 5.0.9 - October 3rd, 2014 =
520
+
521
+ **Fixes**
522
+
523
+ * Added autocomplete="false" to MailChimp API input field
524
+ * Added event listener to form submission (forms can now be placed in modals/slideout menus)
525
+
526
+ = Easy MailChimp Forms 5.0.8 - September 23, 2014 =
527
+
528
+ **Fixes**
529
+
530
+ * Band-aid fix for the -1 response returned from ajax.php
531
+
532
+ = Easy MailChimp Forms 5.0.7 - September 19, 2014 =
533
+
534
+ **Fixes**
535
+
536
+ * Security Vulnerability patched - props @g0blinResearch for privately disclosing the issue
537
+
538
+ = Easy MailChimp Forms 5.0.6 - August 22, 2014 =
539
+
540
+ **Fixes**
541
+
542
+ * fix bug with nonce security check when using table 'Preferred Form Layout' setting
543
+
544
+ = Easy MailChimp Forms 5.0.5 - August 21, 2014 =
545
+
546
+ **Fixes**
547
+
548
+ - added `stripslashes()` to the following settings fields :
549
+ - Single Opt-in Confirmation Message
550
+ - Double Opt-in Confirmation Message
551
+ - Interest Group Label
552
+ - Opt-in Checkbox Text
553
+
554
+ **Updates**
555
+
556
+ - Updated readme FAQ section
557
+
558
+ = Easy MailChimp Forms 5.0.4 - August 6, 2014 =
559
+ * Update SSL conditional in main plugin file
560
+ * Added mcrypt module check, for MailChimp API encryption
561
+ * Conditionally loaded scripts and styles in admin ( prevent conflicts )
562
+ * Included NONCE security checks on form submissions ( helps prevent CSRF and other attacks )
563
+ * Added proper update task function to add missing settings to the options page ( prevents undefined variables for new settings )
564
+ * Added missing styles to post page ( added missing icon to tinyMCE button )
565
+ * Added missing styles to widget page
566
+ * Adjusted Chimp Chatter activity time formatting to return correct time based on user time zone
567
+ * New Feature: Real time updates to MailChimp Account Activity ( utilizing the heartbeat MailChimp API )
568
+ * New Feature: Added MailChimp account activity widget to dashboard ( with live updates using heartbeat MailChimp API )
569
+ * Added screenshot of admin dashboard account activity widget
570
+
571
+ = Easy MailChimp Forms 4.5 =
572
+ * Added reCAPTCHA support to prevent bots and spammers from submitting forms
573
+ * Split settings page into three separate sections
574
+ * Removed Jetpack sharing icons from appearing in the success messages (removed sharedaddy filter)
575
+ * Updated translation files with new strings
576
+ * Update existing screen shots and add new screen shot
577
+ * Update FAQ
578
+ * Added "loaded server modules" to the debug page, to better aid in support requests
579
+
580
+ = Easy MailChimp Forms 3.0 =
581
+ * Update MailChimp API to v2.0
582
+ * Added MailChimp API Key Validation Check
583
+
584
+ = Easy MailChimp Forms 2.2.0 =
585
+ * Added support for multiples of the same MailChimp list
586
+ * Bug fixes
587
+
588
+ = Easy MailChimp Forms 2.1.0 =
589
+ * Changed name of plugin to Easy MailChimp Forms
590
+ * Added support for multiples of the same MailChimp list
591
+ * Bug fixes
592
+
593
+ = YIKES Inc Easy MailChimp Extender 2.0.0 =
594
+ * Supports custom merge vars now
595
+ * Allows import from MailChimp
596
+ * Allows Table or Div output
597
+
598
+ = YIKES Inc Easy MailChimp Extender 1.3.1 =
599
+ * Fixed form not submitting to MailChimp for anonymous users bug
600
+
601
+ = YIKES Inc Easy MailChimp Extender 1.3.0 =
602
+ * Custom merge vars allows more customized field configuration
603
+
604
+ = YIKES Inc Easy MailChimp Extender 1.2.0 =
605
+ * Removed required from First Name and Last Name fields
606
+ * Added update routines for future versions
607
+
608
+ = YIKES Inc Easy MailChimp Extender 1.1.0 =
609
+ * Changed the list logic and added a notice for the MERGE VAR naming schema
610
+
611
+ = YIKES Inc Easy MailChimp Extender 1.0.1 =
612
+ * Changed CSS paths from Absolute to Relative
613
+
614
+ = YIKES Inc Easy MailChimp Extender 1.0.0 =
615
+ * Initial Release
616
+
617
+
618
+ == Upgrade Notice ==
619
+
620
+ = Easy Forms for MailChimp 6.0.5.5 - April 5th, 2016 =
621
+
622
+ * Fixed icompatability with the avada theme options page.
623
+ * Removed the admin dashboard widgets for non-admins. Note: To alter, use the `yikes-mailchimp-user-role-access` filter.
624
+
625
+ = Easy Forms for MailChimp 6.0.5.4 - March 30th, 2016 =
626
+
627
+ * Added `yikes-mailchimp-before-form-submission` hook, to perform actions before data gets sent to MailChimp.
628
+ * Setup unit tests, wrote a few basic tests to start.
629
+ * Added `no_priv` to the update profile email, so users who are not logged in do not hit an error.
630
+
631
+ = Easy Forms for MailChimp 6.0.5.3 - March 14th, 2016 =
632
+
633
+ * Removed rogue `return;` causing blank screen on certain pages.
634
+ * Wrapped transient in else statement to prevent wrong data from being stored when an error is hit.
635
+
636
+ = Easy Forms for MailChimp 6.0.5.2 - March 11th, 2016 =
637
+
638
+ * Added extra error check for empty forms.
639
+ * Fixed incorrect 'Invalid Email' response being displayed to the user. (Now more user friendly)
640
+ * Fixed some checkbox integrations not working properly.
641
+ * Enhanced error logging.
642
+
643
+ = Easy Forms for MailChimp 6.0.5.1 - March 7th, 2016 =
644
+
645
+ * Cleaned up an error getting by the check when no interest groups were enabled on a form.
646
+ * Ensured 'invalid email' error was being used where appropriate.
647
+
648
+ = Easy Forms for MailChimp 6.0.5 - March 5th, 2016 =
649
+
650
+ * Removed the old MailChimp PHP wrapper (increasing stability, and decreasing overall plugin size by 200+kb).
651
+ * All API requests are now handled via WP HTTP class (goodbye SSL cert errors)
652
+ * Added new `yikes-mailchimp-sslverify` filter to toggle true/false on API requests.
653
+ * Added a new 'View List' link below the associated lists on the form edit page.
654
+ * Updated all api requests throughout the plugin.
655
+ * Re-wrote both the ajax and non-ajax form submission files.
656
+ * Re-wrote form validation, error checks and success/error responses.
657
+ * More specific error messages now coming from MailChimp for a better debugging experience.
658
+ * Repaired broken strings, Optin/optin to Opt-in/opt-in, reCaptcha to reCAPTCHA.
659
+ * Fixed user data not properly displaying on the user cards page.
660
+
661
+ = Easy Forms for MailChimp 6.0.4.7 - March 4th, 2016 =
662
+
663
+ * Fix error being thrown when the user has not set their name on the profile page.
664
+ * Updated the API validation function to use WP HTTP class. (workaround for SSL cert error preventing API key validation)
665
+ * Add 'Custom URL' selection to page redirect drop down, allow users to hard code a custom URL to redirect users to (third party site etc.)
666
+
667
+ = Easy Forms for MailChimp 6.0.4.6 - March 2nd, 2016 =
668
+
669
+ * Repair 'update existing subscriber' parameter in the API request to respect the options set for the given form (AJAX and non-AJAX forms).
670
+
671
+ = Easy Forms for MailChimp 6.0.4.5 - March 1st, 2016 =
672
+
673
+ * Added `load_plugin_textdomain()` call to base class.
674
+ * Added missing string to translation.
675
+
676
+ = Easy Forms for MailChimp 6.0.4.4 - February 29th, 2016 =
677
+
678
+ * Fixed reCAPTCHA check being skipped when a non-ajax form is submitted.
679
+ * Fixed incorrect variable name in reCAPTCHA form submission (non-ajax).
680
+ * Re-worded the reCAPTCHA error message when left blank.
681
+ * Passed new reCAPTCHA error message through new filter (`yikes-mailchimp-recaptcha-required-error` - works for AJAX and standard forms).
682
+ * Added missing placeholder/default values to the date form fields.
683
+ * Fixed foreign characters causing issues on certain form fields (all languages should now work without issues).
684
+
685
+ = Easy Forms for MailChimp 6.0.4.3 - February 23rd, 2016 =
686
+
687
+ * Added new filter to alter the success message from the form (`yikes-mailchimp-success-response` - see readme.txt for help).
688
+ * Added new filter to alter the zip code regex pattern (`yikes-mailchimp-zip-pattern` - see readme.txt for help and default value).
689
+ * Added new filter to alter the default country selection in the dropdown. (`yikes-mailchimp-default-country-value` - Defaults to 'US'.)
690
+ * Altered zip/state fields, when the default value is set to something other than US via `yikes-mailchimp-default-country-value`.
691
+ * Removed `height: 100%` CSS declaration on form fields (causing minor issues on some themes).
692
+ * Tweaked front end .js.
693
+
694
+ = Easy Forms for MailChimp 6.0.4.2 - February 18th, 2016 =
695
+
696
+ * Add missing .js file to trigger the update existing subscriber detials email on non-ajax forms.
697
+ * Re-worded a few strings.
698
+
699
+ = Easy Forms for MailChimp 6.0.4.1 - February 3rd, 2015 =
700
+
701
+ * Fixed foreign languages saving field labels with backslashes
702
+ * Fixed foreign language dropdown not saving/displaying properly
703
+
704
+ = Easy Forms for MailChimp 6.0.4 - February 1st, 2015 =
705
+
706
+ * Added a conditional to upgrade the database if the user is not currently up to date.
707
+ * Some users report not being able to update form settings, due to database tables not being present.
708
+
709
+ = Easy Forms for MailChimp 6.0.3.9 - January 31st, 2015 =
710
+
711
+ * Refactored date form field submissions, to properly format international dates (dd/mm/yyyy).
712
+ * Re-worded sections.
713
+ * Added new screenshots.
714
+
715
+ = Easy Forms for MailChimp 6.0.3.8 - January 29th, 2015 =
716
+
717
+ * Added a new custom description parameter to the shortcode. eg: `[yikes-mailchimp custom_description="This is a custom description" description="1"]`
718
+ * Added all new settings on a per form level. New options now include - Form classes, Inline form, Submit button type, Submit button classes, schedule form by date/time, and require users to be logged in.
719
+ * Users can now specify if they want a form to display inline by using the `inline="1"` parameter in the shortcode. Example: `[yikes-mailchimp inline="1"]`. The shortcode parameter will take precedence over the form setting.
720
+ * Users can now set the submit button to image, and specify a custom image to use.
721
+ * Tweaked styles on the 'Account Activity/Chimp Chatter' page.
722
+ * Re-factored a few functions to be more performant.
723
+ * Added new, additional hooks for our add-ons to make use of. (`yikes-mailchimp-list-interest-groups-metabox`)
724
+ * Fixed the typo in our check box integration filter from `yikes-mailchimp-checkbox-integration-subscibe-api-request` to `yikes-mailchimp-checkbox-integration-subscribe-api-request`.
725
+ * Added missing `$charset_collate` variable when creating the database tables - which caused encoding issues with a few foreign characters.
726
+ * Localized all date pickers - for our international users.
727
+ * Added new sections to the welcome screen - 'Knowledge Base' and 'Add-Ons'.
728
+ * Fixed foreign language character encoding, and storing in database as question marks.
729
+ * Fixed date formats not storing properly when adding a date/birthday field to your form.
730
+ * Fixed the form editor being hidden on medium-width screens.
731
+
732
+ = Easy Forms for MailChimp 6.0.3.7 - December 28th, 2015 =
733
+
734
+ * Fixed certain [recaptcha parameters](https://yikesplugins.com/support/knowledge-base/how-do-i-customize-the-recaptcha-field/) not working properly
735
+
736
+ = Easy Forms for MailChimp 6.0.3.6 - December 28th, 2015 =
737
+
738
+ * Removed extra closing php tag after 'Interest Group' dropdown field
739
+
740
+ = Easy Forms for MailChimp 6.0.3.5 - December 20th, 2015 =
741
+
742
+ * Ensured the `$form_id` variable is set before including the form processing file for non-ajax forms.
743
+ * Updated `yikes_retrieve_form_settings()`, to ensure we have a `$form_id` and settings to return.
744
+
745
+ = Easy Forms for MailChimp 6.0.3.4 - December 18th, 2015 =
746
+
747
+ * Make bundled classes work when field labels are hidden.
748
+ * Way to reset submission counts for individual forms.
749
+ * URL fields now prepend http:// to prevent confusion with the end user.
750
+ * Added conditionals to hide state/zip input fields in the address section when the country != US.
751
+ * Multiple reCAPTCHAs on a single page should now work.
752
+ * Non-Ajax Forms set to redirect, throw errors
753
+ * Check form descriptions generating additional `<p>` tags.yikes-mailchimp-form-description is not wrapped around the description.
754
+ * Add helper function to retrieve form data by ID. (eg: `$form_data = yikes_get_form_data( 1 );` )
755
+
756
+ = Easy Forms for MailChimp 6.0.3.3 - November 12th, 2015 =
757
+
758
+ * Patched a minor security issue where post passwords were accessible prior to entering the password - (props @ldwd)
759
+
760
+ = Easy Forms for MailChimp 6.0.3.2 - November 9th, 2015 =
761
+
762
+ * International characters in custom messages causing some escaping issues for AJAX forms.
763
+ * Added Google ReCaptcha override to the shortcode recaptcha="1"/recpatcha="0" to manually set it on a per form basis (still needs to be globally enabled on the settings page).
764
+ * Added additional reCAPTCHA parameters to the shortcode. (see <a href="https://yikesplugins.com/support/knowledge-base/how-do-i-customize-the-recaptcha-field/" tareget="_blank">https://yikesplugins.com/support/knowledge-base/how-do-i-customize-the-recaptcha-field/</a>).
765
+ * Re-coded the redirect function for non-ajax forms, so that it properly utilizes `wp_redirect()` instead of a .js injection after submission.
766
+ * Added new constant `YIKES_MAILCHIMP_NULL_DEBUG` to debug 'null' API response from MailChimp API (see <a href="https://yikesplugins.com/support/knowledge-base/i-received-the-following-error-we-received-an-unexpected-error-null/" target="_blank">https://yikesplugins.com/support/knowledge-base/i-received-the-following-error-we-received-an-unexpected-error-null/</a>).
767
+
768
+ = Easy Forms for MailChimp 6.0.3.1 - November 2nd, 2015 =
769
+
770
+ * Repair issue where multiple MailChimp AJAX forms on same page was only submitting last displayed form.
771
+ * Parsed `[yikes-mailchimp-subscriber-count]`, to display the number of subscribers in the associated MailChimp list on the manage forms page for form descriptions.
772
+ * When 'Hide Label' and 'Hide Field' are both checked, ensure that the associated MailChimp form field is hidden.
773
+ * Confirmed error messages via the MailChimp API are working as intended for both AJAX/standard opt-in forms.
774
+ * Fixed issue/spacing of the secondary 'Update Form' button on the edit forms page.
775
+
776
+ = Easy Forms for MailChimp 6.0.3 - October 29th, 2015 =
777
+
778
+ * Add filter to allow altering field descriptions. `yikes_mailchimp_frontend_content`
779
+ * Resolve error thrown when no default is set for checkbox inerest groups.
780
+ * Alter old knowledge base URLs to new KB URL.
781
+ * Confirm each MailChimp form field type 'Hide Field' works as expected.
782
+ * Added a bit of spacing between checkbox/radio button default options.
783
+ * Added new class `yikes-mailchimp-form-class` to allow for additional classes to be added to the `<form>` element.
784
+ * Implemented a fix for required MailChimp interest group checkbox type. (ajax = js validation/non-ajax = php).
785
+ * Appended form IDs to input field ID parameter. The new form IDs now prepended with yikes-mc-form-#- -- eg: Old: id="EMAIL", New: id="yikes-mc-form-1-EMAIL".
786
+ * Add a "Save Form" button to the left of the new "Clear Form Fields" on the Form builder. (better UX)
787
+ * Integrate with Visual Composer plugin.
788
+ * Ability to add a class to the form tag. Appropriate filter is `yikes-mailchimp-form-class` for `<form>` element, and `yikes-mailchimp-form-container-class` for parent `<section>` container.
789
+ * Fix Site Origin Page builder issues saving the widget form IDs.
790
+
791
+ = Easy Forms for MailChimp 6.0.2.4 - October 17th, 2015 =
792
+
793
+ * Fixed error thrown for some users on edit forms page 'save'.
794
+ * Added new shortcode: `[yikes-mailchimp-subscriber-count list="#"]` to display the number of subscribers to a specified list (use: `[yikes-mailchimp-subscriber-count form="form_id"]` (preferred) or `[yikes-mailchimp-subscriber-count list="mc_list_id"]`)
795
+ * Added new filter to filter the submit button text (yikes-mailchimp-form-submit-button-text)
796
+ * Tweaked international phone number validation - now regex checks [0-9]{1,}
797
+ * Added two new classes to field labels - `.merge_tag-label` (eg: EMAIL-label) on all fields & `.yikes-mailchimp-field-required` on fields set to required.
798
+ * Added capability check to TinyMCE button in wp editor (defaults to manage_options).
799
+ * Tweaked 'show some love' container on the edit forms page.
800
+ * Passed form descriptions through `the_content()` to allow for shortcodes to be processed.
801
+
802
+ = Easy Forms for MailChimp 6.0.2.3 - October 16th, 2015 =
803
+
804
+ * Fixed incorrect opt-in time being sent to MailChimp for new subscribers (fixed for checkbox integrations, ajax and non-ajax forms)
805
+ * Fixed 'Hide Label' displaying twice under interest groups
806
+ * Fixed error thrown for custom_fields for some users
807
+ * Fixed dropdown interest group data not being sent to MailChimp properly
808
+
809
+ = Easy Forms for MailChimp 6.0.2.2 - October 15th, 2015 =
810
+
811
+ * Added the ability to bulk remove form fields from the form builder
812
+ * Fixed hidden interest groups from not displaying the default value properly
813
+ * Added hidden interest groups to the field type switch
814
+ * Fixed interest group errors thrown for some users
815
+ * Added new option to replace/update interest groups
816
+
817
+ = Easy Forms for MailChimp 6.0.2/6.0.2.1 - October 12th, 2015 =
818
+
819
+ * Added ability to pre-select interest groups for each third party integration (bbpress, contact form 7, buddypress, edd, woocommerce, comment form, registration form).
820
+ * Removed "Check your email for the confirmation message." from the default success message if single opt-in is checked.
821
+ * Fixed Address field, zip not hiding properly.
822
+ * Tweaked class names, labels.
823
+ * Renamed clickable pre-defined tags to something more user friendly instead of tags (eg: 'Page Title' instead of {page_title}).
824
+ * Renamed the `field-third-left/right` class to `field-third` as it made more sense. Now elements floated left.
825
+ * Tweaked pre-defined class styles.
826
+ * Altered pre-defined class names for the address fields.
827
+ * Built in check for MailChimp class to prevent conflict with other plugins integrating MailChimp.
828
+ * Built in responsive styles for pre-defined form class styles (field-half-left/right & field-third).
829
+ * Tweak responsive styles on calendar date picker on mobile devices.
830
+ * Confirm each integration is working as intended.
831
+
832
+ = Easy Forms for MailChimp 6.0.1 - October 7th, 2015 =
833
+
834
+ * This release is a <strong>complete</strong> rewrite of the previous version. Before upgrading to the latest release, it is <em>highly recommended</em> that you take a backup of your database.
835
+ * Changed plugin name to Easy Forms for MailChimp to comply with new guidelines for [Plugins that Include Company and/or Product Names in the Plugin Name](https://make.wordpress.org/plugins/2015/10/05/guidelines-for-plugins-that-include-company-andor-product-names-in-the-plugin-name/)
836
+ * Enhancements:
837
+ * All forms have moved to their own table in the database, yikes_easy_mc_forms.
838
+ * Admin interface has been re-designed for a seamless integration into the WordPress dashboard.
839
+ * You can now create an unlimited number of forms, and assign them to any of your MailChimp lists (even multiple forms to the same list).
840
+ * Now you can easily duplicate forms at the click of a button.
841
+ * We have built out an advanced debugging feature that will log MailChimp errors as they occur, for easy debugging.
842
+ * You can now toggle on/off AJAX form submissions on a per form basis.
843
+ * Toggle on or off the MailChimp welcome email being sent.
844
+ * You can now quickly switch which MailChimp list your forms assign subscribers to.
845
+ * We now support every type of MailChimp field you can assign to a form, including interest groups.
846
+ * You can now set custom success and error messages, to set messages in your native language.
847
+ * Easily browse your MailChimp lists and view individual subscribers. Manage your subscriptions directly within the plugin.
848
+ * We've completely re-designed the settings pages to allow for easier navigation.
849
+ * A whole number of additional settings have been enabled for different form input fields.
850
+ * Español translated started by @hiwhatsup
851
+ * Française translated by @mialevesque
852
+ * Português do Brasil translated by @enxaqueca
853
+ * reCAPTCHA now loads in the language of the site it's being displayed on.
854
+ * All translations functions have been implemented for worldwide i18n.
855
+ * We have built out an API and implemented a number of hooks and filters to enable developers to easily extend the plugin [see Knowledge Base](https://yikesplugins.com/support/knowledge-base/product/developer-documentation/?utm_source=wp_plugin_repo&utm_medium=link&utm_campaign=easy_forms_for_mailchimp)
856
+ * We have started building out a number of add ons to extend the base functionality of the plugin. [check them out](https://yikesplugins.com/plugins/?utm_source=wp_plugin_repo&utm_medium=link&utm_campaign=easy_forms_for_mailchimp)
857
+
858
+ = Easy MailChimp Forms.4.3 - March 17th, 2015 =
859
+ * Fixed: Re-import form fields function not properly refreshing the page
860
+ * Fixed: Updating a MailChimp list field no longer throws an empty error
861
+
862
+ = Easy MailChimp Forms 5.4.2 - March 10th, 2015 =
863
+ * Fixed: custom class names on input fields merged together with other class names making them un-usable.
864
+
865
+ = Easy MailChimp Forms 5.4.1 - March 3rd, 2015 =
866
+ * Fixed: tinyMCE error thrown when saving settings page, ultimately preventing the ability to store the MailChimp API key.
867
+
868
+ = Easy MailChimp Forms 5.4 - March 2nd, 2015 =
869
+ * Enhancement: Re-bundled unaltered MailChimp API wrapper class file, and added appropriate class check to prevent conflicts with other MailChimp plugins (Gravity Forms etc.)
870
+ * Enhancement: Removed the WYSIWYG editor from the options page. This caused issues for some users who were unable to validate the MailChimp API key.
871
+ * Enhancement: Added a new setting to toggle the sending of the MailChimp welcome email. Users can now disable the email all together, on a list by list basis. (checked = disabled)
872
+ * Enhancement: Prevented users from being able to update the 'EMAIL' merge variable. Added a notification with instruction on what filter to use.
873
+ * Enhancement: Replaced all instances of the old class name (wpyksMCMailChimp API) with the appropriate MailChimp class (Mailchimp)
874
+ * Enhancement: Stripped slashes and properly escaped interest group labels
875
+
876
+
877
+ = Easy MailChimp Forms 5.3.3 - February 26th, 2015 =
878
+ * Enhancement: Added a new filter to alter field labels. Very helpful when you want to alter the default MailChimp 'Email Address' field label to something else. (`yikes_mc_field_label`) (see 'filters' section in 'Other Notes')
879
+
880
+ = Easy MailChimp Forms 5.3.2 - February 17th, 2015 =
881
+ * Fixed: Patched the error displayed below the opt-in forms when `display_yikes_mc_form_messages` is not defined.
882
+
883
+ = Easy MailChimp Forms 5.3.1 - January 13th, 2014 =
884
+ * Enhancement: Added new filter to allow users to change which role has access to the MailChimp administration pages ( `yks-mailchimp-user-role` ) ( check readme for example )
885
+
886
+ = Easy MailChimp Forms 5.3 - January 11th, 2014 =
887
+ * Enhancement: Added ability to move the success + error messages above or below the form based on a defined constant ( `display_yikes_mc_form_messages` [options: before/after] )
888
+ * Enhancement: Added new settings and the ability to show/hide * = required field , from the top of the forms, via the settings page
889
+ * Enhancement: Fixed incorrect error 'click here to update your profile' shown on front end on all errors
890
+
891
+ = Easy MailChimp Forms 5.2 - December 10th, 2014 =
892
+ * New Feature: Added ability to add, edit or delete form fields directly from the WordPress dashboard
893
+ * New Feature: Added ability to add, edit or delete interest groups directly from the WordPress dashboard
894
+ * New Feature: Add "Update" link to forms when a user has previously subscribed
895
+ * New Feature: Added 'default' option to text fields ( with custom pre-defined tags : {post_id} , {post_title} , {page_url} , {blog_name} , {user_logged_in} with the ability to define your own! )
896
+ * New Feature: Added the ability to adjust required state, visibility state, merge tag and more
897
+ * New Feature: Added the ability to toggle between ssl_verifypeer true/false
898
+ * New Feature: Added an error log to help users diagnose errors happening within the plugin (and updated advanced debugging) - found on the debug options of the settings page
899
+ * Enhancement: Remove JavaScript dependency to populate place holder values
900
+ * Enhancement: Replaced CAPTCHA with the all new reCAPTCHA API from Google
901
+ * Enhancement: Introduced all new filters ( check documentation for examples )
902
+ * Enhancement: Un-checking 'visibility' now hides the input field (instead of not generating it at all)
903
+ * Enhancement: Re-defined YKSEME_PATH for users who have the plugins folder outside of wp-content
904
+ * Enhancement: Added new classes to labels and input fields on the front end forms ( new classes yks-mc-label-field-label , yks-mc-form-row-field-label , yks-mc-input-field-row-field-label , yks-mc-input-field-label )
905
+ * Bug Fix: Re-sorting fields that had a stored custom class name didn't store properly
906
+ * Bug Fix: Wrapped bundled template text in filters
907
+ * Bug Fix: Repaired some broken filters (get_form_data_before_send)
908
+ * Bug Fix: Fixed labels on 'Manage List Forms' page and added field names to titles
909
+ * Bug Fix: Fixed path to check box images on 'Clean Blue' bundled templates
910
+ * Bug Fix: Fixed empty MailChimp API key from outputting any string (confused some users)
911
+ * Other: Split main class file into multiple included files (help organize the main class file (sub-files located in /lib/inc/)
912
+ * Other: Began to build up a [Wiki](https://github.com/yikesinc/yikes-inc-easy-mailchimp-extender/wiki) on Github , for plug in installation/usage instructions
913
+ * Other: Altered single/double opt-in strings inside shortcode_form.php ([reference thread](https://wordpress.org/support/topic/code-mangling-on-script-use-in-messageserror-handling))
914
+ * Other: Removed 'Interest Group Label' option, as users can now update the name from within the plugin
915
+
916
+ = Easy MailChimp Forms 5.1.1 - November 5, 2014 =
917
+ Fix: repair 'Opt In' default list drop down on options page
918
+ Fix: repair errors being thrown when a commenter is added to a list
919
+
920
+ = Easy MailChimp Forms 5.1.0.1 - November 4, 2014 =
921
+
922
+ Removed the update MailChimp profile info link, some users brought up security concerns.
923
+ Fixed missing argument when using table display formatting.
924
+
925
+ = Easy MailChimp Forms 5.1 - November 3, 2014 =
926
+
927
+ We have added brand new functionality, allowing users to easily customize forms on the fly, through a familiar UI as well as a templating framework to allow users to design and implement their own custom forms. A minor security bug was patched in this release as well. We fixed an issue with the MailChimp API key check running on each page load, and added a few new filters to allow users to alter text.
928
+
929
+ = Easy MailChimp Forms 5.0.9 - October 3rd, 2014 =
930
+
931
+ **Fixes**
932
+
933
+ * Added autocomplete="false" to MailChimp API input field
934
+ * Added event listener to form submission (forms can now be placed in modals/slideout menus)
935
+
936
+ = Easy MailChimp Forms 5.0.8 - September 23, 2014 =
937
+
938
+ **Fixes**
939
+
940
+ * Band-aid fix for the -1 response returned from ajax.php
941
+
942
+ = Easy MailChimp Forms 5.0.7 - September 19, 2014 =
943
+
944
+ **Fixes**
945
+
946
+ * Security Vulnerability patched - props @g0blinResearch for privately disclosing the issue
947
+
948
+ = Easy MailChimp Forms 5.0.6 - August 22, 2014 =
949
+
950
+ **Fixes**
951
+
952
+ * fix bug with nonce security check when using table 'Preferred Form Layout' setting
953
+
954
+ = Easy MailChimp Forms 5.0.5 - August 21, 2014 =
955
+
956
+ **Fixes**
957
+
958
+ - added `stripslashes()` to the following settings fields :
959
+ - Single Opt-in Confirmation Message
960
+ - Double Opt-in Confirmation Message
961
+ - Interest Group Label
962
+ - Opt-in Checkbox Text
963
+
964
+ **Updates**
965
+
966
+ - Updated readme FAQ section
967
+
968
+ = Easy MailChimp Forms 5.0.4 - August 6, 2014 =
969
+ * Update SSL conditional in main plugin file
970
+ * Added mcrypt module check, for MailChimp API encryption
971
+ * Conditionally loaded scripts and styles in admin ( prevent conflicts )
972
+ * Included NONCE security checks on form submissions ( helps prevent CSRF and other attacks )
973
+ * Added proper update task function to add missing settings to the options page ( prevents undefined variables for new settings )
974
+ * Added missing styles to post page ( added missing icon to tinyMCE button )
975
+ * Added missing styles to widget page
976
+ * Adjusted Chimp Chatter activity time formatting to return correct time based on user time zone
977
+ * New Feature: Real time updates to MailChimp Account Activity ( utilizing the heartbeat MailChimp API )
978
+ * New Feature: Added MailChimp account activity widget to dashboard ( with live updates using heartbeat MailChimp API )
979
+ * Added screenshot of admin dashboard account activity widget
980
+
981
+ = Easy MailChimp Forms 4.5 =
982
+ * Added reCAPTCHA support to prevent bots and spammers from submitting forms
983
+ * Split settings page into three separate sections
984
+ * Removed Jetpack sharing icons from appearing in the success messages (removed sharedaddy filter)
985
+ * Updated translation files with new strings
986
+ * Update existing screen shots and add new screen shot
987
+ * Update FAQ
988
+ * Added "loaded server modules" to the debug page, to better aid in support requests
989
+
990
+ = Easy MailChimp Forms 3.0 =
991
+ * Update MailChimp API to v2.0
992
+ * Added MailChimp API Key Validation Check
993
+
994
+ = Easy MailChimp Forms 2.2.0 =
995
+ * Changed name of plugin to Easy MailChimp Forms
996
+ * Added support for multiples of the same MailChimp list
997
+ * Bug fixes
998
+
999
+ = YIKES Inc Easy MailChimp Extender 2.1.0 =
1000
+ * Added support for multiples of the same MailChimp list
1001
+ * Bug fixes
1002
+
1003
+ = YIKES Inc Easy MailChimp Extender 2.0.0 =
1004
+ * Supports custom merge vars now
1005
+ * Allows import from MailChimp
1006
+ * Allows Table or Div output
1007
+
1008
+ = YIKES Inc Easy MailChimp Extender 1.3.1 =
1009
+ * Fixed form not submitting to MailChimp for anonymous users bug
1010
+
1011
+ = YIKES Inc Easy MailChimp Extender 1.3.0 =
1012
+ * Custom merge vars allows more customized field configuration
1013
+
1014
+ = YIKES Inc Easy MailChimp Extender 1.2.0 =
1015
+ * Removed required from First Name and Last Name fields
1016
+ * Added update routines for future versions
1017
+
1018
+ = YIKES Inc Easy MailChimp Extender 1.1.0 =
1019
+ * Changed the list logic and added a notice for the MERGE VAR naming schema
1020
+
1021
+ = YIKES Inc Easy MailChimp Extender 1.0.1 =
1022
+ * Changed CSS paths from Absolute to Relative
1023
+
1024
+ = YIKES Inc Easy MailChimp Extender 1.0.0 =
1025
+ * Initial Release
yikes-inc-easy-mailchimp-extender.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: Easy Forms for MailChimp by YIKES
4
  * Plugin URI: http://www.yikesinc.com/services/yikes-inc-easy-mailchimp-extender/
5
  * Description: YIKES Easy Forms for MailChimp links your site to MailChimp and allows you to generate and display mailing list opt-in forms anywhere on your site with ease.
6
- * Version: 6.0.5.4
7
  * Author: YIKES
8
  * Author URI: http://www.yikesinc.com/
9
  * License: GPL-3.0+
3
  * Plugin Name: Easy Forms for MailChimp by YIKES
4
  * Plugin URI: http://www.yikesinc.com/services/yikes-inc-easy-mailchimp-extender/
5
  * Description: YIKES Easy Forms for MailChimp links your site to MailChimp and allows you to generate and display mailing list opt-in forms anywhere on your site with ease.
6
+ * Version: 6.0.5.5
7
  * Author: YIKES
8
  * Author URI: http://www.yikesinc.com/
9
  * License: GPL-3.0+