MailChimp for WordPress - Version 4.8.8

Version Description

Download this release

Release Info

Developer DvanKooten
Plugin Icon 128x128 MailChimp for WordPress
Version 4.8.8
Comparing to
See all releases

Code changes from version 4.8.7 to 4.8.8

CHANGELOG.md CHANGED
@@ -1,6 +1,11 @@
1
  Changelog
2
  =========
3
 
 
 
 
 
 
4
  #### 4.8.7 - Mar 2, 2022
5
 
6
  - Fix PHP 8.1 deprecation warnings in `MC4WP_Container` class.
1
  Changelog
2
  =========
3
 
4
+ #### 4.8.8 - Aug 25, 2022
5
+
6
+ - Fix mc4wp_get_request_ip_address() to pass new Mailchimp validation format. This fixes the "This value is not a valid IP." error some users using a proxy may have been seeing.
7
+
8
+
9
  #### 4.8.7 - Mar 2, 2022
10
 
11
  - Fix PHP 8.1 deprecation warnings in `MC4WP_Container` class.
includes/forms/class-admin.php CHANGED
@@ -246,89 +246,9 @@ class MC4WP_Forms_Admin {
246
 
247
  // if current user can not post unfiltered HTML, run HTML through whitelist using wp_kses
248
  if ( ! current_user_can( 'unfiltered_html' ) ) {
249
- $always_allowed_attr = array_fill_keys(
250
- array(
251
- 'aria-describedby',
252
- 'aria-details',
253
- 'aria-label',
254
- 'aria-labelledby',
255
- 'aria-hidden',
256
- 'class',
257
- 'id',
258
- 'style',
259
- 'title',
260
- 'role',
261
- 'data-*',
262
- 'tabindex',
263
- ),
264
- true
265
- );
266
- $input_allowed_attr = array_merge(
267
- $always_allowed_attr,
268
- array_fill_keys(
269
- array(
270
- 'type',
271
- 'required',
272
- 'placeholder',
273
- 'value',
274
- 'name',
275
- 'step',
276
- 'min',
277
- 'max',
278
- 'checked',
279
- 'width',
280
- 'autocomplete',
281
- 'autofocus',
282
- 'minlength',
283
- 'maxlength',
284
- 'size',
285
- 'pattern',
286
- 'disabled',
287
- 'readonly',
288
- ),
289
- true
290
- )
291
- );
292
-
293
- $allowed = array(
294
- 'p' => $always_allowed_attr,
295
- 'label' => array_merge( $always_allowed_attr, array( 'for' => true ) ),
296
- 'input' => $input_allowed_attr,
297
- 'button' => $input_allowed_attr,
298
- 'fieldset' => $always_allowed_attr,
299
- 'legend' => $always_allowed_attr,
300
- 'ul' => $always_allowed_attr,
301
- 'ol' => $always_allowed_attr,
302
- 'li' => $always_allowed_attr,
303
- 'select' => array_merge( $input_allowed_attr, array( 'multiple' => true ) ),
304
- 'option' => array_merge( $input_allowed_attr, array( 'selected' => true ) ),
305
- 'optgroup' => array(
306
- 'disabled' => true,
307
- 'label' => true,
308
- ),
309
- 'textarea' => array_merge(
310
- $input_allowed_attr,
311
- array(
312
- 'rows' => true,
313
- 'cols' => true,
314
- )
315
- ),
316
- 'div' => $always_allowed_attr,
317
- 'strong' => $always_allowed_attr,
318
- 'em' => $always_allowed_attr,
319
- 'span' => $always_allowed_attr,
320
- 'a' => array_merge( $always_allowed_attr, array( 'href' => true ) ),
321
- 'img' => array_merge(
322
- $always_allowed_attr,
323
- array(
324
- 'src' => true,
325
- 'alt' => '',
326
- )
327
- ),
328
- );
329
- $data['content'] = wp_kses( $data['content'], $allowed );
330
  foreach ( $data['messages'] as $key => $message ) {
331
- $data['messages'][ $key ] = wp_kses( $data['messages'][ $key ], $allowed );
332
  }
333
  }
334
 
246
 
247
  // if current user can not post unfiltered HTML, run HTML through whitelist using wp_kses
248
  if ( ! current_user_can( 'unfiltered_html' ) ) {
249
+ $data['content'] = mc4wp_kses( $data['content'] );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
250
  foreach ( $data['messages'] as $key => $message ) {
251
+ $data['messages'][ $key ] = mc4wp_kses( $data['messages'][ $key ] );
252
  }
253
  }
254
 
includes/functions.php CHANGED
@@ -220,15 +220,19 @@ function mc4wp_get_request_path() {
220
  */
221
  function mc4wp_get_request_ip_address() {
222
  if ( isset( $_SERVER['X-Forwarded-For'] ) ) {
223
- return $_SERVER['X-Forwarded-For'];
 
 
 
 
224
  }
225
 
226
- if ( isset( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) {
227
- return $_SERVER['HTTP_X_FORWARDED_FOR'];
228
- }
 
229
 
230
- if ( isset( $_SERVER['REMOTE_ADDR'] ) ) {
231
- return $_SERVER['REMOTE_ADDR'];
232
  }
233
 
234
  return null;
@@ -497,3 +501,104 @@ function mc4wp_array_get( $array, $key, $default = null ) {
497
 
498
  return $array;
499
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
220
  */
221
  function mc4wp_get_request_ip_address() {
222
  if ( isset( $_SERVER['X-Forwarded-For'] ) ) {
223
+ $ip_address = $_SERVER['X-Forwarded-For'];
224
+ } else if ( isset( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) {
225
+ $ip_address = $_SERVER['HTTP_X_FORWARDED_FOR'];
226
+ } else if ( isset( $_SERVER['REMOTE_ADDR'] ) ) {
227
+ return $_SERVER['REMOTE_ADDR'];
228
  }
229
 
230
+ if ( isset ( $ip_address ) ) {
231
+ if ( ! is_array( $ip_address ) ) {
232
+ $ip_address = explode( ',', $ip_address );
233
+ }
234
 
235
+ return trim( $ip_address[0] );
 
236
  }
237
 
238
  return null;
501
 
502
  return $array;
503
  }
504
+
505
+ /**
506
+ * Filters string and strips out all HTML tags and attributes, except what's in our whitelist.
507
+ *
508
+ * @param string $string The string to apply KSES whitelist on
509
+ * @return string
510
+ * @since 4.8.8
511
+ */
512
+ function mc4wp_kses( $string ) {
513
+ $always_allowed_attr = array_fill_keys(
514
+ array(
515
+ 'aria-describedby',
516
+ 'aria-details',
517
+ 'aria-label',
518
+ 'aria-labelledby',
519
+ 'aria-hidden',
520
+ 'class',
521
+ 'id',
522
+ 'style',
523
+ 'title',
524
+ 'role',
525
+ 'data-*',
526
+ 'tabindex',
527
+ ),
528
+ true
529
+ );
530
+ $input_allowed_attr = array_merge(
531
+ $always_allowed_attr,
532
+ array_fill_keys(
533
+ array(
534
+ 'type',
535
+ 'required',
536
+ 'placeholder',
537
+ 'value',
538
+ 'name',
539
+ 'step',
540
+ 'min',
541
+ 'max',
542
+ 'checked',
543
+ 'width',
544
+ 'autocomplete',
545
+ 'autofocus',
546
+ 'minlength',
547
+ 'maxlength',
548
+ 'size',
549
+ 'pattern',
550
+ 'disabled',
551
+ 'readonly',
552
+ ),
553
+ true
554
+ )
555
+ );
556
+
557
+ $allowed = array(
558
+ 'p' => $always_allowed_attr,
559
+ 'label' => array_merge( $always_allowed_attr, array( 'for' => true ) ),
560
+ 'input' => $input_allowed_attr,
561
+ 'button' => $input_allowed_attr,
562
+ 'fieldset' => $always_allowed_attr,
563
+ 'legend' => $always_allowed_attr,
564
+ 'ul' => $always_allowed_attr,
565
+ 'ol' => $always_allowed_attr,
566
+ 'li' => $always_allowed_attr,
567
+ 'select' => array_merge( $input_allowed_attr, array( 'multiple' => true ) ),
568
+ 'option' => array_merge( $input_allowed_attr, array( 'selected' => true ) ),
569
+ 'optgroup' => array(
570
+ 'disabled' => true,
571
+ 'label' => true,
572
+ ),
573
+ 'textarea' => array_merge(
574
+ $input_allowed_attr,
575
+ array(
576
+ 'rows' => true,
577
+ 'cols' => true,
578
+ )
579
+ ),
580
+ 'div' => $always_allowed_attr,
581
+ 'strong' => $always_allowed_attr,
582
+ 'b' => $always_allowed_attr,
583
+ 'i' => $always_allowed_attr,
584
+ 'br' => array(),
585
+ 'em' => $always_allowed_attr,
586
+ 'span' => $always_allowed_attr,
587
+ 'a' => array_merge( $always_allowed_attr, array( 'href' => true ) ),
588
+ 'img' => array_merge(
589
+ $always_allowed_attr,
590
+ array(
591
+ 'src' => true,
592
+ 'alt' => true,
593
+ 'width' => true,
594
+ 'height' => true,
595
+ 'srcset' => true,
596
+ 'sizes' => true,
597
+ 'referrerpolicy' => true,
598
+ )
599
+ ),
600
+ 'u' => $always_allowed_attr,
601
+ );
602
+
603
+ return wp_kses( $string, $allowed );
604
+ }
includes/integrations/class-admin.php CHANGED
@@ -138,6 +138,11 @@ class MC4WP_Integration_Admin {
138
  $settings['lists'] = array();
139
  }
140
 
 
 
 
 
 
141
  return $settings;
142
  }
143
 
138
  $settings['lists'] = array();
139
  }
140
 
141
+ $settings['label'] = strip_tags( $settings['label'], '<strong><b><br><a><script><u><em><i><span><img>' );
142
+ if ( ! current_user_can( 'unfiltered_html' ) ) {
143
+ $settings['label'] = mc4wp_kses( $settings['label'] );
144
+ }
145
+
146
  return $settings;
147
  }
148
 
languages/mailchimp-for-wp.pot CHANGED
@@ -405,23 +405,23 @@ msgstr ""
405
  msgid "Form"
406
  msgstr ""
407
 
408
- #: includes/forms/class-admin.php:161, includes/forms/class-admin.php:368
409
  msgid "Form saved."
410
  msgstr ""
411
 
412
- #: includes/forms/class-admin.php:477
413
  msgid "Form not found."
414
  msgstr ""
415
 
416
- #: includes/forms/class-admin.php:479
417
  msgid "Go back"
418
  msgstr ""
419
 
420
- #: includes/forms/class-admin.php:542, includes/forms/class-widget.php:31
421
  msgid "Mailchimp Sign-Up Form"
422
  msgstr ""
423
 
424
- #: includes/forms/class-admin.php:546
425
  msgid "Select the form to show"
426
  msgstr ""
427
 
405
  msgid "Form"
406
  msgstr ""
407
 
408
+ #: includes/forms/class-admin.php:161, includes/forms/class-admin.php:288
409
  msgid "Form saved."
410
  msgstr ""
411
 
412
+ #: includes/forms/class-admin.php:397
413
  msgid "Form not found."
414
  msgstr ""
415
 
416
+ #: includes/forms/class-admin.php:399
417
  msgid "Go back"
418
  msgstr ""
419
 
420
+ #: includes/forms/class-admin.php:462, includes/forms/class-widget.php:31
421
  msgid "Mailchimp Sign-Up Form"
422
  msgstr ""
423
 
424
+ #: includes/forms/class-admin.php:466
425
  msgid "Select the form to show"
426
  msgstr ""
427
 
mailchimp-for-wp.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: MC4WP: Mailchimp for WordPress
4
  Plugin URI: https://www.mc4wp.com/#utm_source=wp-plugin&utm_medium=mailchimp-for-wp&utm_campaign=plugins-page
5
  Description: Mailchimp for WordPress by ibericode. Adds various highly effective sign-up methods to your site.
6
- Version: 4.8.7
7
  Author: ibericode
8
  Author URI: https://ibericode.com/
9
  Text Domain: mailchimp-for-wp
@@ -11,7 +11,7 @@ Domain Path: /languages
11
  License: GPL v3
12
 
13
  Mailchimp for WordPress
14
- Copyright (C) 2012-2021, Danny van Kooten, hi@dannyvankooten.com
15
 
16
  This program is free software: you can redistribute it and/or modify
17
  it under the terms of the GNU General Public License as published by
@@ -45,7 +45,7 @@ function _mc4wp_load_plugin() {
45
  }
46
 
47
  // bootstrap the core plugin
48
- define( 'MC4WP_VERSION', '4.8.7' );
49
  define( 'MC4WP_PLUGIN_DIR', __DIR__ );
50
  define( 'MC4WP_PLUGIN_FILE', __FILE__ );
51
 
3
  Plugin Name: MC4WP: Mailchimp for WordPress
4
  Plugin URI: https://www.mc4wp.com/#utm_source=wp-plugin&utm_medium=mailchimp-for-wp&utm_campaign=plugins-page
5
  Description: Mailchimp for WordPress by ibericode. Adds various highly effective sign-up methods to your site.
6
+ Version: 4.8.8
7
  Author: ibericode
8
  Author URI: https://ibericode.com/
9
  Text Domain: mailchimp-for-wp
11
  License: GPL v3
12
 
13
  Mailchimp for WordPress
14
+ Copyright (C) 2012-2022, Danny van Kooten, hi@dannyvankooten.com
15
 
16
  This program is free software: you can redistribute it and/or modify
17
  it under the terms of the GNU General Public License as published by
45
  }
46
 
47
  // bootstrap the core plugin
48
+ define( 'MC4WP_VERSION', '4.8.8' );
49
  define( 'MC4WP_PLUGIN_DIR', __DIR__ );
50
  define( 'MC4WP_PLUGIN_FILE', __FILE__ );
51
 
readme.txt CHANGED
@@ -1,10 +1,10 @@
1
  === MC4WP: Mailchimp for WordPress ===
2
  Contributors: Ibericode, DvanKooten, hchouhan, lapzor
3
- Donate link: https://www.mc4wp.com/#utm_source=wp-plugin-repo&utm_medium=mailchimp-for-wp&utm_campaign=donate-link
4
  Tags: mailchimp, mc4wp, email, marketing, newsletter, subscribe, widget, mc4wp, contact form 7, woocommerce, buddypress, ibericode, mailchimp form
5
  Requires at least: 4.6
6
  Tested up to: 6.0
7
- Stable tag: 4.8.7
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
  Requires PHP: 5.3
@@ -197,6 +197,11 @@ The plugin provides various filter & action hooks that allow you to modify or ex
197
  == Changelog ==
198
 
199
 
 
 
 
 
 
200
  #### 4.8.7 - Mar 2, 2022
201
 
202
  - Fix PHP 8.1 deprecation warnings in `MC4WP_Container` class.
1
  === MC4WP: Mailchimp for WordPress ===
2
  Contributors: Ibericode, DvanKooten, hchouhan, lapzor
3
+ Donate link: https://www.mc4wp.com/contribute/#utm_source=wp-plugin-repo&utm_medium=mailchimp-for-wp&utm_campaign=donate-link
4
  Tags: mailchimp, mc4wp, email, marketing, newsletter, subscribe, widget, mc4wp, contact form 7, woocommerce, buddypress, ibericode, mailchimp form
5
  Requires at least: 4.6
6
  Tested up to: 6.0
7
+ Stable tag: 4.8.8
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
  Requires PHP: 5.3
197
  == Changelog ==
198
 
199
 
200
+ #### 4.8.8 - Aug 25, 2022
201
+
202
+ - Fix mc4wp_get_request_ip_address() to pass new Mailchimp validation format. This fixes the "This value is not a valid IP." error some users using a proxy may have been seeing.
203
+
204
+
205
  #### 4.8.7 - Mar 2, 2022
206
 
207
  - Fix PHP 8.1 deprecation warnings in `MC4WP_Container` class.
vendor/autoload.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
- return ComposerAutoloaderInit2932d1ab0d50021582953f784790b57f::getLoader();
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
+ return ComposerAutoloaderInit196a84116ebd1e945cc287a026139fea::getLoader();
vendor/composer/autoload_real.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
- class ComposerAutoloaderInit2932d1ab0d50021582953f784790b57f
6
  {
7
  private static $loader;
8
 
@@ -24,15 +24,15 @@ class ComposerAutoloaderInit2932d1ab0d50021582953f784790b57f
24
 
25
  require __DIR__ . '/platform_check.php';
26
 
27
- spl_autoload_register(array('ComposerAutoloaderInit2932d1ab0d50021582953f784790b57f', 'loadClassLoader'), true, true);
28
  self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
29
- spl_autoload_unregister(array('ComposerAutoloaderInit2932d1ab0d50021582953f784790b57f', 'loadClassLoader'));
30
 
31
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
32
  if ($useStaticLoader) {
33
  require __DIR__ . '/autoload_static.php';
34
 
35
- call_user_func(\Composer\Autoload\ComposerStaticInit2932d1ab0d50021582953f784790b57f::getInitializer($loader));
36
  } else {
37
  $map = require __DIR__ . '/autoload_namespaces.php';
38
  foreach ($map as $namespace => $path) {
@@ -53,12 +53,12 @@ class ComposerAutoloaderInit2932d1ab0d50021582953f784790b57f
53
  $loader->register(true);
54
 
55
  if ($useStaticLoader) {
56
- $includeFiles = Composer\Autoload\ComposerStaticInit2932d1ab0d50021582953f784790b57f::$files;
57
  } else {
58
  $includeFiles = require __DIR__ . '/autoload_files.php';
59
  }
60
  foreach ($includeFiles as $fileIdentifier => $file) {
61
- composerRequire2932d1ab0d50021582953f784790b57f($fileIdentifier, $file);
62
  }
63
 
64
  return $loader;
@@ -70,7 +70,7 @@ class ComposerAutoloaderInit2932d1ab0d50021582953f784790b57f
70
  * @param string $file
71
  * @return void
72
  */
73
- function composerRequire2932d1ab0d50021582953f784790b57f($fileIdentifier, $file)
74
  {
75
  if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
76
  $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
+ class ComposerAutoloaderInit196a84116ebd1e945cc287a026139fea
6
  {
7
  private static $loader;
8
 
24
 
25
  require __DIR__ . '/platform_check.php';
26
 
27
+ spl_autoload_register(array('ComposerAutoloaderInit196a84116ebd1e945cc287a026139fea', 'loadClassLoader'), true, true);
28
  self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
29
+ spl_autoload_unregister(array('ComposerAutoloaderInit196a84116ebd1e945cc287a026139fea', 'loadClassLoader'));
30
 
31
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
32
  if ($useStaticLoader) {
33
  require __DIR__ . '/autoload_static.php';
34
 
35
+ call_user_func(\Composer\Autoload\ComposerStaticInit196a84116ebd1e945cc287a026139fea::getInitializer($loader));
36
  } else {
37
  $map = require __DIR__ . '/autoload_namespaces.php';
38
  foreach ($map as $namespace => $path) {
53
  $loader->register(true);
54
 
55
  if ($useStaticLoader) {
56
+ $includeFiles = Composer\Autoload\ComposerStaticInit196a84116ebd1e945cc287a026139fea::$files;
57
  } else {
58
  $includeFiles = require __DIR__ . '/autoload_files.php';
59
  }
60
  foreach ($includeFiles as $fileIdentifier => $file) {
61
+ composerRequire196a84116ebd1e945cc287a026139fea($fileIdentifier, $file);
62
  }
63
 
64
  return $loader;
70
  * @param string $file
71
  * @return void
72
  */
73
+ function composerRequire196a84116ebd1e945cc287a026139fea($fileIdentifier, $file)
74
  {
75
  if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
76
  $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
vendor/composer/autoload_static.php CHANGED
@@ -4,7 +4,7 @@
4
 
5
  namespace Composer\Autoload;
6
 
7
- class ComposerStaticInit2932d1ab0d50021582953f784790b57f
8
  {
9
  public static $files = array (
10
  'fca581ae5268210490253d58378748c5' => __DIR__ . '/../..' . '/includes/functions.php',
@@ -87,7 +87,7 @@ class ComposerStaticInit2932d1ab0d50021582953f784790b57f
87
  public static function getInitializer(ClassLoader $loader)
88
  {
89
  return \Closure::bind(function () use ($loader) {
90
- $loader->classMap = ComposerStaticInit2932d1ab0d50021582953f784790b57f::$classMap;
91
 
92
  }, null, ClassLoader::class);
93
  }
4
 
5
  namespace Composer\Autoload;
6
 
7
+ class ComposerStaticInit196a84116ebd1e945cc287a026139fea
8
  {
9
  public static $files = array (
10
  'fca581ae5268210490253d58378748c5' => __DIR__ . '/../..' . '/includes/functions.php',
87
  public static function getInitializer(ClassLoader $loader)
88
  {
89
  return \Closure::bind(function () use ($loader) {
90
+ $loader->classMap = ComposerStaticInit196a84116ebd1e945cc287a026139fea::$classMap;
91
 
92
  }, null, ClassLoader::class);
93
  }
vendor/composer/installed.php CHANGED
@@ -5,7 +5,7 @@
5
  'type' => 'wordpress-plugin',
6
  'install_path' => __DIR__ . '/../../',
7
  'aliases' => array(),
8
- 'reference' => 'fb703fd7eccff30181852e68089c308e92d21272',
9
  'name' => 'ibericode/mailchimp-for-wordpress',
10
  'dev' => false,
11
  ),
@@ -16,7 +16,7 @@
16
  'type' => 'wordpress-plugin',
17
  'install_path' => __DIR__ . '/../../',
18
  'aliases' => array(),
19
- 'reference' => 'fb703fd7eccff30181852e68089c308e92d21272',
20
  'dev_requirement' => false,
21
  ),
22
  ),
5
  'type' => 'wordpress-plugin',
6
  'install_path' => __DIR__ . '/../../',
7
  'aliases' => array(),
8
+ 'reference' => '36b10746c67df50a41380915a6dc8a65d243e413',
9
  'name' => 'ibericode/mailchimp-for-wordpress',
10
  'dev' => false,
11
  ),
16
  'type' => 'wordpress-plugin',
17
  'install_path' => __DIR__ . '/../../',
18
  'aliases' => array(),
19
+ 'reference' => '36b10746c67df50a41380915a6dc8a65d243e413',
20
  'dev_requirement' => false,
21
  ),
22
  ),