WordPress Page Builder – Beaver Builder - Version 1.5.9

Version Description

Download this release

Release Info

Developer justinbusa
Plugin Icon 128x128 WordPress Page Builder – Beaver Builder
Version 1.5.9
Comparing to
See all releases

Code changes from version 1.5.6 to 1.5.9

Files changed (46) hide show
  1. changelog.txt +66 -0
  2. classes/class-fl-builder-admin-posts.php +3 -1
  3. classes/class-fl-builder-admin-settings.php +23 -67
  4. classes/class-fl-builder-admin.php +6 -2
  5. classes/class-fl-builder-model.php +271 -176
  6. classes/class-fl-builder-service-hatchbuck.php +256 -0
  7. classes/class-fl-builder-service-infusionsoft.php +300 -0
  8. classes/class-fl-builder-service-sendinblue.php +2 -2
  9. classes/class-fl-builder-services.php +15 -0
  10. classes/class-fl-builder.php +98 -36
  11. css/fl-builder-admin-posts.css +24 -1
  12. css/fl-builder-admin-settings.css +1 -0
  13. css/fl-builder-layout.css +48 -11
  14. css/fl-builder.css +62 -35
  15. fl-builder.php +2 -2
  16. includes/admin-posts.php +1 -1
  17. includes/column-css.php +18 -1
  18. includes/column-settings.php +124 -0
  19. includes/js-config.php +2 -2
  20. includes/row-settings.php +4 -4
  21. includes/ui.php +13 -2
  22. includes/updater-config.php +1 -1
  23. includes/user-template-settings.php +0 -22
  24. includes/vendor/infusionsoft/infusionsoft.pem +3894 -0
  25. includes/vendor/infusionsoft/isdk.php +2632 -0
  26. includes/vendor/infusionsoft/xmlrpc-3.0/Changelog +1573 -0
  27. includes/vendor/infusionsoft/xmlrpc-3.0/Makefile +123 -0
  28. includes/vendor/infusionsoft/xmlrpc-3.0/NEWS +333 -0
  29. includes/vendor/infusionsoft/xmlrpc-3.0/README +13 -0
  30. includes/vendor/infusionsoft/xmlrpc-3.0/extras/rsakey.pem +9 -0
  31. includes/vendor/infusionsoft/xmlrpc-3.0/extras/test.pl +52 -0
  32. includes/vendor/infusionsoft/xmlrpc-3.0/extras/test.py +37 -0
  33. includes/vendor/infusionsoft/xmlrpc-3.0/extras/workspace.testPhpServer.fttb +1 -1
  34. includes/vendor/infusionsoft/xmlrpc-3.0/lib/xmlrpc.inc +3326 -0
  35. includes/vendor/infusionsoft/xmlrpc-3.0/lib/xmlrpc_wrappers.inc +955 -0
  36. includes/vendor/infusionsoft/xmlrpc-3.0/lib/xmlrpcs.inc +1246 -0
  37. js/fl-builder-layout.js +76 -7
  38. js/fl-builder-preview.js +11 -2
  39. js/fl-builder-tour.js +7 -1
  40. js/fl-builder.js +219 -202
  41. languages/es_ES.mo +0 -0
  42. languages/es_ES.po +1324 -844
  43. languages/fr_FR.mo +0 -0
  44. languages/fr_FR.po +1609 -646
  45. languages/it_IT.mo +0 -0
  46. languages/it_IT.po +441 -477
changelog.txt CHANGED
@@ -1,3 +1,69 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  <h4>1.5.6 - 04/26/2015</h4>
2
  <p><strong>Enhancements</strong></p>
3
  <ul>
1
+ <h4>1.5.9 - 06/01/2015</h4>
2
+ <p><strong>Enhancements</strong></p>
3
+ <ul>
4
+ <li>Accordion and tab items can now be linked to. Please see this <a href="https://www.wpbeaverbuilder.com/knowledge-base/linking-to-tabs-and-accordions/">knowledge base entry</a> for more info.</li>
5
+ <li>Button icons can now be added after the button text.</li>
6
+ <li>Added background color overlay for columns.</li>
7
+ <li>Added Dutch translation.</li>
8
+ </ul>
9
+ <p><strong>Bug Fixes</strong></p>
10
+ <ul>
11
+ <li>Fixed issues with modules, widgets and shortcodes that create secondary loops causing the page to become unresponsive.</li>
12
+ <li>Fixed a bug with widgets that use checkbox groups.</li>
13
+ <li>Fixed a bug with the pricing table module that caused some styling not to show.</li>
14
+ <li>The map module no longer scrolls as you scroll the page.</li>
15
+ <li>CSS tweak to prevent the text editor from breaking when the body's position is set to relative.</li>
16
+ <li>CSS tweak for photos to prevent extra space below them.</li>
17
+ <li>CSS tweak to make fixed background photos scroll on iOS to prevent them from getting blown up too big.</li>
18
+ <li>CSS tweak to fix a FireFox bug with callouts.</li>
19
+ <li>Added jQuery as a dependency for fl-builder-layout-(POST_ID).js so it's included after jquery.js if jquery.js is moved to wp_footer.</li>
20
+ </ul>
21
+
22
+ <h4>1.5.8 - 05/17/2015</h4>
23
+ <p>Please see <a href="https://www.wpbeaverbuilder.com/?p=14686" target="_blank">the blog post</a> for more info on this release.</p>
24
+ <p><strong>Enhancements</strong></p>
25
+ <ul>
26
+ <li>User defined templates can now be categorized and ordered.</li>
27
+ <li>Revisions are now enabled for user defined templates.</li>
28
+ <li>Added a setting to enable the templates admin interface for editing templates in the WordPress admin.</li>
29
+ <li>Added a setting for Agency members to override core templates.</li>
30
+ <li>Added Hatchbuck integration to the Subscribe Form module.</li>
31
+ <li>Photo backgrounds can now be added to columns.</li>
32
+ </ul>
33
+ <p><strong>Bug Fixes</strong></p>
34
+ <ul>
35
+ <li>Fixed a CSS z-index bug with the Content Slider module's next/prev buttons.</li>
36
+ </ul>
37
+
38
+ <h4>1.5.7.2 - 05/12/2015</h4>
39
+ <p><strong>Bug Fixes</strong></p>
40
+ <ul>
41
+ <li>Fixed a bug with shortcodes not being rendered when the Posts module is present on a page.</li>
42
+ </ul>
43
+
44
+ <h4>1.5.7.1 - 05/10/2015</h4>
45
+ <p><strong>Bug Fixes</strong></p>
46
+ <ul>
47
+ <li>Fixed a FireFox and IE bug with the Photo module introduced in 1.5.7.</li>
48
+ <li>Fixed a CSS bug with the height of the Content Slider module when multiple sliders are on the same page.</li>
49
+ <li>Fixed a bug that prevented shortcodes from being escaped with double brackets.</li>
50
+ <li>Fixed a bug that caused the Video module to freeze the builder with videos that are uploaded to WordPress.</li>
51
+ </ul>
52
+
53
+ <h4>1.5.7 - 05/04/2015</h4>
54
+ <p><strong>Enhancements</strong></p>
55
+ <ul>
56
+ <li>Added Infusionsoft integration.</li>
57
+ </ul>
58
+ <p><strong>Bug Fixes</strong></p>
59
+ <ul>
60
+ <li>Fixed a bug causing MailPoet to be unavailable in the Subscribe Form module.</li>
61
+ <li>Fixed a bug causing the builder's admin settings to be unavailable when DISALLOW_FILE_MODS is set to true.</li>
62
+ <li>Fixed a bug with new lines in photo captions breaking the Slideshow module.</li>
63
+ <li>Fixed a CSS bug with photo captions that are shown on hover.</li>
64
+ <li>Fixed floating content issues with the Accordion module.</li>
65
+ </ul>
66
+
67
  <h4>1.5.6 - 04/26/2015</h4>
68
  <p><strong>Enhancements</strong></p>
69
  <ul>
classes/class-fl-builder-admin-posts.php CHANGED
@@ -88,7 +88,9 @@ final class FLBuilderAdminPosts {
88
  {
89
  global $post;
90
 
91
- $enabled = FLBuilderModel::is_builder_enabled();
 
 
92
 
93
  include FL_BUILDER_DIR . 'includes/admin-posts.php';
94
  }
88
  {
89
  global $post;
90
 
91
+ $post_type_obj = get_post_type_object ( $post->post_type );
92
+ $post_type_name = strtolower( $post_type_obj->labels->singular_name );
93
+ $enabled = FLBuilderModel::is_builder_enabled();
94
 
95
  include FL_BUILDER_DIR . 'includes/admin-posts.php';
96
  }
classes/class-fl-builder-admin-settings.php CHANGED
@@ -59,10 +59,10 @@ final class FLBuilderAdminSettings {
59
  */
60
  static public function menu()
61
  {
62
- if ( current_user_can( 'delete_plugins' ) ) {
63
 
64
  $title = FLBuilderModel::get_branding();
65
- $cap = 'delete_plugins';
66
  $slug = 'fl-builder-settings';
67
  $func = 'FLBuilderAdminSettings::render';
68
 
@@ -334,7 +334,7 @@ final class FLBuilderAdminSettings {
334
  static public function save()
335
  {
336
  // Only admins can save settings.
337
- if(!current_user_can('delete_plugins')) {
338
  return;
339
  }
340
 
@@ -365,16 +365,8 @@ final class FLBuilderAdminSettings {
365
  if ( is_array( $_POST['fl-modules'] ) ) {
366
  $modules = array_map( 'sanitize_text_field', $_POST['fl-modules'] );
367
  }
368
-
369
- if ( is_network_admin() ) {
370
- update_site_option( '_fl_builder_enabled_modules', $modules );
371
- }
372
- else if ( self::multisite_support() && ! isset( $_POST['fl-override-ms'] ) ) {
373
- delete_option( '_fl_builder_enabled_modules' );
374
- }
375
- else {
376
- update_option( '_fl_builder_enabled_modules', $modules );
377
- }
378
  }
379
  }
380
 
@@ -382,6 +374,7 @@ final class FLBuilderAdminSettings {
382
  * Saves the enabled templates.
383
  *
384
  * @since 1.0
 
385
  * @access private
386
  * @return void
387
  */
@@ -389,16 +382,14 @@ final class FLBuilderAdminSettings {
389
  {
390
  if ( isset( $_POST['fl-templates-nonce'] ) && wp_verify_nonce( $_POST['fl-templates-nonce'], 'templates' ) ) {
391
 
392
- $enabled_templates = sanitize_text_field( $_POST['fl-template-settings'] );
393
-
394
- if ( is_network_admin() ) {
395
- update_site_option( '_fl_builder_enabled_templates', $enabled_templates );
396
- }
397
- else if ( self::multisite_support() && ! isset( $_POST['fl-override-ms'] ) ) {
398
- delete_option( '_fl_builder_enabled_templates' );
399
- }
400
- else {
401
- update_option( '_fl_builder_enabled_templates', $enabled_templates );
402
  }
403
  }
404
  }
@@ -415,26 +406,20 @@ final class FLBuilderAdminSettings {
415
  if ( isset( $_POST['fl-post-types-nonce'] ) && wp_verify_nonce( $_POST['fl-post-types-nonce'], 'post-types' ) ) {
416
 
417
  if ( is_network_admin() ) {
418
-
419
  $post_types = sanitize_text_field( $_POST['fl-post-types'] );
420
  $post_types = str_replace( ' ', '', $post_types );
421
  $post_types = explode( ',', $post_types );
422
-
423
- update_site_option( '_fl_builder_post_types', $post_types );
424
- }
425
- else if ( self::multisite_support() && ! isset($_POST['fl-override-ms'] ) ) {
426
- delete_option( '_fl_builder_post_types' );
427
  }
428
  else {
429
 
430
  $post_types = array();
431
 
432
- if ( is_array( $_POST['fl-post-types'] ) ) {
433
  $post_types = array_map( 'sanitize_text_field', $_POST['fl-post-types'] );
434
  }
435
-
436
- update_option( '_fl_builder_post_types', $post_types );
437
  }
 
 
438
  }
439
  }
440
 
@@ -552,16 +537,7 @@ final class FLBuilderAdminSettings {
552
  */
553
  static private function update_enabled_icons( $enabled_icons = array() )
554
  {
555
- if ( is_network_admin() ) {
556
- update_site_option( '_fl_builder_enabled_icons', $enabled_icons );
557
- update_option( '_fl_builder_enabled_icons', $enabled_icons );
558
- }
559
- else if ( self::multisite_support() && ! isset( $_POST['fl-override-ms'] ) ) {
560
- delete_option( '_fl_builder_enabled_icons' );
561
- }
562
- else {
563
- update_option( '_fl_builder_enabled_icons', $enabled_icons );
564
- }
565
  }
566
 
567
  /**
@@ -577,15 +553,7 @@ final class FLBuilderAdminSettings {
577
 
578
  $capability = sanitize_text_field( $_POST['fl-editing-capability'] );
579
 
580
- if ( is_network_admin() ) {
581
- update_site_option( '_fl_builder_editing_capability', $capability );
582
- }
583
- else if ( self::multisite_support() && ! isset( $_POST['fl-override-ms'] ) ) {
584
- delete_option( '_fl_builder_editing_capability' );
585
- }
586
- else {
587
- update_option( '_fl_builder_editing_capability', $capability );
588
- }
589
  }
590
  }
591
 
@@ -603,14 +571,8 @@ final class FLBuilderAdminSettings {
603
  $branding = wp_kses_post( $_POST['fl-branding'] );
604
  $branding_icon = sanitize_text_field( $_POST['fl-branding-icon'] );
605
 
606
- if ( is_network_admin() ) {
607
- update_site_option( '_fl_builder_branding', $branding );
608
- update_site_option( '_fl_builder_branding_icon', $branding_icon );
609
- }
610
- else {
611
- update_option( '_fl_builder_branding', $branding );
612
- update_option( '_fl_builder_branding_icon', $branding_icon );
613
- }
614
  }
615
  }
616
 
@@ -675,13 +637,7 @@ final class FLBuilderAdminSettings {
675
  return;
676
  }
677
 
678
- // Save the settings.
679
- if ( is_network_admin() ) {
680
- update_site_option( '_fl_builder_help_button', $settings );
681
- }
682
- else {
683
- update_option( '_fl_builder_help_button', $settings );
684
- }
685
  }
686
  }
687
 
@@ -694,7 +650,7 @@ final class FLBuilderAdminSettings {
694
  */
695
  static private function clear_cache()
696
  {
697
- if ( ! current_user_can( 'delete_plugins' ) ) {
698
  return;
699
  }
700
  else if ( isset( $_POST['fl-cache-nonce'] ) && wp_verify_nonce( $_POST['fl-cache-nonce'], 'cache' ) ) {
59
  */
60
  static public function menu()
61
  {
62
+ if ( current_user_can( 'delete_users' ) ) {
63
 
64
  $title = FLBuilderModel::get_branding();
65
+ $cap = 'delete_users';
66
  $slug = 'fl-builder-settings';
67
  $func = 'FLBuilderAdminSettings::render';
68
 
334
  static public function save()
335
  {
336
  // Only admins can save settings.
337
+ if(!current_user_can('delete_users')) {
338
  return;
339
  }
340
 
365
  if ( is_array( $_POST['fl-modules'] ) ) {
366
  $modules = array_map( 'sanitize_text_field', $_POST['fl-modules'] );
367
  }
368
+
369
+ FLBuilderModel::update_admin_settings_option( '_fl_builder_enabled_modules', $modules, true );
 
 
 
 
 
 
 
 
370
  }
371
  }
372
 
374
  * Saves the enabled templates.
375
  *
376
  * @since 1.0
377
+ * @since 1.5.7 Added the ability to enable the templates admin UI.
378
  * @access private
379
  * @return void
380
  */
382
  {
383
  if ( isset( $_POST['fl-templates-nonce'] ) && wp_verify_nonce( $_POST['fl-templates-nonce'], 'templates' ) ) {
384
 
385
+ $enabled_templates = sanitize_text_field( $_POST['fl-template-settings'] );
386
+ $admin_ui_enabled = isset( $_POST['fl-template-admin-ui'] ) ? 1 : 0;
387
+
388
+ FLBuilderModel::update_admin_settings_option( '_fl_builder_enabled_templates', $enabled_templates, true );
389
+ FLBuilderModel::update_admin_settings_option( '_fl_builder_user_templates_admin', $admin_ui_enabled, true );
390
+
391
+ if ( class_exists( 'FLBuilderTemplatesOverride' ) ) {
392
+ FLBuilderTemplatesOverride::save_admin_settings();
 
 
393
  }
394
  }
395
  }
406
  if ( isset( $_POST['fl-post-types-nonce'] ) && wp_verify_nonce( $_POST['fl-post-types-nonce'], 'post-types' ) ) {
407
 
408
  if ( is_network_admin() ) {
 
409
  $post_types = sanitize_text_field( $_POST['fl-post-types'] );
410
  $post_types = str_replace( ' ', '', $post_types );
411
  $post_types = explode( ',', $post_types );
 
 
 
 
 
412
  }
413
  else {
414
 
415
  $post_types = array();
416
 
417
+ if ( isset( $_POST['fl-post-types'] ) && is_array( $_POST['fl-post-types'] ) ) {
418
  $post_types = array_map( 'sanitize_text_field', $_POST['fl-post-types'] );
419
  }
 
 
420
  }
421
+
422
+ FLBuilderModel::update_admin_settings_option( '_fl_builder_post_types', $post_types, true );
423
  }
424
  }
425
 
537
  */
538
  static private function update_enabled_icons( $enabled_icons = array() )
539
  {
540
+ FLBuilderModel::update_admin_settings_option( '_fl_builder_enabled_icons', $enabled_icons, true );
 
 
 
 
 
 
 
 
 
541
  }
542
 
543
  /**
553
 
554
  $capability = sanitize_text_field( $_POST['fl-editing-capability'] );
555
 
556
+ FLBuilderModel::update_admin_settings_option( '_fl_builder_editing_capability', $capability, true );
 
 
 
 
 
 
 
 
557
  }
558
  }
559
 
571
  $branding = wp_kses_post( $_POST['fl-branding'] );
572
  $branding_icon = sanitize_text_field( $_POST['fl-branding-icon'] );
573
 
574
+ FLBuilderModel::update_admin_settings_option( '_fl_builder_branding', $branding, false );
575
+ FLBuilderModel::update_admin_settings_option( '_fl_builder_branding_icon', $branding_icon, false );
 
 
 
 
 
 
576
  }
577
  }
578
 
637
  return;
638
  }
639
 
640
+ FLBuilderModel::update_admin_settings_option( '_fl_builder_help_button', $settings, false );
 
 
 
 
 
 
641
  }
642
  }
643
 
650
  */
651
  static private function clear_cache()
652
  {
653
+ if ( ! current_user_can( 'delete_users' ) ) {
654
  return;
655
  }
656
  else if ( isset( $_POST['fl-cache-nonce'] ) && wp_verify_nonce( $_POST['fl-cache-nonce'], 'cache' ) ) {
classes/class-fl-builder-admin.php CHANGED
@@ -149,20 +149,24 @@ final class FLBuilderAdmin {
149
  }
150
 
151
  /**
152
- * Loads builder classes for wp-admin.
153
  *
154
  * @since 1.0
155
  * @return void
156
  */
157
  static public function init_classes()
158
  {
159
- $templates_class = FL_BUILDER_DIR . 'classes/class-fl-builder-templates.php';
 
160
  $ms_class = FL_BUILDER_DIR . 'classes/class-fl-builder-multisite.php';
161
  $ms_settings_class = FL_BUILDER_DIR . 'classes/class-fl-builder-multisite-settings.php';
162
 
163
  if(file_exists($templates_class)) {
164
  require_once $templates_class;
165
  }
 
 
 
166
  if(is_multisite()) {
167
 
168
  if(file_exists($ms_class)) {
149
  }
150
 
151
  /**
152
+ * Loads builder classes if they exist.
153
  *
154
  * @since 1.0
155
  * @return void
156
  */
157
  static public function init_classes()
158
  {
159
+ $templates_class = FL_BUILDER_DIR . 'classes/class-fl-builder-template-settings.php';
160
+ $overrides_class = FL_BUILDER_DIR . 'classes/class-fl-builder-templates-override.php';
161
  $ms_class = FL_BUILDER_DIR . 'classes/class-fl-builder-multisite.php';
162
  $ms_settings_class = FL_BUILDER_DIR . 'classes/class-fl-builder-multisite-settings.php';
163
 
164
  if(file_exists($templates_class)) {
165
  require_once $templates_class;
166
  }
167
+ if(file_exists($overrides_class)) {
168
+ require_once $overrides_class;
169
+ }
170
  if(is_multisite()) {
171
 
172
  if(file_exists($ms_class)) {
classes/class-fl-builder-model.php CHANGED
@@ -148,19 +148,21 @@ final class FLBuilderModel {
148
  */
149
  static public function get_edit_url( $post_id = false )
150
  {
151
- global $post;
152
-
153
  if ( false === $post_id ) {
154
- $post_id = $post->ID;
 
 
 
155
  }
156
 
157
- $url = add_query_arg( 'fl_builder', '', get_permalink( $post_id ) );
158
 
159
- if ( class_exists( 'WPMinify' ) ) {
160
- $url = add_query_arg( 'wp-minify-off', '1', $url );
 
 
 
161
  }
162
-
163
- return set_url_scheme( $url );
164
  }
165
 
166
  /**
@@ -235,24 +237,10 @@ final class FLBuilderModel {
235
  */
236
  static public function get_post_types()
237
  {
238
- $key = '_fl_builder_post_types';
239
- $default = array('page', 'fl-builder-template');
240
-
241
- // Get the value.
242
- if(is_network_admin()) {
243
- $value = get_site_option($key);
244
- }
245
- else if(class_exists('FLBuilderMultisiteSettings')) {
246
- $value = get_option($key);
247
- $value = !$value ? get_site_option($key) : $value;
248
- }
249
- else {
250
- $value = get_option($key);
251
- }
252
 
253
- // Return the value.
254
- if(!$value) {
255
- return $default;
256
  }
257
  else {
258
  $value[] = 'fl-builder-template';
@@ -277,20 +265,29 @@ final class FLBuilderModel {
277
  * is being worked on.
278
  *
279
  * @since 1.0
 
280
  * @return int|bool The post id or false.
281
  */
282
  static public function get_post_id()
283
  {
 
284
  global $post;
285
 
286
  $post_data = self::get_post_data();
287
 
288
- if(isset($post_data['post_id'])) {
 
289
  return $post_data['post_id'];
290
  }
291
- else if(isset($post)) {
 
 
 
 
 
292
  return $post->ID;
293
  }
 
294
  else {
295
  return false;
296
  }
@@ -1644,29 +1641,11 @@ final class FLBuilderModel {
1644
  */
1645
  static public function get_enabled_modules()
1646
  {
1647
- $key = '_fl_builder_enabled_modules';
1648
- $default = array_keys(self::$modules);
1649
  $default[] = 'all';
1650
-
1651
- // Get the value.
1652
- if(is_network_admin()) {
1653
- $value = get_site_option($key);
1654
- }
1655
- else if(class_exists('FLBuilderMultisiteSettings')) {
1656
- $value = get_option($key);
1657
- $value = !$value ? get_site_option($key) : $value;
1658
- }
1659
- else {
1660
- $value = get_option($key);
1661
- }
1662
-
1663
- // Return the value.
1664
- if(!$value || in_array('all', $value)) {
1665
- return $default;
1666
- }
1667
- else {
1668
- return $value;
1669
- }
1670
  }
1671
 
1672
  /**
@@ -2061,7 +2040,12 @@ final class FLBuilderModel {
2061
  require_once FL_BUILDER_DIR . 'includes/row-settings.php';
2062
  require_once FL_BUILDER_DIR . 'includes/column-settings.php';
2063
  require_once FL_BUILDER_DIR . 'includes/module-settings.php';
2064
- require_once FL_BUILDER_DIR . 'includes/user-template-settings.php';
 
 
 
 
 
2065
  }
2066
 
2067
  /**
@@ -2678,28 +2662,22 @@ final class FLBuilderModel {
2678
  */
2679
  static public function get_enabled_templates()
2680
  {
2681
- $key = '_fl_builder_enabled_templates';
2682
- $default = 'enabled';
2683
-
2684
- // Get the value.
2685
- if(is_network_admin()) {
2686
- $value = get_site_option($key);
2687
- }
2688
- else if(class_exists('FLBuilderMultisiteSettings')) {
2689
- $value = get_option($key);
2690
- $value = !$value ? get_site_option($key) : $value;
2691
- }
2692
- else {
2693
- $value = get_option($key);
2694
- }
2695
 
2696
- // Return the value.
2697
- if(!$value) {
2698
- return $default;
2699
- }
2700
- else {
2701
- return $value;
2702
- }
 
 
 
 
2703
  }
2704
 
2705
  /**
@@ -2711,9 +2689,10 @@ final class FLBuilderModel {
2711
  static public function save_user_template()
2712
  {
2713
  $post_data = self::get_post_data();
 
2714
 
2715
  $post_id = wp_insert_post(array(
2716
- 'post_title' => $post_data['template_name'],
2717
  'post_type' => 'fl-builder-template',
2718
  'post_status' => 'publish',
2719
  'ping_status' => 'closed',
@@ -2728,17 +2707,87 @@ final class FLBuilderModel {
2728
 
2729
  // Save the template layout data.
2730
  self::update_layout_data($data, 'published', $post_id);
 
 
 
2731
  }
2732
 
2733
  /**
2734
  * Returns data for all user defined templates.
2735
  *
2736
  * @since 1.1.3
 
2737
  * @return array
2738
  */
2739
  static public function get_user_templates()
2740
  {
2741
- return get_posts('post_type=fl-builder-template&orderby=title&order=ASC&posts_per_page=-1');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2742
  }
2743
 
2744
  /**
@@ -2762,11 +2811,13 @@ final class FLBuilderModel {
2762
  * Apply a user defined template to the current layout.
2763
  *
2764
  * @since 1.1.3
 
2765
  * @param int $template_id The post ID of the template to apply.
2766
  * @param bool $append Whether to append the new template or replacing the existing layout.
 
2767
  * @return void
2768
  */
2769
- static public function apply_user_template($template_id = null, $append = false)
2770
  {
2771
  $post_data = self::get_post_data();
2772
  $template_id = isset($post_data['template_id']) ? $post_data['template_id'] : $template_id;
@@ -2784,7 +2835,9 @@ final class FLBuilderModel {
2784
  if($template_id != 'blank') {
2785
 
2786
  // Get the template data.
2787
- $template_data = self::get_layout_data('published', $template_id);
 
 
2788
 
2789
  // Get new ids for the template nodes.
2790
  $template_data = self::generate_new_node_ids($template_data);
@@ -2894,15 +2947,28 @@ final class FLBuilderModel {
2894
  * Apply a core template.
2895
  *
2896
  * @since 1.0
 
2897
  * @param int $index The index of the template to apply.
2898
  * @param bool $append Whether to append the new template or replacing the existing layout.
2899
  * @return void
2900
  */
2901
  static public function apply_template($index = 0, $append = false)
2902
  {
2903
- $post_data = self::get_post_data();
2904
- $index = isset($post_data['index']) ? $post_data['index'] : $index;
2905
- $append = isset($post_data['append']) ? $post_data['append'] : $append;
 
 
 
 
 
 
 
 
 
 
 
 
2906
  $template = self::get_template($index);
2907
  $row_position = self::next_node_position('row');
2908
 
@@ -2992,6 +3058,59 @@ final class FLBuilderModel {
2992
  file_put_contents(FL_BUILDER_DIR . 'data/templates.dat', serialize($updated));
2993
  }
2994
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2995
  /**
2996
  * Returns the custom branding string.
2997
  *
@@ -3000,24 +3119,9 @@ final class FLBuilderModel {
3000
  */
3001
  static public function get_branding()
3002
  {
3003
- $key = '_fl_builder_branding';
3004
- $default = __('Page Builder', 'fl-builder');
3005
-
3006
- // Get the value.
3007
- if(is_network_admin() || class_exists('FLBuilderMultisiteSettings')) {
3008
- $value = get_site_option($key);
3009
- }
3010
- else {
3011
- $value = get_option($key);
3012
- }
3013
-
3014
- // Return the value.
3015
- if(!$value) {
3016
- return $default;
3017
- }
3018
- else {
3019
- return stripcslashes($value);
3020
- }
3021
  }
3022
 
3023
  /**
@@ -3028,24 +3132,9 @@ final class FLBuilderModel {
3028
  */
3029
  static public function get_branding_icon()
3030
  {
3031
- $key = '_fl_builder_branding_icon';
3032
- $default = FL_BUILDER_URL . 'img/beaver.png';
3033
-
3034
- // Get the value.
3035
- if(is_network_admin() || class_exists('FLBuilderMultisiteSettings')) {
3036
- $value = get_site_option($key);
3037
- }
3038
- else {
3039
- $value = get_option($key);
3040
- }
3041
-
3042
- // Return the value.
3043
- if($value === false) {
3044
- return $default;
3045
- }
3046
- else {
3047
- return $value;
3048
- }
3049
  }
3050
 
3051
  /**
@@ -3056,28 +3145,9 @@ final class FLBuilderModel {
3056
  */
3057
  static public function get_enabled_icons()
3058
  {
3059
- $key = '_fl_builder_enabled_icons';
3060
- $default = array( 'font-awesome', 'foundation-icons', 'dashicons' );
3061
-
3062
- // Get the value.
3063
- if(is_network_admin()) {
3064
- $value = get_site_option($key);
3065
- }
3066
- else if(class_exists('FLBuilderMultisiteSettings')) {
3067
- $value = get_option($key);
3068
- $value = !$value ? get_site_option($key) : $value;
3069
- }
3070
- else {
3071
- $value = get_option($key);
3072
- }
3073
-
3074
- // Return the value.
3075
- if(!$value) {
3076
- return $default;
3077
- }
3078
- else {
3079
- return $value;
3080
- }
3081
  }
3082
 
3083
  /**
@@ -3089,28 +3159,9 @@ final class FLBuilderModel {
3089
  */
3090
  static public function get_editing_capability()
3091
  {
3092
- $key = '_fl_builder_editing_capability';
3093
- $default = 'edit_posts';
3094
-
3095
- // Get the value.
3096
- if(is_network_admin()) {
3097
- $value = get_site_option($key);
3098
- }
3099
- else if(class_exists('FLBuilderMultisiteSettings')) {
3100
- $value = get_option($key);
3101
- $value = !$value ? get_site_option($key) : $value;
3102
- }
3103
- else {
3104
- $value = get_option($key);
3105
- }
3106
-
3107
- // Return the value.
3108
- if(!$value) {
3109
- return $default;
3110
- }
3111
- else {
3112
- return $value;
3113
- }
3114
  }
3115
 
3116
  /**
@@ -3143,24 +3194,9 @@ final class FLBuilderModel {
3143
  */
3144
  static public function get_help_button_settings()
3145
  {
3146
- $key = '_fl_builder_help_button';
3147
- $defaults = self::get_help_button_defaults();
3148
-
3149
- // Get the value.
3150
- if ( is_network_admin() || class_exists( 'FLBuilderMultisiteSettings' ) ) {
3151
- $value = get_site_option( $key );
3152
- }
3153
- else {
3154
- $value = get_option( $key );
3155
- }
3156
-
3157
- // Return the value.
3158
- if ( false === $value ) {
3159
- return $defaults;
3160
- }
3161
- else {
3162
- return $value;
3163
- }
3164
  }
3165
 
3166
  /**
@@ -3219,6 +3255,63 @@ final class FLBuilderModel {
3219
  update_option( '_fl_builder_services', $services );
3220
  }
3221
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3222
  /**
3223
  * Returns the plugin basename for Beaver Builder.
3224
  *
@@ -3246,9 +3339,11 @@ final class FLBuilderModel {
3246
  delete_option('_fl_builder_settings');
3247
  delete_option('_fl_builder_enabled_modules');
3248
  delete_option('_fl_builder_enabled_templates');
 
3249
  delete_option('_fl_builder_post_types');
3250
  delete_option('_fl_builder_enabled_icons');
3251
  delete_option('_fl_builder_branding');
 
3252
  delete_option('_fl_builder_editing_capability');
3253
  delete_option('_fl_builder_help_button');
3254
 
148
  */
149
  static public function get_edit_url( $post_id = false )
150
  {
 
 
151
  if ( false === $post_id ) {
152
+ global $post;
153
+ }
154
+ else {
155
+ $post = get_post( $post_id );
156
  }
157
 
158
+ $url = add_query_arg( 'fl_builder', '', get_permalink( $post->ID ) );
159
 
160
+ if ( 'draft' == $post->post_status ) {
161
+ return set_url_scheme( $url );
162
+ }
163
+ else {
164
+ return $url;
165
  }
 
 
166
  }
167
 
168
  /**
237
  */
238
  static public function get_post_types()
239
  {
240
+ $value = self::get_admin_settings_option( '_fl_builder_post_types', true );
 
 
 
 
 
 
 
 
 
 
 
 
 
241
 
242
+ if ( ! $value ) {
243
+ return array( 'page', 'fl-builder-template' );
 
244
  }
245
  else {
246
  $value[] = 'fl-builder-template';
265
  * is being worked on.
266
  *
267
  * @since 1.0
268
+ * @since 1.5.9 Trying to use the global $wp_the_query instead of $post to get the post id.
269
  * @return int|bool The post id or false.
270
  */
271
  static public function get_post_id()
272
  {
273
+ global $wp_the_query;
274
  global $post;
275
 
276
  $post_data = self::get_post_data();
277
 
278
+ // Get a post ID sent in an AJAX request.
279
+ if ( isset( $post_data['post_id'] ) ) {
280
  return $post_data['post_id'];
281
  }
282
+ // Get a post ID from the main query.
283
+ else if ( in_the_loop() && isset( $wp_the_query ) && isset( $wp_the_query->post ) ) {
284
+ return $wp_the_query->post->ID;
285
+ }
286
+ // Get a post ID in a query outside of the main loop.
287
+ else if ( isset( $post ) ) {
288
  return $post->ID;
289
  }
290
+ // No post ID found.
291
  else {
292
  return false;
293
  }
1641
  */
1642
  static public function get_enabled_modules()
1643
  {
1644
+ $default = array_keys( self::$modules );
 
1645
  $default[] = 'all';
1646
+ $value = self::get_admin_settings_option( '_fl_builder_enabled_modules', true );
1647
+
1648
+ return ( ! $value || in_array( 'all', $value ) ) ? $default : $value;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1649
  }
1650
 
1651
  /**
2040
  require_once FL_BUILDER_DIR . 'includes/row-settings.php';
2041
  require_once FL_BUILDER_DIR . 'includes/column-settings.php';
2042
  require_once FL_BUILDER_DIR . 'includes/module-settings.php';
2043
+
2044
+ $user_templates = FL_BUILDER_DIR . 'includes/user-template-settings.php';
2045
+
2046
+ if ( file_exists( $user_templates ) ) {
2047
+ require_once $user_templates;
2048
+ }
2049
  }
2050
 
2051
  /**
2662
  */
2663
  static public function get_enabled_templates()
2664
  {
2665
+ $value = self::get_admin_settings_option( '_fl_builder_enabled_templates', true );
2666
+
2667
+ return ! $value ? 'enabled' : $value;
2668
+ }
 
 
 
 
 
 
 
 
 
 
2669
 
2670
+ /**
2671
+ * Returns whether the user templates admin UI is enabled.
2672
+ *
2673
+ * @since 1.5.7
2674
+ * @return string
2675
+ */
2676
+ static public function is_user_templates_admin_enabled()
2677
+ {
2678
+ $value = self::get_admin_settings_option( '_fl_builder_user_templates_admin', true );
2679
+
2680
+ return ! $value ? 0 : $value;
2681
  }
2682
 
2683
  /**
2689
  static public function save_user_template()
2690
  {
2691
  $post_data = self::get_post_data();
2692
+ $settings = $post_data['settings'];
2693
 
2694
  $post_id = wp_insert_post(array(
2695
+ 'post_title' => $settings['name'],
2696
  'post_type' => 'fl-builder-template',
2697
  'post_status' => 'publish',
2698
  'ping_status' => 'closed',
2707
 
2708
  // Save the template layout data.
2709
  self::update_layout_data($data, 'published', $post_id);
2710
+
2711
+ // Enable the builder for this template.
2712
+ update_post_meta($post_id, '_fl_builder_enabled', true);
2713
  }
2714
 
2715
  /**
2716
  * Returns data for all user defined templates.
2717
  *
2718
  * @since 1.1.3
2719
+ * @since 1.5.7 Added support for template categories.
2720
  * @return array
2721
  */
2722
  static public function get_user_templates()
2723
  {
2724
+ $categorized = array(
2725
+ 'uncategorized' => array(
2726
+ 'name' => _x( 'Uncategorized', 'Default user template category.', 'fl-builder' ),
2727
+ 'templates' => array()
2728
+ )
2729
+ );
2730
+
2731
+ $posts = get_posts( array(
2732
+ 'post_type' => 'fl-builder-template',
2733
+ 'orderby' => 'menu_order title',
2734
+ 'order' => 'ASC',
2735
+ 'posts_per_page' => '-1',
2736
+ ) );
2737
+
2738
+ $templates = array();
2739
+
2740
+ // Loop through templates posts and build the templates array.
2741
+ foreach( $posts as $post ) {
2742
+
2743
+ if ( has_post_thumbnail( $post->ID ) ) {
2744
+ $image_data = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'medium' );
2745
+ $image = $image_data[0];
2746
+ }
2747
+ else {
2748
+ $image = FL_BUILDER_URL . 'img/templates/blank.jpg';
2749
+ }
2750
+
2751
+ $templates[] = array(
2752
+ 'id' => $post->ID,
2753
+ 'name' => $post->post_title,
2754
+ 'image' => $image
2755
+ );
2756
+ }
2757
+
2758
+ // Loop through templates and build the categorized array.
2759
+ foreach ( $templates as $template ) {
2760
+
2761
+ $cats = wp_get_post_terms( $template['id'], 'fl-builder-template-category' );
2762
+
2763
+ if ( 0 === count( $cats ) || is_wp_error( $cats ) ) {
2764
+ $categorized['uncategorized']['templates'][] = $template;
2765
+ }
2766
+ else {
2767
+
2768
+ foreach ( $cats as $cat ) {
2769
+
2770
+ if ( ! isset( $categorized[ $cat->slug ] ) ) {
2771
+ $categorized[ $cat->slug ] = array(
2772
+ 'name' => $cat->name,
2773
+ 'templates' => array()
2774
+ );
2775
+ }
2776
+
2777
+ $categorized[ $cat->slug ]['templates'][] = $template;
2778
+ }
2779
+ }
2780
+ }
2781
+
2782
+ // Unset the uncategorized cat if no templates.
2783
+ if ( 0 === count( $categorized['uncategorized']['templates'] ) ) {
2784
+ unset( $categorized['uncategorized'] );
2785
+ }
2786
+
2787
+ return array(
2788
+ 'templates' => $templates,
2789
+ 'categorized' => $categorized
2790
+ );
2791
  }
2792
 
2793
  /**
2811
  * Apply a user defined template to the current layout.
2812
  *
2813
  * @since 1.1.3
2814
+ * @since 1.5.7 Added param for passing template data.
2815
  * @param int $template_id The post ID of the template to apply.
2816
  * @param bool $append Whether to append the new template or replacing the existing layout.
2817
+ * @param string $template_data Template data to use instead of data for the passed id.
2818
  * @return void
2819
  */
2820
+ static public function apply_user_template($template_id = null, $append = false, $template_data = null)
2821
  {
2822
  $post_data = self::get_post_data();
2823
  $template_id = isset($post_data['template_id']) ? $post_data['template_id'] : $template_id;
2835
  if($template_id != 'blank') {
2836
 
2837
  // Get the template data.
2838
+ if ( ! $template_data ) {
2839
+ $template_data = self::get_layout_data('published', $template_id);
2840
+ }
2841
 
2842
  // Get new ids for the template nodes.
2843
  $template_data = self::generate_new_node_ids($template_data);
2947
  * Apply a core template.
2948
  *
2949
  * @since 1.0
2950
+ * @since 1.5.7. Added logic for overriding core templates.
2951
  * @param int $index The index of the template to apply.
2952
  * @param bool $append Whether to append the new template or replacing the existing layout.
2953
  * @return void
2954
  */
2955
  static public function apply_template($index = 0, $append = false)
2956
  {
2957
+ $post_data = self::get_post_data();
2958
+ $index = isset($post_data['template_id']) ? $post_data['template_id'] : $index;
2959
+ $append = isset($post_data['append']) ? $post_data['append'] : $append;
2960
+
2961
+ // Apply a user defined template if core templates are overriden.
2962
+ if ( class_exists( 'FLBuilderTemplatesOverride' ) ) {
2963
+
2964
+ $success = FLBuilderTemplatesOverride::apply( $index, $append );
2965
+
2966
+ if ( $success ) {
2967
+ return;
2968
+ }
2969
+ }
2970
+
2971
+ // Apply a core template.
2972
  $template = self::get_template($index);
2973
  $row_position = self::next_node_position('row');
2974
 
3058
  file_put_contents(FL_BUILDER_DIR . 'data/templates.dat', serialize($updated));
3059
  }
3060
 
3061
+ /**
3062
+ * Returns template data needed for the template selector.
3063
+ *
3064
+ * @since 1.5.7
3065
+ * @return array
3066
+ */
3067
+ static public function get_template_selector_data()
3068
+ {
3069
+ // Return data for overriding core templates?
3070
+ if ( class_exists( 'FLBuilderTemplatesOverride' ) ) {
3071
+
3072
+ $data = FLBuilderTemplatesOverride::get_selector_data();
3073
+
3074
+ if ( $data ) {
3075
+ return $data;
3076
+ }
3077
+ }
3078
+
3079
+ // Return data for core templates.
3080
+ $category_labels = array(
3081
+ 'landing' => __( 'Home Pages', 'fl-builder' ),
3082
+ 'company' => __( 'Content Pages', 'fl-builder' )
3083
+ );
3084
+ $categorized = array();
3085
+ $templates = array();
3086
+
3087
+ foreach( self::get_templates() as $key => $template ) {
3088
+ $templates[] = array(
3089
+ 'id' => $key,
3090
+ 'name' => $template->name,
3091
+ 'image' => FL_BUILDER_URL . 'img/templates/' . $template->image,
3092
+ 'category' => $template->category
3093
+ );
3094
+ }
3095
+
3096
+ foreach( $templates as $template ) {
3097
+
3098
+ if ( ! isset( $categorized[ $template['category'] ] ) ) {
3099
+ $categorized[ $template['category'] ] = array(
3100
+ 'name' => $category_labels[ $template['category'] ],
3101
+ 'templates' => array()
3102
+ );
3103
+ }
3104
+
3105
+ $categorized[ $template['category'] ]['templates'][] = $template;
3106
+ }
3107
+
3108
+ return array(
3109
+ 'templates' => $templates,
3110
+ 'categorized' => $categorized
3111
+ );
3112
+ }
3113
+
3114
  /**
3115
  * Returns the custom branding string.
3116
  *
3119
  */
3120
  static public function get_branding()
3121
  {
3122
+ $value = self::get_admin_settings_option( '_fl_builder_branding', false );
3123
+
3124
+ return ! $value ? __( 'Page Builder', 'fl-builder' ) : stripcslashes( $value );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3125
  }
3126
 
3127
  /**
3132
  */
3133
  static public function get_branding_icon()
3134
  {
3135
+ $value = self::get_admin_settings_option( '_fl_builder_branding_icon', false );
3136
+
3137
+ return false === $value ? FL_BUILDER_URL . 'img/beaver.png' : $value;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3138
  }
3139
 
3140
  /**
3145
  */
3146
  static public function get_enabled_icons()
3147
  {
3148
+ $value = self::get_admin_settings_option( '_fl_builder_enabled_icons', true );
3149
+
3150
+ return ! $value ? array( 'font-awesome', 'foundation-icons', 'dashicons' ) : $value;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3151
  }
3152
 
3153
  /**
3159
  */
3160
  static public function get_editing_capability()
3161
  {
3162
+ $value = self::get_admin_settings_option( '_fl_builder_editing_capability', true );
3163
+
3164
+ return ! $value ? 'edit_posts' : $value;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3165
  }
3166
 
3167
  /**
3194
  */
3195
  static public function get_help_button_settings()
3196
  {
3197
+ $value = self::get_admin_settings_option( '_fl_builder_help_button', false );
3198
+
3199
+ return false === $value ? self::get_help_button_defaults() : $value;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3200
  }
3201
 
3202
  /**
3255
  update_option( '_fl_builder_services', $services );
3256
  }
3257
 
3258
+ /**
3259
+ * Returns an option from the database for
3260
+ * the admin settings page.
3261
+ *
3262
+ * @since 1.5.7
3263
+ * @param string $key The option key.
3264
+ * @param bool $network_override Whether to allow the network admin setting to be overridden on subsites.
3265
+ * @return mixed
3266
+ */
3267
+ static public function get_admin_settings_option( $key, $network_override = true )
3268
+ {
3269
+ // Get the site-wide option if we're in the network admin.
3270
+ if ( is_network_admin() ) {
3271
+ $value = get_site_option( $key );
3272
+ }
3273
+ // Get the site-wide option if network overrides aren't allowed.
3274
+ else if ( ! $network_override && class_exists( 'FLBuilderMultisiteSettings' ) ) {
3275
+ $value = get_site_option( $key );
3276
+ }
3277
+ // Network overrides are allowed. Return the subsite option if it exists.
3278
+ else if ( class_exists( 'FLBuilderMultisiteSettings' ) ) {
3279
+ $value = get_option( $key );
3280
+ $value = false === $value ? get_site_option( $key ) : $value;
3281
+ }
3282
+ // This must be a single site install. Get the single site option.
3283
+ else {
3284
+ $value = get_option( $key );
3285
+ }
3286
+
3287
+ return $value;
3288
+ }
3289
+
3290
+ /**
3291
+ * Updates an option from the admin settings page.
3292
+ *
3293
+ * @since 1.5.7
3294
+ * @param string $key The option key.
3295
+ * @param mixed $value The value to update.
3296
+ * @param bool $network_override Whether to allow the network admin setting to be overridden on subsites.
3297
+ * @return mixed
3298
+ */
3299
+ static public function update_admin_settings_option( $key, $value, $network_override = true )
3300
+ {
3301
+ // Update the site-wide option since we're in the network admin.
3302
+ if ( is_network_admin() ) {
3303
+ update_site_option( $key, $value );
3304
+ }
3305
+ // Delete the option if network overrides are allowed and the override checkbox isn't checked.
3306
+ else if ( $network_override && FLBuilderAdminSettings::multisite_support() && ! isset( $_POST['fl-override-ms'] ) ) {
3307
+ delete_option( $key );
3308
+ }
3309
+ // Update the option for single install or subsite.
3310
+ else {
3311
+ update_option( $key, $value );
3312
+ }
3313
+ }
3314
+
3315
  /**
3316
  * Returns the plugin basename for Beaver Builder.
3317
  *
3339
  delete_option('_fl_builder_settings');
3340
  delete_option('_fl_builder_enabled_modules');
3341
  delete_option('_fl_builder_enabled_templates');
3342
+ delete_option('_fl_builder_user_templates_admin');
3343
  delete_option('_fl_builder_post_types');
3344
  delete_option('_fl_builder_enabled_icons');
3345
  delete_option('_fl_builder_branding');
3346
+ delete_option('_fl_builder_branding_icon');
3347
  delete_option('_fl_builder_editing_capability');
3348
  delete_option('_fl_builder_help_button');
3349
 
classes/class-fl-builder-service-hatchbuck.php ADDED
@@ -0,0 +1,256 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Helper class for the Hatchbuck API.
5
+ *
6
+ * @since 1.5.8
7
+ */
8
+ final class FLBuilderServiceHatchbuck extends FLBuilderService {
9
+
10
+ /**
11
+ * The ID for this service.
12
+ *
13
+ * @since 1.5.8
14
+ * @var string $id
15
+ */
16
+ public $id = 'hatchbuck';
17
+
18
+ /**
19
+ * The API url for this service.
20
+ *
21
+ * @since 1.5.8
22
+ * @access private
23
+ * @var string $api_url
24
+ */
25
+ private $api_url = 'https://api.hatchbuck.com/api/v1/contact/';
26
+
27
+ /**
28
+ * Test the API connection.
29
+ *
30
+ * @since 1.5.8
31
+ * @param array $fields {
32
+ * @type string $api_key A valid API key.
33
+ * }
34
+ * @return array{
35
+ * @type bool|string $error The error message or false if no error.
36
+ * @type array $data An array of data used to make the connection.
37
+ * }
38
+ */
39
+ public function connect( $fields = array() )
40
+ {
41
+ $response = array(
42
+ 'error' => false,
43
+ 'data' => array()
44
+ );
45
+
46
+ // Make sure we have an API key.
47
+ if ( ! isset( $fields['api_key'] ) || empty( $fields['api_key'] ) ) {
48
+ $response['error'] = __( 'Error: You must provide an API key.', 'fl-builder' );
49
+ }
50
+ // Try to connect and store the connection data.
51
+ else {
52
+
53
+ $result = wp_remote_post( $this->api_url . 'search?api_key=' . $fields['api_key'], array(
54
+ 'method' => 'POST',
55
+ 'timeout' => 60,
56
+ 'headers' => array(
57
+ 'Content-Type' => 'application/json'
58
+ ),
59
+ 'body' => array(),
60
+ ) );
61
+
62
+ if ( 401 == $result['response']['code'] ) {
63
+ $response['error'] = __( 'Error: Please check your API key.', 'fl-builder' );
64
+ }
65
+ else {
66
+ $response['data'] = array( 'api_key' => $fields['api_key'] );
67
+ }
68
+ }
69
+
70
+ return $response;
71
+ }
72
+
73
+ /**
74
+ * Renders the markup for the connection settings.
75
+ *
76
+ * @since 1.5.8
77
+ * @return string The connection settings markup.
78
+ */
79
+ public function render_connect_settings()
80
+ {
81
+ ob_start();
82
+
83
+ FLBuilder::render_settings_field( 'api_key', array(
84
+ 'row_class' => 'fl-builder-service-connect-row',
85
+ 'class' => 'fl-builder-service-connect-input',
86
+ 'type' => 'text',
87
+ 'label' => __( 'API Key', 'fl-builder' ),
88
+ 'help' => __( 'Your API key can be found in your Hatchbuck account under Account Settings > Web API.', 'fl-builder' ),
89
+ 'preview' => array(
90
+ 'type' => 'none'
91
+ )
92
+ ));
93
+
94
+ return ob_get_clean();
95
+ }
96
+
97
+ /**
98
+ * Render the markup for service specific fields.
99
+ *
100
+ * @since 1.5.8
101
+ * @param string $account The name of the saved account.
102
+ * @param object $settings Saved module settings.
103
+ * @return array {
104
+ * @type bool|string $error The error message or false if no error.
105
+ * @type string $html The field markup.
106
+ * }
107
+ */
108
+ public function render_fields( $account, $settings )
109
+ {
110
+ $response = array(
111
+ 'error' => false,
112
+ 'html' => $this->render_tag_field( $settings )
113
+ );
114
+
115
+ return $response;
116
+ }
117
+
118
+ /**
119
+ * Render markup for the tag field.
120
+ *
121
+ * @since 1.5.8
122
+ * @param object $settings Saved module settings.
123
+ * @return string The markup for the tag field.
124
+ * @access private
125
+ */
126
+ private function render_tag_field( $settings )
127
+ {
128
+ ob_start();
129
+
130
+ FLBuilder::render_settings_field( 'list_id', array(
131
+ 'row_class' => 'fl-builder-service-field-row',
132
+ 'class' => 'fl-builder-service-list-select',
133
+ 'type' => 'text',
134
+ 'label' => _x( 'Tag', 'A tag to add to contacts in Hatchbuck when they subscribe.', 'fl-builder' ),
135
+ 'preview' => array(
136
+ 'type' => 'none'
137
+ )
138
+ ), $settings);
139
+
140
+ return ob_get_clean();
141
+ }
142
+
143
+ /**
144
+ * Subscribe an email address to Hatchbuck.
145
+ *
146
+ * @since 1.5.8
147
+ * @param object $settings A module settings object.
148
+ * @param string $email The email to subscribe.
149
+ * @param string $name Optional. The full name of the person subscribing.
150
+ * @return array {
151
+ * @type bool|string $error The error message or false if no error.
152
+ * }
153
+ */
154
+ public function subscribe( $settings, $email, $name = false )
155
+ {
156
+ $contact_id = null;
157
+ $account_data = $this->get_account_data( $settings->service_account );
158
+ $response = array( 'error' => false );
159
+
160
+ if ( ! $account_data ) {
161
+ $response['error'] = __( 'There was an error subscribing to Hatchbuck. The account is no longer connected.', 'fl-builder' );
162
+ }
163
+ else {
164
+
165
+ // Build the data array.
166
+ $data = array(
167
+ 'emails' => array(
168
+ array(
169
+ 'address' => $email,
170
+ 'type' => 'Work'
171
+ )
172
+ ),
173
+ 'status' => array(
174
+ 'name' => 'Lead'
175
+ )
176
+ );
177
+
178
+ // Check if the contact exists.
179
+ $result = wp_remote_post( $this->api_url . 'search?api_key=' . $account_data['api_key'], array(
180
+ 'method' => 'POST',
181
+ 'timeout' => 60,
182
+ 'headers' => array(
183
+ 'Content-Type' => 'application/json'
184
+ ),
185
+ 'body' => json_encode( $data ),
186
+ ) );
187
+
188
+ // Return if we have an API key error.
189
+ if ( 401 == $result['response']['code'] ) {
190
+ $response['error'] = __( 'There was an error subscribing to Hatchbuck. The API key is invalid.', 'fl-builder' );
191
+ return $response; // Invalid API key.
192
+ }
193
+ // Contact already exists.
194
+ else if ( 200 == $result['response']['code'] ) {
195
+ $result_data = json_decode( $result['body'] );
196
+ $contact_id = $result_data[0]->contactId;
197
+ }
198
+ // Generic error. Contact not found should be 400.
199
+ else if ( 400 != $result['response']['code'] ) {
200
+ $response['error'] = __( 'There was an error subscribing to Hatchbuck.', 'fl-builder' );
201
+ return $response;
202
+ }
203
+
204
+ // Add the contact if it doesn't exist.
205
+ if ( ! $contact_id ) {
206
+
207
+ // Add the name to the data array if we have one.
208
+ if ( $name ) {
209
+
210
+ $names = explode( ' ', $name );
211
+
212
+ if ( isset( $names[0] ) ) {
213
+ $data['firstName'] = $names[0];
214
+ }
215
+ if ( isset( $names[1] ) ) {
216
+ $data['lastName'] = $names[1];
217
+ }
218
+ }
219
+
220
+ // Add the contact to Hatchbuck.
221
+ $result = wp_remote_post( $this->api_url . '?api_key=' . $account_data['api_key'], array(
222
+ 'method' => 'POST',
223
+ 'timeout' => 60,
224
+ 'headers' => array(
225
+ 'Content-Type' => 'application/json'
226
+ ),
227
+ 'body' => json_encode( $data ),
228
+ ) );
229
+
230
+ // Return if we have an error.
231
+ if ( 200 != $result['response']['code'] ) {
232
+ $response['error'] = __( 'There was an error subscribing to Hatchbuck.', 'fl-builder' );
233
+ return $response;
234
+ }
235
+
236
+ // Get the result data that contains the new contact ID.
237
+ $result_data = json_decode( $result['body'] );
238
+ $contact_id = $result_data->contactId;
239
+ }
240
+
241
+ // Add the tag to the contact.
242
+ $result = wp_remote_post( $this->api_url . $contact_id . '/Tags?api_key=' . $account_data['api_key'], array(
243
+ 'method' => 'POST',
244
+ 'timeout' => 60,
245
+ 'headers' => array(
246
+ 'Content-Type' => 'application/json'
247
+ ),
248
+ 'body' => json_encode( array(
249
+ array( 'name' => $settings->list_id )
250
+ ) ),
251
+ ) );
252
+ }
253
+
254
+ return $response;
255
+ }
256
+ }
classes/class-fl-builder-service-infusionsoft.php ADDED
@@ -0,0 +1,300 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Helper class for the Infusionsoft API.
5
+ *
6
+ * @since 1.5.7
7
+ */
8
+ final class FLBuilderServiceInfusionsoft extends FLBuilderService {
9
+
10
+ /**
11
+ * The ID for this service.
12
+ *
13
+ * @since 1.5.7
14
+ * @var string $id
15
+ */
16
+ public $id = 'infusionsoft';
17
+
18
+ /**
19
+ * @since 1.5.7
20
+ * @var object $api_instance
21
+ * @access private
22
+ */
23
+ private $api_instance = null;
24
+
25
+ /**
26
+ * Get an instance of the API.
27
+ *
28
+ * @since 1.5.7
29
+ * @param string $app_id A valid app ID.
30
+ * @param string $api_key A valid API key.
31
+ * @return object The API instance.
32
+ */
33
+ public function get_api( $app_id, $api_key )
34
+ {
35
+ if ( $this->api_instance ) {
36
+ return $this->api_instance;
37
+ }
38
+ if ( ! class_exists( 'iSDK' ) ) {
39
+ require_once FL_BUILDER_DIR . 'includes/vendor/infusionsoft/isdk.php';
40
+ }
41
+
42
+ try {
43
+ $this->api_instance = new iSDK();
44
+ $this->api_instance->cfgCon( $app_id, $api_key, 'throw' );
45
+ }
46
+ catch ( iSDKException $e ) {
47
+ $this->api_instance = new stdClass();
48
+ $this->api_instance->error = sprintf(
49
+ __( 'There was an error connecting to Infusionsoft. %s', 'fl-builder' ),
50
+ $e->getMessage()
51
+ );
52
+ }
53
+
54
+ return $this->api_instance;
55
+ }
56
+
57
+ /**
58
+ * Test the API connection.
59
+ *
60
+ * @since 1.5.7
61
+ * @param array $fields {
62
+ * @type string $app_id A valid app ID.
63
+ * @type string $api_key A valid API key.
64
+ * }
65
+ * @return array{
66
+ * @type bool|string $error The error message or false if no error.
67
+ * @type array $data An array of data used to make the connection.
68
+ * }
69
+ */
70
+ public function connect( $fields = array() )
71
+ {
72
+ $response = array(
73
+ 'error' => false,
74
+ 'data' => array()
75
+ );
76
+
77
+ // Make sure we have an API key.
78
+ if ( ! isset( $fields['api_key'] ) || empty( $fields['api_key'] ) ) {
79
+ $response['error'] = __( 'Error: You must provide an API key.', 'fl-builder' );
80
+ }
81
+ // Make sure we have an app ID.
82
+ else if ( ! isset( $fields['app_id'] ) || empty( $fields['app_id'] ) ) {
83
+ $response['error'] = __( 'Error: You must provide an app ID.', 'fl-builder' );
84
+ }
85
+ // Try to connect and store the connection data.
86
+ else {
87
+
88
+ $api = $this->get_api( $fields['app_id'], $fields['api_key'] );
89
+
90
+ if ( isset( $api->error ) ) {
91
+ $response['error'] = $api->error;
92
+ }
93
+ else {
94
+ $response['data'] = array(
95
+ 'app_id' => $fields['app_id'],
96
+ 'api_key' => $fields['api_key']
97
+ );
98
+ }
99
+ }
100
+
101
+ return $response;
102
+ }
103
+
104
+ /**
105
+ * Renders the markup for the connection settings.
106
+ *
107
+ * @since 1.5.7
108
+ * @return string The connection settings markup.
109
+ */
110
+ public function render_connect_settings()
111
+ {
112
+ ob_start();
113
+
114
+ FLBuilder::render_settings_field( 'app_id', array(
115
+ 'row_class' => 'fl-builder-service-connect-row',
116
+ 'class' => 'fl-builder-service-connect-input',
117
+ 'type' => 'text',
118
+ 'label' => __( 'App ID', 'fl-builder' ),
119
+ 'help' => __( 'Your App ID can be found in the URL for your account. For example, if the URL for your account is myaccount.infusionsoft.com, your App ID would be <strong>myaccount</strong>.', 'fl-builder' ),
120
+ 'preview' => array(
121
+ 'type' => 'none'
122
+ )
123
+ ));
124
+
125
+ FLBuilder::render_settings_field( 'api_key', array(
126
+ 'row_class' => 'fl-builder-service-connect-row',
127
+ 'class' => 'fl-builder-service-connect-input',
128
+ 'type' => 'text',
129
+ 'label' => __( 'API Key', 'fl-builder' ),
130
+ 'help' => __( 'Your API key can be found in your Infusionsoft account under Admin > Settings > Application > API > Encrypted Key.', 'fl-builder' ),
131
+ 'preview' => array(
132
+ 'type' => 'none'
133
+ )
134
+ ));
135
+
136
+ return ob_get_clean();
137
+ }
138
+
139
+ /**
140
+ * Render the markup for service specific fields.
141
+ *
142
+ * @since 1.5.7
143
+ * @param string $account The name of the saved account.
144
+ * @param object $settings Saved module settings.
145
+ * @return array {
146
+ * @type bool|string $error The error message or false if no error.
147
+ * @type string $html The field markup.
148
+ * }
149
+ */
150
+ public function render_fields( $account, $settings )
151
+ {
152
+ $account_data = $this->get_account_data( $account );
153
+ $api = $this->get_api( $account_data['app_id'], $account_data['api_key'] );
154
+ $page = 0;
155
+ $lists = array();
156
+ $response = array(
157
+ 'error' => false,
158
+ 'html' => ''
159
+ );
160
+
161
+ if ( isset( $api->error ) ) {
162
+ $response['error'] = $api->error;
163
+ }
164
+ else {
165
+
166
+ while ( true ) {
167
+
168
+ $result = $api->dsQuery(
169
+ 'ContactGroup',
170
+ 1000,
171
+ $page,
172
+ array( 'Id' => '%' ),
173
+ array( 'Id', 'GroupName' )
174
+ );
175
+
176
+ $lists = array_merge( $lists, $result );
177
+
178
+ if ( count( $result ) < 1000 ) {
179
+ break;
180
+ }
181
+
182
+ $page ++;
183
+ }
184
+
185
+ $response['html'] = $this->render_list_field( $lists, $settings );
186
+ }
187
+
188
+ return $response;
189
+ }
190
+
191
+ /**
192
+ * Render markup for the list field.
193
+ *
194
+ * @since 1.5.7
195
+ * @param array $lists List data from the API.
196
+ * @param object $settings Saved module settings.
197
+ * @return string The markup for the list field.
198
+ * @access private
199
+ */
200
+ private function render_list_field( $lists, $settings )
201
+ {
202
+ ob_start();
203
+
204
+ $options = array( '' => __( 'Choose...', 'fl-builder' ) );
205
+
206
+ foreach ( $lists as $list ) {
207
+ $options[ $list['Id'] ] = $list['GroupName'];
208
+ }
209
+
210
+ FLBuilder::render_settings_field( 'list_id', array(
211
+ 'row_class' => 'fl-builder-service-field-row',
212
+ 'class' => 'fl-builder-service-list-select',
213
+ 'type' => 'select',
214
+ 'label' => _x( 'List', 'An email list from a third party provider.', 'fl-builder' ),
215
+ 'options' => $options,
216
+ 'preview' => array(
217
+ 'type' => 'none'
218
+ )
219
+ ), $settings);
220
+
221
+ return ob_get_clean();
222
+ }
223
+
224
+ /**
225
+ * Subscribe an email address to Infusionsoft.
226
+ *
227
+ * @since 1.5.7
228
+ * @param object $settings A module settings object.
229
+ * @param string $email The email to subscribe.
230
+ * @param string $name Optional. The full name of the person subscribing.
231
+ * @return array {
232
+ * @type bool|string $error The error message or false if no error.
233
+ * }
234
+ */
235
+ public function subscribe( $settings, $email, $name = false )
236
+ {
237
+ $account_data = $this->get_account_data( $settings->service_account );
238
+ $response = array( 'error' => false );
239
+ $data = array();
240
+
241
+ if ( ! $account_data ) {
242
+ $response['error'] = __( 'There was an error subscribing to Infusionsoft. The account is no longer connected.', 'fl-builder' );
243
+ }
244
+ else {
245
+
246
+ $api = $this->get_api( $account_data['app_id'], $account_data['api_key'] );
247
+
248
+ if ( isset( $api->error ) ) {
249
+ $response['error'] = $api->error;
250
+ }
251
+ else {
252
+
253
+ if ( $name ) {
254
+
255
+ $names = explode( ' ', $name );
256
+
257
+ if ( isset( $names[0] ) && isset( $names[1] ) ) {
258
+ $data = array(
259
+ 'FirstName' => $names[0],
260
+ 'LastName' => $names[1],
261
+ 'Email' => $email
262
+ );
263
+ }
264
+ else {
265
+ $data = array(
266
+ 'FirstName' => $name,
267
+ 'Email' => $email
268
+ );
269
+ }
270
+ }
271
+ else {
272
+ $data = array( 'Email' => $email );
273
+ }
274
+
275
+ try {
276
+
277
+ $contact = $api->findByEmail( $email, array( 'Id' ) );
278
+
279
+ if ( isset( $contact[0] ) && ! empty( $contact[0]['Id'] ) ) {
280
+ $contact_id = $contact[0]['Id'];
281
+ $api->updateCon( $contact_id, $data );
282
+ $group = $api->grpAssign( $contact[0]['Id'], $settings->list_id );
283
+ }
284
+ else {
285
+ $contact_id = $api->addCon( $data );
286
+ $group_add = $api->grpAssign( $contact_id, $settings->list_id );
287
+ }
288
+ }
289
+ catch ( iSDKException $e ) {
290
+ $response['error'] = sprintf(
291
+ __( 'There was an error subscribing to Infusionsoft. %s', 'fl-builder' ),
292
+ $e->getMessage()
293
+ );
294
+ }
295
+ }
296
+ }
297
+
298
+ return $response;
299
+ }
300
+ }
classes/class-fl-builder-service-sendinblue.php CHANGED
@@ -73,7 +73,7 @@ final class FLBuilderServiceSendinBlue extends FLBuilderService {
73
  $result = $api->get_account();
74
 
75
  if ( ! is_array( $result ) ) {
76
- $response['error'] = __( 'There was an error connecting to SendinBlue. Please try again.' );
77
  }
78
  else if ( isset( $result['code'] ) && 'failure' == $result['code'] ) {
79
  $response['error'] = sprintf( __( 'Error: Could not connect to SendinBlue. %s', 'fl-builder' ), $result['message'] );
@@ -217,7 +217,7 @@ final class FLBuilderServiceSendinBlue extends FLBuilderService {
217
  $result = $api->create_update_user( $email, $data, 0, array( $settings->list_id ), array(), 0 );
218
 
219
  if ( ! is_array( $result ) ) {
220
- $response['error'] = __( 'There was an error subscribing to SendinBlue. Please try again.' );
221
  }
222
  else if ( isset( $result['code'] ) && 'failure' == $result['code'] ) {
223
  $response['error'] = sprintf( __( 'Error: Could not subscribe to SendinBlue. %s', 'fl-builder' ), $result['message'] );
73
  $result = $api->get_account();
74
 
75
  if ( ! is_array( $result ) ) {
76
+ $response['error'] = __( 'There was an error connecting to SendinBlue. Please try again.', 'fl-builder' );
77
  }
78
  else if ( isset( $result['code'] ) && 'failure' == $result['code'] ) {
79
  $response['error'] = sprintf( __( 'Error: Could not connect to SendinBlue. %s', 'fl-builder' ), $result['message'] );
217
  $result = $api->create_update_user( $email, $data, 0, array( $settings->list_id ), array(), 0 );
218
 
219
  if ( ! is_array( $result ) ) {
220
+ $response['error'] = __( 'There was an error subscribing to SendinBlue. Please try again.', 'fl-builder' );
221
  }
222
  else if ( isset( $result['code'] ) && 'failure' == $result['code'] ) {
223
  $response['error'] = sprintf( __( 'Error: Could not subscribe to SendinBlue. %s', 'fl-builder' ), $result['message'] );
classes/class-fl-builder-services.php CHANGED
@@ -35,11 +35,21 @@ final class FLBuilderServices {
35
  'name' => 'GetResponse',
36
  'class' => 'FLBuilderServiceGetResponse'
37
  ),
 
 
 
 
 
38
  'icontact' => array(
39
  'type' => 'autoresponder',
40
  'name' => 'iContact',
41
  'class' => 'FLBuilderServiceIContact'
42
  ),
 
 
 
 
 
43
  'madmimi' => array(
44
  'type' => 'autoresponder',
45
  'name' => 'Mad Mimi',
@@ -50,6 +60,11 @@ final class FLBuilderServices {
50
  'name' => 'MailChimp',
51
  'class' => 'FLBuilderServiceMailChimp'
52
  ),
 
 
 
 
 
53
  'sendinblue' => array(
54
  'type' => 'autoresponder',
55
  'name' => 'SendinBlue',
35
  'name' => 'GetResponse',
36
  'class' => 'FLBuilderServiceGetResponse'
37
  ),
38
+ 'hatchbuck' => array(
39
+ 'type' => 'autoresponder',
40
+ 'name' => 'Hatchbuck',
41
+ 'class' => 'FLBuilderServiceHatchbuck'
42
+ ),
43
  'icontact' => array(
44
  'type' => 'autoresponder',
45
  'name' => 'iContact',
46
  'class' => 'FLBuilderServiceIContact'
47
  ),
48
+ 'infusionsoft' => array(
49
+ 'type' => 'autoresponder',
50
+ 'name' => 'Infusionsoft',
51
+ 'class' => 'FLBuilderServiceInfusionsoft'
52
+ ),
53
  'madmimi' => array(
54
  'type' => 'autoresponder',
55
  'name' => 'Mad Mimi',
60
  'name' => 'MailChimp',
61
  'class' => 'FLBuilderServiceMailChimp'
62
  ),
63
+ 'mailpoet' => array(
64
+ 'type' => 'autoresponder',
65
+ 'name' => 'MailPoet',
66
+ 'class' => 'FLBuilderServiceMailPoet'
67
+ ),
68
  'sendinblue' => array(
69
  'type' => 'autoresponder',
70
  'name' => 'SendinBlue',
classes/class-fl-builder.php CHANGED
@@ -7,6 +7,14 @@
7
  */
8
  final class FLBuilder {
9
 
 
 
 
 
 
 
 
 
10
  /**
11
  * Localization
12
  *
@@ -378,7 +386,7 @@ final class FLBuilder {
378
  FLBuilder::render_js();
379
  }
380
 
381
- wp_enqueue_script('fl-builder-layout-' . $post_id, $asset_info['js_url'], array(), $asset_ver, true);
382
  }
383
  }
384
 
@@ -624,37 +632,51 @@ final class FLBuilder {
624
 
625
  /**
626
  * Renders the content for a builder layout while in the loop.
 
 
 
627
  *
628
  * @since 1.0
629
  * @param string $content The existing content.
630
  * @return string
631
  */
632
- static public function render_content($content)
633
  {
634
- global $post;
635
 
636
  $post_id = FLBuilderModel::get_post_id();
637
  $enabled = FLBuilderModel::is_builder_enabled();
638
- $ajax = defined('DOING_AJAX');
639
- $global_posts = FLBuilderModel::get_global_posts();
640
- $is_global = in_array($post->ID, $global_posts);
641
  $in_loop = in_the_loop();
 
642
 
643
- if($enabled && !$ajax && ($is_global || $in_loop)) {
644
-
645
- // Remove the builder's render_content filter in case apply_filters
646
- // is called again by a widget, module or shortcode.
647
- remove_filter('the_content', 'FLBuilder::render_content');
 
 
 
 
 
 
 
 
 
 
 
648
 
649
  // Render the content.
650
  ob_start();
651
  echo '<div class="fl-builder-content fl-builder-content-' . $post_id . '" data-post-id="' . $post_id . '">';
652
  self::render_rows();
653
  echo '</div>';
654
- $content = do_shortcode(ob_get_clean());
655
-
656
- // Reapply the builder's render_content filter.
657
- add_filter('the_content', 'FLBuilder::render_content');
658
  }
659
 
660
  return $content;
@@ -865,37 +887,74 @@ final class FLBuilder {
865
  * Registers the custom post type for builder templates.
866
  *
867
  * @since 1.1.3
 
868
  * @return void
869
  */
870
  static public function register_templates_post_type()
871
  {
 
872
  if(FL_BUILDER_LITE === true) {
873
  return;
874
  }
875
-
 
 
 
 
 
 
 
 
 
 
 
 
 
876
  register_post_type('fl-builder-template', array(
877
- 'public' => false,
878
  'labels' => array(
879
- 'name' => _x( 'Layout Templates', 'Custom post type label.', 'fl-builder' ),
880
- 'singular_name' => _x( 'Layout Template', 'Custom post type label.', 'fl-builder' ),
881
- 'menu_name' => _x( 'Layout Templates', 'Custom post type label.', 'fl-builder' ),
882
- 'name_admin_bar' => _x( 'Layout Template', 'Custom post type label.', 'fl-builder' ),
883
  'add_new' => _x( 'Add New', 'Custom post type label.', 'fl-builder' ),
884
- 'add_new_item' => _x( 'Add New Layout Template', 'Custom post type label.', 'fl-builder' ),
885
- 'new_item' => _x( 'New Layout Template', 'Custom post type label.', 'fl-builder' ),
886
- 'edit_item' => _x( 'Edit Layout Template', 'Custom post type label.', 'fl-builder' ),
887
- 'view_item' => _x( 'View Layout Template', 'Custom post type label.', 'fl-builder' ),
888
- 'all_items' => _x( 'All Layout Templates', 'Custom post type label.', 'fl-builder' ),
889
- 'search_items' => _x( 'Search Layout Templates', 'Custom post type label.', 'fl-builder' ),
890
- 'parent_item_colon' => _x( 'Parent Layout Templates:', 'Custom post type label.', 'fl-builder' ),
891
- 'not_found' => _x( 'No layout templates found.', 'Custom post type label.', 'fl-builder' ),
892
- 'not_found_in_trash' => _x( 'No layout templates found in Trash.', 'Custom post type label.', 'fl-builder' )
893
  ),
894
- 'supports' => array(
895
- 'title'
 
 
896
  ),
897
- 'publicly_queryable' => true
898
- ));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
899
  }
900
 
901
  /**
@@ -910,8 +969,7 @@ final class FLBuilder {
910
 
911
  $enabled_templates = FLBuilderModel::get_enabled_templates();
912
  $user_templates = FLBuilderModel::get_user_templates();
913
- $templates = FLBuilderModel::get_templates();
914
- $num_rows = FLBuilderModel::count_nodes('row');
915
 
916
  include FL_BUILDER_DIR . 'includes/template-selector.php';
917
 
@@ -1219,6 +1277,7 @@ final class FLBuilder {
1219
  static public function render_column_attributes( $col )
1220
  {
1221
  $custom_class = apply_filters( 'fl_builder_column_custom_class', $col->settings->class, $col );
 
1222
 
1223
  // ID
1224
  if ( ! empty( $col->settings->id ) ) {
@@ -1231,6 +1290,9 @@ final class FLBuilder {
1231
  if ( $col->settings->size <= 50 ) {
1232
  echo ' fl-col-small';
1233
  }
 
 
 
1234
  if ( ! empty( $col->settings->responsive_display ) ) {
1235
  echo ' fl-visible-' . $col->settings->responsive_display;
1236
  }
7
  */
8
  final class FLBuilder {
9
 
10
+ /**
11
+ * Stores the ID of the post that is currently being rendered.
12
+ *
13
+ * @since 1.5.9
14
+ * @var int $post_rendering
15
+ */
16
+ static private $post_rendering = null;
17
+
18
  /**
19
  * Localization
20
  *
386
  FLBuilder::render_js();
387
  }
388
 
389
+ wp_enqueue_script('fl-builder-layout-' . $post_id, $asset_info['js_url'], array('jquery'), $asset_ver, true);
390
  }
391
  }
392
 
632
 
633
  /**
634
  * Renders the content for a builder layout while in the loop.
635
+ * This method should only be called by the_content filter as
636
+ * defined in fl-builder.php. To output builder content, use
637
+ * the_content function while in a WordPress loop.
638
  *
639
  * @since 1.0
640
  * @param string $content The existing content.
641
  * @return string
642
  */
643
+ static public function render_content( $content )
644
  {
645
+ global $wp_filter;
646
 
647
  $post_id = FLBuilderModel::get_post_id();
648
  $enabled = FLBuilderModel::is_builder_enabled();
649
+ $rendering = $post_id === self::$post_rendering;
650
+ $ajax = defined( 'DOING_AJAX' );
 
651
  $in_loop = in_the_loop();
652
+ $is_global = in_array( $post_id, FLBuilderModel::get_global_posts() );
653
 
654
+ if( $enabled && ! $rendering && ! $ajax && ( $in_loop || $is_global ) ) {
655
+
656
+ // Store this post ID so we know it is currently being rendered
657
+ // in case another method or function calls apply filters on the
658
+ // content after this method has run which creates an infinite loop.
659
+ self::$post_rendering = $post_id;
660
+
661
+ // Store a reference to the current the_content filters array since
662
+ // any modules or widgets that call apply_filters on the_content cause
663
+ // the array pointer to move to the end. That makes it so the builder
664
+ // content doesn't receive filters after this method runs as it should.
665
+ $filters = $wp_filter['the_content'];
666
+
667
+ // Remove the builder's render_content filter so it's not called again
668
+ // by modules or widgets that call apply_filters on the content.
669
+ remove_filter( 'the_content', 'FLBuilder::render_content' );
670
 
671
  // Render the content.
672
  ob_start();
673
  echo '<div class="fl-builder-content fl-builder-content-' . $post_id . '" data-post-id="' . $post_id . '">';
674
  self::render_rows();
675
  echo '</div>';
676
+ $content = ob_get_clean();
677
+
678
+ // Restore the original the_content filters array.
679
+ $wp_filter['the_content'] = $filters;
680
  }
681
 
682
  return $content;
887
  * Registers the custom post type for builder templates.
888
  *
889
  * @since 1.1.3
890
+ * @since 1.5.7 Added template category taxonomy.
891
  * @return void
892
  */
893
  static public function register_templates_post_type()
894
  {
895
+ // Template classes aren't included in the lite version.
896
  if(FL_BUILDER_LITE === true) {
897
  return;
898
  }
899
+
900
+ // Get the array of supported features for the templates post type.
901
+ $supports = array(
902
+ 'title',
903
+ 'revisions',
904
+ 'page-attributes'
905
+ );
906
+
907
+ // Include thumbnail support if core templates can be overridden.
908
+ if ( class_exists( 'FLBuilderTemplatesOverride' ) ) {
909
+ $supports[] = 'thumbnail';
910
+ }
911
+
912
+ // Register the template post type.
913
  register_post_type('fl-builder-template', array(
914
+ 'public' => FLBuilderModel::is_user_templates_admin_enabled() ? true : false,
915
  'labels' => array(
916
+ 'name' => _x( 'Templates', 'Custom post type label.', 'fl-builder' ),
917
+ 'singular_name' => _x( 'Template', 'Custom post type label.', 'fl-builder' ),
918
+ 'menu_name' => _x( 'Templates', 'Custom post type label.', 'fl-builder' ),
919
+ 'name_admin_bar' => _x( 'Template', 'Custom post type label.', 'fl-builder' ),
920
  'add_new' => _x( 'Add New', 'Custom post type label.', 'fl-builder' ),
921
+ 'add_new_item' => _x( 'Add New Template', 'Custom post type label.', 'fl-builder' ),
922
+ 'new_item' => _x( 'New Template', 'Custom post type label.', 'fl-builder' ),
923
+ 'edit_item' => _x( 'Edit Template', 'Custom post type label.', 'fl-builder' ),
924
+ 'view_item' => _x( 'View Template', 'Custom post type label.', 'fl-builder' ),
925
+ 'all_items' => _x( 'All Templates', 'Custom post type label.', 'fl-builder' ),
926
+ 'search_items' => _x( 'Search Templates', 'Custom post type label.', 'fl-builder' ),
927
+ 'parent_item_colon' => _x( 'Parent Templates:', 'Custom post type label.', 'fl-builder' ),
928
+ 'not_found' => _x( 'No templates found.', 'Custom post type label.', 'fl-builder' ),
929
+ 'not_found_in_trash' => _x( 'No templates found in Trash.', 'Custom post type label.', 'fl-builder' )
930
  ),
931
+ 'menu_icon' => 'dashicons-welcome-widgets-menus',
932
+ 'supports' => $supports,
933
+ 'taxonomies' => array(
934
+ 'fl-builder-template-category'
935
  ),
936
+ 'publicly_queryable' => true
937
+ ) );
938
+
939
+ // Register the template taxonomy.
940
+ register_taxonomy( 'fl-builder-template-category', array( 'fl-builder-template' ), array(
941
+ 'labels' => array(
942
+ 'name' => _x( 'Categories', 'Custom taxonomy label.', 'fl-builder' ),
943
+ 'singular_name' => _x( 'Category', 'Custom taxonomy label.', 'fl-builder' ),
944
+ 'search_items' => _x( 'Search Categories', 'Custom taxonomy label.', 'fl-builder' ),
945
+ 'all_items' => _x( 'All Categories', 'Custom taxonomy label.', 'fl-builder' ),
946
+ 'parent_item' => _x( 'Parent Category', 'Custom taxonomy label.', 'fl-builder' ),
947
+ 'parent_item_colon' => _x( 'Parent Category:', 'Custom taxonomy label.', 'fl-builder' ),
948
+ 'edit_item' => _x( 'Edit Category', 'Custom taxonomy label.', 'fl-builder' ),
949
+ 'update_item' => _x( 'Update Category', 'Custom taxonomy label.', 'fl-builder' ),
950
+ 'add_new_item' => _x( 'Add New Category', 'Custom taxonomy label.', 'fl-builder' ),
951
+ 'new_item_name' => _x( 'New Category Name', 'Custom taxonomy label.', 'fl-builder' ),
952
+ 'menu_name' => _x( 'Categories', 'Custom taxonomy label.', 'fl-builder' ),
953
+ ),
954
+ 'hierarchical' => true,
955
+ 'public' => true,
956
+ 'show_admin_column' => true
957
+ ) );
958
  }
959
 
960
  /**
969
 
970
  $enabled_templates = FLBuilderModel::get_enabled_templates();
971
  $user_templates = FLBuilderModel::get_user_templates();
972
+ $templates = FLBuilderModel::get_template_selector_data();
 
973
 
974
  include FL_BUILDER_DIR . 'includes/template-selector.php';
975
 
1277
  static public function render_column_attributes( $col )
1278
  {
1279
  $custom_class = apply_filters( 'fl_builder_column_custom_class', $col->settings->class, $col );
1280
+ $overlay_bgs = array( 'photo' );
1281
 
1282
  // ID
1283
  if ( ! empty( $col->settings->id ) ) {
1290
  if ( $col->settings->size <= 50 ) {
1291
  echo ' fl-col-small';
1292
  }
1293
+ if ( in_array( $col->settings->bg_type, $overlay_bgs ) && ! empty( $col->settings->bg_overlay_color ) ) {
1294
+ echo ' fl-col-bg-overlay';
1295
+ }
1296
  if ( ! empty( $col->settings->responsive_display ) ) {
1297
  echo ' fl-visible-' . $col->settings->responsive_display;
1298
  }
css/fl-builder-admin-posts.css CHANGED
@@ -75,7 +75,7 @@
75
  -webkit-border-bottom-right-radius: 3px;
76
  -webkit-border-bottom-left-radius: 3px;
77
  margin-bottom: 20px;
78
- padding: 50px;
79
  text-align: center;
80
  }
81
  .fl-builder-admin-ui h3 {
@@ -99,4 +99,27 @@
99
  text-align: center;
100
  top: 0;
101
  z-index: 1;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
102
  }
75
  -webkit-border-bottom-right-radius: 3px;
76
  -webkit-border-bottom-left-radius: 3px;
77
  margin-bottom: 20px;
78
+ padding: 45px 0 50px;
79
  text-align: center;
80
  }
81
  .fl-builder-admin-ui h3 {
99
  text-align: center;
100
  top: 0;
101
  z-index: 1;
102
+ }
103
+
104
+ /* Templates
105
+ ------------------------------------------------------ */
106
+
107
+ .post-type-fl-builder-template .fl-builder-admin-tabs {
108
+ display: none;
109
+ }
110
+ .post-type-fl-builder-template .fl-builder-admin-ui {
111
+ border-radius: 3px;
112
+ -moz-border-radius: 3px;
113
+ -webkit-border-radius: 3px;
114
+ display: block;
115
+ margin-top: 30px;
116
+ }
117
+ #fl-builder-template-category-tabs {
118
+ display: none;
119
+ }
120
+ #fl-builder-template-category-all {
121
+ margin: 13px 0 0;
122
+ }
123
+ #newfl-builder-template-category_parent {
124
+ display: none;
125
  }
css/fl-builder-admin-settings.css CHANGED
@@ -60,6 +60,7 @@
60
  }
61
  .fl-settings-form-content h4 {
62
  font-size: 14px;
 
63
  }
64
 
65
  /* Settings Forms
60
  }
61
  .fl-settings-form-content h4 {
62
  font-size: 14px;
63
+ margin: 30px 0 5px;
64
  }
65
 
66
  /* Settings Forms
css/fl-builder-layout.css CHANGED
@@ -39,15 +39,6 @@
39
  .fl-module-content {
40
  zoom:1;
41
  }
42
- .fl-row,
43
- .fl-row-content {
44
- margin-left: auto;
45
- margin-right: auto;
46
- }
47
- .fl-col {
48
- float: left;
49
- min-height: 1px;
50
- }
51
  .fl-clear {
52
  clear: both;
53
  }
@@ -79,6 +70,17 @@
79
  /* Rows
80
  ------------------------------------------------------ */
81
 
 
 
 
 
 
 
 
 
 
 
 
82
  /* Video Bg */
83
  .fl-row-bg-video,
84
  .fl-row-bg-video .fl-row-content {
@@ -133,7 +135,7 @@
133
  top: 0;
134
  }
135
 
136
- /* Bg Overlay */
137
  .fl-row-bg-overlay .fl-row-content-wrap {
138
  position: relative;
139
  }
@@ -152,6 +154,33 @@
152
  z-index: 1;
153
  }
154
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
155
  /* Modules
156
  ------------------------------------------------------ */
157
 
@@ -214,6 +243,10 @@
214
  vertical-align: middle;
215
  width: auto;
216
  }
 
 
 
 
217
  .fl-builder-content .fl-button-has-icon .fl-button-text {
218
  vertical-align: middle;
219
  }
@@ -255,6 +288,7 @@
255
  ------------------------------------------------------ */
256
 
257
  .fl-photo {
 
258
  position: relative;
259
  }
260
  .fl-photo-align-left {
@@ -267,7 +301,10 @@
267
  text-align: right;
268
  }
269
  .fl-photo-content {
 
270
  line-height: 0;
 
 
271
  }
272
  .fl-photo-content img {
273
  display: inline;
@@ -305,7 +342,7 @@
305
  -moz-transition:opacity 0.3s ease-in;
306
  transition:opacity 0.3s ease-in;
307
  }
308
- .fl-photo:hover .fl-photo-caption-hover {
309
  opacity: 100;
310
  filter: alpha(opacity = 100);
311
  }
39
  .fl-module-content {
40
  zoom:1;
41
  }
 
 
 
 
 
 
 
 
 
42
  .fl-clear {
43
  clear: both;
44
  }
70
  /* Rows
71
  ------------------------------------------------------ */
72
 
73
+ .fl-row,
74
+ .fl-row-content {
75
+ margin-left: auto;
76
+ margin-right: auto;
77
+ }
78
+
79
+ /* Photo Bg */
80
+ .fl-builder-touch .fl-row-bg-photo .fl-row-content-wrap {
81
+ background-attachment: scroll;
82
+ }
83
+
84
  /* Video Bg */
85
  .fl-row-bg-video,
86
  .fl-row-bg-video .fl-row-content {
135
  top: 0;
136
  }
137
 
138
+ /* Row Bg Overlay */
139
  .fl-row-bg-overlay .fl-row-content-wrap {
140
  position: relative;
141
  }
154
  z-index: 1;
155
  }
156
 
157
+ /* Columns
158
+ ------------------------------------------------------ */
159
+
160
+ .fl-col {
161
+ float: left;
162
+ min-height: 1px;
163
+ }
164
+
165
+ /* Column Bg Overlay */
166
+ .fl-col-bg-overlay .fl-col-content {
167
+ position: relative;
168
+ }
169
+ .fl-col-bg-overlay .fl-col-content:after {
170
+ content: '';
171
+ display: block;
172
+ position: absolute;
173
+ top: 0;
174
+ right: 0;
175
+ bottom: 0;
176
+ left: 0;
177
+ z-index: 0;
178
+ }
179
+ .fl-col-bg-overlay .fl-module {
180
+ position: relative;
181
+ z-index: 1;
182
+ }
183
+
184
  /* Modules
185
  ------------------------------------------------------ */
186
 
243
  vertical-align: middle;
244
  width: auto;
245
  }
246
+ .fl-builder-content .fl-button i.fl-button-icon-after {
247
+ margin-left: 8px;
248
+ margin-right: 0;
249
+ }
250
  .fl-builder-content .fl-button-has-icon .fl-button-text {
251
  vertical-align: middle;
252
  }
288
  ------------------------------------------------------ */
289
 
290
  .fl-photo {
291
+ line-height: 0;
292
  position: relative;
293
  }
294
  .fl-photo-align-left {
301
  text-align: right;
302
  }
303
  .fl-photo-content {
304
+ display: inline-block;
305
  line-height: 0;
306
+ position: relative;
307
+ max-width: 100%;
308
  }
309
  .fl-photo-content img {
310
  display: inline;
342
  -moz-transition:opacity 0.3s ease-in;
343
  transition:opacity 0.3s ease-in;
344
  }
345
+ .fl-photo-content:hover .fl-photo-caption-hover {
346
  opacity: 100;
347
  filter: alpha(opacity = 100);
348
  }
css/fl-builder.css CHANGED
@@ -5,7 +5,7 @@ html.fl-builder-edit {
5
  margin-top: 43px !important;
6
  }
7
  .fl-builder-edit body {
8
- position: static;
9
  }
10
  .fl-builder-edit #wpadminbar {
11
  display: none;
@@ -563,6 +563,56 @@ html.fl-builder-edit {
563
  /* Template Selector
564
  ------------------------------------------------------ */
565
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
566
  .fl-user-templates {
567
  border-top: 1px solid #dfdfdf;
568
  margin-bottom: 20px;
@@ -601,40 +651,6 @@ html.fl-builder-edit {
601
  .fl-user-templates-message {
602
  display: none;
603
  }
604
- .fl-template-selector .fl-builder-settings-tab-description {
605
- font-size: 15px!important;
606
- margin: 0 !important;
607
- padding: 10px 0 25px;
608
- text-align: center;
609
- }
610
- .fl-template-preview {
611
- float: left;
612
- margin: 0 20px 30px 0;
613
- position: relative;
614
- text-align: center;
615
- width: 170px;
616
- }
617
- .fl-template-preview.fl-last {
618
- margin-right: 0;
619
- }
620
- .fl-template-image {
621
- border: 1px solid #d9d9d9;
622
- cursor: pointer;
623
- margin-bottom: 12px;
624
- height: 164px;
625
- overflow: hidden;
626
- }
627
- .fl-template-image:hover {
628
- border-color: #ff0000;
629
- }
630
- .fl-template-image img {
631
- max-height: none;
632
- width: 100%;
633
- }
634
- .fl-template-preview span {
635
- display: block;
636
- text-align: center;
637
- }
638
 
639
  /* User Template Settings
640
  ------------------------------------------------------ */
@@ -659,6 +675,10 @@ form.fl-builder-settings {
659
  padding: 20px 25px !important;
660
  background: #f2f2f2 !important;
661
  }
 
 
 
 
662
  .fl-builder-preview-loader {
663
  position: relative;
664
  top: -1px;
@@ -750,6 +770,13 @@ form.fl-builder-settings {
750
  overflow: hidden;
751
  position: relative;
752
  }
 
 
 
 
 
 
 
753
  .fl-builder-settings-fields .fl-nanoscroller-content {
754
  padding: 15px 20px 20px 20px;
755
  }
5
  margin-top: 43px !important;
6
  }
7
  .fl-builder-edit body {
8
+ position: static !important;
9
  }
10
  .fl-builder-edit #wpadminbar {
11
  display: none;
563
  /* Template Selector
564
  ------------------------------------------------------ */
565
 
566
+ .fl-template-category-select {
567
+ width: 180px !important;
568
+ }
569
+ .fl-template-selector .fl-builder-settings-section {
570
+ margin: 0 0 10px;
571
+ }
572
+ .fl-template-selector .fl-builder-settings-fields {
573
+ height: 470px;
574
+ }
575
+ .fl-template-selector .fl-builder-settings-tab-description {
576
+ font-size: 15px!important;
577
+ margin: 0 !important;
578
+ padding: 10px 0 25px;
579
+ text-align: center;
580
+ }
581
+ .fl-template-preview {
582
+ float: left;
583
+ margin: 0 20px 30px 0;
584
+ position: relative;
585
+ text-align: center;
586
+ width: 170px;
587
+ }
588
+ .fl-template-preview.fl-last {
589
+ margin-right: 0;
590
+ }
591
+ .fl-template-image {
592
+ border: 1px solid #d9d9d9;
593
+ cursor: pointer;
594
+ margin-bottom: 12px;
595
+ height: 164px;
596
+ overflow: hidden;
597
+ }
598
+ .fl-template-image:hover {
599
+ border-color: #ff0000;
600
+ }
601
+ .fl-template-image img {
602
+ max-height: none;
603
+ width: 100%;
604
+ }
605
+ .fl-template-preview span {
606
+ display: block;
607
+ text-align: center;
608
+ }
609
+ .fl-user-template-category-name {
610
+ background: #f2f2f2;
611
+ border-bottom: 3px solid #dfdfdf;
612
+ border-top: 2px solid #dfdfdf;
613
+ font-weight: bold;
614
+ padding: 8px 15px;
615
+ }
616
  .fl-user-templates {
617
  border-top: 1px solid #dfdfdf;
618
  margin-bottom: 20px;
651
  .fl-user-templates-message {
652
  display: none;
653
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
654
 
655
  /* User Template Settings
656
  ------------------------------------------------------ */
675
  padding: 20px 25px !important;
676
  background: #f2f2f2 !important;
677
  }
678
+ .fl-builder-settings-message * {
679
+ font-size: 15px !important;
680
+ line-height: 23px !important;
681
+ }
682
  .fl-builder-preview-loader {
683
  position: relative;
684
  top: -1px;
770
  overflow: hidden;
771
  position: relative;
772
  }
773
+ .fl-lightbox-header .fl-builder-settings-fields {
774
+ height: auto;
775
+ margin: 0;
776
+ position: absolute;
777
+ right: 10px;
778
+ top: 10px;
779
+ }
780
  .fl-builder-settings-fields .fl-nanoscroller-content {
781
  padding: 15px 20px 20px 20px;
782
  }
fl-builder.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: Beaver Builder Plugin (Lite Version)
4
  * Plugin URI: https://www.wpbeaverbuilder.com/?utm_source=external&utm_medium=builder&utm_campaign=plugins-page
5
  * Description: A drag and drop frontend WordPress page builder plugin that works with almost any theme!
6
- * Version: 1.5.6
7
  * Author: The Beaver Builder Team
8
  * Author URI: https://www.wpbeaverbuilder.com/?utm_source=external&utm_medium=builder&utm_campaign=plugins-page
9
  * Copyright: (c) 2014 Beaver Builder
@@ -11,7 +11,7 @@
11
  * License URI: http://www.gnu.org/licenses/gpl-2.0.html
12
  * Text Domain: fl-builder
13
  */
14
- define('FL_BUILDER_VERSION', '1.5.6');
15
  define('FL_BUILDER_DIR', plugin_dir_path(__FILE__));
16
  define('FL_BUILDER_URL', plugins_url('/', __FILE__));
17
  define('FL_BUILDER_LITE', true);
3
  * Plugin Name: Beaver Builder Plugin (Lite Version)
4
  * Plugin URI: https://www.wpbeaverbuilder.com/?utm_source=external&utm_medium=builder&utm_campaign=plugins-page
5
  * Description: A drag and drop frontend WordPress page builder plugin that works with almost any theme!
6
+ * Version: 1.5.9
7
  * Author: The Beaver Builder Team
8
  * Author URI: https://www.wpbeaverbuilder.com/?utm_source=external&utm_medium=builder&utm_campaign=plugins-page
9
  * Copyright: (c) 2014 Beaver Builder
11
  * License URI: http://www.gnu.org/licenses/gpl-2.0.html
12
  * Text Domain: fl-builder
13
  */
14
+ define('FL_BUILDER_VERSION', '1.5.9');
15
  define('FL_BUILDER_DIR', plugin_dir_path(__FILE__));
16
  define('FL_BUILDER_URL', plugins_url('/', __FILE__));
17
  define('FL_BUILDER_LITE', true);
includes/admin-posts.php CHANGED
@@ -4,7 +4,7 @@
4
  <a href="javascript:void(0);" onclick="return false;" class="fl-enable-builder<?php if($enabled) echo ' fl-active'; ?>"><?php echo FLBuilderModel::get_branding(); ?></a>
5
  </div>
6
  <div class="fl-builder-admin-ui">
7
- <h3><?php printf( _x( '%s is currently active for this page.', '%s stands for custom branded "Page Builder" name.', 'fl-builder' ), FLBuilderModel::get_branding() ); ?></h3>
8
  <a href="<?php echo FLBuilderModel::get_edit_url(); ?>" class="fl-launch-builder button button-primary button-large"><?php printf( _x( 'Launch %s', '%s stands for custom branded "Page Builder" name.', 'fl-builder' ), FLBuilderModel::get_branding() ); ?></a>
9
  </div>
10
  <div class="fl-builder-loading"></div>
4
  <a href="javascript:void(0);" onclick="return false;" class="fl-enable-builder<?php if($enabled) echo ' fl-active'; ?>"><?php echo FLBuilderModel::get_branding(); ?></a>
5
  </div>
6
  <div class="fl-builder-admin-ui">
7
+ <h3><?php printf( _x( '%s is currently active for this %s.', 'The first %s stands for custom branded "Page Builder" name. The second %s stands for the post type name.', 'fl-builder' ), FLBuilderModel::get_branding(), $post_type_name ); ?></h3>
8
  <a href="<?php echo FLBuilderModel::get_edit_url(); ?>" class="fl-launch-builder button button-primary button-large"><?php printf( _x( 'Launch %s', '%s stands for custom branded "Page Builder" name.', 'fl-builder' ), FLBuilderModel::get_branding() ); ?></a>
9
  </div>
10
  <div class="fl-builder-loading"></div>
includes/column-css.php CHANGED
@@ -15,13 +15,30 @@
15
  }
16
  <?php endif; ?>
17
 
18
- <?php if(!empty($col->settings->bg_color)) : ?>
19
  .fl-node-<?php echo $col->node; ?> .fl-col-content {
20
  background-color: #<?php echo $col->settings->bg_color; ?>;
21
  background-color: rgba(<?php echo implode(',', FLBuilderColor::hex_to_rgb($col->settings->bg_color)) ?>, <?php echo $col->settings->bg_opacity/100; ?>);
22
  }
23
  <?php endif; ?>
24
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
25
  <?php if(!empty($col->settings->border_type)) : ?>
26
  .fl-builder-content .fl-node-<?php echo $col->node; ?> .fl-col-content {
27
  border-style: <?php echo $col->settings->border_type; ?>;
15
  }
16
  <?php endif; ?>
17
 
18
+ <?php if($col->settings->bg_type == 'color' && !empty($col->settings->bg_color)) : ?>
19
  .fl-node-<?php echo $col->node; ?> .fl-col-content {
20
  background-color: #<?php echo $col->settings->bg_color; ?>;
21
  background-color: rgba(<?php echo implode(',', FLBuilderColor::hex_to_rgb($col->settings->bg_color)) ?>, <?php echo $col->settings->bg_opacity/100; ?>);
22
  }
23
  <?php endif; ?>
24
 
25
+ <?php if($col->settings->bg_type == 'photo' && !empty($col->settings->bg_image)) : ?>
26
+ .fl-node-<?php echo $col->node; ?> .fl-col-content {
27
+ background-image: url(<?php echo $col->settings->bg_image_src; ?>);
28
+ background-repeat: <?php echo $col->settings->bg_repeat; ?>;
29
+ background-position: <?php echo $col->settings->bg_position; ?>;
30
+ background-attachment: <?php echo $col->settings->bg_attachment; ?>;
31
+ background-size: <?php echo $col->settings->bg_size; ?>;
32
+ }
33
+ <?php endif; ?>
34
+
35
+ <?php if( in_array( $col->settings->bg_type, array('photo') ) && ! empty( $col->settings->bg_overlay_color ) ) : ?>
36
+ .fl-node-<?php echo $col->node; ?> .fl-col-content:after {
37
+ background-color: #<?php echo $col->settings->bg_overlay_color; ?>;
38
+ background-color: rgba(<?php echo implode( ',', FLBuilderColor::hex_to_rgb( $col->settings->bg_overlay_color ) ) ?>, <?php echo $col->settings->bg_overlay_opacity/100; ?>);
39
+ }
40
+ <?php endif; ?>
41
+
42
  <?php if(!empty($col->settings->border_type)) : ?>
43
  .fl-builder-content .fl-node-<?php echo $col->node; ?> .fl-col-content {
44
  border-style: <?php echo $col->settings->border_type; ?>;
includes/column-settings.php CHANGED
@@ -35,6 +35,32 @@ FLBuilder::register_settings_form('col', array(
35
  )
36
  )
37
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
38
  'bg_color' => array(
39
  'title' => __('Background Color', 'fl-builder'),
40
  'fields' => array(
@@ -59,6 +85,104 @@ FLBuilder::register_settings_form('col', array(
59
  )
60
  )
61
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
62
  'border' => array(
63
  'title' => __('Border', 'fl-builder'),
64
  'fields' => array(
35
  )
36
  )
37
  ),
38
+ 'background' => array(
39
+ 'title' => __('Background', 'fl-builder'),
40
+ 'fields' => array(
41
+ 'bg_type' => array(
42
+ 'type' => 'select',
43
+ 'label' => __('Type', 'fl-builder'),
44
+ 'default' => 'color',
45
+ 'options' => array(
46
+ 'none' => _x( 'None', 'Background type.', 'fl-builder' ),
47
+ 'color' => _x( 'Color', 'Background type.', 'fl-builder' ),
48
+ 'photo' => _x( 'Photo', 'Background type.', 'fl-builder' ),
49
+ ),
50
+ 'toggle' => array(
51
+ 'color' => array(
52
+ 'sections' => array('bg_color')
53
+ ),
54
+ 'photo' => array(
55
+ 'sections' => array('bg_photo', 'bg_overlay')
56
+ ),
57
+ ),
58
+ 'preview' => array(
59
+ 'type' => 'none'
60
+ )
61
+ )
62
+ )
63
+ ),
64
  'bg_color' => array(
65
  'title' => __('Background Color', 'fl-builder'),
66
  'fields' => array(
85
  )
86
  )
87
  ),
88
+ 'bg_photo' => array(
89
+ 'title' => __('Background Photo', 'fl-builder'),
90
+ 'fields' => array(
91
+ 'bg_image' => array(
92
+ 'type' => 'photo',
93
+ 'label' => __('Photo', 'fl-builder'),
94
+ 'preview' => array(
95
+ 'type' => 'none'
96
+ )
97
+ ),
98
+ 'bg_repeat' => array(
99
+ 'type' => 'select',
100
+ 'label' => __('Repeat', 'fl-builder'),
101
+ 'default' => 'none',
102
+ 'options' => array(
103
+ 'no-repeat' => _x( 'None', 'Background repeat.', 'fl-builder' ),
104
+ 'repeat' => _x( 'Tile', 'Background repeat.', 'fl-builder' ),
105
+ 'repeat-x' => _x( 'Horizontal', 'Background repeat.', 'fl-builder' ),
106
+ 'repeat-y' => _x( 'Vertical', 'Background repeat.', 'fl-builder' )
107
+ ),
108
+ 'help' => __('Repeat applies to how the image should display in the background. Choosing none will display the image as uploaded. Tile will repeat the image as many times as needed to fill the background horizontally and vertically. You can also specify the image to only repeat horizontally or vertically.', 'fl-builder'),
109
+ 'preview' => array(
110
+ 'type' => 'none'
111
+ )
112
+ ),
113
+ 'bg_position' => array(
114
+ 'type' => 'select',
115
+ 'label' => __('Position', 'fl-builder'),
116
+ 'default' => 'center center',
117
+ 'options' => array(
118
+ 'left top' => __('Left Top', 'fl-builder'),
119
+ 'left center' => __('Left Center', 'fl-builder'),
120
+ 'left bottom' => __('Left Bottom', 'fl-builder'),
121
+ 'right top' => __('Right Top', 'fl-builder'),
122
+ 'right center' => __('Right Center', 'fl-builder'),
123
+ 'right bottom' => __('Right Bottom', 'fl-builder'),
124
+ 'center top' => __('Center Top', 'fl-builder'),
125
+ 'center center' => __( 'Center', 'fl-builder' ),
126
+ 'center bottom' => __('Center Bottom', 'fl-builder')
127
+ ),
128
+ 'help' => __('Position will tell the image where it should sit in the background.', 'fl-builder'),
129
+ 'preview' => array(
130
+ 'type' => 'none'
131
+ )
132
+ ),
133
+ 'bg_attachment' => array(
134
+ 'type' => 'select',
135
+ 'label' => __('Attachment', 'fl-builder'),
136
+ 'default' => 'scroll',
137
+ 'options' => array(
138
+ 'scroll' => __( 'Scroll', 'fl-builder' ),
139
+ 'fixed' => __( 'Fixed', 'fl-builder' )
140
+ ),
141
+ 'help' => __('Attachment will specify how the image reacts when scrolling a page. When scrolling is selected, the image will scroll with page scrolling. This is the default setting. Fixed will allow the image to scroll within the background if fill is selected in the scale setting.', 'fl-builder'),
142
+ 'preview' => array(
143
+ 'type' => 'none'
144
+ )
145
+ ),
146
+ 'bg_size' => array(
147
+ 'type' => 'select',
148
+ 'label' => __('Scale', 'fl-builder'),
149
+ 'default' => 'cover',
150
+ 'options' => array(
151
+ '' => _x( 'None', 'Background scale.', 'fl-builder' ),
152
+ 'contain' => __( 'Fit', 'fl-builder'),
153
+ 'cover' => __( 'Fill', 'fl-builder')
154
+ ),
155
+ 'help' => __('Scale applies to how the image should display in the background. You can select either fill or fit to the background.', 'fl-builder'),
156
+ 'preview' => array(
157
+ 'type' => 'none'
158
+ )
159
+ )
160
+ )
161
+ ),
162
+ 'bg_overlay' => array(
163
+ 'title' => __('Background Overlay', 'fl-builder'),
164
+ 'fields' => array(
165
+ 'bg_overlay_color' => array(
166
+ 'type' => 'color',
167
+ 'label' => __('Overlay Color', 'fl-builder'),
168
+ 'show_reset' => true,
169
+ 'preview' => array(
170
+ 'type' => 'none'
171
+ )
172
+ ),
173
+ 'bg_overlay_opacity' => array(
174
+ 'type' => 'text',
175
+ 'label' => __('Overlay Opacity', 'fl-builder'),
176
+ 'default' => '50',
177
+ 'description' => '%',
178
+ 'maxlength' => '3',
179
+ 'size' => '5',
180
+ 'preview' => array(
181
+ 'type' => 'none'
182
+ )
183
+ )
184
+ )
185
+ ),
186
  'border' => array(
187
  'title' => __('Border', 'fl-builder'),
188
  'fields' => array(
includes/js-config.php CHANGED
@@ -28,8 +28,8 @@ var FLBuilderStrings = {
28
  deleteModuleMessage: '<?php esc_attr_e('Do you really want to delete this module? All content data will be permanently deleted.', 'fl-builder') ?>',
29
  deleteRowMessage: '<?php esc_attr_e('Do you really want to delete this row? All content data will be permanently deleted.', 'fl-builder') ?>',
30
  deleteTemplate: '<?php esc_attr_e('Do you really want to delete this template?', 'fl-builder'); ?>',
31
- discard: '<?php esc_attr_e('Discard Draft', 'fl-builder'); ?>',
32
- discardMessage: '<?php esc_attr_e('Do you really want to discard this draft? All of your changes that are not published will be lost.', 'fl-builder'); ?>',
33
  done: '<?php esc_attr_e('Done', 'fl-builder'); ?>',
34
  draft: '<?php esc_attr_e('Save Draft', 'fl-builder'); ?>',
35
  duplicate: '<?php _ex( 'Duplicate', 'Duplicate page/post action label.', 'fl-builder' ); ?>',
28
  deleteModuleMessage: '<?php esc_attr_e('Do you really want to delete this module? All content data will be permanently deleted.', 'fl-builder') ?>',
29
  deleteRowMessage: '<?php esc_attr_e('Do you really want to delete this row? All content data will be permanently deleted.', 'fl-builder') ?>',
30
  deleteTemplate: '<?php esc_attr_e('Do you really want to delete this template?', 'fl-builder'); ?>',
31
+ discard: '<?php esc_attr_e('Discard Changes', 'fl-builder'); ?>',
32
+ discardMessage: '<?php esc_attr_e('Do you really want to discard these changes? All of your changes that are not published will be lost.', 'fl-builder'); ?>',
33
  done: '<?php esc_attr_e('Done', 'fl-builder'); ?>',
34
  draft: '<?php esc_attr_e('Save Draft', 'fl-builder'); ?>',
35
  duplicate: '<?php _ex( 'Duplicate', 'Duplicate page/post action label.', 'fl-builder' ); ?>',
includes/row-settings.php CHANGED
@@ -145,7 +145,7 @@ FLBuilder::register_settings_form('row', array(
145
  'repeat-x' => _x( 'Horizontal', 'Background repeat.', 'fl-builder' ),
146
  'repeat-y' => _x( 'Vertical', 'Background repeat.', 'fl-builder' )
147
  ),
148
- 'help' => __('Repeat applies to how the image should display in the row background. Choosing none will display the image as uploaded. Tile will repeat the image as many times as needed to fill the row horizontally and vertically. You can also specify the image to only repeat horizontally or vertically.', 'fl-builder'),
149
  'preview' => array(
150
  'type' => 'none'
151
  )
@@ -165,7 +165,7 @@ FLBuilder::register_settings_form('row', array(
165
  'center center' => __( 'Center', 'fl-builder' ),
166
  'center bottom' => __('Center Bottom', 'fl-builder')
167
  ),
168
- 'help' => __('Position will tell the image where it should sit in the row background.', 'fl-builder'),
169
  'preview' => array(
170
  'type' => 'none'
171
  )
@@ -178,7 +178,7 @@ FLBuilder::register_settings_form('row', array(
178
  'scroll' => __( 'Scroll', 'fl-builder' ),
179
  'fixed' => __( 'Fixed', 'fl-builder' )
180
  ),
181
- 'help' => __('Attachment will specify how the image reacts when scrolling a page. When scrolling is selected, the image will scroll with page scrolling. This is the default setting. Fixed will allow the image to scroll within the row background if fill is selected in the scale setting.', 'fl-builder'),
182
  'preview' => array(
183
  'type' => 'none'
184
  )
@@ -192,7 +192,7 @@ FLBuilder::register_settings_form('row', array(
192
  'contain' => __( 'Fit', 'fl-builder'),
193
  'cover' => __( 'Fill', 'fl-builder')
194
  ),
195
- 'help' => __('Scale applies to how the image should display in the row background. You can select either fill or fit to the row background.', 'fl-builder'),
196
  'preview' => array(
197
  'type' => 'none'
198
  )
145
  'repeat-x' => _x( 'Horizontal', 'Background repeat.', 'fl-builder' ),
146
  'repeat-y' => _x( 'Vertical', 'Background repeat.', 'fl-builder' )
147
  ),
148
+ 'help' => __('Repeat applies to how the image should display in the background. Choosing none will display the image as uploaded. Tile will repeat the image as many times as needed to fill the background horizontally and vertically. You can also specify the image to only repeat horizontally or vertically.', 'fl-builder'),
149
  'preview' => array(
150
  'type' => 'none'
151
  )
165
  'center center' => __( 'Center', 'fl-builder' ),
166
  'center bottom' => __('Center Bottom', 'fl-builder')
167
  ),
168
+ 'help' => __('Position will tell the image where it should sit in the background.', 'fl-builder'),
169
  'preview' => array(
170
  'type' => 'none'
171
  )
178
  'scroll' => __( 'Scroll', 'fl-builder' ),
179
  'fixed' => __( 'Fixed', 'fl-builder' )
180
  ),
181
+ 'help' => __('Attachment will specify how the image reacts when scrolling a page. When scrolling is selected, the image will scroll with page scrolling. This is the default setting. Fixed will allow the image to scroll within the background if fill is selected in the scale setting.', 'fl-builder'),
182
  'preview' => array(
183
  'type' => 'none'
184
  )
192
  'contain' => __( 'Fit', 'fl-builder'),
193
  'cover' => __( 'Fill', 'fl-builder')
194
  ),
195
+ 'help' => __('Scale applies to how the image should display in the background. You can select either fill or fit to the background.', 'fl-builder'),
196
  'preview' => array(
197
  'type' => 'none'
198
  )
includes/ui.php CHANGED
@@ -3,12 +3,23 @@
3
  <?php if(get_post_type() == 'fl-builder-template') : ?>
4
 
5
  <div class="fl-builder-bar-content">
 
6
  <span class="fl-builder-bar-title fl-builder-bar-title-no-icon">
7
  <?php echo sprintf(__('Template: %s', 'fl-builder'), get_the_title($post_id)); ?>
8
  </span>
 
 
 
 
 
 
9
  <div class="fl-builder-bar-actions">
10
- <span class="fl-builder-save-edit-template-button fl-builder-button fl-builder-button-primary"><?php _e('Save Template', 'fl-builder'); ?></span>
11
- <span class="fl-builder-cancel-edit-template-button fl-builder-button"><?php _e('Cancel', 'fl-builder'); ?></span>
 
 
 
 
12
  <div class="fl-clear"></div>
13
  </div>
14
  <div class="fl-clear"></div>
3
  <?php if(get_post_type() == 'fl-builder-template') : ?>
4
 
5
  <div class="fl-builder-bar-content">
6
+ <?php if(FLBuilderModel::get_branding_icon() == '') : ?>
7
  <span class="fl-builder-bar-title fl-builder-bar-title-no-icon">
8
  <?php echo sprintf(__('Template: %s', 'fl-builder'), get_the_title($post_id)); ?>
9
  </span>
10
+ <?php else : ?>
11
+ <span class="fl-builder-bar-title">
12
+ <img src="<?php echo FLBuilderModel::get_branding_icon(); ?>" />
13
+ <span><?php echo sprintf(__('Template: %s', 'fl-builder'), get_the_title($post_id)); ?></span>
14
+ </span>
15
+ <?php endif; ?>
16
  <div class="fl-builder-bar-actions">
17
+ <?php if ( $help_button['enabled'] ) : ?>
18
+ <span class="fl-builder-help-button fl-builder-button"><i class="fa fa-question-circle"></i></span>
19
+ <?php endif ?>
20
+ <span class="fl-builder-done-button fl-builder-button fl-builder-button-primary"><?php _e('Done', 'fl-builder'); ?></span>
21
+ <span class="fl-builder-tools-button fl-builder-button"><?php _e('Tools', 'fl-builder'); ?></span>
22
+ <span class="fl-builder-add-content-button fl-builder-button"><?php _e('Add Content', 'fl-builder'); ?></span>
23
  <div class="fl-clear"></div>
24
  </div>
25
  <div class="fl-clear"></div>
includes/updater-config.php CHANGED
@@ -3,7 +3,7 @@
3
  if(class_exists('FLUpdater')) {
4
  FLUpdater::add_product(array(
5
  'name' => 'Beaver Builder Plugin (Lite Version)',
6
- 'version' => '1.5.6',
7
  'slug' => 'bb-plugin',
8
  'type' => 'plugin'
9
  ));
3
  if(class_exists('FLUpdater')) {
4
  FLUpdater::add_product(array(
5
  'name' => 'Beaver Builder Plugin (Lite Version)',
6
+ 'version' => '1.5.9',
7
  'slug' => 'bb-plugin',
8
  'type' => 'plugin'
9
  ));
includes/user-template-settings.php DELETED
@@ -1,22 +0,0 @@
1
- <?php
2
-
3
- FLBuilder::register_settings_form('user_template', array(
4
- 'title' => __('Save Template', 'fl-builder'),
5
- 'tabs' => array(
6
- 'general' => array(
7
- 'title' => __('General', 'fl-builder'),
8
- 'description' => __('Save the current layout as a template that can be reused under <strong>Templates &rarr; Your Templates</strong>.', 'fl-builder'),
9
- 'sections' => array(
10
- 'general' => array(
11
- 'title' => '',
12
- 'fields' => array(
13
- 'name' => array(
14
- 'type' => 'text',
15
- 'label' => _x( 'Name', 'Template name.', 'fl-builder' )
16
- )
17
- )
18
- )
19
- )
20
- )
21
- )
22
- ));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/vendor/infusionsoft/infusionsoft.pem ADDED
@@ -0,0 +1,3894 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ##
2
+ ## Bundle of CA Root Certificates
3
+ ##
4
+ ## Certificate data from Mozilla downloaded on: Wed Sep 3 03:12:03 2014
5
+ ##
6
+ ## This is a bundle of X.509 certificates of public Certificate Authorities
7
+ ## (CA). These were automatically extracted from Mozilla's root certificates
8
+ ## file (certdata.txt). This file can be found in the mozilla source tree:
9
+ ## http://hg.mozilla.org/releases/mozilla-release/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt
10
+ ##
11
+ ## It contains the certificates in PEM format and therefore
12
+ ## can be directly used with curl / libcurl / php_curl, or with
13
+ ## an Apache+mod_ssl webserver for SSL client authentication.
14
+ ## Just configure this file as the SSLCACertificateFile.
15
+ ##
16
+ ## Conversion done with mk-ca-bundle.pl verison 1.22.
17
+ ## SHA1: c4540021427a6fa29e5f50db9f12d48c97d33889
18
+ ##
19
+
20
+
21
+ GTE CyberTrust Global Root
22
+ ==========================
23
+ -----BEGIN CERTIFICATE-----
24
+ MIICWjCCAcMCAgGlMA0GCSqGSIb3DQEBBAUAMHUxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9HVEUg
25
+ Q29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNvbHV0aW9ucywgSW5jLjEjMCEG
26
+ A1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJvb3QwHhcNOTgwODEzMDAyOTAwWhcNMTgwODEz
27
+ MjM1OTAwWjB1MQswCQYDVQQGEwJVUzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQL
28
+ Ex5HVEUgQ3liZXJUcnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0
29
+ IEdsb2JhbCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVD6C28FCc6HrHiM3dFw4u
30
+ sJTQGz0O9pTAipTHBsiQl8i4ZBp6fmw8U+E3KHNgf7KXUwefU/ltWJTSr41tiGeA5u2ylc9yMcql
31
+ HHK6XALnZELn+aks1joNrI1CqiQBOeacPwGFVw1Yh0X404Wqk2kmhXBIgD8SFcd5tB8FLztimQID
32
+ AQABMA0GCSqGSIb3DQEBBAUAA4GBAG3rGwnpXtlR22ciYaQqPEh346B8pt5zohQDhT37qw4wxYMW
33
+ M4ETCJ57NE7fQMh017l93PR2VX2bY1QY6fDq81yx2YtCHrnAlU66+tXifPVoYb+O7AWXX1uw16OF
34
+ NMQkpw0PlZPvy5TYnh+dXIVtx6quTx8itc2VrbqnzPmrC3p/
35
+ -----END CERTIFICATE-----
36
+
37
+ Thawte Server CA
38
+ ================
39
+ -----BEGIN CERTIFICATE-----
40
+ MIIDEzCCAnygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBxDELMAkGA1UEBhMCWkExFTATBgNVBAgT
41
+ DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs
42
+ dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UE
43
+ AxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5j
44
+ b20wHhcNOTYwODAxMDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBxDELMAkGA1UEBhMCWkExFTATBgNV
45
+ BAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29u
46
+ c3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcG
47
+ A1UEAxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0
48
+ ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANOkUG7I/1Zr5s9dtuoMaHVHoqrC2oQl
49
+ /Kj0R1HahbUgdJSGHg91yekIYfUGbTBuFRkC6VLAYttNmZ7iagxEOM3+vuNkCXDF/rFrKbYvScg7
50
+ 1CcEJRCXL+eQbcAoQpnXTEPew/UhbVSfXcNY4cDk2VuwuNy0e982OsK1ZiIS1ocNAgMBAAGjEzAR
51
+ MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAB/pMaVz7lcxG7oWDTSEwjsrZqG9J
52
+ GubaUeNgcGyEYRGhGshIPllDfU+VPaGLtwtimHp1it2ITk6eQNuozDJ0uW8NxuOzRAvZim+aKZuZ
53
+ GCg70eNAKJpaPNW15yAbi8qkq43pUdniTCxZqdq5snUb9kLy78fyGPmJvKP/iiMucEc=
54
+ -----END CERTIFICATE-----
55
+
56
+ Thawte Premium Server CA
57
+ ========================
58
+ -----BEGIN CERTIFICATE-----
59
+ MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkExFTATBgNVBAgT
60
+ DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs
61
+ dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UE
62
+ AxMYVGhhd3RlIFByZW1pdW0gU2VydmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZl
63
+ ckB0aGF3dGUuY29tMB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYT
64
+ AlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsGA1UEChMU
65
+ VGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRpb24gU2VydmljZXMgRGl2
66
+ aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNlcnZlciBDQTEoMCYGCSqGSIb3DQEJARYZ
67
+ cHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2
68
+ aovXwlue2oFBYo847kkEVdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIh
69
+ Udib0GfQug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMRuHM/
70
+ qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQAm
71
+ SCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUIhfzJATj/Tb7yFkJD57taRvvBxhEf
72
+ 8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JMpAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7t
73
+ UCemDaYj+bvLpgcUQg==
74
+ -----END CERTIFICATE-----
75
+
76
+ Equifax Secure CA
77
+ =================
78
+ -----BEGIN CERTIFICATE-----
79
+ MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJVUzEQMA4GA1UE
80
+ ChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5
81
+ MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1MVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoT
82
+ B0VxdWlmYXgxLTArBgNVBAsTJEVxdWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eTCB
83
+ nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2RFGiYCh7+2gRvE4RiIcPR
84
+ fM6fBeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO/t0BCezhABRP/PvwDN1Dulsr4R+AcJkVV5MW
85
+ 8Q+XarfCaCMczE1ZMKxRHjuvK9buY0V7xdlfUNLjUA86iOe/FP3gx7kCAwEAAaOCAQkwggEFMHAG
86
+ A1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UE
87
+ CxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoG
88
+ A1UdEAQTMBGBDzIwMTgwODIyMTY0MTUxWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUSOZo+SvS
89
+ spXXR9gjIBBPM5iQn9QwHQYDVR0OBBYEFEjmaPkr0rKV10fYIyAQTzOYkJ/UMAwGA1UdEwQFMAMB
90
+ Af8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUAA4GBAFjOKer89961
91
+ zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y7qj/WsjTVbJmcVfewCHrPSqnI0kB
92
+ BIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee95
93
+ 70+sB3c4
94
+ -----END CERTIFICATE-----
95
+
96
+ Verisign Class 3 Public Primary Certification Authority - G2
97
+ ============================================================
98
+ -----BEGIN CERTIFICATE-----
99
+ MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJBgNVBAYTAlVT
100
+ MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFy
101
+ eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
102
+ biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
103
+ dCBOZXR3b3JrMB4XDTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVT
104
+ MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFy
105
+ eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
106
+ biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
107
+ dCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCO
108
+ FoUgRm1HP9SFIIThbbP4pO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71
109
+ lSk8UOg013gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwIDAQAB
110
+ MA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSkU01UbSuvDV1Ai2TT
111
+ 1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7iF6YM40AIOw7n60RzKprxaZLvcRTD
112
+ Oaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpYoJ2daZH9
113
+ -----END CERTIFICATE-----
114
+
115
+ GlobalSign Root CA
116
+ ==================
117
+ -----BEGIN CERTIFICATE-----
118
+ MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkGA1UEBhMCQkUx
119
+ GTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jvb3QgQ0ExGzAZBgNVBAMTEkds
120
+ b2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAwMDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNV
121
+ BAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYD
122
+ VQQDExJHbG9iYWxTaWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDa
123
+ DuaZjc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavpxy0Sy6sc
124
+ THAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp1Wrjsok6Vjk4bwY8iGlb
125
+ Kk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdGsnUOhugZitVtbNV4FpWi6cgKOOvyJBNP
126
+ c1STE4U6G7weNLWLBYy5d4ux2x8gkasJU26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrX
127
+ gzT/LCrBbBlDSgeF59N89iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV
128
+ HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0BAQUF
129
+ AAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOzyj1hTdNGCbM+w6Dj
130
+ Y1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE38NflNUVyRRBnMRddWQVDf9VMOyG
131
+ j/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymPAbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhH
132
+ hm4qxFYxldBniYUr+WymXUadDKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveC
133
+ X4XSQRjbgbMEHMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A==
134
+ -----END CERTIFICATE-----
135
+
136
+ GlobalSign Root CA - R2
137
+ =======================
138
+ -----BEGIN CERTIFICATE-----
139
+ MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4GA1UECxMXR2xv
140
+ YmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh
141
+ bFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT
142
+ aWduIFJvb3QgQ0EgLSBSMjETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln
143
+ bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6
144
+ ErPLv4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8eoLrvozp
145
+ s6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklqtTleiDTsvHgMCJiEbKjN
146
+ S7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzdC9XZzPnqJworc5HGnRusyMvo4KD0L5CL
147
+ TfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pazq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6C
148
+ ygPCm48CAwEAAaOBnDCBmTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E
149
+ FgQUm+IHV2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5nbG9i
150
+ YWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG3lm0mi3f3BmGLjAN
151
+ BgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4GsJ0/WwbgcQ3izDJr86iw8bmEbTUsp
152
+ 9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu
153
+ 01yiPqFbQfXf5WRDLenVOavSot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG7
154
+ 9G+dwfCMNYxdAfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7
155
+ TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg==
156
+ -----END CERTIFICATE-----
157
+
158
+ Verisign Class 3 Public Primary Certification Authority - G3
159
+ ============================================================
160
+ -----BEGIN CERTIFICATE-----
161
+ MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV
162
+ UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
163
+ cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
164
+ IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh
165
+ dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw
166
+ CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy
167
+ dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv
168
+ cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkg
169
+ Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
170
+ ggEBAMu6nFL8eB8aHm8bN3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1
171
+ EUGO+i2tKmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGukxUc
172
+ cLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBmCC+Vk7+qRy+oRpfw
173
+ EuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJXwzw3sJ2zq/3avL6QaaiMxTJ5Xpj
174
+ 055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWuimi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA
175
+ ERSWwauSCPc/L8my/uRan2Te2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5f
176
+ j267Cz3qWhMeDGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC
177
+ /Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565pF4ErWjfJXir0
178
+ xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGtTxzhT5yvDwyd93gN2PQ1VoDa
179
+ t20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ==
180
+ -----END CERTIFICATE-----
181
+
182
+ Verisign Class 4 Public Primary Certification Authority - G3
183
+ ============================================================
184
+ -----BEGIN CERTIFICATE-----
185
+ MIIEGjCCAwICEQDsoKeLbnVqAc/EfMwvlF7XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV
186
+ UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
187
+ cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
188
+ IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh
189
+ dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw
190
+ CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy
191
+ dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv
192
+ cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDQgUHVibGljIFByaW1hcnkg
193
+ Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
194
+ ggEBAK3LpRFpxlmr8Y+1GQ9Wzsy1HyDkniYlS+BzZYlZ3tCD5PUPtbut8XzoIfzk6AzufEUiGXaS
195
+ tBO3IFsJ+mGuqPKljYXCKtbeZjbSmwL0qJJgfJxptI8kHtCGUvYynEFYHiK9zUVilQhu0GbdU6LM
196
+ 8BDcVHOLBKFGMzNcF0C5nk3T875Vg+ixiY5afJqWIpA7iCXy0lOIAgwLePLmNxdLMEYH5IBtptiW
197
+ Lugs+BGzOA1mppvqySNb247i8xOOGlktqgLw7KSHZtzBP/XYufTsgsbSPZUd5cBPhMnZo0QoBmrX
198
+ Razwa2rvTl/4EYIeOGM0ZlDUPpNz+jDDZq3/ky2X7wMCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA
199
+ j/ola09b5KROJ1WrIhVZPMq1CtRK26vdoV9TxaBXOcLORyu+OshWv8LZJxA6sQU8wHcxuzrTBXtt
200
+ mhwwjIDLk5Mqg6sFUYICABFna/OIYUdfA5PVWw3g8dShMjWFsjrbsIKr0csKvE+MW8VLADsfKoKm
201
+ fjaF3H48ZwC15DtS4KjrXRX5xm3wrR0OhbepmnMUWluPQSjA1egtTaRezarZ7c7c2NU8Qh0XwRJd
202
+ RTjDOPP8hS6DRkiy1yBfkjaP53kPmF6Z6PDQpLv1U70qzlmwr25/bLvSHgCwIe34QWKCudiyxLtG
203
+ UPMxxY8BqHTr9Xgn2uf3ZkPznoM+IKrDNWCRzg==
204
+ -----END CERTIFICATE-----
205
+
206
+ Entrust.net Premium 2048 Secure Server CA
207
+ =========================================
208
+ -----BEGIN CERTIFICATE-----
209
+ MIIEKjCCAxKgAwIBAgIEOGPe+DANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChMLRW50cnVzdC5u
210
+ ZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBpbmNvcnAuIGJ5IHJlZi4gKGxp
211
+ bWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNV
212
+ BAMTKkVudHJ1c3QubmV0IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQx
213
+ NzUwNTFaFw0yOTA3MjQxNDE1MTJaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3
214
+ d3d3LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTEl
215
+ MCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5u
216
+ ZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgpMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
217
+ MIIBCgKCAQEArU1LqRKGsuqjIAcVFmQqK0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOL
218
+ Gp18EzoOH1u3Hs/lJBQesYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSr
219
+ hRSGlVuXMlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVTXTzW
220
+ nLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/HoZdenoVve8AjhUi
221
+ VBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH4QIDAQABo0IwQDAOBgNVHQ8BAf8E
222
+ BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUVeSB0RGAvtiJuQijMfmhJAkWuXAwDQYJ
223
+ KoZIhvcNAQEFBQADggEBADubj1abMOdTmXx6eadNl9cZlZD7Bh/KM3xGY4+WZiT6QBshJ8rmcnPy
224
+ T/4xmf3IDExoU8aAghOY+rat2l098c5u9hURlIIM7j+VrxGrD9cv3h8Dj1csHsm7mhpElesYT6Yf
225
+ zX1XEC+bBAlahLVu2B064dae0Wx5XnkcFMXj0EyTO2U87d89vqbllRrDtRnDvV5bu/8j72gZyxKT
226
+ J1wDLW8w0B62GqzeWvfRqqgnpv55gcR5mTNXuhKwqeBCbJPKVt7+bYQLCIt+jerXmCHG8+c8eS9e
227
+ nNFMFY3h7CI3zJpDC5fcgJCNs2ebb0gIFVbPv/ErfF6adulZkMV8gzURZVE=
228
+ -----END CERTIFICATE-----
229
+
230
+ Baltimore CyberTrust Root
231
+ =========================
232
+ -----BEGIN CERTIFICATE-----
233
+ MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJRTESMBAGA1UE
234
+ ChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYDVQQDExlCYWx0aW1vcmUgQ3li
235
+ ZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoXDTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMC
236
+ SUUxEjAQBgNVBAoTCUJhbHRpbW9yZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFs
237
+ dGltb3JlIEN5YmVyVHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKME
238
+ uyKrmD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjrIZ3AQSsB
239
+ UnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeKmpYcqWe4PwzV9/lSEy/C
240
+ G9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSuXmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9
241
+ XbIGevOF6uvUA65ehD5f/xXtabz5OTZydc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjpr
242
+ l3RjM71oGDHweI12v/yejl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoI
243
+ VDaGezq1BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEB
244
+ BQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT929hkTI7gQCvlYpNRh
245
+ cL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3WgxjkzSswF07r51XgdIGn9w/xZchMB5
246
+ hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsa
247
+ Y71k5h+3zvDyny67G7fyUIhzksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9H
248
+ RCwBXbsdtTLSR9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp
249
+ -----END CERTIFICATE-----
250
+
251
+ Equifax Secure Global eBusiness CA
252
+ ==================================
253
+ -----BEGIN CERTIFICATE-----
254
+ MIICkDCCAfmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBaMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
255
+ RXF1aWZheCBTZWN1cmUgSW5jLjEtMCsGA1UEAxMkRXF1aWZheCBTZWN1cmUgR2xvYmFsIGVCdXNp
256
+ bmVzcyBDQS0xMB4XDTk5MDYyMTA0MDAwMFoXDTIwMDYyMTA0MDAwMFowWjELMAkGA1UEBhMCVVMx
257
+ HDAaBgNVBAoTE0VxdWlmYXggU2VjdXJlIEluYy4xLTArBgNVBAMTJEVxdWlmYXggU2VjdXJlIEds
258
+ b2JhbCBlQnVzaW5lc3MgQ0EtMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuucXkAJlsTRV
259
+ PEnCUdXfp9E3j9HngXNBUmCbnaEXJnitx7HoJpQytd4zjTov2/KaelpzmKNc6fuKcxtc58O/gGzN
260
+ qfTWK8D3+ZmqY6KxRwIP1ORROhI8bIpaVIRw28HFkM9yRcuoWcDNM50/o5brhTMhHD4ePmBudpxn
261
+ hcXIw2ECAwEAAaNmMGQwEQYJYIZIAYb4QgEBBAQDAgAHMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0j
262
+ BBgwFoAUvqigdHJQa0S3ySPY+6j/s1draGwwHQYDVR0OBBYEFL6ooHRyUGtEt8kj2Puo/7NXa2hs
263
+ MA0GCSqGSIb3DQEBBAUAA4GBADDiAVGqx+pf2rnQZQ8w1j7aDRRJbpGTJxQx78T3LUX47Me/okEN
264
+ I7SS+RkAZ70Br83gcfxaz2TE4JaY0KNA4gGK7ycH8WUBikQtBmV1UsCGECAhX2xrD2yuCRyv8qIY
265
+ NMR1pHMc8Y3c7635s3a0kr/clRAevsvIO1qEYBlWlKlV
266
+ -----END CERTIFICATE-----
267
+
268
+ Equifax Secure eBusiness CA 1
269
+ =============================
270
+ -----BEGIN CERTIFICATE-----
271
+ MIICgjCCAeugAwIBAgIBBDANBgkqhkiG9w0BAQQFADBTMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
272
+ RXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNzIENB
273
+ LTEwHhcNOTkwNjIxMDQwMDAwWhcNMjAwNjIxMDQwMDAwWjBTMQswCQYDVQQGEwJVUzEcMBoGA1UE
274
+ ChMTRXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNz
275
+ IENBLTEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAM4vGbwXt3fek6lfWg0XTzQaDJj0ItlZ
276
+ 1MRoRvC0NcWFAyDGr0WlIVFFQesWWDYyb+JQYmT5/VGcqiTZ9J2DKocKIdMSODRsjQBuWqDZQu4a
277
+ IZX5UkxVWsUPOE9G+m34LjXWHXzr4vCwdYDIqROsvojvOm6rXyo4YgKwEnv+j6YDAgMBAAGjZjBk
278
+ MBEGCWCGSAGG+EIBAQQEAwIABzAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFEp4MlIR21kW
279
+ Nl7fwRQ2QGpHfEyhMB0GA1UdDgQWBBRKeDJSEdtZFjZe38EUNkBqR3xMoTANBgkqhkiG9w0BAQQF
280
+ AAOBgQB1W6ibAxHm6VZMzfmpTMANmvPMZWnmJXbMWbfWVMMdzZmsGd20hdXgPfxiIKeES1hl8eL5
281
+ lSE/9dR+WB5Hh1Q+WKG1tfgq73HnvMP2sUlG4tega+VWeponmHxGYhTnyfxuAxJ5gDgdSIKN/Bf+
282
+ KpYrtWKmpj29f5JZzVoqgrI3eQ==
283
+ -----END CERTIFICATE-----
284
+
285
+ AddTrust Low-Value Services Root
286
+ ================================
287
+ -----BEGIN CERTIFICATE-----
288
+ MIIEGDCCAwCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
289
+ QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYDVQQDExhBZGRU
290
+ cnVzdCBDbGFzcyAxIENBIFJvb3QwHhcNMDAwNTMwMTAzODMxWhcNMjAwNTMwMTAzODMxWjBlMQsw
291
+ CQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBO
292
+ ZXR3b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwggEiMA0GCSqGSIb3DQEB
293
+ AQUAA4IBDwAwggEKAoIBAQCWltQhSWDia+hBBwzexODcEyPNwTXH+9ZOEQpnXvUGW2ulCDtbKRY6
294
+ 54eyNAbFvAWlA3yCyykQruGIgb3WntP+LVbBFc7jJp0VLhD7Bo8wBN6ntGO0/7Gcrjyvd7ZWxbWr
295
+ oulpOj0OM3kyP3CCkplhbY0wCI9xP6ZIVxn4JdxLZlyldI+Yrsj5wAYi56xz36Uu+1LcsRVlIPo1
296
+ Zmne3yzxbrww2ywkEtvrNTVokMsAsJchPXQhI2U0K7t4WaPW4XY5mqRJjox0r26kmqPZm9I4XJui
297
+ GMx1I4S+6+JNM3GOGvDC+Mcdoq0Dlyz4zyXG9rgkMbFjXZJ/Y/AlyVMuH79NAgMBAAGjgdIwgc8w
298
+ HQYDVR0OBBYEFJWxtPCUtr3H2tERCSG+wa9J/RB7MAsGA1UdDwQEAwIBBjAPBgNVHRMBAf8EBTAD
299
+ AQH/MIGPBgNVHSMEgYcwgYSAFJWxtPCUtr3H2tERCSG+wa9J/RB7oWmkZzBlMQswCQYDVQQGEwJT
300
+ RTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEw
301
+ HwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBACxt
302
+ ZBsfzQ3duQH6lmM0MkhHma6X7f1yFqZzR1r0693p9db7RcwpiURdv0Y5PejuvE1Uhh4dbOMXJ0Ph
303
+ iVYrqW9yTkkz43J8KiOavD7/KCrto/8cI7pDVwlnTUtiBi34/2ydYB7YHEt9tTEv2dB8Xfjea4MY
304
+ eDdXL+gzB2ffHsdrKpV2ro9Xo/D0UrSpUwjP4E/TelOL/bscVjby/rK25Xa71SJlpz/+0WatC7xr
305
+ mYbvP33zGDLKe8bjq2RGlfgmadlVg3sslgf/WSxEo8bl6ancoWOAWiFeIc9TVPC6b4nbqKqVz4vj
306
+ ccweGyBECMB6tkD9xOQ14R0WHNC8K47Wcdk=
307
+ -----END CERTIFICATE-----
308
+
309
+ AddTrust External Root
310
+ ======================
311
+ -----BEGIN CERTIFICATE-----
312
+ MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
313
+ QWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYD
314
+ VQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEw
315
+ NDgzOFowbzELMAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRU
316
+ cnVzdCBFeHRlcm5hbCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0Eg
317
+ Um9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvtH7xsD821
318
+ +iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9uMq/NzgtHj6RQa1wVsfw
319
+ Tz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzXmk6vBbOmcZSccbNQYArHE504B4YCqOmo
320
+ aSYYkKtMsE8jqzpPhNjfzp/haW+710LXa0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy
321
+ 2xSoRcRdKn23tNbE7qzNE0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv7
322
+ 7+ldU9U0WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYDVR0P
323
+ BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0Jvf6xCZU7wO94CTL
324
+ VBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEmMCQGA1UECxMdQWRk
325
+ VHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsxIjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENB
326
+ IFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZl
327
+ j7DYd7usQWxHYINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5
328
+ 6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvCNr4TDea9Y355
329
+ e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEXc4g/VhsxOBi0cQ+azcgOno4u
330
+ G+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5amnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=
331
+ -----END CERTIFICATE-----
332
+
333
+ AddTrust Public Services Root
334
+ =============================
335
+ -----BEGIN CERTIFICATE-----
336
+ MIIEFTCCAv2gAwIBAgIBATANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
337
+ QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSAwHgYDVQQDExdBZGRU
338
+ cnVzdCBQdWJsaWMgQ0EgUm9vdDAeFw0wMDA1MzAxMDQxNTBaFw0yMDA1MzAxMDQxNTBaMGQxCzAJ
339
+ BgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQIE5l
340
+ dHdvcmsxIDAeBgNVBAMTF0FkZFRydXN0IFB1YmxpYyBDQSBSb290MIIBIjANBgkqhkiG9w0BAQEF
341
+ AAOCAQ8AMIIBCgKCAQEA6Rowj4OIFMEg2Dybjxt+A3S72mnTRqX4jsIMEZBRpS9mVEBV6tsfSlbu
342
+ nyNu9DnLoblv8n75XYcmYZ4c+OLspoH4IcUkzBEMP9smcnrHAZcHF/nXGCwwfQ56HmIexkvA/X1i
343
+ d9NEHif2P0tEs7c42TkfYNVRknMDtABp4/MUTu7R3AnPdzRGULD4EfL+OHn3Bzn+UZKXC1sIXzSG
344
+ Aa2Il+tmzV7R/9x98oTaunet3IAIx6eH1lWfl2royBFkuucZKT8Rs3iQhCBSWxHveNCD9tVIkNAw
345
+ HM+A+WD+eeSI8t0A65RF62WUaUC6wNW0uLp9BBGo6zEFlpROWCGOn9Bg/QIDAQABo4HRMIHOMB0G
346
+ A1UdDgQWBBSBPjfYkrAfd59ctKtzquf2NGAv+jALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB
347
+ /zCBjgYDVR0jBIGGMIGDgBSBPjfYkrAfd59ctKtzquf2NGAv+qFopGYwZDELMAkGA1UEBhMCU0Ux
348
+ FDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29yazEgMB4G
349
+ A1UEAxMXQWRkVHJ1c3QgUHVibGljIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBAAP3FUr4
350
+ JNojVhaTdt02KLmuG7jD8WS6IBh4lSknVwW8fCr0uVFV2ocC3g8WFzH4qnkuCRO7r7IgGRLlk/lL
351
+ +YPoRNWyQSW/iHVv/xD8SlTQX/D67zZzfRs2RcYhbbQVuE7PnFylPVoAjgbjPGsye/Kf8Lb93/Ao
352
+ GEjwxrzQvzSAlsJKsW2Ox5BF3i9nrEUEo3rcVZLJR2bYGozH7ZxOmuASu7VqTITh4SINhwBk/ox9
353
+ Yjllpu9CtoAlEmEBqCQTcAARJl/6NVDFSMwGR+gn2HCNX2TmoUQmXiLsks3/QppEIW1cxeMiHV9H
354
+ EufOX1362KqxMy3ZdvJOOjMMK7MtkAY=
355
+ -----END CERTIFICATE-----
356
+
357
+ AddTrust Qualified Certificates Root
358
+ ====================================
359
+ -----BEGIN CERTIFICATE-----
360
+ MIIEHjCCAwagAwIBAgIBATANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
361
+ QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSMwIQYDVQQDExpBZGRU
362
+ cnVzdCBRdWFsaWZpZWQgQ0EgUm9vdDAeFw0wMDA1MzAxMDQ0NTBaFw0yMDA1MzAxMDQ0NTBaMGcx
363
+ CzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQ
364
+ IE5ldHdvcmsxIzAhBgNVBAMTGkFkZFRydXN0IFF1YWxpZmllZCBDQSBSb290MIIBIjANBgkqhkiG
365
+ 9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5B6a/twJWoekn0e+EV+vhDTbYjx5eLfpMLXsDBwqxBb/4Oxx
366
+ 64r1EW7tTw2R0hIYLUkVAcKkIhPHEWT/IhKauY5cLwjPcWqzZwFZ8V1G87B4pfYOQnrjfxvM0PC3
367
+ KP0q6p6zsLkEqv32x7SxuCqg+1jxGaBvcCV+PmlKfw8i2O+tCBGaKZnhqkRFmhJePp1tUvznoD1o
368
+ L/BLcHwTOK28FSXx1s6rosAx1i+f4P8UWfyEk9mHfExUE+uf0S0R+Bg6Ot4l2ffTQO2kBhLEO+GR
369
+ wVY18BTcZTYJbqukB8c10cIDMzZbdSZtQvESa0NvS3GU+jQd7RNuyoB/mC9suWXY6QIDAQABo4HU
370
+ MIHRMB0GA1UdDgQWBBQ5lYtii1zJ1IC6WA+XPxUIQ8yYpzALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/
371
+ BAUwAwEB/zCBkQYDVR0jBIGJMIGGgBQ5lYtii1zJ1IC6WA+XPxUIQ8yYp6FrpGkwZzELMAkGA1UE
372
+ BhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29y
373
+ azEjMCEGA1UEAxMaQWRkVHJ1c3QgUXVhbGlmaWVkIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQAD
374
+ ggEBABmrder4i2VhlRO6aQTvhsoToMeqT2QbPxj2qC0sVY8FtzDqQmodwCVRLae/DLPt7wh/bDxG
375
+ GuoYQ992zPlmhpwsaPXpF/gxsxjE1kh9I0xowX67ARRvxdlu3rsEQmr49lx95dr6h+sNNVJn0J6X
376
+ dgWTP5XHAeZpVTh/EGGZyeNfpso+gmNIquIISD6q8rKFYqa0p9m9N5xotS1WfbC3P6CxB9bpT9ze
377
+ RXEwMn8bLgn5v1Kh7sKAPgZcLlVAwRv1cEWw3F369nJad9Jjzc9YiQBCYz95OdBEsIJuQRno3eDB
378
+ iFrRHnGTHyQwdOUeqN48Jzd/g66ed8/wMLH/S5noxqE=
379
+ -----END CERTIFICATE-----
380
+
381
+ Entrust Root Certification Authority
382
+ ====================================
383
+ -----BEGIN CERTIFICATE-----
384
+ MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMCVVMxFjAUBgNV
385
+ BAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0Lm5ldC9DUFMgaXMgaW5jb3Jw
386
+ b3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMWKGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsG
387
+ A1UEAxMkRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0
388
+ MloXDTI2MTEyNzIwNTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMu
389
+ MTkwNwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSByZWZlcmVu
390
+ Y2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNVBAMTJEVudHJ1c3QgUm9v
391
+ dCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
392
+ ALaVtkNC+sZtKm9I35RMOVcF7sN5EUFoNu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYsz
393
+ A9u3g3s+IIRe7bJWKKf44LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOww
394
+ Cj0Yzfv9KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGIrb68
395
+ j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi94DkZfs0Nw4pgHBN
396
+ rziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOBsDCBrTAOBgNVHQ8BAf8EBAMCAQYw
397
+ DwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAigA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1
398
+ MzQyWjAfBgNVHSMEGDAWgBRokORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DH
399
+ hmak8fdLQ/uEvW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA
400
+ A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9tO1KzKtvn1ISM
401
+ Y/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6ZuaAGAT/3B+XxFNSRuzFVJ7yVTa
402
+ v52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTS
403
+ W3iDVuycNsMm4hH2Z0kdkquM++v/eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0
404
+ tHuu2guQOHXvgR1m0vdXcDazv/wor3ElhVsT/h5/WrQ8
405
+ -----END CERTIFICATE-----
406
+
407
+ RSA Security 2048 v3
408
+ ====================
409
+ -----BEGIN CERTIFICATE-----
410
+ MIIDYTCCAkmgAwIBAgIQCgEBAQAAAnwAAAAKAAAAAjANBgkqhkiG9w0BAQUFADA6MRkwFwYDVQQK
411
+ ExBSU0EgU2VjdXJpdHkgSW5jMR0wGwYDVQQLExRSU0EgU2VjdXJpdHkgMjA0OCBWMzAeFw0wMTAy
412
+ MjIyMDM5MjNaFw0yNjAyMjIyMDM5MjNaMDoxGTAXBgNVBAoTEFJTQSBTZWN1cml0eSBJbmMxHTAb
413
+ BgNVBAsTFFJTQSBTZWN1cml0eSAyMDQ4IFYzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
414
+ AQEAt49VcdKA3XtpeafwGFAyPGJn9gqVB93mG/Oe2dJBVGutn3y+Gc37RqtBaB4Y6lXIL5F4iSj7
415
+ Jylg/9+PjDvJSZu1pJTOAeo+tWN7fyb9Gd3AIb2E0S1PRsNO3Ng3OTsor8udGuorryGlwSMiuLgb
416
+ WhOHV4PR8CDn6E8jQrAApX2J6elhc5SYcSa8LWrg903w8bYqODGBDSnhAMFRD0xS+ARaqn1y07iH
417
+ KrtjEAMqs6FPDVpeRrc9DvV07Jmf+T0kgYim3WBU6JU2PcYJk5qjEoAAVZkZR73QpXzDuvsf9/UP
418
+ +Ky5tfQ3mBMY3oVbtwyCO4dvlTlYMNpuAWgXIszACwIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/
419
+ MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAWgBQHw1EwpKrpRa41JPr/JCwz0LGdjDAdBgNVHQ4E
420
+ FgQUB8NRMKSq6UWuNST6/yQsM9CxnYwwDQYJKoZIhvcNAQEFBQADggEBAF8+hnZuuDU8TjYcHnmY
421
+ v/3VEhF5Ug7uMYm83X/50cYVIeiKAVQNOvtUudZj1LGqlk2iQk3UUx+LEN5/Zb5gEydxiKRz44Rj
422
+ 0aRV4VCT5hsOedBnvEbIvz8XDZXmxpBp3ue0L96VfdASPz0+f00/FGj1EVDVwfSQpQgdMWD/YIwj
423
+ VAqv/qFuxdF6Kmh4zx6CCiC0H63lhbJqaHVOrSU3lIW+vaHU6rcMSzyd6BIA8F+sDeGscGNz9395
424
+ nzIlQnQFgCi/vcEkllgVsRch6YlL2weIZ/QVrXA+L02FO8K32/6YaCOJ4XQP3vTFhGMpG8zLB8kA
425
+ pKnXwiJPZ9d37CAFYd4=
426
+ -----END CERTIFICATE-----
427
+
428
+ GeoTrust Global CA
429
+ ==================
430
+ -----BEGIN CERTIFICATE-----
431
+ MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVTMRYwFAYDVQQK
432
+ Ew1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9iYWwgQ0EwHhcNMDIwNTIxMDQw
433
+ MDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j
434
+ LjEbMBkGA1UEAxMSR2VvVHJ1c3QgR2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
435
+ CgKCAQEA2swYYzD99BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjo
436
+ BbdqfnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDviS2Aelet
437
+ 8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU1XupGc1V3sjs0l44U+Vc
438
+ T4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+bw8HHa8sHo9gOeL6NlMTOdReJivbPagU
439
+ vTLrGAMoUgRx5aszPeE4uwc2hGKceeoWMPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTAD
440
+ AQH/MB0GA1UdDgQWBBTAephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVk
441
+ DBF9qn1luMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKInZ57Q
442
+ zxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfStQWVYrmm3ok9Nns4
443
+ d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcFPseKUgzbFbS9bZvlxrFUaKnjaZC2
444
+ mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Unhw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6p
445
+ XE0zX5IJL4hmXXeXxx12E6nV5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvm
446
+ Mw==
447
+ -----END CERTIFICATE-----
448
+
449
+ GeoTrust Global CA 2
450
+ ====================
451
+ -----BEGIN CERTIFICATE-----
452
+ MIIDZjCCAk6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN
453
+ R2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwHhcNMDQwMzA0MDUw
454
+ MDAwWhcNMTkwMzA0MDUwMDAwWjBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j
455
+ LjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
456
+ ggEKAoIBAQDvPE1APRDfO1MA4Wf+lGAVPoWI8YkNkMgoI5kF6CsgncbzYEbYwbLVjDHZ3CB5JIG/
457
+ NTL8Y2nbsSpr7iFY8gjpeMtvy/wWUsiRxP89c96xPqfCfWbB9X5SJBri1WeR0IIQ13hLTytCOb1k
458
+ LUCgsBDTOEhGiKEMuzozKmKY+wCdE1l/bztyqu6mD4b5BWHqZ38MN5aL5mkWRxHCJ1kDs6ZgwiFA
459
+ Vvqgx306E+PsV8ez1q6diYD3Aecs9pYrEw15LNnA5IZ7S4wMcoKK+xfNAGw6EzywhIdLFnopsk/b
460
+ HdQL82Y3vdj2V7teJHq4PIu5+pIaGoSe2HSPqht/XvT+RSIhAgMBAAGjYzBhMA8GA1UdEwEB/wQF
461
+ MAMBAf8wHQYDVR0OBBYEFHE4NvICMVNHK266ZUapEBVYIAUJMB8GA1UdIwQYMBaAFHE4NvICMVNH
462
+ K266ZUapEBVYIAUJMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQUFAAOCAQEAA/e1K6tdEPx7
463
+ srJerJsOflN4WT5CBP51o62sgU7XAotexC3IUnbHLB/8gTKY0UvGkpMzNTEv/NgdRN3ggX+d6Yvh
464
+ ZJFiCzkIjKx0nVnZellSlxG5FntvRdOW2TF9AjYPnDtuzywNA0ZF66D0f0hExghAzN4bcLUprbqL
465
+ OzRldRtxIR0sFAqwlpW41uryZfspuk/qkZN0abby/+Ea0AzRdoXLiiW9l14sbxWZJue2Kf8i7MkC
466
+ x1YAzUm5s2x7UwQa4qjJqhIFI8LO57sEAszAR6LkxCkvW0VXiVHuPOtSCP8HNR6fNWpHSlaY0VqF
467
+ H4z1Ir+rzoPz4iIprn2DQKi6bA==
468
+ -----END CERTIFICATE-----
469
+
470
+ GeoTrust Universal CA
471
+ =====================
472
+ -----BEGIN CERTIFICATE-----
473
+ MIIFaDCCA1CgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN
474
+ R2VvVHJ1c3QgSW5jLjEeMBwGA1UEAxMVR2VvVHJ1c3QgVW5pdmVyc2FsIENBMB4XDTA0MDMwNDA1
475
+ MDAwMFoXDTI5MDMwNDA1MDAwMFowRTELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IElu
476
+ Yy4xHjAcBgNVBAMTFUdlb1RydXN0IFVuaXZlcnNhbCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIP
477
+ ADCCAgoCggIBAKYVVaCjxuAfjJ0hUNfBvitbtaSeodlyWL0AG0y/YckUHUWCq8YdgNY96xCcOq9t
478
+ JPi8cQGeBvV8Xx7BDlXKg5pZMK4ZyzBIle0iN430SppyZj6tlcDgFgDgEB8rMQ7XlFTTQjOgNB0e
479
+ RXbdT8oYN+yFFXoZCPzVx5zw8qkuEKmS5j1YPakWaDwvdSEYfyh3peFhF7em6fgemdtzbvQKoiFs
480
+ 7tqqhZJmr/Z6a4LauiIINQ/PQvE1+mrufislzDoR5G2vc7J2Ha3QsnhnGqQ5HFELZ1aD/ThdDc7d
481
+ 8Lsrlh/eezJS/R27tQahsiFepdaVaH/wmZ7cRQg+59IJDTWU3YBOU5fXtQlEIGQWFwMCTFMNaN7V
482
+ qnJNk22CDtucvc+081xdVHppCZbW2xHBjXWotM85yM48vCR85mLK4b19p71XZQvk/iXttmkQ3Cga
483
+ Rr0BHdCXteGYO8A3ZNY9lO4L4fUorgtWv3GLIylBjobFS1J72HGrH4oVpjuDWtdYAVHGTEHZf9hB
484
+ Z3KiKN9gg6meyHv8U3NyWfWTehd2Ds735VzZC1U0oqpbtWpU5xPKV+yXbfReBi9Fi1jUIxaS5BZu
485
+ KGNZMN9QAZxjiRqf2xeUgnA3wySemkfWWspOqGmJch+RbNt+nhutxx9z3SxPGWX9f5NAEC7S8O08
486
+ ni4oPmkmM8V7AgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNq7LqqwDLiIJlF0
487
+ XG0D08DYj3rWMB8GA1UdIwQYMBaAFNq7LqqwDLiIJlF0XG0D08DYj3rWMA4GA1UdDwEB/wQEAwIB
488
+ hjANBgkqhkiG9w0BAQUFAAOCAgEAMXjmx7XfuJRAyXHEqDXsRh3ChfMoWIawC/yOsjmPRFWrZIRc
489
+ aanQmjg8+uUfNeVE44B5lGiku8SfPeE0zTBGi1QrlaXv9z+ZhP015s8xxtxqv6fXIwjhmF7DWgh2
490
+ qaavdy+3YL1ERmrvl/9zlcGO6JP7/TG37FcREUWbMPEaiDnBTzynANXH/KttgCJwpQzgXQQpAvvL
491
+ oJHRfNbDflDVnVi+QTjruXU8FdmbyUqDWcDaU/0zuzYYm4UPFd3uLax2k7nZAY1IEKj79TiG8dsK
492
+ xr2EoyNB3tZ3b4XUhRxQ4K5RirqNPnbiucon8l+f725ZDQbYKxek0nxru18UGkiPGkzns0ccjkxF
493
+ KyDuSN/n3QmOGKjaQI2SJhFTYXNd673nxE0pN2HrrDktZy4W1vUAg4WhzH92xH3kt0tm7wNFYGm2
494
+ DFKWkoRepqO1pD4r2czYG0eq8kTaT/kD6PAUyz/zg97QwVTjt+gKN02LIFkDMBmhLMi9ER/frslK
495
+ xfMnZmaGrGiR/9nmUxwPi1xpZQomyB40w11Re9epnAahNt3ViZS82eQtDF4JbAiXfKM9fJP/P6EU
496
+ p8+1Xevb2xzEdt+Iub1FBZUbrvxGakyvSOPOrg/SfuvmbJxPgWp6ZKy7PtXny3YuxadIwVyQD8vI
497
+ P/rmMuGNG2+k5o7Y+SlIis5z/iw=
498
+ -----END CERTIFICATE-----
499
+
500
+ GeoTrust Universal CA 2
501
+ =======================
502
+ -----BEGIN CERTIFICATE-----
503
+ MIIFbDCCA1SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN
504
+ R2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwHhcNMDQwMzA0
505
+ MDUwMDAwWhcNMjkwMzA0MDUwMDAwWjBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3Qg
506
+ SW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwggIiMA0GCSqGSIb3DQEBAQUA
507
+ A4ICDwAwggIKAoICAQCzVFLByT7y2dyxUxpZKeexw0Uo5dfR7cXFS6GqdHtXr0om/Nj1XqduGdt0
508
+ DE81WzILAePb63p3NeqqWuDW6KFXlPCQo3RWlEQwAx5cTiuFJnSCegx2oG9NzkEtoBUGFF+3Qs17
509
+ j1hhNNwqCPkuwwGmIkQcTAeC5lvO0Ep8BNMZcyfwqph/Lq9O64ceJHdqXbboW0W63MOhBW9Wjo8Q
510
+ JqVJwy7XQYci4E+GymC16qFjwAGXEHm9ADwSbSsVsaxLse4YuU6W3Nx2/zu+z18DwPw76L5GG//a
511
+ QMJS9/7jOvdqdzXQ2o3rXhhqMcceujwbKNZrVMaqW9eiLBsZzKIC9ptZvTdrhrVtgrrY6slWvKk2
512
+ WP0+GfPtDCapkzj4T8FdIgbQl+rhrcZV4IErKIM6+vR7IVEAvlI4zs1meaj0gVbi0IMJR1FbUGrP
513
+ 20gaXT73y/Zl92zxlfgCOzJWgjl6W70viRu/obTo/3+NjN8D8WBOWBFM66M/ECuDmgFz2ZRthAAn
514
+ ZqzwcEAJQpKtT5MNYQlRJNiS1QuUYbKHsu3/mjX/hVTK7URDrBs8FmtISgocQIgfksILAAX/8sgC
515
+ SqSqqcyZlpwvWOB94b67B9xfBHJcMTTD7F8t4D1kkCLm0ey4Lt1ZrtmhN79UNdxzMk+MBB4zsslG
516
+ 8dhcyFVQyWi9qLo2CQIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR281Xh+qQ2
517
+ +/CfXGJx7Tz0RzgQKzAfBgNVHSMEGDAWgBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAOBgNVHQ8BAf8E
518
+ BAMCAYYwDQYJKoZIhvcNAQEFBQADggIBAGbBxiPz2eAubl/oz66wsCVNK/g7WJtAJDday6sWSf+z
519
+ dXkzoS9tcBc0kf5nfo/sm+VegqlVHy/c1FEHEv6sFj4sNcZj/NwQ6w2jqtB8zNHQL1EuxBRa3ugZ
520
+ 4T7GzKQp5y6EqgYweHZUcyiYWTjgAA1i00J9IZ+uPTqM1fp3DRgrFg5fNuH8KrUwJM/gYwx7WBr+
521
+ mbpCErGR9Hxo4sjoryzqyX6uuyo9DRXcNJW2GHSoag/HtPQTxORb7QrSpJdMKu0vbBKJPfEncKpq
522
+ A1Ihn0CoZ1Dy81of398j9tx4TuaYT1U6U+Pv8vSfx3zYWK8pIpe44L2RLrB27FcRz+8pRPPphXpg
523
+ Y+RdM4kX2TGq2tbzGDVyz4crL2MjhF2EjD9XoIj8mZEoJmmZ1I+XRL6O1UixpCgp8RW04eWe3fiP
524
+ pm8m1wk8OhwRDqZsN/etRIcsKMfYdIKz0G9KV7s1KSegi+ghp4dkNl3M2Basx7InQJJVOCiNUW7d
525
+ FGdTbHFcJoRNdVq2fmBWqU2t+5sel/MN2dKXVHfaPRK34B7vCAas+YWH6aLcr34YEoP9VhdBLtUp
526
+ gn2Z9DH2canPLAEnpQW5qrJITirvn5NSUZU8UnOOVkwXQMAJKOSLakhT2+zNVVXxxvjpoixMptEm
527
+ X36vWkzaH6byHCx+rgIW0lbQL1dTR+iS
528
+ -----END CERTIFICATE-----
529
+
530
+ America Online Root Certification Authority 1
531
+ =============================================
532
+ -----BEGIN CERTIFICATE-----
533
+ MIIDpDCCAoygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
534
+ QW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBPbmxpbmUgUm9vdCBDZXJ0aWZp
535
+ Y2F0aW9uIEF1dGhvcml0eSAxMB4XDTAyMDUyODA2MDAwMFoXDTM3MTExOTIwNDMwMFowYzELMAkG
536
+ A1UEBhMCVVMxHDAaBgNVBAoTE0FtZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2Eg
537
+ T25saW5lIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMTCCASIwDQYJKoZIhvcNAQEBBQAD
538
+ ggEPADCCAQoCggEBAKgv6KRpBgNHw+kqmP8ZonCaxlCyfqXfaE0bfA+2l2h9LaaLl+lkhsmj76CG
539
+ v2BlnEtUiMJIxUo5vxTjWVXlGbR0yLQFOVwWpeKVBeASrlmLojNoWBym1BW32J/X3HGrfpq/m44z
540
+ DyL9Hy7nBzbvYjnF3cu6JRQj3gzGPTzOggjmZj7aUTsWOqMFf6Dch9Wc/HKpoH145LcxVR5lu9Rh
541
+ sCFg7RAycsWSJR74kEoYeEfffjA3PlAb2xzTa5qGUwew76wGePiEmf4hjUyAtgyC9mZweRrTT6PP
542
+ 8c9GsEsPPt2IYriMqQkoO3rHl+Ee5fSfwMCuJKDIodkP1nsmgmkyPacCAwEAAaNjMGEwDwYDVR0T
543
+ AQH/BAUwAwEB/zAdBgNVHQ4EFgQUAK3Zo/Z59m50qX8zPYEX10zPM94wHwYDVR0jBBgwFoAUAK3Z
544
+ o/Z59m50qX8zPYEX10zPM94wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBBQUAA4IBAQB8itEf
545
+ GDeC4Liwo+1WlchiYZwFos3CYiZhzRAW18y0ZTTQEYqtqKkFZu90821fnZmv9ov761KyBZiibyrF
546
+ VL0lvV+uyIbqRizBs73B6UlwGBaXCBOMIOAbLjpHyx7kADCVW/RFo8AasAFOq73AI25jP4BKxQft
547
+ 3OJvx8Fi8eNy1gTIdGcL+oiroQHIb/AUr9KZzVGTfu0uOMe9zkZQPXLjeSWdm4grECDdpbgyn43g
548
+ Kd8hdIaC2y+CMMbHNYaz+ZZfRtsMRf3zUMNvxsNIrUam4SdHCh0Om7bCd39j8uB9Gr784N/Xx6ds
549
+ sPmuujz9dLQR6FgNgLzTqIA6me11zEZ7
550
+ -----END CERTIFICATE-----
551
+
552
+ America Online Root Certification Authority 2
553
+ =============================================
554
+ -----BEGIN CERTIFICATE-----
555
+ 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
580
+ cX/9XhmgD0uRuMRUvAawRY8mkaKO/qk=
581
+ -----END CERTIFICATE-----
582
+
583
+ Visa eCommerce Root
584
+ ===================
585
+ -----BEGIN CERTIFICATE-----
586
+ MIIDojCCAoqgAwIBAgIQE4Y1TR0/BvLB+WUF1ZAcYjANBgkqhkiG9w0BAQUFADBrMQswCQYDVQQG
587
+ EwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMmVmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2Ug
588
+ QXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNvbW1lcmNlIFJvb3QwHhcNMDIwNjI2MDIxODM2
589
+ WhcNMjIwNjI0MDAxNjEyWjBrMQswCQYDVQQGEwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMm
590
+ VmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2UgQXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNv
591
+ bW1lcmNlIFJvb3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvV95WHm6h2mCxlCfL
592
+ F9sHP4CFT8icttD0b0/Pmdjh28JIXDqsOTPHH2qLJj0rNfVIsZHBAk4ElpF7sDPwsRROEW+1QK8b
593
+ RaVK7362rPKgH1g/EkZgPI2h4H3PVz4zHvtH8aoVlwdVZqW1LS7YgFmypw23RuwhY/81q6UCzyr0
594
+ TP579ZRdhE2o8mCP2w4lPJ9zcc+U30rq299yOIzzlr3xF7zSujtFWsan9sYXiwGd/BmoKoMWuDpI
595
+ /k4+oKsGGelT84ATB+0tvz8KPFUgOSwsAGl0lUq8ILKpeeUYiZGo3BxN77t+Nwtd/jmliFKMAGzs
596
+ GHxBvfaLdXe6YJ2E5/4tAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEG
597
+ MB0GA1UdDgQWBBQVOIMPPyw/cDMezUb+B4wg4NfDtzANBgkqhkiG9w0BAQUFAAOCAQEAX/FBfXxc
598
+ CLkr4NWSR/pnXKUTwwMhmytMiUbPWU3J/qVAtmPN3XEolWcRzCSs00Rsca4BIGsDoo8Ytyk6feUW
599
+ YFN4PMCvFYP3j1IzJL1kk5fui/fbGKhtcbP3LBfQdCVp9/5rPJS+TUtBjE7ic9DjkCJzQ83z7+pz
600
+ zkWKsKZJ/0x9nXGIxHYdkFsd7v3M9+79YKWxehZx0RbQfBI8bGmX265fOZpwLwU8GUYEmSA20GBu
601
+ YQa7FkKMcPcw++DbZqMAAb3mLNqRX6BGi01qnD093QVG/na/oAo85ADmJ7f/hC3euiInlhBx6yLt
602
+ 398znM/jra6O1I7mT1GvFpLgXPYHDw==
603
+ -----END CERTIFICATE-----
604
+
605
+ Certum Root CA
606
+ ==============
607
+ -----BEGIN CERTIFICATE-----
608
+ MIIDDDCCAfSgAwIBAgIDAQAgMA0GCSqGSIb3DQEBBQUAMD4xCzAJBgNVBAYTAlBMMRswGQYDVQQK
609
+ ExJVbml6ZXRvIFNwLiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBDQTAeFw0wMjA2MTExMDQ2Mzla
610
+ Fw0yNzA2MTExMDQ2MzlaMD4xCzAJBgNVBAYTAlBMMRswGQYDVQQKExJVbml6ZXRvIFNwLiB6IG8u
611
+ by4xEjAQBgNVBAMTCUNlcnR1bSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM6x
612
+ wS7TT3zNJc4YPk/EjG+AanPIW1H4m9LcuwBcsaD8dQPugfCI7iNS6eYVM42sLQnFdvkrOYCJ5JdL
613
+ kKWoePhzQ3ukYbDYWMzhbGZ+nPMJXlVjhNWo7/OxLjBos8Q82KxujZlakE403Daaj4GIULdtlkIJ
614
+ 89eVgw1BS7Bqa/j8D35in2fE7SZfECYPCE/wpFcozo+47UX2bu4lXapuOb7kky/ZR6By6/qmW6/K
615
+ Uz/iDsaWVhFu9+lmqSbYf5VT7QqFiLpPKaVCjF62/IUgAKpoC6EahQGcxEZjgoi2IrHu/qpGWX7P
616
+ NSzVttpd90gzFFS269lvzs2I1qsb2pY7HVkCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkq
617
+ hkiG9w0BAQUFAAOCAQEAuI3O7+cUus/usESSbLQ5PqKEbq24IXfS1HeCh+YgQYHu4vgRt2PRFze+
618
+ GXYkHAQaTOs9qmdvLdTN/mUxcMUbpgIKumB7bVjCmkn+YzILa+M6wKyrO7Do0wlRjBCDxjTgxSvg
619
+ GrZgFCdsMneMvLJymM/NzD+5yCRCFNZX/OYmQ6kd5YCQzgNUKD73P9P4Te1qCjqTE5s7FCMTY5w/
620
+ 0YcneeVMUeMBrYVdGjux1XMQpNPyvG5k9VpWkKjHDkx0Dy5xO/fIR/RpbxXyEV6DHpx8Uq79AtoS
621
+ qFlnGNu8cN2bsWntgM6JQEhqDjXKKWYVIZQs6GAqm4VKQPNriiTsBhYscw==
622
+ -----END CERTIFICATE-----
623
+
624
+ Comodo AAA Services root
625
+ ========================
626
+ -----BEGIN CERTIFICATE-----
627
+ MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS
628
+ R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
629
+ TGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAw
630
+ MFoXDTI4MTIzMTIzNTk1OVowezELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hl
631
+ c3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNV
632
+ BAMMGEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
633
+ ggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQuaBtDFcCLNSS1UY8y2bmhG
634
+ C1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe3M/vg4aijJRPn2jymJBGhCfHdr/jzDUs
635
+ i14HZGWCwEiwqJH5YZ92IFCokcdmtet4YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszW
636
+ Y19zjNoFmag4qMsXeDZRrOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjH
637
+ Ypy+g8cmez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQUoBEK
638
+ Iz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wewYDVR0f
639
+ BHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20vQUFBQ2VydGlmaWNhdGVTZXJ2aWNl
640
+ cy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29tb2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2Vz
641
+ LmNybDANBgkqhkiG9w0BAQUFAAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm
642
+ 7l3sAg9g1o1QGE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz
643
+ Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2G9w84FoVxp7Z
644
+ 8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsil2D4kF501KKaU73yqWjgom7C
645
+ 12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg==
646
+ -----END CERTIFICATE-----
647
+
648
+ Comodo Secure Services root
649
+ ===========================
650
+ -----BEGIN CERTIFICATE-----
651
+ MIIEPzCCAyegAwIBAgIBATANBgkqhkiG9w0BAQUFADB+MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS
652
+ R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
653
+ TGltaXRlZDEkMCIGA1UEAwwbU2VjdXJlIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAw
654
+ MDAwMFoXDTI4MTIzMTIzNTk1OVowfjELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFu
655
+ Y2hlc3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxJDAi
656
+ BgNVBAMMG1NlY3VyZSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP
657
+ ADCCAQoCggEBAMBxM4KK0HDrc4eCQNUd5MvJDkKQ+d40uaG6EfQlhfPMcm3ye5drswfxdySRXyWP
658
+ 9nQ95IDC+DwN879A6vfIUtFyb+/Iq0G4bi4XKpVpDM3SHpR7LZQdqnXXs5jLrLxkU0C8j6ysNstc
659
+ rbvd4JQX7NFc0L/vpZXJkMWwrPsbQ996CF23uPJAGysnnlDOXmWCiIxe004MeuoIkbY2qitC++rC
660
+ oznl2yY4rYsK7hljxxwk3wN42ubqwUcaCwtGCd0C/N7Lh1/XMGNooa7cMqG6vv5Eq2i2pRcV/b3V
661
+ p6ea5EQz6YiO/O1R65NxTq0B50SOqy3LqP4BSUjwwN3HaNiS/j0CAwEAAaOBxzCBxDAdBgNVHQ4E
662
+ FgQUPNiTiMLAggnMAZkGkyDpnnAJY08wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8w
663
+ gYEGA1UdHwR6MHgwO6A5oDeGNWh0dHA6Ly9jcmwuY29tb2RvY2EuY29tL1NlY3VyZUNlcnRpZmlj
664
+ YXRlU2VydmljZXMuY3JsMDmgN6A1hjNodHRwOi8vY3JsLmNvbW9kby5uZXQvU2VjdXJlQ2VydGlm
665
+ aWNhdGVTZXJ2aWNlcy5jcmwwDQYJKoZIhvcNAQEFBQADggEBAIcBbSMdflsXfcFhMs+P5/OKlFlm
666
+ 4J4oqF7Tt/Q05qo5spcWxYJvMqTpjOev/e/C6LlLqqP05tqNZSH7uoDrJiiFGv45jN5bBAS0VPmj
667
+ Z55B+glSzAVIqMk/IQQezkhr/IXownuvf7fM+F86/TXGDe+X3EyrEeFryzHRbPtIgKvcnDe4IRRL
668
+ DXE97IMzbtFuMhbsmMcWi1mmNKsFVy2T96oTy9IT4rcuO81rUBcJaD61JlfutuC23bkpgHl9j6Pw
669
+ pCikFcSF9CfUa7/lXORlAnZUtOM3ZiTTGWHIUhDlizeauan5Hb/qmZJhlv8BzaFfDbxxvA6sCx1H
670
+ RR3B7Hzs/Sk=
671
+ -----END CERTIFICATE-----
672
+
673
+ Comodo Trusted Services root
674
+ ============================
675
+ -----BEGIN CERTIFICATE-----
676
+ MIIEQzCCAyugAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS
677
+ R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
678
+ TGltaXRlZDElMCMGA1UEAwwcVHJ1c3RlZCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczAeFw0wNDAxMDEw
679
+ MDAwMDBaFw0yODEyMzEyMzU5NTlaMH8xCzAJBgNVBAYTAkdCMRswGQYDVQQIDBJHcmVhdGVyIE1h
680
+ bmNoZXN0ZXIxEDAOBgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoMEUNvbW9kbyBDQSBMaW1pdGVkMSUw
681
+ IwYDVQQDDBxUcnVzdGVkIENlcnRpZmljYXRlIFNlcnZpY2VzMIIBIjANBgkqhkiG9w0BAQEFAAOC
682
+ AQ8AMIIBCgKCAQEA33FvNlhTWvI2VFeAxHQIIO0Yfyod5jWaHiWsnOWWfnJSoBVC21ndZHoa0Lh7
683
+ 3TkVvFVIxO06AOoxEbrycXQaZ7jPM8yoMa+j49d/vzMtTGo87IvDktJTdyR0nAducPy9C1t2ul/y
684
+ /9c3S0pgePfw+spwtOpZqqPOSC+pw7ILfhdyFgymBwwbOM/JYrc/oJOlh0Hyt3BAd9i+FHzjqMB6
685
+ juljatEPmsbS9Is6FARW1O24zG71++IsWL1/T2sr92AkWCTOJu80kTrV44HQsvAEAtdbtz6SrGsS
686
+ ivnkBbA7kUlcsutT6vifR4buv5XAwAaf0lteERv0xwQ1KdJVXOTt6wIDAQABo4HJMIHGMB0GA1Ud
687
+ DgQWBBTFe1i97doladL3WRaoszLAeydb9DAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB
688
+ /zCBgwYDVR0fBHwwejA8oDqgOIY2aHR0cDovL2NybC5jb21vZG9jYS5jb20vVHJ1c3RlZENlcnRp
689
+ ZmljYXRlU2VydmljZXMuY3JsMDqgOKA2hjRodHRwOi8vY3JsLmNvbW9kby5uZXQvVHJ1c3RlZENl
690
+ cnRpZmljYXRlU2VydmljZXMuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQDIk4E7ibSvuIQSTI3S8Ntw
691
+ uleGFTQQuS9/HrCoiWChisJ3DFBKmwCL2Iv0QeLQg4pKHBQGsKNoBXAxMKdTmw7pSqBYaWcOrp32
692
+ pSxBvzwGa+RZzG0Q8ZZvH9/0BAKkn0U+yNj6NkZEUD+Cl5EfKNsYEYwq5GWDVxISjBc/lDb+XbDA
693
+ BHcTuPQV1T84zJQ6VdCsmPW6AF/ghhmBeC8owH7TzEIK9a5QoNE+xqFx7D+gIIxmOom0jtTYsU0l
694
+ R+4viMi14QVFwL4Ucd56/Y57fU0IlqUSc/AtyjcndBInTMu2l+nZrghtWjlA3QVHdWpaIbOjGM9O
695
+ 9y5Xt5hwXsjEeLBi
696
+ -----END CERTIFICATE-----
697
+
698
+ QuoVadis Root CA
699
+ ================
700
+ -----BEGIN CERTIFICATE-----
701
+ MIIF0DCCBLigAwIBAgIEOrZQizANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJCTTEZMBcGA1UE
702
+ ChMQUXVvVmFkaXMgTGltaXRlZDElMCMGA1UECxMcUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0
703
+ eTEuMCwGA1UEAxMlUXVvVmFkaXMgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMTAz
704
+ MTkxODMzMzNaFw0yMTAzMTcxODMzMzNaMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRp
705
+ cyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQD
706
+ EyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEF
707
+ AAOCAQ8AMIIBCgKCAQEAv2G1lVO6V/z68mcLOhrfEYBklbTRvM16z/Ypli4kVEAkOPcahdxYTMuk
708
+ J0KX0J+DisPkBgNbAKVRHnAEdOLB1Dqr1607BxgFjv2DrOpm2RgbaIr1VxqYuvXtdj182d6UajtL
709
+ F8HVj71lODqV0D1VNk7feVcxKh7YWWVJWCCYfqtffp/p1k3sg3Spx2zY7ilKhSoGFPlU5tPaZQeL
710
+ YzcS19Dsw3sgQUSj7cugF+FxZc4dZjH3dgEZyH0DWLaVSR2mEiboxgx24ONmy+pdpibu5cxfvWen
711
+ AScOospUxbF6lR1xHkopigPcakXBpBlebzbNw6Kwt/5cOOJSvPhEQ+aQuwIDAQABo4ICUjCCAk4w
712
+ PQYIKwYBBQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwczovL29jc3AucXVvdmFkaXNvZmZzaG9y
713
+ ZS5jb20wDwYDVR0TAQH/BAUwAwEB/zCCARoGA1UdIASCAREwggENMIIBCQYJKwYBBAG+WAABMIH7
714
+ MIHUBggrBgEFBQcCAjCBxxqBxFJlbGlhbmNlIG9uIHRoZSBRdW9WYWRpcyBSb290IENlcnRpZmlj
715
+ YXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJs
716
+ ZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRpb24gcHJh
717
+ Y3RpY2VzLCBhbmQgdGhlIFF1b1ZhZGlzIENlcnRpZmljYXRlIFBvbGljeS4wIgYIKwYBBQUHAgEW
718
+ Fmh0dHA6Ly93d3cucXVvdmFkaXMuYm0wHQYDVR0OBBYEFItLbe3TKbkGGew5Oanwl4Rqy+/fMIGu
719
+ BgNVHSMEgaYwgaOAFItLbe3TKbkGGew5Oanwl4Rqy+/foYGEpIGBMH8xCzAJBgNVBAYTAkJNMRkw
720
+ FwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0
721
+ aG9yaXR5MS4wLAYDVQQDEyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggQ6
722
+ tlCLMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAitQUtf70mpKnGdSkfnIYj9lo
723
+ fFIk3WdvOXrEql494liwTXCYhGHoG+NpGA7O+0dQoE7/8CQfvbLO9Sf87C9TqnN7Az10buYWnuul
724
+ LsS/VidQK2K6vkscPFVcQR0kvoIgR13VRH56FmjffU1RcHhXHTMe/QKZnAzNCgVPx7uOpHX6Sm2x
725
+ gI4JVrmcGmD+XcHXetwReNDWXcG31a0ymQM6isxUJTkxgXsTIlG6Rmyhu576BGxJJnSP0nPrzDCi
726
+ 5upZIof4l/UO/erMkqQWxFIY6iHOsfHmhIHluqmGKPJDWl0Snawe2ajlCmqnf6CHKc/yiU3U7MXi
727
+ 5nrQNiOKSnQ2+Q==
728
+ -----END CERTIFICATE-----
729
+
730
+ QuoVadis Root CA 2
731
+ ==================
732
+ -----BEGIN CERTIFICATE-----
733
+ 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
759
+ -----END CERTIFICATE-----
760
+
761
+ QuoVadis Root CA 3
762
+ ==================
763
+ -----BEGIN CERTIFICATE-----
764
+ MIIGnTCCBIWgAwIBAgICBcYwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT
765
+ EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMzAeFw0wNjExMjQx
766
+ OTExMjNaFw0zMTExMjQxOTA2NDRaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM
767
+ aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4IC
768
+ DwAwggIKAoICAQDMV0IWVJzmmNPTTe7+7cefQzlKZbPoFog02w1ZkXTPkrgEQK0CSzGrvI2RaNgg
769
+ DhoB4hp7Thdd4oq3P5kazethq8Jlph+3t723j/z9cI8LoGe+AaJZz3HmDyl2/7FWeUUrH556VOij
770
+ KTVopAFPD6QuN+8bv+OPEKhyq1hX51SGyMnzW9os2l2ObjyjPtr7guXd8lyyBTNvijbO0BNO/79K
771
+ DDRMpsMhvVAEVeuxu537RR5kFd5VAYwCdrXLoT9CabwvvWhDFlaJKjdhkf2mrk7AyxRllDdLkgbv
772
+ BNDInIjbC3uBr7E9KsRlOni27tyAsdLTmZw67mtaa7ONt9XOnMK+pUsvFrGeaDsGb659n/je7Mwp
773
+ p5ijJUMv7/FfJuGITfhebtfZFG4ZM2mnO4SJk8RTVROhUXhA+LjJou57ulJCg54U7QVSWllWp5f8
774
+ nT8KKdjcT5EOE7zelaTfi5m+rJsziO+1ga8bxiJTyPbH7pcUsMV8eFLI8M5ud2CEpukqdiDtWAEX
775
+ MJPpGovgc2PZapKUSU60rUqFxKMiMPwJ7Wgic6aIDFUhWMXhOp8q3crhkODZc6tsgLjoC2SToJyM
776
+ Gf+z0gzskSaHirOi4XCPLArlzW1oUevaPwV/izLmE1xr/l9A4iLItLRkT9a6fUg+qGkM17uGcclz
777
+ uD87nSVL2v9A6wIDAQABo4IBlTCCAZEwDwYDVR0TAQH/BAUwAwEB/zCB4QYDVR0gBIHZMIHWMIHT
778
+ BgkrBgEEAb5YAAMwgcUwgZMGCCsGAQUFBwICMIGGGoGDQW55IHVzZSBvZiB0aGlzIENlcnRpZmlj
779
+ YXRlIGNvbnN0aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlIFF1b1ZhZGlzIFJvb3QgQ0EgMyBDZXJ0
780
+ aWZpY2F0ZSBQb2xpY3kgLyBDZXJ0aWZpY2F0aW9uIFByYWN0aWNlIFN0YXRlbWVudC4wLQYIKwYB
781
+ BQUHAgEWIWh0dHA6Ly93d3cucXVvdmFkaXNnbG9iYWwuY29tL2NwczALBgNVHQ8EBAMCAQYwHQYD
782
+ VR0OBBYEFPLAE+CCQz777i9nMpY1XNu4ywLQMG4GA1UdIwRnMGWAFPLAE+CCQz777i9nMpY1XNu4
783
+ ywLQoUmkRzBFMQswCQYDVQQGEwJCTTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDEbMBkGA1UE
784
+ AxMSUXVvVmFkaXMgUm9vdCBDQSAzggIFxjANBgkqhkiG9w0BAQUFAAOCAgEAT62gLEz6wPJv92ZV
785
+ qyM07ucp2sNbtrCD2dDQ4iH782CnO11gUyeim/YIIirnv6By5ZwkajGxkHon24QRiSemd1o417+s
786
+ hvzuXYO8BsbRd2sPbSQvS3pspweWyuOEn62Iix2rFo1bZhfZFvSLgNLd+LJ2w/w4E6oM3kJpK27z
787
+ POuAJ9v1pkQNn1pVWQvVDVJIxa6f8i+AxeoyUDUSly7B4f/xI4hROJ/yZlZ25w9Rl6VSDE1JUZU2
788
+ Pb+iSwwQHYaZTKrzchGT5Or2m9qoXadNt54CrnMAyNojA+j56hl0YgCUyyIgvpSnWbWCar6ZeXqp
789
+ 8kokUvd0/bpO5qgdAm6xDYBEwa7TIzdfu4V8K5Iu6H6li92Z4b8nby1dqnuH/grdS/yO9SbkbnBC
790
+ bjPsMZ57k8HkyWkaPcBrTiJt7qtYTcbQQcEr6k8Sh17rRdhs9ZgC06DYVYoGmRmioHfRMJ6szHXu
791
+ g/WwYjnPbFfiTNKRCw51KBuav/0aQ/HKd/s7j2G4aSgWQgRecCocIdiP4b0jWy10QJLZYxkNc91p
792
+ vGJHvOB0K7Lrfb5BG7XARsWhIstfTsEokt4YutUqKLsRixeTmJlglFwjz1onl14LBQaTNx47aTbr
793
+ qZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK4SVhM7JZG+Ju1zdXtg2pEto=
794
+ -----END CERTIFICATE-----
795
+
796
+ Security Communication Root CA
797
+ ==============================
798
+ -----BEGIN CERTIFICATE-----
799
+ MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP
800
+ U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw
801
+ HhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP
802
+ U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw
803
+ ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw
804
+ 8yl89f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJDKaVv0uM
805
+ DPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9Ms+k2Y7CI9eNqPPYJayX
806
+ 5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/NQV3Is00qVUarH9oe4kA92819uZKAnDfd
807
+ DJZkndwi92SL32HeFZRSFaB9UslLqCHJxrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2
808
+ JChzAgMBAAGjPzA9MB0GA1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYw
809
+ DwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vGkl3g
810
+ 0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfrUj94nK9NrvjVT8+a
811
+ mCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5Bw+SUEmK3TGXX8npN6o7WWWXlDLJ
812
+ s58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJUJRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ
813
+ 6rBK+1YWc26sTfcioU+tHXotRSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAi
814
+ FL39vmwLAw==
815
+ -----END CERTIFICATE-----
816
+
817
+ Sonera Class 2 Root CA
818
+ ======================
819
+ -----BEGIN CERTIFICATE-----
820
+ MIIDIDCCAgigAwIBAgIBHTANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEPMA0GA1UEChMG
821
+ U29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MyIENBMB4XDTAxMDQwNjA3Mjk0MFoXDTIxMDQw
822
+ NjA3Mjk0MFowOTELMAkGA1UEBhMCRkkxDzANBgNVBAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJh
823
+ IENsYXNzMiBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJAXSjWdyvANlsdE+hY3
824
+ /Ei9vX+ALTU74W+oZ6m/AxxNjG8yR9VBaKQTBME1DJqEQ/xcHf+Js+gXGM2RX/uJ4+q/Tl18GybT
825
+ dXnt5oTjV+WtKcT0OijnpXuENmmz/V52vaMtmdOQTiMofRhj8VQ7Jp12W5dCsv+u8E7s3TmVToMG
826
+ f+dJQMjFAbJUWmYdPfz56TwKnoG4cPABi+QjVHzIrviQHgCWctRUz2EjvOr7nQKV0ba5cTppCD8P
827
+ tOFCx4j1P5iop7oc4HFx71hXgVB6XGt0Rg6DA5jDjqhu8nYybieDwnPz3BjotJPqdURrBGAgcVeH
828
+ nfO+oJAjPYok4doh28MCAwEAAaMzMDEwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQISqCqWITT
829
+ XjwwCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQBazof5FnIVV0sd2ZvnoiYw7JNn39Yt
830
+ 0jSv9zilzqsWuasvfDXLrNAPtEwr/IDva4yRXzZ299uzGxnq9LIR/WFxRL8oszodv7ND6J+/3DEI
831
+ cbCdjdY0RzKQxmUk96BKfARzjzlvF4xytb1LyHr4e4PDKE6cCepnP7JnBBvDFNr450kkkdAdavph
832
+ Oe9r5yF1BgfYErQhIHBCcYHaPJo2vqZbDWpsmh+Re/n570K6Tk6ezAyNlNzZRZxe7EJQY670XcSx
833
+ EtzKO6gunRRaBXW37Ndj4ro1tgQIkejanZz2ZrUYrAqmVCY0M9IbwdR/GjqOC6oybtv8TyWf2TLH
834
+ llpwrN9M
835
+ -----END CERTIFICATE-----
836
+
837
+ Staat der Nederlanden Root CA
838
+ =============================
839
+ -----BEGIN CERTIFICATE-----
840
+ MIIDujCCAqKgAwIBAgIEAJiWijANBgkqhkiG9w0BAQUFADBVMQswCQYDVQQGEwJOTDEeMBwGA1UE
841
+ ChMVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSYwJAYDVQQDEx1TdGFhdCBkZXIgTmVkZXJsYW5kZW4g
842
+ Um9vdCBDQTAeFw0wMjEyMTcwOTIzNDlaFw0xNTEyMTYwOTE1MzhaMFUxCzAJBgNVBAYTAk5MMR4w
843
+ HAYDVQQKExVTdGFhdCBkZXIgTmVkZXJsYW5kZW4xJjAkBgNVBAMTHVN0YWF0IGRlciBOZWRlcmxh
844
+ bmRlbiBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmNK1URF6gaYUmHFt
845
+ vsznExvWJw56s2oYHLZhWtVhCb/ekBPHZ+7d89rFDBKeNVU+LCeIQGv33N0iYfXCxw719tV2U02P
846
+ jLwYdjeFnejKScfST5gTCaI+Ioicf9byEGW07l8Y1Rfj+MX94p2i71MOhXeiD+EwR+4A5zN9RGca
847
+ C1Hoi6CeUJhoNFIfLm0B8mBF8jHrqTFoKbt6QZ7GGX+UtFE5A3+y3qcym7RHjm+0Sq7lr7HcsBth
848
+ vJly3uSJt3omXdozSVtSnA71iq3DuD3oBmrC1SoLbHuEvVYFy4ZlkuxEK7COudxwC0barbxjiDn6
849
+ 22r+I/q85Ej0ZytqERAhSQIDAQABo4GRMIGOMAwGA1UdEwQFMAMBAf8wTwYDVR0gBEgwRjBEBgRV
850
+ HSAAMDwwOgYIKwYBBQUHAgEWLmh0dHA6Ly93d3cucGtpb3ZlcmhlaWQubmwvcG9saWNpZXMvcm9v
851
+ dC1wb2xpY3kwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSofeu8Y6R0E3QA7Jbg0zTBLL9s+DAN
852
+ BgkqhkiG9w0BAQUFAAOCAQEABYSHVXQ2YcG70dTGFagTtJ+k/rvuFbQvBgwp8qiSpGEN/KtcCFtR
853
+ EytNwiphyPgJWPwtArI5fZlmgb9uXJVFIGzmeafR2Bwp/MIgJ1HI8XxdNGdphREwxgDS1/PTfLbw
854
+ MVcoEoJz6TMvplW0C5GUR5z6u3pCMuiufi3IvKwUv9kP2Vv8wfl6leF9fpb8cbDCTMjfRTTJzg3y
855
+ nGQI0DvDKcWy7ZAEwbEpkcUwb8GpcjPM/l0WFywRaed+/sWDCN+83CI6LiBpIzlWYGeQiy52OfsR
856
+ iJf2fL1LuCAWZwWN4jvBcj+UlTfHXbme2JOhF4//DGYVwSR8MnwDHTuhWEUykw==
857
+ -----END CERTIFICATE-----
858
+
859
+ UTN DATACorp SGC Root CA
860
+ ========================
861
+ -----BEGIN CERTIFICATE-----
862
+ MIIEXjCCA0agAwIBAgIQRL4Mi1AAIbQR0ypoBqmtaTANBgkqhkiG9w0BAQUFADCBkzELMAkGA1UE
863
+ BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
864
+ IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xGzAZ
865
+ BgNVBAMTElVUTiAtIERBVEFDb3JwIFNHQzAeFw05OTA2MjQxODU3MjFaFw0xOTA2MjQxOTA2MzBa
866
+ MIGTMQswCQYDVQQGEwJVUzELMAkGA1UECBMCVVQxFzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4w
867
+ HAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxITAfBgNVBAsTGGh0dHA6Ly93d3cudXNlcnRy
868
+ dXN0LmNvbTEbMBkGA1UEAxMSVVROIC0gREFUQUNvcnAgU0dDMIIBIjANBgkqhkiG9w0BAQEFAAOC
869
+ AQ8AMIIBCgKCAQEA3+5YEKIrblXEjr8uRgnn4AgPLit6E5Qbvfa2gI5lBZMAHryv4g+OGQ0SR+ys
870
+ raP6LnD43m77VkIVni5c7yPeIbkFdicZD0/Ww5y0vpQZY/KmEQrrU0icvvIpOxboGqBMpsn0GFlo
871
+ wHDyUwDAXlCCpVZvNvlK4ESGoE1O1kduSUrLZ9emxAW5jh70/P/N5zbgnAVssjMiFdC04MwXwLLA
872
+ 9P4yPykqlXvY8qdOD1R8oQ2AswkDwf9c3V6aPryuvEeKaq5xyh+xKrhfQgUL7EYw0XILyulWbfXv
873
+ 33i+Ybqypa4ETLyorGkVl73v67SMvzX41MPRKA5cOp9wGDMgd8SirwIDAQABo4GrMIGoMAsGA1Ud
874
+ DwQEAwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRTMtGzz3/64PGgXYVOktKeRR20TzA9
875
+ BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vY3JsLnVzZXJ0cnVzdC5jb20vVVROLURBVEFDb3JwU0dD
876
+ LmNybDAqBgNVHSUEIzAhBggrBgEFBQcDAQYKKwYBBAGCNwoDAwYJYIZIAYb4QgQBMA0GCSqGSIb3
877
+ DQEBBQUAA4IBAQAnNZcAiosovcYzMB4p/OL31ZjUQLtgyr+rFywJNn9Q+kHcrpY6CiM+iVnJowft
878
+ Gzet/Hy+UUla3joKVAgWRcKZsYfNjGjgaQPpxE6YsjuMFrMOoAyYUJuTqXAJyCyjj98C5OBxOvG0
879
+ I3KgqgHf35g+FFCgMSa9KOlaMCZ1+XtgHI3zzVAmbQQnmt/VDUVHKWss5nbZqSl9Mt3JNjy9rjXx
880
+ EZ4du5A/EkdOjtd+D2JzHVImOBwYSf0wdJrE5SIv2MCN7ZF6TACPcn9d2t0bi0Vr591pl6jFVkwP
881
+ DPafepE39peC4N1xaf92P2BNPM/3mfnGV/TJVTl4uix5yaaIK/QI
882
+ -----END CERTIFICATE-----
883
+
884
+ UTN USERFirst Hardware Root CA
885
+ ==============================
886
+ -----BEGIN CERTIFICATE-----
887
+ MIIEdDCCA1ygAwIBAgIQRL4Mi1AAJLQR0zYq/mUK/TANBgkqhkiG9w0BAQUFADCBlzELMAkGA1UE
888
+ BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
889
+ IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAd
890
+ BgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwHhcNOTkwNzA5MTgxMDQyWhcNMTkwNzA5MTgx
891
+ OTIyWjCBlzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0
892
+ eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVz
893
+ ZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwggEiMA0GCSqGSIb3
894
+ DQEBAQUAA4IBDwAwggEKAoIBAQCx98M4P7Sof885glFn0G2f0v9Y8+efK+wNiVSZuTiZFvfgIXlI
895
+ wrthdBKWHTxqctU8EGc6Oe0rE81m65UJM6Rsl7HoxuzBdXmcRl6Nq9Bq/bkqVRcQVLMZ8Jr28bFd
896
+ tqdt++BxF2uiiPsA3/4aMXcMmgF6sTLjKwEHOG7DpV4jvEWbe1DByTCP2+UretNb+zNAHqDVmBe8
897
+ i4fDidNdoI6yqqr2jmmIBsX6iSHzCJ1pLgkzmykNRg+MzEk0sGlRvfkGzWitZky8PqxhvQqIDsjf
898
+ Pe58BEydCl5rkdbux+0ojatNh4lz0G6k0B4WixThdkQDf2Os5M1JnMWS9KsyoUhbAgMBAAGjgbkw
899
+ gbYwCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFKFyXyYbKJhDlV0HN9WF
900
+ lp1L0sNFMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VVE4tVVNF
901
+ UkZpcnN0LUhhcmR3YXJlLmNybDAxBgNVHSUEKjAoBggrBgEFBQcDAQYIKwYBBQUHAwUGCCsGAQUF
902
+ BwMGBggrBgEFBQcDBzANBgkqhkiG9w0BAQUFAAOCAQEARxkP3nTGmZev/K0oXnWO6y1n7k57K9cM
903
+ //bey1WiCuFMVGWTYGufEpytXoMs61quwOQt9ABjHbjAbPLPSbtNk28GpgoiskliCE7/yMgUsogW
904
+ XecB5BKV5UU0s4tpvc+0hY91UZ59Ojg6FEgSxvunOxqNDYJAB+gECJChicsZUN/KHAG8HQQZexB2
905
+ lzvukJDKxA4fFm517zP4029bHpbj4HR3dHuKom4t3XbWOTCC8KucUvIqx69JXn7HaOWCgchqJ/kn
906
+ iCrVWFCVH/A7HFe7fRQ5YiuayZSSKqMiDP+JJn1fIytH1xUdqWqeUQ0qUZ6B+dQ7XnASfxAynB67
907
+ nfhmqA==
908
+ -----END CERTIFICATE-----
909
+
910
+ Camerfirma Chambers of Commerce Root
911
+ ====================================
912
+ -----BEGIN CERTIFICATE-----
913
+ MIIEvTCCA6WgAwIBAgIBADANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJFVTEnMCUGA1UEChMe
914
+ QUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1i
915
+ ZXJzaWduLm9yZzEiMCAGA1UEAxMZQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdDAeFw0wMzA5MzAx
916
+ NjEzNDNaFw0zNzA5MzAxNjEzNDRaMH8xCzAJBgNVBAYTAkVVMScwJQYDVQQKEx5BQyBDYW1lcmZp
917
+ cm1hIFNBIENJRiBBODI3NDMyODcxIzAhBgNVBAsTGmh0dHA6Ly93d3cuY2hhbWJlcnNpZ24ub3Jn
918
+ MSIwIAYDVQQDExlDaGFtYmVycyBvZiBDb21tZXJjZSBSb290MIIBIDANBgkqhkiG9w0BAQEFAAOC
919
+ AQ0AMIIBCAKCAQEAtzZV5aVdGDDg2olUkfzIx1L4L1DZ77F1c2VHfRtbunXF/KGIJPov7coISjlU
920
+ xFF6tdpg6jg8gbLL8bvZkSM/SAFwdakFKq0fcfPJVD0dBmpAPrMMhe5cG3nCYsS4No41XQEMIwRH
921
+ NaqbYE6gZj3LJgqcQKH0XZi/caulAGgq7YN6D6IUtdQis4CwPAxaUWktWBiP7Zme8a7ileb2R6jW
922
+ DA+wWFjbw2Y3npuRVDM30pQcakjJyfKl2qUMI/cjDpwyVV5xnIQFUZot/eZOKjRa3spAN2cMVCFV
923
+ d9oKDMyXroDclDZK9D7ONhMeU+SsTjoF7Nuucpw4i9A5O4kKPnf+dQIBA6OCAUQwggFAMBIGA1Ud
924
+ EwEB/wQIMAYBAf8CAQwwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybC5jaGFtYmVyc2lnbi5v
925
+ cmcvY2hhbWJlcnNyb290LmNybDAdBgNVHQ4EFgQU45T1sU3p26EpW1eLTXYGduHRooowDgYDVR0P
926
+ AQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzAnBgNVHREEIDAegRxjaGFtYmVyc3Jvb3RAY2hh
927
+ bWJlcnNpZ24ub3JnMCcGA1UdEgQgMB6BHGNoYW1iZXJzcm9vdEBjaGFtYmVyc2lnbi5vcmcwWAYD
928
+ VR0gBFEwTzBNBgsrBgEEAYGHLgoDATA+MDwGCCsGAQUFBwIBFjBodHRwOi8vY3BzLmNoYW1iZXJz
929
+ aWduLm9yZy9jcHMvY2hhbWJlcnNyb290Lmh0bWwwDQYJKoZIhvcNAQEFBQADggEBAAxBl8IahsAi
930
+ fJ/7kPMa0QOx7xP5IV8EnNrJpY0nbJaHkb5BkAFyk+cefV/2icZdp0AJPaxJRUXcLo0waLIJuvvD
931
+ L8y6C98/d3tGfToSJI6WjzwFCm/SlCgdbQzALogi1djPHRPH8EjX1wWnz8dHnjs8NMiAT9QUu/wN
932
+ UPf6s+xCX6ndbcj0dc97wXImsQEcXCz9ek60AcUFV7nnPKoF2YjpB0ZBzu9Bga5Y34OirsrXdx/n
933
+ ADydb47kMgkdTXg0eDQ8lJsm7U9xxhl6vSAiSFr+S30Dt+dYvsYyTnQeaN2oaFuzPu5ifdmA6Ap1
934
+ erfutGWaIZDgqtCYvDi1czyL+Nw=
935
+ -----END CERTIFICATE-----
936
+
937
+ Camerfirma Global Chambersign Root
938
+ ==================================
939
+ -----BEGIN CERTIFICATE-----
940
+ MIIExTCCA62gAwIBAgIBADANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJFVTEnMCUGA1UEChMe
941
+ QUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1i
942
+ ZXJzaWduLm9yZzEgMB4GA1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwHhcNMDMwOTMwMTYx
943
+ NDE4WhcNMzcwOTMwMTYxNDE4WjB9MQswCQYDVQQGEwJFVTEnMCUGA1UEChMeQUMgQ2FtZXJmaXJt
944
+ YSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1iZXJzaWduLm9yZzEg
945
+ MB4GA1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwggEgMA0GCSqGSIb3DQEBAQUAA4IBDQAw
946
+ ggEIAoIBAQCicKLQn0KuWxfH2H3PFIP8T8mhtxOviteePgQKkotgVvq0Mi+ITaFgCPS3CU6gSS9J
947
+ 1tPfnZdan5QEcOw/Wdm3zGaLmFIoCQLfxS+EjXqXd7/sQJ0lcqu1PzKY+7e3/HKE5TWH+VX6ox8O
948
+ by4o3Wmg2UIQxvi1RMLQQ3/bvOSiPGpVeAp3qdjqGTK3L/5cPxvusZjsyq16aUXjlg9V9ubtdepl
949
+ 6DJWk0aJqCWKZQbua795B9Dxt6/tLE2Su8CoX6dnfQTyFQhwrJLWfQTSM/tMtgsL+xrJxI0DqX5c
950
+ 8lCrEqWhz0hQpe/SyBoT+rB/sYIcd2oPX9wLlY/vQ37mRQklAgEDo4IBUDCCAUwwEgYDVR0TAQH/
951
+ BAgwBgEB/wIBDDA/BgNVHR8EODA2MDSgMqAwhi5odHRwOi8vY3JsLmNoYW1iZXJzaWduLm9yZy9j
952
+ aGFtYmVyc2lnbnJvb3QuY3JsMB0GA1UdDgQWBBRDnDafsJ4wTcbOX60Qq+UDpfqpFDAOBgNVHQ8B
953
+ Af8EBAMCAQYwEQYJYIZIAYb4QgEBBAQDAgAHMCoGA1UdEQQjMCGBH2NoYW1iZXJzaWducm9vdEBj
954
+ aGFtYmVyc2lnbi5vcmcwKgYDVR0SBCMwIYEfY2hhbWJlcnNpZ25yb290QGNoYW1iZXJzaWduLm9y
955
+ ZzBbBgNVHSAEVDBSMFAGCysGAQQBgYcuCgEBMEEwPwYIKwYBBQUHAgEWM2h0dHA6Ly9jcHMuY2hh
956
+ bWJlcnNpZ24ub3JnL2Nwcy9jaGFtYmVyc2lnbnJvb3QuaHRtbDANBgkqhkiG9w0BAQUFAAOCAQEA
957
+ PDtwkfkEVCeR4e3t/mh/YV3lQWVPMvEYBZRqHN4fcNs+ezICNLUMbKGKfKX0j//U2K0X1S0E0T9Y
958
+ gOKBWYi+wONGkyT+kL0mojAt6JcmVzWJdJYY9hXiryQZVgICsroPFOrGimbBhkVVi76SvpykBMdJ
959
+ PJ7oKXqJ1/6v/2j1pReQvayZzKWGVwlnRtvWFsJG8eSpUPWP0ZIV018+xgBJOm5YstHRJw0lyDL4
960
+ IBHNfTIzSJRUTN3cecQwn+uOuFW114hcxWokPbLTBQNRxgfvzBRydD1ucs4YKIxKoHflCStFREes
961
+ t2d/AYoFWpO+ocH/+OcOZ6RHSXZddZAa9SaP8A==
962
+ -----END CERTIFICATE-----
963
+
964
+ NetLock Notary (Class A) Root
965
+ =============================
966
+ -----BEGIN CERTIFICATE-----
967
+ MIIGfTCCBWWgAwIBAgICAQMwDQYJKoZIhvcNAQEEBQAwga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQI
968
+ EwdIdW5nYXJ5MREwDwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6
969
+ dG9uc2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9j
970
+ ayBLb3pqZWd5em9pIChDbGFzcyBBKSBUYW51c2l0dmFueWtpYWRvMB4XDTk5MDIyNDIzMTQ0N1oX
971
+ DTE5MDIxOTIzMTQ0N1owga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQIEwdIdW5nYXJ5MREwDwYDVQQH
972
+ EwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6dG9uc2FnaSBLZnQuMRowGAYD
973
+ VQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9jayBLb3pqZWd5em9pIChDbGFz
974
+ cyBBKSBUYW51c2l0dmFueWtpYWRvMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvHSM
975
+ D7tM9DceqQWC2ObhbHDqeLVu0ThEDaiDzl3S1tWBxdRL51uUcCbbO51qTGL3cfNk1mE7PetzozfZ
976
+ z+qMkjvN9wfcZnSX9EUi3fRc4L9t875lM+QVOr/bmJBVOMTtplVjC7B4BPTjbsE/jvxReB+SnoPC
977
+ /tmwqcm8WgD/qaiYdPv2LD4VOQ22BFWoDpggQrOxJa1+mm9dU7GrDPzr4PN6s6iz/0b2Y6LYOph7
978
+ tqyF/7AlT3Rj5xMHpQqPBffAZG9+pyeAlt7ULoZgx2srXnN7F+eRP2QM2EsiNCubMvJIH5+hCoR6
979
+ 4sKtlz2O1cH5VqNQ6ca0+pii7pXmKgOM3wIDAQABo4ICnzCCApswDgYDVR0PAQH/BAQDAgAGMBIG
980
+ A1UdEwEB/wQIMAYBAf8CAQQwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaC
981
+ Ak1GSUdZRUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFub3MgU3pv
982
+ bGdhbHRhdGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBhbGFwamFuIGtlc3p1bHQu
983
+ IEEgaGl0ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExvY2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2Vn
984
+ LWJpenRvc2l0YXNhIHZlZGkuIEEgZGlnaXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0
985
+ ZXRlbGUgYXogZWxvaXJ0IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFz
986
+ IGxlaXJhc2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGphbiBh
987
+ IGh0dHBzOi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJoZXRvIGF6IGVsbGVu
988
+ b3J6ZXNAbmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBPUlRBTlQhIFRoZSBpc3N1YW5jZSBh
989
+ bmQgdGhlIHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sg
990
+ Q1BTIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFp
991
+ bCBhdCBjcHNAbmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4IBAQBIJEb3ulZv+sgoA0BO5TE5
992
+ ayZrU3/b39/zcT0mwBQOxmd7I6gMc90Bu8bKbjc5VdXHjFYgDigKDtIqpLBJUsY4B/6+CgmM0ZjP
993
+ ytoUMaFP0jn8DxEsQ8Pdq5PHVT5HfBgaANzze9jyf1JsIPQLX2lS9O74silg6+NJMSEN1rUQQeJB
994
+ CWziGppWS3cC9qCbmieH6FUpccKQn0V4GuEVZD3QDtigdp+uxdAu6tYPVuxkf1qbFFgBJ34TUMdr
995
+ KuZoPL9coAob4Q566eKAw+np9v1sEZ7Q5SgnK1QyQhSCdeZK8CtmdWOMovsEPoMOmzbwGOQmIMOM
996
+ 8CgHrTwXZoi1/baI
997
+ -----END CERTIFICATE-----
998
+
999
+ XRamp Global CA Root
1000
+ ====================
1001
+ -----BEGIN CERTIFICATE-----
1002
+ MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UE
1003
+ BhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2Vj
1004
+ dXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB
1005
+ dXRob3JpdHkwHhcNMDQxMTAxMTcxNDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMx
1006
+ HjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkg
1007
+ U2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3Jp
1008
+ dHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS638eMpSe2OAtp87ZOqCwu
1009
+ IR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCPKZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMx
1010
+ foArtYzAQDsRhtDLooY2YKTVMIJt2W7QDxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FE
1011
+ zG+gSqmUsE3a56k0enI4qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqs
1012
+ AxcZZPRaJSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNViPvry
1013
+ xS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud
1014
+ EwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASsjVy16bYbMDYGA1UdHwQvMC0wK6Ap
1015
+ oCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMC
1016
+ AQEwDQYJKoZIhvcNAQEFBQADggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc
1017
+ /Kh4ZzXxHfARvbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt
1018
+ qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLaIR9NmXmd4c8n
1019
+ nxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSyi6mx5O+aGtA9aZnuqCij4Tyz
1020
+ 8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQO+7ETPTsJ3xCwnR8gooJybQDJbw=
1021
+ -----END CERTIFICATE-----
1022
+
1023
+ Go Daddy Class 2 CA
1024
+ ===================
1025
+ -----BEGIN CERTIFICATE-----
1026
+ MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMY
1027
+ VGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRp
1028
+ ZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkG
1029
+ A1UEBhMCVVMxITAfBgNVBAoTGFRoZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28g
1030
+ RGFkZHkgQ2xhc3MgMiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQAD
1031
+ ggENADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCAPVYYYwhv
1032
+ 2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6wwdhFJ2+qN1j3hybX2C32
1033
+ qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXiEqITLdiOr18SPaAIBQi2XKVlOARFmR6j
1034
+ YGB0xUGlcmIbYsUfb18aQr4CUWWoriMYavx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmY
1035
+ vLEHZ6IVDd2gWMZEewo+YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0O
1036
+ BBYEFNLEsNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h/t2o
1037
+ atTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMu
1038
+ MTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwG
1039
+ A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wim
1040
+ PQoZ+YeAEW5p5JYXMP80kWNyOO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKt
1041
+ I3lpjbi2Tc7PTMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ
1042
+ HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mERdEr/VxqHD3VI
1043
+ Ls9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5CufReYNnyicsbkqWletNw+vHX/b
1044
+ vZ8=
1045
+ -----END CERTIFICATE-----
1046
+
1047
+ Starfield Class 2 CA
1048
+ ====================
1049
+ -----BEGIN CERTIFICATE-----
1050
+ MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzElMCMGA1UEChMc
1051
+ U3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZpZWxkIENsYXNzIDIg
1052
+ Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQwNjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBo
1053
+ MQswCQYDVQQGEwJVUzElMCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAG
1054
+ A1UECxMpU3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqG
1055
+ SIb3DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf8MOh2tTY
1056
+ bitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN+lq2cwQlZut3f+dZxkqZ
1057
+ JRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVm
1058
+ epsZGD3/cVE8MC5fvj13c7JdBmzDI1aaK4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSN
1059
+ F4Azbl5KXZnJHoe0nRrA1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HF
1060
+ MIHCMB0GA1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fRzt0f
1061
+ hvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNo
1062
+ bm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBDbGFzcyAyIENlcnRpZmljYXRpb24g
1063
+ QXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGs
1064
+ afPzWdqbAYcaT1epoXkJKtv3L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLM
1065
+ PUxA2IGvd56Deruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl
1066
+ xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynpVSJYACPq4xJD
1067
+ KVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEYWQPJIrSPnNVeKtelttQKbfi3
1068
+ QBFGmh95DmK/D5fs4C8fF5Q=
1069
+ -----END CERTIFICATE-----
1070
+
1071
+ StartCom Certification Authority
1072
+ ================================
1073
+ -----BEGIN CERTIFICATE-----
1074
+ MIIHyTCCBbGgAwIBAgIBATANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMN
1075
+ U3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmlu
1076
+ ZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0
1077
+ NjM2WhcNMzYwOTE3MTk0NjM2WjB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRk
1078
+ LjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMg
1079
+ U3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
1080
+ ggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZkpMyONvg45iPwbm2xPN1y
1081
+ o4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rfOQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/
1082
+ Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/CJi/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/d
1083
+ eMotHweXMAEtcnn6RtYTKqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt
1084
+ 2PZE4XNiHzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMMAv+Z
1085
+ 6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w+2OqqGwaVLRcJXrJ
1086
+ osmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/
1087
+ untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVc
1088
+ UjyJthkqcwEKDwOzEmDyei+B26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT
1089
+ 37uMdBNSSwIDAQABo4ICUjCCAk4wDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAa4wHQYDVR0OBBYE
1090
+ FE4L7xqkQFulF2mHMMo0aEPQQa7yMGQGA1UdHwRdMFswLKAqoCiGJmh0dHA6Ly9jZXJ0LnN0YXJ0
1091
+ Y29tLm9yZy9zZnNjYS1jcmwuY3JsMCugKaAnhiVodHRwOi8vY3JsLnN0YXJ0Y29tLm9yZy9zZnNj
1092
+ YS1jcmwuY3JsMIIBXQYDVR0gBIIBVDCCAVAwggFMBgsrBgEEAYG1NwEBATCCATswLwYIKwYBBQUH
1093
+ AgEWI2h0dHA6Ly9jZXJ0LnN0YXJ0Y29tLm9yZy9wb2xpY3kucGRmMDUGCCsGAQUFBwIBFilodHRw
1094
+ Oi8vY2VydC5zdGFydGNvbS5vcmcvaW50ZXJtZWRpYXRlLnBkZjCB0AYIKwYBBQUHAgIwgcMwJxYg
1095
+ U3RhcnQgQ29tbWVyY2lhbCAoU3RhcnRDb20pIEx0ZC4wAwIBARqBl0xpbWl0ZWQgTGlhYmlsaXR5
1096
+ LCByZWFkIHRoZSBzZWN0aW9uICpMZWdhbCBMaW1pdGF0aW9ucyogb2YgdGhlIFN0YXJ0Q29tIENl
1097
+ cnRpZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBhdmFpbGFibGUgYXQgaHR0cDovL2NlcnQuc3Rh
1098
+ cnRjb20ub3JnL3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilT
1099
+ dGFydENvbSBGcmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOC
1100
+ AgEAFmyZ9GYMNPXQhV59CuzaEE44HF7fpiUFS5Eyweg78T3dRAlbB0mKKctmArexmvclmAk8jhvh
1101
+ 3TaHK0u7aNM5Zj2gJsfyOZEdUauCe37Vzlrk4gNXcGmXCPleWKYK34wGmkUWFjgKXlf2Ysd6AgXm
1102
+ vB618p70qSmD+LIU424oh0TDkBreOKk8rENNZEXO3SipXPJzewT4F+irsfMuXGRuczE6Eri8sxHk
1103
+ fY+BUZo7jYn0TZNmezwD7dOaHZrzZVD1oNB1ny+v8OqCQ5j4aZyJecRDjkZy42Q2Eq/3JR44iZB3
1104
+ fsNrarnDy0RLrHiQi+fHLB5LEUTINFInzQpdn4XBidUaePKVEFMy3YCEZnXZtWgo+2EuvoSoOMCZ
1105
+ EoalHmdkrQYuL6lwhceWD3yJZfWOQ1QOq92lgDmUYMA0yZZwLKMS9R9Ie70cfmu3nZD0Ijuu+Pwq
1106
+ yvqCUqDvr0tVk+vBtfAii6w0TiYiBKGHLHVKt+V9E9e4DGTANtLJL4YSjCMJwRuCO3NJo2pXh5Tl
1107
+ 1njFmUNj403gdy3hZZlyaQQaRwnmDwFWJPsfvw55qVguucQJAX6Vum0ABj6y6koQOdjQK/W/7HW/
1108
+ lwLFCRsI3FU34oH7N4RDYiDK51ZLZer+bMEkkyShNOsF/5oirpt9P/FlUQqmMGqz9IgcgA38coro
1109
+ g14=
1110
+ -----END CERTIFICATE-----
1111
+
1112
+ Taiwan GRCA
1113
+ ===========
1114
+ -----BEGIN CERTIFICATE-----
1115
+ MIIFcjCCA1qgAwIBAgIQH51ZWtcvwgZEpYAIaeNe9jANBgkqhkiG9w0BAQUFADA/MQswCQYDVQQG
1116
+ EwJUVzEwMC4GA1UECgwnR292ZXJubWVudCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4X
1117
+ DTAyMTIwNTEzMjMzM1oXDTMyMTIwNTEzMjMzM1owPzELMAkGA1UEBhMCVFcxMDAuBgNVBAoMJ0dv
1118
+ dmVybm1lbnQgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQAD
1119
+ ggIPADCCAgoCggIBAJoluOzMonWoe/fOW1mKydGGEghU7Jzy50b2iPN86aXfTEc2pBsBHH8eV4qN
1120
+ w8XRIePaJD9IK/ufLqGU5ywck9G/GwGHU5nOp/UKIXZ3/6m3xnOUT0b3EEk3+qhZSV1qgQdW8or5
1121
+ BtD3cCJNtLdBuTK4sfCxw5w/cP1T3YGq2GN49thTbqGsaoQkclSGxtKyyhwOeYHWtXBiCAEuTk8O
1122
+ 1RGvqa/lmr/czIdtJuTJV6L7lvnM4T9TjGxMfptTCAtsF/tnyMKtsc2AtJfcdgEWFelq16TheEfO
1123
+ htX7MfP6Mb40qij7cEwdScevLJ1tZqa2jWR+tSBqnTuBto9AAGdLiYa4zGX+FVPpBMHWXx1E1wov
1124
+ J5pGfaENda1UhhXcSTvxls4Pm6Dso3pdvtUqdULle96ltqqvKKyskKw4t9VoNSZ63Pc78/1Fm9G7
1125
+ Q3hub/FCVGqY8A2tl+lSXunVanLeavcbYBT0peS2cWeqH+riTcFCQP5nRhc4L0c/cZyu5SHKYS1t
1126
+ B6iEfC3uUSXxY5Ce/eFXiGvviiNtsea9P63RPZYLhY3Naye7twWb7LuRqQoHEgKXTiCQ8P8NHuJB
1127
+ O9NAOueNXdpm5AKwB1KYXA6OM5zCppX7VRluTI6uSw+9wThNXo+EHWbNxWCWtFJaBYmOlXqYwZE8
1128
+ lSOyDvR5tMl8wUohAgMBAAGjajBoMB0GA1UdDgQWBBTMzO/MKWCkO7GStjz6MmKPrCUVOzAMBgNV
1129
+ HRMEBTADAQH/MDkGBGcqBwAEMTAvMC0CAQAwCQYFKw4DAhoFADAHBgVnKgMAAAQUA5vwIhP/lSg2
1130
+ 09yewDL7MTqKUWUwDQYJKoZIhvcNAQEFBQADggIBAECASvomyc5eMN1PhnR2WPWus4MzeKR6dBcZ
1131
+ TulStbngCnRiqmjKeKBMmo4sIy7VahIkv9Ro04rQ2JyftB8M3jh+Vzj8jeJPXgyfqzvS/3WXy6Tj
1132
+ Zwj/5cAWtUgBfen5Cv8b5Wppv3ghqMKnI6mGq3ZW6A4M9hPdKmaKZEk9GhiHkASfQlK3T8v+R0F2
1133
+ Ne//AHY2RTKbxkaFXeIksB7jSJaYV0eUVXoPQbFEJPPB/hprv4j9wabak2BegUqZIJxIZhm1AHlU
1134
+ D7gsL0u8qV1bYH+Mh6XgUmMqvtg7hUAV/h62ZT/FS9p+tXo1KaMuephgIqP0fSdOLeq0dDzpD6Qz
1135
+ DxARvBMB1uUO07+1EqLhRSPAzAhuYbeJq4PjJB7mXQfnHyA+z2fI56wwbSdLaG5LKlwCCDTb+Hbk
1136
+ Z6MmnD+iMsJKxYEYMRBWqoTvLQr/uB930r+lWKBi5NdLkXWNiYCYfm3LU05er/ayl4WXudpVBrkk
1137
+ 7tfGOB5jGxI7leFYrPLfhNVfmS8NVVvmONsuP3LpSIXLuykTjx44VbnzssQwmSNOXfJIoRIM3BKQ
1138
+ CZBUkQM8R+XVyWXgt0t97EfTsws+rZ7QdAAO671RrcDeLMDDav7v3Aun+kbfYNucpllQdSNpc5Oy
1139
+ +fwC00fmcc4QAu4njIT/rEUNE1yDMuAlpYYsfPQS
1140
+ -----END CERTIFICATE-----
1141
+
1142
+ Swisscom Root CA 1
1143
+ ==================
1144
+ -----BEGIN CERTIFICATE-----
1145
+ MIIF2TCCA8GgAwIBAgIQXAuFXAvnWUHfV8w/f52oNjANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQG
1146
+ EwJjaDERMA8GA1UEChMIU3dpc3Njb20xJTAjBgNVBAsTHERpZ2l0YWwgQ2VydGlmaWNhdGUgU2Vy
1147
+ dmljZXMxGzAZBgNVBAMTElN3aXNzY29tIFJvb3QgQ0EgMTAeFw0wNTA4MTgxMjA2MjBaFw0yNTA4
1148
+ MTgyMjA2MjBaMGQxCzAJBgNVBAYTAmNoMREwDwYDVQQKEwhTd2lzc2NvbTElMCMGA1UECxMcRGln
1149
+ aXRhbCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczEbMBkGA1UEAxMSU3dpc3Njb20gUm9vdCBDQSAxMIIC
1150
+ IjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0LmwqAzZuz8h+BvVM5OAFmUgdbI9m2BtRsiM
1151
+ MW8Xw/qabFbtPMWRV8PNq5ZJkCoZSx6jbVfd8StiKHVFXqrWW/oLJdihFvkcxC7mlSpnzNApbjyF
1152
+ NDhhSbEAn9Y6cV9Nbc5fuankiX9qUvrKm/LcqfmdmUc/TilftKaNXXsLmREDA/7n29uj/x2lzZAe
1153
+ AR81sH8A25Bvxn570e56eqeqDFdvpG3FEzuwpdntMhy0XmeLVNxzh+XTF3xmUHJd1BpYwdnP2IkC
1154
+ b6dJtDZd0KTeByy2dbcokdaXvij1mB7qWybJvbCXc9qukSbraMH5ORXWZ0sKbU/Lz7DkQnGMU3nn
1155
+ 7uHbHaBuHYwadzVcFh4rUx80i9Fs/PJnB3r1re3WmquhsUvhzDdf/X/NTa64H5xD+SpYVUNFvJbN
1156
+ cA78yeNmuk6NO4HLFWR7uZToXTNShXEuT46iBhFRyePLoW4xCGQMwtI89Tbo19AOeCMgkckkKmUp
1157
+ WyL3Ic6DXqTz3kvTaI9GdVyDCW4pa8RwjPWd1yAv/0bSKzjCL3UcPX7ape8eYIVpQtPM+GP+HkM5
1158
+ haa2Y0EQs3MevNP6yn0WR+Kn1dCjigoIlmJWbjTb2QK5MHXjBNLnj8KwEUAKrNVxAmKLMb7dxiNY
1159
+ MUJDLXT5xp6mig/p/r+D5kNXJLrvRjSq1xIBOO0CAwEAAaOBhjCBgzAOBgNVHQ8BAf8EBAMCAYYw
1160
+ HQYDVR0hBBYwFDASBgdghXQBUwABBgdghXQBUwABMBIGA1UdEwEB/wQIMAYBAf8CAQcwHwYDVR0j
1161
+ BBgwFoAUAyUv3m+CATpcLNwroWm1Z9SM0/0wHQYDVR0OBBYEFAMlL95vggE6XCzcK6FptWfUjNP9
1162
+ MA0GCSqGSIb3DQEBBQUAA4ICAQA1EMvspgQNDQ/NwNurqPKIlwzfky9NfEBWMXrrpA9gzXrzvsMn
1163
+ jgM+pN0S734edAY8PzHyHHuRMSG08NBsl9Tpl7IkVh5WwzW9iAUPWxAaZOHHgjD5Mq2eUCzneAXQ
1164
+ MbFamIp1TpBcahQq4FJHgmDmHtqBsfsUC1rxn9KVuj7QG9YVHaO+htXbD8BJZLsuUBlL0iT43R4H
1165
+ VtA4oJVwIHaM190e3p9xxCPvgxNcoyQVTSlAPGrEqdi3pkSlDfTgnXceQHAm/NrZNuR55LU/vJtl
1166
+ vrsRls/bxig5OgjOR1tTWsWZ/l2p3e9M1MalrQLmjAcSHm8D0W+go/MpvRLHUKKwf4ipmXeascCl
1167
+ OS5cfGniLLDqN2qk4Vrh9VDlg++luyqI54zb/W1elxmofmZ1a3Hqv7HHb6D0jqTsNFFbjCYDcKF3
1168
+ 1QESVwA12yPeDooomf2xEG9L/zgtYE4snOtnta1J7ksfrK/7DZBaZmBwXarNeNQk7shBoJMBkpxq
1169
+ nvy5JMWzFYJ+vq6VK+uxwNrjAWALXmmshFZhvnEX/h0TD/7Gh0Xp/jKgGg0TpJRVcaUWi7rKibCy
1170
+ x/yP2FS1k2Kdzs9Z+z0YzirLNRWCXf9UIltxUvu3yf5gmwBBZPCqKuy2QkPOiWaByIufOVQDJdMW
1171
+ NY6E0F/6MBr1mmz0DlP5OlvRHA==
1172
+ -----END CERTIFICATE-----
1173
+
1174
+ DigiCert Assured ID Root CA
1175
+ ===========================
1176
+ -----BEGIN CERTIFICATE-----
1177
+ MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQG
1178
+ EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw
1179
+ IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzEx
1180
+ MTEwMDAwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL
1181
+ ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0Ew
1182
+ ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7cJpSIqvTO
1183
+ 9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYPmDI2dsze3Tyoou9q+yHy
1184
+ UmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW
1185
+ /lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpy
1186
+ oeb6pNnVFzF1roV9Iq4/AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whf
1187
+ GHdPAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRF
1188
+ 66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYunpyGd823IDzANBgkq
1189
+ hkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRCdWKuh+vy1dneVrOfzM4UKLkNl2Bc
1190
+ EkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTffwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38Fn
1191
+ SbNd67IJKusm7Xi+fT8r87cmNW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i
1192
+ 8b5QZ7dsvfPxH2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe
1193
+ +o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g==
1194
+ -----END CERTIFICATE-----
1195
+
1196
+ DigiCert Global Root CA
1197
+ =======================
1198
+ -----BEGIN CERTIFICATE-----
1199
+ MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBhMQswCQYDVQQG
1200
+ EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw
1201
+ HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAw
1202
+ MDAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3
1203
+ dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkq
1204
+ hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsBCSDMAZOn
1205
+ TjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97nh6Vfe63SKMI2tavegw5
1206
+ BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt43C/dxC//AH2hdmoRBBYMql1GNXRor5H
1207
+ 4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7PT19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y
1208
+ 7vrTC0LUq7dBMtoM1O/4gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQAB
1209
+ o2MwYTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbRTLtm
1210
+ 8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUwDQYJKoZIhvcNAQEF
1211
+ BQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/EsrhMAtudXH/vTBH1jLuG2cenTnmCmr
1212
+ EbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIt
1213
+ tep3Sp+dWOIrWcBAI+0tKIJFPnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886
1214
+ UAb3LujEV0lsYSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk
1215
+ CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=
1216
+ -----END CERTIFICATE-----
1217
+
1218
+ DigiCert High Assurance EV Root CA
1219
+ ==================================
1220
+ -----BEGIN CERTIFICATE-----
1221
+ MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBsMQswCQYDVQQG
1222
+ EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSsw
1223
+ KQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5jZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAw
1224
+ MFoXDTMxMTExMDAwMDAwMFowbDELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZ
1225
+ MBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFu
1226
+ Y2UgRVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm+9S75S0t
1227
+ Mqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTWPNt0OKRKzE0lgvdKpVMS
1228
+ OO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEMxChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3
1229
+ MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFBIk5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQ
1230
+ NAQTXKFx01p8VdteZOE3hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUe
1231
+ h10aUAsgEsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMB
1232
+ Af8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaAFLE+w2kD+L9HAdSY
1233
+ JhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3NecnzyIZgYIVyHbIUf4KmeqvxgydkAQ
1234
+ V8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6zeM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFp
1235
+ myPInngiK3BD41VHMWEZ71jFhS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkK
1236
+ mNEVX58Svnw2Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe
1237
+ vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep+OkuE6N36B9K
1238
+ -----END CERTIFICATE-----
1239
+
1240
+ Certplus Class 2 Primary CA
1241
+ ===========================
1242
+ -----BEGIN CERTIFICATE-----
1243
+ MIIDkjCCAnqgAwIBAgIRAIW9S/PY2uNp9pTXX8OlRCMwDQYJKoZIhvcNAQEFBQAwPTELMAkGA1UE
1244
+ BhMCRlIxETAPBgNVBAoTCENlcnRwbHVzMRswGQYDVQQDExJDbGFzcyAyIFByaW1hcnkgQ0EwHhcN
1245
+ OTkwNzA3MTcwNTAwWhcNMTkwNzA2MjM1OTU5WjA9MQswCQYDVQQGEwJGUjERMA8GA1UEChMIQ2Vy
1246
+ dHBsdXMxGzAZBgNVBAMTEkNsYXNzIDIgUHJpbWFyeSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP
1247
+ ADCCAQoCggEBANxQltAS+DXSCHh6tlJw/W/uz7kRy1134ezpfgSN1sxvc0NXYKwzCkTsA18cgCSR
1248
+ 5aiRVhKC9+Ar9NuuYS6JEI1rbLqzAr3VNsVINyPi8Fo3UjMXEuLRYE2+L0ER4/YXJQyLkcAbmXuZ
1249
+ Vg2v7tK8R1fjeUl7NIknJITesezpWE7+Tt9avkGtrAjFGA7v0lPubNCdEgETjdyAYveVqUSISnFO
1250
+ YFWe2yMZeVYHDD9jC1yw4r5+FfyUM1hBOHTE4Y+L3yasH7WLO7dDWWuwJKZtkIvEcupdM5i3y95e
1251
+ e++U8Rs+yskhwcWYAqqi9lt3m/V+llU0HGdpwPFC40es/CgcZlUCAwEAAaOBjDCBiTAPBgNVHRME
1252
+ CDAGAQH/AgEKMAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQU43Mt38sOKAze3bOkynm4jrvoMIkwEQYJ
1253
+ YIZIAYb4QgEBBAQDAgEGMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly93d3cuY2VydHBsdXMuY29t
1254
+ L0NSTC9jbGFzczIuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQCnVM+IRBnL39R/AN9WM2K191EBkOvD
1255
+ P9GIROkkXe/nFL0gt5o8AP5tn9uQ3Nf0YtaLcF3n5QRIqWh8yfFC82x/xXp8HVGIutIKPidd3i1R
1256
+ TtMTZGnkLuPT55sJmabglZvOGtd/vjzOUrMRFcEPF80Du5wlFbqidon8BvEY0JNLDnyCt6X09l/+
1257
+ 7UCmnYR0ObncHoUW2ikbhiMAybuJfm6AiB4vFLQDJKgybwOaRywwvlbGp0ICcBvqQNi6BQNwB6SW
1258
+ //1IMwrh3KWBkJtN3X3n57LNXMhqlfil9o3EXXgIvnsG1knPGTZQIy4I5p4FTUcY1Rbpsda2ENW7
1259
+ l7+ijrRU
1260
+ -----END CERTIFICATE-----
1261
+
1262
+ DST Root CA X3
1263
+ ==============
1264
+ -----BEGIN CERTIFICATE-----
1265
+ MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/MSQwIgYDVQQK
1266
+ ExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMTDkRTVCBSb290IENBIFgzMB4X
1267
+ DTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVowPzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1
1268
+ cmUgVHJ1c3QgQ28uMRcwFQYDVQQDEw5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQAD
1269
+ ggEPADCCAQoCggEBAN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmT
1270
+ rE4Orz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEqOLl5CjH9
1271
+ UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9bxiqKqy69cK3FCxolkHRy
1272
+ xXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40d
1273
+ utolucbY38EVAjqr2m7xPi71XAicPNaDaeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0T
1274
+ AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQ
1275
+ MA0GCSqGSIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69ikug
1276
+ dB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXrAvHRAosZy5Q6XkjE
1277
+ GB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZzR8srzJmwN0jP41ZL9c8PDHIyh8bw
1278
+ RLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubS
1279
+ fZGL+T0yjWW06XyxV3bqxbYoOb8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ
1280
+ -----END CERTIFICATE-----
1281
+
1282
+ DST ACES CA X6
1283
+ ==============
1284
+ -----BEGIN CERTIFICATE-----
1285
+ MIIECTCCAvGgAwIBAgIQDV6ZCtadt3js2AdWO4YV2TANBgkqhkiG9w0BAQUFADBbMQswCQYDVQQG
1286
+ EwJVUzEgMB4GA1UEChMXRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QxETAPBgNVBAsTCERTVCBBQ0VT
1287
+ MRcwFQYDVQQDEw5EU1QgQUNFUyBDQSBYNjAeFw0wMzExMjAyMTE5NThaFw0xNzExMjAyMTE5NTha
1288
+ MFsxCzAJBgNVBAYTAlVTMSAwHgYDVQQKExdEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdDERMA8GA1UE
1289
+ CxMIRFNUIEFDRVMxFzAVBgNVBAMTDkRTVCBBQ0VTIENBIFg2MIIBIjANBgkqhkiG9w0BAQEFAAOC
1290
+ AQ8AMIIBCgKCAQEAuT31LMmU3HWKlV1j6IR3dma5WZFcRt2SPp/5DgO0PWGSvSMmtWPuktKe1jzI
1291
+ DZBfZIGxqAgNTNj50wUoUrQBJcWVHAx+PhCEdc/BGZFjz+iokYi5Q1K7gLFViYsx+tC3dr5BPTCa
1292
+ pCIlF3PoHuLTrCq9Wzgh1SpL11V94zpVvddtawJXa+ZHfAjIgrrep4c9oW24MFbCswKBXy314pow
1293
+ GCi4ZtPLAZZv6opFVdbgnf9nKxcCpk4aahELfrd755jWjHZvwTvbUJN+5dCOHze4vbrGn2zpfDPy
1294
+ MjwmR/onJALJfh1biEITajV8fTXpLmaRcpPVMibEdPVTo7NdmvYJywIDAQABo4HIMIHFMA8GA1Ud
1295
+ EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgHGMB8GA1UdEQQYMBaBFHBraS1vcHNAdHJ1c3Rkc3Qu
1296
+ Y29tMGIGA1UdIARbMFkwVwYKYIZIAWUDAgEBATBJMEcGCCsGAQUFBwIBFjtodHRwOi8vd3d3LnRy
1297
+ dXN0ZHN0LmNvbS9jZXJ0aWZpY2F0ZXMvcG9saWN5L0FDRVMtaW5kZXguaHRtbDAdBgNVHQ4EFgQU
1298
+ CXIGThhDD+XWzMNqizF7eI+og7gwDQYJKoZIhvcNAQEFBQADggEBAKPYjtay284F5zLNAdMEA+V2
1299
+ 5FYrnJmQ6AgwbN99Pe7lv7UkQIRJ4dEorsTCOlMwiPH1d25Ryvr/ma8kXxug/fKshMrfqfBfBC6t
1300
+ Fr8hlxCBPeP/h40y3JTlR4peahPJlJU90u7INJXQgNStMgiAVDzgvVJT11J8smk/f3rPanTK+gQq
1301
+ nExaBqXpIK1FZg9p8d2/6eMyi/rgwYZNcjwu2JN4Cir42NInPRmJX1p7ijvMDNpRrscL9yuwNwXs
1302
+ vFcj4jjSm2jzVhKIT0J8uDHEtdvkyCE06UgRNe76x5JXxZ805Mf29w4LTJxoeHtxMcfrHuBnQfO3
1303
+ oKfN5XozNmr6mis=
1304
+ -----END CERTIFICATE-----
1305
+
1306
+ TURKTRUST Certificate Services Provider Root 1
1307
+ ==============================================
1308
+ -----BEGIN CERTIFICATE-----
1309
+ MIID+zCCAuOgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBtzE/MD0GA1UEAww2VMOcUktUUlVTVCBF
1310
+ bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGDAJUUjEP
1311
+ MA0GA1UEBwwGQU5LQVJBMVYwVAYDVQQKDE0oYykgMjAwNSBUw5xSS1RSVVNUIEJpbGdpIMSwbGV0
1312
+ acWfaW0gdmUgQmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLjAeFw0wNTA1MTMx
1313
+ MDI3MTdaFw0xNTAzMjIxMDI3MTdaMIG3MT8wPQYDVQQDDDZUw5xSS1RSVVNUIEVsZWt0cm9uaWsg
1314
+ U2VydGlmaWthIEhpem1ldCBTYcSfbGF5xLFjxLFzxLExCzAJBgNVBAYMAlRSMQ8wDQYDVQQHDAZB
1315
+ TktBUkExVjBUBgNVBAoMTShjKSAyMDA1IFTDnFJLVFJVU1QgQmlsZ2kgxLBsZXRpxZ9pbSB2ZSBC
1316
+ aWxpxZ9pbSBHw7x2ZW5sacSfaSBIaXptZXRsZXJpIEEuxZ4uMIIBIjANBgkqhkiG9w0BAQEFAAOC
1317
+ AQ8AMIIBCgKCAQEAylIF1mMD2Bxf3dJ7XfIMYGFbazt0K3gNfUW9InTojAPBxhEqPZW8qZSwu5GX
1318
+ yGl8hMW0kWxsE2qkVa2kheiVfrMArwDCBRj1cJ02i67L5BuBf5OI+2pVu32Fks66WJ/bMsW9Xe8i
1319
+ Si9BB35JYbOG7E6mQW6EvAPs9TscyB/C7qju6hJKjRTP8wrgUDn5CDX4EVmt5yLqS8oUBt5CurKZ
1320
+ 8y1UiBAG6uEaPj1nH/vO+3yC6BFdSsG5FOpU2WabfIl9BJpiyelSPJ6c79L1JuTm5Rh8i27fbMx4
1321
+ W09ysstcP4wFjdFMjK2Sx+F4f2VsSQZQLJ4ywtdKxnWKWU51b0dewQIDAQABoxAwDjAMBgNVHRME
1322
+ BTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQAV9VX/N5aAWSGk/KEVTCD21F/aAyT8z5Aa9CEKmu46
1323
+ sWrv7/hg0Uw2ZkUd82YCdAR7kjCo3gp2D++Vbr3JN+YaDayJSFvMgzbC9UZcWYJWtNX+I7TYVBxE
1324
+ q8Sn5RTOPEFhfEPmzcSBCYsk+1Ql1haolgxnB2+zUEfjHCQo3SqYpGH+2+oSN7wBGjSFvW5P55Fy
1325
+ B0SFHljKVETd96y5y4khctuPwGkplyqjrhgjlxxBKot8KsF8kOipKMDTkcatKIdAaLX/7KfS0zgY
1326
+ nNN9aV3wxqUeJBujR/xpB2jn5Jq07Q+hh4cCzofSSE7hvP/L8XKSRGQDJereW26fyfJOrN3H
1327
+ -----END CERTIFICATE-----
1328
+
1329
+ TURKTRUST Certificate Services Provider Root 2
1330
+ ==============================================
1331
+ -----BEGIN CERTIFICATE-----
1332
+ MIIEPDCCAySgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBvjE/MD0GA1UEAww2VMOcUktUUlVTVCBF
1333
+ bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEP
1334
+ MA0GA1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUg
1335
+ QmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgS2FzxLFtIDIwMDUwHhcN
1336
+ MDUxMTA3MTAwNzU3WhcNMTUwOTE2MTAwNzU3WjCBvjE/MD0GA1UEAww2VMOcUktUUlVTVCBFbGVr
1337
+ dHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEPMA0G
1338
+ A1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmls
1339
+ acWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgS2FzxLFtIDIwMDUwggEiMA0G
1340
+ CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCpNn7DkUNMwxmYCMjHWHtPFoylzkkBH3MOrHUTpvqe
1341
+ LCDe2JAOCtFp0if7qnefJ1Il4std2NiDUBd9irWCPwSOtNXwSadktx4uXyCcUHVPr+G1QRT0mJKI
1342
+ x+XlZEdhR3n9wFHxwZnn3M5q+6+1ATDcRhzviuyV79z/rxAc653YsKpqhRgNF8k+v/Gb0AmJQv2g
1343
+ QrSdiVFVKc8bcLyEVK3BEx+Y9C52YItdP5qtygy/p1Zbj3e41Z55SZI/4PGXJHpsmxcPbe9TmJEr
1344
+ 5A++WXkHeLuXlfSfadRYhwqp48y2WBmfJiGxxFmNskF1wK1pzpwACPI2/z7woQ8arBT9pmAPAgMB
1345
+ AAGjQzBBMB0GA1UdDgQWBBTZN7NOBf3Zz58SFq62iS/rJTqIHDAPBgNVHQ8BAf8EBQMDBwYAMA8G
1346
+ A1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAHJglrfJ3NgpXiOFX7KzLXb7iNcX/ntt
1347
+ Rbj2hWyfIvwqECLsqrkw9qtY1jkQMZkpAL2JZkH7dN6RwRgLn7Vhy506vvWolKMiVW4XSf/SKfE4
1348
+ Jl3vpao6+XF75tpYHdN0wgH6PmlYX63LaL4ULptswLbcoCb6dxriJNoaN+BnrdFzgw2lGh1uEpJ+
1349
+ hGIAF728JRhX8tepb1mIvDS3LoV4nZbcFMMsilKbloxSZj2GFotHuFEJjOp9zYhys2AzsfAKRO8P
1350
+ 9Qk3iCQOLGsgOqL6EfJANZxEaGM7rDNvY7wsu/LSy3Z9fYjYHcgFHW68lKlmjHdxx/qR+i9Rnuk5
1351
+ UrbnBEI=
1352
+ -----END CERTIFICATE-----
1353
+
1354
+ SwissSign Gold CA - G2
1355
+ ======================
1356
+ -----BEGIN CERTIFICATE-----
1357
+ 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
1383
+ -----END CERTIFICATE-----
1384
+
1385
+ SwissSign Silver CA - G2
1386
+ ========================
1387
+ -----BEGIN CERTIFICATE-----
1388
+ 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
1414
+ -----END CERTIFICATE-----
1415
+
1416
+ GeoTrust Primary Certification Authority
1417
+ ========================================
1418
+ -----BEGIN CERTIFICATE-----
1419
+ MIIDfDCCAmSgAwIBAgIQGKy1av1pthU6Y2yv2vrEoTANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQG
1420
+ EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UEAxMoR2VvVHJ1c3QgUHJpbWFyeSBD
1421
+ ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjExMjcwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMFgx
1422
+ CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTEwLwYDVQQDEyhHZW9UcnVzdCBQ
1423
+ cmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
1424
+ CgKCAQEAvrgVe//UfH1nrYNke8hCUy3f9oQIIGHWAVlqnEQRr+92/ZV+zmEwu3qDXwK9AWbK7hWN
1425
+ b6EwnL2hhZ6UOvNWiAAxz9juapYC2e0DjPt1befquFUWBRaa9OBesYjAZIVcFU2Ix7e64HXprQU9
1426
+ nceJSOC7KMgD4TCTZF5SwFlwIjVXiIrxlQqD17wxcwE07e9GceBrAqg1cmuXm2bgyxx5X9gaBGge
1427
+ RwLmnWDiNpcB3841kt++Z8dtd1k7j53WkBWUvEI0EME5+bEnPn7WinXFsq+W06Lem+SYvn3h6YGt
1428
+ tm/81w7a4DSwDRp35+MImO9Y+pyEtzavwt+s0vQQBnBxNQIDAQABo0IwQDAPBgNVHRMBAf8EBTAD
1429
+ AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQULNVQQZcVi/CPNmFbSvtr2ZnJM5IwDQYJKoZI
1430
+ hvcNAQEFBQADggEBAFpwfyzdtzRP9YZRqSa+S7iq8XEN3GHHoOo0Hnp3DwQ16CePbJC/kRYkRj5K
1431
+ Ts4rFtULUh38H2eiAkUxT87z+gOneZ1TatnaYzr4gNfTmeGl4b7UVXGYNTq+k+qurUKykG/g/CFN
1432
+ NWMziUnWm07Kx+dOCQD32sfvmWKZd7aVIl6KoKv0uHiYyjgZmclynnjNS6yvGaBzEi38wkG6gZHa
1433
+ Floxt/m0cYASSJlyc1pZU8FjUjPtp8nSOQJw+uCxQmYpqptR7TBUIhRf2asdweSU8Pj1K/fqynhG
1434
+ 1riR/aYNKxoUAT6A8EKglQdebc3MS6RFjasS6LPeWuWgfOgPIh1a6Vk=
1435
+ -----END CERTIFICATE-----
1436
+
1437
+ thawte Primary Root CA
1438
+ ======================
1439
+ -----BEGIN CERTIFICATE-----
1440
+ MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCBqTELMAkGA1UE
1441
+ BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2
1442
+ aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv
1443
+ cml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3
1444
+ MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwg
1445
+ SW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMv
1446
+ KGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMT
1447
+ FnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCs
1448
+ oPD7gFnUnMekz52hWXMJEEUMDSxuaPFsW0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ
1449
+ 1CRfBsDMRJSUjQJib+ta3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGc
1450
+ q/gcfomk6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6Sk/K
1451
+ aAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94JNqR32HuHUETVPm4p
1452
+ afs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYD
1453
+ VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XPr87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUF
1454
+ AAOCAQEAeRHAS7ORtvzw6WfUDW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeE
1455
+ uzLlQRHAd9mzYJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX
1456
+ xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2/qxAeeWsEG89
1457
+ jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/LHbTY5xZ3Y+m4Q6gLkH3LpVH
1458
+ z7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7jVaMaA==
1459
+ -----END CERTIFICATE-----
1460
+
1461
+ VeriSign Class 3 Public Primary Certification Authority - G5
1462
+ ============================================================
1463
+ -----BEGIN CERTIFICATE-----
1464
+ MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCByjELMAkGA1UE
1465
+ BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO
1466
+ ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk
1467
+ IHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRp
1468
+ ZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCB
1469
+ yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2ln
1470
+ biBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBh
1471
+ dXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmlt
1472
+ YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
1473
+ ggEKAoIBAQCvJAgIKXo1nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKz
1474
+ j/i5Vbext0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIzSdhD
1475
+ Y2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQGBO+QueQA5N06tRn/
1476
+ Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+rCpSx4/VBEnkjWNHiDxpg8v+R70r
1477
+ fk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/
1478
+ BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2Uv
1479
+ Z2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy
1480
+ aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqG
1481
+ SIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzEp6B4Eq1iDkVwZMXnl2YtmAl+
1482
+ X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKE
1483
+ KQsTb47bDN0lAtukixlE0kF6BWlKWE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiC
1484
+ Km0oHw0LxOXnGiYZ4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vE
1485
+ ZV8NhnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq
1486
+ -----END CERTIFICATE-----
1487
+
1488
+ SecureTrust CA
1489
+ ==============
1490
+ -----BEGIN CERTIFICATE-----
1491
+ MIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBIMQswCQYDVQQG
1492
+ EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xFzAVBgNVBAMTDlNlY3VyZVRy
1493
+ dXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIzMTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAe
1494
+ BgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCC
1495
+ ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQX
1496
+ OZEzZum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO0gMdA+9t
1497
+ DWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIaowW8xQmxSPmjL8xk037uH
1498
+ GFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b
1499
+ 01k/unK8RCSc43Oz969XL0Imnal0ugBS8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmH
1500
+ ursCAwEAAaOBnTCBmjATBgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/
1501
+ BAUwAwEB/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCegJYYj
1502
+ aHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ
1503
+ KoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt36Z3q059c4EVlew3KW+JwULKUBRSu
1504
+ SceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHf
1505
+ mbx8IVQr5Fiiu1cprp6poxkmD5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZ
1506
+ nMUFdAvnZyPSCPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR
1507
+ 3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE=
1508
+ -----END CERTIFICATE-----
1509
+
1510
+ Secure Global CA
1511
+ ================
1512
+ -----BEGIN CERTIFICATE-----
1513
+ MIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQG
1514
+ EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBH
1515
+ bG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkxMjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEg
1516
+ MB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwg
1517
+ Q0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jx
1518
+ YDiJiQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa/FHtaMbQ
1519
+ bqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJjnIFHovdRIWCQtBJwB1g
1520
+ 8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnIHmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYV
1521
+ HDGA76oYa8J719rO+TMg1fW9ajMtgQT7sFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi
1522
+ 0XPnj3pDAgMBAAGjgZ0wgZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud
1523
+ EwEB/wQFMAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCswKaAn
1524
+ oCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsGAQQBgjcVAQQDAgEA
1525
+ MA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0LURYD7xh8yOOvaliTFGCRsoTciE6+
1526
+ OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXOH0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cn
1527
+ CDpOGR86p1hcF895P4vkp9MmI50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/5
1528
+ 3CYNv6ZHdAbYiNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc
1529
+ f8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW
1530
+ -----END CERTIFICATE-----
1531
+
1532
+ COMODO Certification Authority
1533
+ ==============================
1534
+ -----BEGIN CERTIFICATE-----
1535
+ MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCBgTELMAkGA1UE
1536
+ BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG
1537
+ A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNVBAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1
1538
+ dGhvcml0eTAeFw0wNjEyMDEwMDAwMDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEb
1539
+ MBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFD
1540
+ T01PRE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0aG9yaXR5
1541
+ MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3UcEbVASY06m/weaKXTuH
1542
+ +7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI2GqGd0S7WWaXUF601CxwRM/aN5VCaTww
1543
+ xHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV
1544
+ 4EajcNxo2f8ESIl33rXp+2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA
1545
+ 1KGzqSX+DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5OnKVI
1546
+ rLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW/zAOBgNVHQ8BAf8E
1547
+ BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6gPKA6hjhodHRwOi8vY3JsLmNvbW9k
1548
+ b2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOC
1549
+ AQEAPpiem/Yb6dc5t3iuHXIYSdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CP
1550
+ OGEIqB6BCsAvIC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/
1551
+ RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4zJVSk/BwJVmc
1552
+ IGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5ddBA6+C4OmF4O5MBKgxTMVBbkN
1553
+ +8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IBZQ==
1554
+ -----END CERTIFICATE-----
1555
+
1556
+ Network Solutions Certificate Authority
1557
+ =======================================
1558
+ -----BEGIN CERTIFICATE-----
1559
+ MIID5jCCAs6gAwIBAgIQV8szb8JcFuZHFhfjkDFo4DANBgkqhkiG9w0BAQUFADBiMQswCQYDVQQG
1560
+ EwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMuMTAwLgYDVQQDEydOZXR3b3Jr
1561
+ IFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDYxMjAxMDAwMDAwWhcNMjkxMjMx
1562
+ MjM1OTU5WjBiMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMu
1563
+ MTAwLgYDVQQDEydOZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G
1564
+ CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkvH6SMG3G2I4rC7xGzuAnlt7e+foS0zwzc7MEL7xx
1565
+ jOWftiJgPl9dzgn/ggwbmlFQGiaJ3dVhXRncEg8tCqJDXRfQNJIg6nPPOCwGJgl6cvf6UDL4wpPT
1566
+ aaIjzkGxzOTVHzbRijr4jGPiFFlp7Q3Tf2vouAPlT2rlmGNpSAW+Lv8ztumXWWn4Zxmuk2GWRBXT
1567
+ crA/vGp97Eh/jcOrqnErU2lBUzS1sLnFBgrEsEX1QV1uiUV7PTsmjHTC5dLRfbIR1PtYMiKagMnc
1568
+ /Qzpf14Dl847ABSHJ3A4qY5usyd2mFHgBeMhqxrVhSI8KbWaFsWAqPS7azCPL0YCorEMIuDTAgMB
1569
+ AAGjgZcwgZQwHQYDVR0OBBYEFCEwyfsA106Y2oeqKtCnLrFAMadMMA4GA1UdDwEB/wQEAwIBBjAP
1570
+ BgNVHRMBAf8EBTADAQH/MFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwubmV0c29sc3NsLmNv
1571
+ bS9OZXR3b3JrU29sdXRpb25zQ2VydGlmaWNhdGVBdXRob3JpdHkuY3JsMA0GCSqGSIb3DQEBBQUA
1572
+ A4IBAQC7rkvnt1frf6ott3NHhWrB5KUd5Oc86fRZZXe1eltajSU24HqXLjjAV2CDmAaDn7l2em5Q
1573
+ 4LqILPxFzBiwmZVRDuwduIj/h1AcgsLj4DKAv6ALR8jDMe+ZZzKATxcheQxpXN5eNK4CtSbqUN9/
1574
+ GGUsyfJj4akH/nxxH2szJGoeBfcFaMBqEssuXmHLrijTfsK0ZpEmXzwuJF/LWA/rKOyvEZbz3Htv
1575
+ wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHNpGxlaKFJdlxD
1576
+ ydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey
1577
+ -----END CERTIFICATE-----
1578
+
1579
+ WellsSecure Public Root Certificate Authority
1580
+ =============================================
1581
+ -----BEGIN CERTIFICATE-----
1582
+ MIIEvTCCA6WgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoM
1583
+ F1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYw
1584
+ NAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcN
1585
+ MDcxMjEzMTcwNzU0WhcNMjIxMjE0MDAwNzU0WjCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dl
1586
+ bGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYD
1587
+ VQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G
1588
+ CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDub7S9eeKPCCGeOARBJe+rWxxTkqxtnt3CxC5FlAM1
1589
+ iGd0V+PfjLindo8796jE2yljDpFoNoqXjopxaAkH5OjUDk/41itMpBb570OYj7OeUt9tkTmPOL13
1590
+ i0Nj67eT/DBMHAGTthP796EfvyXhdDcsHqRePGj4S78NuR4uNuip5Kf4D8uCdXw1LSLWwr8L87T8
1591
+ bJVhHlfXBIEyg1J55oNjz7fLY4sR4r1e6/aN7ZVyKLSsEmLpSjPmgzKuBXWVvYSV2ypcm44uDLiB
1592
+ K0HmOFafSZtsdvqKXfcBeYF8wYNABf5x/Qw/zE5gCQ5lRxAvAcAFP4/4s0HvWkJ+We/SlwxlAgMB
1593
+ AAGjggE0MIIBMDAPBgNVHRMBAf8EBTADAQH/MDkGA1UdHwQyMDAwLqAsoCqGKGh0dHA6Ly9jcmwu
1594
+ cGtpLndlbGxzZmFyZ28uY29tL3dzcHJjYS5jcmwwDgYDVR0PAQH/BAQDAgHGMB0GA1UdDgQWBBQm
1595
+ lRkQ2eihl5H/3BnZtQQ+0nMKajCBsgYDVR0jBIGqMIGngBQmlRkQ2eihl5H/3BnZtQQ+0nMKaqGB
1596
+ i6SBiDCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRww
1597
+ GgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMg
1598
+ Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHmCAQEwDQYJKoZIhvcNAQEFBQADggEBALkVsUSRzCPI
1599
+ K0134/iaeycNzXK7mQDKfGYZUMbVmO2rvwNa5U3lHshPcZeG1eMd/ZDJPHV3V3p9+N701NX3leZ0
1600
+ bh08rnyd2wIDBSxxSyU+B+NemvVmFymIGjifz6pBA4SXa5M4esowRBskRDPQ5NHcKDj0E0M1NSlj
1601
+ qHyita04pO2t/caaH/+Xc/77szWnk4bGdpEA5qxRFsQnMlzbc9qlk1eOPm01JghZ1edE13YgY+es
1602
+ E2fDbbFwRnzVlhE9iW9dqKHrjQrawx0zbKPqZxmamX9LPYNRKh3KL4YMon4QLSvUFpULB6ouFJJJ
1603
+ tylv2G0xffX8oRAHh84vWdw+WNs=
1604
+ -----END CERTIFICATE-----
1605
+
1606
+ COMODO ECC Certification Authority
1607
+ ==================================
1608
+ -----BEGIN CERTIFICATE-----
1609
+ MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTELMAkGA1UEBhMC
1610
+ R0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UE
1611
+ ChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBB
1612
+ dXRob3JpdHkwHhcNMDgwMzA2MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0Ix
1613
+ GzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR
1614
+ Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRo
1615
+ b3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSRFtSrYpn1PlILBs5BAH+X
1616
+ 4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0JcfRK9ChQtP6IHG4/bC8vCVlbpVsLM5ni
1617
+ wz2J+Wos77LTBumjQjBAMB0GA1UdDgQWBBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8E
1618
+ BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VG
1619
+ FAkK+qDmfQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdvGDeA
1620
+ U/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY=
1621
+ -----END CERTIFICATE-----
1622
+
1623
+ IGC/A
1624
+ =====
1625
+ -----BEGIN CERTIFICATE-----
1626
+ MIIEAjCCAuqgAwIBAgIFORFFEJQwDQYJKoZIhvcNAQEFBQAwgYUxCzAJBgNVBAYTAkZSMQ8wDQYD
1627
+ VQQIEwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVE
1628
+ Q1NTSTEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZy
1629
+ MB4XDTAyMTIxMzE0MjkyM1oXDTIwMTAxNzE0MjkyMlowgYUxCzAJBgNVBAYTAkZSMQ8wDQYDVQQI
1630
+ EwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVEQ1NT
1631
+ STEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZyMIIB
1632
+ IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsh/R0GLFMzvABIaIs9z4iPf930Pfeo2aSVz2
1633
+ TqrMHLmh6yeJ8kbpO0px1R2OLc/mratjUMdUC24SyZA2xtgv2pGqaMVy/hcKshd+ebUyiHDKcMCW
1634
+ So7kVc0dJ5S/znIq7Fz5cyD+vfcuiWe4u0dzEvfRNWk68gq5rv9GQkaiv6GFGvm/5P9JhfejcIYy
1635
+ HF2fYPepraX/z9E0+X1bF8bc1g4oa8Ld8fUzaJ1O/Id8NhLWo4DoQw1VYZTqZDdH6nfK0LJYBcNd
1636
+ frGoRpAxVs5wKpayMLh35nnAvSk7/ZR3TL0gzUEl4C7HG7vupARB0l2tEmqKm0f7yd1GQOGdPDPQ
1637
+ tQIDAQABo3cwdTAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIBRjAVBgNVHSAEDjAMMAoGCCqB
1638
+ egF5AQEBMB0GA1UdDgQWBBSjBS8YYFDCiQrdKyFP/45OqDAxNjAfBgNVHSMEGDAWgBSjBS8YYFDC
1639
+ iQrdKyFP/45OqDAxNjANBgkqhkiG9w0BAQUFAAOCAQEABdwm2Pp3FURo/C9mOnTgXeQp/wYHE4RK
1640
+ q89toB9RlPhJy3Q2FLwV3duJL92PoF189RLrn544pEfMs5bZvpwlqwN+Mw+VgQ39FuCIvjfwbF3Q
1641
+ MZsyK10XZZOYYLxuj7GoPB7ZHPOpJkL5ZB3C55L29B5aqhlSXa/oovdgoPaN8In1buAKBQGVyYsg
1642
+ Crpa/JosPL3Dt8ldeCUFP1YUmwza+zpI/pdpXsoQhvdOlgQITeywvl3cO45Pwf2aNjSaTFR+FwNI
1643
+ lQgRHAdvhQh+XU3Endv7rs6y0bO4g2wdsrN58dhwmX7wEwLOXt1R0982gaEbeC9xs/FZTEYYKKuF
1644
+ 0mBWWg==
1645
+ -----END CERTIFICATE-----
1646
+
1647
+ Security Communication EV RootCA1
1648
+ =================================
1649
+ -----BEGIN CERTIFICATE-----
1650
+ MIIDfTCCAmWgAwIBAgIBADANBgkqhkiG9w0BAQUFADBgMQswCQYDVQQGEwJKUDElMCMGA1UEChMc
1651
+ U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEqMCgGA1UECxMhU2VjdXJpdHkgQ29tbXVuaWNh
1652
+ dGlvbiBFViBSb290Q0ExMB4XDTA3MDYwNjAyMTIzMloXDTM3MDYwNjAyMTIzMlowYDELMAkGA1UE
1653
+ BhMCSlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xKjAoBgNVBAsTIVNl
1654
+ Y3VyaXR5IENvbW11bmljYXRpb24gRVYgUm9vdENBMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
1655
+ AQoCggEBALx/7FebJOD+nLpCeamIivqA4PUHKUPqjgo0No0c+qe1OXj/l3X3L+SqawSERMqm4miO
1656
+ /VVQYg+kcQ7OBzgtQoVQrTyWb4vVog7P3kmJPdZkLjjlHmy1V4qe70gOzXppFodEtZDkBp2uoQSX
1657
+ WHnvIEqCa4wiv+wfD+mEce3xDuS4GBPMVjZd0ZoeUWs5bmB2iDQL87PRsJ3KYeJkHcFGB7hj3R4z
1658
+ ZbOOCVVSPbW9/wfrrWFVGCypaZhKqkDFMxRldAD5kd6vA0jFQFTcD4SQaCDFkpbcLuUCRarAX1T4
1659
+ bepJz11sS6/vmsJWXMY1VkJqMF/Cq/biPT+zyRGPMUzXn0kCAwEAAaNCMEAwHQYDVR0OBBYEFDVK
1660
+ 9U2vP9eCOKyrcWUXdYydVZPmMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqG
1661
+ SIb3DQEBBQUAA4IBAQCoh+ns+EBnXcPBZsdAS5f8hxOQWsTvoMpfi7ent/HWtWS3irO4G8za+6xm
1662
+ iEHO6Pzk2x6Ipu0nUBsCMCRGef4Eh3CXQHPRwMFXGZpppSeZq51ihPZRwSzJIxXYKLerJRO1RuGG
1663
+ Av8mjMSIkh1W/hln8lXkgKNrnKt34VFxDSDbEJrbvXZ5B3eZKK2aXtqxT0QsNY6llsf9g/BYxnnW
1664
+ mHyojf6GPgcWkuF75x3sM3Z+Qi5KhfmRiWiEA4Glm5q+4zfFVKtWOxgtQaQM+ELbmaDgcm+7XeEW
1665
+ T1MKZPlO9L9OVL14bIjqv5wTJMJwaaJ/D8g8rQjJsJhAoyrniIPtd490
1666
+ -----END CERTIFICATE-----
1667
+
1668
+ OISTE WISeKey Global Root GA CA
1669
+ ===============================
1670
+ -----BEGIN CERTIFICATE-----
1671
+ MIID8TCCAtmgAwIBAgIQQT1yx/RrH4FDffHSKFTfmjANBgkqhkiG9w0BAQUFADCBijELMAkGA1UE
1672
+ BhMCQ0gxEDAOBgNVBAoTB1dJU2VLZXkxGzAZBgNVBAsTEkNvcHlyaWdodCAoYykgMjAwNTEiMCAG
1673
+ A1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBH
1674
+ bG9iYWwgUm9vdCBHQSBDQTAeFw0wNTEyMTExNjAzNDRaFw0zNzEyMTExNjA5NTFaMIGKMQswCQYD
1675
+ VQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEbMBkGA1UECxMSQ29weXJpZ2h0IChjKSAyMDA1MSIw
1676
+ IAYDVQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5
1677
+ IEdsb2JhbCBSb290IEdBIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy0+zAJs9
1678
+ Nt350UlqaxBJH+zYK7LG+DKBKUOVTJoZIyEVRd7jyBxRVVuuk+g3/ytr6dTqvirdqFEr12bDYVxg
1679
+ Asj1znJ7O7jyTmUIms2kahnBAbtzptf2w93NvKSLtZlhuAGio9RN1AU9ka34tAhxZK9w8RxrfvbD
1680
+ d50kc3vkDIzh2TbhmYsFmQvtRTEJysIA2/dyoJaqlYfQjse2YXMNdmaM3Bu0Y6Kff5MTMPGhJ9vZ
1681
+ /yxViJGg4E8HsChWjBgbl0SOid3gF27nKu+POQoxhILYQBRJLnpB5Kf+42TMwVlxSywhp1t94B3R
1682
+ LoGbw9ho972WG6xwsRYUC9tguSYBBQIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUw
1683
+ AwEB/zAdBgNVHQ4EFgQUswN+rja8sHnR3JQmthG+IbJphpQwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ
1684
+ KoZIhvcNAQEFBQADggEBAEuh/wuHbrP5wUOxSPMowB0uyQlB+pQAHKSkq0lPjz0e701vvbyk9vIm
1685
+ MMkQyh2I+3QZH4VFvbBsUfk2ftv1TDI6QU9bR8/oCy22xBmddMVHxjtqD6wU2zz0c5ypBd8A3HR4
1686
+ +vg1YFkCExh8vPtNsCBtQ7tgMHpnM1zFmdH4LTlSc/uMqpclXHLZCB6rTjzjgTGfA6b7wP4piFXa
1687
+ hNVQA7bihKOmNqoROgHhGEvWRGizPflTdISzRpFGlgC3gCy24eMQ4tui5yiPAZZiFj4A4xylNoEY
1688
+ okxSdsARo27mHbrjWr42U8U+dY+GaSlYU7Wcu2+fXMUY7N0v4ZjJ/L7fCg0=
1689
+ -----END CERTIFICATE-----
1690
+
1691
+ Microsec e-Szigno Root CA
1692
+ =========================
1693
+ -----BEGIN CERTIFICATE-----
1694
+ MIIHqDCCBpCgAwIBAgIRAMy4579OKRr9otxmpRwsDxEwDQYJKoZIhvcNAQEFBQAwcjELMAkGA1UE
1695
+ BhMCSFUxETAPBgNVBAcTCEJ1ZGFwZXN0MRYwFAYDVQQKEw1NaWNyb3NlYyBMdGQuMRQwEgYDVQQL
1696
+ EwtlLVN6aWdubyBDQTEiMCAGA1UEAxMZTWljcm9zZWMgZS1Temlnbm8gUm9vdCBDQTAeFw0wNTA0
1697
+ MDYxMjI4NDRaFw0xNzA0MDYxMjI4NDRaMHIxCzAJBgNVBAYTAkhVMREwDwYDVQQHEwhCdWRhcGVz
1698
+ dDEWMBQGA1UEChMNTWljcm9zZWMgTHRkLjEUMBIGA1UECxMLZS1Temlnbm8gQ0ExIjAgBgNVBAMT
1699
+ GU1pY3Jvc2VjIGUtU3ppZ25vIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
1700
+ AQDtyADVgXvNOABHzNuEwSFpLHSQDCHZU4ftPkNEU6+r+ICbPHiN1I2uuO/TEdyB5s87lozWbxXG
1701
+ d36hL+BfkrYn13aaHUM86tnsL+4582pnS4uCzyL4ZVX+LMsvfUh6PXX5qqAnu3jCBspRwn5mS6/N
1702
+ oqdNAoI/gqyFxuEPkEeZlApxcpMqyabAvjxWTHOSJ/FrtfX9/DAFYJLG65Z+AZHCabEeHXtTRbjc
1703
+ QR/Ji3HWVBTji1R4P770Yjtb9aPs1ZJ04nQw7wHb4dSrmZsqa/i9phyGI0Jf7Enemotb9HI6QMVJ
1704
+ PqW+jqpx62z69Rrkav17fVVA71hu5tnVvCSrwe+3AgMBAAGjggQ3MIIEMzBnBggrBgEFBQcBAQRb
1705
+ MFkwKAYIKwYBBQUHMAGGHGh0dHBzOi8vcmNhLmUtc3ppZ25vLmh1L29jc3AwLQYIKwYBBQUHMAKG
1706
+ IWh0dHA6Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNydDAPBgNVHRMBAf8EBTADAQH/MIIBcwYD
1707
+ VR0gBIIBajCCAWYwggFiBgwrBgEEAYGoGAIBAQEwggFQMCgGCCsGAQUFBwIBFhxodHRwOi8vd3d3
1708
+ LmUtc3ppZ25vLmh1L1NaU1ovMIIBIgYIKwYBBQUHAgIwggEUHoIBEABBACAAdABhAG4A+gBzAO0A
1709
+ dAB2AOEAbgB5ACAA6QByAHQAZQBsAG0AZQB6AOkAcwDpAGgAZQB6ACAA6QBzACAAZQBsAGYAbwBn
1710
+ AGEAZADhAHMA4QBoAG8AegAgAGEAIABTAHoAbwBsAGcA4QBsAHQAYQB0APMAIABTAHoAbwBsAGcA
1711
+ 4QBsAHQAYQB0AOEAcwBpACAAUwB6AGEAYgDhAGwAeQB6AGEAdABhACAAcwB6AGUAcgBpAG4AdAAg
1712
+ AGsAZQBsAGwAIABlAGwAagDhAHIAbgBpADoAIABoAHQAdABwADoALwAvAHcAdwB3AC4AZQAtAHMA
1713
+ egBpAGcAbgBvAC4AaAB1AC8AUwBaAFMAWgAvMIHIBgNVHR8EgcAwgb0wgbqggbeggbSGIWh0dHA6
1714
+ Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNybIaBjmxkYXA6Ly9sZGFwLmUtc3ppZ25vLmh1L0NO
1715
+ PU1pY3Jvc2VjJTIwZS1Temlnbm8lMjBSb290JTIwQ0EsT1U9ZS1Temlnbm8lMjBDQSxPPU1pY3Jv
1716
+ c2VjJTIwTHRkLixMPUJ1ZGFwZXN0LEM9SFU/Y2VydGlmaWNhdGVSZXZvY2F0aW9uTGlzdDtiaW5h
1717
+ cnkwDgYDVR0PAQH/BAQDAgEGMIGWBgNVHREEgY4wgYuBEGluZm9AZS1zemlnbm8uaHWkdzB1MSMw
1718
+ IQYDVQQDDBpNaWNyb3NlYyBlLVN6aWduw7MgUm9vdCBDQTEWMBQGA1UECwwNZS1TemlnbsOzIEhT
1719
+ WjEWMBQGA1UEChMNTWljcm9zZWMgS2Z0LjERMA8GA1UEBxMIQnVkYXBlc3QxCzAJBgNVBAYTAkhV
1720
+ MIGsBgNVHSMEgaQwgaGAFMegSXUWYYTbMUuE0vE3QJDvTtz3oXakdDByMQswCQYDVQQGEwJIVTER
1721
+ MA8GA1UEBxMIQnVkYXBlc3QxFjAUBgNVBAoTDU1pY3Jvc2VjIEx0ZC4xFDASBgNVBAsTC2UtU3pp
1722
+ Z25vIENBMSIwIAYDVQQDExlNaWNyb3NlYyBlLVN6aWdubyBSb290IENBghEAzLjnv04pGv2i3Gal
1723
+ HCwPETAdBgNVHQ4EFgQUx6BJdRZhhNsxS4TS8TdAkO9O3PcwDQYJKoZIhvcNAQEFBQADggEBANMT
1724
+ nGZjWS7KXHAM/IO8VbH0jgdsZifOwTsgqRy7RlRw7lrMoHfqaEQn6/Ip3Xep1fvj1KcExJW4C+FE
1725
+ aGAHQzAxQmHl7tnlJNUb3+FKG6qfx1/4ehHqE5MAyopYse7tDk2016g2JnzgOsHVV4Lxdbb9iV/a
1726
+ 86g4nzUGCM4ilb7N1fy+W955a9x6qWVmvrElWl/tftOsRm1M9DKHtCAE4Gx4sHfRhUZLphK3dehK
1727
+ yVZs15KrnfVJONJPU+NVkBHbmJbGSfI+9J8b4PeI3CVimUTYc78/MPMMNz7UwiiAc7EBt51alhQB
1728
+ S6kRnSlqLtBdgcDPsiBDxwPgN05dCtxZICU=
1729
+ -----END CERTIFICATE-----
1730
+
1731
+ Certigna
1732
+ ========
1733
+ -----BEGIN CERTIFICATE-----
1734
+ MIIDqDCCApCgAwIBAgIJAP7c4wEPyUj/MA0GCSqGSIb3DQEBBQUAMDQxCzAJBgNVBAYTAkZSMRIw
1735
+ EAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hMB4XDTA3MDYyOTE1MTMwNVoXDTI3
1736
+ MDYyOTE1MTMwNVowNDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczERMA8GA1UEAwwI
1737
+ Q2VydGlnbmEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIaPHJ1tazNHUmgh7stL7q
1738
+ XOEm7RFHYeGifBZ4QCHkYJ5ayGPhxLGWkv8YbWkj4Sti993iNi+RB7lIzw7sebYs5zRLcAglozyH
1739
+ GxnygQcPOJAZ0xH+hrTy0V4eHpbNgGzOOzGTtvKg0KmVEn2lmsxryIRWijOp5yIVUxbwzBfsV1/p
1740
+ ogqYCd7jX5xv3EjjhQsVWqa6n6xI4wmy9/Qy3l40vhx4XUJbzg4ij02Q130yGLMLLGq/jj8UEYkg
1741
+ DncUtT2UCIf3JR7VsmAA7G8qKCVuKj4YYxclPz5EIBb2JsglrgVKtOdjLPOMFlN+XPsRGgjBRmKf
1742
+ Irjxwo1p3Po6WAbfAgMBAAGjgbwwgbkwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUGu3+QTmQ
1743
+ tCRZvgHyUtVF9lo53BEwZAYDVR0jBF0wW4AUGu3+QTmQtCRZvgHyUtVF9lo53BGhOKQ2MDQxCzAJ
1744
+ BgNVBAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hggkA/tzjAQ/J
1745
+ SP8wDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG9w0BAQUFAAOCAQEA
1746
+ hQMeknH2Qq/ho2Ge6/PAD/Kl1NqV5ta+aDY9fm4fTIrv0Q8hbV6lUmPOEvjvKtpv6zf+EwLHyzs+
1747
+ ImvaYS5/1HI93TDhHkxAGYwP15zRgzB7mFncfca5DClMoTOi62c6ZYTTluLtdkVwj7Ur3vkj1klu
1748
+ PBS1xp81HlDQwY9qcEQCYsuuHWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY
1749
+ 1gkIl2PlwS6wt0QmwCbAr1UwnjvVNioZBPRcHv/PLLf/0P2HQBHVESO7SMAhqaQoLf0V+LBOK/Qw
1750
+ WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg==
1751
+ -----END CERTIFICATE-----
1752
+
1753
+ TC TrustCenter Class 2 CA II
1754
+ ============================
1755
+ -----BEGIN CERTIFICATE-----
1756
+ MIIEqjCCA5KgAwIBAgIOLmoAAQACH9dSISwRXDswDQYJKoZIhvcNAQEFBQAwdjELMAkGA1UEBhMC
1757
+ REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNVBAsTGVRDIFRydXN0Q2VudGVy
1758
+ IENsYXNzIDIgQ0ExJTAjBgNVBAMTHFRDIFRydXN0Q2VudGVyIENsYXNzIDIgQ0EgSUkwHhcNMDYw
1759
+ MTEyMTQzODQzWhcNMjUxMjMxMjI1OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1
1760
+ c3RDZW50ZXIgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQTElMCMGA1UE
1761
+ AxMcVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
1762
+ AQoCggEBAKuAh5uO8MN8h9foJIIRszzdQ2Lu+MNF2ujhoF/RKrLqk2jftMjWQ+nEdVl//OEd+DFw
1763
+ IxuInie5e/060smp6RQvkL4DUsFJzfb95AhmC1eKokKguNV/aVyQMrKXDcpK3EY+AlWJU+MaWss2
1764
+ xgdW94zPEfRMuzBwBJWl9jmM/XOBCH2JXjIeIqkiRUuwZi4wzJ9l/fzLganx4Duvo4bRierERXlQ
1765
+ Xa7pIXSSTYtZgo+U4+lK8edJsBTj9WLL1XK9H7nSn6DNqPoByNkN39r8R52zyFTfSUrxIan+GE7u
1766
+ SNQZu+995OKdy1u2bv/jzVrndIIFuoAlOMvkaZ6vQaoahPUCAwEAAaOCATQwggEwMA8GA1UdEwEB
1767
+ /wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTjq1RMgKHbVkO3kUrL84J6E1wIqzCB
1768
+ 7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRydXN0Y2VudGVyLmRlL2NybC92Mi90
1769
+ Y19jbGFzc18yX2NhX0lJLmNybIaBn2xkYXA6Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBU
1770
+ cnVzdENlbnRlciUyMENsYXNzJTIwMiUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21i
1771
+ SCxPVT1yb290Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u
1772
+ TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEAjNfffu4bgBCzg/XbEeprS6iSGNn3Bzn1LL4G
1773
+ dXpoUxUc6krtXvwjshOg0wn/9vYua0Fxec3ibf2uWWuFHbhOIprtZjluS5TmVfwLG4t3wVMTZonZ
1774
+ KNaL80VKY7f9ewthXbhtvsPcW3nS7Yblok2+XnR8au0WOB9/WIFaGusyiC2y8zl3gK9etmF1Kdsj
1775
+ TYjKUCjLhdLTEKJZbtOTVAB6okaVhgWcqRmY5TFyDADiZ9lA4CQze28suVyrZZ0srHbqNZn1l7kP
1776
+ JOzHdiEoZa5X6AeIdUpWoNIFOqTmjZKILPPy4cHGYdtBxceb9w4aUUXCYWvcZCcXjFq32nQozZfk
1777
+ vQ==
1778
+ -----END CERTIFICATE-----
1779
+
1780
+ TC TrustCenter Class 3 CA II
1781
+ ============================
1782
+ -----BEGIN CERTIFICATE-----
1783
+ MIIEqjCCA5KgAwIBAgIOSkcAAQAC5aBd1j8AUb8wDQYJKoZIhvcNAQEFBQAwdjELMAkGA1UEBhMC
1784
+ REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNVBAsTGVRDIFRydXN0Q2VudGVy
1785
+ IENsYXNzIDMgQ0ExJTAjBgNVBAMTHFRDIFRydXN0Q2VudGVyIENsYXNzIDMgQ0EgSUkwHhcNMDYw
1786
+ MTEyMTQ0MTU3WhcNMjUxMjMxMjI1OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1
1787
+ c3RDZW50ZXIgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQTElMCMGA1UE
1788
+ AxMcVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
1789
+ AQoCggEBALTgu1G7OVyLBMVMeRwjhjEQY0NVJz/GRcekPewJDRoeIMJWHt4bNwcwIi9v8Qbxq63W
1790
+ yKthoy9DxLCyLfzDlml7forkzMA5EpBCYMnMNWju2l+QVl/NHE1bWEnrDgFPZPosPIlY2C8u4rBo
1791
+ 6SI7dYnWRBpl8huXJh0obazovVkdKyT21oQDZogkAHhg8fir/gKya/si+zXmFtGt9i4S5Po1auUZ
1792
+ uV3bOx4a+9P/FRQI2AlqukWdFHlgfa9Aigdzs5OW03Q0jTo3Kd5c7PXuLjHCINy+8U9/I1LZW+Jk
1793
+ 2ZyqBwi1Rb3R0DHBq1SfqdLDYmAD8bs5SpJKPQq5ncWg/jcCAwEAAaOCATQwggEwMA8GA1UdEwEB
1794
+ /wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTUovyfs8PYA9NXXAek0CSnwPIA1DCB
1795
+ 7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRydXN0Y2VudGVyLmRlL2NybC92Mi90
1796
+ Y19jbGFzc18zX2NhX0lJLmNybIaBn2xkYXA6Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBU
1797
+ cnVzdENlbnRlciUyMENsYXNzJTIwMyUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21i
1798
+ SCxPVT1yb290Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u
1799
+ TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEANmDkcPcGIEPZIxpC8vijsrlNirTzwppVMXzE
1800
+ O2eatN9NDoqTSheLG43KieHPOh6sHfGcMrSOWXaiQYUlN6AT0PV8TtXqluJucsG7Kv5sbviRmEb8
1801
+ yRtXW+rIGjs/sFGYPAfaLFkB2otE6OF0/ado3VS6g0bsyEa1+K+XwDsJHI/OcpY9M1ZwvJbL2NV9
1802
+ IJqDnxrcOfHFcqMRA/07QlIp2+gB95tejNaNhk4Z+rwcvsUhpYeeeC422wlxo3I0+GzjBgnyXlal
1803
+ 092Y+tTmBvTwtiBjS+opvaqCZh77gaqnN60TGOaSw4HBM7uIHqHn4rS9MWwOUT1v+5ZWgOI2F9Hc
1804
+ 5A==
1805
+ -----END CERTIFICATE-----
1806
+
1807
+ TC TrustCenter Universal CA I
1808
+ =============================
1809
+ -----BEGIN CERTIFICATE-----
1810
+ MIID3TCCAsWgAwIBAgIOHaIAAQAC7LdggHiNtgYwDQYJKoZIhvcNAQEFBQAweTELMAkGA1UEBhMC
1811
+ REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxJDAiBgNVBAsTG1RDIFRydXN0Q2VudGVy
1812
+ IFVuaXZlcnNhbCBDQTEmMCQGA1UEAxMdVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBIEkwHhcN
1813
+ MDYwMzIyMTU1NDI4WhcNMjUxMjMxMjI1OTU5WjB5MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMg
1814
+ VHJ1c3RDZW50ZXIgR21iSDEkMCIGA1UECxMbVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBMSYw
1815
+ JAYDVQQDEx1UQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0EgSTCCASIwDQYJKoZIhvcNAQEBBQAD
1816
+ ggEPADCCAQoCggEBAKR3I5ZEr5D0MacQ9CaHnPM42Q9e3s9B6DGtxnSRJJZ4Hgmgm5qVSkr1YnwC
1817
+ qMqs+1oEdjneX/H5s7/zA1hV0qq34wQi0fiU2iIIAI3TfCZdzHd55yx4Oagmcw6iXSVphU9VDprv
1818
+ xrlE4Vc93x9UIuVvZaozhDrzznq+VZeujRIPFDPiUHDDSYcTvFHe15gSWu86gzOSBnWLknwSaHtw
1819
+ ag+1m7Z3W0hZneTvWq3zwZ7U10VOylY0Ibw+F1tvdwxIAUMpsN0/lm7mlaoMwCC2/T42J5zjXM9O
1820
+ gdwZu5GQfezmlwQek8wiSdeXhrYTCjxDI3d+8NzmzSQfO4ObNDqDNOMCAwEAAaNjMGEwHwYDVR0j
1821
+ BBgwFoAUkqR1LKSevoFE63n8isWVpesQdXMwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
1822
+ AYYwHQYDVR0OBBYEFJKkdSyknr6BROt5/IrFlaXrEHVzMA0GCSqGSIb3DQEBBQUAA4IBAQAo0uCG
1823
+ 1eb4e/CX3CJrO5UUVg8RMKWaTzqwOuAGy2X17caXJ/4l8lfmXpWMPmRgFVp/Lw0BxbFg/UU1z/Cy
1824
+ vwbZ71q+s2IhtNerNXxTPqYn8aEt2hojnczd7Dwtnic0XQ/CNnm8yUpiLe1r2X1BQ3y2qsrtYbE3
1825
+ ghUJGooWMNjsydZHcnhLEEYUjl8Or+zHL6sQ17bxbuyGssLoDZJz3KL0Dzq/YSMQiZxIQG5wALPT
1826
+ ujdEWBF6AmqI8Dc08BnprNRlc/ZpjGSUOnmFKbAWKwyCPwacx/0QK54PLLae4xW/2TYcuiUaUj0a
1827
+ 7CIMHOCkoj3w6DnPgcB77V0fb8XQC9eY
1828
+ -----END CERTIFICATE-----
1829
+
1830
+ Deutsche Telekom Root CA 2
1831
+ ==========================
1832
+ -----BEGIN CERTIFICATE-----
1833
+ MIIDnzCCAoegAwIBAgIBJjANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMT
1834
+ RGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEG
1835
+ A1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290IENBIDIwHhcNOTkwNzA5MTIxMTAwWhcNMTkwNzA5
1836
+ MjM1OTAwWjBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0G
1837
+ A1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBS
1838
+ b290IENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrC6M14IspFLEUha88EOQ5
1839
+ bzVdSq7d6mGNlUn0b2SjGmBmpKlAIoTZ1KXleJMOaAGtuU1cOs7TuKhCQN/Po7qCWWqSG6wcmtoI
1840
+ KyUn+WkjR/Hg6yx6m/UTAtB+NHzCnjwAWav12gz1MjwrrFDa1sPeg5TKqAyZMg4ISFZbavva4VhY
1841
+ AUlfckE8FQYBjl2tqriTtM2e66foai1SNNs671x1Udrb8zH57nGYMsRUFUQM+ZtV7a3fGAigo4aK
1842
+ Se5TBY8ZTNXeWHmb0mocQqvF1afPaA+W5OFhmHZhyJF81j4A4pFQh+GdCuatl9Idxjp9y7zaAzTV
1843
+ jlsB9WoHtxa2bkp/AgMBAAGjQjBAMB0GA1UdDgQWBBQxw3kbuvVT1xfgiXotF2wKsyudMzAPBgNV
1844
+ HRMECDAGAQH/AgEFMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAlGRZrTlk5ynr
1845
+ E/5aw4sTV8gEJPB0d8Bg42f76Ymmg7+Wgnxu1MM9756AbrsptJh6sTtU6zkXR34ajgv8HzFZMQSy
1846
+ zhfzLMdiNlXiItiJVbSYSKpk+tYcNthEeFpaIzpXl/V6ME+un2pMSyuOoAPjPuCp1NJ70rOo4nI8
1847
+ rZ7/gFnkm0W09juwzTkZmDLl6iFhkOQxIY40sfcvNUqFENrnijchvllj4PKFiDFT1FQUhXB59C4G
1848
+ dyd1Lx+4ivn+xbrYNuSD7Odlt79jWvNGr4GUN9RBjNYj1h7P9WgbRGOiWrqnNVmh5XAFmw4jV5mU
1849
+ Cm26OWMohpLzGITY+9HPBVZkVw==
1850
+ -----END CERTIFICATE-----
1851
+
1852
+ ComSign Secured CA
1853
+ ==================
1854
+ -----BEGIN CERTIFICATE-----
1855
+ MIIDqzCCApOgAwIBAgIRAMcoRwmzuGxFjB36JPU2TukwDQYJKoZIhvcNAQEFBQAwPDEbMBkGA1UE
1856
+ AxMSQ29tU2lnbiBTZWN1cmVkIENBMRAwDgYDVQQKEwdDb21TaWduMQswCQYDVQQGEwJJTDAeFw0w
1857
+ NDAzMjQxMTM3MjBaFw0yOTAzMTYxNTA0NTZaMDwxGzAZBgNVBAMTEkNvbVNpZ24gU2VjdXJlZCBD
1858
+ QTEQMA4GA1UEChMHQ29tU2lnbjELMAkGA1UEBhMCSUwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
1859
+ ggEKAoIBAQDGtWhfHZQVw6QIVS3joFd67+l0Kru5fFdJGhFeTymHDEjWaueP1H5XJLkGieQcPOqs
1860
+ 49ohgHMhCu95mGwfCP+hUH3ymBvJVG8+pSjsIQQPRbsHPaHA+iqYHU4Gk/v1iDurX8sWv+bznkqH
1861
+ 7Rnqwp9D5PGBpX8QTz7RSmKtUxvLg/8HZaWSLWapW7ha9B20IZFKF3ueMv5WJDmyVIRD9YTC2LxB
1862
+ kMyd1mja6YJQqTtoz7VdApRgFrFD2UNd3V2Hbuq7s8lr9gOUCXDeFhF6K+h2j0kQmHe5Y1yLM5d1
1863
+ 9guMsqtb3nQgJT/j8xH5h2iGNXHDHYwt6+UarA9z1YJZQIDTAgMBAAGjgacwgaQwDAYDVR0TBAUw
1864
+ AwEB/zBEBgNVHR8EPTA7MDmgN6A1hjNodHRwOi8vZmVkaXIuY29tc2lnbi5jby5pbC9jcmwvQ29t
1865
+ U2lnblNlY3VyZWRDQS5jcmwwDgYDVR0PAQH/BAQDAgGGMB8GA1UdIwQYMBaAFMFL7XC29z58ADsA
1866
+ j8c+DkWfHl3sMB0GA1UdDgQWBBTBS+1wtvc+fAA7AI/HPg5Fnx5d7DANBgkqhkiG9w0BAQUFAAOC
1867
+ AQEAFs/ukhNQq3sUnjO2QiBq1BW9Cav8cujvR3qQrFHBZE7piL1DRYHjZiM/EoZNGeQFsOY3wo3a
1868
+ BijJD4mkU6l1P7CW+6tMM1X5eCZGbxs2mPtCdsGCuY7e+0X5YxtiOzkGynd6qDwJz2w2PQ8KRUtp
1869
+ FhpFfTMDZflScZAmlaxMDPWLkz/MdXSFmLr/YnpNH4n+rr2UAJm/EaXc4HnFFgt9AmEd6oX5AhVP
1870
+ 51qJThRv4zdLhfXBPGHg/QVBspJ/wx2g0K5SZGBrGMYmnNj1ZOQ2GmKfig8+/21OGVZOIJFsnzQz
1871
+ OjRXUDpvgV4GxvU+fE6OK85lBi5d0ipTdF7Tbieejw==
1872
+ -----END CERTIFICATE-----
1873
+
1874
+ Cybertrust Global Root
1875
+ ======================
1876
+ -----BEGIN CERTIFICATE-----
1877
+ MIIDoTCCAomgAwIBAgILBAAAAAABD4WqLUgwDQYJKoZIhvcNAQEFBQAwOzEYMBYGA1UEChMPQ3li
1878
+ ZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2JhbCBSb290MB4XDTA2MTIxNTA4
1879
+ MDAwMFoXDTIxMTIxNTA4MDAwMFowOzEYMBYGA1UEChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQD
1880
+ ExZDeWJlcnRydXN0IEdsb2JhbCBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
1881
+ +Mi8vRRQZhP/8NN57CPytxrHjoXxEnOmGaoQ25yiZXRadz5RfVb23CO21O1fWLE3TdVJDm71aofW
1882
+ 0ozSJ8bi/zafmGWgE07GKmSb1ZASzxQG9Dvj1Ci+6A74q05IlG2OlTEQXO2iLb3VOm2yHLtgwEZL
1883
+ AfVJrn5GitB0jaEMAs7u/OePuGtm839EAL9mJRQr3RAwHQeWP032a7iPt3sMpTjr3kfb1V05/Iin
1884
+ 89cqdPHoWqI7n1C6poxFNcJQZZXcY4Lv3b93TZxiyWNzFtApD0mpSPCzqrdsxacwOUBdrsTiXSZT
1885
+ 8M4cIwhhqJQZugRiQOwfOHB3EgZxpzAYXSUnpQIDAQABo4GlMIGiMA4GA1UdDwEB/wQEAwIBBjAP
1886
+ BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBS2CHsNesysIEyGVjJez6tuhS1wVzA/BgNVHR8EODA2
1887
+ MDSgMqAwhi5odHRwOi8vd3d3Mi5wdWJsaWMtdHJ1c3QuY29tL2NybC9jdC9jdHJvb3QuY3JsMB8G
1888
+ A1UdIwQYMBaAFLYIew16zKwgTIZWMl7Pq26FLXBXMA0GCSqGSIb3DQEBBQUAA4IBAQBW7wojoFRO
1889
+ lZfJ+InaRcHUowAl9B8Tq7ejhVhpwjCt2BWKLePJzYFa+HMjWqd8BfP9IjsO0QbE2zZMcwSO5bAi
1890
+ 5MXzLqXZI+O4Tkogp24CJJ8iYGd7ix1yCcUxXOl5n4BHPa2hCwcUPUf/A2kaDAtE52Mlp3+yybh2
1891
+ hO0j9n0Hq0V+09+zv+mKts2oomcrUtW3ZfA5TGOgkXmTUg9U3YO7n9GPp1Nzw8v/MOx8BLjYRB+T
1892
+ X3EJIrduPuocA06dGiBh+4E37F78CkWr1+cXVdCg6mCbpvbjjFspwgZgFJ0tl0ypkxWdYcQBX0jW
1893
+ WL1WMRJOEcgh4LMRkWXbtKaIOM5V
1894
+ -----END CERTIFICATE-----
1895
+
1896
+ ePKI Root Certification Authority
1897
+ =================================
1898
+ -----BEGIN CERTIFICATE-----
1899
+ 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
1925
+ -----END CERTIFICATE-----
1926
+
1927
+ T\xc3\x9c\x42\xC4\xB0TAK UEKAE K\xC3\xB6k Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1 - S\xC3\xBCr\xC3\xBCm 3
1928
+ =============================================================================================================================
1929
+ -----BEGIN CERTIFICATE-----
1930
+ MIIFFzCCA/+gAwIBAgIBETANBgkqhkiG9w0BAQUFADCCASsxCzAJBgNVBAYTAlRSMRgwFgYDVQQH
1931
+ DA9HZWJ6ZSAtIEtvY2FlbGkxRzBFBgNVBAoMPlTDvHJraXllIEJpbGltc2VsIHZlIFRla25vbG9q
1932
+ aWsgQXJhxZ90xLFybWEgS3VydW11IC0gVMOcQsSwVEFLMUgwRgYDVQQLDD9VbHVzYWwgRWxla3Ry
1933
+ b25payB2ZSBLcmlwdG9sb2ppIEFyYcWfdMSxcm1hIEVuc3RpdMO8c8O8IC0gVUVLQUUxIzAhBgNV
1934
+ BAsMGkthbXUgU2VydGlmaWthc3lvbiBNZXJrZXppMUowSAYDVQQDDEFUw5xCxLBUQUsgVUVLQUUg
1935
+ S8O2ayBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsSAtIFPDvHLDvG0gMzAeFw0wNzA4
1936
+ MjQxMTM3MDdaFw0xNzA4MjExMTM3MDdaMIIBKzELMAkGA1UEBhMCVFIxGDAWBgNVBAcMD0dlYnpl
1937
+ IC0gS29jYWVsaTFHMEUGA1UECgw+VMO8cmtpeWUgQmlsaW1zZWwgdmUgVGVrbm9sb2ppayBBcmHF
1938
+ n3TEsXJtYSBLdXJ1bXUgLSBUw5xCxLBUQUsxSDBGBgNVBAsMP1VsdXNhbCBFbGVrdHJvbmlrIHZl
1939
+ IEtyaXB0b2xvamkgQXJhxZ90xLFybWEgRW5zdGl0w7xzw7wgLSBVRUtBRTEjMCEGA1UECwwaS2Ft
1940
+ dSBTZXJ0aWZpa2FzeW9uIE1lcmtlemkxSjBIBgNVBAMMQVTDnELEsFRBSyBVRUtBRSBLw7ZrIFNl
1941
+ cnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxIC0gU8O8csO8bSAzMIIBIjANBgkqhkiG9w0B
1942
+ AQEFAAOCAQ8AMIIBCgKCAQEAim1L/xCIOsP2fpTo6iBkcK4hgb46ezzb8R1Sf1n68yJMlaCQvEhO
1943
+ Eav7t7WNeoMojCZG2E6VQIdhn8WebYGHV2yKO7Rm6sxA/OOqbLLLAdsyv9Lrhc+hDVXDWzhXcLh1
1944
+ xnnRFDDtG1hba+818qEhTsXOfJlfbLm4IpNQp81McGq+agV/E5wrHur+R84EpW+sky58K5+eeROR
1945
+ 6Oqeyjh1jmKwlZMq5d/pXpduIF9fhHpEORlAHLpVK/swsoHvhOPc7Jg4OQOFCKlUAwUp8MmPi+oL
1946
+ hmUZEdPpCSPeaJMDyTYcIW7OjGbxmTDY17PDHfiBLqi9ggtm/oLL4eAagsNAgQIDAQABo0IwQDAd
1947
+ BgNVHQ4EFgQUvYiHyY/2pAoLquvF/pEjnatKijIwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF
1948
+ MAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAB18+kmPNOm3JpIWmgV050vQbTlswyb2zrgxvMTfvCr4
1949
+ N5EY3ATIZJkrGG2AA1nJrvhY0D7twyOfaTyGOBye79oneNGEN3GKPEs5z35FBtYt2IpNeBLWrcLT
1950
+ y9LQQfMmNkqblWwM7uXRQydmwYj3erMgbOqwaSvHIOgMA8RBBZniP+Rr+KCGgceExh/VS4ESshYh
1951
+ LBOhgLJeDEoTniDYYkCrkOpkSi+sDQESeUWoL4cZaMjihccwsnX5OD+ywJO0a+IDRM5noN+J1q2M
1952
+ dqMTw5RhK2vZbMEHCiIHhWyFJEapvj+LeISCfiQMnf2BN+MlqO02TpUsyZyQ2uypQjyttgI=
1953
+ -----END CERTIFICATE-----
1954
+
1955
+ Buypass Class 2 CA 1
1956
+ ====================
1957
+ -----BEGIN CERTIFICATE-----
1958
+ MIIDUzCCAjugAwIBAgIBATANBgkqhkiG9w0BAQUFADBLMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU
1959
+ QnV5cGFzcyBBUy05ODMxNjMzMjcxHTAbBgNVBAMMFEJ1eXBhc3MgQ2xhc3MgMiBDQSAxMB4XDTA2
1960
+ MTAxMzEwMjUwOVoXDTE2MTAxMzEwMjUwOVowSzELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBh
1961
+ c3MgQVMtOTgzMTYzMzI3MR0wGwYDVQQDDBRCdXlwYXNzIENsYXNzIDIgQ0EgMTCCASIwDQYJKoZI
1962
+ hvcNAQEBBQADggEPADCCAQoCggEBAIs8B0XY9t/mx8q6jUPFR42wWsE425KEHK8T1A9vNkYgxC7M
1963
+ cXA0ojTTNy7Y3Tp3L8DrKehc0rWpkTSHIln+zNvnma+WwajHQN2lFYxuyHyXA8vmIPLXl18xoS83
1964
+ 0r7uvqmtqEyeIWZDO6i88wmjONVZJMHCR3axiFyCO7srpgTXjAePzdVBHfCuuCkslFJgNJQ72uA4
1965
+ 0Z0zPhX0kzLFANq1KWYOOngPIVJfAuWSeyXTkh4vFZ2B5J2O6O+JzhRMVB0cgRJNcKi+EAUXfh/R
1966
+ uFdV7c27UsKwHnjCTTZoy1YmwVLBvXb3WNVyfh9EdrsAiR0WnVE1703CVu9r4Iw7DekCAwEAAaNC
1967
+ MEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUP42aWYv8e3uco684sDntkHGA1sgwDgYDVR0P
1968
+ AQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQAVGn4TirnoB6NLJzKyQJHyIdFkhb5jatLPgcIV
1969
+ 1Xp+DCmsNx4cfHZSldq1fyOhKXdlyTKdqC5Wq2B2zha0jX94wNWZUYN/Xtm+DKhQ7SLHrQVMdvvt
1970
+ 7h5HZPb3J31cKA9FxVxiXqaakZG3Uxcu3K1gnZZkOb1naLKuBctN518fV4bVIJwo+28TOPX2EZL2
1971
+ fZleHwzoq0QkKXJAPTZSr4xYkHPB7GEseaHsh7U/2k3ZIQAw3pDaDtMaSKk+hQsUi4y8QZ5q9w5w
1972
+ wDX3OaJdZtB7WZ+oRxKaJyOkLY4ng5IgodcVf/EuGO70SH8vf/GhGLWhC5SgYiAynB321O+/TIho
1973
+ -----END CERTIFICATE-----
1974
+
1975
+ Buypass Class 3 CA 1
1976
+ ====================
1977
+ -----BEGIN CERTIFICATE-----
1978
+ MIIDUzCCAjugAwIBAgIBAjANBgkqhkiG9w0BAQUFADBLMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU
1979
+ QnV5cGFzcyBBUy05ODMxNjMzMjcxHTAbBgNVBAMMFEJ1eXBhc3MgQ2xhc3MgMyBDQSAxMB4XDTA1
1980
+ MDUwOTE0MTMwM1oXDTE1MDUwOTE0MTMwM1owSzELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBh
1981
+ c3MgQVMtOTgzMTYzMzI3MR0wGwYDVQQDDBRCdXlwYXNzIENsYXNzIDMgQ0EgMTCCASIwDQYJKoZI
1982
+ hvcNAQEBBQADggEPADCCAQoCggEBAKSO13TZKWTeXx+HgJHqTjnmGcZEC4DVC69TB4sSveZn8AKx
1983
+ ifZgisRbsELRwCGoy+Gb72RRtqfPFfV0gGgEkKBYouZ0plNTVUhjP5JW3SROjvi6K//zNIqeKNc0
1984
+ n6wv1g/xpC+9UrJJhW05NfBEMJNGJPO251P7vGGvqaMU+8IXF4Rs4HyI+MkcVyzwPX6UvCWThOia
1985
+ AJpFBUJXgPROztmuOfbIUxAMZTpHe2DC1vqRycZxbL2RhzyRhkmr8w+gbCZ2Xhysm3HljbybIR6c
1986
+ 1jh+JIAVMYKWsUnTYjdbiAwKYjT+p0h+mbEwi5A3lRyoH6UsjfRVyNvdWQrCrXig9IsCAwEAAaNC
1987
+ MEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUOBTmyPCppAP0Tj4io1vy1uCtQHQwDgYDVR0P
1988
+ AQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQABZ6OMySU9E2NdFm/soT4JXJEVKirZgCFPBdy7
1989
+ pYmrEzMqnji3jG8CcmPHc3ceCQa6Oyh7pEfJYWsICCD8igWKH7y6xsL+z27sEzNxZy5p+qksP2bA
1990
+ EllNC1QCkoS72xLvg3BweMhT+t/Gxv/ciC8HwEmdMldg0/L2mSlf56oBzKwzqBwKu5HEA6BvtjT5
1991
+ htOzdlSY9EqBs1OdTUDs5XcTRa9bqh/YL0yCe/4qxFi7T/ye/QNlGioOw6UgFpRreaaiErS7GqQj
1992
+ el/wroQk5PMr+4okoyeYZdowdXb8GZHo2+ubPzK/QJcHJrrM85SFSnonk8+QQtS4Wxam58tAA915
1993
+ -----END CERTIFICATE-----
1994
+
1995
+ EBG Elektronik Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1
1996
+ ==========================================================================
1997
+ -----BEGIN CERTIFICATE-----
1998
+ MIIF5zCCA8+gAwIBAgIITK9zQhyOdAIwDQYJKoZIhvcNAQEFBQAwgYAxODA2BgNVBAMML0VCRyBF
1999
+ bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMTcwNQYDVQQKDC5FQkcg
2000
+ QmlsacWfaW0gVGVrbm9sb2ppbGVyaSB2ZSBIaXptZXRsZXJpIEEuxZ4uMQswCQYDVQQGEwJUUjAe
2001
+ Fw0wNjA4MTcwMDIxMDlaFw0xNjA4MTQwMDMxMDlaMIGAMTgwNgYDVQQDDC9FQkcgRWxla3Ryb25p
2002
+ ayBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsTE3MDUGA1UECgwuRUJHIEJpbGnFn2lt
2003
+ IFRla25vbG9qaWxlcmkgdmUgSGl6bWV0bGVyaSBBLsWeLjELMAkGA1UEBhMCVFIwggIiMA0GCSqG
2004
+ SIb3DQEBAQUAA4ICDwAwggIKAoICAQDuoIRh0DpqZhAy2DE4f6en5f2h4fuXd7hxlugTlkaDT7by
2005
+ X3JWbhNgpQGR4lvFzVcfd2NR/y8927k/qqk153nQ9dAktiHq6yOU/im/+4mRDGSaBUorzAzu8T2b
2006
+ gmmkTPiab+ci2hC6X5L8GCcKqKpE+i4stPtGmggDg3KriORqcsnlZR9uKg+ds+g75AxuetpX/dfr
2007
+ eYteIAbTdgtsApWjluTLdlHRKJ2hGvxEok3MenaoDT2/F08iiFD9rrbskFBKW5+VQarKD7JK/oCZ
2008
+ TqNGFav4c0JqwmZ2sQomFd2TkuzbqV9UIlKRcF0T6kjsbgNs2d1s/OsNA/+mgxKb8amTD8UmTDGy
2009
+ Y5lhcucqZJnSuOl14nypqZoaqsNW2xCaPINStnuWt6yHd6i58mcLlEOzrz5z+kI2sSXFCjEmN1Zn
2010
+ uqMLfdb3ic1nobc6HmZP9qBVFCVMLDMNpkGMvQQxahByCp0OLna9XvNRiYuoP1Vzv9s6xiQFlpJI
2011
+ qkuNKgPlV5EQ9GooFW5Hd4RcUXSfGenmHmMWOeMRFeNYGkS9y8RsZteEBt8w9DeiQyJ50hBs37vm
2012
+ ExH8nYQKE3vwO9D8owrXieqWfo1IhR5kX9tUoqzVegJ5a9KK8GfaZXINFHDk6Y54jzJ0fFfy1tb0
2013
+ Nokb+Clsi7n2l9GkLqq+CxnCRelwXQIDAJ3Zo2MwYTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB
2014
+ /wQEAwIBBjAdBgNVHQ4EFgQU587GT/wWZ5b6SqMHwQSny2re2kcwHwYDVR0jBBgwFoAU587GT/wW
2015
+ Z5b6SqMHwQSny2re2kcwDQYJKoZIhvcNAQEFBQADggIBAJuYml2+8ygjdsZs93/mQJ7ANtyVDR2t
2016
+ FcU22NU57/IeIl6zgrRdu0waypIN30ckHrMk2pGI6YNw3ZPX6bqz3xZaPt7gyPvT/Wwp+BVGoGgm
2017
+ zJNSroIBk5DKd8pNSe/iWtkqvTDOTLKBtjDOWU/aWR1qeqRFsIImgYZ29fUQALjuswnoT4cCB64k
2018
+ XPBfrAowzIpAoHMEwfuJJPaaHFy3PApnNgUIMbOv2AFoKuB4j3TeuFGkjGwgPaL7s9QJ/XvCgKqT
2019
+ bCmYIai7FvOpEl90tYeY8pUm3zTvilORiF0alKM/fCL414i6poyWqD1SNGKfAB5UVUJnxk1Gj7sU
2020
+ RT0KlhaOEKGXmdXTMIXM3rRyt7yKPBgpaP3ccQfuJDlq+u2lrDgv+R4QDgZxGhBM/nV+/x5XOULK
2021
+ 1+EVoVZVWRvRo68R2E7DpSvvkL/A7IITW43WciyTTo9qKd+FPNMN4KIYEsxVL0e3p5sC/kH2iExt
2022
+ 2qkBR4NkJ2IQgtYSe14DHzSpyZH+r11thie3I6p1GMog57AP14kOpmciY/SDQSsGS7tY1dHXt7kQ
2023
+ Y9iJSrSq3RZj9W6+YKH47ejWkE8axsWgKdOnIaj1Wjz3x0miIZpKlVIglnKaZsv30oZDfCK+lvm9
2024
+ AahH3eU7QPl1K5srRmSGjR70j/sHd9DqSaIcjVIUpgqT
2025
+ -----END CERTIFICATE-----
2026
+
2027
+ certSIGN ROOT CA
2028
+ ================
2029
+ -----BEGIN CERTIFICATE-----
2030
+ MIIDODCCAiCgAwIBAgIGIAYFFnACMA0GCSqGSIb3DQEBBQUAMDsxCzAJBgNVBAYTAlJPMREwDwYD
2031
+ VQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBDQTAeFw0wNjA3MDQxNzIwMDRa
2032
+ Fw0zMTA3MDQxNzIwMDRaMDsxCzAJBgNVBAYTAlJPMREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UE
2033
+ CxMQY2VydFNJR04gUk9PVCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALczuX7I
2034
+ JUqOtdu0KBuqV5Do0SLTZLrTk+jUrIZhQGpgV2hUhE28alQCBf/fm5oqrl0Hj0rDKH/v+yv6efHH
2035
+ rfAQUySQi2bJqIirr1qjAOm+ukbuW3N7LBeCgV5iLKECZbO9xSsAfsT8AzNXDe3i+s5dRdY4zTW2
2036
+ ssHQnIFKquSyAVwdj1+ZxLGt24gh65AIgoDzMKND5pCCrlUoSe1b16kQOA7+j0xbm0bqQfWwCHTD
2037
+ 0IgztnzXdN/chNFDDnU5oSVAKOp4yw4sLjmdjItuFhwvJoIQ4uNllAoEwF73XVv4EOLQunpL+943
2038
+ AAAaWyjj0pxzPjKHmKHJUS/X3qwzs08CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8B
2039
+ Af8EBAMCAcYwHQYDVR0OBBYEFOCMm9slSbPxfIbWskKHC9BroNnkMA0GCSqGSIb3DQEBBQUAA4IB
2040
+ AQA+0hyJLjX8+HXd5n9liPRyTMks1zJO890ZeUe9jjtbkw9QSSQTaxQGcu8J06Gh40CEyecYMnQ8
2041
+ SG4Pn0vU9x7Tk4ZkVJdjclDVVc/6IJMCopvDI5NOFlV2oHB5bc0hH88vLbwZ44gx+FkagQnIl6Z0
2042
+ x2DEW8xXjrJ1/RsCCdtZb3KTafcxQdaIOL+Hsr0Wefmq5L6IJd1hJyMctTEHBDa0GpC9oHRxUIlt
2043
+ vBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNwi/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7Nz
2044
+ TogVZ96edhBiIL5VaZVDADlN9u6wWk5JRFRYX0KD
2045
+ -----END CERTIFICATE-----
2046
+
2047
+ CNNIC ROOT
2048
+ ==========
2049
+ -----BEGIN CERTIFICATE-----
2050
+ MIIDVTCCAj2gAwIBAgIESTMAATANBgkqhkiG9w0BAQUFADAyMQswCQYDVQQGEwJDTjEOMAwGA1UE
2051
+ ChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1QwHhcNMDcwNDE2MDcwOTE0WhcNMjcwNDE2MDcw
2052
+ OTE0WjAyMQswCQYDVQQGEwJDTjEOMAwGA1UEChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1Qw
2053
+ ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDTNfc/c3et6FtzF8LRb+1VvG7q6KR5smzD
2054
+ o+/hn7E7SIX1mlwhIhAsxYLO2uOabjfhhyzcuQxauohV3/2q2x8x6gHx3zkBwRP9SFIhxFXf2tiz
2055
+ VHa6dLG3fdfA6PZZxU3Iva0fFNrfWEQlMhkqx35+jq44sDB7R3IJMfAw28Mbdim7aXZOV/kbZKKT
2056
+ VrdvmW7bCgScEeOAH8tjlBAKqeFkgjH5jCftppkA9nCTGPihNIaj3XrCGHn2emU1z5DrvTOTn1Or
2057
+ czvmmzQgLx3vqR1jGqCA2wMv+SYahtKNu6m+UjqHZ0gNv7Sg2Ca+I19zN38m5pIEo3/PIKe38zrK
2058
+ y5nLAgMBAAGjczBxMBEGCWCGSAGG+EIBAQQEAwIABzAfBgNVHSMEGDAWgBRl8jGtKvf33VKWCscC
2059
+ wQ7vptU7ETAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIB/jAdBgNVHQ4EFgQUZfIxrSr3991S
2060
+ lgrHAsEO76bVOxEwDQYJKoZIhvcNAQEFBQADggEBAEs17szkrr/Dbq2flTtLP1se31cpolnKOOK5
2061
+ Gv+e5m4y3R6u6jW39ZORTtpC4cMXYFDy0VwmuYK36m3knITnA3kXr5g9lNvHugDnuL8BV8F3RTIM
2062
+ O/G0HAiw/VGgod2aHRM2mm23xzy54cXZF/qD1T0VoDy7HgviyJA/qIYM/PmLXoXLT1tLYhFHxUV8
2063
+ BS9BsZ4QaRuZluBVeftOhpm4lNqGOGqTo+fLbuXf6iFViZx9fX+Y9QCJ7uOEwFyWtcVG6kbghVW2
2064
+ G8kS1sHNzYDzAgE8yGnLRUhj2JTQ7IUOO04RZfSCjKY9ri4ilAnIXOo8gV0WKgOXFlUJ24pBgp5m
2065
+ mxE=
2066
+ -----END CERTIFICATE-----
2067
+
2068
+ ApplicationCA - Japanese Government
2069
+ ===================================
2070
+ -----BEGIN CERTIFICATE-----
2071
+ MIIDoDCCAoigAwIBAgIBMTANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQGEwJKUDEcMBoGA1UEChMT
2072
+ SmFwYW5lc2UgR292ZXJubWVudDEWMBQGA1UECxMNQXBwbGljYXRpb25DQTAeFw0wNzEyMTIxNTAw
2073
+ MDBaFw0xNzEyMTIxNTAwMDBaMEMxCzAJBgNVBAYTAkpQMRwwGgYDVQQKExNKYXBhbmVzZSBHb3Zl
2074
+ cm5tZW50MRYwFAYDVQQLEw1BcHBsaWNhdGlvbkNBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
2075
+ CgKCAQEAp23gdE6Hj6UG3mii24aZS2QNcfAKBZuOquHMLtJqO8F6tJdhjYq+xpqcBrSGUeQ3DnR4
2076
+ fl+Kf5Sk10cI/VBaVuRorChzoHvpfxiSQE8tnfWuREhzNgaeZCw7NCPbXCbkcXmP1G55IrmTwcrN
2077
+ wVbtiGrXoDkhBFcsovW8R0FPXjQilbUfKW1eSvNNcr5BViCH/OlQR9cwFO5cjFW6WY2H/CPek9AE
2078
+ jP3vbb3QesmlOmpyM8ZKDQUXKi17safY1vC+9D/qDihtQWEjdnjDuGWk81quzMKq2edY3rZ+nYVu
2079
+ nyoKb58DKTCXKB28t89UKU5RMfkntigm/qJj5kEW8DOYRwIDAQABo4GeMIGbMB0GA1UdDgQWBBRU
2080
+ WssmP3HMlEYNllPqa0jQk/5CdTAOBgNVHQ8BAf8EBAMCAQYwWQYDVR0RBFIwUKROMEwxCzAJBgNV
2081
+ BAYTAkpQMRgwFgYDVQQKDA/ml6XmnKzlm73mlL/lupwxIzAhBgNVBAsMGuOCouODl+ODquOCseOD
2082
+ vOOCt+ODp+ODs0NBMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADlqRHZ3ODrs
2083
+ o2dGD/mLBqj7apAxzn7s2tGJfHrrLgy9mTLnsCTWw//1sogJhyzjVOGjprIIC8CFqMjSnHH2HZ9g
2084
+ /DgzE+Ge3Atf2hZQKXsvcJEPmbo0NI2VdMV+eKlmXb3KIXdCEKxmJj3ekav9FfBv7WxfEPjzFvYD
2085
+ io+nEhEMy/0/ecGc/WLuo89UDNErXxc+4z6/wCs+CZv+iKZ+tJIX/COUgb1up8WMwusRRdv4QcmW
2086
+ dupwX3kSa+SjB1oF7ydJzyGfikwJcGapJsErEU4z0g781mzSDjJkaP+tBXhfAx2o45CsJOAPQKdL
2087
+ rosot4LKGAfmt1t06SAZf7IbiVQ=
2088
+ -----END CERTIFICATE-----
2089
+
2090
+ GeoTrust Primary Certification Authority - G3
2091
+ =============================================
2092
+ -----BEGIN CERTIFICATE-----
2093
+ MIID/jCCAuagAwIBAgIQFaxulBmyeUtB9iepwxgPHzANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UE
2094
+ BhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA4IEdlb1RydXN0
2095
+ IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFy
2096
+ eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEczMB4XDTA4MDQwMjAwMDAwMFoXDTM3MTIwMTIz
2097
+ NTk1OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAo
2098
+ YykgMjAwOCBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMT
2099
+ LUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZI
2100
+ hvcNAQEBBQADggEPADCCAQoCggEBANziXmJYHTNXOTIz+uvLh4yn1ErdBojqZI4xmKU4kB6Yzy5j
2101
+ K/BGvESyiaHAKAxJcCGVn2TAppMSAmUmhsalifD614SgcK9PGpc/BkTVyetyEH3kMSj7HGHmKAdE
2102
+ c5IiaacDiGydY8hS2pgn5whMcD60yRLBxWeDXTPzAxHsatBT4tG6NmCUgLthY2xbF37fQJQeqw3C
2103
+ IShwiP/WJmxsYAQlTlV+fe+/lEjetx3dcI0FX4ilm/LC7urRQEFtYjgdVgbFA0dRIBn8exALDmKu
2104
+ dlW/X3e+PkkBUz2YJQN2JFodtNuJ6nnltrM7P7pMKEF/BqxqjsHQ9gUdfeZChuOl1UcCAwEAAaNC
2105
+ MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMR5yo6hTgMdHNxr
2106
+ 2zFblD4/MH8tMA0GCSqGSIb3DQEBCwUAA4IBAQAtxRPPVoB7eni9n64smefv2t+UXglpp+duaIy9
2107
+ cr5HqQ6XErhK8WTTOd8lNNTBzU6B8A8ExCSzNJbGpqow32hhc9f5joWJ7w5elShKKiePEI4ufIbE
2108
+ Ap7aDHdlDkQNkv39sxY2+hENHYwOB4lqKVb3cvTdFZx3NWZXqxNT2I7BQMXXExZacse3aQHEerGD
2109
+ AWh9jUGhlBjBJVz88P6DAod8DQ3PLghcSkANPuyBYeYk28rgDi0Hsj5W3I31QYUHSJsMC8tJP33s
2110
+ t/3LjWeJGqvtux6jAAgIFyqCXDFdRootD4abdNlF+9RAsXqqaC2Gspki4cErx5z481+oghLrGREt
2111
+ -----END CERTIFICATE-----
2112
+
2113
+ thawte Primary Root CA - G2
2114
+ ===========================
2115
+ -----BEGIN CERTIFICATE-----
2116
+ MIICiDCCAg2gAwIBAgIQNfwmXNmET8k9Jj1Xm67XVjAKBggqhkjOPQQDAzCBhDELMAkGA1UEBhMC
2117
+ VVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjE4MDYGA1UECxMvKGMpIDIwMDcgdGhhd3RlLCBJbmMu
2118
+ IC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3Qg
2119
+ Q0EgLSBHMjAeFw0wNzExMDUwMDAwMDBaFw0zODAxMTgyMzU5NTlaMIGEMQswCQYDVQQGEwJVUzEV
2120
+ MBMGA1UEChMMdGhhd3RlLCBJbmMuMTgwNgYDVQQLEy8oYykgMjAwNyB0aGF3dGUsIEluYy4gLSBG
2121
+ b3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAt
2122
+ IEcyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEotWcgnuVnfFSeIf+iha/BebfowJPDQfGAFG6DAJS
2123
+ LSKkQjnE/o/qycG+1E3/n3qe4rF8mq2nhglzh9HnmuN6papu+7qzcMBniKI11KOasf2twu8x+qi5
2124
+ 8/sIxpHR+ymVo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU
2125
+ mtgAMADna3+FGO6Lts6KDPgR4bswCgYIKoZIzj0EAwMDaQAwZgIxAN344FdHW6fmCsO99YCKlzUN
2126
+ G4k8VIZ3KMqh9HneteY4sPBlcIx/AlTCv//YoT7ZzwIxAMSNlPzcU9LcnXgWHxUzI1NS41oxXZ3K
2127
+ rr0TKUQNJ1uo52icEvdYPy5yAlejj6EULg==
2128
+ -----END CERTIFICATE-----
2129
+
2130
+ thawte Primary Root CA - G3
2131
+ ===========================
2132
+ -----BEGIN CERTIFICATE-----
2133
+ MIIEKjCCAxKgAwIBAgIQYAGXt0an6rS0mtZLL/eQ+zANBgkqhkiG9w0BAQsFADCBrjELMAkGA1UE
2134
+ BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2
2135
+ aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDggdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv
2136
+ cml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMzAeFw0w
2137
+ ODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIGuMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhh
2138
+ d3RlLCBJbmMuMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2VzIERpdmlzaW9uMTgwNgYD
2139
+ VQQLEy8oYykgMjAwOCB0aGF3dGUsIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIG
2140
+ A1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAtIEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
2141
+ MIIBCgKCAQEAsr8nLPvb2FvdeHsbnndmgcs+vHyu86YnmjSjaDFxODNi5PNxZnmxqWWjpYvVj2At
2142
+ P0LMqmsywCPLLEHd5N/8YZzic7IilRFDGF/Eth9XbAoFWCLINkw6fKXRz4aviKdEAhN0cXMKQlkC
2143
+ +BsUa0Lfb1+6a4KinVvnSr0eAXLbS3ToO39/fR8EtCab4LRarEc9VbjXsCZSKAExQGbY2SS99irY
2144
+ 7CFJXJv2eul/VTV+lmuNk5Mny5K76qxAwJ/C+IDPXfRa3M50hqY+bAtTyr2SzhkGcuYMXDhpxwTW
2145
+ vGzOW/b3aJzcJRVIiKHpqfiYnODz1TEoYRFsZ5aNOZnLwkUkOQIDAQABo0IwQDAPBgNVHRMBAf8E
2146
+ BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUrWyqlGCc7eT/+j4KdCtjA/e2Wb8wDQYJ
2147
+ KoZIhvcNAQELBQADggEBABpA2JVlrAmSicY59BDlqQ5mU1143vokkbvnRFHfxhY0Cu9qRFHqKweK
2148
+ A3rD6z8KLFIWoCtDuSWQP3CpMyVtRRooOyfPqsMpQhvfO0zAMzRbQYi/aytlryjvsvXDqmbOe1bu
2149
+ t8jLZ8HJnBoYuMTDSQPxYA5QzUbF83d597YV4Djbxy8ooAw/dyZ02SUS2jHaGh7cKUGRIjxpp7sC
2150
+ 8rZcJwOJ9Abqm+RyguOhCcHpABnTPtRwa7pxpqpYrvS76Wy274fMm7v/OeZWYdMKp8RcTGB7BXcm
2151
+ er/YB1IsYvdwY9k5vG8cwnncdimvzsUsZAReiDZuMdRAGmI0Nj81Aa6sY6A=
2152
+ -----END CERTIFICATE-----
2153
+
2154
+ GeoTrust Primary Certification Authority - G2
2155
+ =============================================
2156
+ -----BEGIN CERTIFICATE-----
2157
+ MIICrjCCAjWgAwIBAgIQPLL0SAoA4v7rJDteYD7DazAKBggqhkjOPQQDAzCBmDELMAkGA1UEBhMC
2158
+ VVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA3IEdlb1RydXN0IElu
2159
+ Yy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBD
2160
+ ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMB4XDTA3MTEwNTAwMDAwMFoXDTM4MDExODIzNTk1
2161
+ OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykg
2162
+ MjAwNyBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMTLUdl
2163
+ b1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjB2MBAGByqGSM49AgEG
2164
+ BSuBBAAiA2IABBWx6P0DFUPlrOuHNxFi79KDNlJ9RVcLSo17VDs6bl8VAsBQps8lL33KSLjHUGMc
2165
+ KiEIfJo22Av+0SbFWDEwKCXzXV2juLaltJLtbCyf691DiaI8S0iRHVDsJt/WYC69IaNCMEAwDwYD
2166
+ VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBVfNVdRVfslsq0DafwBo/q+
2167
+ EVXVMAoGCCqGSM49BAMDA2cAMGQCMGSWWaboCd6LuvpaiIjwH5HTRqjySkwCY/tsXzjbLkGTqQ7m
2168
+ ndwxHLKgpxgceeHHNgIwOlavmnRs9vuD4DPTCF+hnMJbn0bWtsuRBmOiBuczrD6ogRLQy7rQkgu2
2169
+ npaqBA+K
2170
+ -----END CERTIFICATE-----
2171
+
2172
+ VeriSign Universal Root Certification Authority
2173
+ ===============================================
2174
+ -----BEGIN CERTIFICATE-----
2175
+ MIIEuTCCA6GgAwIBAgIQQBrEZCGzEyEDDrvkEhrFHTANBgkqhkiG9w0BAQsFADCBvTELMAkGA1UE
2176
+ BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO
2177
+ ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwOCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk
2178
+ IHVzZSBvbmx5MTgwNgYDVQQDEy9WZXJpU2lnbiBVbml2ZXJzYWwgUm9vdCBDZXJ0aWZpY2F0aW9u
2179
+ IEF1dGhvcml0eTAeFw0wODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIG9MQswCQYDVQQGEwJV
2180
+ UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
2181
+ cmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
2182
+ IG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNhbCBSb290IENlcnRpZmljYXRpb24gQXV0
2183
+ aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx2E3XrEBNNti1xWb/1hajCMj
2184
+ 1mCOkdeQmIN65lgZOIzF9uVkhbSicfvtvbnazU0AtMgtc6XHaXGVHzk8skQHnOgO+k1KxCHfKWGP
2185
+ MiJhgsWHH26MfF8WIFFE0XBPV+rjHOPMee5Y2A7Cs0WTwCznmhcrewA3ekEzeOEz4vMQGn+HLL72
2186
+ 9fdC4uW/h2KJXwBL38Xd5HVEMkE6HnFuacsLdUYI0crSK5XQz/u5QGtkjFdN/BMReYTtXlT2NJ8I
2187
+ AfMQJQYXStrxHXpma5hgZqTZ79IugvHw7wnqRMkVauIDbjPTrJ9VAMf2CGqUuV/c4DPxhGD5WycR
2188
+ tPwW8rtWaoAljQIDAQABo4GyMIGvMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMG0G
2189
+ CCsGAQUFBwEMBGEwX6FdoFswWTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l0xqGrI2O
2190
+ a8PPgGrUSBgsexkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMB0GA1Ud
2191
+ DgQWBBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG9w0BAQsFAAOCAQEASvj4sAPmLGd75JR3
2192
+ Y8xuTPl9Dg3cyLk1uXBPY/ok+myDjEedO2Pzmvl2MpWRsXe8rJq+seQxIcaBlVZaDrHC1LGmWazx
2193
+ Y8u4TB1ZkErvkBYoH1quEPuBUDgMbMzxPcP1Y+Oz4yHJJDnp/RVmRvQbEdBNc6N9Rvk97ahfYtTx
2194
+ P/jgdFcrGJ2BtMQo2pSXpXDrrB2+BxHw1dvd5Yzw1TKwg+ZX4o+/vqGqvz0dtdQ46tewXDpPaj+P
2195
+ wGZsY6rp2aQW9IHRlRQOfc2VNNnSj3BzgXucfr2YYdhFh5iQxeuGMMY1v/D/w1WIg0vvBZIGcfK4
2196
+ mJO37M2CYfE45k+XmCpajQ==
2197
+ -----END CERTIFICATE-----
2198
+
2199
+ VeriSign Class 3 Public Primary Certification Authority - G4
2200
+ ============================================================
2201
+ -----BEGIN CERTIFICATE-----
2202
+ MIIDhDCCAwqgAwIBAgIQL4D+I4wOIg9IZxIokYesszAKBggqhkjOPQQDAzCByjELMAkGA1UEBhMC
2203
+ VVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3
2204
+ b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVz
2205
+ ZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmlj
2206
+ YXRpb24gQXV0aG9yaXR5IC0gRzQwHhcNMDcxMTA1MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCByjEL
2207
+ MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBU
2208
+ cnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRo
2209
+ b3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5
2210
+ IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASnVnp8
2211
+ Utpkmw4tXNherJI9/gHmGUo9FANL+mAnINmDiWn6VMaaGF5VKmTeBvaNSjutEDxlPZCIBIngMGGz
2212
+ rl0Bp3vefLK+ymVhAIau2o970ImtTR1ZmkGxvEeA3J5iw/mjgbIwga8wDwYDVR0TAQH/BAUwAwEB
2213
+ /zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEw
2214
+ HzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24u
2215
+ Y29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFLMWkf3upm7ktS5Jj4d4gYDs5bG1MAoGCCqGSM49BAMD
2216
+ A2gAMGUCMGYhDBgmYFo4e1ZC4Kf8NoRRkSAsdk1DPcQdhCPQrNZ8NQbOzWm9kA3bbEhCHQ6qQgIx
2217
+ AJw9SDkjOVgaFRJZap7v1VmyHVIsmXHNxynfGyphe3HR3vPA5Q06Sqotp9iGKt0uEA==
2218
+ -----END CERTIFICATE-----
2219
+
2220
+ NetLock Arany (Class Gold) Főtanúsítvány
2221
+ ============================================
2222
+ -----BEGIN CERTIFICATE-----
2223
+ MIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQGEwJIVTERMA8G
2224
+ A1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3MDUGA1UECwwuVGFuw7pzw610
2225
+ dsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzKTE1MDMGA1UEAwwsTmV0TG9jayBB
2226
+ cmFueSAoQ2xhc3MgR29sZCkgRsWRdGFuw7pzw610dsOhbnkwHhcNMDgxMjExMTUwODIxWhcNMjgx
2227
+ MjA2MTUwODIxWjCBpzELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MRUwEwYDVQQKDAxO
2228
+ ZXRMb2NrIEtmdC4xNzA1BgNVBAsMLlRhbsO6c8OtdHbDoW55a2lhZMOzayAoQ2VydGlmaWNhdGlv
2229
+ biBTZXJ2aWNlcykxNTAzBgNVBAMMLE5ldExvY2sgQXJhbnkgKENsYXNzIEdvbGQpIEbFkXRhbsO6
2230
+ c8OtdHbDoW55MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxCRec75LbRTDofTjl5Bu
2231
+ 0jBFHjzuZ9lk4BqKf8owyoPjIMHj9DrTlF8afFttvzBPhCf2nx9JvMaZCpDyD/V/Q4Q3Y1GLeqVw
2232
+ /HpYzY6b7cNGbIRwXdrzAZAj/E4wqX7hJ2Pn7WQ8oLjJM2P+FpD/sLj916jAwJRDC7bVWaaeVtAk
2233
+ H3B5r9s5VA1lddkVQZQBr17s9o3x/61k/iCa11zr/qYfCGSji3ZVrR47KGAuhyXoqq8fxmRGILdw
2234
+ fzzeSNuWU7c5d+Qa4scWhHaXWy+7GRWF+GmF9ZmnqfI0p6m2pgP8b4Y9VHx2BJtr+UBdADTHLpl1
2235
+ neWIA6pN+APSQnbAGwIDAKiLo0UwQzASBgNVHRMBAf8ECDAGAQH/AgEEMA4GA1UdDwEB/wQEAwIB
2236
+ BjAdBgNVHQ4EFgQUzPpnk/C2uNClwB7zU/2MU9+D15YwDQYJKoZIhvcNAQELBQADggEBAKt/7hwW
2237
+ qZw8UQCgwBEIBaeZ5m8BiFRhbvG5GK1Krf6BQCOUL/t1fC8oS2IkgYIL9WHxHG64YTjrgfpioTta
2238
+ YtOUZcTh5m2C+C8lcLIhJsFyUR+MLMOEkMNaj7rP9KdlpeuY0fsFskZ1FSNqb4VjMIDw1Z4fKRzC
2239
+ bLBQWV2QWzuoDTDPv31/zvGdg73JRm4gpvlhUbohL3u+pRVjodSVh/GeufOJ8z2FuLjbvrW5Kfna
2240
+ NwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2XjG4Kvte9nHfRCaexOYNkbQu
2241
+ dZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E=
2242
+ -----END CERTIFICATE-----
2243
+
2244
+ Staat der Nederlanden Root CA - G2
2245
+ ==================================
2246
+ -----BEGIN CERTIFICATE-----
2247
+ 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
2273
+ 66+KAQ==
2274
+ -----END CERTIFICATE-----
2275
+
2276
+ CA Disig
2277
+ ========
2278
+ -----BEGIN CERTIFICATE-----
2279
+ MIIEDzCCAvegAwIBAgIBATANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQGEwJTSzETMBEGA1UEBxMK
2280
+ QnJhdGlzbGF2YTETMBEGA1UEChMKRGlzaWcgYS5zLjERMA8GA1UEAxMIQ0EgRGlzaWcwHhcNMDYw
2281
+ MzIyMDEzOTM0WhcNMTYwMzIyMDEzOTM0WjBKMQswCQYDVQQGEwJTSzETMBEGA1UEBxMKQnJhdGlz
2282
+ bGF2YTETMBEGA1UEChMKRGlzaWcgYS5zLjERMA8GA1UEAxMIQ0EgRGlzaWcwggEiMA0GCSqGSIb3
2283
+ DQEBAQUAA4IBDwAwggEKAoIBAQCS9jHBfYj9mQGp2HvycXXxMcbzdWb6UShGhJd4NLxs/LxFWYgm
2284
+ GErENx+hSkS943EE9UQX4j/8SFhvXJ56CbpRNyIjZkMhsDxkovhqFQ4/61HhVKndBpnXmjxUizkD
2285
+ Pw/Fzsbrg3ICqB9x8y34dQjbYkzo+s7552oftms1grrijxaSfQUMbEYDXcDtab86wYqg6I7ZuUUo
2286
+ hwjstMoVvoLdtUSLLa2GDGhibYVW8qwUYzrG0ZmsNHhWS8+2rT+MitcE5eN4TPWGqvWP+j1scaMt
2287
+ ymfraHtuM6kMgiioTGohQBUgDCZbg8KpFhXAJIJdKxatymP2dACw30PEEGBWZ2NFAgMBAAGjgf8w
2288
+ gfwwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUjbJJaJ1yCCW5wCf1UJNWSEZx+Y8wDgYDVR0P
2289
+ AQH/BAQDAgEGMDYGA1UdEQQvMC2BE2Nhb3BlcmF0b3JAZGlzaWcuc2uGFmh0dHA6Ly93d3cuZGlz
2290
+ aWcuc2svY2EwZgYDVR0fBF8wXTAtoCugKYYnaHR0cDovL3d3dy5kaXNpZy5zay9jYS9jcmwvY2Ff
2291
+ ZGlzaWcuY3JsMCygKqAohiZodHRwOi8vY2EuZGlzaWcuc2svY2EvY3JsL2NhX2Rpc2lnLmNybDAa
2292
+ BgNVHSAEEzARMA8GDSuBHpGT5goAAAABAQEwDQYJKoZIhvcNAQEFBQADggEBAF00dGFMrzvY/59t
2293
+ WDYcPQuBDRIrRhCA/ec8J9B6yKm2fnQwM6M6int0wHl5QpNt/7EpFIKrIYwvF/k/Ji/1WcbvgAa3
2294
+ mkkp7M5+cTxqEEHA9tOasnxakZzArFvITV734VP/Q3f8nktnbNfzg9Gg4H8l37iYC5oyOGwwoPP/
2295
+ CBUz91BKez6jPiCp3C9WgArtQVCwyfTssuMmRAAOb54GvCKWU3BlxFAKRmukLyeBEicTXxChds6K
2296
+ ezfqwzlhA5WYOudsiCUI/HloDYd9Yvi0X/vF2Ey9WLw/Q1vUHgFNPGO+I++MzVpQuGhU+QqZMxEA
2297
+ 4Z7CRneC9VkGjCFMhwnN5ag=
2298
+ -----END CERTIFICATE-----
2299
+
2300
+ Juur-SK
2301
+ =======
2302
+ -----BEGIN CERTIFICATE-----
2303
+ MIIE5jCCA86gAwIBAgIEO45L/DANBgkqhkiG9w0BAQUFADBdMRgwFgYJKoZIhvcNAQkBFglwa2lA
2304
+ c2suZWUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKExlBUyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMRAw
2305
+ DgYDVQQDEwdKdXVyLVNLMB4XDTAxMDgzMDE0MjMwMVoXDTE2MDgyNjE0MjMwMVowXTEYMBYGCSqG
2306
+ SIb3DQEJARYJcGtpQHNrLmVlMQswCQYDVQQGEwJFRTEiMCAGA1UEChMZQVMgU2VydGlmaXRzZWVy
2307
+ aW1pc2tlc2t1czEQMA4GA1UEAxMHSnV1ci1TSzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
2308
+ ggEBAIFxNj4zB9bjMI0TfncyRsvPGbJgMUaXhvSYRqTCZUXP00B841oiqBB4M8yIsdOBSvZiF3tf
2309
+ TQou0M+LI+5PAk676w7KvRhj6IAcjeEcjT3g/1tf6mTll+g/mX8MCgkzABpTpyHhOEvWgxutr2TC
2310
+ +Rx6jGZITWYfGAriPrsfB2WThbkasLnE+w0R9vXW+RvHLCu3GFH+4Hv2qEivbDtPL+/40UceJlfw
2311
+ UR0zlv/vWT3aTdEVNMfqPxZIe5EcgEMPPbgFPtGzlc3Yyg/CQ2fbt5PgIoIuvvVoKIO5wTtpeyDa
2312
+ Tpxt4brNj3pssAki14sL2xzVWiZbDcDq5WDQn/413z8CAwEAAaOCAawwggGoMA8GA1UdEwEB/wQF
2313
+ MAMBAf8wggEWBgNVHSAEggENMIIBCTCCAQUGCisGAQQBzh8BAQEwgfYwgdAGCCsGAQUFBwICMIHD
2314
+ HoHAAFMAZQBlACAAcwBlAHIAdABpAGYAaQBrAGEAYQB0ACAAbwBuACAAdgDkAGwAagBhAHMAdABh
2315
+ AHQAdQBkACAAQQBTAC0AaQBzACAAUwBlAHIAdABpAGYAaQB0AHMAZQBlAHIAaQBtAGkAcwBrAGUA
2316
+ cwBrAHUAcwAgAGEAbABhAG0ALQBTAEsAIABzAGUAcgB0AGkAZgBpAGsAYQBhAHQAaQBkAGUAIABr
2317
+ AGkAbgBuAGkAdABhAG0AaQBzAGUAawBzMCEGCCsGAQUFBwIBFhVodHRwOi8vd3d3LnNrLmVlL2Nw
2318
+ cy8wKwYDVR0fBCQwIjAgoB6gHIYaaHR0cDovL3d3dy5zay5lZS9qdXVyL2NybC8wHQYDVR0OBBYE
2319
+ FASqekej5ImvGs8KQKcYP2/v6X2+MB8GA1UdIwQYMBaAFASqekej5ImvGs8KQKcYP2/v6X2+MA4G
2320
+ A1UdDwEB/wQEAwIB5jANBgkqhkiG9w0BAQUFAAOCAQEAe8EYlFOiCfP+JmeaUOTDBS8rNXiRTHyo
2321
+ ERF5TElZrMj3hWVcRrs7EKACr81Ptcw2Kuxd/u+gkcm2k298gFTsxwhwDY77guwqYHhpNjbRxZyL
2322
+ abVAyJRld/JXIWY7zoVAtjNjGr95HvxcHdMdkxuLDF2FvZkwMhgJkVLpfKG6/2SSmuz+Ne6ML678
2323
+ IIbsSt4beDI3poHSna9aEhbKmVv8b20OxaAehsmR0FyYgl9jDIpaq9iVpszLita/ZEuOyoqysOkh
2324
+ Mp6qqIWYNIE5ITuoOlIyPfZrN4YGWhWY3PARZv40ILcD9EEQfTmEeZZyY7aWAuVrua0ZTbvGRNs2
2325
+ yyqcjg==
2326
+ -----END CERTIFICATE-----
2327
+
2328
+ Hongkong Post Root CA 1
2329
+ =======================
2330
+ -----BEGIN CERTIFICATE-----
2331
+ MIIDMDCCAhigAwIBAgICA+gwDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoT
2332
+ DUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMB4XDTAzMDUx
2333
+ NTA1MTMxNFoXDTIzMDUxNTA0NTIyOVowRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoTDUhvbmdrb25n
2334
+ IFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMIIBIjANBgkqhkiG9w0BAQEF
2335
+ AAOCAQ8AMIIBCgKCAQEArP84tulmAknjorThkPlAj3n54r15/gK97iSSHSL22oVyaf7XPwnU3ZG1
2336
+ ApzQjVrhVcNQhrkpJsLj2aDxaQMoIIBFIi1WpztUlVYiWR8o3x8gPW2iNr4joLFutbEnPzlTCeqr
2337
+ auh0ssJlXI6/fMN4hM2eFvz1Lk8gKgifd/PFHsSaUmYeSF7jEAaPIpjhZY4bXSNmO7ilMlHIhqqh
2338
+ qZ5/dpTCpmy3QfDVyAY45tQM4vM7TG1QjMSDJ8EThFk9nnV0ttgCXjqQesBCNnLsak3c78QA3xMY
2339
+ V18meMjWCnl3v/evt3a5pQuEF10Q6m/hq5URX208o1xNg1vysxmKgIsLhwIDAQABoyYwJDASBgNV
2340
+ HRMBAf8ECDAGAQH/AgEDMA4GA1UdDwEB/wQEAwIBxjANBgkqhkiG9w0BAQUFAAOCAQEADkbVPK7i
2341
+ h9legYsCmEEIjEy82tvuJxuC52pF7BaLT4Wg87JwvVqWuspube5Gi27nKi6Wsxkz67SfqLI37pio
2342
+ l7Yutmcn1KZJ/RyTZXaeQi/cImyaT/JaFTmxcdcrUehtHJjA2Sr0oYJ71clBoiMBdDhViw+5Lmei
2343
+ IAQ32pwL0xch4I+XeTRvhEgCIDMb5jREn5Fw9IBehEPCKdJsEhTkYY2sEJCehFC78JZvRZ+K88ps
2344
+ T/oROhUVRsPNH4NbLUES7VBnQRM9IauUiqpOfMGx+6fWtScvl6tu4B3i0RwsH0Ti/L6RoZz71ilT
2345
+ c4afU9hDDl3WY4JxHYB0yvbiAmvZWg==
2346
+ -----END CERTIFICATE-----
2347
+
2348
+ SecureSign RootCA11
2349
+ ===================
2350
+ -----BEGIN CERTIFICATE-----
2351
+ MIIDbTCCAlWgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQGEwJKUDErMCkGA1UEChMi
2352
+ SmFwYW4gQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcywgSW5jLjEcMBoGA1UEAxMTU2VjdXJlU2lnbiBS
2353
+ b290Q0ExMTAeFw0wOTA0MDgwNDU2NDdaFw0yOTA0MDgwNDU2NDdaMFgxCzAJBgNVBAYTAkpQMSsw
2354
+ KQYDVQQKEyJKYXBhbiBDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzLCBJbmMuMRwwGgYDVQQDExNTZWN1
2355
+ cmVTaWduIFJvb3RDQTExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/XeqpRyQBTvL
2356
+ TJszi1oURaTnkBbR31fSIRCkF/3frNYfp+TbfPfs37gD2pRY/V1yfIw/XwFndBWW4wI8h9uuywGO
2357
+ wvNmxoVF9ALGOrVisq/6nL+k5tSAMJjzDbaTj6nU2DbysPyKyiyhFTOVMdrAG/LuYpmGYz+/3ZMq
2358
+ g6h2uRMft85OQoWPIucuGvKVCbIFtUROd6EgvanyTgp9UK31BQ1FT0Zx/Sg+U/sE2C3XZR1KG/rP
2359
+ O7AxmjVuyIsG0wCR8pQIZUyxNAYAeoni8McDWc/V1uinMrPmmECGxc0nEovMe863ETxiYAcjPitA
2360
+ bpSACW22s293bzUIUPsCh8U+iQIDAQABo0IwQDAdBgNVHQ4EFgQUW/hNT7KlhtQ60vFjmqC+CfZX
2361
+ t94wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAKCh
2362
+ OBZmLqdWHyGcBvod7bkixTgm2E5P7KN/ed5GIaGHd48HCJqypMWvDzKYC3xmKbabfSVSSUOrTC4r
2363
+ bnpwrxYO4wJs+0LmGJ1F2FXI6Dvd5+H0LgscNFxsWEr7jIhQX5Ucv+2rIrVls4W6ng+4reV6G4pQ
2364
+ Oh29Dbx7VFALuUKvVaAYga1lme++5Jy/xIWrQbJUb9wlze144o4MjQlJ3WN7WmmWAiGovVJZ6X01
2365
+ y8hSyn+B/tlr0/cR7SXf+Of5pPpyl4RTDaXQMhhRdlkUbA/r7F+AjHVDg8OFmP9Mni0N5HeDk061
2366
+ lgeLKBObjBmNQSdJQO7e5iNEOdyhIta6A/I=
2367
+ -----END CERTIFICATE-----
2368
+
2369
+ ACEDICOM Root
2370
+ =============
2371
+ -----BEGIN CERTIFICATE-----
2372
+ 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
2398
+ -----END CERTIFICATE-----
2399
+
2400
+ Microsec e-Szigno Root CA 2009
2401
+ ==============================
2402
+ -----BEGIN CERTIFICATE-----
2403
+ MIIECjCCAvKgAwIBAgIJAMJ+QwRORz8ZMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYDVQQGEwJIVTER
2404
+ MA8GA1UEBwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jv
2405
+ c2VjIGUtU3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5o
2406
+ dTAeFw0wOTA2MTYxMTMwMThaFw0yOTEyMzAxMTMwMThaMIGCMQswCQYDVQQGEwJIVTERMA8GA1UE
2407
+ BwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUt
2408
+ U3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5odTCCASIw
2409
+ DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOn4j/NjrdqG2KfgQvvPkd6mJviZpWNwrZuuyjNA
2410
+ fW2WbqEORO7hE52UQlKavXWFdCyoDh2Tthi3jCyoz/tccbna7P7ofo/kLx2yqHWH2Leh5TvPmUpG
2411
+ 0IMZfcChEhyVbUr02MelTTMuhTlAdX4UfIASmFDHQWe4oIBhVKZsTh/gnQ4H6cm6M+f+wFUoLAKA
2412
+ pxn1ntxVUwOXewdI/5n7N4okxFnMUBBjjqqpGrCEGob5X7uxUG6k0QrM1XF+H6cbfPVTbiJfyyvm
2413
+ 1HxdrtbCxkzlBQHZ7Vf8wSN5/PrIJIOV87VqUQHQd9bpEqH5GoP7ghu5sJf0dgYzQ0mg/wu1+rUC
2414
+ AwEAAaOBgDB+MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTLD8bf
2415
+ QkPMPcu1SCOhGnqmKrs0aDAfBgNVHSMEGDAWgBTLD8bfQkPMPcu1SCOhGnqmKrs0aDAbBgNVHREE
2416
+ FDASgRBpbmZvQGUtc3ppZ25vLmh1MA0GCSqGSIb3DQEBCwUAA4IBAQDJ0Q5eLtXMs3w+y/w9/w0o
2417
+ lZMEyL/azXm4Q5DwpL7v8u8hmLzU1F0G9u5C7DBsoKqpyvGvivo/C3NqPuouQH4frlRheesuCDfX
2418
+ I/OMn74dseGkddug4lQUsbocKaQY9hK6ohQU4zE1yED/t+AFdlfBHFny+L/k7SViXITwfn4fs775
2419
+ tyERzAMBVnCnEJIeGzSBHq2cGsMEPO0CYdYeBvNfOofyK/FFh+U9rNHHV4S9a67c2Pm2G2JwCz02
2420
+ yULyMtd6YebS2z3PyKnJm9zbWETXbzivf3jTo60adbocwTZ8jx5tHMN1Rq41Bab2XD0h7lbwyYIi
2421
+ LXpUq3DDfSJlgnCW
2422
+ -----END CERTIFICATE-----
2423
+
2424
+ E-Guven Kok Elektronik Sertifika Hizmet Saglayicisi
2425
+ ===================================================
2426
+ -----BEGIN CERTIFICATE-----
2427
+ MIIDtjCCAp6gAwIBAgIQRJmNPMADJ72cdpW56tustTANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQG
2428
+ EwJUUjEoMCYGA1UEChMfRWxla3Ryb25payBCaWxnaSBHdXZlbmxpZ2kgQS5TLjE8MDoGA1UEAxMz
2429
+ ZS1HdXZlbiBLb2sgRWxla3Ryb25payBTZXJ0aWZpa2EgSGl6bWV0IFNhZ2xheWljaXNpMB4XDTA3
2430
+ MDEwNDExMzI0OFoXDTE3MDEwNDExMzI0OFowdTELMAkGA1UEBhMCVFIxKDAmBgNVBAoTH0VsZWt0
2431
+ cm9uaWsgQmlsZ2kgR3V2ZW5saWdpIEEuUy4xPDA6BgNVBAMTM2UtR3V2ZW4gS29rIEVsZWt0cm9u
2432
+ aWsgU2VydGlmaWthIEhpem1ldCBTYWdsYXlpY2lzaTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
2433
+ AQoCggEBAMMSIJ6wXgBljU5Gu4Bc6SwGl9XzcslwuedLZYDBS75+PNdUMZTe1RK6UxYC6lhj71vY
2434
+ 8+0qGqpxSKPcEC1fX+tcS5yWCEIlKBHMilpiAVDV6wlTL/jDj/6z/P2douNffb7tC+Bg62nsM+3Y
2435
+ jfsSSYMAyYuXjDtzKjKzEve5TfL0TW3H5tYmNwjy2f1rXKPlSFxYvEK+A1qBuhw1DADT9SN+cTAI
2436
+ JjjcJRFHLfO6IxClv7wC90Nex/6wN1CZew+TzuZDLMN+DfIcQ2Zgy2ExR4ejT669VmxMvLz4Bcpk
2437
+ 9Ok0oSy1c+HCPujIyTQlCFzz7abHlJ+tiEMl1+E5YP6sOVkCAwEAAaNCMEAwDgYDVR0PAQH/BAQD
2438
+ AgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFJ/uRLOU1fqRTy7ZVZoEVtstxNulMA0GCSqG
2439
+ SIb3DQEBBQUAA4IBAQB/X7lTW2M9dTLn+sR0GstG30ZpHFLPqk/CaOv/gKlR6D1id4k9CnU58W5d
2440
+ F4dvaAXBlGzZXd/aslnLpRCKysw5zZ/rTt5S/wzw9JKp8mxTq5vSR6AfdPebmvEvFZ96ZDAYBzwq
2441
+ D2fK/A+JYZ1lpTzlvBNbCNvj/+27BrtqBrF6T2XGgv0enIu1De5Iu7i9qgi0+6N8y5/NkHZchpZ4
2442
+ Vwpm+Vganf2XKWDeEaaQHBkc7gGWIjQ0LpH5t8Qn0Xvmv/uARFoW5evg1Ao4vOSR49XrXMGs3xtq
2443
+ fJ7lddK2l4fbzIcrQzqECK+rPNv3PGYxhrCdU3nt+CPeQuMtgvEP5fqX
2444
+ -----END CERTIFICATE-----
2445
+
2446
+ GlobalSign Root CA - R3
2447
+ =======================
2448
+ -----BEGIN CERTIFICATE-----
2449
+ MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4GA1UECxMXR2xv
2450
+ YmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh
2451
+ bFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT
2452
+ aWduIFJvb3QgQ0EgLSBSMzETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln
2453
+ bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWt
2454
+ iHL8RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsTgHeMCOFJ
2455
+ 0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmmKPZpO/bLyCiR5Z2KYVc3
2456
+ rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zdQQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjl
2457
+ OCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZXriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2
2458
+ xmmFghcCAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE
2459
+ FI/wS3+oLkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZURUm7
2460
+ lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMpjjM5RcOO5LlXbKr8
2461
+ EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK6fBdRoyV3XpYKBovHd7NADdBj+1E
2462
+ bddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQXmcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18
2463
+ YIvDQVETI53O9zJrlAGomecsMx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7r
2464
+ kpeDMdmztcpHWD9f
2465
+ -----END CERTIFICATE-----
2466
+
2467
+ Autoridad de Certificacion Firmaprofesional CIF A62634068
2468
+ =========================================================
2469
+ -----BEGIN CERTIFICATE-----
2470
+ MIIGFDCCA/ygAwIBAgIIU+w77vuySF8wDQYJKoZIhvcNAQEFBQAwUTELMAkGA1UEBhMCRVMxQjBA
2471
+ BgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2
2472
+ MjYzNDA2ODAeFw0wOTA1MjAwODM4MTVaFw0zMDEyMzEwODM4MTVaMFExCzAJBgNVBAYTAkVTMUIw
2473
+ QAYDVQQDDDlBdXRvcmlkYWQgZGUgQ2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBB
2474
+ NjI2MzQwNjgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDD
2475
+ Utd9thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQMcas9UX4P
2476
+ B99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefGL9ItWY16Ck6WaVICqjaY
2477
+ 7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15iNA9wBj4gGFrO93IbJWyTdBSTo3OxDqqH
2478
+ ECNZXyAFGUftaI6SEspd/NYrspI8IM/hX68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyI
2479
+ plD9amML9ZMWGxmPsu2bm8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctX
2480
+ MbScyJCyZ/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirjaEbsX
2481
+ LZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/TKI8xWVvTyQKmtFLK
2482
+ bpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF6NkBiDkal4ZkQdU7hwxu+g/GvUgU
2483
+ vzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVhOSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMBIGA1Ud
2484
+ EwEB/wQIMAYBAf8CAQEwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRlzeurNR4APn7VdMActHNH
2485
+ DhpkLzCBpgYDVR0gBIGeMIGbMIGYBgRVHSAAMIGPMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmZp
2486
+ cm1hcHJvZmVzaW9uYWwuY29tL2NwczBcBggrBgEFBQcCAjBQHk4AUABhAHMAZQBvACAAZABlACAA
2487
+ bABhACAAQgBvAG4AYQBuAG8AdgBhACAANAA3ACAAQgBhAHIAYwBlAGwAbwBuAGEAIAAwADgAMAAx
2488
+ ADcwDQYJKoZIhvcNAQEFBQADggIBABd9oPm03cXF661LJLWhAqvdpYhKsg9VSytXjDvlMd3+xDLx
2489
+ 51tkljYyGOylMnfX40S2wBEqgLk9am58m9Ot/MPWo+ZkKXzR4Tgegiv/J2Wv+xYVxC5xhOW1//qk
2490
+ R71kMrv2JYSiJ0L1ILDCExARzRAVukKQKtJE4ZYm6zFIEv0q2skGz3QeqUvVhyj5eTSSPi5E6PaP
2491
+ T481PyWzOdxjKpBrIF/EUhJOlywqrJ2X3kjyo2bbwtKDlaZmp54lD+kLM5FlClrD2VQS3a/DTg4f
2492
+ Jl4N3LON7NWBcN7STyQF82xO9UxJZo3R/9ILJUFI/lGExkKvgATP0H5kSeTy36LssUzAKh3ntLFl
2493
+ osS88Zj0qnAHY7S42jtM+kAiMFsRpvAFDsYCA0irhpuF3dvd6qJ2gHN99ZwExEWN57kci57q13XR
2494
+ crHedUTnQn3iV2t93Jm8PYMo6oCTjcVMZcFwgbg4/EMxsvYDNEeyrPsiBsse3RdHHF9mudMaotoR
2495
+ saS8I8nkvof/uZS2+F0gStRf571oe2XyFR7SOqkt6dhrJKyXWERHrVkY8SFlcN7ONGCoQPHzPKTD
2496
+ KCOM/iczQ0CgFzzr6juwcqajuUpLXhZI9LK8yIySxZ2frHI2vDSANGupi5LAuBft7HZT9SQBjLMi
2497
+ 6Et8Vcad+qMUu2WFbm5PEn4KPJ2V
2498
+ -----END CERTIFICATE-----
2499
+
2500
+ Izenpe.com
2501
+ ==========
2502
+ -----BEGIN CERTIFICATE-----
2503
+ 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
2530
+ -----END CERTIFICATE-----
2531
+
2532
+ Chambers of Commerce Root - 2008
2533
+ ================================
2534
+ -----BEGIN CERTIFICATE-----
2535
+ MIIHTzCCBTegAwIBAgIJAKPaQn6ksa7aMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYDVQQGEwJFVTFD
2536
+ MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv
2537
+ bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu
2538
+ QS4xKTAnBgNVBAMTIENoYW1iZXJzIG9mIENvbW1lcmNlIFJvb3QgLSAyMDA4MB4XDTA4MDgwMTEy
2539
+ Mjk1MFoXDTM4MDczMTEyMjk1MFowga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNl
2540
+ ZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQF
2541
+ EwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJl
2542
+ cnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
2543
+ AQCvAMtwNyuAWko6bHiUfaN/Gh/2NdW928sNRHI+JrKQUrpjOyhYb6WzbZSm891kDFX29ufyIiKA
2544
+ XuFixrYp4YFs8r/lfTJqVKAyGVn+H4vXPWCGhSRv4xGzdz4gljUha7MI2XAuZPeEklPWDrCQiorj
2545
+ h40G072QDuKZoRuGDtqaCrsLYVAGUvGef3bsyw/QHg3PmTA9HMRFEFis1tPo1+XqxQEHd9ZR5gN/
2546
+ ikilTWh1uem8nk4ZcfUyS5xtYBkL+8ydddy/Js2Pk3g5eXNeJQ7KXOt3EgfLZEFHcpOrUMPrCXZk
2547
+ NNI5t3YRCQ12RcSprj1qr7V9ZS+UWBDsXHyvfuK2GNnQm05aSd+pZgvMPMZ4fKecHePOjlO+Bd5g
2548
+ D2vlGts/4+EhySnB8esHnFIbAURRPHsl18TlUlRdJQfKFiC4reRB7noI/plvg6aRArBsNlVq5331
2549
+ lubKgdaX8ZSD6e2wsWsSaR6s+12pxZjptFtYer49okQ6Y1nUCyXeG0+95QGezdIp1Z8XGQpvvwyQ
2550
+ 0wlf2eOKNcx5Wk0ZN5K3xMGtr/R5JJqyAQuxr1yW84Ay+1w9mPGgP0revq+ULtlVmhduYJ1jbLhj
2551
+ ya6BXBg14JC7vjxPNyK5fuvPnnchpj04gftI2jE9K+OJ9dC1vX7gUMQSibMjmhAxhduub+84Mxh2
2552
+ EQIDAQABo4IBbDCCAWgwEgYDVR0TAQH/BAgwBgEB/wIBDDAdBgNVHQ4EFgQU+SSsD7K1+HnA+mCI
2553
+ G8TZTQKeFxkwgeMGA1UdIwSB2zCB2IAU+SSsD7K1+HnA+mCIG8TZTQKeFxmhgbSkgbEwga4xCzAJ
2554
+ BgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNlZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNh
2555
+ bWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENh
2556
+ bWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDiC
2557
+ CQCj2kJ+pLGu2jAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUH
2558
+ AgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAJASryI1
2559
+ wqM58C7e6bXpeHxIvj99RZJe6dqxGfwWPJ+0W2aeaufDuV2I6A+tzyMP3iU6XsxPpcG1Lawk0lgH
2560
+ 3qLPaYRgM+gQDROpI9CF5Y57pp49chNyM/WqfcZjHwj0/gF/JM8rLFQJ3uIrbZLGOU8W6jx+ekbU
2561
+ RWpGqOt1glanq6B8aBMz9p0w8G8nOSQjKpD9kCk18pPfNKXG9/jvjA9iSnyu0/VU+I22mlaHFoI6
2562
+ M6taIgj3grrqLuBHmrS1RaMFO9ncLkVAO+rcf+g769HsJtg1pDDFOqxXnrN2pSB7+R5KBWIBpih1
2563
+ YJeSDW4+TTdDDZIVnBgizVGZoCkaPF+KMjNbMMeJL0eYD6MDxvbxrN8y8NmBGuScvfaAFPDRLLmF
2564
+ 9dijscilIeUcE5fuDr3fKanvNFNb0+RqE4QGtjICxFKuItLcsiFCGtpA8CnJ7AoMXOLQusxI0zcK
2565
+ zBIKinmwPQN/aUv0NCB9szTqjktk9T79syNnFQ0EuPAtwQlRPLJsFfClI9eDdOTlLsn+mCdCxqvG
2566
+ nrDQWzilm1DefhiYtUU79nm06PcaewaD+9CL2rvHvRirCG88gGtAPxkZumWK5r7VXNM21+9AUiRg
2567
+ OGcEMeyP84LG3rlV8zsxkVrctQgVrXYlCg17LofiDKYGvCYQbTed7N14jHyAxfDZd0jQ
2568
+ -----END CERTIFICATE-----
2569
+
2570
+ Global Chambersign Root - 2008
2571
+ ==============================
2572
+ -----BEGIN CERTIFICATE-----
2573
+ MIIHSTCCBTGgAwIBAgIJAMnN0+nVfSPOMA0GCSqGSIb3DQEBBQUAMIGsMQswCQYDVQQGEwJFVTFD
2574
+ MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv
2575
+ bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu
2576
+ QS4xJzAlBgNVBAMTHkdsb2JhbCBDaGFtYmVyc2lnbiBSb290IC0gMjAwODAeFw0wODA4MDExMjMx
2577
+ NDBaFw0zODA3MzExMjMxNDBaMIGsMQswCQYDVQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUg
2578
+ Y3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJ
2579
+ QTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAlBgNVBAMTHkdsb2JhbCBD
2580
+ aGFtYmVyc2lnbiBSb290IC0gMjAwODCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMDf
2581
+ VtPkOpt2RbQT2//BthmLN0EYlVJH6xedKYiONWwGMi5HYvNJBL99RDaxccy9Wglz1dmFRP+RVyXf
2582
+ XjaOcNFccUMd2drvXNL7G706tcuto8xEpw2uIRU/uXpbknXYpBI4iRmKt4DS4jJvVpyR1ogQC7N0
2583
+ ZJJ0YPP2zxhPYLIj0Mc7zmFLmY/CDNBAspjcDahOo7kKrmCgrUVSY7pmvWjg+b4aqIG7HkF4ddPB
2584
+ /gBVsIdU6CeQNR1MM62X/JcumIS/LMmjv9GYERTtY/jKmIhYF5ntRQOXfjyGHoiMvvKRhI9lNNgA
2585
+ TH23MRdaKXoKGCQwoze1eqkBfSbW+Q6OWfH9GzO1KTsXO0G2Id3UwD2ln58fQ1DJu7xsepeY7s2M
2586
+ H/ucUa6LcL0nn3HAa6x9kGbo1106DbDVwo3VyJ2dwW3Q0L9R5OP4wzg2rtandeavhENdk5IMagfe
2587
+ Ox2YItaswTXbo6Al/3K1dh3ebeksZixShNBFks4c5eUzHdwHU1SjqoI7mjcv3N2gZOnm3b2u/GSF
2588
+ HTynyQbehP9r6GsaPMWis0L7iwk+XwhSx2LE1AVxv8Rk5Pihg+g+EpuoHtQ2TS9x9o0o9oOpE9Jh
2589
+ wZG7SMA0j0GMS0zbaRL/UJScIINZc+18ofLx/d33SdNDWKBWY8o9PeU1VlnpDsogzCtLkykPAgMB
2590
+ AAGjggFqMIIBZjASBgNVHRMBAf8ECDAGAQH/AgEMMB0GA1UdDgQWBBS5CcqcHtvTbDprru1U8VuT
2591
+ BjUuXjCB4QYDVR0jBIHZMIHWgBS5CcqcHtvTbDprru1U8VuTBjUuXqGBsqSBrzCBrDELMAkGA1UE
2592
+ BhMCRVUxQzBBBgNVBAcTOk1hZHJpZCAoc2VlIGN1cnJlbnQgYWRkcmVzcyBhdCB3d3cuY2FtZXJm
2593
+ aXJtYS5jb20vYWRkcmVzcykxEjAQBgNVBAUTCUE4Mjc0MzI4NzEbMBkGA1UEChMSQUMgQ2FtZXJm
2594
+ aXJtYSBTLkEuMScwJQYDVQQDEx5HbG9iYWwgQ2hhbWJlcnNpZ24gUm9vdCAtIDIwMDiCCQDJzdPp
2595
+ 1X0jzjAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEWHGh0
2596
+ dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAICIf3DekijZBZRG
2597
+ /5BXqfEv3xoNa/p8DhxJJHkn2EaqbylZUohwEurdPfWbU1Rv4WCiqAm57OtZfMY18dwY6fFn5a+6
2598
+ ReAJ3spED8IXDneRRXozX1+WLGiLwUePmJs9wOzL9dWCkoQ10b42OFZyMVtHLaoXpGNR6woBrX/s
2599
+ dZ7LoR/xfxKxueRkf2fWIyr0uDldmOghp+G9PUIadJpwr2hsUF1Jz//7Dl3mLEfXgTpZALVza2Mg
2600
+ 9jFFCDkO9HB+QHBaP9BrQql0PSgvAm11cpUJjUhjxsYjV5KTXjXBjfkK9yydYhz2rXzdpjEetrHH
2601
+ foUm+qRqtdpjMNHvkzeyZi99Bffnt0uYlDXA2TopwZ2yUDMdSqlapskD7+3056huirRXhOukP9Du
2602
+ qqqHW2Pok+JrqNS4cnhrG+055F3Lm6qH1U9OAP7Zap88MQ8oAgF9mOinsKJknnn4SPIVqczmyETr
2603
+ P3iZ8ntxPjzxmKfFGBI/5rsoM0LpRQp8bfKGeS/Fghl9CYl8slR2iK7ewfPM4W7bMdaTrpmg7yVq
2604
+ c5iJWzouE4gev8CSlDQb4ye3ix5vQv/n6TebUB0tovkC7stYWDpxvGjjqsGvHCgfotwjZT+B6q6Z
2605
+ 09gwzxMNTxXJhLynSC34MCN32EZLeW32jO06f2ARePTpm67VVMB0gNELQp/B
2606
+ -----END CERTIFICATE-----
2607
+
2608
+ Go Daddy Root Certificate Authority - G2
2609
+ ========================================
2610
+ -----BEGIN CERTIFICATE-----
2611
+ MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT
2612
+ B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoTEUdvRGFkZHkuY29tLCBJbmMu
2613
+ MTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5
2614
+ MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6
2615
+ b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8G
2616
+ A1UEAxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI
2617
+ hvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKDE6bFIEMBO4Tx5oVJnyfq
2618
+ 9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD
2619
+ +qK+ihVqf94Lw7YZFAXK6sOoBJQ7RnwyDfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutd
2620
+ fMh8+7ArU6SSYmlRJQVhGkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMl
2621
+ NAJWJwGRtDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEAAaNC
2622
+ MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFDqahQcQZyi27/a9
2623
+ BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmXWWcDYfF+OwYxdS2hII5PZYe096ac
2624
+ vNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r
2625
+ 5N9ss4UXnT3ZJE95kTXWXwTrgIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYV
2626
+ N8Gb5DKj7Tjo2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO
2627
+ LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI4uJEvlz36hz1
2628
+ -----END CERTIFICATE-----
2629
+
2630
+ Starfield Root Certificate Authority - G2
2631
+ =========================================
2632
+ -----BEGIN CERTIFICATE-----
2633
+ MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT
2634
+ B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s
2635
+ b2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVsZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0
2636
+ eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAw
2637
+ DgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQg
2638
+ VGVjaG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZpY2F0ZSBB
2639
+ dXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL3twQP89o/8ArFv
2640
+ W59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMgnLRJdzIpVv257IzdIvpy3Cdhl+72WoTs
2641
+ bhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNk
2642
+ N3mSwOxGXn/hbVNMYq/NHwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7Nf
2643
+ ZTD4p7dNdloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0HZbU
2644
+ JtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
2645
+ AQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0GCSqGSIb3DQEBCwUAA4IBAQARWfol
2646
+ TwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjUsHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx
2647
+ 4mcujJUDJi5DnUox9g61DLu34jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUw
2648
+ F5okxBDgBPfg8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K
2649
+ pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1mMpYjn0q7pBZ
2650
+ c2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0
2651
+ -----END CERTIFICATE-----
2652
+
2653
+ Starfield Services Root Certificate Authority - G2
2654
+ ==================================================
2655
+ -----BEGIN CERTIFICATE-----
2656
+ MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMxEDAOBgNVBAgT
2657
+ B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s
2658
+ b2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVsZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRl
2659
+ IEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNV
2660
+ BAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxT
2661
+ dGFyZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2VydmljZXMg
2662
+ Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
2663
+ AQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20pOsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2
2664
+ h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm28xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4Pa
2665
+ hHQUw2eeBGg6345AWh1KTs9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLP
2666
+ LJGmpufehRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk6mFB
2667
+ rMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAwDwYDVR0TAQH/BAUw
2668
+ AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+qAdcwKziIorhtSpzyEZGDMA0GCSqG
2669
+ SIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMIbw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPP
2670
+ E95Dz+I0swSdHynVv/heyNXBve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTy
2671
+ xQGjhdByPq1zqwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd
2672
+ iEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn0q23KXB56jza
2673
+ YyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCNsSi6
2674
+ -----END CERTIFICATE-----
2675
+
2676
+ AffirmTrust Commercial
2677
+ ======================
2678
+ -----BEGIN CERTIFICATE-----
2679
+ MIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UEBhMCVVMxFDAS
2680
+ BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMB4XDTEw
2681
+ MDEyOTE0MDYwNloXDTMwMTIzMTE0MDYwNlowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly
2682
+ bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMIIBIjANBgkqhkiG9w0BAQEF
2683
+ AAOCAQ8AMIIBCgKCAQEA9htPZwcroRX1BiLLHwGy43NFBkRJLLtJJRTWzsO3qyxPxkEylFf6Eqdb
2684
+ DuKPHx6GGaeqtS25Xw2Kwq+FNXkyLbscYjfysVtKPcrNcV/pQr6U6Mje+SJIZMblq8Yrba0F8PrV
2685
+ C8+a5fBQpIs7R6UjW3p6+DM/uO+Zl+MgwdYoic+U+7lF7eNAFxHUdPALMeIrJmqbTFeurCA+ukV6
2686
+ BfO9m2kVrn1OIGPENXY6BwLJN/3HR+7o8XYdcxXyl6S1yHp52UKqK39c/s4mT6NmgTWvRLpUHhww
2687
+ MmWd5jyTXlBOeuM61G7MGvv50jeuJCqrVwMiKA1JdX+3KNp1v47j3A55MQIDAQABo0IwQDAdBgNV
2688
+ HQ4EFgQUnZPGU4teyq8/nx4P5ZmVvCT2lI8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
2689
+ AQYwDQYJKoZIhvcNAQELBQADggEBAFis9AQOzcAN/wr91LoWXym9e2iZWEnStB03TX8nfUYGXUPG
2690
+ hi4+c7ImfU+TqbbEKpqrIZcUsd6M06uJFdhrJNTxFq7YpFzUf1GO7RgBsZNjvbz4YYCanrHOQnDi
2691
+ qX0GJX0nof5v7LMeJNrjS1UaADs1tDvZ110w/YETifLCBivtZ8SOyUOyXGsViQK8YvxO8rUzqrJv
2692
+ 0wqiUOP2O+guRMLbZjipM1ZI8W0bM40NjD9gN53Tym1+NH4Nn3J2ixufcv1SNUFFApYvHLKac0kh
2693
+ sUlHRUe072o0EclNmsxZt9YCnlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8=
2694
+ -----END CERTIFICATE-----
2695
+
2696
+ AffirmTrust Networking
2697
+ ======================
2698
+ -----BEGIN CERTIFICATE-----
2699
+ MIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UEBhMCVVMxFDAS
2700
+ BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMB4XDTEw
2701
+ MDEyOTE0MDgyNFoXDTMwMTIzMTE0MDgyNFowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly
2702
+ bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMIIBIjANBgkqhkiG9w0BAQEF
2703
+ AAOCAQ8AMIIBCgKCAQEAtITMMxcua5Rsa2FSoOujz3mUTOWUgJnLVWREZY9nZOIG41w3SfYvm4SE
2704
+ Hi3yYJ0wTsyEheIszx6e/jarM3c1RNg1lho9Nuh6DtjVR6FqaYvZ/Ls6rnla1fTWcbuakCNrmreI
2705
+ dIcMHl+5ni36q1Mr3Lt2PpNMCAiMHqIjHNRqrSK6mQEubWXLviRmVSRLQESxG9fhwoXA3hA/Pe24
2706
+ /PHxI1Pcv2WXb9n5QHGNfb2V1M6+oF4nI979ptAmDgAp6zxG8D1gvz9Q0twmQVGeFDdCBKNwV6gb
2707
+ h+0t+nvujArjqWaJGctB+d1ENmHP4ndGyH329JKBNv3bNPFyfvMMFr20FQIDAQABo0IwQDAdBgNV
2708
+ HQ4EFgQUBx/S55zawm6iQLSwelAQUHTEyL0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
2709
+ AQYwDQYJKoZIhvcNAQEFBQADggEBAIlXshZ6qML91tmbmzTCnLQyFE2npN/svqe++EPbkTfOtDIu
2710
+ UFUaNU52Q3Eg75N3ThVwLofDwR1t3Mu1J9QsVtFSUzpE0nPIxBsFZVpikpzuQY0x2+c06lkh1QF6
2711
+ 12S4ZDnNye2v7UsDSKegmQGA3GWjNq5lWUhPgkvIZfFXHeVZLgo/bNjR9eUJtGxUAArgFU2HdW23
2712
+ WJZa3W3SAKD0m0i+wzekujbgfIeFlxoVot4uolu9rxj5kFDNcFn4J2dHy8egBzp90SxdbBk6ZrV9
2713
+ /ZFvgrG+CJPbFEfxojfHRZ48x3evZKiT3/Zpg4Jg8klCNO1aAFSFHBY2kgxc+qatv9s=
2714
+ -----END CERTIFICATE-----
2715
+
2716
+ AffirmTrust Premium
2717
+ ===================
2718
+ -----BEGIN CERTIFICATE-----
2719
+ MIIFRjCCAy6gAwIBAgIIbYwURrGmCu4wDQYJKoZIhvcNAQEMBQAwQTELMAkGA1UEBhMCVVMxFDAS
2720
+ BgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVzdCBQcmVtaXVtMB4XDTEwMDEy
2721
+ OTE0MTAzNloXDTQwMTIzMTE0MTAzNlowQTELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRy
2722
+ dXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVzdCBQcmVtaXVtMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A
2723
+ MIICCgKCAgEAxBLfqV/+Qd3d9Z+K4/as4Tx4mrzY8H96oDMq3I0gW64tb+eT2TZwamjPjlGjhVtn
2724
+ BKAQJG9dKILBl1fYSCkTtuG+kU3fhQxTGJoeJKJPj/CihQvL9Cl/0qRY7iZNyaqoe5rZ+jjeRFcV
2725
+ 5fiMyNlI4g0WJx0eyIOFJbe6qlVBzAMiSy2RjYvmia9mx+n/K+k8rNrSs8PhaJyJ+HoAVt70VZVs
2726
+ +7pk3WKL3wt3MutizCaam7uqYoNMtAZ6MMgpv+0GTZe5HMQxK9VfvFMSF5yZVylmd2EhMQcuJUmd
2727
+ GPLu8ytxjLW6OQdJd/zvLpKQBY0tL3d770O/Nbua2Plzpyzy0FfuKE4mX4+QaAkvuPjcBukumj5R
2728
+ p9EixAqnOEhss/n/fauGV+O61oV4d7pD6kh/9ti+I20ev9E2bFhc8e6kGVQa9QPSdubhjL08s9NI
2729
+ S+LI+H+SqHZGnEJlPqQewQcDWkYtuJfzt9WyVSHvutxMAJf7FJUnM7/oQ0dG0giZFmA7mn7S5u04
2730
+ 6uwBHjxIVkkJx0w3AJ6IDsBz4W9m6XJHMD4Q5QsDyZpCAGzFlH5hxIrff4IaC1nEWTJ3s7xgaVY5
2731
+ /bQGeyzWZDbZvUjthB9+pSKPKrhC9IK31FOQeE4tGv2Bb0TXOwF0lkLgAOIua+rF7nKsu7/+6qqo
2732
+ +Nz2snmKtmcCAwEAAaNCMEAwHQYDVR0OBBYEFJ3AZ6YMItkm9UWrpmVSESfYRaxjMA8GA1UdEwEB
2733
+ /wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBDAUAA4ICAQCzV00QYk465KzquByv
2734
+ MiPIs0laUZx2KI15qldGF9X1Uva3ROgIRL8YhNILgM3FEv0AVQVhh0HctSSePMTYyPtwni94loMg
2735
+ Nt58D2kTiKV1NpgIpsbfrM7jWNa3Pt668+s0QNiigfV4Py/VpfzZotReBA4Xrf5B8OWycvpEgjNC
2736
+ 6C1Y91aMYj+6QrCcDFx+LmUmXFNPALJ4fqENmS2NuB2OosSw/WDQMKSOyARiqcTtNd56l+0OOF6S
2737
+ L5Nwpamcb6d9Ex1+xghIsV5n61EIJenmJWtSKZGc0jlzCFfemQa0W50QBuHCAKi4HEoCChTQwUHK
2738
+ +4w1IX2COPKpVJEZNZOUbWo6xbLQu4mGk+ibyQ86p3q4ofB4Rvr8Ny/lioTz3/4E2aFooC8k4gmV
2739
+ BtWVyuEklut89pMFu+1z6S3RdTnX5yTb2E5fQ4+e0BQ5v1VwSJlXMbSc7kqYA5YwH2AG7hsj/oFg
2740
+ IxpHYoWlzBk0gG+zrBrjn/B7SK3VAdlntqlyk+otZrWyuOQ9PLLvTIzq6we/qzWaVYa8GKa1qF60
2741
+ g2xraUDTn9zxw2lrueFtCfTxqlB2Cnp9ehehVZZCmTEJ3WARjQUwfuaORtGdFNrHF+QFlozEJLUb
2742
+ zxQHskD4o55BhrwE0GuWyCqANP2/7waj3VjFhT0+j/6eKeC2uAloGRwYQw==
2743
+ -----END CERTIFICATE-----
2744
+
2745
+ AffirmTrust Premium ECC
2746
+ =======================
2747
+ -----BEGIN CERTIFICATE-----
2748
+ MIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMCVVMxFDASBgNV
2749
+ BAoMC0FmZmlybVRydXN0MSAwHgYDVQQDDBdBZmZpcm1UcnVzdCBQcmVtaXVtIEVDQzAeFw0xMDAx
2750
+ MjkxNDIwMjRaFw00MDEyMzExNDIwMjRaMEUxCzAJBgNVBAYTAlVTMRQwEgYDVQQKDAtBZmZpcm1U
2751
+ cnVzdDEgMB4GA1UEAwwXQWZmaXJtVHJ1c3QgUHJlbWl1bSBFQ0MwdjAQBgcqhkjOPQIBBgUrgQQA
2752
+ IgNiAAQNMF4bFZ0D0KF5Nbc6PJJ6yhUczWLznCZcBz3lVPqj1swS6vQUX+iOGasvLkjmrBhDeKzQ
2753
+ N8O9ss0s5kfiGuZjuD0uL3jET9v0D6RoTFVya5UdThhClXjMNzyR4ptlKymjQjBAMB0GA1UdDgQW
2754
+ BBSaryl6wBE1NSZRMADDav5A1a7WPDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAK
2755
+ BggqhkjOPQQDAwNnADBkAjAXCfOHiFBar8jAQr9HX/VsaobgxCd05DhT1wV/GzTjxi+zygk8N53X
2756
+ 57hG8f2h4nECMEJZh0PUUd+60wkyWs6Iflc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKM
2757
+ eQ==
2758
+ -----END CERTIFICATE-----
2759
+
2760
+ Certum Trusted Network CA
2761
+ =========================
2762
+ -----BEGIN CERTIFICATE-----
2763
+ MIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBMMSIwIAYDVQQK
2764
+ ExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlv
2765
+ biBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBUcnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIy
2766
+ MTIwNzM3WhcNMjkxMjMxMTIwNzM3WjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBU
2767
+ ZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5
2768
+ MSIwIAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0BAQEFAAOC
2769
+ AQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rHUV+rpDKmYYe2bg+G0jAC
2770
+ l/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LMTXPb865Px1bVWqeWifrzq2jUI4ZZJ88J
2771
+ J7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVUBBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4
2772
+ fOQtf/WsX+sWn7Et0brMkUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0
2773
+ cvW0QM8xAcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNVHRMB
2774
+ Af8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNVHQ8BAf8EBAMCAQYw
2775
+ DQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15ysHhE49wcrwn9I0j6vSrEuVUEtRCj
2776
+ jSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfLI9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1
2777
+ mS1FhIrlQgnXdAIv94nYmem8J9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5aj
2778
+ Zt3hrvJBW8qYVoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI
2779
+ 03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw=
2780
+ -----END CERTIFICATE-----
2781
+
2782
+ Certinomis - Autorité Racine
2783
+ =============================
2784
+ -----BEGIN CERTIFICATE-----
2785
+ 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
2810
+ vgt2Fl43N+bYdJeimUV5
2811
+ -----END CERTIFICATE-----
2812
+
2813
+ Root CA Generalitat Valenciana
2814
+ ==============================
2815
+ -----BEGIN CERTIFICATE-----
2816
+ MIIGizCCBXOgAwIBAgIEO0XlaDANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJFUzEfMB0GA1UE
2817
+ ChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UECxMGUEtJR1ZBMScwJQYDVQQDEx5Sb290
2818
+ IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmEwHhcNMDEwNzA2MTYyMjQ3WhcNMjEwNzAxMTUyMjQ3
2819
+ WjBoMQswCQYDVQQGEwJFUzEfMB0GA1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UE
2820
+ CxMGUEtJR1ZBMScwJQYDVQQDEx5Sb290IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmEwggEiMA0G
2821
+ CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDGKqtXETcvIorKA3Qdyu0togu8M1JAJke+WmmmO3I2
2822
+ F0zo37i7L3bhQEZ0ZQKQUgi0/6iMweDHiVYQOTPvaLRfX9ptI6GJXiKjSgbwJ/BXufjpTjJ3Cj9B
2823
+ ZPPrZe52/lSqfR0grvPXdMIKX/UIKFIIzFVd0g/bmoGlu6GzwZTNVOAydTGRGmKy3nXiz0+J2ZGQ
2824
+ D0EbtFpKd71ng+CT516nDOeB0/RSrFOyA8dEJvt55cs0YFAQexvba9dHq198aMpunUEDEO5rmXte
2825
+ JajCq+TA81yc477OMUxkHl6AovWDfgzWyoxVjr7gvkkHD6MkQXpYHYTqWBLI4bft75PelAgxAgMB
2826
+ AAGjggM7MIIDNzAyBggrBgEFBQcBAQQmMCQwIgYIKwYBBQUHMAGGFmh0dHA6Ly9vY3NwLnBraS5n
2827
+ dmEuZXMwEgYDVR0TAQH/BAgwBgEB/wIBAjCCAjQGA1UdIASCAiswggInMIICIwYKKwYBBAG/VQIB
2828
+ ADCCAhMwggHoBggrBgEFBQcCAjCCAdoeggHWAEEAdQB0AG8AcgBpAGQAYQBkACAAZABlACAAQwBl
2829
+ AHIAdABpAGYAaQBjAGEAYwBpAPMAbgAgAFIAYQDtAHoAIABkAGUAIABsAGEAIABHAGUAbgBlAHIA
2830
+ YQBsAGkAdABhAHQAIABWAGEAbABlAG4AYwBpAGEAbgBhAC4ADQAKAEwAYQAgAEQAZQBjAGwAYQBy
2831
+ AGEAYwBpAPMAbgAgAGQAZQAgAFAAcgDhAGMAdABpAGMAYQBzACAAZABlACAAQwBlAHIAdABpAGYA
2832
+ aQBjAGEAYwBpAPMAbgAgAHEAdQBlACAAcgBpAGcAZQAgAGUAbAAgAGYAdQBuAGMAaQBvAG4AYQBt
2833
+ AGkAZQBuAHQAbwAgAGQAZQAgAGwAYQAgAHAAcgBlAHMAZQBuAHQAZQAgAEEAdQB0AG8AcgBpAGQA
2834
+ YQBkACAAZABlACAAQwBlAHIAdABpAGYAaQBjAGEAYwBpAPMAbgAgAHMAZQAgAGUAbgBjAHUAZQBu
2835
+ AHQAcgBhACAAZQBuACAAbABhACAAZABpAHIAZQBjAGMAaQDzAG4AIAB3AGUAYgAgAGgAdAB0AHAA
2836
+ OgAvAC8AdwB3AHcALgBwAGsAaQAuAGcAdgBhAC4AZQBzAC8AYwBwAHMwJQYIKwYBBQUHAgEWGWh0
2837
+ dHA6Ly93d3cucGtpLmd2YS5lcy9jcHMwHQYDVR0OBBYEFHs100DSHHgZZu90ECjcPk+yeAT8MIGV
2838
+ BgNVHSMEgY0wgYqAFHs100DSHHgZZu90ECjcPk+yeAT8oWykajBoMQswCQYDVQQGEwJFUzEfMB0G
2839
+ A1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UECxMGUEtJR1ZBMScwJQYDVQQDEx5S
2840
+ b290IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmGCBDtF5WgwDQYJKoZIhvcNAQEFBQADggEBACRh
2841
+ TvW1yEICKrNcda3FbcrnlD+laJWIwVTAEGmiEi8YPyVQqHxK6sYJ2fR1xkDar1CdPaUWu20xxsdz
2842
+ Ckj+IHLtb8zog2EWRpABlUt9jppSCS/2bxzkoXHPjCpaF3ODR00PNvsETUlR4hTJZGH71BTg9J63
2843
+ NI8KJr2XXPR5OkowGcytT6CYirQxlyric21+eLj4iIlPsSKRZEv1UN4D2+XFducTZnV+ZfsBn5OH
2844
+ iJ35Rld8TWCvmHMTI6QgkYH60GFmuH3Rr9ZvHmw96RH9qfmCIoaZM3Fa6hlXPZHNqcCjbgcTpsnt
2845
+ +GijnsNacgmHKNHEc8RzGF9QdRYxn7fofMM=
2846
+ -----END CERTIFICATE-----
2847
+
2848
+ A-Trust-nQual-03
2849
+ ================
2850
+ -----BEGIN CERTIFICATE-----
2851
+ MIIDzzCCAregAwIBAgIDAWweMA0GCSqGSIb3DQEBBQUAMIGNMQswCQYDVQQGEwJBVDFIMEYGA1UE
2852
+ Cgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBpbSBlbGVrdHIuIERhdGVudmVy
2853
+ a2VociBHbWJIMRkwFwYDVQQLDBBBLVRydXN0LW5RdWFsLTAzMRkwFwYDVQQDDBBBLVRydXN0LW5R
2854
+ dWFsLTAzMB4XDTA1MDgxNzIyMDAwMFoXDTE1MDgxNzIyMDAwMFowgY0xCzAJBgNVBAYTAkFUMUgw
2855
+ RgYDVQQKDD9BLVRydXN0IEdlcy4gZi4gU2ljaGVyaGVpdHNzeXN0ZW1lIGltIGVsZWt0ci4gRGF0
2856
+ ZW52ZXJrZWhyIEdtYkgxGTAXBgNVBAsMEEEtVHJ1c3QtblF1YWwtMDMxGTAXBgNVBAMMEEEtVHJ1
2857
+ c3QtblF1YWwtMDMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtPWFuA/OQO8BBC4SA
2858
+ zewqo51ru27CQoT3URThoKgtUaNR8t4j8DRE/5TrzAUjlUC5B3ilJfYKvUWG6Nm9wASOhURh73+n
2859
+ yfrBJcyFLGM/BWBzSQXgYHiVEEvc+RFZznF/QJuKqiTfC0Li21a8StKlDJu3Qz7dg9MmEALP6iPE
2860
+ SU7l0+m0iKsMrmKS1GWH2WrX9IWf5DMiJaXlyDO6w8dB3F/GaswADm0yqLaHNgBid5seHzTLkDx4
2861
+ iHQF63n1k3Flyp3HaxgtPVxO59X4PzF9j4fsCiIvI+n+u33J4PTs63zEsMMtYrWacdaxaujs2e3V
2862
+ cuy+VwHOBVWf3tFgiBCzAgMBAAGjNjA0MA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0OBAoECERqlWdV
2863
+ eRFPMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAVdRU0VlIXLOThaq/Yy/kgM40
2864
+ ozRiPvbY7meIMQQDbwvUB/tOdQ/TLtPAF8fGKOwGDREkDg6lXb+MshOWcdzUzg4NCmgybLlBMRmr
2865
+ sQd7TZjTXLDR8KdCoLXEjq/+8T/0709GAHbrAvv5ndJAlseIOrifEXnzgGWovR/TeIGgUUw3tKZd
2866
+ JXDRZslo+S4RFGjxVJgIrCaSD96JntT6s3kr0qN51OyLrIdTaEJMUVF0HhsnLuP1Hyl0Te2v9+GS
2867
+ mYHovjrHF1D2t8b8m7CKa9aIA5GPBnc6hQLdmNVDeD/GMBWsm2vLV7eJUYs66MmEDNuxUCAKGkq6
2868
+ ahq97BvIxYSazQ==
2869
+ -----END CERTIFICATE-----
2870
+
2871
+ TWCA Root Certification Authority
2872
+ =================================
2873
+ -----BEGIN CERTIFICATE-----
2874
+ MIIDezCCAmOgAwIBAgIBATANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJUVzESMBAGA1UECgwJ
2875
+ VEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NBIFJvb3QgQ2VydGlmaWNh
2876
+ dGlvbiBBdXRob3JpdHkwHhcNMDgwODI4MDcyNDMzWhcNMzAxMjMxMTU1OTU5WjBfMQswCQYDVQQG
2877
+ EwJUVzESMBAGA1UECgwJVEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NB
2878
+ IFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
2879
+ AoIBAQCwfnK4pAOU5qfeCTiRShFAh6d8WWQUe7UREN3+v9XAu1bihSX0NXIP+FPQQeFEAcK0HMMx
2880
+ QhZHhTMidrIKbw/lJVBPhYa+v5guEGcevhEFhgWQxFnQfHgQsIBct+HHK3XLfJ+utdGdIzdjp9xC
2881
+ oi2SBBtQwXu4PhvJVgSLL1KbralW6cH/ralYhzC2gfeXRfwZVzsrb+RH9JlF/h3x+JejiB03HFyP
2882
+ 4HYlmlD4oFT/RJB2I9IyxsOrBr/8+7/zrX2SYgJbKdM1o5OaQ2RgXbL6Mv87BK9NQGr5x+PvI/1r
2883
+ y+UPizgN7gr8/g+YnzAx3WxSZfmLgb4i4RxYA7qRG4kHAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIB
2884
+ BjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqOFsmjd6LWvJPelSDGRjjCDWmujANBgkqhkiG
2885
+ 9w0BAQUFAAOCAQEAPNV3PdrfibqHDAhUaiBQkr6wQT25JmSDCi/oQMCXKCeCMErJk/9q56YAf4lC
2886
+ mtYR5VPOL8zy2gXE/uJQxDqGfczafhAJO5I1KlOy/usrBdlsXebQ79NqZp4VKIV66IIArB6nCWlW
2887
+ QtNoURi+VJq/REG6Sb4gumlc7rh3zc5sH62Dlhh9DrUUOYTxKOkto557HnpyWoOzeW/vtPzQCqVY
2888
+ T0bf+215WfKEIlKuD8z7fDvnaspHYcN6+NOSBB+4IIThNlQWx0DeO4pz3N/GCUzf7Nr/1FNCocny
2889
+ Yh0igzyXxfkZYiesZSLX0zzG5Y6yU8xJzrww/nsOM5D77dIUkR8Hrw==
2890
+ -----END CERTIFICATE-----
2891
+
2892
+ Security Communication RootCA2
2893
+ ==============================
2894
+ -----BEGIN CERTIFICATE-----
2895
+ MIIDdzCCAl+gAwIBAgIBADANBgkqhkiG9w0BAQsFADBdMQswCQYDVQQGEwJKUDElMCMGA1UEChMc
2896
+ U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UECxMeU2VjdXJpdHkgQ29tbXVuaWNh
2897
+ dGlvbiBSb290Q0EyMB4XDTA5MDUyOTA1MDAzOVoXDTI5MDUyOTA1MDAzOVowXTELMAkGA1UEBhMC
2898
+ SlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xJzAlBgNVBAsTHlNlY3Vy
2899
+ aXR5IENvbW11bmljYXRpb24gUm9vdENBMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
2900
+ ANAVOVKxUrO6xVmCxF1SrjpDZYBLx/KWvNs2l9amZIyoXvDjChz335c9S672XewhtUGrzbl+dp++
2901
+ +T42NKA7wfYxEUV0kz1XgMX5iZnK5atq1LXaQZAQwdbWQonCv/Q4EpVMVAX3NuRFg3sUZdbcDE3R
2902
+ 3n4MqzvEFb46VqZab3ZpUql6ucjrappdUtAtCms1FgkQhNBqyjoGADdH5H5XTz+L62e4iKrFvlNV
2903
+ spHEfbmwhRkGeC7bYRr6hfVKkaHnFtWOojnflLhwHyg/i/xAXmODPIMqGplrz95Zajv8bxbXH/1K
2904
+ EOtOghY6rCcMU/Gt1SSwawNQwS08Ft1ENCcadfsCAwEAAaNCMEAwHQYDVR0OBBYEFAqFqXdlBZh8
2905
+ QIH4D5csOPEK7DzPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEB
2906
+ CwUAA4IBAQBMOqNErLlFsceTfsgLCkLfZOoc7llsCLqJX2rKSpWeeo8HxdpFcoJxDjrSzG+ntKEj
2907
+ u/Ykn8sX/oymzsLS28yN/HH8AynBbF0zX2S2ZTuJbxh2ePXcokgfGT+Ok+vx+hfuzU7jBBJV1uXk
2908
+ 3fs+BXziHV7Gp7yXT2g69ekuCkO2r1dcYmh8t/2jioSgrGK+KwmHNPBqAbubKVY8/gA3zyNs8U6q
2909
+ tnRGEmyR7jTV7JqR50S+kDFy1UkC9gLl9B/rfNmWVan/7Ir5mUf/NVoCqgTLiluHcSmRvaS0eg29
2910
+ mvVXIwAHIRc/SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03
2911
+ -----END CERTIFICATE-----
2912
+
2913
+ EC-ACC
2914
+ ======
2915
+ -----BEGIN CERTIFICATE-----
2916
+ MIIFVjCCBD6gAwIBAgIQ7is969Qh3hSoYqwE893EATANBgkqhkiG9w0BAQUFADCB8zELMAkGA1UE
2917
+ BhMCRVMxOzA5BgNVBAoTMkFnZW5jaWEgQ2F0YWxhbmEgZGUgQ2VydGlmaWNhY2lvIChOSUYgUS0w
2918
+ ODAxMTc2LUkpMSgwJgYDVQQLEx9TZXJ2ZWlzIFB1YmxpY3MgZGUgQ2VydGlmaWNhY2lvMTUwMwYD
2919
+ VQQLEyxWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5ldC92ZXJhcnJlbCAoYykwMzE1MDMGA1UE
2920
+ CxMsSmVyYXJxdWlhIEVudGl0YXRzIGRlIENlcnRpZmljYWNpbyBDYXRhbGFuZXMxDzANBgNVBAMT
2921
+ BkVDLUFDQzAeFw0wMzAxMDcyMzAwMDBaFw0zMTAxMDcyMjU5NTlaMIHzMQswCQYDVQQGEwJFUzE7
2922
+ MDkGA1UEChMyQWdlbmNpYSBDYXRhbGFuYSBkZSBDZXJ0aWZpY2FjaW8gKE5JRiBRLTA4MDExNzYt
2923
+ SSkxKDAmBgNVBAsTH1NlcnZlaXMgUHVibGljcyBkZSBDZXJ0aWZpY2FjaW8xNTAzBgNVBAsTLFZl
2924
+ Z2V1IGh0dHBzOi8vd3d3LmNhdGNlcnQubmV0L3ZlcmFycmVsIChjKTAzMTUwMwYDVQQLEyxKZXJh
2925
+ cnF1aWEgRW50aXRhdHMgZGUgQ2VydGlmaWNhY2lvIENhdGFsYW5lczEPMA0GA1UEAxMGRUMtQUND
2926
+ MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsyLHT+KXQpWIR4NA9h0X84NzJB5R85iK
2927
+ w5K4/0CQBXCHYMkAqbWUZRkiFRfCQ2xmRJoNBD45b6VLeqpjt4pEndljkYRm4CgPukLjbo73FCeT
2928
+ ae6RDqNfDrHrZqJyTxIThmV6PttPB/SnCWDaOkKZx7J/sxaVHMf5NLWUhdWZXqBIoH7nF2W4onW4
2929
+ HvPlQn2v7fOKSGRdghST2MDk/7NQcvJ29rNdQlB50JQ+awwAvthrDk4q7D7SzIKiGGUzE3eeml0a
2930
+ E9jD2z3Il3rucO2n5nzbcc8tlGLfbdb1OL4/pYUKGbio2Al1QnDE6u/LDsg0qBIimAy4E5S2S+zw
2931
+ 0JDnJwIDAQABo4HjMIHgMB0GA1UdEQQWMBSBEmVjX2FjY0BjYXRjZXJ0Lm5ldDAPBgNVHRMBAf8E
2932
+ BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUoMOLRKo3pUW/l4Ba0fF4opvpXY0wfwYD
2933
+ VR0gBHgwdjB0BgsrBgEEAfV4AQMBCjBlMCwGCCsGAQUFBwIBFiBodHRwczovL3d3dy5jYXRjZXJ0
2934
+ Lm5ldC92ZXJhcnJlbDA1BggrBgEFBQcCAjApGidWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5l
2935
+ dC92ZXJhcnJlbCAwDQYJKoZIhvcNAQEFBQADggEBAKBIW4IB9k1IuDlVNZyAelOZ1Vr/sXE7zDkJ
2936
+ lF7W2u++AVtd0x7Y/X1PzaBB4DSTv8vihpw3kpBWHNzrKQXlxJ7HNd+KDM3FIUPpqojlNcAZQmNa
2937
+ Al6kSBg6hW/cnbw/nZzBh7h6YQjpdwt/cKt63dmXLGQehb+8dJahw3oS7AwaboMMPOhyRp/7SNVe
2938
+ l+axofjk70YllJyJ22k4vuxcDlbHZVHlUIiIv0LVKz3l+bqeLrPK9HOSAgu+TGbrIP65y7WZf+a2
2939
+ E/rKS03Z7lNGBjvGTq2TWoF+bCpLagVFjPIhpDGQh2xlnJ2lYJU6Un/10asIbvPuW/mIPX64b24D
2940
+ 5EI=
2941
+ -----END CERTIFICATE-----
2942
+
2943
+ Hellenic Academic and Research Institutions RootCA 2011
2944
+ =======================================================
2945
+ -----BEGIN CERTIFICATE-----
2946
+ MIIEMTCCAxmgAwIBAgIBADANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UEBhMCR1IxRDBCBgNVBAoT
2947
+ O0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9y
2948
+ aXR5MUAwPgYDVQQDEzdIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25z
2949
+ IFJvb3RDQSAyMDExMB4XDTExMTIwNjEzNDk1MloXDTMxMTIwMTEzNDk1MlowgZUxCzAJBgNVBAYT
2950
+ AkdSMUQwQgYDVQQKEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25z
2951
+ IENlcnQuIEF1dGhvcml0eTFAMD4GA1UEAxM3SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNo
2952
+ IEluc3RpdHV0aW9ucyBSb290Q0EgMjAxMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
2953
+ AKlTAOMupvaO+mDYLZU++CwqVE7NuYRhlFhPjz2L5EPzdYmNUeTDN9KKiE15HrcS3UN4SoqS5tdI
2954
+ 1Q+kOilENbgH9mgdVc04UfCMJDGFr4PJfel3r+0ae50X+bOdOFAPplp5kYCvN66m0zH7tSYJnTxa
2955
+ 71HFK9+WXesyHgLacEnsbgzImjeN9/E2YEsmLIKe0HjzDQ9jpFEw4fkrJxIH2Oq9GGKYsFk3fb7u
2956
+ 8yBRQlqD75O6aRXxYp2fmTmCobd0LovUxQt7L/DICto9eQqakxylKHJzkUOap9FNhYS5qXSPFEDH
2957
+ 3N6sQWRstBmbAmNtJGSPRLIl6s5ddAxjMlyNh+UCAwEAAaOBiTCBhjAPBgNVHRMBAf8EBTADAQH/
2958
+ MAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQUppFC/RNhSiOeCKQp5dgTBCPuQSUwRwYDVR0eBEAwPqA8
2959
+ MAWCAy5ncjAFggMuZXUwBoIELmVkdTAGggQub3JnMAWBAy5ncjAFgQMuZXUwBoEELmVkdTAGgQQu
2960
+ b3JnMA0GCSqGSIb3DQEBBQUAA4IBAQAf73lB4XtuP7KMhjdCSk4cNx6NZrokgclPEg8hwAOXhiVt
2961
+ XdMiKahsog2p6z0GW5k6x8zDmjR/qw7IThzh+uTczQ2+vyT+bOdrwg3IBp5OjWEopmr95fZi6hg8
2962
+ TqBTnbI6nOulnJEWtk2C4AwFSKls9cz4y51JtPACpf1wA+2KIaWuE4ZJwzNzvoc7dIsXRSZMFpGD
2963
+ /md9zU1jZ/rzAxKWeAaNsWftjj++n08C9bMJL/NMh98qy5V8AcysNnq/onN694/BtZqhFLKPM58N
2964
+ 7yLcZnuEvUUXBj08yrl3NI/K6s8/MT7jiOOASSXIl7WdmplNsDz4SgCbZN2fOUvRJ9e4
2965
+ -----END CERTIFICATE-----
2966
+
2967
+ Actalis Authentication Root CA
2968
+ ==============================
2969
+ -----BEGIN CERTIFICATE-----
2970
+ MIIFuzCCA6OgAwIBAgIIVwoRl0LE48wwDQYJKoZIhvcNAQELBQAwazELMAkGA1UEBhMCSVQxDjAM
2971
+ BgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UE
2972
+ AwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290IENBMB4XDTExMDkyMjExMjIwMloXDTMwMDky
2973
+ MjExMjIwMlowazELMAkGA1UEBhMCSVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlz
2974
+ IFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290
2975
+ IENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAp8bEpSmkLO/lGMWwUKNvUTufClrJ
2976
+ wkg4CsIcoBh/kbWHuUA/3R1oHwiD1S0eiKD4j1aPbZkCkpAW1V8IbInX4ay8IMKx4INRimlNAJZa
2977
+ by/ARH6jDuSRzVju3PvHHkVH3Se5CAGfpiEd9UEtL0z9KK3giq0itFZljoZUj5NDKd45RnijMCO6
2978
+ zfB9E1fAXdKDa0hMxKufgFpbOr3JpyI/gCczWw63igxdBzcIy2zSekciRDXFzMwujt0q7bd9Zg1f
2979
+ YVEiVRvjRuPjPdA1YprbrxTIW6HMiRvhMCb8oJsfgadHHwTrozmSBp+Z07/T6k9QnBn+locePGX2
2980
+ oxgkg4YQ51Q+qDp2JE+BIcXjDwL4k5RHILv+1A7TaLndxHqEguNTVHnd25zS8gebLra8Pu2Fbe8l
2981
+ EfKXGkJh90qX6IuxEAf6ZYGyojnP9zz/GPvG8VqLWeICrHuS0E4UT1lF9gxeKF+w6D9Fz8+vm2/7
2982
+ hNN3WpVvrJSEnu68wEqPSpP4RCHiMUVhUE4Q2OM1fEwZtN4Fv6MGn8i1zeQf1xcGDXqVdFUNaBr8
2983
+ EBtiZJ1t4JWgw5QHVw0U5r0F+7if5t+L4sbnfpb2U8WANFAoWPASUHEXMLrmeGO89LKtmyuy/uE5
2984
+ jF66CyCU3nuDuP/jVo23Eek7jPKxwV2dpAtMK9myGPW1n0sCAwEAAaNjMGEwHQYDVR0OBBYEFFLY
2985
+ iDrIn3hm7YnzezhwlMkCAjbQMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUUtiIOsifeGbt
2986
+ ifN7OHCUyQICNtAwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQALe3KHwGCmSUyI
2987
+ WOYdiPcUZEim2FgKDk8TNd81HdTtBjHIgT5q1d07GjLukD0R0i70jsNjLiNmsGe+b7bAEzlgqqI0
2988
+ JZN1Ut6nna0Oh4lScWoWPBkdg/iaKWW+9D+a2fDzWochcYBNy+A4mz+7+uAwTc+G02UQGRjRlwKx
2989
+ K3JCaKygvU5a2hi/a5iB0P2avl4VSM0RFbnAKVy06Ij3Pjaut2L9HmLecHgQHEhb2rykOLpn7VU+
2990
+ Xlff1ANATIGk0k9jpwlCCRT8AKnCgHNPLsBA2RF7SOp6AsDT6ygBJlh0wcBzIm2Tlf05fbsq4/aC
2991
+ 4yyXX04fkZT6/iyj2HYauE2yOE+b+h1IYHkm4vP9qdCa6HCPSXrW5b0KDtst842/6+OkfcvHlXHo
2992
+ 2qN8xcL4dJIEG4aspCJTQLas/kx2z/uUMsA1n3Y/buWQbqCmJqK4LL7RK4X9p2jIugErsWx0Hbhz
2993
+ lefut8cl8ABMALJ+tguLHPPAUJ4lueAI3jZm/zel0btUZCzJJ7VLkn5l/9Mt4blOvH+kQSGQQXem
2994
+ OR/qnuOf0GZvBeyqdn6/axag67XH/JJULysRJyU3eExRarDzzFhdFPFqSBX/wge2sY0PjlxQRrM9
2995
+ vwGYT7JZVEc+NHt4bVaTLnPqZih4zR0Uv6CPLy64Lo7yFIrM6bV8+2ydDKXhlg==
2996
+ -----END CERTIFICATE-----
2997
+
2998
+ Trustis FPS Root CA
2999
+ ===================
3000
+ -----BEGIN CERTIFICATE-----
3001
+ MIIDZzCCAk+gAwIBAgIQGx+ttiD5JNM2a/fH8YygWTANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQG
3002
+ EwJHQjEYMBYGA1UEChMPVHJ1c3RpcyBMaW1pdGVkMRwwGgYDVQQLExNUcnVzdGlzIEZQUyBSb290
3003
+ IENBMB4XDTAzMTIyMzEyMTQwNloXDTI0MDEyMTExMzY1NFowRTELMAkGA1UEBhMCR0IxGDAWBgNV
3004
+ BAoTD1RydXN0aXMgTGltaXRlZDEcMBoGA1UECxMTVHJ1c3RpcyBGUFMgUm9vdCBDQTCCASIwDQYJ
3005
+ KoZIhvcNAQEBBQADggEPADCCAQoCggEBAMVQe547NdDfxIzNjpvto8A2mfRC6qc+gIMPpqdZh8mQ
3006
+ RUN+AOqGeSoDvT03mYlmt+WKVoaTnGhLaASMk5MCPjDSNzoiYYkchU59j9WvezX2fihHiTHcDnlk
3007
+ H5nSW7r+f2C/revnPDgpai/lkQtV/+xvWNUtyd5MZnGPDNcE2gfmHhjjvSkCqPoc4Vu5g6hBSLwa
3008
+ cY3nYuUtsuvffM/bq1rKMfFMIvMFE/eC+XN5DL7XSxzA0RU8k0Fk0ea+IxciAIleH2ulrG6nS4zt
3009
+ o3Lmr2NNL4XSFDWaLk6M6jKYKIahkQlBOrTh4/L68MkKokHdqeMDx4gVOxzUGpTXn2RZEm0CAwEA
3010
+ AaNTMFEwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBS6+nEleYtXQSUhhgtx67JkDoshZzAd
3011
+ BgNVHQ4EFgQUuvpxJXmLV0ElIYYLceuyZA6LIWcwDQYJKoZIhvcNAQEFBQADggEBAH5Y//01GX2c
3012
+ GE+esCu8jowU/yyg2kdbw++BLa8F6nRIW/M+TgfHbcWzk88iNVy2P3UnXwmWzaD+vkAMXBJV+JOC
3013
+ yinpXj9WV4s4NvdFGkwozZ5BuO1WTISkQMi4sKUraXAEasP41BIy+Q7DsdwyhEQsb8tGD+pmQQ9P
3014
+ 8Vilpg0ND2HepZ5dfWWhPBfnqFVO76DH7cZEf1T1o+CP8HxVIo8ptoGj4W1OLBuAZ+ytIJ8MYmHV
3015
+ l/9D7S3B2l0pKoU/rGXuhg8FjZBf3+6f9L/uHfuY5H+QK4R4EA5sSVPvFVtlRkpdr7r7OnIdzfYl
3016
+ iB6XzCGcKQENZetX2fNXlrtIzYE=
3017
+ -----END CERTIFICATE-----
3018
+
3019
+ StartCom Certification Authority
3020
+ ================================
3021
+ -----BEGIN CERTIFICATE-----
3022
+ MIIHhzCCBW+gAwIBAgIBLTANBgkqhkiG9w0BAQsFADB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMN
3023
+ U3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmlu
3024
+ ZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0
3025
+ NjM3WhcNMzYwOTE3MTk0NjM2WjB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRk
3026
+ LjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMg
3027
+ U3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
3028
+ ggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZkpMyONvg45iPwbm2xPN1y
3029
+ o4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rfOQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/
3030
+ Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/CJi/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/d
3031
+ eMotHweXMAEtcnn6RtYTKqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt
3032
+ 2PZE4XNiHzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMMAv+Z
3033
+ 6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w+2OqqGwaVLRcJXrJ
3034
+ osmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/
3035
+ untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVc
3036
+ UjyJthkqcwEKDwOzEmDyei+B26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT
3037
+ 37uMdBNSSwIDAQABo4ICEDCCAgwwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYD
3038
+ VR0OBBYEFE4L7xqkQFulF2mHMMo0aEPQQa7yMB8GA1UdIwQYMBaAFE4L7xqkQFulF2mHMMo0aEPQ
3039
+ Qa7yMIIBWgYDVR0gBIIBUTCCAU0wggFJBgsrBgEEAYG1NwEBATCCATgwLgYIKwYBBQUHAgEWImh0
3040
+ dHA6Ly93d3cuc3RhcnRzc2wuY29tL3BvbGljeS5wZGYwNAYIKwYBBQUHAgEWKGh0dHA6Ly93d3cu
3041
+ c3RhcnRzc2wuY29tL2ludGVybWVkaWF0ZS5wZGYwgc8GCCsGAQUFBwICMIHCMCcWIFN0YXJ0IENv
3042
+ bW1lcmNpYWwgKFN0YXJ0Q29tKSBMdGQuMAMCAQEagZZMaW1pdGVkIExpYWJpbGl0eSwgcmVhZCB0
3043
+ aGUgc2VjdGlvbiAqTGVnYWwgTGltaXRhdGlvbnMqIG9mIHRoZSBTdGFydENvbSBDZXJ0aWZpY2F0
3044
+ aW9uIEF1dGhvcml0eSBQb2xpY3kgYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuc3RhcnRzc2wuY29t
3045
+ L3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilTdGFydENvbSBG
3046
+ cmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQsFAAOCAgEAjo/n3JR5
3047
+ fPGFf59Jb2vKXfuM/gTFwWLRfUKKvFO3lANmMD+x5wqnUCBVJX92ehQN6wQOQOY+2IirByeDqXWm
3048
+ N3PH/UvSTa0XQMhGvjt/UfzDtgUx3M2FIk5xt/JxXrAaxrqTi3iSSoX4eA+D/i+tLPfkpLst0OcN
3049
+ Org+zvZ49q5HJMqjNTbOx8aHmNrs++myziebiMMEofYLWWivydsQD032ZGNcpRJvkrKTlMeIFw6T
3050
+ tn5ii5B/q06f/ON1FE8qMt9bDeD1e5MNq6HPh+GlBEXoPBKlCcWw0bdT82AUuoVpaiF8H3VhFyAX
3051
+ e2w7QSlc4axa0c2Mm+tgHRns9+Ww2vl5GKVFP0lDV9LdJNUso/2RjSe15esUBppMeyG7Oq0wBhjA
3052
+ 2MFrLH9ZXF2RsXAiV+uKa0hK1Q8p7MZAwC+ITGgBF3f0JBlPvfrhsiAhS90a2Cl9qrjeVOwhVYBs
3053
+ HvUwyKMQ5bLmKhQxw4UtjJixhlpPiVktucf3HMiKf8CdBUrmQk9io20ppB+Fq9vlgcitKj1MXVuE
3054
+ JnHEhV5xJMqlG2zYYdMa4FTbzrqpMrUi9nNBCV24F10OD5mQ1kfabwo6YigUZ4LZ8dCAWZvLMdib
3055
+ D4x3TrVoivJs9iQOLWxwxXPR3hTQcY+203sC9uO41Alua551hDnmfyWl8kgAwKQB2j8=
3056
+ -----END CERTIFICATE-----
3057
+
3058
+ StartCom Certification Authority G2
3059
+ ===================================
3060
+ -----BEGIN CERTIFICATE-----
3061
+ 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
3085
+ obp573PYtlNXLfbQ4ddI
3086
+ -----END CERTIFICATE-----
3087
+
3088
+ Buypass Class 2 Root CA
3089
+ =======================
3090
+ -----BEGIN CERTIFICATE-----
3091
+ MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU
3092
+ QnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3MgQ2xhc3MgMiBSb290IENBMB4X
3093
+ DTEwMTAyNjA4MzgwM1oXDTQwMTAyNjA4MzgwM1owTjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1
3094
+ eXBhc3MgQVMtOTgzMTYzMzI3MSAwHgYDVQQDDBdCdXlwYXNzIENsYXNzIDIgUm9vdCBDQTCCAiIw
3095
+ DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANfHXvfBB9R3+0Mh9PT1aeTuMgHbo4Yf5FkNuud1
3096
+ g1Lr6hxhFUi7HQfKjK6w3Jad6sNgkoaCKHOcVgb/S2TwDCo3SbXlzwx87vFKu3MwZfPVL4O2fuPn
3097
+ 9Z6rYPnT8Z2SdIrkHJasW4DptfQxh6NR/Md+oW+OU3fUl8FVM5I+GC911K2GScuVr1QGbNgGE41b
3098
+ /+EmGVnAJLqBcXmQRFBoJJRfuLMR8SlBYaNByyM21cHxMlAQTn/0hpPshNOOvEu/XAFOBz3cFIqU
3099
+ CqTqc/sLUegTBxj6DvEr0VQVfTzh97QZQmdiXnfgolXsttlpF9U6r0TtSsWe5HonfOV116rLJeff
3100
+ awrbD02TTqigzXsu8lkBarcNuAeBfos4GzjmCleZPe4h6KP1DBbdi+w0jpwqHAAVF41og9JwnxgI
3101
+ zRFo1clrUs3ERo/ctfPYV3Me6ZQ5BL/T3jjetFPsaRyifsSP5BtwrfKi+fv3FmRmaZ9JUaLiFRhn
3102
+ Bkp/1Wy1TbMz4GHrXb7pmA8y1x1LPC5aAVKRCfLf6o3YBkBjqhHk/sM3nhRSP/TizPJhk9H9Z2vX
3103
+ Uq6/aKtAQ6BXNVN48FP4YUIHZMbXb5tMOA1jrGKvNouicwoN9SG9dKpN6nIDSdvHXx1iY8f93ZHs
3104
+ M+71bbRuMGjeyNYmsHVee7QHIJihdjK4TWxPAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD
3105
+ VR0OBBYEFMmAd+BikoL1RpzzuvdMw964o605MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsF
3106
+ AAOCAgEAU18h9bqwOlI5LJKwbADJ784g7wbylp7ppHR/ehb8t/W2+xUbP6umwHJdELFx7rxP462s
3107
+ A20ucS6vxOOto70MEae0/0qyexAQH6dXQbLArvQsWdZHEIjzIVEpMMpghq9Gqx3tOluwlN5E40EI
3108
+ osHsHdb9T7bWR9AUC8rmyrV7d35BH16Dx7aMOZawP5aBQW9gkOLo+fsicdl9sz1Gv7SEr5AcD48S
3109
+ aq/v7h56rgJKihcrdv6sVIkkLE8/trKnToyokZf7KcZ7XC25y2a2t6hbElGFtQl+Ynhw/qlqYLYd
3110
+ DnkM/crqJIByw5c/8nerQyIKx+u2DISCLIBrQYoIwOula9+ZEsuK1V6ADJHgJgg2SMX6OBE1/yWD
3111
+ LfJ6v9r9jv6ly0UsH8SIU653DtmadsWOLB2jutXsMq7Aqqz30XpN69QH4kj3Io6wpJ9qzo6ysmD0
3112
+ oyLQI+uUWnpp3Q+/QFesa1lQ2aOZ4W7+jQF5JyMV3pKdewlNWudLSDBaGOYKbeaP4NK75t98biGC
3113
+ wWg5TbSYWGZizEqQXsP6JwSxeRV0mcy+rSDeJmAc61ZRpqPq5KM/p/9h3PFaTWwyI0PurKju7koS
3114
+ CTxdccK+efrCh2gdC/1cacwG0Jp9VJkqyTkaGa9LKkPzY11aWOIv4x3kqdbQCtCev9eBCfHJxyYN
3115
+ rJgWVqA=
3116
+ -----END CERTIFICATE-----
3117
+
3118
+ Buypass Class 3 Root CA
3119
+ =======================
3120
+ -----BEGIN CERTIFICATE-----
3121
+ MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU
3122
+ QnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3MgQ2xhc3MgMyBSb290IENBMB4X
3123
+ DTEwMTAyNjA4Mjg1OFoXDTQwMTAyNjA4Mjg1OFowTjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1
3124
+ eXBhc3MgQVMtOTgzMTYzMzI3MSAwHgYDVQQDDBdCdXlwYXNzIENsYXNzIDMgUm9vdCBDQTCCAiIw
3125
+ DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKXaCpUWUOOV8l6ddjEGMnqb8RB2uACatVI2zSRH
3126
+ sJ8YZLya9vrVediQYkwiL944PdbgqOkcLNt4EemOaFEVcsfzM4fkoF0LXOBXByow9c3EN3coTRiR
3127
+ 5r/VUv1xLXA+58bEiuPwKAv0dpihi4dVsjoT/Lc+JzeOIuOoTyrvYLs9tznDDgFHmV0ST9tD+leh
3128
+ 7fmdvhFHJlsTmKtdFoqwNxxXnUX/iJY2v7vKB3tvh2PX0DJq1l1sDPGzbjniazEuOQAnFN44wOwZ
3129
+ ZoYS6J1yFhNkUsepNxz9gjDthBgd9K5c/3ATAOux9TN6S9ZV+AWNS2mw9bMoNlwUxFFzTWsL8TQH
3130
+ 2xc519woe2v1n/MuwU8XKhDzzMro6/1rqy6any2CbgTUUgGTLT2G/H783+9CHaZr77kgxve9oKeV
3131
+ /afmiSTYzIw0bOIjL9kSGiG5VZFvC5F5GQytQIgLcOJ60g7YaEi7ghM5EFjp2CoHxhLbWNvSO1UQ
3132
+ RwUVZ2J+GGOmRj8JDlQyXr8NYnon74Do29lLBlo3WiXQCBJ31G8JUJc9yB3D34xFMFbG02SrZvPA
3133
+ Xpacw8Tvw3xrizp5f7NJzz3iiZ+gMEuFuZyUJHmPfWupRWgPK9Dx2hzLabjKSWJtyNBjYt1gD1iq
3134
+ j6G8BaVmos8bdrKEZLFMOVLAMLrwjEsCsLa3AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD
3135
+ VR0OBBYEFEe4zf/lb+74suwvTg75JbCOPGvDMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsF
3136
+ AAOCAgEAACAjQTUEkMJAYmDv4jVM1z+s4jSQuKFvdvoWFqRINyzpkMLyPPgKn9iB5btb2iUspKdV
3137
+ cSQy9sgL8rxq+JOssgfCX5/bzMiKqr5qb+FJEMwx14C7u8jYog5kV+qi9cKpMRXSIGrs/CIBKM+G
3138
+ uIAeqcwRpTzyFrNHnfzSgCHEy9BHcEGhyoMZCCxt8l13nIoUE9Q2HJLw5QY33KbmkJs4j1xrG0aG
3139
+ Q0JfPgEHU1RdZX33inOhmlRaHylDFCfChQ+1iHsaO5S3HWCntZznKWlXWpuTekMwGwPXYshApqr8
3140
+ ZORK15FTAaggiG6cX0S5y2CBNOxv033aSF/rtJC8LakcC6wc1aJoIIAE1vyxjy+7SjENSoYc6+I2
3141
+ KSb12tjE8nVhz36udmNKekBlk4f4HoCMhuWG1o8O/FMsYOgWYRqiPkN7zTlgVGr18okmAWiDSKIz
3142
+ 6MkEkbIRNBE+6tBDGR8Dk5AM/1E9V/RBbuHLoL7ryWPNbczk+DaqaJ3tvV2XcEQNtg413OEMXbug
3143
+ UZTLfhbrES+jkkXITHHZvMmZUldGL1DPvTVp9D0VzgalLA8+9oG6lLvDu79leNKGef9JOxqDDPDe
3144
+ eOzI8k1MGt6CKfjBWtrt7uYnXuhF0J0cUahoq0Tj0Itq4/g7u9xN12TyUb7mqqta6THuBrxzvxNi
3145
+ Cp/HuZc=
3146
+ -----END CERTIFICATE-----
3147
+
3148
+ T-TeleSec GlobalRoot Class 3
3149
+ ============================
3150
+ -----BEGIN CERTIFICATE-----
3151
+ MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoM
3152
+ IlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBU
3153
+ cnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwHhcNMDgx
3154
+ MDAxMTAyOTU2WhcNMzMxMDAxMjM1OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lz
3155
+ dGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBD
3156
+ ZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwggEiMA0GCSqGSIb3
3157
+ DQEBAQUAA4IBDwAwggEKAoIBAQC9dZPwYiJvJK7genasfb3ZJNW4t/zN8ELg63iIVl6bmlQdTQyK
3158
+ 9tPPcPRStdiTBONGhnFBSivwKixVA9ZIw+A5OO3yXDw/RLyTPWGrTs0NvvAgJ1gORH8EGoel15YU
3159
+ NpDQSXuhdfsaa3Ox+M6pCSzyU9XDFES4hqX2iys52qMzVNn6chr3IhUciJFrf2blw2qAsCTz34ZF
3160
+ iP0Zf3WHHx+xGwpzJFu5ZeAsVMhg02YXP+HMVDNzkQI6pn97djmiH5a2OK61yJN0HZ65tOVgnS9W
3161
+ 0eDrXltMEnAMbEQgqxHY9Bn20pxSN+f6tsIxO0rUFJmtxxr1XV/6B7h8DR/Wgx6zAgMBAAGjQjBA
3162
+ MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS1A/d2O2GCahKqGFPr
3163
+ AyGUv/7OyjANBgkqhkiG9w0BAQsFAAOCAQEAVj3vlNW92nOyWL6ukK2YJ5f+AbGwUgC4TeQbIXQb
3164
+ fsDuXmkqJa9c1h3a0nnJ85cp4IaH3gRZD/FZ1GSFS5mvJQQeyUapl96Cshtwn5z2r3Ex3XsFpSzT
3165
+ ucpH9sry9uetuUg/vBa3wW306gmv7PO15wWeph6KU1HWk4HMdJP2udqmJQV0eVp+QD6CSyYRMG7h
3166
+ P0HHRwA11fXT91Q+gT3aSWqas+8QPebrb9HIIkfLzM8BMZLZGOMivgkeGj5asuRrDFR6fUNOuIml
3167
+ e9eiPZaGzPImNC1qkp2aGtAw4l1OBLBfiyB+d8E9lYLRRpo7PHi4b6HQDWSieB4pTpPDpFQUWw==
3168
+ -----END CERTIFICATE-----
3169
+
3170
+ EE Certification Centre Root CA
3171
+ ===============================
3172
+ -----BEGIN CERTIFICATE-----
3173
+ MIIEAzCCAuugAwIBAgIQVID5oHPtPwBMyonY43HmSjANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQG
3174
+ EwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1czEoMCYGA1UEAwwfRUUgQ2Vy
3175
+ dGlmaWNhdGlvbiBDZW50cmUgUm9vdCBDQTEYMBYGCSqGSIb3DQEJARYJcGtpQHNrLmVlMCIYDzIw
3176
+ MTAxMDMwMTAxMDMwWhgPMjAzMDEyMTcyMzU5NTlaMHUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKDBlB
3177
+ UyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMSgwJgYDVQQDDB9FRSBDZXJ0aWZpY2F0aW9uIENlbnRy
3178
+ ZSBSb290IENBMRgwFgYJKoZIhvcNAQkBFglwa2lAc2suZWUwggEiMA0GCSqGSIb3DQEBAQUAA4IB
3179
+ DwAwggEKAoIBAQDIIMDs4MVLqwd4lfNE7vsLDP90jmG7sWLqI9iroWUyeuuOF0+W2Ap7kaJjbMeM
3180
+ TC55v6kF/GlclY1i+blw7cNRfdCT5mzrMEvhvH2/UpvObntl8jixwKIy72KyaOBhU8E2lf/slLo2
3181
+ rpwcpzIP5Xy0xm90/XsY6KxX7QYgSzIwWFv9zajmofxwvI6Sc9uXp3whrj3B9UiHbCe9nyV0gVWw
3182
+ 93X2PaRka9ZP585ArQ/dMtO8ihJTmMmJ+xAdTX7Nfh9WDSFwhfYggx/2uh8Ej+p3iDXE/+pOoYtN
3183
+ P2MbRMNE1CV2yreN1x5KZmTNXMWcg+HCCIia7E6j8T4cLNlsHaFLAgMBAAGjgYowgYcwDwYDVR0T
3184
+ AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBLyWj7qVhy/zQas8fElyalL1BSZ
3185
+ MEUGA1UdJQQ+MDwGCCsGAQUFBwMCBggrBgEFBQcDAQYIKwYBBQUHAwMGCCsGAQUFBwMEBggrBgEF
3186
+ BQcDCAYIKwYBBQUHAwkwDQYJKoZIhvcNAQEFBQADggEBAHv25MANqhlHt01Xo/6tu7Fq1Q+e2+Rj
3187
+ xY6hUFaTlrg4wCQiZrxTFGGVv9DHKpY5P30osxBAIWrEr7BSdxjhlthWXePdNl4dp1BUoMUq5KqM
3188
+ lIpPnTX/dqQGE5Gion0ARD9V04I8GtVbvFZMIi5GQ4okQC3zErg7cBqklrkar4dBGmoYDQZPxz5u
3189
+ uSlNDUmJEYcyW+ZLBMjkXOZ0c5RdFpgTlf7727FE5TpwrDdr5rMzcijJs1eg9gIWiAYLtqZLICjU
3190
+ 3j2LrTcFU3T+bsy8QxdxXvnFzBqpYe73dgzzcvRyrc9yAjYHR8/vGVCJYMzpJJUPwssd8m92kMfM
3191
+ dcGWxZ0=
3192
+ -----END CERTIFICATE-----
3193
+
3194
+ TURKTRUST Certificate Services Provider Root 2007
3195
+ =================================================
3196
+ -----BEGIN CERTIFICATE-----
3197
+ MIIEPTCCAyWgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBvzE/MD0GA1UEAww2VMOcUktUUlVTVCBF
3198
+ bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEP
3199
+ MA0GA1UEBwwGQW5rYXJhMV4wXAYDVQQKDFVUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUg
3200
+ QmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgQXJhbMSxayAyMDA3MB4X
3201
+ DTA3MTIyNTE4MzcxOVoXDTE3MTIyMjE4MzcxOVowgb8xPzA9BgNVBAMMNlTDnFJLVFJVU1QgRWxl
3202
+ a3Ryb25payBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsTELMAkGA1UEBhMCVFIxDzAN
3203
+ BgNVBAcMBkFua2FyYTFeMFwGA1UECgxVVMOcUktUUlVTVCBCaWxnaSDEsGxldGnFn2ltIHZlIEJp
3204
+ bGnFn2ltIEfDvHZlbmxpxJ9pIEhpem1ldGxlcmkgQS7Fni4gKGMpIEFyYWzEsWsgMjAwNzCCASIw
3205
+ DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKu3PgqMyKVYFeaK7yc9SrToJdPNM8Ig3BnuiD9N
3206
+ YvDdE3ePYakqtdTyuTFYKTsvP2qcb3N2Je40IIDu6rfwxArNK4aUyeNgsURSsloptJGXg9i3phQv
3207
+ KUmi8wUG+7RP2qFsmmaf8EMJyupyj+sA1zU511YXRxcw9L6/P8JorzZAwan0qafoEGsIiveGHtya
3208
+ KhUG9qPw9ODHFNRRf8+0222vR5YXm3dx2KdxnSQM9pQ/hTEST7ruToK4uT6PIzdezKKqdfcYbwnT
3209
+ rqdUKDT74eA7YH2gvnmJhsifLfkKS8RQouf9eRbHegsYz85M733WB2+Y8a+xwXrXgTW4qhe04MsC
3210
+ AwEAAaNCMEAwHQYDVR0OBBYEFCnFkKslrxHkYb+j/4hhkeYO/pyBMA4GA1UdDwEB/wQEAwIBBjAP
3211
+ BgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQAQDdr4Ouwo0RSVgrESLFF6QSU2TJ/s
3212
+ Px+EnWVUXKgWAkD6bho3hO9ynYYKVZ1WKKxmLNA6VpM0ByWtCLCPyA8JWcqdmBzlVPi5RX9ql2+I
3213
+ aE1KBiY3iAIOtsbWcpnOa3faYjGkVh+uX4132l32iPwa2Z61gfAyuOOI0JzzaqC5mxRZNTZPz/OO
3214
+ Xl0XrRWV2N2y1RVuAE6zS89mlOTgzbUF2mNXi+WzqtvALhyQRNsaXRik7r4EW5nVcV9VZWRi1aKb
3215
+ BFmGyGJ353yCRWo9F7/snXUMrqNvWtMvmDb08PUZqxFdyKbjKlhqQgnDvZImZjINXQhVdP+MmNAK
3216
+ poRq0Tl9
3217
+ -----END CERTIFICATE-----
3218
+
3219
+ D-TRUST Root Class 3 CA 2 2009
3220
+ ==============================
3221
+ -----BEGIN CERTIFICATE-----
3222
+ MIIEMzCCAxugAwIBAgIDCYPzMA0GCSqGSIb3DQEBCwUAME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQK
3223
+ DAxELVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTAe
3224
+ Fw0wOTExMDUwODM1NThaFw0yOTExMDUwODM1NThaME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQKDAxE
3225
+ LVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTCCASIw
3226
+ DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANOySs96R+91myP6Oi/WUEWJNTrGa9v+2wBoqOAD
3227
+ ER03UAifTUpolDWzU9GUY6cgVq/eUXjsKj3zSEhQPgrfRlWLJ23DEE0NkVJD2IfgXU42tSHKXzlA
3228
+ BF9bfsyjxiupQB7ZNoTWSPOSHjRGICTBpFGOShrvUD9pXRl/RcPHAY9RySPocq60vFYJfxLLHLGv
3229
+ KZAKyVXMD9O0Gu1HNVpK7ZxzBCHQqr0ME7UAyiZsxGsMlFqVlNpQmvH/pStmMaTJOKDfHR+4CS7z
3230
+ p+hnUquVH+BGPtikw8paxTGA6Eian5Rp/hnd2HN8gcqW3o7tszIFZYQ05ub9VxC1X3a/L7AQDcUC
3231
+ AwEAAaOCARowggEWMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFP3aFMSfMN4hvR5COfyrYyNJ
3232
+ 4PGEMA4GA1UdDwEB/wQEAwIBBjCB0wYDVR0fBIHLMIHIMIGAoH6gfIZ6bGRhcDovL2RpcmVjdG9y
3233
+ eS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwUm9vdCUyMENsYXNzJTIwMyUyMENBJTIwMiUyMDIw
3234
+ MDksTz1ELVRydXN0JTIwR21iSCxDPURFP2NlcnRpZmljYXRlcmV2b2NhdGlvbmxpc3QwQ6BBoD+G
3235
+ PWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvY3JsL2QtdHJ1c3Rfcm9vdF9jbGFzc18zX2NhXzJfMjAw
3236
+ OS5jcmwwDQYJKoZIhvcNAQELBQADggEBAH+X2zDI36ScfSF6gHDOFBJpiBSVYEQBrLLpME+bUMJm
3237
+ 2H6NMLVwMeniacfzcNsgFYbQDfC+rAF1hM5+n02/t2A7nPPKHeJeaNijnZflQGDSNiH+0LS4F9p0
3238
+ o3/U37CYAqxva2ssJSRyoWXuJVrl5jLn8t+rSfrzkGkj2wTZ51xY/GXUl77M/C4KzCUqNQT4YJEV
3239
+ dT1B/yMfGchs64JTBKbkTCJNjYy6zltz7GRUUG3RnFX7acM2w4y8PIWmawomDeCTmGCufsYkl4ph
3240
+ X5GOZpIJhzbNi5stPvZR1FDUWSi9g/LMKHtThm3YJohw1+qRzT65ysCQblrGXnRl11z+o+I=
3241
+ -----END CERTIFICATE-----
3242
+
3243
+ D-TRUST Root Class 3 CA 2 EV 2009
3244
+ =================================
3245
+ -----BEGIN CERTIFICATE-----
3246
+ MIIEQzCCAyugAwIBAgIDCYP0MA0GCSqGSIb3DQEBCwUAMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQK
3247
+ DAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAw
3248
+ OTAeFw0wOTExMDUwODUwNDZaFw0yOTExMDUwODUwNDZaMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQK
3249
+ DAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAw
3250
+ OTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJnxhDRwui+3MKCOvXwEz75ivJn9gpfS
3251
+ egpnljgJ9hBOlSJzmY3aFS3nBfwZcyK3jpgAvDw9rKFs+9Z5JUut8Mxk2og+KbgPCdM03TP1YtHh
3252
+ zRnp7hhPTFiu4h7WDFsVWtg6uMQYZB7jM7K1iXdODL/ZlGsTl28So/6ZqQTMFexgaDbtCHu39b+T
3253
+ 7WYxg4zGcTSHThfqr4uRjRxWQa4iN1438h3Z0S0NL2lRp75mpoo6Kr3HGrHhFPC+Oh25z1uxav60
3254
+ sUYgovseO3Dvk5h9jHOW8sXvhXCtKSb8HgQ+HKDYD8tSg2J87otTlZCpV6LqYQXY+U3EJ/pure35
3255
+ 11H3a6UCAwEAAaOCASQwggEgMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNOUikxiEyoZLsyv
3256
+ cop9NteaHNxnMA4GA1UdDwEB/wQEAwIBBjCB3QYDVR0fBIHVMIHSMIGHoIGEoIGBhn9sZGFwOi8v
3257
+ ZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBSb290JTIwQ2xhc3MlMjAzJTIwQ0El
3258
+ MjAyJTIwRVYlMjAyMDA5LE89RC1UcnVzdCUyMEdtYkgsQz1ERT9jZXJ0aWZpY2F0ZXJldm9jYXRp
3259
+ b25saXN0MEagRKBChkBodHRwOi8vd3d3LmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X3Jvb3RfY2xh
3260
+ c3NfM19jYV8yX2V2XzIwMDkuY3JsMA0GCSqGSIb3DQEBCwUAA4IBAQA07XtaPKSUiO8aEXUHL7P+
3261
+ PPoeUSbrh/Yp3uDx1MYkCenBz1UbtDDZzhr+BlGmFaQt77JLvyAoJUnRpjZ3NOhk31KxEcdzes05
3262
+ nsKtjHEh8lprr988TlWvsoRlFIm5d8sqMb7Po23Pb0iUMkZv53GMoKaEGTcH8gNFCSuGdXzfX2lX
3263
+ ANtu2KZyIktQ1HWYVt+3GP9DQ1CuekR78HlR10M9p9OB0/DJT7naxpeG0ILD5EJt/rDiZE4OJudA
3264
+ NCa1CInXCGNjOCd1HjPqbqjdn5lPdE2BiYBL3ZqXKVwvvoFBuYz/6n1gBp7N1z3TLqMVvKjmJuVv
3265
+ w9y4AyHqnxbxLFS1
3266
+ -----END CERTIFICATE-----
3267
+
3268
+ PSCProcert
3269
+ ==========
3270
+ -----BEGIN CERTIFICATE-----
3271
+ MIIJhjCCB26gAwIBAgIBCzANBgkqhkiG9w0BAQsFADCCAR4xPjA8BgNVBAMTNUF1dG9yaWRhZCBk
3272
+ ZSBDZXJ0aWZpY2FjaW9uIFJhaXogZGVsIEVzdGFkbyBWZW5lem9sYW5vMQswCQYDVQQGEwJWRTEQ
3273
+ MA4GA1UEBxMHQ2FyYWNhczEZMBcGA1UECBMQRGlzdHJpdG8gQ2FwaXRhbDE2MDQGA1UEChMtU2lz
3274
+ dGVtYSBOYWNpb25hbCBkZSBDZXJ0aWZpY2FjaW9uIEVsZWN0cm9uaWNhMUMwQQYDVQQLEzpTdXBl
3275
+ cmludGVuZGVuY2lhIGRlIFNlcnZpY2lvcyBkZSBDZXJ0aWZpY2FjaW9uIEVsZWN0cm9uaWNhMSUw
3276
+ IwYJKoZIhvcNAQkBFhZhY3JhaXpAc3VzY2VydGUuZ29iLnZlMB4XDTEwMTIyODE2NTEwMFoXDTIw
3277
+ MTIyNTIzNTk1OVowgdExJjAkBgkqhkiG9w0BCQEWF2NvbnRhY3RvQHByb2NlcnQubmV0LnZlMQ8w
3278
+ DQYDVQQHEwZDaGFjYW8xEDAOBgNVBAgTB01pcmFuZGExKjAoBgNVBAsTIVByb3ZlZWRvciBkZSBD
3279
+ ZXJ0aWZpY2Fkb3MgUFJPQ0VSVDE2MDQGA1UEChMtU2lzdGVtYSBOYWNpb25hbCBkZSBDZXJ0aWZp
3280
+ Y2FjaW9uIEVsZWN0cm9uaWNhMQswCQYDVQQGEwJWRTETMBEGA1UEAxMKUFNDUHJvY2VydDCCAiIw
3281
+ DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANW39KOUM6FGqVVhSQ2oh3NekS1wwQYalNo97BVC
3282
+ wfWMrmoX8Yqt/ICV6oNEolt6Vc5Pp6XVurgfoCfAUFM+jbnADrgV3NZs+J74BCXfgI8Qhd19L3uA
3283
+ 3VcAZCP4bsm+lU/hdezgfl6VzbHvvnpC2Mks0+saGiKLt38GieU89RLAu9MLmV+QfI4tL3czkkoh
3284
+ RqipCKzx9hEC2ZUWno0vluYC3XXCFCpa1sl9JcLB/KpnheLsvtF8PPqv1W7/U0HU9TI4seJfxPmO
3285
+ EO8GqQKJ/+MMbpfg353bIdD0PghpbNjU5Db4g7ayNo+c7zo3Fn2/omnXO1ty0K+qP1xmk6wKImG2
3286
+ 0qCZyFSTXai20b1dCl53lKItwIKOvMoDKjSuc/HUtQy9vmebVOvh+qBa7Dh+PsHMosdEMXXqP+UH
3287
+ 0quhJZb25uSgXTcYOWEAM11G1ADEtMo88aKjPvM6/2kwLkDd9p+cJsmWN63nOaK/6mnbVSKVUyqU
3288
+ td+tFjiBdWbjxywbk5yqjKPK2Ww8F22c3HxT4CAnQzb5EuE8XL1mv6JpIzi4mWCZDlZTOpx+FIyw
3289
+ Bm/xhnaQr/2v/pDGj59/i5IjnOcVdo/Vi5QTcmn7K2FjiO/mpF7moxdqWEfLcU8UC17IAggmosvp
3290
+ r2uKGcfLFFb14dq12fy/czja+eevbqQ34gcnAgMBAAGjggMXMIIDEzASBgNVHRMBAf8ECDAGAQH/
3291
+ AgEBMDcGA1UdEgQwMC6CD3N1c2NlcnRlLmdvYi52ZaAbBgVghl4CAqASDBBSSUYtRy0yMDAwNDAz
3292
+ Ni0wMB0GA1UdDgQWBBRBDxk4qpl/Qguk1yeYVKIXTC1RVDCCAVAGA1UdIwSCAUcwggFDgBStuyId
3293
+ xuDSAaj9dlBSk+2YwU2u06GCASakggEiMIIBHjE+MDwGA1UEAxM1QXV0b3JpZGFkIGRlIENlcnRp
3294
+ ZmljYWNpb24gUmFpeiBkZWwgRXN0YWRvIFZlbmV6b2xhbm8xCzAJBgNVBAYTAlZFMRAwDgYDVQQH
3295
+ EwdDYXJhY2FzMRkwFwYDVQQIExBEaXN0cml0byBDYXBpdGFsMTYwNAYDVQQKEy1TaXN0ZW1hIE5h
3296
+ Y2lvbmFsIGRlIENlcnRpZmljYWNpb24gRWxlY3Ryb25pY2ExQzBBBgNVBAsTOlN1cGVyaW50ZW5k
3297
+ ZW5jaWEgZGUgU2VydmljaW9zIGRlIENlcnRpZmljYWNpb24gRWxlY3Ryb25pY2ExJTAjBgkqhkiG
3298
+ 9w0BCQEWFmFjcmFpekBzdXNjZXJ0ZS5nb2IudmWCAQowDgYDVR0PAQH/BAQDAgEGME0GA1UdEQRG
3299
+ MESCDnByb2NlcnQubmV0LnZloBUGBWCGXgIBoAwMClBTQy0wMDAwMDKgGwYFYIZeAgKgEgwQUklG
3300
+ LUotMzE2MzUzNzMtNzB2BgNVHR8EbzBtMEagRKBChkBodHRwOi8vd3d3LnN1c2NlcnRlLmdvYi52
3301
+ ZS9sY3IvQ0VSVElGSUNBRE8tUkFJWi1TSEEzODRDUkxERVIuY3JsMCOgIaAfhh1sZGFwOi8vYWNy
3302
+ YWl6LnN1c2NlcnRlLmdvYi52ZTA3BggrBgEFBQcBAQQrMCkwJwYIKwYBBQUHMAGGG2h0dHA6Ly9v
3303
+ Y3NwLnN1c2NlcnRlLmdvYi52ZTBBBgNVHSAEOjA4MDYGBmCGXgMBAjAsMCoGCCsGAQUFBwIBFh5o
3304
+ dHRwOi8vd3d3LnN1c2NlcnRlLmdvYi52ZS9kcGMwDQYJKoZIhvcNAQELBQADggIBACtZ6yKZu4Sq
3305
+ T96QxtGGcSOeSwORR3C7wJJg7ODU523G0+1ng3dS1fLld6c2suNUvtm7CpsR72H0xpkzmfWvADmN
3306
+ g7+mvTV+LFwxNG9s2/NkAZiqlCxB3RWGymspThbASfzXg0gTB1GEMVKIu4YXx2sviiCtxQuPcD4q
3307
+ uxtxj7mkoP3YldmvWb8lK5jpY5MvYB7Eqvh39YtsL+1+LrVPQA3uvFd359m21D+VJzog1eWuq2w1
3308
+ n8GhHVnchIHuTQfiSLaeS5UtQbHh6N5+LwUeaO6/u5BlOsju6rEYNxxik6SgMexxbJHmpHmJWhSn
3309
+ FFAFTKQAVzAswbVhltw+HoSvOULP5dAssSS830DD7X9jSr3hTxJkhpXzsOfIt+FTvZLm8wyWuevo
3310
+ 5pLtp4EJFAv8lXrPj9Y0TzYS3F7RNHXGRoAvlQSMx4bEqCaJqD8Zm4G7UaRKhqsLEQ+xrmNTbSjq
3311
+ 3TNWOByyrYDT13K9mmyZY+gAu0F2BbdbmRiKw7gSXFbPVgx96OLP7bx0R/vu0xdOIk9W/1DzLuY5
3312
+ poLWccret9W6aAjtmcz9opLLabid+Qqkpj5PkygqYWwHJgD/ll9ohri4zspV4KuxPX+Y1zMOWj3Y
3313
+ eMLEYC/HYvBhkdI4sPaeVdtAgAUSM84dkpvRabP/v/GSCmE1P93+hvS84Bpxs2Km
3314
+ -----END CERTIFICATE-----
3315
+
3316
+ China Internet Network Information Center EV Certificates Root
3317
+ ==============================================================
3318
+ -----BEGIN CERTIFICATE-----
3319
+ MIID9zCCAt+gAwIBAgIESJ8AATANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMCQ04xMjAwBgNV
3320
+ BAoMKUNoaW5hIEludGVybmV0IE5ldHdvcmsgSW5mb3JtYXRpb24gQ2VudGVyMUcwRQYDVQQDDD5D
3321
+ aGluYSBJbnRlcm5ldCBOZXR3b3JrIEluZm9ybWF0aW9uIENlbnRlciBFViBDZXJ0aWZpY2F0ZXMg
3322
+ Um9vdDAeFw0xMDA4MzEwNzExMjVaFw0zMDA4MzEwNzExMjVaMIGKMQswCQYDVQQGEwJDTjEyMDAG
3323
+ A1UECgwpQ2hpbmEgSW50ZXJuZXQgTmV0d29yayBJbmZvcm1hdGlvbiBDZW50ZXIxRzBFBgNVBAMM
3324
+ PkNoaW5hIEludGVybmV0IE5ldHdvcmsgSW5mb3JtYXRpb24gQ2VudGVyIEVWIENlcnRpZmljYXRl
3325
+ cyBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAm35z7r07eKpkQ0H1UN+U8i6y
3326
+ jUqORlTSIRLIOTJCBumD1Z9S7eVnAztUwYyZmczpwA//DdmEEbK40ctb3B75aDFk4Zv6dOtouSCV
3327
+ 98YPjUesWgbdYavi7NifFy2cyjw1l1VxzUOFsUcW9SxTgHbP0wBkvUCZ3czY28Sf1hNfQYOL+Q2H
3328
+ klY0bBoQCxfVWhyXWIQ8hBouXJE0bhlffxdpxWXvayHG1VA6v2G5BY3vbzQ6sm8UY78WO5upKv23
3329
+ KzhmBsUs4qpnHkWnjQRmQvaPK++IIGmPMowUc9orhpFjIpryp9vOiYurXccUwVswah+xt54ugQEC
3330
+ 7c+WXmPbqOY4twIDAQABo2MwYTAfBgNVHSMEGDAWgBR8cks5x8DbYqVPm6oYNJKiyoOCWTAPBgNV
3331
+ HRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUfHJLOcfA22KlT5uqGDSSosqD
3332
+ glkwDQYJKoZIhvcNAQEFBQADggEBACrDx0M3j92tpLIM7twUbY8opJhJywyA6vPtI2Z1fcXTIWd5
3333
+ 0XPFtQO3WKwMVC/GVhMPMdoG52U7HW8228gd+f2ABsqjPWYWqJ1MFn3AlUa1UeTiH9fqBk1jjZaM
3334
+ 7+czV0I664zBechNdn3e9rG3geCg+aF4RhcaVpjwTj2rHO3sOdwHSPdj/gauwqRcalsyiMXHM4Ws
3335
+ ZkJHwlgkmeHlPuV1LI5D1l08eB6olYIpUNHRFrrvwb562bTYzB5MRuF3sTGrvSrIzo9uoV1/A3U0
3336
+ 5K2JRVRevq4opbs/eHnrc7MKDf2+yfdWrPa37S+bISnHOLaVxATywy39FCqQmbkHzJ8=
3337
+ -----END CERTIFICATE-----
3338
+
3339
+ Swisscom Root CA 2
3340
+ ==================
3341
+ -----BEGIN CERTIFICATE-----
3342
+ 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
3368
+ 5OfNeOI5wSsSnqaeG8XmDtkx2Q==
3369
+ -----END CERTIFICATE-----
3370
+
3371
+ Swisscom Root EV CA 2
3372
+ =====================
3373
+ -----BEGIN CERTIFICATE-----
3374
+ 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
3400
+ l8PVP3wbI+2ksx0WckNLIOFZfsLorSa/ovc=
3401
+ -----END CERTIFICATE-----
3402
+
3403
+ CA Disig Root R1
3404
+ ================
3405
+ -----BEGIN CERTIFICATE-----
3406
+ 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
3430
+ a7+h89n07eLw4+1knj0vllJPgFOL
3431
+ -----END CERTIFICATE-----
3432
+
3433
+ CA Disig Root R2
3434
+ ================
3435
+ -----BEGIN CERTIFICATE-----
3436
+ MIIFaTCCA1GgAwIBAgIJAJK4iNuwisFjMA0GCSqGSIb3DQEBCwUAMFIxCzAJBgNVBAYTAlNLMRMw
3437
+ EQYDVQQHEwpCcmF0aXNsYXZhMRMwEQYDVQQKEwpEaXNpZyBhLnMuMRkwFwYDVQQDExBDQSBEaXNp
3438
+ ZyBSb290IFIyMB4XDTEyMDcxOTA5MTUzMFoXDTQyMDcxOTA5MTUzMFowUjELMAkGA1UEBhMCU0sx
3439
+ EzARBgNVBAcTCkJyYXRpc2xhdmExEzARBgNVBAoTCkRpc2lnIGEucy4xGTAXBgNVBAMTEENBIERp
3440
+ c2lnIFJvb3QgUjIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCio8QACdaFXS1tFPbC
3441
+ w3OeNcJxVX6B+6tGUODBfEl45qt5WDza/3wcn9iXAng+a0EE6UG9vgMsRfYvZNSrXaNHPWSb6Wia
3442
+ xswbP7q+sos0Ai6YVRn8jG+qX9pMzk0DIaPY0jSTVpbLTAwAFjxfGs3Ix2ymrdMxp7zo5eFm1tL7
3443
+ A7RBZckQrg4FY8aAamkw/dLukO8NJ9+flXP04SXabBbeQTg06ov80egEFGEtQX6sx3dOy1FU+16S
3444
+ GBsEWmjGycT6txOgmLcRK7fWV8x8nhfRyyX+hk4kLlYMeE2eARKmK6cBZW58Yh2EhN/qwGu1pSqV
3445
+ g8NTEQxzHQuyRpDRQjrOQG6Vrf/GlK1ul4SOfW+eioANSW1z4nuSHsPzwfPrLgVv2RvPN3YEyLRa
3446
+ 5Beny912H9AZdugsBbPWnDTYltxhh5EF5EQIM8HauQhl1K6yNg3ruji6DOWbnuuNZt2Zz9aJQfYE
3447
+ koopKW1rOhzndX0CcQ7zwOe9yxndnWCywmZgtrEE7snmhrmaZkCo5xHtgUUDi/ZnWejBBhG93c+A
3448
+ Ak9lQHhcR1DIm+YfgXvkRKhbhZri3lrVx/k6RGZL5DJUfORsnLMOPReisjQS1n6yqEm70XooQL6i
3449
+ Fh/f5DcfEXP7kAplQ6INfPgGAVUzfbANuPT1rqVCV3w2EYx7XsQDnYx5nQIDAQABo0IwQDAPBgNV
3450
+ HRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUtZn4r7CU9eMg1gqtzk5WpC5u
3451
+ Qu0wDQYJKoZIhvcNAQELBQADggIBACYGXnDnZTPIgm7ZnBc6G3pmsgH2eDtpXi/q/075KMOYKmFM
3452
+ tCQSin1tERT3nLXK5ryeJ45MGcipvXrA1zYObYVybqjGom32+nNjf7xueQgcnYqfGopTpti72TVV
3453
+ sRHFqQOzVju5hJMiXn7B9hJSi+osZ7z+Nkz1uM/Rs0mSO9MpDpkblvdhuDvEK7Z4bLQjb/D907Je
3454
+ dR+Zlais9trhxTF7+9FGs9K8Z7RiVLoJ92Owk6Ka+elSLotgEqv89WBW7xBci8QaQtyDW2QOy7W8
3455
+ 1k/BfDxujRNt+3vrMNDcTa/F1balTFtxyegxvug4BkihGuLq0t4SOVga/4AOgnXmt8kHbA7v/zjx
3456
+ mHHEt38OFdAlab0inSvtBfZGR6ztwPDUO+Ls7pZbkBNOHlY667DvlruWIxG68kOGdGSVyCh13x01
3457
+ utI3gzhTODY7z2zp+WsO0PsE6E9312UBeIYMej4hYvF/Y3EMyZ9E26gnonW+boE+18DrG5gPcFw0
3458
+ sorMwIUY6256s/daoQe/qUKS82Ail+QUoQebTnbAjn39pCXHR+3/H3OszMOl6W8KjptlwlCFtaOg
3459
+ UxLMVYdh84GuEEZhvUQhuMI9dM9+JDX6HAcOmz0iyu8xL4ysEr3vQCj8KWefshNPZiTEUxnpHikV
3460
+ 7+ZtsH8tZ/3zbBt1RqPlShfppNcL
3461
+ -----END CERTIFICATE-----
3462
+
3463
+ ACCVRAIZ1
3464
+ =========
3465
+ -----BEGIN CERTIFICATE-----
3466
+ MIIH0zCCBbugAwIBAgIIXsO3pkN/pOAwDQYJKoZIhvcNAQEFBQAwQjESMBAGA1UEAwwJQUNDVlJB
3467
+ SVoxMRAwDgYDVQQLDAdQS0lBQ0NWMQ0wCwYDVQQKDARBQ0NWMQswCQYDVQQGEwJFUzAeFw0xMTA1
3468
+ MDUwOTM3MzdaFw0zMDEyMzEwOTM3MzdaMEIxEjAQBgNVBAMMCUFDQ1ZSQUlaMTEQMA4GA1UECwwH
3469
+ UEtJQUNDVjENMAsGA1UECgwEQUNDVjELMAkGA1UEBhMCRVMwggIiMA0GCSqGSIb3DQEBAQUAA4IC
3470
+ DwAwggIKAoICAQCbqau/YUqXry+XZpp0X9DZlv3P4uRm7x8fRzPCRKPfmt4ftVTdFXxpNRFvu8gM
3471
+ jmoYHtiP2Ra8EEg2XPBjs5BaXCQ316PWywlxufEBcoSwfdtNgM3802/J+Nq2DoLSRYWoG2ioPej0
3472
+ RGy9ocLLA76MPhMAhN9KSMDjIgro6TenGEyxCQ0jVn8ETdkXhBilyNpAlHPrzg5XPAOBOp0KoVdD
3473
+ aaxXbXmQeOW1tDvYvEyNKKGno6e6Ak4l0Squ7a4DIrhrIA8wKFSVf+DuzgpmndFALW4ir50awQUZ
3474
+ 0m/A8p/4e7MCQvtQqR0tkw8jq8bBD5L/0KIV9VMJcRz/RROE5iZe+OCIHAr8Fraocwa48GOEAqDG
3475
+ WuzndN9wrqODJerWx5eHk6fGioozl2A3ED6XPm4pFdahD9GILBKfb6qkxkLrQaLjlUPTAYVtjrs7
3476
+ 8yM2x/474KElB0iryYl0/wiPgL/AlmXz7uxLaL2diMMxs0Dx6M/2OLuc5NF/1OVYm3z61PMOm3WR
3477
+ 5LpSLhl+0fXNWhn8ugb2+1KoS5kE3fj5tItQo05iifCHJPqDQsGH+tUtKSpacXpkatcnYGMN285J
3478
+ 9Y0fkIkyF/hzQ7jSWpOGYdbhdQrqeWZ2iE9x6wQl1gpaepPluUsXQA+xtrn13k/c4LOsOxFwYIRK
3479
+ Q26ZIMApcQrAZQIDAQABo4ICyzCCAscwfQYIKwYBBQUHAQEEcTBvMEwGCCsGAQUFBzAChkBodHRw
3480
+ Oi8vd3d3LmFjY3YuZXMvZmlsZWFkbWluL0FyY2hpdm9zL2NlcnRpZmljYWRvcy9yYWl6YWNjdjEu
3481
+ Y3J0MB8GCCsGAQUFBzABhhNodHRwOi8vb2NzcC5hY2N2LmVzMB0GA1UdDgQWBBTSh7Tj3zcnk1X2
3482
+ VuqB5TbMjB4/vTAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFNKHtOPfNyeTVfZW6oHlNsyM
3483
+ Hj+9MIIBcwYDVR0gBIIBajCCAWYwggFiBgRVHSAAMIIBWDCCASIGCCsGAQUFBwICMIIBFB6CARAA
3484
+ QQB1AHQAbwByAGkAZABhAGQAIABkAGUAIABDAGUAcgB0AGkAZgBpAGMAYQBjAGkA8wBuACAAUgBh
3485
+ AO0AegAgAGQAZQAgAGwAYQAgAEEAQwBDAFYAIAAoAEEAZwBlAG4AYwBpAGEAIABkAGUAIABUAGUA
3486
+ YwBuAG8AbABvAGcA7QBhACAAeQAgAEMAZQByAHQAaQBmAGkAYwBhAGMAaQDzAG4AIABFAGwAZQBj
3487
+ AHQAcgDzAG4AaQBjAGEALAAgAEMASQBGACAAUQA0ADYAMAAxADEANQA2AEUAKQAuACAAQwBQAFMA
3488
+ IABlAG4AIABoAHQAdABwADoALwAvAHcAdwB3AC4AYQBjAGMAdgAuAGUAczAwBggrBgEFBQcCARYk
3489
+ aHR0cDovL3d3dy5hY2N2LmVzL2xlZ2lzbGFjaW9uX2MuaHRtMFUGA1UdHwROMEwwSqBIoEaGRGh0
3490
+ dHA6Ly93d3cuYWNjdi5lcy9maWxlYWRtaW4vQXJjaGl2b3MvY2VydGlmaWNhZG9zL3JhaXphY2N2
3491
+ MV9kZXIuY3JsMA4GA1UdDwEB/wQEAwIBBjAXBgNVHREEEDAOgQxhY2N2QGFjY3YuZXMwDQYJKoZI
3492
+ hvcNAQEFBQADggIBAJcxAp/n/UNnSEQU5CmH7UwoZtCPNdpNYbdKl02125DgBS4OxnnQ8pdpD70E
3493
+ R9m+27Up2pvZrqmZ1dM8MJP1jaGo/AaNRPTKFpV8M9xii6g3+CfYCS0b78gUJyCpZET/LtZ1qmxN
3494
+ YEAZSUNUY9rizLpm5U9EelvZaoErQNV/+QEnWCzI7UiRfD+mAM/EKXMRNt6GGT6d7hmKG9Ww7Y49
3495
+ nCrADdg9ZuM8Db3VlFzi4qc1GwQA9j9ajepDvV+JHanBsMyZ4k0ACtrJJ1vnE5Bc5PUzolVt3OAJ
3496
+ TS+xJlsndQAJxGJ3KQhfnlmstn6tn1QwIgPBHnFk/vk4CpYY3QIUrCPLBhwepH2NDd4nQeit2hW3
3497
+ sCPdK6jT2iWH7ehVRE2I9DZ+hJp4rPcOVkkO1jMl1oRQQmwgEh0q1b688nCBpHBgvgW1m54ERL5h
3498
+ I6zppSSMEYCUWqKiuUnSwdzRp+0xESyeGabu4VXhwOrPDYTkF7eifKXeVSUG7szAh1xA2syVP1Xg
3499
+ Nce4hL60Xc16gwFy7ofmXx2utYXGJt/mwZrpHgJHnyqobalbz+xFd3+YJ5oyXSrjhO7FmGYvliAd
3500
+ 3djDJ9ew+f7Zfc3Qn48LFFhRny+Lwzgt3uiP1o2HpPVWQxaZLPSkVrQ0uGE3ycJYgBugl6H8WY3p
3501
+ EfbRD0tVNEYqi4Y7
3502
+ -----END CERTIFICATE-----
3503
+
3504
+ TWCA Global Root CA
3505
+ ===================
3506
+ -----BEGIN CERTIFICATE-----
3507
+ MIIFQTCCAymgAwIBAgICDL4wDQYJKoZIhvcNAQELBQAwUTELMAkGA1UEBhMCVFcxEjAQBgNVBAoT
3508
+ CVRBSVdBTi1DQTEQMA4GA1UECxMHUm9vdCBDQTEcMBoGA1UEAxMTVFdDQSBHbG9iYWwgUm9vdCBD
3509
+ QTAeFw0xMjA2MjcwNjI4MzNaFw0zMDEyMzExNTU5NTlaMFExCzAJBgNVBAYTAlRXMRIwEAYDVQQK
3510
+ EwlUQUlXQU4tQ0ExEDAOBgNVBAsTB1Jvb3QgQ0ExHDAaBgNVBAMTE1RXQ0EgR2xvYmFsIFJvb3Qg
3511
+ Q0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCwBdvI64zEbooh745NnHEKH1Jw7W2C
3512
+ nJfF10xORUnLQEK1EjRsGcJ0pDFfhQKX7EMzClPSnIyOt7h52yvVavKOZsTuKwEHktSz0ALfUPZV
3513
+ r2YOy+BHYC8rMjk1Ujoog/h7FsYYuGLWRyWRzvAZEk2tY/XTP3VfKfChMBwqoJimFb3u/Rk28OKR
3514
+ Q4/6ytYQJ0lM793B8YVwm8rqqFpD/G2Gb3PpN0Wp8DbHzIh1HrtsBv+baz4X7GGqcXzGHaL3SekV
3515
+ tTzWoWH1EfcFbx39Eb7QMAfCKbAJTibc46KokWofwpFFiFzlmLhxpRUZyXx1EcxwdE8tmx2RRP1W
3516
+ KKD+u4ZqyPpcC1jcxkt2yKsi2XMPpfRaAok/T54igu6idFMqPVMnaR1sjjIsZAAmY2E2TqNGtz99
3517
+ sy2sbZCilaLOz9qC5wc0GZbpuCGqKX6mOL6OKUohZnkfs8O1CWfe1tQHRvMq2uYiN2DLgbYPoA/p
3518
+ yJV/v1WRBXrPPRXAb94JlAGD1zQbzECl8LibZ9WYkTunhHiVJqRaCPgrdLQABDzfuBSO6N+pjWxn
3519
+ kjMdwLfS7JLIvgm/LCkFbwJrnu+8vyq8W8BQj0FwcYeyTbcEqYSjMq+u7msXi7Kx/mzhkIyIqJdI
3520
+ zshNy/MGz19qCkKxHh53L46g5pIOBvwFItIm4TFRfTLcDwIDAQABoyMwITAOBgNVHQ8BAf8EBAMC
3521
+ AQYwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAXzSBdu+WHdXltdkCY4QWwa6g
3522
+ cFGn90xHNcgL1yg9iXHZqjNB6hQbbCEAwGxCGX6faVsgQt+i0trEfJdLjbDorMjupWkEmQqSpqsn
3523
+ LhpNgb+E1HAerUf+/UqdM+DyucRFCCEK2mlpc3INvjT+lIutwx4116KD7+U4x6WFH6vPNOw/KP4M
3524
+ 8VeGTslV9xzU2KV9Bnpv1d8Q34FOIWWxtuEXeZVFBs5fzNxGiWNoRI2T9GRwoD2dKAXDOXC4Ynsg
3525
+ /eTb6QihuJ49CcdP+yz4k3ZB3lLg4VfSnQO8d57+nile98FRYB/e2guyLXW3Q0iT5/Z5xoRdgFlg
3526
+ lPx4mI88k1HtQJAH32RjJMtOcQWh15QaiDLxInQirqWm2BJpTGCjAu4r7NRjkgtevi92a6O2JryP
3527
+ A9gK8kxkRr05YuWW6zRjESjMlfGt7+/cgFhI6Uu46mWs6fyAtbXIRfmswZ/ZuepiiI7E8UuDEq3m
3528
+ i4TWnsLrgxifarsbJGAzcMzs9zLzXNl5fe+epP7JI8Mk7hWSsT2RTyaGvWZzJBPqpK5jwa19hAM8
3529
+ EHiGG3njxPPyBJUgriOCxLM6AGK/5jYk4Ve6xx6QddVfP5VhK8E7zeWzaGHQRiapIVJpLesux+t3
3530
+ zqY6tQMzT3bR51xUAV3LePTJDL/PEo4XLSNolOer/qmyKwbQBM0=
3531
+ -----END CERTIFICATE-----
3532
+
3533
+ TeliaSonera Root CA v1
3534
+ ======================
3535
+ -----BEGIN CERTIFICATE-----
3536
+ MIIFODCCAyCgAwIBAgIRAJW+FqD3LkbxezmCcvqLzZYwDQYJKoZIhvcNAQEFBQAwNzEUMBIGA1UE
3537
+ CgwLVGVsaWFTb25lcmExHzAdBgNVBAMMFlRlbGlhU29uZXJhIFJvb3QgQ0EgdjEwHhcNMDcxMDE4
3538
+ MTIwMDUwWhcNMzIxMDE4MTIwMDUwWjA3MRQwEgYDVQQKDAtUZWxpYVNvbmVyYTEfMB0GA1UEAwwW
3539
+ VGVsaWFTb25lcmEgUm9vdCBDQSB2MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMK+
3540
+ 6yfwIaPzaSZVfp3FVRaRXP3vIb9TgHot0pGMYzHw7CTww6XScnwQbfQ3t+XmfHnqjLWCi65ItqwA
3541
+ 3GV17CpNX8GH9SBlK4GoRz6JI5UwFpB/6FcHSOcZrr9FZ7E3GwYq/t75rH2D+1665I+XZ75Ljo1k
3542
+ B1c4VWk0Nj0TSO9P4tNmHqTPGrdeNjPUtAa9GAH9d4RQAEX1jF3oI7x+/jXh7VB7qTCNGdMJjmhn
3543
+ Xb88lxhTuylixcpecsHHltTbLaC0H2kD7OriUPEMPPCs81Mt8Bz17Ww5OXOAFshSsCPN4D7c3TxH
3544
+ oLs1iuKYaIu+5b9y7tL6pe0S7fyYGKkmdtwoSxAgHNN/Fnct7W+A90m7UwW7XWjH1Mh1Fj+JWov3
3545
+ F0fUTPHSiXk+TT2YqGHeOh7S+F4D4MHJHIzTjU3TlTazN19jY5szFPAtJmtTfImMMsJu7D0hADnJ
3546
+ oWjiUIMusDor8zagrC/kb2HCUQk5PotTubtn2txTuXZZNp1D5SDgPTJghSJRt8czu90VL6R4pgd7
3547
+ gUY2BIbdeTXHlSw7sKMXNeVzH7RcWe/a6hBle3rQf5+ztCo3O3CLm1u5K7fsslESl1MpWtTwEhDc
3548
+ TwK7EpIvYtQ/aUN8Ddb8WHUBiJ1YFkveupD/RwGJBmr2X7KQarMCpgKIv7NHfirZ1fpoeDVNAgMB
3549
+ AAGjPzA9MA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1UdDgQWBBTwj1k4ALP1j5qW
3550
+ DNXr+nuqF+gTEjANBgkqhkiG9w0BAQUFAAOCAgEAvuRcYk4k9AwI//DTDGjkk0kiP0Qnb7tt3oNm
3551
+ zqjMDfz1mgbldxSR651Be5kqhOX//CHBXfDkH1e3damhXwIm/9fH907eT/j3HEbAek9ALCI18Bmx
3552
+ 0GtnLLCo4MBANzX2hFxc469CeP6nyQ1Q6g2EdvZR74NTxnr/DlZJLo961gzmJ1TjTQpgcmLNkQfW
3553
+ pb/ImWvtxBnmq0wROMVvMeJuScg/doAmAyYp4Db29iBT4xdwNBedY2gea+zDTYa4EzAvXUYNR0PV
3554
+ G6pZDrlcjQZIrXSHX8f8MVRBE+LHIQ6e4B4N4cB7Q4WQxYpYxmUKeFfyxiMPAdkgS94P+5KFdSpc
3555
+ c41teyWRyu5FrgZLAMzTsVlQ2jqIOylDRl6XK1TOU2+NSueW+r9xDkKLfP0ooNBIytrEgUy7onOT
3556
+ JsjrDNYmiLbAJM+7vVvrdX3pCI6GMyx5dwlppYn8s3CQh3aP0yK7Qs69cwsgJirQmz1wHiRszYd2
3557
+ qReWt88NkvuOGKmYSdGe/mBEciG5Ge3C9THxOUiIkCR1VBatzvT4aRRkOfujuLpwQMcnHL/EVlP6
3558
+ Y2XQ8xwOFvVrhlhNGNTkDY6lnVuR3HYkUD/GKvvZt5y11ubQ2egZixVxSK236thZiNSQvxaz2ems
3559
+ WWFUyBy6ysHK4bkgTI86k4mloMy/0/Z1pHWWbVY=
3560
+ -----END CERTIFICATE-----
3561
+
3562
+ E-Tugra Certification Authority
3563
+ ===============================
3564
+ -----BEGIN CERTIFICATE-----
3565
+ MIIGSzCCBDOgAwIBAgIIamg+nFGby1MwDQYJKoZIhvcNAQELBQAwgbIxCzAJBgNVBAYTAlRSMQ8w
3566
+ DQYDVQQHDAZBbmthcmExQDA+BgNVBAoMN0UtVHXEn3JhIEVCRyBCaWxpxZ9pbSBUZWtub2xvamls
3567
+ ZXJpIHZlIEhpem1ldGxlcmkgQS7Fni4xJjAkBgNVBAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBN
3568
+ ZXJrZXppMSgwJgYDVQQDDB9FLVR1Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTEzMDMw
3569
+ NTEyMDk0OFoXDTIzMDMwMzEyMDk0OFowgbIxCzAJBgNVBAYTAlRSMQ8wDQYDVQQHDAZBbmthcmEx
3570
+ QDA+BgNVBAoMN0UtVHXEn3JhIEVCRyBCaWxpxZ9pbSBUZWtub2xvamlsZXJpIHZlIEhpem1ldGxl
3571
+ cmkgQS7Fni4xJjAkBgNVBAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBNZXJrZXppMSgwJgYDVQQD
3572
+ DB9FLVR1Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0BAQEFAAOCAg8A
3573
+ MIICCgKCAgEA4vU/kwVRHoViVF56C/UYB4Oufq9899SKa6VjQzm5S/fDxmSJPZQuVIBSOTkHS0vd
3574
+ hQd2h8y/L5VMzH2nPbxHD5hw+IyFHnSOkm0bQNGZDbt1bsipa5rAhDGvykPL6ys06I+XawGb1Q5K
3575
+ CKpbknSFQ9OArqGIW66z6l7LFpp3RMih9lRozt6Plyu6W0ACDGQXwLWTzeHxE2bODHnv0ZEoq1+g
3576
+ ElIwcxmOj+GMB6LDu0rw6h8VqO4lzKRG+Bsi77MOQ7osJLjFLFzUHPhdZL3Dk14opz8n8Y4e0ypQ
3577
+ BaNV2cvnOVPAmJ6MVGKLJrD3fY185MaeZkJVgkfnsliNZvcHfC425lAcP9tDJMW/hkd5s3kc91r0
3578
+ E+xs+D/iWR+V7kI+ua2oMoVJl0b+SzGPWsutdEcf6ZG33ygEIqDUD13ieU/qbIWGvaimzuT6w+Gz
3579
+ rt48Ue7LE3wBf4QOXVGUnhMMti6lTPk5cDZvlsouDERVxcr6XQKj39ZkjFqzAQqptQpHF//vkUAq
3580
+ jqFGOjGY5RH8zLtJVor8udBhmm9lbObDyz51Sf6Pp+KJxWfXnUYTTjF2OySznhFlhqt/7x3U+Lzn
3581
+ rFpct1pHXFXOVbQicVtbC/DP3KBhZOqp12gKY6fgDT+gr9Oq0n7vUaDmUStVkhUXU8u3Zg5mTPj5
3582
+ dUyQ5xJwx0UCAwEAAaNjMGEwHQYDVR0OBBYEFC7j27JJ0JxUeVz6Jyr+zE7S6E5UMA8GA1UdEwEB
3583
+ /wQFMAMBAf8wHwYDVR0jBBgwFoAULuPbsknQnFR5XPonKv7MTtLoTlQwDgYDVR0PAQH/BAQDAgEG
3584
+ MA0GCSqGSIb3DQEBCwUAA4ICAQAFNzr0TbdF4kV1JI+2d1LoHNgQk2Xz8lkGpD4eKexd0dCrfOAK
3585
+ kEh47U6YA5n+KGCRHTAduGN8qOY1tfrTYXbm1gdLymmasoR6d5NFFxWfJNCYExL/u6Au/U5Mh/jO
3586
+ XKqYGwXgAEZKgoClM4so3O0409/lPun++1ndYYRP0lSWE2ETPo+Aab6TR7U1Q9Jauz1c77NCR807
3587
+ VRMGsAnb/WP2OogKmW9+4c4bU2pEZiNRCHu8W1Ki/QY3OEBhj0qWuJA3+GbHeJAAFS6LrVE1Uweo
3588
+ a2iu+U48BybNCAVwzDk/dr2l02cmAYamU9JgO3xDf1WKvJUawSg5TB9D0pH0clmKuVb8P7Sd2nCc
3589
+ dlqMQ1DujjByTd//SffGqWfZbawCEeI6FiWnWAjLb1NBnEg4R2gz0dfHj9R0IdTDBZB6/86WiLEV
3590
+ KV0jq9BgoRJP3vQXzTLlyb/IQ639Lo7xr+L0mPoSHyDYwKcMhcWQ9DstliaxLL5Mq+ux0orJ23gT
3591
+ Dx4JnW2PAJ8C2sH6H3p6CcRK5ogql5+Ji/03X186zjhZhkuvcQu02PJwT58yE+Owp1fl2tpDy4Q0
3592
+ 8ijE6m30Ku/Ba3ba+367hTzSU8JNvnHhRdH9I2cNE3X7z2VnIp2usAnRCf8dNL/+I5c30jn6PQ0G
3593
+ C7TbO6Orb1wdtn7os4I07QZcJA==
3594
+ -----END CERTIFICATE-----
3595
+
3596
+ T-TeleSec GlobalRoot Class 2
3597
+ ============================
3598
+ -----BEGIN CERTIFICATE-----
3599
+ MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoM
3600
+ IlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBU
3601
+ cnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwHhcNMDgx
3602
+ MDAxMTA0MDE0WhcNMzMxMDAxMjM1OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lz
3603
+ dGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBD
3604
+ ZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwggEiMA0GCSqGSIb3
3605
+ DQEBAQUAA4IBDwAwggEKAoIBAQCqX9obX+hzkeXaXPSi5kfl82hVYAUdAqSzm1nzHoqvNK38DcLZ
3606
+ SBnuaY/JIPwhqgcZ7bBcrGXHX+0CfHt8LRvWurmAwhiCFoT6ZrAIxlQjgeTNuUk/9k9uN0goOA/F
3607
+ vudocP05l03Sx5iRUKrERLMjfTlH6VJi1hKTXrcxlkIF+3anHqP1wvzpesVsqXFP6st4vGCvx970
3608
+ 2cu+fjOlbpSD8DT6IavqjnKgP6TeMFvvhk1qlVtDRKgQFRzlAVfFmPHmBiiRqiDFt1MmUUOyCxGV
3609
+ WOHAD3bZwI18gfNycJ5v/hqO2V81xrJvNHy+SE/iWjnX2J14np+GPgNeGYtEotXHAgMBAAGjQjBA
3610
+ MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS/WSA2AHmgoCJrjNXy
3611
+ YdK4LMuCSjANBgkqhkiG9w0BAQsFAAOCAQEAMQOiYQsfdOhyNsZt+U2e+iKo4YFWz827n+qrkRk4
3612
+ r6p8FU3ztqONpfSO9kSpp+ghla0+AGIWiPACuvxhI+YzmzB6azZie60EI4RYZeLbK4rnJVM3YlNf
3613
+ vNoBYimipidx5joifsFvHZVwIEoHNN/q/xWA5brXethbdXwFeilHfkCoMRN3zUA7tFFHei4R40cR
3614
+ 3p1m0IvVVGb6g1XqfMIpiRvpb7PO4gWEyS8+eIVibslfwXhjdFjASBgMmTnrpMwatXlajRWc2BQN
3615
+ 9noHV8cigwUtPJslJj0Ys6lDfMjIq2SPDqO/nBudMNva0Bkuqjzx+zOAduTNrRlPBSeOE6Fuwg==
3616
+ -----END CERTIFICATE-----
3617
+
3618
+ Atos TrustedRoot 2011
3619
+ =====================
3620
+ -----BEGIN CERTIFICATE-----
3621
+ MIIDdzCCAl+gAwIBAgIIXDPLYixfszIwDQYJKoZIhvcNAQELBQAwPDEeMBwGA1UEAwwVQXRvcyBU
3622
+ cnVzdGVkUm9vdCAyMDExMQ0wCwYDVQQKDARBdG9zMQswCQYDVQQGEwJERTAeFw0xMTA3MDcxNDU4
3623
+ MzBaFw0zMDEyMzEyMzU5NTlaMDwxHjAcBgNVBAMMFUF0b3MgVHJ1c3RlZFJvb3QgMjAxMTENMAsG
3624
+ A1UECgwEQXRvczELMAkGA1UEBhMCREUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCV
3625
+ hTuXbyo7LjvPpvMpNb7PGKw+qtn4TaA+Gke5vJrf8v7MPkfoepbCJI419KkM/IL9bcFyYie96mvr
3626
+ 54rMVD6QUM+A1JX76LWC1BTFtqlVJVfbsVD2sGBkWXppzwO3bw2+yj5vdHLqqjAqc2K+SZFhyBH+
3627
+ DgMq92og3AIVDV4VavzjgsG1xZ1kCWyjWZgHJ8cblithdHFsQ/H3NYkQ4J7sVaE3IqKHBAUsR320
3628
+ HLliKWYoyrfhk/WklAOZuXCFteZI6o1Q/NnezG8HDt0Lcp2AMBYHlT8oDv3FdU9T1nSatCQujgKR
3629
+ z3bFmx5VdJx4IbHwLfELn8LVlhgf8FQieowHAgMBAAGjfTB7MB0GA1UdDgQWBBSnpQaxLKYJYO7R
3630
+ l+lwrrw7GWzbITAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKelBrEspglg7tGX6XCuvDsZ
3631
+ bNshMBgGA1UdIAQRMA8wDQYLKwYBBAGwLQMEAQEwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEB
3632
+ CwUAA4IBAQAmdzTblEiGKkGdLD4GkGDEjKwLVLgfuXvTBznk+j57sj1O7Z8jvZfza1zv7v1Apt+h
3633
+ k6EKhqzvINB5Ab149xnYJDE0BAGmuhWawyfc2E8PzBhj/5kPDpFrdRbhIfzYJsdHt6bPWHJxfrrh
3634
+ TZVHO8mvbaG0weyJ9rQPOLXiZNwlz6bb65pcmaHFCN795trV1lpFDMS3wrUU77QR/w4VtfX128a9
3635
+ 61qn8FYiqTxlVMYVqL2Gns2Dlmh6cYGJ4Qvh6hEbaAjMaZ7snkGeRDImeuKHCnE96+RapNLbxc3G
3636
+ 3mB/ufNPRJLvKrcYPqcZ2Qt9sTdBQrC6YB3y/gkRsPCHe6ed
3637
+ -----END CERTIFICATE-----
3638
+
3639
+ QuoVadis Root CA 1 G3
3640
+ =====================
3641
+ -----BEGIN CERTIFICATE-----
3642
+ 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
3666
+ hMJKzRwuJIczYOXD
3667
+ -----END CERTIFICATE-----
3668
+
3669
+ QuoVadis Root CA 2 G3
3670
+ =====================
3671
+ -----BEGIN CERTIFICATE-----
3672
+ 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
3696
+ O3jtZsSOeWmD3n+M
3697
+ -----END CERTIFICATE-----
3698
+
3699
+ QuoVadis Root CA 3 G3
3700
+ =====================
3701
+ -----BEGIN CERTIFICATE-----
3702
+ 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
3726
+ PpxxVJkES/1Y+Zj0
3727
+ -----END CERTIFICATE-----
3728
+
3729
+ DigiCert Assured ID Root G2
3730
+ ===========================
3731
+ -----BEGIN CERTIFICATE-----
3732
+ MIIDljCCAn6gAwIBAgIQC5McOtY5Z+pnI7/Dr5r0SzANBgkqhkiG9w0BAQsFADBlMQswCQYDVQQG
3733
+ EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw
3734
+ IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIwHhcNMTMwODAxMTIwMDAwWhcNMzgw
3735
+ MTE1MTIwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL
3736
+ ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIw
3737
+ ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZ5ygvUj82ckmIkzTz+GoeMVSAn61UQbVH
3738
+ 35ao1K+ALbkKz3X9iaV9JPrjIgwrvJUXCzO/GU1BBpAAvQxNEP4HteccbiJVMWWXvdMX0h5i89vq
3739
+ bFCMP4QMls+3ywPgym2hFEwbid3tALBSfK+RbLE4E9HpEgjAALAcKxHad3A2m67OeYfcgnDmCXRw
3740
+ VWmvo2ifv922ebPynXApVfSr/5Vh88lAbx3RvpO704gqu52/clpWcTs/1PPRCv4o76Pu2ZmvA9OP
3741
+ YLfykqGxvYmJHzDNw6YuYjOuFgJ3RFrngQo8p0Quebg/BLxcoIfhG69Rjs3sLPr4/m3wOnyqi+Rn
3742
+ lTGNAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBTO
3743
+ w0q5mVXyuNtgv6l+vVa1lzan1jANBgkqhkiG9w0BAQsFAAOCAQEAyqVVjOPIQW5pJ6d1Ee88hjZv
3744
+ 0p3GeDgdaZaikmkuOGybfQTUiaWxMTeKySHMq2zNixya1r9I0jJmwYrA8y8678Dj1JGG0VDjA9tz
3745
+ d29KOVPt3ibHtX2vK0LRdWLjSisCx1BL4GnilmwORGYQRI+tBev4eaymG+g3NJ1TyWGqolKvSnAW
3746
+ hsI6yLETcDbYz+70CjTVW0z9B5yiutkBclzzTcHdDrEcDcRjvq30FPuJ7KJBDkzMyFdA0G4Dqs0M
3747
+ jomZmWzwPDCvON9vvKO+KSAnq3T/EyJ43pdSVR6DtVQgA+6uwE9W3jfMw3+qBCe703e4YtsXfJwo
3748
+ IhNzbM8m9Yop5w==
3749
+ -----END CERTIFICATE-----
3750
+
3751
+ DigiCert Assured ID Root G3
3752
+ ===========================
3753
+ -----BEGIN CERTIFICATE-----
3754
+ MIICRjCCAc2gAwIBAgIQC6Fa+h3foLVJRK/NJKBs7DAKBggqhkjOPQQDAzBlMQswCQYDVQQGEwJV
3755
+ UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQwIgYD
3756
+ VQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1
3757
+ MTIwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
3758
+ d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwdjAQ
3759
+ BgcqhkjOPQIBBgUrgQQAIgNiAAQZ57ysRGXtzbg/WPuNsVepRC0FFfLvC/8QdJ+1YlJfZn4f5dwb
3760
+ RXkLzMZTCp2NXQLZqVneAlr2lSoOjThKiknGvMYDOAdfVdp+CW7if17QRSAPWXYQ1qAk8C3eNvJs
3761
+ KTmjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBTL0L2p4ZgF
3762
+ UaFNN6KDec6NHSrkhDAKBggqhkjOPQQDAwNnADBkAjAlpIFFAmsSS3V0T8gj43DydXLefInwz5Fy
3763
+ YZ5eEJJZVrmDxxDnOOlYJjZ91eQ0hjkCMHw2U/Aw5WJjOpnitqM7mzT6HtoQknFekROn3aRukswy
3764
+ 1vUhZscv6pZjamVFkpUBtA==
3765
+ -----END CERTIFICATE-----
3766
+
3767
+ DigiCert Global Root G2
3768
+ =======================
3769
+ -----BEGIN CERTIFICATE-----
3770
+ MIIDjjCCAnagAwIBAgIQAzrx5qcRqaC7KGSxHQn65TANBgkqhkiG9w0BAQsFADBhMQswCQYDVQQG
3771
+ EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw
3772
+ HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMjAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUx
3773
+ MjAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3
3774
+ dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcyMIIBIjANBgkq
3775
+ hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuzfNNNx7a8myaJCtSnX/RrohCgiN9RlUyfuI2/Ou8jqJ
3776
+ kTx65qsGGmvPrC3oXgkkRLpimn7Wo6h+4FR1IAWsULecYxpsMNzaHxmx1x7e/dfgy5SDN67sH0NO
3777
+ 3Xss0r0upS/kqbitOtSZpLYl6ZtrAGCSYP9PIUkY92eQq2EGnI/yuum06ZIya7XzV+hdG82MHauV
3778
+ BJVJ8zUtluNJbd134/tJS7SsVQepj5WztCO7TG1F8PapspUwtP1MVYwnSlcUfIKdzXOS0xZKBgyM
3779
+ UNGPHgm+F6HmIcr9g+UQvIOlCsRnKPZzFBQ9RnbDhxSJITRNrw9FDKZJobq7nMWxM4MphQIDAQAB
3780
+ o0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUTiJUIBiV5uNu
3781
+ 5g/6+rkS7QYXjzkwDQYJKoZIhvcNAQELBQADggEBAGBnKJRvDkhj6zHd6mcY1Yl9PMWLSn/pvtsr
3782
+ F9+wX3N3KjITOYFnQoQj8kVnNeyIv/iPsGEMNKSuIEyExtv4NeF22d+mQrvHRAiGfzZ0JFrabA0U
3783
+ WTW98kndth/Jsw1HKj2ZL7tcu7XUIOGZX1NGFdtom/DzMNU+MeKNhJ7jitralj41E6Vf8PlwUHBH
3784
+ QRFXGU7Aj64GxJUTFy8bJZ918rGOmaFvE7FBcf6IKshPECBV1/MUReXgRPTqh5Uykw7+U0b6LJ3/
3785
+ iyK5S9kJRaTepLiaWN0bfVKfjllDiIGknibVb63dDcY3fe0Dkhvld1927jyNxF1WW6LZZm6zNTfl
3786
+ MrY=
3787
+ -----END CERTIFICATE-----
3788
+
3789
+ DigiCert Global Root G3
3790
+ =======================
3791
+ -----BEGIN CERTIFICATE-----
3792
+ MIICPzCCAcWgAwIBAgIQBVVWvPJepDU1w6QP1atFcjAKBggqhkjOPQQDAzBhMQswCQYDVQQGEwJV
3793
+ UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAwHgYD
3794
+ VQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMzAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAw
3795
+ MDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5k
3796
+ aWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEczMHYwEAYHKoZIzj0C
3797
+ AQYFK4EEACIDYgAE3afZu4q4C/sLfyHS8L6+c/MzXRq8NOrexpu80JX28MzQC7phW1FGfp4tn+6O
3798
+ YwwX7Adw9c+ELkCDnOg/QW07rdOkFFk2eJ0DQ+4QE2xy3q6Ip6FrtUPOZ9wj/wMco+I+o0IwQDAP
3799
+ BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUs9tIpPmhxdiuNkHMEWNp
3800
+ Yim8S8YwCgYIKoZIzj0EAwMDaAAwZQIxAK288mw/EkrRLTnDCgmXc/SINoyIJ7vmiI1Qhadj+Z4y
3801
+ 3maTD/HMsQmP3Wyr+mt/oAIwOWZbwmSNuJ5Q3KjVSaLtx9zRSX8XAbjIho9OjIgrqJqpisXRAL34
3802
+ VOKa5Vt8sycX
3803
+ -----END CERTIFICATE-----
3804
+
3805
+ DigiCert Trusted Root G4
3806
+ ========================
3807
+ -----BEGIN CERTIFICATE-----
3808
+ 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
3833
+ 82Z+
3834
+ -----END CERTIFICATE-----
3835
+
3836
+ WoSign
3837
+ ======
3838
+ -----BEGIN CERTIFICATE-----
3839
+ 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
3864
+ -----END CERTIFICATE-----
3865
+
3866
+ WoSign China
3867
+ ============
3868
+ -----BEGIN CERTIFICATE-----
3869
+ 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
3893
+ kI26oQ==
3894
+ -----END CERTIFICATE-----
includes/vendor/infusionsoft/isdk.php ADDED
@@ -0,0 +1,2632 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * @method Object Oriented PHP SDK for Infusionsoft
4
+ * @CreatedBy Justin Morris on 09-10-08
5
+ * @UpdatedBy Michael Fairchild
6
+ * @Updated 5/29/13
7
+ * @iSDKVersion 1.8.3
8
+ * @ApplicationVersion 1.29.x
9
+ */
10
+
11
+ if (!function_exists('xmlrpc_encode_entitites')) {
12
+ include("xmlrpc-3.0/lib/xmlrpc.inc");
13
+ }
14
+ class iSDKException extends Exception
15
+ {
16
+ }
17
+
18
+ class iSDK
19
+ {
20
+
21
+ static private $handle;
22
+ public $logname = '';
23
+ public $loggingEnabled = 0;
24
+
25
+ /**
26
+ * @method cfgCon
27
+ * @description Creates and tests the API Connection to the Application
28
+ * @param $name - Application Name
29
+ * @param string $key - API Key
30
+ * @param string $dbOn - Error Handling On
31
+ * @param string $type - Infusionsoft or Mortgage Pro
32
+ * @return bool
33
+ * @throws iSDKException
34
+ */
35
+ public function cfgCon($name, $key = "", $dbOn = "on", $type = "i")
36
+ {
37
+ $this->debug = (($key == 'on' || $key == 'off' || $key == 'kill' || $key == 'throw') ? $key : $dbOn);
38
+
39
+ if ($key != "" && $key != "on" && $key != "off" && $key != 'kill' && $key != 'throw') {
40
+ $this->key = $key;
41
+ } else {
42
+ include('conn.cfg.php');
43
+ $appLines = $connInfo;
44
+ foreach ($appLines as $appLine) {
45
+ $details[substr($appLine, 0, strpos($appLine, ":"))] = explode(":", $appLine);
46
+ }
47
+ $appname = $details[$name][1];
48
+ $type = $details[$name][2];
49
+ $this->key = $details[$name][3];
50
+ }
51
+
52
+ switch ($type) {
53
+ case 'm':
54
+ $this->client = new xmlrpc_client("https://$appname.mortgageprocrm.com/api/xmlrpc");
55
+ break;
56
+ case 'i':
57
+ default:
58
+ if (!isset($appname)) {
59
+ $appname = $name;
60
+ }
61
+ $this->client = new xmlrpc_client("https://$appname.infusionsoft.com/api/xmlrpc");
62
+ break;
63
+ }
64
+
65
+ /* Return Raw PHP Types */
66
+ $this->client->return_type = "phpvals";
67
+
68
+ /* SSL Certificate Verification */
69
+ $this->client->setSSLVerifyPeer(TRUE);
70
+ $this->client->setCaCertificate((__DIR__ != '__DIR__' ? __DIR__ : dirname(__FILE__)) . '/infusionsoft.pem');
71
+ //$this->client->setDebug(2);
72
+
73
+ $this->encKey = php_xmlrpc_encode($this->key);
74
+
75
+ /* Connection verification */
76
+ try {
77
+ $connected = $this->dsGetSetting("Application", "enabled");
78
+ } catch (iSDKException $e) {
79
+ throw new iSDKException("Connection Failed");
80
+ }
81
+ return true;
82
+ }
83
+
84
+ /**
85
+ * @method getTemporaryKey
86
+ * @description Connect and Obtain an API key from a vendor key
87
+ * @param string $name - Application Name
88
+ * @param string $user - Username
89
+ * @param string $pass - Password
90
+ * @param string $key - Vendor Key
91
+ * @param string $dbOn - Error Handling On
92
+ * @param string $type - Infusionsoft or Mortgage Pro
93
+ * @return bool
94
+ * @throws iSDKException
95
+ */
96
+ public function vendorCon($name, $user, $pass, $key = "", $dbOn = "on", $type = "i")
97
+ {
98
+ $this->debug = (($key == 'on' || $key == 'off' || $key == 'kill' || $key == 'throw') ? $key : $dbOn);
99
+
100
+ if ($key != "" && $key != "on" && $key != "off" && $key != 'kill' && $key != 'throw') {
101
+ if ($type == "i") {
102
+ $this->client = new xmlrpc_client("https://$name.infusionsoft.com/api/xmlrpc");
103
+ } else if ($type == "m") {
104
+ $this->client = new xmlrpc_client("https://$name.mortgageprocrm.com/api/xmlrpc");
105
+ } else {
106
+ throw new iSDKException ("Invalid application type: \"$name\"");
107
+ }
108
+ $this->key = $key;
109
+ } else {
110
+ include('conn.cfg.php');
111
+ $appLines = $connInfo;
112
+ foreach ($appLines as $appLine) {
113
+ $details[substr($appLine, 0, strpos($appLine, ":"))] = explode(":", $appLine);
114
+ }
115
+ if (!empty($details[$name])) {
116
+ if ($details[$name][2] == "i") {
117
+ $this->client = new xmlrpc_client("https://" . $details[$name][1] .
118
+ ".infusionsoft.com/api/xmlrpc");
119
+ } elseif ($details[$name][2] == "m") {
120
+ $this->client = new xmlrpc_client("https://" . $details[$name][1] .
121
+ ".mortgageprocrm.com/api/xmlrpc");
122
+ } else {
123
+ throw new iSDKException("Invalid application name: \"" . $name . "\"");
124
+ }
125
+ } else {
126
+ throw new iSDKException("Application Does Not Exist: \"" . $name . "\"");
127
+ }
128
+ $this->key = $details[$name][3];
129
+ }
130
+
131
+ /* Return Raw PHP Types */
132
+ $this->client->return_type = "phpvals";
133
+
134
+ /* SSL Certificate Verification */
135
+ $this->client->setSSLVerifyPeer(TRUE);
136
+ $this->client->setCaCertificate((__DIR__ != '__DIR__' ? __DIR__ : dirname(__FILE__)) . '/infusionsoft.pem');
137
+
138
+ $carray = array(
139
+ php_xmlrpc_encode($this->key),
140
+ php_xmlrpc_encode($user),
141
+ php_xmlrpc_encode(md5($pass)));
142
+
143
+ $this->key = $this->methodCaller("DataService.getTemporaryKey", $carray);
144
+
145
+ $this->encKey = php_xmlrpc_encode($this->key);
146
+
147
+ try {
148
+ $connected = $this->dsGetSetting("Application", "enabled");
149
+ } catch (iSDKException $e) {
150
+ throw new iSDKException("Connection Failed");
151
+ }
152
+ return TRUE;
153
+ }
154
+
155
+ /**
156
+ * @method echo
157
+ * @description Worthless public function, used to validate a connection
158
+ * @param string $txt
159
+ * @return int|mixed|string
160
+ */
161
+ public function appEcho($txt)
162
+ {
163
+ $carray = array(
164
+ php_xmlrpc_encode($txt));
165
+
166
+ return $this->methodCaller("DataService.echo", $carray);
167
+ }
168
+
169
+ /**
170
+ * @method Method Caller
171
+ * @description Builds XML and Sends the Call
172
+ * @param string $service
173
+ * @param array $callArray
174
+ * @return int|mixed|string
175
+ * @throws iSDKException
176
+ */
177
+ public function methodCaller($service, $callArray)
178
+ {
179
+
180
+ /* Set up the call */
181
+ $call = new xmlrpcmsg($service, $callArray);
182
+
183
+ if ($service != 'DataService.getTemporaryKey') {
184
+ array_unshift($call->params, $this->encKey);
185
+ }
186
+
187
+ /* Send the call */
188
+ $now = time();
189
+ $start = microtime();
190
+ $result = $this->client->send($call);
191
+
192
+ $stop = microtime();
193
+ /* Check the returned value to see if it was successful and return it */
194
+ if (!$result->faultCode()) {
195
+ if ($this->loggingEnabled == 1) {
196
+ $this->log(array('Method' => $service, 'Call' => $callArray, 'Start' => $start, 'Stop' => $stop, 'Now' => $now, 'Result' => $result, 'Error' => 'No', 'ErrorCode' => 'No Error Code Received'));
197
+ }
198
+ return $result->value();
199
+ } else {
200
+ if ($this->loggingEnabled == 1) {
201
+ $this->log(array('Method' => $service, 'Call' => $callArray, 'Start' => $start, 'Stop' => $stop, 'Now' => $now, 'Result' => $result, 'Error' => 'Yes', 'ErrorCode' => "ERROR: " . $result->faultCode() . " - " . $result->faultString()));
202
+ }
203
+ if ($this->debug == "kill") {
204
+ die("ERROR: " . $result->faultCode() . " - " .
205
+ $result->faultString());
206
+ } elseif ($this->debug == "on") {
207
+ return "ERROR: " . $result->faultCode() . " - " .
208
+ $result->faultString();
209
+ } elseif ($this->debug == "throw") {
210
+ throw new iSDKException($result->faultString(), $result->faultCode());
211
+ } elseif ($this->debug == "off") {
212
+ //ignore!
213
+ }
214
+ }
215
+
216
+ }
217
+
218
+ /**
219
+ * @service Affiliate Program Service
220
+ */
221
+
222
+ /**
223
+ * @method getAffiliatesByProgram
224
+ * @description Gets a list of all of the affiliates with their contact data for the specified program. This includes all of the custom fields defined for the contact and affiliate records that are retrieved.
225
+ * @param int $programId
226
+ * @return array
227
+ */
228
+ public function getAffiliatesByProgram($programId)
229
+ {
230
+ $carray = array(
231
+ php_xmlrpc_encode((int)$programId));
232
+ return $this->methodCaller("AffiliateProgramService.getAffiliatesByProgram", $carray);
233
+ }
234
+
235
+ /**
236
+ * @method getProgramsForAffiliate
237
+ * @description Gets a list of all of the Affiliate Programs for the Affiliate specified.
238
+ * @param int $affiliateId
239
+ * @return array
240
+ */
241
+ public function getProgramsForAffiliate($affiliateId)
242
+ {
243
+ $carray = array(
244
+
245
+ php_xmlrpc_encode((int)$affiliateId));
246
+ return $this->methodCaller("AffiliateProgramService.getProgramsForAffiliate", $carray);
247
+ }
248
+
249
+ /**
250
+ * @method getAffiliatePrograms
251
+ * @description Gets a list of all of the Affiliate Programs that are in the application.
252
+ * @return int|mixed|string
253
+ */
254
+ public function getAffiliatePrograms()
255
+ {
256
+ $carray = array();
257
+ return $this->methodCaller("AffiliateProgramService.getAffiliatePrograms", $carray);
258
+ }
259
+
260
+ /**
261
+ * @method getResourcesForAffiliateProgram
262
+ * @description Gets a list of all of the resources that are associated to the Affiliate Program specified.
263
+ * @param int $programId
264
+ * @return array
265
+ */
266
+ public function getResourcesForAffiliateProgram($programId)
267
+ {
268
+ $carray = array(
269
+
270
+ php_xmlrpc_encode((int)$programId));
271
+ return $this->methodCaller("AffiliateProgramService.getResourcesForAffiliateProgram", $carray);
272
+ }
273
+
274
+ /**
275
+ * @service Affiliate Service
276
+ */
277
+
278
+ /**
279
+ * @method affClawbacks
280
+ * @description returns all clawbacks in a date range
281
+ * @param int $affId
282
+ * @param date $startDate
283
+ * @param date $endDate
284
+ * @return array
285
+ */
286
+ public function affClawbacks($affId, $startDate, $endDate)
287
+ {
288
+ $carray = array(
289
+
290
+ php_xmlrpc_encode((int)$affId),
291
+ php_xmlrpc_encode($startDate, array('auto_dates')),
292
+ php_xmlrpc_encode($endDate, array('auto_dates')));
293
+ return $this->methodCaller("APIAffiliateService.affClawbacks", $carray);
294
+ }
295
+
296
+ /**
297
+ * @method affCommissions
298
+ * @description returns all commissions in a date range
299
+ * @param int $affId
300
+ * @param date $startDate
301
+ * @param date $endDate
302
+ * @return array
303
+ */
304
+ public function affCommissions($affId, $startDate, $endDate)
305
+ {
306
+ $carray = array(
307
+
308
+ php_xmlrpc_encode((int)$affId),
309
+ php_xmlrpc_encode($startDate, array('auto_dates')),
310
+ php_xmlrpc_encode($endDate, array('auto_dates')));
311
+ return $this->methodCaller("APIAffiliateService.affCommissions", $carray);
312
+ }
313
+
314
+ /**
315
+ * @method affPayouts
316
+ * @description returns all affiliate payouts in a date range
317
+ * @param int $affId
318
+ * @param date $startDate
319
+ * @param date $endDate
320
+ * @return array
321
+ */
322
+ public function affPayouts($affId, $startDate, $endDate)
323
+ {
324
+ $carray = array(
325
+
326
+ php_xmlrpc_encode((int)$affId),
327
+ php_xmlrpc_encode($startDate, array('auto_dates')),
328
+ php_xmlrpc_encode($endDate, array('auto_dates')));
329
+ return $this->methodCaller("APIAffiliateService.affPayouts", $carray);
330
+ }
331
+
332
+ /**
333
+ * @method affRunningTotals
334
+ * @description Returns a list with each row representing a single affiliates totals represented by a map with key (one of the names above, and value being the total for that variable)
335
+ * @param array $affList
336
+ * @return array
337
+ */
338
+ public function affRunningTotals($affList)
339
+ {
340
+ $carray = array(
341
+
342
+ php_xmlrpc_encode($affList));
343
+ return $this->methodCaller("APIAffiliateService.affRunningTotals", $carray);
344
+ }
345
+
346
+ /**
347
+ * @method affSummary
348
+ * @description returns how much the specified affiliates are owed
349
+ * @param array $affList
350
+ * @param date $startDate
351
+ * @param date $endDate
352
+ * @return array
353
+ */
354
+ public function affSummary($affList, $startDate, $endDate)
355
+ {
356
+ $carray = array(
357
+
358
+ php_xmlrpc_encode($affList),
359
+ php_xmlrpc_encode($startDate, array('auto_dates')),
360
+ php_xmlrpc_encode($endDate, array('auto_dates')));
361
+ return $this->methodCaller("APIAffiliateService.affSummary", $carray);
362
+ }
363
+
364
+ /**
365
+ * @method getRedirectLinksForAffiliate
366
+ * @description returns redirect links for affiliate specified
367
+ * @param $affiliateId
368
+ * @return int|mixed|string
369
+ */
370
+ public function getRedirectLinksForAffiliate($affiliateId)
371
+ {
372
+ $carray = array(
373
+
374
+ php_xmlrpc_encode((int)$affiliateId));
375
+ return $this->methodCaller("AffiliateService.getRedirectLinksForAffiliate", $carray);
376
+ }
377
+
378
+ /**
379
+ * @service Contact Service
380
+ */
381
+
382
+ /**
383
+ * @method add
384
+ * @description add Contact to Infusionsoft (no duplicate checking)
385
+ * @param array $cMap
386
+ * @param string $optReason
387
+ * @return int
388
+ */
389
+ public function addCon($cMap, $optReason = "")
390
+ {
391
+
392
+ $carray = array(
393
+
394
+ php_xmlrpc_encode($cMap, array('auto_dates')));
395
+ $conID = $this->methodCaller("ContactService.add", $carray);
396
+ if (!empty($cMap['Email'])) {
397
+ if ($optReason == "") {
398
+ $this->optIn($cMap['Email']);
399
+ } else {
400
+ $this->optIn($cMap['Email'], $optReason);
401
+ }
402
+ }
403
+ return $conID;
404
+ }
405
+
406
+ /**
407
+ * @method update
408
+ * @description Update an existing contact
409
+ * @param int $cid
410
+ * @param array $cMap
411
+ * @return int
412
+ */
413
+ public function updateCon($cid, $cMap)
414
+ {
415
+
416
+ $carray = array(
417
+
418
+ php_xmlrpc_encode((int)$cid),
419
+ php_xmlrpc_encode($cMap, array('auto_dates')));
420
+ return $this->methodCaller("ContactService.update", $carray);
421
+ }
422
+
423
+ /**
424
+ * @method merge
425
+ * @description Merge 2 contacts
426
+ * @param int $cid
427
+ * @param int $dcid
428
+ * @return int
429
+ */
430
+ public function mergeCon($cid, $dcid)
431
+ {
432
+ $carray = array(
433
+
434
+ php_xmlrpc_encode($cid),
435
+ php_xmlrpc_encode($dcid));
436
+
437
+ return $this->methodCaller("ContactService.merge", $carray);
438
+ }
439
+
440
+ /**
441
+ * @method findbyEmail
442
+ * @description finds all contact with an email address
443
+ * @param string $eml
444
+ * @param array $fMap
445
+ * @return array
446
+ */
447
+ public function findByEmail($eml, $fMap)
448
+ {
449
+
450
+ $carray = array(
451
+
452
+ php_xmlrpc_encode($eml),
453
+ php_xmlrpc_encode($fMap));
454
+ return $this->methodCaller("ContactService.findByEmail", $carray);
455
+ }
456
+
457
+ /**
458
+ * @method load
459
+ * @description Loads a contacts data
460
+ * @param int $cid
461
+ * @param array $rFields
462
+ * @return array
463
+ */
464
+ public function loadCon($cid, $rFields)
465
+ {
466
+
467
+ $carray = array(
468
+
469
+ php_xmlrpc_encode((int)$cid),
470
+ php_xmlrpc_encode($rFields));
471
+ return $this->methodCaller("ContactService.load", $carray);
472
+ }
473
+
474
+ /**
475
+ * @method addToGroup
476
+ * @description Apply a Tag to a Contact
477
+ * @param int $cid
478
+ * @param int $gid
479
+ * @return bool
480
+ */
481
+ public function grpAssign($cid, $gid)
482
+ {
483
+ $carray = array(
484
+
485
+ php_xmlrpc_encode((int)$cid),
486
+ php_xmlrpc_encode((int)$gid));
487
+ return $this->methodCaller("ContactService.addToGroup", $carray);
488
+ }
489
+
490
+ /**
491
+ * @method removeFromGroup
492
+ * @description Remove a Tag from a Contact
493
+ * @param int $cid
494
+ * @param int $gid
495
+ * @return bool
496
+ */
497
+ public function grpRemove($cid, $gid)
498
+ {
499
+ $carray = array(
500
+
501
+ php_xmlrpc_encode((int)$cid),
502
+ php_xmlrpc_encode((int)$gid));
503
+ return $this->methodCaller("ContactService.removeFromGroup", $carray);
504
+ }
505
+
506
+ /**
507
+ * @method resumeCampaignForContact
508
+ * @description resumes a legacy followup sequence a contact is in
509
+ * @param int $cid
510
+ * @param int $sequenceId
511
+ * @return bool
512
+ */
513
+ public function resumeCampaignForContact($cid, $sequenceId)
514
+ {
515
+ $carray = array(
516
+
517
+ php_xmlrpc_encode((int)$cid),
518
+ php_xmlrpc_encode((int)$sequenceId));
519
+ return $this->methodCaller("ContactService.resumeCampaignForContact", $carray);
520
+ }
521
+
522
+ /**
523
+ * @method addToCampaign
524
+ * @description adds a contact to a legacy followup sequence
525
+ * @param int $cid
526
+ * @param int $campId
527
+ * @return bool
528
+ */
529
+ public function campAssign($cid, $campId)
530
+ {
531
+ $carray = array(
532
+
533
+ php_xmlrpc_encode((int)$cid),
534
+ php_xmlrpc_encode((int)$campId));
535
+ return $this->methodCaller("ContactService.addToCampaign", $carray);
536
+ }
537
+
538
+ /**
539
+ * @method getNextCampaignStep
540
+ * @description gets next step in a legacy followup sequence
541
+ * @param int $cid
542
+ * @param int $campId
543
+ * @return array
544
+ */
545
+ public function getNextCampaignStep($cid, $campId)
546
+ {
547
+ $carray = array(
548
+
549
+ php_xmlrpc_encode((int)$cid),
550
+ php_xmlrpc_encode((int)$campId));
551
+ return
552
+ $this->methodCaller("ContactService.getNextCampaignStep", $carray);
553
+ }
554
+
555
+ /**
556
+ * @method getCampaigneeStepDetails
557
+ * @description get step details for a legacy followup sequence
558
+ * @param int $cid
559
+ * @param int $stepId
560
+ * @return array
561
+ */
562
+ public function getCampaigneeStepDetails($cid, $stepId)
563
+ {
564
+ $carray = array(
565
+
566
+ php_xmlrpc_encode((int)$cid),
567
+ php_xmlrpc_encode((int)$stepId));
568
+ return
569
+ $this->methodCaller("ContactService.getCampaigneeStepDetails", $carray);
570
+ }
571
+
572
+ /**
573
+ * @method rescheduleCampaignStep
574
+ * @description reschedule a legacy followup sequence
575
+ * @param array $cidList
576
+ * @param int $campId
577
+ * @return int
578
+ */
579
+ public function rescheduleCampaignStep($cidList, $campId)
580
+ {
581
+ $carray = array(
582
+
583
+ php_xmlrpc_encode($cidList),
584
+ php_xmlrpc_encode((int)$campId));
585
+ return
586
+ $this->methodCaller("ContactService.rescheduleCampaignStep", $carray);
587
+ }
588
+
589
+ /**
590
+ * @method removeFromCampaign
591
+ * @description remove a contact from a legacy followup sequence
592
+ * @param int $cid
593
+ * @param int $campId
594
+ * @return bool
595
+ */
596
+ public function campRemove($cid, $campId)
597
+ {
598
+ $carray = array(
599
+
600
+ php_xmlrpc_encode((int)$cid),
601
+ php_xmlrpc_encode((int)$campId));
602
+ return $this->methodCaller("ContactService.removeFromCampaign", $carray);
603
+ }
604
+
605
+ /**
606
+ * @method pauseCampaign
607
+ * @description pause a legacy followup sequence for a contact
608
+ * @param int $cid
609
+ * @param int $campId
610
+ * @return bool
611
+ */
612
+ public function campPause($cid, $campId)
613
+ {
614
+ $carray = array(
615
+
616
+ php_xmlrpc_encode((int)$cid),
617
+ php_xmlrpc_encode((int)$campId));
618
+ return $this->methodCaller("ContactService.pauseCampaign", $carray);
619
+ }
620
+
621
+ /**
622
+ * @method runActionSequence
623
+ * @description run an actionset on a contact
624
+ * @param int $cid
625
+ * @param int $aid
626
+ * @return array
627
+ */
628
+ public function runAS($cid, $aid)
629
+ {
630
+ $carray = array(
631
+
632
+ php_xmlrpc_encode((int)$cid),
633
+ php_xmlrpc_encode((int)$aid));
634
+ return $this->methodCaller("ContactService.runActionSequence", $carray);
635
+ }
636
+
637
+ /**
638
+ * @method applyActivityHistoryTemplate
639
+ * @description add a note, task, or appointment to a contact from a template
640
+ * @param int $contactId
641
+ * @param int $historyId
642
+ * @param int $userId
643
+ * @return int|mixed|string
644
+ */
645
+ public function applyActivityHistoryTemplate($contactId, $historyId, $userId)
646
+ {
647
+ $carray = array(
648
+
649
+ php_xmlrpc_encode((int)$contactId),
650
+ php_xmlrpc_encode((int)$historyId),
651
+ php_xmlrpc_encode((int)$userId));
652
+ return $this->methodCaller("ContactService.applyActivityHistoryTemplate", $carray);
653
+ }
654
+
655
+ /**
656
+ * @method getActivityHistoryTemplateMap
657
+ * @description get templates for use with applyActivityHistoryTemplate
658
+ * @return array
659
+ */
660
+ public function getActivityHistoryTemplateMap()
661
+ {
662
+ $carray = array();
663
+ return $this->methodCaller("ContactService.getActivityHistoryTemplateMap", $carray);
664
+ }
665
+
666
+ /**
667
+ * @method addWithDupCheck
668
+ * @description add a contact with duplicate checking
669
+ * @param array $cMap
670
+ * @param string $checkType - 'Email', 'EmailAndName', or 'EmailAndNameAnd Company'
671
+ * @return int
672
+ */
673
+ public function addWithDupCheck($cMap, $checkType)
674
+ {
675
+ $carray = array(
676
+
677
+ php_xmlrpc_encode($cMap, array('auto_dates')),
678
+ php_xmlrpc_encode($checkType));
679
+ return $this->methodCaller("ContactService.addWithDupCheck", $carray);
680
+ }
681
+
682
+ /**
683
+ * @service Credit Card Submission Service
684
+ */
685
+
686
+ /**
687
+ * @method requestSubmissionToken
688
+ * @description gets a token, which is needed to POST a credit card to the application
689
+ * @param int $contactId
690
+ * @param string $successUrl
691
+ * @param string $failureUrl
692
+ * @return string
693
+ */
694
+ public function requestCcSubmissionToken($contactId, $successUrl, $failureUrl)
695
+ {
696
+ $carray = array(
697
+
698
+ php_xmlrpc_encode((int)$contactId),
699
+ php_xmlrpc_encode((string)$successUrl),
700
+ php_xmlrpc_encode((string)$failureUrl));
701
+ return $this->methodCaller("CreditCardSubmissionService.requestSubmissionToken", $carray);
702
+ }
703
+
704
+ /**
705
+ * @method requestCreditCardId
706
+ * @description retrieves credit card details (CC number not included) that have been posted to the app
707
+ * @param $token
708
+ * @return array
709
+ */
710
+ public function requestCreditCardId($token)
711
+ {
712
+ $carray = array(
713
+
714
+ php_xmlrpc_encode($token));
715
+ return $this->methodCaller("CreditCardSubmissionService.requestCreditCardId", $carray);
716
+ }
717
+
718
+ /**
719
+ * @service Data Service
720
+ */
721
+
722
+ /**
723
+ * @method getAppSetting
724
+ * @description gets an app setting
725
+ * @param string $module
726
+ * @param string $setting
727
+ * @return int|mixed|string
728
+ */
729
+ public function dsGetSetting($module, $setting)
730
+ {
731
+ $carray = array(
732
+ php_xmlrpc_encode($module),
733
+ php_xmlrpc_encode($setting));
734
+ return $this->methodCaller("DataService.getAppSetting", $carray);
735
+ }
736
+
737
+ /**
738
+ * @method add
739
+ * @description Add a record to a table
740
+ * @param string $tName
741
+ * @param array $iMap
742
+ * @return int
743
+ */
744
+ public function dsAdd($tName, $iMap)
745
+ {
746
+ $carray = array(
747
+
748
+ php_xmlrpc_encode($tName),
749
+ php_xmlrpc_encode($iMap, array('auto_dates')));
750
+
751
+ return $this->methodCaller("DataService.add", $carray);
752
+ }
753
+
754
+ /**
755
+ * @method dsAddWithImage
756
+ * @description Add a record to a table that includes an image
757
+ * @param string $tName
758
+ * @param array $iMap
759
+ * @return int
760
+ */
761
+ public function dsAddWithImage($tName, $iMap)
762
+ {
763
+ $carray = array(
764
+
765
+ php_xmlrpc_encode($tName),
766
+ php_xmlrpc_encode($iMap, array('auto_dates', 'auto_base64')));
767
+
768
+ return $this->methodCaller("DataService.add", $carray);
769
+ }
770
+
771
+ /**
772
+ * @method delete
773
+ * @description delete a record from Infusionsoft
774
+ * @param string $tName
775
+ * @param int $id
776
+ * @return bool
777
+ */
778
+ public function dsDelete($tName, $id)
779
+ {
780
+ $carray = array(
781
+
782
+ php_xmlrpc_encode($tName),
783
+ php_xmlrpc_encode((int)$id));
784
+
785
+ return $this->methodCaller("DataService.delete", $carray);
786
+ }
787
+
788
+ /**
789
+ * @method update
790
+ * @description Update a record in any table
791
+ * @param string $tName
792
+ * @param int $id
793
+ * @param array $iMap
794
+ * @return int
795
+ */
796
+ public function dsUpdate($tName, $id, $iMap)
797
+ {
798
+ $carray = array(
799
+
800
+ php_xmlrpc_encode($tName),
801
+ php_xmlrpc_encode((int)$id),
802
+ php_xmlrpc_encode($iMap, array('auto_dates')));
803
+
804
+ return $this->methodCaller("DataService.update", $carray);
805
+ }
806
+
807
+ /**
808
+ * @method dsUpdateWithImage
809
+ * @description Update a record in any table with an image
810
+ * @param string $tName
811
+ * @param int $id
812
+ * @param array $iMap
813
+ * @return int
814
+ */
815
+ public function dsUpdateWithImage($tName, $id, $iMap)
816
+ {
817
+ $carray = array(
818
+
819
+ php_xmlrpc_encode($tName),
820
+ php_xmlrpc_encode((int)$id),
821
+ php_xmlrpc_encode($iMap, array('auto_dates', 'auto_base64')));
822
+
823
+ return $this->methodCaller("DataService.update", $carray);
824
+ }
825
+
826
+ /**
827
+ * @method load
828
+ * @description Load a record from any table
829
+ * @param string $tName
830
+ * @param int $id
831
+ * @param array $rFields
832
+ * @return array
833
+ */
834
+ public function dsLoad($tName, $id, $rFields)
835
+ {
836
+ $carray = array(
837
+
838
+ php_xmlrpc_encode($tName),
839
+ php_xmlrpc_encode((int)$id),
840
+ php_xmlrpc_encode($rFields));
841
+
842
+ return $this->methodCaller("DataService.load", $carray);
843
+ }
844
+
845
+ /**
846
+ * @method findByField
847
+ * @description finds records by searching a specific field
848
+ * @param string $tName
849
+ * @param int $limit
850
+ * @param int $page
851
+ * @param string $field
852
+ * @param string $value
853
+ * @param array $rFields
854
+ * @return array
855
+ */
856
+ public function dsFind($tName, $limit, $page, $field, $value, $rFields)
857
+ {
858
+ $carray = array(
859
+
860
+ php_xmlrpc_encode($tName),
861
+ php_xmlrpc_encode((int)$limit),
862
+ php_xmlrpc_encode((int)$page),
863
+ php_xmlrpc_encode($field),
864
+ php_xmlrpc_encode($value),
865
+ php_xmlrpc_encode($rFields));
866
+
867
+ return $this->methodCaller("DataService.findByField", $carray);
868
+ }
869
+
870
+ /**
871
+ * @method query
872
+ * @description Finds records based on query
873
+ * @param string $tName
874
+ * @param int $limit
875
+ * @param int $page
876
+ * @param array $query
877
+ * @param array $rFields
878
+ * @return array
879
+ */
880
+ public function dsQuery($tName, $limit, $page, $query, $rFields)
881
+ {
882
+ $carray = array(
883
+ php_xmlrpc_encode($tName),
884
+ php_xmlrpc_encode((int)$limit),
885
+ php_xmlrpc_encode((int)$page),
886
+ php_xmlrpc_encode($query, array('auto_dates')),
887
+ php_xmlrpc_encode($rFields));
888
+
889
+ return $this->methodCaller("DataService.query", $carray);
890
+ }
891
+
892
+ /**
893
+ * @method queryWithOrderBy
894
+ * @description Finds records based on query with option to sort
895
+ * @param string $tName
896
+ * @param int $limit
897
+ * @param int $page
898
+ * @param array $query
899
+ * @param array $rFields
900
+ * @param string $orderByField
901
+ * @param bool $ascending
902
+ * @return array
903
+ */
904
+ public function dsQueryOrderBy($tName, $limit, $page, $query, $rFields, $orderByField, $ascending = TRUE)
905
+ {
906
+ $carray = array(
907
+
908
+ php_xmlrpc_encode($tName),
909
+ php_xmlrpc_encode((int)$limit),
910
+ php_xmlrpc_encode((int)$page),
911
+ php_xmlrpc_encode($query, array('auto_dates')),
912
+ php_xmlrpc_encode($rFields),
913
+ php_xmlrpc_encode($orderByField),
914
+ php_xmlrpc_encode((bool)$ascending));
915
+
916
+ return $this->methodCaller("DataService.query", $carray);
917
+ }
918
+
919
+ /**
920
+ * @method addCustomField
921
+ * @description adds a custom field
922
+ * @param string $context
923
+ * @param string $displayName
924
+ * @param int $dataType
925
+ * @param int $headerID
926
+ * @return int
927
+ */
928
+ public function addCustomField($context, $displayName, $dataType, $headerID)
929
+ {
930
+ $carray = array(
931
+
932
+ php_xmlrpc_encode($context),
933
+ php_xmlrpc_encode($displayName),
934
+ php_xmlrpc_encode($dataType),
935
+ php_xmlrpc_encode((int)$headerID));
936
+
937
+ return $this->methodCaller("DataService.addCustomField", $carray);
938
+ }
939
+
940
+ /**
941
+ * @method authenticateUser
942
+ * @description Authenticates a user account in Infusionsoft
943
+ * @param string $userName
944
+ * @param string $password
945
+ * @return int
946
+ */
947
+ public function authenticateUser($userName, $password)
948
+ {
949
+ $password = strtolower(md5($password));
950
+ $carray = array(
951
+
952
+ php_xmlrpc_encode($userName),
953
+ php_xmlrpc_encode($password));
954
+
955
+ return $this->methodCaller("DataService.authenticateUser", $carray);
956
+ }
957
+
958
+ /**
959
+ * @method - updateCustomField
960
+ * @description update a custom field
961
+ * @param int $fieldId
962
+ * @param array $fieldValues
963
+ * @return int
964
+ */
965
+ public function updateCustomField($fieldId, $fieldValues)
966
+ {
967
+ $carray = array(
968
+
969
+ php_xmlrpc_encode((int)$fieldId),
970
+ php_xmlrpc_encode($fieldValues));
971
+ return $this->methodCaller("DataService.updateCustomField", $carray);
972
+ }
973
+
974
+ /**
975
+ * @service Discount Service
976
+ */
977
+
978
+ /**
979
+ * @method addFreeTrial
980
+ * @description creates a subscription free trial for the shopping cart
981
+ * @param string $name
982
+ * @param string $description
983
+ * @param int $freeTrialDays
984
+ * @param int $hidePrice
985
+ * @param int $subscriptionPlanId
986
+ * @return int
987
+ */
988
+ public function addFreeTrial($name, $description, $freeTrialDays, $hidePrice, $subscriptionPlanId)
989
+ {
990
+ $carray = array(
991
+
992
+ php_xmlrpc_encode((string)$name),
993
+ php_xmlrpc_encode((string)$description),
994
+ php_xmlrpc_encode((int)$freeTrialDays),
995
+ php_xmlrpc_encode((int)$hidePrice),
996
+ php_xmlrpc_encode((int)$subscriptionPlanId));
997
+ return $this->methodCaller("DiscountService.addFreeTrial", $carray);
998
+ }
999
+
1000
+ /**
1001
+ * @method getFreeTrial
1002
+ * @description retrieves the details on the given free trial
1003
+ * @param int $trialId
1004
+ * @return array
1005
+ */
1006
+ public function getFreeTrial($trialId)
1007
+ {
1008
+ $carray = array(
1009
+
1010
+ php_xmlrpc_encode((int)$trialId));
1011
+ return $this->methodCaller("DiscountService.getFreeTrial", $carray);
1012
+ }
1013
+
1014
+ /**
1015
+ * @method addOrderTotalDiscount
1016
+ * @description creates an order total discount for the shopping cart
1017
+ * @param string $name
1018
+ * @param string $description
1019
+ * @param int $applyDiscountToCommission
1020
+ * @param int $percentOrAmt
1021
+ * @paramOption 0 Amount
1022
+ * @paramOption 1 Percent
1023
+ * @param double $amt
1024
+ * @param string $payType
1025
+ * @paramOption Gross
1026
+ * @paramOption Net
1027
+ * @return int
1028
+ */
1029
+ public function addOrderTotalDiscount($name, $description, $applyDiscountToCommission, $percentOrAmt, $amt, $payType)
1030
+ {
1031
+ $carray = array(
1032
+
1033
+ php_xmlrpc_encode((string)$name),
1034
+ php_xmlrpc_encode((string)$description),
1035
+ php_xmlrpc_encode((int)$applyDiscountToCommission),
1036
+ php_xmlrpc_encode((int)$percentOrAmt),
1037
+ php_xmlrpc_encode($amt),
1038
+ php_xmlrpc_encode($payType));
1039
+ return $this->methodCaller("DiscountService.addOrderTotalDiscount", $carray);
1040
+ }
1041
+
1042
+ /**
1043
+ * @method getOrderTotalDiscount
1044
+ * @description retrieves the details on the given order total discount
1045
+ * @param int $id
1046
+ * @return array
1047
+ */
1048
+ public function getOrderTotalDiscount($id)
1049
+ {
1050
+ $carray = array(
1051
+
1052
+ php_xmlrpc_encode((int)$id));
1053
+ return $this->methodCaller("DiscountService.getOrderTotalDiscount", $carray);
1054
+ }
1055
+
1056
+ /**
1057
+ * @method addCategoryDiscount
1058
+ * @description creates a product category discount for the shopping cart
1059
+ * @param string $name
1060
+ * @param string $description
1061
+ * @param int $applyDiscountToCommission
1062
+ * @param double $amt
1063
+ * @return int
1064
+ */
1065
+ public function addCategoryDiscount($name, $description, $applyDiscountToCommission, $amt)
1066
+ {
1067
+ $carray = array(
1068
+
1069
+ php_xmlrpc_encode((string)$name),
1070
+ php_xmlrpc_encode((string)$description),
1071
+ php_xmlrpc_encode((int)$applyDiscountToCommission),
1072
+ php_xmlrpc_encode($amt));
1073
+ return $this->methodCaller("DiscountService.addCategoryDiscount", $carray);
1074
+ }
1075
+
1076
+ /**
1077
+ * @method getCategoryDiscount
1078
+ * @description retrieves the details on the Category discount
1079
+ * @param int $id
1080
+ * @return array
1081
+ */
1082
+ public function getCategoryDiscount($id)
1083
+ {
1084
+ $carray = array(
1085
+
1086
+ php_xmlrpc_encode((int)$id));
1087
+ return $this->methodCaller("DiscountService.getCategoryDiscount", $carray);
1088
+ }
1089
+
1090
+ /**
1091
+ * @method addCategoryAssignmentToCategoryDiscount
1092
+ * @description assigns a product category to a particular category discount
1093
+ * @param int $categoryDiscountId
1094
+ * @param int $productCategoryId
1095
+ * @return int
1096
+ */
1097
+ public function addCategoryAssignmentToCategoryDiscount($categoryDiscountId, $productCategoryId)
1098
+ {
1099
+ $carray = array(
1100
+
1101
+ php_xmlrpc_encode((int)$categoryDiscountId),
1102
+ php_xmlrpc_encode((int)$productCategoryId));
1103
+ return $this->methodCaller("DiscountService.addCategoryAssignmentToCategoryDiscount", $carray);
1104
+ }
1105
+
1106
+ /**
1107
+ * @method getCategoryAssignmentsForCategoryDiscount
1108
+ * @description retrieves the product categories that are currently set for the given category discount
1109
+ * @param int $id
1110
+ * @return array
1111
+ */
1112
+ public function getCategoryAssignmentsForCategoryDiscount($id)
1113
+ {
1114
+ $carray = array(
1115
+
1116
+ php_xmlrpc_encode((int)$id));
1117
+ return $this->methodCaller("DiscountService.getCategoryAssignmentsForCategoryDiscount", $carray);
1118
+ }
1119
+
1120
+ /**
1121
+ * @method addProductTotalDiscount
1122
+ * @description creates a product total discount for the shopping cart
1123
+ * @param string $name
1124
+ * @param string $description
1125
+ * @param int $applyDiscountToCommission
1126
+ * @param int $productId
1127
+ * @param int $percentOrAmt
1128
+ * @paramOption 0 Amount
1129
+ * @paramOption 1 Percent
1130
+ * @param double $amt
1131
+ * @return int
1132
+ */
1133
+ public function addProductTotalDiscount($name, $description, $applyDiscountToCommission, $productId, $percentOrAmt, $amt)
1134
+ {
1135
+ $carray = array(
1136
+
1137
+ php_xmlrpc_encode((string)$name),
1138
+ php_xmlrpc_encode((string)$description),
1139
+ php_xmlrpc_encode((int)$applyDiscountToCommission),
1140
+ php_xmlrpc_encode((int)$productId),
1141
+ php_xmlrpc_encode((int)$percentOrAmt),
1142
+ php_xmlrpc_encode($amt));
1143
+ return $this->methodCaller("DiscountService.addProductTotalDiscount", $carray);
1144
+ }
1145
+
1146
+ /**
1147
+ * @method getProductTotalDiscount
1148
+ * @description retrieves the details on the given product total discount
1149
+ * @param int $id
1150
+ * @return array
1151
+ */
1152
+ public function getProductTotalDiscount($id)
1153
+ {
1154
+ $carray = array(
1155
+
1156
+ php_xmlrpc_encode((int)$id));
1157
+ return $this->methodCaller("DiscountService.getProductTotalDiscount", $carray);
1158
+ }
1159
+
1160
+ /**
1161
+ * @method addShippingTotalDiscount
1162
+ * @description creates a shipping total discount for the shopping cart
1163
+ * @param string $name
1164
+ * @param string $description
1165
+ * @param int $applyDiscountToCommission
1166
+ * @param int $percentOrAmt
1167
+ * @paramOption 0 Amount
1168
+ * @paramOption 1 Percent
1169
+ * @param double $amt
1170
+ * @return int
1171
+ */
1172
+ public function addShippingTotalDiscount($name, $description, $applyDiscountToCommission, $percentOrAmt, $amt)
1173
+ {
1174
+ $carray = array(
1175
+
1176
+ php_xmlrpc_encode((string)$name),
1177
+ php_xmlrpc_encode((string)$description),
1178
+ php_xmlrpc_encode((int)$applyDiscountToCommission),
1179
+ php_xmlrpc_encode((int)$percentOrAmt),
1180
+ php_xmlrpc_encode($amt));
1181
+ return $this->methodCaller("DiscountService.addShippingTotalDiscount", $carray);
1182
+ }
1183
+
1184
+ /**
1185
+ * @method getShippingTotalDiscount
1186
+ * @description retrieves the details on the given shipping total discount
1187
+ * @param int $id
1188
+ * @return array
1189
+ */
1190
+ public function getShippingTotalDiscount($id)
1191
+ {
1192
+ $carray = array(
1193
+
1194
+ php_xmlrpc_encode((int)$id));
1195
+ return $this->methodCaller("DiscountService.getShippingTotalDiscount", $carray);
1196
+ }
1197
+
1198
+ /**
1199
+ * @service API Email Service
1200
+ */
1201
+
1202
+ /**
1203
+ * @method attachEmail
1204
+ * @description attachs an email to a contacts email history
1205
+ * @param int $cId
1206
+ * @param string $fromName
1207
+ * @param string $fromAddress
1208
+ * @param string $toAddress
1209
+ * @param string $ccAddresses
1210
+ * @param string $bccAddresses
1211
+ * @param string $contentType
1212
+ * @param string $subject
1213
+ * @param string $htmlBody
1214
+ * @param string $txtBody
1215
+ * @param string $header
1216
+ * @param date $strRecvdDate
1217
+ * @param date $strSentDate
1218
+ * @param int $emailSentType
1219
+ * @return bool
1220
+ */
1221
+ public function attachEmail($cId, $fromName, $fromAddress, $toAddress, $ccAddresses,
1222
+ $bccAddresses, $contentType, $subject, $htmlBody, $txtBody,
1223
+ $header, $strRecvdDate, $strSentDate, $emailSentType = 1)
1224
+ {
1225
+ $carray = array(
1226
+
1227
+ php_xmlrpc_encode((int)$cId),
1228
+ php_xmlrpc_encode($fromName),
1229
+ php_xmlrpc_encode($fromAddress),
1230
+ php_xmlrpc_encode($toAddress),
1231
+ php_xmlrpc_encode($ccAddresses),
1232
+ php_xmlrpc_encode($bccAddresses),
1233
+ php_xmlrpc_encode($contentType),
1234
+ php_xmlrpc_encode($subject),
1235
+ php_xmlrpc_encode($htmlBody),
1236
+ php_xmlrpc_encode($txtBody),
1237
+ php_xmlrpc_encode($header),
1238
+ php_xmlrpc_encode($strRecvdDate),
1239
+ php_xmlrpc_encode($strSentDate),
1240
+ php_xmlrpc_encode($emailSentType));
1241
+ return $this->methodCaller("APIEmailService.attachEmail", $carray);
1242
+ }
1243
+
1244
+ /**
1245
+ * @method getAvailableMergeFields
1246
+ * @description gets a list of all available merge fields
1247
+ * @param string $mergeContext
1248
+ * @return array
1249
+ */
1250
+ public function getAvailableMergeFields($mergeContext)
1251
+ {
1252
+ $carray = array(
1253
+
1254
+ php_xmlrpc_encode($mergeContext));
1255
+ return $this->methodCaller("APIEmailService.getAvailableMergeFields", $carray);
1256
+ }
1257
+
1258
+ /**
1259
+ * @method sendEmail
1260
+ * @description send an email to a list of contacts
1261
+ * @param array $conList
1262
+ * @param string $fromAddress
1263
+ * @param string $toAddress
1264
+ * @param string $ccAddresses
1265
+ * @param string $bccAddresses
1266
+ * @param string $contentType
1267
+ * @param string $subject
1268
+ * @param string $htmlBody
1269
+ * @param string $txtBody
1270
+ * @return bool
1271
+ */
1272
+ public function sendEmail($conList, $fromAddress, $toAddress, $ccAddresses, $bccAddresses, $contentType, $subject, $htmlBody, $txtBody)
1273
+ {
1274
+ $carray = array(
1275
+
1276
+ php_xmlrpc_encode($conList),
1277
+ php_xmlrpc_encode($fromAddress),
1278
+ php_xmlrpc_encode($toAddress),
1279
+ php_xmlrpc_encode($ccAddresses),
1280
+ php_xmlrpc_encode($bccAddresses),
1281
+ php_xmlrpc_encode($contentType),
1282
+ php_xmlrpc_encode($subject),
1283
+ php_xmlrpc_encode($htmlBody),
1284
+ php_xmlrpc_encode($txtBody));
1285
+
1286
+ return $this->methodCaller("APIEmailService.sendEmail", $carray);
1287
+ }
1288
+
1289
+ /**
1290
+ * @method sendTemplate
1291
+ * @description sends a template to a list of contacts
1292
+ * @note uses APIEmailService.sendEmail with different parameters
1293
+ * @param array $conList
1294
+ * @param int $template
1295
+ * @return bool
1296
+ */
1297
+ public function sendTemplate($conList, $template)
1298
+ {
1299
+ $carray = array(
1300
+
1301
+ php_xmlrpc_encode($conList),
1302
+ php_xmlrpc_encode($template));
1303
+ return $this->methodCaller("APIEmailService.sendEmail", $carray);
1304
+ }
1305
+
1306
+ /**
1307
+ * @note THIS IS DEPRECATED - USE addEmailTemplate instead!
1308
+ * @method createEmailTemplate
1309
+ * @description Creates a legacy Email Template
1310
+ * @param string $title
1311
+ * @param int $userID
1312
+ * @param string $fromAddress
1313
+ * @param string $toAddress
1314
+ * @param string $ccAddresses
1315
+ * @param string $bccAddresses
1316
+ * @param string $contentType
1317
+ * @param string $subject
1318
+ * @param string $htmlBody
1319
+ * @param string $txtBody
1320
+ * @return int
1321
+ */
1322
+ public function createEmailTemplate($title, $userID, $fromAddress, $toAddress, $ccAddresses, $bccAddresses, $contentType, $subject, $htmlBody,
1323
+ $txtBody)
1324
+ {
1325
+ $carray = array(
1326
+
1327
+ php_xmlrpc_encode($title),
1328
+ php_xmlrpc_encode($category = ''),
1329
+ php_xmlrpc_encode($fromAddress),
1330
+ php_xmlrpc_encode($toAddress),
1331
+ php_xmlrpc_encode($ccAddresses),
1332
+ php_xmlrpc_encode($bccAddresses),
1333
+ php_xmlrpc_encode($subject),
1334
+ php_xmlrpc_encode($txtBody),
1335
+ php_xmlrpc_encode($htmlBody),
1336
+ php_xmlrpc_encode($contentType),
1337
+ php_xmlrpc_encode($mergeContext = 'Contact'));
1338
+ return $this->methodCaller("APIEmailService.addEmailTemplate", $carray);
1339
+ }
1340
+
1341
+ /**
1342
+ * @method addEmailTemplate
1343
+ * @description creates an Email Template
1344
+ * @param string $title
1345
+ * @param string $category
1346
+ * @param string $fromAddress
1347
+ * @param string $toAddress
1348
+ * @param string $ccAddresses
1349
+ * @param string $bccAddresses
1350
+ * @param string $subject
1351
+ * @param string $txtBody
1352
+ * @param string $htmlBody
1353
+ * @param string $contentType
1354
+ * @param string $mergeContext
1355
+ * @return int
1356
+ */
1357
+ public function addEmailTemplate($title, $category, $fromAddress, $toAddress, $ccAddresses, $bccAddresses, $subject, $txtBody, $htmlBody, $contentType, $mergeContext)
1358
+ {
1359
+ $carray = array(
1360
+
1361
+ php_xmlrpc_encode($title),
1362
+ php_xmlrpc_encode($category),
1363
+ php_xmlrpc_encode($fromAddress),
1364
+ php_xmlrpc_encode($toAddress),
1365
+ php_xmlrpc_encode($ccAddresses),
1366
+ php_xmlrpc_encode($bccAddresses),
1367
+ php_xmlrpc_encode($subject),
1368
+ php_xmlrpc_encode($txtBody),
1369
+ php_xmlrpc_encode($htmlBody),
1370
+ php_xmlrpc_encode($contentType),
1371
+ php_xmlrpc_encode($mergeContext));
1372
+ return $this->methodCaller("APIEmailService.addEmailTemplate", $carray);
1373
+ }
1374
+
1375
+ /**
1376
+ * @method getEmailTemplate
1377
+ * @description get the HTML of an email template
1378
+ * @param int $templateId
1379
+ * @return array
1380
+ */
1381
+ public function getEmailTemplate($templateId)
1382
+ {
1383
+ $carray = array(
1384
+ php_xmlrpc_encode((int)$templateId));
1385
+ return $this->methodCaller("APIEmailService.getEmailTemplate", $carray);
1386
+ }
1387
+
1388
+ /**
1389
+ * @method updateEmailTemplate
1390
+ * @description Update an Email template
1391
+ * @param int $templateID
1392
+ * @param string $title
1393
+ * @param string $categories
1394
+ * @param string $fromAddress
1395
+ * @param string $toAddress
1396
+ * @param string $ccAddress
1397
+ * @param string $bccAddress
1398
+ * @param string $subject
1399
+ * @param string $textBody
1400
+ * @param string $htmlBody
1401
+ * @param string $contentType
1402
+ * @param string $mergeContext
1403
+ * @return bool
1404
+ */
1405
+ public function updateEmailTemplate($templateID, $title, $categories, $fromAddress, $toAddress, $ccAddress, $bccAddress, $subject, $textBody, $htmlBody, $contentType, $mergeContext)
1406
+ {
1407
+ $carray = array(
1408
+ php_xmlrpc_encode((int)$templateID),
1409
+ php_xmlrpc_encode($title),
1410
+ php_xmlrpc_encode($categories),
1411
+ php_xmlrpc_encode($fromAddress),
1412
+ php_xmlrpc_encode($toAddress),
1413
+ php_xmlrpc_encode($ccAddress),
1414
+ php_xmlrpc_encode($bccAddress),
1415
+ php_xmlrpc_encode($subject),
1416
+ php_xmlrpc_encode($textBody),
1417
+ php_xmlrpc_encode($htmlBody),
1418
+ php_xmlrpc_encode($contentType),
1419
+ php_xmlrpc_encode($mergeContext));
1420
+ return $this->methodCaller("APIEmailService.updateEmailTemplate", $carray);
1421
+ }
1422
+
1423
+ /**
1424
+ * @method getOptStatus
1425
+ * @description get the Opt status of an email
1426
+ * @param string $email
1427
+ * @return int
1428
+ */
1429
+ public function optStatus($email)
1430
+ {
1431
+ $carray = array(
1432
+
1433
+ php_xmlrpc_encode($email));
1434
+ return $this->methodCaller("APIEmailService.getOptStatus", $carray);
1435
+ }
1436
+
1437
+ /**
1438
+ * @method optIn
1439
+ * @description Opts an email in to allow emails to be sent to them
1440
+ * @note Opt-In will only work on "non-marketable contacts not opted out people
1441
+ * @param string $email
1442
+ * @param string $reason
1443
+ * @return bool
1444
+ */
1445
+ public function optIn($email, $reason = 'Contact Was Opted In through the API')
1446
+ {
1447
+ $carray = array(
1448
+
1449
+ php_xmlrpc_encode($email),
1450
+ php_xmlrpc_encode($reason));
1451
+ return $this->methodCaller("APIEmailService.optIn", $carray);
1452
+ }
1453
+
1454
+ /**
1455
+ * @method optOut
1456
+ * @description Opts an email out. Emails will not be sent to them anymore
1457
+ * @param string $email
1458
+ * @param string $reason
1459
+ * @return bool
1460
+ */
1461
+ public function optOut($email, $reason = 'Contact Was Opted Out through the API')
1462
+ {
1463
+ $carray = array(
1464
+
1465
+ php_xmlrpc_encode($email),
1466
+ php_xmlrpc_encode($reason));
1467
+ return $this->methodCaller("APIEmailService.optOut", $carray);
1468
+ }
1469
+
1470
+ /**
1471
+ * @service File Service
1472
+ */
1473
+
1474
+ /**
1475
+ * @method getFile
1476
+ * @description Gets File
1477
+ * @param int $fileID
1478
+ * @return base64 encoded file data
1479
+ */
1480
+ public function getFile($fileID)
1481
+ {
1482
+
1483
+ $carray = array(
1484
+
1485
+ php_xmlrpc_encode((int)$fileID));
1486
+ $result = $this->methodCaller("FileService.getFile", $carray);
1487
+ return $result;
1488
+ }
1489
+
1490
+ /**
1491
+ * @method uploadFile
1492
+ * @description Upload a file to Infusionsoft
1493
+ * @param string $fileName
1494
+ * @param string $base64Enc
1495
+ * @param int $cid
1496
+ * @return int|mixed|string
1497
+ */
1498
+ public function uploadFile($fileName, $base64Enc, $cid = 0)
1499
+ {
1500
+ $result = 0;
1501
+ if ($cid == 0) {
1502
+ $carray = array(
1503
+
1504
+ php_xmlrpc_encode($fileName),
1505
+ php_xmlrpc_encode($base64Enc));
1506
+ $result = $this->methodCaller("FileService.uploadFile", $carray);
1507
+ } else {
1508
+ $carray = array(
1509
+
1510
+ php_xmlrpc_encode((int)$cid),
1511
+ php_xmlrpc_encode($fileName),
1512
+ php_xmlrpc_encode($base64Enc));
1513
+ $result = $this->methodCaller("FileService.uploadFile", $carray);
1514
+ }
1515
+ return $result;
1516
+ }
1517
+
1518
+ /**
1519
+ * @method replaceFile
1520
+ * @description replaces existing file
1521
+ * @param int $fileID
1522
+ * @param string $base64Enc
1523
+ * @return bool
1524
+ */
1525
+ public function replaceFile($fileID, $base64Enc)
1526
+ {
1527
+ $carray = array(
1528
+
1529
+ php_xmlrpc_encode((int)$fileID),
1530
+ php_xmlrpc_encode($base64Enc));
1531
+ $result = $this->methodCaller("FileService.replaceFile", $carray);
1532
+ return $result;
1533
+ }
1534
+
1535
+ /**
1536
+ * @method renameFile
1537
+ * @description rename existing file
1538
+ * @param int $fileID
1539
+ * @param string $fileName
1540
+ * @return bool
1541
+ */
1542
+ public function renameFile($fileID, $fileName)
1543
+ {
1544
+ $carray = array(
1545
+
1546
+ php_xmlrpc_encode((int)$fileID),
1547
+ php_xmlrpc_encode($fileName));
1548
+ $result = $this->methodCaller("FileService.renameFile", $carray);
1549
+ return $result;
1550
+ }
1551
+
1552
+ /**
1553
+ * @method getDownloadUrl
1554
+ * @description gets download url for public files
1555
+ * @param int $fileID
1556
+ * @return string
1557
+ */
1558
+ public function getDownloadUrl($fileID)
1559
+ {
1560
+ $carray = array(
1561
+
1562
+ php_xmlrpc_encode((int)$fileID));
1563
+ $result = $this->methodCaller("FileService.getDownloadUrl", $carray);
1564
+ return $result;
1565
+ }
1566
+
1567
+ /**
1568
+ * @service Funnel Service
1569
+ */
1570
+
1571
+ /**
1572
+ * @method achieveGoal
1573
+ * @description achieves an api goal inside of the Campaign Builder to start a campaign
1574
+ * @param string $integration
1575
+ * @param string $callName
1576
+ * @param int $contactId
1577
+ * @return array
1578
+ */
1579
+ public function achieveGoal($integration, $callName, $contactId)
1580
+ {
1581
+ $carray = array(
1582
+
1583
+ php_xmlrpc_encode((string)$integration),
1584
+ php_xmlrpc_encode((string)$callName),
1585
+ php_xmlrpc_encode((int)$contactId));
1586
+ return $this->methodCaller("FunnelService.achieveGoal", $carray);
1587
+ }
1588
+
1589
+ /**
1590
+ * @service Invoice Service
1591
+ */
1592
+
1593
+ /**
1594
+ * @method deleteInvoice
1595
+ * @description deletes an invoice
1596
+ * @param int $Id
1597
+ * @return bool
1598
+ */
1599
+ public function deleteInvoice($Id)
1600
+ {
1601
+ $carray = array(
1602
+
1603
+ php_xmlrpc_encode((int)$Id));
1604
+ return $this->methodCaller("InvoiceService.deleteInvoice", $carray);
1605
+ }
1606
+
1607
+ /**
1608
+ * @method deleteSubscriptioin
1609
+ * @description Delete a Subscription created through the API
1610
+ * @param $Id
1611
+ * @return bool
1612
+ */
1613
+ public function deleteSubscription($Id)
1614
+ {
1615
+ $carray = array(
1616
+
1617
+ php_xmlrpc_encode((int)$Id));
1618
+ return $this->methodCaller("InvoiceService.deleteSubscription", $carray);
1619
+ }
1620
+
1621
+ /**
1622
+ * @method getPayments
1623
+ * @description Get a list of payments on an invoice
1624
+ * @param $Id
1625
+ * @return array
1626
+ */
1627
+ public function getPayments($Id)
1628
+ {
1629
+ $carray = array(
1630
+
1631
+ php_xmlrpc_encode((int)$Id));
1632
+ return $this->methodCaller("InvoiceService.getPayments", $carray);
1633
+ }
1634
+
1635
+ /**
1636
+ * @method setInvoiceSyncStatus
1637
+ * @description sets the sync status column on the Invoice table
1638
+ * @param $Id
1639
+ * @param $syncStatus
1640
+ * @return bool
1641
+ */
1642
+ public function setInvoiceSyncStatus($Id, $syncStatus)
1643
+ {
1644
+ $carray = array(
1645
+
1646
+ php_xmlrpc_encode((int)$Id),
1647
+ php_xmlrpc_encode($syncStatus));
1648
+ return $this->methodCaller("InvoiceService.setInvoiceSyncStatus", $carray);
1649
+ }
1650
+
1651
+ /**
1652
+ * @method setPaymentSyncStatus
1653
+ * @description sets the sync status column on the Payment table
1654
+ * @param $Id
1655
+ * @param $Status
1656
+ * @return bool
1657
+ */
1658
+ public function setPaymentSyncStatus($Id, $Status)
1659
+ {
1660
+ $carray = array(
1661
+
1662
+ php_xmlrpc_encode((int)$Id),
1663
+ php_xmlrpc_encode($Status));
1664
+ return $this->methodCaller("InvoiceService.setPaymentSyncStatus", $carray);
1665
+ }
1666
+
1667
+ /**
1668
+ * @method getPluginStatus
1669
+ * @description Tells if the Ecommerce plugin is enabled
1670
+ * @param string $className
1671
+ * @return bool
1672
+ */
1673
+ public function getPluginStatus($className)
1674
+ {
1675
+ $carray = array(
1676
+
1677
+ php_xmlrpc_encode($className));
1678
+ return $this->methodCaller("InvoiceService.getPluginStatus", $carray);
1679
+ }
1680
+
1681
+ /**
1682
+ * @method getAllPaymentOptions
1683
+ * @description get a list of all Payment Options
1684
+ * @return array
1685
+ */
1686
+ public function getAllPaymentOptions()
1687
+ {
1688
+ $carray = array();
1689
+ return $this->methodCaller("InvoiceService.getAllPaymentOptions", $carray);
1690
+ }
1691
+
1692
+ /**
1693
+ * @method addManualPayment
1694
+ * @description add a manual payment to an invoice.
1695
+ * @note Will not complete Purchase Goals or Successful Purchase Actions
1696
+ * @param int $invId
1697
+ * @param double $amt
1698
+ * @param datetime $payDate
1699
+ * @param datetime $payType
1700
+ * @param string $payDesc
1701
+ * @param bool $bypassComm
1702
+ * @return int
1703
+ */
1704
+ public function manualPmt($invId, $amt, $payDate, $payType, $payDesc, $bypassComm)
1705
+ {
1706
+ $carray = array(
1707
+
1708
+ php_xmlrpc_encode((int)$invId),
1709
+ php_xmlrpc_encode($amt),
1710
+ php_xmlrpc_encode($payDate, array('auto_dates')),
1711
+ php_xmlrpc_encode($payType),
1712
+ php_xmlrpc_encode($payDesc),
1713
+ php_xmlrpc_encode($bypassComm));
1714
+ return $this->methodCaller("InvoiceService.addManualPayment", $carray);
1715
+ }
1716
+
1717
+ /**
1718
+ * @method addOrderCommissionOverride
1719
+ * @description Override Order Commissions
1720
+ * @param int $invId
1721
+ * @param int $affId
1722
+ * @param int $prodId
1723
+ * @param int $percentage
1724
+ * @param double $amt
1725
+ * @param int $payType
1726
+ * @param string $desc
1727
+ * @param date $date
1728
+ * @return bool
1729
+ */
1730
+ public function commOverride($invId, $affId, $prodId, $percentage, $amt, $payType, $desc, $date)
1731
+ {
1732
+ $carray = array(
1733
+
1734
+ php_xmlrpc_encode((int)$invId),
1735
+ php_xmlrpc_encode((int)$affId),
1736
+ php_xmlrpc_encode((int)$prodId),
1737
+ php_xmlrpc_encode($percentage),
1738
+ php_xmlrpc_encode($amt),
1739
+ php_xmlrpc_encode($payType),
1740
+ php_xmlrpc_encode($desc),
1741
+ php_xmlrpc_encode($date, array('auto_dates')));
1742
+
1743
+ return $this->methodCaller("InvoiceService.addOrderCommissionOverride", $carray);
1744
+ }
1745
+
1746
+ /**
1747
+ * @method addOrderItem
1748
+ * @description add a line item to an order
1749
+ * @param int $ordId
1750
+ * @param int $prodId
1751
+ * @param int $type
1752
+ * @paramOption 1 Shipping
1753
+ * @paramOption 2 Tax
1754
+ * @paramOption 3 Service & Misc
1755
+ * @paramOption 4 Product
1756
+ * @paramOption 5 Upsell Product
1757
+ * @paramOption 6 Fiance Charge
1758
+ * @paramOption 7 Special
1759
+ * @paramOption 8 Program
1760
+ * @paramOption 9 Subscription Plan
1761
+ * @paramOption 10 Special:Free Trial Days
1762
+ * @paramOption 12 Special: Order Total
1763
+ * @paramOption 13 Special: Category
1764
+ * @paramOption 14 Special: Shipping
1765
+ * @param double $price
1766
+ * @param itn $qty
1767
+ * @param string $desc
1768
+ * @param string $notes
1769
+ * @return bool
1770
+ */
1771
+ public function addOrderItem($ordId, $prodId, $type, $price, $qty, $desc, $notes)
1772
+ {
1773
+ $carray = array(
1774
+
1775
+ php_xmlrpc_encode((int)$ordId),
1776
+ php_xmlrpc_encode((int)$prodId),
1777
+ php_xmlrpc_encode((int)$type),
1778
+ php_xmlrpc_encode($price),
1779
+ php_xmlrpc_encode($qty),
1780
+ php_xmlrpc_encode($desc),
1781
+ php_xmlrpc_encode($notes));
1782
+
1783
+ return $this->methodCaller("InvoiceService.addOrderItem", $carray);
1784
+ }
1785
+
1786
+ /**
1787
+ * @method addPaymentPlan
1788
+ * @description add a payment plan to an order
1789
+ * @param int $ordId
1790
+ * @param bool $aCharge
1791
+ * @param int $ccId
1792
+ * @param int $merchId
1793
+ * @param int $retry
1794
+ * @param int $retryAmt
1795
+ * @param double $initialPmt
1796
+ * @param datetime $initialPmtDate
1797
+ * @param datetime $planStartDate
1798
+ * @param int $numPmts
1799
+ * @param int $pmtDays
1800
+ * @return bool
1801
+ */
1802
+ public function payPlan($ordId, $aCharge, $ccId, $merchId, $retry, $retryAmt, $initialPmt, $initialPmtDate, $planStartDate, $numPmts, $pmtDays)
1803
+ {
1804
+ $carray = array(
1805
+
1806
+ php_xmlrpc_encode((int)$ordId),
1807
+ php_xmlrpc_encode($aCharge),
1808
+ php_xmlrpc_encode((int)$ccId),
1809
+ php_xmlrpc_encode((int)$merchId),
1810
+ php_xmlrpc_encode((int)$retry),
1811
+ php_xmlrpc_encode((int)$retryAmt),
1812
+ php_xmlrpc_encode($initialPmt),
1813
+ php_xmlrpc_encode($initialPmtDate, array('auto_dates')),
1814
+ php_xmlrpc_encode($planStartDate, array('auto_dates')),
1815
+ php_xmlrpc_encode((int)$numPmts),
1816
+ php_xmlrpc_encode((int)$pmtDays));
1817
+ return $this->methodCaller("InvoiceService.addPaymentPlan", $carray);
1818
+ }
1819
+
1820
+ /**
1821
+ * @method addRecurringOrder
1822
+ * @description creates a subscription for a contact
1823
+ * @param int $cid
1824
+ * @param bool $allowDup
1825
+ * @param int $progId
1826
+ * @param int $merchId
1827
+ * @param int $ccId
1828
+ * @param int $affId
1829
+ * @param int $daysToCharge
1830
+ * @return int
1831
+ */
1832
+ public function addRecurring($cid, $allowDup, $progId, $merchId, $ccId, $affId, $daysToCharge)
1833
+ {
1834
+ $carray = array(
1835
+
1836
+ php_xmlrpc_encode((int)$cid),
1837
+ php_xmlrpc_encode($allowDup),
1838
+ php_xmlrpc_encode((int)$progId),
1839
+ php_xmlrpc_encode((int)$merchId),
1840
+ php_xmlrpc_encode((int)$ccId),
1841
+ php_xmlrpc_encode((int)$affId),
1842
+ php_xmlrpc_encode($daysToCharge));
1843
+ return $this->methodCaller("InvoiceService.addRecurringOrder", $carray);
1844
+ }
1845
+
1846
+ /**
1847
+ * @method addRecurringOrderAdv
1848
+ * @description creates a subscription for a contact
1849
+ * @note Allows Quantity, Price and Tax
1850
+ * @param int $cid
1851
+ * @param bool $allowDup
1852
+ * @param int $progId
1853
+ * @param int $qty
1854
+ * @param double $price
1855
+ * @param bool $allowTax
1856
+ * @param int $merchId
1857
+ * @param int $ccId
1858
+ * @param int $affId
1859
+ * @param int $daysToCharge
1860
+ * @return int
1861
+ */
1862
+ public function addRecurringAdv($cid, $allowDup, $progId, $qty, $price, $allowTax, $merchId, $ccId, $affId, $daysToCharge)
1863
+ {
1864
+ $carray = array(
1865
+
1866
+ php_xmlrpc_encode((int)$cid),
1867
+ php_xmlrpc_encode($allowDup),
1868
+ php_xmlrpc_encode((int)$progId),
1869
+ php_xmlrpc_encode($qty),
1870
+ php_xmlrpc_encode($price),
1871
+ php_xmlrpc_encode($allowTax),
1872
+ php_xmlrpc_encode($merchId),
1873
+ php_xmlrpc_encode((int)$ccId),
1874
+ php_xmlrpc_encode((int)$affId),
1875
+ php_xmlrpc_encode($daysToCharge));
1876
+ return $this->methodCaller("InvoiceService.addRecurringOrder", $carray);
1877
+ }
1878
+
1879
+ /**
1880
+ * @method calculateAmountOwed
1881
+ * @description calculate amount owed on an invoice
1882
+ * @param int $invId
1883
+ * @return double
1884
+ */
1885
+ public function amtOwed($invId)
1886
+ {
1887
+ $carray = array(
1888
+
1889
+ php_xmlrpc_encode((int)$invId));
1890
+ return $this->methodCaller("InvoiceService.calculateAmountOwed", $carray);
1891
+ }
1892
+
1893
+ /**
1894
+ * @method getInvoiceId
1895
+ * @description get an Invoice Id attached to a one-time order
1896
+ * @param int $orderId
1897
+ * @return int
1898
+ */
1899
+ public function getInvoiceId($orderId)
1900
+ {
1901
+ $carray = array(
1902
+
1903
+ php_xmlrpc_encode((int)$orderId));
1904
+ return $this->methodCaller("InvoiceService.getInvoiceId", $carray);
1905
+ }
1906
+
1907
+ /**
1908
+ * @method getOrderId
1909
+ * @description get the Order Id associated with an Invoice
1910
+ * @param int $invoiceId
1911
+ * @return int
1912
+ */
1913
+ public function getOrderId($invoiceId)
1914
+ {
1915
+ $carray = array(
1916
+
1917
+ php_xmlrpc_encode((int)$invoiceId));
1918
+ return $this->methodCaller("InvoiceService.getOrderId", $carray);
1919
+ }
1920
+
1921
+ /**
1922
+ * @method chargeInvoice
1923
+ * @description Charges an invoice immediately
1924
+ * @param int $invId
1925
+ * @param string $notes
1926
+ * @param int $ccId
1927
+ * @param int $merchId
1928
+ * @param bool $bypassComm
1929
+ * @return array
1930
+ */
1931
+ public function chargeInvoice($invId, $notes, $ccId, $merchId, $bypassComm)
1932
+ {
1933
+ $carray = array(
1934
+
1935
+ php_xmlrpc_encode((int)$invId),
1936
+ php_xmlrpc_encode($notes),
1937
+ php_xmlrpc_encode((int)$ccId),
1938
+ php_xmlrpc_encode((int)$merchId),
1939
+ php_xmlrpc_encode($bypassComm));
1940
+ return $this->methodCaller("InvoiceService.chargeInvoice", $carray);
1941
+ }
1942
+
1943
+ /**
1944
+ * @method createBlankOrder
1945
+ * @description creates a blank order for a contact
1946
+ * @param int $conId
1947
+ * @param string $desc
1948
+ * @param date $oDate
1949
+ * @param int $leadAff
1950
+ * @param int $saleAff
1951
+ * @return int
1952
+ */
1953
+ public function blankOrder($conId, $desc, $oDate, $leadAff, $saleAff)
1954
+ {
1955
+ $carray = array(
1956
+
1957
+ php_xmlrpc_encode((int)$conId),
1958
+ php_xmlrpc_encode($desc),
1959
+ php_xmlrpc_encode($oDate, array('auto_dates')),
1960
+ php_xmlrpc_encode((int)$leadAff),
1961
+ php_xmlrpc_encode((int)$saleAff));
1962
+ return $this->methodCaller("InvoiceService.createBlankOrder", $carray);
1963
+ }
1964
+
1965
+ /**
1966
+ * @method createInvoiceForRecurring
1967
+ * @description creates an invoice for a subscription
1968
+ * @param int $rid
1969
+ * @return int
1970
+ */
1971
+ public function recurringInvoice($rid)
1972
+ {
1973
+ $carray = array(
1974
+
1975
+ php_xmlrpc_encode((int)$rid));
1976
+ return $this->methodCaller("InvoiceService.createInvoiceForRecurring", $carray);
1977
+ }
1978
+
1979
+ /**
1980
+ * @method locateExistingCard
1981
+ * @description locates a creditcard Id from based on the last 4 digits
1982
+ * @param int $cid
1983
+ * @param string $last4
1984
+ * @return int
1985
+ */
1986
+ public function locateCard($cid, $last4)
1987
+ {
1988
+ $carray = array(
1989
+
1990
+ php_xmlrpc_encode((int)$cid),
1991
+ php_xmlrpc_encode($last4));
1992
+ return $this->methodCaller("InvoiceService.locateExistingCard", $carray);
1993
+ }
1994
+
1995
+ /**
1996
+ * @method validateCreditCard
1997
+ * @description Validates a Credit Card
1998
+ * @note this will take a CC ID or a CC array
1999
+ * @param mixed $creditCard
2000
+ * @return int
2001
+ */
2002
+ public function validateCard($creditCard)
2003
+ {
2004
+ $creditCard = is_array($creditCard) ? $creditCard : (int)$creditCard;
2005
+
2006
+ $carray = array(
2007
+
2008
+ php_xmlrpc_encode($creditCard));
2009
+ return $this->methodCaller("InvoiceService.validateCreditCard", $carray);
2010
+ }
2011
+
2012
+ /**
2013
+ * @method updateSubscriptionNextBillDate
2014
+ * @description Updates the Next Bill Date on a Subscription
2015
+ * @param int $subscriptionId
2016
+ * @param date $nextBillDate
2017
+ * @return bool
2018
+ */
2019
+ public function updateSubscriptionNextBillDate($subscriptionId, $nextBillDate)
2020
+ {
2021
+ $carray = array(
2022
+
2023
+ php_xmlrpc_encode((int)$subscriptionId),
2024
+ php_xmlrpc_encode($nextBillDate, array('auto_dates')));
2025
+ return $this->methodCaller("InvoiceService.updateJobRecurringNextBillDate", $carray);
2026
+ }
2027
+
2028
+ /**
2029
+ * @method recalculateTax
2030
+ * @description recalculates tax for a given invoice Id
2031
+ * @param $invoiceId
2032
+ * @return bool
2033
+ */
2034
+ public function recalculateTax($invoiceId)
2035
+ {
2036
+ $carray = array(
2037
+
2038
+ php_xmlrpc_encode((int)$invoiceId));
2039
+ return $this->methodCaller("InvoiceService.recalculateTax", $carray);
2040
+ }
2041
+
2042
+ /**
2043
+ * @service Misc iSDK Functions
2044
+ */
2045
+
2046
+ /**
2047
+ * @method infuDate
2048
+ * @description returns properly formatted dates.
2049
+ * @param $dateStr
2050
+ * @return bool|string
2051
+ */
2052
+ public function infuDate($dateStr)
2053
+ {
2054
+ $dArray = date_parse($dateStr);
2055
+ if ($dArray['error_count'] < 1) {
2056
+ $tStamp =
2057
+ mktime($dArray['hour'], $dArray['minute'], $dArray['second'], $dArray['month'],
2058
+ $dArray['day'], $dArray['year']);
2059
+ return date('Ymd\TH:i:s', $tStamp);
2060
+ } else {
2061
+ foreach ($dArray['errors'] as $err) {
2062
+ echo "ERROR: " . $err . "<br />";
2063
+ }
2064
+ die("The above errors prevented the application from executing properly.");
2065
+ }
2066
+ }
2067
+
2068
+ /**
2069
+ * @method enableLogging
2070
+ * @description Function to Enable/Disable Logging
2071
+ * @param int $log
2072
+ */
2073
+ public function enableLogging($log)
2074
+ {
2075
+ $this->loggingEnabled = $log;
2076
+ }
2077
+
2078
+ /**
2079
+ * @method getHandle
2080
+ * @description Creates CSV Resource
2081
+ * @param string $logname
2082
+ * @return resource
2083
+ */
2084
+ static protected function getHandle($logname)
2085
+ {
2086
+ if (!is_resource(self::$handle)) {
2087
+ self::$handle = fopen($logname, 'a+');
2088
+ }
2089
+ return self::$handle;
2090
+ }
2091
+
2092
+ /**
2093
+ * @method log
2094
+ * @description Function for Logging Calls
2095
+ * @param array $data
2096
+ * @return mixed
2097
+ */
2098
+ private function log($data)
2099
+ {
2100
+ $logdata = $data;
2101
+
2102
+ if ($this->logname == '') {
2103
+ $logname = dirname(__FILE__) . '/apilog.csv';
2104
+ } else {
2105
+ $logname = $this->logname;
2106
+ }
2107
+
2108
+ if (!file_exists($logname)) {
2109
+ $this->getHandle($logname);
2110
+ fputcsv(self::$handle, array('Date', 'Method', 'Call', 'Start Time', 'Stop Time', 'Execution Time', 'Result', 'Error', 'Error Code'));
2111
+ } else {
2112
+ $this->getHandle($logname);
2113
+ }
2114
+
2115
+ if (isset($logdata['Call'][0]->me['string'])) {
2116
+ if ($logdata['Call'][0]->me['string'] == 'CreditCard') {
2117
+ unset($logdata['Call'][1]->me['struct']);
2118
+ $logdata['Call'][1]->me['struct'] = 'Data Removed For Security';
2119
+ }
2120
+ }
2121
+
2122
+ $logdata['Call'][0]->me['string'] = 'APIKEY';
2123
+
2124
+ fputcsv(self::$handle, array(
2125
+ date('Y-m-d H:i:s', $logdata['Now']),
2126
+ $logdata['Method'],
2127
+ print_r(serialize($logdata['Call']), true),
2128
+ $logdata['Start'],
2129
+ $logdata['Stop'],
2130
+ ($logdata['Stop'] - $logdata['Start']),
2131
+ print_r(serialize($logdata['Result']), true),
2132
+ $logdata['Error'],
2133
+ $logdata['ErrorCode']
2134
+ ));
2135
+ fclose(self::$handle);
2136
+
2137
+ }
2138
+
2139
+ public function setLog($logPath)
2140
+ {
2141
+ $this->logname = $logPath;
2142
+ }
2143
+
2144
+ /**
2145
+ * @service Order Service
2146
+ */
2147
+
2148
+ /**
2149
+ * @method placeOrder
2150
+ * @description Builds, creates and charges an order.
2151
+ * @param int $contactId
2152
+ * @param int $creditCardId
2153
+ * @param int $payPlanId
2154
+ * @param array $productIds
2155
+ * @param array $subscriptionIds
2156
+ * @param bool $processSpecials
2157
+ * @param array $promoCodes
2158
+ * @param int $leadAff
2159
+ * @param int $saleAff
2160
+ * @return array
2161
+ */
2162
+ public function placeOrder($contactId, $creditCardId, $payPlanId, $productIds, $subscriptionIds, $processSpecials, $promoCodes, $leadAff = 0, $saleAff = 0)
2163
+ {
2164
+ $carray = array(
2165
+
2166
+ php_xmlrpc_encode((int)$contactId),
2167
+ php_xmlrpc_encode((int)$creditCardId),
2168
+ php_xmlrpc_encode((int)$payPlanId),
2169
+ php_xmlrpc_encode($productIds),
2170
+ php_xmlrpc_encode($subscriptionIds),
2171
+ php_xmlrpc_encode($processSpecials),
2172
+ php_xmlrpc_encode($promoCodes),
2173
+ php_xmlrpc_encode((int)$leadAff),
2174
+ php_xmlrpc_encode((int)$saleAff));
2175
+ return $this->methodCaller("OrderService.placeOrder", $carray);
2176
+ }
2177
+
2178
+ /**
2179
+ * @service Product Service
2180
+ */
2181
+
2182
+ /**
2183
+ * @method getInventory
2184
+ * @description retrieves the current inventory level for a specific product
2185
+ * @param int $productId
2186
+ * @return int
2187
+ */
2188
+ public function getInventory($productId)
2189
+ {
2190
+ $carray = array(
2191
+
2192
+ php_xmlrpc_encode((int)$productId));
2193
+ return $this->methodCaller("ProductService.getInventory", $carray);
2194
+ }
2195
+
2196
+ /**
2197
+ * @method incrementInventory
2198
+ * @description increments current inventory level by 1
2199
+ * @param int $productId
2200
+ * @return bool
2201
+ */
2202
+ public function incrementInventory($productId)
2203
+ {
2204
+ $carray = array(
2205
+
2206
+ php_xmlrpc_encode((int)$productId));
2207
+ return $this->methodCaller("ProductService.incrementInventory", $carray);
2208
+ }
2209
+
2210
+ /**
2211
+ * @method decrementInventory
2212
+ * @description decrements current inventory level by 1
2213
+ * @param int $productId
2214
+ * @return bool
2215
+ */
2216
+ function decrementInventory($productId)
2217
+ {
2218
+ $carray = array(
2219
+
2220
+ php_xmlrpc_encode((int)$productId));
2221
+ return $this->methodCaller("ProductService.decrementInventory", $carray);
2222
+ }
2223
+
2224
+ /**
2225
+ * @method increaseInventory
2226
+ * @description increases inventory levels
2227
+ * @param int $productId
2228
+ * @param int $quantity
2229
+ * @return bool
2230
+ */
2231
+ public function increaseInventory($productId, $quantity)
2232
+ {
2233
+ $carray = array(
2234
+
2235
+ php_xmlrpc_encode((int)$productId),
2236
+ php_xmlrpc_encode((int)$quantity));
2237
+ return $this->methodCaller("ProductService.increaseInventory", $carray);
2238
+ }
2239
+
2240
+ /**
2241
+ * @method decreaseInventory
2242
+ * @description decreases inventory levels
2243
+ * @param int $productId
2244
+ * @param int $quantity
2245
+ * @return bool
2246
+ */
2247
+ public function decreaseInventory($productId, $quantity)
2248
+ {
2249
+ $carray = array(
2250
+
2251
+ php_xmlrpc_encode((int)$productId),
2252
+ php_xmlrpc_encode((int)$quantity));
2253
+ return $this->methodCaller("ProductService.decreaseInventory", $carray);
2254
+ }
2255
+
2256
+ /**
2257
+ * @method deactivateCreditCard
2258
+ * @description deactivate a credit card
2259
+ * @param int $creditCardId
2260
+ * @return bool
2261
+ */
2262
+ public function deactivateCreditCard($creditCardId)
2263
+ {
2264
+ $carray = array(
2265
+
2266
+ php_xmlrpc_encode((int)$creditCardId));
2267
+ return $this->methodCaller("ProductService.deactivateCreditCard", $carray);
2268
+ }
2269
+
2270
+ /**
2271
+ * @service Search Service
2272
+ */
2273
+
2274
+ /**
2275
+ * @method getSavedSearchResultsAllFields
2276
+ * @description returns a saved search with all fields
2277
+ * @param int $savedSearchId
2278
+ * @param int $userId
2279
+ * @param int $page
2280
+ * @return array
2281
+ */
2282
+ public function savedSearchAllFields($savedSearchId, $userId, $page)
2283
+ {
2284
+ $carray = array(
2285
+
2286
+ php_xmlrpc_encode((int)$savedSearchId),
2287
+ php_xmlrpc_encode((int)$userId),
2288
+ php_xmlrpc_encode((int)$page));
2289
+ return $this->methodCaller("SearchService.getSavedSearchResultsAllFields", $carray);
2290
+ }
2291
+
2292
+ /**
2293
+ * @method getSavedSearchResults
2294
+ * @description returns a saved search with selected fields
2295
+ * @param int $savedSearchId
2296
+ * @param int $userId
2297
+ * @param int $page
2298
+ * @param array $fields
2299
+ * @return array
2300
+ */
2301
+ public function savedSearch($savedSearchId, $userId, $page, $fields)
2302
+ {
2303
+ $carray = array(
2304
+
2305
+ php_xmlrpc_encode((int)$savedSearchId),
2306
+ php_xmlrpc_encode((int)$userId),
2307
+ php_xmlrpc_encode((int)$page),
2308
+ php_xmlrpc_encode($fields));
2309
+ return $this->methodCaller("SearchService.getSavedSearchResults", $carray);
2310
+ }
2311
+
2312
+ /**
2313
+ * @method getAllReportColumns
2314
+ * @description returns the fields available in a saved report
2315
+ * @param int $savedSearchId
2316
+ * @param int $userId
2317
+ * @return array
2318
+ */
2319
+ public function getAvailableFields($savedSearchId, $userId)
2320
+ {
2321
+ $carray = array(
2322
+
2323
+ php_xmlrpc_encode((int)$savedSearchId),
2324
+ php_xmlrpc_encode((int)$userId));
2325
+ return $this->methodCaller("SearchService.getAllReportColumns", $carray);
2326
+ }
2327
+
2328
+ /**
2329
+ * @method getDefaultQuickSearch
2330
+ * @description returns the default quick search type for a user
2331
+ * @param int $userId
2332
+ * @return array
2333
+ */
2334
+ public function getDefaultQuickSearch($userId)
2335
+ {
2336
+ $carray = array(
2337
+
2338
+ php_xmlrpc_encode((int)$userId));
2339
+ return $this->methodCaller("SearchService.getDefaultQuickSearch", $carray);
2340
+ }
2341
+
2342
+ /**
2343
+ * @method getAvailableQuickSearches
2344
+ * @description returns the available quick search types
2345
+ * @param int $userId
2346
+ * @return array
2347
+ */
2348
+ public function getQuickSearches($userId)
2349
+ {
2350
+ $carray = array(
2351
+
2352
+ php_xmlrpc_encode((int)$userId));
2353
+ return $this->methodCaller("SearchService.getAvailableQuickSearches", $carray);
2354
+ }
2355
+
2356
+ /**
2357
+ * @method quickSearch
2358
+ * @description returns the results of a quick search
2359
+ * @param int $quickSearchType
2360
+ * @param int $userId
2361
+ * @param string $filterData
2362
+ * @param int $page
2363
+ * @param int $limit
2364
+ * @return array
2365
+ */
2366
+ public function quickSearch($quickSearchType, $userId, $filterData, $page, $limit)
2367
+ {
2368
+ $carray = array(
2369
+
2370
+ php_xmlrpc_encode($quickSearchType),
2371
+ php_xmlrpc_encode((int)$userId),
2372
+ php_xmlrpc_encode($filterData),
2373
+ php_xmlrpc_encode((int)$page),
2374
+ php_xmlrpc_encode((int)$limit));
2375
+ return $this->methodCaller("SearchService.quickSearch", $carray);
2376
+ }
2377
+
2378
+ /**
2379
+ * @service Service Call Service
2380
+ * @note also known as Ticket System. This service is deprecated
2381
+ */
2382
+
2383
+ /**
2384
+ * @method addMoveNotes
2385
+ * @description Adds move notes to existing tickets
2386
+ * @param array $ticketList
2387
+ * @param string $moveNotes
2388
+ * @param int $moveToStageId
2389
+ * @param int $notifyIds
2390
+ * @return bool
2391
+ */
2392
+ public function addMoveNotes($ticketList, $moveNotes, $moveToStageId, $notifyIds)
2393
+ {
2394
+ $carray = array(
2395
+
2396
+ php_xmlrpc_encode($ticketList),
2397
+ php_xmlrpc_encode($moveNotes),
2398
+ php_xmlrpc_encode($moveToStageId),
2399
+ php_xmlrpc_encode($notifyIds));
2400
+ return $this->methodCaller("ServiceCallService.addMoveNotes", $carray);
2401
+ }
2402
+
2403
+ /**
2404
+ * @method moveTicketStage
2405
+ * @description Moves a Ticket Stage
2406
+ * @param int $ticketID
2407
+ * @param string $ticketStage
2408
+ * @param string $moveNotes
2409
+ * @param string $notifyIds
2410
+ * @return bool
2411
+ */
2412
+ public function moveTicketStage($ticketID, $ticketStage, $moveNotes, $notifyIds)
2413
+ {
2414
+ $carray = array(
2415
+
2416
+ php_xmlrpc_encode((int)$ticketID),
2417
+ php_xmlrpc_encode($ticketStage),
2418
+ php_xmlrpc_encode($moveNotes),
2419
+ php_xmlrpc_encode($notifyIds));
2420
+ return $this->methodCaller("ServiceCallService.moveTicketStage", $carray);
2421
+ }
2422
+
2423
+ /**
2424
+ * @service Shipping Service
2425
+ */
2426
+
2427
+ /**
2428
+ * @method getAllShippingOptions
2429
+ * @description get a list of shipping methods
2430
+ * @return array
2431
+ */
2432
+ public function getAllShippingOptions()
2433
+ {
2434
+ $carray = array();
2435
+ return $this->methodCaller("ShippingService.getAllShippingOptions", $carray);
2436
+ }
2437
+
2438
+ /**
2439
+ * @method getAllConfiguredShippingOptions
2440
+ * @description get a list of shipping methods
2441
+ * @return array
2442
+ */
2443
+ public function getAllConfiguredShippingOptions()
2444
+ {
2445
+ $carray = array();
2446
+ return $this->methodCaller("ShippingService.getAllShippingOptions", $carray);
2447
+ }
2448
+
2449
+ /**
2450
+ * @method getFlatRateShippingOption
2451
+ * @description retrieves details on a flat rate type shipping option
2452
+ * @param int $optionId
2453
+ * @return array
2454
+ */
2455
+ public function getFlatRateShippingOption($optionId)
2456
+ {
2457
+ $carray = array(
2458
+
2459
+ php_xmlrpc_encode((int)$optionId));
2460
+ return $this->methodCaller("ShippingService.getFlatRateShippingOption", $carray);
2461
+ }
2462
+
2463
+ /**
2464
+ * @method getOrderTotalShippingOption
2465
+ * @description retrieves details on a order total type shipping option
2466
+ * @param int $optionId
2467
+ * @return array
2468
+ */
2469
+ public function getOrderTotalShippingOption($optionId)
2470
+ {
2471
+ $carray = array(
2472
+
2473
+ php_xmlrpc_encode((int)$optionId));
2474
+ return $this->methodCaller("ShippingService.getOrderTotalShippingOption", $carray);
2475
+ }
2476
+
2477
+ /**
2478
+ * @method getOrderTotalShippingRanges
2479
+ * @description retrieves the pricing range details for the given Order Total shipping option
2480
+ * @param int $optionId
2481
+ * @return array
2482
+ */
2483
+ public function getOrderTotalShippingRanges($optionId)
2484
+ {
2485
+ $carray = array(
2486
+
2487
+ php_xmlrpc_encode((int)$optionId));
2488
+ return $this->methodCaller("ShippingService.getOrderTotalShippingRanges", $carray);
2489
+ }
2490
+
2491
+ /**
2492
+ * @method getProductBasedShippingOption
2493
+ * @description retrieves details on a product based type shipping option
2494
+ * @param int $optionId
2495
+ * @return array
2496
+ */
2497
+ public function getProductBasedShippingOption($optionId)
2498
+ {
2499
+ $carray = array(
2500
+
2501
+ php_xmlrpc_encode((int)$optionId));
2502
+ return $this->methodCaller("ShippingService.getProductBasedShippingOption", $carray);
2503
+ }
2504
+
2505
+ /**
2506
+ * @method getProductShippingPricesForProductShippingOption
2507
+ * @description retrieves the pricing for your per product shipping options
2508
+ * @param int $optionId
2509
+ * @return array
2510
+ */
2511
+ public function getProductShippingPricesForProductShippingOption($optionId)
2512
+ {
2513
+ $carray = array(
2514
+
2515
+ php_xmlrpc_encode((int)$optionId));
2516
+ return $this->methodCaller("ShippingService.getProductShippingPricesForProductShippingOption", $carray);
2517
+ }
2518
+
2519
+ /**
2520
+ * @method getOrderQuantityShippingOption
2521
+ * @description retrieves details on a order quantity type shipping option
2522
+ * @param int $optionId
2523
+ * @return array
2524
+ */
2525
+ public function getOrderQuantityShippingOption($optionId)
2526
+ {
2527
+ $carray = array(
2528
+
2529
+ php_xmlrpc_encode((int)$optionId));
2530
+ return $this->methodCaller("ShippingService.getOrderQuantityShippingOption", $carray);
2531
+ }
2532
+
2533
+ /**
2534
+ * @method getWeightBasedShippingOption
2535
+ * @description retrieves details on a weight based type shipping option
2536
+ * @param int $optionId
2537
+ * @return array
2538
+ */
2539
+ public function getWeightBasedShippingOption($optionId)
2540
+ {
2541
+ $carray = array(
2542
+
2543
+ php_xmlrpc_encode((int)$optionId));
2544
+ return $this->methodCaller("ShippingService.getWeightBasedShippingOption", $carray);
2545
+ }
2546
+
2547
+ /**
2548
+ * @method getWeightBasedShippingRanges
2549
+ * @description retrieves the weight ranges for a weight based type shipping option
2550
+ * @param int $optionId
2551
+ * @return array
2552
+ */
2553
+ public function getWeightBasedShippingRanges($optionId)
2554
+ {
2555
+ $carray = array(
2556
+
2557
+ php_xmlrpc_encode((int)$optionId));
2558
+ return $this->methodCaller("ShippingService.getWeightBasedShippingRanges", $carray);
2559
+ }
2560
+
2561
+ /**
2562
+ * @method getUpsShippingOption
2563
+ * @description retrieves the details around a UPS type shipping option
2564
+ * @param int $optionId
2565
+ * @return array
2566
+ */
2567
+ public function getUpsShippingOption($optionId)
2568
+ {
2569
+ $carray = array(
2570
+
2571
+ php_xmlrpc_encode((int)$optionId));
2572
+ return $this->methodCaller("ShippingService.getUpsShippingOption", $carray);
2573
+ }
2574
+
2575
+ /**
2576
+ * @service Web Form Service
2577
+ */
2578
+
2579
+ /**
2580
+ * @method getMap
2581
+ * @description returns web form titles and Id numbers from the application
2582
+ * @return array
2583
+ */
2584
+ public function getWebFormMap()
2585
+ {
2586
+ $carray = array();
2587
+ return $this->methodCaller("WebFormService.getMap", $carray);
2588
+ }
2589
+
2590
+ /**
2591
+ * @method getHTML
2592
+ * @description returns the HTML for the given web form
2593
+ * @param int $webFormId
2594
+ * @return string
2595
+ */
2596
+ public function getWebFormHtml($webFormId = 0)
2597
+ {
2598
+ $carray = array(
2599
+
2600
+ php_xmlrpc_encode((int)$webFormId));
2601
+ return $this->methodCaller("WebFormService.getHTML", $carray);
2602
+ }
2603
+
2604
+ /**
2605
+ * @service Web Tracking Service
2606
+ */
2607
+
2608
+ /**
2609
+ * @method getWebTrackingScriptTag
2610
+ * @description returns the web tracking javascript code
2611
+ * @return string
2612
+ */
2613
+ public function getWebTrackingServiceTag()
2614
+ {
2615
+ $carray = array();
2616
+ return $this->methodCaller("WebTrackingService.getWebTrackingScriptTag", $carray);
2617
+ }
2618
+
2619
+ /**
2620
+ * @method getWebTrackingScriptUrl
2621
+ * @description returns the url for the web tracking code
2622
+ * @return string
2623
+ */
2624
+ public function getWebTrackingScriptUrl()
2625
+ {
2626
+ $carray = array();
2627
+ return $this->methodCaller("WebTrackingService.getWebTrackingScriptUrl", $carray);
2628
+ }
2629
+
2630
+ }
2631
+
2632
+ ?>
includes/vendor/infusionsoft/xmlrpc-3.0/Changelog ADDED
@@ -0,0 +1,1573 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 2009-09-05 - G. Giunta (giunta.gaetano@gmail.com)
2
+
3
+ * xmlrpcs.inc, xmlrpcs.inc: remove code that was left for compatibility
4
+ with php 4; use __METHOD__ constant for error messages instead of hardcoded
5
+ values
6
+
7
+ * xmlrpcs.inc: catch exceptions thrown during execution of invoked methods;
8
+ check for $_SERVER having been disabled via php.ini and log an error if so
9
+
10
+ * server.php, testsuite.php: add a new test and server method for exception
11
+ catching in the server
12
+
13
+ * xmlrpc.inc: added new method SetUserAgent to client to allow having different
14
+ user-agent http headers
15
+
16
+ * tagged and released as 3.0.0 beta
17
+
18
+ 2009-08-05 - G. Giunta (giunta.gaetano@gmail.com)
19
+
20
+ * xmlrpc_wrappers.inc: improve compatibility with php 5.0 when registering
21
+ class/object methods
22
+
23
+ 2009-08-02 - G. Giunta (giunta.gaetano@gmail.com) thanks Laurens
24
+
25
+ * xmlrpcs.inc: add a new member var in server class to allow fine-tuning
26
+ of the encoding of returned values when the server is in 'phpvals' mode;
27
+ allow servers in 'xmlrpcvals' mode to also register plain php functions by
28
+ defining them in the dispatch map with an added option:
29
+ 'parameters_type' => 'phpvals' (feature request #2806628)
30
+
31
+ * xmlrpc.inc: added new method xmrlpc_client::SetCurlOptions($array) to
32
+ allow extra flexibility in tweaking http config, such as explicitly
33
+ binding to an ip address (feature request #2787468); fix bad encoding if
34
+ same object is encoded twice using php_xmlrpc_encode; removed some by-ref
35
+ assignments and declarations
36
+
37
+ 2009-07-31 - G. Giunta (giunta.gaetano@gmail.com)
38
+
39
+ * xmlrpc.inc: add support for dateTime objects in both in php_xmlrpc_encode
40
+ and as parameter for constructor of xmlrpcvals; add support for timestamps
41
+ as parameter for constructor of xmlrpcvals; add option 'dates_as_objects' to
42
+ php_xmlrpc_decode to return dateTime objects for xmlrpc datetimes
43
+
44
+ * benchmark.php, xmlrpc_wrappers.inc: remove usage of split(), deprecated in
45
+ php 5.3
46
+
47
+ * benchmark.php: fixed url of server page used for testing; improved
48
+ verification of correspondence of test results; added more variants for
49
+ http options comparison
50
+
51
+ * verify_compat.php: check for php version 5 for client side too
52
+
53
+ * makefile: remove from build the compat directory
54
+
55
+ 2009-07-26 - G. Giunta (giunta.gaetano@gmail.com)
56
+
57
+ * server.php: remove usage of ereg*(), deprecated in php 5.3
58
+
59
+ 2009-07-16 - G. Giunta (giunta.gaetano@gmail.com) thanks Jean-Jacques Sarton
60
+
61
+ * xmlrpc.inc: add support for the <ex:nil/> from the apache library, both
62
+ in input and output (feature request #...)
63
+
64
+ * xmlrpc.inc, testsuite.php: remove usage of split(), deprecated in php 5.3
65
+
66
+ * testsuite.php: flush better results with output_buffering on
67
+
68
+ * server: php: avoid one warning about static function calls
69
+
70
+ 2009-07-02 - G. Giunta (giunta.gaetano@gmail.com) thanks Heiko Stuebner
71
+
72
+ * xmlrpc.inc: fix: when checking the parameters against the signatures xmlrpc
73
+ checks for "array" but PHP returns "Array" resulting in a not matches signature
74
+
75
+ 2009-05-07 - G. Giunta (giunta.gaetano@gmail.com)
76
+
77
+ * replace all usage of '= & new' with '= new', as this is deprecated in php 5
78
+ and has been shown to cause problems too
79
+
80
+ 2009-05-06 - G. Giunta (giunta.gaetano@gmail.com)
81
+
82
+ * create php4 branch, rename trunk to 3.0.0beta - it will be the php5-only version
83
+
84
+ * xmlrpc.inc: removed test for php version and inclusion of compat patches for really
85
+ really old versions of php 4
86
+
87
+ 2009-03-16 - G. Giunta (giunta.gaetano@gmail.com) thanks Tommaso Trani
88
+
89
+ * move from CVS to SVN on sf.net; file layout now is the same as in packaged lib
90
+
91
+ * xmlrpc.inc: fix php warning when receiving 'false' in a bool value
92
+
93
+ * Makefile, doc/Makefile: alter to follow new file layout
94
+
95
+ * tagged and released as 2.2.2
96
+
97
+ 2009-02-03 - G. Giunta (giunta.gaetano@gmail.com)
98
+
99
+ * debugger/action.php: improve code robustness when parsing system.listmethods
100
+ and system.describemethods call
101
+
102
+ * xmlrpc.inc: format floating point values using the correct decimal separator
103
+ even when php locale is set to one that uses comma (bug #2517579);
104
+ use feof() to test if socket connections are to be closed instead of the
105
+ number of bytes read (bug #2556209)
106
+
107
+ 2008-10-29 - G. Giunta (giunta.gaetano@gmail.com)
108
+
109
+ * xmlrpcs.inc: allow add_to_map server method to add docs for single params, too
110
+
111
+ 2008-09-20 - G. Giunta (giunta.gaetano@gmail.com)
112
+
113
+ * xmlrpc_wrappers.inc: added the possibility to wrap for exposure as xmlrpc
114
+ methods plain php class methods, object methods and even whole classes
115
+
116
+ * testsuite.php, server.php: added test cases for the new code
117
+
118
+ 2008-09-07 - G. Giunta (giunta.gaetano@gmail.com) thanks Bruno Zanetti Melotti
119
+
120
+ * xmlrpc.inc: be more tolerant in detection of charset in http headers (fix for bug #2058158)
121
+
122
+ 2008-04-05 - G. Giunta (giunta.gaetano@gmail.com)
123
+
124
+ * xmlrpc.inc: fix encoding of UTF8 chars outside of the BMP
125
+
126
+ * xmlrpcs.inc: fix detection of zlib.output_compression (thanks xbert)
127
+
128
+ 2008-03-06 - G. Giunta (giunta.gaetano@gmail.com)
129
+
130
+ * tagged and released as 2.2.1
131
+
132
+ * Makefile: improve usage on windows xp despite cmd's broken mkdir
133
+
134
+ 2007-10-26 - G. Giunta (giunta.gaetano@gmail.com) thanks sajo_raftman
135
+
136
+ * xmlrpc.inc: remove one warning in xmlrpc_client creator
137
+
138
+ 2007-10-26 - G. Giunta (giunta.gaetano@gmail.com)
139
+
140
+ * xmlrpc.inc: improve support for windows cp1252 character set (still
141
+ commented in the code)
142
+
143
+ 2007-09-05 - G. Giunta (giunta.gaetano@gmail.com)
144
+
145
+ * xmlrpc.inc, xmlrps.inc: do not try to set invalid charsets as output for
146
+ xml parser, even if user set them up for internal_encoding (helps encoding
147
+ to exotic charsets, while decoding to UTF8)
148
+
149
+ 2007-09-05 - G. Giunta (giunta.gaetano@gmail.com)
150
+
151
+ * xmlrpc.inc: fix parsing of '1e+1' as valid float
152
+
153
+ 2007-09-01 - G. Giunta (giunta.gaetano@gmail.com), thanks Frederic Lecointre
154
+
155
+ * xmlrpcs.inc: allow errorlevel 3 to work when prev. error handler was a static method
156
+
157
+ * testsuite.php: fix test on setCookie()
158
+
159
+ 2007-08-31 - G. Giunta (giunta.gaetano@gmail.com)
160
+
161
+ * xmlrpc.inc: minor fix in cookie parsing
162
+
163
+ 2007-07-31 - G. Giunta (giunta.gaetano@gmail.com)
164
+
165
+ * xmlrpc.inc: Fix usage of client::setcookie() for multiple cookies in non-ssl mode
166
+
167
+ 2007-07-26 - G. Giunta (giunta.gaetano@gmail.com) thanks Mark Olive
168
+
169
+ * xmlrpc.inc: Fix for bug # 1756274 (usage of cookies in ssl mode)
170
+
171
+ 2007-04-28 - G. Giunta (giunta.gaetano@gmail.com)
172
+
173
+ * xmlrpc.inc: give more detailed curl information when DEBUG = 2; fix handling
174
+ of case where curl w. keepalive is used and one connection of many fails
175
+
176
+ * testsuite improvements: add one testcase; give feedbcak while tests are
177
+ running
178
+
179
+ 2007-04-01 - G. Giunta (giunta.gaetano@gmail.com)
180
+
181
+ * doc/makefile, doc/custom.fo.xsl: improve pdf rendering of php source code
182
+
183
+ * makefile: recover version number from source instead of having it hardcoded
184
+
185
+ 2007-03-10 - G. Giunta (giunta.gaetano@gmail.com)
186
+
187
+ * doc/makefile, doc/convert.php, doc/*.xsl: created customizations xslt to
188
+ produce a documentation more in line with the php manual, esp. with regards
189
+ to functions synopsis; added jellyfish book cover as local resource and a
190
+ screenshot of the debugger too; various updates to the manual source; added
191
+ a php script to highlight examples inside html docs
192
+
193
+ 2007-03-09 - G. Giunta (giunta.gaetano@gmail.com)
194
+
195
+ * debugger/action.php: css tweak for IE
196
+
197
+ * added phpunit license file in the phpunit directory
198
+
199
+ * added link to license (on sf.net site) to many files
200
+
201
+ 2007-03-04 - G. Giunta (giunta.gaetano@gmail.com)
202
+
203
+ * Makefile, doc/makefile: assorted improvements
204
+
205
+ 2007-03-03 - G. Giunta (giunta.gaetano@gmail.com)
206
+
207
+ * xmlrpc.inc: micro-optimization in declaration of global vars xmlrpcerr, xmlrpcstr
208
+
209
+ 2007-02-25 Gaetano Giunta <giunta.gaetano@gmail.com>
210
+
211
+ * removed a couple of warnings emitted in testsuite.php
212
+
213
+ * doc/makefile: added command for invocation of xxe to generate docs
214
+
215
+ * better rendering of docs in xml+css format for function prototypes
216
+
217
+ * updated documentation
218
+
219
+ * tagged and released as 2.2
220
+
221
+ 2007-02-22 Gaetano Giunta <giunta.gaetano@gmail.com>
222
+
223
+ * debugger: workaround for case of magic_quotes_gpc being set (properly
224
+ unescape user input); fix case of user not setting msg id in jsonrpc case
225
+ when executing a remote method; allow strings, false, true and null as msg id
226
+
227
+ 2007-02-13 Gaetano Giunta <giunta.gaetano@gmail.com>
228
+
229
+ * testsuite.php: added one test for automatic encoding/decoding case
230
+
231
+ 2007-02-05 Gaetano Giunta <giunta.gaetano@gmail.com>
232
+
233
+ * xmlrpc.inc: slightly faster encoding of UTF8 data to ascii
234
+
235
+ 2007-01-11 Gaetano Giunta <giunta.gaetano@gmail.com>
236
+
237
+ * xmlrpc.inc: when calling client::multicall() with an unspecified http version,
238
+ use the client default rather than the fixed 'http 1.0'
239
+
240
+ 2006-09-17 Gaetano Giunta <giunta.gaetano@gmail.com>
241
+
242
+ * xmlrpc.inc, xmlrpcs.inc, testsuite.php: added support for <NIL/> and
243
+ system.getCapabilities, and one more testcase to go with it
244
+
245
+ 2006-09-05 Gaetano Giunta <giunta.gaetano@gmail.com>
246
+
247
+ * xmlrpc.inc: fix support for https through proxies; client parses debug
248
+ messages sent by client even for compressed responses;
249
+
250
+ * testsuite.php, parse_args.php: added 3 test cases for proxy connections
251
+
252
+ 2006-09-01 Gaetano Giunta <giunta.gaetano@gmail.com>
253
+
254
+ xmlrpc_wrappers.inc: add two more options in wrap_xmlrpc_method and fix
255
+ typo to allow obj encoding
256
+
257
+ 2006-08-28 Gaetano Giunta <giunta.gaetano@gmail.com>
258
+
259
+ * xmlrpc_wrappers.inc: more options added to wrap_php_function and
260
+ wrap_xmlrpc_method
261
+
262
+ * xmlrpc.inc: pave the way to support for <nil/>
263
+
264
+ * doc/xmlrpc_php.xml documentation updated
265
+
266
+ * tagged and released as 2.1
267
+
268
+ 2006-08-25 Gaetano Giunta <giunta.gaetano@gmail.com>
269
+
270
+ * xmlrpc.inc: stricter parsing of incoming messages: detect two DATA elements
271
+ inside an ARRAY, a STRUCT or SCALAR inside an already filled VALUE
272
+
273
+ * testsuite.php: added two testcases to check for the above cases
274
+
275
+ 2006-08-24 Gaetano Giunta <giunta.gaetano@gmail.com>
276
+
277
+ * xmlrpc.inc: more code optimization in xmlrpcval::serialize() and
278
+ php_xmlrpc_encode(); fixed bug where struct elements with non-ascii chars
279
+ in their name would not be properly encoded
280
+
281
+ * testsuite.php: added a testcase for the new bug
282
+
283
+ 2006-08-23 Gaetano Giunta <giunta.gaetano@gmail.com>
284
+
285
+ * remove old code left in comments across many files; many more javadoc
286
+ comments added
287
+
288
+ * xmlrpc.inc: a bit of code optimization: reorder switch() statements of
289
+ xml parsing element handlers; inline code for xmlrpcval() - this breaks
290
+ new xmlrpcval('true') and changes error msgs on new xmlrpcval($x, 'invalid_type')
291
+
292
+ * testsuite.php: change according to above
293
+
294
+ * benchmark.php: basic support for xdebug 2 profiling
295
+
296
+ 2006-08-22 Gaetano Giunta <giunta.gaetano@gmail.com>
297
+
298
+ * xmlrpc.inc: addscalar() and addstruct() where not returning 1 when adding
299
+ data to an already formed value
300
+
301
+ 2006-08-21 Gaetano Giunta <giunta.gaetano@gmail.com>
302
+
303
+ * xmlrpcs.inc, xmlrpc.inc: added support for emulating the xmlrpc-extension
304
+ API (the full emulation layer is part of the extras package);
305
+ fix support for the HTTP 'deflate' encoding
306
+
307
+ * xmlrpc.inc: better support for http compression with and without CURL;
308
+ a minor decoding speedup; added a new function: php_xmlrpc_decode_xml(),
309
+ that will convert into the appropriate object the xml representation of
310
+ either a request, response or a single value; log reception of invalid
311
+ datetime values
312
+
313
+ * xmlrpcs.inc: add a new parameter and return type to server->service();
314
+ let server->add_to_map() accept method definitions without parameter types
315
+
316
+ * xmlrpc_wrappers.inc: more logging of errors; wrap_php_functions now takes
317
+ more options; better support for jsonrpc; escape quote chars when wrapping
318
+ remothe servers / remote methods
319
+
320
+ * added cvs Id tag to files that missed it; speling fixes; updated NEWS files
321
+
322
+ 2006-08-07 Gaetano Giunta <giunta.gaetano@gmail.com>
323
+
324
+ * assorted fixes to make the suite more compatible with php 4.0.5 and 5.x
325
+
326
+ 2006-07-02 Gaetano Giunta <giunta.gaetano@gmail.com>
327
+
328
+ * xmlrpc_warppers.inc: added new function to wrap entire remote server into
329
+ a local php class; changed default calling synopsis of wrap_remote_method,
330
+ to ease passing multiple options at a time (but old syntax still works!)
331
+
332
+ * updated makefile, debugger/action.php in accord with the above
333
+
334
+ 2006-06-30 Gaetano Giunta <giunta.gaetano@gmail.com>
335
+
336
+ * added to debugger capability to generate json-rpc code stubs
337
+
338
+ * added to debugger capability to load and launch self correctly if
339
+ controller.php is called directly from outside processes (single url access)
340
+
341
+ 2006-06-26 Gaetano Giunta <giunta.gaetano@gmail.com>
342
+
343
+ * moved wrap_php_functions and wrap_xmlrpc_method into a file of their own.
344
+ This will let us add further stub functionality without the base lib growing too much.
345
+ All of the files that reference this functionality have been modified accordingly.
346
+
347
+ * made wrap_xmlrpc_method generate better code (with php type juggling), and
348
+ some phpdoc for the generated function, too
349
+
350
+ * added to debugger an option to produce for the user the generated php code
351
+ for wrapping a call to a remote method into a php function
352
+
353
+ 2006-06-22 Gaetano Giunta <giunta.gaetano@gmail.com>
354
+
355
+ * xmlrpcs.inc: added description of parameters for system.xxx methods (useful with
356
+ html-self-documenting servers);
357
+ server->service() now returns response object, in case user has need for it...
358
+
359
+ * xmlrpc.inc: save full response payload into xmlrpcresp obj for better debugging
360
+
361
+ 2006-06-15 Gaetano Giunta <giunta.gaetano@gmail.com>
362
+
363
+ * verify_compat.php: more tests
364
+
365
+ 2006-06-09 Gaetano Giunta <giunta.gaetano@gmail.com>
366
+
367
+ * xmlrpcs.inc: fixed sending of compressed responses when output compression
368
+ is already enabled in php.ini
369
+
370
+ * verify_compat.php: split tests between server and client cases
371
+
372
+ 2006-05-29 Gaetano Giunta <giunta.gaetano@gmail.com>
373
+
374
+ * added new file: verify_compat.php, to help troubleshooting platform
375
+ support for the library; added it to makefile, too
376
+
377
+ 2006-05-24 Gaetano Giunta <giunta.gaetano@gmail.com>
378
+
379
+ * xmlrpc.inc: removed residual usage of regexp in favour of pregexps; fixed
380
+ a bug in specifying Host http header with non std ports
381
+
382
+ 2006-05-23 Gaetano Giunta <giunta.gaetano@gmail.com>
383
+
384
+ * xmlrpc.inc: improvements to wrap_php_function: let it deal correctly
385
+ with php functions returning xmlrpcresp objs; make it generate also
386
+ docs for single parameters (useful for documenting_xmlrpc_server class)
387
+
388
+ 2006-05-22 Gaetano Giunta <giunta.gaetano@gmail.com>
389
+
390
+ * xmlrpc.inc, xmlrpcs.inc: minor performance tuning updates: replaced
391
+ some explode vs. split, ereg vs. preg, single vs. double quotes
392
+
393
+ * xmlrpc.inc: fix wrap_xmlrpc_method to NOT rebuild php objects received
394
+ from the server by default, as it might pose a security risk
395
+
396
+ 2006-04-24 Gaetano Giunta <giunta.gaetano@gmail.com>
397
+
398
+ * minor fixes makefiles. Tagged and released as 2.0 final
399
+
400
+ 2006-04-22 Gaetano Giunta <giunta.gaetano@gmail.com>
401
+
402
+ * debugger/*: added option to set cainfo; improve web layout
403
+
404
+ * xmlrpc.inc: set sslverifypeer to TRUE instaed of 1 by default
405
+
406
+ * doc/php_xmlrpc.xml: documentation updates
407
+
408
+ 2006-04-21 Gaetano Giunta <giunta.gaetano@gmail.com>
409
+
410
+ * xmlrpc.inc: added option to set ca certs dir instead of single cert
411
+ (used to validate server in https connetions)
412
+
413
+ 2006-04-18 Gaetano Giunta <giunta.gaetano@gmail.com>
414
+
415
+ * xmlrpc.inc: fixed bug in xmlrpcval::structmemexists()
416
+
417
+ * testsuite.php: added test case for xmlrpcval::structmemexists()
418
+
419
+ 2006-04-03 Gaetano Giunta <giunta.gaetano@gmail.com>
420
+
421
+ * xmlrpc.inc: add support for Digest and NTLM authentication, both to server
422
+ and to proxies (note: must use CURL for this to work)
423
+
424
+ * debugger/*: add support for Digest/NTLM auth to remote servers
425
+
426
+ 2006-03-19 Gaetano Giunta <giunta.gaetano@gmail.com>
427
+
428
+ * xmlrpc.inc: fix a bug parsing of 'true' bool values;
429
+ added a new method to the client class: SetCaCertificate;
430
+ add column number in xml parsing error messages;
431
+ fix serialization of messages to ISO-8859-1 charset with php 5 (by adding
432
+ encoding to the xml prologue of generated messages)
433
+
434
+ * xmlrpcs.inc: correct detection of charset in http headers;
435
+ add column number in xml parsing error messages;
436
+ fix serialization of responses to ISO-8859-1 charset with php 5 (by adding
437
+ encoding to the xml prologue of generated responses)
438
+
439
+ * testsuite.php: added two more tests on charset encoding
440
+
441
+ * NEWS: update info for impending release
442
+
443
+ 2006-03-23 Gaetano Giunta <giunta.gaetano@gmail.com>
444
+
445
+ * added a new demo file: simple_call.php
446
+
447
+ 2006-02-20 Gaetano Giunta <giunta.gaetano@gmail.com>
448
+
449
+ * xmlrpcs.inc: more error checking and logging with regard to user-coded
450
+ method handler functions not being well behaved;
451
+ fix a case where error handler would not be reset upon user function
452
+ returning not valid xmlrpresp
453
+
454
+ * xmlrpc.inc: fix bug in detection of php 4.3.0
455
+
456
+ * Makefile: fix uppercase filenames
457
+
458
+ 2006-02-15
459
+
460
+ * xmlrpc.inc: parse 'true' and 'false' as valid booleans, even though the
461
+ spec is quite clear on that; fix small bug w. internal_encoding = utf8; add
462
+ definition of $GLOBALS['xmlrpcNull'] for extensibility, e.g. json or
463
+ extensions to the xmlrpc spec
464
+
465
+ 2006-02-05 Gaetano Giunta <giunta.gaetano@gmail.com>
466
+
467
+ * xmlrpc.inc: fix bug in wrap_xmlrpc_method if client passed to function has
468
+ return_type=phpvals
469
+
470
+ * all demo files: review code, add more comments and information
471
+
472
+ * added 2 demo files: proxy.php (implementing an xmlrpc proxy server) and
473
+ wrap.php (showing usage of wrap_method_call)
474
+
475
+ 2006-02-04 Gaetano Giunta <giunta.gaetano@gmail.com>
476
+
477
+ * xmlrpc.inc: fix bug in multicall in case of no fallback and server error
478
+
479
+ 2006-01-30 Gaetano Giunta <giunta.gaetano@gmail.com>
480
+
481
+ * xmlrpc.inc: fix recursive serialization of xmlrpcvals loosing UTF8 charset;
482
+ correctly set type field of xmlrpcvals returned by send() calls
483
+
484
+ * xmlrpcs.inc: add to server checks for correct return type of user-coded
485
+ method handling function; tolerate xmlrpcval instead of xmlrpcresp
486
+
487
+ * minor change in xmlrpcresp internals, to ease subclassing (store payload
488
+ in an internal var on serialize(), same as xmlrpcclient does)
489
+
490
+ 2006-01-22 Gaetano Giunta <giunta.gaetano@gmail.com>
491
+
492
+ * benchmark.php: do not run http 1.1 tests if CURL notfound
493
+
494
+ * Released as 2.0 Rc3
495
+
496
+ 2006-01-19 Gaetano Giunta <giunta.gaetano@gmail.com>
497
+
498
+ * xmlrpc.inc: make xmlrpc_client::setDebug() accept int values instead of
499
+ boolean. At level 2, the request payload is printed to screen before being
500
+ sent; fix bug with repeated sending of the same msg object and using request
501
+ compression w. php 5.1.2 (objects passed by ref by default!!!)
502
+
503
+ * xmlrpcs.inc: fix detection of clients accepting compressed responses
504
+
505
+ * comment.php: remove warnings due to liberal usage of $HTTP_POST/GET_VARS
506
+
507
+ * benchmark.php: add a test using http compression of both requests and
508
+ responses
509
+
510
+ * testsuite.php: added test for fix in xmlrpc.inc
511
+
512
+ 2006-01-17 Gaetano Giunta <giunta.gaetano@gmail.com>
513
+
514
+ * xmlrpcs.php: minor fix: do not raise a PHP warning when std server is
515
+ called via GET (global HTTP_RAW_POST_DATA undefined). Some might have called
516
+ it a security breach (path disclosure)...
517
+
518
+ 2006-01-15 Gaetano Giunta <giunta.gaetano@gmail.com>
519
+
520
+ * testsuite.php: minor fix to expected date format in http cookie hedaer
521
+ to cope with PHP 5.1.2
522
+
523
+ 2006-01-05 Gaetano Giunta <giunta.gaetano@gmail.com>
524
+
525
+ * xmlrpcs.inc: merge code from the 'extras' subclass that allows server
526
+ to register plain php functions in dispatch map instead of functions
527
+ accepting a single xmlrpcmgs obj parameter.
528
+ One step closer to the kitchen sink!!!
529
+
530
+ 2005-12-31 Gaetano Giunta <giunta.gaetano@gmail.com>
531
+
532
+ * xmlrpcs.inc: let the server accept 'class::method' syntax in the dispatch
533
+ map
534
+
535
+ * testsuite.php, server.php: added new tests for the recent charset encoding
536
+ capabilities
537
+
538
+ 2005-12-24 Gaetano Giunta <giunta.gaetano@gmail.com>
539
+
540
+ * xmlrpc.inc: correctly serialize() string xmlrpcvals that have been
541
+ created out of non-string php variables, when internal encoding is UTF8;
542
+ serialize to '0' int and double values created out of non-string php
543
+ variables, eg. 'hello', instead of creating invalid xmlrpc;
544
+ extend the php_xmlrpc_encode function to allow serializing string values
545
+ to charsets other tha US-ASCII;
546
+ minor tweak to xml parsing to allow correct parsing of empty strings when
547
+ in 'direct to php values' mode
548
+
549
+ * xmlrpcs.inc: advances in system.multicall with plain php values
550
+
551
+ 2005-12-17 Gaetano Giunta <giunta.gaetano@gmail.com>
552
+
553
+ * xmlrpcs.inc: let the functions implementing the system.* methods work
554
+ fine when called with plain php values as parameters instead of xmlrpcmsg
555
+ objects (multicall not quite finished yet...);
556
+ encode level 3 debug info as base64 data, to avoid charset encoding hell
557
+
558
+ * xmlrpc.inc: added a new xmlrpc_2_php_type function, to get the name of
559
+ php types corresponding to xmlrpc types;
560
+ in debug mode, when detecting base64 server debug info, print it out fine
561
+
562
+ * server.php: cosmetic fixes
563
+
564
+ 2005-12-09 Gaetano Giunta <giunta.gaetano@gmail.com>
565
+
566
+ * xmlrpc.inc: remove one warning emitted when received xml contains an
567
+ unknown tag; remove warnings emitted when custom error handler is set
568
+ and user calls php_xmlrpc_encode/decode without the 2nd parameter
569
+
570
+ * xmlrpcs.inc: added a param to service(), to allow the server to parse
571
+ data other than the POST body (useful for subclassing and debugging);
572
+ reworked the implementation of server debug messages at debug level 2:
573
+ since the debug info generated has no known charset, and putting it back
574
+ into the response's xml would most likely break it, send it back to the
575
+ client as a base64 encoded comment. Clients can decode it if they need it...
576
+ Add some more javadocs
577
+
578
+ * testsuite.php: modified the string test, to see if the server can echo
579
+ back to the client the received data without breaking the response's xml
580
+
581
+ 2005-12-05 Gaetano Giunta <giunta.gaetano@gmail.com>
582
+
583
+ * xmlrpc.inc, xmlrpcs.inc: let server and client objects decide if they
584
+ want to use some charset encoding other than US-ASCII for serialized data:
585
+ add a new var to both objects, and lots of parameters to function calls
586
+ that took none up to now;
587
+ refactored server method service() and parseRequest(), implementing a
588
+ new parserequestHeaders() method to explicitly deal with HTTP
589
+
590
+ 2005-12-01 Gaetano Giunta <giunta.gaetano@gmail.com>
591
+
592
+ * moved the jsonrpc implementation and the new wsdl stuff to a separate
593
+ CVS module; updated the makefile to reflect it
594
+
595
+ 2005-11-24 Gaetano Giunta <giunta.gaetano@gmail.com>
596
+
597
+ * modified php_xmlrpc_decode() to work on xmlrpcmessages too, besides
598
+ xmlrpcvals. To achieve this, added a new method: xmlrpcmsg::kindOf()
599
+
600
+ 2005-11-22 Gaetano Giunta <giunta.gaetano@gmail.com>
601
+
602
+ * released as 2.0 RC2
603
+
604
+ 2005-11-21 Gaetano Giunta <giunta.gaetano@gmail.com>
605
+
606
+ * xmlrpc.inc: fix warnings about references for PHP 4.1.X
607
+
608
+ * Whitespace cleanup on all the lib
609
+
610
+ 2005-11-16 Gaetano Giunta <giunta.gaetano@gmail.com>
611
+
612
+ * xmlrpc.inc: rewritten xmlrpc_encode_entitites adding two extra parameters
613
+ that specify input and output charset encodings. This corrects the bug that
614
+ prevented native UTF-8 strings to be correctly serialized (to have them
615
+ encoded the user must set $xmlrpc_internalencoing appropriately).
616
+
617
+ * xmlrpc.inc: added new method xmlrpcmsg::parseResponseHeaders(), refactoring
618
+ parseResponse(). This makes the code more modular and eases subclassing.
619
+
620
+ * xmlrpc.inc: set cookies and http headers to xmlrpcresp objs even when calls
621
+ to send() do not complete correctly
622
+
623
+ * added new file: jsonrpcs.inc, to accomodate server jsonrpc objects in the future
624
+
625
+ * jsonrpc.inc: slow progress...
626
+
627
+ 2005-11-10 Gaetano Giunta <giunta.gaetano@gmail.com>
628
+
629
+ * xmlrpc.inc: fixed the xmlrpc_client send and sendpayloadhttps methods
630
+ to fix errors in calling https servers;
631
+ added a new xmlrpc_client->setkey method to allow usage of client-side ssl
632
+ certs in recent php builds;
633
+ added to xmlrpcresp objects a content_type var, to be used in HTTP headers
634
+
635
+ * xmlrpcs.inc: separate generation of content-type http header and xml prologue
636
+ from the service() method, to ease subclassing
637
+
638
+ 2005-11-03 Gaetano Giunta <giunta.gaetano@gmail.com>
639
+
640
+ * xmlrpc.inc: moved the 'text/xml' mimetype string as class var of the xmlrpcmsg
641
+ object instead of having it cabled into xmlrpc_client->send(): this allows to
642
+ create subclasses of xmlrpcmsg that use a different mimetype
643
+
644
+ * jsonrpc.inc: added a new file, with an extremely experimental set of classes,
645
+ designed to implement a json-rpc client and server, taking advantage of the
646
+ existing xml-rpc infrastructure
647
+
648
+ 2005-10-28 Gaetano Giunta <giunta.gaetano@gmail.com>
649
+
650
+ * xmlrpc.inc: changed constructor method for xmlrpcresp, making it smarter in
651
+ case user does not declare the type of value it is passing to it;
652
+ minor changes in serialization of xmlrpcresp with error codes, so that it
653
+ utputs LF instead of CRLF on windows boxes after an FTP transfer of the code, too
654
+
655
+ 2005-10-26 Gaetano Giunta <giunta.gaetano@gmail.com>
656
+
657
+ * xmlrpc.inc: added a new var of class xmlrpc_client, indicating what kind of
658
+ object will be stored in the value() of xmlrpcresp's gotten from the send()
659
+ method: xmlrpxc objects, plain php variables or raw xml. This allow the coder
660
+ to make use of xmlrpc_decode for better performances if he wishes so.
661
+ Modified creator of xmlrpcresp class to allow it to distinguish between being
662
+ created out of raw xml or a plain php string (in the former case, serialization
663
+ is still possible, opening a new world of opportunity for server-side programming:
664
+ the php function implementing a web service has to provide the xml for the
665
+ return value on its own).
666
+ Modified xmlrpc_client::multicall() to suit; also added a new parameter which
667
+ allows calls to multicall without automatic fallback to many-calls in case of
668
+ error (speeding up the process of doing a failed multicall() call quite a bit)
669
+ Fixed two bugs in guess_encoding.
670
+ Audited all regexps and fixed some.
671
+ xmlrpc_client::send() does not call xmlrpcmsg::parseresponsefile() anymore.
672
+ Shuffled parseresponse() a little bit
673
+
674
+ * testsuite.php: added a new testcase for the modifications to multicall():
675
+ now we test the case where xmlrpc_client returns php values, too
676
+
677
+ 2005-10-24 Gaetano Giunta <giunta.gaetano@gmail.com>
678
+
679
+ * xmlrpc.inc: fixed guess_encoding() to always return uppercase chars
680
+
681
+ * added new file: benchmark.php. It contains a few tests used to evaluate
682
+ speed of the lib in common use cases
683
+
684
+ * added file parse_args.php, containing common code for benchmark and
685
+ testsuite, and modified testsuite.php accordingly
686
+
687
+ * modified makefile adding new files
688
+
689
+ * testsuite.php: added a couple of new test cases; fixed one warning
690
+ emitted in php 5 E_STRICT mode
691
+
692
+ 2005-10-20 Gaetano Giunta <giunta.gaetano@gmail.com>
693
+
694
+ * xmlrpc.inc: modify 3d param of ParseResponse(), allowing the function to
695
+ return the raw xml received as value of the xmlrpcresponse object.
696
+ This allows eg. to have epi-xmlrpc decode the xml for faster execution.
697
+
698
+ 2005-10-09 Gaetano Giunta <giunta.gaetano@gmail.com>
699
+
700
+ * xmlrpc.inc: fixed error that prevented usage of HTTPS (the client
701
+ always determined that ssl support was not present)
702
+
703
+ 2005-10-03 Gaetano Giunta <giunta.gaetano@gmail.com>
704
+
705
+ * xmlrpc.inc, xmlrpcs.inc: revert direction of stack growth during xml
706
+ parsing for faster execution time; add support for detecting charset
707
+ encoding of received xml; add support for cookies; better parsing of
708
+ javadoc when building stub code in wrap_php_function; add a lot of
709
+ javadoc comments everywhere; rewrite most error messages
710
+
711
+ * testsuite.php: add many tests for newly introduced features
712
+
713
+ * server.php: add a couple of new functions to support debugging new
714
+ features
715
+
716
+ * debugger: add switches to enable all the latest lib features; minor
717
+ improvements to layout
718
+
719
+ * synch included phpunit with latest PEAR release
720
+
721
+ * reorganize files included in the distribution in a new hierarchy of folders
722
+
723
+ * bump revision number to 2.0RC1 and release
724
+
725
+ 2005-8-14 Miles Lott <milos@groupwhere.org>
726
+
727
+ * xmlrpc.inc, xmlrpcs.inc: Remove all use of eval() to avoid potential
728
+ security hole.
729
+
730
+ * As of this release we are no longer php3-compatible.
731
+
732
+ 2005-8-10 Miles Lott <milos@groupwhere.org>
733
+
734
+ * xmlrpc.inc, xmlrpcs.inc: Switched to using $GLOBALS instead of calling
735
+ global $varname
736
+
737
+ 2005-07-22 Miles Lott <milos@groupwhere.org>
738
+
739
+ * Removed: bug_* files
740
+
741
+ 2005-07-14 Gaetano Giunta <giunta.gaetano@gmail.com>
742
+
743
+ * debugger: added a workaround to disable using the debugger for attacking
744
+ older versions of the lib
745
+
746
+ * testsuite.php: added code to test wrap_xmlrpc_method;
747
+ use different wording for failed tests
748
+
749
+ * xmlrpcs.inc: change for() with foreach() in system.* methods implementations;
750
+ remove a possible cause of php warning;
751
+
752
+ * xmlrpc.inc: let wrap_php_function and wrap_xmlrpc_method find suitable
753
+ function names if default function names are already in use;
754
+ correct wrap_xmlrpc_method to not set http protocol to 1.0 when not asked to;
755
+ detect curl compiles without SSL
756
+
757
+ 2005-07-14 Gaetano Giunta <giunta.gaetano@gmail.com>
758
+
759
+ * xmlrpc.inc: more auto-fix of xmlrpc_client path: '' -> '/';
760
+ change to the method used for detecting failed evals (php 4.0.x compatibility);
761
+ complete rework of return-by-ref functions to comply with php 4.4.0
762
+
763
+ * xmlrpcs.inc: change to the method used for detecting failed evals (php 4.0.x
764
+ compatibility)
765
+
766
+ * testsuite.php: major rewrite of the multi- tests, to give better feedback on
767
+ number of failed tests;
768
+ flush html page title to screen before starting tests;
769
+
770
+ 2005-07-13 Gaetano Giunta <giunta.gaetano@gmail.com>
771
+
772
+ * xmlrpc.inc: let xmlrpcmsg creator be forgiving of target paths that miss the
773
+ starting '/' char;
774
+ completely reworked assign-by-ref to be compliant with php 4.4.0 stricter
775
+ warnings
776
+
777
+ * testsuite.php: added ability to be run from cli: (really dumb) separation of
778
+ html and plain text outputs + parsing of argv parameters
779
+
780
+ 2005-07-12 Gaetano Giunta <giunta.gaetano@gmail.com>
781
+
782
+ * xmlrpc.inc: compatibility fixes with PHP versions 4.0.x (and remove some for
783
+ PHP 3)
784
+
785
+ * xmlrpcs.inc: compatibility fixes for PHP 4.0.x versions
786
+
787
+ * testsuite.php: better support for running with php versions 4.0.x;
788
+ do not generate runtime errors but finish tests anyway if some calls to
789
+ localhost fail;
790
+ correctly detect a localhost port different from 80 for running tests against
791
+
792
+ 2005-07-11 Gaetano Giunta <giunta.gaetano@gmail.com>
793
+
794
+ * xmlrpc.inc: preliminary building of method signature and docs in
795
+ wrap_php_function;
796
+ fix a bug in extracting function description from javadoc block in
797
+ wrap_php_function;
798
+ small fix for better compatibility with php < 4.2.0
799
+
800
+ * added compat subdir with extra code, taken form PEAR package Compat, to let
801
+ the lib run fine with php 4 versions < 4.1
802
+
803
+ 2005-07-10 Gaetano Giunta <giunta.gaetano@gmail.com>
804
+
805
+ * xmlrpc.inc: some nazi whitespace corrections;
806
+ declared global $xmlrpcBoolean too (was the only one missing);
807
+ used @eval inside getval() to have less path disclosure security reports filed
808
+ in the future;
809
+ added new global var: $xmlrpcValue, to be used in server dispatch maps as
810
+ placeholder for a param which can be of any kind;
811
+ big chunks (but still incomplete) of javadoc parsing in wrap_php_function
812
+ + changed type of return val - now it is the complete array to be put in the
813
+ dispatch map
814
+
815
+ * xmlrpcs.inc: let previous error handler be called by server to handle errors
816
+ even if in debug level 3;
817
+ default to compress responses if zlib installed;
818
+ added a new val useful for only checking number (not type) of params in method
819
+ calls;
820
+ let user use object methods in dispatch map using the
821
+ array($obj, 'fmethodname') format
822
+
823
+ * server.php: Added code called by testsuite.php to exercise registration of
824
+ object methods as xmlrpc methods and auto-registration of php functions as xmlrpc
825
+ methods
826
+
827
+ * testsuite.php: added tests to exercice server registering object methods as
828
+ xmlrpc methods and automatic registration of php functions as server methods;
829
+ added a hint to enable debug if some test goes wrong;
830
+ renamed https test for better clarity
831
+
832
+ 2005-07-07 Gaetano Giunta <giunta.gaetano@gmail.com>
833
+
834
+ * xmlrpc.inc: added function to be used for 'guestimating' charset encoding of
835
+ received xml (not activated yet)
836
+
837
+ * server.php: Let server compress content by default if user asks so: it allows
838
+ testsuite to check for compressed responses
839
+
840
+ * testsuite.php: added suite of tests for compressed responses; test CURL
841
+ (http1.1) with all possible compression combinations too
842
+
843
+ 2005-07-06 Gaetano Giunta <giunta.gaetano@gmail.com>
844
+
845
+ * xmlrpc.inc: Enable setting usage of keepalives on/off (for CURL cases);
846
+ implement compression of xmlrpc requests; enable new syntax of xmlrpclient
847
+ constructor: 1 - allow preferred http method to be set at creation time,
848
+ 2 - allow user to insert a single complete URL as only parameter and parse it;
849
+ try to detect if curl is present whether it has been compiled w. zlib to enable
850
+ automatically the reception of compressed responses
851
+
852
+ * xmlrpcs.inc: do not add into logs the content of the request, if it was
853
+ received gzipped/deflated, to avoid breaking the xml sent back as response
854
+ (NB: might be investigated further: is the problem caused by windows chars in
855
+ the range 128-160 ?)
856
+
857
+ * testsuite.php: run all localhost tests 2 more times, to stress request
858
+ compression;
859
+ run all localhost tests in a row using keepalives, to test keepalive
860
+ functionality
861
+
862
+ 2005-07-05 Gaetano Giunta <giunta.gaetano@gmail.com>
863
+
864
+ * xmlrpc.inc: let CURL pass back to caller function the complete PHP headers
865
+ as it did before: it enables better logging / debugging of communication;
866
+ small change to the way CURL declares its ability to receive compressed
867
+ messages (fix for the case where zlib is compiled in PHP but not in curl);
868
+ added Keep-alive (ON BY DEFAULT) for http 1.1 and https messages (had to modify
869
+ a lot of functions for that);
870
+ always make sure a 'Connection: close' header is sent with curl connections if
871
+ keep-alive is not wanted
872
+
873
+ * phpunit.php: switched to PEAR PHPUnit (rel 1.2.3), since it is maintained a
874
+ lot more than the old version we were using
875
+
876
+ * added new folder with code of phpunit classes
877
+
878
+ * testsuite.php: added a new run of tests to check for compliance of client
879
+ when using http 1.1;
880
+ switched to PEAR PHPUnit classes;
881
+ divided test for client ability to do multicall() into 2 separate tests
882
+
883
+ 2005-06-30 Gaetano Giunta <giunta.gaetano@gmail.com>
884
+
885
+ tagged and released version 1.1.1, backporting security fixes from HEAD
886
+
887
+ 2005-06-28 Gaetano Giunta <giunta.gaetano@gmail.com>
888
+
889
+ * xmlrpcs.inc: fix changes introuced yesterday in a rush;
890
+ do not list system.* methods for a server that has them explicitly disabled
891
+
892
+ * bug_inject.xml: new test case used to check for code injection vulnerability
893
+
894
+ * testsuite.php: added a test case for zero parameters method calls;
895
+ added two test cases for recently found code injection vulnerabilities
896
+
897
+ 2005-06-27 Gaetano Giunta <giunta.gaetano@gmail.com>
898
+
899
+ * xmlrpc.inc: (tentative) fix for security problem reported by
900
+ security@gulftech.org: we were not properly php-escaping xml received for
901
+ BASE64 and NAME tags;
902
+ some more patching related to junk received in xml messages/responses: if the
903
+ PHP code built from the parsed xml is broken, catch any generated errors
904
+ without echoing it to screen but take note of the error and propagate to user
905
+ code
906
+
907
+ * xmlrpcs.inc: some more patching related to junk received in xml messages/
908
+ responses: if the PHP code built from the parsed xml is broken, catch any
909
+ generated errors without echoing it to screen but take note of the error and
910
+ propagate to user code
911
+
912
+ 2005-06-24 Gaetano Giunta <giunta.gaetano@gmail.com>
913
+
914
+ * xmlrpc.inc: fixed php_xmlrpc_encode detection of php arrays (again!);
915
+ removed from wrap_php_function the part about setting a custom error handler
916
+ (it can be activated using the more general $server->setdebug(3) anyway)
917
+
918
+ * xmlrpcs.inc: added to server the capability to trap all processing errors
919
+ during execution of user functions and add them to debug info inside responses;
920
+ return a (new) xmlrpcerr response instead of raising some obscure php execution
921
+ error if there is an undefined function in the dispatch map
922
+
923
+ * testsuite.php: Added new testcases for recently implemented stuff
924
+
925
+ 2005-06-23 Gaetano Giunta <giunta.gaetano@gmail.com>
926
+
927
+ * xmlrpc.inc: added new method: xmlrpcval->structmemexists, to check for
928
+ presence of a wanted struct member without having to loop through all members;
929
+ fix wrap_php_functions: correctly return false for php internal functions,
930
+ whose param list is unknown;
931
+ let addscalar fail as it should if called on struct vals;
932
+ fix addstruct: do not fail when called for adding stuff to initialized structs;
933
+ removed a warning generated when calling addscalar with inexistent type;
934
+ massive code review for speed: replaced each() loops with foreach(), removed
935
+ lots of useless assignments and duplications of data;
936
+ added 'http11' as valid method param for xmlrpclient->send: makes use of curl
937
+ for sending http 1.1 requests;
938
+ changed a couple '=' into '=&' where objects are returned;
939
+ fixed wrap_php_function() to better detect php errors while processing wrapped
940
+ function
941
+
942
+ * xmlrpcs.inc: Fix php warnings generated when clients requested method
943
+ signature / description for a method that had none in its dispatch map;
944
+ turned server->debug into an integer value that will change the amount of
945
+ logging going as comments into xmlrpc responses
946
+
947
+ * server.php: set default server debug level to 2
948
+
949
+ * testsuite.php: removed calls to deleted functions (xmlrpc_encode,
950
+ xmlrpc_decode);
951
+ added html page title describing target servers used for tests;
952
+ added an assign-by-ref
953
+
954
+ * phpunit.php: Do not consider as failures PHP 5 E_STRICT errors (arbitrary
955
+ choice, but lib is targeted at PHP 4)
956
+
957
+ 2005-06-22 Gaetano Giunta <giunta.gaetano@gmail.com>
958
+
959
+ * xmlrpc.inc: removed lottsa old code that had been left in commented
960
+
961
+ * xmlrpc.inc: fixed setting of proxy port
962
+
963
+ * xmlrpc.inc: removed one warning when trying to decompress junk sent as
964
+ deflated response
965
+
966
+ * xmlrpc.inc: changed the error messages (but not the code) that will be found
967
+ in xmlrpcresponses when there are socket errors, to differentiate from HTTP
968
+ errors
969
+
970
+ * xmlrpc.inc: refactored xmlrpcclient->sendpayloadHTTPS: now it calls a new
971
+ method (sendpayloadCURL) that could be used also for generating HTTP 1.1
972
+ requests
973
+
974
+ * xmlrpc.inc: added two new methods: wrap_php_function and wrap_xmlrpc_method:
975
+ designed to let the lazy programmer automagically convert php functions to
976
+ xmlrpc methods and vice versa. Details are in the code
977
+
978
+ * debugger/*: added initial revision of a 'universal xmlrpc debugger'
979
+
980
+ 2005-06-20 Gaetano Giunta <giunta.gaetano@gmail.com>
981
+
982
+ * xmlrpc.inc: replace usage of 'echo' with error_log when errors arise
983
+ in manipulation of xmlrpcval objects
984
+
985
+ * xmlrpc.inc: replaced <br> with <br /> in dump function
986
+
987
+ * xmlrpc.inc: added method structsize to xmlrpcval class (alias for arraysize)
988
+
989
+ * xmlrpc.inc: addarray() now will add extra members to an xmlrpcval object
990
+ of array type; addstruct() can be used to add members to an xmlrpcval object
991
+ of struct type
992
+
993
+ * xmlrpcs.inc: Added member allow_system_funcs to server: controls whether the
994
+ server accepts or not calls to system.* functions
995
+
996
+ 2005-05-10 Gaetano Giunta <giunta.gaetano@gmail.com>
997
+
998
+ * xmlrpc.inc: fix regression in php_xmlrpc_encode when encoding php hashes;
999
+ fix decompression of gzip/deflated xmlrpc responses;
1000
+ set user agent string correctly in SSL mode (was forgetting lib name);
1001
+ add allowed encoding http headers in requests;
1002
+ do not pass http headers back from curl to parseresponse, to avoid re-decoding
1003
+ compressed xml or http 100 headers
1004
+
1005
+ * xmlrpcs.inc: added method setDebug;
1006
+ renamed compress_output to compress_response;
1007
+ do not try to set http headers if they have already been sent, because trying
1008
+ to do so will raise a PHP error, and if headers have been sent something has
1009
+ gone wrong already (shall we send a meaningful error response instead?)
1010
+
1011
+ 2005-05-08 Gaetano Giunta <giunta.gaetano@gmail.com>
1012
+
1013
+ * xmlrpcs.inc, xmlrpcs.inc: reverted to usage of '=& new' for better
1014
+ performance on (some) php4 installs.
1015
+ NB: PHP 3 compatibility is deprecated from now on!
1016
+
1017
+ * xmlrpc.inc: decode xmlrpc boolean type to native php boolean
1018
+
1019
+ * xmlrpcs.inc, xmlrpcs.inc: switched $_xh[$parser] to $_xh, since indexing
1020
+ an array by object will give a warning in php 5 (and we were resetting the
1021
+ array of _xh elements on every call anyway)
1022
+
1023
+ * xmlrpc.inc: commented unused code used originally for escaping content
1024
+
1025
+ * xmlrpc.inc: commented deprecated methods xmlrpc_encode and xmlrpc_decode
1026
+
1027
+ * xmlrpc.inc: php_xmlrpc_encode: encode integer-indexed php arrays as xmlrpc
1028
+ arrays instead of structs; if object given to encode is an xmlrpcval return it
1029
+ instead of reencoding (makes easier calling encode on an array of xmlrpcvals)
1030
+
1031
+ * xmlrpcs.inc: added $debug field to server class; if false will prevent
1032
+ the server from echoing debug info back to the client as xml comment
1033
+
1034
+ * xmlrpcs.inc: let the server add to the debug messages the complete request
1035
+ payload received and (if php installed as apache module) http headers, so that
1036
+ the client in debug mode can echo a complete fingerprint of the communication
1037
+
1038
+ * xmlrpcs.inc: changed API of ParseRequest method: now it cannot be called
1039
+ without a 'data' parameter; added 2nd parameter (http encoding); changed the
1040
+ call to this method from inside service() method
1041
+
1042
+ * xmlrpc.inc, xmlrpcs.inc: enable both server and client to parse compressed xml
1043
+ (if php is compiled with zlib); client should also be able to decode chunked
1044
+ http encoding
1045
+
1046
+ * xmlrpc.inc: add support for proxies (only basic auth supported); default port
1047
+ is 8080 (if left unspecified)
1048
+
1049
+ * xmlrpc.inc: use lowercase for names of http headers received (makes using
1050
+ them much simpler, since servers can use any upper/lowercase combination)
1051
+
1052
+ * xmlrpc.inc: bumped version number to '2.0 beta'
1053
+
1054
+ 2005-05-08 Gaetano Giunta <giunta.gaetano@gmail.com>
1055
+
1056
+ * release of version 1.1
1057
+
1058
+ 2005-04-24 Gaetano Giunta <giunta.gaetano@gmail.com>
1059
+
1060
+ * xmlrpcs.inc: removed charset declaration from xml prologue of responses,
1061
+ since we are now escaping all non-ascii chars in an encoding-independent way
1062
+
1063
+ * bug_http.xml: modified to exercise some extra functonality of the lib
1064
+ (it should now be failed by the current PEAR implementation of the lib)
1065
+
1066
+ * xmlrpc.inc: bumped up rev. number to 1.1
1067
+
1068
+ * doc/xmlrpc_php.xml, doc/announce1_1.txt: documentation updates
1069
+
1070
+ * Makefile: updated to reflect new xml doc source, modified filelist
1071
+
1072
+ 2005-04-17 Gaetano Giunta <giunta.gaetano@gmail.com>
1073
+
1074
+ * client.php, agesort.php, introspect.php, introspect_demo.php,
1075
+ which.php, test.pl, test.py: use as default target the server.php page hosted
1076
+ on phpxmlrpc.sf.net
1077
+
1078
+ * server.php: fix for register_globals off; refer to docs on phpxmlrpc.sf.net
1079
+
1080
+ 2005-04-15 Miles Lott <milos@groupwhere.org>
1081
+
1082
+ code formatting and comments
1083
+
1084
+ 2005-04-03 Gaetano Giunta <giunta.gaetano@gmail.com>
1085
+
1086
+ * xmlrpc.inc: make use of global var $xmlrpcName in building User_Agent HTTP
1087
+ header (in conjunction with $xmlrpcVersion)
1088
+
1089
+ * agesort.php, client.php, comment.php, dicuss.php, mail.php, server.php,
1090
+ which.php: various janitorial fixes
1091
+ + always html escape content received from xmlrpc server or from user input
1092
+ + make the scripts run fine with register_globals off an register_long_arrays off
1093
+ + always use the functions php_xmlrpc_en(de)code, even if the EPI extension
1094
+ is not installed
1095
+ + in mail.php, allow user to see script source even if support for .phps files
1096
+ is not configured in the local web server
1097
+
1098
+ * testsuite.php: better detection of local webserver hostname for running tests
1099
+ against (if the user did not supply a webserver name)
1100
+
1101
+ 2005-03-21 Gaetano Giunta <giunta.gaetano@gmail.com>
1102
+
1103
+ * xmlrpcs.inc: revert to a PHP3 compatible script (change '=& new' to '= new')
1104
+
1105
+ * xmlrpc.inc: revert to a PHP3 compatible script (lottsa fixes)
1106
+
1107
+ * testsuite.php: default to using local server as test target if no user
1108
+ provided values are available instead of heddley.com server
1109
+
1110
+ * testsuite.php: play nice to PHP3 in retrieving user-passed values
1111
+
1112
+ * testsuite.php: fix constructor method name for a type of tests
1113
+
1114
+ * phpunit.php: fix all cases of call-time-pass-by-ref
1115
+
1116
+ * phpunit.php: rename Exception class to _Exception if the script is run with
1117
+ PHP 5 (exception is a reserverd word)
1118
+
1119
+ 2005-03-19 Gaetano Giunta <giunta.gaetano@gmail.com>
1120
+
1121
+ * xmlrpc.inc: fixed bug in new http header parsing code in case there is
1122
+ no correct separator between response headers and body
1123
+
1124
+ * xmlrpc.inc: added recognizing and stripping of HTTP/1.1 100 response headers
1125
+
1126
+ * xmlrpc.inc: strip extra whitespace from response body, as well as any junk
1127
+ that comes after the last </MethodResponse> tag. It allows the server code to
1128
+ be put on public providers that add e.g. javascript advertising to served pages
1129
+
1130
+ * xmlrpc.inc: removed unused parts of code, trailing whitespace
1131
+
1132
+ * xmlrpc.inc: fix possible bug (?) in xmlrpc_ee for BOOLEAN values: true was
1133
+ being handled differently than false
1134
+
1135
+ * testsuite.php: added a new file-based test to stress the response parsing
1136
+ modifications recently introduced; enabled debugging for file based tests
1137
+
1138
+ 2005-03-15 Gaetano Giunta <giunta.gaetano@gmail.com>
1139
+
1140
+ * xmlrpc.inc: fixed missing declaration of global vars in xmlrpc_dh,
1141
+ sendpayloadhttps and sendpayloadhttp10
1142
+
1143
+ * xmlrpc.inc: changed error message for invalid responses: 'enable debugging'
1144
+ is more clear that 'enabling debugging' (the user is being encouraged to do it)
1145
+
1146
+ * xmlrpc.inc: rewrote HTTP response header parsing. It should be more tolerant
1147
+ of invalid headers, give more accurate error messages and be marginally faster,
1148
+ too.
1149
+
1150
+ * xmlrpc.inc: cosmetic whitespace fixes and remove useless one-liners
1151
+
1152
+ * xmlrpc.inc: build a shorter PHP command line to be evaluated for rebuilding
1153
+ values from parsed xml: use '$val =& nex xmlrpcval("value")' for string values
1154
+ instead of '$val =& nex xmlrpcval("value", $xmlrpcString)'
1155
+
1156
+ * xmlrpc.inc: fix change introduced 2005/01/30 moving call to curl_close()
1157
+ too early: it did not work on error situations
1158
+
1159
+ * testsuite.php: fix name of testAddingTest method, renamed testErrosString
1160
+ into testErrorString and removed useless warning for register_globals=off case
1161
+
1162
+ 2005-02-27 Gaetano Giunta <giunta.gaetano@gmail.com>
1163
+
1164
+ * xmlrpc.inc: do not echo XML parsing error to screen (it is already dumped
1165
+ into error log)
1166
+
1167
+ * xmlrpc.inc: set hdrs field into response object in case of XML parsing error
1168
+ (uniform behaviour with other responses)
1169
+
1170
+ 2005-02-26 Gaetano Giunta <giunta.gaetano@gmail.com>
1171
+
1172
+ * xmlrpc.inc: use global var $xmlrpcVersion as number for user agent string
1173
+
1174
+ * xmlrpcs.inc: eliminate server side PHP warning and give back to caller
1175
+ a better error msg in case the called method exists but no signature matches
1176
+ the number of parameters
1177
+
1178
+ 2005-02-20 Gaetano Giunta <giunta.gaetano@gmail.com>
1179
+
1180
+ * xmlrpc.inc: accept a + sign in front of floats / integers, since the spec
1181
+ clearly mentions it
1182
+
1183
+ * xmlrpc.inc, xmlrpcs.inc: renamed function XmlEntities to xmlrpc_encode_entitites,
1184
+ to avoid using the same name as an array already defined
1185
+
1186
+ * xmlrpc.inc: fix bug introduced with escaping of UTF8 chars in xmlrpc error
1187
+ responses: correct behaviour is to escape chars inside serialize(), not when
1188
+ calling the xmlrpcresp creator
1189
+
1190
+ * testsuite.php: made test suite more friendly to modern PHP configs, allowing
1191
+ register_globals to be off and to set in the URL all testing parameters;
1192
+ added tests for newly introduced fixes; renamed existing tests acording to the
1193
+ docs inside phpunit.php (e.g. no subclass of TestCase should have a name
1194
+ starting with test...)
1195
+
1196
+ 2005-02-19 Gaetano Giunta <giunta.gaetano@gmail.com>
1197
+
1198
+ * xmlrpc.inc: accept patch 683153 by mah0: if timeout is set, allow all socket
1199
+ operations to timeout at the given time, not only the socket connection
1200
+
1201
+ 2005-02-13 Gaetano Giunta <giunta.gaetano@gmail.com>
1202
+
1203
+ * xmlrpc.inc: be tolerant to double values received in exponential notation:
1204
+ even though the spec forbids their usage PHP is fine with them
1205
+
1206
+ * xmlrpc.inc: fix bug: new xmlrpcval('-1') was creating an empty value instead
1207
+ of a string value!
1208
+
1209
+ * xmlrpc.inc, xmlrpcs.inc: fix the payload encoding changes introduced by
1210
+ Andres Salomon on 2004-03-17: sending named html entities inside an xml chunk
1211
+ makes it invalid, and thus renders the lib absolutely non-interoperable with
1212
+ any other xmlrpc implementation; moreover the current implementation only ever
1213
+ worked for non-ascii requests, while breaking client-parsing of responses
1214
+ containing non-ascii chars.
1215
+ The principle of using entities is preserved though, because it allows the
1216
+ client to send correct xml regardless of php internal charset encoding vs.
1217
+ xml request charset encoding, but using 'character references' instead.
1218
+
1219
+ * xmlrpc.inc: encode (non-ascii) chars into charset entities also for error
1220
+ strings
1221
+
1222
+ * xmlrpcs.inc: encode (non-ascii) chars into charset entities also for debug
1223
+ messages
1224
+
1225
+ * xmlrpcs.inc: added 'Accept-Charset' header in http request to let the server
1226
+ know what kind of charset encoding we do expect to be used for responses
1227
+
1228
+ * xmlrpc.inc, xmlrpcs.inc: explicitly tell the xml parser what charset the
1229
+ application expects to receive content in (notably strings). A new variable,
1230
+ $xmlrpc_internalencoding, (defaulting to ISO-8859-1) defines what charset the
1231
+ parser will use for passing back string xmlrpcvals to the PHP application
1232
+ (both server-side and client-side).
1233
+ This allows transparent usage of e.g. UTF-8 for encoding xml messages between
1234
+ server and client and ISO-8859-1 for internal string handling.
1235
+ ISO-8859-1 is, AFAIK, PHP internal encoding for all installs except
1236
+ mbstring-enabled ones.
1237
+
1238
+ 2005-02-12 Gaetano Giunta <giunta.gaetano@gmail.com>
1239
+
1240
+ * xmlrpcs.inc: use '$var =& new(' construct to assign objects: on older versions
1241
+ of PHP objects are first built then copied over if the ampersand is omitted.
1242
+ Using it should make the code a little bit faster...
1243
+
1244
+ * doc/xmlrpc.php: update lib version number, release date in preparation for
1245
+ next release
1246
+
1247
+ * makefile: update lib version number in preparation for next release
1248
+
1249
+ * xmlrpc.inc: split up parsing of xmlrpc INT and DOUBLE values. This allows
1250
+ finer-grained control over valid values: now the '.' char is not allowed
1251
+ any more inside int values.
1252
+
1253
+ * xmlrpc.inc: fix for bug #560303: ints and doubles starting with '0' chars are
1254
+ no more parsed as octal values
1255
+
1256
+ 2005-01-30 Gaetano Giunta <giunta.gaetano@gmail.com>
1257
+
1258
+ * xmlrpc.inc: Modifed last change by Miles: the functions php_xmlrpc_encode
1259
+ and php_xmlrpc_decode are now always defined, regardless of the existence of
1260
+ XMLRPC-EPI. This allows users to start using these functions as the 'default'
1261
+ functions, and pave the way for future deprecation of xmlrpc_encode/encode
1262
+ while maintaining a stable API.
1263
+
1264
+ * xmlrpc.inc: use '$var =& new(' construct to assign objects: on older versions
1265
+ of PHP objects are first built then copied over if the ampersand is omitted.
1266
+ Using it should make the code a little bit faster...
1267
+
1268
+ * xmlrpc.inc: close curl connection as soon as possible for https requests:
1269
+ it could save some memory / resources.
1270
+
1271
+ * xmlrpc.inc: added some extra info in the PHP error log message generated
1272
+ when an invalid xmlrpc integer/float value is encountered and we try to
1273
+ deserialize it.
1274
+
1275
+ * xmlrpc.inc: added @ char before fsockopen to avoid echoing useless warnings
1276
+ when connection to server fails; added the same to avoid echoing warnings when
1277
+ deserializing data of an unknown type
1278
+
1279
+ * xmlrpc.inc: reset the _xh array on each xmlrpc call: otherwise a new array
1280
+ member is created for each consecutive call and never destroyed, thus making it
1281
+ impossible to build an xmlrpc-client daemon beacuse of memory leaking.
1282
+
1283
+ * xmlrpc.inc: declare global the variables that are used as 'constants',
1284
+ so that xmlrpc.inc will work even if it is included from within a function
1285
+
1286
+ 2004-12-27 Miles Lott <milos@groupwhere.org>
1287
+ * xmlrpc.inc: A new constant, XMLRPC_EPI_ENABLED, is defined depending on
1288
+ the existence of the function, xmlrpc_decode. This function will exist in
1289
+ PHP if the extension, XMLRPC-EPI (http://xmlrpc-epi.sourceforge.net), is
1290
+ loaded. It defines the functions xmlrpc_encode and xmlrpc_decode, which
1291
+ will conflict with functions of the same name in xmlrpc.inc. If this
1292
+ extension is loaded, we instead use the names php_xmlrpc_encode and
1293
+ php_xmlrpc_decode. Please look at server.php, testsuite.php, etc., for
1294
+ how this should be handled if using these functions.
1295
+
1296
+ 2003-04-17 Andres Salomon <dilinger@voxel.net>
1297
+ * xmlrpc.inc: encode strings using htmlentities() instead of
1298
+ htmlspecialchars(), and add xmlrpc_html_entity_xlate(). This
1299
+ should fix longstanding issues with sending weird chars (from
1300
+ non-USASCII codesets like UTF-8, ISO-8859-1, etc) that caused
1301
+ the xml parser to choke. Multi-byte chars are now changed to
1302
+ entities before sending, so that the xmlrpc server doesn't need
1303
+ to know the encoding type of the POST data.
1304
+ * xmlrpcs.inc: call xmlrpc_html_entity_xlate before parsing
1305
+ request packet. The parser chokes on unknown entities (the
1306
+ entities created by htmlentities() are exactly that; html
1307
+ entities, not xml entities), so they must be converted from
1308
+ name form (&eacute;) to numerical form (&#233;).
1309
+
1310
+ 2003-01-12 Andres Salomon <dilinger@voxel.net>
1311
+
1312
+ * released 1.0.99.2.
1313
+ * Makefile: separate doc/Makefile a bit more from Makefile,
1314
+ and add clean rules.
1315
+
1316
+ 2003-01-10 Andres Salomon <dilinger@voxel.net>
1317
+
1318
+ * xmlrpc.inc: xmlrpcresp and parseResponse cleanups; variable
1319
+ name renames ('xv' to 'val', for example), type checking, and
1320
+ stricter default values.
1321
+ * xmlrpc.inc: fix xmlrpcresp's faultcode; return -1 for FAULT
1322
+ responses from the server whose faultcodes don't reflect any
1323
+ errors.
1324
+
1325
+ 2003-01-08 Andres Salomon <dilinger@voxel.net>
1326
+
1327
+ * xmlrpc.inc: rename $_xh[$parser]['ha'] to
1328
+ $_xh[$parser]['headers'].
1329
+ * xmlrpc.inc: fix bugs related to $_xh[$parser]['headers];
1330
+ some places treated this as an array, others as a scalar.
1331
+ Treat unconditionally as an array. Also wrap header debugging
1332
+ output in PRE tags.
1333
+
1334
+ 2002-12-17 Andres Salomon <dilinger@voxel.net>
1335
+
1336
+ * released 1.0.99.
1337
+ * Makefile: changed the tarball format/dist rule to a more
1338
+ conventional form, as well as normal release updates.
1339
+ * xmlrpc.inc: added setSSLVerifyPeer and setSSLVerifyHost; as
1340
+ of curl 7.10, various certificate checks are done (by default).
1341
+ The default for CURLOPT_SSL_VERIFYHOST is to ensure the common
1342
+ name on the cert matches the provided hostname. This breaks a
1343
+ lot of stuff, so allow users to override it.
1344
+ * doc/xmlrpc_php.sgml: updated documentation accordingly.
1345
+
1346
+ 2002-09-06 Geoffrey T. Dairiki <dairiki@dairiki.org>
1347
+
1348
+ Add support for system.multicall() to both the client
1349
+ and the server.
1350
+
1351
+ * testsuite.php: Add new tests 'testServerMulticall',
1352
+ and 'testClientMulticall'.
1353
+
1354
+ * xmlrpc.inc: Added new error messages for system.multicall().
1355
+ * xmlrpcs.inc: Added new procedure call system.multicall().
1356
+ See http://www.xmlrpc.com/discuss/msgReader$1208 for details.
1357
+
1358
+ * xmlrpc.inc: Added system.multicall functionality to
1359
+ xmlrpc_client. xmlrpc_client::send can now take an array of
1360
+ xmlrpcmsg's as an argument. In that case it will attempt
1361
+ to execute the whole array of procure calls in a single
1362
+ HTTP request using system.multicall(). (If that attempt fails,
1363
+ then the calls will be excuted one at a time.) The return
1364
+ value will be an array of xmlrpcresp's (or 0 upon transport
1365
+ failure.)
1366
+
1367
+ 2001-11-29 Edd Dumbill <edd@usefulinc.com>
1368
+
1369
+ * xmlrpc.inc: fixed problem with processing HTTP headers that
1370
+ broke any payload with more than one consecutive newline in it.
1371
+ also initialise the 'ac' array member to empty string at start.
1372
+ * testsuite.php: added unit test to exercise above bug
1373
+ * xmlrpcs.inc: fixed uninitialized variable $plist
1374
+
1375
+ 2001-09-25 Edd Dumbill <edd@usefulinc.com>
1376
+
1377
+ * xmlrpc.inc: applied urgent security fixes as identified by Dan
1378
+ Libby
1379
+
1380
+ 2001-08-27 Edd Dumbill <edd@usefulinc.com>
1381
+
1382
+ * xmlrpc.inc: Merged in HTTPS support from Justin Miller, with a
1383
+ few additions for better traceability of failure conditions. Added
1384
+ small fix from Giancarlo Pinerolo. Bumped rev to 1.0. Changed
1385
+ license to BSD license.
1386
+
1387
+ 2001-06-15 Edd Dumbill <edd@usefulinc.com>
1388
+
1389
+ * xmlrpcs.inc: Added \r into return MIME headers for server class
1390
+
1391
+ 2001-04-25 Edd Dumbill <edd@usefulinc.com>
1392
+
1393
+ * server.php: Added interop suite of methods.
1394
+
1395
+ 2001-04-24 Edd Dumbill <edd@usefulinc.com>
1396
+
1397
+ * testsuite.php: added in test case for string handling bug.
1398
+
1399
+ * xmlrpc.inc: merged in minor fixes from G Giunta to fix
1400
+ noninitialization. Created new method, getval(), which includes
1401
+ experimental support for recreating nested arrays, from Giunta and
1402
+ Sofer. Fixed string handling bug where characters after </string>
1403
+ but before </value> weren't ignored. Added in support for native
1404
+ boolean type into xmlrpc_encode (Giunta).
1405
+
1406
+ * xmlrpcs.inc: updated copyright notice
1407
+
1408
+ 2001-01-15 Edd Dumbill <edd@usefulinc.com>
1409
+
1410
+ * xmlrpc.inc: fixed bug with creation of booleans. Put checks in
1411
+ to ensure that numbers were really numeric. Fixed bug with
1412
+ non-escaping of dollar signs in strings.
1413
+
1414
+ * testsuite.php: created test suite.
1415
+
1416
+ 2000-08-26 Edd Dumbill <edd@usefulinc.com>
1417
+
1418
+ * xmlrpcs.inc: added xmlrpc_debugmsg() function which outputs
1419
+ debug information in comments inside the return payload XML
1420
+
1421
+ * xmlrpc.inc: merged in some changes from Dan Libby which fix up
1422
+ whitespace handling.
1423
+
1424
+ * xmlrpcs.inc: added Content-length header on response (bug from
1425
+ Jan Varga <varga@utcru.sk>. This means you can no longer print
1426
+ during processing
1427
+
1428
+ * xmlrpc.inc: changed ereg_replace to str_replace in several
1429
+ places (thanks to Dan Libby <dan@libby.com> for this).
1430
+
1431
+ * xmlrpc.inc: added xmlrpc_encode() and xmlrpc_decode() from Dan
1432
+ Libby--these helper routines make it easier to work in native PHP
1433
+ data structures.
1434
+
1435
+ 2000-07-21 Edd Dumbill <edd@usefulinc.com>
1436
+
1437
+ * xmlrpc.inc: added xmlrpc_client::setCredentials method to pass
1438
+ in authorization information, and modified sendPayload* methods to
1439
+ send this OK. Thanks to Grant Rauscher for the impetus to do this.
1440
+ Also, made the client send empty <params></params> if there are no
1441
+ parameters set by the user.
1442
+
1443
+ * doc/xmlrpc_php.sgml: updated documentation to reflect recent
1444
+ changes
1445
+
1446
+
1447
+ 2000-07-18 Edd Dumbill <edd@usefulinc.com>
1448
+
1449
+ * server.php: added examples.invertBooleans method to server as a
1450
+ useful test method for boolean values.
1451
+
1452
+ * xmlrpc.inc: rearranged the way booleans are handled to fix
1453
+ outstanding problems. Fixed calling addScalar() on arrays so it
1454
+ works. Finally fixed backslashification issues to remove the
1455
+ problem will dollar signs disappearing.
1456
+
1457
+ * booltest.php: really fixed booleans this time.
1458
+
1459
+ 2000-06-03 Edd Dumbill <edd@usefulinc.com>
1460
+
1461
+ * xmlrpcs.inc: made signature verification more useful - now
1462
+ returns what it found was wrong
1463
+
1464
+ * xmlrpc.inc: fixed bug with decoding dateTimes. Also fixed a bug
1465
+ which meant a PHP syntax error happened when attempting to receive
1466
+ empty arrays or structs. Also fixed bug with booleans always being
1467
+ interpreted as 'true'.
1468
+
1469
+ * server.php: Added validator1 suite of tests to test against
1470
+ validator.xmlrpc.com
1471
+
1472
+
1473
+ 2000-05-06 Edd Dumbill <edd@usefulinc.com>
1474
+
1475
+ * released 1.0b6
1476
+
1477
+ * added test.pl and test.py, Perl and Python scripts that exercise
1478
+ server.php somewhat (but not a lot)
1479
+
1480
+ * added extra fault condition for a non 200 OK response from the
1481
+ remote server.
1482
+
1483
+ * added iso8601_encode() and iso8601_decode() to give some support
1484
+ for passing dates around. They translate to and from UNIX
1485
+ timestamps. Updated documentation accordingly.
1486
+
1487
+ * fixed string backslashification -- was previously a little
1488
+ overzealous! new behavior is '\' --> '\\' and '"' -->
1489
+ '\"'. Everything else gets left alone.
1490
+
1491
+ 2000-04-12 Edd Dumbill <edd@usefulinc.com>
1492
+
1493
+ * updated and bugfixed the documentation
1494
+
1495
+ * fixed base 64 encoding to only happen at serialize() time,
1496
+ rather than when a base64 value is created. This fixes the double
1497
+ encoding bug reported by Nicolay Mausz
1498
+ <castor@flying-dog.com>. The same approach ought to be taken with
1499
+ encoding XML entities in the data - this is a TODO.
1500
+
1501
+ * integrated further code from Peter Kocks: used his new code for
1502
+ send(), adding a second, optional, parameter which is a timeout
1503
+ parameter to fsockopen()
1504
+
1505
+ 1999-10-11 Edd Dumbill <edd@usefulinc.com>
1506
+
1507
+ * added bug fixes from Peter Kocks <peter.kocks@baygate.com>
1508
+
1509
+ 1999-10-10 Edd Dumbill <edd@usefulinc.com>
1510
+
1511
+ * updated the documentation
1512
+
1513
+ 1999-10-08 Edd Dumbill <edd@usefulinc.com>
1514
+
1515
+ * added system.* methods and dispatcher, plus documentation
1516
+
1517
+ * fixed bug which meant request::getNumParams was returning an
1518
+ incorrect value
1519
+
1520
+ * added signatures into the dispatch map. This BREAKS
1521
+ COMPATIBILITY with previous releases of this code
1522
+
1523
+ 1999-08-18 Edd Dumbill <edd@usefulinc.com>
1524
+
1525
+ * made entity encoding and decoding transparent now on string
1526
+ passing.
1527
+
1528
+ * de-globalised the globals in the parse routines, using an
1529
+ associative array to hold all parser state $_xh
1530
+
1531
+ * changed default input encoding to be UTF-8 to match expectation
1532
+
1533
+ * separated out parseResponse into parseResponse and
1534
+ parseResponseFile so that you can call parseResponse on a string
1535
+ if you have one handy
1536
+
1537
+ 1999-07-20 Edd Dumbill <edd@usefulinc.com>
1538
+
1539
+ * Moved documentation into Docbook format
1540
+
1541
+ 1999-07-19 Edd Dumbill <edd@usefulinc.com>
1542
+
1543
+ * Added an echo server into server.php and echotest.php, a client
1544
+ which will exercise the new echo routine.
1545
+
1546
+ * Added test for no valid value returned: in this case will now
1547
+ throw the error "invalid payload"
1548
+
1549
+ * Added serialize() method to xmlrpcresp to return a string with
1550
+ the response serialized as XML
1551
+
1552
+ * Added automatic encoding and decoding for base64 types
1553
+
1554
+ * Added setDebug() method to client to enable HTML output
1555
+ debugging in the client
1556
+
1557
+ 1999-07-08 Edd Dumbill <edd@usefulinc.com>
1558
+
1559
+ * Improved XML parse error reporting on the server side to send it
1560
+ back in a faultCode packet. expat errors now begin at 100
1561
+
1562
+ 1999-07-07 Edd Dumbill <edd@usefulinc.com>
1563
+
1564
+ * Changed the structmem and arraymem methods of xmlrpcval to always
1565
+ return xmlrpc vals whether they referred to scalars or complex
1566
+ types.
1567
+
1568
+ * Added the server class and demonstrations
1569
+
1570
+ * Fixed bugs in the XML parsing and reworked it
1571
+
1572
+
1573
+ $Id: ChangeLog,v 1.96 2009/03/16 19:39:11 ggiunta Exp $
includes/vendor/infusionsoft/xmlrpc-3.0/Makefile ADDED
@@ -0,0 +1,123 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Makefile for phpxmlrpc library
2
+ # $Id: Makefile,v 1.37 2008/03/06 22:37:19 ggiunta Exp $
3
+
4
+ ### USER EDITABLE VARS ###
5
+
6
+ # path to PHP executable, preferably CLI version
7
+ PHP=/usr/local/bin/php
8
+
9
+ # path were xmlrpc lib files will be copied to
10
+ PHPINCLUDEDIR=/usr/local/lib/php
11
+
12
+ # mkdir is a thorny beast under windows: make sure we can not use the cmd version, running eg. "make MKDIR=mkdir.exe"
13
+ MKDIR=mkdir
14
+
15
+ #find too
16
+ FIND=find
17
+
18
+
19
+ #### DO NOT TOUCH FROM HERE ONWARDS ###
20
+
21
+ # recover version number from code
22
+ # thanks to Firman Pribadi for unix command line help
23
+ # on unix shells lasts char should be \\2/g )
24
+ export VERSION=$(shell egrep "\$GLOBALS *\[ *'xmlrpcVersion' *\] *= *'" lib/xmlrpc.inc | sed -r s/"(.*= *' *)([0-9a-zA-Z.-]+)(.*)"/\2/g )
25
+
26
+ LIBFILES=lib/xmlrpc.inc lib/xmlrpcs.inc lib/xmlrpc_wrappers.inc
27
+
28
+ EXTRAFILES=extras/test.pl \
29
+ extras/test.py \
30
+ extras/rsakey.pem \
31
+ extras/workspace.testPhpServer.fttb
32
+
33
+ DEMOFILES=demo/vardemo.php \
34
+ demo/demo1.txt \
35
+ demo/demo2.txt \
36
+ demo/demo3.txt
37
+
38
+ DEMOSFILES=demo/server/discuss.php \
39
+ demo/server/server.php \
40
+ demo/server/proxy.php
41
+
42
+ DEMOCFILES=demo/client/agesort.php \
43
+ demo/client/client.php \
44
+ demo/client/comment.php \
45
+ demo/client/introspect.php \
46
+ demo/client/mail.php \
47
+ demo/client/simple_call.php \
48
+ demo/client/which.php \
49
+ demo/client/wrap.php \
50
+ demo/client/zopetest.php
51
+
52
+ TESTFILES=test/testsuite.php \
53
+ test/benchmark.php \
54
+ test/parse_args.php \
55
+ test/phpunit.php \
56
+ test/verify_compat.php \
57
+ test/PHPUnit/*.php
58
+
59
+ INFOFILES=Changelog \
60
+ Makefile \
61
+ NEWS \
62
+ README
63
+
64
+ DEBUGGERFILES=debugger/index.php \
65
+ debugger/action.php \
66
+ debugger/common.php \
67
+ debugger/controller.php
68
+
69
+
70
+ all: install
71
+
72
+ install:
73
+ cd lib && cp ${LIBFILES} ${PHPINCLUDEDIR}
74
+ @echo Lib files have been copied to ${PHPINCLUDEDIR}
75
+ cd doc && $(MAKE) install
76
+
77
+ test:
78
+ cd test && ${PHP} -q testsuite.php
79
+
80
+
81
+ ### the following targets are to be used for library development ###
82
+
83
+ # make tag target: tag existing working copy as release in cvs.
84
+ # todo: convert dots in underscore in $VERSION
85
+ tag:
86
+ cvs -q tag -p release_${VERSION}
87
+
88
+ dist: xmlrpc-${VERSION}.zip xmlrpc-${VERSION}.tar.gz
89
+
90
+ xmlrpc-${VERSION}.zip xmlrpc-${VERSION}.tar.gz: ${LIBFILES} ${DEBUGGERFILES} ${INFOFILES} ${TESTFILES} ${EXTRAFILES} ${DEMOFILES} ${DEMOSFILES} ${DEMOCFILES}
91
+ @echo ---${VERSION}---
92
+ rm -rf xmlrpc-${VERSION}
93
+ ${MKDIR} xmlrpc-${VERSION}
94
+ ${MKDIR} xmlrpc-${VERSION}/demo
95
+ ${MKDIR} xmlrpc-${VERSION}/demo/client
96
+ ${MKDIR} xmlrpc-${VERSION}/demo/server
97
+ ${MKDIR} xmlrpc-${VERSION}/test
98
+ ${MKDIR} xmlrpc-${VERSION}/test/PHPUnit
99
+ ${MKDIR} xmlrpc-${VERSION}/extras
100
+ ${MKDIR} xmlrpc-${VERSION}/lib
101
+ ${MKDIR} xmlrpc-${VERSION}/debugger
102
+ cp --parents ${DEMOFILES} xmlrpc-${VERSION}
103
+ cp --parents ${DEMOCFILES} xmlrpc-${VERSION}
104
+ cp --parents ${DEMOSFILES} xmlrpc-${VERSION}
105
+ cp --parents ${TESTFILES} xmlrpc-${VERSION}
106
+ cp --parents ${EXTRAFILES} xmlrpc-${VERSION}
107
+ cp --parents ${LIBFILES} xmlrpc-${VERSION}
108
+ cp --parents ${DEBUGGERFILES} xmlrpc-${VERSION}
109
+ cp ${INFOFILES} xmlrpc-${VERSION}
110
+ cd doc && $(MAKE) dist
111
+ # on unix shells last char should be \;
112
+ ${FIND} xmlrpc-${VERSION} -type f ! -name "*.fttb" ! -name "*.pdf" ! -name "*.gif" -exec dos2unix {} ;
113
+ -rm xmlrpc-${VERSION}.zip xmlrpc-${VERSION}.tar.gz
114
+ tar -cvf xmlrpc-${VERSION}.tar xmlrpc-${VERSION}
115
+ gzip xmlrpc-${VERSION}.tar
116
+ zip -r xmlrpc-${VERSION}.zip xmlrpc-${VERSION}
117
+
118
+ doc:
119
+ cd doc && $(MAKE) doc
120
+
121
+ clean:
122
+ rm -rf xmlrpc-${VERSION} xmlrpc-${VERSION}.zip xmlrpc-${VERSION}.tar.gz
123
+ cd doc && $(MAKE) clean
includes/vendor/infusionsoft/xmlrpc-3.0/NEWS ADDED
@@ -0,0 +1,333 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ XML-RPC for PHP version 3.0.0 beta - 2009/09/05
2
+
3
+ This is the first release of the library to only support PHP 5.
4
+ Some legacy code has been removed, and support for features such as exceptions
5
+ and dateTime objects introduced.
6
+
7
+ The "beta" tag is meant to indicate the fact that the refactoring has been more widespread
8
+ than in precedent releases and that more changes are likely to be introduced with time -
9
+ the library is still considered to be production quality.
10
+
11
+ * improved: removed all usage of php functions deprecated in php 5.3, usage of assign-by-ref when creating new objects etc...
12
+ * improved: add support for the <ex:nil/> tag used by the apache library, both in input and output
13
+ * improved: add support for dateTime objects in both in php_xmlrpc_encode and as parameter for constructor of xmlrpcval
14
+ * improved: add support for timestamps as parameter for constructor of xmlrpcval
15
+ * improved: add option 'dates_as_objects' to php_xmlrpc_decode to return dateTime objects for xmlrpc datetimes
16
+ * improved: add new method SetCurlOptions to xmrlpc_client to allow extra flexibility in tweaking http config, such as explicitly binding to an ip address
17
+ * improved: add new method SetUserAgent to xmrlpc_client to to allow having different user-agent http headers
18
+ * improved: add a new member variable in server class to allow fine-tuning of the encoding of returned values when the server is in 'phpvals' mode
19
+ * improved: allow servers in 'xmlrpcvals' mode to also register plain php functions by defining them in the dispatch map with an added option
20
+ * improved: catch exceptions thrown during execution of php functions exposed as methods by the server
21
+ * fixed: bad encoding if same object is encoded twice using php_xmlrpc_encode
22
+
23
+
24
+ XML-RPC for PHP version 2.2.2 - 2009/03/16
25
+
26
+ This release corrects all bugs that have been reported and sucesfully reproduced since
27
+ version 2.2.1.
28
+ Regardless of the intimidating message about dropping PHP 4 support, it still does
29
+ support that ancient, broken and insecure platform.
30
+
31
+ * fixed: php warning when receiving 'false' in a bool value
32
+ * fixed: improve robustness of the debugger when parsing weird results from non-compliant servers
33
+ * fixed: format floating point values using the correct decimal separator even when php locale is set to one that uses comma
34
+ * fixed: use feof() to test if socket connections are to be closed instead of the number of bytes read (rare bug when communicating with some servers)
35
+ * fixed: be more tolerant in detection of charset in http headers
36
+ * fixed: fix encoding of UTF8 chars outside of the BMP plane
37
+ * fixed: fix detection of zlib.output_compression
38
+ * improved: allow the add_to_map server method to add docs for single params too
39
+ * improved: added the possibility to wrap for exposure as xmlrpc methods plain php class methods, object methods and even whole classes
40
+
41
+
42
+ XML-RPC for PHP version 2.2.1 - 2008/03/06
43
+
44
+ This release corrects all bugs that have been reported and sucesfully reproduced.
45
+ It is the last release of the library that will support PHP 4.
46
+
47
+ * fixed: work aroung bug in php 5.2.2 which broke support of HTTP_RAW_POST_DATA
48
+ * fixed: is_dir parameter of setCaCertificate() method is reversed
49
+ * fixed: a php warning in xmlrpc_client creator method
50
+ * fixed: parsing of '1e+1' as valid float
51
+ * fixed: allow errorlevel 3 to work when prev. error handler was a static method
52
+ * fixed: usage of client::setcookie() for multiple cookies in non-ssl mode
53
+ * improved: support for CP1252 charset is not part or the library but almost possible
54
+ * improved: more info when curl is enabled and debug mode is on
55
+
56
+
57
+ XML-RPC for PHP version 2.2 - 2007/02/25
58
+
59
+ This release corrects a couple of bugs and adds a few minor features.
60
+
61
+ * fixed: debugger errors on php installs with magic_quotes_gpc on
62
+ * fixed: support for https connections via proxy
63
+ * fixed: wrap_xmlrpc_method() generated code failed to properly encode php objects
64
+ * improved: slightly faster encoding of data which is internally UTF-8
65
+ * improved: debugger always generates a 'null' id for jsonrpc if user omits it
66
+ * new: debugger can take advantage of a graphical value builder
67
+ (it has to be downloaded separately, as part of jsxmlrpc package)
68
+ * new: support for the <NIL/> xmlrpc extension
69
+ * new: server support for the system.getCapabilities xmlrpc extension
70
+ * new: wrap_xmlrpc_method() accepts two new options: debug and return_on_fault
71
+
72
+
73
+ XML-RPC for PHP version 2.1 - 2006/08/28
74
+
75
+ This release corrects quite a few bugs and adds some interesting new features.
76
+ There is a minor security enhancement and overall speedup too.
77
+
78
+ It has been tested with PHP 4.0.5 up to 4.4.4 and 5.1.5.
79
+ Please note that 404pl1 is NOT supported, and has not been since 2.0.
80
+
81
+ *** PLASE READ CAREFULLY BELOW ***
82
+
83
+ CHANGES THAT MIGHT AFFECT DEPLOYED APPLICATIONS:
84
+
85
+ The wrap_php_function and wrap_xmlrpc_method functions have been moved out of
86
+ the base library file xmlrpc.inc into a file of their own: xmlrpc_wrappers.inc.
87
+ You will have to include() / require() it in your scripts if you have been using
88
+ those functions.
89
+
90
+ For increased security, the automatic rebuilding of php object instances out of
91
+ received xmlrpc structs in wrap_xmlrpc_method() has been disabled (but it can be
92
+ optionally reenabled).
93
+
94
+ The constructor of xmlrpcval() values has seen major changes, and it will not
95
+ throw a php warning anymore when invoked using an unknown xmlrpc type: the
96
+ error will only be written to php error log. Also new xmlrpcval('true', 'boolean')
97
+ is not supported anymore.
98
+
99
+ MAJOR IMPROVEMENTS:
100
+
101
+ The new function php_xmlrpc_decode_xml() will take the xml representation of
102
+ either an xmlrpc request, response or single value and return the corresponding
103
+ php-xmlrpc object instance.
104
+
105
+ Both wrap_php_function() and wrap_xmlrpc_method() functions accept many more
106
+ options to fine tune their behaviour, including one to return the php code to
107
+ be saved and later used as standalone php script.
108
+
109
+ A new function wrap_xmlrpc_server() has been added, to wrap all (or some) of the
110
+ methods exposed by a remote xmlrpc server into a php class.
111
+
112
+ Lib internals have been modified to provide better support for grafting extra
113
+ functionality on top of it. Stay tuned for future releases of the EXTRAS package.
114
+
115
+ Last but not least a new file has been added: verify_compat.php, to help users
116
+ diagnose the level of compliance of the current php install with the library.
117
+
118
+ CHANGELOG IN DETAIL:
119
+
120
+ * fixed bug 1311927: client not playing nice with some proxy/firewall on ports != 80
121
+ * fixed bug 1334340: all ereg_ functions have been replaced with corresponding preg_
122
+ * fixed bug: wrong handling of 'deflate' http encoding, both server and client side
123
+ * fixed bug: sending compressed responses when php output compression is enabled was not working
124
+ * fixed bug: addarray() and addstruct() where not returning 1 when adding data to already initialized values
125
+ * fixed bug: non-ascii chars used in struct element names where not being encoded correctly
126
+ * restored compatibility with php 4.0.5 (for those poor souls still stuck on it)
127
+ * server->service() now returns either the payload or xmlrpcresp instance
128
+ * server->add_to_map() now accepts methods with no param definitions
129
+ * added new function: php_xmlrpc_decode_xml()
130
+ * added new function: wrap_xmlrpc_server()
131
+ * major improvements and security enhancements to wrap_php_function() and wrap_xmlrpc_method()
132
+ * documentation for single parameters of exposed methods can be added to the dispatch map
133
+ (and turned into html docs in conjunction with a future release of the extras package)
134
+ * full response payload is saved into xmlrpcresp object for further debugging
135
+ * stricter parsing of incmoing xmlrpc messages: two more invalid cases are now detected
136
+ (double data element inside array and struct/array after scalar inside value element)
137
+ * debugger can now generate code that wraps a remote method into php function (works for jsonrpc, too)
138
+ * debugger has better support for being activated via a single GET call (for integration into other tools?)
139
+ * more logging of errors in a lot of situations
140
+ * javadoc documentation of lib files almost complete
141
+ * the usual amount of new testcases in the testsuite
142
+ * many performance tweaks and code cleanups
143
+ * added foundation for emulating the API of the xmlrpc extension (extras package needed)
144
+
145
+
146
+ XML-RPC for PHP version 2.0 - 2006/04/24
147
+
148
+ I'm pleased to announce XML-RPC for PHP version 2.0, final.
149
+
150
+ With respect to the last release candidate, this release corrects a few small
151
+ bugs and adds a couple of new features: more authentication options (digest and
152
+ ntlm for servers, ntlm for proxies, and some https custom certificates stuff);
153
+ all the examples have been reviewed and some demo files added,
154
+ including a ready-made xmlrpc proxy (useful e.g. for ajax calls, when the xmlrpc
155
+ client is a browser); the server logs more warning messages for incorrect situations;
156
+ both client and server are more tolerant of commonly-found mistakes.
157
+ The debugger has been upgraded to reflect the new client capabilities.
158
+
159
+ In greater detail:
160
+
161
+ * fixed bug: method xmlrpcval::structmemexists($value) would not work
162
+ * fixed bug: wrap_xmlrpc_method would fail if invoked with a client object that
163
+ has return_type=phpvals
164
+ * fixed bug: in case of call to client::multicall without fallback and server error
165
+ * fixed bug: recursive serialization of xmlrpcvals loosing specified UTF8 charset
166
+ * fixed bug: serializing to ISO-8859-1 with php 5 would raise an error if non-ascii
167
+ chars where found when decoding
168
+ * new: client can use NTLM and Digest authentication methods for https and http 1.1
169
+ connections; authentication to proxy can be set to NTLM, too
170
+ * new: server tolerates user functions returning a single xmlrpcval object instead
171
+ of an xmlrpcresp
172
+ * new: server does more checks for presence and correct return type of user
173
+ coded method handling functions, and logs inconsistencies to php error log
174
+ * new: client method SetCaCertificate($cert, $is_dir) to validate server against
175
+ * new: both server and client tolerate receiving 'true' and 'false' for bool values
176
+ (which btw are not valid according to the xmlrpc spec)
177
+
178
+
179
+ XML-RPC for PHP version 2.0RC3 - 2006/01/22
180
+
181
+ This release corrects a few bugs and adds some interesting new features.
182
+ It has been tested with PHP up to 4.4.2 and 5.1.2.
183
+
184
+ * fixed bug: server not recognizing clients that declare support for http compression
185
+ * fixed bug: serialization of new xmlrpcval (8, 'string') when internal encoding
186
+ set to UTF-8
187
+ * fixed bug: serialization of new xmlrpcval ('hello', 'int') would produce
188
+ invalid xml-rpc
189
+ * new: let the server accept 'class::method' syntax in the dispatch map
190
+ * new: php_xmlrpc_decode() can decode xmlrpcmessage objects
191
+ * new: both client and server can specify a charset to be used for serializing
192
+ values instead of the default 'US-ASCII+xml-entities-for-other-characters'.
193
+ Values allowed: ISO-8859-1 and UTF-8
194
+ * new: the server object can register 'plain' php functions instead of functions
195
+ that accept a single parameter of type xmlrpcmsg. Faster, uses less memory
196
+ (but comes with minor drawbacks as well, read the manual for more details)
197
+ * new: client::setDebug(2) can be used to have the request payload printed to
198
+ screen before being sent
199
+ * new: server::service($data) lets user parse data other than POST body, for
200
+ easier testing / subclassing
201
+ * changed: framework-generated debug messages are sent back by the server base64
202
+ encoded, to avoid any charset/xml compatibility problem
203
+ * other minor fixes
204
+
205
+ The usual refactoring of a lot of (private) methods has taken place, with new
206
+ parameters added to some functions.
207
+ Javadoc documentation has been improved a lot.
208
+ The HTML documentation has been shuffled around a bit, hoping to give it a more
209
+ logical organization.
210
+
211
+ The experimental support for the JSON protocol has been removed, and will be
212
+ packaged as a separate download with some extra very interesting stuff (human
213
+ readable auto-generated documentation, anyone?).
214
+
215
+
216
+ XML-RPC for PHP version 2.0RC2 - 2005/11/22
217
+
218
+ This release corrects a few bugs and adds basically one new method for better
219
+ HTTPS support:
220
+
221
+ * fixed two bugs that prevented xmlrpc calls to take place over https
222
+ * fixed two bugs that prevented proper recognition of xml character set
223
+ when it was declared inside the xml prologue
224
+ * added xmlrpc_client::setKey($key, $keypass) method, to allow using client
225
+ side certificates for https connections
226
+ * fixed bug that prevented proper serialization of string xmlrpcvals when
227
+ $xmlrpc_internalencoding was set to UTF-8
228
+ * fixed bug in xmlrpc_server::echoInput() (and marked method as deprecated)
229
+ * correctly set cookies/http headers into xmlrpcresp objects even when the
230
+ sned() method call fails for some reason
231
+ * added a benchmark file in the testsuite directory
232
+
233
+ A couple of (private/protected) methods have been refactored, as well as a
234
+ couple of extra parameters added to some (private) functions - this has no
235
+ impact on the public API and should be of interest primarily to people extending
236
+ / subclassing the lib.
237
+
238
+ There is also new, PARTIAL support for the JSON-RPC protocol, implemented in
239
+ two files in the extras dir (more info about json-rpc at http://json-rpc.org)
240
+
241
+
242
+ XML-RPC for PHP version 2.0RC1 - 2005/10/03
243
+
244
+ I'm pleased to announce XML-RPC for PHP version 2.0, release candidate 1.
245
+
246
+ This release introduces so many new features it is almost impossible to list them
247
+ here, making the library finally on pair with, if not more advanced than, any other
248
+ similar offer (e.g. the PEAR XMLRPC package or the Incutio IXR library).
249
+ No, really, trust me.
250
+
251
+ The minimum supported PHP version is now 4.2 - natively - or 4.0.4pl1 - by usage of
252
+ a couple of compatibility classes (code taken from PEAR php_compat package).
253
+
254
+ The placement of files and directories in the distribution has been deeply modified,
255
+ in the hope of making it more clear, now that the file count has increased.
256
+ I hope you find it easy.
257
+
258
+ Support for "advanced" HTTP features such as cookies, proxies and keep-alives has
259
+ been added at last.
260
+
261
+ It is now much easier to convert between xmlrpcval objects and php values, and
262
+ in fact php_xmlrpc_encode and php_xmlrpc_decode are now the recommended methods
263
+ for all cases, except when encoding base64 data.
264
+
265
+ Two new (experimental) functions have been added, allowing automagic conversion
266
+ of a php function into an xmlrpc method to be exposed and vice-versa.
267
+
268
+ PHP objects can be now automatically serialized as xmlrpc struct values and
269
+ correctly deserialized on the other end of the transmission, provided that the
270
+ same class definition is present on both sides and no object members are of
271
+ type resource.
272
+
273
+ A lot of the existing class methods have been overloaded with extra parameters
274
+ or new functionality, and a few added ex-novo, making usage easier than ever.
275
+
276
+ A complete debugger solution is included in the distribution. It needs a web server
277
+ to run (a freely available version of the same debugger is accessible online, it
278
+ can be found at http://phpxmlrpc.sourceforge.net).
279
+
280
+ For a more detailed list of changes, please read carefully chapter 2 of the
281
+ included documentation, or, even better, take a look at the source code, which
282
+ is commented in javadoc style quite a bit.
283
+
284
+
285
+ XML-RPC for PHP version 1.2 - 2005/08/14
286
+
287
+ This removes all use of eval(), which is a potential security problem.
288
+ All users are encouraged to upgrade as soon as possible.
289
+ As of this release we are no longer php3-compatible.
290
+
291
+
292
+ XML-RPC for PHP version 1.1.1 - 2005/06/30
293
+
294
+ This is a security vulnerability fix release.
295
+ All users are invited to upgrade as soon as possible.
296
+
297
+
298
+ XML-RPC for PHP version 1.1 - 2005/05/03
299
+
300
+ I'm pleased to announce XML-RPC for PHP version 1.1
301
+ It's taken two years to get to the this point, but here we are, finally.
302
+
303
+ This is a bugfix and maintenance release. No major new features have been added.
304
+ All known bugs have been ironed out, unless fixing would have meant breaking
305
+ the API.
306
+ The code has been tested with PHP 3, 4 and 5, even tough PHP 4 is the main
307
+ development platform (and some warnings will be emitted when runnning PHP5).
308
+
309
+ Notheworthy changes include:
310
+
311
+ * do not clash any more with the EPI xmlrpc extension bundled with PHP 4 and 5
312
+ * fixed the unicode/charset problems that have been plaguing the lib for years
313
+ * proper parsing of int and float values prepended with zeroes or the '+' char
314
+ * accept float values in exponential notation
315
+ * configurable http user-agent string
316
+ * use the same timeout on client socket reads as used for connecting
317
+ * more explicative error messages in xmlrpcresponse in many cases
318
+ * much more tolerant parsing of malformed http responses from xmlrpc servers
319
+ * fixed memleak that prevented the client to be used in never-ending scripts
320
+ * parse bigger xmlrpc messages without crashing (1MB in size or more)
321
+ * be tolerant to xmlrpc responses generated on public servers that add
322
+ javascript advertising at the end of hosted content
323
+ * the lib generates quite a few less PHP warnings during standard operation
324
+
325
+ This is the last release that will support PHP 3.
326
+ The next release will include better support for PHP 5 and (possibly) a slew of
327
+ new features.
328
+
329
+ The changelog is available at:
330
+ http://cvs.sourceforge.net/viewcvs.py/phpxmlrpc/xmlrpc/ChangeLog?view=markup
331
+
332
+ Please report bugs to the XML-RPC PHP mailing list or to the sourceforge project
333
+ pages at http://sourceforge.net/projects/phpxmlrpc/
includes/vendor/infusionsoft/xmlrpc-3.0/README ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ NAME: XMLRPC FOR PHP
2
+
3
+ DESCRIPTION: A php library for building xmlrpc clients and servers
4
+
5
+
6
+
7
+ HTML documentation can be found in the doc/ directory.
8
+
9
+ Recent changes in the ChangeLog
10
+
11
+ Use of this software is subject to the terms in doc/index.html
12
+
13
+ The passphrase for the rsakey.pem certificate is 'test'.
includes/vendor/infusionsoft/xmlrpc-3.0/extras/rsakey.pem ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ MIIBOgIBAAJBAM12w6/J20HMj0V9VC24xPFQG9RKSDt8vmviM+tnc1BgCrzPyF1v
3
+ 3/rWGoWDjkJrE9WFOeqIjJHeEWWT4uKq2ZkCAwEAAQJAZZYJ7Nld+et9DvuHak/H
4
+ uBRGnjDYA+mKcObXitWMUzk2ZodL8UoCP1J9kKqV8Zp/l2cBZkLo0aWTN94sWkHy
5
+ rQIhAOhxWxRXSZ4kArIQqZnDG9JgtOAeaaFso/zpxIHpN6OrAiEA4klzl+rUc32/
6
+ 7SDcJYa9j5vehp1jCTnkN+n0rujTM8sCIAGwMRUovSQk5tAcRt8TB7SzdxzZm7LM
7
+ czR3DjJTW1AZAiEAlYN+svPgJ+cAdwdtLgZXHZoZb8xx8Vik6CTXHPKNCf0CIBQL
8
+ zF4Qp8/C+gjsXtEZJvhxY7i1luHn6iNwNnE932r3
9
+ -----END RSA PRIVATE KEY-----
includes/vendor/infusionsoft/xmlrpc-3.0/extras/test.pl ADDED
@@ -0,0 +1,52 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/local/bin/perl
2
+
3
+ use Frontier::Client;
4
+
5
+ my $serverURL='http://phpxmlrpc.sourceforge.net/server.php';
6
+
7
+ # try the simplest example
8
+
9
+ my $client = Frontier::Client->new( 'url' => $serverURL,
10
+ 'debug' => 0, 'encoding' => 'iso-8859-1' );
11
+ my $resp = $client->call("examples.getStateName", 32);
12
+
13
+ print "Got '${resp}'\n";
14
+
15
+ # now send a mail to nobody in particular
16
+
17
+ $resp = $client->call("mail.send", ("edd", "Test",
18
+ "Bonjour. Je m'appelle G�rard. Ma�ana. ", "freddy", "", "",
19
+ 'text/plain; charset="iso-8859-1"'));
20
+
21
+ if ($resp->value()) {
22
+ print "Mail sent OK.\n";
23
+ } else {
24
+ print "Error sending mail.\n";
25
+ }
26
+
27
+ # test echoing of characters works fine
28
+
29
+ $resp = $client->call("examples.echo", 'Three "blind" mice - ' .
30
+ "See 'how' they run");
31
+ print $resp . "\n";
32
+
33
+ # test name and age example. this exercises structs and arrays
34
+
35
+ $resp = $client->call("examples.sortByAge",
36
+ [ { 'name' => 'Dave', 'age' => 35},
37
+ { 'name' => 'Edd', 'age' => 45 },
38
+ { 'name' => 'Fred', 'age' => 23 },
39
+ { 'name' => 'Barney', 'age' => 36 } ] );
40
+
41
+ my $e;
42
+ foreach $e (@$resp) {
43
+ print $$e{'name'} . ", " . $$e{'age'} . "\n";
44
+ }
45
+
46
+ # test base64
47
+
48
+ $resp = $client->call("examples.decode64",
49
+ $client->base64("TWFyeSBoYWQgYSBsaXR0bGUgbGFtYiBTaGUgd" .
50
+ "GllZCBpdCB0byBhIHB5bG9u"));
51
+
52
+ print $resp . "\n";
includes/vendor/infusionsoft/xmlrpc-3.0/extras/test.py ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/local/bin/python
2
+
3
+ from xmlrpclib import *
4
+ import sys
5
+
6
+ server = Server("http://phpxmlrpc.sourceforge.net/server.php")
7
+
8
+ try:
9
+ print "Got '" + server.examples.getStateName(32) + "'"
10
+
11
+ r = server.mail.send("edd", "Test",
12
+ "Bonjour. Je m'appelle G�rard. Ma�ana. ", "freddy", "", "",
13
+ 'text/plain; charset="iso-8859-1"')
14
+ if r:
15
+ print "Mail sent OK"
16
+ else:
17
+ print "Error sending mail"
18
+
19
+
20
+ r = server.examples.echo('Three "blind" mice - ' + "See 'how' they run")
21
+ print r
22
+
23
+ # name/age example. this exercises structs and arrays
24
+
25
+ a = [ {'name': 'Dave', 'age': 35}, {'name': 'Edd', 'age': 45 },
26
+ {'name': 'Fred', 'age': 23}, {'name': 'Barney', 'age': 36 }]
27
+ r = server.examples.sortByAge(a)
28
+ print r
29
+
30
+ # test base 64
31
+ b = Binary("Mary had a little lamb She tied it to a pylon")
32
+ b.encode(sys.stdout)
33
+ r = server.examples.decode64(b)
34
+ print r
35
+
36
+ except Error, v:
37
+ print "XML-RPC Error:",v
includes/vendor/infusionsoft/xmlrpc-3.0/extras/workspace.testPhpServer.fttb ADDED
@@ -0,0 +1 @@
 
0
- ->
1
+
 
includes/vendor/infusionsoft/xmlrpc-3.0/lib/xmlrpc.inc ADDED
@@ -0,0 +1,3326 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ // by Edd Dumbill (C) 1999-2002
3
+ // <edd@usefulinc.com>
4
+ // $Id: xmlrpc.inc,v 1.174 2009/03/16 19:36:38 ggiunta Exp $
5
+
6
+ // Copyright (c) 1999,2000,2002 Edd Dumbill.
7
+ // All rights reserved.
8
+ //
9
+ // Redistribution and use in source and binary forms, with or without
10
+ // modification, are permitted provided that the following conditions
11
+ // are met:
12
+ //
13
+ // * Redistributions of source code must retain the above copyright
14
+ // notice, this list of conditions and the following disclaimer.
15
+ //
16
+ // * Redistributions in binary form must reproduce the above
17
+ // copyright notice, this list of conditions and the following
18
+ // disclaimer in the documentation and/or other materials provided
19
+ // with the distribution.
20
+ //
21
+ // * Neither the name of the "XML-RPC for PHP" nor the names of its
22
+ // contributors may be used to endorse or promote products derived
23
+ // from this software without specific prior written permission.
24
+ //
25
+ // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
26
+ // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
27
+ // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
28
+ // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
29
+ // REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
30
+ // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
31
+ // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
32
+ // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
33
+ // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
34
+ // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
35
+ // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
36
+ // OF THE POSSIBILITY OF SUCH DAMAGE.
37
+
38
+ $GLOBALS['xmlrpcName'] = 'Infusionsoft PHP iSDK 1.29.x ' . $_SERVER['SERVER_NAME'] . $_SERVER['PHP_SELF'];
39
+ $GLOBALS['xmlrpcVersion'] = '3.0.0.beta';
40
+
41
+ if (!function_exists('xml_parser_create')) {
42
+ // For PHP 4 onward, XML functionality is always compiled-in on windows:
43
+ // no more need to dl-open it. It might have been compiled out on *nix...
44
+ if (strtoupper(substr(PHP_OS, 0, 3) != 'WIN')) {
45
+ dl('xml.so');
46
+ }
47
+ }
48
+
49
+ // G. Giunta 2005/01/29: declare global these variables,
50
+ // so that xmlrpc.inc will work even if included from within a function
51
+ // Milosch: 2005/08/07 - explicitly request these via $GLOBALS where used.
52
+ $GLOBALS['xmlrpcI4'] = 'i4';
53
+ $GLOBALS['xmlrpcInt'] = 'int';
54
+ $GLOBALS['xmlrpcBoolean'] = 'boolean';
55
+ $GLOBALS['xmlrpcDouble'] = 'double';
56
+ $GLOBALS['xmlrpcString'] = 'string';
57
+ $GLOBALS['xmlrpcDateTime'] = 'dateTime.iso8601';
58
+ $GLOBALS['xmlrpcBase64'] = 'base64';
59
+ $GLOBALS['xmlrpcArray'] = 'array';
60
+ $GLOBALS['xmlrpcStruct'] = 'struct';
61
+ $GLOBALS['xmlrpcValue'] = 'undefined';
62
+
63
+ $GLOBALS['xmlrpcTypes'] = array(
64
+ $GLOBALS['xmlrpcI4'] => 1,
65
+ $GLOBALS['xmlrpcInt'] => 1,
66
+ $GLOBALS['xmlrpcBoolean'] => 1,
67
+ $GLOBALS['xmlrpcString'] => 1,
68
+ $GLOBALS['xmlrpcDouble'] => 1,
69
+ $GLOBALS['xmlrpcDateTime'] => 1,
70
+ $GLOBALS['xmlrpcBase64'] => 1,
71
+ $GLOBALS['xmlrpcArray'] => 2,
72
+ $GLOBALS['xmlrpcStruct'] => 3
73
+ );
74
+
75
+ $GLOBALS['xmlrpc_valid_parents'] = array(
76
+ 'VALUE' => array('MEMBER', 'DATA', 'PARAM', 'FAULT'),
77
+ 'BOOLEAN' => array('VALUE'),
78
+ 'I4' => array('VALUE'),
79
+ 'INT' => array('VALUE'),
80
+ 'STRING' => array('VALUE'),
81
+ 'DOUBLE' => array('VALUE'),
82
+ 'DATETIME.ISO8601' => array('VALUE'),
83
+ 'BASE64' => array('VALUE'),
84
+ 'MEMBER' => array('STRUCT'),
85
+ 'NAME' => array('MEMBER'),
86
+ 'DATA' => array('ARRAY'),
87
+ 'ARRAY' => array('VALUE'),
88
+ 'STRUCT' => array('VALUE'),
89
+ 'PARAM' => array('PARAMS'),
90
+ 'METHODNAME' => array('METHODCALL'),
91
+ 'PARAMS' => array('METHODCALL', 'METHODRESPONSE'),
92
+ 'FAULT' => array('METHODRESPONSE'),
93
+ 'NIL' => array('VALUE'), // only used when extension activated
94
+ 'EX:NIL' => array('VALUE') // only used when extension activated
95
+ );
96
+
97
+ // define extra types for supporting NULL (useful for json or <NIL/>)
98
+ $GLOBALS['xmlrpcNull'] = 'null';
99
+ $GLOBALS['xmlrpcTypes']['null'] = 1;
100
+
101
+ // Not in use anymore since 2.0. Shall we remove it?
102
+ /// @deprecated
103
+ $GLOBALS['xmlEntities'] = array(
104
+ 'amp' => '&',
105
+ 'quot' => '"',
106
+ 'lt' => '<',
107
+ 'gt' => '>',
108
+ 'apos' => "'"
109
+ );
110
+
111
+ // tables used for transcoding different charsets into us-ascii xml
112
+
113
+ $GLOBALS['xml_iso88591_Entities'] = array();
114
+ $GLOBALS['xml_iso88591_Entities']['in'] = array();
115
+ $GLOBALS['xml_iso88591_Entities']['out'] = array();
116
+ for ($i = 0; $i < 32; $i++) {
117
+ $GLOBALS['xml_iso88591_Entities']['in'][] = chr($i);
118
+ $GLOBALS['xml_iso88591_Entities']['out'][] = '&#' . $i . ';';
119
+ }
120
+ for ($i = 160; $i < 256; $i++) {
121
+ $GLOBALS['xml_iso88591_Entities']['in'][] = chr($i);
122
+ $GLOBALS['xml_iso88591_Entities']['out'][] = '&#' . $i . ';';
123
+ }
124
+
125
+ /// @todo add to iso table the characters from cp_1252 range, i.e. 128 to 159?
126
+ /// These will NOT be present in true ISO-8859-1, but will save the unwary
127
+ /// windows user from sending junk (though no luck when reciving them...)
128
+ /*
129
+ $GLOBALS['xml_cp1252_Entities']=array();
130
+ for ($i = 128; $i < 160; $i++)
131
+ {
132
+ $GLOBALS['xml_cp1252_Entities']['in'][] = chr($i);
133
+ }
134
+ $GLOBALS['xml_cp1252_Entities']['out'] = array(
135
+ '&#x20AC;', '?', '&#x201A;', '&#x0192;',
136
+ '&#x201E;', '&#x2026;', '&#x2020;', '&#x2021;',
137
+ '&#x02C6;', '&#x2030;', '&#x0160;', '&#x2039;',
138
+ '&#x0152;', '?', '&#x017D;', '?',
139
+ '?', '&#x2018;', '&#x2019;', '&#x201C;',
140
+ '&#x201D;', '&#x2022;', '&#x2013;', '&#x2014;',
141
+ '&#x02DC;', '&#x2122;', '&#x0161;', '&#x203A;',
142
+ '&#x0153;', '?', '&#x017E;', '&#x0178;'
143
+ );
144
+ */
145
+
146
+ $GLOBALS['xmlrpcerr'] = array(
147
+ 'unknown_method' => 1,
148
+ 'invalid_return' => 2,
149
+ 'incorrect_params' => 3,
150
+ 'introspect_unknown' => 4,
151
+ 'http_error' => 5,
152
+ 'no_data' => 6,
153
+ 'no_ssl' => 7,
154
+ 'curl_fail' => 8,
155
+ 'invalid_request' => 15,
156
+ 'no_curl' => 16,
157
+ 'server_error' => 17,
158
+ 'multicall_error' => 18,
159
+ 'multicall_notstruct' => 9,
160
+ 'multicall_nomethod' => 10,
161
+ 'multicall_notstring' => 11,
162
+ 'multicall_recursion' => 12,
163
+ 'multicall_noparams' => 13,
164
+ 'multicall_notarray' => 14,
165
+
166
+ 'cannot_decompress' => 103,
167
+ 'decompress_fail' => 104,
168
+ 'dechunk_fail' => 105,
169
+ 'server_cannot_decompress' => 106,
170
+ 'server_decompress_fail' => 107
171
+ );
172
+
173
+ $GLOBALS['xmlrpcstr'] = array(
174
+ 'unknown_method' => 'Unknown method',
175
+ 'invalid_return' => 'Invalid return payload: enable debugging to examine incoming payload',
176
+ 'incorrect_params' => 'Incorrect parameters passed to method',
177
+ 'introspect_unknown' => "Can't introspect: method unknown",
178
+ 'http_error' => "Didn't receive 200 OK from remote server.",
179
+ 'no_data' => 'No data received from server.',
180
+ 'no_ssl' => 'No SSL support compiled in.',
181
+ 'curl_fail' => 'CURL error',
182
+ 'invalid_request' => 'Invalid request payload',
183
+ 'no_curl' => 'No CURL support compiled in.',
184
+ 'server_error' => 'Internal server error',
185
+ 'multicall_error' => 'Received from server invalid multicall response',
186
+ 'multicall_notstruct' => 'system.multicall expected struct',
187
+ 'multicall_nomethod' => 'missing methodName',
188
+ 'multicall_notstring' => 'methodName is not a string',
189
+ 'multicall_recursion' => 'recursive system.multicall forbidden',
190
+ 'multicall_noparams' => 'missing params',
191
+ 'multicall_notarray' => 'params is not an array',
192
+
193
+ 'cannot_decompress' => 'Received from server compressed HTTP and cannot decompress',
194
+ 'decompress_fail' => 'Received from server invalid compressed HTTP',
195
+ 'dechunk_fail' => 'Received from server invalid chunked HTTP',
196
+ 'server_cannot_decompress' => 'Received from client compressed HTTP request and cannot decompress',
197
+ 'server_decompress_fail' => 'Received from client invalid compressed HTTP request'
198
+ );
199
+
200
+ // The charset encoding used by the server for received messages and
201
+ // by the client for received responses when received charset cannot be determined
202
+ // or is not supported
203
+ $GLOBALS['xmlrpc_defencoding'] = 'UTF-8';
204
+
205
+ // The encoding used internally by PHP.
206
+ // String values received as xml will be converted to this, and php strings will be converted to xml
207
+ // as if having been coded with this
208
+ $GLOBALS['xmlrpc_internalencoding'] = 'UTF-8';
209
+
210
+ // let user errors start at 800
211
+ $GLOBALS['xmlrpcerruser'] = 800;
212
+ // let XML parse errors start at 100
213
+ $GLOBALS['xmlrpcerrxml'] = 100;
214
+
215
+ // formulate backslashes for escaping regexp
216
+ // Not in use anymore since 2.0. Shall we remove it?
217
+ /// @deprecated
218
+ $GLOBALS['xmlrpc_backslash'] = chr(92) . chr(92);
219
+
220
+ // set to TRUE to enable correct decoding of <NIL/> and <EX:NIL/> values
221
+ $GLOBALS['xmlrpc_null_extension'] = false;
222
+
223
+ // set to TRUE to enable encoding of php NULL values to <EX:NIL/> instead of <NIL/>
224
+ $GLOBALS['xmlrpc_null_apache_encoding'] = false;
225
+
226
+ // used to store state during parsing
227
+ // quick explanation of components:
228
+ // ac - used to accumulate values
229
+ // isf - used to indicate a parsing fault (2) or xmlrpcresp fault (1)
230
+ // isf_reason - used for storing xmlrpcresp fault string
231
+ // lv - used to indicate "looking for a value": implements
232
+ // the logic to allow values with no types to be strings
233
+ // params - used to store parameters in method calls
234
+ // method - used to store method name
235
+ // stack - array with genealogy of xml elements names:
236
+ // used to validate nesting of xmlrpc elements
237
+ $GLOBALS['_xh'] = null;
238
+
239
+ /**
240
+ * Convert a string to the correct XML representation in a target charset
241
+ * To help correct communication of non-ascii chars inside strings, regardless
242
+ * of the charset used when sending requests, parsing them, sending responses
243
+ * and parsing responses, an option is to convert all non-ascii chars present in the message
244
+ * into their equivalent 'charset entity'. Charset entities enumerated this way
245
+ * are independent of the charset encoding used to transmit them, and all XML
246
+ * parsers are bound to understand them.
247
+ * Note that in the std case we are not sending a charset encoding mime type
248
+ * along with http headers, so we are bound by RFC 3023 to emit strict us-ascii.
249
+ *
250
+ * @todo do a bit of basic benchmarking (strtr vs. str_replace)
251
+ * @todo make usage of iconv() or recode_string() or mb_string() where available
252
+ */
253
+ function xmlrpc_encode_entitites($data, $src_encoding = '', $dest_encoding = '')
254
+ {
255
+ if ($src_encoding == '') {
256
+ // lame, but we know no better...
257
+ $src_encoding = $GLOBALS['xmlrpc_internalencoding'];
258
+ }
259
+
260
+ switch (strtoupper($src_encoding . '_' . $dest_encoding)) {
261
+ case 'ISO-8859-1_':
262
+ case 'ISO-8859-1_US-ASCII':
263
+ $escaped_data = str_replace(array('&', '"', "'", '<', '>'), array('&amp;', '&quot;', '&apos;', '&lt;', '&gt;'), $data);
264
+ $escaped_data = str_replace($GLOBALS['xml_iso88591_Entities']['in'], $GLOBALS['xml_iso88591_Entities']['out'], $escaped_data);
265
+ break;
266
+ case 'ISO-8859-1_UTF-8':
267
+ $escaped_data = str_replace(array('&', '"', "'", '<', '>'), array('&amp;', '&quot;', '&apos;', '&lt;', '&gt;'), $data);
268
+ $escaped_data = utf8_encode($escaped_data);
269
+ break;
270
+ case 'ISO-8859-1_ISO-8859-1':
271
+ case 'US-ASCII_US-ASCII':
272
+ case 'US-ASCII_UTF-8':
273
+ case 'US-ASCII_':
274
+ case 'US-ASCII_ISO-8859-1':
275
+ case 'UTF-8_UTF-8':
276
+ //case 'CP1252_CP1252':
277
+ $escaped_data = str_replace(array('&', '"', "'", '<', '>'), array('&amp;', '&quot;', '&apos;', '&lt;', '&gt;'), $data);
278
+ break;
279
+ case 'UTF-8_':
280
+ case 'UTF-8_US-ASCII':
281
+ case 'UTF-8_ISO-8859-1':
282
+ // NB: this will choke on invalid UTF-8, going most likely beyond EOF
283
+ $escaped_data = '';
284
+ // be kind to users creating string xmlrpcvals out of different php types
285
+ $data = (string)$data;
286
+ $ns = strlen($data);
287
+ for ($nn = 0; $nn < $ns; $nn++) {
288
+ $ch = $data[$nn];
289
+ $ii = ord($ch);
290
+ //1 7 0bbbbbbb (127)
291
+ if ($ii < 128) {
292
+ /// @todo shall we replace this with a (supposedly) faster str_replace?
293
+ switch ($ii) {
294
+ case 34:
295
+ $escaped_data .= '&quot;';
296
+ break;
297
+ case 38:
298
+ $escaped_data .= '&amp;';
299
+ break;
300
+ case 39:
301
+ $escaped_data .= '&apos;';
302
+ break;
303
+ case 60:
304
+ $escaped_data .= '&lt;';
305
+ break;
306
+ case 62:
307
+ $escaped_data .= '&gt;';
308
+ break;
309
+ default:
310
+ $escaped_data .= $ch;
311
+ } // switch
312
+ } //2 11 110bbbbb 10bbbbbb (2047)
313
+ else if ($ii >> 5 == 6) {
314
+ $b1 = ($ii & 31);
315
+ $ii = ord($data[$nn + 1]);
316
+ $b2 = ($ii & 63);
317
+ $ii = ($b1 * 64) + $b2;
318
+ $ent = sprintf('&#%d;', $ii);
319
+ $escaped_data .= $ent;
320
+ $nn += 1;
321
+ } //3 16 1110bbbb 10bbbbbb 10bbbbbb
322
+ else if ($ii >> 4 == 14) {
323
+ $b1 = ($ii & 15);
324
+ $ii = ord($data[$nn + 1]);
325
+ $b2 = ($ii & 63);
326
+ $ii = ord($data[$nn + 2]);
327
+ $b3 = ($ii & 63);
328
+ $ii = ((($b1 * 64) + $b2) * 64) + $b3;
329
+ $ent = sprintf('&#%d;', $ii);
330
+ $escaped_data .= $ent;
331
+ $nn += 2;
332
+ } //4 21 11110bbb 10bbbbbb 10bbbbbb 10bbbbbb
333
+ else if ($ii >> 3 == 30) {
334
+ $b1 = ($ii & 7);
335
+ $ii = ord($data[$nn + 1]);
336
+ $b2 = ($ii & 63);
337
+ $ii = ord($data[$nn + 2]);
338
+ $b3 = ($ii & 63);
339
+ $ii = ord($data[$nn + 3]);
340
+ $b4 = ($ii & 63);
341
+ $ii = ((((($b1 * 64) + $b2) * 64) + $b3) * 64) + $b4;
342
+ $ent = sprintf('&#%d;', $ii);
343
+ $escaped_data .= $ent;
344
+ $nn += 3;
345
+ }
346
+ }
347
+ break;
348
+ /*
349
+ case 'CP1252_':
350
+ case 'CP1252_US-ASCII':
351
+ $escaped_data = str_replace(array('&', '"', "'", '<', '>'), array('&amp;', '&quot;', '&apos;', '&lt;', '&gt;'), $data);
352
+ $escaped_data = str_replace($GLOBALS['xml_iso88591_Entities']['in'], $GLOBALS['xml_iso88591_Entities']['out'], $escaped_data);
353
+ $escaped_data = str_replace($GLOBALS['xml_cp1252_Entities']['in'], $GLOBALS['xml_cp1252_Entities']['out'], $escaped_data);
354
+ break;
355
+ case 'CP1252_UTF-8':
356
+ $escaped_data = str_replace(array('&', '"', "'", '<', '>'), array('&amp;', '&quot;', '&apos;', '&lt;', '&gt;'), $data);
357
+ /// @todo we could use real UTF8 chars here instead of xml entities... (note that utf_8 encode all allone will NOT convert them)
358
+ $escaped_data = str_replace($GLOBALS['xml_cp1252_Entities']['in'], $GLOBALS['xml_cp1252_Entities']['out'], $escaped_data);
359
+ $escaped_data = utf8_encode($escaped_data);
360
+ break;
361
+ case 'CP1252_ISO-8859-1':
362
+ $escaped_data = str_replace(array('&', '"', "'", '<', '>'), array('&amp;', '&quot;', '&apos;', '&lt;', '&gt;'), $data);
363
+ // we might as well replave all funky chars with a '?' here, but we are kind and leave it to the receiving application layer to decide what to do with these weird entities...
364
+ $escaped_data = str_replace($GLOBALS['xml_cp1252_Entities']['in'], $GLOBALS['xml_cp1252_Entities']['out'], $escaped_data);
365
+ break;
366
+ */
367
+ default:
368
+ $escaped_data = '';
369
+ error_log("Converting from $src_encoding to $dest_encoding: not supported...");
370
+ }
371
+ return $escaped_data;
372
+ }
373
+
374
+ /// xml parser handler function for opening element tags
375
+ function xmlrpc_se($parser, $name, $attrs, $accept_single_vals = false)
376
+ {
377
+ // if invalid xmlrpc already detected, skip all processing
378
+ if ($GLOBALS['_xh']['isf'] < 2) {
379
+ // check for correct element nesting
380
+ // top level element can only be of 2 types
381
+ /// @todo optimization creep: save this check into a bool variable, instead of using count() every time:
382
+ /// there is only a single top level element in xml anyway
383
+ if (count($GLOBALS['_xh']['stack']) == 0) {
384
+ if ($name != 'METHODRESPONSE' && $name != 'METHODCALL' && (
385
+ $name != 'VALUE' && !$accept_single_vals)
386
+ ) {
387
+ $GLOBALS['_xh']['isf'] = 2;
388
+ $GLOBALS['_xh']['isf_reason'] = 'missing top level xmlrpc element';
389
+ return;
390
+ } else {
391
+ $GLOBALS['_xh']['rt'] = strtolower($name);
392
+ $GLOBALS['_xh']['rt'] = strtolower($name);
393
+ }
394
+ } else {
395
+ // not top level element: see if parent is OK
396
+ $parent = end($GLOBALS['_xh']['stack']);
397
+ if (!array_key_exists($name, $GLOBALS['xmlrpc_valid_parents']) || !in_array($parent, $GLOBALS['xmlrpc_valid_parents'][$name])) {
398
+ $GLOBALS['_xh']['isf'] = 2;
399
+ $GLOBALS['_xh']['isf_reason'] = "xmlrpc element $name cannot be child of $parent";
400
+ return;
401
+ }
402
+ }
403
+
404
+ switch ($name) {
405
+ // optimize for speed switch cases: most common cases first
406
+ case 'VALUE':
407
+ /// @todo we could check for 2 VALUE elements inside a MEMBER or PARAM element
408
+ $GLOBALS['_xh']['vt'] = 'value'; // indicator: no value found yet
409
+ $GLOBALS['_xh']['ac'] = '';
410
+ $GLOBALS['_xh']['lv'] = 1;
411
+ $GLOBALS['_xh']['php_class'] = null;
412
+ break;
413
+ case 'I4':
414
+ case 'INT':
415
+ case 'STRING':
416
+ case 'BOOLEAN':
417
+ case 'DOUBLE':
418
+ case 'DATETIME.ISO8601':
419
+ case 'BASE64':
420
+ if ($GLOBALS['_xh']['vt'] != 'value') {
421
+ //two data elements inside a value: an error occurred!
422
+ $GLOBALS['_xh']['isf'] = 2;
423
+ $GLOBALS['_xh']['isf_reason'] = "$name element following a {$GLOBALS['_xh']['vt']} element inside a single value";
424
+ return;
425
+ }
426
+ $GLOBALS['_xh']['ac'] = ''; // reset the accumulator
427
+ break;
428
+ case 'STRUCT':
429
+ case 'ARRAY':
430
+ if ($GLOBALS['_xh']['vt'] != 'value') {
431
+ //two data elements inside a value: an error occurred!
432
+ $GLOBALS['_xh']['isf'] = 2;
433
+ $GLOBALS['_xh']['isf_reason'] = "$name element following a {$GLOBALS['_xh']['vt']} element inside a single value";
434
+ return;
435
+ }
436
+ // create an empty array to hold child values, and push it onto appropriate stack
437
+ $cur_val = array();
438
+ $cur_val['values'] = array();
439
+ $cur_val['type'] = $name;
440
+ // check for out-of-band information to rebuild php objs
441
+ // and in case it is found, save it
442
+ if (@isset($attrs['PHP_CLASS'])) {
443
+ $cur_val['php_class'] = $attrs['PHP_CLASS'];
444
+ }
445
+ $GLOBALS['_xh']['valuestack'][] = $cur_val;
446
+ $GLOBALS['_xh']['vt'] = 'data'; // be prepared for a data element next
447
+ break;
448
+ case 'DATA':
449
+ if ($GLOBALS['_xh']['vt'] != 'data') {
450
+ //two data elements inside a value: an error occurred!
451
+ $GLOBALS['_xh']['isf'] = 2;
452
+ $GLOBALS['_xh']['isf_reason'] = "found two data elements inside an array element";
453
+ return;
454
+ }
455
+ case 'METHODCALL':
456
+ case 'METHODRESPONSE':
457
+ case 'PARAMS':
458
+ // valid elements that add little to processing
459
+ break;
460
+ case 'METHODNAME':
461
+ case 'NAME':
462
+ /// @todo we could check for 2 NAME elements inside a MEMBER element
463
+ $GLOBALS['_xh']['ac'] = '';
464
+ break;
465
+ case 'FAULT':
466
+ $GLOBALS['_xh']['isf'] = 1;
467
+ break;
468
+ case 'MEMBER':
469
+ $GLOBALS['_xh']['valuestack'][count($GLOBALS['_xh']['valuestack']) - 1]['name'] = ''; // set member name to null, in case we do not find in the xml later on
470
+ //$GLOBALS['_xh']['ac']='';
471
+ // Drop trough intentionally
472
+ case 'PARAM':
473
+ // clear value type, so we can check later if no value has been passed for this param/member
474
+ $GLOBALS['_xh']['vt'] = null;
475
+ break;
476
+ case 'NIL':
477
+ break;
478
+ case 'EX:NIL':
479
+ if ($GLOBALS['xmlrpc_null_extension']) {
480
+ if ($GLOBALS['_xh']['vt'] != 'value') {
481
+ //two data elements inside a value: an error occurred!
482
+ $GLOBALS['_xh']['isf'] = 2;
483
+ $GLOBALS['_xh']['isf_reason'] = "$name element following a {$GLOBALS['_xh']['vt']} element inside a single value";
484
+ return;
485
+ }
486
+ $GLOBALS['_xh']['ac'] = ''; // reset the accumulator
487
+ break;
488
+ }
489
+ // we do not support the <NIL/> extension, so
490
+ // drop through intentionally
491
+ default:
492
+ /// INVALID ELEMENT: RAISE ISF so that it is later recognized!!!
493
+ $GLOBALS['_xh']['isf'] = 2;
494
+ $GLOBALS['_xh']['isf_reason'] = "found not-xmlrpc xml element $name";
495
+ break;
496
+ }
497
+
498
+ // Save current element name to stack, to validate nesting
499
+ $GLOBALS['_xh']['stack'][] = $name;
500
+
501
+ /// @todo optimization creep: move this inside the big switch() above
502
+ if ($name != 'VALUE') {
503
+ $GLOBALS['_xh']['lv'] = 0;
504
+ }
505
+ }
506
+ }
507
+
508
+ /// Used in decoding xml chunks that might represent single xmlrpc values
509
+ function xmlrpc_se_any($parser, $name, $attrs)
510
+ {
511
+ xmlrpc_se($parser, $name, $attrs, true);
512
+ }
513
+
514
+ /// xml parser handler function for close element tags
515
+ function xmlrpc_ee($parser, $name, $rebuild_xmlrpcvals = true)
516
+ {
517
+ if ($GLOBALS['_xh']['isf'] < 2) {
518
+ // push this element name from stack
519
+ // NB: if XML validates, correct opening/closing is guaranteed and
520
+ // we do not have to check for $name == $curr_elem.
521
+ // we also checked for proper nesting at start of elements...
522
+ $curr_elem = array_pop($GLOBALS['_xh']['stack']);
523
+
524
+ switch ($name) {
525
+ case 'VALUE':
526
+ // This if() detects if no scalar was inside <VALUE></VALUE>
527
+ if ($GLOBALS['_xh']['vt'] == 'value') {
528
+ $GLOBALS['_xh']['value'] = $GLOBALS['_xh']['ac'];
529
+ $GLOBALS['_xh']['vt'] = $GLOBALS['xmlrpcString'];
530
+ }
531
+
532
+ if ($rebuild_xmlrpcvals) {
533
+ // build the xmlrpc val out of the data received, and substitute it
534
+ $temp = new xmlrpcval($GLOBALS['_xh']['value'], $GLOBALS['_xh']['vt']);
535
+ // in case we got info about underlying php class, save it
536
+ // in the object we're rebuilding
537
+ if (isset($GLOBALS['_xh']['php_class']))
538
+ $temp->_php_class = $GLOBALS['_xh']['php_class'];
539
+ // check if we are inside an array or struct:
540
+ // if value just built is inside an array, let's move it into array on the stack
541
+ $vscount = count($GLOBALS['_xh']['valuestack']);
542
+ if ($vscount && $GLOBALS['_xh']['valuestack'][$vscount - 1]['type'] == 'ARRAY') {
543
+ $GLOBALS['_xh']['valuestack'][$vscount - 1]['values'][] = $temp;
544
+ } else {
545
+ $GLOBALS['_xh']['value'] = $temp;
546
+ }
547
+ } else {
548
+ /// @todo this needs to treat correctly php-serialized objects,
549
+ /// since std deserializing is done by php_xmlrpc_decode,
550
+ /// which we will not be calling...
551
+ if (isset($GLOBALS['_xh']['php_class'])) {
552
+ }
553
+
554
+ // check if we are inside an array or struct:
555
+ // if value just built is inside an array, let's move it into array on the stack
556
+ $vscount = count($GLOBALS['_xh']['valuestack']);
557
+ if ($vscount && $GLOBALS['_xh']['valuestack'][$vscount - 1]['type'] == 'ARRAY') {
558
+ $GLOBALS['_xh']['valuestack'][$vscount - 1]['values'][] = $GLOBALS['_xh']['value'];
559
+ }
560
+ }
561
+ break;
562
+ case 'BOOLEAN':
563
+ case 'I4':
564
+ case 'INT':
565
+ case 'STRING':
566
+ case 'DOUBLE':
567
+ case 'DATETIME.ISO8601':
568
+ case 'BASE64':
569
+ $GLOBALS['_xh']['vt'] = strtolower($name);
570
+ /// @todo: optimization creep - remove the if/elseif cycle below
571
+ /// since the case() in which we are already did that
572
+ if ($name == 'STRING') {
573
+ $GLOBALS['_xh']['value'] = $GLOBALS['_xh']['ac'];
574
+ } elseif ($name == 'DATETIME.ISO8601') {
575
+ if (!preg_match('/^[0-9]{8}T[0-9]{2}:[0-9]{2}:[0-9]{2}$/', $GLOBALS['_xh']['ac'])) {
576
+ error_log('XML-RPC: invalid value received in DATETIME: ' . $GLOBALS['_xh']['ac']);
577
+ }
578
+ $GLOBALS['_xh']['vt'] = $GLOBALS['xmlrpcDateTime'];
579
+ $GLOBALS['_xh']['value'] = $GLOBALS['_xh']['ac'];
580
+ } elseif ($name == 'BASE64') {
581
+ /// @todo check for failure of base64 decoding / catch warnings
582
+ $GLOBALS['_xh']['value'] = base64_decode($GLOBALS['_xh']['ac']);
583
+ } elseif ($name == 'BOOLEAN') {
584
+ // special case here: we translate boolean 1 or 0 into PHP
585
+ // constants true or false.
586
+ // Strings 'true' and 'false' are accepted, even though the
587
+ // spec never mentions them (see eg. Blogger api docs)
588
+ // NB: this simple checks helps a lot sanitizing input, ie no
589
+ // security problems around here
590
+ if ($GLOBALS['_xh']['ac'] == '1' || strcasecmp($GLOBALS['_xh']['ac'], 'true') == 0) {
591
+ $GLOBALS['_xh']['value'] = true;
592
+ } else {
593
+ // log if receiveing something strange, even though we set the value to false anyway
594
+ if ($GLOBALS['_xh']['ac'] != '0' && strcasecmp($GLOBALS['_xh']['ac'], 'false') != 0)
595
+ error_log('XML-RPC: invalid value received in BOOLEAN: ' . $GLOBALS['_xh']['ac']);
596
+ $GLOBALS['_xh']['value'] = false;
597
+ }
598
+ } elseif ($name == 'DOUBLE') {
599
+ // we have a DOUBLE
600
+ // we must check that only 0123456789-.<space> are characters here
601
+ // NOTE: regexp could be much stricter than this...
602
+ if (!preg_match('/^[+-eE0123456789 \t.]+$/', $GLOBALS['_xh']['ac'])) {
603
+ /// @todo: find a better way of throwing an error than this!
604
+ error_log('XML-RPC: non numeric value received in DOUBLE: ' . $GLOBALS['_xh']['ac']);
605
+ $GLOBALS['_xh']['value'] = 'ERROR_NON_NUMERIC_FOUND';
606
+ } else {
607
+ // it's ok, add it on
608
+ $GLOBALS['_xh']['value'] = (double)$GLOBALS['_xh']['ac'];
609
+ }
610
+ } else {
611
+ // we have an I4/INT
612
+ // we must check that only 0123456789-<space> are characters here
613
+ if (!preg_match('/^[+-]?[0123456789 \t]+$/', $GLOBALS['_xh']['ac'])) {
614
+ /// @todo find a better way of throwing an error than this!
615
+ error_log('XML-RPC: non numeric value received in INT: ' . $GLOBALS['_xh']['ac']);
616
+ $GLOBALS['_xh']['value'] = 'ERROR_NON_NUMERIC_FOUND';
617
+ } else {
618
+ // it's ok, add it on
619
+ $GLOBALS['_xh']['value'] = (int)$GLOBALS['_xh']['ac'];
620
+ }
621
+ }
622
+ //$GLOBALS['_xh']['ac']=''; // is this necessary?
623
+ $GLOBALS['_xh']['lv'] = 3; // indicate we've found a value
624
+ break;
625
+ case 'NAME':
626
+ $GLOBALS['_xh']['valuestack'][count($GLOBALS['_xh']['valuestack']) - 1]['name'] = $GLOBALS['_xh']['ac'];
627
+ break;
628
+ case 'MEMBER':
629
+ //$GLOBALS['_xh']['ac']=''; // is this necessary?
630
+ // add to array in the stack the last element built,
631
+ // unless no VALUE was found
632
+ if ($GLOBALS['_xh']['vt']) {
633
+ $vscount = count($GLOBALS['_xh']['valuestack']);
634
+ $GLOBALS['_xh']['valuestack'][$vscount - 1]['values'][$GLOBALS['_xh']['valuestack'][$vscount - 1]['name']] = $GLOBALS['_xh']['value'];
635
+ } else
636
+ error_log('XML-RPC: missing VALUE inside STRUCT in received xml');
637
+ break;
638
+ case 'DATA':
639
+ //$GLOBALS['_xh']['ac']=''; // is this necessary?
640
+ $GLOBALS['_xh']['vt'] = null; // reset this to check for 2 data elements in a row - even if they're empty
641
+ break;
642
+ case 'STRUCT':
643
+ case 'ARRAY':
644
+ // fetch out of stack array of values, and promote it to current value
645
+ $curr_val = array_pop($GLOBALS['_xh']['valuestack']);
646
+ $GLOBALS['_xh']['value'] = $curr_val['values'];
647
+ $GLOBALS['_xh']['vt'] = strtolower($name);
648
+ if (isset($curr_val['php_class'])) {
649
+ $GLOBALS['_xh']['php_class'] = $curr_val['php_class'];
650
+ }
651
+ break;
652
+ case 'PARAM':
653
+ // add to array of params the current value,
654
+ // unless no VALUE was found
655
+ if ($GLOBALS['_xh']['vt']) {
656
+ $GLOBALS['_xh']['params'][] = $GLOBALS['_xh']['value'];
657
+ $GLOBALS['_xh']['pt'][] = $GLOBALS['_xh']['vt'];
658
+ } else
659
+ error_log('XML-RPC: missing VALUE inside PARAM in received xml');
660
+ break;
661
+ case 'METHODNAME':
662
+ $GLOBALS['_xh']['method'] = preg_replace('/^[\n\r\t ]+/', '', $GLOBALS['_xh']['ac']);
663
+ break;
664
+ case 'NIL':
665
+ case 'EX:NIL':
666
+ if ($GLOBALS['xmlrpc_null_extension']) {
667
+ $GLOBALS['_xh']['vt'] = 'null';
668
+ $GLOBALS['_xh']['value'] = null;
669
+ $GLOBALS['_xh']['lv'] = 3;
670
+ break;
671
+ }
672
+ // drop through intentionally if nil extension not enabled
673
+ case 'PARAMS':
674
+ case 'FAULT':
675
+ case 'METHODCALL':
676
+ case 'METHORESPONSE':
677
+ break;
678
+ default:
679
+ // End of INVALID ELEMENT!
680
+ // shall we add an assert here for unreachable code???
681
+ break;
682
+ }
683
+ }
684
+ }
685
+
686
+ /// Used in decoding xmlrpc requests/responses without rebuilding xmlrpc values
687
+ function xmlrpc_ee_fast($parser, $name)
688
+ {
689
+ xmlrpc_ee($parser, $name, false);
690
+ }
691
+
692
+ /// xml parser handler function for character data
693
+ function xmlrpc_cd($parser, $data)
694
+ {
695
+ // skip processing if xml fault already detected
696
+ if ($GLOBALS['_xh']['isf'] < 2) {
697
+ // "lookforvalue==3" means that we've found an entire value
698
+ // and should discard any further character data
699
+ if ($GLOBALS['_xh']['lv'] != 3) {
700
+ // G. Giunta 2006-08-23: useless change of 'lv' from 1 to 2
701
+ //if($GLOBALS['_xh']['lv']==1)
702
+ //{
703
+ // if we've found text and we're just in a <value> then
704
+ // say we've found a value
705
+ //$GLOBALS['_xh']['lv']=2;
706
+ //}
707
+ // we always initialize the accumulator before starting parsing, anyway...
708
+ //if(!@isset($GLOBALS['_xh']['ac']))
709
+ //{
710
+ // $GLOBALS['_xh']['ac'] = '';
711
+ //}
712
+ $GLOBALS['_xh']['ac'] .= $data;
713
+ }
714
+ }
715
+ }
716
+
717
+ /// xml parser handler function for 'other stuff', ie. not char data or
718
+ /// element start/end tag. In fact it only gets called on unknown entities...
719
+ function xmlrpc_dh($parser, $data)
720
+ {
721
+ // skip processing if xml fault already detected
722
+ if ($GLOBALS['_xh']['isf'] < 2) {
723
+ if (substr($data, 0, 1) == '&' && substr($data, -1, 1) == ';') {
724
+ // G. Giunta 2006-08-25: useless change of 'lv' from 1 to 2
725
+ //if($GLOBALS['_xh']['lv']==1)
726
+ //{
727
+ // $GLOBALS['_xh']['lv']=2;
728
+ //}
729
+ $GLOBALS['_xh']['ac'] .= $data;
730
+ }
731
+ }
732
+ return true;
733
+ }
734
+
735
+ class xmlrpc_client
736
+ {
737
+ var $path;
738
+ var $server;
739
+ var $port = 0;
740
+ var $method = 'http';
741
+ var $errno;
742
+ var $errstr;
743
+ var $debug = 0;
744
+ var $username = '';
745
+ var $password = '';
746
+ var $authtype = 1;
747
+ var $cert = '';
748
+ var $certpass = '';
749
+ var $cacert = '';
750
+ var $cacertdir = '';
751
+ var $key = '';
752
+ var $keypass = '';
753
+ var $verifypeer = true;
754
+ var $verifyhost = 2;
755
+ var $no_multicall = false;
756
+ var $proxy = '';
757
+ var $proxyport = 0;
758
+ var $proxy_user = '';
759
+ var $proxy_pass = '';
760
+ var $proxy_authtype = 1;
761
+ var $cookies = array();
762
+ var $extracurlopts = array();
763
+
764
+ /**
765
+ * List of http compression methods accepted by the client for responses.
766
+ * NB: PHP supports deflate, gzip compressions out of the box if compiled w. zlib
767
+ *
768
+ * NNB: you can set it to any non-empty array for HTTP11 and HTTPS, since
769
+ * in those cases it will be up to CURL to decide the compression methods
770
+ * it supports. You might check for the presence of 'zlib' in the output of
771
+ * curl_version() to determine wheter compression is supported or not
772
+ */
773
+ var $accepted_compression = array();
774
+ /**
775
+ * Name of compression scheme to be used for sending requests.
776
+ * Either null, gzip or deflate
777
+ */
778
+ var $request_compression = '';
779
+ /**
780
+ * CURL handle: used for keep-alive connections (PHP 4.3.8 up, see:
781
+ * http://curl.haxx.se/docs/faq.html#7.3)
782
+ */
783
+ var $xmlrpc_curl_handle = null;
784
+ /// Wheter to use persistent connections for http 1.1 and https
785
+ var $keepalive = false;
786
+ /// Charset encodings that can be decoded without problems by the client
787
+ var $accepted_charset_encodings = array();
788
+ /// Charset encoding to be used in serializing request. NULL = use ASCII
789
+ var $request_charset_encoding = '';
790
+ /**
791
+ * Decides the content of xmlrpcresp objects returned by calls to send()
792
+ * valid strings are 'xmlrpcvals', 'phpvals' or 'xml'
793
+ */
794
+ var $return_type = 'xmlrpcvals';
795
+ /**
796
+ * Sent to servers in http headers
797
+ */
798
+ var $user_agent;
799
+
800
+ /**
801
+ * @param string $path either the complete server URL or the PATH part of the xmlrc server URL, e.g. /xmlrpc/server.php
802
+ * @param string $server the server name / ip address
803
+ * @param integer $port the port the server is listening on, defaults to 80 or 443 depending on protocol used
804
+ * @param string $method the http protocol variant: defaults to 'http', 'https' and 'http11' can be used if CURL is installed
805
+ */
806
+ function xmlrpc_client($path, $server = '', $port = '', $method = '')
807
+ {
808
+ // allow user to specify all params in $path
809
+ if ($server == '' and $port == '' and $method == '') {
810
+ $parts = parse_url($path);
811
+ $server = $parts['host'];
812
+ $path = isset($parts['path']) ? $parts['path'] : '';
813
+ if (isset($parts['query'])) {
814
+ $path .= '?' . $parts['query'];
815
+ }
816
+ if (isset($parts['fragment'])) {
817
+ $path .= '#' . $parts['fragment'];
818
+ }
819
+ if (isset($parts['port'])) {
820
+ $port = $parts['port'];
821
+ }
822
+ if (isset($parts['scheme'])) {
823
+ $method = $parts['scheme'];
824
+ }
825
+ if (isset($parts['user'])) {
826
+ $this->username = $parts['user'];
827
+ }
828
+ if (isset($parts['pass'])) {
829
+ $this->password = $parts['pass'];
830
+ }
831
+ }
832
+ if ($path == '' || $path[0] != '/') {
833
+ $this->path = '/' . $path;
834
+ } else {
835
+ $this->path = $path;
836
+ }
837
+ $this->server = $server;
838
+ if ($port != '') {
839
+ $this->port = $port;
840
+ }
841
+ if ($method != '') {
842
+ $this->method = $method;
843
+ }
844
+
845
+ // if ZLIB is enabled, let the client by default accept compressed responses
846
+ if (function_exists('gzinflate') || (
847
+ function_exists('curl_init') && (($info = curl_version()) &&
848
+ ((is_string($info) && strpos($info, 'zlib') !== null) || isset($info['libz_version'])))
849
+ )
850
+ ) {
851
+ $this->accepted_compression = array('gzip', 'deflate');
852
+ }
853
+
854
+ // keepalives: enabled by default
855
+ $this->keepalive = true;
856
+
857
+ // by default the xml parser can support these 3 charset encodings
858
+ $this->accepted_charset_encodings = array('UTF-8', 'ISO-8859-1', 'US-ASCII');
859
+
860
+ // initialize user_agent string
861
+ $this->user_agent = $GLOBALS['xmlrpcName'] . ' ' . $GLOBALS['xmlrpcVersion'];
862
+ }
863
+
864
+ /**
865
+ * Enables/disables the echoing to screen of the xmlrpc responses received
866
+ * @param integer $debug values 0, 1 and 2 are supported (2 = echo sent msg too, before received response)
867
+ * @access public
868
+ */
869
+ function setDebug($in)
870
+ {
871
+ $this->debug = $in;
872
+ }
873
+
874
+ /**
875
+ * Add some http BASIC AUTH credentials, used by the client to authenticate
876
+ * @param string $u username
877
+ * @param string $p password
878
+ * @param integer $t auth type. See curl_setopt man page for supported auth types. Defaults to CURLAUTH_BASIC (basic auth)
879
+ * @access public
880
+ */
881
+ function setCredentials($u, $p, $t = 1)
882
+ {
883
+ $this->username = $u;
884
+ $this->password = $p;
885
+ $this->authtype = $t;
886
+ }
887
+
888
+ /**
889
+ * Add a client-side https certificate
890
+ * @param string $cert
891
+ * @param string $certpass
892
+ * @access public
893
+ */
894
+ function setCertificate($cert, $certpass)
895
+ {
896
+ $this->cert = $cert;
897
+ $this->certpass = $certpass;
898
+ }
899
+
900
+ /**
901
+ * Add a CA certificate to verify server with (see man page about
902
+ * CURLOPT_CAINFO for more details
903
+ * @param string $cacert certificate file name (or dir holding certificates)
904
+ * @param bool $is_dir set to true to indicate cacert is a dir. defaults to false
905
+ * @access public
906
+ */
907
+ function setCaCertificate($cacert, $is_dir = false)
908
+ {
909
+ if ($is_dir) {
910
+ $this->cacertdir = $cacert;
911
+ } else {
912
+ $this->cacert = $cacert;
913
+ }
914
+ }
915
+
916
+ /**
917
+ * Set attributes for SSL communication: private SSL key
918
+ * NB: does not work in older php/curl installs
919
+ * Thanks to Daniel Convissor
920
+ * @param string $key The name of a file containing a private SSL key
921
+ * @param string $keypass The secret password needed to use the private SSL key
922
+ * @access public
923
+ */
924
+ function setKey($key, $keypass)
925
+ {
926
+ $this->key = $key;
927
+ $this->keypass = $keypass;
928
+ }
929
+
930
+ /**
931
+ * Set attributes for SSL communication: verify server certificate
932
+ * @param bool $i enable/disable verification of peer certificate
933
+ * @access public
934
+ */
935
+ function setSSLVerifyPeer($i)
936
+ {
937
+ $this->verifypeer = $i;
938
+ }
939
+
940
+ /**
941
+ * Set attributes for SSL communication: verify match of server cert w. hostname
942
+ * @param int $i
943
+ * @access public
944
+ */
945
+ function setSSLVerifyHost($i)
946
+ {
947
+ $this->verifyhost = $i;
948
+ }
949
+
950
+ /**
951
+ * Set proxy info
952
+ * @param string $proxyhost
953
+ * @param string $proxyport Defaults to 8080 for HTTP and 443 for HTTPS
954
+ * @param string $proxyusername Leave blank if proxy has public access
955
+ * @param string $proxypassword Leave blank if proxy has public access
956
+ * @param int $proxyauthtype set to constant CURLAUTH_NTLM to use NTLM auth with proxy
957
+ * @access public
958
+ */
959
+ function setProxy($proxyhost, $proxyport, $proxyusername = '', $proxypassword = '', $proxyauthtype = 1)
960
+ {
961
+ $this->proxy = $proxyhost;
962
+ $this->proxyport = $proxyport;
963
+ $this->proxy_user = $proxyusername;
964
+ $this->proxy_pass = $proxypassword;
965
+ $this->proxy_authtype = $proxyauthtype;
966
+ }
967
+
968
+ /**
969
+ * Enables/disables reception of compressed xmlrpc responses.
970
+ * Note that enabling reception of compressed responses merely adds some standard
971
+ * http headers to xmlrpc requests. It is up to the xmlrpc server to return
972
+ * compressed responses when receiving such requests.
973
+ * @param string $compmethod either 'gzip', 'deflate', 'any' or ''
974
+ * @access public
975
+ */
976
+ function setAcceptedCompression($compmethod)
977
+ {
978
+ if ($compmethod == 'any')
979
+ $this->accepted_compression = array('gzip', 'deflate');
980
+ else
981
+ $this->accepted_compression = array($compmethod);
982
+ }
983
+
984
+ /**
985
+ * Enables/disables http compression of xmlrpc request.
986
+ * Take care when sending compressed requests: servers might not support them
987
+ * (and automatic fallback to uncompressed requests is not yet implemented)
988
+ * @param string $compmethod either 'gzip', 'deflate' or ''
989
+ * @access public
990
+ */
991
+ function setRequestCompression($compmethod)
992
+ {
993
+ $this->request_compression = $compmethod;
994
+ }
995
+
996
+ /**
997
+ * Adds a cookie to list of cookies that will be sent to server.
998
+ * NB: setting any param but name and value will turn the cookie into a 'version 1' cookie:
999
+ * do not do it unless you know what you are doing
1000
+ * @param string $name
1001
+ * @param string $value
1002
+ * @param string $path
1003
+ * @param string $domain
1004
+ * @param int $port
1005
+ * @access public
1006
+ *
1007
+ * @todo check correctness of urlencoding cookie value (copied from php way of doing it...)
1008
+ */
1009
+ function setCookie($name, $value = '', $path = '', $domain = '', $port = null)
1010
+ {
1011
+ $this->cookies[$name]['value'] = urlencode($value);
1012
+ if ($path || $domain || $port) {
1013
+ $this->cookies[$name]['path'] = $path;
1014
+ $this->cookies[$name]['domain'] = $domain;
1015
+ $this->cookies[$name]['port'] = $port;
1016
+ $this->cookies[$name]['version'] = 1;
1017
+ } else {
1018
+ $this->cookies[$name]['version'] = 0;
1019
+ }
1020
+ }
1021
+
1022
+ /**
1023
+ * Directly set cURL options, for extra flexibility
1024
+ * It allows eg. to bind client to a specific IP interface / address
1025
+ * @param $options array
1026
+ */
1027
+ function SetCurlOptions($options)
1028
+ {
1029
+ $this->extracurlopts = $options;
1030
+ }
1031
+
1032
+ /**
1033
+ * Set user-agent string that will be used by this client instance
1034
+ * in http headers sent to the server
1035
+ */
1036
+ function SetUserAgent($agentstring)
1037
+ {
1038
+ $this->user_agent = $agentstring;
1039
+ }
1040
+
1041
+ /**
1042
+ * Send an xmlrpc request
1043
+ * @param mixed $msg The message object, or an array of messages for using multicall, or the complete xml representation of a request
1044
+ * @param integer $timeout Connection timeout, in seconds, If unspecified, a platform specific timeout will apply
1045
+ * @param string $method if left unspecified, the http protocol chosen during creation of the object will be used
1046
+ * @return xmlrpcresp
1047
+ * @access public
1048
+ */
1049
+ function& send($msg, $timeout = 0, $method = '')
1050
+ {
1051
+ // if user deos not specify http protocol, use native method of this client
1052
+ // (i.e. method set during call to constructor)
1053
+ if ($method == '') {
1054
+ $method = $this->method;
1055
+ }
1056
+
1057
+ if (is_array($msg)) {
1058
+ // $msg is an array of xmlrpcmsg's
1059
+ $r = $this->multicall($msg, $timeout, $method);
1060
+ return $r;
1061
+ } elseif (is_string($msg)) {
1062
+ $n = new xmlrpcmsg('');
1063
+ $n->payload = $msg;
1064
+ $msg = $n;
1065
+ }
1066
+
1067
+ // where msg is an xmlrpcmsg
1068
+ $msg->debug = $this->debug;
1069
+
1070
+ if ($method == 'https') {
1071
+ $r =& $this->sendPayloadHTTPS(
1072
+ $msg,
1073
+ $this->server,
1074
+ $this->port,
1075
+ $timeout,
1076
+ $this->username,
1077
+ $this->password,
1078
+ $this->authtype,
1079
+ $this->cert,
1080
+ $this->certpass,
1081
+ $this->cacert,
1082
+ $this->cacertdir,
1083
+ $this->proxy,
1084
+ $this->proxyport,
1085
+ $this->proxy_user,
1086
+ $this->proxy_pass,
1087
+ $this->proxy_authtype,
1088
+ $this->keepalive,
1089
+ $this->key,
1090
+ $this->keypass
1091
+ );
1092
+ } elseif ($method == 'http11') {
1093
+ $r =& $this->sendPayloadCURL(
1094
+ $msg,
1095
+ $this->server,
1096
+ $this->port,
1097
+ $timeout,
1098
+ $this->username,
1099
+ $this->password,
1100
+ $this->authtype,
1101
+ null,
1102
+ null,
1103
+ null,
1104
+ null,
1105
+ $this->proxy,
1106
+ $this->proxyport,
1107
+ $this->proxy_user,
1108
+ $this->proxy_pass,
1109
+ $this->proxy_authtype,
1110
+ 'http',
1111
+ $this->keepalive
1112
+ );
1113
+ } else {
1114
+ $r =& $this->sendPayloadHTTP10(
1115
+ $msg,
1116
+ $this->server,
1117
+ $this->port,
1118
+ $timeout,
1119
+ $this->username,
1120
+ $this->password,
1121
+ $this->authtype,
1122
+ $this->proxy,
1123
+ $this->proxyport,
1124
+ $this->proxy_user,
1125
+ $this->proxy_pass,
1126
+ $this->proxy_authtype
1127
+ );
1128
+ }
1129
+
1130
+ return $r;
1131
+ }
1132
+
1133
+ /**
1134
+ * @access private
1135
+ */
1136
+ function &sendPayloadHTTP10($msg, $server, $port, $timeout = 0,
1137
+ $username = '', $password = '', $authtype = 1, $proxyhost = '',
1138
+ $proxyport = 0, $proxyusername = '', $proxypassword = '', $proxyauthtype = 1)
1139
+ {
1140
+ if ($port == 0) {
1141
+ $port = 80;
1142
+ }
1143
+
1144
+ // Only create the payload if it was not created previously
1145
+ if (empty($msg->payload)) {
1146
+ $msg->createPayload($this->request_charset_encoding);
1147
+ }
1148
+
1149
+ $payload = $msg->payload;
1150
+ // Deflate request body and set appropriate request headers
1151
+ if (function_exists('gzdeflate') && ($this->request_compression == 'gzip' || $this->request_compression == 'deflate')) {
1152
+ if ($this->request_compression == 'gzip') {
1153
+ $a = @gzencode($payload);
1154
+ if ($a) {
1155
+ $payload = $a;
1156
+ $encoding_hdr = "Content-Encoding: gzip\r\n";
1157
+ }
1158
+ } else {
1159
+ $a = @gzcompress($payload);
1160
+ if ($a) {
1161
+ $payload = $a;
1162
+ $encoding_hdr = "Content-Encoding: deflate\r\n";
1163
+ }
1164
+ }
1165
+ } else {
1166
+ $encoding_hdr = '';
1167
+ }
1168
+
1169
+ // thanks to Grant Rauscher <grant7@firstworld.net> for this
1170
+ $credentials = '';
1171
+ if ($username != '') {
1172
+ $credentials = 'Authorization: Basic ' . base64_encode($username . ':' . $password) . "\r\n";
1173
+ if ($authtype != 1) {
1174
+ error_log('XML-RPC: ' . __METHOD__ . ': warning. Only Basic auth is supported with HTTP 1.0');
1175
+ }
1176
+ }
1177
+
1178
+ $accepted_encoding = '';
1179
+ if (is_array($this->accepted_compression) && count($this->accepted_compression)) {
1180
+ $accepted_encoding = 'Accept-Encoding: ' . implode(', ', $this->accepted_compression) . "\r\n";
1181
+ }
1182
+
1183
+ $proxy_credentials = '';
1184
+ if ($proxyhost) {
1185
+ if ($proxyport == 0) {
1186
+ $proxyport = 8080;
1187
+ }
1188
+ $connectserver = $proxyhost;
1189
+ $connectport = $proxyport;
1190
+ $uri = 'http://' . $server . ':' . $port . $this->path;
1191
+ if ($proxyusername != '') {
1192
+ if ($proxyauthtype != 1) {
1193
+ error_log('XML-RPC: ' . __METHOD__ . ': warning. Only Basic auth to proxy is supported with HTTP 1.0');
1194
+ }
1195
+ $proxy_credentials = 'Proxy-Authorization: Basic ' . base64_encode($proxyusername . ':' . $proxypassword) . "\r\n";
1196
+ }
1197
+ } else {
1198
+ $connectserver = $server;
1199
+ $connectport = $port;
1200
+ $uri = $this->path;
1201
+ }
1202
+
1203
+ // Cookie generation, as per rfc2965 (version 1 cookies) or
1204
+ // netscape's rules (version 0 cookies)
1205
+ $cookieheader = '';
1206
+ if (count($this->cookies)) {
1207
+ $version = '';
1208
+ foreach ($this->cookies as $name => $cookie) {
1209
+ if ($cookie['version']) {
1210
+ $version = ' $Version="' . $cookie['version'] . '";';
1211
+ $cookieheader .= ' ' . $name . '="' . $cookie['value'] . '";';
1212
+ if ($cookie['path'])
1213
+ $cookieheader .= ' $Path="' . $cookie['path'] . '";';
1214
+ if ($cookie['domain'])
1215
+ $cookieheader .= ' $Domain="' . $cookie['domain'] . '";';
1216
+ if ($cookie['port'])
1217
+ $cookieheader .= ' $Port="' . $cookie['port'] . '";';
1218
+ } else {
1219
+ $cookieheader .= ' ' . $name . '=' . $cookie['value'] . ";";
1220
+ }
1221
+ }
1222
+ $cookieheader = 'Cookie:' . $version . substr($cookieheader, 0, -1) . "\r\n";
1223
+ }
1224
+
1225
+ $op = 'POST ' . $uri . " HTTP/1.0\r\n" .
1226
+ 'User-Agent: ' . $this->user_agent . "\r\n" .
1227
+ 'Host: ' . $server . ':' . $port . "\r\n" .
1228
+ $credentials .
1229
+ $proxy_credentials .
1230
+ $accepted_encoding .
1231
+ $encoding_hdr .
1232
+ 'Accept-Charset: ' . implode(',', $this->accepted_charset_encodings) . "\r\n" .
1233
+ $cookieheader .
1234
+ 'Content-Type: ' . $msg->content_type . "\r\nContent-Length: " .
1235
+ strlen($payload) . "\r\n\r\n" .
1236
+ $payload;
1237
+
1238
+ if ($this->debug > 1) {
1239
+ print "<PRE>\n---SENDING---\n" . htmlentities($op) . "\n---END---\n</PRE>";
1240
+ // let the client see this now in case http times out...
1241
+ flush();
1242
+ }
1243
+
1244
+ if ($timeout > 0) {
1245
+ $fp = @fsockopen($connectserver, $connectport, $this->errno, $this->errstr, $timeout);
1246
+ } else {
1247
+ $fp = @fsockopen($connectserver, $connectport, $this->errno, $this->errstr);
1248
+ }
1249
+ if ($fp) {
1250
+ if ($timeout > 0 && function_exists('stream_set_timeout')) {
1251
+ stream_set_timeout($fp, $timeout);
1252
+ }
1253
+ } else {
1254
+ $this->errstr = 'Connect error: ' . $this->errstr;
1255
+ $r = new xmlrpcresp(0, $GLOBALS['xmlrpcerr']['http_error'], $this->errstr . ' (' . $this->errno . ')');
1256
+ return $r;
1257
+ }
1258
+
1259
+ if (!fputs($fp, $op, strlen($op))) {
1260
+ fclose($fp);
1261
+ $this->errstr = 'Write error';
1262
+ $r = new xmlrpcresp(0, $GLOBALS['xmlrpcerr']['http_error'], $this->errstr);
1263
+ return $r;
1264
+ } else {
1265
+ // reset errno and errstr on succesful socket connection
1266
+ $this->errstr = '';
1267
+ }
1268
+ // G. Giunta 2005/10/24: close socket before parsing.
1269
+ // should yeld slightly better execution times, and make easier recursive calls (e.g. to follow http redirects)
1270
+ $ipd = '';
1271
+ do {
1272
+ // shall we check for $data === FALSE?
1273
+ // as per the manual, it signals an error
1274
+ $ipd .= fread($fp, 32768);
1275
+ } while (!feof($fp));
1276
+ fclose($fp);
1277
+ $r =& $msg->parseResponse($ipd, false, $this->return_type);
1278
+ return $r;
1279
+
1280
+ }
1281
+
1282
+ /**
1283
+ * @access private
1284
+ */
1285
+ function &sendPayloadHTTPS($msg, $server, $port, $timeout = 0, $username = '',
1286
+ $password = '', $authtype = 1, $cert = '', $certpass = '', $cacert = '', $cacertdir = '',
1287
+ $proxyhost = '', $proxyport = 0, $proxyusername = '', $proxypassword = '', $proxyauthtype = 1,
1288
+ $keepalive = false, $key = '', $keypass = '')
1289
+ {
1290
+ $r =& $this->sendPayloadCURL($msg, $server, $port, $timeout, $username,
1291
+ $password, $authtype, $cert, $certpass, $cacert, $cacertdir, $proxyhost, $proxyport,
1292
+ $proxyusername, $proxypassword, $proxyauthtype, 'https', $keepalive, $key, $keypass);
1293
+ return $r;
1294
+ }
1295
+
1296
+ /**
1297
+ * Contributed by Justin Miller <justin@voxel.net>
1298
+ * Requires curl to be built into PHP
1299
+ * NB: CURL versions before 7.11.10 cannot use proxy to talk to https servers!
1300
+ * @access private
1301
+ */
1302
+ function &sendPayloadCURL($msg, $server, $port, $timeout = 0, $username = '',
1303
+ $password = '', $authtype = 1, $cert = '', $certpass = '', $cacert = '', $cacertdir = '',
1304
+ $proxyhost = '', $proxyport = 0, $proxyusername = '', $proxypassword = '', $proxyauthtype = 1, $method = 'https',
1305
+ $keepalive = false, $key = '', $keypass = '')
1306
+ {
1307
+ if (!function_exists('curl_init')) {
1308
+ $this->errstr = 'CURL unavailable on this install';
1309
+ $r = new xmlrpcresp(0, $GLOBALS['xmlrpcerr']['no_curl'], $GLOBALS['xmlrpcstr']['no_curl']);
1310
+ return $r;
1311
+ }
1312
+ if ($method == 'https') {
1313
+ if (($info = curl_version()) &&
1314
+ ((is_string($info) && strpos($info, 'OpenSSL') === null) || (is_array($info) && !isset($info['ssl_version'])))
1315
+ ) {
1316
+ $this->errstr = 'SSL unavailable on this install';
1317
+ $r = new xmlrpcresp(0, $GLOBALS['xmlrpcerr']['no_ssl'], $GLOBALS['xmlrpcstr']['no_ssl']);
1318
+ return $r;
1319
+ }
1320
+ }
1321
+
1322
+ if ($port == 0) {
1323
+ if ($method == 'http') {
1324
+ $port = 80;
1325
+ } else {
1326
+ $port = 443;
1327
+ }
1328
+ }
1329
+
1330
+ // Only create the payload if it was not created previously
1331
+ if (empty($msg->payload)) {
1332
+ $msg->createPayload($this->request_charset_encoding);
1333
+ }
1334
+
1335
+ // Deflate request body and set appropriate request headers
1336
+ $payload = $msg->payload;
1337
+ if (function_exists('gzdeflate') && ($this->request_compression == 'gzip' || $this->request_compression == 'deflate')) {
1338
+ if ($this->request_compression == 'gzip') {
1339
+ $a = @gzencode($payload);
1340
+ if ($a) {
1341
+ $payload = $a;
1342
+ $encoding_hdr = 'Content-Encoding: gzip';
1343
+ }
1344
+ } else {
1345
+ $a = @gzcompress($payload);
1346
+ if ($a) {
1347
+ $payload = $a;
1348
+ $encoding_hdr = 'Content-Encoding: deflate';
1349
+ }
1350
+ }
1351
+ } else {
1352
+ $encoding_hdr = '';
1353
+ }
1354
+
1355
+ if ($this->debug > 1) {
1356
+ print "<PRE>\n---SENDING---\n" . htmlentities($payload) . "\n---END---\n</PRE>";
1357
+ // let the client see this now in case http times out...
1358
+ flush();
1359
+ }
1360
+
1361
+ if (!$keepalive || !$this->xmlrpc_curl_handle) {
1362
+ $curl = curl_init($method . '://' . $server . ':' . $port . $this->path);
1363
+ if ($keepalive) {
1364
+ $this->xmlrpc_curl_handle = $curl;
1365
+ }
1366
+ } else {
1367
+ $curl = $this->xmlrpc_curl_handle;
1368
+ }
1369
+
1370
+ // results into variable
1371
+ curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
1372
+
1373
+ if ($this->debug) {
1374
+ curl_setopt($curl, CURLOPT_VERBOSE, 1);
1375
+ }
1376
+ curl_setopt($curl, CURLOPT_USERAGENT, $this->user_agent);
1377
+ // required for XMLRPC: post the data
1378
+ curl_setopt($curl, CURLOPT_POST, 1);
1379
+ // the data
1380
+ curl_setopt($curl, CURLOPT_POSTFIELDS, $payload);
1381
+
1382
+ // return the header too
1383
+ curl_setopt($curl, CURLOPT_HEADER, 1);
1384
+
1385
+ // will only work with PHP >= 5.0
1386
+ // NB: if we set an empty string, CURL will add http header indicating
1387
+ // ALL methods it is supporting. This is possibly a better option than
1388
+ // letting the user tell what curl can / cannot do...
1389
+ if (is_array($this->accepted_compression) && count($this->accepted_compression)) {
1390
+ //curl_setopt($curl, CURLOPT_ENCODING, implode(',', $this->accepted_compression));
1391
+ // empty string means 'any supported by CURL' (shall we catch errors in case CURLOPT_SSLKEY undefined ?)
1392
+ if (count($this->accepted_compression) == 1) {
1393
+ curl_setopt($curl, CURLOPT_ENCODING, $this->accepted_compression[0]);
1394
+ } else
1395
+ curl_setopt($curl, CURLOPT_ENCODING, '');
1396
+ }
1397
+ // extra headers
1398
+ $headers = array('Content-Type: ' . $msg->content_type, 'Accept-Charset: ' . implode(',', $this->accepted_charset_encodings));
1399
+ // if no keepalive is wanted, let the server know it in advance
1400
+ if (!$keepalive) {
1401
+ $headers[] = 'Connection: close';
1402
+ }
1403
+ // request compression header
1404
+ if ($encoding_hdr) {
1405
+ $headers[] = $encoding_hdr;
1406
+ }
1407
+
1408
+ curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
1409
+ // timeout is borked
1410
+ if ($timeout) {
1411
+ curl_setopt($curl, CURLOPT_TIMEOUT, $timeout == 1 ? 1 : $timeout - 1);
1412
+ }
1413
+
1414
+ if ($username && $password) {
1415
+ curl_setopt($curl, CURLOPT_USERPWD, $username . ':' . $password);
1416
+ if (defined('CURLOPT_HTTPAUTH')) {
1417
+ curl_setopt($curl, CURLOPT_HTTPAUTH, $authtype);
1418
+ } else if ($authtype != 1) {
1419
+ error_log('XML-RPC: ' . __METHOD__ . ': warning. Only Basic auth is supported by the current PHP/curl install');
1420
+ }
1421
+ }
1422
+
1423
+ if ($method == 'https') {
1424
+ // set cert file
1425
+ if ($cert) {
1426
+ curl_setopt($curl, CURLOPT_SSLCERT, $cert);
1427
+ }
1428
+ // set cert password
1429
+ if ($certpass) {
1430
+ curl_setopt($curl, CURLOPT_SSLCERTPASSWD, $certpass);
1431
+ }
1432
+ // whether to verify remote host's cert
1433
+ curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, $this->verifypeer);
1434
+ // set ca certificates file/dir
1435
+ if ($cacert) {
1436
+ curl_setopt($curl, CURLOPT_CAINFO, $cacert);
1437
+ }
1438
+ if ($cacertdir) {
1439
+ curl_setopt($curl, CURLOPT_CAPATH, $cacertdir);
1440
+ }
1441
+ // set key file (shall we catch errors in case CURLOPT_SSLKEY undefined ?)
1442
+ if ($key) {
1443
+ curl_setopt($curl, CURLOPT_SSLKEY, $key);
1444
+ }
1445
+ // set key password (shall we catch errors in case CURLOPT_SSLKEY undefined ?)
1446
+ if ($keypass) {
1447
+ curl_setopt($curl, CURLOPT_SSLKEYPASSWD, $keypass);
1448
+ }
1449
+ // whether to verify cert's common name (CN); 0 for no, 1 to verify that it exists, and 2 to verify that it matches the hostname used
1450
+ curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, $this->verifyhost);
1451
+ }
1452
+
1453
+ // proxy info
1454
+ if ($proxyhost) {
1455
+ if ($proxyport == 0) {
1456
+ $proxyport = 8080; // NB: even for HTTPS, local connection is on port 8080
1457
+ }
1458
+ curl_setopt($curl, CURLOPT_PROXY, $proxyhost . ':' . $proxyport);
1459
+ //curl_setopt($curl, CURLOPT_PROXYPORT,$proxyport);
1460
+ if ($proxyusername) {
1461
+ curl_setopt($curl, CURLOPT_PROXYUSERPWD, $proxyusername . ':' . $proxypassword);
1462
+ if (defined('CURLOPT_PROXYAUTH')) {
1463
+ curl_setopt($curl, CURLOPT_PROXYAUTH, $proxyauthtype);
1464
+ } else if ($proxyauthtype != 1) {
1465
+ error_log('XML-RPC: ' . __METHOD__ . ': warning. Only Basic auth to proxy is supported by the current PHP/curl install');
1466
+ }
1467
+ }
1468
+ }
1469
+
1470
+ // NB: should we build cookie http headers by hand rather than let CURL do it?
1471
+ // the following code does not honour 'expires', 'path' and 'domain' cookie attributes
1472
+ // set to client obj the the user...
1473
+ if (count($this->cookies)) {
1474
+ $cookieheader = '';
1475
+ foreach ($this->cookies as $name => $cookie) {
1476
+ $cookieheader .= $name . '=' . $cookie['value'] . '; ';
1477
+ }
1478
+ curl_setopt($curl, CURLOPT_COOKIE, substr($cookieheader, 0, -2));
1479
+ }
1480
+
1481
+ foreach ($this->extracurlopts as $opt => $val) {
1482
+ curl_setopt($curl, $opt, $val);
1483
+ }
1484
+
1485
+ $result = curl_exec($curl);
1486
+
1487
+ if ($this->debug > 1) {
1488
+ print "<PRE>\n---CURL INFO---\n";
1489
+ foreach (curl_getinfo($curl) as $name => $val)
1490
+ print $name . ': ' . htmlentities($val) . "\n";
1491
+ print "---END---\n</PRE>";
1492
+ }
1493
+
1494
+ if (!$result) /// @todo we should use a better check here - what if we get back '' or '0'?
1495
+ {
1496
+ $this->errstr = 'no response';
1497
+ $resp = new xmlrpcresp(0, $GLOBALS['xmlrpcerr']['curl_fail'], $GLOBALS['xmlrpcstr']['curl_fail'] . ': ' . curl_error($curl));
1498
+ curl_close($curl);
1499
+ if ($keepalive) {
1500
+ $this->xmlrpc_curl_handle = null;
1501
+ }
1502
+ } else {
1503
+ if (!$keepalive) {
1504
+ curl_close($curl);
1505
+ }
1506
+ $resp =& $msg->parseResponse($result, true, $this->return_type);
1507
+ }
1508
+ return $resp;
1509
+ }
1510
+
1511
+ /**
1512
+ * Send an array of request messages and return an array of responses.
1513
+ * Unless $this->no_multicall has been set to true, it will try first
1514
+ * to use one single xmlrpc call to server method system.multicall, and
1515
+ * revert to sending many successive calls in case of failure.
1516
+ * This failure is also stored in $this->no_multicall for subsequent calls.
1517
+ * Unfortunately, there is no server error code universally used to denote
1518
+ * the fact that multicall is unsupported, so there is no way to reliably
1519
+ * distinguish between that and a temporary failure.
1520
+ * If you are sure that server supports multicall and do not want to
1521
+ * fallback to using many single calls, set the fourth parameter to FALSE.
1522
+ *
1523
+ * NB: trying to shoehorn extra functionality into existing syntax has resulted
1524
+ * in pretty much convoluted code...
1525
+ *
1526
+ * @param array $msgs an array of xmlrpcmsg objects
1527
+ * @param integer $timeout connection timeout (in seconds)
1528
+ * @param string $method the http protocol variant to be used
1529
+ * @param boolean fallback When true, upon receiveing an error during multicall, multiple single calls will be attempted
1530
+ * @return array
1531
+ * @access public
1532
+ */
1533
+ function multicall($msgs, $timeout = 0, $method = '', $fallback = true)
1534
+ {
1535
+ if ($method == '') {
1536
+ $method = $this->method;
1537
+ }
1538
+ if (!$this->no_multicall) {
1539
+ $results = $this->_try_multicall($msgs, $timeout, $method);
1540
+ if (is_array($results)) {
1541
+ // System.multicall succeeded
1542
+ return $results;
1543
+ } else {
1544
+ // either system.multicall is unsupported by server,
1545
+ // or call failed for some other reason.
1546
+ if ($fallback) {
1547
+ // Don't try it next time...
1548
+ $this->no_multicall = true;
1549
+ } else {
1550
+ if (is_a($results, 'xmlrpcresp')) {
1551
+ $result = $results;
1552
+ } else {
1553
+ $result = new xmlrpcresp(0, $GLOBALS['xmlrpcerr']['multicall_error'], $GLOBALS['xmlrpcstr']['multicall_error']);
1554
+ }
1555
+ }
1556
+ }
1557
+ } else {
1558
+ // override fallback, in case careless user tries to do two
1559
+ // opposite things at the same time
1560
+ $fallback = true;
1561
+ }
1562
+
1563
+ $results = array();
1564
+ if ($fallback) {
1565
+ // system.multicall is (probably) unsupported by server:
1566
+ // emulate multicall via multiple requests
1567
+ foreach ($msgs as $msg) {
1568
+ $results[] =& $this->send($msg, $timeout, $method);
1569
+ }
1570
+ } else {
1571
+ // user does NOT want to fallback on many single calls:
1572
+ // since we should always return an array of responses,
1573
+ // return an array with the same error repeated n times
1574
+ foreach ($msgs as $msg) {
1575
+ $results[] = $result;
1576
+ }
1577
+ }
1578
+ return $results;
1579
+ }
1580
+
1581
+ /**
1582
+ * Attempt to boxcar $msgs via system.multicall.
1583
+ * Returns either an array of xmlrpcreponses, an xmlrpc error response
1584
+ * or false (when received response does not respect valid multicall syntax)
1585
+ * @access private
1586
+ */
1587
+ function _try_multicall($msgs, $timeout, $method)
1588
+ {
1589
+ // Construct multicall message
1590
+ $calls = array();
1591
+ foreach ($msgs as $msg) {
1592
+ $call['methodName'] = new xmlrpcval($msg->method(), 'string');
1593
+ $numParams = $msg->getNumParams();
1594
+ $params = array();
1595
+ for ($i = 0; $i < $numParams; $i++) {
1596
+ $params[$i] = $msg->getParam($i);
1597
+ }
1598
+ $call['params'] = new xmlrpcval($params, 'array');
1599
+ $calls[] = new xmlrpcval($call, 'struct');
1600
+ }
1601
+ $multicall = new xmlrpcmsg('system.multicall');
1602
+ $multicall->addParam(new xmlrpcval($calls, 'array'));
1603
+
1604
+ // Attempt RPC call
1605
+ $result =& $this->send($multicall, $timeout, $method);
1606
+
1607
+ if ($result->faultCode() != 0) {
1608
+ // call to system.multicall failed
1609
+ return $result;
1610
+ }
1611
+
1612
+ // Unpack responses.
1613
+ $rets = $result->value();
1614
+
1615
+ if ($this->return_type == 'xml') {
1616
+ return $rets;
1617
+ } else if ($this->return_type == 'phpvals') {
1618
+ ///@todo test this code branch...
1619
+ $rets = $result->value();
1620
+ if (!is_array($rets)) {
1621
+ return false; // bad return type from system.multicall
1622
+ }
1623
+ $numRets = count($rets);
1624
+ if ($numRets != count($msgs)) {
1625
+ return false; // wrong number of return values.
1626
+ }
1627
+
1628
+ $response = array();
1629
+ for ($i = 0; $i < $numRets; $i++) {
1630
+ $val = $rets[$i];
1631
+ if (!is_array($val)) {
1632
+ return false;
1633
+ }
1634
+ switch (count($val)) {
1635
+ case 1:
1636
+ if (!isset($val[0])) {
1637
+ return false; // Bad value
1638
+ }
1639
+ // Normal return value
1640
+ $response[$i] = new xmlrpcresp($val[0], 0, '', 'phpvals');
1641
+ break;
1642
+ case 2:
1643
+ /// @todo remove usage of @: it is apparently quite slow
1644
+ $code = @$val['faultCode'];
1645
+ if (!is_int($code)) {
1646
+ return false;
1647
+ }
1648
+ $str = @$val['faultString'];
1649
+ if (!is_string($str)) {
1650
+ return false;
1651
+ }
1652
+ $response[$i] = new xmlrpcresp(0, $code, $str);
1653
+ break;
1654
+ default:
1655
+ return false;
1656
+ }
1657
+ }
1658
+ return $response;
1659
+ } else // return type == 'xmlrpcvals'
1660
+ {
1661
+ $rets = $result->value();
1662
+ if ($rets->kindOf() != 'array') {
1663
+ return false; // bad return type from system.multicall
1664
+ }
1665
+ $numRets = $rets->arraysize();
1666
+ if ($numRets != count($msgs)) {
1667
+ return false; // wrong number of return values.
1668
+ }
1669
+
1670
+ $response = array();
1671
+ for ($i = 0; $i < $numRets; $i++) {
1672
+ $val = $rets->arraymem($i);
1673
+ switch ($val->kindOf()) {
1674
+ case 'array':
1675
+ if ($val->arraysize() != 1) {
1676
+ return false; // Bad value
1677
+ }
1678
+ // Normal return value
1679
+ $response[$i] = new xmlrpcresp($val->arraymem(0));
1680
+ break;
1681
+ case 'struct':
1682
+ $code = $val->structmem('faultCode');
1683
+ if ($code->kindOf() != 'scalar' || $code->scalartyp() != 'int') {
1684
+ return false;
1685
+ }
1686
+ $str = $val->structmem('faultString');
1687
+ if ($str->kindOf() != 'scalar' || $str->scalartyp() != 'string') {
1688
+ return false;
1689
+ }
1690
+ $response[$i] = new xmlrpcresp(0, $code->scalarval(), $str->scalarval());
1691
+ break;
1692
+ default:
1693
+ return false;
1694
+ }
1695
+ }
1696
+ return $response;
1697
+ }
1698
+ }
1699
+ } // end class xmlrpc_client
1700
+
1701
+ class xmlrpcresp
1702
+ {
1703
+ var $val = 0;
1704
+ var $valtyp;
1705
+ var $errno = 0;
1706
+ var $errstr = '';
1707
+ var $payload;
1708
+ var $hdrs = array();
1709
+ var $_cookies = array();
1710
+ var $content_type = 'text/xml';
1711
+ var $raw_data = '';
1712
+
1713
+ /**
1714
+ * @param mixed $val either an xmlrpcval obj, a php value or the xml serialization of an xmlrpcval (a string)
1715
+ * @param integer $fcode set it to anything but 0 to create an error response
1716
+ * @param string $fstr the error string, in case of an error response
1717
+ * @param string $valtyp either 'xmlrpcvals', 'phpvals' or 'xml'
1718
+ *
1719
+ * @todo add check that $val / $fcode / $fstr is of correct type???
1720
+ * NB: as of now we do not do it, since it might be either an xmlrpcval or a plain
1721
+ * php val, or a complete xml chunk, depending on usage of xmlrpc_client::send() inside which creator is called...
1722
+ */
1723
+ function xmlrpcresp($val, $fcode = 0, $fstr = '', $valtyp = '')
1724
+ {
1725
+ if ($fcode != 0) {
1726
+ // error response
1727
+ $this->errno = $fcode;
1728
+ $this->errstr = $fstr;
1729
+ //$this->errstr = htmlspecialchars($fstr); // XXX: encoding probably shouldn't be done here; fix later.
1730
+ } else {
1731
+ // successful response
1732
+ $this->val = $val;
1733
+ if ($valtyp == '') {
1734
+ // user did not declare type of response value: try to guess it
1735
+ if (is_object($this->val) && is_a($this->val, 'xmlrpcval')) {
1736
+ $this->valtyp = 'xmlrpcvals';
1737
+ } else if (is_string($this->val)) {
1738
+ $this->valtyp = 'xml';
1739
+
1740
+ } else {
1741
+ $this->valtyp = 'phpvals';
1742
+ }
1743
+ } else {
1744
+ // user declares type of resp value: believe him
1745
+ $this->valtyp = $valtyp;
1746
+ }
1747
+ }
1748
+ }
1749
+
1750
+ /**
1751
+ * Returns the error code of the response.
1752
+ * @return integer the error code of this response (0 for not-error responses)
1753
+ * @access public
1754
+ */
1755
+ function faultCode()
1756
+ {
1757
+ return $this->errno;
1758
+ }
1759
+
1760
+ /**
1761
+ * Returns the error code of the response.
1762
+ * @return string the error string of this response ('' for not-error responses)
1763
+ * @access public
1764
+ */
1765
+ function faultString()
1766
+ {
1767
+ return $this->errstr;
1768
+ }
1769
+
1770
+ /**
1771
+ * Returns the value received by the server.
1772
+ * @return mixed the xmlrpcval object returned by the server. Might be an xml string or php value if the response has been created by specially configured xmlrpc_client objects
1773
+ * @access public
1774
+ */
1775
+ function value()
1776
+ {
1777
+ return $this->val;
1778
+ }
1779
+
1780
+ /**
1781
+ * Returns an array with the cookies received from the server.
1782
+ * Array has the form: $cookiename => array ('value' => $val, $attr1 => $val1, $attr2 = $val2, ...)
1783
+ * with attributes being e.g. 'expires', 'path', domain'.
1784
+ * NB: cookies sent as 'expired' by the server (i.e. with an expiry date in the past)
1785
+ * are still present in the array. It is up to the user-defined code to decide
1786
+ * how to use the received cookies, and wheter they have to be sent back with the next
1787
+ * request to the server (using xmlrpc_client::setCookie) or not
1788
+ * @return array array of cookies received from the server
1789
+ * @access public
1790
+ */
1791
+ function cookies()
1792
+ {
1793
+ return $this->_cookies;
1794
+ }
1795
+
1796
+ /**
1797
+ * Returns xml representation of the response. XML prologue not included
1798
+ * @param string $charset_encoding the charset to be used for serialization. if null, US-ASCII is assumed
1799
+ * @return string the xml representation of the response
1800
+ * @access public
1801
+ */
1802
+ function serialize($charset_encoding = '')
1803
+ {
1804
+ if ($charset_encoding != '')
1805
+ $this->content_type = 'text/xml; charset=' . $charset_encoding;
1806
+ else
1807
+ $this->content_type = 'text/xml';
1808
+ $result = "<methodResponse>\n";
1809
+ if ($this->errno) {
1810
+ // G. Giunta 2005/2/13: let non-ASCII response messages be tolerated by clients
1811
+ // by xml-encoding non ascii chars
1812
+ $result .= "<fault>\n" .
1813
+ "<value>\n<struct><member><name>faultCode</name>\n<value><int>" . $this->errno .
1814
+ "</int></value>\n</member>\n<member>\n<name>faultString</name>\n<value><string>" .
1815
+ xmlrpc_encode_entitites($this->errstr, $GLOBALS['xmlrpc_internalencoding'], $charset_encoding) . "</string></value>\n</member>\n" .
1816
+ "</struct>\n</value>\n</fault>";
1817
+ } else {
1818
+ if (!is_object($this->val) || !is_a($this->val, 'xmlrpcval')) {
1819
+ if (is_string($this->val) && $this->valtyp == 'xml') {
1820
+ $result .= "<params>\n<param>\n" .
1821
+ $this->val .
1822
+ "</param>\n</params>";
1823
+ } else {
1824
+ /// @todo try to build something serializable?
1825
+ die('cannot serialize xmlrpcresp objects whose content is native php values');
1826
+ }
1827
+ } else {
1828
+ $result .= "<params>\n<param>\n" .
1829
+ $this->val->serialize($charset_encoding) .
1830
+ "</param>\n</params>";
1831
+ }
1832
+ }
1833
+ $result .= "\n</methodResponse>";
1834
+ $this->payload = $result;
1835
+ return $result;
1836
+ }
1837
+ }
1838
+
1839
+ class xmlrpcmsg
1840
+ {
1841
+ var $payload;
1842
+ var $methodname;
1843
+ var $params = array();
1844
+ var $debug = 0;
1845
+ var $content_type = 'text/xml';
1846
+
1847
+ /**
1848
+ * @param string $meth the name of the method to invoke
1849
+ * @param array $pars array of parameters to be paased to the method (xmlrpcval objects)
1850
+ */
1851
+ function xmlrpcmsg($meth, $pars = 0)
1852
+ {
1853
+ $this->methodname = $meth;
1854
+ if (is_array($pars) && count($pars) > 0) {
1855
+ for ($i = 0; $i < count($pars); $i++) {
1856
+ $this->addParam($pars[$i]);
1857
+ }
1858
+ }
1859
+ }
1860
+
1861
+ /**
1862
+ * @access private
1863
+ */
1864
+ function xml_header($charset_encoding = '')
1865
+ {
1866
+ if ($charset_encoding != '') {
1867
+ return "<?xml version=\"1.0\" encoding=\"$charset_encoding\" ?" . ">\n<methodCall>\n";
1868
+ } else {
1869
+ return "<?xml version=\"1.0\"?" . ">\n<methodCall>\n";
1870
+ }
1871
+ }
1872
+
1873
+ /**
1874
+ * @access private
1875
+ */
1876
+ function xml_footer()
1877
+ {
1878
+ return '</methodCall>';
1879
+ }
1880
+
1881
+ /**
1882
+ * @access private
1883
+ */
1884
+ function kindOf()
1885
+ {
1886
+ return 'msg';
1887
+ }
1888
+
1889
+ /**
1890
+ * @access private
1891
+ */
1892
+ function createPayload($charset_encoding = '')
1893
+ {
1894
+ if ($charset_encoding != '')
1895
+ $this->content_type = 'text/xml; charset=' . $charset_encoding;
1896
+ else
1897
+ $this->content_type = 'text/xml';
1898
+ $this->payload = $this->xml_header($charset_encoding);
1899
+ $this->payload .= '<methodName>' . $this->methodname . "</methodName>\n";
1900
+ $this->payload .= "<params>\n";
1901
+ for ($i = 0; $i < count($this->params); $i++) {
1902
+ $p = $this->params[$i];
1903
+ $this->payload .= "<param>\n" . $p->serialize($charset_encoding) .
1904
+ "</param>\n";
1905
+ }
1906
+ $this->payload .= "</params>\n";
1907
+ $this->payload .= $this->xml_footer();
1908
+ }
1909
+
1910
+ /**
1911
+ * Gets/sets the xmlrpc method to be invoked
1912
+ * @param string $meth the method to be set (leave empty not to set it)
1913
+ * @return string the method that will be invoked
1914
+ * @access public
1915
+ */
1916
+ function method($meth = '')
1917
+ {
1918
+ if ($meth != '') {
1919
+ $this->methodname = $meth;
1920
+ }
1921
+ return $this->methodname;
1922
+ }
1923
+
1924
+ /**
1925
+ * Returns xml representation of the message. XML prologue included
1926
+ * @return string the xml representation of the message, xml prologue included
1927
+ * @access public
1928
+ */
1929
+ function serialize($charset_encoding = '')
1930
+ {
1931
+ $this->createPayload($charset_encoding);
1932
+ return $this->payload;
1933
+ }
1934
+
1935
+ /**
1936
+ * Add a parameter to the list of parameters to be used upon method invocation
1937
+ * @param xmlrpcval $par
1938
+ * @return boolean false on failure
1939
+ * @access public
1940
+ */
1941
+ function addParam($par)
1942
+ {
1943
+ // add check: do not add to self params which are not xmlrpcvals
1944
+ if (is_object($par) && is_a($par, 'xmlrpcval')) {
1945
+ $this->params[] = $par;
1946
+ return true;
1947
+ } else {
1948
+ return false;
1949
+ }
1950
+ }
1951
+
1952
+ /**
1953
+ * Returns the nth parameter in the message. The index zero-based.
1954
+ * @param integer $i the index of the parameter to fetch (zero based)
1955
+ * @return xmlrpcval the i-th parameter
1956
+ * @access public
1957
+ */
1958
+ function getParam($i)
1959
+ {
1960
+ return $this->params[$i];
1961
+ }
1962
+
1963
+ /**
1964
+ * Returns the number of parameters in the messge.
1965
+ * @return integer the number of parameters currently set
1966
+ * @access public
1967
+ */
1968
+ function getNumParams()
1969
+ {
1970
+ return count($this->params);
1971
+ }
1972
+
1973
+ /**
1974
+ * Given an open file handle, read all data available and parse it as axmlrpc response.
1975
+ * NB: the file handle is not closed by this function.
1976
+ * NNB: might have trouble in rare cases to work on network streams, as we
1977
+ * check for a read of 0 bytes instead of feof($fp).
1978
+ * But since checking for feof(null) returns false, we would risk an
1979
+ * infinite loop in that case, because we cannot trust the caller
1980
+ * to give us a valid pointer to an open file...
1981
+ * @access public
1982
+ * @return xmlrpcresp
1983
+ * @todo add 2nd & 3rd param to be passed to ParseResponse() ???
1984
+ */
1985
+ function &parseResponseFile($fp)
1986
+ {
1987
+ $ipd = '';
1988
+ while ($data = fread($fp, 32768)) {
1989
+ $ipd .= $data;
1990
+ }
1991
+ //fclose($fp);
1992
+ $r =& $this->parseResponse($ipd);
1993
+ return $r;
1994
+ }
1995
+
1996
+ /**
1997
+ * Parses HTTP headers and separates them from data.
1998
+ * @access private
1999
+ */
2000
+ function &parseResponseHeaders(&$data, $headers_processed = false)
2001
+ {
2002
+ // Support "web-proxy-tunelling" connections for https through proxies
2003
+ if (preg_match('/^HTTP\/1\.[0-1] 200 Connection established/', $data)) {
2004
+ // Look for CR/LF or simple LF as line separator,
2005
+ // (even though it is not valid http)
2006
+ $pos = strpos($data, "\r\n\r\n");
2007
+ if ($pos || is_int($pos)) {
2008
+ $bd = $pos + 4;
2009
+ } else {
2010
+ $pos = strpos($data, "\n\n");
2011
+ if ($pos || is_int($pos)) {
2012
+ $bd = $pos + 2;
2013
+ } else {
2014
+ // No separation between response headers and body: fault?
2015
+ $bd = 0;
2016
+ }
2017
+ }
2018
+ if ($bd) {
2019
+ // this filters out all http headers from proxy.
2020
+ // maybe we could take them into account, too?
2021
+ $data = substr($data, $bd);
2022
+ } else {
2023
+ error_log('XML-RPC: ' . __METHOD__ . ': HTTPS via proxy error, tunnel connection possibly failed');
2024
+ $r = new xmlrpcresp(0, $GLOBALS['xmlrpcerr']['http_error'], $GLOBALS['xmlrpcstr']['http_error'] . ' (HTTPS via proxy error, tunnel connection possibly failed)');
2025
+ return $r;
2026
+ }
2027
+ }
2028
+
2029
+ // Strip HTTP 1.1 100 Continue header if present
2030
+ while (preg_match('/^HTTP\/1\.1 1[0-9]{2} /', $data)) {
2031
+ $pos = strpos($data, 'HTTP', 12);
2032
+ // server sent a Continue header without any (valid) content following...
2033
+ // give the client a chance to know it
2034
+ if (!$pos && !is_int($pos)) // works fine in php 3, 4 and 5
2035
+ {
2036
+ break;
2037
+ }
2038
+ $data = substr($data, $pos);
2039
+ }
2040
+ if (!preg_match('/^HTTP\/[0-9.]+ 200 /', $data)) {
2041
+ $errstr = substr($data, 0, strpos($data, "\n") - 1);
2042
+ error_log('XML-RPC: ' . __METHOD__ . ': HTTP error, got response: ' . $errstr);
2043
+ $r = new xmlrpcresp(0, $GLOBALS['xmlrpcerr']['http_error'], $GLOBALS['xmlrpcstr']['http_error'] . ' (' . $errstr . ')');
2044
+ return $r;
2045
+ }
2046
+
2047
+ $GLOBALS['_xh']['headers'] = array();
2048
+ $GLOBALS['_xh']['cookies'] = array();
2049
+
2050
+ // be tolerant to usage of \n instead of \r\n to separate headers and data
2051
+ // (even though it is not valid http)
2052
+ $pos = strpos($data, "\r\n\r\n");
2053
+ if ($pos || is_int($pos)) {
2054
+ $bd = $pos + 4;
2055
+ } else {
2056
+ $pos = strpos($data, "\n\n");
2057
+ if ($pos || is_int($pos)) {
2058
+ $bd = $pos + 2;
2059
+ } else {
2060
+ // No separation between response headers and body: fault?
2061
+ // we could take some action here instead of going on...
2062
+ $bd = 0;
2063
+ }
2064
+ }
2065
+ // be tolerant to line endings, and extra empty lines
2066
+ $ar = preg_split("/\r?\n/", trim(substr($data, 0, $pos)));
2067
+ while (list(, $line) = @each($ar)) {
2068
+ // take care of multi-line headers and cookies
2069
+ $arr = explode(':', $line, 2);
2070
+ if (count($arr) > 1) {
2071
+ $header_name = strtolower(trim($arr[0]));
2072
+ /// @todo some other headers (the ones that allow a CSV list of values)
2073
+ /// do allow many values to be passed using multiple header lines.
2074
+ /// We should add content to $GLOBALS['_xh']['headers'][$header_name]
2075
+ /// instead of replacing it for those...
2076
+ if ($header_name == 'set-cookie' || $header_name == 'set-cookie2') {
2077
+ if ($header_name == 'set-cookie2') {
2078
+ // version 2 cookies:
2079
+ // there could be many cookies on one line, comma separated
2080
+ $cookies = explode(',', $arr[1]);
2081
+ } else {
2082
+ $cookies = array($arr[1]);
2083
+ }
2084
+ foreach ($cookies as $cookie) {
2085
+ // glue together all received cookies, using a comma to separate them
2086
+ // (same as php does with getallheaders())
2087
+ if (isset($GLOBALS['_xh']['headers'][$header_name]))
2088
+ $GLOBALS['_xh']['headers'][$header_name] .= ', ' . trim($cookie);
2089
+ else
2090
+ $GLOBALS['_xh']['headers'][$header_name] = trim($cookie);
2091
+ // parse cookie attributes, in case user wants to correctly honour them
2092
+ // feature creep: only allow rfc-compliant cookie attributes?
2093
+ // @todo support for server sending multiple time cookie with same name, but using different PATHs
2094
+ $cookie = explode(';', $cookie);
2095
+ foreach ($cookie as $pos => $val) {
2096
+ $val = explode('=', $val, 2);
2097
+ $tag = trim($val[0]);
2098
+ $val = trim(@$val[1]);
2099
+ /// @todo with version 1 cookies, we should strip leading and trailing " chars
2100
+ if ($pos == 0) {
2101
+ $cookiename = $tag;
2102
+ $GLOBALS['_xh']['cookies'][$tag] = array();
2103
+ $GLOBALS['_xh']['cookies'][$cookiename]['value'] = urldecode($val);
2104
+ } else {
2105
+ if ($tag != 'value') {
2106
+ $GLOBALS['_xh']['cookies'][$cookiename][$tag] = $val;
2107
+ }
2108
+ }
2109
+ }
2110
+ }
2111
+ } else {
2112
+ $GLOBALS['_xh']['headers'][$header_name] = trim($arr[1]);
2113
+ }
2114
+ } elseif (isset($header_name)) {
2115
+ /// @todo version1 cookies might span multiple lines, thus breaking the parsing above
2116
+ $GLOBALS['_xh']['headers'][$header_name] .= ' ' . trim($line);
2117
+ }
2118
+ }
2119
+
2120
+ $data = substr($data, $bd);
2121
+
2122
+ if ($this->debug && count($GLOBALS['_xh']['headers'])) {
2123
+ print '<PRE>';
2124
+ foreach ($GLOBALS['_xh']['headers'] as $header => $value) {
2125
+ print htmlentities("HEADER: $header: $value\n");
2126
+ }
2127
+ foreach ($GLOBALS['_xh']['cookies'] as $header => $value) {
2128
+ print htmlentities("COOKIE: $header={$value['value']}\n");
2129
+ }
2130
+ print "</PRE>\n";
2131
+ }
2132
+
2133
+ // if CURL was used for the call, http headers have been processed,
2134
+ // and dechunking + reinflating have been carried out
2135
+ if (!$headers_processed) {
2136
+ // Decode chunked encoding sent by http 1.1 servers
2137
+ if (isset($GLOBALS['_xh']['headers']['transfer-encoding']) && $GLOBALS['_xh']['headers']['transfer-encoding'] == 'chunked') {
2138
+ if (!$data = decode_chunked($data)) {
2139
+ error_log('XML-RPC: ' . __METHOD__ . ': errors occurred when trying to rebuild the chunked data received from server');
2140
+ $r = new xmlrpcresp(0, $GLOBALS['xmlrpcerr']['dechunk_fail'], $GLOBALS['xmlrpcstr']['dechunk_fail']);
2141
+ return $r;
2142
+ }
2143
+ }
2144
+
2145
+ // Decode gzip-compressed stuff
2146
+ // code shamelessly inspired from nusoap library by Dietrich Ayala
2147
+ if (isset($GLOBALS['_xh']['headers']['content-encoding'])) {
2148
+ $GLOBALS['_xh']['headers']['content-encoding'] = str_replace('x-', '', $GLOBALS['_xh']['headers']['content-encoding']);
2149
+ if ($GLOBALS['_xh']['headers']['content-encoding'] == 'deflate' || $GLOBALS['_xh']['headers']['content-encoding'] == 'gzip') {
2150
+ // if decoding works, use it. else assume data wasn't gzencoded
2151
+ if (function_exists('gzinflate')) {
2152
+ if ($GLOBALS['_xh']['headers']['content-encoding'] == 'deflate' && $degzdata = @gzuncompress($data)) {
2153
+ $data = $degzdata;
2154
+ if ($this->debug)
2155
+ print "<PRE>---INFLATED RESPONSE---[" . strlen($data) . " chars]---\n" . htmlentities($data) . "\n---END---</PRE>";
2156
+ } elseif ($GLOBALS['_xh']['headers']['content-encoding'] == 'gzip' && $degzdata = @gzinflate(substr($data, 10))) {
2157
+ $data = $degzdata;
2158
+ if ($this->debug)
2159
+ print "<PRE>---INFLATED RESPONSE---[" . strlen($data) . " chars]---\n" . htmlentities($data) . "\n---END---</PRE>";
2160
+ } else {
2161
+ error_log('XML-RPC: ' . __METHOD__ . ': errors occurred when trying to decode the deflated data received from server');
2162
+ $r = new xmlrpcresp(0, $GLOBALS['xmlrpcerr']['decompress_fail'], $GLOBALS['xmlrpcstr']['decompress_fail']);
2163
+ return $r;
2164
+ }
2165
+ } else {
2166
+ error_log('XML-RPC: ' . __METHOD__ . ': the server sent deflated data. Your php install must have the Zlib extension compiled in to support this.');
2167
+ $r = new xmlrpcresp(0, $GLOBALS['xmlrpcerr']['cannot_decompress'], $GLOBALS['xmlrpcstr']['cannot_decompress']);
2168
+ return $r;
2169
+ }
2170
+ }
2171
+ }
2172
+ } // end of 'if needed, de-chunk, re-inflate response'
2173
+
2174
+ // real stupid hack to avoid PHP complaining about returning NULL by ref
2175
+ $r = null;
2176
+ $r =& $r;
2177
+ return $r;
2178
+ }
2179
+
2180
+ /**
2181
+ * Parse the xmlrpc response contained in the string $data and return an xmlrpcresp object.
2182
+ * @param string $data the xmlrpc response, eventually including http headers
2183
+ * @param bool $headers_processed when true prevents parsing HTTP headers for interpretation of content-encoding and consequent decoding
2184
+ * @param string $return_type decides return type, i.e. content of response->value(). Either 'xmlrpcvals', 'xml' or 'phpvals'
2185
+ * @return xmlrpcresp
2186
+ * @access public
2187
+ */
2188
+ function &parseResponse($data = '', $headers_processed = false, $return_type = 'xmlrpcvals')
2189
+ {
2190
+ if ($this->debug) {
2191
+ //by maHo, replaced htmlspecialchars with htmlentities
2192
+ print "<PRE>---GOT---\n" . htmlentities($data) . "\n---END---\n</PRE>";
2193
+ }
2194
+
2195
+ if ($data == '') {
2196
+ error_log('XML-RPC: ' . __METHOD__ . ': no response received from server.');
2197
+ $r = new xmlrpcresp(0, $GLOBALS['xmlrpcerr']['no_data'], $GLOBALS['xmlrpcstr']['no_data']);
2198
+ return $r;
2199
+ }
2200
+
2201
+ $GLOBALS['_xh'] = array();
2202
+
2203
+ $raw_data = $data;
2204
+ // parse the HTTP headers of the response, if present, and separate them from data
2205
+ if (substr($data, 0, 4) == 'HTTP') {
2206
+ $r =& $this->parseResponseHeaders($data, $headers_processed);
2207
+ if ($r) {
2208
+ // failed processing of HTTP response headers
2209
+ // save into response obj the full payload received, for debugging
2210
+ $r->raw_data = $data;
2211
+ return $r;
2212
+ }
2213
+ } else {
2214
+ $GLOBALS['_xh']['headers'] = array();
2215
+ $GLOBALS['_xh']['cookies'] = array();
2216
+ }
2217
+
2218
+ if ($this->debug) {
2219
+ $start = strpos($data, '<!-- SERVER DEBUG INFO (BASE64 ENCODED):');
2220
+ if ($start) {
2221
+ $start += strlen('<!-- SERVER DEBUG INFO (BASE64 ENCODED):');
2222
+ $end = strpos($data, '-->', $start);
2223
+ $comments = substr($data, $start, $end - $start);
2224
+ print "<PRE>---SERVER DEBUG INFO (DECODED) ---\n\t" . htmlentities(str_replace("\n", "\n\t", base64_decode($comments))) . "\n---END---\n</PRE>";
2225
+ }
2226
+ }
2227
+
2228
+ // be tolerant of extra whitespace in response body
2229
+ $data = trim($data);
2230
+
2231
+ /// @todo return an error msg if $data=='' ?
2232
+
2233
+ // be tolerant of junk after methodResponse (e.g. javascript ads automatically inserted by free hosts)
2234
+ // idea from Luca Mariano <luca.mariano@email.it> originally in PEARified version of the lib
2235
+ $pos = strrpos($data, '</methodResponse>');
2236
+ if ($pos !== false) {
2237
+ $data = substr($data, 0, $pos + 17);
2238
+ }
2239
+
2240
+ // if user wants back raw xml, give it to him
2241
+ if ($return_type == 'xml') {
2242
+ $r = new xmlrpcresp($data, 0, '', 'xml');
2243
+ $r->hdrs = $GLOBALS['_xh']['headers'];
2244
+ $r->_cookies = $GLOBALS['_xh']['cookies'];
2245
+ $r->raw_data = $raw_data;
2246
+ return $r;
2247
+ }
2248
+
2249
+ // try to 'guestimate' the character encoding of the received response
2250
+ $resp_encoding = guess_encoding(@$GLOBALS['_xh']['headers']['content-type'], $data);
2251
+
2252
+ $GLOBALS['_xh']['ac'] = '';
2253
+ //$GLOBALS['_xh']['qt']=''; //unused...
2254
+ $GLOBALS['_xh']['stack'] = array();
2255
+ $GLOBALS['_xh']['valuestack'] = array();
2256
+ $GLOBALS['_xh']['isf'] = 0; // 0 = OK, 1 for xmlrpc fault responses, 2 = invalid xmlrpc
2257
+ $GLOBALS['_xh']['isf_reason'] = '';
2258
+ $GLOBALS['_xh']['rt'] = ''; // 'methodcall or 'methodresponse'
2259
+
2260
+ // if response charset encoding is not known / supported, try to use
2261
+ // the default encoding and parse the xml anyway, but log a warning...
2262
+ if (!in_array($resp_encoding, array('UTF-8', 'ISO-8859-1', 'US-ASCII'))) // the following code might be better for mb_string enabled installs, but
2263
+ // makes the lib about 200% slower...
2264
+ //if (!is_valid_charset($resp_encoding, array('UTF-8', 'ISO-8859-1', 'US-ASCII')))
2265
+ {
2266
+ error_log('XML-RPC: ' . __METHOD__ . ': invalid charset encoding of received response: ' . $resp_encoding);
2267
+ $resp_encoding = $GLOBALS['xmlrpc_defencoding'];
2268
+ }
2269
+ $parser = xml_parser_create($resp_encoding);
2270
+ xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, true);
2271
+ // G. Giunta 2005/02/13: PHP internally uses ISO-8859-1, so we have to tell
2272
+ // the xml parser to give us back data in the expected charset.
2273
+ // What if internal encoding is not in one of the 3 allowed?
2274
+ // we use the broadest one, ie. utf8
2275
+ // This allows to send data which is native in various charset,
2276
+ // by extending xmlrpc_encode_entitites() and setting xmlrpc_internalencoding
2277
+ if (!in_array($GLOBALS['xmlrpc_internalencoding'], array('UTF-8', 'ISO-8859-1', 'US-ASCII'))) {
2278
+ xml_parser_set_option($parser, XML_OPTION_TARGET_ENCODING, 'UTF-8');
2279
+ } else {
2280
+ xml_parser_set_option($parser, XML_OPTION_TARGET_ENCODING, $GLOBALS['xmlrpc_internalencoding']);
2281
+ }
2282
+
2283
+ if ($return_type == 'phpvals') {
2284
+ xml_set_element_handler($parser, 'xmlrpc_se', 'xmlrpc_ee_fast');
2285
+ } else {
2286
+ xml_set_element_handler($parser, 'xmlrpc_se', 'xmlrpc_ee');
2287
+ }
2288
+
2289
+ xml_set_character_data_handler($parser, 'xmlrpc_cd');
2290
+ xml_set_default_handler($parser, 'xmlrpc_dh');
2291
+
2292
+ // first error check: xml not well formed
2293
+ if (!xml_parse($parser, $data, count($data))) {
2294
+ // thanks to Peter Kocks <peter.kocks@baygate.com>
2295
+ if ((xml_get_current_line_number($parser)) == 1) {
2296
+ $errstr = 'XML error at line 1, check URL';
2297
+ } else {
2298
+ $errstr = sprintf('XML error: %s at line %d, column %d',
2299
+ xml_error_string(xml_get_error_code($parser)),
2300
+ xml_get_current_line_number($parser), xml_get_current_column_number($parser));
2301
+ }
2302
+ error_log($errstr);
2303
+ $r = new xmlrpcresp(0, $GLOBALS['xmlrpcerr']['invalid_return'], $GLOBALS['xmlrpcstr']['invalid_return'] . ' (' . $errstr . ')');
2304
+ xml_parser_free($parser);
2305
+ if ($this->debug) {
2306
+ print $errstr;
2307
+ }
2308
+ $r->hdrs = $GLOBALS['_xh']['headers'];
2309
+ $r->_cookies = $GLOBALS['_xh']['cookies'];
2310
+ $r->raw_data = $raw_data;
2311
+ return $r;
2312
+ }
2313
+ xml_parser_free($parser);
2314
+ // second error check: xml well formed but not xml-rpc compliant
2315
+ if ($GLOBALS['_xh']['isf'] > 1) {
2316
+ if ($this->debug) {
2317
+ /// @todo echo something for user?
2318
+ }
2319
+
2320
+ $r = new xmlrpcresp(0, $GLOBALS['xmlrpcerr']['invalid_return'],
2321
+ $GLOBALS['xmlrpcstr']['invalid_return'] . ' ' . $GLOBALS['_xh']['isf_reason']);
2322
+ } // third error check: parsing of the response has somehow gone boink.
2323
+ // NB: shall we omit this check, since we trust the parsing code?
2324
+ elseif ($return_type == 'xmlrpcvals' && !is_object($GLOBALS['_xh']['value'])) {
2325
+ // something odd has happened
2326
+ // and it's time to generate a client side error
2327
+ // indicating something odd went on
2328
+ $r = new xmlrpcresp(0, $GLOBALS['xmlrpcerr']['invalid_return'],
2329
+ $GLOBALS['xmlrpcstr']['invalid_return']);
2330
+ } else {
2331
+ if ($this->debug) {
2332
+ print "<PRE>---PARSED---\n";
2333
+ // somehow htmlentities chokes on var_export, and some full html string...
2334
+ //print htmlentitites(var_export($GLOBALS['_xh']['value'], true));
2335
+ print htmlspecialchars(var_export($GLOBALS['_xh']['value'], true));
2336
+ print "\n---END---</PRE>";
2337
+ }
2338
+
2339
+ // note that using =& will raise an error if $GLOBALS['_xh']['st'] does not generate an object.
2340
+ $v =& $GLOBALS['_xh']['value'];
2341
+
2342
+ if ($GLOBALS['_xh']['isf']) {
2343
+ /// @todo we should test here if server sent an int and a string,
2344
+ /// and/or coerce them into such...
2345
+ if ($return_type == 'xmlrpcvals') {
2346
+ $errno_v = $v->structmem('faultCode');
2347
+ $errstr_v = $v->structmem('faultString');
2348
+ $errno = $errno_v->scalarval();
2349
+ $errstr = $errstr_v->scalarval();
2350
+ } else {
2351
+ $errno = $v['faultCode'];
2352
+ $errstr = $v['faultString'];
2353
+ }
2354
+
2355
+ if ($errno == 0) {
2356
+ // FAULT returned, errno needs to reflect that
2357
+ $errno = -1;
2358
+ }
2359
+
2360
+ $r = new xmlrpcresp(0, $errno, $errstr);
2361
+ } else {
2362
+ $r = new xmlrpcresp($v, 0, '', $return_type);
2363
+ }
2364
+ }
2365
+
2366
+ $r->hdrs = $GLOBALS['_xh']['headers'];
2367
+ $r->_cookies = $GLOBALS['_xh']['cookies'];
2368
+ $r->raw_data = $raw_data;
2369
+ return $r;
2370
+ }
2371
+ }
2372
+
2373
+ class xmlrpcval
2374
+ {
2375
+ var $me = array();
2376
+ var $mytype = 0;
2377
+ var $_php_class = null;
2378
+
2379
+ /**
2380
+ * @param mixed $val
2381
+ * @param string $type any valid xmlrpc type name (lowercase). If null, 'string' is assumed
2382
+ */
2383
+ function xmlrpcval($val = -1, $type = '')
2384
+ {
2385
+ /// @todo: optimization creep - do not call addXX, do it all inline.
2386
+ /// downside: booleans will not be coerced anymore
2387
+ if ($val !== -1 || $type != '') {
2388
+ // optimization creep: inlined all work done by constructor
2389
+ switch ($type) {
2390
+ case '':
2391
+ $this->mytype = 1;
2392
+ $this->me['string'] = $val;
2393
+ break;
2394
+ case 'i4':
2395
+ case 'int':
2396
+ case 'double':
2397
+ case 'string':
2398
+ case 'boolean':
2399
+ case 'dateTime.iso8601':
2400
+ case 'base64':
2401
+ case 'null':
2402
+ $this->mytype = 1;
2403
+ $this->me[$type] = $val;
2404
+ break;
2405
+ case 'array':
2406
+ $this->mytype = 2;
2407
+ $this->me['array'] = $val;
2408
+ break;
2409
+ case 'struct':
2410
+ $this->mytype = 3;
2411
+ $this->me['struct'] = $val;
2412
+ break;
2413
+ default:
2414
+ error_log("XML-RPC: " . __METHOD__ . ": not a known type ($type)");
2415
+ }
2416
+ /*if($type=='')
2417
+ {
2418
+ $type='string';
2419
+ }
2420
+ if($GLOBALS['xmlrpcTypes'][$type]==1)
2421
+ {
2422
+ $this->addScalar($val,$type);
2423
+ }
2424
+ elseif($GLOBALS['xmlrpcTypes'][$type]==2)
2425
+ {
2426
+ $this->addArray($val);
2427
+ }
2428
+ elseif($GLOBALS['xmlrpcTypes'][$type]==3)
2429
+ {
2430
+ $this->addStruct($val);
2431
+ }*/
2432
+ }
2433
+ }
2434
+
2435
+ /**
2436
+ * Add a single php value to an (unitialized) xmlrpcval
2437
+ * @param mixed $val
2438
+ * @param string $type
2439
+ * @return int 1 or 0 on failure
2440
+ */
2441
+ function addScalar($val, $type = 'string')
2442
+ {
2443
+ $typeof = @$GLOBALS['xmlrpcTypes'][$type];
2444
+ if ($typeof != 1) {
2445
+ error_log("XML-RPC: " . __METHOD__ . ": not a scalar type ($type)");
2446
+ return 0;
2447
+ }
2448
+
2449
+ // coerce booleans into correct values
2450
+ // NB: we should either do it for datetimes, integers and doubles, too,
2451
+ // or just plain remove this check, implemented on booleans only...
2452
+ if ($type == $GLOBALS['xmlrpcBoolean']) {
2453
+ if (strcasecmp($val, 'true') == 0 || $val == 1 || ($val == true && strcasecmp($val, 'false'))) {
2454
+ $val = true;
2455
+ } else {
2456
+ $val = false;
2457
+ }
2458
+ }
2459
+
2460
+ switch ($this->mytype) {
2461
+ case 1:
2462
+ error_log('XML-RPC: ' . __METHOD__ . ': scalar xmlrpcval can have only one value');
2463
+ return 0;
2464
+ case 3:
2465
+ error_log('XML-RPC: ' . __METHOD__ . ': cannot add anonymous scalar to struct xmlrpcval');
2466
+ return 0;
2467
+ case 2:
2468
+ // we're adding a scalar value to an array here
2469
+ //$ar=$this->me['array'];
2470
+ //$ar[]=new xmlrpcval($val, $type);
2471
+ //$this->me['array']=$ar;
2472
+ // Faster (?) avoid all the costly array-copy-by-val done here...
2473
+ $this->me['array'][] = new xmlrpcval($val, $type);
2474
+ return 1;
2475
+ default:
2476
+ // a scalar, so set the value and remember we're scalar
2477
+ $this->me[$type] = $val;
2478
+ $this->mytype = $typeof;
2479
+ return 1;
2480
+ }
2481
+ }
2482
+
2483
+ /**
2484
+ * Add an array of xmlrpcval objects to an xmlrpcval
2485
+ * @param array $vals
2486
+ * @return int 1 or 0 on failure
2487
+ * @access public
2488
+ *
2489
+ * @todo add some checking for $vals to be an array of xmlrpcvals?
2490
+ */
2491
+ function addArray($vals)
2492
+ {
2493
+ if ($this->mytype == 0) {
2494
+ $this->mytype = $GLOBALS['xmlrpcTypes']['array'];
2495
+ $this->me['array'] = $vals;
2496
+ return 1;
2497
+ } elseif ($this->mytype == 2) {
2498
+ // we're adding to an array here
2499
+ $this->me['array'] = array_merge($this->me['array'], $vals);
2500
+ return 1;
2501
+ } else {
2502
+ error_log('XML-RPC: ' . __METHOD__ . ': already initialized as a [' . $this->kindOf() . ']');
2503
+ return 0;
2504
+ }
2505
+ }
2506
+
2507
+ /**
2508
+ * Add an array of named xmlrpcval objects to an xmlrpcval
2509
+ * @param array $vals
2510
+ * @return int 1 or 0 on failure
2511
+ * @access public
2512
+ *
2513
+ * @todo add some checking for $vals to be an array?
2514
+ */
2515
+ function addStruct($vals)
2516
+ {
2517
+ if ($this->mytype == 0) {
2518
+ $this->mytype = $GLOBALS['xmlrpcTypes']['struct'];
2519
+ $this->me['struct'] = $vals;
2520
+ return 1;
2521
+ } elseif ($this->mytype == 3) {
2522
+ // we're adding to a struct here
2523
+ $this->me['struct'] = array_merge($this->me['struct'], $vals);
2524
+ return 1;
2525
+ } else {
2526
+ error_log('XML-RPC: ' . __METHOD__ . ': already initialized as a [' . $this->kindOf() . ']');
2527
+ return 0;
2528
+ }
2529
+ }
2530
+
2531
+ // poor man's version of print_r ???
2532
+ // DEPRECATED!
2533
+ function dump($ar)
2534
+ {
2535
+ foreach ($ar as $key => $val) {
2536
+ echo "$key => $val<br />";
2537
+ if ($key == 'array') {
2538
+ while (list($key2, $val2) = each($val)) {
2539
+ echo "-- $key2 => $val2<br />";
2540
+ }
2541
+ }
2542
+ }
2543
+ }
2544
+
2545
+ /**
2546
+ * Returns a string containing "struct", "array" or "scalar" describing the base type of the value
2547
+ * @return string
2548
+ * @access public
2549
+ */
2550
+ function kindOf()
2551
+ {
2552
+ switch ($this->mytype) {
2553
+ case 3:
2554
+ return 'struct';
2555
+ break;
2556
+ case 2:
2557
+ return 'array';
2558
+ break;
2559
+ case 1:
2560
+ return 'scalar';
2561
+ break;
2562
+ default:
2563
+ return 'undef';
2564
+ }
2565
+ }
2566
+
2567
+ /**
2568
+ * @access private
2569
+ */
2570
+ function serializedata($typ, $val, $charset_encoding = '')
2571
+ {
2572
+ $rs = '';
2573
+ switch (@$GLOBALS['xmlrpcTypes'][$typ]) {
2574
+ case 1:
2575
+ switch ($typ) {
2576
+ case $GLOBALS['xmlrpcBase64']:
2577
+ $rs .= "<${typ}>" . base64_encode($val) . "</${typ}>";
2578
+ break;
2579
+ case $GLOBALS['xmlrpcBoolean']:
2580
+ $rs .= "<${typ}>" . ($val ? '1' : '0') . "</${typ}>";
2581
+ break;
2582
+ case $GLOBALS['xmlrpcString']:
2583
+ // G. Giunta 2005/2/13: do NOT use htmlentities, since
2584
+ // it will produce named html entities, which are invalid xml
2585
+ $rs .= "<${typ}>" . xmlrpc_encode_entitites($val, $GLOBALS['xmlrpc_internalencoding'], $charset_encoding) . "</${typ}>";
2586
+ break;
2587
+ case $GLOBALS['xmlrpcInt']:
2588
+ case $GLOBALS['xmlrpcI4']:
2589
+ $rs .= "<${typ}>" . (int)$val . "</${typ}>";
2590
+ break;
2591
+ case $GLOBALS['xmlrpcDouble']:
2592
+ // avoid using standard conversion of float to string because it is locale-dependent,
2593
+ // and also because the xmlrpc spec forbids exponential notation.
2594
+ // sprintf('%F') could be most likely ok but it fails eg. on 2e-14.
2595
+ // The code below tries its best at keeping max precision while avoiding exp notation,
2596
+ // but there is of course no limit in the number of decimal places to be used...
2597
+ $rs .= "<${typ}>" . preg_replace('/\\.?0+$/', '', number_format((double)$val, 128, '.', '')) . "</${typ}>";
2598
+ break;
2599
+ case $GLOBALS['xmlrpcDateTime']:
2600
+ if (is_string($val)) {
2601
+ $rs .= "<${typ}>${val}</${typ}>";
2602
+ } else if (is_a($val, 'DateTime')) {
2603
+ $rs .= "<${typ}>" . $val->format('Ymd\TH:i:s') . "</${typ}>";
2604
+ } else if (is_int($val)) {
2605
+ $rs .= "<${typ}>" . strftime("%Y%m%dT%H:%M:%S", $val) . "</${typ}>";
2606
+ } else {
2607
+ // not really a good idea here: but what shall we output anyway? left for backward compat...
2608
+ $rs .= "<${typ}>${val}</${typ}>";
2609
+ }
2610
+ break;
2611
+ case $GLOBALS['xmlrpcNull']:
2612
+ if ($GLOBALS['xmlrpc_null_apache_encoding']) {
2613
+ $rs .= "<ex:nil/>";
2614
+ } else {
2615
+ $rs .= "<nil/>";
2616
+ }
2617
+ break;
2618
+ default:
2619
+ // no standard type value should arrive here, but provide a possibility
2620
+ // for xmlrpcvals of unknown type...
2621
+ $rs .= "<${typ}>${val}</${typ}>";
2622
+ }
2623
+ break;
2624
+ case 3:
2625
+ // struct
2626
+ if ($this->_php_class) {
2627
+ $rs .= '<struct php_class="' . $this->_php_class . "\">\n";
2628
+ } else {
2629
+ $rs .= "<struct>\n";
2630
+ }
2631
+ foreach ($val as $key2 => $val2) {
2632
+ $rs .= '<member><name>' . xmlrpc_encode_entitites($key2, $GLOBALS['xmlrpc_internalencoding'], $charset_encoding) . "</name>\n";
2633
+ //$rs.=$this->serializeval($val2);
2634
+ $rs .= $val2->serialize($charset_encoding);
2635
+ $rs .= "</member>\n";
2636
+ }
2637
+ $rs .= '</struct>';
2638
+ break;
2639
+ case 2:
2640
+ // array
2641
+ $rs .= "<array>\n<data>\n";
2642
+ for ($i = 0; $i < count($val); $i++) {
2643
+ //$rs.=$this->serializeval($val[$i]);
2644
+ $rs .= $val[$i]->serialize($charset_encoding);
2645
+ }
2646
+ $rs .= "</data>\n</array>";
2647
+ break;
2648
+ default:
2649
+ break;
2650
+ }
2651
+ return $rs;
2652
+ }
2653
+
2654
+ /**
2655
+ * Returns xml representation of the value. XML prologue not included
2656
+ * @param string $charset_encoding the charset to be used for serialization. if null, US-ASCII is assumed
2657
+ * @return string
2658
+ * @access public
2659
+ */
2660
+ function serialize($charset_encoding = '')
2661
+ {
2662
+ // add check? slower, but helps to avoid recursion in serializing broken xmlrpcvals...
2663
+ //if (is_object($o) && (get_class($o) == 'xmlrpcval' || is_subclass_of($o, 'xmlrpcval')))
2664
+ //{
2665
+ reset($this->me);
2666
+ list($typ, $val) = each($this->me);
2667
+ return '<value>' . $this->serializedata($typ, $val, $charset_encoding) . "</value>\n";
2668
+ //}
2669
+ }
2670
+
2671
+ // DEPRECATED
2672
+ function serializeval($o)
2673
+ {
2674
+ // add check? slower, but helps to avoid recursion in serializing broken xmlrpcvals...
2675
+ //if (is_object($o) && (get_class($o) == 'xmlrpcval' || is_subclass_of($o, 'xmlrpcval')))
2676
+ //{
2677
+ $ar = $o->me;
2678
+ reset($ar);
2679
+ list($typ, $val) = each($ar);
2680
+ return '<value>' . $this->serializedata($typ, $val) . "</value>\n";
2681
+ //}
2682
+ }
2683
+
2684
+ /**
2685
+ * Checks wheter a struct member with a given name is present.
2686
+ * Works only on xmlrpcvals of type struct.
2687
+ * @param string $m the name of the struct member to be looked up
2688
+ * @return boolean
2689
+ * @access public
2690
+ */
2691
+ function structmemexists($m)
2692
+ {
2693
+ return array_key_exists($m, $this->me['struct']);
2694
+ }
2695
+
2696
+ /**
2697
+ * Returns the value of a given struct member (an xmlrpcval object in itself).
2698
+ * Will raise a php warning if struct member of given name does not exist
2699
+ * @param string $m the name of the struct member to be looked up
2700
+ * @return xmlrpcval
2701
+ * @access public
2702
+ */
2703
+ function structmem($m)
2704
+ {
2705
+ return $this->me['struct'][$m];
2706
+ }
2707
+
2708
+ /**
2709
+ * Reset internal pointer for xmlrpcvals of type struct.
2710
+ * @access public
2711
+ */
2712
+ function structreset()
2713
+ {
2714
+ reset($this->me['struct']);
2715
+ }
2716
+
2717
+ /**
2718
+ * Return next member element for xmlrpcvals of type struct.
2719
+ * @return xmlrpcval
2720
+ * @access public
2721
+ */
2722
+ function structeach()
2723
+ {
2724
+ return each($this->me['struct']);
2725
+ }
2726
+
2727
+ // DEPRECATED! this code looks like it is very fragile and has not been fixed
2728
+ // for a long long time. Shall we remove it for 2.0?
2729
+ function getval()
2730
+ {
2731
+ // UNSTABLE
2732
+ reset($this->me);
2733
+ list($a, $b) = each($this->me);
2734
+ // contributed by I Sofer, 2001-03-24
2735
+ // add support for nested arrays to scalarval
2736
+ // i've created a new method here, so as to
2737
+ // preserve back compatibility
2738
+
2739
+ if (is_array($b)) {
2740
+ @reset($b);
2741
+ while (list($id, $cont) = @each($b)) {
2742
+ $b[$id] = $cont->scalarval();
2743
+ }
2744
+ }
2745
+
2746
+ // add support for structures directly encoding php objects
2747
+ if (is_object($b)) {
2748
+ $t = get_object_vars($b);
2749
+ @reset($t);
2750
+ while (list($id, $cont) = @each($t)) {
2751
+ $t[$id] = $cont->scalarval();
2752
+ }
2753
+ @reset($t);
2754
+ while (list($id, $cont) = @each($t)) {
2755
+ @$b->$id = $cont;
2756
+ }
2757
+ }
2758
+ // end contrib
2759
+ return $b;
2760
+ }
2761
+
2762
+ /**
2763
+ * Returns the value of a scalar xmlrpcval
2764
+ * @return mixed
2765
+ * @access public
2766
+ */
2767
+ function scalarval()
2768
+ {
2769
+ reset($this->me);
2770
+ list(, $b) = each($this->me);
2771
+ return $b;
2772
+ }
2773
+
2774
+ /**
2775
+ * Returns the type of the xmlrpcval.
2776
+ * For integers, 'int' is always returned in place of 'i4'
2777
+ * @return string
2778
+ * @access public
2779
+ */
2780
+ function scalartyp()
2781
+ {
2782
+ reset($this->me);
2783
+ list($a,) = each($this->me);
2784
+ if ($a == $GLOBALS['xmlrpcI4']) {
2785
+ $a = $GLOBALS['xmlrpcInt'];
2786
+ }
2787
+ return $a;
2788
+ }
2789
+
2790
+ /**
2791
+ * Returns the m-th member of an xmlrpcval of struct type
2792
+ * @param integer $m the index of the value to be retrieved (zero based)
2793
+ * @return xmlrpcval
2794
+ * @access public
2795
+ */
2796
+ function arraymem($m)
2797
+ {
2798
+ return $this->me['array'][$m];
2799
+ }
2800
+
2801
+ /**
2802
+ * Returns the number of members in an xmlrpcval of array type
2803
+ * @return integer
2804
+ * @access public
2805
+ */
2806
+ function arraysize()
2807
+ {
2808
+ return count($this->me['array']);
2809
+ }
2810
+
2811
+ /**
2812
+ * Returns the number of members in an xmlrpcval of struct type
2813
+ * @return integer
2814
+ * @access public
2815
+ */
2816
+ function structsize()
2817
+ {
2818
+ return count($this->me['struct']);
2819
+ }
2820
+ }
2821
+
2822
+
2823
+ // date helpers
2824
+
2825
+ /**
2826
+ * Given a timestamp, return the corresponding ISO8601 encoded string.
2827
+ *
2828
+ * Really, timezones ought to be supported
2829
+ * but the XML-RPC spec says:
2830
+ *
2831
+ * "Don't assume a timezone. It should be specified by the server in its
2832
+ * documentation what assumptions it makes about timezones."
2833
+ *
2834
+ * These routines always assume localtime unless
2835
+ * $utc is set to 1, in which case UTC is assumed
2836
+ * and an adjustment for locale is made when encoding
2837
+ *
2838
+ * @param int $timet (timestamp)
2839
+ * @param int $utc (0 or 1)
2840
+ * @return string
2841
+ */
2842
+ function iso8601_encode($timet, $utc = 0)
2843
+ {
2844
+ if (!$utc) {
2845
+ $t = strftime("%Y%m%dT%H:%M:%S", $timet);
2846
+ } else {
2847
+ if (function_exists('gmstrftime')) {
2848
+ // gmstrftime doesn't exist in some versions
2849
+ // of PHP
2850
+ $t = gmstrftime("%Y%m%dT%H:%M:%S", $timet);
2851
+ } else {
2852
+ $t = strftime("%Y%m%dT%H:%M:%S", $timet - date('Z'));
2853
+ }
2854
+ }
2855
+ return $t;
2856
+ }
2857
+
2858
+ /**
2859
+ * Given an ISO8601 date string, return a timet in the localtime, or UTC
2860
+ * @param string $idate
2861
+ * @param int $utc either 0 or 1
2862
+ * @return int (datetime)
2863
+ */
2864
+ function iso8601_decode($idate, $utc = 0)
2865
+ {
2866
+ $t = 0;
2867
+ if (preg_match('/([0-9]{4})([0-9]{2})([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})/', $idate, $regs)) {
2868
+ if ($utc) {
2869
+ $t = gmmktime($regs[4], $regs[5], $regs[6], $regs[2], $regs[3], $regs[1]);
2870
+ } else {
2871
+ $t = mktime($regs[4], $regs[5], $regs[6], $regs[2], $regs[3], $regs[1]);
2872
+ }
2873
+ }
2874
+ return $t;
2875
+ }
2876
+
2877
+ /**
2878
+ * Takes an xmlrpc value in PHP xmlrpcval object format and translates it into native PHP types.
2879
+ *
2880
+ * Works with xmlrpc message objects as input, too.
2881
+ *
2882
+ * Given proper options parameter, can rebuild generic php object instances
2883
+ * (provided those have been encoded to xmlrpc format using a corresponding
2884
+ * option in php_xmlrpc_encode())
2885
+ * PLEASE NOTE that rebuilding php objects involves calling their constructor function.
2886
+ * This means that the remote communication end can decide which php code will
2887
+ * get executed on your server, leaving the door possibly open to 'php-injection'
2888
+ * style of attacks (provided you have some classes defined on your server that
2889
+ * might wreak havoc if instances are built outside an appropriate context).
2890
+ * Make sure you trust the remote server/client before eanbling this!
2891
+ *
2892
+ * @author Dan Libby (dan@libby.com)
2893
+ *
2894
+ * @param xmlrpcval $xmlrpc_val
2895
+ * @param array $options if 'decode_php_objs' is set in the options array, xmlrpc structs can be decoded into php objects; if 'dates_as_objects' is set xmlrpc datetimes are decoded as php DateTime objects (standard is
2896
+ * @return mixed
2897
+ */
2898
+ function php_xmlrpc_decode($xmlrpc_val, $options = array())
2899
+ {
2900
+ switch ($xmlrpc_val->kindOf()) {
2901
+ case 'scalar':
2902
+ if (in_array('extension_api', $options)) {
2903
+ reset($xmlrpc_val->me);
2904
+ list($typ, $val) = each($xmlrpc_val->me);
2905
+ switch ($typ) {
2906
+ case 'dateTime.iso8601':
2907
+ $xmlrpc_val->scalar = $val;
2908
+ $xmlrpc_val->xmlrpc_type = 'datetime';
2909
+ $xmlrpc_val->timestamp = iso8601_decode($val);
2910
+ return $xmlrpc_val;
2911
+ case 'base64':
2912
+ $xmlrpc_val->scalar = $val;
2913
+ $xmlrpc_val->type = $typ;
2914
+ return $xmlrpc_val;
2915
+ default:
2916
+ return $xmlrpc_val->scalarval();
2917
+ }
2918
+ }
2919
+ if (in_array('dates_as_objects', $options) && $xmlrpc_val->scalartyp() == 'dateTime.iso8601') {
2920
+ // we return a Datetime object instead of a string
2921
+ // since now the constructor of xmlrpcval accepts safely strings, ints and datetimes,
2922
+ // we cater to all 3 cases here
2923
+ $out = $xmlrpc_val->scalarval();
2924
+ if (is_string($out)) {
2925
+ $out = strtotime($out);
2926
+ }
2927
+ if (is_int($out)) {
2928
+ $result = new Datetime();
2929
+ $result->setTimestamp($out);
2930
+ return $result;
2931
+ } elseif (is_a($out, 'Datetime')) {
2932
+ return $out;
2933
+ }
2934
+ }
2935
+ return $xmlrpc_val->scalarval();
2936
+ case 'array':
2937
+ $size = $xmlrpc_val->arraysize();
2938
+ $arr = array();
2939
+ for ($i = 0; $i < $size; $i++) {
2940
+ $arr[] = php_xmlrpc_decode($xmlrpc_val->arraymem($i), $options);
2941
+ }
2942
+ return $arr;
2943
+ case 'struct':
2944
+ $xmlrpc_val->structreset();
2945
+ // If user said so, try to rebuild php objects for specific struct vals.
2946
+ /// @todo should we raise a warning for class not found?
2947
+ // shall we check for proper subclass of xmlrpcval instead of
2948
+ // presence of _php_class to detect what we can do?
2949
+ if (in_array('decode_php_objs', $options) && $xmlrpc_val->_php_class != ''
2950
+ && class_exists($xmlrpc_val->_php_class)
2951
+ ) {
2952
+ $obj = @new $xmlrpc_val->_php_class;
2953
+ while (list($key, $value) = $xmlrpc_val->structeach()) {
2954
+ $obj->$key = php_xmlrpc_decode($value, $options);
2955
+ }
2956
+ return $obj;
2957
+ } else {
2958
+ $arr = array();
2959
+ while (list($key, $value) = $xmlrpc_val->structeach()) {
2960
+ $arr[$key] = php_xmlrpc_decode($value, $options);
2961
+ }
2962
+ return $arr;
2963
+ }
2964
+ case 'msg':
2965
+ $paramcount = $xmlrpc_val->getNumParams();
2966
+ $arr = array();
2967
+ for ($i = 0; $i < $paramcount; $i++) {
2968
+ $arr[] = php_xmlrpc_decode($xmlrpc_val->getParam($i));
2969
+ }
2970
+ return $arr;
2971
+ }
2972
+ }
2973
+
2974
+ // This constant left here only for historical reasons...
2975
+ // it was used to decide if we have to define xmlrpc_encode on our own, but
2976
+ // we do not do it anymore
2977
+ if (function_exists('xmlrpc_decode')) {
2978
+ define('XMLRPC_EPI_ENABLED', '1');
2979
+ } else {
2980
+ define('XMLRPC_EPI_ENABLED', '0');
2981
+ }
2982
+
2983
+ /**
2984
+ * Takes native php types and encodes them into xmlrpc PHP object format.
2985
+ * It will not re-encode xmlrpcval objects.
2986
+ *
2987
+ * Feature creep -- could support more types via optional type argument
2988
+ * (string => datetime support has been added, ??? => base64 not yet)
2989
+ *
2990
+ * If given a proper options parameter, php object instances will be encoded
2991
+ * into 'special' xmlrpc values, that can later be decoded into php objects
2992
+ * by calling php_xmlrpc_decode() with a corresponding option
2993
+ *
2994
+ * @author Dan Libby (dan@libby.com)
2995
+ *
2996
+ * @param mixed $php_val the value to be converted into an xmlrpcval object
2997
+ * @param array $options can include 'encode_php_objs', 'auto_dates', 'null_extension' or 'extension_api'
2998
+ * @return xmlrpcval
2999
+ */
3000
+ function php_xmlrpc_encode($php_val, $options = array())
3001
+ {
3002
+ $type = gettype($php_val);
3003
+ switch ($type) {
3004
+ case 'string':
3005
+ if (in_array('auto_dates', $options) && preg_match('/^[0-9]{8}T[0-9]{2}:[0-9]{2}:[0-9]{2}$/', $php_val)) {
3006
+ $xmlrpc_val = new xmlrpcval($php_val, $GLOBALS['xmlrpcDateTime']);
3007
+ } else if (in_array('auto_base64', $options) && strpos($php_val, 'BASE64:') === 0) {
3008
+ $xmlrpc_val = new xmlrpcval(substr($php_val, 7), $GLOBALS['xmlrpcBase64']);
3009
+ } else {
3010
+ $xmlrpc_val = new xmlrpcval($php_val, $GLOBALS['xmlrpcString']);
3011
+ }
3012
+ break;
3013
+ case 'integer':
3014
+ $xmlrpc_val = new xmlrpcval($php_val, $GLOBALS['xmlrpcInt']);
3015
+ break;
3016
+ case 'double':
3017
+ $xmlrpc_val = new xmlrpcval($php_val, $GLOBALS['xmlrpcDouble']);
3018
+ break;
3019
+ // <G_Giunta_2001-02-29>
3020
+ // Add support for encoding/decoding of booleans, since they are supported in PHP
3021
+ case 'boolean':
3022
+ $xmlrpc_val = new xmlrpcval($php_val, $GLOBALS['xmlrpcBoolean']);
3023
+ break;
3024
+ // </G_Giunta_2001-02-29>
3025
+ case 'array':
3026
+ // PHP arrays can be encoded to either xmlrpc structs or arrays,
3027
+ // depending on wheter they are hashes or plain 0..n integer indexed
3028
+ // A shorter one-liner would be
3029
+ // $tmp = array_diff(array_keys($php_val), range(0, count($php_val)-1));
3030
+ // but execution time skyrockets!
3031
+ $j = 0;
3032
+ $arr = array();
3033
+ $ko = false;
3034
+ foreach ($php_val as $key => $val) {
3035
+ $arr[$key] = php_xmlrpc_encode($val, $options);
3036
+ if (!$ko && $key !== $j) {
3037
+ $ko = true;
3038
+ }
3039
+ $j++;
3040
+ }
3041
+ if ($ko) {
3042
+ $xmlrpc_val = new xmlrpcval($arr, $GLOBALS['xmlrpcStruct']);
3043
+ } else {
3044
+ $xmlrpc_val = new xmlrpcval($arr, $GLOBALS['xmlrpcArray']);
3045
+ }
3046
+ break;
3047
+ case 'object':
3048
+ if (is_a($php_val, 'xmlrpcval')) {
3049
+ $xmlrpc_val = $php_val;
3050
+ } else if (is_a($php_val, 'DateTime')) {
3051
+ $xmlrpc_val = new xmlrpcval($php_val->format('Ymd\TH:i:s'), $GLOBALS['xmlrpcStruct']);
3052
+ } else {
3053
+ $arr = array();
3054
+ reset($php_val);
3055
+ while (list($k, $v) = each($php_val)) {
3056
+ $arr[$k] = php_xmlrpc_encode($v, $options);
3057
+ }
3058
+ $xmlrpc_val = new xmlrpcval($arr, $GLOBALS['xmlrpcStruct']);
3059
+ if (in_array('encode_php_objs', $options)) {
3060
+ // let's save original class name into xmlrpcval:
3061
+ // might be useful later on...
3062
+ $xmlrpc_val->_php_class = get_class($php_val);
3063
+ }
3064
+ }
3065
+ break;
3066
+ case 'NULL':
3067
+ if (in_array('extension_api', $options)) {
3068
+ $xmlrpc_val = new xmlrpcval('', $GLOBALS['xmlrpcString']);
3069
+ } else if (in_array('null_extension', $options)) {
3070
+ $xmlrpc_val = new xmlrpcval('', $GLOBALS['xmlrpcNull']);
3071
+ } else {
3072
+ $xmlrpc_val = new xmlrpcval();
3073
+ }
3074
+ break;
3075
+ case 'resource':
3076
+ if (in_array('extension_api', $options)) {
3077
+ $xmlrpc_val = new xmlrpcval((int)$php_val, $GLOBALS['xmlrpcInt']);
3078
+ } else {
3079
+ $xmlrpc_val = new xmlrpcval();
3080
+ }
3081
+ // catch "user function", "unknown type"
3082
+ default:
3083
+ // giancarlo pinerolo <ping@alt.it>
3084
+ // it has to return
3085
+ // an empty object in case, not a boolean.
3086
+ $xmlrpc_val = new xmlrpcval();
3087
+ break;
3088
+ }
3089
+ return $xmlrpc_val;
3090
+ }
3091
+
3092
+ /**
3093
+ * Convert the xml representation of a method response, method request or single
3094
+ * xmlrpc value into the appropriate object (a.k.a. deserialize)
3095
+ * @param string $xml_val
3096
+ * @param array $options
3097
+ * @return mixed false on error, or an instance of either xmlrpcval, xmlrpcmsg or xmlrpcresp
3098
+ */
3099
+ function php_xmlrpc_decode_xml($xml_val, $options = array())
3100
+ {
3101
+ $GLOBALS['_xh'] = array();
3102
+ $GLOBALS['_xh']['ac'] = '';
3103
+ $GLOBALS['_xh']['stack'] = array();
3104
+ $GLOBALS['_xh']['valuestack'] = array();
3105
+ $GLOBALS['_xh']['params'] = array();
3106
+ $GLOBALS['_xh']['pt'] = array();
3107
+ $GLOBALS['_xh']['isf'] = 0;
3108
+ $GLOBALS['_xh']['isf_reason'] = '';
3109
+ $GLOBALS['_xh']['method'] = false;
3110
+ $GLOBALS['_xh']['rt'] = '';
3111
+ /// @todo 'guestimate' encoding
3112
+ $parser = xml_parser_create();
3113
+ xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, true);
3114
+ // What if internal encoding is not in one of the 3 allowed?
3115
+ // we use the broadest one, ie. utf8!
3116
+ if (!in_array($GLOBALS['xmlrpc_internalencoding'], array('UTF-8', 'ISO-8859-1', 'US-ASCII'))) {
3117
+ xml_parser_set_option($parser, XML_OPTION_TARGET_ENCODING, 'UTF-8');
3118
+ } else {
3119
+ xml_parser_set_option($parser, XML_OPTION_TARGET_ENCODING, $GLOBALS['xmlrpc_internalencoding']);
3120
+ }
3121
+ xml_set_element_handler($parser, 'xmlrpc_se_any', 'xmlrpc_ee');
3122
+ xml_set_character_data_handler($parser, 'xmlrpc_cd');
3123
+ xml_set_default_handler($parser, 'xmlrpc_dh');
3124
+ if (!xml_parse($parser, $xml_val, 1)) {
3125
+ $errstr = sprintf('XML error: %s at line %d, column %d',
3126
+ xml_error_string(xml_get_error_code($parser)),
3127
+ xml_get_current_line_number($parser), xml_get_current_column_number($parser));
3128
+ error_log($errstr);
3129
+ xml_parser_free($parser);
3130
+ return false;
3131
+ }
3132
+ xml_parser_free($parser);
3133
+ if ($GLOBALS['_xh']['isf'] > 1) // test that $GLOBALS['_xh']['value'] is an obj, too???
3134
+ {
3135
+ error_log($GLOBALS['_xh']['isf_reason']);
3136
+ return false;
3137
+ }
3138
+ switch ($GLOBALS['_xh']['rt']) {
3139
+ case 'methodresponse':
3140
+ $v =& $GLOBALS['_xh']['value'];
3141
+ if ($GLOBALS['_xh']['isf'] == 1) {
3142
+ $vc = $v->structmem('faultCode');
3143
+ $vs = $v->structmem('faultString');
3144
+ $r = new xmlrpcresp(0, $vc->scalarval(), $vs->scalarval());
3145
+ } else {
3146
+ $r = new xmlrpcresp($v);
3147
+ }
3148
+ return $r;
3149
+ case 'methodcall':
3150
+ $m = new xmlrpcmsg($GLOBALS['_xh']['method']);
3151
+ for ($i = 0; $i < count($GLOBALS['_xh']['params']); $i++) {
3152
+ $m->addParam($GLOBALS['_xh']['params'][$i]);
3153
+ }
3154
+ return $m;
3155
+ case 'value':
3156
+ return $GLOBALS['_xh']['value'];
3157
+ default:
3158
+ return false;
3159
+ }
3160
+ }
3161
+
3162
+ /**
3163
+ * decode a string that is encoded w/ "chunked" transfer encoding
3164
+ * as defined in rfc2068 par. 19.4.6
3165
+ * code shamelessly stolen from nusoap library by Dietrich Ayala
3166
+ *
3167
+ * @param string $buffer the string to be decoded
3168
+ * @return string
3169
+ */
3170
+ function decode_chunked($buffer)
3171
+ {
3172
+ // length := 0
3173
+ $length = 0;
3174
+ $new = '';
3175
+
3176
+ // read chunk-size, chunk-extension (if any) and crlf
3177
+ // get the position of the linebreak
3178
+ $chunkend = strpos($buffer, "\r\n") + 2;
3179
+ $temp = substr($buffer, 0, $chunkend);
3180
+ $chunk_size = hexdec(trim($temp));
3181
+ $chunkstart = $chunkend;
3182
+ while ($chunk_size > 0) {
3183
+ $chunkend = strpos($buffer, "\r\n", $chunkstart + $chunk_size);
3184
+
3185
+ // just in case we got a broken connection
3186
+ if ($chunkend == false) {
3187
+ $chunk = substr($buffer, $chunkstart);
3188
+ // append chunk-data to entity-body
3189
+ $new .= $chunk;
3190
+ $length += strlen($chunk);
3191
+ break;
3192
+ }
3193
+
3194
+ // read chunk-data and crlf
3195
+ $chunk = substr($buffer, $chunkstart, $chunkend - $chunkstart);
3196
+ // append chunk-data to entity-body
3197
+ $new .= $chunk;
3198
+ // length := length + chunk-size
3199
+ $length += strlen($chunk);
3200
+ // read chunk-size and crlf
3201
+ $chunkstart = $chunkend + 2;
3202
+
3203
+ $chunkend = strpos($buffer, "\r\n", $chunkstart) + 2;
3204
+ if ($chunkend == false) {
3205
+ break; //just in case we got a broken connection
3206
+ }
3207
+ $temp = substr($buffer, $chunkstart, $chunkend - $chunkstart);
3208
+ $chunk_size = hexdec(trim($temp));
3209
+ $chunkstart = $chunkend;
3210
+ }
3211
+ return $new;
3212
+ }
3213
+
3214
+ /**
3215
+ * xml charset encoding guessing helper function.
3216
+ * Tries to determine the charset encoding of an XML chunk received over HTTP.
3217
+ * NB: according to the spec (RFC 3023), if text/xml content-type is received over HTTP without a content-type,
3218
+ * we SHOULD assume it is strictly US-ASCII. But we try to be more tolerant of unconforming (legacy?) clients/servers,
3219
+ * which will be most probably using UTF-8 anyway...
3220
+ *
3221
+ * @param string $httpheaders the http Content-type header
3222
+ * @param string $xmlchunk xml content buffer
3223
+ * @param string $encoding_prefs comma separated list of character encodings to be used as default (when mb extension is enabled)
3224
+ *
3225
+ * @todo explore usage of mb_http_input(): does it detect http headers + post data? if so, use it instead of hand-detection!!!
3226
+ */
3227
+ function guess_encoding($httpheader = '', $xmlchunk = '', $encoding_prefs = null)
3228
+ {
3229
+ // discussion: see http://www.yale.edu/pclt/encoding/
3230
+ // 1 - test if encoding is specified in HTTP HEADERS
3231
+
3232
+ //Details:
3233
+ // LWS: (\13\10)?( |\t)+
3234
+ // token: (any char but excluded stuff)+
3235
+ // quoted string: " (any char but double quotes and cointrol chars)* "
3236
+ // header: Content-type = ...; charset=value(; ...)*
3237
+ // where value is of type token, no LWS allowed between 'charset' and value
3238
+ // Note: we do not check for invalid chars in VALUE:
3239
+ // this had better be done using pure ereg as below
3240
+ // Note 2: we might be removing whitespace/tabs that ought to be left in if
3241
+ // the received charset is a quoted string. But nobody uses such charset names...
3242
+
3243
+ /// @todo this test will pass if ANY header has charset specification, not only Content-Type. Fix it?
3244
+ $matches = array();
3245
+ if (preg_match('/;\s*charset\s*=([^;]+)/i', $httpheader, $matches)) {
3246
+ return strtoupper(trim($matches[1], " \t\""));
3247
+ }
3248
+
3249
+ // 2 - scan the first bytes of the data for a UTF-16 (or other) BOM pattern
3250
+ // (source: http://www.w3.org/TR/2000/REC-xml-20001006)
3251
+ // NOTE: actually, according to the spec, even if we find the BOM and determine
3252
+ // an encoding, we should check if there is an encoding specified
3253
+ // in the xml declaration, and verify if they match.
3254
+ /// @todo implement check as described above?
3255
+ /// @todo implement check for first bytes of string even without a BOM? (It sure looks harder than for cases WITH a BOM)
3256
+ if (preg_match('/^(\x00\x00\xFE\xFF|\xFF\xFE\x00\x00|\x00\x00\xFF\xFE|\xFE\xFF\x00\x00)/', $xmlchunk)) {
3257
+ return 'UCS-4';
3258
+ } elseif (preg_match('/^(\xFE\xFF|\xFF\xFE)/', $xmlchunk)) {
3259
+ return 'UTF-16';
3260
+ } elseif (preg_match('/^(\xEF\xBB\xBF)/', $xmlchunk)) {
3261
+ return 'UTF-8';
3262
+ }
3263
+
3264
+ // 3 - test if encoding is specified in the xml declaration
3265
+ // Details:
3266
+ // SPACE: (#x20 | #x9 | #xD | #xA)+ === [ \x9\xD\xA]+
3267
+ // EQ: SPACE?=SPACE? === [ \x9\xD\xA]*=[ \x9\xD\xA]*
3268
+ if (preg_match('/^<\?xml\s+version\s*=\s*' . "((?:\"[a-zA-Z0-9_.:-]+\")|(?:'[a-zA-Z0-9_.:-]+'))" .
3269
+ '\s+encoding\s*=\s*' . "((?:\"[A-Za-z][A-Za-z0-9._-]*\")|(?:'[A-Za-z][A-Za-z0-9._-]*'))/",
3270
+ $xmlchunk, $matches)
3271
+ ) {
3272
+ return strtoupper(substr($matches[2], 1, -1));
3273
+ }
3274
+
3275
+ // 4 - if mbstring is available, let it do the guesswork
3276
+ // NB: we favour finding an encoding that is compatible with what we can process
3277
+ if (extension_loaded('mbstring')) {
3278
+ if ($encoding_prefs) {
3279
+ $enc = mb_detect_encoding($xmlchunk, $encoding_prefs);
3280
+ } else {
3281
+ $enc = mb_detect_encoding($xmlchunk);
3282
+ }
3283
+ // NB: mb_detect likes to call it ascii, xml parser likes to call it US_ASCII...
3284
+ // IANA also likes better US-ASCII, so go with it
3285
+ if ($enc == 'ASCII') {
3286
+ $enc = 'US-' . $enc;
3287
+ }
3288
+ return $enc;
3289
+ } else {
3290
+ // no encoding specified: as per HTTP1.1 assume it is iso-8859-1?
3291
+ // Both RFC 2616 (HTTP 1.1) and 1945 (HTTP 1.0) clearly state that for text/xxx content types
3292
+ // this should be the standard. And we should be getting text/xml as request and response.
3293
+ // BUT we have to be backward compatible with the lib, which always used UTF-8 as default...
3294
+ return $GLOBALS['xmlrpc_defencoding'];
3295
+ }
3296
+ }
3297
+
3298
+ /**
3299
+ * Checks if a given charset encoding is present in a list of encodings or
3300
+ * if it is a valid subset of any encoding in the list
3301
+ * @param string $encoding charset to be tested
3302
+ * @param mixed $validlist comma separated list of valid charsets (or array of charsets)
3303
+ */
3304
+ function is_valid_charset($encoding, $validlist)
3305
+ {
3306
+ $charset_supersets = array(
3307
+ 'US-ASCII' => array('ISO-8859-1', 'ISO-8859-2', 'ISO-8859-3', 'ISO-8859-4',
3308
+ 'ISO-8859-5', 'ISO-8859-6', 'ISO-8859-7', 'ISO-8859-8',
3309
+ 'ISO-8859-9', 'ISO-8859-10', 'ISO-8859-11', 'ISO-8859-12',
3310
+ 'ISO-8859-13', 'ISO-8859-14', 'ISO-8859-15', 'UTF-8',
3311
+ 'EUC-JP', 'EUC-', 'EUC-KR', 'EUC-CN')
3312
+ );
3313
+ if (is_string($validlist))
3314
+ $validlist = explode(',', $validlist);
3315
+ if (@in_array(strtoupper($encoding), $validlist))
3316
+ return true;
3317
+ else {
3318
+ if (array_key_exists($encoding, $charset_supersets))
3319
+ foreach ($validlist as $allowed)
3320
+ if (in_array($allowed, $charset_supersets[$encoding]))
3321
+ return true;
3322
+ return false;
3323
+ }
3324
+ }
3325
+
3326
+ ?>
includes/vendor/infusionsoft/xmlrpc-3.0/lib/xmlrpc_wrappers.inc ADDED
@@ -0,0 +1,955 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * PHP-XMLRPC "wrapper" functions
4
+ * Generate stubs to transparently access xmlrpc methods as php functions and viceversa
5
+ *
6
+ * @version $Id: xmlrpc_wrappers.inc,v 1.13 2008/09/20 01:23:47 ggiunta Exp $
7
+ * @author Gaetano Giunta
8
+ * @copyright (C) 2006-2009 G. Giunta
9
+ * @license code licensed under the BSD License: http://phpxmlrpc.sourceforge.net/license.txt
10
+ *
11
+ * @todo separate introspection from code generation for func-2-method wrapping
12
+ * @todo use some better templating system for code generation?
13
+ * @todo implement method wrapping with preservation of php objs in calls
14
+ * @todo when wrapping methods without obj rebuilding, use return_type = 'phpvals' (faster)
15
+ * @todo implement self-parsing of php code for PHP <= 4
16
+ */
17
+
18
+ // requires: xmlrpc.inc
19
+
20
+ /**
21
+ * Given a string defining a php type or phpxmlrpc type (loosely defined: strings
22
+ * accepted come from javadoc blocks), return corresponding phpxmlrpc type.
23
+ * NB: for php 'resource' types returns empty string, since resources cannot be serialized;
24
+ * for php class names returns 'struct', since php objects can be serialized as xmlrpc structs
25
+ * for php arrays always return array, even though arrays sometiles serialize as json structs
26
+ * @param string $phptype
27
+ * @return string
28
+ */
29
+ function php_2_xmlrpc_type($phptype)
30
+ {
31
+ switch(strtolower($phptype))
32
+ {
33
+ case 'string':
34
+ return $GLOBALS['xmlrpcString'];
35
+ case 'integer':
36
+ case $GLOBALS['xmlrpcInt']: // 'int'
37
+ case $GLOBALS['xmlrpcI4']:
38
+ return $GLOBALS['xmlrpcInt'];
39
+ case 'double':
40
+ return $GLOBALS['xmlrpcDouble'];
41
+ case 'boolean':
42
+ return $GLOBALS['xmlrpcBoolean'];
43
+ case 'array':
44
+ return $GLOBALS['xmlrpcArray'];
45
+ case 'object':
46
+ return $GLOBALS['xmlrpcStruct'];
47
+ case $GLOBALS['xmlrpcBase64']:
48
+ case $GLOBALS['xmlrpcStruct']:
49
+ return strtolower($phptype);
50
+ case 'resource':
51
+ return '';
52
+ default:
53
+ if(class_exists($phptype))
54
+ {
55
+ return $GLOBALS['xmlrpcStruct'];
56
+ }
57
+ else
58
+ {
59
+ // unknown: might be any 'extended' xmlrpc type
60
+ return $GLOBALS['xmlrpcValue'];
61
+ }
62
+ }
63
+ }
64
+
65
+ /**
66
+ * Given a string defining a phpxmlrpc type return corresponding php type.
67
+ * @param string $xmlrpctype
68
+ * @return string
69
+ */
70
+ function xmlrpc_2_php_type($xmlrpctype)
71
+ {
72
+ switch(strtolower($xmlrpctype))
73
+ {
74
+ case 'base64':
75
+ case 'datetime.iso8601':
76
+ case 'string':
77
+ return $GLOBALS['xmlrpcString'];
78
+ case 'int':
79
+ case 'i4':
80
+ return 'integer';
81
+ case 'struct':
82
+ case 'array':
83
+ return 'array';
84
+ case 'double':
85
+ return 'float';
86
+ case 'undefined':
87
+ return 'mixed';
88
+ case 'boolean':
89
+ case 'null':
90
+ default:
91
+ // unknown: might be any xmlrpc type
92
+ return strtolower($xmlrpctype);
93
+ }
94
+ }
95
+
96
+ /**
97
+ * Given a user-defined PHP function, create a PHP 'wrapper' function that can
98
+ * be exposed as xmlrpc method from an xmlrpc_server object and called from remote
99
+ * clients (as well as its corresponding signature info).
100
+ *
101
+ * Since php is a typeless language, to infer types of input and output parameters,
102
+ * it relies on parsing the javadoc-style comment block associated with the given
103
+ * function. Usage of xmlrpc native types (such as datetime.dateTime.iso8601 and base64)
104
+ * in the @param tag is also allowed, if you need the php function to receive/send
105
+ * data in that particular format (note that base64 encoding/decoding is transparently
106
+ * carried out by the lib, while datetime vals are passed around as strings)
107
+ *
108
+ * Known limitations:
109
+ * - requires PHP 5.0.3 +
110
+ * - only works for user-defined functions, not for PHP internal functions
111
+ * (reflection does not support retrieving number/type of params for those)
112
+ * - functions returning php objects will generate special xmlrpc responses:
113
+ * when the xmlrpc decoding of those responses is carried out by this same lib, using
114
+ * the appropriate param in php_xmlrpc_decode, the php objects will be rebuilt.
115
+ * In short: php objects can be serialized, too (except for their resource members),
116
+ * using this function.
117
+ * Other libs might choke on the very same xml that will be generated in this case
118
+ * (i.e. it has a nonstandard attribute on struct element tags)
119
+ * - usage of javadoc @param tags using param names in a different order from the
120
+ * function prototype is not considered valid (to be fixed?)
121
+ *
122
+ * Note that since rel. 2.0RC3 the preferred method to have the server call 'standard'
123
+ * php functions (ie. functions not expecting a single xmlrpcmsg obj as parameter)
124
+ * is by making use of the functions_parameters_type class member.
125
+ *
126
+ * @param string $funcname the name of the PHP user function to be exposed as xmlrpc method; array($obj, 'methodname') and array('class', 'methodname') are ok too
127
+ * @param string $newfuncname (optional) name for function to be created
128
+ * @param array $extra_options (optional) array of options for conversion. valid values include:
129
+ * bool return_source when true, php code w. function definition will be returned, not evaluated
130
+ * bool encode_php_objs let php objects be sent to server using the 'improved' xmlrpc notation, so server can deserialize them as php objects
131
+ * bool decode_php_objs --- WARNING !!! possible security hazard. only use it with trusted servers ---
132
+ * bool suppress_warnings remove from produced xml any runtime warnings due to the php function being invoked
133
+ * @return false on error, or an array containing the name of the new php function,
134
+ * its signature and docs, to be used in the server dispatch map
135
+ *
136
+ * @todo decide how to deal with params passed by ref: bomb out or allow?
137
+ * @todo finish using javadoc info to build method sig if all params are named but out of order
138
+ * @todo add a check for params of 'resource' type
139
+ * @todo add some trigger_errors / error_log when returning false?
140
+ * @todo what to do when the PHP function returns NULL? we are currently returning an empty string value...
141
+ * @todo add an option to suppress php warnings in invocation of user function, similar to server debug level 3?
142
+ * @todo if $newfuncname is empty, we could use create_user_func instead of eval, as it is possibly faster
143
+ * @todo add a verbatim_object_copy parameter to allow avoiding the same obj instance?
144
+ */
145
+ function wrap_php_function($funcname, $newfuncname='', $extra_options=array())
146
+ {
147
+ $buildit = isset($extra_options['return_source']) ? !($extra_options['return_source']) : true;
148
+ $prefix = isset($extra_options['prefix']) ? $extra_options['prefix'] : 'xmlrpc';
149
+ $encode_php_objects = isset($extra_options['encode_php_objs']) ? (bool)$extra_options['encode_php_objs'] : false;
150
+ $decode_php_objects = isset($extra_options['decode_php_objs']) ? (bool)$extra_options['decode_php_objs'] : false;
151
+ $catch_warnings = isset($extra_options['suppress_warnings']) && $extra_options['suppress_warnings'] ? '@' : '';
152
+
153
+ if(version_compare(phpversion(), '5.0.3') == -1)
154
+ {
155
+ // up to php 5.0.3 some useful reflection methods were missing
156
+ error_log('XML-RPC: cannot not wrap php functions unless running php version bigger than 5.0.3');
157
+ return false;
158
+ }
159
+
160
+ $exists = false;
161
+ if (is_string($funcname) && strpos($funcname, '::') !== false)
162
+ {
163
+ $funcname = explode('::', $funcname);
164
+ }
165
+ if(is_array($funcname))
166
+ {
167
+ if(count($funcname) < 2 || (!is_string($funcname[0]) && !is_object($funcname[0])))
168
+ {
169
+ error_log('XML-RPC: syntax for function to be wrapped is wrong');
170
+ return false;
171
+ }
172
+ if(is_string($funcname[0]))
173
+ {
174
+ $plainfuncname = implode('::', $funcname);
175
+ }
176
+ elseif(is_object($funcname[0]))
177
+ {
178
+ $plainfuncname = get_class($funcname[0]) . '->' . $funcname[1];
179
+ }
180
+ $exists = method_exists($funcname[0], $funcname[1]);
181
+ if (!$exists && version_compare(phpversion(), '5.1') < 0)
182
+ {
183
+ // workaround for php 5.0: static class methods are not seen by method_exists
184
+ $exists = is_callable( $funcname );
185
+ }
186
+ }
187
+ else
188
+ {
189
+ $plainfuncname = $funcname;
190
+ $exists = function_exists($funcname);
191
+ }
192
+
193
+ if(!$exists)
194
+ {
195
+ error_log('XML-RPC: function to be wrapped is not defined: '.$plainfuncname);
196
+ return false;
197
+ }
198
+ else
199
+ {
200
+ // determine name of new php function
201
+ if($newfuncname == '')
202
+ {
203
+ if(is_array($funcname))
204
+ {
205
+ if(is_string($funcname[0]))
206
+ $xmlrpcfuncname = "{$prefix}_".implode('_', $funcname);
207
+ else
208
+ $xmlrpcfuncname = "{$prefix}_".get_class($funcname[0]) . '_' . $funcname[1];
209
+ }
210
+ else
211
+ {
212
+ $xmlrpcfuncname = "{$prefix}_$funcname";
213
+ }
214
+ }
215
+ else
216
+ {
217
+ $xmlrpcfuncname = $newfuncname;
218
+ }
219
+ while($buildit && function_exists($xmlrpcfuncname))
220
+ {
221
+ $xmlrpcfuncname .= 'x';
222
+ }
223
+
224
+ // start to introspect PHP code
225
+ if(is_array($funcname))
226
+ {
227
+ $func = new ReflectionMethod($funcname[0], $funcname[1]);
228
+ if($func->isPrivate())
229
+ {
230
+ error_log('XML-RPC: method to be wrapped is private: '.$plainfuncname);
231
+ return false;
232
+ }
233
+ if($func->isProtected())
234
+ {
235
+ error_log('XML-RPC: method to be wrapped is protected: '.$plainfuncname);
236
+ return false;
237
+ }
238
+ if($func->isConstructor())
239
+ {
240
+ error_log('XML-RPC: method to be wrapped is the constructor: '.$plainfuncname);
241
+ return false;
242
+ }
243
+ // php 503 always says isdestructor = true...
244
+ if( version_compare(phpversion(), '5.0.3') != 0 && $func->isDestructor())
245
+ {
246
+ error_log('XML-RPC: method to be wrapped is the destructor: '.$plainfuncname);
247
+ return false;
248
+ }
249
+ if($func->isAbstract())
250
+ {
251
+ error_log('XML-RPC: method to be wrapped is abstract: '.$plainfuncname);
252
+ return false;
253
+ }
254
+ /// @todo add more checks for static vs. nonstatic?
255
+ }
256
+ else
257
+ {
258
+ $func = new ReflectionFunction($funcname);
259
+ }
260
+ if($func->isInternal())
261
+ {
262
+ // Note: from PHP 5.1.0 onward, we will possibly be able to use invokeargs
263
+ // instead of getparameters to fully reflect internal php functions ?
264
+ error_log('XML-RPC: function to be wrapped is internal: '.$plainfuncname);
265
+ return false;
266
+ }
267
+
268
+ // retrieve parameter names, types and description from javadoc comments
269
+
270
+ // function description
271
+ $desc = '';
272
+ // type of return val: by default 'any'
273
+ $returns = $GLOBALS['xmlrpcValue'];
274
+ // desc of return val
275
+ $returnsDocs = '';
276
+ // type + name of function parameters
277
+ $paramDocs = array();
278
+
279
+ $docs = $func->getDocComment();
280
+ if($docs != '')
281
+ {
282
+ $docs = explode("\n", $docs);
283
+ $i = 0;
284
+ foreach($docs as $doc)
285
+ {
286
+ $doc = trim($doc, " \r\t/*");
287
+ if(strlen($doc) && strpos($doc, '@') !== 0 && !$i)
288
+ {
289
+ if($desc)
290
+ {
291
+ $desc .= "\n";
292
+ }
293
+ $desc .= $doc;
294
+ }
295
+ elseif(strpos($doc, '@param') === 0)
296
+ {
297
+ // syntax: @param type [$name] desc
298
+ if(preg_match('/@param\s+(\S+)(\s+\$\S+)?\s+(.+)/', $doc, $matches))
299
+ {
300
+ if(strpos($matches[1], '|'))
301
+ {
302
+ //$paramDocs[$i]['type'] = explode('|', $matches[1]);
303
+ $paramDocs[$i]['type'] = 'mixed';
304
+ }
305
+ else
306
+ {
307
+ $paramDocs[$i]['type'] = $matches[1];
308
+ }
309
+ $paramDocs[$i]['name'] = trim($matches[2]);
310
+ $paramDocs[$i]['doc'] = $matches[3];
311
+ }
312
+ $i++;
313
+ }
314
+ elseif(strpos($doc, '@return') === 0)
315
+ {
316
+ // syntax: @return type desc
317
+ //$returns = preg_split('/\s+/', $doc);
318
+ if(preg_match('/@return\s+(\S+)\s+(.+)/', $doc, $matches))
319
+ {
320
+ $returns = php_2_xmlrpc_type($matches[1]);
321
+ if(isset($matches[2]))
322
+ {
323
+ $returnsDocs = $matches[2];
324
+ }
325
+ }
326
+ }
327
+ }
328
+ }
329
+
330
+ // execute introspection of actual function prototype
331
+ $params = array();
332
+ $i = 0;
333
+ foreach($func->getParameters() as $paramobj)
334
+ {
335
+ $params[$i] = array();
336
+ $params[$i]['name'] = '$'.$paramobj->getName();
337
+ $params[$i]['isoptional'] = $paramobj->isOptional();
338
+ $i++;
339
+ }
340
+
341
+
342
+ // start building of PHP code to be eval'd
343
+ $innercode = '';
344
+ $i = 0;
345
+ $parsvariations = array();
346
+ $pars = array();
347
+ $pnum = count($params);
348
+ foreach($params as $param)
349
+ {
350
+ if (isset($paramDocs[$i]['name']) && $paramDocs[$i]['name'] && strtolower($paramDocs[$i]['name']) != strtolower($param['name']))
351
+ {
352
+ // param name from phpdoc info does not match param definition!
353
+ $paramDocs[$i]['type'] = 'mixed';
354
+ }
355
+
356
+ if($param['isoptional'])
357
+ {
358
+ // this particular parameter is optional. save as valid previous list of parameters
359
+ $innercode .= "if (\$paramcount > $i) {\n";
360
+ $parsvariations[] = $pars;
361
+ }
362
+ $innercode .= "\$p$i = \$msg->getParam($i);\n";
363
+ if ($decode_php_objects)
364
+ {
365
+ $innercode .= "if (\$p{$i}->kindOf() == 'scalar') \$p$i = \$p{$i}->scalarval(); else \$p$i = php_{$prefix}_decode(\$p$i, array('decode_php_objs'));\n";
366
+ }
367
+ else
368
+ {
369
+ $innercode .= "if (\$p{$i}->kindOf() == 'scalar') \$p$i = \$p{$i}->scalarval(); else \$p$i = php_{$prefix}_decode(\$p$i);\n";
370
+ }
371
+
372
+ $pars[] = "\$p$i";
373
+ $i++;
374
+ if($param['isoptional'])
375
+ {
376
+ $innercode .= "}\n";
377
+ }
378
+ if($i == $pnum)
379
+ {
380
+ // last allowed parameters combination
381
+ $parsvariations[] = $pars;
382
+ }
383
+ }
384
+
385
+ $sigs = array();
386
+ $psigs = array();
387
+ if(count($parsvariations) == 0)
388
+ {
389
+ // only known good synopsis = no parameters
390
+ $parsvariations[] = array();
391
+ $minpars = 0;
392
+ }
393
+ else
394
+ {
395
+ $minpars = count($parsvariations[0]);
396
+ }
397
+
398
+ if($minpars)
399
+ {
400
+ // add to code the check for min params number
401
+ // NB: this check needs to be done BEFORE decoding param values
402
+ $innercode = "\$paramcount = \$msg->getNumParams();\n" .
403
+ "if (\$paramcount < $minpars) return new {$prefix}resp(0, {$GLOBALS['xmlrpcerr']['incorrect_params']}, '{$GLOBALS['xmlrpcstr']['incorrect_params']}');\n" . $innercode;
404
+ }
405
+ else
406
+ {
407
+ $innercode = "\$paramcount = \$msg->getNumParams();\n" . $innercode;
408
+ }
409
+
410
+ $innercode .= "\$np = false;\n";
411
+ // since there are no closures in php, if we are given an object instance,
412
+ // we store a pointer to it in a global var...
413
+ if ( is_array($funcname) && is_object($funcname[0]) )
414
+ {
415
+ $GLOBALS['xmlrpcWPFObjHolder'][$xmlrpcfuncname] =& $funcname[0];
416
+ $innercode .= "\$obj =& \$GLOBALS['xmlrpcWPFObjHolder']['$xmlrpcfuncname'];\n";
417
+ $realfuncname = '$obj->'.$funcname[1];
418
+ }
419
+ else
420
+ {
421
+ $realfuncname = $plainfuncname;
422
+ }
423
+ foreach($parsvariations as $pars)
424
+ {
425
+ $innercode .= "if (\$paramcount == " . count($pars) . ") \$retval = {$catch_warnings}$realfuncname(" . implode(',', $pars) . "); else\n";
426
+ // build a 'generic' signature (only use an appropriate return type)
427
+ $sig = array($returns);
428
+ $psig = array($returnsDocs);
429
+ for($i=0; $i < count($pars); $i++)
430
+ {
431
+ if (isset($paramDocs[$i]['type']))
432
+ {
433
+ $sig[] = php_2_xmlrpc_type($paramDocs[$i]['type']);
434
+ }
435
+ else
436
+ {
437
+ $sig[] = $GLOBALS['xmlrpcValue'];
438
+ }
439
+ $psig[] = isset($paramDocs[$i]['doc']) ? $paramDocs[$i]['doc'] : '';
440
+ }
441
+ $sigs[] = $sig;
442
+ $psigs[] = $psig;
443
+ }
444
+ $innercode .= "\$np = true;\n";
445
+ $innercode .= "if (\$np) return new {$prefix}resp(0, {$GLOBALS['xmlrpcerr']['incorrect_params']}, '{$GLOBALS['xmlrpcstr']['incorrect_params']}'); else {\n";
446
+ //$innercode .= "if (\$_xmlrpcs_error_occurred) return new xmlrpcresp(0, $GLOBALS['xmlrpcerr']user, \$_xmlrpcs_error_occurred); else\n";
447
+ $innercode .= "if (is_a(\$retval, '{$prefix}resp')) return \$retval; else\n";
448
+ if($returns == $GLOBALS['xmlrpcDateTime'] || $returns == $GLOBALS['xmlrpcBase64'])
449
+ {
450
+ $innercode .= "return new {$prefix}resp(new {$prefix}val(\$retval, '$returns'));";
451
+ }
452
+ else
453
+ {
454
+ if ($encode_php_objects)
455
+ $innercode .= "return new {$prefix}resp(php_{$prefix}_encode(\$retval, array('encode_php_objs')));\n";
456
+ else
457
+ $innercode .= "return new {$prefix}resp(php_{$prefix}_encode(\$retval));\n";
458
+ }
459
+ // shall we exclude functions returning by ref?
460
+ // if($func->returnsReference())
461
+ // return false;
462
+ $code = "function $xmlrpcfuncname(\$msg) {\n" . $innercode . "}\n}";
463
+ //print_r($code);
464
+ if ($buildit)
465
+ {
466
+ $allOK = 0;
467
+ eval($code.'$allOK=1;');
468
+ // alternative
469
+ //$xmlrpcfuncname = create_function('$m', $innercode);
470
+
471
+ if(!$allOK)
472
+ {
473
+ error_log('XML-RPC: could not create function '.$xmlrpcfuncname.' to wrap php function '.$plainfuncname);
474
+ return false;
475
+ }
476
+ }
477
+
478
+ /// @todo examine if $paramDocs matches $parsvariations and build array for
479
+ /// usage as method signature, plus put together a nice string for docs
480
+
481
+ $ret = array('function' => $xmlrpcfuncname, 'signature' => $sigs, 'docstring' => $desc, 'signature_docs' => $psigs, 'source' => $code);
482
+ return $ret;
483
+ }
484
+ }
485
+
486
+ /**
487
+ * Given a user-defined PHP class or php object, map its methods onto a list of
488
+ * PHP 'wrapper' functions that can be exposed as xmlrpc methods from an xmlrpc_server
489
+ * object and called from remote clients (as well as their corresponding signature info).
490
+ *
491
+ * @param mixed $classname the name of the class whose methods are to be exposed as xmlrpc methods, or an object instance of that class
492
+ * @param array $extra_options see the docs for wrap_php_method for more options
493
+ * string method_type 'static', 'nonstatic', 'all' and 'auto' (default); the latter will switch between static and non-static depending on wheter $classname is a class name or object instance
494
+ * @return array or false on failure
495
+ *
496
+ * @todo get_class_methods will return both static and non-static methods.
497
+ * we have to differentiate the action, depending on wheter we recived a class name or object
498
+ */
499
+ function wrap_php_class($classname, $extra_options=array())
500
+ {
501
+ $methodfilter = isset($extra_options['method_filter']) ? $extra_options['method_filter'] : '';
502
+ $methodtype = isset($extra_options['method_type']) ? $extra_options['method_type'] : 'auto';
503
+
504
+ if(version_compare(phpversion(), '5.0.3') == -1)
505
+ {
506
+ // up to php 5.0.3 some useful reflection methods were missing
507
+ error_log('XML-RPC: cannot not wrap php functions unless running php version bigger than 5.0.3');
508
+ return false;
509
+ }
510
+
511
+ $result = array();
512
+ $mlist = get_class_methods($classname);
513
+ foreach($mlist as $mname)
514
+ {
515
+ if ($methodfilter == '' || preg_match($methodfilter, $mname))
516
+ {
517
+ // echo $mlist."\n";
518
+ $func = new ReflectionMethod($classname, $mname);
519
+ if(!$func->isPrivate() && !$func->isProtected() && !$func->isConstructor() && !$func->isDestructor() && !$func->isAbstract())
520
+ {
521
+ if(($func->isStatic && ($methodtype == 'all' || $methodtype == 'static' || ($methodtype == 'auto' && is_string($classname)))) ||
522
+ (!$func->isStatic && ($methodtype == 'all' || $methodtype == 'nonstatic' || ($methodtype == 'auto' && is_object($classname)))))
523
+ {
524
+ $methodwrap = wrap_php_function(array($classname, $mname), '', $extra_options);
525
+ if ( $methodwrap )
526
+ {
527
+ $result[$methodwrap['function']] = $methodwrap['function'];
528
+ }
529
+ }
530
+ }
531
+ }
532
+ }
533
+ return $result;
534
+ }
535
+
536
+ /**
537
+ * Given an xmlrpc client and a method name, register a php wrapper function
538
+ * that will call it and return results using native php types for both
539
+ * params and results. The generated php function will return an xmlrpcresp
540
+ * oject for failed xmlrpc calls
541
+ *
542
+ * Known limitations:
543
+ * - server must support system.methodsignature for the wanted xmlrpc method
544
+ * - for methods that expose many signatures, only one can be picked (we
545
+ * could in priciple check if signatures differ only by number of params
546
+ * and not by type, but it would be more complication than we can spare time)
547
+ * - nested xmlrpc params: the caller of the generated php function has to
548
+ * encode on its own the params passed to the php function if these are structs
549
+ * or arrays whose (sub)members include values of type datetime or base64
550
+ *
551
+ * Notes: the connection properties of the given client will be copied
552
+ * and reused for the connection used during the call to the generated
553
+ * php function.
554
+ * Calling the generated php function 'might' be slow: a new xmlrpc client
555
+ * is created on every invocation and an xmlrpc-connection opened+closed.
556
+ * An extra 'debug' param is appended to param list of xmlrpc method, useful
557
+ * for debugging purposes.
558
+ *
559
+ * @param xmlrpc_client $client an xmlrpc client set up correctly to communicate with target server
560
+ * @param string $methodname the xmlrpc method to be mapped to a php function
561
+ * @param array $extra_options array of options that specify conversion details. valid ptions include
562
+ * integer signum the index of the method signature to use in mapping (if method exposes many sigs)
563
+ * integer timeout timeout (in secs) to be used when executing function/calling remote method
564
+ * string protocol 'http' (default), 'http11' or 'https'
565
+ * string new_function_name the name of php function to create. If unsepcified, lib will pick an appropriate name
566
+ * string return_source if true return php code w. function definition instead fo function name
567
+ * bool encode_php_objs let php objects be sent to server using the 'improved' xmlrpc notation, so server can deserialize them as php objects
568
+ * bool decode_php_objs --- WARNING !!! possible security hazard. only use it with trusted servers ---
569
+ * mixed return_on_fault a php value to be returned when the xmlrpc call fails/returns a fault response (by default the xmlrpcresp object is returned in this case). If a string is used, '%faultCode%' and '%faultString%' tokens will be substituted with actual error values
570
+ * bool debug set it to 1 or 2 to see debug results of querying server for method synopsis
571
+ * @return string the name of the generated php function (or false) - OR AN ARRAY...
572
+ */
573
+ function wrap_xmlrpc_method($client, $methodname, $extra_options=0, $timeout=0, $protocol='', $newfuncname='')
574
+ {
575
+ // mind numbing: let caller use sane calling convention (as per javadoc, 3 params),
576
+ // OR the 2.0 calling convention (no options) - we really love backward compat, don't we?
577
+ if (!is_array($extra_options))
578
+ {
579
+ $signum = $extra_options;
580
+ $extra_options = array();
581
+ }
582
+ else
583
+ {
584
+ $signum = isset($extra_options['signum']) ? (int)$extra_options['signum'] : 0;
585
+ $timeout = isset($extra_options['timeout']) ? (int)$extra_options['timeout'] : 0;
586
+ $protocol = isset($extra_options['protocol']) ? $extra_options['protocol'] : '';
587
+ $newfuncname = isset($extra_options['new_function_name']) ? $extra_options['new_function_name'] : '';
588
+ }
589
+ //$encode_php_objects = in_array('encode_php_objects', $extra_options);
590
+ //$verbatim_client_copy = in_array('simple_client_copy', $extra_options) ? 1 :
591
+ // in_array('build_class_code', $extra_options) ? 2 : 0;
592
+
593
+ $encode_php_objects = isset($extra_options['encode_php_objs']) ? (bool)$extra_options['encode_php_objs'] : false;
594
+ $decode_php_objects = isset($extra_options['decode_php_objs']) ? (bool)$extra_options['decode_php_objs'] : false;
595
+ $simple_client_copy = isset($extra_options['simple_client_copy']) ? (int)($extra_options['simple_client_copy']) : 0;
596
+ $buildit = isset($extra_options['return_source']) ? !($extra_options['return_source']) : true;
597
+ $prefix = isset($extra_options['prefix']) ? $extra_options['prefix'] : 'xmlrpc';
598
+ if (isset($extra_options['return_on_fault']))
599
+ {
600
+ $decode_fault = true;
601
+ $fault_response = $extra_options['return_on_fault'];
602
+ }
603
+ else
604
+ {
605
+ $decode_fault = false;
606
+ $fault_response = '';
607
+ }
608
+ $debug = isset($extra_options['debug']) ? ($extra_options['debug']) : 0;
609
+
610
+ $msgclass = $prefix.'msg';
611
+ $valclass = $prefix.'val';
612
+ $decodefunc = 'php_'.$prefix.'_decode';
613
+
614
+ $msg = new $msgclass('system.methodSignature');
615
+ $msg->addparam(new $valclass($methodname));
616
+ $client->setDebug($debug);
617
+ $response =& $client->send($msg, $timeout, $protocol);
618
+ if($response->faultCode())
619
+ {
620
+ error_log('XML-RPC: could not retrieve method signature from remote server for method '.$methodname);
621
+ return false;
622
+ }
623
+ else
624
+ {
625
+ $msig = $response->value();
626
+ if ($client->return_type != 'phpvals')
627
+ {
628
+ $msig = $decodefunc($msig);
629
+ }
630
+ if(!is_array($msig) || count($msig) <= $signum)
631
+ {
632
+ error_log('XML-RPC: could not retrieve method signature nr.'.$signum.' from remote server for method '.$methodname);
633
+ return false;
634
+ }
635
+ else
636
+ {
637
+ // pick a suitable name for the new function, avoiding collisions
638
+ if($newfuncname != '')
639
+ {
640
+ $xmlrpcfuncname = $newfuncname;
641
+ }
642
+ else
643
+ {
644
+ // take care to insure that methodname is translated to valid
645
+ // php function name
646
+ $xmlrpcfuncname = $prefix.'_'.preg_replace(array('/\./', '/[^a-zA-Z0-9_\x7f-\xff]/'),
647
+ array('_', ''), $methodname);
648
+ }
649
+ while($buildit && function_exists($xmlrpcfuncname))
650
+ {
651
+ $xmlrpcfuncname .= 'x';
652
+ }
653
+
654
+ $msig = $msig[$signum];
655
+ $mdesc = '';
656
+ // if in 'offline' mode, get method description too.
657
+ // in online mode, favour speed of operation
658
+ if(!$buildit)
659
+ {
660
+ $msg = new $msgclass('system.methodHelp');
661
+ $msg->addparam(new $valclass($methodname));
662
+ $response =& $client->send($msg, $timeout, $protocol);
663
+ if (!$response->faultCode())
664
+ {
665
+ $mdesc = $response->value();
666
+ if ($client->return_type != 'phpvals')
667
+ {
668
+ $mdesc = $mdesc->scalarval();
669
+ }
670
+ }
671
+ }
672
+
673
+ $results = build_remote_method_wrapper_code($client, $methodname,
674
+ $xmlrpcfuncname, $msig, $mdesc, $timeout, $protocol, $simple_client_copy,
675
+ $prefix, $decode_php_objects, $encode_php_objects, $decode_fault,
676
+ $fault_response);
677
+
678
+ //print_r($code);
679
+ if ($buildit)
680
+ {
681
+ $allOK = 0;
682
+ eval($results['source'].'$allOK=1;');
683
+ // alternative
684
+ //$xmlrpcfuncname = create_function('$m', $innercode);
685
+ if($allOK)
686
+ {
687
+ return $xmlrpcfuncname;
688
+ }
689
+ else
690
+ {
691
+ error_log('XML-RPC: could not create function '.$xmlrpcfuncname.' to wrap remote method '.$methodname);
692
+ return false;
693
+ }
694
+ }
695
+ else
696
+ {
697
+ $results['function'] = $xmlrpcfuncname;
698
+ return $results;
699
+ }
700
+ }
701
+ }
702
+ }
703
+
704
+ /**
705
+ * Similar to wrap_xmlrpc_method, but will generate a php class that wraps
706
+ * all xmlrpc methods exposed by the remote server as own methods.
707
+ * For more details see wrap_xmlrpc_method.
708
+ * @param xmlrpc_client $client the client obj all set to query the desired server
709
+ * @param array $extra_options list of options for wrapped code
710
+ * @return mixed false on error, the name of the created class if all ok or an array with code, class name and comments (if the appropriatevoption is set in extra_options)
711
+ */
712
+ function wrap_xmlrpc_server($client, $extra_options=array())
713
+ {
714
+ $methodfilter = isset($extra_options['method_filter']) ? $extra_options['method_filter'] : '';
715
+ //$signum = isset($extra_options['signum']) ? (int)$extra_options['signum'] : 0;
716
+ $timeout = isset($extra_options['timeout']) ? (int)$extra_options['timeout'] : 0;
717
+ $protocol = isset($extra_options['protocol']) ? $extra_options['protocol'] : '';
718
+ $newclassname = isset($extra_options['new_class_name']) ? $extra_options['new_class_name'] : '';
719
+ $encode_php_objects = isset($extra_options['encode_php_objs']) ? (bool)$extra_options['encode_php_objs'] : false;
720
+ $decode_php_objects = isset($extra_options['decode_php_objs']) ? (bool)$extra_options['decode_php_objs'] : false;
721
+ $verbatim_client_copy = isset($extra_options['simple_client_copy']) ? !($extra_options['simple_client_copy']) : true;
722
+ $buildit = isset($extra_options['return_source']) ? !($extra_options['return_source']) : true;
723
+ $prefix = isset($extra_options['prefix']) ? $extra_options['prefix'] : 'xmlrpc';
724
+
725
+ $msgclass = $prefix.'msg';
726
+ //$valclass = $prefix.'val';
727
+ $decodefunc = 'php_'.$prefix.'_decode';
728
+
729
+ $msg = new $msgclass('system.listMethods');
730
+ $response =& $client->send($msg, $timeout, $protocol);
731
+ if($response->faultCode())
732
+ {
733
+ error_log('XML-RPC: could not retrieve method list from remote server');
734
+ return false;
735
+ }
736
+ else
737
+ {
738
+ $mlist = $response->value();
739
+ if ($client->return_type != 'phpvals')
740
+ {
741
+ $mlist = $decodefunc($mlist);
742
+ }
743
+ if(!is_array($mlist) || !count($mlist))
744
+ {
745
+ error_log('XML-RPC: could not retrieve meaningful method list from remote server');
746
+ return false;
747
+ }
748
+ else
749
+ {
750
+ // pick a suitable name for the new function, avoiding collisions
751
+ if($newclassname != '')
752
+ {
753
+ $xmlrpcclassname = $newclassname;
754
+ }
755
+ else
756
+ {
757
+ $xmlrpcclassname = $prefix.'_'.preg_replace(array('/\./', '/[^a-zA-Z0-9_\x7f-\xff]/'),
758
+ array('_', ''), $client->server).'_client';
759
+ }
760
+ while($buildit && class_exists($xmlrpcclassname))
761
+ {
762
+ $xmlrpcclassname .= 'x';
763
+ }
764
+
765
+ /// @todo add function setdebug() to new class, to enable/disable debugging
766
+ $source = "class $xmlrpcclassname\n{\nvar \$client;\n\n";
767
+ $source .= "function $xmlrpcclassname()\n{\n";
768
+ $source .= build_client_wrapper_code($client, $verbatim_client_copy, $prefix);
769
+ $source .= "\$this->client =& \$client;\n}\n\n";
770
+ $opts = array('simple_client_copy' => 2, 'return_source' => true,
771
+ 'timeout' => $timeout, 'protocol' => $protocol,
772
+ 'encode_php_objs' => $encode_php_objects, 'prefix' => $prefix,
773
+ 'decode_php_objs' => $decode_php_objects
774
+ );
775
+ /// @todo build javadoc for class definition, too
776
+ foreach($mlist as $mname)
777
+ {
778
+ if ($methodfilter == '' || preg_match($methodfilter, $mname))
779
+ {
780
+ $opts['new_function_name'] = preg_replace(array('/\./', '/[^a-zA-Z0-9_\x7f-\xff]/'),
781
+ array('_', ''), $mname);
782
+ $methodwrap = wrap_xmlrpc_method($client, $mname, $opts);
783
+ if ($methodwrap)
784
+ {
785
+ if (!$buildit)
786
+ {
787
+ $source .= $methodwrap['docstring'];
788
+ }
789
+ $source .= $methodwrap['source']."\n";
790
+ }
791
+ else
792
+ {
793
+ error_log('XML-RPC: will not create class method to wrap remote method '.$mname);
794
+ }
795
+ }
796
+ }
797
+ $source .= "}\n";
798
+ if ($buildit)
799
+ {
800
+ $allOK = 0;
801
+ eval($source.'$allOK=1;');
802
+ // alternative
803
+ //$xmlrpcfuncname = create_function('$m', $innercode);
804
+ if($allOK)
805
+ {
806
+ return $xmlrpcclassname;
807
+ }
808
+ else
809
+ {
810
+ error_log('XML-RPC: could not create class '.$xmlrpcclassname.' to wrap remote server '.$client->server);
811
+ return false;
812
+ }
813
+ }
814
+ else
815
+ {
816
+ return array('class' => $xmlrpcclassname, 'code' => $source, 'docstring' => '');
817
+ }
818
+ }
819
+ }
820
+ }
821
+
822
+ /**
823
+ * Given the necessary info, build php code that creates a new function to
824
+ * invoke a remote xmlrpc method.
825
+ * Take care that no full checking of input parameters is done to ensure that
826
+ * valid php code is emitted.
827
+ * Note: real spaghetti code follows...
828
+ * @access private
829
+ */
830
+ function build_remote_method_wrapper_code($client, $methodname, $xmlrpcfuncname,
831
+ $msig, $mdesc='', $timeout=0, $protocol='', $client_copy_mode=0, $prefix='xmlrpc',
832
+ $decode_php_objects=false, $encode_php_objects=false, $decode_fault=false,
833
+ $fault_response='')
834
+ {
835
+ $code = "function $xmlrpcfuncname (";
836
+ if ($client_copy_mode < 2)
837
+ {
838
+ // client copy mode 0 or 1 == partial / full client copy in emitted code
839
+ $innercode = build_client_wrapper_code($client, $client_copy_mode, $prefix);
840
+ $innercode .= "\$client->setDebug(\$debug);\n";
841
+ $this_ = '';
842
+ }
843
+ else
844
+ {
845
+ // client copy mode 2 == no client copy in emitted code
846
+ $innercode = '';
847
+ $this_ = 'this->';
848
+ }
849
+ $innercode .= "\$msg = new {$prefix}msg('$methodname');\n";
850
+
851
+ if ($mdesc != '')
852
+ {
853
+ // take care that PHP comment is not terminated unwillingly by method description
854
+ $mdesc = "/**\n* ".str_replace('*/', '* /', $mdesc)."\n";
855
+ }
856
+ else
857
+ {
858
+ $mdesc = "/**\nFunction $xmlrpcfuncname\n";
859
+ }
860
+
861
+ // param parsing
862
+ $plist = array();
863
+ $pcount = count($msig);
864
+ for($i = 1; $i < $pcount; $i++)
865
+ {
866
+ $plist[] = "\$p$i";
867
+ $ptype = $msig[$i];
868
+ if($ptype == 'i4' || $ptype == 'int' || $ptype == 'boolean' || $ptype == 'double' ||
869
+ $ptype == 'string' || $ptype == 'dateTime.iso8601' || $ptype == 'base64' || $ptype == 'null')
870
+ {
871
+ // only build directly xmlrpcvals when type is known and scalar
872
+ $innercode .= "\$p$i = new {$prefix}val(\$p$i, '$ptype');\n";
873
+ }
874
+ else
875
+ {
876
+ if ($encode_php_objects)
877
+ {
878
+ $innercode .= "\$p$i =& php_{$prefix}_encode(\$p$i, array('encode_php_objs'));\n";
879
+ }
880
+ else
881
+ {
882
+ $innercode .= "\$p$i =& php_{$prefix}_encode(\$p$i);\n";
883
+ }
884
+ }
885
+ $innercode .= "\$msg->addparam(\$p$i);\n";
886
+ $mdesc .= '* @param '.xmlrpc_2_php_type($ptype)." \$p$i\n";
887
+ }
888
+ if ($client_copy_mode < 2)
889
+ {
890
+ $plist[] = '$debug=0';
891
+ $mdesc .= "* @param int \$debug when 1 (or 2) will enable debugging of the underlying {$prefix} call (defaults to 0)\n";
892
+ }
893
+ $plist = implode(', ', $plist);
894
+ $mdesc .= '* @return '.xmlrpc_2_php_type($msig[0])." (or an {$prefix}resp obj instance if call fails)\n*/\n";
895
+
896
+ $innercode .= "\$res =& \${$this_}client->send(\$msg, $timeout, '$protocol');\n";
897
+ if ($decode_fault)
898
+ {
899
+ if (is_string($fault_response) && ((strpos($fault_response, '%faultCode%') !== false) || (strpos($fault_response, '%faultString%') !== false)))
900
+ {
901
+ $respcode = "str_replace(array('%faultCode%', '%faultString%'), array(\$res->faultCode(), \$res->faultString()), '".str_replace("'", "''", $fault_response)."')";
902
+ }
903
+ else
904
+ {
905
+ $respcode = var_export($fault_response, true);
906
+ }
907
+ }
908
+ else
909
+ {
910
+ $respcode = '$res';
911
+ }
912
+ if ($decode_php_objects)
913
+ {
914
+ $innercode .= "if (\$res->faultcode()) return $respcode; else return php_{$prefix}_decode(\$res->value(), array('decode_php_objs'));";
915
+ }
916
+ else
917
+ {
918
+ $innercode .= "if (\$res->faultcode()) return $respcode; else return php_{$prefix}_decode(\$res->value());";
919
+ }
920
+
921
+ $code = $code . $plist. ") {\n" . $innercode . "\n}\n";
922
+
923
+ return array('source' => $code, 'docstring' => $mdesc);
924
+ }
925
+
926
+ /**
927
+ * Given necessary info, generate php code that will rebuild a client object
928
+ * Take care that no full checking of input parameters is done to ensure that
929
+ * valid php code is emitted.
930
+ * @access private
931
+ */
932
+ function build_client_wrapper_code($client, $verbatim_client_copy, $prefix='xmlrpc')
933
+ {
934
+ $code = "\$client = new {$prefix}_client('".str_replace("'", "\'", $client->path).
935
+ "', '" . str_replace("'", "\'", $client->server) . "', $client->port);\n";
936
+
937
+ // copy all client fields to the client that will be generated runtime
938
+ // (this provides for future expansion or subclassing of client obj)
939
+ if ($verbatim_client_copy)
940
+ {
941
+ foreach($client as $fld => $val)
942
+ {
943
+ if($fld != 'debug' && $fld != 'return_type')
944
+ {
945
+ $val = var_export($val, true);
946
+ $code .= "\$client->$fld = $val;\n";
947
+ }
948
+ }
949
+ }
950
+ // only make sure that client always returns the correct data type
951
+ $code .= "\$client->return_type = '{$prefix}vals';\n";
952
+ //$code .= "\$client->setDebug(\$debug);\n";
953
+ return $code;
954
+ }
955
+ ?>
includes/vendor/infusionsoft/xmlrpc-3.0/lib/xmlrpcs.inc ADDED
@@ -0,0 +1,1246 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ // by Edd Dumbill (C) 1999-2002
3
+ // <edd@usefulinc.com>
4
+ // $Id: xmlrpcs.inc,v 1.71 2008/10/29 23:41:28 ggiunta Exp $
5
+
6
+ // Copyright (c) 1999,2000,2002 Edd Dumbill.
7
+ // All rights reserved.
8
+ //
9
+ // Redistribution and use in source and binary forms, with or without
10
+ // modification, are permitted provided that the following conditions
11
+ // are met:
12
+ //
13
+ // * Redistributions of source code must retain the above copyright
14
+ // notice, this list of conditions and the following disclaimer.
15
+ //
16
+ // * Redistributions in binary form must reproduce the above
17
+ // copyright notice, this list of conditions and the following
18
+ // disclaimer in the documentation and/or other materials provided
19
+ // with the distribution.
20
+ //
21
+ // * Neither the name of the "XML-RPC for PHP" nor the names of its
22
+ // contributors may be used to endorse or promote products derived
23
+ // from this software without specific prior written permission.
24
+ //
25
+ // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
26
+ // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
27
+ // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
28
+ // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
29
+ // REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
30
+ // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
31
+ // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
32
+ // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
33
+ // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
34
+ // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
35
+ // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
36
+ // OF THE POSSIBILITY OF SUCH DAMAGE.
37
+
38
+ // XML RPC Server class
39
+ // requires: xmlrpc.inc
40
+
41
+ $GLOBALS['xmlrpcs_capabilities'] = array(
42
+ // xmlrpc spec: always supported
43
+ 'xmlrpc' => new xmlrpcval(array(
44
+ 'specUrl' => new xmlrpcval('http://www.xmlrpc.com/spec', 'string'),
45
+ 'specVersion' => new xmlrpcval(1, 'int')
46
+ ), 'struct'),
47
+ // if we support system.xxx functions, we always support multicall, too...
48
+ // Note that, as of 2006/09/17, the following URL does not respond anymore
49
+ 'system.multicall' => new xmlrpcval(array(
50
+ 'specUrl' => new xmlrpcval('http://www.xmlrpc.com/discuss/msgReader$1208', 'string'),
51
+ 'specVersion' => new xmlrpcval(1, 'int')
52
+ ), 'struct'),
53
+ // introspection: version 2! we support 'mixed', too
54
+ 'introspection' => new xmlrpcval(array(
55
+ 'specUrl' => new xmlrpcval('http://phpxmlrpc.sourceforge.net/doc-2/ch10.html', 'string'),
56
+ 'specVersion' => new xmlrpcval(2, 'int')
57
+ ), 'struct')
58
+ );
59
+
60
+ /* Functions that implement system.XXX methods of xmlrpc servers */
61
+ $_xmlrpcs_getCapabilities_sig=array(array($GLOBALS['xmlrpcStruct']));
62
+ $_xmlrpcs_getCapabilities_doc='This method lists all the capabilites that the XML-RPC server has: the (more or less standard) extensions to the xmlrpc spec that it adheres to';
63
+ $_xmlrpcs_getCapabilities_sdoc=array(array('list of capabilities, described as structs with a version number and url for the spec'));
64
+ function _xmlrpcs_getCapabilities($server, $m=null)
65
+ {
66
+ $outAr = $GLOBALS['xmlrpcs_capabilities'];
67
+ // NIL extension
68
+ if ($GLOBALS['xmlrpc_null_extension']) {
69
+ $outAr['nil'] = new xmlrpcval(array(
70
+ 'specUrl' => new xmlrpcval('http://www.ontosys.com/xml-rpc/extensions.php', 'string'),
71
+ 'specVersion' => new xmlrpcval(1, 'int')
72
+ ), 'struct');
73
+ }
74
+ return new xmlrpcresp(new xmlrpcval($outAr, 'struct'));
75
+ }
76
+
77
+ // listMethods: signature was either a string, or nothing.
78
+ // The useless string variant has been removed
79
+ $_xmlrpcs_listMethods_sig=array(array($GLOBALS['xmlrpcArray']));
80
+ $_xmlrpcs_listMethods_doc='This method lists all the methods that the XML-RPC server knows how to dispatch';
81
+ $_xmlrpcs_listMethods_sdoc=array(array('list of method names'));
82
+ function _xmlrpcs_listMethods($server, $m=null) // if called in plain php values mode, second param is missing
83
+ {
84
+
85
+ $outAr=array();
86
+ foreach($server->dmap as $key => $val)
87
+ {
88
+ $outAr[]=new xmlrpcval($key, 'string');
89
+ }
90
+ if($server->allow_system_funcs)
91
+ {
92
+ foreach($GLOBALS['_xmlrpcs_dmap'] as $key => $val)
93
+ {
94
+ $outAr[]=new xmlrpcval($key, 'string');
95
+ }
96
+ }
97
+ return new xmlrpcresp(new xmlrpcval($outAr, 'array'));
98
+ }
99
+
100
+ $_xmlrpcs_methodSignature_sig=array(array($GLOBALS['xmlrpcArray'], $GLOBALS['xmlrpcString']));
101
+ $_xmlrpcs_methodSignature_doc='Returns an array of known signatures (an array of arrays) for the method name passed. If no signatures are known, returns a none-array (test for type != array to detect missing signature)';
102
+ $_xmlrpcs_methodSignature_sdoc=array(array('list of known signatures, each sig being an array of xmlrpc type names', 'name of method to be described'));
103
+ function _xmlrpcs_methodSignature($server, $m)
104
+ {
105
+ // let accept as parameter both an xmlrpcval or string
106
+ if (is_object($m))
107
+ {
108
+ $methName=$m->getParam(0);
109
+ $methName=$methName->scalarval();
110
+ }
111
+ else
112
+ {
113
+ $methName=$m;
114
+ }
115
+ if(strpos($methName, "system.") === 0)
116
+ {
117
+ $dmap=$GLOBALS['_xmlrpcs_dmap']; $sysCall=1;
118
+ }
119
+ else
120
+ {
121
+ $dmap=$server->dmap; $sysCall=0;
122
+ }
123
+ if(isset($dmap[$methName]))
124
+ {
125
+ if(isset($dmap[$methName]['signature']))
126
+ {
127
+ $sigs=array();
128
+ foreach($dmap[$methName]['signature'] as $inSig)
129
+ {
130
+ $cursig=array();
131
+ foreach($inSig as $sig)
132
+ {
133
+ $cursig[]=new xmlrpcval($sig, 'string');
134
+ }
135
+ $sigs[]=new xmlrpcval($cursig, 'array');
136
+ }
137
+ $r=new xmlrpcresp(new xmlrpcval($sigs, 'array'));
138
+ }
139
+ else
140
+ {
141
+ // NB: according to the official docs, we should be returning a
142
+ // "none-array" here, which means not-an-array
143
+ $r=new xmlrpcresp(new xmlrpcval('undef', 'string'));
144
+ }
145
+ }
146
+ else
147
+ {
148
+ $r=new xmlrpcresp(0,$GLOBALS['xmlrpcerr']['introspect_unknown'], $GLOBALS['xmlrpcstr']['introspect_unknown']);
149
+ }
150
+ return $r;
151
+ }
152
+
153
+ $_xmlrpcs_methodHelp_sig=array(array($GLOBALS['xmlrpcString'], $GLOBALS['xmlrpcString']));
154
+ $_xmlrpcs_methodHelp_doc='Returns help text if defined for the method passed, otherwise returns an empty string';
155
+ $_xmlrpcs_methodHelp_sdoc=array(array('method description', 'name of the method to be described'));
156
+ function _xmlrpcs_methodHelp($server, $m)
157
+ {
158
+ // let accept as parameter both an xmlrpcval or string
159
+ if (is_object($m))
160
+ {
161
+ $methName=$m->getParam(0);
162
+ $methName=$methName->scalarval();
163
+ }
164
+ else
165
+ {
166
+ $methName=$m;
167
+ }
168
+ if(strpos($methName, "system.") === 0)
169
+ {
170
+ $dmap=$GLOBALS['_xmlrpcs_dmap']; $sysCall=1;
171
+ }
172
+ else
173
+ {
174
+ $dmap=$server->dmap; $sysCall=0;
175
+ }
176
+ if(isset($dmap[$methName]))
177
+ {
178
+ if(isset($dmap[$methName]['docstring']))
179
+ {
180
+ $r=new xmlrpcresp(new xmlrpcval($dmap[$methName]['docstring']), 'string');
181
+ }
182
+ else
183
+ {
184
+ $r=new xmlrpcresp(new xmlrpcval('', 'string'));
185
+ }
186
+ }
187
+ else
188
+ {
189
+ $r=new xmlrpcresp(0, $GLOBALS['xmlrpcerr']['introspect_unknown'], $GLOBALS['xmlrpcstr']['introspect_unknown']);
190
+ }
191
+ return $r;
192
+ }
193
+
194
+ $_xmlrpcs_multicall_sig = array(array($GLOBALS['xmlrpcArray'], $GLOBALS['xmlrpcArray']));
195
+ $_xmlrpcs_multicall_doc = 'Boxcar multiple RPC calls in one request. See http://www.xmlrpc.com/discuss/msgReader$1208 for details';
196
+ $_xmlrpcs_multicall_sdoc = array(array('list of response structs, where each struct has the usual members', 'list of calls, with each call being represented as a struct, with members "methodname" and "params"'));
197
+ function _xmlrpcs_multicall_error($err)
198
+ {
199
+ if(is_string($err))
200
+ {
201
+ $str = $GLOBALS['xmlrpcstr']["multicall_${err}"];
202
+ $code = $GLOBALS['xmlrpcerr']["multicall_${err}"];
203
+ }
204
+ else
205
+ {
206
+ $code = $err->faultCode();
207
+ $str = $err->faultString();
208
+ }
209
+ $struct = array();
210
+ $struct['faultCode'] = new xmlrpcval($code, 'int');
211
+ $struct['faultString'] = new xmlrpcval($str, 'string');
212
+ return new xmlrpcval($struct, 'struct');
213
+ }
214
+
215
+ function _xmlrpcs_multicall_do_call($server, $call)
216
+ {
217
+ if($call->kindOf() != 'struct')
218
+ {
219
+ return _xmlrpcs_multicall_error('notstruct');
220
+ }
221
+ $methName = @$call->structmem('methodName');
222
+ if(!$methName)
223
+ {
224
+ return _xmlrpcs_multicall_error('nomethod');
225
+ }
226
+ if($methName->kindOf() != 'scalar' || $methName->scalartyp() != 'string')
227
+ {
228
+ return _xmlrpcs_multicall_error('notstring');
229
+ }
230
+ if($methName->scalarval() == 'system.multicall')
231
+ {
232
+ return _xmlrpcs_multicall_error('recursion');
233
+ }
234
+
235
+ $params = @$call->structmem('params');
236
+ if(!$params)
237
+ {
238
+ return _xmlrpcs_multicall_error('noparams');
239
+ }
240
+ if($params->kindOf() != 'array')
241
+ {
242
+ return _xmlrpcs_multicall_error('notarray');
243
+ }
244
+ $numParams = $params->arraysize();
245
+
246
+ $msg = new xmlrpcmsg($methName->scalarval());
247
+ for($i = 0; $i < $numParams; $i++)
248
+ {
249
+ if(!$msg->addParam($params->arraymem($i)))
250
+ {
251
+ $i++;
252
+ return _xmlrpcs_multicall_error(new xmlrpcresp(0,
253
+ $GLOBALS['xmlrpcerr']['incorrect_params'],
254
+ $GLOBALS['xmlrpcstr']['incorrect_params'] . ": probable xml error in param " . $i));
255
+ }
256
+ }
257
+
258
+ $result = $server->execute($msg);
259
+
260
+ if($result->faultCode() != 0)
261
+ {
262
+ return _xmlrpcs_multicall_error($result); // Method returned fault.
263
+ }
264
+
265
+ return new xmlrpcval(array($result->value()), 'array');
266
+ }
267
+
268
+ function _xmlrpcs_multicall_do_call_phpvals($server, $call)
269
+ {
270
+ if(!is_array($call))
271
+ {
272
+ return _xmlrpcs_multicall_error('notstruct');
273
+ }
274
+ if(!array_key_exists('methodName', $call))
275
+ {
276
+ return _xmlrpcs_multicall_error('nomethod');
277
+ }
278
+ if (!is_string($call['methodName']))
279
+ {
280
+ return _xmlrpcs_multicall_error('notstring');
281
+ }
282
+ if($call['methodName'] == 'system.multicall')
283
+ {
284
+ return _xmlrpcs_multicall_error('recursion');
285
+ }
286
+ if(!array_key_exists('params', $call))
287
+ {
288
+ return _xmlrpcs_multicall_error('noparams');
289
+ }
290
+ if(!is_array($call['params']))
291
+ {
292
+ return _xmlrpcs_multicall_error('notarray');
293
+ }
294
+
295
+ // this is a real dirty and simplistic hack, since we might have received a
296
+ // base64 or datetime values, but they will be listed as strings here...
297
+ $numParams = count($call['params']);
298
+ $pt = array();
299
+ foreach($call['params'] as $val)
300
+ $pt[] = php_2_xmlrpc_type(gettype($val));
301
+
302
+ $result = $server->execute($call['methodName'], $call['params'], $pt);
303
+
304
+ if($result->faultCode() != 0)
305
+ {
306
+ return _xmlrpcs_multicall_error($result); // Method returned fault.
307
+ }
308
+
309
+ return new xmlrpcval(array($result->value()), 'array');
310
+ }
311
+
312
+ function _xmlrpcs_multicall($server, $m)
313
+ {
314
+ $result = array();
315
+ // let accept a plain list of php parameters, beside a single xmlrpc msg object
316
+ if (is_object($m))
317
+ {
318
+ $calls = $m->getParam(0);
319
+ $numCalls = $calls->arraysize();
320
+ for($i = 0; $i < $numCalls; $i++)
321
+ {
322
+ $call = $calls->arraymem($i);
323
+ $result[$i] = _xmlrpcs_multicall_do_call($server, $call);
324
+ }
325
+ }
326
+ else
327
+ {
328
+ $numCalls=count($m);
329
+ for($i = 0; $i < $numCalls; $i++)
330
+ {
331
+ $result[$i] = _xmlrpcs_multicall_do_call_phpvals($server, $m[$i]);
332
+ }
333
+ }
334
+
335
+ return new xmlrpcresp(new xmlrpcval($result, 'array'));
336
+ }
337
+
338
+ $GLOBALS['_xmlrpcs_dmap']=array(
339
+ 'system.listMethods' => array(
340
+ 'function' => '_xmlrpcs_listMethods',
341
+ 'signature' => $_xmlrpcs_listMethods_sig,
342
+ 'docstring' => $_xmlrpcs_listMethods_doc,
343
+ 'signature_docs' => $_xmlrpcs_listMethods_sdoc),
344
+ 'system.methodHelp' => array(
345
+ 'function' => '_xmlrpcs_methodHelp',
346
+ 'signature' => $_xmlrpcs_methodHelp_sig,
347
+ 'docstring' => $_xmlrpcs_methodHelp_doc,
348
+ 'signature_docs' => $_xmlrpcs_methodHelp_sdoc),
349
+ 'system.methodSignature' => array(
350
+ 'function' => '_xmlrpcs_methodSignature',
351
+ 'signature' => $_xmlrpcs_methodSignature_sig,
352
+ 'docstring' => $_xmlrpcs_methodSignature_doc,
353
+ 'signature_docs' => $_xmlrpcs_methodSignature_sdoc),
354
+ 'system.multicall' => array(
355
+ 'function' => '_xmlrpcs_multicall',
356
+ 'signature' => $_xmlrpcs_multicall_sig,
357
+ 'docstring' => $_xmlrpcs_multicall_doc,
358
+ 'signature_docs' => $_xmlrpcs_multicall_sdoc),
359
+ 'system.getCapabilities' => array(
360
+ 'function' => '_xmlrpcs_getCapabilities',
361
+ 'signature' => $_xmlrpcs_getCapabilities_sig,
362
+ 'docstring' => $_xmlrpcs_getCapabilities_doc,
363
+ 'signature_docs' => $_xmlrpcs_getCapabilities_sdoc)
364
+ );
365
+
366
+ $GLOBALS['_xmlrpcs_occurred_errors'] = '';
367
+ $GLOBALS['_xmlrpcs_prev_ehandler'] = '';
368
+
369
+ /**
370
+ * Error handler used to track errors that occur during server-side execution of PHP code.
371
+ * This allows to report back to the client whether an internal error has occurred or not
372
+ * using an xmlrpc response object, instead of letting the client deal with the html junk
373
+ * that a PHP execution error on the server generally entails.
374
+ *
375
+ * NB: in fact a user defined error handler can only handle WARNING, NOTICE and USER_* errors.
376
+ *
377
+ */
378
+ function _xmlrpcs_errorHandler($errcode, $errstring, $filename=null, $lineno=null, $context=null)
379
+ {
380
+ // obey the @ protocol
381
+ if (error_reporting() == 0)
382
+ return;
383
+
384
+ //if($errcode != E_NOTICE && $errcode != E_WARNING && $errcode != E_USER_NOTICE && $errcode != E_USER_WARNING)
385
+ if($errcode != E_STRICT)
386
+ {
387
+ $GLOBALS['_xmlrpcs_occurred_errors'] = $GLOBALS['_xmlrpcs_occurred_errors'] . $errstring . "\n";
388
+ }
389
+ // Try to avoid as much as possible disruption to the previous error handling
390
+ // mechanism in place
391
+ if($GLOBALS['_xmlrpcs_prev_ehandler'] == '')
392
+ {
393
+ // The previous error handler was the default: all we should do is log error
394
+ // to the default error log (if level high enough)
395
+ if(ini_get('log_errors') && (intval(ini_get('error_reporting')) & $errcode))
396
+ {
397
+ error_log($errstring);
398
+ }
399
+ }
400
+ else
401
+ {
402
+ // Pass control on to previous error handler, trying to avoid loops...
403
+ if($GLOBALS['_xmlrpcs_prev_ehandler'] != '_xmlrpcs_errorHandler')
404
+ {
405
+ // NB: this code will NOT work on php < 4.0.2: only 2 params were used for error handlers
406
+ if(is_array($GLOBALS['_xmlrpcs_prev_ehandler']))
407
+ {
408
+ // the following works both with static class methods and plain object methods as error handler
409
+ call_user_func_array($GLOBALS['_xmlrpcs_prev_ehandler'], array($errcode, $errstring, $filename, $lineno, $context));
410
+ }
411
+ else
412
+ {
413
+ $GLOBALS['_xmlrpcs_prev_ehandler']($errcode, $errstring, $filename, $lineno, $context);
414
+ }
415
+ }
416
+ }
417
+ }
418
+
419
+ $GLOBALS['_xmlrpc_debuginfo']='';
420
+
421
+ /**
422
+ * Add a string to the debug info that can be later seralized by the server
423
+ * as part of the response message.
424
+ * Note that for best compatbility, the debug string should be encoded using
425
+ * the $GLOBALS['xmlrpc_internalencoding'] character set.
426
+ * @param string $m
427
+ * @access public
428
+ */
429
+ function xmlrpc_debugmsg($m)
430
+ {
431
+ $GLOBALS['_xmlrpc_debuginfo'] .= $m . "\n";
432
+ }
433
+
434
+ class xmlrpc_server
435
+ {
436
+ /**
437
+ * Array defining php functions exposed as xmlrpc methods by this server
438
+ * @access private
439
+ */
440
+ var $dmap=array();
441
+ /**
442
+ * Defines how functions in dmap will be invoked: either using an xmlrpc msg object
443
+ * or plain php values.
444
+ * valid strings are 'xmlrpcvals', 'phpvals' or 'epivals'
445
+ */
446
+ var $functions_parameters_type='xmlrpcvals';
447
+ /**
448
+ * Option used for fine-tuning the encoding the php values returned from
449
+ * functions registered in the dispatch map when the functions_parameters_types
450
+ * member is set to 'phpvals'
451
+ * @see php_xmlrpc_encode for a list of values
452
+ */
453
+ var $phpvals_encoding_options = array( 'auto_dates' );
454
+ /// controls wether the server is going to echo debugging messages back to the client as comments in response body. valid values: 0,1,2,3
455
+ var $debug = 1;
456
+ /**
457
+ * Controls behaviour of server when invoked user function throws an exception:
458
+ * 0 = catch it and return an 'internal error' xmlrpc response (default)
459
+ * 1 = catch it and return an xmlrpc response with the error corresponding to the exception
460
+ * 2 = allow the exception to float to the upper layers
461
+ */
462
+ var $exception_handling = 0;
463
+ /**
464
+ * When set to true, it will enable HTTP compression of the response, in case
465
+ * the client has declared its support for compression in the request.
466
+ */
467
+ var $compress_response = false;
468
+ /**
469
+ * List of http compression methods accepted by the server for requests.
470
+ * NB: PHP supports deflate, gzip compressions out of the box if compiled w. zlib
471
+ */
472
+ var $accepted_compression = array();
473
+ /// shall we serve calls to system.* methods?
474
+ var $allow_system_funcs = true;
475
+ /// list of charset encodings natively accepted for requests
476
+ var $accepted_charset_encodings = array();
477
+ /**
478
+ * charset encoding to be used for response.
479
+ * NB: if we can, we will convert the generated response from internal_encoding to the intended one.
480
+ * can be: a supported xml encoding (only UTF-8 and ISO-8859-1 at present, unless mbstring is enabled),
481
+ * null (leave unspecified in response, convert output stream to US_ASCII),
482
+ * 'default' (use xmlrpc library default as specified in xmlrpc.inc, convert output stream if needed),
483
+ * or 'auto' (use client-specified charset encoding or same as request if request headers do not specify it (unless request is US-ASCII: then use library default anyway).
484
+ * NB: pretty dangerous if you accept every charset and do not have mbstring enabled)
485
+ */
486
+ var $response_charset_encoding = '';
487
+ /**
488
+ * Storage for internal debug info
489
+ * @access private
490
+ */
491
+ var $debug_info = '';
492
+ /**
493
+ * Extra data passed at runtime to method handling functions. Used only by EPI layer
494
+ */
495
+ var $user_data = null;
496
+
497
+ /**
498
+ * @param array $dispmap the dispatch map withd efinition of exposed services
499
+ * @param boolean $servicenow set to false to prevent the server from runnung upon construction
500
+ */
501
+ function xmlrpc_server($dispMap=null, $serviceNow=true)
502
+ {
503
+ // if ZLIB is enabled, let the server by default accept compressed requests,
504
+ // and compress responses sent to clients that support them
505
+ if(function_exists('gzinflate'))
506
+ {
507
+ $this->accepted_compression = array('gzip', 'deflate');
508
+ $this->compress_response = true;
509
+ }
510
+
511
+ // by default the xml parser can support these 3 charset encodings
512
+ $this->accepted_charset_encodings = array('UTF-8', 'ISO-8859-1', 'US-ASCII');
513
+
514
+ // dispMap is a dispatch array of methods
515
+ // mapped to function names and signatures
516
+ // if a method
517
+ // doesn't appear in the map then an unknown
518
+ // method error is generated
519
+ /* milosch - changed to make passing dispMap optional.
520
+ * instead, you can use the class add_to_map() function
521
+ * to add functions manually (borrowed from SOAPX4)
522
+ */
523
+ if($dispMap)
524
+ {
525
+ $this->dmap = $dispMap;
526
+ if($serviceNow)
527
+ {
528
+ $this->service();
529
+ }
530
+ }
531
+ }
532
+
533
+ /**
534
+ * Set debug level of server.
535
+ * @param integer $in debug lvl: determines info added to xmlrpc responses (as xml comments)
536
+ * 0 = no debug info,
537
+ * 1 = msgs set from user with debugmsg(),
538
+ * 2 = add complete xmlrpc request (headers and body),
539
+ * 3 = add also all processing warnings happened during method processing
540
+ * (NB: this involves setting a custom error handler, and might interfere
541
+ * with the standard processing of the php function exposed as method. In
542
+ * particular, triggering an USER_ERROR level error will not halt script
543
+ * execution anymore, but just end up logged in the xmlrpc response)
544
+ * Note that info added at elevel 2 and 3 will be base64 encoded
545
+ * @access public
546
+ */
547
+ function setDebug($in)
548
+ {
549
+ $this->debug=$in;
550
+ }
551
+
552
+ /**
553
+ * Return a string with the serialized representation of all debug info
554
+ * @param string $charset_encoding the target charset encoding for the serialization
555
+ * @return string an XML comment (or two)
556
+ */
557
+ function serializeDebug($charset_encoding='')
558
+ {
559
+ // Tough encoding problem: which internal charset should we assume for debug info?
560
+ // It might contain a copy of raw data received from client, ie with unknown encoding,
561
+ // intermixed with php generated data and user generated data...
562
+ // so we split it: system debug is base 64 encoded,
563
+ // user debug info should be encoded by the end user using the INTERNAL_ENCODING
564
+ $out = '';
565
+ if ($this->debug_info != '')
566
+ {
567
+ $out .= "<!-- SERVER DEBUG INFO (BASE64 ENCODED):\n".base64_encode($this->debug_info)."\n-->\n";
568
+ }
569
+ if($GLOBALS['_xmlrpc_debuginfo']!='')
570
+ {
571
+
572
+ $out .= "<!-- DEBUG INFO:\n" . xmlrpc_encode_entitites(str_replace('--', '_-', $GLOBALS['_xmlrpc_debuginfo']), $GLOBALS['xmlrpc_internalencoding'], $charset_encoding) . "\n-->\n";
573
+ // NB: a better solution MIGHT be to use CDATA, but we need to insert it
574
+ // into return payload AFTER the beginning tag
575
+ //$out .= "<![CDATA[ DEBUG INFO:\n\n" . str_replace(']]>', ']_]_>', $GLOBALS['_xmlrpc_debuginfo']) . "\n]]>\n";
576
+ }
577
+ return $out;
578
+ }
579
+
580
+ /**
581
+ * Execute the xmlrpc request, printing the response
582
+ * @param string $data the request body. If null, the http POST request will be examined
583
+ * @return xmlrpcresp the response object (usually not used by caller...)
584
+ * @access public
585
+ */
586
+ function service($data=null, $return_payload=false)
587
+ {
588
+ if ($data === null)
589
+ {
590
+ // workaround for a known bug in php ver. 5.2.2 that broke $HTTP_RAW_POST_DATA
591
+ $ver = phpversion();
592
+ if ($ver[0] >= 5)
593
+ {
594
+ $data = file_get_contents('php://input');
595
+ }
596
+ else
597
+ {
598
+ $data = isset($GLOBALS['HTTP_RAW_POST_DATA']) ? $GLOBALS['HTTP_RAW_POST_DATA'] : '';
599
+ }
600
+ }
601
+ $raw_data = $data;
602
+
603
+ // reset internal debug info
604
+ $this->debug_info = '';
605
+
606
+ // Echo back what we received, before parsing it
607
+ if($this->debug > 1)
608
+ {
609
+ $this->debugmsg("+++GOT+++\n" . $data . "\n+++END+++");
610
+ }
611
+
612
+ $r = $this->parseRequestHeaders($data, $req_charset, $resp_charset, $resp_encoding);
613
+ if (!$r)
614
+ {
615
+ $r=$this->parseRequest($data, $req_charset);
616
+ }
617
+
618
+ // save full body of request into response, for more debugging usages
619
+ $r->raw_data = $raw_data;
620
+
621
+ if($this->debug > 2 && $GLOBALS['_xmlrpcs_occurred_errors'])
622
+ {
623
+ $this->debugmsg("+++PROCESSING ERRORS AND WARNINGS+++\n" .
624
+ $GLOBALS['_xmlrpcs_occurred_errors'] . "+++END+++");
625
+ }
626
+
627
+ $payload=$this->xml_header($resp_charset);
628
+ if($this->debug > 0)
629
+ {
630
+ $payload = $payload . $this->serializeDebug($resp_charset);
631
+ }
632
+
633
+ // G. Giunta 2006-01-27: do not create response serialization if it has
634
+ // already happened. Helps building json magic
635
+ if (empty($r->payload))
636
+ {
637
+ $r->serialize($resp_charset);
638
+ }
639
+ $payload = $payload . $r->payload;
640
+
641
+ if ($return_payload)
642
+ {
643
+ return $payload;
644
+ }
645
+
646
+ // if we get a warning/error that has output some text before here, then we cannot
647
+ // add a new header. We cannot say we are sending xml, either...
648
+ if(!headers_sent())
649
+ {
650
+ header('Content-Type: '.$r->content_type);
651
+ // we do not know if client actually told us an accepted charset, but if he did
652
+ // we have to tell him what we did
653
+ header("Vary: Accept-Charset");
654
+
655
+ // http compression of output: only
656
+ // if we can do it, and we want to do it, and client asked us to,
657
+ // and php ini settings do not force it already
658
+ $php_no_self_compress = !ini_get('zlib.output_compression') && (ini_get('output_handler') != 'ob_gzhandler');
659
+ if($this->compress_response && function_exists('gzencode') && $resp_encoding != ''
660
+ && $php_no_self_compress)
661
+ {
662
+ if(strpos($resp_encoding, 'gzip') !== false)
663
+ {
664
+ $payload = gzencode($payload);
665
+ header("Content-Encoding: gzip");
666
+ header("Vary: Accept-Encoding");
667
+ }
668
+ elseif (strpos($resp_encoding, 'deflate') !== false)
669
+ {
670
+ $payload = gzcompress($payload);
671
+ header("Content-Encoding: deflate");
672
+ header("Vary: Accept-Encoding");
673
+ }
674
+ }
675
+
676
+ // do not ouput content-length header if php is compressing output for us:
677
+ // it will mess up measurements
678
+ if($php_no_self_compress)
679
+ {
680
+ header('Content-Length: ' . (int)strlen($payload));
681
+ }
682
+ }
683
+ else
684
+ {
685
+ error_log('XML-RPC: '.__METHOD__.': http headers already sent before response is fully generated. Check for php warning or error messages');
686
+ }
687
+
688
+ print $payload;
689
+
690
+ // return request, in case subclasses want it
691
+ return $r;
692
+ }
693
+
694
+ /**
695
+ * Add a method to the dispatch map
696
+ * @param string $methodname the name with which the method will be made available
697
+ * @param string $function the php function that will get invoked
698
+ * @param array $sig the array of valid method signatures
699
+ * @param string $doc method documentation
700
+ * @param array $sigdoc the array of valid method signatures docs (one string per param, one for return type)
701
+ * @access public
702
+ */
703
+ function add_to_map($methodname,$function,$sig=null,$doc=false,$sigdoc=false)
704
+ {
705
+ $this->dmap[$methodname] = array(
706
+ 'function' => $function,
707
+ 'docstring' => $doc
708
+ );
709
+ if ($sig)
710
+ {
711
+ $this->dmap[$methodname]['signature'] = $sig;
712
+ }
713
+ if ($sigdoc)
714
+ {
715
+ $this->dmap[$methodname]['signature_docs'] = $sigdoc;
716
+ }
717
+ }
718
+
719
+ /**
720
+ * Verify type and number of parameters received against a list of known signatures
721
+ * @param array $in array of either xmlrpcval objects or xmlrpc type definitions
722
+ * @param array $sig array of known signatures to match against
723
+ * @access private
724
+ */
725
+ function verifySignature($in, $sig)
726
+ {
727
+ // check each possible signature in turn
728
+ if (is_object($in))
729
+ {
730
+ $numParams = $in->getNumParams();
731
+ }
732
+ else
733
+ {
734
+ $numParams = count($in);
735
+ }
736
+ foreach($sig as $cursig)
737
+ {
738
+ if(count($cursig)==$numParams+1)
739
+ {
740
+ $itsOK=1;
741
+ for($n=0; $n<$numParams; $n++)
742
+ {
743
+ if (is_object($in))
744
+ {
745
+ $p=$in->getParam($n);
746
+ if($p->kindOf() == 'scalar')
747
+ {
748
+ $pt=$p->scalartyp();
749
+ }
750
+ else
751
+ {
752
+ $pt=$p->kindOf();
753
+ }
754
+ }
755
+ else
756
+ {
757
+ $pt= $in[$n] == 'i4' ? 'int' : strtolower($in[$n]); // dispatch maps never use i4...
758
+ }
759
+
760
+ // param index is $n+1, as first member of sig is return type
761
+ if($pt != $cursig[$n+1] && $cursig[$n+1] != $GLOBALS['xmlrpcValue'])
762
+ {
763
+ $itsOK=0;
764
+ $pno=$n+1;
765
+ $wanted=$cursig[$n+1];
766
+ $got=$pt;
767
+ break;
768
+ }
769
+ }
770
+ if($itsOK)
771
+ {
772
+ return array(1,'');
773
+ }
774
+ }
775
+ }
776
+ if(isset($wanted))
777
+ {
778
+ return array(0, "Wanted ${wanted}, got ${got} at param ${pno}");
779
+ }
780
+ else
781
+ {
782
+ return array(0, "No method signature matches number of parameters");
783
+ }
784
+ }
785
+
786
+ /**
787
+ * Parse http headers received along with xmlrpc request. If needed, inflate request
788
+ * @return null on success or an xmlrpcresp
789
+ * @access private
790
+ */
791
+ function parseRequestHeaders(&$data, &$req_encoding, &$resp_encoding, &$resp_compression)
792
+ {
793
+ // check if $_SERVER is populated: it might have been disabled via ini file
794
+ // (this is true even when in CLI mode)
795
+ if (count($_SERVER) == 0)
796
+ {
797
+ error_log('XML-RPC: '.__METHOD__.': cannot parse request headers as $_SERVER is not populated');
798
+ }
799
+
800
+ if($this->debug > 1)
801
+ {
802
+ if(function_exists('getallheaders'))
803
+ {
804
+ $this->debugmsg(''); // empty line
805
+ foreach(getallheaders() as $name => $val)
806
+ {
807
+ $this->debugmsg("HEADER: $name: $val");
808
+ }
809
+ }
810
+
811
+ }
812
+
813
+ if(isset($_SERVER['HTTP_CONTENT_ENCODING']))
814
+ {
815
+ $content_encoding = str_replace('x-', '', $_SERVER['HTTP_CONTENT_ENCODING']);
816
+ }
817
+ else
818
+ {
819
+ $content_encoding = '';
820
+ }
821
+
822
+ // check if request body has been compressed and decompress it
823
+ if($content_encoding != '' && strlen($data))
824
+ {
825
+ if($content_encoding == 'deflate' || $content_encoding == 'gzip')
826
+ {
827
+ // if decoding works, use it. else assume data wasn't gzencoded
828
+ if(function_exists('gzinflate') && in_array($content_encoding, $this->accepted_compression))
829
+ {
830
+ if($content_encoding == 'deflate' && $degzdata = @gzuncompress($data))
831
+ {
832
+ $data = $degzdata;
833
+ if($this->debug > 1)
834
+ {
835
+ $this->debugmsg("\n+++INFLATED REQUEST+++[".strlen($data)." chars]+++\n" . $data . "\n+++END+++");
836
+ }
837
+ }
838
+ elseif($content_encoding == 'gzip' && $degzdata = @gzinflate(substr($data, 10)))
839
+ {
840
+ $data = $degzdata;
841
+ if($this->debug > 1)
842
+ $this->debugmsg("+++INFLATED REQUEST+++[".strlen($data)." chars]+++\n" . $data . "\n+++END+++");
843
+ }
844
+ else
845
+ {
846
+ $r = new xmlrpcresp(0, $GLOBALS['xmlrpcerr']['server_decompress_fail'], $GLOBALS['xmlrpcstr']['server_decompress_fail']);
847
+ return $r;
848
+ }
849
+ }
850
+ else
851
+ {
852
+ //error_log('The server sent deflated data. Your php install must have the Zlib extension compiled in to support this.');
853
+ $r = new xmlrpcresp(0, $GLOBALS['xmlrpcerr']['server_cannot_decompress'], $GLOBALS['xmlrpcstr']['server_cannot_decompress']);
854
+ return $r;
855
+ }
856
+ }
857
+ }
858
+
859
+ // check if client specified accepted charsets, and if we know how to fulfill
860
+ // the request
861
+ if ($this->response_charset_encoding == 'auto')
862
+ {
863
+ $resp_encoding = '';
864
+ if (isset($_SERVER['HTTP_ACCEPT_CHARSET']))
865
+ {
866
+ // here we should check if we can match the client-requested encoding
867
+ // with the encodings we know we can generate.
868
+ /// @todo we should parse q=0.x preferences instead of getting first charset specified...
869
+ $client_accepted_charsets = explode(',', strtoupper($_SERVER['HTTP_ACCEPT_CHARSET']));
870
+ // Give preference to internal encoding
871
+ $known_charsets = array($GLOBALS['xmlrpc_internalencoding'], 'UTF-8', 'ISO-8859-1', 'US-ASCII');
872
+ foreach ($known_charsets as $charset)
873
+ {
874
+ foreach ($client_accepted_charsets as $accepted)
875
+ if (strpos($accepted, $charset) === 0)
876
+ {
877
+ $resp_encoding = $charset;
878
+ break;
879
+ }
880
+ if ($resp_encoding)
881
+ break;
882
+ }
883
+ }
884
+ }
885
+ else
886
+ {
887
+ $resp_encoding = $this->response_charset_encoding;
888
+ }
889
+
890
+ if (isset($_SERVER['HTTP_ACCEPT_ENCODING']))
891
+ {
892
+ $resp_compression = $_SERVER['HTTP_ACCEPT_ENCODING'];
893
+ }
894
+ else
895
+ {
896
+ $resp_compression = '';
897
+ }
898
+
899
+ // 'guestimate' request encoding
900
+ /// @todo check if mbstring is enabled and automagic input conversion is on: it might mingle with this check???
901
+ $req_encoding = guess_encoding(isset($_SERVER['CONTENT_TYPE']) ? $_SERVER['CONTENT_TYPE'] : '',
902
+ $data);
903
+
904
+ return null;
905
+ }
906
+
907
+ /**
908
+ * Parse an xml chunk containing an xmlrpc request and execute the corresponding
909
+ * php function registered with the server
910
+ * @param string $data the xml request
911
+ * @param string $req_encoding (optional) the charset encoding of the xml request
912
+ * @return xmlrpcresp
913
+ * @access private
914
+ */
915
+ function parseRequest($data, $req_encoding='')
916
+ {
917
+ // 2005/05/07 commented and moved into caller function code
918
+ //if($data=='')
919
+ //{
920
+ // $data=$GLOBALS['HTTP_RAW_POST_DATA'];
921
+ //}
922
+
923
+ // G. Giunta 2005/02/13: we do NOT expect to receive html entities
924
+ // so we do not try to convert them into xml character entities
925
+ //$data = xmlrpc_html_entity_xlate($data);
926
+
927
+ $GLOBALS['_xh']=array();
928
+ $GLOBALS['_xh']['ac']='';
929
+ $GLOBALS['_xh']['stack']=array();
930
+ $GLOBALS['_xh']['valuestack'] = array();
931
+ $GLOBALS['_xh']['params']=array();
932
+ $GLOBALS['_xh']['pt']=array();
933
+ $GLOBALS['_xh']['isf']=0;
934
+ $GLOBALS['_xh']['isf_reason']='';
935
+ $GLOBALS['_xh']['method']=false; // so we can check later if we got a methodname or not
936
+ $GLOBALS['_xh']['rt']='';
937
+
938
+ // decompose incoming XML into request structure
939
+ if ($req_encoding != '')
940
+ {
941
+ if (!in_array($req_encoding, array('UTF-8', 'ISO-8859-1', 'US-ASCII')))
942
+ // the following code might be better for mb_string enabled installs, but
943
+ // makes the lib about 200% slower...
944
+ //if (!is_valid_charset($req_encoding, array('UTF-8', 'ISO-8859-1', 'US-ASCII')))
945
+ {
946
+ error_log('XML-RPC: '.__METHOD__.': invalid charset encoding of received request: '.$req_encoding);
947
+ $req_encoding = $GLOBALS['xmlrpc_defencoding'];
948
+ }
949
+ /// @BUG this will fail on PHP 5 if charset is not specified in the xml prologue,
950
+ // the encoding is not UTF8 and there are non-ascii chars in the text...
951
+ /// @todo use an ampty string for php 5 ???
952
+ $parser = xml_parser_create($req_encoding);
953
+ }
954
+ else
955
+ {
956
+ $parser = xml_parser_create();
957
+ }
958
+
959
+ xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, true);
960
+ // G. Giunta 2005/02/13: PHP internally uses ISO-8859-1, so we have to tell
961
+ // the xml parser to give us back data in the expected charset
962
+ // What if internal encoding is not in one of the 3 allowed?
963
+ // we use the broadest one, ie. utf8
964
+ // This allows to send data which is native in various charset,
965
+ // by extending xmlrpc_encode_entitites() and setting xmlrpc_internalencoding
966
+ if (!in_array($GLOBALS['xmlrpc_internalencoding'], array('UTF-8', 'ISO-8859-1', 'US-ASCII')))
967
+ {
968
+ xml_parser_set_option($parser, XML_OPTION_TARGET_ENCODING, 'UTF-8');
969
+ }
970
+ else
971
+ {
972
+ xml_parser_set_option($parser, XML_OPTION_TARGET_ENCODING, $GLOBALS['xmlrpc_internalencoding']);
973
+ }
974
+
975
+ if ($this->functions_parameters_type != 'xmlrpcvals')
976
+ xml_set_element_handler($parser, 'xmlrpc_se', 'xmlrpc_ee_fast');
977
+ else
978
+ xml_set_element_handler($parser, 'xmlrpc_se', 'xmlrpc_ee');
979
+ xml_set_character_data_handler($parser, 'xmlrpc_cd');
980
+ xml_set_default_handler($parser, 'xmlrpc_dh');
981
+ if(!xml_parse($parser, $data, 1))
982
+ {
983
+ // return XML error as a faultCode
984
+ $r=new xmlrpcresp(0,
985
+ $GLOBALS['xmlrpcerrxml']+xml_get_error_code($parser),
986
+ sprintf('XML error: %s at line %d, column %d',
987
+ xml_error_string(xml_get_error_code($parser)),
988
+ xml_get_current_line_number($parser), xml_get_current_column_number($parser)));
989
+ xml_parser_free($parser);
990
+ }
991
+ elseif ($GLOBALS['_xh']['isf'])
992
+ {
993
+ xml_parser_free($parser);
994
+ $r=new xmlrpcresp(0,
995
+ $GLOBALS['xmlrpcerr']['invalid_request'],
996
+ $GLOBALS['xmlrpcstr']['invalid_request'] . ' ' . $GLOBALS['_xh']['isf_reason']);
997
+ }
998
+ else
999
+ {
1000
+ xml_parser_free($parser);
1001
+ // small layering violation in favor of speed and memory usage:
1002
+ // we should allow the 'execute' method handle this, but in the
1003
+ // most common scenario (xmlrpcvals type server with some methods
1004
+ // registered as phpvals) that would mean a useless encode+decode pass
1005
+ if ($this->functions_parameters_type != 'xmlrpcvals' || (isset($this->dmap[$GLOBALS['_xh']['method']]['parameters_type']) && ($this->dmap[$GLOBALS['_xh']['method']]['parameters_type'] == 'phpvals')))
1006
+ {
1007
+ if($this->debug > 1)
1008
+ {
1009
+ $this->debugmsg("\n+++PARSED+++\n".var_export($GLOBALS['_xh']['params'], true)."\n+++END+++");
1010
+ }
1011
+ $r = $this->execute($GLOBALS['_xh']['method'], $GLOBALS['_xh']['params'], $GLOBALS['_xh']['pt']);
1012
+ }
1013
+ else
1014
+ {
1015
+ // build an xmlrpcmsg object with data parsed from xml
1016
+ $m=new xmlrpcmsg($GLOBALS['_xh']['method']);
1017
+ // now add parameters in
1018
+ for($i=0; $i<count($GLOBALS['_xh']['params']); $i++)
1019
+ {
1020
+ $m->addParam($GLOBALS['_xh']['params'][$i]);
1021
+ }
1022
+
1023
+ if($this->debug > 1)
1024
+ {
1025
+ $this->debugmsg("\n+++PARSED+++\n".var_export($m, true)."\n+++END+++");
1026
+ }
1027
+ $r = $this->execute($m);
1028
+ }
1029
+ }
1030
+ return $r;
1031
+ }
1032
+
1033
+ /**
1034
+ * Execute a method invoked by the client, checking parameters used
1035
+ * @param mixed $m either an xmlrpcmsg obj or a method name
1036
+ * @param array $params array with method parameters as php types (if m is method name only)
1037
+ * @param array $paramtypes array with xmlrpc types of method parameters (if m is method name only)
1038
+ * @return xmlrpcresp
1039
+ * @access private
1040
+ */
1041
+ function execute($m, $params=null, $paramtypes=null)
1042
+ {
1043
+ if (is_object($m))
1044
+ {
1045
+ $methName = $m->method();
1046
+ }
1047
+ else
1048
+ {
1049
+ $methName = $m;
1050
+ }
1051
+ $sysCall = $this->allow_system_funcs && (strpos($methName, "system.") === 0);
1052
+ $dmap = $sysCall ? $GLOBALS['_xmlrpcs_dmap'] : $this->dmap;
1053
+
1054
+ if(!isset($dmap[$methName]['function']))
1055
+ {
1056
+ // No such method
1057
+ return new xmlrpcresp(0,
1058
+ $GLOBALS['xmlrpcerr']['unknown_method'],
1059
+ $GLOBALS['xmlrpcstr']['unknown_method']);
1060
+ }
1061
+
1062
+ // Check signature
1063
+ if(isset($dmap[$methName]['signature']))
1064
+ {
1065
+ $sig = $dmap[$methName]['signature'];
1066
+ if (is_object($m))
1067
+ {
1068
+ list($ok, $errstr) = $this->verifySignature($m, $sig);
1069
+ }
1070
+ else
1071
+ {
1072
+ list($ok, $errstr) = $this->verifySignature($paramtypes, $sig);
1073
+ }
1074
+ if(!$ok)
1075
+ {
1076
+ // Didn't match.
1077
+ return new xmlrpcresp(
1078
+ 0,
1079
+ $GLOBALS['xmlrpcerr']['incorrect_params'],
1080
+ $GLOBALS['xmlrpcstr']['incorrect_params'] . ": ${errstr}"
1081
+ );
1082
+ }
1083
+ }
1084
+
1085
+ $func = $dmap[$methName]['function'];
1086
+ // let the 'class::function' syntax be accepted in dispatch maps
1087
+ if(is_string($func) && strpos($func, '::'))
1088
+ {
1089
+ $func = explode('::', $func);
1090
+ }
1091
+ // verify that function to be invoked is in fact callable
1092
+ if(!is_callable($func))
1093
+ {
1094
+ error_log("XML-RPC: ".__METHOD__.": function $func registered as method handler is not callable");
1095
+ return new xmlrpcresp(
1096
+ 0,
1097
+ $GLOBALS['xmlrpcerr']['server_error'],
1098
+ $GLOBALS['xmlrpcstr']['server_error'] . ": no function matches method"
1099
+ );
1100
+ }
1101
+
1102
+ // If debug level is 3, we should catch all errors generated during
1103
+ // processing of user function, and log them as part of response
1104
+ if($this->debug > 2)
1105
+ {
1106
+ $GLOBALS['_xmlrpcs_prev_ehandler'] = set_error_handler('_xmlrpcs_errorHandler');
1107
+ }
1108
+ try
1109
+ {
1110
+ // Allow mixed-convention servers
1111
+ if (is_object($m))
1112
+ {
1113
+ if($sysCall)
1114
+ {
1115
+ $r = call_user_func($func, $this, $m);
1116
+ }
1117
+ else
1118
+ {
1119
+ $r = call_user_func($func, $m);
1120
+ }
1121
+ if (!is_a($r, 'xmlrpcresp'))
1122
+ {
1123
+ error_log("XML-RPC: ".__METHOD__.": function $func registered as method handler does not return an xmlrpcresp object");
1124
+ if (is_a($r, 'xmlrpcval'))
1125
+ {
1126
+ $r = new xmlrpcresp($r);
1127
+ }
1128
+ else
1129
+ {
1130
+ $r = new xmlrpcresp(
1131
+ 0,
1132
+ $GLOBALS['xmlrpcerr']['server_error'],
1133
+ $GLOBALS['xmlrpcstr']['server_error'] . ": function does not return xmlrpcresp object"
1134
+ );
1135
+ }
1136
+ }
1137
+ }
1138
+ else
1139
+ {
1140
+ // call a 'plain php' function
1141
+ if($sysCall)
1142
+ {
1143
+ array_unshift($params, $this);
1144
+ $r = call_user_func_array($func, $params);
1145
+ }
1146
+ else
1147
+ {
1148
+ // 3rd API convention for method-handling functions: EPI-style
1149
+ if ($this->functions_parameters_type == 'epivals')
1150
+ {
1151
+ $r = call_user_func_array($func, array($methName, $params, $this->user_data));
1152
+ // mimic EPI behaviour: if we get an array that looks like an error, make it
1153
+ // an eror response
1154
+ if (is_array($r) && array_key_exists('faultCode', $r) && array_key_exists('faultString', $r))
1155
+ {
1156
+ $r = new xmlrpcresp(0, (integer)$r['faultCode'], (string)$r['faultString']);
1157
+ }
1158
+ else
1159
+ {
1160
+ // functions using EPI api should NOT return resp objects,
1161
+ // so make sure we encode the return type correctly
1162
+ $r = new xmlrpcresp(php_xmlrpc_encode($r, array('extension_api')));
1163
+ }
1164
+ }
1165
+ else
1166
+ {
1167
+ $r = call_user_func_array($func, $params);
1168
+ }
1169
+ }
1170
+ // the return type can be either an xmlrpcresp object or a plain php value...
1171
+ if (!is_a($r, 'xmlrpcresp'))
1172
+ {
1173
+ // what should we assume here about automatic encoding of datetimes
1174
+ // and php classes instances???
1175
+ $r = new xmlrpcresp(php_xmlrpc_encode($r, $this->phpvals_encoding_options));
1176
+ }
1177
+ }
1178
+ }
1179
+ catch(Exception $e)
1180
+ {
1181
+ // (barring errors in the lib) an uncatched exception happened
1182
+ // in the called function, we wrap it in a proper error-response
1183
+ switch($this->exception_handling)
1184
+ {
1185
+ case 2:
1186
+ throw $e;
1187
+ break;
1188
+ case 1:
1189
+ $r = new xmlrpcresp(0, $e->getCode(), $e->getMessage());
1190
+ break;
1191
+ default:
1192
+ $r = new xmlrpcresp(0, $GLOBALS['xmlrpcerr']['server_error'], $GLOBALS['xmlrpcstr']['server_error']);
1193
+ }
1194
+ }
1195
+ if($this->debug > 2)
1196
+ {
1197
+ // note: restore the error handler we found before calling the
1198
+ // user func, even if it has been changed inside the func itself
1199
+ if($GLOBALS['_xmlrpcs_prev_ehandler'])
1200
+ {
1201
+ set_error_handler($GLOBALS['_xmlrpcs_prev_ehandler']);
1202
+ }
1203
+ else
1204
+ {
1205
+ restore_error_handler();
1206
+ }
1207
+ }
1208
+ return $r;
1209
+ }
1210
+
1211
+ /**
1212
+ * add a string to the 'internal debug message' (separate from 'user debug message')
1213
+ * @param string $strings
1214
+ * @access private
1215
+ */
1216
+ function debugmsg($string)
1217
+ {
1218
+ $this->debug_info .= $string."\n";
1219
+ }
1220
+
1221
+ /**
1222
+ * @access private
1223
+ */
1224
+ function xml_header($charset_encoding='')
1225
+ {
1226
+ if ($charset_encoding != '')
1227
+ {
1228
+ return "<?xml version=\"1.0\" encoding=\"$charset_encoding\"?" . ">\n";
1229
+ }
1230
+ else
1231
+ {
1232
+ return "<?xml version=\"1.0\"?" . ">\n";
1233
+ }
1234
+ }
1235
+
1236
+ /**
1237
+ * A debugging routine: just echoes back the input packet as a string value
1238
+ * DEPRECATED!
1239
+ */
1240
+ function echoInput()
1241
+ {
1242
+ $r=new xmlrpcresp(new xmlrpcval( "'Aha said I: '" . $GLOBALS['HTTP_RAW_POST_DATA'], 'string'));
1243
+ print $r->serialize();
1244
+ }
1245
+ }
1246
+ ?>
js/fl-builder-layout.js CHANGED
@@ -326,6 +326,12 @@
326
  if ( element.hasClass( 'fl-row' ) || element.hasClass( 'fl-col' ) || element.hasClass( 'fl-module' ) ) {
327
  $( link ).on( 'click', FLBuilderLayout._scrollToElementOnLinkClick );
328
  }
 
 
 
 
 
 
329
  }
330
  }
331
  catch( e ) {}
@@ -340,12 +346,9 @@
340
  * @method _scrollToElementOnLinkClick
341
  * @param {Object} e An event object.
342
  */
343
- _scrollToElementOnLinkClick: function( e )
344
  {
345
- var link = $( this ),
346
- href = link.attr( 'href' ),
347
- id = href.split( '#' ).pop(),
348
- element = $( '#' + id ),
349
  dest = 0,
350
  win = $( window ),
351
  doc = $( document );
@@ -359,10 +362,76 @@
359
  dest = element.offset().top - 100;
360
  }
361
 
362
- $( 'html, body' ).animate( { scrollTop: dest }, 1000, 'swing' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
363
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
364
 
365
- e.preventDefault();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
366
  },
367
 
368
  /**
326
  if ( element.hasClass( 'fl-row' ) || element.hasClass( 'fl-col' ) || element.hasClass( 'fl-module' ) ) {
327
  $( link ).on( 'click', FLBuilderLayout._scrollToElementOnLinkClick );
328
  }
329
+ if ( element.hasClass( 'fl-accordion-item' ) ) {
330
+ $( link ).on( 'click', FLBuilderLayout._scrollToAccordionOnLinkClick );
331
+ }
332
+ if ( element.hasClass( 'fl-tabs-panel' ) ) {
333
+ $( link ).on( 'click', FLBuilderLayout._scrollToTabOnLinkClick );
334
+ }
335
  }
336
  }
337
  catch( e ) {}
346
  * @method _scrollToElementOnLinkClick
347
  * @param {Object} e An event object.
348
  */
349
+ _scrollToElementOnLinkClick: function( e, callback )
350
  {
351
+ var element = $( '#' + $( this ).attr( 'href' ).split( '#' ).pop() ),
 
 
 
352
  dest = 0,
353
  win = $( window ),
354
  doc = $( document );
362
  dest = element.offset().top - 100;
363
  }
364
 
365
+ $( 'html, body' ).animate( { scrollTop: dest }, 1000, 'swing', callback );
366
+
367
+ e.preventDefault();
368
+ }
369
+ },
370
+
371
+ /**
372
+ * Scrolls to an accordion item when a link is clicked.
373
+ *
374
+ * @since 1.5.9
375
+ * @access private
376
+ * @method _scrollToAccordionOnLinkClick
377
+ * @param {Object} e An event object.
378
+ */
379
+ _scrollToAccordionOnLinkClick: function( e )
380
+ {
381
+ var element = $( '#' + $( this ).attr( 'href' ).split( '#' ).pop() );
382
+
383
+ if ( element.length > 0 ) {
384
+
385
+ var callback = function() {
386
+ if ( element ) {
387
+ element.find( '.fl-accordion-button' ).trigger( 'click' );
388
+ element = false;
389
+ }
390
+ };
391
+
392
+ FLBuilderLayout._scrollToElementOnLinkClick.call( this, e, callback );
393
  }
394
+ },
395
+
396
+ /**
397
+ * Scrolls to a tab panel when a link is clicked.
398
+ *
399
+ * @since 1.5.9
400
+ * @access private
401
+ * @method _scrollToTabOnLinkClick
402
+ * @param {Object} e An event object.
403
+ */
404
+ _scrollToTabOnLinkClick: function( e )
405
+ {
406
+ var element = $( '#' + $( this ).attr( 'href' ).split( '#' ).pop() ),
407
+ tabs = null,
408
+ label = null,
409
+ responsiveLabel = null;
410
+
411
+ if ( element.length > 0 ) {
412
+
413
+ tabs = element.closest( '.fl-tabs' );
414
+ responsiveLabel = element.find( '.fl-tabs-panel-label' );
415
+ tabIndex = responsiveLabel.data( 'index' );
416
+ label = tabs.find( '.fl-tabs-labels .fl-tabs-label[data-index=' + tabIndex + ']' );
417
 
418
+ if ( responsiveLabel.is( ':visible' ) ) {
419
+
420
+ var callback = function() {
421
+ if ( element ) {
422
+ responsiveLabel.trigger( 'click' );
423
+ element = false;
424
+ }
425
+ };
426
+
427
+ FLBuilderLayout._scrollToElementOnLinkClick.call( this, e, callback );
428
+ }
429
+ else {
430
+ label.trigger( 'click' );
431
+ }
432
+
433
+ e.preventDefault();
434
+ }
435
  },
436
 
437
  /**
js/fl-builder-preview.js CHANGED
@@ -737,6 +737,7 @@
737
 
738
  if(this.elements.bgOverlayColor.val() == '' || isNaN(this.elements.bgOverlayOpacity.val())) {
739
  this.elements.node.removeClass('fl-row-bg-overlay');
 
740
  this.updateCSSRule(this.classes.content + ':after', 'background-color', 'transparent');
741
  }
742
  else {
@@ -746,8 +747,16 @@
746
  value = 'rgba(' + rgb.join() + ', ' + alpha + ')';
747
 
748
  this.delay(100, $.proxy(function(){
749
- this.elements.node.addClass('fl-row-bg-overlay');
750
- this.updateCSSRule(this.classes.content + ':after', 'background-color', value);
 
 
 
 
 
 
 
 
751
  }, this));
752
 
753
  }
737
 
738
  if(this.elements.bgOverlayColor.val() == '' || isNaN(this.elements.bgOverlayOpacity.val())) {
739
  this.elements.node.removeClass('fl-row-bg-overlay');
740
+ this.elements.node.removeClass('fl-col-bg-overlay');
741
  this.updateCSSRule(this.classes.content + ':after', 'background-color', 'transparent');
742
  }
743
  else {
747
  value = 'rgba(' + rgb.join() + ', ' + alpha + ')';
748
 
749
  this.delay(100, $.proxy(function(){
750
+
751
+ if ( this.elements.node.hasClass( 'fl-col' ) ) {
752
+ this.elements.node.addClass( 'fl-col-bg-overlay' );
753
+ }
754
+ else {
755
+ this.elements.node.addClass( 'fl-row-bg-overlay' );
756
+ }
757
+
758
+ this.updateCSSRule( this.classes.content + ':after', 'background-color', value );
759
+
760
  }, this));
761
 
762
  }
js/fl-builder-tour.js CHANGED
@@ -180,7 +180,13 @@
180
  };
181
 
182
  // Remove the first step if no templates.
183
- if( FLBuilderConfig.lite || 'disabled' == FLBuilderConfig.enabledTemplates ) {
 
 
 
 
 
 
184
  config.steps.shift();
185
  }
186
 
180
  };
181
 
182
  // Remove the first step if no templates.
183
+ if( FLBuilderConfig.lite ) {
184
+ config.steps.shift();
185
+ }
186
+ else if ( 'disabled' == FLBuilderConfig.enabledTemplates ) {
187
+ config.steps.shift();
188
+ }
189
+ else if ( 'fl-builder-template' == FLBuilderConfig.postType ) {
190
  config.steps.shift();
191
  }
192
 
js/fl-builder.js CHANGED
@@ -516,10 +516,11 @@
516
  $('body').delegate('.fl-builder-global-settings .fl-builder-settings-save', 'click', FLBuilder._saveGlobalSettingsClicked);
517
 
518
  /* Template Selector */
 
 
519
  $('body').delegate('.fl-user-template', 'click', FLBuilder._userTemplateClicked);
520
  $('body').delegate('.fl-user-template-edit', 'click', FLBuilder._editUserTemplateClicked);
521
  $('body').delegate('.fl-user-template-delete', 'click', FLBuilder._deleteUserTemplateClicked);
522
- $('body').delegate('.fl-template-preview', 'click', FLBuilder._templateClicked);
523
  $('body').delegate('.fl-builder-template-replace-button', 'click', FLBuilder._templateReplaceClicked);
524
  $('body').delegate('.fl-builder-template-append-button', 'click', FLBuilder._templateAppendClicked);
525
  $('body').delegate('.fl-builder-template-actions .fl-builder-cancel-button', 'click', FLBuilder._templateCancelClicked);
@@ -527,10 +528,6 @@
527
  /* User Template Settings */
528
  $('body').delegate('.fl-builder-user-template-settings .fl-builder-settings-save', 'click', FLBuilder._saveUserTemplateSettings);
529
 
530
- /* Edit User Template */
531
- $('body').delegate('.fl-builder-cancel-edit-template-button', 'click', FLBuilder._cancelEditUserTemplate);
532
- $('body').delegate('.fl-builder-save-edit-template-button', 'click', FLBuilder._saveEditUserTemplate);
533
-
534
  /* Help Actions */
535
  $('body').delegate('.fl-builder-help-tour-button', 'click', FLBuilder._startHelpTour);
536
  $('body').delegate('.fl-builder-help-video-button', 'click', FLBuilder._watchVideoClicked);
@@ -687,6 +684,10 @@
687
 
688
  e.preventDefault();
689
 
 
 
 
 
690
  FLBuilder._exitUrl = href.indexOf('?') > -1 ? href : href + '?fl_builder';
691
  FLBuilder._doneClicked();
692
  },
@@ -757,14 +758,16 @@
757
 
758
  // Duplicate button
759
  if(postType == 'fl-builder-template') {
760
- buttons['duplicate-page'] = FLBuilderStrings.duplicateTemplate;
 
 
761
  }
762
  else {
763
  buttons['duplicate-page'] = FLBuilderStrings.duplicatePage;
764
  }
765
 
766
  // Template buttons
767
- if(!lite && postType != 'fl-builder-template' && enabledTemplates != 'disabled') {
768
 
769
  buttons['save-user-template'] = FLBuilderStrings.saveTemplate;
770
 
@@ -979,9 +982,10 @@
979
  /**
980
  * Redirects the user to the _exitUrl if defined, otherwise
981
  * it redirects the user to the current post without the
982
- * builder active.
983
  *
984
  * @since 1.0
 
985
  * @access private
986
  * @method _exit
987
  */
@@ -989,14 +993,20 @@
989
  {
990
  var href = window.location.href;
991
 
992
- if ( FLBuilder._exitUrl ) {
993
- href = FLBuilder._exitUrl;
994
  }
995
  else {
996
- href = href.replace('?fl_builder', '').replace('&fl_builder', '');
 
 
 
 
 
 
 
 
997
  }
998
-
999
- window.location.href = href;
1000
  },
1001
 
1002
  /* Tools Actions
@@ -1036,38 +1046,6 @@
1036
  window.location.href = adminUrl + 'post.php?post='+ response +'&action=edit';
1037
  },
1038
 
1039
- /**
1040
- * Shows the template selector when the templates button
1041
- * has been clicked.
1042
- *
1043
- * @since 1.0
1044
- * @access private
1045
- * @method _changeTemplateClicked
1046
- */
1047
- _changeTemplateClicked: function()
1048
- {
1049
- FLBuilder._actionsLightbox.close();
1050
- FLBuilder._showTemplateSelector();
1051
- },
1052
-
1053
- /**
1054
- * Shows the settings for saving a user defined template
1055
- * when the save template button is clicked.
1056
- *
1057
- * @since 1.1.3
1058
- * @access private
1059
- * @method _saveUserTemplateClicked
1060
- */
1061
- _saveUserTemplateClicked: function()
1062
- {
1063
- FLBuilder._actionsLightbox.close();
1064
- FLBuilder._showLightbox(false);
1065
-
1066
- FLBuilder.ajax({
1067
- action: 'fl_builder_render_user_template_settings'
1068
- }, FLBuilder._userTemplateSettingsLoaded);
1069
- },
1070
-
1071
  /**
1072
  * Shows the global builder settings lightbox when the global
1073
  * settings button is clicked.
@@ -1175,6 +1153,20 @@
1175
  }
1176
  },
1177
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1178
  /**
1179
  * Shows the template selector lightbox.
1180
  *
@@ -1212,17 +1204,42 @@
1212
  * @method _templateSelectorLoaded
1213
  * @param {String} html The HTML for the template selector.
1214
  */
1215
- _templateSelectorLoaded: function(html)
1216
  {
1217
- FLBuilder._setLightboxContent(html);
1218
 
1219
- if($('.fl-user-template').length == 0) {
1220
- $('.fl-user-templates-message').show();
 
 
 
 
 
 
 
 
 
 
 
1221
  }
1222
 
1223
  $( 'body' ).trigger( 'fl-builder.template-selector-loaded' );
1224
  },
1225
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1226
  /**
1227
  * Callback for when a user clicks a core template in
1228
  * the template selector.
@@ -1234,7 +1251,7 @@
1234
  _templateClicked: function()
1235
  {
1236
  var template = $(this),
1237
- index = template.closest('.fl-template-preview').attr('data-index');
1238
 
1239
  if($(FLBuilder._contentClass).children('.fl-row').length > 0) {
1240
 
@@ -1256,88 +1273,6 @@
1256
  }
1257
  },
1258
 
1259
- /**
1260
- * Callback for when a user clicks a user defined template in
1261
- * the template selector.
1262
- *
1263
- * @since 1.1.3
1264
- * @access private
1265
- * @method _userTemplateClicked
1266
- */
1267
- _userTemplateClicked: function()
1268
- {
1269
- var id = $(this).attr('data-id');
1270
-
1271
- if($(FLBuilder._contentClass).children('.fl-row').length > 0) {
1272
-
1273
- if(id == 'blank') {
1274
- if(confirm(FLBuilderStrings.changeTemplateMessage)) {
1275
- FLBuilder._lightbox._node.hide();
1276
- FLBuilder._applyTemplate('blank', false, 'user');
1277
- }
1278
- }
1279
- else {
1280
- FLBuilder._selectedTemplateId = id;
1281
- FLBuilder._selectedTemplateType = 'user';
1282
- FLBuilder._showTemplateActions();
1283
- FLBuilder._lightbox._node.hide();
1284
- }
1285
- }
1286
- else {
1287
- FLBuilder._applyTemplate(id, false, 'user');
1288
- }
1289
- },
1290
-
1291
- /**
1292
- * Launches the builder in a new tab to edit a user
1293
- * defined template when the edit link is clicked.
1294
- *
1295
- * @since 1.1.3
1296
- * @access private
1297
- * @method _editUserTemplateClicked
1298
- * @param {Object} e The event object.
1299
- */
1300
- _editUserTemplateClicked: function(e)
1301
- {
1302
- e.preventDefault();
1303
- e.stopPropagation();
1304
-
1305
- window.open($(this).attr('href'));
1306
- },
1307
-
1308
- /**
1309
- * Deletes a user defined template when the delete link is clicked.
1310
- *
1311
- * @since 1.1.3
1312
- * @access private
1313
- * @method _deleteUserTemplateClicked
1314
- * @param {Object} e The event object.
1315
- */
1316
- _deleteUserTemplateClicked: function(e)
1317
- {
1318
- var template = $(this).closest('.fl-user-template');
1319
-
1320
- if(confirm(FLBuilderStrings.deleteTemplate)) {
1321
-
1322
- FLBuilder.ajax({
1323
- action: 'fl_builder_save',
1324
- method: 'delete_user_template',
1325
- template_id: template.attr('data-id')
1326
- });
1327
-
1328
- template.fadeOut(function(){
1329
-
1330
- template.remove();
1331
-
1332
- if($('.fl-user-template').length == 0) {
1333
- $('.fl-user-templates-message').show();
1334
- }
1335
- });
1336
- }
1337
-
1338
- e.stopPropagation();
1339
- },
1340
-
1341
  /**
1342
  * Shows the actions lightbox for replacing and appending templates.
1343
  *
@@ -1424,7 +1359,7 @@
1424
  FLBuilder.ajax({
1425
  action: 'fl_builder_save',
1426
  method: 'apply_template',
1427
- index: id,
1428
  append: append
1429
  }, FLBuilder._updateLayout);
1430
  }
@@ -1442,6 +1377,24 @@
1442
  /* User Template Settings
1443
  ----------------------------------------------------------*/
1444
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1445
  /**
1446
  * Sets the lightbox content when the user template settings are loaded.
1447
  *
@@ -1481,7 +1434,7 @@
1481
  FLBuilder.ajax({
1482
  action: 'fl_builder_save',
1483
  method: 'save_user_template',
1484
- template_name: settings.name
1485
  }, FLBuilder._saveUserTemplateSettingsComplete);
1486
 
1487
  FLBuilder._lightbox.close();
@@ -1499,75 +1452,97 @@
1499
  {
1500
  FLBuilder.alert(FLBuilderStrings.templateSaved);
1501
  },
1502
-
1503
- /* Edit User Template
1504
- ----------------------------------------------------------*/
1505
 
1506
  /**
1507
- * Clears changes made when editing a user defined template.
 
1508
  *
1509
- * @since 1.1.9
1510
  * @access private
1511
- * @method _cancelEditUserTemplate
1512
  */
1513
- _cancelEditUserTemplate: function()
1514
  {
1515
- var result = confirm(FLBuilderStrings.discardMessage);
1516
-
1517
- if(result) {
1518
-
1519
- FLBuilder.showAjaxLoader();
1520
 
1521
- FLBuilder.ajax({
1522
- action: 'fl_builder_save',
1523
- method: 'clear_draft_layout',
1524
- render_assets: 0
1525
- }, FLBuilder._cancelEditUserTemplateComplete);
 
 
 
 
 
 
 
 
 
 
 
 
1526
  }
1527
  },
1528
 
1529
  /**
1530
- * Closes the window when the builder has finished clearing
1531
- * changes made to a user defined template.
1532
- *
1533
- * @since 1.1.9
1534
- * @access private
1535
- * @method _cancelEditUserTemplateComplete
1536
- */
1537
- _cancelEditUserTemplateComplete: function()
1538
- {
1539
- window.close();
1540
- },
1541
-
1542
- /**
1543
- * Saves changes made to a user defined template.
1544
  *
1545
- * @since 1.1.9
1546
  * @access private
1547
- * @method _saveEditUserTemplate
 
1548
  */
1549
- _saveEditUserTemplate: function()
1550
  {
1551
- FLBuilder.showAjaxLoader();
 
1552
 
1553
- FLBuilder.ajax({
1554
- action: 'fl_builder_save',
1555
- method: 'save_layout',
1556
- render_assets: 0
1557
- }, FLBuilder._saveEditUserTemplateComplete);
1558
  },
1559
 
1560
  /**
1561
- * Closes the window when the builder has finished saving
1562
- * changes made to a user defined template.
1563
  *
1564
- * @since 1.1.9
1565
  * @access private
1566
- * @method _saveEditUserTemplateComplete
 
1567
  */
1568
- _saveEditUserTemplateComplete: function()
1569
  {
1570
- window.close();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1571
  },
1572
 
1573
  /* Core Template Settings
@@ -3370,47 +3345,89 @@
3370
  {
3371
  FLBuilder._updateEditorFields();
3372
 
3373
- var data = form.serializeArray(),
3374
- i = 0,
3375
- name = '',
3376
- key = '',
3377
- settings = {};
3378
-
3379
- for( ; i < data.length; i++) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3380
 
3381
- if(data[i].name.indexOf('[]') > -1) {
 
 
 
3382
 
3383
- name = data[i].name.replace('[]', '');
3384
 
3385
- if(name.indexOf('[') > -1) {
 
3386
 
3387
- key = name.split('[').pop().replace(']', '');
3388
- name = name.replace('['+ key +']', '');
 
3389
 
3390
- if(typeof settings[name] === 'undefined') {
3391
- settings[name] = {};
3392
  }
3393
 
3394
- settings[name][key] = data[i].value.replace(/\r/gm, '');
 
 
 
 
 
 
 
 
 
 
 
 
3395
  }
 
3396
  else {
3397
 
3398
- if(typeof settings[name] === 'undefined') {
3399
- settings[name] = [];
3400
  }
3401
 
3402
- settings[name].push(data[i].value.replace(/\r/gm, ''));
3403
  }
3404
  }
 
3405
  else {
3406
- settings[data[i].name] = data[i].value.replace(/\r/gm, '');
3407
  }
3408
  }
3409
 
3410
  // Replace auto suggest values.
3411
- for(key in settings) {
3412
- if(typeof settings['as_values_' + key] !== 'undefined') {
3413
- settings[key] = $.grep(settings['as_values_' + key].split(','), function(n){ return n != ''; }).join(',');
 
 
 
 
 
3414
  }
3415
  }
3416
 
516
  $('body').delegate('.fl-builder-global-settings .fl-builder-settings-save', 'click', FLBuilder._saveGlobalSettingsClicked);
517
 
518
  /* Template Selector */
519
+ $('body').delegate('.fl-template-category-select', 'change', FLBuilder._templateCategoryChanged);
520
+ $('body').delegate('.fl-template-preview', 'click', FLBuilder._templateClicked);
521
  $('body').delegate('.fl-user-template', 'click', FLBuilder._userTemplateClicked);
522
  $('body').delegate('.fl-user-template-edit', 'click', FLBuilder._editUserTemplateClicked);
523
  $('body').delegate('.fl-user-template-delete', 'click', FLBuilder._deleteUserTemplateClicked);
 
524
  $('body').delegate('.fl-builder-template-replace-button', 'click', FLBuilder._templateReplaceClicked);
525
  $('body').delegate('.fl-builder-template-append-button', 'click', FLBuilder._templateAppendClicked);
526
  $('body').delegate('.fl-builder-template-actions .fl-builder-cancel-button', 'click', FLBuilder._templateCancelClicked);
528
  /* User Template Settings */
529
  $('body').delegate('.fl-builder-user-template-settings .fl-builder-settings-save', 'click', FLBuilder._saveUserTemplateSettings);
530
 
 
 
 
 
531
  /* Help Actions */
532
  $('body').delegate('.fl-builder-help-tour-button', 'click', FLBuilder._startHelpTour);
533
  $('body').delegate('.fl-builder-help-video-button', 'click', FLBuilder._watchVideoClicked);
684
 
685
  e.preventDefault();
686
 
687
+ if ( 'fl-builder-template' == FLBuilderConfig.postType ) {
688
+ return;
689
+ }
690
+
691
  FLBuilder._exitUrl = href.indexOf('?') > -1 ? href : href + '?fl_builder';
692
  FLBuilder._doneClicked();
693
  },
758
 
759
  // Duplicate button
760
  if(postType == 'fl-builder-template') {
761
+ if ( typeof window.opener == 'undefined' || ! window.opener ) {
762
+ buttons['duplicate-page'] = FLBuilderStrings.duplicateTemplate;
763
+ }
764
  }
765
  else {
766
  buttons['duplicate-page'] = FLBuilderStrings.duplicatePage;
767
  }
768
 
769
  // Template buttons
770
+ if(!lite && postType != 'fl-builder-template' && (enabledTemplates == 'enabled' || enabledTemplates == 'user')) {
771
 
772
  buttons['save-user-template'] = FLBuilderStrings.saveTemplate;
773
 
982
  /**
983
  * Redirects the user to the _exitUrl if defined, otherwise
984
  * it redirects the user to the current post without the
985
+ * builder active.
986
  *
987
  * @since 1.0
988
+ * @since 1.5.7 Closes the window if we're in a child window.
989
  * @access private
990
  * @method _exit
991
  */
993
  {
994
  var href = window.location.href;
995
 
996
+ if ( typeof window.opener != 'undefined' && window.opener ) {
997
+ window.close();
998
  }
999
  else {
1000
+
1001
+ if ( FLBuilder._exitUrl ) {
1002
+ href = FLBuilder._exitUrl;
1003
+ }
1004
+ else {
1005
+ href = href.replace('?fl_builder', '').replace('&fl_builder', '');
1006
+ }
1007
+
1008
+ window.location.href = href;
1009
  }
 
 
1010
  },
1011
 
1012
  /* Tools Actions
1046
  window.location.href = adminUrl + 'post.php?post='+ response +'&action=edit';
1047
  },
1048
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1049
  /**
1050
  * Shows the global builder settings lightbox when the global
1051
  * settings button is clicked.
1153
  }
1154
  },
1155
 
1156
+ /**
1157
+ * Shows the template selector when the templates button
1158
+ * has been clicked.
1159
+ *
1160
+ * @since 1.0
1161
+ * @access private
1162
+ * @method _changeTemplateClicked
1163
+ */
1164
+ _changeTemplateClicked: function()
1165
+ {
1166
+ FLBuilder._actionsLightbox.close();
1167
+ FLBuilder._showTemplateSelector();
1168
+ },
1169
+
1170
  /**
1171
  * Shows the template selector lightbox.
1172
  *
1204
  * @method _templateSelectorLoaded
1205
  * @param {String} html The HTML for the template selector.
1206
  */
1207
+ _templateSelectorLoaded: function( html )
1208
  {
1209
+ FLBuilder._setLightboxContent( html );
1210
 
1211
+ var select = $( '.fl-template-category-select' ),
1212
+ userTemplates = $( '.fl-user-template' );
1213
+
1214
+ // Default to the user templates tab?
1215
+ if ( 'user' == FLBuilderConfig.enabledTemplates || userTemplates.length > 0 ) {
1216
+ select.val( 'fl-builder-settings-tab-yours' );
1217
+ $( '.fl-builder-settings-tab' ).removeClass( 'fl-active' );
1218
+ $( '#fl-builder-settings-tab-yours' ).addClass( 'fl-active' );
1219
+ }
1220
+
1221
+ // Show the no templates message?
1222
+ if ( 0 === userTemplates.length ) {
1223
+ $( '.fl-user-templates-message' ).show();
1224
  }
1225
 
1226
  $( 'body' ).trigger( 'fl-builder.template-selector-loaded' );
1227
  },
1228
 
1229
+ /**
1230
+ * Callback to show a template category when the
1231
+ * select is changed.
1232
+ *
1233
+ * @since 1.5.7
1234
+ * @access private
1235
+ * @method _templateCategoryChanged
1236
+ */
1237
+ _templateCategoryChanged: function()
1238
+ {
1239
+ $( '.fl-template-selector .fl-builder-settings-tab' ).hide();
1240
+ $( '#' + $( this ).val() ).show();
1241
+ },
1242
+
1243
  /**
1244
  * Callback for when a user clicks a core template in
1245
  * the template selector.
1251
  _templateClicked: function()
1252
  {
1253
  var template = $(this),
1254
+ index = template.closest('.fl-template-preview').attr('data-id');
1255
 
1256
  if($(FLBuilder._contentClass).children('.fl-row').length > 0) {
1257
 
1273
  }
1274
  },
1275
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1276
  /**
1277
  * Shows the actions lightbox for replacing and appending templates.
1278
  *
1359
  FLBuilder.ajax({
1360
  action: 'fl_builder_save',
1361
  method: 'apply_template',
1362
+ template_id: id,
1363
  append: append
1364
  }, FLBuilder._updateLayout);
1365
  }
1377
  /* User Template Settings
1378
  ----------------------------------------------------------*/
1379
 
1380
+ /**
1381
+ * Shows the settings for saving a user defined template
1382
+ * when the save template button is clicked.
1383
+ *
1384
+ * @since 1.1.3
1385
+ * @access private
1386
+ * @method _saveUserTemplateClicked
1387
+ */
1388
+ _saveUserTemplateClicked: function()
1389
+ {
1390
+ FLBuilder._actionsLightbox.close();
1391
+ FLBuilder._showLightbox(false);
1392
+
1393
+ FLBuilder.ajax({
1394
+ action: 'fl_builder_render_user_template_settings'
1395
+ }, FLBuilder._userTemplateSettingsLoaded);
1396
+ },
1397
+
1398
  /**
1399
  * Sets the lightbox content when the user template settings are loaded.
1400
  *
1434
  FLBuilder.ajax({
1435
  action: 'fl_builder_save',
1436
  method: 'save_user_template',
1437
+ settings: settings
1438
  }, FLBuilder._saveUserTemplateSettingsComplete);
1439
 
1440
  FLBuilder._lightbox.close();
1452
  {
1453
  FLBuilder.alert(FLBuilderStrings.templateSaved);
1454
  },
 
 
 
1455
 
1456
  /**
1457
+ * Callback for when a user clicks a user defined template in
1458
+ * the template selector.
1459
  *
1460
+ * @since 1.1.3
1461
  * @access private
1462
+ * @method _userTemplateClicked
1463
  */
1464
+ _userTemplateClicked: function()
1465
  {
1466
+ var id = $(this).attr('data-id');
 
 
 
 
1467
 
1468
+ if($(FLBuilder._contentClass).children('.fl-row').length > 0) {
1469
+
1470
+ if(id == 'blank') {
1471
+ if(confirm(FLBuilderStrings.changeTemplateMessage)) {
1472
+ FLBuilder._lightbox._node.hide();
1473
+ FLBuilder._applyTemplate('blank', false, 'user');
1474
+ }
1475
+ }
1476
+ else {
1477
+ FLBuilder._selectedTemplateId = id;
1478
+ FLBuilder._selectedTemplateType = 'user';
1479
+ FLBuilder._showTemplateActions();
1480
+ FLBuilder._lightbox._node.hide();
1481
+ }
1482
+ }
1483
+ else {
1484
+ FLBuilder._applyTemplate(id, false, 'user');
1485
  }
1486
  },
1487
 
1488
  /**
1489
+ * Launches the builder in a new tab to edit a user
1490
+ * defined template when the edit link is clicked.
 
 
 
 
 
 
 
 
 
 
 
 
1491
  *
1492
+ * @since 1.1.3
1493
  * @access private
1494
+ * @method _editUserTemplateClicked
1495
+ * @param {Object} e The event object.
1496
  */
1497
+ _editUserTemplateClicked: function(e)
1498
  {
1499
+ e.preventDefault();
1500
+ e.stopPropagation();
1501
 
1502
+ window.open($(this).attr('href'));
 
 
 
 
1503
  },
1504
 
1505
  /**
1506
+ * Deletes a user defined template when the delete link is clicked.
 
1507
  *
1508
+ * @since 1.1.3
1509
  * @access private
1510
+ * @method _deleteUserTemplateClicked
1511
+ * @param {Object} e The event object.
1512
  */
1513
+ _deleteUserTemplateClicked: function(e)
1514
  {
1515
+ var template = $( this ).closest( '.fl-user-template' ),
1516
+ id = template.attr( 'data-id' ),
1517
+ all = $( '.fl-user-template[data-id=' + id + ']' ),
1518
+ parent = null;
1519
+
1520
+ if ( confirm( FLBuilderStrings.deleteTemplate ) ) {
1521
+
1522
+ FLBuilder.ajax( {
1523
+ action: 'fl_builder_save',
1524
+ method: 'delete_user_template',
1525
+ template_id: id
1526
+ } );
1527
+
1528
+ all.fadeOut( function() {
1529
+
1530
+ template = $( this );
1531
+ parent = template.closest( '.fl-user-template-category' );
1532
+
1533
+ template.remove();
1534
+
1535
+ if ( 0 === parent.find( '.fl-user-template' ).length ) {
1536
+ parent.remove();
1537
+ }
1538
+ if ( 1 === $( '.fl-user-template' ).length ) {
1539
+ $( '.fl-user-templates').hide();
1540
+ $( '.fl-user-templates-message').show();
1541
+ }
1542
+ });
1543
+ }
1544
+
1545
+ e.stopPropagation();
1546
  },
1547
 
1548
  /* Core Template Settings
3345
  {
3346
  FLBuilder._updateEditorFields();
3347
 
3348
+ var data = form.serializeArray(),
3349
+ checkboxes = form.find( 'input[type="checkbox"]:not(:checked)' ),
3350
+ i = 0,
3351
+ value = '',
3352
+ name = '',
3353
+ key = '',
3354
+ matches = [],
3355
+ settings = {};
3356
+
3357
+ // Add unchecked checkboxes to the form data.
3358
+ for ( ; i < checkboxes.length; i++ ) {
3359
+
3360
+ name = checkboxes.eq( i ).attr( 'name' );
3361
+
3362
+ if ( 'undefined' != name ) {
3363
+
3364
+ data.push( {
3365
+ name : name,
3366
+ value : ''
3367
+ } );
3368
+ }
3369
+ }
3370
+
3371
+ // Loop through the form data.
3372
+ for ( i = 0; i < data.length; i++ ) {
3373
 
3374
+ value = data[ i ].value.replace( /\r/gm, '' );
3375
+
3376
+ // Support foo[] setting keys.
3377
+ if ( data[ i ].name.indexOf( '[]' ) > -1 ) {
3378
 
3379
+ name = data[ i ].name.replace( '[]', '' );
3380
 
3381
+ // Support foo[][bar] setting keys.
3382
+ if ( name.indexOf( '[' ) > -1 ) {
3383
 
3384
+ matches = name.match( /\[(.*)\]/ );
3385
+ key = matches[ 0 ].replace( /(\[|\])/g, '' );
3386
+ name = name.replace( matches[ 0 ], '' );
3387
 
3388
+ if ( 'undefined' == typeof settings[ name ] ) {
3389
+ settings[ name ] = {};
3390
  }
3391
 
3392
+ // Support foo[][bar][] setting keys.
3393
+ if ( matches[ 0 ].indexOf( '[]' ) > -1 ) {
3394
+
3395
+ if ( 'undefined' == typeof settings[ name ][ key ] ) {
3396
+ settings[ name ][ key ] = [];
3397
+ }
3398
+
3399
+ settings[ name ][ key ].push( value );
3400
+ }
3401
+ // Must be a foo[][bar] setting key.
3402
+ else {
3403
+ settings[ name ][ key ] = value;
3404
+ }
3405
  }
3406
+ // Must be a standard foo[] setting key.
3407
  else {
3408
 
3409
+ if ( 'undefined' == typeof settings[ name ] ) {
3410
+ settings[ name ] = [];
3411
  }
3412
 
3413
+ settings[ name ].push( value );
3414
  }
3415
  }
3416
+ // Standard name/value pair.
3417
  else {
3418
+ settings[ data[ i ].name ] = value;
3419
  }
3420
  }
3421
 
3422
  // Replace auto suggest values.
3423
+ for ( key in settings ) {
3424
+ if ( 'undefined' != typeof settings[ 'as_values_' + key ] ) {
3425
+ settings[ key ] = $.grep(
3426
+ settings[ 'as_values_' + key ].split( ',' ),
3427
+ function( n ) {
3428
+ return n != '';
3429
+ }
3430
+ ).join( ',' );
3431
  }
3432
  }
3433
 
languages/es_ES.mo CHANGED
Binary file
languages/es_ES.po CHANGED
@@ -2,8 +2,8 @@ msgid ""
2
  msgstr ""
3
  "Project-Id-Version: {FL_BUILDER_NAME}\n"
4
  "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2015-04-14 15:26-0800\n"
6
- "PO-Revision-Date: 2015-04-16 23:24+0100\n"
7
  "Last-Translator: Roberto Porcar <rporcar@arrakis.es>\n"
8
  "Language-Team: \n"
9
  "Language: es_ES\n"
@@ -44,7 +44,7 @@ msgstr "Actualizar"
44
  msgid "Modules"
45
  msgstr "Módulos"
46
 
47
- #: classes/class-fl-builder-admin-settings.php:159 includes/ui.php:47
48
  msgid "Templates"
49
  msgstr "Plantillas"
50
 
@@ -82,29 +82,29 @@ msgstr "Caché"
82
  msgid "Uninstall"
83
  msgstr "Desinstalar"
84
 
85
- #: classes/class-fl-builder-admin-settings.php:450
86
  msgid "Error! You must have at least one icon set enabled."
87
  msgstr "Error! Necesitas tener al menos una colección de iconos habilitada."
88
 
89
- #: classes/class-fl-builder-admin-settings.php:492
90
  msgid "Error! Could not unzip file."
91
  msgstr "¡Error! No se puede descomprimir el archivo."
92
 
93
- #: classes/class-fl-builder-admin-settings.php:526
94
  msgid "Error! Please upload an icon set from either Icomoon or Fontello."
95
  msgstr "¡Error! Por favor, sube un icono de Icomoon o Fontello."
96
 
97
- #: classes/class-fl-builder-admin-settings.php:648
98
  msgid "Error! Please enter an iframe for the video embed code."
99
  msgstr ""
100
  "¡Error! Por favor, introduce un iframe para el código de inserción del vídeo."
101
 
102
- #: classes/class-fl-builder-admin-settings.php:666
103
  msgid "Error! You must have at least one feature of the help button enabled."
104
  msgstr ""
105
  "¡Error! Debse tener al menos una característica del botón ayuda habilitada."
106
 
107
- #: classes/class-fl-builder-admin.php:40
108
  #, php-format
109
  msgid ""
110
  "This version of the <strong>Page Builder</strong> plugin is not compatible "
@@ -115,7 +115,7 @@ msgstr ""
115
  "WordPress Multisitio. <a%s>Por favor, actualiza</a> a la versión Multisitio "
116
  "de este plugin."
117
 
118
- #: classes/class-fl-builder-admin.php:50
119
  msgid ""
120
  "The <strong>Page Builder</strong> plugin requires WordPress version 3.5 or "
121
  "greater. Please update WordPress before activating the plugin."
@@ -123,24 +123,24 @@ msgstr ""
123
  "El plugin <strong>Page Builder</strong> requiere WordPress versión 3.5 o "
124
  "superior. Por favor actualiza WordPress antes de activar el plugin."
125
 
126
- #: classes/class-fl-builder-admin.php:96
127
  #, php-format
128
  msgid "Page Builder activated! <a%s>Click here</a> to enable remote updates."
129
  msgstr ""
130
  "¡Page Builder activado! <a%s>Pulsa aquí</a> para habilitar las "
131
  "actualizaciones remotas."
132
 
133
- #: classes/class-fl-builder-admin.php:191
134
  msgctxt "Plugin action link label."
135
  msgid "Upgrade"
136
  msgstr "Actualizar"
137
 
138
- #: classes/class-fl-builder-admin.php:202
139
- #: classes/class-fl-builder-model.php:2606
140
  msgid "Page Builder"
141
  msgstr "Page Builder"
142
 
143
- #: classes/class-fl-builder-model.php:1394
144
  #, php-format
145
  msgctxt "%s stands for the module filename"
146
  msgid ""
@@ -151,15 +151,15 @@ msgstr ""
151
  "espacio de nombres de tu módulo para garantizar la compatibilidad con Beaver "
152
  "Builder."
153
 
154
- #: classes/class-fl-builder-model.php:1452
155
- #: classes/class-fl-builder-model.php:1506 modules/heading/heading.php:16
156
  #: modules/photo/photo.php:27 modules/rich-text/rich-text.php:16
157
  #: modules/separator/separator.php:16 modules/video/video.php:21
158
  msgid "Basic Modules"
159
  msgstr "Módulos Básicos"
160
 
161
- #: classes/class-fl-builder-model.php:1453
162
- #: classes/class-fl-builder-model.php:1507 modules/accordion/accordion.php:16
163
  #: modules/button/button.php:16 modules/callout/callout.php:16
164
  #: modules/contact-form/contact-form.php:16
165
  #: modules/content-slider/content-slider.php:16 modules/cta/cta.php:16
@@ -175,40 +175,54 @@ msgstr "Módulos Básicos"
175
  msgid "Advanced Modules"
176
  msgstr "Módulos Avanzados"
177
 
178
- #: classes/class-fl-builder-model.php:1454
179
- #: classes/class-fl-builder-model.php:1508
180
  msgid "Other Modules"
181
  msgstr "Otros Módulos"
182
 
183
- #: classes/class-fl-builder-model.php:1455
184
- #: classes/class-fl-builder-model.php:1509
185
- #: includes/admin-settings-modules.php:32 includes/ui.php:88
186
  #: modules/widget/widget.php:16
187
  msgid "WordPress Widgets"
188
  msgstr "WordPress Widgets"
189
 
190
- #: classes/class-fl-builder-model.php:2018
191
  #, php-format
192
  msgctxt "%s stands for post/page title."
193
  msgid "Copy of %s"
194
  msgstr "Copia de %s"
195
 
196
- #: classes/class-fl-builder-photo.php:78 classes/class-fl-builder-photo.php:83
 
 
 
 
 
 
 
 
 
 
 
 
 
 
197
  msgctxt "Image size."
198
  msgid "Full Size"
199
  msgstr "Tamaño completo"
200
 
201
- #: classes/class-fl-builder-photo.php:84
202
  msgctxt "Image size."
203
  msgid "Large"
204
  msgstr "Grande"
205
 
206
- #: classes/class-fl-builder-photo.php:85
207
  msgctxt "Image size."
208
  msgid "Medium"
209
  msgstr "Medio"
210
 
211
- #: classes/class-fl-builder-photo.php:86
212
  msgctxt "Image size."
213
  msgid "Thumbnail"
214
  msgstr "Miniatura"
@@ -240,10 +254,12 @@ msgstr ""
240
  #: classes/class-fl-builder-service-constant-contact.php:156
241
  #: classes/class-fl-builder-service-getresponse.php:154
242
  #: classes/class-fl-builder-service-icontact.php:207
 
243
  #: classes/class-fl-builder-service-madmimi.php:178
244
  #: classes/class-fl-builder-service-mailchimp.php:154
245
  #: classes/class-fl-builder-service-mailpoet.php:92
246
- #: classes/class-fl-builder-services.php:263 includes/service-settings.php:21
 
247
  #: modules/woocommerce/woocommerce.php:60
248
  msgid "Choose..."
249
  msgstr "Elegir..."
@@ -253,9 +269,12 @@ msgstr "Elegir..."
253
  #: classes/class-fl-builder-service-constant-contact.php:166
254
  #: classes/class-fl-builder-service-getresponse.php:164
255
  #: classes/class-fl-builder-service-icontact.php:217
 
256
  #: classes/class-fl-builder-service-madmimi.php:188
257
  #: classes/class-fl-builder-service-mailchimp.php:164
258
  #: classes/class-fl-builder-service-mailpoet.php:102
 
 
259
  msgid "List"
260
  msgstr "Lista"
261
 
@@ -276,6 +295,8 @@ msgstr "Hubo un error al suscribirse a AWeber. %s"
276
  #: classes/class-fl-builder-service-campaign-monitor.php:55
277
  #: classes/class-fl-builder-service-constant-contact.php:48
278
  #: classes/class-fl-builder-service-getresponse.php:67
 
 
279
  #: classes/class-fl-builder-service-madmimi.php:73
280
  #: classes/class-fl-builder-service-mailchimp.php:67
281
  msgid "Error: You must provide an API key."
@@ -285,12 +306,15 @@ msgstr "Error: Debes proporcionar una clave de API."
285
  #: classes/class-fl-builder-service-campaign-monitor.php:129
286
  #: classes/class-fl-builder-service-getresponse.php:76
287
  #: classes/class-fl-builder-service-getresponse.php:132
 
288
  msgid "Error: Please check your API key."
289
  msgstr "Error: Por favor comprueba tu clave de API."
290
 
291
  #: classes/class-fl-builder-service-campaign-monitor.php:88
292
  #: classes/class-fl-builder-service-constant-contact.php:88
293
  #: classes/class-fl-builder-service-getresponse.php:100
 
 
294
  #: classes/class-fl-builder-service-madmimi.php:121
295
  #: classes/class-fl-builder-service-mailchimp.php:100
296
  msgid "API Key"
@@ -305,6 +329,7 @@ msgstr ""
305
  "Monitor bajo Account Settings > API Key."
306
 
307
  #: classes/class-fl-builder-service-campaign-monitor.php:158
 
308
  msgid "Client"
309
  msgstr "Cliente"
310
 
@@ -386,6 +411,34 @@ msgstr ""
386
  msgid "There was an error subscribing to GetResponse. %s"
387
  msgstr "Hubo un error al suscribirse a GetResponse. %s"
388
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
389
  #: classes/class-fl-builder-service-icontact.php:75
390
  msgid "Error: You must provide a username."
391
  msgstr "Error: Debes proporcionar un nombre de usuario."
@@ -413,6 +466,7 @@ msgid "Your iContact username."
413
  msgstr "Su nombre de usuario iContact."
414
 
415
  #: classes/class-fl-builder-service-icontact.php:136
 
416
  msgid "App ID"
417
  msgstr "App ID"
418
 
@@ -449,6 +503,44 @@ msgstr "Hubo un error suscribirse a iContact. La cuenta ya no está conectada."
449
  msgid "There was an error subscribing to iContact. %s"
450
  msgstr "Hubo un error suscribirse a iContact. %s"
451
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
452
  #: classes/class-fl-builder-service-madmimi.php:69
453
  msgid "Error: You must provide an email address."
454
  msgstr "Error: Debes proporcionar un nombre de usuario."
@@ -504,7 +596,7 @@ msgid ""
504
  msgstr ""
505
  "Hubo un error al suscribirse a Mad Mimi. La cuenta ya no está conectada."
506
 
507
- #: classes/class-fl-builder-service-mailchimp.php:219
508
  #, php-format
509
  msgid "There was an error subscribing to MailChimp. %s"
510
  msgstr "Hubo un error al suscribirse a MailChimp. %s"
@@ -517,31 +609,75 @@ msgstr "Hubo un error al recuperar tus listas."
517
  msgid "There was an error subscribing. MailPoet is not installed."
518
  msgstr "Hubo un error al suscribirse. MailPoet no está instalado."
519
 
520
- #: classes/class-fl-builder-services.php:133
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
521
  msgctxt "Third party service such as MailChimp."
522
  msgid "Error: Missing service type."
523
  msgstr "Error: Falta el tipo de servicio."
524
 
525
- #: classes/class-fl-builder-services.php:136
526
  msgctxt "Connection data such as an API key."
527
  msgid "Error: Missing service data."
528
  msgstr "Error: Falta de datos del servicio."
529
 
530
- #: classes/class-fl-builder-services.php:139
531
  msgctxt "Account name for a third party service such as MailChimp."
532
  msgid "Error: Missing account name."
533
  msgstr "Error: Falta el nombre de cuenta."
534
 
535
- #: classes/class-fl-builder-services.php:148
536
  msgctxt "Account name for a third party service such as MailChimp."
537
  msgid "Error: An account with that name already exists."
538
  msgstr "Error: Ya existe una cuenta con ese nombre."
539
 
540
- #: classes/class-fl-builder-services.php:228
541
  msgid "Account Name"
542
  msgstr "Nombre de la cuenta"
543
 
544
- #: classes/class-fl-builder-services.php:229
545
  msgid ""
546
  "Used to identify this connection within the accounts list and can be "
547
  "anything you like."
@@ -549,89 +685,147 @@ msgstr ""
549
  "Utilizado para identificar esta conexión dentro de la lista de cuentas y "
550
  "puede ser cualquier cosa que quieras."
551
 
552
- #: classes/class-fl-builder-services.php:242
553
  msgid "Connect"
554
  msgstr "Conectar"
555
 
556
- #: classes/class-fl-builder-services.php:270
557
  msgid "Add Account..."
558
  msgstr "Añadir cuenta"
559
 
560
- #: classes/class-fl-builder-services.php:277
561
  msgid "Account"
562
  msgstr "Cuenta"
563
 
564
- #: classes/class-fl-builder-templates.php:28
565
  msgid "Page Builder Templates"
566
  msgstr "Plantillas de Page Builder"
567
 
568
- #: classes/class-fl-builder.php:713
 
 
 
 
 
 
 
 
569
  #, php-format
570
  msgctxt "Field name to add."
571
  msgid "Add %s"
572
  msgstr "Añadir %s"
573
 
574
- #: classes/class-fl-builder.php:776 classes/class-fl-builder.php:778
575
  msgctxt "Custom post type label."
576
- msgid "Layout Templates"
577
- msgstr "Plantillas de diseño"
578
 
579
- #: classes/class-fl-builder.php:777 classes/class-fl-builder.php:779
580
  msgctxt "Custom post type label."
581
- msgid "Layout Template"
582
- msgstr "Plantilla de diseño"
583
 
584
- #: classes/class-fl-builder.php:780
585
  msgctxt "Custom post type label."
586
  msgid "Add New"
587
  msgstr "Añadir Nuevo"
588
 
589
- #: classes/class-fl-builder.php:781
590
  msgctxt "Custom post type label."
591
- msgid "Add New Layout Template"
592
- msgstr "Añadir Nueva Plantilla de Diseño"
593
 
594
- #: classes/class-fl-builder.php:782
595
  msgctxt "Custom post type label."
596
- msgid "New Layout Template"
597
- msgstr "Nueva Plantilla de Diseño"
598
 
599
- #: classes/class-fl-builder.php:783
600
  msgctxt "Custom post type label."
601
- msgid "Edit Layout Template"
602
- msgstr "Editar Plantilla de Diseño"
603
 
604
- #: classes/class-fl-builder.php:784
605
  msgctxt "Custom post type label."
606
- msgid "View Layout Template"
607
- msgstr "Ver Plantilla de Diseño"
608
 
609
- #: classes/class-fl-builder.php:785
610
  msgctxt "Custom post type label."
611
- msgid "All Layout Templates"
612
- msgstr "Todas las Plantillas de Diseño"
613
 
614
- #: classes/class-fl-builder.php:786
615
  msgctxt "Custom post type label."
616
- msgid "Search Layout Templates"
617
- msgstr "Buscar Plantillas de Diseño"
618
 
619
- #: classes/class-fl-builder.php:787
620
  msgctxt "Custom post type label."
621
- msgid "Parent Layout Templates:"
622
- msgstr "Plantilla de Diseño Maestra"
623
 
624
- #: classes/class-fl-builder.php:788
625
  msgctxt "Custom post type label."
626
- msgid "No layout templates found."
627
- msgstr "No se han encontrado plantillas de diseño."
628
 
629
- #: classes/class-fl-builder.php:789
630
  msgctxt "Custom post type label."
631
- msgid "No layout templates found in Trash."
632
- msgstr "No se han encontrado plantillas de diseño en la Papelera."
 
 
 
 
 
633
 
634
- #: classes/class-fl-builder.php:1160 includes/js-config.php:69
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
635
  #, php-format
636
  msgctxt "%s stands for module name."
637
  msgid "%s Settings"
@@ -643,9 +837,11 @@ msgstr "Editor de Texto"
643
 
644
  #: includes/admin-posts.php:7
645
  #, php-format
646
- msgctxt "%s stands for custom branded \"Page Builder\" name."
647
- msgid "%s is currently active for this page."
648
- msgstr "%s está activado para esta página."
 
 
649
 
650
  #: includes/admin-posts.php:8
651
  #, php-format
@@ -667,6 +863,10 @@ msgstr ""
667
  "Además, también puedes añadir un icono personalizado introduciendo la URL de "
668
  "una imagen. Deja el campo vacío si no quieres usar un icono."
669
 
 
 
 
 
670
  #: includes/admin-settings-cache.php:9
671
  msgid ""
672
  "A CSS and JavaScript file is dynamically generated and cached each time you "
@@ -702,6 +902,10 @@ msgstr ""
702
  "Esto sólo se aplica a este sitio. Por favor visita la Configuración de "
703
  "Administrador de Red para borrar la caché para todos los sitios en la red."
704
 
 
 
 
 
705
  #: includes/admin-settings-editing.php:3
706
  msgid "Editing Settings"
707
  msgstr "Editar configuración"
@@ -709,7 +913,7 @@ msgstr "Editar configuración"
709
  #: includes/admin-settings-editing.php:10 includes/admin-settings-icons.php:27
710
  #: includes/admin-settings-modules.php:10
711
  #: includes/admin-settings-post-types.php:10
712
- #: includes/admin-settings-templates.php:10
713
  msgid "Override network settings?"
714
  msgstr "¿Sobreescribir configuración de red?"
715
 
@@ -722,6 +926,10 @@ msgstr ""
722
  "Establece las <a%s>competencias</a> necesarias para que los usuarios puedan "
723
  "acceder a la edición avanzada: añadir, borrar o mover módulos."
724
 
 
 
 
 
725
  #: includes/admin-settings-help-button.php:8
726
  msgid "Help Button Settings"
727
  msgstr "Ajustes del Botón de Ayuda"
@@ -774,6 +982,10 @@ msgstr "Habilitar Foros"
774
  msgid "Forums URL"
775
  msgstr "URL de los foros"
776
 
 
 
 
 
777
  #: includes/admin-settings-icons.php:3
778
  msgid "Icon Settings"
779
  msgstr "Configuración de Iconos"
@@ -798,6 +1010,26 @@ msgctxt "Plugin setup page: Delete icon set."
798
  msgid "Delete"
799
  msgstr "Eliminar"
800
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
801
  #: includes/admin-settings-modules.php:3
802
  msgid "Enabled Modules"
803
  msgstr "Módulos habilitados"
@@ -813,6 +1045,10 @@ msgctxt "Plugin setup page: Modules."
813
  msgid "All"
814
  msgstr "Todo"
815
 
 
 
 
 
816
  #: includes/admin-settings-post-types.php:18
817
  msgid ""
818
  "Enter a comma separated list of the post types you would like the builder to "
@@ -835,31 +1071,79 @@ msgstr "Ejemplo: página, entrada, producto"
835
  msgid "Select the post types you would like the builder to work with."
836
  msgstr "Selecciona los tipos de entrada con los que te gustaría trabajar."
837
 
838
- #: includes/admin-settings-templates.php:3 includes/template-settings.php:4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
839
  msgid "Template Settings"
840
  msgstr "Ajustes de Plantilla"
841
 
842
- #: includes/admin-settings-templates.php:16
843
- msgid "Enable or disable templates using the options below."
844
- msgstr ""
845
- "Habilitar o deshabilitar las plantillas utilizando las siguientes opciones."
846
 
847
  #: includes/admin-settings-templates.php:23
 
 
 
 
 
 
 
848
  msgid "Enable All Templates"
849
  msgstr "Habilitar Todas las Plantillas"
850
 
851
- #: includes/admin-settings-templates.php:24
852
  msgid "Enable Core Templates Only"
853
  msgstr "Habilitar Sólo Plantillas Base"
854
 
855
- #: includes/admin-settings-templates.php:25
856
  msgid "Enable User Templates Only"
857
  msgstr "Habilitar Sólo Plantillas de Usuario"
858
 
859
- #: includes/admin-settings-templates.php:26
860
  msgid "Disable All Templates"
861
  msgstr "Deshabilitar Todas las Plantillas"
862
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
863
  #: includes/admin-settings-uninstall.php:5
864
  msgid ""
865
  "Clicking the button below will uninstall the page builder plugin and delete "
@@ -914,9 +1198,9 @@ msgstr "Nombre"
914
  msgid "Image"
915
  msgstr "Imagen"
916
 
917
- #: includes/admin-templates-edit.php:16 includes/row-settings.php:155
918
- #: includes/template-settings.php:23 modules/callout/callout.php:353
919
- #: modules/callout/callout.php:373
920
  #: modules/content-slider/content-slider.php:472
921
  #: modules/post-grid/post-grid.php:127
922
  msgid "Position"
@@ -938,15 +1222,15 @@ msgstr "Premium"
938
  #: modules/content-slider/content-slider.php:266
939
  #: modules/content-slider/content-slider.php:537
940
  #: modules/icon-group/icon-group.php:80 modules/icon/icon.php:111
941
- #: modules/slideshow/slideshow.php:315 modules/slideshow/slideshow.php:325
942
- #: modules/slideshow/slideshow.php:376 modules/slideshow/slideshow.php:417
943
- #: modules/slideshow/slideshow.php:439 modules/slideshow/slideshow.php:488
944
- #: modules/slideshow/slideshow.php:497 modules/slideshow/slideshow.php:506
945
- #: modules/slideshow/slideshow.php:515 modules/slideshow/slideshow.php:524
946
- #: modules/slideshow/slideshow.php:533 modules/slideshow/slideshow.php:542
947
- #: modules/slideshow/slideshow.php:556 modules/slideshow/slideshow.php:571
948
- #: modules/slideshow/slideshow.php:606 modules/slideshow/slideshow.php:618
949
- #: modules/slideshow/slideshow.php:630 modules/slideshow/slideshow.php:642
950
  #: modules/social-buttons/social-buttons.php:111
951
  #: modules/social-buttons/social-buttons.php:120
952
  #: modules/social-buttons/social-buttons.php:129
@@ -968,15 +1252,15 @@ msgstr "No"
968
  #: modules/content-slider/content-slider.php:267
969
  #: modules/content-slider/content-slider.php:538
970
  #: modules/icon-group/icon-group.php:81 modules/icon/icon.php:112
971
- #: modules/slideshow/slideshow.php:316 modules/slideshow/slideshow.php:326
972
- #: modules/slideshow/slideshow.php:377 modules/slideshow/slideshow.php:418
973
- #: modules/slideshow/slideshow.php:440 modules/slideshow/slideshow.php:489
974
- #: modules/slideshow/slideshow.php:498 modules/slideshow/slideshow.php:507
975
- #: modules/slideshow/slideshow.php:516 modules/slideshow/slideshow.php:525
976
- #: modules/slideshow/slideshow.php:534 modules/slideshow/slideshow.php:543
977
- #: modules/slideshow/slideshow.php:557 modules/slideshow/slideshow.php:572
978
- #: modules/slideshow/slideshow.php:607 modules/slideshow/slideshow.php:619
979
- #: modules/slideshow/slideshow.php:631 modules/slideshow/slideshow.php:643
980
  #: modules/social-buttons/social-buttons.php:110
981
  #: modules/social-buttons/social-buttons.php:119
982
  #: modules/social-buttons/social-buttons.php:128
@@ -1025,19 +1309,19 @@ msgid "Premium"
1025
  msgstr "Premium"
1026
 
1027
  #: includes/admin-templates.php:25 includes/field-photo.php:12
1028
- #: includes/template-selector.php:83
1029
  msgid "Edit"
1030
  msgstr "Editar"
1031
 
1032
- #: includes/admin-templates.php:27 includes/template-selector.php:84
1033
  msgid "Delete"
1034
  msgstr "Eliminar"
1035
 
1036
- #: includes/admin-templates.php:40
1037
  msgid "Do you really want to delete this template?"
1038
  msgstr "¿Quieres eliminar esta plantilla?"
1039
 
1040
- #: includes/column-settings.php:4
1041
  msgid "Column Settings"
1042
  msgstr "Configuración de Columnas"
1043
 
@@ -1070,8 +1354,8 @@ msgstr "Ancho de columna"
1070
  msgid "Text"
1071
  msgstr "Texto"
1072
 
1073
- #: includes/column-settings.php:30 includes/column-settings.php:43
1074
- #: includes/column-settings.php:100 includes/row-settings.php:52
1075
  #: includes/row-settings.php:109 includes/row-settings.php:403
1076
  #: modules/callout/callout.php:391
1077
  #: modules/content-slider/content-slider.php:337
@@ -1080,7 +1364,38 @@ msgstr "Texto"
1080
  msgid "Color"
1081
  msgstr "Color"
1082
 
1083
- #: includes/column-settings.php:39 includes/row-settings.php:105
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1084
  #: modules/button/button.php:115 modules/callout/callout.php:404
1085
  #: modules/callout/callout.php:508
1086
  #: modules/content-slider/content-slider.php:363
@@ -1090,27 +1405,166 @@ msgstr "Color"
1090
  msgid "Background Color"
1091
  msgstr "Color de Fondo"
1092
 
1093
- #: includes/column-settings.php:51 includes/column-settings.php:108
1094
  #: includes/row-settings.php:117 includes/row-settings.php:411
1095
  #: modules/separator/separator.php:44
1096
  msgid "Opacity"
1097
  msgstr "Opacidad"
1098
 
1099
- #: includes/column-settings.php:63 includes/row-settings.php:366
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1100
  msgid "Border"
1101
  msgstr "Borde"
1102
 
1103
- #: includes/column-settings.php:67 includes/row-settings.php:65
1104
- #: includes/row-settings.php:370 modules/callout/callout.php:474
1105
- #: modules/content-slider/content-slider.php:331
1106
- #: modules/content-slider/content-slider.php:378
1107
- #: modules/content-slider/content-slider.php:596
1108
- #: modules/content-slider/content-slider.php:729
1109
- #: modules/slideshow/slideshow.php:339
1110
- msgid "Type"
1111
- msgstr "Tipo"
1112
-
1113
- #: includes/column-settings.php:69 includes/row-settings.php:372
1114
  msgid ""
1115
  "The type of border to use. Double borders must have a width of at least 3px "
1116
  "to render properly."
@@ -1118,75 +1572,75 @@ msgstr ""
1118
  "El tipo de borde a utilizar. Los bordes dobles deben tener una anchura de al "
1119
  "menos 3px para visualizarse correctamente."
1120
 
1121
- #: includes/column-settings.php:71 includes/row-settings.php:374
1122
  msgctxt "Border type."
1123
  msgid "None"
1124
  msgstr "Ninguno"
1125
 
1126
- #: includes/column-settings.php:72 includes/row-settings.php:375
1127
  #: modules/separator/separator.php:75
1128
  msgctxt "Border type."
1129
  msgid "Solid"
1130
  msgstr "Sólido"
1131
 
1132
- #: includes/column-settings.php:73 includes/row-settings.php:376
1133
  #: modules/separator/separator.php:76
1134
  msgctxt "Border type."
1135
  msgid "Dashed"
1136
  msgstr "Discontinuo"
1137
 
1138
- #: includes/column-settings.php:74 includes/row-settings.php:377
1139
  #: modules/separator/separator.php:77
1140
  msgctxt "Border type."
1141
  msgid "Dotted"
1142
  msgstr "Punteado"
1143
 
1144
- #: includes/column-settings.php:75 includes/row-settings.php:378
1145
  #: modules/separator/separator.php:78
1146
  msgctxt "Border type."
1147
  msgid "Double"
1148
  msgstr "Doble"
1149
 
1150
- #: includes/column-settings.php:119 includes/row-settings.php:422
1151
  msgid "Top Width"
1152
  msgstr "Ancho Superior"
1153
 
1154
- #: includes/column-settings.php:131 includes/row-settings.php:434
1155
  msgid "Bottom Width"
1156
  msgstr "Ancho Inferior"
1157
 
1158
- #: includes/column-settings.php:143 includes/row-settings.php:446
1159
  msgid "Left Width"
1160
  msgstr "Ancho Izquierdo"
1161
 
1162
- #: includes/column-settings.php:155 includes/row-settings.php:458
1163
  msgid "Right Width"
1164
  msgstr "Ancho Derecho"
1165
 
1166
- #: includes/column-settings.php:170 includes/module-settings.php:6
1167
  #: includes/row-settings.php:473 modules/content-slider/content-slider.php:273
1168
  msgid "Advanced"
1169
  msgstr "Avanzado"
1170
 
1171
- #: includes/column-settings.php:173 includes/global-settings.php:41
1172
  #: includes/global-settings.php:94 includes/module-settings.php:9
1173
  #: includes/row-settings.php:476
1174
  msgid "Margins"
1175
  msgstr "Márgenes"
1176
 
1177
- #: includes/column-settings.php:177 includes/column-settings.php:230
1178
  #: includes/module-settings.php:13 includes/row-settings.php:480
1179
- #: includes/row-settings.php:533 modules/slideshow/slideshow.php:475
1180
  msgid "Top"
1181
  msgstr "Superior"
1182
 
1183
- #: includes/column-settings.php:189 includes/column-settings.php:242
1184
  #: includes/module-settings.php:25 includes/row-settings.php:492
1185
- #: includes/row-settings.php:545 modules/slideshow/slideshow.php:474
1186
  msgid "Bottom"
1187
  msgstr "Inferior"
1188
 
1189
- #: includes/column-settings.php:201 includes/column-settings.php:254
1190
  #: includes/module-settings.php:37 includes/row-settings.php:504
1191
  #: includes/row-settings.php:557 modules/button/button.php:219
1192
  #: modules/callout/callout.php:252
@@ -1197,7 +1651,7 @@ msgstr "Inferior"
1197
  msgid "Left"
1198
  msgstr "Izquierda"
1199
 
1200
- #: includes/column-settings.php:213 includes/column-settings.php:266
1201
  #: includes/module-settings.php:49 includes/row-settings.php:516
1202
  #: includes/row-settings.php:569 modules/button/button.php:220
1203
  #: modules/callout/callout.php:253
@@ -1208,7 +1662,7 @@ msgstr "Izquierda"
1208
  msgid "Right"
1209
  msgstr "Derecha"
1210
 
1211
- #: includes/column-settings.php:226 includes/global-settings.php:49
1212
  #: includes/row-settings.php:529 modules/button/button.php:233
1213
  #: modules/callout/callout.php:598
1214
  #: modules/content-slider/content-slider.php:703 modules/cta/cta.php:345
@@ -1216,62 +1670,62 @@ msgstr "Derecha"
1216
  msgid "Padding"
1217
  msgstr "Márgenes interiores / Padding"
1218
 
1219
- #: includes/column-settings.php:279 includes/global-settings.php:103
1220
  #: includes/module-settings.php:62 includes/row-settings.php:582
1221
  msgid "Responsive Layout"
1222
  msgstr "Diseño Adaptable"
1223
 
1224
- #: includes/column-settings.php:283 includes/module-settings.php:66
1225
- #: includes/row-settings.php:586 modules/slideshow/slideshow.php:290
1226
  msgid "Display"
1227
  msgstr "Pantalla"
1228
 
1229
- #: includes/column-settings.php:285 includes/module-settings.php:68
1230
  #: includes/row-settings.php:588
1231
  msgid "Always"
1232
  msgstr "Todas"
1233
 
1234
- #: includes/column-settings.php:286 includes/module-settings.php:69
1235
  #: includes/row-settings.php:589
1236
  msgid "Large Devices Only"
1237
  msgstr "Sólo dispositivos de tamaño grande"
1238
 
1239
- #: includes/column-settings.php:287 includes/module-settings.php:70
1240
  #: includes/row-settings.php:590
1241
  msgid "Large &amp; Medium Devices Only"
1242
  msgstr "Sólo dispositivos grandes y medianos"
1243
 
1244
- #: includes/column-settings.php:288 includes/module-settings.php:71
1245
  #: includes/row-settings.php:591
1246
  msgid "Medium Devices Only"
1247
  msgstr "Sólo dispositivos medianos"
1248
 
1249
- #: includes/column-settings.php:289 includes/module-settings.php:72
1250
  #: includes/row-settings.php:592
1251
  msgid "Medium &amp; Small Devices Only"
1252
  msgstr "Sólo dispositivos medianos y pequeños"
1253
 
1254
- #: includes/column-settings.php:290 includes/module-settings.php:73
1255
  #: includes/row-settings.php:593
1256
  msgid "Small Devices Only"
1257
  msgstr "Sólo dispositivos pequeños"
1258
 
1259
- #: includes/column-settings.php:292
1260
  msgid "Choose whether to show or hide this column at different device sizes."
1261
  msgstr ""
1262
  "Elegir si deseas mostrar u ocultar esta columna en dispositivos de diferente "
1263
  "tamaños."
1264
 
1265
- #: includes/column-settings.php:299
1266
  msgid "Medium Device Width"
1267
  msgstr "Anchura de dispositivo de tamaño mediano"
1268
 
1269
- #: includes/column-settings.php:300
1270
  msgid "The width of this column on medium devices such as tablets."
1271
  msgstr ""
1272
  "La anchura de esta columna en dispositivos de tamaño mediano como tabletas."
1273
 
1274
- #: includes/column-settings.php:302 includes/column-settings.php:330
1275
  #: modules/callout/callout.php:283
1276
  #: modules/content-slider/content-slider.php:448 modules/cta/cta.php:167
1277
  #: modules/heading/heading.php:117 modules/heading/heading.php:144
@@ -1279,7 +1733,7 @@ msgstr ""
1279
  msgid "Default"
1280
  msgstr "Predeterminado"
1281
 
1282
- #: includes/column-settings.php:303 includes/column-settings.php:331
1283
  #: modules/button/button.php:193 modules/callout/callout.php:284
1284
  #: modules/content-slider/content-slider.php:449 modules/cta/cta.php:168
1285
  #: modules/heading/heading.php:118 modules/heading/heading.php:145
@@ -1288,34 +1742,34 @@ msgstr "Predeterminado"
1288
  msgid "Custom"
1289
  msgstr "Personalizada"
1290
 
1291
- #: includes/column-settings.php:316
1292
  msgid "Custom Medium Device Width"
1293
  msgstr "Personalizar anchura en dispositivo de tamaño mediano"
1294
 
1295
- #: includes/column-settings.php:327
1296
  msgid "Small Device Width"
1297
  msgstr "Anchura de dispositivo de tamaño pequeño"
1298
 
1299
- #: includes/column-settings.php:328
1300
  msgid "The width of this column on small devices such as phones."
1301
  msgstr ""
1302
  "La anchura de esta columna en dispositivos de tamaño pequeño como teléfonos."
1303
 
1304
- #: includes/column-settings.php:344
1305
  msgid "Custom Small Device Width"
1306
  msgstr "Personalizar anchura en dispositivo de tamaño pequeño"
1307
 
1308
- #: includes/column-settings.php:356 includes/module-settings.php:115
1309
  #: includes/row-settings.php:603
1310
  msgid "CSS Selectors"
1311
  msgstr "Selectores CSS"
1312
 
1313
- #: includes/column-settings.php:360 includes/loop-settings.php:28
1314
  #: includes/module-settings.php:119 includes/row-settings.php:607
1315
  msgid "ID"
1316
  msgstr "ID"
1317
 
1318
- #: includes/column-settings.php:361
1319
  msgid ""
1320
  "A unique ID that will be applied to this column's HTML. Must start with a "
1321
  "letter and only contain dashes, underscores, letters or numbers. No spaces."
@@ -1323,11 +1777,11 @@ msgstr ""
1323
  "Un único ID que se aplicará al HTML de esta columna. Debe empezar con una "
1324
  "letra y sólo contener guiones, subrayados, letras o números. Sin espacios."
1325
 
1326
- #: includes/column-settings.php:368
1327
  msgid "CSS Class"
1328
  msgstr "Clase CSS"
1329
 
1330
- #: includes/column-settings.php:369
1331
  msgid ""
1332
  "A class that will be applied to this column's HTML. Must start with a letter "
1333
  "and only contain dashes, underscores, letters or numbers. Separate multiple "
@@ -1351,7 +1805,7 @@ msgstr "Seleccionar Icono"
1351
  msgid "Replace"
1352
  msgstr "Reemplazar"
1353
 
1354
- #: includes/field-icon.php:7
1355
  msgid "Remove"
1356
  msgstr "Eliminar"
1357
 
@@ -1363,9 +1817,13 @@ msgstr "Seleccionar"
1363
  msgid "Enter a post title to search."
1364
  msgstr "Introduce un título para buscar."
1365
 
 
 
 
 
1366
  #: includes/field-link.php:7 includes/icon-selector.php:28
1367
- #: includes/settings.php:63 includes/template-selector.php:102
1368
- #: includes/ui.php:11
1369
  msgid "Cancel"
1370
  msgstr "Cancelar"
1371
 
@@ -1388,11 +1846,11 @@ msgstr "Editar Galería"
1388
  msgid "Add Photos"
1389
  msgstr "Añadir Fotos"
1390
 
1391
- #: includes/field-photo.php:3
1392
  msgid "Select Photo"
1393
  msgstr "Seleccionar Imagen"
1394
 
1395
- #: includes/field-video.php:3
1396
  msgid "Select Video"
1397
  msgstr "Seleccionar Video"
1398
 
@@ -1411,7 +1869,7 @@ msgstr "Reemplazar Vídeo"
1411
  #: modules/icon/icon.php:27 modules/map/map.php:26 modules/photo/photo.php:368
1412
  #: modules/pricing-table/pricing-table.php:87
1413
  #: modules/rich-text/rich-text.php:26 modules/separator/separator.php:27
1414
- #: modules/sidebar/sidebar.php:27 modules/slideshow/slideshow.php:256
1415
  #: modules/social-buttons/social-buttons.php:64
1416
  #: modules/subscribe-form/subscribe-form.php:86 modules/tabs/tabs.php:77
1417
  #: modules/testimonials/testimonials.php:30
@@ -1473,12 +1931,6 @@ msgstr ""
1473
  msgid "Default Row Width"
1474
  msgstr "Ancho Predeterminado de Fila"
1475
 
1476
- #: includes/global-settings.php:69 includes/global-settings.php:83
1477
- #: includes/row-settings.php:19 includes/row-settings.php:37
1478
- #: includes/row-settings.php:179
1479
- msgid "Fixed"
1480
- msgstr "Fija"
1481
-
1482
  #: includes/global-settings.php:70 includes/global-settings.php:84
1483
  #: includes/row-settings.php:20 includes/row-settings.php:38
1484
  #: modules/button/button.php:192 modules/callout/callout.php:585
@@ -1543,18 +1995,412 @@ msgctxt "Select option for showing all icon libraries."
1543
  msgid "All Libraries"
1544
  msgstr "Todas las Bibliotecas"
1545
 
1546
- #: includes/js-config.php:35
1547
- msgctxt "Duplicate page/post action label."
1548
- msgid "Duplicate"
1549
- msgstr "Duplicar"
1550
-
1551
- #: includes/js-config.php:44
1552
- msgid "\"{message}\" on line {line} of {file}."
1553
- msgstr "\"{message}\" en la línea {line} de {file}."
1554
 
1555
- #: includes/loop-settings.php:20
1556
- msgid "Post Type"
1557
- msgstr "Tipo de Entrada"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1558
 
1559
  #: includes/loop-settings.php:26
1560
  msgid "Order By"
@@ -1603,8 +2449,9 @@ msgid "Ascending"
1603
  msgstr "Ascendente"
1604
 
1605
  #: includes/loop-settings.php:52
 
1606
  msgid "Offset"
1607
- msgstr "Desplazamiento"
1608
 
1609
  #: includes/loop-settings.php:55
1610
  msgid "Skip this many posts that match the specified criteria."
@@ -1670,267 +2517,101 @@ msgctxt "Animation style."
1670
  msgid "Slide Right"
1671
  msgstr "Deslizar desde la Derecha"
1672
 
1673
- #: includes/module-settings.php:93
1674
- msgctxt "Animation style."
1675
- msgid "Slide Up"
1676
- msgstr "Deslizar desde Arriba"
1677
-
1678
- #: includes/module-settings.php:94
1679
- msgctxt "Animation style."
1680
- msgid "Slide Down"
1681
- msgstr "Deslizar desde Abajo"
1682
-
1683
- #: includes/module-settings.php:102
1684
- #: modules/content-slider/content-slider.php:229
1685
- #: modules/testimonials/testimonials.php:91
1686
- msgid "Delay"
1687
- msgstr "Retardo"
1688
-
1689
- #: includes/module-settings.php:106 includes/row-settings.php:266
1690
- #: includes/row-settings.php:297 modules/content-slider/content-slider.php:233
1691
- #: modules/content-slider/content-slider.php:250
1692
- #: modules/slideshow/slideshow.php:385 modules/slideshow/slideshow.php:410
1693
- #: modules/slideshow/slideshow.php:581
1694
- #: modules/testimonials/testimonials.php:95
1695
- #: modules/testimonials/testimonials.php:112
1696
- msgctxt "Value unit for form field of time in seconds. Such as: \"5 seconds\""
1697
- msgid "seconds"
1698
- msgstr "segundos"
1699
-
1700
- #: includes/module-settings.php:107
1701
- msgid "The amount of time in seconds before this animation starts."
1702
- msgstr ""
1703
- "Especifica el tiempo de espera en segundos antes de que empiece la animación."
1704
-
1705
- #: includes/module-settings.php:120
1706
- msgid ""
1707
- "A unique ID that will be applied to this module's HTML. Must start with a "
1708
- "letter and only contain dashes, underscores, letters or numbers. No spaces."
1709
- msgstr ""
1710
- "Un único ID que se aplicará al HTML de este módulo. Debe empezar con una "
1711
- "letra y sólo contener guiones, subrayados, letras o números. Sin espacios."
1712
-
1713
- #: includes/module-settings.php:127 includes/row-settings.php:615
1714
- msgid "Class"
1715
- msgstr "Clase"
1716
-
1717
- #: includes/module-settings.php:128
1718
- msgid ""
1719
- "A class that will be applied to this module's HTML. Must start with a letter "
1720
- "and only contain dashes, underscores, letters or numbers. Separate multiple "
1721
- "classes with spaces."
1722
- msgstr ""
1723
- "Una clase que se aplicará al HTML de este módulo. Debe empezar con una letra "
1724
- "y sólo contener guiones, subrayados, letras o números. Separa varias clases "
1725
- "con espacios."
1726
-
1727
- #: includes/row-settings.php:6
1728
- msgid "Row Settings"
1729
- msgstr "Configuración de Fila"
1730
-
1731
- #: includes/row-settings.php:16 modules/button/button.php:188
1732
- #: modules/content-slider/content-slider.php:483
1733
- msgid "Width"
1734
- msgstr "Anchura"
1735
-
1736
- #: includes/row-settings.php:27
1737
- msgid ""
1738
- "Full width rows span the width of the page from edge to edge. Fixed rows are "
1739
- "no wider than the Row Max Width set in the Global Settings."
1740
- msgstr ""
1741
- "Las filas de anchura completa abarcan todo el ancho de la página de lado a "
1742
- "lado. Las filas fijas no son mas anchas que la Anchura Máxima de la Fila "
1743
- "establecida en la Configuración Global."
1744
-
1745
- #: includes/row-settings.php:34
1746
- msgid "Content Width"
1747
- msgstr "Anchura del Contenido"
1748
-
1749
- #: includes/row-settings.php:40
1750
- msgid ""
1751
- "Full width content spans the width of the page from edge to edge. Fixed "
1752
- "content is no wider than the Row Max Width set in the Global Settings."
1753
- msgstr ""
1754
- "Los contenidos a anchura completa abarcan todo el ancho de la página de lado "
1755
- "a lado. El contenido fijo no es más ancho que la Anchura Máxima de la Fila "
1756
- "establecida en la Configuración Global."
1757
-
1758
- #: includes/row-settings.php:61
1759
- msgid "Background"
1760
- msgstr "Fondo"
1761
-
1762
- #: includes/row-settings.php:68 modules/content-slider/content-slider.php:338
1763
- msgctxt "Background type."
1764
- msgid "None"
1765
- msgstr "Ninguno"
1766
-
1767
- #: includes/row-settings.php:69
1768
- msgctxt "Background type."
1769
- msgid "Color"
1770
- msgstr "Color"
1771
-
1772
- #: includes/row-settings.php:70
1773
- msgctxt "Background type."
1774
- msgid "Photo"
1775
- msgstr "Imagen"
1776
-
1777
- #: includes/row-settings.php:71
1778
- msgctxt "Background type."
1779
- msgid "Video"
1780
- msgstr "Vídeo"
1781
-
1782
- #: includes/row-settings.php:73
1783
- msgctxt "Background type."
1784
- msgid "Slideshow"
1785
- msgstr "Carrusel"
1786
-
1787
- #: includes/row-settings.php:77
1788
- msgctxt "Background type."
1789
- msgid "Parallax"
1790
- msgstr "Parallax"
1791
-
1792
- #: includes/row-settings.php:129 modules/content-slider/content-slider.php:359
1793
- msgid "Background Photo"
1794
- msgstr "Imagen de fondo"
1795
-
1796
- #: includes/row-settings.php:133 includes/row-settings.php:321
1797
- #: modules/callout/callout.php:316 modules/callout/callout.php:332
1798
- #: modules/callout/callout.php:336
1799
- #: modules/content-slider/content-slider.php:335
1800
- #: modules/content-slider/content-slider.php:404
1801
- #: modules/content-slider/content-slider.php:745 modules/photo/photo.php:25
1802
- #: modules/photo/photo.php:392
1803
- msgid "Photo"
1804
- msgstr "Imagen"
1805
-
1806
- #: includes/row-settings.php:140
1807
- msgid "Repeat"
1808
- msgstr "Repetir"
1809
-
1810
- #: includes/row-settings.php:143
1811
- msgctxt "Background repeat."
1812
- msgid "None"
1813
- msgstr "Ninguno"
1814
-
1815
- #: includes/row-settings.php:144
1816
- msgctxt "Background repeat."
1817
- msgid "Tile"
1818
- msgstr "Mosaico"
1819
-
1820
- #: includes/row-settings.php:145
1821
- msgctxt "Background repeat."
1822
- msgid "Horizontal"
1823
- msgstr "Horizontal"
1824
-
1825
- #: includes/row-settings.php:146
1826
- msgctxt "Background repeat."
1827
- msgid "Vertical"
1828
- msgstr "Vertical"
1829
-
1830
- #: includes/row-settings.php:148
1831
- msgid ""
1832
- "Repeat applies to how the image should display in the row background. "
1833
- "Choosing none will display the image as uploaded. Tile will repeat the image "
1834
- "as many times as needed to fill the row horizontally and vertically. You can "
1835
- "also specify the image to only repeat horizontally or vertically."
1836
- msgstr ""
1837
- "Repetir se aplica a cómo se debería mostrar la imagen en el fondo de la "
1838
- "fila. Elegir ninguno mostrará la imagen tal y como se ha subido. Mosaico "
1839
- "repetirá la imagen tantas veces como sea necesario para completar la fila "
1840
- "horizontal y verticalmente. También puedes especificar que la imagen sólo se "
1841
- "repita horizontalmente o verticalmente."
1842
-
1843
- #: includes/row-settings.php:158
1844
- msgid "Left Top"
1845
- msgstr "Superior Izquierda"
1846
-
1847
- #: includes/row-settings.php:159
1848
- msgid "Left Center"
1849
- msgstr "Centro Izquierda"
1850
-
1851
- #: includes/row-settings.php:160
1852
- msgid "Left Bottom"
1853
- msgstr "Inferior Izquierda"
1854
-
1855
- #: includes/row-settings.php:161
1856
- msgid "Right Top"
1857
- msgstr "Superior Derecha"
1858
-
1859
- #: includes/row-settings.php:162
1860
- msgid "Right Center"
1861
- msgstr "Centro Derecha"
1862
-
1863
- #: includes/row-settings.php:163
1864
- msgid "Right Bottom"
1865
- msgstr "Inferior Derecha"
1866
 
1867
- #: includes/row-settings.php:164
1868
- msgid "Center Top"
1869
- msgstr "Centro Superior"
 
1870
 
1871
- #: includes/row-settings.php:165 modules/button/button.php:218
1872
- #: modules/callout/callout.php:251
1873
- #: modules/content-slider/content-slider.php:477 modules/cta/cta.php:126
1874
- #: modules/heading/heading.php:90 modules/heading/heading.php:162
1875
- #: modules/icon-group/icon-group.php:110 modules/icon/icon.php:133
1876
- #: modules/photo/photo.php:418 modules/social-buttons/social-buttons.php:100
1877
- msgid "Center"
1878
- msgstr "Centro"
1879
 
1880
- #: includes/row-settings.php:166
1881
- msgid "Center Bottom"
1882
- msgstr "Centro Inferior"
 
 
 
 
 
 
 
1883
 
1884
- #: includes/row-settings.php:168
1885
- msgid "Position will tell the image where it should sit in the row background."
1886
  msgstr ""
1887
- "Posición marca el lugar donde la imagen aparecerá en el fondo de la fila."
1888
 
1889
- #: includes/row-settings.php:175
1890
- msgid "Attachment"
1891
- msgstr "Adjunto"
 
 
 
 
1892
 
1893
- #: includes/row-settings.php:178 modules/post-grid/post-grid.php:75
1894
- msgid "Scroll"
1895
- msgstr "Scroll"
1896
 
1897
- #: includes/row-settings.php:181
1898
  msgid ""
1899
- "Attachment will specify how the image reacts when scrolling a page. When "
1900
- "scrolling is selected, the image will scroll with page scrolling. This is "
1901
- "the default setting. Fixed will allow the image to scroll within the row "
1902
- "background if fill is selected in the scale setting."
1903
  msgstr ""
1904
- "Adjunto especifica como se comporta la imagen cuando se hace scroll en la "
1905
- "página. Cuando se selecciona scroll, la imagen se desplazará con al "
1906
- "desplazarse en la página. Esta es la opción por defecto. Fijo permitirá que "
1907
- "la imagen se mueva con el fondo de la fila, si se ha seleccionado relleno en "
1908
- "el ajuste de escala."
1909
-
1910
- #: includes/row-settings.php:188
1911
- msgid "Scale"
1912
- msgstr "Escalar"
1913
 
1914
- #: includes/row-settings.php:191
1915
- msgctxt "Background scale."
1916
- msgid "None"
1917
- msgstr "Nada"
1918
 
1919
- #: includes/row-settings.php:192
1920
- msgid "Fit"
1921
- msgstr "Ajustado"
 
 
 
 
 
1922
 
1923
- #: includes/row-settings.php:193
1924
- msgid "Fill"
1925
- msgstr "Relleno"
1926
 
1927
- #: includes/row-settings.php:195
1928
  msgid ""
1929
- "Scale applies to how the image should display in the row background. You can "
1930
- "select either fill or fit to the row background."
1931
  msgstr ""
1932
- "La escala se aplica a cómo debería mostrar la imagen de fondo en la fila. "
1933
- "Puedes seleccionar cualquier relleno o ajuste para fondo."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1934
 
1935
  #: includes/row-settings.php:203
1936
  msgid "Background Video"
@@ -1962,18 +2643,18 @@ msgid "Background Slideshow"
1962
  msgstr "Fondo Slideshow"
1963
 
1964
  #: includes/row-settings.php:228 modules/gallery/gallery.php:234
1965
- #: modules/slideshow/slideshow.php:263
1966
  msgid "Source"
1967
  msgstr "Fuente"
1968
 
1969
  #: includes/row-settings.php:231 modules/gallery/gallery.php:237
1970
- #: modules/photo/photo.php:378 modules/slideshow/slideshow.php:266
1971
  #: modules/video/video.php:86
1972
  msgid "Media Library"
1973
  msgstr "Librería Multimedia"
1974
 
1975
  #: includes/row-settings.php:234 modules/gallery/gallery.php:240
1976
- #: modules/slideshow/slideshow.php:269
1977
  msgid ""
1978
  "Pull images from the WordPress media library or a gallery on your SmugMug "
1979
  "site by inserting the RSS feed URL from SmugMug. The RSS feed URL can be "
@@ -1984,22 +2665,22 @@ msgstr ""
1984
  "acceder desde la función obtener enlace en tu galería SmugMug."
1985
 
1986
  #: includes/row-settings.php:249 modules/gallery/gallery.php:252
1987
- #: modules/slideshow/slideshow.php:281
1988
  msgid "Photos"
1989
  msgstr "Fotos"
1990
 
1991
  #: includes/row-settings.php:256 modules/gallery/gallery.php:256
1992
- #: modules/slideshow/slideshow.php:285
1993
  msgid "Feed URL"
1994
  msgstr "Feed URL"
1995
 
1996
  #: includes/row-settings.php:263 includes/row-settings.php:328
1997
- #: modules/slideshow/slideshow.php:382
1998
  msgid "Speed"
1999
  msgstr "Velocidad"
2000
 
2001
  #: includes/row-settings.php:273 modules/content-slider/content-slider.php:237
2002
- #: modules/slideshow/slideshow.php:389
2003
  #: modules/testimonials/testimonials.php:99
2004
  msgid "Transition"
2005
  msgstr "Transición"
@@ -2010,54 +2691,54 @@ msgid "None"
2010
  msgstr "Ninguna"
2011
 
2012
  #: includes/row-settings.php:277 modules/content-slider/content-slider.php:241
2013
- #: modules/slideshow/slideshow.php:393
2014
  #: modules/testimonials/testimonials.php:103
2015
  msgid "Fade"
2016
  msgstr "Fundido"
2017
 
2018
- #: includes/row-settings.php:278 modules/slideshow/slideshow.php:394
2019
  msgid "Ken Burns"
2020
  msgstr "Ken Burns"
2021
 
2022
- #: includes/row-settings.php:279 modules/slideshow/slideshow.php:395
2023
  msgid "Slide Horizontal"
2024
  msgstr "Deslizar Horizontalmente"
2025
 
2026
- #: includes/row-settings.php:280 modules/slideshow/slideshow.php:396
2027
  msgid "Slide Vertical"
2028
  msgstr "Deslizar Verticalmente"
2029
 
2030
- #: includes/row-settings.php:281 modules/slideshow/slideshow.php:397
2031
  msgid "Blinds"
2032
  msgstr "Persianas"
2033
 
2034
- #: includes/row-settings.php:282 modules/slideshow/slideshow.php:398
2035
  msgid "Bars"
2036
  msgstr "Barras"
2037
 
2038
- #: includes/row-settings.php:283 modules/slideshow/slideshow.php:399
2039
  msgid "Random Bars"
2040
  msgstr "Barras al azar"
2041
 
2042
- #: includes/row-settings.php:284 modules/slideshow/slideshow.php:400
2043
  msgid "Boxes"
2044
  msgstr "Cajas"
2045
 
2046
- #: includes/row-settings.php:285 modules/slideshow/slideshow.php:401
2047
  msgid "Random Boxes"
2048
  msgstr "Cajas al azar"
2049
 
2050
- #: includes/row-settings.php:286 modules/slideshow/slideshow.php:402
2051
  msgid "Boxes Grow"
2052
  msgstr "Cajas Expandiéndose"
2053
 
2054
  #: includes/row-settings.php:294 modules/content-slider/content-slider.php:246
2055
- #: modules/slideshow/slideshow.php:407
2056
  #: modules/testimonials/testimonials.php:108
2057
  msgid "Transition Speed"
2058
  msgstr "Velocidad de Transición"
2059
 
2060
- #: includes/row-settings.php:304 modules/slideshow/slideshow.php:414
2061
  msgid "Randomize Photos"
2062
  msgstr "Fotos Aleatorias"
2063
 
@@ -2122,28 +2803,15 @@ msgstr "Servicio"
2122
  msgid "Save"
2123
  msgstr "Guardar"
2124
 
2125
- #: includes/template-selector.php:3
2126
  msgid "Layout Templates"
2127
  msgstr "Plantillas de Diseño"
2128
 
2129
- #: includes/template-selector.php:8
2130
- msgid "Home Pages"
2131
- msgstr "Páginas de Inicio"
2132
-
2133
- #: includes/template-selector.php:9
2134
- msgid "Content Pages"
2135
- msgstr "Páginas de Contenido"
2136
-
2137
- #: includes/template-selector.php:13
2138
  msgid "Your Templates"
2139
  msgstr "Tus Plantillas"
2140
 
2141
- #: includes/template-selector.php:47 includes/template-selector.php:77
2142
- msgctxt "Template name."
2143
- msgid "Blank"
2144
- msgstr "En Blanco"
2145
-
2146
- #: includes/template-selector.php:72
2147
  msgid ""
2148
  "You haven't saved any templates yet! To do so, create a layout and save it "
2149
  "as a template under <strong>Tools &rarr; Save Template</strong>."
@@ -2151,6 +2819,11 @@ msgstr ""
2151
  "¡No has guardado ninguna plantilla todavía! Crea un diseño y guárdalo como "
2152
  "plantilla desde <strong>Herramientas &rarr; Guardar Plantilla</strong>."
2153
 
 
 
 
 
 
2154
  #: includes/template-settings.php:14 includes/user-template-settings.php:15
2155
  msgctxt "Template name."
2156
  msgid "Name"
@@ -2168,89 +2841,77 @@ msgstr ""
2168
  "El nombre del archivo de imagen \"thumb.jpg\" se encuentra en el directorio "
2169
  "\"img/templates/\"."
2170
 
2171
- #: includes/ui.php:7
2172
  #, php-format
2173
  msgid "Template: %s"
2174
  msgstr "Plantilla: %s"
2175
 
2176
- #: includes/ui.php:10 includes/user-template-settings.php:4
2177
- msgid "Save Template"
2178
- msgstr "Guardar Plantilla"
2179
 
2180
- #: includes/ui.php:23
2181
  msgid "Page Builder Demo"
2182
  msgstr "Page Builder Demo"
2183
 
2184
- #: includes/ui.php:40
2185
  msgid "Buy Now!"
2186
  msgstr "Comprar Ahora!"
2187
 
2188
- #: includes/ui.php:42
2189
  msgid "Upgrade!"
2190
  msgstr "Actualizar!"
2191
 
2192
- #: includes/ui.php:44
2193
- msgid "Done"
2194
- msgstr "Hecho"
2195
-
2196
- #: includes/ui.php:45
2197
- msgid "Tools"
2198
- msgstr "Herramientas"
2199
-
2200
- #: includes/ui.php:49
2201
- msgid "Add Content"
2202
- msgstr "Añadir Contenido"
2203
-
2204
- #: includes/ui.php:67
2205
  msgid "Row Layouts"
2206
  msgstr "Distribución de la Fila"
2207
 
2208
- #: includes/ui.php:71
2209
  msgid "1 Column"
2210
  msgstr "1 Columna"
2211
 
2212
- #: includes/ui.php:72
2213
  msgid "2 Columns"
2214
  msgstr "2 Columnas"
2215
 
2216
- #: includes/ui.php:73
2217
  msgid "3 Columns"
2218
  msgstr "3 Columnas"
2219
 
2220
- #: includes/ui.php:74
2221
  msgid "4 Columns"
2222
  msgstr "4 Columnas"
2223
 
2224
- #: includes/ui.php:75
2225
  msgid "5 Columns"
2226
  msgstr "5 Columnas"
2227
 
2228
- #: includes/ui.php:76
2229
  msgid "6 Columns"
2230
  msgstr "6 Columnas"
2231
 
2232
- #: includes/ui.php:77
2233
  msgid "Left Sidebar"
2234
  msgstr "Barra Lateral Izquierda"
2235
 
2236
- #: includes/ui.php:78
2237
  msgid "Right Sidebar"
2238
  msgstr "Barra Lateral Derecha"
2239
 
2240
- #: includes/ui.php:79
2241
  msgid "Left &amp; Right Sidebar"
2242
  msgstr "Izquierda & Barra Lateral Derecha"
2243
 
2244
- #: includes/updater/classes/class-fl-updater.php:107
2245
  msgid "<strong>UPDATE UNAVAILABLE!</strong>"
2246
  msgstr "<strong>¡ACTUALIZACIÓN NO DISPONIBLE!</strong>"
2247
 
2248
- #: includes/updater/classes/class-fl-updater.php:109
2249
  msgid "Please subscribe to enable automatic updates for this plugin."
2250
  msgstr ""
2251
  "Suscríbete para habilitar las actualizaciones automáticas de este plugin."
2252
 
2253
- #: includes/updater/classes/class-fl-updater.php:111
2254
  #: includes/updater/includes/form.php:6
2255
  msgid "Subscribe Now"
2256
  msgstr "Suscribirse ahora"
@@ -2286,6 +2947,10 @@ msgstr ""
2286
  "Introduce tu <a%s>clave de licencia</a> para activar actualizaciones remotas "
2287
  "y soporte."
2288
 
 
 
 
 
2289
  #: includes/user-template-settings.php:8
2290
  msgid ""
2291
  "Save the current layout as a template that can be reused under "
@@ -2393,7 +3058,7 @@ msgstr "Icono"
2393
  #: modules/content-slider/content-slider.php:600 modules/cta/cta.php:240
2394
  #: modules/heading/heading.php:43 modules/heading/heading.php:47
2395
  #: modules/icon-group/icon-group.php:139 modules/icon/icon.php:43
2396
- #: modules/slideshow/slideshow.php:343
2397
  msgid "Link"
2398
  msgstr "Enlace"
2399
 
@@ -2577,7 +3242,7 @@ msgid "None"
2577
  msgstr "Ninguna"
2578
 
2579
  #: modules/callout/callout.php:340 modules/photo/photo.php:401
2580
- #: modules/slideshow/slideshow.php:312
2581
  msgid "Crop"
2582
  msgstr "Recortar / Crop"
2583
 
@@ -2740,6 +3405,7 @@ msgstr "Nombre de Campo"
2740
  #: modules/post-grid/post-grid.php:116 modules/post-grid/post-grid.php:149
2741
  #: modules/post-grid/post-grid.php:158 modules/post-grid/post-grid.php:188
2742
  #: modules/post-grid/post-grid.php:202 modules/post-grid/post-grid.php:220
 
2743
  msgid "Show"
2744
  msgstr "Mostrar"
2745
 
@@ -2750,6 +3416,7 @@ msgstr "Mostrar"
2750
  #: modules/post-grid/post-grid.php:117 modules/post-grid/post-grid.php:150
2751
  #: modules/post-grid/post-grid.php:159 modules/post-grid/post-grid.php:189
2752
  #: modules/post-grid/post-grid.php:203 modules/post-grid/post-grid.php:221
 
2753
  msgid "Hide"
2754
  msgstr "Ocultar"
2755
 
@@ -2775,7 +3442,12 @@ msgstr "Nombre"
2775
  msgid "Please enter your name."
2776
  msgstr "Por favor introduzca su nombre."
2777
 
 
 
 
 
2778
  #: modules/contact-form/includes/frontend.php:13
 
2779
  msgid "Subject"
2780
  msgstr "Asunto"
2781
 
@@ -2791,14 +3463,22 @@ msgstr "Email"
2791
  msgid "Please enter a valid email."
2792
  msgstr "Introduzca un correo electrónico válido."
2793
 
 
 
 
 
2794
  #: modules/contact-form/includes/frontend.php:29
2795
  msgid "Phone"
2796
- msgstr "Teléfone"
2797
 
2798
  #: modules/contact-form/includes/frontend.php:30
2799
  msgid "Please enter a valid phone number."
2800
  msgstr "Por favor, introduce un teléfono válido."
2801
 
 
 
 
 
2802
  #: modules/contact-form/includes/frontend.php:36
2803
  msgid "Your Message"
2804
  msgstr "Mensaje"
@@ -2807,6 +3487,14 @@ msgstr "Mensaje"
2807
  msgid "Please enter a message."
2808
  msgstr "Por favor escriba su mensaje."
2809
 
 
 
 
 
 
 
 
 
2810
  #: modules/contact-form/includes/frontend.php:44
2811
  msgid "Message Sent!"
2812
  msgstr "Mensaje Enviado!"
@@ -2826,7 +3514,7 @@ msgstr ""
2826
  "acción."
2827
 
2828
  #: modules/content-slider/content-slider.php:197 modules/map/map.php:41
2829
- #: modules/separator/separator.php:58 modules/slideshow/slideshow.php:294
2830
  msgid "Height"
2831
  msgstr "Altura"
2832
 
@@ -2839,7 +3527,7 @@ msgstr ""
2839
  "expandirá a esta altura de forma automática."
2840
 
2841
  #: modules/content-slider/content-slider.php:206
2842
- #: modules/slideshow/slideshow.php:373
2843
  #: modules/testimonials/testimonials.php:82 modules/video/video.php:108
2844
  msgid "Auto Play"
2845
  msgstr "Reproducción Automática"
@@ -3074,11 +3762,11 @@ msgstr "¡Lo haré con este Call to Action!"
3074
  msgid "Layout"
3075
  msgstr "Diseño"
3076
 
3077
- #: modules/cta/cta.php:111
3078
  msgid "Inline"
3079
  msgstr "En línea"
3080
 
3081
- #: modules/cta/cta.php:112
3082
  msgid "Stacked"
3083
  msgstr "Apilado"
3084
 
@@ -3156,7 +3844,7 @@ msgstr ""
3156
  "biblioteca de medios para cada imagen. El titulo también se toma "
3157
  "directamente de SmugMug si tienes títulos en tu galería."
3158
 
3159
- #: modules/gallery/gallery.php:289 modules/slideshow/slideshow.php:335
3160
  msgid "Click Action"
3161
  msgstr "Acción del Clic"
3162
 
@@ -3279,10 +3967,6 @@ msgstr "Ninguno"
3279
  msgid "Photo File"
3280
  msgstr "Foto Archivo"
3281
 
3282
- #: modules/photo/photo.php:454
3283
- msgid "Photo Page"
3284
- msgstr "Página de Foto"
3285
-
3286
  #: modules/photo/photo.php:464
3287
  msgid ""
3288
  "Link type applies to how the image should be linked on click. You can choose "
@@ -3292,7 +3976,7 @@ msgstr ""
3292
  "clic. Puede elegir una dirección URL específica, la foto individual o una "
3293
  "página separada con la foto."
3294
 
3295
- #: modules/photo/photo.php:471 modules/slideshow/slideshow.php:356
3296
  msgid "Link URL"
3297
  msgstr "Enlace URL"
3298
 
@@ -3558,21 +4242,21 @@ msgstr "Slideshow"
3558
  msgid "Display multiple photos in a slideshow view."
3559
  msgstr "Mostrar varias fotos en una vista de presentación ."
3560
 
3561
- #: modules/slideshow/slideshow.php:302
3562
  msgid "Skin Color"
3563
  msgstr "Color del Diseño"
3564
 
3565
- #: modules/slideshow/slideshow.php:305
3566
  msgctxt "Color."
3567
  msgid "Light"
3568
  msgstr "Claro"
3569
 
3570
- #: modules/slideshow/slideshow.php:306
3571
  msgctxt "Color."
3572
  msgid "Dark"
3573
  msgstr "Oscuro"
3574
 
3575
- #: modules/slideshow/slideshow.php:308
3576
  msgid ""
3577
  "If your overall theme/images are lighter in color, light will display "
3578
  "buttons in a darker color scheme and vice versa for dark."
@@ -3580,7 +4264,7 @@ msgstr ""
3580
  "Si tu tema o imágenes tienen un color claro, la opción claro mostrará los "
3581
  "botones en un esquema de color oscuro y lo contrario con la opción oscuro."
3582
 
3583
- #: modules/slideshow/slideshow.php:318
3584
  msgid ""
3585
  "Crop set to no will fit the slideshow images to the height you specify and "
3586
  "keep the width proportional, whereas crop set to yes will fit the slideshow "
@@ -3592,33 +4276,33 @@ msgstr ""
3592
  "ajustará las imágenes a todos los lados del área de contenido, cortando a "
3593
  "izquierda y derecha para adecuarlas a la altura que has especificado."
3594
 
3595
- #: modules/slideshow/slideshow.php:322
3596
  msgid "Disable Right-Click"
3597
  msgstr "Desactivar Clic Derecho"
3598
 
3599
- #: modules/slideshow/slideshow.php:342
3600
  msgctxt "Click action type."
3601
  msgid "None"
3602
  msgstr "Ninguno"
3603
 
3604
- #: modules/slideshow/slideshow.php:366
3605
  msgid "Playback"
3606
  msgstr "Reproducción"
3607
 
3608
- #: modules/slideshow/slideshow.php:392
3609
  msgctxt "Slideshow transition."
3610
  msgid "None"
3611
  msgstr "Ninguno"
3612
 
3613
- #: modules/slideshow/slideshow.php:429
3614
  msgid "Controls"
3615
  msgstr "Controles"
3616
 
3617
- #: modules/slideshow/slideshow.php:436 modules/slideshow/slideshow.php:485
3618
  msgid "Navigation Arrows"
3619
  msgstr "Flechas de Navegación"
3620
 
3621
- #: modules/slideshow/slideshow.php:442
3622
  msgid ""
3623
  "Navigational arrows allow the visitor to freely move through the images in "
3624
  "your slideshow. These are larger arrows that overlay your slideshow images "
@@ -3629,68 +4313,68 @@ msgstr ""
3629
  "superpuestas a las imágenes y están separados de las flechas de control de "
3630
  "navegación."
3631
 
3632
- #: modules/slideshow/slideshow.php:447
3633
  msgid "Control Bar"
3634
  msgstr "Barra de Control"
3635
 
3636
- #: modules/slideshow/slideshow.php:451
3637
  msgid "Nav Type"
3638
  msgstr "Tipo de Navegación"
3639
 
3640
- #: modules/slideshow/slideshow.php:454
3641
  msgctxt "Nav type."
3642
  msgid "None"
3643
  msgstr "Ninguno"
3644
 
3645
- #: modules/slideshow/slideshow.php:455
3646
  msgid "Buttons"
3647
  msgstr "Botones"
3648
 
3649
- #: modules/slideshow/slideshow.php:456 modules/slideshow/slideshow.php:586
3650
  msgid "Thumbs"
3651
  msgstr "Miniaturas"
3652
 
3653
- #: modules/slideshow/slideshow.php:471
3654
  msgid "Nav Position"
3655
  msgstr "Posición Navegación"
3656
 
3657
- #: modules/slideshow/slideshow.php:481
3658
  msgid "Control Bar Buttons"
3659
  msgstr "Botones Barra de Control"
3660
 
3661
- #: modules/slideshow/slideshow.php:494
3662
  msgid "Play Button"
3663
  msgstr "Botón Play"
3664
 
3665
- #: modules/slideshow/slideshow.php:503
3666
  msgid "Fullscreen Button"
3667
  msgstr "Botón Pantalla Completa"
3668
 
3669
- #: modules/slideshow/slideshow.php:512
3670
  msgid "Photo Count"
3671
  msgstr "Contador de Fotos"
3672
 
3673
- #: modules/slideshow/slideshow.php:521
3674
  msgid "Thumbs Button"
3675
  msgstr "Botón Miniaturas"
3676
 
3677
- #: modules/slideshow/slideshow.php:530
3678
  msgid "Caption Button"
3679
  msgstr "Botón Caption"
3680
 
3681
- #: modules/slideshow/slideshow.php:539
3682
  msgid "Social Button"
3683
  msgstr "Botón Social"
3684
 
3685
- #: modules/slideshow/slideshow.php:549
3686
  msgid "Control Bar Overlay"
3687
  msgstr "Barra de Control de Superposición"
3688
 
3689
- #: modules/slideshow/slideshow.php:553
3690
  msgid "Overlay Enabled"
3691
  msgstr "Superposición Habilitada"
3692
 
3693
- #: modules/slideshow/slideshow.php:564
3694
  msgid ""
3695
  "Control bar overlay specifies if the control bar buttons you choose overlay "
3696
  "your slideshow images or site below the slideshow completely."
@@ -3699,11 +4383,11 @@ msgstr ""
3699
  "de control han de estar superpuestos a la imagen o si han de aparecer por "
3700
  "debajo de la presentación de las imágenes."
3701
 
3702
- #: modules/slideshow/slideshow.php:568
3703
  msgid "Overlay Hide"
3704
  msgstr "Ocultar Superposición"
3705
 
3706
- #: modules/slideshow/slideshow.php:574
3707
  msgid ""
3708
  "Overlay hide will hide the control bar after however many seconds you "
3709
  "specify below. They will reappear upon mouse over."
@@ -3711,31 +4395,31 @@ msgstr ""
3711
  "Superponer ocultará la barra de control tras los segundos que hayas "
3712
  "especificado aquí abajo. Volverá a aparecer el pasar el ratón por encima."
3713
 
3714
- #: modules/slideshow/slideshow.php:578
3715
  msgid "Overlay Hide Delay"
3716
  msgstr "Retardo Ocultar Superposición"
3717
 
3718
- #: modules/slideshow/slideshow.php:590
3719
  msgid "Thumbs Size"
3720
  msgstr "Tamaño de las Miniaturas"
3721
 
3722
- #: modules/slideshow/slideshow.php:599
3723
  msgid "Social"
3724
  msgstr "Social"
3725
 
3726
- #: modules/slideshow/slideshow.php:603
3727
  msgid "Facebook Button"
3728
  msgstr "Botón de Facebook"
3729
 
3730
- #: modules/slideshow/slideshow.php:615
3731
  msgid "Twitter Button"
3732
  msgstr "Botón de Twitter"
3733
 
3734
- #: modules/slideshow/slideshow.php:627
3735
  msgid "Google Plus Button"
3736
  msgstr "Botón de Google Plus"
3737
 
3738
- #: modules/slideshow/slideshow.php:639
3739
  msgid "Pinterest Button"
3740
  msgstr "Botón Pinterest"
3741
 
@@ -4096,92 +4780,68 @@ msgstr "Puntuación"
4096
  msgid "Sort Direction"
4097
  msgstr "Dirección para ordenar"
4098
 
4099
- #~ msgctxt "%s stands for custom branded \"Page Builder\" name."
4100
- #~ msgid ""
4101
- #~ "Switching to Text Editor mode will disable your %s layout until it is "
4102
- #~ "enabled again. Any edits made while in Text Editor mode will not be made "
4103
- #~ "on your %s layout. Do you want to continue?"
4104
- #~ msgstr ""
4105
- #~ "Cambiar al modo de Editor de texto desactivará tú diseño de %s hasta que "
4106
- #~ "se haya habilitado nuevamente. Cualquier modificación realizada en el "
4107
- #~ "Editor de texto no aparecerá en el diseño de %s. ¿Quieres continuar?"
4108
-
4109
- #~ msgid "Save Branding"
4110
- #~ msgstr "Guardar personalización de Marca"
4111
 
4112
- #~ msgid "Save Editing Settings"
4113
- #~ msgstr "Guardar Ajustes de Edición"
 
4114
 
4115
- #~ msgid "Save Help Button Settings"
4116
- #~ msgstr "Guardar Ajustes del Botón de Ayuda"
 
4117
 
4118
- #~ msgid "Upload Icon Set"
4119
- #~ msgstr "Subir Colección de Iconos"
 
4120
 
4121
- #~ msgid "Save Icon Settings"
4122
- #~ msgstr "Guardar Ajustes de Iconos"
 
4123
 
4124
- #~ msgid "Select File"
4125
- #~ msgstr "Seleccionar Archivo"
 
4126
 
4127
- #~ msgid ""
4128
- #~ "Please type \"uninstall\" in the box below to confirm that you really "
4129
- #~ "want to uninstall the page builder and all of its data."
4130
- #~ msgstr ""
4131
- #~ "Por favor, escribe \"uninstall\" en el cuadro siguiente para confirmar "
4132
- #~ "que realmente deseas desinstalar el page builder y todos sus datos."
4133
-
4134
- #~ msgid "Save Module Settings"
4135
- #~ msgstr "Guardar Ajustes"
4136
-
4137
- #~ msgid "Save Post Types"
4138
- #~ msgstr "Guardar Tipos de Entrada"
4139
 
4140
- #~ msgid "Save Template Settings"
4141
- #~ msgstr "Guardar Ajustes de Plantilla"
 
4142
 
4143
- #~ msgid "Start typing..."
4144
- #~ msgstr "Empieza a escribir..."
4145
-
4146
- #~ msgid "What would you like to do?"
4147
- #~ msgstr "¿Qué te gustaría hacer?"
4148
-
4149
- #~ msgid "Change Template"
4150
- #~ msgstr "Cambiar Plantilla"
4151
-
4152
- #~ msgid ""
4153
- #~ "Warning! Changing the template will replace your existing layout. Do you "
4154
- #~ "really want to do this?"
4155
- #~ msgstr ""
4156
- #~ "¡Advertencia! Cambiando la plantilla reemplazaras tu diseño actual. "
4157
- #~ "¿Quieres hacer esto?"
4158
 
4159
- #~ msgid "Column"
4160
- #~ msgstr "Columna"
 
4161
 
4162
- #~ msgid ""
4163
- #~ "Please select either a background layout or content layout before "
4164
- #~ "submitting."
4165
- #~ msgstr ""
4166
- #~ "Por favor, selecciona un diseño de fondo o diseño de contenido antes de "
4167
- #~ "guardar."
4168
 
4169
- #~ msgid "Do you really want to delete this item?"
4170
- #~ msgstr "¿Quieres eliminar este elemento?"
 
4171
 
 
4172
  #~ msgid ""
4173
- #~ "Do you really want to delete this module? All content data will be "
4174
- #~ "permanently deleted."
 
4175
  #~ msgstr ""
4176
- #~ "¿Quieres eliminar este módulo? Se eliminarán definitivamente todos los "
4177
- #~ "datos de contenido."
 
4178
 
4179
- #~ msgid ""
4180
- #~ "Do you really want to delete this row? All content data will be "
4181
- #~ "permanently deleted."
4182
  #~ msgstr ""
4183
- #~ "¿Quieres eliminar esta fila? Se eliminarán definitivamente todos los "
4184
- #~ "datos de contenido."
4185
 
4186
  #~ msgid "Discard Draft"
4187
  #~ msgstr "Descartar Borrador"
@@ -4193,127 +4853,51 @@ msgstr "Dirección para ordenar"
4193
  #~ "¿Quieres descartar este boceto? Todos los cambios que se no se publiquen "
4194
  #~ "se perderán."
4195
 
4196
- #~ msgid "Save Draft"
4197
- #~ msgstr "Guardar Borrador"
4198
-
4199
- #~ msgid "Duplicate This Page"
4200
- #~ msgstr "Duplicar Esta Página"
4201
-
4202
- #~ msgid "Duplicate This Template"
4203
- #~ msgstr "Duplicar Esta Plantilla"
4204
-
4205
- #~ msgid "Edit Global Settings"
4206
- #~ msgstr "Editar Configuración Global"
4207
-
4208
- #~ msgid "Drop a row layout or module to get started!"
4209
- #~ msgstr "¡Arrastra aquí un diseño de fila o un módulo para empezar!"
4210
-
4211
  #~ msgid ""
4212
- #~ "Beaver Builder caught the following JavaScript error. If Beaver Builder "
4213
- #~ "is not functioning as expected the cause is most likely this error. "
4214
- #~ "Please help us by disabling all plugins and testing Beaver Builder while "
4215
- #~ "reactivating each to determine if the issue is related to a third party "
4216
- #~ "plugin."
4217
  #~ msgstr ""
4218
- #~ "Beaver Builder ha encontrado el siguiente error JavaScript. Si Beaver "
4219
- #~ "Builder no está funcionando como es debido probablemente es a causa de "
4220
- #~ "este error. Por favor, ayúdanos desactivando todos los plugins y probando "
4221
- #~ "Beaver Builder mientras vas activándolos de nuevo para saber si el "
4222
- #~ "problema está relacionado con un plugin de terceros."
4223
-
4224
- #~ msgid "Full Size"
4225
- #~ msgstr "Tamaño Completo"
4226
-
4227
- #~ msgid "Get Help"
4228
- #~ msgstr "Obtener Ayuda"
4229
-
4230
- #~ msgid "Getting Started Video"
4231
- #~ msgstr "Video Primeros Pasos"
4232
-
4233
- #~ msgid "Insert"
4234
- #~ msgstr "Insertar"
4235
-
4236
- #~ msgid "Large"
4237
- #~ msgstr "Grande"
4238
-
4239
- #~ msgid "Manage Templates"
4240
- #~ msgstr "Gestionar Plantillas"
4241
-
4242
- #~ msgid "Medium"
4243
- #~ msgstr "Medio"
4244
 
4245
- #~ msgid "Module"
4246
- #~ msgstr "Módulo"
4247
-
4248
- #~ msgid "Move"
4249
- #~ msgstr "Mover"
4250
-
4251
- #~ msgid "New Column"
4252
- #~ msgstr "Nueva Columna"
4253
-
4254
- #~ msgid "New Row"
4255
- #~ msgstr "Nueva Fila"
4256
-
4257
- #~ msgid "No results found."
4258
- #~ msgstr "No hay resultados."
4259
-
4260
- #~ msgid "No Thanks"
4261
- #~ msgstr "No, Gracias"
4262
-
4263
- #~ msgid "OK"
4264
- #~ msgstr "OK"
4265
-
4266
- #~ msgid "Photo Selected"
4267
- #~ msgstr "Foto Seleccionada"
4268
-
4269
- #~ msgid "Photos Selected"
4270
- #~ msgstr "Fotos Seleccionadas"
4271
-
4272
- #~ msgid "Publish Changes"
4273
- #~ msgstr "Publicar Cambios"
4274
-
4275
- #~ msgid "Row"
4276
- #~ msgstr "Fila"
4277
-
4278
- #~ msgid "Save Core Template"
4279
- #~ msgstr "Guardar Plantilla Base"
4280
-
4281
- #~ msgid "Select Photos"
4282
- #~ msgstr "Seleccionar Fotos"
4283
-
4284
- #~ msgid "Take a Tour"
4285
- #~ msgstr "Empezar el Tour"
4286
-
4287
- #~ msgid "Append New Layout"
4288
- #~ msgstr "Adjuntar Diseño Nuevo"
4289
-
4290
- #~ msgid "Replace Existing Layout"
4291
- #~ msgstr "Reemplazar Diseño Existente"
4292
-
4293
- #~ msgid "Template Saved!"
4294
- #~ msgstr "¡Plantilla Guardada!"
4295
-
4296
- #~ msgid "Thumbnail"
4297
- #~ msgstr "Miniatura"
4298
-
4299
- #~ msgid "Next"
4300
- #~ msgstr "Siguiente"
4301
-
4302
- #~ msgid "Get Started"
4303
- #~ msgstr "Empezar"
4304
 
4305
- #~ msgid "Choose a Template"
4306
- #~ msgstr "Elegir una Plantilla"
 
 
 
 
 
 
 
 
 
4307
 
4308
  #~ msgid ""
4309
- #~ "Get started by choosing a layout template to customize, or build a page "
4310
- #~ "from scratch by selecting the blank layout template."
4311
  #~ msgstr ""
4312
- #~ "Empieza eligiendo una plantilla para personalizar, o crea desde de cero "
4313
- #~ "una página seleccionando la plantilla de diseño en blanco."
 
 
 
4314
 
4315
- #~ msgid "Add Rows"
4316
- #~ msgstr "Añadir filas"
 
 
 
4317
 
4318
  #~ msgid ""
4319
  #~ "Add mulit-column rows, adjust spacing, add backgrounds and more by "
@@ -4323,23 +4907,6 @@ msgstr "Dirección para ordenar"
4323
  #~ "arrastrando y soltando elementos desde las distribuciones de fila hasta "
4324
  #~ "tu página."
4325
 
4326
- #~ msgid ""
4327
- #~ "Add new content by dragging and dropping modules or widgets into your row "
4328
- #~ "layouts or to create a new row layout."
4329
- #~ msgstr ""
4330
- #~ "Añade contenido nuevo arrastrando y soltando módulos o widgets en tu fila "
4331
- #~ "o bien para crear una nueva distribución de fila."
4332
-
4333
- #~ msgid "Edit Content"
4334
- #~ msgstr "Editar Contenido"
4335
-
4336
- #~ msgid ""
4337
- #~ "Move your mouse over rows, columns or modules to edit and interact with "
4338
- #~ "them."
4339
- #~ msgstr ""
4340
- #~ "Mueve el ratón sobre las filas, columnas o módulos para editar e "
4341
- #~ "interactuar con cada elemento."
4342
-
4343
  #~ msgid ""
4344
  #~ "Use the action buttons to perform actions such as moving, editing, "
4345
  #~ "duplicating, accessing individual column settings or deleting rows, "
@@ -4349,9 +4916,6 @@ msgstr "Dirección para ordenar"
4349
  #~ "configuración de columnas de forma individual o eliminar filas, columnas "
4350
  #~ "o módulos."
4351
 
4352
- #~ msgid "Add More Content"
4353
- #~ msgstr "Añadir Más Contenido"
4354
-
4355
  #~ msgid ""
4356
  #~ "Use the Add Content button to open the content panel and add new row "
4357
  #~ "layouts or content."
@@ -4359,90 +4923,6 @@ msgstr "Dirección para ordenar"
4359
  #~ "Usa el botón Añadir Contenido para abrir el panel contenido y agregar "
4360
  #~ "nuevas distribuciones de fila o contenidos."
4361
 
4362
- #~ msgid "Change Templates"
4363
- #~ msgstr "Cambiar Plantillas"
4364
-
4365
- #~ msgid ""
4366
- #~ "Use the Templates button to pick a new template or append one to your "
4367
- #~ "layout. Appending will insert a new template at the end of your existing "
4368
- #~ "page content."
4369
- #~ msgstr ""
4370
- #~ "Usa el botón de Plantillas para escoger una nueva plantilla o adjuntar "
4371
- #~ "una plantilla a tú diseño ya existente. Adjuntar insertará una nueva "
4372
- #~ "plantilla al final de tu diseño."
4373
-
4374
- #~ msgid "Helpful Tools"
4375
- #~ msgstr "Herramientas Útiles"
4376
-
4377
- #~ msgid ""
4378
- #~ "The Tools button lets you duplicate a page, save a template or edit the "
4379
- #~ "global settings."
4380
- #~ msgstr ""
4381
- #~ "El botón de herramientas te permite duplicar una página, guardar una "
4382
- #~ "plantilla o editar la configuración global."
4383
-
4384
- #~ msgid "Publish Your Changes"
4385
- #~ msgstr "Publicar Tus Cambios"
4386
-
4387
- #~ msgid ""
4388
- #~ "Once you're finished, click the Done button to publish your changes, save "
4389
- #~ "a draft or revert back to the last published state."
4390
- #~ msgstr ""
4391
- #~ "Una vez que hayas terminado, haz clic en el botón de publicar los "
4392
- #~ "cambios, guardar un borrador o revertir al último estado publicado."
4393
-
4394
- #~ msgid "Let's Get Building!"
4395
- #~ msgstr "Empezar a Diseñar!"
4396
-
4397
- #~ msgid ""
4398
- #~ "Now that you know the basics, you're ready to start building! If at any "
4399
- #~ "time you need help, click the help icon in the upper right corner to "
4400
- #~ "access the help menu. Happy building!"
4401
- #~ msgstr ""
4402
- #~ "Ahora que ya sabes lo básico, estás listo para empezar a diseñar! Si "
4403
- #~ "necesitas ayuda en cualquier momento, haz clic en el icono de ayuda en la "
4404
- #~ "esquina superior derecha para acceder al menú de ayuda. ¡Happy building!"
4405
-
4406
- #~ msgid ""
4407
- #~ "The settings you are currently editing will not be saved if you navigate "
4408
- #~ "away from this page."
4409
- #~ msgstr ""
4410
- #~ "Los cambios que has realizado se perderán si navegas fuera de esta página."
4411
-
4412
- #~ msgid "View the Knowledge Base"
4413
- #~ msgstr "Ver la Base de Conocimiento"
4414
-
4415
- #~ msgid "Visit the Forums"
4416
- #~ msgstr "Visitar los Foros"
4417
-
4418
- #~ msgid "Watch the Video"
4419
- #~ msgstr "Ver el Video"
4420
-
4421
- #~ msgid ""
4422
- #~ "Welcome! It looks like this might be your first time using the builder. "
4423
- #~ "Would you like to take a tour?"
4424
- #~ msgstr ""
4425
- #~ "¡Bienvenido! Parece que es la primera vez que utilizas este editor. ¿Te "
4426
- #~ "gustaría realizar un tour?"
4427
-
4428
- #~ msgid "Yes Please!"
4429
- #~ msgstr "Sí, por favor!"
4430
-
4431
- #~ msgid "Save Subscription Settings"
4432
- #~ msgstr "Guardar la Configuración de Suscripción"
4433
-
4434
- #~ msgid "Your name"
4435
- #~ msgstr "Su nombre"
4436
-
4437
- #~ msgid "Your email"
4438
- #~ msgstr "Su correo electrónico"
4439
-
4440
- #~ msgid "Your message"
4441
- #~ msgstr "Su mensaje"
4442
-
4443
- #~ msgid "Send"
4444
- #~ msgstr "Enviar"
4445
-
4446
  #~ msgid "Price: Low to High"
4447
  #~ msgstr "Precio: de Menor a Mayor"
4448
 
2
  msgstr ""
3
  "Project-Id-Version: {FL_BUILDER_NAME}\n"
4
  "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2015-05-18 10:56-0800\n"
6
+ "PO-Revision-Date: 2015-05-21 16:44+0100\n"
7
  "Last-Translator: Roberto Porcar <rporcar@arrakis.es>\n"
8
  "Language-Team: \n"
9
  "Language: es_ES\n"
44
  msgid "Modules"
45
  msgstr "Módulos"
46
 
47
+ #: classes/class-fl-builder-admin-settings.php:159 includes/ui.php:58
48
  msgid "Templates"
49
  msgstr "Plantillas"
50
 
82
  msgid "Uninstall"
83
  msgstr "Desinstalar"
84
 
85
+ #: classes/class-fl-builder-admin-settings.php:439
86
  msgid "Error! You must have at least one icon set enabled."
87
  msgstr "Error! Necesitas tener al menos una colección de iconos habilitada."
88
 
89
+ #: classes/class-fl-builder-admin-settings.php:481
90
  msgid "Error! Could not unzip file."
91
  msgstr "¡Error! No se puede descomprimir el archivo."
92
 
93
+ #: classes/class-fl-builder-admin-settings.php:515
94
  msgid "Error! Please upload an icon set from either Icomoon or Fontello."
95
  msgstr "¡Error! Por favor, sube un icono de Icomoon o Fontello."
96
 
97
+ #: classes/class-fl-builder-admin-settings.php:618
98
  msgid "Error! Please enter an iframe for the video embed code."
99
  msgstr ""
100
  "¡Error! Por favor, introduce un iframe para el código de inserción del vídeo."
101
 
102
+ #: classes/class-fl-builder-admin-settings.php:636
103
  msgid "Error! You must have at least one feature of the help button enabled."
104
  msgstr ""
105
  "¡Error! Debse tener al menos una característica del botón ayuda habilitada."
106
 
107
+ #: classes/class-fl-builder-admin.php:45
108
  #, php-format
109
  msgid ""
110
  "This version of the <strong>Page Builder</strong> plugin is not compatible "
115
  "WordPress Multisitio. <a%s>Por favor, actualiza</a> a la versión Multisitio "
116
  "de este plugin."
117
 
118
+ #: classes/class-fl-builder-admin.php:55
119
  msgid ""
120
  "The <strong>Page Builder</strong> plugin requires WordPress version 3.5 or "
121
  "greater. Please update WordPress before activating the plugin."
123
  "El plugin <strong>Page Builder</strong> requiere WordPress versión 3.5 o "
124
  "superior. Por favor actualiza WordPress antes de activar el plugin."
125
 
126
+ #: classes/class-fl-builder-admin.php:112
127
  #, php-format
128
  msgid "Page Builder activated! <a%s>Click here</a> to enable remote updates."
129
  msgstr ""
130
  "¡Page Builder activado! <a%s>Pulsa aquí</a> para habilitar las "
131
  "actualizaciones remotas."
132
 
133
+ #: classes/class-fl-builder-admin.php:238
134
  msgctxt "Plugin action link label."
135
  msgid "Upgrade"
136
  msgstr "Actualizar"
137
 
138
+ #: classes/class-fl-builder-admin.php:253
139
+ #: classes/class-fl-builder-model.php:3113
140
  msgid "Page Builder"
141
  msgstr "Page Builder"
142
 
143
+ #: classes/class-fl-builder-model.php:1605
144
  #, php-format
145
  msgctxt "%s stands for the module filename"
146
  msgid ""
151
  "espacio de nombres de tu módulo para garantizar la compatibilidad con Beaver "
152
  "Builder."
153
 
154
+ #: classes/class-fl-builder-model.php:1652
155
+ #: classes/class-fl-builder-model.php:1710 modules/heading/heading.php:16
156
  #: modules/photo/photo.php:27 modules/rich-text/rich-text.php:16
157
  #: modules/separator/separator.php:16 modules/video/video.php:21
158
  msgid "Basic Modules"
159
  msgstr "Módulos Básicos"
160
 
161
+ #: classes/class-fl-builder-model.php:1653
162
+ #: classes/class-fl-builder-model.php:1711 modules/accordion/accordion.php:16
163
  #: modules/button/button.php:16 modules/callout/callout.php:16
164
  #: modules/contact-form/contact-form.php:16
165
  #: modules/content-slider/content-slider.php:16 modules/cta/cta.php:16
175
  msgid "Advanced Modules"
176
  msgstr "Módulos Avanzados"
177
 
178
+ #: classes/class-fl-builder-model.php:1654
179
+ #: classes/class-fl-builder-model.php:1712
180
  msgid "Other Modules"
181
  msgstr "Otros Módulos"
182
 
183
+ #: classes/class-fl-builder-model.php:1655
184
+ #: classes/class-fl-builder-model.php:1713
185
+ #: includes/admin-settings-modules.php:32 includes/ui.php:99
186
  #: modules/widget/widget.php:16
187
  msgid "WordPress Widgets"
188
  msgstr "WordPress Widgets"
189
 
190
+ #: classes/class-fl-builder-model.php:2302
191
  #, php-format
192
  msgctxt "%s stands for post/page title."
193
  msgid "Copy of %s"
194
  msgstr "Copia de %s"
195
 
196
+ #: classes/class-fl-builder-model.php:2715
197
+ msgctxt "Default user template category."
198
+ msgid "Uncategorized"
199
+ msgstr "Sin categoría"
200
+
201
+ #: classes/class-fl-builder-model.php:3070
202
+ msgid "Home Pages"
203
+ msgstr "Páginas de Inicio"
204
+
205
+ #: classes/class-fl-builder-model.php:3071
206
+ msgid "Content Pages"
207
+ msgstr "Páginas de Contenido"
208
+
209
+ #: classes/class-fl-builder-photo.php:95
210
+ #: classes/class-fl-builder-photo.php:100
211
  msgctxt "Image size."
212
  msgid "Full Size"
213
  msgstr "Tamaño completo"
214
 
215
+ #: classes/class-fl-builder-photo.php:101
216
  msgctxt "Image size."
217
  msgid "Large"
218
  msgstr "Grande"
219
 
220
+ #: classes/class-fl-builder-photo.php:102
221
  msgctxt "Image size."
222
  msgid "Medium"
223
  msgstr "Medio"
224
 
225
+ #: classes/class-fl-builder-photo.php:103
226
  msgctxt "Image size."
227
  msgid "Thumbnail"
228
  msgstr "Miniatura"
254
  #: classes/class-fl-builder-service-constant-contact.php:156
255
  #: classes/class-fl-builder-service-getresponse.php:154
256
  #: classes/class-fl-builder-service-icontact.php:207
257
+ #: classes/class-fl-builder-service-infusionsoft.php:204
258
  #: classes/class-fl-builder-service-madmimi.php:178
259
  #: classes/class-fl-builder-service-mailchimp.php:154
260
  #: classes/class-fl-builder-service-mailpoet.php:92
261
+ #: classes/class-fl-builder-service-sendinblue.php:161
262
+ #: classes/class-fl-builder-services.php:278 includes/service-settings.php:21
263
  #: modules/woocommerce/woocommerce.php:60
264
  msgid "Choose..."
265
  msgstr "Elegir..."
269
  #: classes/class-fl-builder-service-constant-contact.php:166
270
  #: classes/class-fl-builder-service-getresponse.php:164
271
  #: classes/class-fl-builder-service-icontact.php:217
272
+ #: classes/class-fl-builder-service-infusionsoft.php:214
273
  #: classes/class-fl-builder-service-madmimi.php:188
274
  #: classes/class-fl-builder-service-mailchimp.php:164
275
  #: classes/class-fl-builder-service-mailpoet.php:102
276
+ #: classes/class-fl-builder-service-sendinblue.php:171
277
+ msgctxt "An email list from a third party provider."
278
  msgid "List"
279
  msgstr "Lista"
280
 
295
  #: classes/class-fl-builder-service-campaign-monitor.php:55
296
  #: classes/class-fl-builder-service-constant-contact.php:48
297
  #: classes/class-fl-builder-service-getresponse.php:67
298
+ #: classes/class-fl-builder-service-hatchbuck.php:48
299
+ #: classes/class-fl-builder-service-infusionsoft.php:79
300
  #: classes/class-fl-builder-service-madmimi.php:73
301
  #: classes/class-fl-builder-service-mailchimp.php:67
302
  msgid "Error: You must provide an API key."
306
  #: classes/class-fl-builder-service-campaign-monitor.php:129
307
  #: classes/class-fl-builder-service-getresponse.php:76
308
  #: classes/class-fl-builder-service-getresponse.php:132
309
+ #: classes/class-fl-builder-service-hatchbuck.php:63
310
  msgid "Error: Please check your API key."
311
  msgstr "Error: Por favor comprueba tu clave de API."
312
 
313
  #: classes/class-fl-builder-service-campaign-monitor.php:88
314
  #: classes/class-fl-builder-service-constant-contact.php:88
315
  #: classes/class-fl-builder-service-getresponse.php:100
316
+ #: classes/class-fl-builder-service-hatchbuck.php:87
317
+ #: classes/class-fl-builder-service-infusionsoft.php:129
318
  #: classes/class-fl-builder-service-madmimi.php:121
319
  #: classes/class-fl-builder-service-mailchimp.php:100
320
  msgid "API Key"
329
  "Monitor bajo Account Settings > API Key."
330
 
331
  #: classes/class-fl-builder-service-campaign-monitor.php:158
332
+ msgctxt "A client account in Campaign Monitor."
333
  msgid "Client"
334
  msgstr "Cliente"
335
 
411
  msgid "There was an error subscribing to GetResponse. %s"
412
  msgstr "Hubo un error al suscribirse a GetResponse. %s"
413
 
414
+ #: classes/class-fl-builder-service-hatchbuck.php:88
415
+ msgid ""
416
+ "Your API key can be found in your Hatchbuck account under Account Settings > "
417
+ "Web API."
418
+ msgstr ""
419
+ "La clave API puede encontrarse en tu cuenta Hatchbuck bajo Account Settings "
420
+ "> Web API."
421
+
422
+ #: classes/class-fl-builder-service-hatchbuck.php:134
423
+ msgctxt "A tag to add to contacts in Hatchbuck when they subscribe."
424
+ msgid "Tag"
425
+ msgstr "Etiqueta"
426
+
427
+ #: classes/class-fl-builder-service-hatchbuck.php:161
428
+ msgid ""
429
+ "There was an error subscribing to Hatchbuck. The account is no longer "
430
+ "connected."
431
+ msgstr "Hubo un error suscribirse a Hatchbuck. La cuenta ya no está conectada."
432
+
433
+ #: classes/class-fl-builder-service-hatchbuck.php:190
434
+ msgid "There was an error subscribing to Hatchbuck. The API key is invalid."
435
+ msgstr "Hubo un error suscribirse a Hatchbuck. La API key no es válida."
436
+
437
+ #: classes/class-fl-builder-service-hatchbuck.php:200
438
+ #: classes/class-fl-builder-service-hatchbuck.php:232
439
+ msgid "There was an error subscribing to Hatchbuck."
440
+ msgstr "Hubo un error suscribirse a Hatchbuck."
441
+
442
  #: classes/class-fl-builder-service-icontact.php:75
443
  msgid "Error: You must provide a username."
444
  msgstr "Error: Debes proporcionar un nombre de usuario."
466
  msgstr "Su nombre de usuario iContact."
467
 
468
  #: classes/class-fl-builder-service-icontact.php:136
469
+ #: classes/class-fl-builder-service-infusionsoft.php:118
470
  msgid "App ID"
471
  msgstr "App ID"
472
 
503
  msgid "There was an error subscribing to iContact. %s"
504
  msgstr "Hubo un error suscribirse a iContact. %s"
505
 
506
+ #: classes/class-fl-builder-service-infusionsoft.php:49
507
+ #, php-format
508
+ msgid "There was an error connecting to Infusionsoft. %s"
509
+ msgstr "Hubo un error de conexión a Infusionsoft. %s"
510
+
511
+ #: classes/class-fl-builder-service-infusionsoft.php:83
512
+ msgid "Error: You must provide an app ID."
513
+ msgstr "Error: Debes proporcionar un ID de la aplicación."
514
+
515
+ #: classes/class-fl-builder-service-infusionsoft.php:119
516
+ msgid ""
517
+ "Your App ID can be found in the URL for your account. For example, if the "
518
+ "URL for your account is myaccount.infusionsoft.com, your App ID would be "
519
+ "<strong>myaccount</strong>."
520
+ msgstr ""
521
+ "Tu App ID está en la URL de tu cuenta. Por ejemplo, si la URL de tu cuenta "
522
+ "es myaccount.infuionsoft.com, tu App ID será <strong>myaccount</strong>."
523
+
524
+ #: classes/class-fl-builder-service-infusionsoft.php:130
525
+ msgid ""
526
+ "Your API key can be found in your Infusionsoft account under Admin > "
527
+ "Settings > Application > API > Encrypted Key."
528
+ msgstr ""
529
+ "Tu API key se encuentra en la cuenta de Infusionsoft en Admin > Settings > "
530
+ "Application > API > Encrypted Key."
531
+
532
+ #: classes/class-fl-builder-service-infusionsoft.php:242
533
+ msgid ""
534
+ "There was an error subscribing to Infusionsoft. The account is no longer "
535
+ "connected."
536
+ msgstr ""
537
+ "Hubo un error al suscribirse a Infusionsoft. La cuenta ya no está conectada."
538
+
539
+ #: classes/class-fl-builder-service-infusionsoft.php:291
540
+ #, php-format
541
+ msgid "There was an error subscribing to Infusionsoft. %s"
542
+ msgstr "Hubo un error al suscribirse a Infusionsoft. %s"
543
+
544
  #: classes/class-fl-builder-service-madmimi.php:69
545
  msgid "Error: You must provide an email address."
546
  msgstr "Error: Debes proporcionar un nombre de usuario."
596
  msgstr ""
597
  "Hubo un error al suscribirse a Mad Mimi. La cuenta ya no está conectada."
598
 
599
+ #: classes/class-fl-builder-service-mailchimp.php:221
600
  #, php-format
601
  msgid "There was an error subscribing to MailChimp. %s"
602
  msgstr "Hubo un error al suscribirse a MailChimp. %s"
609
  msgid "There was an error subscribing. MailPoet is not installed."
610
  msgstr "Hubo un error al suscribirse. MailPoet no está instalado."
611
 
612
+ #: classes/class-fl-builder-service-sendinblue.php:67
613
+ msgid "Error: You must provide an Access Key."
614
+ msgstr "Error: Debes proporcionar una Access Key."
615
+
616
+ #: classes/class-fl-builder-service-sendinblue.php:76
617
+ #: classes/class-fl-builder-service-sendinblue.php:136
618
+ msgid "There was an error connecting to SendinBlue. Please try again."
619
+ msgstr "Hubo un error de conexión a SendinBlue. Por favor inténtalo de nuevo."
620
+
621
+ #: classes/class-fl-builder-service-sendinblue.php:79
622
+ #: classes/class-fl-builder-service-sendinblue.php:139
623
+ #, php-format
624
+ msgid "Error: Could not connect to SendinBlue. %s"
625
+ msgstr "Error: No se pudo establecer conexión con SendinBlue. %s"
626
+
627
+ #: classes/class-fl-builder-service-sendinblue.php:103
628
+ msgid "Access Key"
629
+ msgstr "Clave de Acceso"
630
+
631
+ #: classes/class-fl-builder-service-sendinblue.php:104
632
+ msgid ""
633
+ "Your Access Key can be found in your SendinBlue account under API & "
634
+ "Integration > Manager Your Keys > Version 2.0 > Access Key."
635
+ msgstr ""
636
+ "Tu Access Key se encuentra en tu cuenta SendinBlue en API & Integration > "
637
+ "Manager Your Keys > Version 2.0 > Access Key."
638
+
639
+ #: classes/class-fl-builder-service-sendinblue.php:198
640
+ msgid ""
641
+ "There was an error subscribing to SendinBlue. The account is no longer "
642
+ "connected."
643
+ msgstr ""
644
+ "Hubo un error al suscribirse a SendinBlue. La cuenta ya no está conectada."
645
+
646
+ #: classes/class-fl-builder-service-sendinblue.php:220
647
+ msgid "There was an error subscribing to SendinBlue. Please try again."
648
+ msgstr ""
649
+ "Hubo un error al suscribirse a SendinBlue. Por favor inténtalo de nuevo."
650
+
651
+ #: classes/class-fl-builder-service-sendinblue.php:223
652
+ #, php-format
653
+ msgid "Error: Could not subscribe to SendinBlue. %s"
654
+ msgstr "Error: No se ha podido realizar la suscripción a SendinBlue. %s"
655
+
656
+ #: classes/class-fl-builder-services.php:148
657
  msgctxt "Third party service such as MailChimp."
658
  msgid "Error: Missing service type."
659
  msgstr "Error: Falta el tipo de servicio."
660
 
661
+ #: classes/class-fl-builder-services.php:151
662
  msgctxt "Connection data such as an API key."
663
  msgid "Error: Missing service data."
664
  msgstr "Error: Falta de datos del servicio."
665
 
666
+ #: classes/class-fl-builder-services.php:154
667
  msgctxt "Account name for a third party service such as MailChimp."
668
  msgid "Error: Missing account name."
669
  msgstr "Error: Falta el nombre de cuenta."
670
 
671
+ #: classes/class-fl-builder-services.php:163
672
  msgctxt "Account name for a third party service such as MailChimp."
673
  msgid "Error: An account with that name already exists."
674
  msgstr "Error: Ya existe una cuenta con ese nombre."
675
 
676
+ #: classes/class-fl-builder-services.php:243
677
  msgid "Account Name"
678
  msgstr "Nombre de la cuenta"
679
 
680
+ #: classes/class-fl-builder-services.php:244
681
  msgid ""
682
  "Used to identify this connection within the accounts list and can be "
683
  "anything you like."
685
  "Utilizado para identificar esta conexión dentro de la lista de cuentas y "
686
  "puede ser cualquier cosa que quieras."
687
 
688
+ #: classes/class-fl-builder-services.php:257
689
  msgid "Connect"
690
  msgstr "Conectar"
691
 
692
+ #: classes/class-fl-builder-services.php:285
693
  msgid "Add Account..."
694
  msgstr "Añadir cuenta"
695
 
696
+ #: classes/class-fl-builder-services.php:292
697
  msgid "Account"
698
  msgstr "Cuenta"
699
 
700
+ #: classes/class-fl-builder-template-settings.php:33
701
  msgid "Page Builder Templates"
702
  msgstr "Plantillas de Page Builder"
703
 
704
+ #: classes/class-fl-builder-templates-override.php:46
705
+ msgid "Error! Please enter a number for the site ID."
706
+ msgstr "¡Error! Por favor, introduce un número la identificación del sitio."
707
+
708
+ #: classes/class-fl-builder-templates-override.php:50
709
+ msgid "Error! A site with that ID doesn't exist."
710
+ msgstr "¡Error! No existe un sitio con ese ID."
711
+
712
+ #: classes/class-fl-builder.php:811
713
  #, php-format
714
  msgctxt "Field name to add."
715
  msgid "Add %s"
716
  msgstr "Añadir %s"
717
 
718
+ #: classes/class-fl-builder.php:901 classes/class-fl-builder.php:903
719
  msgctxt "Custom post type label."
720
+ msgid "Templates"
721
+ msgstr "Plantillas"
722
 
723
+ #: classes/class-fl-builder.php:902 classes/class-fl-builder.php:904
724
  msgctxt "Custom post type label."
725
+ msgid "Template"
726
+ msgstr "Plantilla"
727
 
728
+ #: classes/class-fl-builder.php:905
729
  msgctxt "Custom post type label."
730
  msgid "Add New"
731
  msgstr "Añadir Nuevo"
732
 
733
+ #: classes/class-fl-builder.php:906
734
  msgctxt "Custom post type label."
735
+ msgid "Add New Template"
736
+ msgstr "Añadir Nueva Plantilla"
737
 
738
+ #: classes/class-fl-builder.php:907
739
  msgctxt "Custom post type label."
740
+ msgid "New Template"
741
+ msgstr "Nueva Plantilla"
742
 
743
+ #: classes/class-fl-builder.php:908
744
  msgctxt "Custom post type label."
745
+ msgid "Edit Template"
746
+ msgstr "Editar Plantilla"
747
 
748
+ #: classes/class-fl-builder.php:909
749
  msgctxt "Custom post type label."
750
+ msgid "View Template"
751
+ msgstr "Ver Plantilla"
752
 
753
+ #: classes/class-fl-builder.php:910
754
  msgctxt "Custom post type label."
755
+ msgid "All Templates"
756
+ msgstr "Todas las Plantillas"
757
 
758
+ #: classes/class-fl-builder.php:911
759
  msgctxt "Custom post type label."
760
+ msgid "Search Templates"
761
+ msgstr "Buscar Plantillas"
762
 
763
+ #: classes/class-fl-builder.php:912
764
  msgctxt "Custom post type label."
765
+ msgid "Parent Templates:"
766
+ msgstr "Plantillas Maestras:"
767
 
768
+ #: classes/class-fl-builder.php:913
769
  msgctxt "Custom post type label."
770
+ msgid "No templates found."
771
+ msgstr "No se han encontrado plantillas."
772
 
773
+ #: classes/class-fl-builder.php:914
774
  msgctxt "Custom post type label."
775
+ msgid "No templates found in Trash."
776
+ msgstr "No se han encontrado plantillas en la Papelera."
777
+
778
+ #: classes/class-fl-builder.php:927 classes/class-fl-builder.php:937
779
+ msgctxt "Custom taxonomy label."
780
+ msgid "Categories"
781
+ msgstr "Categorías"
782
 
783
+ #: classes/class-fl-builder.php:928
784
+ msgctxt "Custom taxonomy label."
785
+ msgid "Category"
786
+ msgstr "Categoría"
787
+
788
+ #: classes/class-fl-builder.php:929
789
+ msgctxt "Custom taxonomy label."
790
+ msgid "Search Categories"
791
+ msgstr "Buscar Categorías"
792
+
793
+ #: classes/class-fl-builder.php:930
794
+ msgctxt "Custom taxonomy label."
795
+ msgid "All Categories"
796
+ msgstr "Todas las Categorías"
797
+
798
+ #: classes/class-fl-builder.php:931
799
+ msgctxt "Custom taxonomy label."
800
+ msgid "Parent Category"
801
+ msgstr "Categoria Padre"
802
+
803
+ #: classes/class-fl-builder.php:932
804
+ msgctxt "Custom taxonomy label."
805
+ msgid "Parent Category:"
806
+ msgstr "Categoria Padre:"
807
+
808
+ #: classes/class-fl-builder.php:933
809
+ msgctxt "Custom taxonomy label."
810
+ msgid "Edit Category"
811
+ msgstr "Editar Categoría"
812
+
813
+ #: classes/class-fl-builder.php:934
814
+ msgctxt "Custom taxonomy label."
815
+ msgid "Update Category"
816
+ msgstr "Actualizar Categoría"
817
+
818
+ #: classes/class-fl-builder.php:935
819
+ msgctxt "Custom taxonomy label."
820
+ msgid "Add New Category"
821
+ msgstr "Añadir Nueva Categoría"
822
+
823
+ #: classes/class-fl-builder.php:936
824
+ msgctxt "Custom taxonomy label."
825
+ msgid "New Category Name"
826
+ msgstr "Nuevo Nombre de Categoría"
827
+
828
+ #: classes/class-fl-builder.php:1389 includes/js-config.php:69
829
  #, php-format
830
  msgctxt "%s stands for module name."
831
  msgid "%s Settings"
837
 
838
  #: includes/admin-posts.php:7
839
  #, php-format
840
+ msgctxt ""
841
+ "The first %s stands for custom branded \"Page Builder\" name. The second %s "
842
+ "stands for the post type name."
843
+ msgid "%s is currently active for this %s."
844
+ msgstr "%s está actualmente activo para este %s."
845
 
846
  #: includes/admin-posts.php:8
847
  #, php-format
863
  "Además, también puedes añadir un icono personalizado introduciendo la URL de "
864
  "una imagen. Deja el campo vacío si no quieres usar un icono."
865
 
866
+ #: includes/admin-settings-branding.php:14
867
+ msgid "Save Branding"
868
+ msgstr "Guardar personalización de Marca"
869
+
870
  #: includes/admin-settings-cache.php:9
871
  msgid ""
872
  "A CSS and JavaScript file is dynamically generated and cached each time you "
902
  "Esto sólo se aplica a este sitio. Por favor visita la Configuración de "
903
  "Administrador de Red para borrar la caché para todos los sitios en la red."
904
 
905
+ #: includes/admin-settings-cache.php:19
906
+ msgid "Clear Cache"
907
+ msgstr "Vaciar Caché"
908
+
909
  #: includes/admin-settings-editing.php:3
910
  msgid "Editing Settings"
911
  msgstr "Editar configuración"
913
  #: includes/admin-settings-editing.php:10 includes/admin-settings-icons.php:27
914
  #: includes/admin-settings-modules.php:10
915
  #: includes/admin-settings-post-types.php:10
916
+ #: includes/admin-settings-templates.php:16
917
  msgid "Override network settings?"
918
  msgstr "¿Sobreescribir configuración de red?"
919
 
926
  "Establece las <a%s>competencias</a> necesarias para que los usuarios puedan "
927
  "acceder a la edición avanzada: añadir, borrar o mover módulos."
928
 
929
+ #: includes/admin-settings-editing.php:22
930
+ msgid "Save Editing Settings"
931
+ msgstr "Guardar Ajustes de Edición"
932
+
933
  #: includes/admin-settings-help-button.php:8
934
  msgid "Help Button Settings"
935
  msgstr "Ajustes del Botón de Ayuda"
982
  msgid "Forums URL"
983
  msgstr "URL de los foros"
984
 
985
+ #: includes/admin-settings-help-button.php:77
986
+ msgid "Save Help Button Settings"
987
+ msgstr "Guardar Ajustes del Botón de Ayuda"
988
+
989
  #: includes/admin-settings-icons.php:3
990
  msgid "Icon Settings"
991
  msgstr "Configuración de Iconos"
1010
  msgid "Delete"
1011
  msgstr "Eliminar"
1012
 
1013
+ #: includes/admin-settings-icons.php:59
1014
+ msgid "Upload Icon Set"
1015
+ msgstr "Subir Colección de Iconos"
1016
+
1017
+ #: includes/admin-settings-icons.php:60
1018
+ msgid "Save Icon Settings"
1019
+ msgstr "Guardar Ajustes de Iconos"
1020
+
1021
+ #: includes/admin-settings-js-config.php:4
1022
+ msgid "Select File"
1023
+ msgstr "Seleccionar Archivo"
1024
+
1025
+ #: includes/admin-settings-js-config.php:5
1026
+ msgid ""
1027
+ "Please type \"uninstall\" in the box below to confirm that you really want "
1028
+ "to uninstall the page builder and all of its data."
1029
+ msgstr ""
1030
+ "Por favor, escribe \"uninstall\" en el cuadro siguiente para confirmar que "
1031
+ "realmente deseas desinstalar el page builder y todos sus datos."
1032
+
1033
  #: includes/admin-settings-modules.php:3
1034
  msgid "Enabled Modules"
1035
  msgstr "Módulos habilitados"
1045
  msgid "All"
1046
  msgstr "Todo"
1047
 
1048
+ #: includes/admin-settings-modules.php:64
1049
+ msgid "Save Module Settings"
1050
+ msgstr "Guardar Ajustes"
1051
+
1052
  #: includes/admin-settings-post-types.php:18
1053
  msgid ""
1054
  "Enter a comma separated list of the post types you would like the builder to "
1071
  msgid "Select the post types you would like the builder to work with."
1072
  msgstr "Selecciona los tipos de entrada con los que te gustaría trabajar."
1073
 
1074
+ #: includes/admin-settings-post-types.php:70
1075
+ msgid "Save Post Types"
1076
+ msgstr "Guardar Tipos de Entrada"
1077
+
1078
+ #: includes/admin-settings-templates-override.php:2
1079
+ #: includes/admin-settings-templates-override.php:8
1080
+ #: includes/admin-settings-templates-override.php:13
1081
+ msgid "Override Core Templates"
1082
+ msgstr "Reemplazar Plantillas Base"
1083
+
1084
+ #: includes/admin-settings-templates-override.php:3
1085
+ msgid ""
1086
+ "Enter the ID of a site on the network whose templates should override core "
1087
+ "builder templates. Leave this field blank if you do not wish to override "
1088
+ "core templates."
1089
+ msgstr ""
1090
+ "Introduce el ID del sitio en la red cuyas plantillas base deben "
1091
+ "reemplazarse. Deja este campo en blanco si no deseas sobrescribir las "
1092
+ "plantillas base."
1093
+
1094
+ #: includes/admin-settings-templates-override.php:9
1095
+ msgid ""
1096
+ "Use this setting to override core builder templates with your templates."
1097
+ msgstr ""
1098
+ "Usa esta opción para sobrescribir las plantillas base con tus propias "
1099
+ "plantillas."
1100
+
1101
+ #: includes/admin-settings-templates.php:9 includes/template-settings.php:4
1102
  msgid "Template Settings"
1103
  msgstr "Ajustes de Plantilla"
1104
 
1105
+ #: includes/admin-settings-templates.php:22
1106
+ msgid "Enable Templates"
1107
+ msgstr "Habilitar Plantillas"
 
1108
 
1109
  #: includes/admin-settings-templates.php:23
1110
+ msgid ""
1111
+ "Use this setting to enable or disable templates in the builder interface."
1112
+ msgstr ""
1113
+ "Usa esta opción para activar o desactivar las plantillas en las opciones del "
1114
+ "plugin."
1115
+
1116
+ #: includes/admin-settings-templates.php:25
1117
  msgid "Enable All Templates"
1118
  msgstr "Habilitar Todas las Plantillas"
1119
 
1120
+ #: includes/admin-settings-templates.php:26
1121
  msgid "Enable Core Templates Only"
1122
  msgstr "Habilitar Sólo Plantillas Base"
1123
 
1124
+ #: includes/admin-settings-templates.php:27
1125
  msgid "Enable User Templates Only"
1126
  msgstr "Habilitar Sólo Plantillas de Usuario"
1127
 
1128
+ #: includes/admin-settings-templates.php:28
1129
  msgid "Disable All Templates"
1130
  msgstr "Deshabilitar Todas las Plantillas"
1131
 
1132
+ #: includes/admin-settings-templates.php:31
1133
+ #: includes/admin-settings-templates.php:36
1134
+ msgid "Enable Templates Admin"
1135
+ msgstr "Habilitar Plantillas Admin"
1136
+
1137
+ #: includes/admin-settings-templates.php:32
1138
+ msgid "Use this setting to edit builder templates in the WordPress admin."
1139
+ msgstr ""
1140
+ "Usa esta opción para editar las plantillas desde el panel de administración "
1141
+ "de WordPress."
1142
+
1143
+ #: includes/admin-settings-templates.php:50
1144
+ msgid "Save Template Settings"
1145
+ msgstr "Guardar Ajustes de Plantilla"
1146
+
1147
  #: includes/admin-settings-uninstall.php:5
1148
  msgid ""
1149
  "Clicking the button below will uninstall the page builder plugin and delete "
1198
  msgid "Image"
1199
  msgstr "Imagen"
1200
 
1201
+ #: includes/admin-templates-edit.php:16 includes/column-settings.php:114
1202
+ #: includes/row-settings.php:155 includes/template-settings.php:23
1203
+ #: modules/callout/callout.php:353 modules/callout/callout.php:373
1204
  #: modules/content-slider/content-slider.php:472
1205
  #: modules/post-grid/post-grid.php:127
1206
  msgid "Position"
1222
  #: modules/content-slider/content-slider.php:266
1223
  #: modules/content-slider/content-slider.php:537
1224
  #: modules/icon-group/icon-group.php:80 modules/icon/icon.php:111
1225
+ #: modules/slideshow/slideshow.php:316 modules/slideshow/slideshow.php:326
1226
+ #: modules/slideshow/slideshow.php:377 modules/slideshow/slideshow.php:418
1227
+ #: modules/slideshow/slideshow.php:440 modules/slideshow/slideshow.php:489
1228
+ #: modules/slideshow/slideshow.php:498 modules/slideshow/slideshow.php:507
1229
+ #: modules/slideshow/slideshow.php:516 modules/slideshow/slideshow.php:525
1230
+ #: modules/slideshow/slideshow.php:534 modules/slideshow/slideshow.php:543
1231
+ #: modules/slideshow/slideshow.php:557 modules/slideshow/slideshow.php:572
1232
+ #: modules/slideshow/slideshow.php:607 modules/slideshow/slideshow.php:619
1233
+ #: modules/slideshow/slideshow.php:631 modules/slideshow/slideshow.php:643
1234
  #: modules/social-buttons/social-buttons.php:111
1235
  #: modules/social-buttons/social-buttons.php:120
1236
  #: modules/social-buttons/social-buttons.php:129
1252
  #: modules/content-slider/content-slider.php:267
1253
  #: modules/content-slider/content-slider.php:538
1254
  #: modules/icon-group/icon-group.php:81 modules/icon/icon.php:112
1255
+ #: modules/slideshow/slideshow.php:317 modules/slideshow/slideshow.php:327
1256
+ #: modules/slideshow/slideshow.php:378 modules/slideshow/slideshow.php:419
1257
+ #: modules/slideshow/slideshow.php:441 modules/slideshow/slideshow.php:490
1258
+ #: modules/slideshow/slideshow.php:499 modules/slideshow/slideshow.php:508
1259
+ #: modules/slideshow/slideshow.php:517 modules/slideshow/slideshow.php:526
1260
+ #: modules/slideshow/slideshow.php:535 modules/slideshow/slideshow.php:544
1261
+ #: modules/slideshow/slideshow.php:558 modules/slideshow/slideshow.php:573
1262
+ #: modules/slideshow/slideshow.php:608 modules/slideshow/slideshow.php:620
1263
+ #: modules/slideshow/slideshow.php:632 modules/slideshow/slideshow.php:644
1264
  #: modules/social-buttons/social-buttons.php:110
1265
  #: modules/social-buttons/social-buttons.php:119
1266
  #: modules/social-buttons/social-buttons.php:128
1309
  msgstr "Premium"
1310
 
1311
  #: includes/admin-templates.php:25 includes/field-photo.php:12
1312
+ #: includes/template-selector.php:70
1313
  msgid "Edit"
1314
  msgstr "Editar"
1315
 
1316
+ #: includes/admin-templates.php:27 includes/template-selector.php:71
1317
  msgid "Delete"
1318
  msgstr "Eliminar"
1319
 
1320
+ #: includes/admin-templates.php:40 includes/js-config.php:30
1321
  msgid "Do you really want to delete this template?"
1322
  msgstr "¿Quieres eliminar esta plantilla?"
1323
 
1324
+ #: includes/column-settings.php:4 includes/js-config.php:23
1325
  msgid "Column Settings"
1326
  msgstr "Configuración de Columnas"
1327
 
1354
  msgid "Text"
1355
  msgstr "Texto"
1356
 
1357
+ #: includes/column-settings.php:30 includes/column-settings.php:69
1358
+ #: includes/column-settings.php:199 includes/row-settings.php:52
1359
  #: includes/row-settings.php:109 includes/row-settings.php:403
1360
  #: modules/callout/callout.php:391
1361
  #: modules/content-slider/content-slider.php:337
1364
  msgid "Color"
1365
  msgstr "Color"
1366
 
1367
+ #: includes/column-settings.php:39 includes/row-settings.php:61
1368
+ msgid "Background"
1369
+ msgstr "Fondo"
1370
+
1371
+ #: includes/column-settings.php:43 includes/column-settings.php:166
1372
+ #: includes/row-settings.php:65 includes/row-settings.php:370
1373
+ #: modules/callout/callout.php:474
1374
+ #: modules/content-slider/content-slider.php:331
1375
+ #: modules/content-slider/content-slider.php:378
1376
+ #: modules/content-slider/content-slider.php:596
1377
+ #: modules/content-slider/content-slider.php:729
1378
+ #: modules/slideshow/slideshow.php:340
1379
+ msgid "Type"
1380
+ msgstr "Tipo"
1381
+
1382
+ #: includes/column-settings.php:46 includes/row-settings.php:68
1383
+ #: modules/content-slider/content-slider.php:338
1384
+ msgctxt "Background type."
1385
+ msgid "None"
1386
+ msgstr "Ninguno"
1387
+
1388
+ #: includes/column-settings.php:47 includes/row-settings.php:69
1389
+ msgctxt "Background type."
1390
+ msgid "Color"
1391
+ msgstr "Color"
1392
+
1393
+ #: includes/column-settings.php:48 includes/row-settings.php:70
1394
+ msgctxt "Background type."
1395
+ msgid "Photo"
1396
+ msgstr "Imagen"
1397
+
1398
+ #: includes/column-settings.php:65 includes/row-settings.php:105
1399
  #: modules/button/button.php:115 modules/callout/callout.php:404
1400
  #: modules/callout/callout.php:508
1401
  #: modules/content-slider/content-slider.php:363
1405
  msgid "Background Color"
1406
  msgstr "Color de Fondo"
1407
 
1408
+ #: includes/column-settings.php:77 includes/column-settings.php:207
1409
  #: includes/row-settings.php:117 includes/row-settings.php:411
1410
  #: modules/separator/separator.php:44
1411
  msgid "Opacity"
1412
  msgstr "Opacidad"
1413
 
1414
+ #: includes/column-settings.php:88 includes/row-settings.php:129
1415
+ #: modules/content-slider/content-slider.php:359
1416
+ msgid "Background Photo"
1417
+ msgstr "Imagen de fondo"
1418
+
1419
+ #: includes/column-settings.php:92 includes/row-settings.php:133
1420
+ #: includes/row-settings.php:321 modules/callout/callout.php:316
1421
+ #: modules/callout/callout.php:332 modules/callout/callout.php:336
1422
+ #: modules/content-slider/content-slider.php:335
1423
+ #: modules/content-slider/content-slider.php:404
1424
+ #: modules/content-slider/content-slider.php:745 modules/photo/photo.php:25
1425
+ #: modules/photo/photo.php:392
1426
+ msgid "Photo"
1427
+ msgstr "Imagen"
1428
+
1429
+ #: includes/column-settings.php:99 includes/row-settings.php:140
1430
+ msgid "Repeat"
1431
+ msgstr "Repetir"
1432
+
1433
+ #: includes/column-settings.php:102 includes/row-settings.php:143
1434
+ msgctxt "Background repeat."
1435
+ msgid "None"
1436
+ msgstr "Ninguno"
1437
+
1438
+ #: includes/column-settings.php:103 includes/row-settings.php:144
1439
+ msgctxt "Background repeat."
1440
+ msgid "Tile"
1441
+ msgstr "Mosaico"
1442
+
1443
+ #: includes/column-settings.php:104 includes/row-settings.php:145
1444
+ msgctxt "Background repeat."
1445
+ msgid "Horizontal"
1446
+ msgstr "Horizontal"
1447
+
1448
+ #: includes/column-settings.php:105 includes/row-settings.php:146
1449
+ msgctxt "Background repeat."
1450
+ msgid "Vertical"
1451
+ msgstr "Vertical"
1452
+
1453
+ #: includes/column-settings.php:107 includes/row-settings.php:148
1454
+ msgid ""
1455
+ "Repeat applies to how the image should display in the background. Choosing "
1456
+ "none will display the image as uploaded. Tile will repeat the image as many "
1457
+ "times as needed to fill the background horizontally and vertically. You can "
1458
+ "also specify the image to only repeat horizontally or vertically."
1459
+ msgstr ""
1460
+ "Repetir se aplica a como la imagen debería mostrarse en el fondo. Elegir "
1461
+ "ninguno, mostrará la imagen tal cual se ha subido. Mosaico repetirá la "
1462
+ "imagen tantas veces como sea necesario para rellenar el fondo horizontal y "
1463
+ "verticalmente. Puedes especificar si la imagen sólo se ha de repetir "
1464
+ "horizontal o verticalmente."
1465
+
1466
+ #: includes/column-settings.php:117 includes/row-settings.php:158
1467
+ msgid "Left Top"
1468
+ msgstr "Superior Izquierda"
1469
+
1470
+ #: includes/column-settings.php:118 includes/row-settings.php:159
1471
+ msgid "Left Center"
1472
+ msgstr "Centro Izquierda"
1473
+
1474
+ #: includes/column-settings.php:119 includes/row-settings.php:160
1475
+ msgid "Left Bottom"
1476
+ msgstr "Inferior Izquierda"
1477
+
1478
+ #: includes/column-settings.php:120 includes/row-settings.php:161
1479
+ msgid "Right Top"
1480
+ msgstr "Superior Derecha"
1481
+
1482
+ #: includes/column-settings.php:121 includes/row-settings.php:162
1483
+ msgid "Right Center"
1484
+ msgstr "Centro Derecha"
1485
+
1486
+ #: includes/column-settings.php:122 includes/row-settings.php:163
1487
+ msgid "Right Bottom"
1488
+ msgstr "Inferior Derecha"
1489
+
1490
+ #: includes/column-settings.php:123 includes/row-settings.php:164
1491
+ msgid "Center Top"
1492
+ msgstr "Centro Superior"
1493
+
1494
+ #: includes/column-settings.php:124 includes/row-settings.php:165
1495
+ #: modules/button/button.php:218 modules/callout/callout.php:251
1496
+ #: modules/content-slider/content-slider.php:477 modules/cta/cta.php:126
1497
+ #: modules/heading/heading.php:90 modules/heading/heading.php:162
1498
+ #: modules/icon-group/icon-group.php:110 modules/icon/icon.php:133
1499
+ #: modules/photo/photo.php:418 modules/social-buttons/social-buttons.php:100
1500
+ msgid "Center"
1501
+ msgstr "Centro"
1502
+
1503
+ #: includes/column-settings.php:125 includes/row-settings.php:166
1504
+ msgid "Center Bottom"
1505
+ msgstr "Centro Inferior"
1506
+
1507
+ #: includes/column-settings.php:127 includes/row-settings.php:168
1508
+ msgid "Position will tell the image where it should sit in the background."
1509
+ msgstr "Posición establece el lugar donde debe situarse la imagen en el fondo."
1510
+
1511
+ #: includes/column-settings.php:134 includes/row-settings.php:175
1512
+ msgid "Attachment"
1513
+ msgstr "Adjunto"
1514
+
1515
+ #: includes/column-settings.php:137 includes/row-settings.php:178
1516
+ #: modules/post-grid/post-grid.php:75
1517
+ msgid "Scroll"
1518
+ msgstr "Scroll"
1519
+
1520
+ #: includes/column-settings.php:138 includes/global-settings.php:69
1521
+ #: includes/global-settings.php:83 includes/row-settings.php:19
1522
+ #: includes/row-settings.php:37 includes/row-settings.php:179
1523
+ msgid "Fixed"
1524
+ msgstr "Fija"
1525
+
1526
+ #: includes/column-settings.php:140 includes/row-settings.php:181
1527
+ msgid ""
1528
+ "Attachment will specify how the image reacts when scrolling a page. When "
1529
+ "scrolling is selected, the image will scroll with page scrolling. This is "
1530
+ "the default setting. Fixed will allow the image to scroll within the "
1531
+ "background if fill is selected in the scale setting."
1532
+ msgstr ""
1533
+ "Anexar Fondo especifica como se comporta la imagen cuando se hace scroll en "
1534
+ "la página. Si se ha seleccionado scroll, la imagen realizará este efecto. Es "
1535
+ "la opción por defecto. Fijo permitirá a la imagen hacer scroll con el fondo "
1536
+ "si la opción Relleno se ha seleccionado en Escalar Fondo."
1537
+
1538
+ #: includes/column-settings.php:147 includes/row-settings.php:188
1539
+ msgid "Scale"
1540
+ msgstr "Escalar"
1541
+
1542
+ #: includes/column-settings.php:150 includes/row-settings.php:191
1543
+ msgctxt "Background scale."
1544
+ msgid "None"
1545
+ msgstr "Nada"
1546
+
1547
+ #: includes/column-settings.php:151 includes/row-settings.php:192
1548
+ msgid "Fit"
1549
+ msgstr "Ajustado"
1550
+
1551
+ #: includes/column-settings.php:152 includes/row-settings.php:193
1552
+ msgid "Fill"
1553
+ msgstr "Relleno"
1554
+
1555
+ #: includes/column-settings.php:154 includes/row-settings.php:195
1556
+ msgid ""
1557
+ "Scale applies to how the image should display in the background. You can "
1558
+ "select either fill or fit to the background."
1559
+ msgstr ""
1560
+ "Escala se aplica a como la imagen debería visualizarse en el fondo. Puedes "
1561
+ "seleccionar rellenar o ajustar al fondo."
1562
+
1563
+ #: includes/column-settings.php:162 includes/row-settings.php:366
1564
  msgid "Border"
1565
  msgstr "Borde"
1566
 
1567
+ #: includes/column-settings.php:168 includes/row-settings.php:372
 
 
 
 
 
 
 
 
 
 
1568
  msgid ""
1569
  "The type of border to use. Double borders must have a width of at least 3px "
1570
  "to render properly."
1572
  "El tipo de borde a utilizar. Los bordes dobles deben tener una anchura de al "
1573
  "menos 3px para visualizarse correctamente."
1574
 
1575
+ #: includes/column-settings.php:170 includes/row-settings.php:374
1576
  msgctxt "Border type."
1577
  msgid "None"
1578
  msgstr "Ninguno"
1579
 
1580
+ #: includes/column-settings.php:171 includes/row-settings.php:375
1581
  #: modules/separator/separator.php:75
1582
  msgctxt "Border type."
1583
  msgid "Solid"
1584
  msgstr "Sólido"
1585
 
1586
+ #: includes/column-settings.php:172 includes/row-settings.php:376
1587
  #: modules/separator/separator.php:76
1588
  msgctxt "Border type."
1589
  msgid "Dashed"
1590
  msgstr "Discontinuo"
1591
 
1592
+ #: includes/column-settings.php:173 includes/row-settings.php:377
1593
  #: modules/separator/separator.php:77
1594
  msgctxt "Border type."
1595
  msgid "Dotted"
1596
  msgstr "Punteado"
1597
 
1598
+ #: includes/column-settings.php:174 includes/row-settings.php:378
1599
  #: modules/separator/separator.php:78
1600
  msgctxt "Border type."
1601
  msgid "Double"
1602
  msgstr "Doble"
1603
 
1604
+ #: includes/column-settings.php:218 includes/row-settings.php:422
1605
  msgid "Top Width"
1606
  msgstr "Ancho Superior"
1607
 
1608
+ #: includes/column-settings.php:230 includes/row-settings.php:434
1609
  msgid "Bottom Width"
1610
  msgstr "Ancho Inferior"
1611
 
1612
+ #: includes/column-settings.php:242 includes/row-settings.php:446
1613
  msgid "Left Width"
1614
  msgstr "Ancho Izquierdo"
1615
 
1616
+ #: includes/column-settings.php:254 includes/row-settings.php:458
1617
  msgid "Right Width"
1618
  msgstr "Ancho Derecho"
1619
 
1620
+ #: includes/column-settings.php:269 includes/module-settings.php:6
1621
  #: includes/row-settings.php:473 modules/content-slider/content-slider.php:273
1622
  msgid "Advanced"
1623
  msgstr "Avanzado"
1624
 
1625
+ #: includes/column-settings.php:272 includes/global-settings.php:41
1626
  #: includes/global-settings.php:94 includes/module-settings.php:9
1627
  #: includes/row-settings.php:476
1628
  msgid "Margins"
1629
  msgstr "Márgenes"
1630
 
1631
+ #: includes/column-settings.php:276 includes/column-settings.php:329
1632
  #: includes/module-settings.php:13 includes/row-settings.php:480
1633
+ #: includes/row-settings.php:533 modules/slideshow/slideshow.php:476
1634
  msgid "Top"
1635
  msgstr "Superior"
1636
 
1637
+ #: includes/column-settings.php:288 includes/column-settings.php:341
1638
  #: includes/module-settings.php:25 includes/row-settings.php:492
1639
+ #: includes/row-settings.php:545 modules/slideshow/slideshow.php:475
1640
  msgid "Bottom"
1641
  msgstr "Inferior"
1642
 
1643
+ #: includes/column-settings.php:300 includes/column-settings.php:353
1644
  #: includes/module-settings.php:37 includes/row-settings.php:504
1645
  #: includes/row-settings.php:557 modules/button/button.php:219
1646
  #: modules/callout/callout.php:252
1651
  msgid "Left"
1652
  msgstr "Izquierda"
1653
 
1654
+ #: includes/column-settings.php:312 includes/column-settings.php:365
1655
  #: includes/module-settings.php:49 includes/row-settings.php:516
1656
  #: includes/row-settings.php:569 modules/button/button.php:220
1657
  #: modules/callout/callout.php:253
1662
  msgid "Right"
1663
  msgstr "Derecha"
1664
 
1665
+ #: includes/column-settings.php:325 includes/global-settings.php:49
1666
  #: includes/row-settings.php:529 modules/button/button.php:233
1667
  #: modules/callout/callout.php:598
1668
  #: modules/content-slider/content-slider.php:703 modules/cta/cta.php:345
1670
  msgid "Padding"
1671
  msgstr "Márgenes interiores / Padding"
1672
 
1673
+ #: includes/column-settings.php:378 includes/global-settings.php:103
1674
  #: includes/module-settings.php:62 includes/row-settings.php:582
1675
  msgid "Responsive Layout"
1676
  msgstr "Diseño Adaptable"
1677
 
1678
+ #: includes/column-settings.php:382 includes/module-settings.php:66
1679
+ #: includes/row-settings.php:586 modules/slideshow/slideshow.php:291
1680
  msgid "Display"
1681
  msgstr "Pantalla"
1682
 
1683
+ #: includes/column-settings.php:384 includes/module-settings.php:68
1684
  #: includes/row-settings.php:588
1685
  msgid "Always"
1686
  msgstr "Todas"
1687
 
1688
+ #: includes/column-settings.php:385 includes/module-settings.php:69
1689
  #: includes/row-settings.php:589
1690
  msgid "Large Devices Only"
1691
  msgstr "Sólo dispositivos de tamaño grande"
1692
 
1693
+ #: includes/column-settings.php:386 includes/module-settings.php:70
1694
  #: includes/row-settings.php:590
1695
  msgid "Large &amp; Medium Devices Only"
1696
  msgstr "Sólo dispositivos grandes y medianos"
1697
 
1698
+ #: includes/column-settings.php:387 includes/module-settings.php:71
1699
  #: includes/row-settings.php:591
1700
  msgid "Medium Devices Only"
1701
  msgstr "Sólo dispositivos medianos"
1702
 
1703
+ #: includes/column-settings.php:388 includes/module-settings.php:72
1704
  #: includes/row-settings.php:592
1705
  msgid "Medium &amp; Small Devices Only"
1706
  msgstr "Sólo dispositivos medianos y pequeños"
1707
 
1708
+ #: includes/column-settings.php:389 includes/module-settings.php:73
1709
  #: includes/row-settings.php:593
1710
  msgid "Small Devices Only"
1711
  msgstr "Sólo dispositivos pequeños"
1712
 
1713
+ #: includes/column-settings.php:391
1714
  msgid "Choose whether to show or hide this column at different device sizes."
1715
  msgstr ""
1716
  "Elegir si deseas mostrar u ocultar esta columna en dispositivos de diferente "
1717
  "tamaños."
1718
 
1719
+ #: includes/column-settings.php:398
1720
  msgid "Medium Device Width"
1721
  msgstr "Anchura de dispositivo de tamaño mediano"
1722
 
1723
+ #: includes/column-settings.php:399
1724
  msgid "The width of this column on medium devices such as tablets."
1725
  msgstr ""
1726
  "La anchura de esta columna en dispositivos de tamaño mediano como tabletas."
1727
 
1728
+ #: includes/column-settings.php:401 includes/column-settings.php:429
1729
  #: modules/callout/callout.php:283
1730
  #: modules/content-slider/content-slider.php:448 modules/cta/cta.php:167
1731
  #: modules/heading/heading.php:117 modules/heading/heading.php:144
1733
  msgid "Default"
1734
  msgstr "Predeterminado"
1735
 
1736
+ #: includes/column-settings.php:402 includes/column-settings.php:430
1737
  #: modules/button/button.php:193 modules/callout/callout.php:284
1738
  #: modules/content-slider/content-slider.php:449 modules/cta/cta.php:168
1739
  #: modules/heading/heading.php:118 modules/heading/heading.php:145
1742
  msgid "Custom"
1743
  msgstr "Personalizada"
1744
 
1745
+ #: includes/column-settings.php:415
1746
  msgid "Custom Medium Device Width"
1747
  msgstr "Personalizar anchura en dispositivo de tamaño mediano"
1748
 
1749
+ #: includes/column-settings.php:426
1750
  msgid "Small Device Width"
1751
  msgstr "Anchura de dispositivo de tamaño pequeño"
1752
 
1753
+ #: includes/column-settings.php:427
1754
  msgid "The width of this column on small devices such as phones."
1755
  msgstr ""
1756
  "La anchura de esta columna en dispositivos de tamaño pequeño como teléfonos."
1757
 
1758
+ #: includes/column-settings.php:443
1759
  msgid "Custom Small Device Width"
1760
  msgstr "Personalizar anchura en dispositivo de tamaño pequeño"
1761
 
1762
+ #: includes/column-settings.php:455 includes/module-settings.php:115
1763
  #: includes/row-settings.php:603
1764
  msgid "CSS Selectors"
1765
  msgstr "Selectores CSS"
1766
 
1767
+ #: includes/column-settings.php:459 includes/loop-settings.php:28
1768
  #: includes/module-settings.php:119 includes/row-settings.php:607
1769
  msgid "ID"
1770
  msgstr "ID"
1771
 
1772
+ #: includes/column-settings.php:460
1773
  msgid ""
1774
  "A unique ID that will be applied to this column's HTML. Must start with a "
1775
  "letter and only contain dashes, underscores, letters or numbers. No spaces."
1777
  "Un único ID que se aplicará al HTML de esta columna. Debe empezar con una "
1778
  "letra y sólo contener guiones, subrayados, letras o números. Sin espacios."
1779
 
1780
+ #: includes/column-settings.php:467
1781
  msgid "CSS Class"
1782
  msgstr "Clase CSS"
1783
 
1784
+ #: includes/column-settings.php:468
1785
  msgid ""
1786
  "A class that will be applied to this column's HTML. Must start with a letter "
1787
  "and only contain dashes, underscores, letters or numbers. Separate multiple "
1805
  msgid "Replace"
1806
  msgstr "Reemplazar"
1807
 
1808
+ #: includes/field-icon.php:7 includes/js-config.php:61
1809
  msgid "Remove"
1810
  msgstr "Eliminar"
1811
 
1817
  msgid "Enter a post title to search."
1818
  msgstr "Introduce un título para buscar."
1819
 
1820
+ #: includes/field-link.php:6 includes/field-suggest.php:7
1821
+ msgid "Start typing..."
1822
+ msgstr "Empieza a escribir..."
1823
+
1824
  #: includes/field-link.php:7 includes/icon-selector.php:28
1825
+ #: includes/js-config.php:19 includes/settings.php:63
1826
+ #: includes/template-selector.php:92
1827
  msgid "Cancel"
1828
  msgstr "Cancelar"
1829
 
1846
  msgid "Add Photos"
1847
  msgstr "Añadir Fotos"
1848
 
1849
+ #: includes/field-photo.php:3 includes/js-config.php:66
1850
  msgid "Select Photo"
1851
  msgstr "Seleccionar Imagen"
1852
 
1853
+ #: includes/field-video.php:3 includes/js-config.php:68
1854
  msgid "Select Video"
1855
  msgstr "Seleccionar Video"
1856
 
1869
  #: modules/icon/icon.php:27 modules/map/map.php:26 modules/photo/photo.php:368
1870
  #: modules/pricing-table/pricing-table.php:87
1871
  #: modules/rich-text/rich-text.php:26 modules/separator/separator.php:27
1872
+ #: modules/sidebar/sidebar.php:27 modules/slideshow/slideshow.php:257
1873
  #: modules/social-buttons/social-buttons.php:64
1874
  #: modules/subscribe-form/subscribe-form.php:86 modules/tabs/tabs.php:77
1875
  #: modules/testimonials/testimonials.php:30
1931
  msgid "Default Row Width"
1932
  msgstr "Ancho Predeterminado de Fila"
1933
 
 
 
 
 
 
 
1934
  #: includes/global-settings.php:70 includes/global-settings.php:84
1935
  #: includes/row-settings.php:20 includes/row-settings.php:38
1936
  #: modules/button/button.php:192 modules/callout/callout.php:585
1995
  msgid "All Libraries"
1996
  msgstr "Todas las Bibliotecas"
1997
 
1998
+ #: includes/js-config.php:18
1999
+ msgid "What would you like to do?"
2000
+ msgstr "¿Qué te gustaría hacer?"
 
 
 
 
 
2001
 
2002
+ #: includes/js-config.php:20
2003
+ msgid "Change Template"
2004
+ msgstr "Cambiar Plantilla"
2005
+
2006
+ #: includes/js-config.php:21
2007
+ msgid ""
2008
+ "Warning! Changing the template will replace your existing layout. Do you "
2009
+ "really want to do this?"
2010
+ msgstr ""
2011
+ "¡Advertencia! Cambiando la plantilla reemplazaras tu diseño actual. ¿Quieres "
2012
+ "hacer esto?"
2013
+
2014
+ #: includes/js-config.php:22
2015
+ msgid "Column"
2016
+ msgstr "Columna"
2017
+
2018
+ #: includes/js-config.php:24
2019
+ msgid ""
2020
+ "Please select either a background layout or content layout before submitting."
2021
+ msgstr ""
2022
+ "Por favor, selecciona un diseño de fondo o diseño de contenido antes de "
2023
+ "guardar."
2024
+
2025
+ #: includes/js-config.php:25
2026
+ msgid "Remove Account"
2027
+ msgstr "Eliminar Cuenta"
2028
+
2029
+ #: includes/js-config.php:26
2030
+ msgid ""
2031
+ "Are you sure you want to remove this account? Other modules that are "
2032
+ "connected to it will be affected."
2033
+ msgstr ""
2034
+ "¿Estás seguro que desesa eliminar esta cuenta? Se verán afectados los demás "
2035
+ "módulos que estén relacionados con este."
2036
+
2037
+ #: includes/js-config.php:27
2038
+ msgid "Do you really want to delete this item?"
2039
+ msgstr "¿Quieres eliminar este elemento?"
2040
+
2041
+ #: includes/js-config.php:28
2042
+ msgid ""
2043
+ "Do you really want to delete this module? All content data will be "
2044
+ "permanently deleted."
2045
+ msgstr ""
2046
+ "¿Quieres eliminar este módulo? Se eliminarán definitivamente todos los datos "
2047
+ "de contenido."
2048
+
2049
+ #: includes/js-config.php:29
2050
+ msgid ""
2051
+ "Do you really want to delete this row? All content data will be permanently "
2052
+ "deleted."
2053
+ msgstr ""
2054
+ "¿Quieres eliminar esta fila? Se eliminarán definitivamente todos los datos "
2055
+ "de contenido."
2056
+
2057
+ #: includes/js-config.php:31
2058
+ msgid "Discard Changes"
2059
+ msgstr "Descartar Cambios"
2060
+
2061
+ #: includes/js-config.php:32
2062
+ msgid ""
2063
+ "Do you really want to discard these changes? All of your changes that are "
2064
+ "not published will be lost."
2065
+ msgstr ""
2066
+ "¿Quieres descartar estos cambios? Todos los cambios que no se publiquen se "
2067
+ "perderán."
2068
+
2069
+ #: includes/js-config.php:33 includes/ui.php:20 includes/ui.php:55
2070
+ msgid "Done"
2071
+ msgstr "Hecho"
2072
+
2073
+ #: includes/js-config.php:34
2074
+ msgid "Save Draft"
2075
+ msgstr "Guardar Borrador"
2076
+
2077
+ #: includes/js-config.php:35
2078
+ msgctxt "Duplicate page/post action label."
2079
+ msgid "Duplicate"
2080
+ msgstr "Duplicar"
2081
+
2082
+ #: includes/js-config.php:36
2083
+ msgid "Duplicate This Page"
2084
+ msgstr "Duplicar Esta Página"
2085
+
2086
+ #: includes/js-config.php:37
2087
+ msgid "Duplicate This Template"
2088
+ msgstr "Duplicar Esta Plantilla"
2089
+
2090
+ #: includes/js-config.php:38
2091
+ msgid "Edit Global Settings"
2092
+ msgstr "Editar Configuración Global"
2093
+
2094
+ #: includes/js-config.php:39
2095
+ msgid "Drop a row layout or module to get started!"
2096
+ msgstr "¡Arrastra aquí un diseño de fila o un módulo para empezar!"
2097
+
2098
+ #: includes/js-config.php:40
2099
+ msgid ""
2100
+ "Beaver Builder caught the following JavaScript error. If Beaver Builder is "
2101
+ "not functioning as expected the cause is most likely this error. Please help "
2102
+ "us by disabling all plugins and testing Beaver Builder while reactivating "
2103
+ "each to determine if the issue is related to a third party plugin."
2104
+ msgstr ""
2105
+ "Beaver Builder ha encontrado el siguiente error JavaScript. Si Beaver "
2106
+ "Builder no está funcionando como es debido probablemente es a causa de este "
2107
+ "error. Por favor, ayúdanos desactivando todos los plugins y probando Beaver "
2108
+ "Builder mientras vas activándolos de nuevo para saber si el problema está "
2109
+ "relacionado con un plugin de terceros."
2110
+
2111
+ #: includes/js-config.php:41
2112
+ msgid "Full Size"
2113
+ msgstr "Tamaño Completo"
2114
+
2115
+ #: includes/js-config.php:42
2116
+ msgid "Get Help"
2117
+ msgstr "Obtener Ayuda"
2118
+
2119
+ #: includes/js-config.php:43
2120
+ msgid "Getting Started Video"
2121
+ msgstr "Video Primeros Pasos"
2122
+
2123
+ #: includes/js-config.php:44
2124
+ msgid "\"{message}\" on line {line} of {file}."
2125
+ msgstr "\"{message}\" en la línea {line} de {file}."
2126
+
2127
+ #: includes/js-config.php:45
2128
+ msgid "Insert"
2129
+ msgstr "Insertar"
2130
+
2131
+ #: includes/js-config.php:46
2132
+ msgid "Large"
2133
+ msgstr "Grande"
2134
+
2135
+ #: includes/js-config.php:47
2136
+ msgid "Manage Templates"
2137
+ msgstr "Gestionar Plantillas"
2138
+
2139
+ #: includes/js-config.php:48
2140
+ msgid "Medium"
2141
+ msgstr "Medio"
2142
+
2143
+ #: includes/js-config.php:49
2144
+ msgid "Module"
2145
+ msgstr "Módulo"
2146
+
2147
+ #: includes/js-config.php:50
2148
+ msgid "Move"
2149
+ msgstr "Mover"
2150
+
2151
+ #: includes/js-config.php:51
2152
+ msgid "New Column"
2153
+ msgstr "Nueva Columna"
2154
+
2155
+ #: includes/js-config.php:52
2156
+ msgid "New Row"
2157
+ msgstr "Nueva Fila"
2158
+
2159
+ #: includes/js-config.php:53
2160
+ msgid "No results found."
2161
+ msgstr "No hay resultados."
2162
+
2163
+ #: includes/js-config.php:54
2164
+ msgid "No Thanks"
2165
+ msgstr "No, Gracias"
2166
+
2167
+ #: includes/js-config.php:55
2168
+ msgid "OK"
2169
+ msgstr "OK"
2170
+
2171
+ #: includes/js-config.php:56 modules/photo/photo.php:454
2172
+ msgid "Photo Page"
2173
+ msgstr "Página de Foto"
2174
+
2175
+ #: includes/js-config.php:57
2176
+ msgid "Photo Selected"
2177
+ msgstr "Foto Seleccionada"
2178
+
2179
+ #: includes/js-config.php:58
2180
+ msgid "Photos Selected"
2181
+ msgstr "Fotos Seleccionadas"
2182
+
2183
+ #: includes/js-config.php:59 modules/subscribe-form/includes/frontend.php:15
2184
+ msgid "Please Wait..."
2185
+ msgstr "Por favor espere..."
2186
+
2187
+ #: includes/js-config.php:60
2188
+ msgid "Publish Changes"
2189
+ msgstr "Publicar Cambios"
2190
+
2191
+ #: includes/js-config.php:62
2192
+ msgid "Row"
2193
+ msgstr "Fila"
2194
+
2195
+ #: includes/js-config.php:63 includes/row-settings.php:6
2196
+ msgid "Row Settings"
2197
+ msgstr "Configuración de Fila"
2198
+
2199
+ #: includes/js-config.php:64
2200
+ msgid "Save Core Template"
2201
+ msgstr "Guardar Plantilla Base"
2202
+
2203
+ #: includes/js-config.php:65 includes/user-template-settings.php:4
2204
+ msgid "Save Template"
2205
+ msgstr "Guardar Plantilla"
2206
+
2207
+ #: includes/js-config.php:67
2208
+ msgid "Select Photos"
2209
+ msgstr "Seleccionar Fotos"
2210
+
2211
+ #: includes/js-config.php:70
2212
+ msgid "Please select an account before saving."
2213
+ msgstr "Por favor, selecciona una cuenta antes de guardar."
2214
+
2215
+ #: includes/js-config.php:71
2216
+ msgid "Please connect an account before saving."
2217
+ msgstr "Por favor, conecta con tu cuenta antes de guardar."
2218
+
2219
+ #: includes/js-config.php:72
2220
+ msgid "Please select a list before saving."
2221
+ msgstr "Por favor, selecciona una lista antes de guardar."
2222
+
2223
+ #: includes/js-config.php:73
2224
+ msgid "Take a Tour"
2225
+ msgstr "Empezar el Tour"
2226
+
2227
+ #: includes/js-config.php:74
2228
+ msgid "Append New Layout"
2229
+ msgstr "Adjuntar Diseño Nuevo"
2230
+
2231
+ #: includes/js-config.php:75
2232
+ msgid "Replace Existing Layout"
2233
+ msgstr "Reemplazar Diseño Existente"
2234
+
2235
+ #: includes/js-config.php:76
2236
+ msgid "Template Saved!"
2237
+ msgstr "¡Plantilla Guardada!"
2238
+
2239
+ #: includes/js-config.php:77
2240
+ msgid "Thumbnail"
2241
+ msgstr "Miniatura"
2242
+
2243
+ #: includes/js-config.php:78
2244
+ msgid "Next"
2245
+ msgstr "Siguiente"
2246
+
2247
+ #: includes/js-config.php:79
2248
+ msgid "Get Started"
2249
+ msgstr "Empezar"
2250
+
2251
+ #: includes/js-config.php:80
2252
+ msgid "Choose a Template"
2253
+ msgstr "Elegir una Plantilla"
2254
+
2255
+ #: includes/js-config.php:81
2256
+ msgid ""
2257
+ "Get started by choosing a layout template to customize, or build a page from "
2258
+ "scratch by selecting the blank layout template."
2259
+ msgstr ""
2260
+ "Empieza eligiendo una plantilla para personalizar, o crea desde de cero una "
2261
+ "página seleccionando la plantilla de diseño en blanco."
2262
+
2263
+ #: includes/js-config.php:82
2264
+ msgid "Add Rows"
2265
+ msgstr "Añadir filas"
2266
+
2267
+ #: includes/js-config.php:83
2268
+ msgid ""
2269
+ "Add multi-column rows, adjust spacing, add backgrounds and more by dragging "
2270
+ "and dropping row layouts onto the page."
2271
+ msgstr ""
2272
+ "Añadir filas multi-columna, ajustar espaciado, añadir fundos y más, "
2273
+ "arrastrando y soltando diseños de fila en la página."
2274
+
2275
+ #: includes/js-config.php:84 includes/ui.php:22 includes/ui.php:60
2276
+ msgid "Add Content"
2277
+ msgstr "Añadir Contenido"
2278
+
2279
+ #: includes/js-config.php:85
2280
+ msgid ""
2281
+ "Add new content by dragging and dropping modules or widgets into your row "
2282
+ "layouts or to create a new row layout."
2283
+ msgstr ""
2284
+ "Añade contenido nuevo arrastrando y soltando módulos o widgets en tu fila o "
2285
+ "bien para crear una nueva distribución de fila."
2286
+
2287
+ #: includes/js-config.php:86
2288
+ msgid "Edit Content"
2289
+ msgstr "Editar Contenido"
2290
+
2291
+ #: includes/js-config.php:87
2292
+ msgid ""
2293
+ "Move your mouse over rows, columns or modules to edit and interact with them."
2294
+ msgstr ""
2295
+ "Mueve el ratón sobre las filas, columnas o módulos para editar e interactuar "
2296
+ "con cada elemento."
2297
+
2298
+ #: includes/js-config.php:88
2299
+ msgid ""
2300
+ "Use the action buttons to perform actions such as moving, editing, "
2301
+ "duplicating or deleting rows, columns and modules."
2302
+ msgstr ""
2303
+ "Usa los botones de acción para realizar acciones como mover, editar, "
2304
+ "duplicar o borrar filas, columnas y módulos."
2305
+
2306
+ #: includes/js-config.php:89
2307
+ msgid "Add More Content"
2308
+ msgstr "Añadir Más Contenido"
2309
+
2310
+ #: includes/js-config.php:90
2311
+ msgid ""
2312
+ "Use the Add Content button to open the content panel and add new row "
2313
+ "layouts, modules or widgets."
2314
+ msgstr ""
2315
+ "Utiliza el botón Añadir Contenido para abrir el panel de contenido y añadir "
2316
+ "diseños, módulos o widgets."
2317
+
2318
+ #: includes/js-config.php:91
2319
+ msgid "Change Templates"
2320
+ msgstr "Cambiar Plantillas"
2321
+
2322
+ #: includes/js-config.php:92
2323
+ msgid ""
2324
+ "Use the Templates button to pick a new template or append one to your "
2325
+ "layout. Appending will insert a new template at the end of your existing "
2326
+ "page content."
2327
+ msgstr ""
2328
+ "Usa el botón de Plantillas para escoger una nueva plantilla o adjuntar una "
2329
+ "plantilla a tú diseño ya existente. Adjuntar insertará una nueva plantilla "
2330
+ "al final de tu diseño."
2331
+
2332
+ #: includes/js-config.php:93
2333
+ msgid "Helpful Tools"
2334
+ msgstr "Herramientas Útiles"
2335
+
2336
+ #: includes/js-config.php:94
2337
+ msgid ""
2338
+ "The Tools button lets you duplicate a page, save a template or edit the "
2339
+ "global settings."
2340
+ msgstr ""
2341
+ "El botón de herramientas te permite duplicar una página, guardar una "
2342
+ "plantilla o editar la configuración global."
2343
+
2344
+ #: includes/js-config.php:95
2345
+ msgid "Publish Your Changes"
2346
+ msgstr "Publicar Tus Cambios"
2347
+
2348
+ #: includes/js-config.php:96
2349
+ msgid ""
2350
+ "Once you're finished, click the Done button to publish your changes, save a "
2351
+ "draft or revert back to the last published state."
2352
+ msgstr ""
2353
+ "Una vez que hayas terminado, haz clic en el botón de publicar los cambios, "
2354
+ "guardar un borrador o revertir al último estado publicado."
2355
+
2356
+ #: includes/js-config.php:97
2357
+ msgid "Let's Get Building!"
2358
+ msgstr "Empezar a Diseñar!"
2359
+
2360
+ #: includes/js-config.php:98
2361
+ msgid ""
2362
+ "Now that you know the basics, you're ready to start building! If at any time "
2363
+ "you need help, click the help icon in the upper right corner to access the "
2364
+ "help menu. Happy building!"
2365
+ msgstr ""
2366
+ "Ahora que ya sabes lo básico, estás listo para empezar a diseñar! Si "
2367
+ "necesitas ayuda en cualquier momento, haz clic en el icono de ayuda en la "
2368
+ "esquina superior derecha para acceder al menú de ayuda. ¡Happy building!"
2369
+
2370
+ #: includes/js-config.php:99
2371
+ msgid ""
2372
+ "The settings you are currently editing will not be saved if you navigate "
2373
+ "away from this page."
2374
+ msgstr ""
2375
+ "Los cambios que has realizado se perderán si navegas fuera de esta página."
2376
+
2377
+ #: includes/js-config.php:100
2378
+ msgid "View the Knowledge Base"
2379
+ msgstr "Ver la Base de Conocimiento"
2380
+
2381
+ #: includes/js-config.php:101
2382
+ msgid "Visit the Forums"
2383
+ msgstr "Visitar los Foros"
2384
+
2385
+ #: includes/js-config.php:102
2386
+ msgid "Watch the Video"
2387
+ msgstr "Ver el Video"
2388
+
2389
+ #: includes/js-config.php:103
2390
+ msgid ""
2391
+ "Welcome! It looks like this might be your first time using the builder. "
2392
+ "Would you like to take a tour?"
2393
+ msgstr ""
2394
+ "¡Bienvenido! Parece que es la primera vez que utilizas este editor. ¿Te "
2395
+ "gustaría realizar un tour?"
2396
+
2397
+ #: includes/js-config.php:104
2398
+ msgid "Yes Please!"
2399
+ msgstr "Sí, por favor!"
2400
+
2401
+ #: includes/loop-settings.php:20
2402
+ msgid "Post Type"
2403
+ msgstr "Tipo de Entrada"
2404
 
2405
  #: includes/loop-settings.php:26
2406
  msgid "Order By"
2449
  msgstr "Ascendente"
2450
 
2451
  #: includes/loop-settings.php:52
2452
+ msgctxt "How many posts to skip."
2453
  msgid "Offset"
2454
+ msgstr "Offset"
2455
 
2456
  #: includes/loop-settings.php:55
2457
  msgid "Skip this many posts that match the specified criteria."
2517
  msgid "Slide Right"
2518
  msgstr "Deslizar desde la Derecha"
2519
 
2520
+ #: includes/module-settings.php:93
2521
+ msgctxt "Animation style."
2522
+ msgid "Slide Up"
2523
+ msgstr "Deslizar desde Arriba"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2524
 
2525
+ #: includes/module-settings.php:94
2526
+ msgctxt "Animation style."
2527
+ msgid "Slide Down"
2528
+ msgstr "Deslizar desde Abajo"
2529
 
2530
+ #: includes/module-settings.php:102
2531
+ #: modules/content-slider/content-slider.php:229
2532
+ #: modules/testimonials/testimonials.php:91
2533
+ msgid "Delay"
2534
+ msgstr "Retardo"
 
 
 
2535
 
2536
+ #: includes/module-settings.php:106 includes/row-settings.php:266
2537
+ #: includes/row-settings.php:297 modules/content-slider/content-slider.php:233
2538
+ #: modules/content-slider/content-slider.php:250
2539
+ #: modules/slideshow/slideshow.php:386 modules/slideshow/slideshow.php:411
2540
+ #: modules/slideshow/slideshow.php:582
2541
+ #: modules/testimonials/testimonials.php:95
2542
+ #: modules/testimonials/testimonials.php:112
2543
+ msgctxt "Value unit for form field of time in seconds. Such as: \"5 seconds\""
2544
+ msgid "seconds"
2545
+ msgstr "segundos"
2546
 
2547
+ #: includes/module-settings.php:107
2548
+ msgid "The amount of time in seconds before this animation starts."
2549
  msgstr ""
2550
+ "Especifica el tiempo de espera en segundos antes de que empiece la animación."
2551
 
2552
+ #: includes/module-settings.php:120
2553
+ msgid ""
2554
+ "A unique ID that will be applied to this module's HTML. Must start with a "
2555
+ "letter and only contain dashes, underscores, letters or numbers. No spaces."
2556
+ msgstr ""
2557
+ "Un único ID que se aplicará al HTML de este módulo. Debe empezar con una "
2558
+ "letra y sólo contener guiones, subrayados, letras o números. Sin espacios."
2559
 
2560
+ #: includes/module-settings.php:127 includes/row-settings.php:615
2561
+ msgid "Class"
2562
+ msgstr "Clase"
2563
 
2564
+ #: includes/module-settings.php:128
2565
  msgid ""
2566
+ "A class that will be applied to this module's HTML. Must start with a letter "
2567
+ "and only contain dashes, underscores, letters or numbers. Separate multiple "
2568
+ "classes with spaces."
 
2569
  msgstr ""
2570
+ "Una clase que se aplicará al HTML de este módulo. Debe empezar con una letra "
2571
+ "y sólo contener guiones, subrayados, letras o números. Separa varias clases "
2572
+ "con espacios."
 
 
 
 
 
 
2573
 
2574
+ #: includes/row-settings.php:16 modules/button/button.php:188
2575
+ #: modules/content-slider/content-slider.php:483
2576
+ msgid "Width"
2577
+ msgstr "Anchura"
2578
 
2579
+ #: includes/row-settings.php:27
2580
+ msgid ""
2581
+ "Full width rows span the width of the page from edge to edge. Fixed rows are "
2582
+ "no wider than the Row Max Width set in the Global Settings."
2583
+ msgstr ""
2584
+ "Las filas de anchura completa abarcan todo el ancho de la página de lado a "
2585
+ "lado. Las filas fijas no son mas anchas que la Anchura Máxima de la Fila "
2586
+ "establecida en la Configuración Global."
2587
 
2588
+ #: includes/row-settings.php:34
2589
+ msgid "Content Width"
2590
+ msgstr "Anchura del Contenido"
2591
 
2592
+ #: includes/row-settings.php:40
2593
  msgid ""
2594
+ "Full width content spans the width of the page from edge to edge. Fixed "
2595
+ "content is no wider than the Row Max Width set in the Global Settings."
2596
  msgstr ""
2597
+ "Los contenidos a anchura completa abarcan todo el ancho de la página de lado "
2598
+ "a lado. El contenido fijo no es más ancho que la Anchura Máxima de la Fila "
2599
+ "establecida en la Configuración Global."
2600
+
2601
+ #: includes/row-settings.php:71
2602
+ msgctxt "Background type."
2603
+ msgid "Video"
2604
+ msgstr "Vídeo"
2605
+
2606
+ #: includes/row-settings.php:73
2607
+ msgctxt "Background type."
2608
+ msgid "Slideshow"
2609
+ msgstr "Carrusel"
2610
+
2611
+ #: includes/row-settings.php:77
2612
+ msgctxt "Background type."
2613
+ msgid "Parallax"
2614
+ msgstr "Parallax"
2615
 
2616
  #: includes/row-settings.php:203
2617
  msgid "Background Video"
2643
  msgstr "Fondo Slideshow"
2644
 
2645
  #: includes/row-settings.php:228 modules/gallery/gallery.php:234
2646
+ #: modules/slideshow/slideshow.php:264
2647
  msgid "Source"
2648
  msgstr "Fuente"
2649
 
2650
  #: includes/row-settings.php:231 modules/gallery/gallery.php:237
2651
+ #: modules/photo/photo.php:378 modules/slideshow/slideshow.php:267
2652
  #: modules/video/video.php:86
2653
  msgid "Media Library"
2654
  msgstr "Librería Multimedia"
2655
 
2656
  #: includes/row-settings.php:234 modules/gallery/gallery.php:240
2657
+ #: modules/slideshow/slideshow.php:270
2658
  msgid ""
2659
  "Pull images from the WordPress media library or a gallery on your SmugMug "
2660
  "site by inserting the RSS feed URL from SmugMug. The RSS feed URL can be "
2665
  "acceder desde la función obtener enlace en tu galería SmugMug."
2666
 
2667
  #: includes/row-settings.php:249 modules/gallery/gallery.php:252
2668
+ #: modules/slideshow/slideshow.php:282
2669
  msgid "Photos"
2670
  msgstr "Fotos"
2671
 
2672
  #: includes/row-settings.php:256 modules/gallery/gallery.php:256
2673
+ #: modules/slideshow/slideshow.php:286
2674
  msgid "Feed URL"
2675
  msgstr "Feed URL"
2676
 
2677
  #: includes/row-settings.php:263 includes/row-settings.php:328
2678
+ #: modules/slideshow/slideshow.php:383
2679
  msgid "Speed"
2680
  msgstr "Velocidad"
2681
 
2682
  #: includes/row-settings.php:273 modules/content-slider/content-slider.php:237
2683
+ #: modules/slideshow/slideshow.php:390
2684
  #: modules/testimonials/testimonials.php:99
2685
  msgid "Transition"
2686
  msgstr "Transición"
2691
  msgstr "Ninguna"
2692
 
2693
  #: includes/row-settings.php:277 modules/content-slider/content-slider.php:241
2694
+ #: modules/slideshow/slideshow.php:394
2695
  #: modules/testimonials/testimonials.php:103
2696
  msgid "Fade"
2697
  msgstr "Fundido"
2698
 
2699
+ #: includes/row-settings.php:278 modules/slideshow/slideshow.php:395
2700
  msgid "Ken Burns"
2701
  msgstr "Ken Burns"
2702
 
2703
+ #: includes/row-settings.php:279 modules/slideshow/slideshow.php:396
2704
  msgid "Slide Horizontal"
2705
  msgstr "Deslizar Horizontalmente"
2706
 
2707
+ #: includes/row-settings.php:280 modules/slideshow/slideshow.php:397
2708
  msgid "Slide Vertical"
2709
  msgstr "Deslizar Verticalmente"
2710
 
2711
+ #: includes/row-settings.php:281 modules/slideshow/slideshow.php:398
2712
  msgid "Blinds"
2713
  msgstr "Persianas"
2714
 
2715
+ #: includes/row-settings.php:282 modules/slideshow/slideshow.php:399
2716
  msgid "Bars"
2717
  msgstr "Barras"
2718
 
2719
+ #: includes/row-settings.php:283 modules/slideshow/slideshow.php:400
2720
  msgid "Random Bars"
2721
  msgstr "Barras al azar"
2722
 
2723
+ #: includes/row-settings.php:284 modules/slideshow/slideshow.php:401
2724
  msgid "Boxes"
2725
  msgstr "Cajas"
2726
 
2727
+ #: includes/row-settings.php:285 modules/slideshow/slideshow.php:402
2728
  msgid "Random Boxes"
2729
  msgstr "Cajas al azar"
2730
 
2731
+ #: includes/row-settings.php:286 modules/slideshow/slideshow.php:403
2732
  msgid "Boxes Grow"
2733
  msgstr "Cajas Expandiéndose"
2734
 
2735
  #: includes/row-settings.php:294 modules/content-slider/content-slider.php:246
2736
+ #: modules/slideshow/slideshow.php:408
2737
  #: modules/testimonials/testimonials.php:108
2738
  msgid "Transition Speed"
2739
  msgstr "Velocidad de Transición"
2740
 
2741
+ #: includes/row-settings.php:304 modules/slideshow/slideshow.php:415
2742
  msgid "Randomize Photos"
2743
  msgstr "Fotos Aleatorias"
2744
 
2803
  msgid "Save"
2804
  msgstr "Guardar"
2805
 
2806
+ #: includes/template-selector.php:4
2807
  msgid "Layout Templates"
2808
  msgstr "Plantillas de Diseño"
2809
 
2810
+ #: includes/template-selector.php:17
 
 
 
 
 
 
 
 
2811
  msgid "Your Templates"
2812
  msgstr "Tus Plantillas"
2813
 
2814
+ #: includes/template-selector.php:53
 
 
 
 
 
2815
  msgid ""
2816
  "You haven't saved any templates yet! To do so, create a layout and save it "
2817
  "as a template under <strong>Tools &rarr; Save Template</strong>."
2819
  "¡No has guardado ninguna plantilla todavía! Crea un diseño y guárdalo como "
2820
  "plantilla desde <strong>Herramientas &rarr; Guardar Plantilla</strong>."
2821
 
2822
+ #: includes/template-selector.php:58
2823
+ msgctxt "Template name."
2824
+ msgid "Blank"
2825
+ msgstr "En Blanco"
2826
+
2827
  #: includes/template-settings.php:14 includes/user-template-settings.php:15
2828
  msgctxt "Template name."
2829
  msgid "Name"
2841
  "El nombre del archivo de imagen \"thumb.jpg\" se encuentra en el directorio "
2842
  "\"img/templates/\"."
2843
 
2844
+ #: includes/ui.php:8 includes/ui.php:13
2845
  #, php-format
2846
  msgid "Template: %s"
2847
  msgstr "Plantilla: %s"
2848
 
2849
+ #: includes/ui.php:21 includes/ui.php:56
2850
+ msgid "Tools"
2851
+ msgstr "Herramientas"
2852
 
2853
+ #: includes/ui.php:34
2854
  msgid "Page Builder Demo"
2855
  msgstr "Page Builder Demo"
2856
 
2857
+ #: includes/ui.php:51
2858
  msgid "Buy Now!"
2859
  msgstr "Comprar Ahora!"
2860
 
2861
+ #: includes/ui.php:53
2862
  msgid "Upgrade!"
2863
  msgstr "Actualizar!"
2864
 
2865
+ #: includes/ui.php:78
 
 
 
 
 
 
 
 
 
 
 
 
2866
  msgid "Row Layouts"
2867
  msgstr "Distribución de la Fila"
2868
 
2869
+ #: includes/ui.php:82
2870
  msgid "1 Column"
2871
  msgstr "1 Columna"
2872
 
2873
+ #: includes/ui.php:83
2874
  msgid "2 Columns"
2875
  msgstr "2 Columnas"
2876
 
2877
+ #: includes/ui.php:84
2878
  msgid "3 Columns"
2879
  msgstr "3 Columnas"
2880
 
2881
+ #: includes/ui.php:85
2882
  msgid "4 Columns"
2883
  msgstr "4 Columnas"
2884
 
2885
+ #: includes/ui.php:86
2886
  msgid "5 Columns"
2887
  msgstr "5 Columnas"
2888
 
2889
+ #: includes/ui.php:87
2890
  msgid "6 Columns"
2891
  msgstr "6 Columnas"
2892
 
2893
+ #: includes/ui.php:88
2894
  msgid "Left Sidebar"
2895
  msgstr "Barra Lateral Izquierda"
2896
 
2897
+ #: includes/ui.php:89
2898
  msgid "Right Sidebar"
2899
  msgstr "Barra Lateral Derecha"
2900
 
2901
+ #: includes/ui.php:90
2902
  msgid "Left &amp; Right Sidebar"
2903
  msgstr "Izquierda & Barra Lateral Derecha"
2904
 
2905
+ #: includes/updater/classes/class-fl-updater.php:132
2906
  msgid "<strong>UPDATE UNAVAILABLE!</strong>"
2907
  msgstr "<strong>¡ACTUALIZACIÓN NO DISPONIBLE!</strong>"
2908
 
2909
+ #: includes/updater/classes/class-fl-updater.php:134
2910
  msgid "Please subscribe to enable automatic updates for this plugin."
2911
  msgstr ""
2912
  "Suscríbete para habilitar las actualizaciones automáticas de este plugin."
2913
 
2914
+ #: includes/updater/classes/class-fl-updater.php:136
2915
  #: includes/updater/includes/form.php:6
2916
  msgid "Subscribe Now"
2917
  msgstr "Suscribirse ahora"
2947
  "Introduce tu <a%s>clave de licencia</a> para activar actualizaciones remotas "
2948
  "y soporte."
2949
 
2950
+ #: includes/updater/includes/form.php:39
2951
+ msgid "Save Subscription Settings"
2952
+ msgstr "Guardar la Configuración de Suscripción"
2953
+
2954
  #: includes/user-template-settings.php:8
2955
  msgid ""
2956
  "Save the current layout as a template that can be reused under "
3058
  #: modules/content-slider/content-slider.php:600 modules/cta/cta.php:240
3059
  #: modules/heading/heading.php:43 modules/heading/heading.php:47
3060
  #: modules/icon-group/icon-group.php:139 modules/icon/icon.php:43
3061
+ #: modules/slideshow/slideshow.php:344
3062
  msgid "Link"
3063
  msgstr "Enlace"
3064
 
3242
  msgstr "Ninguna"
3243
 
3244
  #: modules/callout/callout.php:340 modules/photo/photo.php:401
3245
+ #: modules/slideshow/slideshow.php:313
3246
  msgid "Crop"
3247
  msgstr "Recortar / Crop"
3248
 
3405
  #: modules/post-grid/post-grid.php:116 modules/post-grid/post-grid.php:149
3406
  #: modules/post-grid/post-grid.php:158 modules/post-grid/post-grid.php:188
3407
  #: modules/post-grid/post-grid.php:202 modules/post-grid/post-grid.php:220
3408
+ #: modules/subscribe-form/subscribe-form.php:110
3409
  msgid "Show"
3410
  msgstr "Mostrar"
3411
 
3416
  #: modules/post-grid/post-grid.php:117 modules/post-grid/post-grid.php:150
3417
  #: modules/post-grid/post-grid.php:159 modules/post-grid/post-grid.php:189
3418
  #: modules/post-grid/post-grid.php:203 modules/post-grid/post-grid.php:221
3419
+ #: modules/subscribe-form/subscribe-form.php:111
3420
  msgid "Hide"
3421
  msgstr "Ocultar"
3422
 
3442
  msgid "Please enter your name."
3443
  msgstr "Por favor introduzca su nombre."
3444
 
3445
+ #: modules/contact-form/includes/frontend.php:7
3446
+ msgid "Your name"
3447
+ msgstr "Su nombre"
3448
+
3449
  #: modules/contact-form/includes/frontend.php:13
3450
+ #: modules/contact-form/includes/frontend.php:15
3451
  msgid "Subject"
3452
  msgstr "Asunto"
3453
 
3463
  msgid "Please enter a valid email."
3464
  msgstr "Introduzca un correo electrónico válido."
3465
 
3466
+ #: modules/contact-form/includes/frontend.php:23
3467
+ msgid "Your email"
3468
+ msgstr "Su correo electrónico"
3469
+
3470
  #: modules/contact-form/includes/frontend.php:29
3471
  msgid "Phone"
3472
+ msgstr "Teléfono"
3473
 
3474
  #: modules/contact-form/includes/frontend.php:30
3475
  msgid "Please enter a valid phone number."
3476
  msgstr "Por favor, introduce un teléfono válido."
3477
 
3478
+ #: modules/contact-form/includes/frontend.php:31
3479
+ msgid "Your phone"
3480
+ msgstr "Teléfono"
3481
+
3482
  #: modules/contact-form/includes/frontend.php:36
3483
  msgid "Your Message"
3484
  msgstr "Mensaje"
3487
  msgid "Please enter a message."
3488
  msgstr "Por favor escriba su mensaje."
3489
 
3490
+ #: modules/contact-form/includes/frontend.php:38
3491
+ msgid "Your message"
3492
+ msgstr "Su mensaje"
3493
+
3494
+ #: modules/contact-form/includes/frontend.php:43
3495
+ msgid "Send"
3496
+ msgstr "Enviar"
3497
+
3498
  #: modules/contact-form/includes/frontend.php:44
3499
  msgid "Message Sent!"
3500
  msgstr "Mensaje Enviado!"
3514
  "acción."
3515
 
3516
  #: modules/content-slider/content-slider.php:197 modules/map/map.php:41
3517
+ #: modules/separator/separator.php:58 modules/slideshow/slideshow.php:295
3518
  msgid "Height"
3519
  msgstr "Altura"
3520
 
3527
  "expandirá a esta altura de forma automática."
3528
 
3529
  #: modules/content-slider/content-slider.php:206
3530
+ #: modules/slideshow/slideshow.php:374
3531
  #: modules/testimonials/testimonials.php:82 modules/video/video.php:108
3532
  msgid "Auto Play"
3533
  msgstr "Reproducción Automática"
3762
  msgid "Layout"
3763
  msgstr "Diseño"
3764
 
3765
+ #: modules/cta/cta.php:111 modules/subscribe-form/subscribe-form.php:102
3766
  msgid "Inline"
3767
  msgstr "En línea"
3768
 
3769
+ #: modules/cta/cta.php:112 modules/subscribe-form/subscribe-form.php:101
3770
  msgid "Stacked"
3771
  msgstr "Apilado"
3772
 
3844
  "biblioteca de medios para cada imagen. El titulo también se toma "
3845
  "directamente de SmugMug si tienes títulos en tu galería."
3846
 
3847
+ #: modules/gallery/gallery.php:289 modules/slideshow/slideshow.php:336
3848
  msgid "Click Action"
3849
  msgstr "Acción del Clic"
3850
 
3967
  msgid "Photo File"
3968
  msgstr "Foto Archivo"
3969
 
 
 
 
 
3970
  #: modules/photo/photo.php:464
3971
  msgid ""
3972
  "Link type applies to how the image should be linked on click. You can choose "
3976
  "clic. Puede elegir una dirección URL específica, la foto individual o una "
3977
  "página separada con la foto."
3978
 
3979
+ #: modules/photo/photo.php:471 modules/slideshow/slideshow.php:357
3980
  msgid "Link URL"
3981
  msgstr "Enlace URL"
3982
 
4242
  msgid "Display multiple photos in a slideshow view."
4243
  msgstr "Mostrar varias fotos en una vista de presentación ."
4244
 
4245
+ #: modules/slideshow/slideshow.php:303
4246
  msgid "Skin Color"
4247
  msgstr "Color del Diseño"
4248
 
4249
+ #: modules/slideshow/slideshow.php:306
4250
  msgctxt "Color."
4251
  msgid "Light"
4252
  msgstr "Claro"
4253
 
4254
+ #: modules/slideshow/slideshow.php:307
4255
  msgctxt "Color."
4256
  msgid "Dark"
4257
  msgstr "Oscuro"
4258
 
4259
+ #: modules/slideshow/slideshow.php:309
4260
  msgid ""
4261
  "If your overall theme/images are lighter in color, light will display "
4262
  "buttons in a darker color scheme and vice versa for dark."
4264
  "Si tu tema o imágenes tienen un color claro, la opción claro mostrará los "
4265
  "botones en un esquema de color oscuro y lo contrario con la opción oscuro."
4266
 
4267
+ #: modules/slideshow/slideshow.php:319
4268
  msgid ""
4269
  "Crop set to no will fit the slideshow images to the height you specify and "
4270
  "keep the width proportional, whereas crop set to yes will fit the slideshow "
4276
  "ajustará las imágenes a todos los lados del área de contenido, cortando a "
4277
  "izquierda y derecha para adecuarlas a la altura que has especificado."
4278
 
4279
+ #: modules/slideshow/slideshow.php:323
4280
  msgid "Disable Right-Click"
4281
  msgstr "Desactivar Clic Derecho"
4282
 
4283
+ #: modules/slideshow/slideshow.php:343
4284
  msgctxt "Click action type."
4285
  msgid "None"
4286
  msgstr "Ninguno"
4287
 
4288
+ #: modules/slideshow/slideshow.php:367
4289
  msgid "Playback"
4290
  msgstr "Reproducción"
4291
 
4292
+ #: modules/slideshow/slideshow.php:393
4293
  msgctxt "Slideshow transition."
4294
  msgid "None"
4295
  msgstr "Ninguno"
4296
 
4297
+ #: modules/slideshow/slideshow.php:430
4298
  msgid "Controls"
4299
  msgstr "Controles"
4300
 
4301
+ #: modules/slideshow/slideshow.php:437 modules/slideshow/slideshow.php:486
4302
  msgid "Navigation Arrows"
4303
  msgstr "Flechas de Navegación"
4304
 
4305
+ #: modules/slideshow/slideshow.php:443
4306
  msgid ""
4307
  "Navigational arrows allow the visitor to freely move through the images in "
4308
  "your slideshow. These are larger arrows that overlay your slideshow images "
4313
  "superpuestas a las imágenes y están separados de las flechas de control de "
4314
  "navegación."
4315
 
4316
+ #: modules/slideshow/slideshow.php:448
4317
  msgid "Control Bar"
4318
  msgstr "Barra de Control"
4319
 
4320
+ #: modules/slideshow/slideshow.php:452
4321
  msgid "Nav Type"
4322
  msgstr "Tipo de Navegación"
4323
 
4324
+ #: modules/slideshow/slideshow.php:455
4325
  msgctxt "Nav type."
4326
  msgid "None"
4327
  msgstr "Ninguno"
4328
 
4329
+ #: modules/slideshow/slideshow.php:456
4330
  msgid "Buttons"
4331
  msgstr "Botones"
4332
 
4333
+ #: modules/slideshow/slideshow.php:457 modules/slideshow/slideshow.php:587
4334
  msgid "Thumbs"
4335
  msgstr "Miniaturas"
4336
 
4337
+ #: modules/slideshow/slideshow.php:472
4338
  msgid "Nav Position"
4339
  msgstr "Posición Navegación"
4340
 
4341
+ #: modules/slideshow/slideshow.php:482
4342
  msgid "Control Bar Buttons"
4343
  msgstr "Botones Barra de Control"
4344
 
4345
+ #: modules/slideshow/slideshow.php:495
4346
  msgid "Play Button"
4347
  msgstr "Botón Play"
4348
 
4349
+ #: modules/slideshow/slideshow.php:504
4350
  msgid "Fullscreen Button"
4351
  msgstr "Botón Pantalla Completa"
4352
 
4353
+ #: modules/slideshow/slideshow.php:513
4354
  msgid "Photo Count"
4355
  msgstr "Contador de Fotos"
4356
 
4357
+ #: modules/slideshow/slideshow.php:522
4358
  msgid "Thumbs Button"
4359
  msgstr "Botón Miniaturas"
4360
 
4361
+ #: modules/slideshow/slideshow.php:531
4362
  msgid "Caption Button"
4363
  msgstr "Botón Caption"
4364
 
4365
+ #: modules/slideshow/slideshow.php:540
4366
  msgid "Social Button"
4367
  msgstr "Botón Social"
4368
 
4369
+ #: modules/slideshow/slideshow.php:550
4370
  msgid "Control Bar Overlay"
4371
  msgstr "Barra de Control de Superposición"
4372
 
4373
+ #: modules/slideshow/slideshow.php:554
4374
  msgid "Overlay Enabled"
4375
  msgstr "Superposición Habilitada"
4376
 
4377
+ #: modules/slideshow/slideshow.php:565
4378
  msgid ""
4379
  "Control bar overlay specifies if the control bar buttons you choose overlay "
4380
  "your slideshow images or site below the slideshow completely."
4383
  "de control han de estar superpuestos a la imagen o si han de aparecer por "
4384
  "debajo de la presentación de las imágenes."
4385
 
4386
+ #: modules/slideshow/slideshow.php:569
4387
  msgid "Overlay Hide"
4388
  msgstr "Ocultar Superposición"
4389
 
4390
+ #: modules/slideshow/slideshow.php:575
4391
  msgid ""
4392
  "Overlay hide will hide the control bar after however many seconds you "
4393
  "specify below. They will reappear upon mouse over."
4395
  "Superponer ocultará la barra de control tras los segundos que hayas "
4396
  "especificado aquí abajo. Volverá a aparecer el pasar el ratón por encima."
4397
 
4398
+ #: modules/slideshow/slideshow.php:579
4399
  msgid "Overlay Hide Delay"
4400
  msgstr "Retardo Ocultar Superposición"
4401
 
4402
+ #: modules/slideshow/slideshow.php:591
4403
  msgid "Thumbs Size"
4404
  msgstr "Tamaño de las Miniaturas"
4405
 
4406
+ #: modules/slideshow/slideshow.php:600
4407
  msgid "Social"
4408
  msgstr "Social"
4409
 
4410
+ #: modules/slideshow/slideshow.php:604
4411
  msgid "Facebook Button"
4412
  msgstr "Botón de Facebook"
4413
 
4414
+ #: modules/slideshow/slideshow.php:616
4415
  msgid "Twitter Button"
4416
  msgstr "Botón de Twitter"
4417
 
4418
+ #: modules/slideshow/slideshow.php:628
4419
  msgid "Google Plus Button"
4420
  msgstr "Botón de Google Plus"
4421
 
4422
+ #: modules/slideshow/slideshow.php:640
4423
  msgid "Pinterest Button"
4424
  msgstr "Botón Pinterest"
4425
 
4780
  msgid "Sort Direction"
4781
  msgstr "Dirección para ordenar"
4782
 
4783
+ #~ msgctxt "Custom post type label."
4784
+ #~ msgid "Layout Templates"
4785
+ #~ msgstr "Plantillas de diseño"
 
 
 
 
 
 
 
 
 
4786
 
4787
+ #~ msgctxt "Custom post type label."
4788
+ #~ msgid "Layout Template"
4789
+ #~ msgstr "Plantilla de diseño"
4790
 
4791
+ #~ msgctxt "Custom post type label."
4792
+ #~ msgid "Add New Layout Template"
4793
+ #~ msgstr "Añadir Nueva Plantilla de Diseño"
4794
 
4795
+ #~ msgctxt "Custom post type label."
4796
+ #~ msgid "New Layout Template"
4797
+ #~ msgstr "Nueva Plantilla de Diseño"
4798
 
4799
+ #~ msgctxt "Custom post type label."
4800
+ #~ msgid "Edit Layout Template"
4801
+ #~ msgstr "Editar Plantilla de Diseño"
4802
 
4803
+ #~ msgctxt "Custom post type label."
4804
+ #~ msgid "View Layout Template"
4805
+ #~ msgstr "Ver Plantilla de Diseño"
4806
 
4807
+ #~ msgctxt "Custom post type label."
4808
+ #~ msgid "All Layout Templates"
4809
+ #~ msgstr "Todas las Plantillas de Diseño"
 
 
 
 
 
 
 
 
 
4810
 
4811
+ #~ msgctxt "Custom post type label."
4812
+ #~ msgid "Search Layout Templates"
4813
+ #~ msgstr "Buscar Plantillas de Diseño"
4814
 
4815
+ #~ msgctxt "Custom post type label."
4816
+ #~ msgid "Parent Layout Templates:"
4817
+ #~ msgstr "Plantilla de Diseño Maestra"
 
 
 
 
 
 
 
 
 
 
 
 
4818
 
4819
+ #~ msgctxt "Custom post type label."
4820
+ #~ msgid "No layout templates found."
4821
+ #~ msgstr "No se han encontrado plantillas de diseño."
4822
 
4823
+ #~ msgctxt "Custom post type label."
4824
+ #~ msgid "No layout templates found in Trash."
4825
+ #~ msgstr "No se han encontrado plantillas de diseño en la Papelera."
 
 
 
4826
 
4827
+ #~ msgctxt "%s stands for custom branded \"Page Builder\" name."
4828
+ #~ msgid "%s is currently active for this page."
4829
+ #~ msgstr "%s está activado para esta página."
4830
 
4831
+ #~ msgctxt "%s stands for custom branded \"Page Builder\" name."
4832
  #~ msgid ""
4833
+ #~ "Switching to Text Editor mode will disable your %s layout until it is "
4834
+ #~ "enabled again. Any edits made while in Text Editor mode will not be made "
4835
+ #~ "on your %s layout. Do you want to continue?"
4836
  #~ msgstr ""
4837
+ #~ "Cambiar al modo de Editor de texto desactivará diseño de %s hasta que "
4838
+ #~ "se haya habilitado nuevamente. Cualquier modificación realizada en el "
4839
+ #~ "Editor de texto no aparecerá en el diseño de %s. ¿Quieres continuar?"
4840
 
4841
+ #~ msgid "Enable or disable templates using the options below."
 
 
4842
  #~ msgstr ""
4843
+ #~ "Habilitar o deshabilitar las plantillas utilizando las siguientes "
4844
+ #~ "opciones."
4845
 
4846
  #~ msgid "Discard Draft"
4847
  #~ msgstr "Descartar Borrador"
4853
  #~ "¿Quieres descartar este boceto? Todos los cambios que se no se publiquen "
4854
  #~ "se perderán."
4855
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4856
  #~ msgid ""
4857
+ #~ "Repeat applies to how the image should display in the row background. "
4858
+ #~ "Choosing none will display the image as uploaded. Tile will repeat the "
4859
+ #~ "image as many times as needed to fill the row horizontally and "
4860
+ #~ "vertically. You can also specify the image to only repeat horizontally or "
4861
+ #~ "vertically."
4862
  #~ msgstr ""
4863
+ #~ "Repetir se aplica a cómo se debería mostrar la imagen en el fondo de la "
4864
+ #~ "fila. Elegir ninguno mostrará la imagen tal y como se ha subido. Mosaico "
4865
+ #~ "repetirá la imagen tantas veces como sea necesario para completar la fila "
4866
+ #~ "horizontal y verticalmente. También puedes especificar que la imagen sólo "
4867
+ #~ "se repita horizontalmente o verticalmente."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4868
 
4869
+ #~ msgid ""
4870
+ #~ "Position will tell the image where it should sit in the row background."
4871
+ #~ msgstr ""
4872
+ #~ "Posición marca el lugar donde la imagen aparecerá en el fondo de la fila."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4873
 
4874
+ #~ msgid ""
4875
+ #~ "Attachment will specify how the image reacts when scrolling a page. When "
4876
+ #~ "scrolling is selected, the image will scroll with page scrolling. This is "
4877
+ #~ "the default setting. Fixed will allow the image to scroll within the row "
4878
+ #~ "background if fill is selected in the scale setting."
4879
+ #~ msgstr ""
4880
+ #~ "Adjunto especifica como se comporta la imagen cuando se hace scroll en la "
4881
+ #~ "página. Cuando se selecciona scroll, la imagen se desplazará con al "
4882
+ #~ "desplazarse en la página. Esta es la opción por defecto. Fijo permitirá "
4883
+ #~ "que la imagen se mueva con el fondo de la fila, si se ha seleccionado "
4884
+ #~ "relleno en el ajuste de escala."
4885
 
4886
  #~ msgid ""
4887
+ #~ "Scale applies to how the image should display in the row background. You "
4888
+ #~ "can select either fill or fit to the row background."
4889
  #~ msgstr ""
4890
+ #~ "La escala se aplica a cómo debería mostrar la imagen de fondo en la fila. "
4891
+ #~ "Puedes seleccionar cualquier relleno o ajuste para fondo."
4892
+
4893
+ #~ msgid "List"
4894
+ #~ msgstr "Lista"
4895
 
4896
+ #~ msgid "Client"
4897
+ #~ msgstr "Cliente"
4898
+
4899
+ #~ msgid "Offset"
4900
+ #~ msgstr "Desplazamiento"
4901
 
4902
  #~ msgid ""
4903
  #~ "Add mulit-column rows, adjust spacing, add backgrounds and more by "
4907
  #~ "arrastrando y soltando elementos desde las distribuciones de fila hasta "
4908
  #~ "tu página."
4909
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4910
  #~ msgid ""
4911
  #~ "Use the action buttons to perform actions such as moving, editing, "
4912
  #~ "duplicating, accessing individual column settings or deleting rows, "
4916
  #~ "configuración de columnas de forma individual o eliminar filas, columnas "
4917
  #~ "o módulos."
4918
 
 
 
 
4919
  #~ msgid ""
4920
  #~ "Use the Add Content button to open the content panel and add new row "
4921
  #~ "layouts or content."
4923
  #~ "Usa el botón Añadir Contenido para abrir el panel contenido y agregar "
4924
  #~ "nuevas distribuciones de fila o contenidos."
4925
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4926
  #~ msgid "Price: Low to High"
4927
  #~ msgstr "Precio: de Menor a Mayor"
4928
 
languages/fr_FR.mo CHANGED
Binary file
languages/fr_FR.po CHANGED
@@ -1,15 +1,16 @@
1
  msgid ""
2
  msgstr ""
3
  "Project-Id-Version: {FL_BUILDER_NAME}\n"
4
- "POT-Creation-Date: 2015-03-01 14:02-0800\n"
5
- "PO-Revision-Date: 2015-03-03 19:21-0500\n"
6
- "Last-Translator: Gérard Godin <Gerard@getgointernetcoaching.com>\n"
 
7
  "Language-Team: \n"
8
  "Language: en_US\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
- "X-Generator: Poedit 1.7.4\n"
13
  "X-Poedit-Basepath: ..\n"
14
  "X-Poedit-SourceCharset: UTF-8\n"
15
  "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;"
@@ -18,89 +19,95 @@ msgstr ""
18
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
19
  "X-Poedit-SearchPath-0: .\n"
20
 
21
- #: classes/class-fl-builder-admin-settings.php:93
22
  #: includes/global-settings.php:4
23
  #, php-format
24
  msgctxt "%s stands for custom branded \"Page Builder\" name."
25
  msgid "%s Settings"
26
  msgstr "Paramètres pour %s"
27
 
28
- #: classes/class-fl-builder-admin-settings.php:107
29
  msgid "Settings updated!"
30
  msgstr "Paramètres mis à jour!"
31
 
32
- #: classes/class-fl-builder-admin-settings.php:118
33
  msgid "License"
34
  msgstr "Licence"
35
 
36
- #: classes/class-fl-builder-admin-settings.php:122
37
  #: includes/admin-settings-upgrade.php:3
38
  msgid "Upgrade"
39
  msgstr "Mise à niveau"
40
 
41
- #: classes/class-fl-builder-admin-settings.php:126
42
  #: includes/global-settings.php:90
43
  msgid "Modules"
44
  msgstr "Modules"
45
 
46
- #: classes/class-fl-builder-admin-settings.php:130 includes/ui.php:47
47
  msgid "Templates"
48
  msgstr "Gabarit"
49
 
50
- #: classes/class-fl-builder-admin-settings.php:134
51
  #: includes/admin-settings-post-types.php:3
52
  msgid "Post Types"
53
  msgstr "Post Types"
54
 
55
- #: classes/class-fl-builder-admin-settings.php:138
56
  #: modules/icon-group/icon-group.php:27
57
  msgid "Icons"
58
  msgstr "Icônes"
59
 
60
- #: classes/class-fl-builder-admin-settings.php:142
61
  msgid "Editing"
62
  msgstr "Édition"
63
 
64
- #: classes/class-fl-builder-admin-settings.php:146
65
  #: includes/admin-settings-branding.php:3
66
  msgid "Branding"
67
  msgstr "Branding (Image de marque)"
68
 
69
- #: classes/class-fl-builder-admin-settings.php:150
70
  msgid "Help Button"
71
  msgstr "Bouton d'aide"
72
 
73
- #: classes/class-fl-builder-admin-settings.php:154
 
 
 
 
 
 
74
  #: includes/admin-settings-uninstall.php:3
75
  #: includes/admin-settings-uninstall.php:15
76
  msgid "Uninstall"
77
  msgstr "Désinstaller"
78
 
79
- #: classes/class-fl-builder-admin-settings.php:376
80
  msgid "Error! You must have at least one icon set enabled."
81
  msgstr "Erreur! Vous devez avoir au moins un ensemble d'icônes actif."
82
 
83
- #: classes/class-fl-builder-admin-settings.php:418
84
  msgid "Error! Could not unzip file."
85
  msgstr "Erreur! Incapable de décompresser le fichier."
86
 
87
- #: classes/class-fl-builder-admin-settings.php:452
88
  msgid "Error! Please upload an icon set from either Icomoon or Fontello."
89
  msgstr ""
90
  "Erreur! Téléchargez un ensemble d'icônes à partir de Icomoon ou Fontello."
91
 
92
- #: classes/class-fl-builder-admin-settings.php:566
93
  msgid "Error! Please enter an iframe for the video embed code."
94
  msgstr ""
95
  "Erreur! Entrez un &laquo; iframe &raquo; pour le code d'encastrage du vidéo"
96
 
97
- #: classes/class-fl-builder-admin-settings.php:584
98
  msgid "Error! You must have at least one feature of the help button enabled."
99
  msgstr ""
100
  "Erreur! Vous devez avoir au moins une des caractéristiques du bouton d'aide "
101
  "active."
102
 
103
- #: classes/class-fl-builder-admin.php:40
104
  #, php-format
105
  msgid ""
106
  "This version of the <strong>Page Builder</strong> plugin is not compatible "
@@ -111,7 +118,7 @@ msgstr ""
111
  "compatible avec WordPress Multisite. <a%s>S'il vous plaît, mettez à niveau</"
112
  "a> vers la version multisite de l'extension."
113
 
114
- #: classes/class-fl-builder-admin.php:50
115
  msgid ""
116
  "The <strong>Page Builder</strong> plugin requires WordPress version 3.5 or "
117
  "greater. Please update WordPress before activating the plugin."
@@ -119,24 +126,24 @@ msgstr ""
119
  "<strong>Beaver Builder</strong> requiert WordPress version 3.5 ou plus. "
120
  "Mettez à niveau votre version de WordPress avant d'activer l'extension."
121
 
122
- #: classes/class-fl-builder-admin.php:96
123
  #, php-format
124
  msgid "Page Builder activated! <a%s>Click here</a> to enable remote updates."
125
  msgstr ""
126
  "Beaver Builder est activé. <a%s>Cliquez ici</a> afin de permettre les mises "
127
  "à jour à distance."
128
 
129
- #: classes/class-fl-builder-admin.php:191
130
  msgctxt "Plugin action link label."
131
  msgid "Upgrade"
132
  msgstr "Mise à niveau"
133
 
134
- #: classes/class-fl-builder-admin.php:202
135
- #: classes/class-fl-builder-model.php:2594
136
  msgid "Page Builder"
137
  msgstr "Constructeur de page"
138
 
139
- #: classes/class-fl-builder-model.php:1385
140
  #, php-format
141
  msgctxt "%s stands for the module filename"
142
  msgid ""
@@ -147,15 +154,15 @@ msgstr ""
147
  "espace de nommage (namespace) pour les fichiers de votre module afin "
148
  "d'assurer la compatibilité avec Beaver Builder."
149
 
150
- #: classes/class-fl-builder-model.php:1443
151
- #: classes/class-fl-builder-model.php:1497 modules/heading/heading.php:16
152
  #: modules/photo/photo.php:27 modules/rich-text/rich-text.php:16
153
  #: modules/separator/separator.php:16 modules/video/video.php:21
154
  msgid "Basic Modules"
155
  msgstr "Extensions de base"
156
 
157
- #: classes/class-fl-builder-model.php:1444
158
- #: classes/class-fl-builder-model.php:1498 modules/accordion/accordion.php:16
159
  #: modules/button/button.php:16 modules/callout/callout.php:16
160
  #: modules/contact-form/contact-form.php:16
161
  #: modules/content-slider/content-slider.php:16 modules/cta/cta.php:16
@@ -164,120 +171,746 @@ msgstr "Extensions de base"
164
  #: modules/map/map.php:16 modules/post-grid/post-grid.php:16
165
  #: modules/pricing-table/pricing-table.php:16 modules/sidebar/sidebar.php:16
166
  #: modules/slideshow/slideshow.php:16
167
- #: modules/social-buttons/social-buttons.php:16 modules/tabs/tabs.php:16
 
168
  #: modules/testimonials/testimonials.php:16
169
  #: modules/woocommerce/woocommerce.php:18
170
  msgid "Advanced Modules"
171
  msgstr "Extensions avancées"
172
 
173
- #: classes/class-fl-builder-model.php:1445
174
- #: classes/class-fl-builder-model.php:1499
175
  msgid "Other Modules"
176
  msgstr "Autres modules"
177
 
178
- #: classes/class-fl-builder-model.php:1446
179
- #: classes/class-fl-builder-model.php:1500 includes/ui.php:88
 
180
  #: modules/widget/widget.php:16
181
  msgid "WordPress Widgets"
182
  msgstr "Widgets de WordPress"
183
 
184
- #: classes/class-fl-builder-model.php:2009
185
  #, php-format
186
  msgctxt "%s stands for post/page title."
187
  msgid "Copy of %s"
188
  msgstr "Copie de %s"
189
 
190
- #: classes/class-fl-builder-photo.php:75
 
 
 
 
 
 
 
 
 
 
 
 
 
 
191
  msgctxt "Image size."
192
  msgid "Full Size"
193
  msgstr "Pleine grandeur"
194
 
195
- #: classes/class-fl-builder-photo.php:76
196
  msgctxt "Image size."
197
  msgid "Large"
198
  msgstr "Grande"
199
 
200
- #: classes/class-fl-builder-photo.php:77
201
  msgctxt "Image size."
202
  msgid "Medium"
203
  msgstr "Moyenne"
204
 
205
- #: classes/class-fl-builder-photo.php:78
206
  msgctxt "Image size."
207
  msgid "Thumbnail"
208
  msgstr "Vignette"
209
 
210
- #: classes/class-fl-builder-templates.php:28
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
211
  msgid "Page Builder Templates"
212
  msgstr "Gabarits de Beaver Builder"
213
 
214
- #: classes/class-fl-builder.php:709
 
 
 
 
 
 
 
 
215
  #, php-format
216
  msgctxt "Field name to add."
217
  msgid "Add %s"
218
  msgstr "Ajout %s"
219
 
220
- #: classes/class-fl-builder.php:772 classes/class-fl-builder.php:774
 
221
  msgctxt "Custom post type label."
222
- msgid "Layout Templates"
223
- msgstr "Gabarits de présentation"
224
 
225
- #: classes/class-fl-builder.php:773 classes/class-fl-builder.php:775
226
  msgctxt "Custom post type label."
227
- msgid "Layout Template"
228
- msgstr "Gabarit de présentation"
229
 
230
- #: classes/class-fl-builder.php:776
231
  msgctxt "Custom post type label."
232
  msgid "Add New"
233
  msgstr "Ajouter"
234
 
235
- #: classes/class-fl-builder.php:777
 
236
  msgctxt "Custom post type label."
237
- msgid "Add New Layout Template"
238
  msgstr "Ajouter un nouveau gabarit de présentation"
239
 
240
- #: classes/class-fl-builder.php:778
241
  msgctxt "Custom post type label."
242
- msgid "New Layout Template"
243
- msgstr "Nouveau gabarit de présentation"
244
 
245
- #: classes/class-fl-builder.php:779
 
246
  msgctxt "Custom post type label."
247
- msgid "Edit Layout Template"
248
- msgstr "Éditer le gabarit de présentation"
249
 
250
- #: classes/class-fl-builder.php:780
251
  msgctxt "Custom post type label."
252
- msgid "View Layout Template"
253
- msgstr "Visualiser le gabarit de présentation"
254
 
255
- #: classes/class-fl-builder.php:781
 
256
  msgctxt "Custom post type label."
257
- msgid "All Layout Templates"
258
- msgstr "Tous les gabarits de présentation"
259
 
260
- #: classes/class-fl-builder.php:782
 
261
  msgctxt "Custom post type label."
262
- msgid "Search Layout Templates"
263
  msgstr "Recherche dans les gabarits de présentation"
264
 
265
- #: classes/class-fl-builder.php:783
 
266
  msgctxt "Custom post type label."
267
- msgid "Parent Layout Templates:"
268
  msgstr "Gabarit de présentation parent"
269
 
270
- #: classes/class-fl-builder.php:784
 
271
  msgctxt "Custom post type label."
272
- msgid "No layout templates found."
273
  msgstr "Aucun gabarit de présentation trouvé."
274
 
275
- #: classes/class-fl-builder.php:785
 
276
  msgctxt "Custom post type label."
277
- msgid "No layout templates found in Trash."
278
  msgstr "Aucun gabarit de présentation trouvé dans la poubelle"
279
 
280
- #: classes/class-fl-builder.php:1150 includes/js-config.php:66
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
281
  #, php-format
282
  msgctxt "%s stands for module name."
283
  msgid "%s Settings"
@@ -289,9 +922,11 @@ msgstr "Éditeur de texte"
289
 
290
  #: includes/admin-posts.php:7
291
  #, php-format
292
- msgctxt "%s stands for custom branded \"Page Builder\" name."
293
- msgid "%s is currently active for this page."
294
- msgstr "%s est présentement activé pour cette page."
 
 
295
 
296
  #: includes/admin-posts.php:8
297
  #, php-format
@@ -299,19 +934,6 @@ msgctxt "%s stands for custom branded \"Page Builder\" name."
299
  msgid "Launch %s"
300
  msgstr "Lancer %s"
301
 
302
- #: includes/admin-posts.php:15
303
- #, php-format
304
- msgctxt "%s stands for custom branded \"Page Builder\" name."
305
- msgid ""
306
- "Switching to Text Editor mode will disable your %s layout until it is "
307
- "enabled again. Any edits made while in Text Editor mode will not be made on "
308
- "your %s layout. Do you want to continue?"
309
- msgstr ""
310
- "Passer au mode &laquo; Éditeur de texte &raquo; va désactiver votre gabarit "
311
- "%s jusqu'à ce qu'il soit réactivé à nouveau. Tout édition en mode Éditeur de "
312
- "texte ne sera pas visible dans votre gabarit %s. Voulez-vous vraiment "
313
- "continuer?"
314
-
315
  #: includes/admin-settings-branding.php:7
316
  msgid "White label the page builder by entering a custom name below."
317
  msgstr "Personalisez la marque en entrant un autre nom à votre choix."
@@ -329,6 +951,48 @@ msgstr ""
329
  msgid "Save Branding"
330
  msgstr "Sauvegarder le branding"
331
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
332
  #: includes/admin-settings-editing.php:3
333
  msgid "Editing Settings"
334
  msgstr "En édition des paramètres"
@@ -336,7 +1000,7 @@ msgstr "En édition des paramètres"
336
  #: includes/admin-settings-editing.php:10 includes/admin-settings-icons.php:27
337
  #: includes/admin-settings-modules.php:10
338
  #: includes/admin-settings-post-types.php:10
339
- #: includes/admin-settings-templates.php:10
340
  msgid "Override network settings?"
341
  msgstr "Outrepasser les paramètres de réseau?"
342
 
@@ -465,12 +1129,12 @@ msgstr ""
465
  "Tout Cocher/Tout Décocher les extensions ci-dessous afin de les activer ou "
466
  "désactiver."
467
 
468
- #: includes/admin-settings-modules.php:25
469
  msgctxt "Plugin setup page: Modules."
470
  msgid "All"
471
  msgstr "Tous"
472
 
473
- #: includes/admin-settings-modules.php:43
474
  msgid "Save Module Settings"
475
  msgstr "Sauvegarder les paramètres de module"
476
 
@@ -503,32 +1167,73 @@ msgstr ""
503
  msgid "Save Post Types"
504
  msgstr "Sauvegarder les &laquo; Post Types &raquo;"
505
 
506
- #: includes/admin-settings-templates.php:3 includes/template-settings.php:4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
507
  msgid "Template Settings"
508
  msgstr "Paramètres de gabarit"
509
 
510
- #: includes/admin-settings-templates.php:16
511
- msgid "Enable or disable templates using the options below."
 
 
 
 
 
 
 
512
  msgstr ""
513
  "Activer ou désactiver les gabarits en utilisant les options ci-dessous."
514
 
515
- #: includes/admin-settings-templates.php:23
516
  msgid "Enable All Templates"
517
  msgstr "Activer tous ls gabarits"
518
 
519
- #: includes/admin-settings-templates.php:24
520
  msgid "Enable Core Templates Only"
521
  msgstr "Activer les gabarits de base seulement"
522
 
523
- #: includes/admin-settings-templates.php:25
524
  msgid "Enable User Templates Only"
525
  msgstr "Activer les gabarits personnel seulement"
526
 
527
- #: includes/admin-settings-templates.php:26
528
  msgid "Disable All Templates"
529
  msgstr "Désactiver tous les gabarits"
530
 
531
- #: includes/admin-settings-templates.php:30
 
 
 
 
 
 
 
 
 
 
 
532
  msgid "Save Template Settings"
533
  msgstr "Sauvegarder les paramètres de gabarit"
534
 
@@ -543,12 +1248,6 @@ msgstr ""
543
  "désactiver ou désinstaller le constructeur de page à partir de la page des "
544
  "extensions si vous préférez ne pas effacer ses données."
545
 
546
- #: includes/admin-settings-uninstall.php:7
547
- #: includes/admin-settings-uninstall.php:10
548
- #: includes/updater/includes/form.php:31
549
- msgid "NOTE:"
550
- msgstr "Note: "
551
-
552
  #: includes/admin-settings-uninstall.php:7
553
  msgid ""
554
  "The builder does not delete the post meta <code>_fl_builder_data</code>, "
@@ -562,11 +1261,6 @@ msgstr ""
562
  "faites, le constructeur va rebâtir l'ensemble de ses données à l'aide de ces "
563
  "valeurs méta."
564
 
565
- #: includes/admin-settings-uninstall.php:10
566
- #: includes/updater/includes/form.php:31
567
- msgid "This applies to all sites on the network."
568
- msgstr "Ceci s'applique à tous les sites du réseau"
569
-
570
  #: includes/admin-settings-upgrade.php:5
571
  msgid ""
572
  "You are currently running the lite version of the Beaver Builder plugin. "
@@ -600,9 +1294,9 @@ msgstr "Nom"
600
  msgid "Image"
601
  msgstr "Image"
602
 
603
- #: includes/admin-templates-edit.php:16 includes/row-settings.php:155
604
- #: includes/template-settings.php:23 modules/callout/callout.php:353
605
- #: modules/callout/callout.php:373
606
  #: modules/content-slider/content-slider.php:472
607
  #: modules/post-grid/post-grid.php:127
608
  msgid "Position"
@@ -615,23 +1309,24 @@ msgstr "Haut de gamme"
615
 
616
  #: includes/admin-templates-edit.php:23 includes/admin-templates.php:30
617
  #: includes/global-settings.php:18 includes/global-settings.php:110
618
- #: includes/row-settings.php:307 includes/template-settings.php:31
619
- #: modules/accordion/accordion.php:90 modules/callout/callout.php:420
 
620
  #: modules/content-slider/content-slider.php:209
621
  #: modules/content-slider/content-slider.php:223
622
  #: modules/content-slider/content-slider.php:257
623
  #: modules/content-slider/content-slider.php:266
624
  #: modules/content-slider/content-slider.php:537
625
  #: modules/icon-group/icon-group.php:80 modules/icon/icon.php:111
626
- #: modules/slideshow/slideshow.php:315 modules/slideshow/slideshow.php:325
627
- #: modules/slideshow/slideshow.php:376 modules/slideshow/slideshow.php:417
628
- #: modules/slideshow/slideshow.php:439 modules/slideshow/slideshow.php:488
629
- #: modules/slideshow/slideshow.php:497 modules/slideshow/slideshow.php:506
630
- #: modules/slideshow/slideshow.php:515 modules/slideshow/slideshow.php:524
631
- #: modules/slideshow/slideshow.php:533 modules/slideshow/slideshow.php:542
632
- #: modules/slideshow/slideshow.php:556 modules/slideshow/slideshow.php:571
633
- #: modules/slideshow/slideshow.php:606 modules/slideshow/slideshow.php:618
634
- #: modules/slideshow/slideshow.php:630 modules/slideshow/slideshow.php:642
635
  #: modules/social-buttons/social-buttons.php:111
636
  #: modules/social-buttons/social-buttons.php:120
637
  #: modules/social-buttons/social-buttons.php:129
@@ -644,23 +1339,24 @@ msgstr "Non"
644
 
645
  #: includes/admin-templates-edit.php:24 includes/admin-templates.php:30
646
  #: includes/global-settings.php:19 includes/global-settings.php:111
647
- #: includes/row-settings.php:308 includes/template-settings.php:32
648
- #: modules/accordion/accordion.php:89 modules/callout/callout.php:421
 
649
  #: modules/content-slider/content-slider.php:210
650
  #: modules/content-slider/content-slider.php:224
651
  #: modules/content-slider/content-slider.php:258
652
  #: modules/content-slider/content-slider.php:267
653
  #: modules/content-slider/content-slider.php:538
654
  #: modules/icon-group/icon-group.php:81 modules/icon/icon.php:112
655
- #: modules/slideshow/slideshow.php:316 modules/slideshow/slideshow.php:326
656
- #: modules/slideshow/slideshow.php:377 modules/slideshow/slideshow.php:418
657
- #: modules/slideshow/slideshow.php:440 modules/slideshow/slideshow.php:489
658
- #: modules/slideshow/slideshow.php:498 modules/slideshow/slideshow.php:507
659
- #: modules/slideshow/slideshow.php:516 modules/slideshow/slideshow.php:525
660
- #: modules/slideshow/slideshow.php:534 modules/slideshow/slideshow.php:543
661
- #: modules/slideshow/slideshow.php:557 modules/slideshow/slideshow.php:572
662
- #: modules/slideshow/slideshow.php:607 modules/slideshow/slideshow.php:619
663
- #: modules/slideshow/slideshow.php:631 modules/slideshow/slideshow.php:643
664
  #: modules/social-buttons/social-buttons.php:110
665
  #: modules/social-buttons/social-buttons.php:119
666
  #: modules/social-buttons/social-buttons.php:128
@@ -709,15 +1405,15 @@ msgid "Premium"
709
  msgstr "Haut de gamme"
710
 
711
  #: includes/admin-templates.php:25 includes/field-photo.php:12
712
- #: includes/template-selector.php:83
713
  msgid "Edit"
714
  msgstr "Éditer"
715
 
716
- #: includes/admin-templates.php:27 includes/template-selector.php:84
717
  msgid "Delete"
718
  msgstr "Effacer"
719
 
720
- #: includes/admin-templates.php:40 includes/js-config.php:28
721
  msgid "Do you really want to delete this template?"
722
  msgstr "Voulez-vous vraiment effacer ce gabarit?"
723
 
@@ -736,7 +1432,8 @@ msgstr "Paramètres de colonne"
736
  #: modules/icon-group/icon-group.php:44 modules/icon/icon.php:75
737
  #: modules/pricing-table/pricing-table.php:43
738
  #: modules/pricing-table/pricing-table.php:155
739
- #: modules/separator/separator.php:72 modules/tabs/tabs.php:45
 
740
  msgid "Style"
741
  msgstr "Style"
742
 
@@ -753,8 +1450,8 @@ msgstr "Largeur de colonne"
753
  msgid "Text"
754
  msgstr "Texte"
755
 
756
- #: includes/column-settings.php:30 includes/column-settings.php:43
757
- #: includes/column-settings.php:100 includes/row-settings.php:52
758
  #: includes/row-settings.php:109 includes/row-settings.php:403
759
  #: modules/callout/callout.php:391
760
  #: modules/content-slider/content-slider.php:337
@@ -763,37 +1460,215 @@ msgstr "Texte"
763
  msgid "Color"
764
  msgstr "Couleur"
765
 
766
- #: includes/column-settings.php:39 includes/row-settings.php:105
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
767
  #: modules/button/button.php:115 modules/callout/callout.php:404
768
  #: modules/callout/callout.php:508
769
  #: modules/content-slider/content-slider.php:363
770
  #: modules/content-slider/content-slider.php:630 modules/cta/cta.php:197
771
  #: modules/cta/cta.php:264 modules/icon-group/icon-group.php:64
772
- #: modules/icon/icon.php:95
773
  msgid "Background Color"
774
  msgstr "Couleur d'arrière-plan"
775
 
776
- #: includes/column-settings.php:51 includes/column-settings.php:108
777
  #: includes/row-settings.php:117 includes/row-settings.php:411
778
  #: modules/separator/separator.php:44
779
  msgid "Opacity"
780
  msgstr "Opacité"
781
 
782
- #: includes/column-settings.php:63 includes/row-settings.php:366
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
783
  msgid "Border"
784
  msgstr "Bordure"
785
 
786
- #: includes/column-settings.php:67 includes/row-settings.php:65
787
- #: includes/row-settings.php:370 modules/callout/callout.php:474
788
- #: modules/content-slider/content-slider.php:331
789
- #: modules/content-slider/content-slider.php:378
790
- #: modules/content-slider/content-slider.php:596
791
- #: modules/content-slider/content-slider.php:729
792
- #: modules/slideshow/slideshow.php:339
793
- msgid "Type"
794
- msgstr "Type"
795
-
796
- #: includes/column-settings.php:69 includes/row-settings.php:372
797
  msgid ""
798
  "The type of border to use. Double borders must have a width of at least 3px "
799
  "to render properly."
@@ -801,75 +1676,75 @@ msgstr ""
801
  "Le type de bordure à utiliser. Les bordures doubles doivent avoir une "
802
  "largeur d'au moins 3 px afin d'être présentées convenablement."
803
 
804
- #: includes/column-settings.php:71 includes/row-settings.php:374
805
  msgctxt "Border type."
806
  msgid "None"
807
  msgstr "Aucune"
808
 
809
- #: includes/column-settings.php:72 includes/row-settings.php:375
810
  #: modules/separator/separator.php:75
811
  msgctxt "Border type."
812
  msgid "Solid"
813
  msgstr "Solide"
814
 
815
- #: includes/column-settings.php:73 includes/row-settings.php:376
816
  #: modules/separator/separator.php:76
817
  msgctxt "Border type."
818
  msgid "Dashed"
819
  msgstr "Tirets"
820
 
821
- #: includes/column-settings.php:74 includes/row-settings.php:377
822
  #: modules/separator/separator.php:77
823
  msgctxt "Border type."
824
  msgid "Dotted"
825
  msgstr "Pointillée"
826
 
827
- #: includes/column-settings.php:75 includes/row-settings.php:378
828
  #: modules/separator/separator.php:78
829
  msgctxt "Border type."
830
  msgid "Double"
831
  msgstr "Double"
832
 
833
- #: includes/column-settings.php:119 includes/row-settings.php:422
834
  msgid "Top Width"
835
  msgstr "Largeur du haut"
836
 
837
- #: includes/column-settings.php:131 includes/row-settings.php:434
838
  msgid "Bottom Width"
839
  msgstr "Largeur du bas"
840
 
841
- #: includes/column-settings.php:143 includes/row-settings.php:446
842
  msgid "Left Width"
843
  msgstr "Largeur gauche"
844
 
845
- #: includes/column-settings.php:155 includes/row-settings.php:458
846
  msgid "Right Width"
847
  msgstr "Largeur droite"
848
 
849
- #: includes/column-settings.php:170 includes/module-settings.php:6
850
  #: includes/row-settings.php:473 modules/content-slider/content-slider.php:273
851
  msgid "Advanced"
852
  msgstr "Avancé"
853
 
854
- #: includes/column-settings.php:173 includes/global-settings.php:41
855
  #: includes/global-settings.php:94 includes/module-settings.php:9
856
  #: includes/row-settings.php:476
857
  msgid "Margins"
858
  msgstr "Marges"
859
 
860
- #: includes/column-settings.php:177 includes/column-settings.php:230
861
  #: includes/module-settings.php:13 includes/row-settings.php:480
862
- #: includes/row-settings.php:533 modules/slideshow/slideshow.php:475
863
  msgid "Top"
864
  msgstr "Haut"
865
 
866
- #: includes/column-settings.php:189 includes/column-settings.php:242
867
  #: includes/module-settings.php:25 includes/row-settings.php:492
868
- #: includes/row-settings.php:545 modules/slideshow/slideshow.php:474
869
  msgid "Bottom"
870
  msgstr "Bas"
871
 
872
- #: includes/column-settings.php:201 includes/column-settings.php:254
873
  #: includes/module-settings.php:37 includes/row-settings.php:504
874
  #: includes/row-settings.php:557 modules/button/button.php:219
875
  #: modules/callout/callout.php:252
@@ -880,7 +1755,7 @@ msgstr "Bas"
880
  msgid "Left"
881
  msgstr "Gauche"
882
 
883
- #: includes/column-settings.php:213 includes/column-settings.php:266
884
  #: includes/module-settings.php:49 includes/row-settings.php:516
885
  #: includes/row-settings.php:569 modules/button/button.php:220
886
  #: modules/callout/callout.php:253
@@ -891,68 +1766,69 @@ msgstr "Gauche"
891
  msgid "Right"
892
  msgstr "Droit(e)"
893
 
894
- #: includes/column-settings.php:226 includes/global-settings.php:49
895
  #: includes/row-settings.php:529 modules/button/button.php:233
896
  #: modules/callout/callout.php:598
897
  #: modules/content-slider/content-slider.php:703 modules/cta/cta.php:345
 
898
  msgid "Padding"
899
  msgstr "Padding"
900
 
901
- #: includes/column-settings.php:279 includes/global-settings.php:103
902
  #: includes/module-settings.php:62 includes/row-settings.php:582
903
  msgid "Responsive Layout"
904
  msgstr "Présentation adaptative (Responsive layout)"
905
 
906
- #: includes/column-settings.php:283 includes/module-settings.php:66
907
- #: includes/row-settings.php:586 modules/slideshow/slideshow.php:290
908
  msgid "Display"
909
  msgstr "Écran"
910
 
911
- #: includes/column-settings.php:285 includes/module-settings.php:68
912
  #: includes/row-settings.php:588
913
  msgid "Always"
914
  msgstr "Toujours"
915
 
916
- #: includes/column-settings.php:286 includes/module-settings.php:69
917
  #: includes/row-settings.php:589
918
  msgid "Large Devices Only"
919
  msgstr "Grands appareils seulement"
920
 
921
- #: includes/column-settings.php:287 includes/module-settings.php:70
922
  #: includes/row-settings.php:590
923
  msgid "Large &amp; Medium Devices Only"
924
  msgstr "Grand &amp; moyens appareils seulement"
925
 
926
- #: includes/column-settings.php:288 includes/module-settings.php:71
927
  #: includes/row-settings.php:591
928
  msgid "Medium Devices Only"
929
  msgstr "Moyens appareils seulement"
930
 
931
- #: includes/column-settings.php:289 includes/module-settings.php:72
932
  #: includes/row-settings.php:592
933
  msgid "Medium &amp; Small Devices Only"
934
  msgstr "Moyen et petit appareils seulement"
935
 
936
- #: includes/column-settings.php:290 includes/module-settings.php:73
937
  #: includes/row-settings.php:593
938
  msgid "Small Devices Only"
939
  msgstr "Petits appareils seulement"
940
 
941
- #: includes/column-settings.php:292
942
  msgid "Choose whether to show or hide this column at different device sizes."
943
  msgstr ""
944
  "Choisir de montrer ou cacher cette colonne pour différents format "
945
  "d'appareils."
946
 
947
- #: includes/column-settings.php:299
948
  msgid "Medium Device Width"
949
  msgstr "Largeur d'appareil moyen"
950
 
951
- #: includes/column-settings.php:300
952
  msgid "The width of this column on medium devices such as tablets."
953
  msgstr "La largeur de cette colonne sur des appareils moyens (ex: tablettes)"
954
 
955
- #: includes/column-settings.php:302 includes/column-settings.php:330
956
  #: modules/callout/callout.php:283
957
  #: modules/content-slider/content-slider.php:448 modules/cta/cta.php:167
958
  #: modules/heading/heading.php:117 modules/heading/heading.php:144
@@ -960,7 +1836,7 @@ msgstr "La largeur de cette colonne sur des appareils moyens (ex: tablettes)"
960
  msgid "Default"
961
  msgstr "Par défaut"
962
 
963
- #: includes/column-settings.php:303 includes/column-settings.php:331
964
  #: modules/button/button.php:193 modules/callout/callout.php:284
965
  #: modules/content-slider/content-slider.php:449 modules/cta/cta.php:168
966
  #: modules/heading/heading.php:118 modules/heading/heading.php:145
@@ -969,34 +1845,34 @@ msgstr "Par défaut"
969
  msgid "Custom"
970
  msgstr "Personalisé"
971
 
972
- #: includes/column-settings.php:316
973
  msgid "Custom Medium Device Width"
974
  msgstr "Largeur personalisée de petit appareil"
975
 
976
- #: includes/column-settings.php:327
977
  msgid "Small Device Width"
978
  msgstr "Largeur de petit appareil"
979
 
980
- #: includes/column-settings.php:328
981
  msgid "The width of this column on small devices such as phones."
982
  msgstr ""
983
  "La largeur de cette colonne sur de petits appareils tels les téléphones."
984
 
985
- #: includes/column-settings.php:344
986
  msgid "Custom Small Device Width"
987
  msgstr "largeur personalisée de petit appareil"
988
 
989
- #: includes/column-settings.php:356 includes/module-settings.php:115
990
  #: includes/row-settings.php:603
991
  msgid "CSS Selectors"
992
  msgstr "Sélecteur CSS"
993
 
994
- #: includes/column-settings.php:360 includes/loop-settings.php:27
995
  #: includes/module-settings.php:119 includes/row-settings.php:607
996
  msgid "ID"
997
  msgstr "ID"
998
 
999
- #: includes/column-settings.php:361
1000
  msgid ""
1001
  "A unique ID that will be applied to this column's HTML. Must start with a "
1002
  "letter and only contain dashes, underscores, letters or numbers. No spaces."
@@ -1005,11 +1881,11 @@ msgstr ""
1005
  "doit commencer par une lettre et ne doit contenir que des tirets, des traits "
1006
  "de soulignement, des lettres ou des chiffres. Aucun espace."
1007
 
1008
- #: includes/column-settings.php:368
1009
  msgid "CSS Class"
1010
  msgstr "Classe CSS"
1011
 
1012
- #: includes/column-settings.php:369
1013
  msgid ""
1014
  "A class that will be applied to this column's HTML. Must start with a letter "
1015
  "and only contain dashes, underscores, letters or numbers. Separate multiple "
@@ -1034,7 +1910,7 @@ msgstr "Choisir une icône"
1034
  msgid "Replace"
1035
  msgstr "Remplacer"
1036
 
1037
- #: includes/field-icon.php:7 includes/js-config.php:58
1038
  msgid "Remove"
1039
  msgstr "Enlever"
1040
 
@@ -1052,7 +1928,7 @@ msgstr "Commencez à taper"
1052
 
1053
  #: includes/field-link.php:7 includes/icon-selector.php:28
1054
  #: includes/js-config.php:19 includes/settings.php:63
1055
- #: includes/template-selector.php:102 includes/ui.php:11
1056
  msgid "Cancel"
1057
  msgstr "Annuler"
1058
 
@@ -1075,11 +1951,11 @@ msgstr "Editer la galerie"
1075
  msgid "Add Photos"
1076
  msgstr "Ajouter des photos"
1077
 
1078
- #: includes/field-photo.php:3 includes/js-config.php:63
1079
  msgid "Select Photo"
1080
  msgstr "Sélectionner la photo"
1081
 
1082
- #: includes/field-video.php:3 includes/js-config.php:65
1083
  msgid "Select Video"
1084
  msgstr "Sélectionner le vidéo"
1085
 
@@ -1090,7 +1966,7 @@ msgstr "Remplacer le vidéo"
1090
  #: includes/global-settings.php:7 includes/template-settings.php:7
1091
  #: includes/user-template-settings.php:7 modules/accordion/accordion.php:110
1092
  #: modules/button/button.php:59 modules/callout/callout.php:209
1093
- #: modules/contact-form/contact-form.php:57
1094
  #: modules/content-slider/content-slider.php:190
1095
  #: modules/content-slider/content-slider.php:314 modules/cta/cta.php:67
1096
  #: modules/gallery/gallery.php:213 modules/heading/heading.php:26
@@ -1098,8 +1974,9 @@ msgstr "Remplacer le vidéo"
1098
  #: modules/icon/icon.php:27 modules/map/map.php:26 modules/photo/photo.php:368
1099
  #: modules/pricing-table/pricing-table.php:87
1100
  #: modules/rich-text/rich-text.php:26 modules/separator/separator.php:27
1101
- #: modules/sidebar/sidebar.php:27 modules/slideshow/slideshow.php:256
1102
- #: modules/social-buttons/social-buttons.php:64 modules/tabs/tabs.php:77
 
1103
  #: modules/testimonials/testimonials.php:30
1104
  #: modules/testimonials/testimonials.php:200 modules/video/video.php:76
1105
  #: modules/widget/widget.php:64 modules/woocommerce/woocommerce.php:50
@@ -1112,7 +1989,7 @@ msgstr "Note: Ces paramètres s'appliquent à tous les articles et pages."
1112
 
1113
  #: includes/global-settings.php:11
1114
  msgid "Default Page Heading"
1115
- msgstr "Entête de page par défaut"
1116
 
1117
  #: includes/global-settings.php:15
1118
  msgctxt ""
@@ -1138,7 +2015,7 @@ msgstr "Sélecteur CSS"
1138
  #: includes/global-settings.php:32
1139
  msgid "Enter a CSS selector for the default page heading to hide it."
1140
  msgstr ""
1141
- "Entrez un sélecteur CSS pour l'entête de la page par défaut afin de le "
1142
  "cacher. "
1143
 
1144
  #: includes/global-settings.php:37
@@ -1162,12 +2039,6 @@ msgstr ""
1162
  msgid "Default Row Width"
1163
  msgstr "Largeur de rangée par défaut"
1164
 
1165
- #: includes/global-settings.php:69 includes/global-settings.php:83
1166
- #: includes/row-settings.php:19 includes/row-settings.php:37
1167
- #: includes/row-settings.php:179
1168
- msgid "Fixed"
1169
- msgstr "Fixe"
1170
-
1171
  #: includes/global-settings.php:70 includes/global-settings.php:84
1172
  #: includes/row-settings.php:20 includes/row-settings.php:38
1173
  #: modules/button/button.php:192 modules/callout/callout.php:585
@@ -1186,10 +2057,30 @@ msgid "Enabled"
1186
  msgstr "Activé"
1187
 
1188
  #: includes/global-settings.php:121
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1189
  msgid "Medium Device Breakpoint"
1190
  msgstr "Point d'arrêt sur appareil moyen"
1191
 
1192
- #: includes/global-settings.php:126
1193
  msgid ""
1194
  "The browser width at which the layout will adjust for medium devices such as "
1195
  "tablets."
@@ -1197,11 +2088,11 @@ msgstr ""
1197
  "La largeur du navigateur pour laquelle la présentation s'ajustera pour les "
1198
  "appareils de taille moyenne telles que les tablettes."
1199
 
1200
- #: includes/global-settings.php:130
1201
  msgid "Small Device Breakpoint"
1202
  msgstr "Point d'arrêt sur petit appareil"
1203
 
1204
- #: includes/global-settings.php:135
1205
  msgid ""
1206
  "The browser width at which the layout will adjust for small devices such as "
1207
  "phones."
@@ -1242,10 +2133,24 @@ msgstr ""
1242
  "présentation de contenu avant de soumettre."
1243
 
1244
  #: includes/js-config.php:25
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1245
  msgid "Do you really want to delete this item?"
1246
  msgstr "Voulez-vous vraiment effacer cet item?"
1247
 
1248
- #: includes/js-config.php:26
1249
  msgid ""
1250
  "Do you really want to delete this module? All content data will be "
1251
  "permanently deleted."
@@ -1253,7 +2158,7 @@ msgstr ""
1253
  "Voulez-vous vraiment supprimer cet extension? Tous votre contenu sera effacé "
1254
  "à jamais."
1255
 
1256
- #: includes/js-config.php:27
1257
  msgid ""
1258
  "Do you really want to delete this row? All content data will be permanently "
1259
  "deleted."
@@ -1261,50 +2166,51 @@ msgstr ""
1261
  "Voulez-vous vraiment effacer cette rangée? Tout le contenu sera supprimé de "
1262
  "façon permanente."
1263
 
1264
- #: includes/js-config.php:29
1265
- msgid "Discard Draft"
1266
- msgstr "Supprimer brouillon"
1267
 
1268
- #: includes/js-config.php:30
 
1269
  msgid ""
1270
- "Do you really want to discard this draft? All of your changes that are not "
1271
- "published will be lost."
1272
  msgstr ""
1273
  "Voulez-vous vraiment supprimer ce brouillon? Tous vos changements non-"
1274
  "publiés seront perdus."
1275
 
1276
- #: includes/js-config.php:31 includes/ui.php:44
1277
  msgid "Done"
1278
  msgstr "Terminé"
1279
 
1280
- #: includes/js-config.php:32
1281
  msgid "Save Draft"
1282
  msgstr "Sauvegarder brouillon"
1283
 
1284
- #: includes/js-config.php:33
1285
  msgctxt "Duplicate page/post action label."
1286
  msgid "Duplicate"
1287
  msgstr "Reproduire"
1288
 
1289
- #: includes/js-config.php:34
1290
  msgid "Duplicate This Page"
1291
  msgstr "Reproduire cette page"
1292
 
1293
- #: includes/js-config.php:35
1294
  msgid "Duplicate This Template"
1295
  msgstr "Reproduire ce gabarit"
1296
 
1297
- #: includes/js-config.php:36
1298
  msgid "Edit Global Settings"
1299
  msgstr "Editer les paramètres globaux"
1300
 
1301
- #: includes/js-config.php:37
1302
  msgid "Drop a row layout or module to get started!"
1303
  msgstr ""
1304
  "Glisser-déposer une présentation de rangée ou une extension afin de débuter!"
1305
 
1306
  # Check with Charles?
1307
- #: includes/js-config.php:38
1308
  msgid ""
1309
  "Beaver Builder caught the following JavaScript error. If Beaver Builder is "
1310
  "not functioning as expected the cause is most likely this error. Please help "
@@ -1319,136 +2225,154 @@ msgstr ""
1319
  "incompatible avec Beaver Builder et nous pourrons ainsi travailler à "
1320
  "résoudre le problème."
1321
 
1322
- #: includes/js-config.php:39
1323
  msgid "Full Size"
1324
  msgstr "Pleine grandeur"
1325
 
1326
- #: includes/js-config.php:40
1327
  msgid "Get Help"
1328
  msgstr "Recevoir de l'assistance"
1329
 
1330
- #: includes/js-config.php:41
1331
  msgid "Getting Started Video"
1332
  msgstr "Vidéo de départ"
1333
 
1334
- #: includes/js-config.php:42
1335
  msgid "\"{message}\" on line {line} of {file}."
1336
  msgstr "&laquo; {message} &raquo; à la ligne {line} de {file}."
1337
 
1338
- #: includes/js-config.php:43
1339
  msgid "Insert"
1340
  msgstr "Insérer"
1341
 
1342
- #: includes/js-config.php:44
1343
  msgid "Large"
1344
  msgstr "Grand"
1345
 
1346
- #: includes/js-config.php:45
1347
  msgid "Manage Templates"
1348
  msgstr "Gérer les gabarits"
1349
 
1350
- #: includes/js-config.php:46
1351
  msgid "Medium"
1352
  msgstr "Moyen(ne)"
1353
 
1354
- #: includes/js-config.php:47
1355
  msgid "Module"
1356
  msgstr "Extension"
1357
 
1358
- #: includes/js-config.php:48
1359
  msgid "Move"
1360
  msgstr "Déplacer"
1361
 
1362
- #: includes/js-config.php:49
1363
  msgid "New Column"
1364
  msgstr "Nouvelle colonne"
1365
 
1366
- #: includes/js-config.php:50
1367
  msgid "New Row"
1368
  msgstr "Nouvelle rangée"
1369
 
1370
- #: includes/js-config.php:51
1371
  msgid "No results found."
1372
  msgstr "Aucuns résultats trouvés"
1373
 
1374
- #: includes/js-config.php:52
1375
  msgid "No Thanks"
1376
  msgstr "Non merci"
1377
 
1378
- #: includes/js-config.php:53
1379
  msgid "OK"
1380
  msgstr "Ok"
1381
 
1382
- #: includes/js-config.php:54 modules/photo/photo.php:454
1383
  msgid "Photo Page"
1384
  msgstr "Page photos"
1385
 
1386
- #: includes/js-config.php:55
1387
  msgid "Photo Selected"
1388
  msgstr "Photo sélectionnée"
1389
 
1390
- #: includes/js-config.php:56
1391
  msgid "Photos Selected"
1392
  msgstr "Photos sélectionnées"
1393
 
1394
- #: includes/js-config.php:57
 
 
 
 
 
1395
  msgid "Publish Changes"
1396
  msgstr "Publiez les changements"
1397
 
1398
- #: includes/js-config.php:59
1399
  msgid "Row"
1400
  msgstr "Rangée"
1401
 
1402
- #: includes/js-config.php:60 includes/row-settings.php:6
1403
  msgid "Row Settings"
1404
  msgstr "Paramètres de rangée"
1405
 
1406
- #: includes/js-config.php:61
1407
  msgid "Save Core Template"
1408
  msgstr "Sauvegarder le gabarit"
1409
 
1410
- #: includes/js-config.php:62 includes/ui.php:10
1411
- #: includes/user-template-settings.php:4
1412
  msgid "Save Template"
1413
  msgstr "Sauvegarder le gabarit"
1414
 
1415
- #: includes/js-config.php:64
1416
  msgid "Select Photos"
1417
  msgstr "Sélectionner les photos"
1418
 
1419
- #: includes/js-config.php:67
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1420
  msgid "Take a Tour"
1421
  msgstr "Suivre une visite guidée"
1422
 
1423
- #: includes/js-config.php:68
1424
  msgid "Append New Layout"
1425
  msgstr "Ajouter une autre présentation"
1426
 
1427
- #: includes/js-config.php:69
1428
  msgid "Replace Existing Layout"
1429
  msgstr "Remplacer la présentation existante"
1430
 
1431
- #: includes/js-config.php:70
1432
  msgid "Template Saved!"
1433
  msgstr "Gabarit sauvegardé!"
1434
 
1435
- #: includes/js-config.php:71
1436
  msgid "Thumbnail"
1437
  msgstr "Vignette"
1438
 
1439
- #: includes/js-config.php:72
1440
  msgid "Next"
1441
  msgstr "Suivant"
1442
 
1443
- #: includes/js-config.php:73
1444
  msgid "Get Started"
1445
  msgstr "Débuter"
1446
 
1447
- #: includes/js-config.php:74
1448
  msgid "Choose a Template"
1449
  msgstr "Sélectionner le gabarit"
1450
 
1451
- #: includes/js-config.php:75
1452
  msgid ""
1453
  "Get started by choosing a layout template to customize, or build a page from "
1454
  "scratch by selecting the blank layout template."
@@ -1456,24 +2380,24 @@ msgstr ""
1456
  "Débutez en sélectionnant un gabarit à personnaliser, ou en bâtissant à "
1457
  "partir de zéro grâce au gabarit de page vierge. "
1458
 
1459
- #: includes/js-config.php:76
1460
  msgid "Add Rows"
1461
  msgstr "Ajout de rangées"
1462
 
1463
- #: includes/js-config.php:77
 
1464
  msgid ""
1465
- "Add mulit-column rows, adjust spacing, add backgrounds and more by dragging "
1466
  "and dropping row layouts onto the page."
1467
  msgstr ""
1468
- "Addition de rangées multi-colonne, ajustement de l'espacement, ajout "
1469
- "d'arrière-plans et plus en glissant-déposant les gabarits de rangée sur la "
1470
- "page."
1471
 
1472
- #: includes/js-config.php:78 includes/ui.php:49
1473
  msgid "Add Content"
1474
  msgstr "Ajouter le contenu"
1475
 
1476
- #: includes/js-config.php:79
1477
  msgid ""
1478
  "Add new content by dragging and dropping modules or widgets into your row "
1479
  "layouts or to create a new row layout."
@@ -1481,44 +2405,45 @@ msgstr ""
1481
  "Insérer du nouveau contenu en glissant-déposant des modules ou widgets dans "
1482
  "les rangées de votre mise en page, ou afin de créer une nouvelle rangée. "
1483
 
1484
- #: includes/js-config.php:80
1485
  msgid "Edit Content"
1486
  msgstr "Edition du contenu"
1487
 
1488
- #: includes/js-config.php:81
1489
  msgid ""
1490
  "Move your mouse over rows, columns or modules to edit and interact with them."
1491
  msgstr ""
1492
  "Survolez les rangées, colonnes ou modules avec votre souris afin d'interagir "
1493
  "avec ceux-ci et passer au mode édition."
1494
 
1495
- #: includes/js-config.php:82
 
1496
  msgid ""
1497
  "Use the action buttons to perform actions such as moving, editing, "
1498
- "duplicating, accessing individual column settings or deleting rows, columns "
1499
- "and modules."
1500
  msgstr ""
1501
- "Utilisez les boutons d'actions afin de déplacer, éditer, dupliquer, accéder "
1502
- "au paramètres individuels des colonnes, ou bien effacer des rangées, "
1503
- "colonnes ou modules."
1504
 
1505
- #: includes/js-config.php:83
1506
  msgid "Add More Content"
1507
  msgstr "Ajout de contenu"
1508
 
1509
- #: includes/js-config.php:84
 
1510
  msgid ""
1511
- "Use the Add Content button to open the content panel and add new row layouts "
1512
- "or content."
1513
  msgstr ""
1514
- "Utiliser le bouton &laquo; Ajouter le contenu &raquo; afin d'ouvrir le "
1515
- "panneau de contenu et ajouter de nouvelles rangées ou du contenu."
 
1516
 
1517
- #: includes/js-config.php:85
1518
  msgid "Change Templates"
1519
  msgstr "Changer les gabarits"
1520
 
1521
- #: includes/js-config.php:86
1522
  msgid ""
1523
  "Use the Templates button to pick a new template or append one to your "
1524
  "layout. Appending will insert a new template at the end of your existing "
@@ -1528,11 +2453,11 @@ msgstr ""
1528
  "gabarit, ou en ajouter un nouveau. L'ajout insère le nouveau gabarit sous le "
1529
  "gabarit pré-existant."
1530
 
1531
- #: includes/js-config.php:87
1532
  msgid "Helpful Tools"
1533
  msgstr "Outils utiles"
1534
 
1535
- #: includes/js-config.php:88
1536
  msgid ""
1537
  "The Tools button lets you duplicate a page, save a template or edit the "
1538
  "global settings."
@@ -1540,11 +2465,11 @@ msgstr ""
1540
  "Le bouton Outils permet de dupliquer une page, sauvegarder un gabarit. ou "
1541
  "d'éditer les paramètres globaux."
1542
 
1543
- #: includes/js-config.php:89
1544
  msgid "Publish Your Changes"
1545
  msgstr "Publiez les changements"
1546
 
1547
- #: includes/js-config.php:90
1548
  msgid ""
1549
  "Once you're finished, click the Done button to publish your changes, save a "
1550
  "draft or revert back to the last published state."
@@ -1553,11 +2478,11 @@ msgstr ""
1553
  "publier vos changements, sauvegarder un brouillon, ou revenir à la version "
1554
  "publiée précédemment."
1555
 
1556
- #: includes/js-config.php:91
1557
  msgid "Let's Get Building!"
1558
  msgstr "Construisons!"
1559
 
1560
- #: includes/js-config.php:92
1561
  msgid ""
1562
  "Now that you know the basics, you're ready to start building! If at any time "
1563
  "you need help, click the help icon in the upper right corner to access the "
@@ -1567,7 +2492,7 @@ msgstr ""
1567
  "temps, cliquez sur le bouton d'aide dans le coin droit supérieur afin "
1568
  "d'obtenir de l'aide. Joyeuse construction!"
1569
 
1570
- #: includes/js-config.php:93
1571
  msgid ""
1572
  "The settings you are currently editing will not be saved if you navigate "
1573
  "away from this page."
@@ -1575,19 +2500,19 @@ msgstr ""
1575
  "Les paramètres que vous éditez ne seront pas sauvegardés si vous quittez "
1576
  "cette page."
1577
 
1578
- #: includes/js-config.php:94
1579
  msgid "View the Knowledge Base"
1580
  msgstr "Visualiser la base de connaissances"
1581
 
1582
- #: includes/js-config.php:95
1583
  msgid "Visit the Forums"
1584
  msgstr "Visiter les forums"
1585
 
1586
- #: includes/js-config.php:96
1587
  msgid "Watch the Video"
1588
  msgstr "Visionner le vidéo"
1589
 
1590
- #: includes/js-config.php:97
1591
  msgid ""
1592
  "Welcome! It looks like this might be your first time using the builder. "
1593
  "Would you like to take a tour?"
@@ -1595,72 +2520,82 @@ msgstr ""
1595
  "Bienvenue! Il semble que ce soit la première fois que vous utilisé Beaver "
1596
  "Builder. Aimeriez-vous une visite guidée?"
1597
 
1598
- #: includes/js-config.php:98
1599
  msgid "Yes Please!"
1600
  msgstr "Oui s'il vous plaît!"
1601
 
1602
- #: includes/loop-settings.php:19
1603
  msgid "Post Type"
1604
  msgstr "Post Type"
1605
 
1606
- #: includes/loop-settings.php:25
1607
  msgid "Order By"
1608
  msgstr "Ordonner par"
1609
 
1610
- #: includes/loop-settings.php:28 modules/post-grid/post-grid.php:155
1611
  #: modules/woocommerce/woocommerce.php:189
1612
  msgid "Date"
1613
  msgstr "Date"
1614
 
1615
- #: includes/loop-settings.php:29
1616
  msgid "Date Last Modified"
1617
  msgstr "Date de la dernière modification"
1618
 
1619
- #: includes/loop-settings.php:30 modules/pricing-table/pricing-table.php:90
1620
  #: modules/pricing-table/pricing-table.php:94
1621
  msgid "Title"
1622
  msgstr "Titre"
1623
 
1624
- #: includes/loop-settings.php:31 modules/post-grid/post-grid.php:146
1625
  msgid "Author"
1626
  msgstr "Auteur"
1627
 
1628
- #: includes/loop-settings.php:32
1629
  msgid "Comment Count"
1630
  msgstr "Nombre de commentaires"
1631
 
1632
- #: includes/loop-settings.php:33
1633
  msgid "Menu Order"
1634
  msgstr "Ordre du menu"
1635
 
1636
- #: includes/loop-settings.php:34
1637
  msgid "Random"
1638
  msgstr "Aléatoire"
1639
 
1640
- #: includes/loop-settings.php:41
1641
  msgid "Order"
1642
  msgstr "Ordre"
1643
 
1644
- #: includes/loop-settings.php:43
1645
  msgid "Descending"
1646
  msgstr "Décroissant"
1647
 
1648
- #: includes/loop-settings.php:44
1649
  msgid "Ascending"
1650
  msgstr "Croissant"
1651
 
1652
  #: includes/loop-settings.php:52
 
 
 
 
 
 
 
 
 
 
1653
  msgid "Filter"
1654
  msgstr "Filtre"
1655
 
1656
- #: includes/loop-settings.php:63
1657
  #, php-format
1658
  msgid "Enter a comma separated list of %s. Only these %s will be shown."
1659
  msgstr ""
1660
  "Entrez une liste des %s séparé(e)s par des virgules. Seulement ces %s seront "
1661
  "montré(e)s."
1662
 
1663
- #: includes/loop-settings.php:76
1664
  #, php-format
1665
  msgid ""
1666
  "Enter a comma separated list of %s. Only posts with these %s will be shown."
@@ -1668,11 +2603,11 @@ msgstr ""
1668
  "Entrez une liste des %s séparé(e)s par des virgules. Seuls les articles avec "
1669
  "ces %s seront montrés."
1670
 
1671
- #: includes/loop-settings.php:90
1672
  msgid "Authors"
1673
  msgstr "Auteur"
1674
 
1675
- #: includes/loop-settings.php:91
1676
  msgid ""
1677
  "Enter a comma separated list of authors usernames. Only posts with these "
1678
  "authors will be shown."
@@ -1729,8 +2664,8 @@ msgstr "Délai"
1729
  #: includes/module-settings.php:106 includes/row-settings.php:266
1730
  #: includes/row-settings.php:297 modules/content-slider/content-slider.php:233
1731
  #: modules/content-slider/content-slider.php:250
1732
- #: modules/slideshow/slideshow.php:385 modules/slideshow/slideshow.php:410
1733
- #: modules/slideshow/slideshow.php:581
1734
  #: modules/testimonials/testimonials.php:95
1735
  #: modules/testimonials/testimonials.php:112
1736
  msgctxt "Value unit for form field of time in seconds. Such as: \"5 seconds\""
@@ -1792,25 +2727,6 @@ msgstr ""
1792
  "Les rangées fixes ne sont pas plus larges que la valeur &laquo; Largeur "
1793
  "maximale &raquo; définie dans les réglages globaux."
1794
 
1795
- #: includes/row-settings.php:61
1796
- msgid "Background"
1797
- msgstr "Arrière-plan"
1798
-
1799
- #: includes/row-settings.php:68 modules/content-slider/content-slider.php:338
1800
- msgctxt "Background type."
1801
- msgid "None"
1802
- msgstr "Aucune"
1803
-
1804
- #: includes/row-settings.php:69
1805
- msgctxt "Background type."
1806
- msgid "Color"
1807
- msgstr "Couleur"
1808
-
1809
- #: includes/row-settings.php:70
1810
- msgctxt "Background type."
1811
- msgid "Photo"
1812
- msgstr "Photo"
1813
-
1814
  #: includes/row-settings.php:71
1815
  msgctxt "Background type."
1816
  msgid "Video"
@@ -1826,151 +2742,6 @@ msgctxt "Background type."
1826
  msgid "Parallax"
1827
  msgstr "Parallaxe"
1828
 
1829
- #: includes/row-settings.php:129 modules/content-slider/content-slider.php:359
1830
- msgid "Background Photo"
1831
- msgstr "Photo d'arrière-plan"
1832
-
1833
- #: includes/row-settings.php:133 includes/row-settings.php:321
1834
- #: modules/callout/callout.php:316 modules/callout/callout.php:332
1835
- #: modules/callout/callout.php:336
1836
- #: modules/content-slider/content-slider.php:335
1837
- #: modules/content-slider/content-slider.php:404
1838
- #: modules/content-slider/content-slider.php:745 modules/photo/photo.php:25
1839
- #: modules/photo/photo.php:392
1840
- msgid "Photo"
1841
- msgstr "Photo"
1842
-
1843
- #: includes/row-settings.php:140
1844
- msgid "Repeat"
1845
- msgstr "Répéter"
1846
-
1847
- #: includes/row-settings.php:143
1848
- msgctxt "Background repeat."
1849
- msgid "None"
1850
- msgstr "Aucune"
1851
-
1852
- #: includes/row-settings.php:144
1853
- msgctxt "Background repeat."
1854
- msgid "Tile"
1855
- msgstr "Tuile"
1856
-
1857
- #: includes/row-settings.php:145
1858
- msgctxt "Background repeat."
1859
- msgid "Horizontal"
1860
- msgstr "Horizontal"
1861
-
1862
- #: includes/row-settings.php:146
1863
- msgctxt "Background repeat."
1864
- msgid "Vertical"
1865
- msgstr "Vertical"
1866
-
1867
- #: includes/row-settings.php:148
1868
- msgid ""
1869
- "Repeat applies to how the image should display in the row background. "
1870
- "Choosing none will display the image as uploaded. Tile will repeat the image "
1871
- "as many times as needed to fill the row horizontally and vertically. You can "
1872
- "also specify the image to only repeat horizontally or vertically."
1873
- msgstr ""
1874
- "Répétition s'applique à comment l'image doit s'afficher à l'arrière-plan de "
1875
- "la rangée. La sélection de Aucun affichera l'image téléchargée telle quelle. "
1876
- "Mosaïque répétera l'image autant de fois que nécessaire pour remplir la "
1877
- "rangée horizontalement et verticalement. Vous pouvez également spécifier que "
1878
- "l'image ne se répète que horizontalement ou verticalement."
1879
-
1880
- #: includes/row-settings.php:158
1881
- msgid "Left Top"
1882
- msgstr "Haut"
1883
-
1884
- #: includes/row-settings.php:159
1885
- msgid "Left Center"
1886
- msgstr "Gauche centre"
1887
-
1888
- #: includes/row-settings.php:160
1889
- msgid "Left Bottom"
1890
- msgstr "Gauche bas"
1891
-
1892
- #: includes/row-settings.php:161
1893
- msgid "Right Top"
1894
- msgstr "Droit(e)"
1895
-
1896
- #: includes/row-settings.php:162
1897
- msgid "Right Center"
1898
- msgstr "Droite centre"
1899
-
1900
- #: includes/row-settings.php:163
1901
- msgid "Right Bottom"
1902
- msgstr "Droite bas"
1903
-
1904
- #: includes/row-settings.php:164
1905
- msgid "Center Top"
1906
- msgstr "Centre haut"
1907
-
1908
- #: includes/row-settings.php:165 modules/button/button.php:218
1909
- #: modules/callout/callout.php:251
1910
- #: modules/content-slider/content-slider.php:477 modules/cta/cta.php:126
1911
- #: modules/heading/heading.php:90 modules/heading/heading.php:162
1912
- #: modules/icon-group/icon-group.php:110 modules/icon/icon.php:133
1913
- #: modules/photo/photo.php:418 modules/social-buttons/social-buttons.php:100
1914
- msgid "Center"
1915
- msgstr "Centre"
1916
-
1917
- #: includes/row-settings.php:166
1918
- msgid "Center Bottom"
1919
- msgstr "Centre bas"
1920
-
1921
- #: includes/row-settings.php:168
1922
- msgid "Position will tell the image where it should sit in the row background."
1923
- msgstr ""
1924
- "Position est utilisée par l\"image afin de déterminer son placement dans "
1925
- "l'arrière-plan de la rangée."
1926
-
1927
- #: includes/row-settings.php:175
1928
- msgid "Attachment"
1929
- msgstr "Fixation"
1930
-
1931
- #: includes/row-settings.php:178 modules/post-grid/post-grid.php:75
1932
- msgid "Scroll"
1933
- msgstr "Dérouler"
1934
-
1935
- #: includes/row-settings.php:181
1936
- msgid ""
1937
- "Attachment will specify how the image reacts when scrolling a page. When "
1938
- "scrolling is selected, the image will scroll with page scrolling. This is "
1939
- "the default setting. Fixed will allow the image to scroll within the row "
1940
- "background if fill is selected in the scale setting."
1941
- msgstr ""
1942
- "Fixation spécifiera comment l'image réagit quand on déroule la page. Quand "
1943
- "Dérouler est sélectionnée, l'image déroule lorsque la page déroule. C'est le "
1944
- "réglage par défaut. Fixe permettra à l\"image de dérouler à l'intérieur de "
1945
- "l'arrière-plan de la rangée si Remplissage est sélectionné dans le réglage "
1946
- "de la mise à l'échelle. "
1947
-
1948
- #: includes/row-settings.php:188
1949
- msgid "Scale"
1950
- msgstr "Mise à l'échelle"
1951
-
1952
- #: includes/row-settings.php:191
1953
- msgctxt "Background scale."
1954
- msgid "None"
1955
- msgstr "Aucune"
1956
-
1957
- #: includes/row-settings.php:192
1958
- msgid "Fit"
1959
- msgstr "Ajustement"
1960
-
1961
- #: includes/row-settings.php:193
1962
- msgid "Fill"
1963
- msgstr "Remplissage"
1964
-
1965
- #: includes/row-settings.php:195
1966
- msgid ""
1967
- "Scale applies to how the image should display in the row background. You can "
1968
- "select either fill or fit to the row background."
1969
- msgstr ""
1970
- "&laquo; Mettre à l'échelle &raquo; détermine comment l'image se produira "
1971
- "dans l'arrière-plan de la rangée. Vous pouvez sélectionner remplissage ou "
1972
- "ajustage à l'arrière plan."
1973
-
1974
  #: includes/row-settings.php:203
1975
  msgid "Background Video"
1976
  msgstr "Vidéo d'arrière-plan"
@@ -2001,18 +2772,18 @@ msgid "Background Slideshow"
2001
  msgstr "Diaporama d'arrière-plan"
2002
 
2003
  #: includes/row-settings.php:228 modules/gallery/gallery.php:234
2004
- #: modules/slideshow/slideshow.php:263
2005
  msgid "Source"
2006
  msgstr "Origine"
2007
 
2008
  #: includes/row-settings.php:231 modules/gallery/gallery.php:237
2009
- #: modules/photo/photo.php:378 modules/slideshow/slideshow.php:266
2010
  #: modules/video/video.php:86
2011
  msgid "Media Library"
2012
  msgstr "Médiathèque"
2013
 
2014
  #: includes/row-settings.php:234 modules/gallery/gallery.php:240
2015
- #: modules/slideshow/slideshow.php:269
2016
  msgid ""
2017
  "Pull images from the WordPress media library or a gallery on your SmugMug "
2018
  "site by inserting the RSS feed URL from SmugMug. The RSS feed URL can be "
@@ -2024,22 +2795,22 @@ msgstr ""
2024
  "galerie SmugMug."
2025
 
2026
  #: includes/row-settings.php:249 modules/gallery/gallery.php:252
2027
- #: modules/slideshow/slideshow.php:281
2028
  msgid "Photos"
2029
  msgstr "Photos"
2030
 
2031
  #: includes/row-settings.php:256 modules/gallery/gallery.php:256
2032
- #: modules/slideshow/slideshow.php:285
2033
  msgid "Feed URL"
2034
  msgstr "Lien du flux"
2035
 
2036
  #: includes/row-settings.php:263 includes/row-settings.php:328
2037
- #: modules/slideshow/slideshow.php:382
2038
  msgid "Speed"
2039
  msgstr "Vitesse"
2040
 
2041
  #: includes/row-settings.php:273 modules/content-slider/content-slider.php:237
2042
- #: modules/slideshow/slideshow.php:389
2043
  #: modules/testimonials/testimonials.php:99
2044
  msgid "Transition"
2045
  msgstr "Transition"
@@ -2050,54 +2821,54 @@ msgid "None"
2050
  msgstr "Aucune"
2051
 
2052
  #: includes/row-settings.php:277 modules/content-slider/content-slider.php:241
2053
- #: modules/slideshow/slideshow.php:393
2054
  #: modules/testimonials/testimonials.php:103
2055
  msgid "Fade"
2056
  msgstr "Fondu"
2057
 
2058
- #: includes/row-settings.php:278 modules/slideshow/slideshow.php:394
2059
  msgid "Ken Burns"
2060
  msgstr "Ken Burns"
2061
 
2062
- #: includes/row-settings.php:279 modules/slideshow/slideshow.php:395
2063
  msgid "Slide Horizontal"
2064
  msgstr "Glissement horizontal"
2065
 
2066
- #: includes/row-settings.php:280 modules/slideshow/slideshow.php:396
2067
  msgid "Slide Vertical"
2068
  msgstr "Glissement vertical"
2069
 
2070
- #: includes/row-settings.php:281 modules/slideshow/slideshow.php:397
2071
  msgid "Blinds"
2072
  msgstr "Stores"
2073
 
2074
- #: includes/row-settings.php:282 modules/slideshow/slideshow.php:398
2075
  msgid "Bars"
2076
  msgstr "Barres"
2077
 
2078
- #: includes/row-settings.php:283 modules/slideshow/slideshow.php:399
2079
  msgid "Random Bars"
2080
  msgstr "Barres aléatoires"
2081
 
2082
- #: includes/row-settings.php:284 modules/slideshow/slideshow.php:400
2083
  msgid "Boxes"
2084
  msgstr "Boîtes"
2085
 
2086
- #: includes/row-settings.php:285 modules/slideshow/slideshow.php:401
2087
  msgid "Random Boxes"
2088
  msgstr "Boîtes aléatoires"
2089
 
2090
- #: includes/row-settings.php:286 modules/slideshow/slideshow.php:402
2091
  msgid "Boxes Grow"
2092
  msgstr "Boîtes qui croissent"
2093
 
2094
  #: includes/row-settings.php:294 modules/content-slider/content-slider.php:246
2095
- #: modules/slideshow/slideshow.php:407
2096
  #: modules/testimonials/testimonials.php:108
2097
  msgid "Transition Speed"
2098
  msgstr "Vitesse de transition"
2099
 
2100
- #: includes/row-settings.php:304 modules/slideshow/slideshow.php:414
2101
  msgid "Randomize Photos"
2102
  msgstr "Photos en mode aléatoire"
2103
 
@@ -2156,32 +2927,24 @@ msgstr ""
2156
  "soulignement, des lettres ou des chiffres. Séparer des classes multiples "
2157
  "avec des espaces."
2158
 
 
 
 
 
 
2159
  #: includes/settings.php:62
2160
  msgid "Save"
2161
  msgstr "Sauvegarde"
2162
 
2163
- #: includes/template-selector.php:3
2164
  msgid "Layout Templates"
2165
  msgstr "Gabarits de présentation"
2166
 
2167
- #: includes/template-selector.php:8
2168
- msgid "Home Pages"
2169
- msgstr "Pages d'accueil"
2170
-
2171
- #: includes/template-selector.php:9
2172
- msgid "Content Pages"
2173
- msgstr "Pages de contenu"
2174
-
2175
- #: includes/template-selector.php:13
2176
  msgid "Your Templates"
2177
  msgstr "Vos gabarits"
2178
 
2179
- #: includes/template-selector.php:47 includes/template-selector.php:77
2180
- msgctxt "Template name."
2181
- msgid "Blank"
2182
- msgstr "Vierge"
2183
-
2184
- #: includes/template-selector.php:72
2185
  msgid ""
2186
  "You haven't saved any templates yet! To do so, create a layout and save it "
2187
  "as a template under <strong>Tools &rarr; Save Template</strong>."
@@ -2190,6 +2953,11 @@ msgstr ""
2190
  "créer une présentation et sauvegardez la comme gabarit sous <strong>Outils "
2191
  "&rarr; Sauvegarder gabarit</strong>."
2192
 
 
 
 
 
 
2193
  #: includes/template-settings.php:14 includes/user-template-settings.php:15
2194
  msgctxt "Template name."
2195
  msgid "Name"
@@ -2207,78 +2975,78 @@ msgstr ""
2207
  "Le nom de fichier de l'image, tel que image.jpg, qui réside dans le "
2208
  "répertoire &laquo; img/templates &raquo;."
2209
 
2210
- #: includes/ui.php:7
2211
  #, php-format
2212
  msgid "Template: %s"
2213
  msgstr "Gabarit : %s"
2214
 
2215
- #: includes/ui.php:23
 
 
 
 
2216
  msgid "Page Builder Demo"
2217
  msgstr "Démo du constructeur de page"
2218
 
2219
- #: includes/ui.php:40
2220
  msgid "Buy Now!"
2221
  msgstr "Achetez maintenant!"
2222
 
2223
- #: includes/ui.php:42
2224
  msgid "Upgrade!"
2225
  msgstr "Mise à niveau!"
2226
 
2227
- #: includes/ui.php:45
2228
- msgid "Tools"
2229
- msgstr "Outils"
2230
-
2231
- #: includes/ui.php:67
2232
  msgid "Row Layouts"
2233
  msgstr "Présentation des rangées"
2234
 
2235
- #: includes/ui.php:71
2236
  msgid "1 Column"
2237
  msgstr "1 colonne"
2238
 
2239
- #: includes/ui.php:72
2240
  msgid "2 Columns"
2241
  msgstr "2 colonnes"
2242
 
2243
- #: includes/ui.php:73
2244
  msgid "3 Columns"
2245
  msgstr "3 colonnes"
2246
 
2247
- #: includes/ui.php:74
2248
  msgid "4 Columns"
2249
  msgstr "4 colonnes"
2250
 
2251
- #: includes/ui.php:75
2252
  msgid "5 Columns"
2253
  msgstr "5 colonnes"
2254
 
2255
- #: includes/ui.php:76
2256
  msgid "6 Columns"
2257
  msgstr "6 colonnes"
2258
 
2259
- #: includes/ui.php:77
2260
  msgid "Left Sidebar"
2261
  msgstr "Barre latérale de gauche"
2262
 
2263
- #: includes/ui.php:78
2264
  msgid "Right Sidebar"
2265
  msgstr "Barre latérale de droite"
2266
 
2267
- #: includes/ui.php:79
2268
  msgid "Left &amp; Right Sidebar"
2269
  msgstr "Barre latérale de gauche et droite"
2270
 
2271
- #: includes/updater/classes/class-fl-updater.php:107
2272
  msgid "<strong>UPDATE UNAVAILABLE!</strong>"
2273
  msgstr "<strong>MISE À JOUR NON DISPONIBLE !</strong>"
2274
 
2275
- #: includes/updater/classes/class-fl-updater.php:109
2276
  msgid "Please subscribe to enable automatic updates for this plugin."
2277
  msgstr ""
2278
  "Veuillez vous inscrire pour activer les mises à jour automatiques pour cette "
2279
  "extension."
2280
 
2281
- #: includes/updater/classes/class-fl-updater.php:111
2282
  #: includes/updater/includes/form.php:6
2283
  msgid "Subscribe Now"
2284
  msgstr "Abonnez vous maintenant"
@@ -2390,7 +3158,7 @@ msgid "Label"
2390
  msgstr "Étiquette"
2391
 
2392
  #: modules/accordion/accordion.php:122 modules/post-grid/post-grid.php:195
2393
- #: modules/post-grid/post-grid.php:199 modules/post-grid/post-grid.php:235
2394
  #: modules/tabs/tabs.php:89
2395
  msgid "Content"
2396
  msgstr "Contenu"
@@ -2398,6 +3166,7 @@ msgstr "Contenu"
2398
  #: modules/button/button.php:14 modules/callout/callout.php:479
2399
  #: modules/content-slider/content-slider.php:601 modules/cta/cta.php:214
2400
  #: modules/pricing-table/pricing-table.php:129
 
2401
  msgid "Button"
2402
  msgstr "Bouton"
2403
 
@@ -2424,7 +3193,7 @@ msgstr "Icône"
2424
  #: modules/content-slider/content-slider.php:600 modules/cta/cta.php:240
2425
  #: modules/heading/heading.php:43 modules/heading/heading.php:47
2426
  #: modules/icon-group/icon-group.php:139 modules/icon/icon.php:43
2427
- #: modules/slideshow/slideshow.php:343
2428
  msgid "Link"
2429
  msgstr "Lien"
2430
 
@@ -2463,6 +3232,7 @@ msgstr "Couleurs"
2463
  #: modules/callout/callout.php:514
2464
  #: modules/content-slider/content-slider.php:636 modules/cta/cta.php:270
2465
  #: modules/icon-group/icon-group.php:69 modules/icon/icon.php:100
 
2466
  msgid "Background Hover Color"
2467
  msgstr "Couleur pour survol de l'arrière-plan"
2468
 
@@ -2471,16 +3241,19 @@ msgstr "Couleur pour survol de l'arrière-plan"
2471
  #: modules/content-slider/content-slider.php:641
2472
  #: modules/content-slider/content-slider.php:754 modules/cta/cta.php:191
2473
  #: modules/cta/cta.php:279 modules/heading/heading.php:77
 
2474
  msgid "Text Color"
2475
  msgstr "Couleur du texte"
2476
 
2477
  #: modules/button/button.php:136 modules/callout/callout.php:529
2478
  #: modules/content-slider/content-slider.php:647 modules/cta/cta.php:285
 
2479
  msgid "Text Hover Color"
2480
  msgstr "Couleur pour survol du texte"
2481
 
2482
  #: modules/button/button.php:153 modules/callout/callout.php:546
2483
  #: modules/content-slider/content-slider.php:660 modules/cta/cta.php:302
 
2484
  msgid "Flat"
2485
  msgstr "Plat"
2486
 
@@ -2488,29 +3261,33 @@ msgstr "Plat"
2488
  #: modules/callout/callout.php:547
2489
  #: modules/content-slider/content-slider.php:661 modules/cta/cta.php:303
2490
  #: modules/icon-group/icon-group.php:77 modules/icon/icon.php:108
 
2491
  msgid "Gradient"
2492
  msgstr "Dégradé de couleur"
2493
 
2494
  #: modules/button/button.php:155 modules/callout/callout.php:548
2495
  #: modules/content-slider/content-slider.php:662 modules/cta/cta.php:304
 
2496
  msgid "Transparent"
2497
  msgstr "Transparent"
2498
 
2499
  #: modules/button/button.php:165 modules/callout/callout.php:558
2500
  #: modules/content-slider/content-slider.php:672 modules/cta/cta.php:314
2501
  #: modules/pricing-table/pricing-table.php:67
 
2502
  msgid "Border Size"
2503
  msgstr "Grosseur de la bordure"
2504
 
2505
  #: modules/button/button.php:174 modules/callout/callout.php:567
2506
  #: modules/content-slider/content-slider.php:681 modules/cta/cta.php:203
2507
- #: modules/cta/cta.php:323
2508
  msgid "Background Opacity"
2509
  msgstr "Opacité de l'arrière-plan"
2510
 
2511
  #: modules/button/button.php:184 modules/callout/callout.php:244
2512
  #: modules/cta/cta.php:104 modules/heading/heading.php:82
2513
  #: modules/icon-group/icon-group.php:87 modules/icon/icon.php:118
 
2514
  msgid "Structure"
2515
  msgstr "Structure"
2516
 
@@ -2533,11 +3310,12 @@ msgstr "Alignement"
2533
  #: modules/button/button.php:225 modules/callout/callout.php:590
2534
  #: modules/content-slider/content-slider.php:695 modules/cta/cta.php:337
2535
  #: modules/heading/heading.php:114 modules/heading/heading.php:171
 
2536
  msgid "Font Size"
2537
  msgstr "Grosseur de la police"
2538
 
2539
  #: modules/button/button.php:241 modules/callout/callout.php:606
2540
- #: modules/cta/cta.php:353
2541
  msgid "Round Corners"
2542
  msgstr "Coins ronds"
2543
 
@@ -2556,7 +3334,7 @@ msgstr "Un titre et extrait de texte avec l'option d'un lien, icône ou image."
2556
  #: modules/testimonials/testimonials.php:56
2557
  #: modules/testimonials/testimonials.php:61
2558
  msgid "Heading"
2559
- msgstr "Entête"
2560
 
2561
  #: modules/callout/callout.php:248
2562
  msgid "Overall Alignment"
@@ -2580,11 +3358,11 @@ msgstr "Balise titre"
2580
  #: modules/content-slider/content-slider.php:459 modules/cta/cta.php:164
2581
  #: modules/testimonials/testimonials.php:69
2582
  msgid "Heading Size"
2583
- msgstr "Grandeur de l'entête"
2584
 
2585
  #: modules/callout/callout.php:294 modules/cta/cta.php:178
2586
  msgid "Heading Custom Size"
2587
- msgstr "Grandeur personalisée de l'entête"
2588
 
2589
  #: modules/callout/callout.php:312
2590
  msgid "Image Type"
@@ -2596,7 +3374,7 @@ msgid "None"
2596
  msgstr "Aucune"
2597
 
2598
  #: modules/callout/callout.php:340 modules/photo/photo.php:401
2599
- #: modules/slideshow/slideshow.php:312
2600
  msgid "Crop"
2601
  msgstr "Recâdrage"
2602
 
@@ -2627,27 +3405,27 @@ msgstr "Cercle"
2627
 
2628
  #: modules/callout/callout.php:356 modules/callout/callout.php:376
2629
  msgid "Above Heading"
2630
- msgstr "Avant l'entête"
2631
 
2632
  #: modules/callout/callout.php:357 modules/callout/callout.php:377
2633
  msgid "Below Heading"
2634
- msgstr "Après l'entête"
2635
 
2636
  #: modules/callout/callout.php:358 modules/callout/callout.php:380
2637
  msgid "Left of Text and Heading"
2638
- msgstr "À gauche du texte et de l'entête"
2639
 
2640
  #: modules/callout/callout.php:359 modules/callout/callout.php:381
2641
  msgid "Right of Text and Heading"
2642
- msgstr "À droite du texte et de l'entête"
2643
 
2644
  #: modules/callout/callout.php:378
2645
  msgid "Left of Heading"
2646
- msgstr "À gauche de l'entête"
2647
 
2648
  #: modules/callout/callout.php:379
2649
  msgid "Right of Heading"
2650
- msgstr "À droite de l'entête"
2651
 
2652
  #: modules/callout/callout.php:387
2653
  msgid "Icon Colors"
@@ -2665,7 +3443,7 @@ msgstr "Structure de l'icône"
2665
  #: modules/callout/callout.php:431 modules/icon-group/icon-group.php:91
2666
  #: modules/icon/icon.php:122 modules/post-grid/post-grid.php:136
2667
  msgid "Size"
2668
- msgstr "Grandeur personalisée de l'entête"
2669
 
2670
  #: modules/callout/callout.php:442
2671
  #: modules/content-slider/content-slider.php:570
@@ -2694,21 +3472,25 @@ msgstr "Aucune"
2694
 
2695
  #: modules/callout/callout.php:498
2696
  #: modules/content-slider/content-slider.php:620
 
2697
  msgid "Button Icon"
2698
  msgstr "Icône du bouton"
2699
 
2700
  #: modules/callout/callout.php:504
2701
  #: modules/content-slider/content-slider.php:626 modules/cta/cta.php:260
 
2702
  msgid "Button Colors"
2703
  msgstr "Couleurs du bouton"
2704
 
2705
  #: modules/callout/callout.php:539
2706
  #: modules/content-slider/content-slider.php:653 modules/cta/cta.php:295
 
2707
  msgid "Button Style"
2708
  msgstr "Style du bouton"
2709
 
2710
  #: modules/callout/callout.php:577
2711
  #: modules/content-slider/content-slider.php:691 modules/cta/cta.php:333
 
2712
  msgid "Button Structure"
2713
  msgstr "Structure du bouton"
2714
 
@@ -2724,68 +3506,142 @@ msgstr "Formulaire de contact"
2724
  msgid "A very simple contact form."
2725
  msgstr "Un formulaire de contact très simple."
2726
 
2727
- #: modules/contact-form/contact-form.php:36
2728
  msgid "Contact Form Submission"
2729
  msgstr "Envoi du formulaire de contact"
2730
 
2731
- #: modules/contact-form/contact-form.php:64
 
 
 
 
 
2732
  msgid "Send To Email"
2733
  msgstr "Envoyez à un courriel"
2734
 
2735
- #: modules/contact-form/contact-form.php:66
2736
  msgid "example@mail.com"
2737
  msgstr "exemple@courriel.com"
2738
 
2739
- #: modules/contact-form/contact-form.php:67
2740
  msgid "The contact form will send to this e-mail"
2741
  msgstr "Le formulaire de contact enverra à cette adresse courriel"
2742
 
2743
- #: modules/contact-form/includes/frontend.php:4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2744
  msgctxt "Contact form field label."
2745
  msgid "Name"
2746
  msgstr "Nom"
2747
 
2748
- #: modules/contact-form/includes/frontend.php:5
 
2749
  msgid "Please enter your name."
2750
  msgstr "Prière d'entrer une adresse courriel valide"
2751
 
2752
- #: modules/contact-form/includes/frontend.php:6
2753
  msgid "Your name"
2754
  msgstr "Votre nom"
2755
 
2756
- #: modules/contact-form/includes/frontend.php:10
 
 
 
 
 
 
 
 
 
 
 
2757
  msgid "Email"
2758
  msgstr "Courriel"
2759
 
2760
- #: modules/contact-form/includes/frontend.php:11
2761
  msgid "Please enter a valid email."
2762
  msgstr "Prière d'entrer une adresse courriel valide"
2763
 
2764
- #: modules/contact-form/includes/frontend.php:12
2765
  msgid "Your email"
2766
  msgstr "Votre courriel"
2767
 
2768
- #: modules/contact-form/includes/frontend.php:16
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2769
  msgid "Your Message"
2770
  msgstr "Votre message"
2771
 
2772
- #: modules/contact-form/includes/frontend.php:17
2773
  msgid "Please enter a message."
2774
  msgstr "Prière d'entrer un message."
2775
 
2776
- #: modules/contact-form/includes/frontend.php:18
2777
  msgid "Your message"
2778
  msgstr "Votre message"
2779
 
2780
- #: modules/contact-form/includes/frontend.php:23
2781
  msgid "Send"
2782
  msgstr "Envoyer"
2783
 
2784
- #: modules/contact-form/includes/frontend.php:24
2785
  msgid "Message Sent!"
2786
  msgstr "Message envoyé!"
2787
 
2788
- #: modules/contact-form/includes/frontend.php:25
2789
  msgid "Message failed. Please try again."
2790
  msgstr "L'envoi du message a échouée. Merci de réessayer."
2791
 
@@ -2799,7 +3655,7 @@ msgstr ""
2799
  "Affiche plusieurs diapositives avec un titre facultatif et appel à l'action."
2800
 
2801
  #: modules/content-slider/content-slider.php:197 modules/map/map.php:41
2802
- #: modules/separator/separator.php:58 modules/slideshow/slideshow.php:294
2803
  msgid "Height"
2804
  msgstr "Hauteur"
2805
 
@@ -2812,7 +3668,7 @@ msgstr ""
2812
  "s'étendra automatiquement à la hauteur maximale."
2813
 
2814
  #: modules/content-slider/content-slider.php:206
2815
- #: modules/slideshow/slideshow.php:373
2816
  #: modules/testimonials/testimonials.php:82 modules/video/video.php:108
2817
  msgid "Auto Play"
2818
  msgstr "Lecture automatique"
@@ -3041,17 +3897,18 @@ msgid "Drop us a line today for a free quote!"
3041
  msgstr "Écrivez-nous aujourd'hui pour un devis gratuit !"
3042
 
3043
  #: modules/cta/cta.php:108 modules/gallery/gallery.php:220
3044
- #: modules/post-grid/post-grid.php:44 modules/tabs/tabs.php:52
 
3045
  #: modules/testimonials/testimonials.php:37
3046
  #: modules/woocommerce/woocommerce.php:57
3047
  msgid "Layout"
3048
  msgstr "Présentation"
3049
 
3050
- #: modules/cta/cta.php:111
3051
  msgid "Inline"
3052
  msgstr "En ligne"
3053
 
3054
- #: modules/cta/cta.php:112
3055
  msgid "Stacked"
3056
  msgstr "Empilé"
3057
 
@@ -3129,7 +3986,7 @@ msgstr ""
3129
  "l'image dans la médiathèque. Le sous-titre sera aussi obtenu directement de "
3130
  "SmugMug si vous utilisez les sous-titres dans votre galerie SmugMug."
3131
 
3132
- #: modules/gallery/gallery.php:289 modules/slideshow/slideshow.php:335
3133
  msgid "Click Action"
3134
  msgstr "Action du clic"
3135
 
@@ -3148,11 +4005,11 @@ msgstr "Lien photo"
3148
 
3149
  #: modules/heading/heading.php:15
3150
  msgid "Display a title/page heading."
3151
- msgstr "Montrer un titre / entête de page."
3152
 
3153
  #: modules/heading/heading.php:101
3154
  msgid "HTML Tag"
3155
- msgstr "Etiquette HTML"
3156
 
3157
  #: modules/heading/heading.php:128 modules/heading/heading.php:188
3158
  msgid "Custom Font Size"
@@ -3261,7 +4118,7 @@ msgstr ""
3261
  "pouvez choisir un lien (URL) spécifique, la photo individuelle ou une autre "
3262
  "page avec la photo."
3263
 
3264
- #: modules/photo/photo.php:471 modules/slideshow/slideshow.php:356
3265
  msgid "Link URL"
3266
  msgstr "Lien web (URL)"
3267
 
@@ -3325,18 +4182,6 @@ msgstr "Espacement de l'article"
3325
  msgid "Featured Image"
3326
  msgstr "Image en vedette"
3327
 
3328
- #: modules/post-grid/post-grid.php:116 modules/post-grid/post-grid.php:149
3329
- #: modules/post-grid/post-grid.php:158 modules/post-grid/post-grid.php:188
3330
- #: modules/post-grid/post-grid.php:202 modules/post-grid/post-grid.php:216
3331
- msgid "Show"
3332
- msgstr "Montrer"
3333
-
3334
- #: modules/post-grid/post-grid.php:117 modules/post-grid/post-grid.php:150
3335
- #: modules/post-grid/post-grid.php:159 modules/post-grid/post-grid.php:189
3336
- #: modules/post-grid/post-grid.php:203 modules/post-grid/post-grid.php:217
3337
- msgid "Hide"
3338
- msgstr "Cacher"
3339
-
3340
  #: modules/post-grid/post-grid.php:130
3341
  msgid "Above Text"
3342
  msgstr "Au dessus du texte"
@@ -3357,15 +4202,30 @@ msgstr "Format de date"
3357
  msgid "Comments"
3358
  msgstr "Commentaires"
3359
 
3360
- #: modules/post-grid/post-grid.php:213
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3361
  msgid "More Link"
3362
- msgstr "Plus de liens"
3363
 
3364
- #: modules/post-grid/post-grid.php:227
3365
  msgid "More Link Text"
3366
- msgstr "Plus de textes de lien"
3367
 
3368
- #: modules/post-grid/post-grid.php:228
3369
  msgid "Read More"
3370
  msgstr "Lire plus"
3371
 
@@ -3433,6 +4293,7 @@ msgid "Price Box"
3433
  msgstr "Boîte de prix"
3434
 
3435
  #: modules/pricing-table/pricing-table.php:111
 
3436
  msgid "Price"
3437
  msgstr "Prix"
3438
 
@@ -3449,6 +4310,7 @@ msgid "Price Size"
3449
  msgstr "Grosseur du prix"
3450
 
3451
  #: modules/pricing-table/pricing-table.php:133
 
3452
  msgid "Button Text"
3453
  msgstr "Texte du bouton"
3454
 
@@ -3525,21 +4387,21 @@ msgstr "Diaporama"
3525
  msgid "Display multiple photos in a slideshow view."
3526
  msgstr "Afficher plusieurs photos dans un affichage du diaporama."
3527
 
3528
- #: modules/slideshow/slideshow.php:302
3529
  msgid "Skin Color"
3530
  msgstr "Couleur de la peau humaine"
3531
 
3532
- #: modules/slideshow/slideshow.php:305
3533
  msgctxt "Color."
3534
  msgid "Light"
3535
  msgstr "Clair"
3536
 
3537
- #: modules/slideshow/slideshow.php:306
3538
  msgctxt "Color."
3539
  msgid "Dark"
3540
  msgstr "Foncé"
3541
 
3542
- #: modules/slideshow/slideshow.php:308
3543
  msgid ""
3544
  "If your overall theme/images are lighter in color, light will display "
3545
  "buttons in a darker color scheme and vice versa for dark."
@@ -3548,7 +4410,7 @@ msgstr ""
3548
  "l'option &laquo; clair &raquo; ajuste les boutons vers un jeu de couleurs "
3549
  "plus foncé et vice versa pour &laquo; Foncé &raquo;."
3550
 
3551
- #: modules/slideshow/slideshow.php:318
3552
  msgid ""
3553
  "Crop set to no will fit the slideshow images to the height you specify and "
3554
  "keep the width proportional, whereas crop set to yes will fit the slideshow "
@@ -3561,33 +4423,33 @@ msgstr ""
3561
  "contenu en recâdrant et coupant les côtés gauche et droit afin d'ajuster "
3562
  "l'image à la hauteur choisie."
3563
 
3564
- #: modules/slideshow/slideshow.php:322
3565
  msgid "Disable Right-Click"
3566
  msgstr "Désactiver le clic droit"
3567
 
3568
- #: modules/slideshow/slideshow.php:342
3569
  msgctxt "Click action type."
3570
  msgid "None"
3571
  msgstr "Aucune"
3572
 
3573
- #: modules/slideshow/slideshow.php:366
3574
  msgid "Playback"
3575
  msgstr "Lecture"
3576
 
3577
- #: modules/slideshow/slideshow.php:392
3578
  msgctxt "Slideshow transition."
3579
  msgid "None"
3580
  msgstr "Aucune"
3581
 
3582
- #: modules/slideshow/slideshow.php:429
3583
  msgid "Controls"
3584
  msgstr "Contrôles"
3585
 
3586
- #: modules/slideshow/slideshow.php:436 modules/slideshow/slideshow.php:485
3587
  msgid "Navigation Arrows"
3588
  msgstr "Flêches de navigation"
3589
 
3590
- #: modules/slideshow/slideshow.php:442
3591
  msgid ""
3592
  "Navigational arrows allow the visitor to freely move through the images in "
3593
  "your slideshow. These are larger arrows that overlay your slideshow images "
@@ -3598,68 +4460,68 @@ msgstr ""
3598
  "se superposent à vos images, indépendamment des flèches de navigation de la "
3599
  "barre de contrôle."
3600
 
3601
- #: modules/slideshow/slideshow.php:447
3602
  msgid "Control Bar"
3603
  msgstr "Barre de contrôle"
3604
 
3605
- #: modules/slideshow/slideshow.php:451
3606
  msgid "Nav Type"
3607
  msgstr "Type de navigation"
3608
 
3609
- #: modules/slideshow/slideshow.php:454
3610
  msgctxt "Nav type."
3611
  msgid "None"
3612
  msgstr "Aucune"
3613
 
3614
- #: modules/slideshow/slideshow.php:455
3615
  msgid "Buttons"
3616
  msgstr "Boutons"
3617
 
3618
- #: modules/slideshow/slideshow.php:456 modules/slideshow/slideshow.php:586
3619
  msgid "Thumbs"
3620
  msgstr "Miniatures"
3621
 
3622
- #: modules/slideshow/slideshow.php:471
3623
  msgid "Nav Position"
3624
  msgstr "Position de la navigation"
3625
 
3626
- #: modules/slideshow/slideshow.php:481
3627
  msgid "Control Bar Buttons"
3628
  msgstr "Boutons de la barre de contrôle"
3629
 
3630
- #: modules/slideshow/slideshow.php:494
3631
  msgid "Play Button"
3632
  msgstr "Bouton de lecture"
3633
 
3634
- #: modules/slideshow/slideshow.php:503
3635
  msgid "Fullscreen Button"
3636
  msgstr "Bouton plein-écran"
3637
 
3638
- #: modules/slideshow/slideshow.php:512
3639
  msgid "Photo Count"
3640
  msgstr "Nombre de photos"
3641
 
3642
- #: modules/slideshow/slideshow.php:521
3643
  msgid "Thumbs Button"
3644
  msgstr "Bouton des miniatures"
3645
 
3646
- #: modules/slideshow/slideshow.php:530
3647
  msgid "Caption Button"
3648
  msgstr "Bouton de sous-titre"
3649
 
3650
- #: modules/slideshow/slideshow.php:539
3651
  msgid "Social Button"
3652
  msgstr "Bouton"
3653
 
3654
- #: modules/slideshow/slideshow.php:549
3655
  msgid "Control Bar Overlay"
3656
  msgstr "Superposition de la barre de contrôle"
3657
 
3658
- #: modules/slideshow/slideshow.php:553
3659
  msgid "Overlay Enabled"
3660
  msgstr "Superposition activée"
3661
 
3662
- #: modules/slideshow/slideshow.php:564
3663
  msgid ""
3664
  "Control bar overlay specifies if the control bar buttons you choose overlay "
3665
  "your slideshow images or site below the slideshow completely."
@@ -3668,11 +4530,11 @@ msgstr ""
3668
  "boutons sélectionnée sera mise en superposition sur vos diapositives, ou "
3669
  "bien se situera en dessous du diaporama complètement."
3670
 
3671
- #: modules/slideshow/slideshow.php:568
3672
  msgid "Overlay Hide"
3673
  msgstr "Cacher la superposition"
3674
 
3675
- #: modules/slideshow/slideshow.php:574
3676
  msgid ""
3677
  "Overlay hide will hide the control bar after however many seconds you "
3678
  "specify below. They will reappear upon mouse over."
@@ -3681,31 +4543,31 @@ msgstr ""
3681
  "nombre de secondes spécifiées plus bas. Un survol de la souris fera "
3682
  "réapparaître le tout."
3683
 
3684
- #: modules/slideshow/slideshow.php:578
3685
  msgid "Overlay Hide Delay"
3686
  msgstr "Différer la disparition de la superposition"
3687
 
3688
- #: modules/slideshow/slideshow.php:590
3689
  msgid "Thumbs Size"
3690
  msgstr "Grosseur de la bordure"
3691
 
3692
- #: modules/slideshow/slideshow.php:599
3693
  msgid "Social"
3694
  msgstr "Social"
3695
 
3696
- #: modules/slideshow/slideshow.php:603
3697
  msgid "Facebook Button"
3698
  msgstr "Bouton Facebook"
3699
 
3700
- #: modules/slideshow/slideshow.php:615
3701
  msgid "Twitter Button"
3702
  msgstr "Bouton Twitter"
3703
 
3704
- #: modules/slideshow/slideshow.php:627
3705
  msgid "Google Plus Button"
3706
  msgstr "Bouton Google Plus"
3707
 
3708
- #: modules/slideshow/slideshow.php:639
3709
  msgid "Pinterest Button"
3710
  msgstr "Bouton Pinterest"
3711
 
@@ -3751,6 +4613,74 @@ msgstr "Montrer Twitter"
3751
  msgid "Show Google+"
3752
  msgstr "Montrer Google+"
3753
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3754
  #: modules/tabs/tabs.php:14
3755
  msgid "Tabs"
3756
  msgstr "Onglets"
@@ -3829,7 +4759,7 @@ msgid "Loop"
3829
  msgstr "Boucle"
3830
 
3831
  #: modules/widget/includes/frontend.php:35
3832
- #: modules/widget/includes/settings-general.php:44
3833
  #, php-format
3834
  msgctxt "%s stands for widget slug."
3835
  msgid "%s no longer exists."
@@ -3851,10 +4781,6 @@ msgstr "WooCommerce"
3851
  msgid "Display products or categories from your WooCommerce store."
3852
  msgstr "Montrer les produits ou catégories de votre magasin WooCommerce."
3853
 
3854
- #: modules/woocommerce/woocommerce.php:60
3855
- msgid "Choose..."
3856
- msgstr "Sélectionner"
3857
-
3858
  #: modules/woocommerce/woocommerce.php:61
3859
  msgid "Single Product"
3860
  msgstr "Un seul produit "
@@ -4012,13 +4938,50 @@ msgstr "Popularité"
4012
  msgid "Rating"
4013
  msgstr "Notation"
4014
 
4015
- #: modules/woocommerce/woocommerce.php:190
4016
- msgid "Price: Low to High"
4017
- msgstr "Prix : Bas à haut"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4018
 
4019
- #: modules/woocommerce/woocommerce.php:191
4020
- msgid "Price: High to Low"
4021
- msgstr "Prix : Haut à bas"
4022
 
4023
  #~ msgid ""
4024
  #~ "A custom CSS class that will be applied to this column. Spaces only, no "
1
  msgid ""
2
  msgstr ""
3
  "Project-Id-Version: {FL_BUILDER_NAME}\n"
4
+ "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2015-05-18 21:58-0500\n"
6
+ "PO-Revision-Date: 2015-05-22 15:27-0500\n"
7
+ "Last-Translator: Gerard Godin <gerard@getgointernetcoaching.com>\n"
8
  "Language-Team: \n"
9
  "Language: en_US\n"
10
  "MIME-Version: 1.0\n"
11
  "Content-Type: text/plain; charset=UTF-8\n"
12
  "Content-Transfer-Encoding: 8bit\n"
13
+ "X-Generator: Poedit 1.8\n"
14
  "X-Poedit-Basepath: ..\n"
15
  "X-Poedit-SourceCharset: UTF-8\n"
16
  "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;"
19
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
20
  "X-Poedit-SearchPath-0: .\n"
21
 
22
+ #: classes/class-fl-builder-admin-settings.php:116
23
  #: includes/global-settings.php:4
24
  #, php-format
25
  msgctxt "%s stands for custom branded \"Page Builder\" name."
26
  msgid "%s Settings"
27
  msgstr "Paramètres pour %s"
28
 
29
+ #: classes/class-fl-builder-admin-settings.php:133
30
  msgid "Settings updated!"
31
  msgstr "Paramètres mis à jour!"
32
 
33
+ #: classes/class-fl-builder-admin-settings.php:147
34
  msgid "License"
35
  msgstr "Licence"
36
 
37
+ #: classes/class-fl-builder-admin-settings.php:151
38
  #: includes/admin-settings-upgrade.php:3
39
  msgid "Upgrade"
40
  msgstr "Mise à niveau"
41
 
42
+ #: classes/class-fl-builder-admin-settings.php:155
43
  #: includes/global-settings.php:90
44
  msgid "Modules"
45
  msgstr "Modules"
46
 
47
+ #: classes/class-fl-builder-admin-settings.php:159 includes/ui.php:58
48
  msgid "Templates"
49
  msgstr "Gabarit"
50
 
51
+ #: classes/class-fl-builder-admin-settings.php:163
52
  #: includes/admin-settings-post-types.php:3
53
  msgid "Post Types"
54
  msgstr "Post Types"
55
 
56
+ #: classes/class-fl-builder-admin-settings.php:167
57
  #: modules/icon-group/icon-group.php:27
58
  msgid "Icons"
59
  msgstr "Icônes"
60
 
61
+ #: classes/class-fl-builder-admin-settings.php:171
62
  msgid "Editing"
63
  msgstr "Édition"
64
 
65
+ #: classes/class-fl-builder-admin-settings.php:175
66
  #: includes/admin-settings-branding.php:3
67
  msgid "Branding"
68
  msgstr "Branding (Image de marque)"
69
 
70
+ #: classes/class-fl-builder-admin-settings.php:179
71
  msgid "Help Button"
72
  msgstr "Bouton d'aide"
73
 
74
+ #: classes/class-fl-builder-admin-settings.php:183
75
+ #: includes/admin-settings-cache.php:3
76
+ #, fuzzy
77
+ msgid "Cache"
78
+ msgstr "Cache"
79
+
80
+ #: classes/class-fl-builder-admin-settings.php:187
81
  #: includes/admin-settings-uninstall.php:3
82
  #: includes/admin-settings-uninstall.php:15
83
  msgid "Uninstall"
84
  msgstr "Désinstaller"
85
 
86
+ #: classes/class-fl-builder-admin-settings.php:439
87
  msgid "Error! You must have at least one icon set enabled."
88
  msgstr "Erreur! Vous devez avoir au moins un ensemble d'icônes actif."
89
 
90
+ #: classes/class-fl-builder-admin-settings.php:481
91
  msgid "Error! Could not unzip file."
92
  msgstr "Erreur! Incapable de décompresser le fichier."
93
 
94
+ #: classes/class-fl-builder-admin-settings.php:515
95
  msgid "Error! Please upload an icon set from either Icomoon or Fontello."
96
  msgstr ""
97
  "Erreur! Téléchargez un ensemble d'icônes à partir de Icomoon ou Fontello."
98
 
99
+ #: classes/class-fl-builder-admin-settings.php:618
100
  msgid "Error! Please enter an iframe for the video embed code."
101
  msgstr ""
102
  "Erreur! Entrez un &laquo; iframe &raquo; pour le code d'encastrage du vidéo"
103
 
104
+ #: classes/class-fl-builder-admin-settings.php:636
105
  msgid "Error! You must have at least one feature of the help button enabled."
106
  msgstr ""
107
  "Erreur! Vous devez avoir au moins une des caractéristiques du bouton d'aide "
108
  "active."
109
 
110
+ #: classes/class-fl-builder-admin.php:45
111
  #, php-format
112
  msgid ""
113
  "This version of the <strong>Page Builder</strong> plugin is not compatible "
118
  "compatible avec WordPress Multisite. <a%s>S'il vous plaît, mettez à niveau</"
119
  "a> vers la version multisite de l'extension."
120
 
121
+ #: classes/class-fl-builder-admin.php:55
122
  msgid ""
123
  "The <strong>Page Builder</strong> plugin requires WordPress version 3.5 or "
124
  "greater. Please update WordPress before activating the plugin."
126
  "<strong>Beaver Builder</strong> requiert WordPress version 3.5 ou plus. "
127
  "Mettez à niveau votre version de WordPress avant d'activer l'extension."
128
 
129
+ #: classes/class-fl-builder-admin.php:112
130
  #, php-format
131
  msgid "Page Builder activated! <a%s>Click here</a> to enable remote updates."
132
  msgstr ""
133
  "Beaver Builder est activé. <a%s>Cliquez ici</a> afin de permettre les mises "
134
  "à jour à distance."
135
 
136
+ #: classes/class-fl-builder-admin.php:238
137
  msgctxt "Plugin action link label."
138
  msgid "Upgrade"
139
  msgstr "Mise à niveau"
140
 
141
+ #: classes/class-fl-builder-admin.php:253
142
+ #: classes/class-fl-builder-model.php:3113
143
  msgid "Page Builder"
144
  msgstr "Constructeur de page"
145
 
146
+ #: classes/class-fl-builder-model.php:1605
147
  #, php-format
148
  msgctxt "%s stands for the module filename"
149
  msgid ""
154
  "espace de nommage (namespace) pour les fichiers de votre module afin "
155
  "d'assurer la compatibilité avec Beaver Builder."
156
 
157
+ #: classes/class-fl-builder-model.php:1652
158
+ #: classes/class-fl-builder-model.php:1710 modules/heading/heading.php:16
159
  #: modules/photo/photo.php:27 modules/rich-text/rich-text.php:16
160
  #: modules/separator/separator.php:16 modules/video/video.php:21
161
  msgid "Basic Modules"
162
  msgstr "Extensions de base"
163
 
164
+ #: classes/class-fl-builder-model.php:1653
165
+ #: classes/class-fl-builder-model.php:1711 modules/accordion/accordion.php:16
166
  #: modules/button/button.php:16 modules/callout/callout.php:16
167
  #: modules/contact-form/contact-form.php:16
168
  #: modules/content-slider/content-slider.php:16 modules/cta/cta.php:16
171
  #: modules/map/map.php:16 modules/post-grid/post-grid.php:16
172
  #: modules/pricing-table/pricing-table.php:16 modules/sidebar/sidebar.php:16
173
  #: modules/slideshow/slideshow.php:16
174
+ #: modules/social-buttons/social-buttons.php:16
175
+ #: modules/subscribe-form/subscribe-form.php:20 modules/tabs/tabs.php:16
176
  #: modules/testimonials/testimonials.php:16
177
  #: modules/woocommerce/woocommerce.php:18
178
  msgid "Advanced Modules"
179
  msgstr "Extensions avancées"
180
 
181
+ #: classes/class-fl-builder-model.php:1654
182
+ #: classes/class-fl-builder-model.php:1712
183
  msgid "Other Modules"
184
  msgstr "Autres modules"
185
 
186
+ #: classes/class-fl-builder-model.php:1655
187
+ #: classes/class-fl-builder-model.php:1713
188
+ #: includes/admin-settings-modules.php:32 includes/ui.php:99
189
  #: modules/widget/widget.php:16
190
  msgid "WordPress Widgets"
191
  msgstr "Widgets de WordPress"
192
 
193
+ #: classes/class-fl-builder-model.php:2302
194
  #, php-format
195
  msgctxt "%s stands for post/page title."
196
  msgid "Copy of %s"
197
  msgstr "Copie de %s"
198
 
199
+ #: classes/class-fl-builder-model.php:2715
200
+ msgctxt "Default user template category."
201
+ msgid "Uncategorized"
202
+ msgstr "Non-catégorisée"
203
+
204
+ #: classes/class-fl-builder-model.php:3070
205
+ msgid "Home Pages"
206
+ msgstr "Pages d'accueil"
207
+
208
+ #: classes/class-fl-builder-model.php:3071
209
+ msgid "Content Pages"
210
+ msgstr "Pages de contenu"
211
+
212
+ #: classes/class-fl-builder-photo.php:95
213
+ #: classes/class-fl-builder-photo.php:100
214
  msgctxt "Image size."
215
  msgid "Full Size"
216
  msgstr "Pleine grandeur"
217
 
218
+ #: classes/class-fl-builder-photo.php:101
219
  msgctxt "Image size."
220
  msgid "Large"
221
  msgstr "Grande"
222
 
223
+ #: classes/class-fl-builder-photo.php:102
224
  msgctxt "Image size."
225
  msgid "Medium"
226
  msgstr "Moyenne"
227
 
228
+ #: classes/class-fl-builder-photo.php:103
229
  msgctxt "Image size."
230
  msgid "Thumbnail"
231
  msgstr "Vignette"
232
 
233
+ #: classes/class-fl-builder-service-aweber.php:72
234
+ #, fuzzy
235
+ msgid "Error: You must provide an Authorization Code."
236
+ msgstr "Erreur : Vous devez fournir un code d'autorisation."
237
+
238
+ #: classes/class-fl-builder-service-aweber.php:76
239
+ #, fuzzy
240
+ msgid "Error: Please enter a valid Authorization Code."
241
+ msgstr "Erreur : Entrer un code d'autorisation valide."
242
+
243
+ #: classes/class-fl-builder-service-aweber.php:127
244
+ #, fuzzy
245
+ msgid "Authorization Code"
246
+ msgstr "Code d'autorisation"
247
+
248
+ #: classes/class-fl-builder-service-aweber.php:128
249
+ #, fuzzy, php-format
250
+ msgid ""
251
+ "Please register this website with AWeber to get your Authorization Code. <a"
252
+ "%s>Register Now</a>"
253
+ msgstr ""
254
+ "Enregistrer ce site avec AWeber pour obtenir votre code d'autorisation. <a"
255
+ "%s>Enregistrement</a>"
256
+
257
+ #: classes/class-fl-builder-service-aweber.php:182
258
+ #: classes/class-fl-builder-service-campaign-monitor.php:148
259
+ #: classes/class-fl-builder-service-campaign-monitor.php:199
260
+ #: classes/class-fl-builder-service-constant-contact.php:156
261
+ #: classes/class-fl-builder-service-getresponse.php:154
262
+ #: classes/class-fl-builder-service-icontact.php:207
263
+ #: classes/class-fl-builder-service-infusionsoft.php:204
264
+ #: classes/class-fl-builder-service-madmimi.php:178
265
+ #: classes/class-fl-builder-service-mailchimp.php:154
266
+ #: classes/class-fl-builder-service-mailpoet.php:92
267
+ #: classes/class-fl-builder-service-sendinblue.php:161
268
+ #: classes/class-fl-builder-services.php:278 includes/service-settings.php:21
269
+ #: modules/woocommerce/woocommerce.php:60
270
+ msgid "Choose..."
271
+ msgstr "Sélectionner"
272
+
273
+ #: classes/class-fl-builder-service-aweber.php:192
274
+ #: classes/class-fl-builder-service-campaign-monitor.php:209
275
+ #: classes/class-fl-builder-service-constant-contact.php:166
276
+ #: classes/class-fl-builder-service-getresponse.php:164
277
+ #: classes/class-fl-builder-service-icontact.php:217
278
+ #: classes/class-fl-builder-service-infusionsoft.php:214
279
+ #: classes/class-fl-builder-service-madmimi.php:188
280
+ #: classes/class-fl-builder-service-mailchimp.php:164
281
+ #: classes/class-fl-builder-service-mailpoet.php:102
282
+ #: classes/class-fl-builder-service-sendinblue.php:171
283
+ #, fuzzy
284
+ msgctxt "An email list from a third party provider."
285
+ msgid "List"
286
+ msgstr "Liste"
287
+
288
+ #: classes/class-fl-builder-service-aweber.php:219
289
+ #, fuzzy
290
+ msgid ""
291
+ "There was an error subscribing to AWeber. The account is no longer connected."
292
+ msgstr ""
293
+ "Une erreur s'est produite durant l'inscription à \"AWeber\". Ce compte n'est "
294
+ "plus connecté."
295
+
296
+ #: classes/class-fl-builder-service-aweber.php:242
297
+ msgid "There was an error connecting to AWeber. Please try again."
298
+ msgstr ""
299
+ "Une erreur s'est produite durant la connexion à AWeber. Essayez à nouveau."
300
+
301
+ #: classes/class-fl-builder-service-aweber.php:247
302
+ #, fuzzy, php-format
303
+ msgid "There was an error subscribing to AWeber. %s"
304
+ msgstr "Une erreur s'est produite durant l'abonnement à AWeber. %s"
305
+
306
+ #: classes/class-fl-builder-service-campaign-monitor.php:55
307
+ #: classes/class-fl-builder-service-constant-contact.php:48
308
+ #: classes/class-fl-builder-service-getresponse.php:67
309
+ #: classes/class-fl-builder-service-hatchbuck.php:48
310
+ #: classes/class-fl-builder-service-infusionsoft.php:79
311
+ #: classes/class-fl-builder-service-madmimi.php:73
312
+ #: classes/class-fl-builder-service-mailchimp.php:67
313
+ #, fuzzy
314
+ msgid "Error: You must provide an API key."
315
+ msgstr "Erreur : Vous devez fournir une clé API."
316
+
317
+ #: classes/class-fl-builder-service-campaign-monitor.php:67
318
+ #: classes/class-fl-builder-service-campaign-monitor.php:129
319
+ #: classes/class-fl-builder-service-getresponse.php:76
320
+ #: classes/class-fl-builder-service-getresponse.php:132
321
+ #: classes/class-fl-builder-service-hatchbuck.php:63
322
+ #, fuzzy
323
+ msgid "Error: Please check your API key."
324
+ msgstr "Erreur : Prière de valider votre clé API."
325
+
326
+ #: classes/class-fl-builder-service-campaign-monitor.php:88
327
+ #: classes/class-fl-builder-service-constant-contact.php:88
328
+ #: classes/class-fl-builder-service-getresponse.php:100
329
+ #: classes/class-fl-builder-service-hatchbuck.php:87
330
+ #: classes/class-fl-builder-service-infusionsoft.php:129
331
+ #: classes/class-fl-builder-service-madmimi.php:121
332
+ #: classes/class-fl-builder-service-mailchimp.php:100
333
+ #, fuzzy
334
+ msgid "API Key"
335
+ msgstr "Clé API"
336
+
337
+ #: classes/class-fl-builder-service-campaign-monitor.php:89
338
+ #, fuzzy
339
+ msgid ""
340
+ "Your API key can be found in your Campaign Monitor account under Account "
341
+ "Settings > API Key."
342
+ msgstr ""
343
+ "Votre clé API se trouve dans votre compte \"Campaign Monitor\" sous "
344
+ "\"Account Settings > API Key\"."
345
+
346
+ #: classes/class-fl-builder-service-campaign-monitor.php:158
347
+ #, fuzzy
348
+ msgctxt "A client account in Campaign Monitor."
349
+ msgid "Client"
350
+ msgstr "Client"
351
+
352
+ #: classes/class-fl-builder-service-campaign-monitor.php:236
353
+ #, fuzzy
354
+ msgid ""
355
+ "There was an error subscribing to Campaign Monitor. The account is no longer "
356
+ "connected."
357
+ msgstr ""
358
+ "Une erreur s'est produite durant l'inscription à \"Campaign Monitor\". Ce "
359
+ "compte n'est plus connecté."
360
+
361
+ #: classes/class-fl-builder-service-campaign-monitor.php:253
362
+ #, fuzzy
363
+ msgid "There was an error subscribing to Campaign Monitor."
364
+ msgstr "Une erreur s'est produite durant l'inscription à \"Campaign Monitor\""
365
+
366
+ #: classes/class-fl-builder-service-constant-contact.php:52
367
+ #, fuzzy
368
+ msgid "Error: You must provide an access token."
369
+ msgstr "Erreur : Vous devez fournir un jeton d'accès"
370
+
371
+ #: classes/class-fl-builder-service-constant-contact.php:61
372
+ #: classes/class-fl-builder-service-constant-contact.php:134
373
+ #, fuzzy, php-format
374
+ msgid "Error: Could not connect to Constant Contact. %s"
375
+ msgstr "Erreur : Incapable de connecter à \"Constant Contact\". %s"
376
+
377
+ #: classes/class-fl-builder-service-constant-contact.php:89
378
+ #, fuzzy
379
+ msgid "Your Constant Contact API key."
380
+ msgstr "Votre clé API de \"Constant Contact\""
381
+
382
+ #: classes/class-fl-builder-service-constant-contact.php:99
383
+ #, fuzzy
384
+ msgid "Access Token"
385
+ msgstr "Jeton d'accès"
386
+
387
+ #: classes/class-fl-builder-service-constant-contact.php:100
388
+ #, fuzzy
389
+ msgid "Your Constant Contact access token."
390
+ msgstr "Votre jeton d'accès de \"Constant Contact\""
391
+
392
+ #: classes/class-fl-builder-service-constant-contact.php:101
393
+ #, fuzzy, php-format
394
+ msgid ""
395
+ "You must register a <a%s>Developer Account</a> with Constant Contact to "
396
+ "obtain an API key and access token. Please see <a%s>Getting an API key</a> "
397
+ "for complete instructions."
398
+ msgstr ""
399
+ "Vous devez vous enregistrer comme <a%s>développeur</a> avec \"Constant "
400
+ "Contact\" afin d'obtenir une clé API et un jeton d'accès. Consultez <a"
401
+ "%s>Getting an API key</a> pour les instructions complètes."
402
+
403
+ #: classes/class-fl-builder-service-constant-contact.php:193
404
+ #, fuzzy
405
+ msgid ""
406
+ "There was an error subscribing to Constant Contact. The account is no longer "
407
+ "connected."
408
+ msgstr ""
409
+ "Erreur d'abonnement avec \"Constant Contact\". Le compte n'est plus connecté."
410
+
411
+ #: classes/class-fl-builder-service-constant-contact.php:245
412
+ #: classes/class-fl-builder-service-constant-contact.php:279
413
+ #, fuzzy, php-format
414
+ msgid "There was an error subscribing to Constant Contact. %s"
415
+ msgstr "Erreur d'abonnement avec \"Constant Contact\". %s"
416
+
417
+ #: classes/class-fl-builder-service-getresponse.php:101
418
+ #, fuzzy
419
+ msgid ""
420
+ "Your API key can be found in your GetResponse account under My Account > "
421
+ "GetResponse API."
422
+ msgstr ""
423
+ "Votre clé API se trouve dans votre compte \"GetResponse\" sous \"Account > "
424
+ "GetResponse API\"."
425
+
426
+ #: classes/class-fl-builder-service-getresponse.php:191
427
+ #, fuzzy
428
+ msgid ""
429
+ "There was an error subscribing to GetResponse. The account is no longer "
430
+ "connected."
431
+ msgstr ""
432
+ "Une erreur s'est produite durant l'inscription à \"GetResponse\". Ce compte "
433
+ "n'est plus connecté."
434
+
435
+ #: classes/class-fl-builder-service-getresponse.php:202
436
+ #, fuzzy, php-format
437
+ msgid "There was an error subscribing to GetResponse. %s"
438
+ msgstr "Une erreur s'est produite durant l'inscription à \"GetResponse\". %s"
439
+
440
+ #: classes/class-fl-builder-service-hatchbuck.php:88
441
+ msgid ""
442
+ "Your API key can be found in your Hatchbuck account under Account Settings > "
443
+ "Web API."
444
+ msgstr ""
445
+ "Votre clé API se trouve dans votre compte \\”Hatchbuck\\” sous \\”Account "
446
+ "Settings > Web API\\”."
447
+
448
+ #: classes/class-fl-builder-service-hatchbuck.php:134
449
+ msgctxt "A tag to add to contacts in Hatchbuck when they subscribe."
450
+ msgid "Tag"
451
+ msgstr "Balise"
452
+
453
+ #: classes/class-fl-builder-service-hatchbuck.php:161
454
+ msgid ""
455
+ "There was an error subscribing to Hatchbuck. The account is no longer "
456
+ "connected."
457
+ msgstr ""
458
+ "Une erreur s’est produite durant l’inscription à \\”Hatchbuck\\”. Ce compte "
459
+ "n’est plus connecté."
460
+
461
+ #: classes/class-fl-builder-service-hatchbuck.php:190
462
+ msgid "There was an error subscribing to Hatchbuck. The API key is invalid."
463
+ msgstr ""
464
+ "Une erreur s’est produite durant l’inscription à Hatchbuck. Le jeton d’accès "
465
+ "API est non-valide."
466
+
467
+ #: classes/class-fl-builder-service-hatchbuck.php:200
468
+ #: classes/class-fl-builder-service-hatchbuck.php:232
469
+ msgid "There was an error subscribing to Hatchbuck."
470
+ msgstr "Une erreur s’est produite durant l’abonnement à Hatchbuck."
471
+
472
+ #: classes/class-fl-builder-service-icontact.php:75
473
+ #, fuzzy
474
+ msgid "Error: You must provide a username."
475
+ msgstr "Erreur : Vous devez fournir un nom d'usager"
476
+
477
+ #: classes/class-fl-builder-service-icontact.php:79
478
+ #, fuzzy
479
+ msgid "Error: You must provide a app ID."
480
+ msgstr "Erreur : Vous devez fournir un ID pour votre app"
481
+
482
+ #: classes/class-fl-builder-service-icontact.php:83
483
+ #, fuzzy
484
+ msgid "Error: You must provide a app password."
485
+ msgstr "Erreur : Vous devez fournir un mot de passe pour votre app"
486
+
487
+ #: classes/class-fl-builder-service-icontact.php:104
488
+ #: classes/class-fl-builder-service-icontact.php:188
489
+ #, fuzzy, php-format
490
+ msgid "Error: Could not connect to iContact. %s"
491
+ msgstr "Erreur : Impossible de se connecter à iContact. %s"
492
+
493
+ #: classes/class-fl-builder-service-icontact.php:125
494
+ #, fuzzy
495
+ msgid "Username"
496
+ msgstr "Nom d'usager"
497
+
498
+ #: classes/class-fl-builder-service-icontact.php:126
499
+ #, fuzzy
500
+ msgid "Your iContact username."
501
+ msgstr "Nom d'usager pour votre app iContact"
502
+
503
+ #: classes/class-fl-builder-service-icontact.php:136
504
+ #: classes/class-fl-builder-service-infusionsoft.php:118
505
+ #, fuzzy
506
+ msgid "App ID"
507
+ msgstr "ID pour votre app"
508
+
509
+ #: classes/class-fl-builder-service-icontact.php:137
510
+ #, fuzzy
511
+ msgid "Your iContact app ID."
512
+ msgstr "ID pour votre app iContact"
513
+
514
+ #: classes/class-fl-builder-service-icontact.php:147
515
+ #, fuzzy
516
+ msgid "App Password"
517
+ msgstr "Mot de passe pour votre app"
518
+
519
+ #: classes/class-fl-builder-service-icontact.php:148
520
+ #, fuzzy
521
+ msgid "Your iContact app password."
522
+ msgstr "Mot de passe pour votre app iContact."
523
+
524
+ #: classes/class-fl-builder-service-icontact.php:149
525
+ #, fuzzy, php-format
526
+ msgid ""
527
+ "You must <a%s>create an app</a> in iContact to obtain an app ID and "
528
+ "password. Please see <a%s>the iContact docs</a> for complete instructions."
529
+ msgstr ""
530
+ "Vous devez <a%s>créer un app</a> dans \"iContact\" afin d'obtenir un ID et "
531
+ "mot de passe pour l'app. Visitez la <a%s>documentation pour iContact</a> "
532
+ "afin d'obtenir les instructions complètes."
533
+
534
+ #: classes/class-fl-builder-service-icontact.php:244
535
+ #, fuzzy
536
+ msgid ""
537
+ "There was an error subscribing to iContact. The account is no longer "
538
+ "connected."
539
+ msgstr ""
540
+ "Une erreur s'est produite durant l'inscription à \"iContact\". Ce compte "
541
+ "n'est plus connecté."
542
+
543
+ #: classes/class-fl-builder-service-icontact.php:280
544
+ #, fuzzy, php-format
545
+ msgid "There was an error subscribing to iContact. %s"
546
+ msgstr "Une erreur s'est produite durant l'inscription à \"iContact\". %s"
547
+
548
+ #: classes/class-fl-builder-service-infusionsoft.php:49
549
+ #, php-format
550
+ msgid "There was an error connecting to Infusionsoft. %s"
551
+ msgstr "Une erreur s’est produite durant la connexion à InfusionSoft. %s"
552
+
553
+ #: classes/class-fl-builder-service-infusionsoft.php:83
554
+ #, fuzzy
555
+ msgid "Error: You must provide an app ID."
556
+ msgstr "Erreur : Vous devez fournir un ID pour votre app"
557
+
558
+ #: classes/class-fl-builder-service-infusionsoft.php:119
559
+ msgid ""
560
+ "Your App ID can be found in the URL for your account. For example, if the "
561
+ "URL for your account is myaccount.infusionsoft.com, your App ID would be "
562
+ "<strong>myaccount</strong>."
563
+ msgstr ""
564
+ "Votre identifiant d’App se trouve dans le URL de votre compte. par exemple, "
565
+ "si le URL de votre compte est moncompte.infusionsoft.com, votre identifiant "
566
+ "serait <strong>moncompte</strong>."
567
+
568
+ #: classes/class-fl-builder-service-infusionsoft.php:130
569
+ msgid ""
570
+ "Your API key can be found in your Infusionsoft account under Admin > "
571
+ "Settings > Application > API > Encrypted Key."
572
+ msgstr ""
573
+ "Votre clé API se trouve dans votre compte \\”Infusionsoft\\” sous \\”Admin "
574
+ "> Settings > Application > API > Encrypted Key\\”."
575
+
576
+ #: classes/class-fl-builder-service-infusionsoft.php:242
577
+ msgid ""
578
+ "There was an error subscribing to Infusionsoft. The account is no longer "
579
+ "connected."
580
+ msgstr ""
581
+ "Une erreur s’est produite durant l’inscription à \\”Infusionsoft\\”. Ce "
582
+ "compte n’est plus connecté."
583
+
584
+ #: classes/class-fl-builder-service-infusionsoft.php:291
585
+ #, php-format
586
+ msgid "There was an error subscribing to Infusionsoft. %s"
587
+ msgstr ""
588
+ "Une erreur s’est produite durant l’inscription à \\”InfusionSoft\\”. %s"
589
+
590
+ #: classes/class-fl-builder-service-madmimi.php:69
591
+ #, fuzzy
592
+ msgid "Error: You must provide an email address."
593
+ msgstr "Erreur : Vous devez fournir une adresse courriel."
594
+
595
+ #: classes/class-fl-builder-service-madmimi.php:83
596
+ #, fuzzy
597
+ msgid "Unable to connect to Mad Mimi. Please check your credentials."
598
+ msgstr ""
599
+ "Incapable de connecter à \"Mad Mimi\". Prière de valider vos identifiants."
600
+
601
+ #: classes/class-fl-builder-service-madmimi.php:110
602
+ #: modules/subscribe-form/includes/frontend.php:11
603
+ #, fuzzy
604
+ msgid "Email Address"
605
+ msgstr "Adresse courriel"
606
+
607
+ #: classes/class-fl-builder-service-madmimi.php:111
608
+ #, fuzzy
609
+ msgid "The email address associated with your Mad Mimi account."
610
+ msgstr "L'adresse courriel associée à votre compte \"Mad Mimi\"."
611
+
612
+ #: classes/class-fl-builder-service-madmimi.php:122
613
+ #, fuzzy
614
+ msgid ""
615
+ "Your API key can be found in your Mad Mimi account under Account > Settings "
616
+ "&amp; Billing > API."
617
+ msgstr ""
618
+ "Votre clé API se trouve dans votre compte \"Mad Mimi\" sous \"Account > "
619
+ "Settings &amp; Billing > API\"."
620
+
621
+ #: classes/class-fl-builder-service-madmimi.php:156
622
+ #, fuzzy
623
+ msgid ""
624
+ "There was a problem retrieving your lists. Please check your API credentials."
625
+ msgstr ""
626
+ "Une erreur s'est produite durant la récupération de vos listes. Prière de "
627
+ "vérifier vos identifiants API."
628
+
629
+ #: classes/class-fl-builder-service-madmimi.php:215
630
+ #: classes/class-fl-builder-service-madmimi.php:242
631
+ #, fuzzy
632
+ msgid ""
633
+ "There was an error subscribing to Mad Mimi. The account is no longer "
634
+ "connected."
635
+ msgstr ""
636
+ "Une erreur s'est produite durant l'inscription à \"Mad Mimi\". Ce compte "
637
+ "n'est plus connecté."
638
+
639
+ #: classes/class-fl-builder-service-mailchimp.php:101
640
+ msgid ""
641
+ "Your API key can be found in your MailChimp account under Account > Extras > "
642
+ "API Keys."
643
+ msgstr ""
644
+ "Votre clé API se trouve dans votre compte “MailChimp” sous “Account > Extras "
645
+ "> API Keys”."
646
+
647
+ #: classes/class-fl-builder-service-mailchimp.php:191
648
+ #, fuzzy
649
+ msgid ""
650
+ "There was an error subscribing to MailChimp. The account is no longer "
651
+ "connected."
652
+ msgstr ""
653
+ "Une erreur s'est produite durant l'inscription à \"MailChimp\". Ce compte "
654
+ "n'est plus connecté."
655
+
656
+ #: classes/class-fl-builder-service-mailchimp.php:221
657
+ #, fuzzy, php-format
658
+ msgid "There was an error subscribing to MailChimp. %s"
659
+ msgstr "Une erreur s'est produite durant l'inscription à \"MailChimp\". %s"
660
+
661
+ # Erreur in english
662
+ #: classes/class-fl-builder-service-mailpoet.php:73
663
+ #, fuzzy
664
+ msgid "There was an error retrieveing your lists."
665
+ msgstr "Une erreur s'est produite durant la récupération des listes."
666
+
667
+ #: classes/class-fl-builder-service-mailpoet.php:129
668
+ #, fuzzy
669
+ msgid "There was an error subscribing. MailPoet is not installed."
670
+ msgstr ""
671
+ "Une erreur s'est produite durant l'inscription. \"MailPoet\" n'est pas "
672
+ "installé."
673
+
674
+ #: classes/class-fl-builder-service-sendinblue.php:67
675
+ msgid "Error: You must provide an Access Key."
676
+ msgstr "Erreur : Vous devez fournir une clé d’accès."
677
+
678
+ #: classes/class-fl-builder-service-sendinblue.php:76
679
+ #: classes/class-fl-builder-service-sendinblue.php:136
680
+ msgid "There was an error connecting to SendinBlue. Please try again."
681
+ msgstr ""
682
+ "Une erreur s’est produite durant la connexion à SendinBlue. Essayez à "
683
+ "nouveau."
684
+
685
+ #: classes/class-fl-builder-service-sendinblue.php:79
686
+ #: classes/class-fl-builder-service-sendinblue.php:139
687
+ #, php-format
688
+ msgid "Error: Could not connect to SendinBlue. %s"
689
+ msgstr "Erreur! Incapable de connecter à SendinBlue. %s"
690
+
691
+ #: classes/class-fl-builder-service-sendinblue.php:103
692
+ msgid "Access Key"
693
+ msgstr "Clé d’accès"
694
+
695
+ #: classes/class-fl-builder-service-sendinblue.php:104
696
+ msgid ""
697
+ "Your Access Key can be found in your SendinBlue account under API & "
698
+ "Integration > Manager Your Keys > Version 2.0 > Access Key."
699
+ msgstr ""
700
+ "Votre clé d’accès se trouve dans votre compte SendinBlue sous “API & "
701
+ "Integration > Manager Your Keys > Version 2.0 > Access Key”."
702
+
703
+ #: classes/class-fl-builder-service-sendinblue.php:198
704
+ msgid ""
705
+ "There was an error subscribing to SendinBlue. The account is no longer "
706
+ "connected."
707
+ msgstr ""
708
+ "Une erreur s’est produite durant l’inscription à SendinBlue. Ce compte n’est "
709
+ "plus connecté."
710
+
711
+ #: classes/class-fl-builder-service-sendinblue.php:220
712
+ msgid "There was an error subscribing to SendinBlue. Please try again."
713
+ msgstr ""
714
+ "Une erreur s’est produite durant l’inscription à SendinBlue. Essayez à "
715
+ "nouveau."
716
+
717
+ #: classes/class-fl-builder-service-sendinblue.php:223
718
+ #, php-format
719
+ msgid "Error: Could not subscribe to SendinBlue. %s"
720
+ msgstr "Erreur! Incapable de s’abonner à SendinBlue. %s"
721
+
722
+ #: classes/class-fl-builder-services.php:148
723
+ #, fuzzy
724
+ msgctxt "Third party service such as MailChimp."
725
+ msgid "Error: Missing service type."
726
+ msgstr "Erreur : Type de service absent."
727
+
728
+ #: classes/class-fl-builder-services.php:151
729
+ #, fuzzy
730
+ msgctxt "Connection data such as an API key."
731
+ msgid "Error: Missing service data."
732
+ msgstr "Erreur : Données absentes."
733
+
734
+ #: classes/class-fl-builder-services.php:154
735
+ #, fuzzy
736
+ msgctxt "Account name for a third party service such as MailChimp."
737
+ msgid "Error: Missing account name."
738
+ msgstr "Erreur : Nom de compte absent."
739
+
740
+ #: classes/class-fl-builder-services.php:163
741
+ #, fuzzy
742
+ msgctxt "Account name for a third party service such as MailChimp."
743
+ msgid "Error: An account with that name already exists."
744
+ msgstr "Erreur : Un compte à ce nom existe déjà."
745
+
746
+ #: classes/class-fl-builder-services.php:243
747
+ #, fuzzy
748
+ msgid "Account Name"
749
+ msgstr "Nom du compte"
750
+
751
+ #: classes/class-fl-builder-services.php:244
752
+ #, fuzzy
753
+ msgid ""
754
+ "Used to identify this connection within the accounts list and can be "
755
+ "anything you like."
756
+ msgstr ""
757
+ "Utilisé pour identifier la connexion à l'intérieur de la liste des comptes, "
758
+ "à votre choix."
759
+
760
+ #: classes/class-fl-builder-services.php:257
761
+ #, fuzzy
762
+ msgid "Connect"
763
+ msgstr "Connexion"
764
+
765
+ #: classes/class-fl-builder-services.php:285
766
+ #, fuzzy
767
+ msgid "Add Account..."
768
+ msgstr "Ajouter un compte..."
769
+
770
+ #: classes/class-fl-builder-services.php:292
771
+ #, fuzzy
772
+ msgid "Account"
773
+ msgstr "Compte"
774
+
775
+ #: classes/class-fl-builder-template-settings.php:33
776
  msgid "Page Builder Templates"
777
  msgstr "Gabarits de Beaver Builder"
778
 
779
+ #: classes/class-fl-builder-templates-override.php:46
780
+ msgid "Error! Please enter a number for the site ID."
781
+ msgstr "Erreur! Entrez un numéro comme identifiant de site."
782
+
783
+ #: classes/class-fl-builder-templates-override.php:50
784
+ msgid "Error! A site with that ID doesn't exist."
785
+ msgstr "Erreur! Aucun site n’existe avec cet identifiant. "
786
+
787
+ #: classes/class-fl-builder.php:811
788
  #, php-format
789
  msgctxt "Field name to add."
790
  msgid "Add %s"
791
  msgstr "Ajout %s"
792
 
793
+ #: classes/class-fl-builder.php:901 classes/class-fl-builder.php:903
794
+ #, fuzzy
795
  msgctxt "Custom post type label."
796
+ msgid "Templates"
797
+ msgstr "Gabarit"
798
 
799
+ #: classes/class-fl-builder.php:902 classes/class-fl-builder.php:904
800
  msgctxt "Custom post type label."
801
+ msgid "Template"
802
+ msgstr "Gabarit"
803
 
804
+ #: classes/class-fl-builder.php:905
805
  msgctxt "Custom post type label."
806
  msgid "Add New"
807
  msgstr "Ajouter"
808
 
809
+ #: classes/class-fl-builder.php:906
810
+ #, fuzzy
811
  msgctxt "Custom post type label."
812
+ msgid "Add New Template"
813
  msgstr "Ajouter un nouveau gabarit de présentation"
814
 
815
+ #: classes/class-fl-builder.php:907
816
  msgctxt "Custom post type label."
817
+ msgid "New Template"
818
+ msgstr "Nouveau gabarit"
819
 
820
+ #: classes/class-fl-builder.php:908
821
+ #, fuzzy
822
  msgctxt "Custom post type label."
823
+ msgid "Edit Template"
824
+ msgstr "Éditer le gabarit"
825
 
826
+ #: classes/class-fl-builder.php:909
827
  msgctxt "Custom post type label."
828
+ msgid "View Template"
829
+ msgstr "Visualiser le gabarit"
830
 
831
+ #: classes/class-fl-builder.php:910
832
+ #, fuzzy
833
  msgctxt "Custom post type label."
834
+ msgid "All Templates"
835
+ msgstr "Activer tous ls gabarits"
836
 
837
+ #: classes/class-fl-builder.php:911
838
+ #, fuzzy
839
  msgctxt "Custom post type label."
840
+ msgid "Search Templates"
841
  msgstr "Recherche dans les gabarits de présentation"
842
 
843
+ #: classes/class-fl-builder.php:912
844
+ #, fuzzy
845
  msgctxt "Custom post type label."
846
+ msgid "Parent Templates:"
847
  msgstr "Gabarit de présentation parent"
848
 
849
+ #: classes/class-fl-builder.php:913
850
+ #, fuzzy
851
  msgctxt "Custom post type label."
852
+ msgid "No templates found."
853
  msgstr "Aucun gabarit de présentation trouvé."
854
 
855
+ #: classes/class-fl-builder.php:914
856
+ #, fuzzy
857
  msgctxt "Custom post type label."
858
+ msgid "No templates found in Trash."
859
  msgstr "Aucun gabarit de présentation trouvé dans la poubelle"
860
 
861
+ #: classes/class-fl-builder.php:927 classes/class-fl-builder.php:937
862
+ #, fuzzy
863
+ msgctxt "Custom taxonomy label."
864
+ msgid "Categories"
865
+ msgstr "Catégories"
866
+
867
+ #: classes/class-fl-builder.php:928
868
+ #, fuzzy
869
+ msgctxt "Custom taxonomy label."
870
+ msgid "Category"
871
+ msgstr "Catégorie"
872
+
873
+ #: classes/class-fl-builder.php:929
874
+ msgctxt "Custom taxonomy label."
875
+ msgid "Search Categories"
876
+ msgstr "Chercher dans les catégories"
877
+
878
+ #: classes/class-fl-builder.php:930
879
+ msgctxt "Custom taxonomy label."
880
+ msgid "All Categories"
881
+ msgstr "Toutes les catégories"
882
+
883
+ #: classes/class-fl-builder.php:931
884
+ msgctxt "Custom taxonomy label."
885
+ msgid "Parent Category"
886
+ msgstr "Catégorie parent"
887
+
888
+ #: classes/class-fl-builder.php:932
889
+ msgctxt "Custom taxonomy label."
890
+ msgid "Parent Category:"
891
+ msgstr "Catégorie parent"
892
+
893
+ #: classes/class-fl-builder.php:933
894
+ msgctxt "Custom taxonomy label."
895
+ msgid "Edit Category"
896
+ msgstr "Éditer la catégorie"
897
+
898
+ #: classes/class-fl-builder.php:934
899
+ msgctxt "Custom taxonomy label."
900
+ msgid "Update Category"
901
+ msgstr "Mettre à jour la catégorie"
902
+
903
+ #: classes/class-fl-builder.php:935
904
+ msgctxt "Custom taxonomy label."
905
+ msgid "Add New Category"
906
+ msgstr "Ajouter nouvelle catégorie"
907
+
908
+ #: classes/class-fl-builder.php:936
909
+ msgctxt "Custom taxonomy label."
910
+ msgid "New Category Name"
911
+ msgstr "Nouvelle catégorie"
912
+
913
+ #: classes/class-fl-builder.php:1389 includes/js-config.php:69
914
  #, php-format
915
  msgctxt "%s stands for module name."
916
  msgid "%s Settings"
922
 
923
  #: includes/admin-posts.php:7
924
  #, php-format
925
+ msgctxt ""
926
+ "The first %s stands for custom branded \"Page Builder\" name. The second %s "
927
+ "stands for the post type name."
928
+ msgid "%s is currently active for this %s."
929
+ msgstr "%s est présentement activé pour %s."
930
 
931
  #: includes/admin-posts.php:8
932
  #, php-format
934
  msgid "Launch %s"
935
  msgstr "Lancer %s"
936
 
 
 
 
 
 
 
 
 
 
 
 
 
 
937
  #: includes/admin-settings-branding.php:7
938
  msgid "White label the page builder by entering a custom name below."
939
  msgstr "Personalisez la marque en entrant un autre nom à votre choix."
951
  msgid "Save Branding"
952
  msgstr "Sauvegarder le branding"
953
 
954
+ #: includes/admin-settings-cache.php:9
955
+ #, fuzzy
956
+ msgid ""
957
+ "A CSS and JavaScript file is dynamically generated and cached each time you "
958
+ "create a new layout. Sometimes the cache needs to be refreshed when you "
959
+ "migrate your site to another server or update to the latest version. If you "
960
+ "are running into any issues, please try clearing the cache by clicking the "
961
+ "button below."
962
+ msgstr ""
963
+ "Un fichier CSS et Javascript sont générés dynamiquement et mis en cache "
964
+ "chaque fois que vous créer un nouveau gabarit. Il arrive que le cache ait "
965
+ "besoin d'être rafraîchi, par exemple lorsque vous migrer un site, ou le "
966
+ "mettez à jour avec une nouvelle version. Si vous rencontrez des problèmes, "
967
+ "essayez de vider le cache en appuyant sur le bouton plus bas."
968
+
969
+ #: includes/admin-settings-cache.php:12 includes/admin-settings-cache.php:14
970
+ #: includes/admin-settings-uninstall.php:7
971
+ #: includes/admin-settings-uninstall.php:10
972
+ #: includes/updater/includes/form.php:31
973
+ msgid "NOTE:"
974
+ msgstr "Note: "
975
+
976
+ #: includes/admin-settings-cache.php:12
977
+ #: includes/admin-settings-uninstall.php:10
978
+ #: includes/updater/includes/form.php:31
979
+ msgid "This applies to all sites on the network."
980
+ msgstr "Ceci s'applique à tous les sites du réseau"
981
+
982
+ #: includes/admin-settings-cache.php:14
983
+ #, fuzzy
984
+ msgid ""
985
+ "This only applies to this site. Please visit the Network Admin Settings to "
986
+ "clear the cache for all sites on the network."
987
+ msgstr ""
988
+ "Ne s'applique qu'à ce site. Visiter les paramètres pour Admin réseau afin de "
989
+ "purger le cache de tous les sites sur le réseau."
990
+
991
+ #: includes/admin-settings-cache.php:19
992
+ #, fuzzy
993
+ msgid "Clear Cache"
994
+ msgstr "Vider le cache"
995
+
996
  #: includes/admin-settings-editing.php:3
997
  msgid "Editing Settings"
998
  msgstr "En édition des paramètres"
1000
  #: includes/admin-settings-editing.php:10 includes/admin-settings-icons.php:27
1001
  #: includes/admin-settings-modules.php:10
1002
  #: includes/admin-settings-post-types.php:10
1003
+ #: includes/admin-settings-templates.php:16
1004
  msgid "Override network settings?"
1005
  msgstr "Outrepasser les paramètres de réseau?"
1006
 
1129
  "Tout Cocher/Tout Décocher les extensions ci-dessous afin de les activer ou "
1130
  "désactiver."
1131
 
1132
+ #: includes/admin-settings-modules.php:26
1133
  msgctxt "Plugin setup page: Modules."
1134
  msgid "All"
1135
  msgstr "Tous"
1136
 
1137
+ #: includes/admin-settings-modules.php:64
1138
  msgid "Save Module Settings"
1139
  msgstr "Sauvegarder les paramètres de module"
1140
 
1167
  msgid "Save Post Types"
1168
  msgstr "Sauvegarder les &laquo; Post Types &raquo;"
1169
 
1170
+ #: includes/admin-settings-templates-override.php:2
1171
+ #: includes/admin-settings-templates-override.php:8
1172
+ #: includes/admin-settings-templates-override.php:13
1173
+ msgid "Override Core Templates"
1174
+ msgstr "Remplacer les gabarits originaux"
1175
+
1176
+ #: includes/admin-settings-templates-override.php:3
1177
+ msgid ""
1178
+ "Enter the ID of a site on the network whose templates should override core "
1179
+ "builder templates. Leave this field blank if you do not wish to override "
1180
+ "core templates."
1181
+ msgstr ""
1182
+ "Entrez l’identifiant du site sur votre réseau pour lequel vous voulez "
1183
+ "remplacer les gabarits par les vôtres. Laissez ce champ vide si vous ne "
1184
+ "désirez pas remplacer les gabarits originaux."
1185
+
1186
+ #: includes/admin-settings-templates-override.php:9
1187
+ msgid ""
1188
+ "Use this setting to override core builder templates with your templates."
1189
+ msgstr ""
1190
+ "Utilisez ce paramètre pourremplacer les gabarits de “Beaver Builder” avec "
1191
+ "les vôtres."
1192
+
1193
+ #: includes/admin-settings-templates.php:9 includes/template-settings.php:4
1194
  msgid "Template Settings"
1195
  msgstr "Paramètres de gabarit"
1196
 
1197
+ #: includes/admin-settings-templates.php:22
1198
+ #, fuzzy
1199
+ msgid "Enable Templates"
1200
+ msgstr "Activer tous ls gabarits"
1201
+
1202
+ #: includes/admin-settings-templates.php:23
1203
+ #, fuzzy
1204
+ msgid ""
1205
+ "Use this setting to enable or disable templates in the builder interface."
1206
  msgstr ""
1207
  "Activer ou désactiver les gabarits en utilisant les options ci-dessous."
1208
 
1209
+ #: includes/admin-settings-templates.php:25
1210
  msgid "Enable All Templates"
1211
  msgstr "Activer tous ls gabarits"
1212
 
1213
+ #: includes/admin-settings-templates.php:26
1214
  msgid "Enable Core Templates Only"
1215
  msgstr "Activer les gabarits de base seulement"
1216
 
1217
+ #: includes/admin-settings-templates.php:27
1218
  msgid "Enable User Templates Only"
1219
  msgstr "Activer les gabarits personnel seulement"
1220
 
1221
+ #: includes/admin-settings-templates.php:28
1222
  msgid "Disable All Templates"
1223
  msgstr "Désactiver tous les gabarits"
1224
 
1225
+ #: includes/admin-settings-templates.php:31
1226
+ #: includes/admin-settings-templates.php:36
1227
+ msgid "Enable Templates Admin"
1228
+ msgstr "Activer la gestion des gabarits"
1229
+
1230
+ #: includes/admin-settings-templates.php:32
1231
+ msgid "Use this setting to edit builder templates in the WordPress admin."
1232
+ msgstr ""
1233
+ "Utilisez ce paramètre pour l’édition des gabarits à partir du côté "
1234
+ "administratif de WordPress."
1235
+
1236
+ #: includes/admin-settings-templates.php:50
1237
  msgid "Save Template Settings"
1238
  msgstr "Sauvegarder les paramètres de gabarit"
1239
 
1248
  "désactiver ou désinstaller le constructeur de page à partir de la page des "
1249
  "extensions si vous préférez ne pas effacer ses données."
1250
 
 
 
 
 
 
 
1251
  #: includes/admin-settings-uninstall.php:7
1252
  msgid ""
1253
  "The builder does not delete the post meta <code>_fl_builder_data</code>, "
1261
  "faites, le constructeur va rebâtir l'ensemble de ses données à l'aide de ces "
1262
  "valeurs méta."
1263
 
 
 
 
 
 
1264
  #: includes/admin-settings-upgrade.php:5
1265
  msgid ""
1266
  "You are currently running the lite version of the Beaver Builder plugin. "
1294
  msgid "Image"
1295
  msgstr "Image"
1296
 
1297
+ #: includes/admin-templates-edit.php:16 includes/column-settings.php:114
1298
+ #: includes/row-settings.php:155 includes/template-settings.php:23
1299
+ #: modules/callout/callout.php:353 modules/callout/callout.php:373
1300
  #: modules/content-slider/content-slider.php:472
1301
  #: modules/post-grid/post-grid.php:127
1302
  msgid "Position"
1309
 
1310
  #: includes/admin-templates-edit.php:23 includes/admin-templates.php:30
1311
  #: includes/global-settings.php:18 includes/global-settings.php:110
1312
+ #: includes/global-settings.php:124 includes/row-settings.php:307
1313
+ #: includes/template-settings.php:31 modules/accordion/accordion.php:90
1314
+ #: modules/callout/callout.php:420
1315
  #: modules/content-slider/content-slider.php:209
1316
  #: modules/content-slider/content-slider.php:223
1317
  #: modules/content-slider/content-slider.php:257
1318
  #: modules/content-slider/content-slider.php:266
1319
  #: modules/content-slider/content-slider.php:537
1320
  #: modules/icon-group/icon-group.php:80 modules/icon/icon.php:111
1321
+ #: modules/slideshow/slideshow.php:316 modules/slideshow/slideshow.php:326
1322
+ #: modules/slideshow/slideshow.php:377 modules/slideshow/slideshow.php:418
1323
+ #: modules/slideshow/slideshow.php:440 modules/slideshow/slideshow.php:489
1324
+ #: modules/slideshow/slideshow.php:498 modules/slideshow/slideshow.php:507
1325
+ #: modules/slideshow/slideshow.php:516 modules/slideshow/slideshow.php:525
1326
+ #: modules/slideshow/slideshow.php:534 modules/slideshow/slideshow.php:543
1327
+ #: modules/slideshow/slideshow.php:557 modules/slideshow/slideshow.php:572
1328
+ #: modules/slideshow/slideshow.php:607 modules/slideshow/slideshow.php:619
1329
+ #: modules/slideshow/slideshow.php:631 modules/slideshow/slideshow.php:643
1330
  #: modules/social-buttons/social-buttons.php:111
1331
  #: modules/social-buttons/social-buttons.php:120
1332
  #: modules/social-buttons/social-buttons.php:129
1339
 
1340
  #: includes/admin-templates-edit.php:24 includes/admin-templates.php:30
1341
  #: includes/global-settings.php:19 includes/global-settings.php:111
1342
+ #: includes/global-settings.php:125 includes/row-settings.php:308
1343
+ #: includes/template-settings.php:32 modules/accordion/accordion.php:89
1344
+ #: modules/callout/callout.php:421
1345
  #: modules/content-slider/content-slider.php:210
1346
  #: modules/content-slider/content-slider.php:224
1347
  #: modules/content-slider/content-slider.php:258
1348
  #: modules/content-slider/content-slider.php:267
1349
  #: modules/content-slider/content-slider.php:538
1350
  #: modules/icon-group/icon-group.php:81 modules/icon/icon.php:112
1351
+ #: modules/slideshow/slideshow.php:317 modules/slideshow/slideshow.php:327
1352
+ #: modules/slideshow/slideshow.php:378 modules/slideshow/slideshow.php:419
1353
+ #: modules/slideshow/slideshow.php:441 modules/slideshow/slideshow.php:490
1354
+ #: modules/slideshow/slideshow.php:499 modules/slideshow/slideshow.php:508
1355
+ #: modules/slideshow/slideshow.php:517 modules/slideshow/slideshow.php:526
1356
+ #: modules/slideshow/slideshow.php:535 modules/slideshow/slideshow.php:544
1357
+ #: modules/slideshow/slideshow.php:558 modules/slideshow/slideshow.php:573
1358
+ #: modules/slideshow/slideshow.php:608 modules/slideshow/slideshow.php:620
1359
+ #: modules/slideshow/slideshow.php:632 modules/slideshow/slideshow.php:644
1360
  #: modules/social-buttons/social-buttons.php:110
1361
  #: modules/social-buttons/social-buttons.php:119
1362
  #: modules/social-buttons/social-buttons.php:128
1405
  msgstr "Haut de gamme"
1406
 
1407
  #: includes/admin-templates.php:25 includes/field-photo.php:12
1408
+ #: includes/template-selector.php:70
1409
  msgid "Edit"
1410
  msgstr "Éditer"
1411
 
1412
+ #: includes/admin-templates.php:27 includes/template-selector.php:71
1413
  msgid "Delete"
1414
  msgstr "Effacer"
1415
 
1416
+ #: includes/admin-templates.php:40 includes/js-config.php:30
1417
  msgid "Do you really want to delete this template?"
1418
  msgstr "Voulez-vous vraiment effacer ce gabarit?"
1419
 
1432
  #: modules/icon-group/icon-group.php:44 modules/icon/icon.php:75
1433
  #: modules/pricing-table/pricing-table.php:43
1434
  #: modules/pricing-table/pricing-table.php:155
1435
+ #: modules/separator/separator.php:72
1436
+ #: modules/subscribe-form/subscribe-form.php:217 modules/tabs/tabs.php:45
1437
  msgid "Style"
1438
  msgstr "Style"
1439
 
1450
  msgid "Text"
1451
  msgstr "Texte"
1452
 
1453
+ #: includes/column-settings.php:30 includes/column-settings.php:69
1454
+ #: includes/column-settings.php:199 includes/row-settings.php:52
1455
  #: includes/row-settings.php:109 includes/row-settings.php:403
1456
  #: modules/callout/callout.php:391
1457
  #: modules/content-slider/content-slider.php:337
1460
  msgid "Color"
1461
  msgstr "Couleur"
1462
 
1463
+ #: includes/column-settings.php:39 includes/row-settings.php:61
1464
+ msgid "Background"
1465
+ msgstr "Arrière-plan"
1466
+
1467
+ #: includes/column-settings.php:43 includes/column-settings.php:166
1468
+ #: includes/row-settings.php:65 includes/row-settings.php:370
1469
+ #: modules/callout/callout.php:474
1470
+ #: modules/content-slider/content-slider.php:331
1471
+ #: modules/content-slider/content-slider.php:378
1472
+ #: modules/content-slider/content-slider.php:596
1473
+ #: modules/content-slider/content-slider.php:729
1474
+ #: modules/slideshow/slideshow.php:340
1475
+ msgid "Type"
1476
+ msgstr "Type"
1477
+
1478
+ #: includes/column-settings.php:46 includes/row-settings.php:68
1479
+ #: modules/content-slider/content-slider.php:338
1480
+ msgctxt "Background type."
1481
+ msgid "None"
1482
+ msgstr "Aucune"
1483
+
1484
+ #: includes/column-settings.php:47 includes/row-settings.php:69
1485
+ msgctxt "Background type."
1486
+ msgid "Color"
1487
+ msgstr "Couleur"
1488
+
1489
+ #: includes/column-settings.php:48 includes/row-settings.php:70
1490
+ msgctxt "Background type."
1491
+ msgid "Photo"
1492
+ msgstr "Photo"
1493
+
1494
+ #: includes/column-settings.php:65 includes/row-settings.php:105
1495
  #: modules/button/button.php:115 modules/callout/callout.php:404
1496
  #: modules/callout/callout.php:508
1497
  #: modules/content-slider/content-slider.php:363
1498
  #: modules/content-slider/content-slider.php:630 modules/cta/cta.php:197
1499
  #: modules/cta/cta.php:264 modules/icon-group/icon-group.php:64
1500
+ #: modules/icon/icon.php:95 modules/subscribe-form/subscribe-form.php:182
1501
  msgid "Background Color"
1502
  msgstr "Couleur d'arrière-plan"
1503
 
1504
+ #: includes/column-settings.php:77 includes/column-settings.php:207
1505
  #: includes/row-settings.php:117 includes/row-settings.php:411
1506
  #: modules/separator/separator.php:44
1507
  msgid "Opacity"
1508
  msgstr "Opacité"
1509
 
1510
+ #: includes/column-settings.php:88 includes/row-settings.php:129
1511
+ #: modules/content-slider/content-slider.php:359
1512
+ msgid "Background Photo"
1513
+ msgstr "Photo d'arrière-plan"
1514
+
1515
+ #: includes/column-settings.php:92 includes/row-settings.php:133
1516
+ #: includes/row-settings.php:321 modules/callout/callout.php:316
1517
+ #: modules/callout/callout.php:332 modules/callout/callout.php:336
1518
+ #: modules/content-slider/content-slider.php:335
1519
+ #: modules/content-slider/content-slider.php:404
1520
+ #: modules/content-slider/content-slider.php:745 modules/photo/photo.php:25
1521
+ #: modules/photo/photo.php:392
1522
+ msgid "Photo"
1523
+ msgstr "Photo"
1524
+
1525
+ #: includes/column-settings.php:99 includes/row-settings.php:140
1526
+ msgid "Repeat"
1527
+ msgstr "Répéter"
1528
+
1529
+ #: includes/column-settings.php:102 includes/row-settings.php:143
1530
+ msgctxt "Background repeat."
1531
+ msgid "None"
1532
+ msgstr "Aucune"
1533
+
1534
+ #: includes/column-settings.php:103 includes/row-settings.php:144
1535
+ msgctxt "Background repeat."
1536
+ msgid "Tile"
1537
+ msgstr "Tuile"
1538
+
1539
+ #: includes/column-settings.php:104 includes/row-settings.php:145
1540
+ msgctxt "Background repeat."
1541
+ msgid "Horizontal"
1542
+ msgstr "Horizontal"
1543
+
1544
+ #: includes/column-settings.php:105 includes/row-settings.php:146
1545
+ msgctxt "Background repeat."
1546
+ msgid "Vertical"
1547
+ msgstr "Vertical"
1548
+
1549
+ #: includes/column-settings.php:107 includes/row-settings.php:148
1550
+ #, fuzzy
1551
+ msgid ""
1552
+ "Repeat applies to how the image should display in the background. Choosing "
1553
+ "none will display the image as uploaded. Tile will repeat the image as many "
1554
+ "times as needed to fill the background horizontally and vertically. You can "
1555
+ "also specify the image to only repeat horizontally or vertically."
1556
+ msgstr ""
1557
+ "Répétition s'applique à comment l'image doit s'afficher à l'arrière-plan de "
1558
+ "la rangée. La sélection de Aucun affichera l'image téléchargée telle quelle. "
1559
+ "Mosaïque répétera l'image autant de fois que nécessaire pour remplir la "
1560
+ "rangée horizontalement et verticalement. Vous pouvez également spécifier que "
1561
+ "l'image ne se répète que horizontalement ou verticalement."
1562
+
1563
+ #: includes/column-settings.php:117 includes/row-settings.php:158
1564
+ msgid "Left Top"
1565
+ msgstr "Haut"
1566
+
1567
+ #: includes/column-settings.php:118 includes/row-settings.php:159
1568
+ msgid "Left Center"
1569
+ msgstr "Gauche centre"
1570
+
1571
+ #: includes/column-settings.php:119 includes/row-settings.php:160
1572
+ msgid "Left Bottom"
1573
+ msgstr "Gauche bas"
1574
+
1575
+ #: includes/column-settings.php:120 includes/row-settings.php:161
1576
+ msgid "Right Top"
1577
+ msgstr "Droit(e)"
1578
+
1579
+ #: includes/column-settings.php:121 includes/row-settings.php:162
1580
+ msgid "Right Center"
1581
+ msgstr "Droite centre"
1582
+
1583
+ #: includes/column-settings.php:122 includes/row-settings.php:163
1584
+ msgid "Right Bottom"
1585
+ msgstr "Droite bas"
1586
+
1587
+ #: includes/column-settings.php:123 includes/row-settings.php:164
1588
+ msgid "Center Top"
1589
+ msgstr "Centre haut"
1590
+
1591
+ #: includes/column-settings.php:124 includes/row-settings.php:165
1592
+ #: modules/button/button.php:218 modules/callout/callout.php:251
1593
+ #: modules/content-slider/content-slider.php:477 modules/cta/cta.php:126
1594
+ #: modules/heading/heading.php:90 modules/heading/heading.php:162
1595
+ #: modules/icon-group/icon-group.php:110 modules/icon/icon.php:133
1596
+ #: modules/photo/photo.php:418 modules/social-buttons/social-buttons.php:100
1597
+ msgid "Center"
1598
+ msgstr "Centre"
1599
+
1600
+ #: includes/column-settings.php:125 includes/row-settings.php:166
1601
+ msgid "Center Bottom"
1602
+ msgstr "Centre bas"
1603
+
1604
+ #: includes/column-settings.php:127 includes/row-settings.php:168
1605
+ #, fuzzy
1606
+ msgid "Position will tell the image where it should sit in the background."
1607
+ msgstr ""
1608
+ "Position est utilisée par l\"image afin de déterminer son placement dans "
1609
+ "l'arrière-plan de la rangée."
1610
+
1611
+ #: includes/column-settings.php:134 includes/row-settings.php:175
1612
+ msgid "Attachment"
1613
+ msgstr "Fixation"
1614
+
1615
+ #: includes/column-settings.php:137 includes/row-settings.php:178
1616
+ #: modules/post-grid/post-grid.php:75
1617
+ msgid "Scroll"
1618
+ msgstr "Dérouler"
1619
+
1620
+ #: includes/column-settings.php:138 includes/global-settings.php:69
1621
+ #: includes/global-settings.php:83 includes/row-settings.php:19
1622
+ #: includes/row-settings.php:37 includes/row-settings.php:179
1623
+ msgid "Fixed"
1624
+ msgstr "Fixe"
1625
+
1626
+ #: includes/column-settings.php:140 includes/row-settings.php:181
1627
+ #, fuzzy
1628
+ msgid ""
1629
+ "Attachment will specify how the image reacts when scrolling a page. When "
1630
+ "scrolling is selected, the image will scroll with page scrolling. This is "
1631
+ "the default setting. Fixed will allow the image to scroll within the "
1632
+ "background if fill is selected in the scale setting."
1633
+ msgstr ""
1634
+ "Fixation spécifiera comment l'image réagit quand on déroule la page. Quand "
1635
+ "Dérouler est sélectionnée, l'image déroule lorsque la page déroule. C'est le "
1636
+ "réglage par défaut. Fixe permettra à l\"image de dérouler à l'intérieur de "
1637
+ "l'arrière-plan de la rangée si Remplissage est sélectionné dans le réglage "
1638
+ "de la mise à l'échelle. "
1639
+
1640
+ #: includes/column-settings.php:147 includes/row-settings.php:188
1641
+ msgid "Scale"
1642
+ msgstr "Mise à l'échelle"
1643
+
1644
+ #: includes/column-settings.php:150 includes/row-settings.php:191
1645
+ msgctxt "Background scale."
1646
+ msgid "None"
1647
+ msgstr "Aucune"
1648
+
1649
+ #: includes/column-settings.php:151 includes/row-settings.php:192
1650
+ msgid "Fit"
1651
+ msgstr "Ajustement"
1652
+
1653
+ #: includes/column-settings.php:152 includes/row-settings.php:193
1654
+ msgid "Fill"
1655
+ msgstr "Remplissage"
1656
+
1657
+ #: includes/column-settings.php:154 includes/row-settings.php:195
1658
+ #, fuzzy
1659
+ msgid ""
1660
+ "Scale applies to how the image should display in the background. You can "
1661
+ "select either fill or fit to the background."
1662
+ msgstr ""
1663
+ "&laquo; Mettre à l'échelle &raquo; détermine comment l'image se produira "
1664
+ "dans l'arrière-plan de la rangée. Vous pouvez sélectionner remplissage ou "
1665
+ "ajustage à l'arrière plan."
1666
+
1667
+ #: includes/column-settings.php:162 includes/row-settings.php:366
1668
  msgid "Border"
1669
  msgstr "Bordure"
1670
 
1671
+ #: includes/column-settings.php:168 includes/row-settings.php:372
 
 
 
 
 
 
 
 
 
 
1672
  msgid ""
1673
  "The type of border to use. Double borders must have a width of at least 3px "
1674
  "to render properly."
1676
  "Le type de bordure à utiliser. Les bordures doubles doivent avoir une "
1677
  "largeur d'au moins 3 px afin d'être présentées convenablement."
1678
 
1679
+ #: includes/column-settings.php:170 includes/row-settings.php:374
1680
  msgctxt "Border type."
1681
  msgid "None"
1682
  msgstr "Aucune"
1683
 
1684
+ #: includes/column-settings.php:171 includes/row-settings.php:375
1685
  #: modules/separator/separator.php:75
1686
  msgctxt "Border type."
1687
  msgid "Solid"
1688
  msgstr "Solide"
1689
 
1690
+ #: includes/column-settings.php:172 includes/row-settings.php:376
1691
  #: modules/separator/separator.php:76
1692
  msgctxt "Border type."
1693
  msgid "Dashed"
1694
  msgstr "Tirets"
1695
 
1696
+ #: includes/column-settings.php:173 includes/row-settings.php:377
1697
  #: modules/separator/separator.php:77
1698
  msgctxt "Border type."
1699
  msgid "Dotted"
1700
  msgstr "Pointillée"
1701
 
1702
+ #: includes/column-settings.php:174 includes/row-settings.php:378
1703
  #: modules/separator/separator.php:78
1704
  msgctxt "Border type."
1705
  msgid "Double"
1706
  msgstr "Double"
1707
 
1708
+ #: includes/column-settings.php:218 includes/row-settings.php:422
1709
  msgid "Top Width"
1710
  msgstr "Largeur du haut"
1711
 
1712
+ #: includes/column-settings.php:230 includes/row-settings.php:434
1713
  msgid "Bottom Width"
1714
  msgstr "Largeur du bas"
1715
 
1716
+ #: includes/column-settings.php:242 includes/row-settings.php:446
1717
  msgid "Left Width"
1718
  msgstr "Largeur gauche"
1719
 
1720
+ #: includes/column-settings.php:254 includes/row-settings.php:458
1721
  msgid "Right Width"
1722
  msgstr "Largeur droite"
1723
 
1724
+ #: includes/column-settings.php:269 includes/module-settings.php:6
1725
  #: includes/row-settings.php:473 modules/content-slider/content-slider.php:273
1726
  msgid "Advanced"
1727
  msgstr "Avancé"
1728
 
1729
+ #: includes/column-settings.php:272 includes/global-settings.php:41
1730
  #: includes/global-settings.php:94 includes/module-settings.php:9
1731
  #: includes/row-settings.php:476
1732
  msgid "Margins"
1733
  msgstr "Marges"
1734
 
1735
+ #: includes/column-settings.php:276 includes/column-settings.php:329
1736
  #: includes/module-settings.php:13 includes/row-settings.php:480
1737
+ #: includes/row-settings.php:533 modules/slideshow/slideshow.php:476
1738
  msgid "Top"
1739
  msgstr "Haut"
1740
 
1741
+ #: includes/column-settings.php:288 includes/column-settings.php:341
1742
  #: includes/module-settings.php:25 includes/row-settings.php:492
1743
+ #: includes/row-settings.php:545 modules/slideshow/slideshow.php:475
1744
  msgid "Bottom"
1745
  msgstr "Bas"
1746
 
1747
+ #: includes/column-settings.php:300 includes/column-settings.php:353
1748
  #: includes/module-settings.php:37 includes/row-settings.php:504
1749
  #: includes/row-settings.php:557 modules/button/button.php:219
1750
  #: modules/callout/callout.php:252
1755
  msgid "Left"
1756
  msgstr "Gauche"
1757
 
1758
+ #: includes/column-settings.php:312 includes/column-settings.php:365
1759
  #: includes/module-settings.php:49 includes/row-settings.php:516
1760
  #: includes/row-settings.php:569 modules/button/button.php:220
1761
  #: modules/callout/callout.php:253
1766
  msgid "Right"
1767
  msgstr "Droit(e)"
1768
 
1769
+ #: includes/column-settings.php:325 includes/global-settings.php:49
1770
  #: includes/row-settings.php:529 modules/button/button.php:233
1771
  #: modules/callout/callout.php:598
1772
  #: modules/content-slider/content-slider.php:703 modules/cta/cta.php:345
1773
+ #: modules/subscribe-form/subscribe-form.php:263
1774
  msgid "Padding"
1775
  msgstr "Padding"
1776
 
1777
+ #: includes/column-settings.php:378 includes/global-settings.php:103
1778
  #: includes/module-settings.php:62 includes/row-settings.php:582
1779
  msgid "Responsive Layout"
1780
  msgstr "Présentation adaptative (Responsive layout)"
1781
 
1782
+ #: includes/column-settings.php:382 includes/module-settings.php:66
1783
+ #: includes/row-settings.php:586 modules/slideshow/slideshow.php:291
1784
  msgid "Display"
1785
  msgstr "Écran"
1786
 
1787
+ #: includes/column-settings.php:384 includes/module-settings.php:68
1788
  #: includes/row-settings.php:588
1789
  msgid "Always"
1790
  msgstr "Toujours"
1791
 
1792
+ #: includes/column-settings.php:385 includes/module-settings.php:69
1793
  #: includes/row-settings.php:589
1794
  msgid "Large Devices Only"
1795
  msgstr "Grands appareils seulement"
1796
 
1797
+ #: includes/column-settings.php:386 includes/module-settings.php:70
1798
  #: includes/row-settings.php:590
1799
  msgid "Large &amp; Medium Devices Only"
1800
  msgstr "Grand &amp; moyens appareils seulement"
1801
 
1802
+ #: includes/column-settings.php:387 includes/module-settings.php:71
1803
  #: includes/row-settings.php:591
1804
  msgid "Medium Devices Only"
1805
  msgstr "Moyens appareils seulement"
1806
 
1807
+ #: includes/column-settings.php:388 includes/module-settings.php:72
1808
  #: includes/row-settings.php:592
1809
  msgid "Medium &amp; Small Devices Only"
1810
  msgstr "Moyen et petit appareils seulement"
1811
 
1812
+ #: includes/column-settings.php:389 includes/module-settings.php:73
1813
  #: includes/row-settings.php:593
1814
  msgid "Small Devices Only"
1815
  msgstr "Petits appareils seulement"
1816
 
1817
+ #: includes/column-settings.php:391
1818
  msgid "Choose whether to show or hide this column at different device sizes."
1819
  msgstr ""
1820
  "Choisir de montrer ou cacher cette colonne pour différents format "
1821
  "d'appareils."
1822
 
1823
+ #: includes/column-settings.php:398
1824
  msgid "Medium Device Width"
1825
  msgstr "Largeur d'appareil moyen"
1826
 
1827
+ #: includes/column-settings.php:399
1828
  msgid "The width of this column on medium devices such as tablets."
1829
  msgstr "La largeur de cette colonne sur des appareils moyens (ex: tablettes)"
1830
 
1831
+ #: includes/column-settings.php:401 includes/column-settings.php:429
1832
  #: modules/callout/callout.php:283
1833
  #: modules/content-slider/content-slider.php:448 modules/cta/cta.php:167
1834
  #: modules/heading/heading.php:117 modules/heading/heading.php:144
1836
  msgid "Default"
1837
  msgstr "Par défaut"
1838
 
1839
+ #: includes/column-settings.php:402 includes/column-settings.php:430
1840
  #: modules/button/button.php:193 modules/callout/callout.php:284
1841
  #: modules/content-slider/content-slider.php:449 modules/cta/cta.php:168
1842
  #: modules/heading/heading.php:118 modules/heading/heading.php:145
1845
  msgid "Custom"
1846
  msgstr "Personalisé"
1847
 
1848
+ #: includes/column-settings.php:415
1849
  msgid "Custom Medium Device Width"
1850
  msgstr "Largeur personalisée de petit appareil"
1851
 
1852
+ #: includes/column-settings.php:426
1853
  msgid "Small Device Width"
1854
  msgstr "Largeur de petit appareil"
1855
 
1856
+ #: includes/column-settings.php:427
1857
  msgid "The width of this column on small devices such as phones."
1858
  msgstr ""
1859
  "La largeur de cette colonne sur de petits appareils tels les téléphones."
1860
 
1861
+ #: includes/column-settings.php:443
1862
  msgid "Custom Small Device Width"
1863
  msgstr "largeur personalisée de petit appareil"
1864
 
1865
+ #: includes/column-settings.php:455 includes/module-settings.php:115
1866
  #: includes/row-settings.php:603
1867
  msgid "CSS Selectors"
1868
  msgstr "Sélecteur CSS"
1869
 
1870
+ #: includes/column-settings.php:459 includes/loop-settings.php:28
1871
  #: includes/module-settings.php:119 includes/row-settings.php:607
1872
  msgid "ID"
1873
  msgstr "ID"
1874
 
1875
+ #: includes/column-settings.php:460
1876
  msgid ""
1877
  "A unique ID that will be applied to this column's HTML. Must start with a "
1878
  "letter and only contain dashes, underscores, letters or numbers. No spaces."
1881
  "doit commencer par une lettre et ne doit contenir que des tirets, des traits "
1882
  "de soulignement, des lettres ou des chiffres. Aucun espace."
1883
 
1884
+ #: includes/column-settings.php:467
1885
  msgid "CSS Class"
1886
  msgstr "Classe CSS"
1887
 
1888
+ #: includes/column-settings.php:468
1889
  msgid ""
1890
  "A class that will be applied to this column's HTML. Must start with a letter "
1891
  "and only contain dashes, underscores, letters or numbers. Separate multiple "
1910
  msgid "Replace"
1911
  msgstr "Remplacer"
1912
 
1913
+ #: includes/field-icon.php:7 includes/js-config.php:61
1914
  msgid "Remove"
1915
  msgstr "Enlever"
1916
 
1928
 
1929
  #: includes/field-link.php:7 includes/icon-selector.php:28
1930
  #: includes/js-config.php:19 includes/settings.php:63
1931
+ #: includes/template-selector.php:92
1932
  msgid "Cancel"
1933
  msgstr "Annuler"
1934
 
1951
  msgid "Add Photos"
1952
  msgstr "Ajouter des photos"
1953
 
1954
+ #: includes/field-photo.php:3 includes/js-config.php:66
1955
  msgid "Select Photo"
1956
  msgstr "Sélectionner la photo"
1957
 
1958
+ #: includes/field-video.php:3 includes/js-config.php:68
1959
  msgid "Select Video"
1960
  msgstr "Sélectionner le vidéo"
1961
 
1966
  #: includes/global-settings.php:7 includes/template-settings.php:7
1967
  #: includes/user-template-settings.php:7 modules/accordion/accordion.php:110
1968
  #: modules/button/button.php:59 modules/callout/callout.php:209
1969
+ #: modules/contact-form/contact-form.php:58
1970
  #: modules/content-slider/content-slider.php:190
1971
  #: modules/content-slider/content-slider.php:314 modules/cta/cta.php:67
1972
  #: modules/gallery/gallery.php:213 modules/heading/heading.php:26
1974
  #: modules/icon/icon.php:27 modules/map/map.php:26 modules/photo/photo.php:368
1975
  #: modules/pricing-table/pricing-table.php:87
1976
  #: modules/rich-text/rich-text.php:26 modules/separator/separator.php:27
1977
+ #: modules/sidebar/sidebar.php:27 modules/slideshow/slideshow.php:257
1978
+ #: modules/social-buttons/social-buttons.php:64
1979
+ #: modules/subscribe-form/subscribe-form.php:86 modules/tabs/tabs.php:77
1980
  #: modules/testimonials/testimonials.php:30
1981
  #: modules/testimonials/testimonials.php:200 modules/video/video.php:76
1982
  #: modules/widget/widget.php:64 modules/woocommerce/woocommerce.php:50
1989
 
1990
  #: includes/global-settings.php:11
1991
  msgid "Default Page Heading"
1992
+ msgstr "En-tête de page par défaut"
1993
 
1994
  #: includes/global-settings.php:15
1995
  msgctxt ""
2015
  #: includes/global-settings.php:32
2016
  msgid "Enter a CSS selector for the default page heading to hide it."
2017
  msgstr ""
2018
+ "Entrez un sélecteur CSS pour l'en-tête de la page par défaut afin de le "
2019
  "cacher. "
2020
 
2021
  #: includes/global-settings.php:37
2039
  msgid "Default Row Width"
2040
  msgstr "Largeur de rangée par défaut"
2041
 
 
 
 
 
 
 
2042
  #: includes/global-settings.php:70 includes/global-settings.php:84
2043
  #: includes/row-settings.php:20 includes/row-settings.php:38
2044
  #: modules/button/button.php:192 modules/callout/callout.php:585
2057
  msgstr "Activé"
2058
 
2059
  #: includes/global-settings.php:121
2060
+ #, fuzzy
2061
+ msgctxt ""
2062
+ "General settings form field label. Intended meaning: \"Enable auto spacing "
2063
+ "for responsive layouts?\""
2064
+ msgid "Enable Auto Spacing"
2065
+ msgstr "Activer l'auto-espacement"
2066
+
2067
+ #: includes/global-settings.php:127
2068
+ #, fuzzy
2069
+ msgid ""
2070
+ "When auto spacing is enabled, the builder will automatically adjust the "
2071
+ "margins and padding in your layout once the small device breakpoint is "
2072
+ "reached. Most users will want to leave this enabled."
2073
+ msgstr ""
2074
+ "Lorsque l'auto-espacement est activé, le constructeur va automatiquement "
2075
+ "ajuster les marges et le padding dans votre gabarit, une fois arrivé au "
2076
+ "point de break pour petits appareils. La plupart des usagers vont vouloir "
2077
+ "garder ceci actif."
2078
+
2079
+ #: includes/global-settings.php:131
2080
  msgid "Medium Device Breakpoint"
2081
  msgstr "Point d'arrêt sur appareil moyen"
2082
 
2083
+ #: includes/global-settings.php:136
2084
  msgid ""
2085
  "The browser width at which the layout will adjust for medium devices such as "
2086
  "tablets."
2088
  "La largeur du navigateur pour laquelle la présentation s'ajustera pour les "
2089
  "appareils de taille moyenne telles que les tablettes."
2090
 
2091
+ #: includes/global-settings.php:140
2092
  msgid "Small Device Breakpoint"
2093
  msgstr "Point d'arrêt sur petit appareil"
2094
 
2095
+ #: includes/global-settings.php:145
2096
  msgid ""
2097
  "The browser width at which the layout will adjust for small devices such as "
2098
  "phones."
2133
  "présentation de contenu avant de soumettre."
2134
 
2135
  #: includes/js-config.php:25
2136
+ #, fuzzy
2137
+ msgid "Remove Account"
2138
+ msgstr "Enlever le compte"
2139
+
2140
+ #: includes/js-config.php:26
2141
+ #, fuzzy
2142
+ msgid ""
2143
+ "Are you sure you want to remove this account? Other modules that are "
2144
+ "connected to it will be affected."
2145
+ msgstr ""
2146
+ "Êtes-vous certain(e) de vouloir enlever ce compte? D'autres module y étant "
2147
+ "connectés en seront affectés."
2148
+
2149
+ #: includes/js-config.php:27
2150
  msgid "Do you really want to delete this item?"
2151
  msgstr "Voulez-vous vraiment effacer cet item?"
2152
 
2153
+ #: includes/js-config.php:28
2154
  msgid ""
2155
  "Do you really want to delete this module? All content data will be "
2156
  "permanently deleted."
2158
  "Voulez-vous vraiment supprimer cet extension? Tous votre contenu sera effacé "
2159
  "à jamais."
2160
 
2161
+ #: includes/js-config.php:29
2162
  msgid ""
2163
  "Do you really want to delete this row? All content data will be permanently "
2164
  "deleted."
2166
  "Voulez-vous vraiment effacer cette rangée? Tout le contenu sera supprimé de "
2167
  "façon permanente."
2168
 
2169
+ #: includes/js-config.php:31
2170
+ msgid "Discard Changes"
2171
+ msgstr "Rejeter les changements"
2172
 
2173
+ #: includes/js-config.php:32
2174
+ #, fuzzy
2175
  msgid ""
2176
+ "Do you really want to discard these changes? All of your changes that are "
2177
+ "not published will be lost."
2178
  msgstr ""
2179
  "Voulez-vous vraiment supprimer ce brouillon? Tous vos changements non-"
2180
  "publiés seront perdus."
2181
 
2182
+ #: includes/js-config.php:33 includes/ui.php:20 includes/ui.php:55
2183
  msgid "Done"
2184
  msgstr "Terminé"
2185
 
2186
+ #: includes/js-config.php:34
2187
  msgid "Save Draft"
2188
  msgstr "Sauvegarder brouillon"
2189
 
2190
+ #: includes/js-config.php:35
2191
  msgctxt "Duplicate page/post action label."
2192
  msgid "Duplicate"
2193
  msgstr "Reproduire"
2194
 
2195
+ #: includes/js-config.php:36
2196
  msgid "Duplicate This Page"
2197
  msgstr "Reproduire cette page"
2198
 
2199
+ #: includes/js-config.php:37
2200
  msgid "Duplicate This Template"
2201
  msgstr "Reproduire ce gabarit"
2202
 
2203
+ #: includes/js-config.php:38
2204
  msgid "Edit Global Settings"
2205
  msgstr "Editer les paramètres globaux"
2206
 
2207
+ #: includes/js-config.php:39
2208
  msgid "Drop a row layout or module to get started!"
2209
  msgstr ""
2210
  "Glisser-déposer une présentation de rangée ou une extension afin de débuter!"
2211
 
2212
  # Check with Charles?
2213
+ #: includes/js-config.php:40
2214
  msgid ""
2215
  "Beaver Builder caught the following JavaScript error. If Beaver Builder is "
2216
  "not functioning as expected the cause is most likely this error. Please help "
2225
  "incompatible avec Beaver Builder et nous pourrons ainsi travailler à "
2226
  "résoudre le problème."
2227
 
2228
+ #: includes/js-config.php:41
2229
  msgid "Full Size"
2230
  msgstr "Pleine grandeur"
2231
 
2232
+ #: includes/js-config.php:42
2233
  msgid "Get Help"
2234
  msgstr "Recevoir de l'assistance"
2235
 
2236
+ #: includes/js-config.php:43
2237
  msgid "Getting Started Video"
2238
  msgstr "Vidéo de départ"
2239
 
2240
+ #: includes/js-config.php:44
2241
  msgid "\"{message}\" on line {line} of {file}."
2242
  msgstr "&laquo; {message} &raquo; à la ligne {line} de {file}."
2243
 
2244
+ #: includes/js-config.php:45
2245
  msgid "Insert"
2246
  msgstr "Insérer"
2247
 
2248
+ #: includes/js-config.php:46
2249
  msgid "Large"
2250
  msgstr "Grand"
2251
 
2252
+ #: includes/js-config.php:47
2253
  msgid "Manage Templates"
2254
  msgstr "Gérer les gabarits"
2255
 
2256
+ #: includes/js-config.php:48
2257
  msgid "Medium"
2258
  msgstr "Moyen(ne)"
2259
 
2260
+ #: includes/js-config.php:49
2261
  msgid "Module"
2262
  msgstr "Extension"
2263
 
2264
+ #: includes/js-config.php:50
2265
  msgid "Move"
2266
  msgstr "Déplacer"
2267
 
2268
+ #: includes/js-config.php:51
2269
  msgid "New Column"
2270
  msgstr "Nouvelle colonne"
2271
 
2272
+ #: includes/js-config.php:52
2273
  msgid "New Row"
2274
  msgstr "Nouvelle rangée"
2275
 
2276
+ #: includes/js-config.php:53
2277
  msgid "No results found."
2278
  msgstr "Aucuns résultats trouvés"
2279
 
2280
+ #: includes/js-config.php:54
2281
  msgid "No Thanks"
2282
  msgstr "Non merci"
2283
 
2284
+ #: includes/js-config.php:55
2285
  msgid "OK"
2286
  msgstr "Ok"
2287
 
2288
+ #: includes/js-config.php:56 modules/photo/photo.php:454
2289
  msgid "Photo Page"
2290
  msgstr "Page photos"
2291
 
2292
+ #: includes/js-config.php:57
2293
  msgid "Photo Selected"
2294
  msgstr "Photo sélectionnée"
2295
 
2296
+ #: includes/js-config.php:58
2297
  msgid "Photos Selected"
2298
  msgstr "Photos sélectionnées"
2299
 
2300
+ #: includes/js-config.php:59 modules/subscribe-form/includes/frontend.php:15
2301
+ #, fuzzy
2302
+ msgid "Please Wait..."
2303
+ msgstr "Prière de patienter"
2304
+
2305
+ #: includes/js-config.php:60
2306
  msgid "Publish Changes"
2307
  msgstr "Publiez les changements"
2308
 
2309
+ #: includes/js-config.php:62
2310
  msgid "Row"
2311
  msgstr "Rangée"
2312
 
2313
+ #: includes/js-config.php:63 includes/row-settings.php:6
2314
  msgid "Row Settings"
2315
  msgstr "Paramètres de rangée"
2316
 
2317
+ #: includes/js-config.php:64
2318
  msgid "Save Core Template"
2319
  msgstr "Sauvegarder le gabarit"
2320
 
2321
+ #: includes/js-config.php:65 includes/user-template-settings.php:4
 
2322
  msgid "Save Template"
2323
  msgstr "Sauvegarder le gabarit"
2324
 
2325
+ #: includes/js-config.php:67
2326
  msgid "Select Photos"
2327
  msgstr "Sélectionner les photos"
2328
 
2329
+ #: includes/js-config.php:70
2330
+ #, fuzzy
2331
+ msgid "Please select an account before saving."
2332
+ msgstr "Sélectionnez un compte avant de sauvegarder."
2333
+
2334
+ #: includes/js-config.php:71
2335
+ #, fuzzy
2336
+ msgid "Please connect an account before saving."
2337
+ msgstr "Connectez un compte avant de sauvegarder."
2338
+
2339
+ #: includes/js-config.php:72
2340
+ msgid "Please select a list before saving."
2341
+ msgstr "Sélectionner une liste avant de sauvegarder."
2342
+
2343
+ #: includes/js-config.php:73
2344
  msgid "Take a Tour"
2345
  msgstr "Suivre une visite guidée"
2346
 
2347
+ #: includes/js-config.php:74
2348
  msgid "Append New Layout"
2349
  msgstr "Ajouter une autre présentation"
2350
 
2351
+ #: includes/js-config.php:75
2352
  msgid "Replace Existing Layout"
2353
  msgstr "Remplacer la présentation existante"
2354
 
2355
+ #: includes/js-config.php:76
2356
  msgid "Template Saved!"
2357
  msgstr "Gabarit sauvegardé!"
2358
 
2359
+ #: includes/js-config.php:77
2360
  msgid "Thumbnail"
2361
  msgstr "Vignette"
2362
 
2363
+ #: includes/js-config.php:78
2364
  msgid "Next"
2365
  msgstr "Suivant"
2366
 
2367
+ #: includes/js-config.php:79
2368
  msgid "Get Started"
2369
  msgstr "Débuter"
2370
 
2371
+ #: includes/js-config.php:80
2372
  msgid "Choose a Template"
2373
  msgstr "Sélectionner le gabarit"
2374
 
2375
+ #: includes/js-config.php:81
2376
  msgid ""
2377
  "Get started by choosing a layout template to customize, or build a page from "
2378
  "scratch by selecting the blank layout template."
2380
  "Débutez en sélectionnant un gabarit à personnaliser, ou en bâtissant à "
2381
  "partir de zéro grâce au gabarit de page vierge. "
2382
 
2383
+ #: includes/js-config.php:82
2384
  msgid "Add Rows"
2385
  msgstr "Ajout de rangées"
2386
 
2387
+ #: includes/js-config.php:83
2388
+ #, fuzzy
2389
  msgid ""
2390
+ "Add multi-column rows, adjust spacing, add backgrounds and more by dragging "
2391
  "and dropping row layouts onto the page."
2392
  msgstr ""
2393
+ "Ajout de rangées multi-colonnes, ajustement de l'espacement, ajout d'arrière-"
2394
+ "plans et plus, en glissant et déposant des gabarits de rangées sur la page."
 
2395
 
2396
+ #: includes/js-config.php:84 includes/ui.php:22 includes/ui.php:60
2397
  msgid "Add Content"
2398
  msgstr "Ajouter le contenu"
2399
 
2400
+ #: includes/js-config.php:85
2401
  msgid ""
2402
  "Add new content by dragging and dropping modules or widgets into your row "
2403
  "layouts or to create a new row layout."
2405
  "Insérer du nouveau contenu en glissant-déposant des modules ou widgets dans "
2406
  "les rangées de votre mise en page, ou afin de créer une nouvelle rangée. "
2407
 
2408
+ #: includes/js-config.php:86
2409
  msgid "Edit Content"
2410
  msgstr "Edition du contenu"
2411
 
2412
+ #: includes/js-config.php:87
2413
  msgid ""
2414
  "Move your mouse over rows, columns or modules to edit and interact with them."
2415
  msgstr ""
2416
  "Survolez les rangées, colonnes ou modules avec votre souris afin d'interagir "
2417
  "avec ceux-ci et passer au mode édition."
2418
 
2419
+ #: includes/js-config.php:88
2420
+ #, fuzzy
2421
  msgid ""
2422
  "Use the action buttons to perform actions such as moving, editing, "
2423
+ "duplicating or deleting rows, columns and modules."
 
2424
  msgstr ""
2425
+ "Utiliser les boutons d'actions afin de déplacer, éditer, dupliquer ou "
2426
+ "effacer des rangées, colonnes ou modules."
 
2427
 
2428
+ #: includes/js-config.php:89
2429
  msgid "Add More Content"
2430
  msgstr "Ajout de contenu"
2431
 
2432
+ #: includes/js-config.php:90
2433
+ #, fuzzy
2434
  msgid ""
2435
+ "Use the Add Content button to open the content panel and add new row "
2436
+ "layouts, modules or widgets."
2437
  msgstr ""
2438
+ "Utiliser le bouton \"Ajouter le contenu\" afin d'ouvrir le panneau de "
2439
+ "contenu et pouvoir ajouter des nouveaux gabarits de rangée, des modules ou "
2440
+ "des widgets."
2441
 
2442
+ #: includes/js-config.php:91
2443
  msgid "Change Templates"
2444
  msgstr "Changer les gabarits"
2445
 
2446
+ #: includes/js-config.php:92
2447
  msgid ""
2448
  "Use the Templates button to pick a new template or append one to your "
2449
  "layout. Appending will insert a new template at the end of your existing "
2453
  "gabarit, ou en ajouter un nouveau. L'ajout insère le nouveau gabarit sous le "
2454
  "gabarit pré-existant."
2455
 
2456
+ #: includes/js-config.php:93
2457
  msgid "Helpful Tools"
2458
  msgstr "Outils utiles"
2459
 
2460
+ #: includes/js-config.php:94
2461
  msgid ""
2462
  "The Tools button lets you duplicate a page, save a template or edit the "
2463
  "global settings."
2465
  "Le bouton Outils permet de dupliquer une page, sauvegarder un gabarit. ou "
2466
  "d'éditer les paramètres globaux."
2467
 
2468
+ #: includes/js-config.php:95
2469
  msgid "Publish Your Changes"
2470
  msgstr "Publiez les changements"
2471
 
2472
+ #: includes/js-config.php:96
2473
  msgid ""
2474
  "Once you're finished, click the Done button to publish your changes, save a "
2475
  "draft or revert back to the last published state."
2478
  "publier vos changements, sauvegarder un brouillon, ou revenir à la version "
2479
  "publiée précédemment."
2480
 
2481
+ #: includes/js-config.php:97
2482
  msgid "Let's Get Building!"
2483
  msgstr "Construisons!"
2484
 
2485
+ #: includes/js-config.php:98
2486
  msgid ""
2487
  "Now that you know the basics, you're ready to start building! If at any time "
2488
  "you need help, click the help icon in the upper right corner to access the "
2492
  "temps, cliquez sur le bouton d'aide dans le coin droit supérieur afin "
2493
  "d'obtenir de l'aide. Joyeuse construction!"
2494
 
2495
+ #: includes/js-config.php:99
2496
  msgid ""
2497
  "The settings you are currently editing will not be saved if you navigate "
2498
  "away from this page."
2500
  "Les paramètres que vous éditez ne seront pas sauvegardés si vous quittez "
2501
  "cette page."
2502
 
2503
+ #: includes/js-config.php:100
2504
  msgid "View the Knowledge Base"
2505
  msgstr "Visualiser la base de connaissances"
2506
 
2507
+ #: includes/js-config.php:101
2508
  msgid "Visit the Forums"
2509
  msgstr "Visiter les forums"
2510
 
2511
+ #: includes/js-config.php:102
2512
  msgid "Watch the Video"
2513
  msgstr "Visionner le vidéo"
2514
 
2515
+ #: includes/js-config.php:103
2516
  msgid ""
2517
  "Welcome! It looks like this might be your first time using the builder. "
2518
  "Would you like to take a tour?"
2520
  "Bienvenue! Il semble que ce soit la première fois que vous utilisé Beaver "
2521
  "Builder. Aimeriez-vous une visite guidée?"
2522
 
2523
+ #: includes/js-config.php:104
2524
  msgid "Yes Please!"
2525
  msgstr "Oui s'il vous plaît!"
2526
 
2527
+ #: includes/loop-settings.php:20
2528
  msgid "Post Type"
2529
  msgstr "Post Type"
2530
 
2531
+ #: includes/loop-settings.php:26
2532
  msgid "Order By"
2533
  msgstr "Ordonner par"
2534
 
2535
+ #: includes/loop-settings.php:29 modules/post-grid/post-grid.php:155
2536
  #: modules/woocommerce/woocommerce.php:189
2537
  msgid "Date"
2538
  msgstr "Date"
2539
 
2540
+ #: includes/loop-settings.php:30
2541
  msgid "Date Last Modified"
2542
  msgstr "Date de la dernière modification"
2543
 
2544
+ #: includes/loop-settings.php:31 modules/pricing-table/pricing-table.php:90
2545
  #: modules/pricing-table/pricing-table.php:94
2546
  msgid "Title"
2547
  msgstr "Titre"
2548
 
2549
+ #: includes/loop-settings.php:32 modules/post-grid/post-grid.php:146
2550
  msgid "Author"
2551
  msgstr "Auteur"
2552
 
2553
+ #: includes/loop-settings.php:33
2554
  msgid "Comment Count"
2555
  msgstr "Nombre de commentaires"
2556
 
2557
+ #: includes/loop-settings.php:34
2558
  msgid "Menu Order"
2559
  msgstr "Ordre du menu"
2560
 
2561
+ #: includes/loop-settings.php:35
2562
  msgid "Random"
2563
  msgstr "Aléatoire"
2564
 
2565
+ #: includes/loop-settings.php:42
2566
  msgid "Order"
2567
  msgstr "Ordre"
2568
 
2569
+ #: includes/loop-settings.php:44 modules/woocommerce/woocommerce.php:199
2570
  msgid "Descending"
2571
  msgstr "Décroissant"
2572
 
2573
+ #: includes/loop-settings.php:45 modules/woocommerce/woocommerce.php:198
2574
  msgid "Ascending"
2575
  msgstr "Croissant"
2576
 
2577
  #: includes/loop-settings.php:52
2578
+ #, fuzzy
2579
+ msgctxt "How many posts to skip."
2580
+ msgid "Offset"
2581
+ msgstr "Décalage"
2582
+
2583
+ #: includes/loop-settings.php:55
2584
+ msgid "Skip this many posts that match the specified criteria."
2585
+ msgstr "Sauter ce nombre de posts qui répondent au critère spécifié."
2586
+
2587
+ #: includes/loop-settings.php:62
2588
  msgid "Filter"
2589
  msgstr "Filtre"
2590
 
2591
+ #: includes/loop-settings.php:73
2592
  #, php-format
2593
  msgid "Enter a comma separated list of %s. Only these %s will be shown."
2594
  msgstr ""
2595
  "Entrez une liste des %s séparé(e)s par des virgules. Seulement ces %s seront "
2596
  "montré(e)s."
2597
 
2598
+ #: includes/loop-settings.php:86
2599
  #, php-format
2600
  msgid ""
2601
  "Enter a comma separated list of %s. Only posts with these %s will be shown."
2603
  "Entrez une liste des %s séparé(e)s par des virgules. Seuls les articles avec "
2604
  "ces %s seront montrés."
2605
 
2606
+ #: includes/loop-settings.php:100
2607
  msgid "Authors"
2608
  msgstr "Auteur"
2609
 
2610
+ #: includes/loop-settings.php:101
2611
  msgid ""
2612
  "Enter a comma separated list of authors usernames. Only posts with these "
2613
  "authors will be shown."
2664
  #: includes/module-settings.php:106 includes/row-settings.php:266
2665
  #: includes/row-settings.php:297 modules/content-slider/content-slider.php:233
2666
  #: modules/content-slider/content-slider.php:250
2667
+ #: modules/slideshow/slideshow.php:386 modules/slideshow/slideshow.php:411
2668
+ #: modules/slideshow/slideshow.php:582
2669
  #: modules/testimonials/testimonials.php:95
2670
  #: modules/testimonials/testimonials.php:112
2671
  msgctxt "Value unit for form field of time in seconds. Such as: \"5 seconds\""
2727
  "Les rangées fixes ne sont pas plus larges que la valeur &laquo; Largeur "
2728
  "maximale &raquo; définie dans les réglages globaux."
2729
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2730
  #: includes/row-settings.php:71
2731
  msgctxt "Background type."
2732
  msgid "Video"
2742
  msgid "Parallax"
2743
  msgstr "Parallaxe"
2744
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2745
  #: includes/row-settings.php:203
2746
  msgid "Background Video"
2747
  msgstr "Vidéo d'arrière-plan"
2772
  msgstr "Diaporama d'arrière-plan"
2773
 
2774
  #: includes/row-settings.php:228 modules/gallery/gallery.php:234
2775
+ #: modules/slideshow/slideshow.php:264
2776
  msgid "Source"
2777
  msgstr "Origine"
2778
 
2779
  #: includes/row-settings.php:231 modules/gallery/gallery.php:237
2780
+ #: modules/photo/photo.php:378 modules/slideshow/slideshow.php:267
2781
  #: modules/video/video.php:86
2782
  msgid "Media Library"
2783
  msgstr "Médiathèque"
2784
 
2785
  #: includes/row-settings.php:234 modules/gallery/gallery.php:240
2786
+ #: modules/slideshow/slideshow.php:270
2787
  msgid ""
2788
  "Pull images from the WordPress media library or a gallery on your SmugMug "
2789
  "site by inserting the RSS feed URL from SmugMug. The RSS feed URL can be "
2795
  "galerie SmugMug."
2796
 
2797
  #: includes/row-settings.php:249 modules/gallery/gallery.php:252
2798
+ #: modules/slideshow/slideshow.php:282
2799
  msgid "Photos"
2800
  msgstr "Photos"
2801
 
2802
  #: includes/row-settings.php:256 modules/gallery/gallery.php:256
2803
+ #: modules/slideshow/slideshow.php:286
2804
  msgid "Feed URL"
2805
  msgstr "Lien du flux"
2806
 
2807
  #: includes/row-settings.php:263 includes/row-settings.php:328
2808
+ #: modules/slideshow/slideshow.php:383
2809
  msgid "Speed"
2810
  msgstr "Vitesse"
2811
 
2812
  #: includes/row-settings.php:273 modules/content-slider/content-slider.php:237
2813
+ #: modules/slideshow/slideshow.php:390
2814
  #: modules/testimonials/testimonials.php:99
2815
  msgid "Transition"
2816
  msgstr "Transition"
2821
  msgstr "Aucune"
2822
 
2823
  #: includes/row-settings.php:277 modules/content-slider/content-slider.php:241
2824
+ #: modules/slideshow/slideshow.php:394
2825
  #: modules/testimonials/testimonials.php:103
2826
  msgid "Fade"
2827
  msgstr "Fondu"
2828
 
2829
+ #: includes/row-settings.php:278 modules/slideshow/slideshow.php:395
2830
  msgid "Ken Burns"
2831
  msgstr "Ken Burns"
2832
 
2833
+ #: includes/row-settings.php:279 modules/slideshow/slideshow.php:396
2834
  msgid "Slide Horizontal"
2835
  msgstr "Glissement horizontal"
2836
 
2837
+ #: includes/row-settings.php:280 modules/slideshow/slideshow.php:397
2838
  msgid "Slide Vertical"
2839
  msgstr "Glissement vertical"
2840
 
2841
+ #: includes/row-settings.php:281 modules/slideshow/slideshow.php:398
2842
  msgid "Blinds"
2843
  msgstr "Stores"
2844
 
2845
+ #: includes/row-settings.php:282 modules/slideshow/slideshow.php:399
2846
  msgid "Bars"
2847
  msgstr "Barres"
2848
 
2849
+ #: includes/row-settings.php:283 modules/slideshow/slideshow.php:400
2850
  msgid "Random Bars"
2851
  msgstr "Barres aléatoires"
2852
 
2853
+ #: includes/row-settings.php:284 modules/slideshow/slideshow.php:401
2854
  msgid "Boxes"
2855
  msgstr "Boîtes"
2856
 
2857
+ #: includes/row-settings.php:285 modules/slideshow/slideshow.php:402
2858
  msgid "Random Boxes"
2859
  msgstr "Boîtes aléatoires"
2860
 
2861
+ #: includes/row-settings.php:286 modules/slideshow/slideshow.php:403
2862
  msgid "Boxes Grow"
2863
  msgstr "Boîtes qui croissent"
2864
 
2865
  #: includes/row-settings.php:294 modules/content-slider/content-slider.php:246
2866
+ #: modules/slideshow/slideshow.php:408
2867
  #: modules/testimonials/testimonials.php:108
2868
  msgid "Transition Speed"
2869
  msgstr "Vitesse de transition"
2870
 
2871
+ #: includes/row-settings.php:304 modules/slideshow/slideshow.php:415
2872
  msgid "Randomize Photos"
2873
  msgstr "Photos en mode aléatoire"
2874
 
2927
  "soulignement, des lettres ou des chiffres. Séparer des classes multiples "
2928
  "avec des espaces."
2929
 
2930
+ #: includes/service-settings.php:32
2931
+ #, fuzzy
2932
+ msgid "Service"
2933
+ msgstr "Service"
2934
+
2935
  #: includes/settings.php:62
2936
  msgid "Save"
2937
  msgstr "Sauvegarde"
2938
 
2939
+ #: includes/template-selector.php:4
2940
  msgid "Layout Templates"
2941
  msgstr "Gabarits de présentation"
2942
 
2943
+ #: includes/template-selector.php:17
 
 
 
 
 
 
 
 
2944
  msgid "Your Templates"
2945
  msgstr "Vos gabarits"
2946
 
2947
+ #: includes/template-selector.php:53
 
 
 
 
 
2948
  msgid ""
2949
  "You haven't saved any templates yet! To do so, create a layout and save it "
2950
  "as a template under <strong>Tools &rarr; Save Template</strong>."
2953
  "créer une présentation et sauvegardez la comme gabarit sous <strong>Outils "
2954
  "&rarr; Sauvegarder gabarit</strong>."
2955
 
2956
+ #: includes/template-selector.php:58
2957
+ msgctxt "Template name."
2958
+ msgid "Blank"
2959
+ msgstr "Vierge"
2960
+
2961
  #: includes/template-settings.php:14 includes/user-template-settings.php:15
2962
  msgctxt "Template name."
2963
  msgid "Name"
2975
  "Le nom de fichier de l'image, tel que image.jpg, qui réside dans le "
2976
  "répertoire &laquo; img/templates &raquo;."
2977
 
2978
+ #: includes/ui.php:8 includes/ui.php:13
2979
  #, php-format
2980
  msgid "Template: %s"
2981
  msgstr "Gabarit : %s"
2982
 
2983
+ #: includes/ui.php:21 includes/ui.php:56
2984
+ msgid "Tools"
2985
+ msgstr "Outils"
2986
+
2987
+ #: includes/ui.php:34
2988
  msgid "Page Builder Demo"
2989
  msgstr "Démo du constructeur de page"
2990
 
2991
+ #: includes/ui.php:51
2992
  msgid "Buy Now!"
2993
  msgstr "Achetez maintenant!"
2994
 
2995
+ #: includes/ui.php:53
2996
  msgid "Upgrade!"
2997
  msgstr "Mise à niveau!"
2998
 
2999
+ #: includes/ui.php:78
 
 
 
 
3000
  msgid "Row Layouts"
3001
  msgstr "Présentation des rangées"
3002
 
3003
+ #: includes/ui.php:82
3004
  msgid "1 Column"
3005
  msgstr "1 colonne"
3006
 
3007
+ #: includes/ui.php:83
3008
  msgid "2 Columns"
3009
  msgstr "2 colonnes"
3010
 
3011
+ #: includes/ui.php:84
3012
  msgid "3 Columns"
3013
  msgstr "3 colonnes"
3014
 
3015
+ #: includes/ui.php:85
3016
  msgid "4 Columns"
3017
  msgstr "4 colonnes"
3018
 
3019
+ #: includes/ui.php:86
3020
  msgid "5 Columns"
3021
  msgstr "5 colonnes"
3022
 
3023
+ #: includes/ui.php:87
3024
  msgid "6 Columns"
3025
  msgstr "6 colonnes"
3026
 
3027
+ #: includes/ui.php:88
3028
  msgid "Left Sidebar"
3029
  msgstr "Barre latérale de gauche"
3030
 
3031
+ #: includes/ui.php:89
3032
  msgid "Right Sidebar"
3033
  msgstr "Barre latérale de droite"
3034
 
3035
+ #: includes/ui.php:90
3036
  msgid "Left &amp; Right Sidebar"
3037
  msgstr "Barre latérale de gauche et droite"
3038
 
3039
+ #: includes/updater/classes/class-fl-updater.php:132
3040
  msgid "<strong>UPDATE UNAVAILABLE!</strong>"
3041
  msgstr "<strong>MISE À JOUR NON DISPONIBLE !</strong>"
3042
 
3043
+ #: includes/updater/classes/class-fl-updater.php:134
3044
  msgid "Please subscribe to enable automatic updates for this plugin."
3045
  msgstr ""
3046
  "Veuillez vous inscrire pour activer les mises à jour automatiques pour cette "
3047
  "extension."
3048
 
3049
+ #: includes/updater/classes/class-fl-updater.php:136
3050
  #: includes/updater/includes/form.php:6
3051
  msgid "Subscribe Now"
3052
  msgstr "Abonnez vous maintenant"
3158
  msgstr "Étiquette"
3159
 
3160
  #: modules/accordion/accordion.php:122 modules/post-grid/post-grid.php:195
3161
+ #: modules/post-grid/post-grid.php:199 modules/post-grid/post-grid.php:234
3162
  #: modules/tabs/tabs.php:89
3163
  msgid "Content"
3164
  msgstr "Contenu"
3166
  #: modules/button/button.php:14 modules/callout/callout.php:479
3167
  #: modules/content-slider/content-slider.php:601 modules/cta/cta.php:214
3168
  #: modules/pricing-table/pricing-table.php:129
3169
+ #: modules/subscribe-form/subscribe-form.php:160
3170
  msgid "Button"
3171
  msgstr "Bouton"
3172
 
3193
  #: modules/content-slider/content-slider.php:600 modules/cta/cta.php:240
3194
  #: modules/heading/heading.php:43 modules/heading/heading.php:47
3195
  #: modules/icon-group/icon-group.php:139 modules/icon/icon.php:43
3196
+ #: modules/slideshow/slideshow.php:344
3197
  msgid "Link"
3198
  msgstr "Lien"
3199
 
3232
  #: modules/callout/callout.php:514
3233
  #: modules/content-slider/content-slider.php:636 modules/cta/cta.php:270
3234
  #: modules/icon-group/icon-group.php:69 modules/icon/icon.php:100
3235
+ #: modules/subscribe-form/subscribe-form.php:188
3236
  msgid "Background Hover Color"
3237
  msgstr "Couleur pour survol de l'arrière-plan"
3238
 
3241
  #: modules/content-slider/content-slider.php:641
3242
  #: modules/content-slider/content-slider.php:754 modules/cta/cta.php:191
3243
  #: modules/cta/cta.php:279 modules/heading/heading.php:77
3244
+ #: modules/subscribe-form/subscribe-form.php:197
3245
  msgid "Text Color"
3246
  msgstr "Couleur du texte"
3247
 
3248
  #: modules/button/button.php:136 modules/callout/callout.php:529
3249
  #: modules/content-slider/content-slider.php:647 modules/cta/cta.php:285
3250
+ #: modules/subscribe-form/subscribe-form.php:203
3251
  msgid "Text Hover Color"
3252
  msgstr "Couleur pour survol du texte"
3253
 
3254
  #: modules/button/button.php:153 modules/callout/callout.php:546
3255
  #: modules/content-slider/content-slider.php:660 modules/cta/cta.php:302
3256
+ #: modules/subscribe-form/subscribe-form.php:220
3257
  msgid "Flat"
3258
  msgstr "Plat"
3259
 
3261
  #: modules/callout/callout.php:547
3262
  #: modules/content-slider/content-slider.php:661 modules/cta/cta.php:303
3263
  #: modules/icon-group/icon-group.php:77 modules/icon/icon.php:108
3264
+ #: modules/subscribe-form/subscribe-form.php:221
3265
  msgid "Gradient"
3266
  msgstr "Dégradé de couleur"
3267
 
3268
  #: modules/button/button.php:155 modules/callout/callout.php:548
3269
  #: modules/content-slider/content-slider.php:662 modules/cta/cta.php:304
3270
+ #: modules/subscribe-form/subscribe-form.php:222
3271
  msgid "Transparent"
3272
  msgstr "Transparent"
3273
 
3274
  #: modules/button/button.php:165 modules/callout/callout.php:558
3275
  #: modules/content-slider/content-slider.php:672 modules/cta/cta.php:314
3276
  #: modules/pricing-table/pricing-table.php:67
3277
+ #: modules/subscribe-form/subscribe-form.php:232
3278
  msgid "Border Size"
3279
  msgstr "Grosseur de la bordure"
3280
 
3281
  #: modules/button/button.php:174 modules/callout/callout.php:567
3282
  #: modules/content-slider/content-slider.php:681 modules/cta/cta.php:203
3283
+ #: modules/cta/cta.php:323 modules/subscribe-form/subscribe-form.php:241
3284
  msgid "Background Opacity"
3285
  msgstr "Opacité de l'arrière-plan"
3286
 
3287
  #: modules/button/button.php:184 modules/callout/callout.php:244
3288
  #: modules/cta/cta.php:104 modules/heading/heading.php:82
3289
  #: modules/icon-group/icon-group.php:87 modules/icon/icon.php:118
3290
+ #: modules/subscribe-form/subscribe-form.php:94
3291
  msgid "Structure"
3292
  msgstr "Structure"
3293
 
3310
  #: modules/button/button.php:225 modules/callout/callout.php:590
3311
  #: modules/content-slider/content-slider.php:695 modules/cta/cta.php:337
3312
  #: modules/heading/heading.php:114 modules/heading/heading.php:171
3313
+ #: modules/subscribe-form/subscribe-form.php:255
3314
  msgid "Font Size"
3315
  msgstr "Grosseur de la police"
3316
 
3317
  #: modules/button/button.php:241 modules/callout/callout.php:606
3318
+ #: modules/cta/cta.php:353 modules/subscribe-form/subscribe-form.php:271
3319
  msgid "Round Corners"
3320
  msgstr "Coins ronds"
3321
 
3334
  #: modules/testimonials/testimonials.php:56
3335
  #: modules/testimonials/testimonials.php:61
3336
  msgid "Heading"
3337
+ msgstr "En-tête"
3338
 
3339
  #: modules/callout/callout.php:248
3340
  msgid "Overall Alignment"
3358
  #: modules/content-slider/content-slider.php:459 modules/cta/cta.php:164
3359
  #: modules/testimonials/testimonials.php:69
3360
  msgid "Heading Size"
3361
+ msgstr "Grandeur de l'en-tête"
3362
 
3363
  #: modules/callout/callout.php:294 modules/cta/cta.php:178
3364
  msgid "Heading Custom Size"
3365
+ msgstr "Grandeur personalisée de l'en-tête"
3366
 
3367
  #: modules/callout/callout.php:312
3368
  msgid "Image Type"
3374
  msgstr "Aucune"
3375
 
3376
  #: modules/callout/callout.php:340 modules/photo/photo.php:401
3377
+ #: modules/slideshow/slideshow.php:313
3378
  msgid "Crop"
3379
  msgstr "Recâdrage"
3380
 
3405
 
3406
  #: modules/callout/callout.php:356 modules/callout/callout.php:376
3407
  msgid "Above Heading"
3408
+ msgstr "Avant l'en-tête"
3409
 
3410
  #: modules/callout/callout.php:357 modules/callout/callout.php:377
3411
  msgid "Below Heading"
3412
+ msgstr "Après l'en-tête"
3413
 
3414
  #: modules/callout/callout.php:358 modules/callout/callout.php:380
3415
  msgid "Left of Text and Heading"
3416
+ msgstr "À gauche du texte et de l'en-tête"
3417
 
3418
  #: modules/callout/callout.php:359 modules/callout/callout.php:381
3419
  msgid "Right of Text and Heading"
3420
+ msgstr "À droite du texte et de l’en-tête"
3421
 
3422
  #: modules/callout/callout.php:378
3423
  msgid "Left of Heading"
3424
+ msgstr "À gauche de l'en-tête"
3425
 
3426
  #: modules/callout/callout.php:379
3427
  msgid "Right of Heading"
3428
+ msgstr "À droite de l'en-tête"
3429
 
3430
  #: modules/callout/callout.php:387
3431
  msgid "Icon Colors"
3443
  #: modules/callout/callout.php:431 modules/icon-group/icon-group.php:91
3444
  #: modules/icon/icon.php:122 modules/post-grid/post-grid.php:136
3445
  msgid "Size"
3446
+ msgstr "Grandeur personalisée de l'en-tête"
3447
 
3448
  #: modules/callout/callout.php:442
3449
  #: modules/content-slider/content-slider.php:570
3472
 
3473
  #: modules/callout/callout.php:498
3474
  #: modules/content-slider/content-slider.php:620
3475
+ #: modules/subscribe-form/subscribe-form.php:172
3476
  msgid "Button Icon"
3477
  msgstr "Icône du bouton"
3478
 
3479
  #: modules/callout/callout.php:504
3480
  #: modules/content-slider/content-slider.php:626 modules/cta/cta.php:260
3481
+ #: modules/subscribe-form/subscribe-form.php:178
3482
  msgid "Button Colors"
3483
  msgstr "Couleurs du bouton"
3484
 
3485
  #: modules/callout/callout.php:539
3486
  #: modules/content-slider/content-slider.php:653 modules/cta/cta.php:295
3487
+ #: modules/subscribe-form/subscribe-form.php:213
3488
  msgid "Button Style"
3489
  msgstr "Style du bouton"
3490
 
3491
  #: modules/callout/callout.php:577
3492
  #: modules/content-slider/content-slider.php:691 modules/cta/cta.php:333
3493
+ #: modules/subscribe-form/subscribe-form.php:251
3494
  msgid "Button Structure"
3495
  msgstr "Structure du bouton"
3496
 
3506
  msgid "A very simple contact form."
3507
  msgstr "Un formulaire de contact très simple."
3508
 
3509
+ #: modules/contact-form/contact-form.php:31
3510
  msgid "Contact Form Submission"
3511
  msgstr "Envoi du formulaire de contact"
3512
 
3513
+ #: modules/contact-form/contact-form.php:41
3514
+ #, fuzzy
3515
+ msgid "Message"
3516
+ msgstr "Message"
3517
+
3518
+ #: modules/contact-form/contact-form.php:65
3519
  msgid "Send To Email"
3520
  msgstr "Envoyez à un courriel"
3521
 
3522
+ #: modules/contact-form/contact-form.php:67
3523
  msgid "example@mail.com"
3524
  msgstr "exemple@courriel.com"
3525
 
3526
+ #: modules/contact-form/contact-form.php:68
3527
  msgid "The contact form will send to this e-mail"
3528
  msgstr "Le formulaire de contact enverra à cette adresse courriel"
3529
 
3530
+ #: modules/contact-form/contact-form.php:75
3531
+ #: modules/subscribe-form/subscribe-form.php:107
3532
+ #, fuzzy
3533
+ msgid "Name Field"
3534
+ msgstr "Champ Nom"
3535
+
3536
+ #: modules/contact-form/contact-form.php:78
3537
+ #: modules/contact-form/contact-form.php:87
3538
+ #: modules/contact-form/contact-form.php:96
3539
+ #: modules/contact-form/contact-form.php:105
3540
+ #: modules/post-grid/post-grid.php:116 modules/post-grid/post-grid.php:149
3541
+ #: modules/post-grid/post-grid.php:158 modules/post-grid/post-grid.php:188
3542
+ #: modules/post-grid/post-grid.php:202 modules/post-grid/post-grid.php:220
3543
+ #: modules/subscribe-form/subscribe-form.php:110
3544
+ msgid "Show"
3545
+ msgstr "Montrer"
3546
+
3547
+ #: modules/contact-form/contact-form.php:79
3548
+ #: modules/contact-form/contact-form.php:88
3549
+ #: modules/contact-form/contact-form.php:97
3550
+ #: modules/contact-form/contact-form.php:106
3551
+ #: modules/post-grid/post-grid.php:117 modules/post-grid/post-grid.php:150
3552
+ #: modules/post-grid/post-grid.php:159 modules/post-grid/post-grid.php:189
3553
+ #: modules/post-grid/post-grid.php:203 modules/post-grid/post-grid.php:221
3554
+ #: modules/subscribe-form/subscribe-form.php:111
3555
+ msgid "Hide"
3556
+ msgstr "Cacher"
3557
+
3558
+ #: modules/contact-form/contact-form.php:84
3559
+ #, fuzzy
3560
+ msgid "Subject Field"
3561
+ msgstr "Champ Sujet"
3562
+
3563
+ #: modules/contact-form/contact-form.php:93
3564
+ #, fuzzy
3565
+ msgid "Email Field"
3566
+ msgstr "Champ Courriel"
3567
+
3568
+ #: modules/contact-form/contact-form.php:102
3569
+ #, fuzzy
3570
+ msgid "Phone Field"
3571
+ msgstr "Champ Téléphone"
3572
+
3573
+ #: modules/contact-form/includes/frontend.php:5
3574
  msgctxt "Contact form field label."
3575
  msgid "Name"
3576
  msgstr "Nom"
3577
 
3578
+ #: modules/contact-form/includes/frontend.php:6
3579
+ #: modules/subscribe-form/includes/frontend.php:6
3580
  msgid "Please enter your name."
3581
  msgstr "Prière d'entrer une adresse courriel valide"
3582
 
3583
+ #: modules/contact-form/includes/frontend.php:7
3584
  msgid "Your name"
3585
  msgstr "Votre nom"
3586
 
3587
+ #: modules/contact-form/includes/frontend.php:13
3588
+ #: modules/contact-form/includes/frontend.php:15
3589
+ #, fuzzy
3590
+ msgid "Subject"
3591
+ msgstr "Sujet"
3592
+
3593
+ #: modules/contact-form/includes/frontend.php:14
3594
+ #, fuzzy
3595
+ msgid "Please enter a subject."
3596
+ msgstr "Entrez un sujet."
3597
+
3598
+ #: modules/contact-form/includes/frontend.php:21
3599
  msgid "Email"
3600
  msgstr "Courriel"
3601
 
3602
+ #: modules/contact-form/includes/frontend.php:22
3603
  msgid "Please enter a valid email."
3604
  msgstr "Prière d'entrer une adresse courriel valide"
3605
 
3606
+ #: modules/contact-form/includes/frontend.php:23
3607
  msgid "Your email"
3608
  msgstr "Votre courriel"
3609
 
3610
+ #: modules/contact-form/includes/frontend.php:29
3611
+ #, fuzzy
3612
+ msgid "Phone"
3613
+ msgstr "Téléphone"
3614
+
3615
+ #: modules/contact-form/includes/frontend.php:30
3616
+ #, fuzzy
3617
+ msgid "Please enter a valid phone number."
3618
+ msgstr "Prière d'entrer un numéro de téléphone valide."
3619
+
3620
+ #: modules/contact-form/includes/frontend.php:31
3621
+ msgid "Your phone"
3622
+ msgstr "Votre téléphone"
3623
+
3624
+ #: modules/contact-form/includes/frontend.php:36
3625
  msgid "Your Message"
3626
  msgstr "Votre message"
3627
 
3628
+ #: modules/contact-form/includes/frontend.php:37
3629
  msgid "Please enter a message."
3630
  msgstr "Prière d'entrer un message."
3631
 
3632
+ #: modules/contact-form/includes/frontend.php:38
3633
  msgid "Your message"
3634
  msgstr "Votre message"
3635
 
3636
+ #: modules/contact-form/includes/frontend.php:43
3637
  msgid "Send"
3638
  msgstr "Envoyer"
3639
 
3640
+ #: modules/contact-form/includes/frontend.php:44
3641
  msgid "Message Sent!"
3642
  msgstr "Message envoyé!"
3643
 
3644
+ #: modules/contact-form/includes/frontend.php:45
3645
  msgid "Message failed. Please try again."
3646
  msgstr "L'envoi du message a échouée. Merci de réessayer."
3647
 
3655
  "Affiche plusieurs diapositives avec un titre facultatif et appel à l'action."
3656
 
3657
  #: modules/content-slider/content-slider.php:197 modules/map/map.php:41
3658
+ #: modules/separator/separator.php:58 modules/slideshow/slideshow.php:295
3659
  msgid "Height"
3660
  msgstr "Hauteur"
3661
 
3668
  "s'étendra automatiquement à la hauteur maximale."
3669
 
3670
  #: modules/content-slider/content-slider.php:206
3671
+ #: modules/slideshow/slideshow.php:374
3672
  #: modules/testimonials/testimonials.php:82 modules/video/video.php:108
3673
  msgid "Auto Play"
3674
  msgstr "Lecture automatique"
3897
  msgstr "Écrivez-nous aujourd'hui pour un devis gratuit !"
3898
 
3899
  #: modules/cta/cta.php:108 modules/gallery/gallery.php:220
3900
+ #: modules/post-grid/post-grid.php:44
3901
+ #: modules/subscribe-form/subscribe-form.php:98 modules/tabs/tabs.php:52
3902
  #: modules/testimonials/testimonials.php:37
3903
  #: modules/woocommerce/woocommerce.php:57
3904
  msgid "Layout"
3905
  msgstr "Présentation"
3906
 
3907
+ #: modules/cta/cta.php:111 modules/subscribe-form/subscribe-form.php:102
3908
  msgid "Inline"
3909
  msgstr "En ligne"
3910
 
3911
+ #: modules/cta/cta.php:112 modules/subscribe-form/subscribe-form.php:101
3912
  msgid "Stacked"
3913
  msgstr "Empilé"
3914
 
3986
  "l'image dans la médiathèque. Le sous-titre sera aussi obtenu directement de "
3987
  "SmugMug si vous utilisez les sous-titres dans votre galerie SmugMug."
3988
 
3989
+ #: modules/gallery/gallery.php:289 modules/slideshow/slideshow.php:336
3990
  msgid "Click Action"
3991
  msgstr "Action du clic"
3992
 
4005
 
4006
  #: modules/heading/heading.php:15
4007
  msgid "Display a title/page heading."
4008
+ msgstr "Montrer un titre / en-tête de page."
4009
 
4010
  #: modules/heading/heading.php:101
4011
  msgid "HTML Tag"
4012
+ msgstr "Balise HTML"
4013
 
4014
  #: modules/heading/heading.php:128 modules/heading/heading.php:188
4015
  msgid "Custom Font Size"
4118
  "pouvez choisir un lien (URL) spécifique, la photo individuelle ou une autre "
4119
  "page avec la photo."
4120
 
4121
+ #: modules/photo/photo.php:471 modules/slideshow/slideshow.php:357
4122
  msgid "Link URL"
4123
  msgstr "Lien web (URL)"
4124
 
4182
  msgid "Featured Image"
4183
  msgstr "Image en vedette"
4184
 
 
 
 
 
 
 
 
 
 
 
 
 
4185
  #: modules/post-grid/post-grid.php:130
4186
  msgid "Above Text"
4187
  msgstr "Au dessus du texte"
4202
  msgid "Comments"
4203
  msgstr "Commentaires"
4204
 
4205
+ #: modules/post-grid/post-grid.php:208
4206
+ #, fuzzy
4207
+ msgid "Content Type"
4208
+ msgstr "Type de contenu"
4209
+
4210
+ #: modules/post-grid/post-grid.php:211
4211
+ #, fuzzy
4212
+ msgid "Excerpt"
4213
+ msgstr "Extrait"
4214
+
4215
+ #: modules/post-grid/post-grid.php:212
4216
+ #, fuzzy
4217
+ msgid "Full Text"
4218
+ msgstr "Text complet"
4219
+
4220
+ #: modules/post-grid/post-grid.php:217
4221
  msgid "More Link"
4222
+ msgstr "Lien à l’article"
4223
 
4224
+ #: modules/post-grid/post-grid.php:226
4225
  msgid "More Link Text"
4226
+ msgstr "Texte du lien à l’article"
4227
 
4228
+ #: modules/post-grid/post-grid.php:227
4229
  msgid "Read More"
4230
  msgstr "Lire plus"
4231
 
4293
  msgstr "Boîte de prix"
4294
 
4295
  #: modules/pricing-table/pricing-table.php:111
4296
+ #: modules/woocommerce/woocommerce.php:190
4297
  msgid "Price"
4298
  msgstr "Prix"
4299
 
4310
  msgstr "Grosseur du prix"
4311
 
4312
  #: modules/pricing-table/pricing-table.php:133
4313
+ #: modules/subscribe-form/subscribe-form.php:167
4314
  msgid "Button Text"
4315
  msgstr "Texte du bouton"
4316
 
4387
  msgid "Display multiple photos in a slideshow view."
4388
  msgstr "Afficher plusieurs photos dans un affichage du diaporama."
4389
 
4390
+ #: modules/slideshow/slideshow.php:303
4391
  msgid "Skin Color"
4392
  msgstr "Couleur de la peau humaine"
4393
 
4394
+ #: modules/slideshow/slideshow.php:306
4395
  msgctxt "Color."
4396
  msgid "Light"
4397
  msgstr "Clair"
4398
 
4399
+ #: modules/slideshow/slideshow.php:307
4400
  msgctxt "Color."
4401
  msgid "Dark"
4402
  msgstr "Foncé"
4403
 
4404
+ #: modules/slideshow/slideshow.php:309
4405
  msgid ""
4406
  "If your overall theme/images are lighter in color, light will display "
4407
  "buttons in a darker color scheme and vice versa for dark."
4410
  "l'option &laquo; clair &raquo; ajuste les boutons vers un jeu de couleurs "
4411
  "plus foncé et vice versa pour &laquo; Foncé &raquo;."
4412
 
4413
+ #: modules/slideshow/slideshow.php:319
4414
  msgid ""
4415
  "Crop set to no will fit the slideshow images to the height you specify and "
4416
  "keep the width proportional, whereas crop set to yes will fit the slideshow "
4423
  "contenu en recâdrant et coupant les côtés gauche et droit afin d'ajuster "
4424
  "l'image à la hauteur choisie."
4425
 
4426
+ #: modules/slideshow/slideshow.php:323
4427
  msgid "Disable Right-Click"
4428
  msgstr "Désactiver le clic droit"
4429
 
4430
+ #: modules/slideshow/slideshow.php:343
4431
  msgctxt "Click action type."
4432
  msgid "None"
4433
  msgstr "Aucune"
4434
 
4435
+ #: modules/slideshow/slideshow.php:367
4436
  msgid "Playback"
4437
  msgstr "Lecture"
4438
 
4439
+ #: modules/slideshow/slideshow.php:393
4440
  msgctxt "Slideshow transition."
4441
  msgid "None"
4442
  msgstr "Aucune"
4443
 
4444
+ #: modules/slideshow/slideshow.php:430
4445
  msgid "Controls"
4446
  msgstr "Contrôles"
4447
 
4448
+ #: modules/slideshow/slideshow.php:437 modules/slideshow/slideshow.php:486
4449
  msgid "Navigation Arrows"
4450
  msgstr "Flêches de navigation"
4451
 
4452
+ #: modules/slideshow/slideshow.php:443
4453
  msgid ""
4454
  "Navigational arrows allow the visitor to freely move through the images in "
4455
  "your slideshow. These are larger arrows that overlay your slideshow images "
4460
  "se superposent à vos images, indépendamment des flèches de navigation de la "
4461
  "barre de contrôle."
4462
 
4463
+ #: modules/slideshow/slideshow.php:448
4464
  msgid "Control Bar"
4465
  msgstr "Barre de contrôle"
4466
 
4467
+ #: modules/slideshow/slideshow.php:452
4468
  msgid "Nav Type"
4469
  msgstr "Type de navigation"
4470
 
4471
+ #: modules/slideshow/slideshow.php:455
4472
  msgctxt "Nav type."
4473
  msgid "None"
4474
  msgstr "Aucune"
4475
 
4476
+ #: modules/slideshow/slideshow.php:456
4477
  msgid "Buttons"
4478
  msgstr "Boutons"
4479
 
4480
+ #: modules/slideshow/slideshow.php:457 modules/slideshow/slideshow.php:587
4481
  msgid "Thumbs"
4482
  msgstr "Miniatures"
4483
 
4484
+ #: modules/slideshow/slideshow.php:472
4485
  msgid "Nav Position"
4486
  msgstr "Position de la navigation"
4487
 
4488
+ #: modules/slideshow/slideshow.php:482
4489
  msgid "Control Bar Buttons"
4490
  msgstr "Boutons de la barre de contrôle"
4491
 
4492
+ #: modules/slideshow/slideshow.php:495
4493
  msgid "Play Button"
4494
  msgstr "Bouton de lecture"
4495
 
4496
+ #: modules/slideshow/slideshow.php:504
4497
  msgid "Fullscreen Button"
4498
  msgstr "Bouton plein-écran"
4499
 
4500
+ #: modules/slideshow/slideshow.php:513
4501
  msgid "Photo Count"
4502
  msgstr "Nombre de photos"
4503
 
4504
+ #: modules/slideshow/slideshow.php:522
4505
  msgid "Thumbs Button"
4506
  msgstr "Bouton des miniatures"
4507
 
4508
+ #: modules/slideshow/slideshow.php:531
4509
  msgid "Caption Button"
4510
  msgstr "Bouton de sous-titre"
4511
 
4512
+ #: modules/slideshow/slideshow.php:540
4513
  msgid "Social Button"
4514
  msgstr "Bouton"
4515
 
4516
+ #: modules/slideshow/slideshow.php:550
4517
  msgid "Control Bar Overlay"
4518
  msgstr "Superposition de la barre de contrôle"
4519
 
4520
+ #: modules/slideshow/slideshow.php:554
4521
  msgid "Overlay Enabled"
4522
  msgstr "Superposition activée"
4523
 
4524
+ #: modules/slideshow/slideshow.php:565
4525
  msgid ""
4526
  "Control bar overlay specifies if the control bar buttons you choose overlay "
4527
  "your slideshow images or site below the slideshow completely."
4530
  "boutons sélectionnée sera mise en superposition sur vos diapositives, ou "
4531
  "bien se situera en dessous du diaporama complètement."
4532
 
4533
+ #: modules/slideshow/slideshow.php:569
4534
  msgid "Overlay Hide"
4535
  msgstr "Cacher la superposition"
4536
 
4537
+ #: modules/slideshow/slideshow.php:575
4538
  msgid ""
4539
  "Overlay hide will hide the control bar after however many seconds you "
4540
  "specify below. They will reappear upon mouse over."
4543
  "nombre de secondes spécifiées plus bas. Un survol de la souris fera "
4544
  "réapparaître le tout."
4545
 
4546
+ #: modules/slideshow/slideshow.php:579
4547
  msgid "Overlay Hide Delay"
4548
  msgstr "Différer la disparition de la superposition"
4549
 
4550
+ #: modules/slideshow/slideshow.php:591
4551
  msgid "Thumbs Size"
4552
  msgstr "Grosseur de la bordure"
4553
 
4554
+ #: modules/slideshow/slideshow.php:600
4555
  msgid "Social"
4556
  msgstr "Social"
4557
 
4558
+ #: modules/slideshow/slideshow.php:604
4559
  msgid "Facebook Button"
4560
  msgstr "Bouton Facebook"
4561
 
4562
+ #: modules/slideshow/slideshow.php:616
4563
  msgid "Twitter Button"
4564
  msgstr "Bouton Twitter"
4565
 
4566
+ #: modules/slideshow/slideshow.php:628
4567
  msgid "Google Plus Button"
4568
  msgstr "Bouton Google Plus"
4569
 
4570
+ #: modules/slideshow/slideshow.php:640
4571
  msgid "Pinterest Button"
4572
  msgstr "Bouton Pinterest"
4573
 
4613
  msgid "Show Google+"
4614
  msgstr "Montrer Google+"
4615
 
4616
+ #: modules/subscribe-form/includes/frontend.php:5
4617
+ msgctxt "First and last name."
4618
+ msgid "Name"
4619
+ msgstr "Nom complet"
4620
+
4621
+ #: modules/subscribe-form/includes/frontend.php:12
4622
+ #, fuzzy
4623
+ msgid "Please enter a valid email address."
4624
+ msgstr "Entrer une adresse courriel valide."
4625
+
4626
+ #: modules/subscribe-form/includes/frontend.php:40
4627
+ #, fuzzy
4628
+ msgid "Something went wrong. Please check your entries and try again."
4629
+ msgstr ""
4630
+ "Une erreur s'est produite. Vérifiez les données entrées et essayez à nouveau."
4631
+
4632
+ #: modules/subscribe-form/subscribe-form.php:18
4633
+ #, fuzzy
4634
+ msgid "Subscribe Form"
4635
+ msgstr "Formulaire d'inscription"
4636
+
4637
+ #: modules/subscribe-form/subscribe-form.php:19
4638
+ #, fuzzy
4639
+ msgid "Adds a simple subscribe form to your layout."
4640
+ msgstr "Ajoute un simple formulaire d'inscription à votre présentation."
4641
+
4642
+ #: modules/subscribe-form/subscribe-form.php:72
4643
+ #, fuzzy
4644
+ msgid "There was an error subscribing. Please try again."
4645
+ msgstr "Une erreur s'est produite durant l'inscription. Essayez à nouveau."
4646
+
4647
+ #: modules/subscribe-form/subscribe-form.php:117
4648
+ #, fuzzy
4649
+ msgid "Success"
4650
+ msgstr "Succès"
4651
+
4652
+ #: modules/subscribe-form/subscribe-form.php:121
4653
+ #, fuzzy
4654
+ msgid "Success Action"
4655
+ msgstr "Action pour succès"
4656
+
4657
+ #: modules/subscribe-form/subscribe-form.php:123
4658
+ #, fuzzy
4659
+ msgid "Show Message"
4660
+ msgstr "Montrer message"
4661
+
4662
+ #: modules/subscribe-form/subscribe-form.php:124
4663
+ #, fuzzy
4664
+ msgid "Redirect"
4665
+ msgstr "Redirection"
4666
+
4667
+ #: modules/subscribe-form/subscribe-form.php:143
4668
+ #, fuzzy
4669
+ msgid ""
4670
+ "Thanks for subscribing! Please check your email for further instructions."
4671
+ msgstr ""
4672
+ "Merci de vous être abonné! Vérifiez votre courriel pour plus d'instructions."
4673
+
4674
+ #: modules/subscribe-form/subscribe-form.php:150
4675
+ #, fuzzy
4676
+ msgid "Success URL"
4677
+ msgstr "URL pour succès"
4678
+
4679
+ #: modules/subscribe-form/subscribe-form.php:168
4680
+ #, fuzzy
4681
+ msgid "Subscribe!"
4682
+ msgstr "Abonnez-vous!"
4683
+
4684
  #: modules/tabs/tabs.php:14
4685
  msgid "Tabs"
4686
  msgstr "Onglets"
4759
  msgstr "Boucle"
4760
 
4761
  #: modules/widget/includes/frontend.php:35
4762
+ #: modules/widget/includes/settings-general.php:46
4763
  #, php-format
4764
  msgctxt "%s stands for widget slug."
4765
  msgid "%s no longer exists."
4781
  msgid "Display products or categories from your WooCommerce store."
4782
  msgstr "Montrer les produits ou catégories de votre magasin WooCommerce."
4783
 
 
 
 
 
4784
  #: modules/woocommerce/woocommerce.php:61
4785
  msgid "Single Product"
4786
  msgstr "Un seul produit "
4938
  msgid "Rating"
4939
  msgstr "Notation"
4940
 
4941
+ #: modules/woocommerce/woocommerce.php:195
4942
+ #, fuzzy
4943
+ msgid "Sort Direction"
4944
+ msgstr "Ordre du tri"
4945
+
4946
+ #~ msgctxt "Custom post type label."
4947
+ #~ msgid "Layout Templates"
4948
+ #~ msgstr "Gabarits de présentation"
4949
+
4950
+ #~ msgctxt "Custom post type label."
4951
+ #~ msgid "Layout Template"
4952
+ #~ msgstr "Gabarit de présentation"
4953
+
4954
+ #~ msgctxt "Custom post type label."
4955
+ #~ msgid "New Layout Template"
4956
+ #~ msgstr "Nouveau gabarit de présentation"
4957
+
4958
+ #~ msgctxt "Custom post type label."
4959
+ #~ msgid "Edit Layout Template"
4960
+ #~ msgstr "Éditer le gabarit de présentation"
4961
+
4962
+ #~ msgctxt "Custom post type label."
4963
+ #~ msgid "All Layout Templates"
4964
+ #~ msgstr "Tous les gabarits de présentation"
4965
+
4966
+ #~ msgctxt "%s stands for custom branded \"Page Builder\" name."
4967
+ #~ msgid ""
4968
+ #~ "Switching to Text Editor mode will disable your %s layout until it is "
4969
+ #~ "enabled again. Any edits made while in Text Editor mode will not be made "
4970
+ #~ "on your %s layout. Do you want to continue?"
4971
+ #~ msgstr ""
4972
+ #~ "Passer au mode &laquo; Éditeur de texte &raquo; va désactiver votre "
4973
+ #~ "gabarit %s jusqu'à ce qu'il soit réactivé à nouveau. Tout édition en mode "
4974
+ #~ "Éditeur de texte ne sera pas visible dans votre gabarit %s. Voulez-vous "
4975
+ #~ "vraiment continuer?"
4976
+
4977
+ #~ msgid "Discard Draft"
4978
+ #~ msgstr "Supprimer brouillon"
4979
+
4980
+ #~ msgid "Price: Low to High"
4981
+ #~ msgstr "Prix : Bas à haut"
4982
 
4983
+ #~ msgid "Price: High to Low"
4984
+ #~ msgstr "Prix : Haut à bas"
 
4985
 
4986
  #~ msgid ""
4987
  #~ "A custom CSS class that will be applied to this column. Spaces only, no "
languages/it_IT.mo CHANGED
Binary file
languages/it_IT.po CHANGED
@@ -1,5338 +1,5509 @@
1
  msgid ""
2
  msgstr ""
3
- "Project-Id-Version: Beaver Builder Plugin (Agency Version) v1.5.5\n"
4
  "Report-Msgid-Bugs-To: \n"
5
  "POT-Creation-Date: \n"
6
- "PO-Revision-Date: 2015-04-17 12:19+0100\n"
7
  "Last-Translator: Alessandro Curci <hantarex@gmail.com>\n"
8
  "Language-Team: \n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
  "Plural-Forms: nplurals=2; plural=n != 1;\n"
13
- "X-Generator: Poedit 1.5.4\n"
 
 
14
  "X-Poedit-SourceCharset: utf-8\n"
15
- "X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;"
16
- "_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n"
17
  "X-Poedit-Basepath: ../\n"
18
- "X-Textdomain-Support: yes\n"
19
- "Language: it_IT\n"
20
  "X-Poedit-SearchPath-0: .\n"
 
21
 
22
- # @ fl-builder
23
- #: includes/admin-settings.php:7 includes/global-settings.php:4
24
  #: includes/multisite-settings.php:7
25
  #, php-format
 
26
  msgctxt "%s stands for custom branded \"Page Builder\" name."
27
  msgid "%s Settings"
28
  msgstr "impostazioni %s"
29
 
30
- # @ fl-builder
31
- #: includes/admin-settings.php:12 includes/multisite-settings.php:12
 
32
  msgid "Settings updated!"
33
  msgstr "Impostazioni aggiornate!"
34
 
35
- # @ fl-builder
36
- #: includes/admin-settings.php:19 includes/multisite-settings.php:18
 
37
  msgid "License"
38
  msgstr "Licenza"
39
 
40
- # @ fl-builder
41
- #: includes/admin-settings.php:23 includes/admin-settings.php:59
 
42
  msgid "Upgrade"
43
  msgstr "Aggiornamento"
44
 
45
- # @ fl-builder
46
- #: includes/admin-settings.php:26 includes/global-settings.php:67
47
  #: includes/multisite-settings.php:19
 
48
  msgid "Modules"
49
  msgstr "Moduli"
50
 
51
- # @ fl-builder
52
- #: includes/admin-settings.php:29 includes/multisite-settings.php:20
53
  #: includes/ui.php:44
 
54
  msgid "Templates"
55
  msgstr "Modelli"
56
 
57
- # @ fl-builder
58
- #: includes/admin-settings.php:32 includes/admin-settings.php:163
59
- #: includes/multisite-settings.php:21 includes/multisite-settings.php:112
 
 
60
  msgid "Post Types"
61
  msgstr "Tipi di post"
62
 
63
- # @ fl-builder
64
  #: modules/icon-group/icon-group.php:27
 
65
  msgid "Icons"
66
  msgstr "Icone"
67
 
68
- # @ fl-builder
69
- #: includes/admin-settings.php:33 includes/multisite-settings.php:22
 
70
  msgid "Editing"
71
  msgstr "Modifica"
72
 
73
- # @ fl-builder
74
- #: includes/admin-branding.php:3 includes/admin-settings.php:36
75
  #: includes/multisite-settings.php:23
 
76
  msgid "Branding"
77
  msgstr "Branding"
78
 
79
- # @ fl-builder
80
  #: classes/class-fl-builder-admin-settings.php:179
 
81
  msgid "Help Button"
82
  msgstr "Pulsante Aiuto"
83
 
84
- # @ fl-builder
85
- #: includes/admin-settings.php:40 includes/admin-settings.php:250
86
- #: includes/admin-settings.php:262 includes/multisite-settings.php:24
87
- #: includes/multisite-settings.php:172 includes/multisite-settings.php:184
 
 
 
88
  msgid "Uninstall"
89
  msgstr "Disinstalla"
90
 
91
- # @ fl-builder
92
  #: classes/class-fl-builder-admin-settings.php:450
 
93
  msgid "Error! You must have at least one icon set enabled."
94
  msgstr "Errore! Devi avere almeno un set di icone abilitato."
95
 
96
- # @ fl-builder
97
  #: classes/class-fl-builder-admin-settings.php:492
 
98
  msgid "Error! Could not unzip file."
99
  msgstr "Errore! Non è stato possibile decomprimere il file."
100
 
101
- # @ fl-builder
102
  #: classes/class-fl-builder-admin-settings.php:526
 
103
  msgid "Error! Please upload an icon set from either Icomoon or Fontello."
104
  msgstr "Errore! Per favore carica un set di icone da Iconmoon o Fontello."
105
 
106
- # @ fl-builder
107
  #: classes/class-fl-builder-admin-settings.php:648
 
108
  msgid "Error! Please enter an iframe for the video embed code."
109
  msgstr "Errore! Per favore inserisci un iframe per il codice video embed."
110
 
111
- # @ fl-builder
112
  #: classes/class-fl-builder-admin-settings.php:666
 
113
  msgid "Error! You must have at least one feature of the help button enabled."
114
  msgstr "Errore! Devi avere almeno una funzione del bottone aiuto abilitata."
115
 
116
- # @ fl-builder
117
  #: classes/class-fl-builder-admin.php:39
118
  #, php-format
119
- msgid ""
120
- "This version of the <strong>Page Builder</strong> plugin is not compatible "
121
- "with WordPress Multisite. <a%s>Please upgrade</a> to the Multisite version "
122
- "of this plugin."
123
- msgstr ""
124
- "Questa versione del plugin <strong>Page Builder</strong> non è compatibile "
125
- "con WordPress Multisite. <a%s>Si prega di aggiornare</a> alla versione "
126
- "Multisite di questo plugin."
127
 
128
- # @ fl-builder
129
  #: classes/class-fl-builder-admin.php:49
130
- msgid ""
131
- "The <strong>Page Builder</strong> plugin requires WordPress version 3.5 or "
132
- "greater. Please update WordPress before activating the plugin."
133
- msgstr ""
134
- "Il plugin <strong>Page Builder</strong> richiede WordPress versione 3.5 o "
135
- "superiore. Si prega di aggiornare WordPress prima di attivare il plugin."
136
 
137
- # @ fl-builder
138
  #: classes/class-fl-builder-admin.php:90
139
  #, php-format
 
140
  msgid "Page Builder activated! <a%s>Click here</a> to enable remote updates."
141
- msgstr ""
142
- "Page Builder attivato! <a%s>Clicca qui</a> per attivare gli aggiornamenti "
143
- "remoti."
144
 
145
- # @ fl-builder
146
  #: classes/class-fl-builder-admin.php:184
 
147
  msgctxt "Plugin action link label."
148
  msgid "Upgrade"
149
  msgstr "Aggiorna"
150
 
151
- # @ fl-builder
152
  #: classes/class-fl-builder-admin.php:197
153
  #: classes/class-fl-builder-model.php:2437
 
154
  msgid "Page Builder"
155
  msgstr "Page Builder"
156
 
157
- # @ fl-builder
158
  #: classes/class-fl-builder-model.php:1394
159
  #, php-format
 
160
  msgctxt "%s stands for the module filename"
161
- msgid ""
162
- "A module with the filename %s.php already exists! Please namespace your "
163
- "module filenames to ensure compatibility with Beaver Builder."
164
- msgstr ""
165
- "Esiste già un modulo con il nome file %s.php! Per favore usa un namespace "
166
- "nel nome file del tuo modulo per assicurare la compatibilità con Beaver "
167
- "Builder."
168
 
169
- # @ fl-builder
170
- #: modules/heading/heading.php:16 modules/photo/photo.php:27
171
- #: modules/rich-text/rich-text.php:16 modules/separator/separator.php:16
 
172
  #: modules/video/video.php:21
 
173
  msgid "Basic Modules"
174
  msgstr "Moduli base"
175
 
176
- # @ fl-builder
177
- #: modules/accordion/accordion.php:16 modules/button/button.php:16
178
- #: modules/callout/callout.php:16 modules/contact-form/contact-form.php:16
179
- #: modules/content-slider/content-slider.php:16 modules/cta/cta.php:16
180
- #: modules/gallery/gallery.php:16 modules/html/html.php:16
181
- #: modules/icon/icon.php:16 modules/icon-group/icon-group.php:16
182
- #: modules/map/map.php:16 modules/post-grid/post-grid.php:16
183
- #: modules/pricing-table/pricing-table.php:16 modules/sidebar/sidebar.php:16
 
 
 
 
 
 
184
  #: modules/slideshow/slideshow.php:16
185
- #: modules/social-buttons/social-buttons.php:16 modules/tabs/tabs.php:16
 
186
  #: modules/testimonials/testimonials.php:16
187
  #: modules/woocommerce/woocommerce.php:18
 
188
  msgid "Advanced Modules"
189
  msgstr "Moduli avanzati"
190
 
191
- # @ fl-builder
192
  #: classes/class-fl-builder-model.php:1454
193
  #: classes/class-fl-builder-model.php:1508
 
194
  msgid "Other Modules"
195
  msgstr "Altri moduli"
196
 
197
- # @ fl-builder
198
- #: includes/ui.php:85 modules/widget/widget.php:16
 
199
  msgid "WordPress Widgets"
200
  msgstr "Widget di WordPress"
201
 
202
- # @ fl-builder
203
  #: classes/class-fl-builder-model.php:1852
204
  #, php-format
 
205
  msgctxt "%s stands for post/page title."
206
  msgid "Copy of %s"
207
  msgstr "Copia di %s"
208
 
209
- # @ fl-builder
210
  #: classes/class-fl-builder-photo.php:75
 
211
  msgctxt "Image size."
212
  msgid "Full Size"
213
  msgstr "Piena larghezza"
214
 
215
- # @ fl-builder
216
  #: classes/class-fl-builder-photo.php:76
 
217
  msgctxt "Image size."
218
  msgid "Large"
219
  msgstr "Grande"
220
 
221
- # @ fl-builder
222
  #: classes/class-fl-builder-photo.php:77
 
223
  msgctxt "Image size."
224
  msgid "Medium"
225
  msgstr "Media"
226
 
227
- # @ fl-builder
228
  #: classes/class-fl-builder-photo.php:78
 
229
  msgctxt "Image size."
230
  msgid "Thumbnail"
231
  msgstr "Miniatura"
232
 
233
- # @ fl-builder
234
  #: classes/class-fl-builder.php:699
235
  #, php-format
 
236
  msgctxt "Field name to add."
237
  msgid "Add %s"
238
  msgstr "Aggiungi %s"
239
 
240
- # @ fl-builder
241
- #: classes/class-fl-builder.php:762 classes/class-fl-builder.php:764
242
- msgctxt "Custom post type label."
243
- msgid "Layout Templates"
244
- msgstr "Modelli di layout"
245
-
246
- # @ fl-builder
247
- #: classes/class-fl-builder.php:763 classes/class-fl-builder.php:765
248
- msgctxt "Custom post type label."
249
- msgid "Layout Template"
250
- msgstr "Modello di layout"
251
-
252
- # @ fl-builder
253
  #: classes/class-fl-builder.php:766
 
254
  msgctxt "Custom post type label."
255
  msgid "Add New"
256
  msgstr "Aggiungi nuovo"
257
 
258
- # @ fl-builder
259
- #: classes/class-fl-builder.php:767
260
- msgctxt "Custom post type label."
261
- msgid "Add New Layout Template"
262
- msgstr "Aggiungi nuovo modello di Layout"
263
-
264
- # @ fl-builder
265
- #: classes/class-fl-builder.php:768
266
- msgctxt "Custom post type label."
267
- msgid "New Layout Template"
268
- msgstr "Nuovo modello di Layout"
269
-
270
- # @ fl-builder
271
- #: classes/class-fl-builder.php:769
272
- msgctxt "Custom post type label."
273
- msgid "Edit Layout Template"
274
- msgstr "Modifica modello di Layout"
275
-
276
- # @ fl-builder
277
- #: classes/class-fl-builder.php:770
278
- msgctxt "Custom post type label."
279
- msgid "View Layout Template"
280
- msgstr "Visualizza modello di Layout"
281
-
282
- # @ fl-builder
283
- #: classes/class-fl-builder.php:771
284
- msgctxt "Custom post type label."
285
- msgid "All Layout Templates"
286
- msgstr "Tutti i modelli di Layout"
287
-
288
- # @ fl-builder
289
- #: classes/class-fl-builder.php:772
290
- msgctxt "Custom post type label."
291
- msgid "Search Layout Templates"
292
- msgstr "Cerca modelli di Layout"
293
-
294
- # @ fl-builder
295
- #: classes/class-fl-builder.php:773
296
- msgctxt "Custom post type label."
297
- msgid "Parent Layout Templates:"
298
- msgstr "Modelli di Layout genitore:"
299
-
300
- # @ fl-builder
301
- #: classes/class-fl-builder.php:774
302
- msgctxt "Custom post type label."
303
- msgid "No layout templates found."
304
- msgstr "Nessun modello di layout trovato."
305
-
306
- # @ fl-builder
307
- #: classes/class-fl-builder.php:775
308
- msgctxt "Custom post type label."
309
- msgid "No layout templates found in Trash."
310
- msgstr "Nessun modello di layout trovato nel cestino."
311
-
312
- # @ fl-builder
313
- #: classes/class-fl-builder.php:1113 includes/js-config.php:58
314
  #, php-format
 
315
  msgctxt "%s stands for module name."
316
  msgid "%s Settings"
317
  msgstr "impostazioni %s"
318
 
319
- # @ fl-builder
320
- #: includes/admin-posts.php:3 modules/rich-text/rich-text.php:14
 
321
  msgid "Text Editor"
322
  msgstr "Editor di testo"
323
 
324
- # @ fl-builder
325
- #: includes/admin-posts.php:7
326
- #, php-format
327
- msgctxt "%s stands for custom branded \"Page Builder\" name."
328
- msgid "%s is currently active for this page."
329
- msgstr "%s è attualmente attivo per questa pagina."
330
-
331
- # @ fl-builder
332
  #: includes/admin-posts.php:8
333
  #, php-format
 
334
  msgctxt "%s stands for custom branded \"Page Builder\" name."
335
  msgid "Launch %s"
336
  msgstr "Lancia %s"
337
 
338
- # @ fl-builder
339
  #: includes/admin-posts.php:15
340
  #, php-format
 
341
  msgctxt "%s stands for custom branded \"Page Builder\" name."
342
- msgid ""
343
- "Switching to Text Editor mode will disable your %s layout until it is "
344
- "enabled again. Any edits made while in Text Editor mode will not be made on "
345
- "your %s layout. Do you want to continue?"
346
- msgstr ""
347
- "Tornando alla modalità Text Editor i layout di %s saranno disabilitati "
348
- "finchè non lo riattivi. Le modifiche apportate in modalità Text Editor non "
349
- "saranno effettuate sul tuo layout %s. Vuoi continuare?"
350
 
351
- # @ fl-builder
352
  #: includes/admin-settings-branding.php:7
 
353
  msgid "White label the page builder by entering a custom name below."
354
- msgstr ""
355
- "Togli l'etichetta al page builder inserendo un nome personalizzato qui sotto."
356
 
357
- # @ fl-builder
358
  #: includes/admin-settings-branding.php:10
359
- msgid ""
360
- "Additionally, you may also add a custom icon by entering the URL of an image "
361
- "below. Leave the field blank if you do not wish to use an icon."
362
- msgstr ""
363
- "Inoltre, puoi anche aggiungere un'icona personalizzata inserendo la URL di "
364
- "un'immagine qui sotto. Lascia il campo in bianco se non desideri usare "
365
- "un'icona."
366
 
367
- # @ fl-builder
368
  #: includes/admin-settings-branding.php:14
 
369
  msgid "Save Branding"
370
  msgstr "Salva Branding"
371
 
372
- # @ fl-builder
373
- #: includes/admin-settings.php:215 includes/multisite-settings.php:145
 
374
  msgid "Editing Settings"
375
  msgstr "Impostazioni di modifica"
376
 
377
- # @ fl-builder
378
- #: includes/admin-settings.php:81 includes/admin-settings.php:132
379
- #: includes/admin-settings.php:170 includes/admin-settings.php:222
 
 
380
  msgid "Override network settings?"
381
  msgstr "Eseguire l'override delle impostazioni di rete?"
382
 
383
- # @ fl-builder
384
- #: includes/admin-settings.php:228 includes/multisite-settings.php:150
385
  #, php-format
386
- msgid ""
387
- "Set the <a%s>capability</a> required for users to access advanced builder "
388
- "editing such as adding, deleting or moving modules."
389
- msgstr ""
390
- "Imposta la <a%s>capacità</a> necessaria degli utenti per accedere al builder "
391
- "avanzato e aggiungere, eliminare o spostare i moduli."
392
 
393
- # @ fl-builder
394
- #: includes/admin-settings.php:234 includes/multisite-settings.php:156
 
395
  msgid "Save Editing Settings"
396
  msgstr "Salva le impostazioni di modifica"
397
 
398
- # @ fl-builder
399
  #: includes/admin-settings-help-button.php:8
 
400
  msgid "Help Button Settings"
401
  msgstr "Impostazioni pulsante di aiuto"
402
 
403
- # @ fl-builder
404
  #: includes/admin-settings-help-button.php:17
 
405
  msgid "Enable Help Button"
406
  msgstr "Abilita pulsante di aiuto"
407
 
408
- # @ fl-builder
409
  #: includes/admin-settings-help-button.php:23
 
410
  msgid "Help Tour"
411
  msgstr "Visita guidata"
412
 
413
- # @ fl-builder
414
  #: includes/admin-settings-help-button.php:27
 
415
  msgid "Enable Help Tour"
416
  msgstr "Abilita visita guidata"
417
 
418
- # @ fl-builder
419
  #: includes/admin-settings-help-button.php:31
 
420
  msgid "Help Video"
421
  msgstr "Video di aiuto"
422
 
423
- # @ fl-builder
424
  #: includes/admin-settings-help-button.php:35
 
425
  msgid "Enable Help Video"
426
  msgstr "Abilita "
427
 
428
- # @ fl-builder
429
  #: includes/admin-settings-help-button.php:39
 
430
  msgid "Help Video Embed Code"
431
  msgstr "Codice di embed del video di aiuto"
432
 
433
- # @ fl-builder
434
  #: includes/admin-settings-help-button.php:45
 
435
  msgid "Knowledge Base"
436
  msgstr "Documentazione"
437
 
438
- # @ fl-builder
439
  #: includes/admin-settings-help-button.php:49
 
440
  msgid "Enable Knowledge Base"
441
  msgstr "Abilita documentazione"
442
 
443
- # @ fl-builder
444
  #: includes/admin-settings-help-button.php:53
 
445
  msgid "Knowledge Base URL"
446
  msgstr "URL documentazione"
447
 
448
- # @ fl-builder
449
  #: includes/admin-settings-help-button.php:59
 
450
  msgid "Forums"
451
  msgstr "Forum"
452
 
453
- # @ fl-builder
454
  #: includes/admin-settings-help-button.php:63
 
455
  msgid "Enable Forums"
456
  msgstr "Abilita forum"
457
 
458
- # @ fl-builder
459
  #: includes/admin-settings-help-button.php:67
 
460
  msgid "Forums URL"
461
  msgstr "URL forum"
462
 
463
- # @ fl-builder
464
  #: includes/admin-settings-help-button.php:77
 
465
  msgid "Save Help Button Settings"
466
  msgstr "Salva impostazioni pulsante di aiuto"
467
 
468
- # @ fl-builder
469
  #: includes/admin-settings-icons.php:3
 
470
  msgid "Icon Settings"
471
  msgstr "Impostazioni icona"
472
 
473
- # @ fl-builder
474
  #: includes/admin-settings-icons.php:13
 
475
  msgid "Icons for the main site must be managed in the network admin."
476
- msgstr ""
477
- "Le icone per il sito principale devono essere gestite nell'amministrazione "
478
- "di rete."
479
 
480
- # @ fl-builder
481
  #: includes/admin-settings-icons.php:33
482
  #, php-format
483
- msgid ""
484
- "Enable or disable icon sets using the options below or upload a custom icon "
485
- "set from either <a%s>Icomoon</a> or <a%s>Fontello</a>."
486
- msgstr ""
487
- "Abilita o disabilita set di icone usando le opzioni qui sotto o carica un "
488
- "set di icone personalizzato da <a%s>Icomoon</a> o <a%s>Fontello</a>."
489
 
490
- # @ fl-builder
491
  #: includes/admin-settings-icons.php:48
 
492
  msgctxt "Plugin setup page: Delete icon set."
493
  msgid "Delete"
494
  msgstr "Elimina"
495
 
496
- # @ fl-builder
497
  #: includes/admin-settings-icons.php:59
 
498
  msgid "Upload Icon Set"
499
  msgstr "Carica set di icone"
500
 
501
- # @ fl-builder
502
  #: includes/admin-settings-icons.php:60
 
503
  msgid "Save Icon Settings"
504
  msgstr "Salva impostazioni icona"
505
 
506
- # @ fl-builder
507
  #: includes/admin-settings-js-config.php:4
 
508
  msgid "Select File"
509
  msgstr "Seleziona file"
510
 
511
- # @ fl-builder
512
- #: includes/admin-settings.php:276 includes/multisite-settings.php:198
513
- msgid ""
514
- "Please type \"uninstall\" in the box below to confirm that you really want "
515
- "to uninstall the page builder and all of its data."
516
- msgstr ""
517
- "Si prega di digitare \"uninstall\" nella casella qui sotto per confermare "
518
- "che si desidera davvero disinstallare il page builder e tutti i relativi "
519
- "dati."
520
 
521
- # @ fl-builder
522
- #: includes/admin-settings.php:74 includes/multisite-settings.php:39
 
523
  msgid "Enabled Modules"
524
  msgstr "Moduli abilitati"
525
 
526
- # @ fl-builder
527
- #: includes/admin-settings.php:87 includes/multisite-settings.php:45
 
528
  msgid "Check or uncheck modules below to enable or disable them."
529
- msgstr ""
530
- "Selezionare o deselezionare i moduli sottostanti per abilitarli o "
531
- "disabilitarli."
532
 
533
- # @ fl-builder
534
- #: includes/admin-settings.php:96 includes/multisite-settings.php:54
 
535
  msgctxt "Plugin setup page: Modules."
536
  msgid "All"
537
  msgstr "Tutti"
538
 
539
- # @ fl-builder
540
- #: includes/admin-settings.php:114 includes/multisite-settings.php:72
 
541
  msgid "Save Module Settings"
542
  msgstr "Salvare le impostazioni del modulo"
543
 
544
- # @ fl-builder
545
  #: includes/admin-settings-post-types.php:18
546
- msgid ""
547
- "Enter a comma separated list of the post types you would like the builder to "
548
- "work with."
549
- msgstr ""
550
- "Inserisci una lista separata da virgole dei tipi di post su cui desideri "
551
- "attivare il builder."
552
 
553
- # @ fl-builder
554
- #: includes/admin-settings.php:177 includes/multisite-settings.php:117
 
555
  msgid "NOTE: Not all custom post types may be supported."
556
- msgstr ""
557
- "Nota: Non tutti i tipi di post personalizzati potrebbero essere supportati."
558
 
559
- # @ fl-builder
560
  #: includes/admin-settings-post-types.php:34
 
561
  msgid "Example: page, post, product"
562
  msgstr "Esempio: pagina, articolo, prodotto"
563
 
564
- # @ fl-builder
565
  #: includes/admin-settings.php:176
 
566
  msgid "Select the post types you would like the builder to work with."
567
  msgstr "Seleziona i tipi di post su cui vuoi abilitare il builder."
568
 
569
- # @ fl-builder
570
- #: includes/admin-settings.php:205 includes/multisite-settings.php:135
 
571
  msgid "Save Post Types"
572
  msgstr "Salva tipi di Post"
573
 
574
- # @ fl-builder
575
- #: includes/admin-settings.php:125 includes/multisite-settings.php:82
 
576
  msgid "Template Settings"
577
  msgstr "Impostazioni dei modelli"
578
 
579
- # @ fl-builder
580
- #: includes/admin-settings.php:138 includes/multisite-settings.php:88
581
- msgid "Enable or disable templates using the options below."
582
- msgstr "Abilitare o disabilitare i modelli utilizzando le opzioni qui sotto."
583
-
584
- # @ fl-builder
585
- #: includes/admin-settings.php:145 includes/multisite-settings.php:95
586
  msgid "Enable All Templates"
587
  msgstr "Abilita tutti i modelli"
588
 
589
- # @ fl-builder
590
- #: includes/admin-settings.php:146 includes/multisite-settings.php:96
 
591
  msgid "Enable Core Templates Only"
592
  msgstr "Abilita solo i modelli Core"
593
 
594
- # @ fl-builder
595
- #: includes/admin-settings.php:147 includes/multisite-settings.php:97
 
596
  msgid "Enable User Templates Only"
597
  msgstr "Abilita solo i modelli utente"
598
 
599
- # @ fl-builder
600
- #: includes/admin-settings.php:148 includes/multisite-settings.php:98
 
601
  msgid "Disable All Templates"
602
  msgstr "Disabilita tutti i modelli"
603
 
604
- # @ fl-builder
605
- #: includes/admin-settings.php:152 includes/multisite-settings.php:102
 
606
  msgid "Save Template Settings"
607
  msgstr "Salva le impostazioni dei modelli"
608
 
609
- # @ fl-builder
610
- #: includes/admin-settings.php:252 includes/multisite-settings.php:174
611
- msgid ""
612
- "Clicking the button below will uninstall the page builder plugin and delete "
613
- "all of the data associated with it. You can uninstall or deactivate the page "
614
- "builder from the plugins page instead if you do not wish to delete the data."
615
- msgstr ""
616
- "Clicca sul pulsante qui sotto per disinstallare il page builder plugin e "
617
- "rimuovere tutti i dati ad esso associati. È possibile disinstallare o "
618
- "disattivare il page builder dalla pagina dei plugin se invece non si "
619
- "desidera eliminare i dati."
620
-
621
- # @ fl-builder
622
- #: includes/admin-settings.php:254 includes/admin-settings.php:257
623
- #: includes/multisite-settings.php:176 includes/multisite-settings.php:179
624
  #: includes/updater/includes/form.php:31
 
625
  msgid "NOTE:"
626
  msgstr "NOTA:"
627
 
628
- # @ fl-builder
629
- #: includes/admin-settings.php:254 includes/multisite-settings.php:176
630
- msgid ""
631
- "The builder does not delete the post meta <code>_fl_builder_data</code>, "
632
- "<code>_fl_builder_draft</code> and <code>_fl_builder_enabled</code> in case "
633
- "you want to reinstall it later. If you do, the builder will rebuild all of "
634
- "its data using those meta values."
635
- msgstr ""
636
- "Il builder non elimina il post meta <code>_fl_builder_data</code> , "
637
- "<code>_fl_builder_draft</code> e <code>_fl_builder_enabled</code> nel caso "
638
- "in cui si desidera reinstallarlo successivamente. Se lo fai, il builder "
639
- "ricostruirà tutti i suoi dati utilizzando quei valori meta."
640
 
641
- # @ fl-builder
642
- #: includes/admin-settings.php:257 includes/multisite-settings.php:179
643
  #: includes/updater/includes/form.php:31
 
644
  msgid "This applies to all sites on the network."
645
  msgstr "Questo vale per tutti i siti della rete."
646
 
647
- # @ fl-builder
648
  #: includes/admin-settings.php:61
649
- msgid ""
650
- "You are currently running the lite version of the Beaver Builder plugin. "
651
- "Upgrade today for access to premium features such as advanced modules, "
652
- "templates, support and more!"
653
- msgstr ""
654
- "Stai usando la versione lite del plugin Beaver Builder. Aggiorna oggi per "
655
- "accedere a funzioni premium come moduli avanzati, modelli, supporto e altro!"
656
 
657
- # @ fl-builder
658
  #: includes/admin-settings.php:63
 
659
  msgid "Upgrade Now"
660
  msgstr "Aggiorna ora"
661
 
662
- # @ fl-builder
663
  #: includes/admin-settings.php:65
 
664
  msgid "Learn More"
665
  msgstr "Ulteriori informazioni"
666
 
667
- # @ fl-builder
668
- #: includes/column-settings.php:4 includes/js-config.php:21
 
669
  msgid "Column Settings"
670
  msgstr "Impostazioni colonna"
671
 
672
- # @ fl-builder
673
- #: includes/column-settings.php:7 includes/module-settings.php:95
674
- #: includes/row-settings.php:9 modules/accordion/accordion.php:45
675
- #: modules/button/button.php:95 modules/callout/callout.php:239
676
- #: modules/content-slider/content-slider.php:419 modules/cta/cta.php:99
677
- #: modules/heading/heading.php:69 modules/icon/icon.php:75
 
 
 
 
678
  #: modules/icon-group/icon-group.php:44
679
  #: modules/pricing-table/pricing-table.php:43
680
  #: modules/pricing-table/pricing-table.php:155
681
- #: modules/separator/separator.php:72 modules/tabs/tabs.php:45
 
 
682
  msgid "Style"
683
  msgstr "Stile"
684
 
685
- # @ fl-builder
686
  #: includes/column-settings.php:14
 
687
  msgid "Column Width"
688
  msgstr "Larghezza colonna"
689
 
690
- # @ fl-builder
691
- #: includes/column-settings.php:26 includes/row-settings.php:48
692
- #: modules/button/button.php:53 modules/callout/callout.php:223
693
- #: modules/callout/callout.php:476 modules/callout/callout.php:492
 
 
694
  #: modules/content-slider/content-slider.php:376
695
- #: modules/content-slider/content-slider.php:610 modules/cta/cta.php:82
 
696
  #: modules/cta/cta.php:219
 
697
  msgid "Text"
698
  msgstr "Testo"
699
 
700
- # @ fl-builder
701
- #: includes/column-settings.php:30 includes/column-settings.php:43
702
- #: includes/column-settings.php:100 includes/row-settings.php:52
703
- #: includes/row-settings.php:109 includes/row-settings.php:379
 
 
704
  #: modules/callout/callout.php:389
705
- #: modules/content-slider/content-slider.php:331 modules/icon/icon.php:82
706
- #: modules/icon-group/icon-group.php:51 modules/separator/separator.php:34
 
 
 
707
  msgid "Color"
708
  msgstr "Colore"
709
 
710
- # @ fl-builder
711
- #: includes/column-settings.php:39 includes/row-settings.php:105
712
- #: modules/button/button.php:102 modules/callout/callout.php:402
 
713
  #: modules/callout/callout.php:506
714
  #: modules/content-slider/content-slider.php:357
715
- #: modules/content-slider/content-slider.php:624 modules/cta/cta.php:195
716
- #: modules/cta/cta.php:262 modules/icon/icon.php:95
 
 
717
  #: modules/icon-group/icon-group.php:64
 
718
  msgid "Background Color"
719
  msgstr "Colore di sfondo"
720
 
721
- # @ fl-builder
722
- #: includes/column-settings.php:51 includes/column-settings.php:108
723
- #: includes/row-settings.php:117 includes/row-settings.php:387
 
724
  #: modules/separator/separator.php:44
 
725
  msgid "Opacity"
726
  msgstr "Opacità"
727
 
728
- # @ fl-builder
729
- #: includes/column-settings.php:63 includes/row-settings.php:342
 
730
  msgid "Border"
731
  msgstr "Bordo"
732
 
733
- # @ fl-builder
734
- #: includes/column-settings.php:67 includes/row-settings.php:65
735
- #: includes/row-settings.php:346 modules/callout/callout.php:472
 
736
  #: modules/content-slider/content-slider.php:325
737
  #: modules/content-slider/content-slider.php:372
738
  #: modules/content-slider/content-slider.php:590
739
  #: modules/content-slider/content-slider.php:694
740
  #: modules/slideshow/slideshow.php:339
 
741
  msgid "Type"
742
  msgstr "Tipo"
743
 
744
- # @ fl-builder
745
- #: includes/column-settings.php:69 includes/row-settings.php:348
746
- msgid ""
747
- "The type of border to use. Double borders must have a width of at least 3px "
748
- "to render properly."
749
- msgstr ""
750
- "Il tipo di bordo da utilizzare. I bordi doppi devono avere una larghezza di "
751
- "almeno 3px per essere visualizzati correttamente."
752
 
753
- # @ fl-builder
754
- #: includes/column-settings.php:71 includes/row-settings.php:350
 
755
  msgctxt "Border type."
756
  msgid "None"
757
  msgstr "Nessuno"
758
 
759
- # @ fl-builder
760
- #: includes/column-settings.php:72 includes/row-settings.php:351
761
  #: modules/separator/separator.php:75
 
762
  msgctxt "Border type."
763
  msgid "Solid"
764
  msgstr "Solido"
765
 
766
- # @ fl-builder
767
- #: includes/column-settings.php:73 includes/row-settings.php:352
768
  #: modules/separator/separator.php:76
 
769
  msgctxt "Border type."
770
  msgid "Dashed"
771
  msgstr "Tratteggiato"
772
 
773
- # @ fl-builder
774
- #: includes/column-settings.php:74 includes/row-settings.php:353
775
  #: modules/separator/separator.php:77
 
776
  msgctxt "Border type."
777
  msgid "Dotted"
778
  msgstr "Punteggiato"
779
 
780
- # @ fl-builder
781
- #: includes/column-settings.php:75 includes/row-settings.php:354
782
  #: modules/separator/separator.php:78
 
783
  msgctxt "Border type."
784
  msgid "Double"
785
  msgstr "Doppio"
786
 
787
- # @ fl-builder
788
- #: includes/column-settings.php:119 includes/row-settings.php:398
 
789
  msgid "Top Width"
790
  msgstr "Larghezza superiore"
791
 
792
- # @ fl-builder
793
- #: includes/column-settings.php:131 includes/row-settings.php:410
 
794
  msgid "Bottom Width"
795
  msgstr "Larghezza inferiore"
796
 
797
- # @ fl-builder
798
- #: includes/column-settings.php:143 includes/row-settings.php:422
 
799
  msgid "Left Width"
800
  msgstr "Larghezza sinistra"
801
 
802
- # @ fl-builder
803
- #: includes/column-settings.php:155 includes/row-settings.php:434
 
804
  msgid "Right Width"
805
  msgstr "Larghezza destra"
806
 
807
- # @ fl-builder
808
- #: includes/column-settings.php:170 includes/module-settings.php:6
809
- #: includes/row-settings.php:449 modules/content-slider/content-slider.php:267
 
 
810
  msgid "Advanced"
811
  msgstr "Avanzato"
812
 
813
- # @ fl-builder
814
- #: includes/column-settings.php:263 includes/global-settings.php:41
815
- #: includes/global-settings.php:71 includes/module-settings.php:38
 
816
  #: includes/row-settings.php:481
 
817
  msgid "Margins"
818
  msgstr "Margini"
819
 
820
- # @ fl-builder
821
- #: includes/column-settings.php:267 includes/column-settings.php:320
822
- #: includes/module-settings.php:42 includes/row-settings.php:485
823
- #: includes/row-settings.php:538 modules/slideshow/slideshow.php:475
 
 
 
824
  msgid "Top"
825
  msgstr "Alto"
826
 
827
- # @ fl-builder
828
- #: includes/column-settings.php:279 includes/column-settings.php:332
829
- #: includes/module-settings.php:54 includes/row-settings.php:497
830
- #: includes/row-settings.php:550 modules/slideshow/slideshow.php:474
 
 
 
831
  msgid "Bottom"
832
  msgstr "Basso"
833
 
834
- # @ fl-builder
835
- #: includes/column-settings.php:291 includes/column-settings.php:344
836
- #: includes/module-settings.php:66 includes/row-settings.php:509
837
- #: includes/row-settings.php:562 modules/button/button.php:177
 
 
838
  #: modules/callout/callout.php:250
839
- #: modules/content-slider/content-slider.php:470 modules/cta/cta.php:123
840
- #: modules/heading/heading.php:89 modules/heading/heading.php:161
841
- #: modules/icon/icon.php:134 modules/icon-group/icon-group.php:111
842
- #: modules/photo/photo.php:417 modules/social-buttons/social-buttons.php:101
 
 
 
 
 
843
  msgid "Left"
844
  msgstr "Sinistra"
845
 
846
- # @ fl-builder
847
- #: includes/column-settings.php:303 includes/column-settings.php:356
848
- #: includes/module-settings.php:78 includes/row-settings.php:521
849
- #: includes/row-settings.php:574 modules/button/button.php:178
 
 
850
  #: modules/callout/callout.php:251
851
- #: modules/content-slider/content-slider.php:472 modules/cta/cta.php:125
852
- #: modules/heading/heading.php:91 modules/heading/heading.php:163
853
- #: modules/icon/icon.php:135 modules/icon-group/icon-group.php:112
854
- #: modules/photo/photo.php:419 modules/social-buttons/social-buttons.php:102
 
 
 
 
 
855
  msgid "Right"
856
  msgstr "Destra"
857
 
858
- # @ fl-builder
859
- #: includes/column-settings.php:316 includes/global-settings.php:49
860
- #: includes/row-settings.php:534 modules/button/button.php:191
 
861
  #: modules/callout/callout.php:567
862
- #: modules/content-slider/content-slider.php:668 modules/cta/cta.php:314
 
 
863
  msgid "Padding"
864
  msgstr "Padding"
865
 
866
- # @ fl-builder
867
- #: includes/column-settings.php:186 includes/global-settings.php:80
 
868
  msgid "Responsive Layout"
869
  msgstr "Layout reattivo"
870
 
871
- # @ fl-builder
872
- #: includes/column-settings.php:190 includes/module-settings.php:21
873
- #: includes/row-settings.php:464 modules/slideshow/slideshow.php:290
 
 
874
  msgid "Display"
875
  msgstr "Visualizza"
876
 
877
- # @ fl-builder
878
- #: includes/column-settings.php:192 includes/module-settings.php:23
879
  #: includes/row-settings.php:466
 
880
  msgid "Always"
881
  msgstr "Sempre"
882
 
883
- # @ fl-builder
884
- #: includes/column-settings.php:193 includes/module-settings.php:24
885
  #: includes/row-settings.php:467
 
886
  msgid "Large Devices Only"
887
  msgstr "Solo dispositivi grandi"
888
 
889
- # @ fl-builder
890
- #: includes/column-settings.php:194 includes/module-settings.php:25
891
  #: includes/row-settings.php:468
 
892
  msgid "Large &amp; Medium Devices Only"
893
  msgstr "Solo dispositivi grandi e medi"
894
 
895
- # @ fl-builder
896
- #: includes/column-settings.php:195 includes/module-settings.php:26
897
  #: includes/row-settings.php:469
 
898
  msgid "Medium Devices Only"
899
  msgstr "Solo dispositivi medi"
900
 
901
- # @ fl-builder
902
- #: includes/column-settings.php:196 includes/module-settings.php:27
903
  #: includes/row-settings.php:470
 
904
  msgid "Medium &amp; Small Devices Only"
905
  msgstr "Solo dispositivi medi e piccoli"
906
 
907
- # @ fl-builder
908
- #: includes/column-settings.php:197 includes/module-settings.php:28
909
  #: includes/row-settings.php:471
 
910
  msgid "Small Devices Only"
911
  msgstr "Solo dispositivi piccoli"
912
 
913
- # @ fl-builder
914
  #: includes/column-settings.php:199
 
915
  msgid "Choose whether to show or hide this column at different device sizes."
916
- msgstr ""
917
- "Scegli se visualizzare o nascondere questa colonna a diverse dimensioni dei "
918
- "dispositivi."
919
 
920
- # @ fl-builder
921
  #: includes/column-settings.php:206
 
922
  msgid "Medium Device Width"
923
  msgstr "Larghezza dispositivi medi"
924
 
925
- # @ fl-builder
926
  #: includes/column-settings.php:207
 
927
  msgid "The width of this column on medium devices such as tablets."
928
  msgstr "La larghezza della colonna su dispositivi medi come i tablet."
929
 
930
- # @ fl-builder
931
- #: includes/column-settings.php:209 includes/column-settings.php:237
932
  #: modules/callout/callout.php:281
933
- #: modules/content-slider/content-slider.php:442 modules/cta/cta.php:165
934
- #: modules/heading/heading.php:117 modules/heading/heading.php:144
 
 
935
  #: modules/heading/heading.php:174
 
936
  msgid "Default"
937
  msgstr "Predefinita"
938
 
939
- # @ fl-builder
940
- #: includes/column-settings.php:210 includes/column-settings.php:238
941
- #: modules/button/button.php:151 modules/callout/callout.php:282
942
- #: modules/content-slider/content-slider.php:443 modules/cta/cta.php:166
943
- #: modules/heading/heading.php:118 modules/heading/heading.php:145
 
 
 
944
  #: modules/heading/heading.php:175
945
  #: modules/social-buttons/social-buttons.php:74
 
946
  msgid "Custom"
947
  msgstr "Personalizzata"
948
 
949
- # @ fl-builder
950
  #: includes/column-settings.php:223
 
951
  msgid "Custom Medium Device Width"
952
  msgstr "Larghezza personalizzata dispositivi medi"
953
 
954
- # @ fl-builder
955
  #: includes/column-settings.php:234
 
956
  msgid "Small Device Width"
957
  msgstr "Larghezza dispositivi piccoli"
958
 
959
- # @ fl-builder
960
  #: includes/column-settings.php:235
 
961
  msgid "The width of this column on small devices such as phones."
962
  msgstr "La larghezza della colonna su dispositivi piccoli come i telefoni."
963
 
964
- # @ fl-builder
965
  #: includes/column-settings.php:251
 
966
  msgid "Custom Small Device Width"
967
  msgstr "Larghezza personalizzata dispositivi piccoli"
968
 
969
- # @ fl-builder
970
- #: includes/column-settings.php:356 includes/module-settings.php:115
971
  #: includes/row-settings.php:603
 
972
  msgid "CSS Selectors"
973
  msgstr "Selettore CSS"
974
 
975
- # @ fl-builder
976
  #: includes/loop-settings.php:27
 
977
  msgid "ID"
978
  msgstr "ID"
979
 
980
- # @ fl-builder
981
  #: includes/column-settings.php:361
982
- msgid ""
983
- "A unique ID that will be applied to this column's HTML. Must start with a "
984
- "letter and only contain dashes, underscores, letters or numbers. No spaces."
985
- msgstr ""
986
- "Un ID univoco che sarà applicato al codice HTML della colonna. Deve iniziare "
987
- "con una lettera e contenere solo trattini, underscore, lettere o numeri. "
988
- "Niente spazi."
989
 
990
- # @ fl-builder
991
- #: includes/column-settings.php:177 includes/module-settings.php:13
992
  #: includes/row-settings.php:456
 
993
  msgid "CSS Class"
994
  msgstr "Classe CSS"
995
 
996
- # @ fl-builder
997
  #: includes/column-settings.php:369
998
- msgid ""
999
- "A class that will be applied to this column's HTML. Must start with a letter "
1000
- "and only contain dashes, underscores, letters or numbers. Separate multiple "
1001
- "classes with spaces."
1002
- msgstr ""
1003
- "Una classe che sarà applicata al codice HTML di questa colonna. Deve "
1004
- "iniziare con una lettera e contenere solo trattini, underscore, lettere o "
1005
- "numeri. Separa classi multiple con spazio."
1006
 
1007
- # @ fl-builder
1008
  #: includes/field-form.php:17
1009
  #, php-format
 
1010
  msgctxt "%s stands for form fiel
1
  msgid ""
2
  msgstr ""
3
+ "Project-Id-Version: Beaver Builder Plugin (Agency Version) v1.5.8\n"
4
  "Report-Msgid-Bugs-To: \n"
5
  "POT-Creation-Date: \n"
6
+ "PO-Revision-Date: 2015-05-18 13:57:36+0000\n"
7
  "Last-Translator: Alessandro Curci <hantarex@gmail.com>\n"
8
  "Language-Team: \n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
  "Plural-Forms: nplurals=2; plural=n != 1;\n"
13
+ "X-Generator: CSL v1.x\n"
14
+ "X-Poedit-Language: Italian\n"
15
+ "X-Poedit-Country: ITALY\n"
16
  "X-Poedit-SourceCharset: utf-8\n"
17
+ "X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;\n"
 
18
  "X-Poedit-Basepath: ../\n"
19
+ "X-Poedit-Bookmarks: \n"
 
20
  "X-Poedit-SearchPath-0: .\n"
21
+ "X-Textdomain-Support: yes"
22
 
23
+ #: includes/admin-settings.php:7
24
+ #: includes/global-settings.php:4
25
  #: includes/multisite-settings.php:7
26
  #, php-format
27
+ #@ fl-builder
28
  msgctxt "%s stands for custom branded \"Page Builder\" name."
29
  msgid "%s Settings"
30
  msgstr "impostazioni %s"
31
 
32
+ #: includes/admin-settings.php:12
33
+ #: includes/multisite-settings.php:12
34
+ #@ fl-builder
35
  msgid "Settings updated!"
36
  msgstr "Impostazioni aggiornate!"
37
 
38
+ #: includes/admin-settings.php:19
39
+ #: includes/multisite-settings.php:18
40
+ #@ fl-builder
41
  msgid "License"
42
  msgstr "Licenza"
43
 
44
+ #: includes/admin-settings.php:23
45
+ #: includes/admin-settings.php:59
46
+ #@ fl-builder
47
  msgid "Upgrade"
48
  msgstr "Aggiornamento"
49
 
50
+ #: includes/admin-settings.php:26
51
+ #: includes/global-settings.php:67
52
  #: includes/multisite-settings.php:19
53
+ #@ fl-builder
54
  msgid "Modules"
55
  msgstr "Moduli"
56
 
57
+ #: includes/admin-settings.php:29
58
+ #: includes/multisite-settings.php:20
59
  #: includes/ui.php:44
60
+ #@ fl-builder
61
  msgid "Templates"
62
  msgstr "Modelli"
63
 
64
+ #: includes/admin-settings.php:32
65
+ #: includes/admin-settings.php:163
66
+ #: includes/multisite-settings.php:21
67
+ #: includes/multisite-settings.php:112
68
+ #@ fl-builder
69
  msgid "Post Types"
70
  msgstr "Tipi di post"
71
 
 
72
  #: modules/icon-group/icon-group.php:27
73
+ #@ fl-builder
74
  msgid "Icons"
75
  msgstr "Icone"
76
 
77
+ #: includes/admin-settings.php:33
78
+ #: includes/multisite-settings.php:22
79
+ #@ fl-builder
80
  msgid "Editing"
81
  msgstr "Modifica"
82
 
83
+ #: includes/admin-branding.php:3
84
+ #: includes/admin-settings.php:36
85
  #: includes/multisite-settings.php:23
86
+ #@ fl-builder
87
  msgid "Branding"
88
  msgstr "Branding"
89
 
 
90
  #: classes/class-fl-builder-admin-settings.php:179
91
+ #@ fl-builder
92
  msgid "Help Button"
93
  msgstr "Pulsante Aiuto"
94
 
95
+ #: includes/admin-settings.php:40
96
+ #: includes/admin-settings.php:250
97
+ #: includes/admin-settings.php:262
98
+ #: includes/multisite-settings.php:24
99
+ #: includes/multisite-settings.php:172
100
+ #: includes/multisite-settings.php:184
101
+ #@ fl-builder
102
  msgid "Uninstall"
103
  msgstr "Disinstalla"
104
 
 
105
  #: classes/class-fl-builder-admin-settings.php:450
106
+ #@ fl-builder
107
  msgid "Error! You must have at least one icon set enabled."
108
  msgstr "Errore! Devi avere almeno un set di icone abilitato."
109
 
 
110
  #: classes/class-fl-builder-admin-settings.php:492
111
+ #@ fl-builder
112
  msgid "Error! Could not unzip file."
113
  msgstr "Errore! Non è stato possibile decomprimere il file."
114
 
 
115
  #: classes/class-fl-builder-admin-settings.php:526
116
+ #@ fl-builder
117
  msgid "Error! Please upload an icon set from either Icomoon or Fontello."
118
  msgstr "Errore! Per favore carica un set di icone da Iconmoon o Fontello."
119
 
 
120
  #: classes/class-fl-builder-admin-settings.php:648
121
+ #@ fl-builder
122
  msgid "Error! Please enter an iframe for the video embed code."
123
  msgstr "Errore! Per favore inserisci un iframe per il codice video embed."
124
 
 
125
  #: classes/class-fl-builder-admin-settings.php:666
126
+ #@ fl-builder
127
  msgid "Error! You must have at least one feature of the help button enabled."
128
  msgstr "Errore! Devi avere almeno una funzione del bottone aiuto abilitata."
129
 
 
130
  #: classes/class-fl-builder-admin.php:39
131
  #, php-format
132
+ #@ fl-builder
133
+ msgid "This version of the <strong>Page Builder</strong> plugin is not compatible with WordPress Multisite. <a%s>Please upgrade</a> to the Multisite version of this plugin."
134
+ msgstr "Questa versione del plugin <strong>Page Builder</strong> non è compatibile con WordPress Multisite. <a%s>Si prega di aggiornare</a> alla versione Multisite di questo plugin."
 
 
 
 
 
135
 
 
136
  #: classes/class-fl-builder-admin.php:49
137
+ #@ fl-builder
138
+ msgid "The <strong>Page Builder</strong> plugin requires WordPress version 3.5 or greater. Please update WordPress before activating the plugin."
139
+ msgstr "Il plugin <strong>Page Builder</strong> richiede WordPress versione 3.5 o superiore. Si prega di aggiornare WordPress prima di attivare il plugin."
 
 
 
140
 
 
141
  #: classes/class-fl-builder-admin.php:90
142
  #, php-format
143
+ #@ fl-builder
144
  msgid "Page Builder activated! <a%s>Click here</a> to enable remote updates."
145
+ msgstr "Page Builder attivato! <a%s>Clicca qui</a> per attivare gli aggiornamenti remoti."
 
 
146
 
 
147
  #: classes/class-fl-builder-admin.php:184
148
+ #@ fl-builder
149
  msgctxt "Plugin action link label."
150
  msgid "Upgrade"
151
  msgstr "Aggiorna"
152
 
 
153
  #: classes/class-fl-builder-admin.php:197
154
  #: classes/class-fl-builder-model.php:2437
155
+ #@ fl-builder
156
  msgid "Page Builder"
157
  msgstr "Page Builder"
158
 
 
159
  #: classes/class-fl-builder-model.php:1394
160
  #, php-format
161
+ #@ fl-builder
162
  msgctxt "%s stands for the module filename"
163
+ msgid "A module with the filename %s.php already exists! Please namespace your module filenames to ensure compatibility with Beaver Builder."
164
+ msgstr "Esiste già un modulo con il nome file %s.php! Per favore usa un namespace nel nome file del tuo modulo per assicurare la compatibilità con Beaver Builder."
 
 
 
 
 
165
 
166
+ #: modules/heading/heading.php:16
167
+ #: modules/photo/photo.php:27
168
+ #: modules/rich-text/rich-text.php:16
169
+ #: modules/separator/separator.php:16
170
  #: modules/video/video.php:21
171
+ #@ fl-builder
172
  msgid "Basic Modules"
173
  msgstr "Moduli base"
174
 
175
+ #: modules/accordion/accordion.php:16
176
+ #: modules/button/button.php:16
177
+ #: modules/callout/callout.php:16
178
+ #: modules/contact-form/contact-form.php:16
179
+ #: modules/content-slider/content-slider.php:16
180
+ #: modules/cta/cta.php:16
181
+ #: modules/gallery/gallery.php:16
182
+ #: modules/html/html.php:16
183
+ #: modules/icon/icon.php:16
184
+ #: modules/icon-group/icon-group.php:16
185
+ #: modules/map/map.php:16
186
+ #: modules/post-grid/post-grid.php:16
187
+ #: modules/pricing-table/pricing-table.php:16
188
+ #: modules/sidebar/sidebar.php:16
189
  #: modules/slideshow/slideshow.php:16
190
+ #: modules/social-buttons/social-buttons.php:16
191
+ #: modules/tabs/tabs.php:16
192
  #: modules/testimonials/testimonials.php:16
193
  #: modules/woocommerce/woocommerce.php:18
194
+ #@ fl-builder
195
  msgid "Advanced Modules"
196
  msgstr "Moduli avanzati"
197
 
 
198
  #: classes/class-fl-builder-model.php:1454
199
  #: classes/class-fl-builder-model.php:1508
200
+ #@ fl-builder
201
  msgid "Other Modules"
202
  msgstr "Altri moduli"
203
 
204
+ #: includes/ui.php:85
205
+ #: modules/widget/widget.php:16
206
+ #@ fl-builder
207
  msgid "WordPress Widgets"
208
  msgstr "Widget di WordPress"
209
 
 
210
  #: classes/class-fl-builder-model.php:1852
211
  #, php-format
212
+ #@ fl-builder
213
  msgctxt "%s stands for post/page title."
214
  msgid "Copy of %s"
215
  msgstr "Copia di %s"
216
 
 
217
  #: classes/class-fl-builder-photo.php:75
218
+ #@ fl-builder
219
  msgctxt "Image size."
220
  msgid "Full Size"
221
  msgstr "Piena larghezza"
222
 
 
223
  #: classes/class-fl-builder-photo.php:76
224
+ #@ fl-builder
225
  msgctxt "Image size."
226
  msgid "Large"
227
  msgstr "Grande"
228
 
 
229
  #: classes/class-fl-builder-photo.php:77
230
+ #@ fl-builder
231
  msgctxt "Image size."
232
  msgid "Medium"
233
  msgstr "Media"
234
 
 
235
  #: classes/class-fl-builder-photo.php:78
236
+ #@ fl-builder
237
  msgctxt "Image size."
238
  msgid "Thumbnail"
239
  msgstr "Miniatura"
240
 
 
241
  #: classes/class-fl-builder.php:699
242
  #, php-format
243
+ #@ fl-builder
244
  msgctxt "Field name to add."
245
  msgid "Add %s"
246
  msgstr "Aggiungi %s"
247
 
 
 
 
 
 
 
 
 
 
 
 
 
 
248
  #: classes/class-fl-builder.php:766
249
+ #@ fl-builder
250
  msgctxt "Custom post type label."
251
  msgid "Add New"
252
  msgstr "Aggiungi nuovo"
253
 
254
+ #: classes/class-fl-builder.php:1113
255
+ #: includes/js-config.php:58
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
256
  #, php-format
257
+ #@ fl-builder
258
  msgctxt "%s stands for module name."
259
  msgid "%s Settings"
260
  msgstr "impostazioni %s"
261
 
262
+ #: includes/admin-posts.php:3
263
+ #: modules/rich-text/rich-text.php:14
264
+ #@ fl-builder
265
  msgid "Text Editor"
266
  msgstr "Editor di testo"
267
 
 
 
 
 
 
 
 
 
268
  #: includes/admin-posts.php:8
269
  #, php-format
270
+ #@ fl-builder
271
  msgctxt "%s stands for custom branded \"Page Builder\" name."
272
  msgid "Launch %s"
273
  msgstr "Lancia %s"
274
 
 
275
  #: includes/admin-posts.php:15
276
  #, php-format
277
+ #@ fl-builder
278
  msgctxt "%s stands for custom branded \"Page Builder\" name."
279
+ msgid "Switching to Text Editor mode will disable your %s layout until it is enabled again. Any edits made while in Text Editor mode will not be made on your %s layout. Do you want to continue?"
280
+ msgstr "Tornando alla modalità Text Editor i layout di %s saranno disabilitati finchè non lo riattivi. Le modifiche apportate in modalità Text Editor non saranno effettuate sul tuo layout %s. Vuoi continuare?"
 
 
 
 
 
 
281
 
 
282
  #: includes/admin-settings-branding.php:7
283
+ #@ fl-builder
284
  msgid "White label the page builder by entering a custom name below."
285
+ msgstr "Togli l'etichetta al page builder inserendo un nome personalizzato qui sotto."
 
286
 
 
287
  #: includes/admin-settings-branding.php:10
288
+ #@ fl-builder
289
+ msgid "Additionally, you may also add a custom icon by entering the URL of an image below. Leave the field blank if you do not wish to use an icon."
290
+ msgstr "Inoltre, puoi anche aggiungere un'icona personalizzata inserendo la URL di un'immagine qui sotto. Lascia il campo in bianco se non desideri usare un'icona."
 
 
 
 
291
 
 
292
  #: includes/admin-settings-branding.php:14
293
+ #@ fl-builder
294
  msgid "Save Branding"
295
  msgstr "Salva Branding"
296
 
297
+ #: includes/admin-settings.php:215
298
+ #: includes/multisite-settings.php:145
299
+ #@ fl-builder
300
  msgid "Editing Settings"
301
  msgstr "Impostazioni di modifica"
302
 
303
+ #: includes/admin-settings.php:81
304
+ #: includes/admin-settings.php:132
305
+ #: includes/admin-settings.php:170
306
+ #: includes/admin-settings.php:222
307
+ #@ fl-builder
308
  msgid "Override network settings?"
309
  msgstr "Eseguire l'override delle impostazioni di rete?"
310
 
311
+ #: includes/admin-settings.php:228
312
+ #: includes/multisite-settings.php:150
313
  #, php-format
314
+ #@ fl-builder
315
+ msgid "Set the <a%s>capability</a> required for users to access advanced builder editing such as adding, deleting or moving modules."
316
+ msgstr "Imposta la <a%s>capacità</a> necessaria degli utenti per accedere al builder avanzato e aggiungere, eliminare o spostare i moduli."
 
 
 
317
 
318
+ #: includes/admin-settings.php:234
319
+ #: includes/multisite-settings.php:156
320
+ #@ fl-builder
321
  msgid "Save Editing Settings"
322
  msgstr "Salva le impostazioni di modifica"
323
 
 
324
  #: includes/admin-settings-help-button.php:8
325
+ #@ fl-builder
326
  msgid "Help Button Settings"
327
  msgstr "Impostazioni pulsante di aiuto"
328
 
 
329
  #: includes/admin-settings-help-button.php:17
330
+ #@ fl-builder
331
  msgid "Enable Help Button"
332
  msgstr "Abilita pulsante di aiuto"
333
 
 
334
  #: includes/admin-settings-help-button.php:23
335
+ #@ fl-builder
336
  msgid "Help Tour"
337
  msgstr "Visita guidata"
338
 
 
339
  #: includes/admin-settings-help-button.php:27
340
+ #@ fl-builder
341
  msgid "Enable Help Tour"
342
  msgstr "Abilita visita guidata"
343
 
 
344
  #: includes/admin-settings-help-button.php:31
345
+ #@ fl-builder
346
  msgid "Help Video"
347
  msgstr "Video di aiuto"
348
 
 
349
  #: includes/admin-settings-help-button.php:35
350
+ #@ fl-builder
351
  msgid "Enable Help Video"
352
  msgstr "Abilita "
353
 
 
354
  #: includes/admin-settings-help-button.php:39
355
+ #@ fl-builder
356
  msgid "Help Video Embed Code"
357
  msgstr "Codice di embed del video di aiuto"
358
 
 
359
  #: includes/admin-settings-help-button.php:45
360
+ #@ fl-builder
361
  msgid "Knowledge Base"
362
  msgstr "Documentazione"
363
 
 
364
  #: includes/admin-settings-help-button.php:49
365
+ #@ fl-builder
366
  msgid "Enable Knowledge Base"
367
  msgstr "Abilita documentazione"
368
 
 
369
  #: includes/admin-settings-help-button.php:53
370
+ #@ fl-builder
371
  msgid "Knowledge Base URL"
372
  msgstr "URL documentazione"
373
 
 
374
  #: includes/admin-settings-help-button.php:59
375
+ #@ fl-builder
376
  msgid "Forums"
377
  msgstr "Forum"
378
 
 
379
  #: includes/admin-settings-help-button.php:63
380
+ #@ fl-builder
381
  msgid "Enable Forums"
382
  msgstr "Abilita forum"
383
 
 
384
  #: includes/admin-settings-help-button.php:67
385
+ #@ fl-builder
386
  msgid "Forums URL"
387
  msgstr "URL forum"
388
 
 
389
  #: includes/admin-settings-help-button.php:77
390
+ #@ fl-builder
391
  msgid "Save Help Button Settings"
392
  msgstr "Salva impostazioni pulsante di aiuto"
393
 
 
394
  #: includes/admin-settings-icons.php:3
395
+ #@ fl-builder
396
  msgid "Icon Settings"
397
  msgstr "Impostazioni icona"
398
 
 
399
  #: includes/admin-settings-icons.php:13
400
+ #@ fl-builder
401
  msgid "Icons for the main site must be managed in the network admin."
402
+ msgstr "Le icone per il sito principale devono essere gestite nell'amministrazione di rete."
 
 
403
 
 
404
  #: includes/admin-settings-icons.php:33
405
  #, php-format
406
+ #@ fl-builder
407
+ msgid "Enable or disable icon sets using the options below or upload a custom icon set from either <a%s>Icomoon</a> or <a%s>Fontello</a>."
408
+ msgstr "Abilita o disabilita set di icone usando le opzioni qui sotto o carica un set di icone personalizzato da <a%s>Icomoon</a> o <a%s>Fontello</a>."
 
 
 
409
 
 
410
  #: includes/admin-settings-icons.php:48
411
+ #@ fl-builder
412
  msgctxt "Plugin setup page: Delete icon set."
413
  msgid "Delete"
414
  msgstr "Elimina"
415
 
 
416
  #: includes/admin-settings-icons.php:59
417
+ #@ fl-builder
418
  msgid "Upload Icon Set"
419
  msgstr "Carica set di icone"
420
 
 
421
  #: includes/admin-settings-icons.php:60
422
+ #@ fl-builder
423
  msgid "Save Icon Settings"
424
  msgstr "Salva impostazioni icona"
425
 
 
426
  #: includes/admin-settings-js-config.php:4
427
+ #@ fl-builder
428
  msgid "Select File"
429
  msgstr "Seleziona file"
430
 
431
+ #: includes/admin-settings.php:276
432
+ #: includes/multisite-settings.php:198
433
+ #@ fl-builder
434
+ msgid "Please type \"uninstall\" in the box below to confirm that you really want to uninstall the page builder and all of its data."
435
+ msgstr "Si prega di digitare \"uninstall\" nella casella qui sotto per confermare che si desidera davvero disinstallare il page builder e tutti i relativi dati."
 
 
 
 
436
 
437
+ #: includes/admin-settings.php:74
438
+ #: includes/multisite-settings.php:39
439
+ #@ fl-builder
440
  msgid "Enabled Modules"
441
  msgstr "Moduli abilitati"
442
 
443
+ #: includes/admin-settings.php:87
444
+ #: includes/multisite-settings.php:45
445
+ #@ fl-builder
446
  msgid "Check or uncheck modules below to enable or disable them."
447
+ msgstr "Selezionare o deselezionare i moduli sottostanti per abilitarli o disabilitarli."
 
 
448
 
449
+ #: includes/admin-settings.php:96
450
+ #: includes/multisite-settings.php:54
451
+ #@ fl-builder
452
  msgctxt "Plugin setup page: Modules."
453
  msgid "All"
454
  msgstr "Tutti"
455
 
456
+ #: includes/admin-settings.php:114
457
+ #: includes/multisite-settings.php:72
458
+ #@ fl-builder
459
  msgid "Save Module Settings"
460
  msgstr "Salvare le impostazioni del modulo"
461
 
 
462
  #: includes/admin-settings-post-types.php:18
463
+ #@ fl-builder
464
+ msgid "Enter a comma separated list of the post types you would like the builder to work with."
465
+ msgstr "Inserisci una lista separata da virgole dei tipi di post su cui desideri attivare il builder."
 
 
 
466
 
467
+ #: includes/admin-settings.php:177
468
+ #: includes/multisite-settings.php:117
469
+ #@ fl-builder
470
  msgid "NOTE: Not all custom post types may be supported."
471
+ msgstr "Nota: Non tutti i tipi di post personalizzati potrebbero essere supportati."
 
472
 
 
473
  #: includes/admin-settings-post-types.php:34
474
+ #@ fl-builder
475
  msgid "Example: page, post, product"
476
  msgstr "Esempio: pagina, articolo, prodotto"
477
 
 
478
  #: includes/admin-settings.php:176
479
+ #@ fl-builder
480
  msgid "Select the post types you would like the builder to work with."
481
  msgstr "Seleziona i tipi di post su cui vuoi abilitare il builder."
482
 
483
+ #: includes/admin-settings.php:205
484
+ #: includes/multisite-settings.php:135
485
+ #@ fl-builder
486
  msgid "Save Post Types"
487
  msgstr "Salva tipi di Post"
488
 
489
+ #: includes/admin-settings.php:125
490
+ #: includes/multisite-settings.php:82
491
+ #@ fl-builder
492
  msgid "Template Settings"
493
  msgstr "Impostazioni dei modelli"
494
 
495
+ #: includes/admin-settings.php:145
496
+ #: includes/multisite-settings.php:95
497
+ #@ fl-builder
 
 
 
 
498
  msgid "Enable All Templates"
499
  msgstr "Abilita tutti i modelli"
500
 
501
+ #: includes/admin-settings.php:146
502
+ #: includes/multisite-settings.php:96
503
+ #@ fl-builder
504
  msgid "Enable Core Templates Only"
505
  msgstr "Abilita solo i modelli Core"
506
 
507
+ #: includes/admin-settings.php:147
508
+ #: includes/multisite-settings.php:97
509
+ #@ fl-builder
510
  msgid "Enable User Templates Only"
511
  msgstr "Abilita solo i modelli utente"
512
 
513
+ #: includes/admin-settings.php:148
514
+ #: includes/multisite-settings.php:98
515
+ #@ fl-builder
516
  msgid "Disable All Templates"
517
  msgstr "Disabilita tutti i modelli"
518
 
519
+ #: includes/admin-settings.php:152
520
+ #: includes/multisite-settings.php:102
521
+ #@ fl-builder
522
  msgid "Save Template Settings"
523
  msgstr "Salva le impostazioni dei modelli"
524
 
525
+ #: includes/admin-settings.php:252
526
+ #: includes/multisite-settings.php:174
527
+ #@ fl-builder
528
+ msgid "Clicking the button below will uninstall the page builder plugin and delete all of the data associated with it. You can uninstall or deactivate the page builder from the plugins page instead if you do not wish to delete the data."
529
+ msgstr "Clicca sul pulsante qui sotto per disinstallare il page builder plugin e rimuovere tutti i dati ad esso associati. È possibile disinstallare o disattivare il page builder dalla pagina dei plugin se invece non si desidera eliminare i dati."
530
+
531
+ #: includes/admin-settings.php:254
532
+ #: includes/admin-settings.php:257
533
+ #: includes/multisite-settings.php:176
534
+ #: includes/multisite-settings.php:179
 
 
 
 
 
535
  #: includes/updater/includes/form.php:31
536
+ #@ fl-builder
537
  msgid "NOTE:"
538
  msgstr "NOTA:"
539
 
540
+ #: includes/admin-settings.php:254
541
+ #: includes/multisite-settings.php:176
542
+ #@ fl-builder
543
+ msgid "The builder does not delete the post meta <code>_fl_builder_data</code>, <code>_fl_builder_draft</code> and <code>_fl_builder_enabled</code> in case you want to reinstall it later. If you do, the builder will rebuild all of its data using those meta values."
544
+ msgstr "Il builder non elimina il post meta <code>_fl_builder_data</code> , <code>_fl_builder_draft</code> e <code>_fl_builder_enabled</code> nel caso in cui si desidera reinstallarlo successivamente. Se lo fai, il builder ricostruirà tutti i suoi dati utilizzando quei valori meta."
 
 
 
 
 
 
 
545
 
546
+ #: includes/admin-settings.php:257
547
+ #: includes/multisite-settings.php:179
548
  #: includes/updater/includes/form.php:31
549
+ #@ fl-builder
550
  msgid "This applies to all sites on the network."
551
  msgstr "Questo vale per tutti i siti della rete."
552
 
 
553
  #: includes/admin-settings.php:61
554
+ #@ fl-builder
555
+ msgid "You are currently running the lite version of the Beaver Builder plugin. Upgrade today for access to premium features such as advanced modules, templates, support and more!"
556
+ msgstr "Stai usando la versione lite del plugin Beaver Builder. Aggiorna oggi per accedere a funzioni premium come moduli avanzati, modelli, supporto e altro!"
 
 
 
 
557
 
 
558
  #: includes/admin-settings.php:63
559
+ #@ fl-builder
560
  msgid "Upgrade Now"
561
  msgstr "Aggiorna ora"
562
 
 
563
  #: includes/admin-settings.php:65
564
+ #@ fl-builder
565
  msgid "Learn More"
566
  msgstr "Ulteriori informazioni"
567
 
568
+ #: includes/column-settings.php:4
569
+ #: includes/js-config.php:21
570
+ #@ fl-builder
571
  msgid "Column Settings"
572
  msgstr "Impostazioni colonna"
573
 
574
+ #: includes/column-settings.php:7
575
+ #: includes/module-settings.php:95
576
+ #: includes/row-settings.php:9
577
+ #: modules/accordion/accordion.php:45
578
+ #: modules/button/button.php:95
579
+ #: modules/callout/callout.php:239
580
+ #: modules/content-slider/content-slider.php:419
581
+ #: modules/cta/cta.php:99
582
+ #: modules/heading/heading.php:69
583
+ #: modules/icon/icon.php:75
584
  #: modules/icon-group/icon-group.php:44
585
  #: modules/pricing-table/pricing-table.php:43
586
  #: modules/pricing-table/pricing-table.php:155
587
+ #: modules/separator/separator.php:72
588
+ #: modules/tabs/tabs.php:45
589
+ #@ fl-builder
590
  msgid "Style"
591
  msgstr "Stile"
592
 
 
593
  #: includes/column-settings.php:14
594
+ #@ fl-builder
595
  msgid "Column Width"
596
  msgstr "Larghezza colonna"
597
 
598
+ #: includes/column-settings.php:26
599
+ #: includes/row-settings.php:48
600
+ #: modules/button/button.php:53
601
+ #: modules/callout/callout.php:223
602
+ #: modules/callout/callout.php:476
603
+ #: modules/callout/callout.php:492
604
  #: modules/content-slider/content-slider.php:376
605
+ #: modules/content-slider/content-slider.php:610
606
+ #: modules/cta/cta.php:82
607
  #: modules/cta/cta.php:219
608
+ #@ fl-builder
609
  msgid "Text"
610
  msgstr "Testo"
611
 
612
+ #: includes/column-settings.php:30
613
+ #: includes/column-settings.php:43
614
+ #: includes/column-settings.php:100
615
+ #: includes/row-settings.php:52
616
+ #: includes/row-settings.php:109
617
+ #: includes/row-settings.php:379
618
  #: modules/callout/callout.php:389
619
+ #: modules/content-slider/content-slider.php:331
620
+ #: modules/icon/icon.php:82
621
+ #: modules/icon-group/icon-group.php:51
622
+ #: modules/separator/separator.php:34
623
+ #@ fl-builder
624
  msgid "Color"
625
  msgstr "Colore"
626
 
627
+ #: includes/column-settings.php:39
628
+ #: includes/row-settings.php:105
629
+ #: modules/button/button.php:102
630
+ #: modules/callout/callout.php:402
631
  #: modules/callout/callout.php:506
632
  #: modules/content-slider/content-slider.php:357
633
+ #: modules/content-slider/content-slider.php:624
634
+ #: modules/cta/cta.php:195
635
+ #: modules/cta/cta.php:262
636
+ #: modules/icon/icon.php:95
637
  #: modules/icon-group/icon-group.php:64
638
+ #@ fl-builder
639
  msgid "Background Color"
640
  msgstr "Colore di sfondo"
641
 
642
+ #: includes/column-settings.php:51
643
+ #: includes/column-settings.php:108
644
+ #: includes/row-settings.php:117
645
+ #: includes/row-settings.php:387
646
  #: modules/separator/separator.php:44
647
+ #@ fl-builder
648
  msgid "Opacity"
649
  msgstr "Opacità"
650
 
651
+ #: includes/column-settings.php:63
652
+ #: includes/row-settings.php:342
653
+ #@ fl-builder
654
  msgid "Border"
655
  msgstr "Bordo"
656
 
657
+ #: includes/column-settings.php:67
658
+ #: includes/row-settings.php:65
659
+ #: includes/row-settings.php:346
660
+ #: modules/callout/callout.php:472
661
  #: modules/content-slider/content-slider.php:325
662
  #: modules/content-slider/content-slider.php:372
663
  #: modules/content-slider/content-slider.php:590
664
  #: modules/content-slider/content-slider.php:694
665
  #: modules/slideshow/slideshow.php:339
666
+ #@ fl-builder
667
  msgid "Type"
668
  msgstr "Tipo"
669
 
670
+ #: includes/column-settings.php:69
671
+ #: includes/row-settings.php:348
672
+ #@ fl-builder
673
+ msgid "The type of border to use. Double borders must have a width of at least 3px to render properly."
674
+ msgstr "Il tipo di bordo da utilizzare. I bordi doppi devono avere una larghezza di almeno 3px per essere visualizzati correttamente."
 
 
 
675
 
676
+ #: includes/column-settings.php:71
677
+ #: includes/row-settings.php:350
678
+ #@ fl-builder
679
  msgctxt "Border type."
680
  msgid "None"
681
  msgstr "Nessuno"
682
 
683
+ #: includes/column-settings.php:72
684
+ #: includes/row-settings.php:351
685
  #: modules/separator/separator.php:75
686
+ #@ fl-builder
687
  msgctxt "Border type."
688
  msgid "Solid"
689
  msgstr "Solido"
690
 
691
+ #: includes/column-settings.php:73
692
+ #: includes/row-settings.php:352
693
  #: modules/separator/separator.php:76
694
+ #@ fl-builder
695
  msgctxt "Border type."
696
  msgid "Dashed"
697
  msgstr "Tratteggiato"
698
 
699
+ #: includes/column-settings.php:74
700
+ #: includes/row-settings.php:353
701
  #: modules/separator/separator.php:77
702
+ #@ fl-builder
703
  msgctxt "Border type."
704
  msgid "Dotted"
705
  msgstr "Punteggiato"
706
 
707
+ #: includes/column-settings.php:75
708
+ #: includes/row-settings.php:354
709
  #: modules/separator/separator.php:78
710
+ #@ fl-builder
711
  msgctxt "Border type."
712
  msgid "Double"
713
  msgstr "Doppio"
714
 
715
+ #: includes/column-settings.php:119
716
+ #: includes/row-settings.php:398
717
+ #@ fl-builder
718
  msgid "Top Width"
719
  msgstr "Larghezza superiore"
720
 
721
+ #: includes/column-settings.php:131
722
+ #: includes/row-settings.php:410
723
+ #@ fl-builder
724
  msgid "Bottom Width"
725
  msgstr "Larghezza inferiore"
726
 
727
+ #: includes/column-settings.php:143
728
+ #: includes/row-settings.php:422
729
+ #@ fl-builder
730
  msgid "Left Width"
731
  msgstr "Larghezza sinistra"
732
 
733
+ #: includes/column-settings.php:155
734
+ #: includes/row-settings.php:434
735
+ #@ fl-builder
736
  msgid "Right Width"
737
  msgstr "Larghezza destra"
738
 
739
+ #: includes/column-settings.php:170
740
+ #: includes/module-settings.php:6
741
+ #: includes/row-settings.php:449
742
+ #: modules/content-slider/content-slider.php:267
743
+ #@ fl-builder
744
  msgid "Advanced"
745
  msgstr "Avanzato"
746
 
747
+ #: includes/column-settings.php:263
748
+ #: includes/global-settings.php:41
749
+ #: includes/global-settings.php:71
750
+ #: includes/module-settings.php:38
751
  #: includes/row-settings.php:481
752
+ #@ fl-builder
753
  msgid "Margins"
754
  msgstr "Margini"
755
 
756
+ #: includes/column-settings.php:267
757
+ #: includes/column-settings.php:320
758
+ #: includes/module-settings.php:42
759
+ #: includes/row-settings.php:485
760
+ #: includes/row-settings.php:538
761
+ #: modules/slideshow/slideshow.php:475
762
+ #@ fl-builder
763
  msgid "Top"
764
  msgstr "Alto"
765
 
766
+ #: includes/column-settings.php:279
767
+ #: includes/column-settings.php:332
768
+ #: includes/module-settings.php:54
769
+ #: includes/row-settings.php:497
770
+ #: includes/row-settings.php:550
771
+ #: modules/slideshow/slideshow.php:474
772
+ #@ fl-builder
773
  msgid "Bottom"
774
  msgstr "Basso"
775
 
776
+ #: includes/column-settings.php:291
777
+ #: includes/column-settings.php:344
778
+ #: includes/module-settings.php:66
779
+ #: includes/row-settings.php:509
780
+ #: includes/row-settings.php:562
781
+ #: modules/button/button.php:177
782
  #: modules/callout/callout.php:250
783
+ #: modules/content-slider/content-slider.php:470
784
+ #: modules/cta/cta.php:123
785
+ #: modules/heading/heading.php:89
786
+ #: modules/heading/heading.php:161
787
+ #: modules/icon/icon.php:134
788
+ #: modules/icon-group/icon-group.php:111
789
+ #: modules/photo/photo.php:417
790
+ #: modules/social-buttons/social-buttons.php:101
791
+ #@ fl-builder
792
  msgid "Left"
793
  msgstr "Sinistra"
794
 
795
+ #: includes/column-settings.php:303
796
+ #: includes/column-settings.php:356
797
+ #: includes/module-settings.php:78
798
+ #: includes/row-settings.php:521
799
+ #: includes/row-settings.php:574
800
+ #: modules/button/button.php:178
801
  #: modules/callout/callout.php:251
802
+ #: modules/content-slider/content-slider.php:472
803
+ #: modules/cta/cta.php:125
804
+ #: modules/heading/heading.php:91
805
+ #: modules/heading/heading.php:163
806
+ #: modules/icon/icon.php:135
807
+ #: modules/icon-group/icon-group.php:112
808
+ #: modules/photo/photo.php:419
809
+ #: modules/social-buttons/social-buttons.php:102
810
+ #@ fl-builder
811
  msgid "Right"
812
  msgstr "Destra"
813
 
814
+ #: includes/column-settings.php:316
815
+ #: includes/global-settings.php:49
816
+ #: includes/row-settings.php:534
817
+ #: modules/button/button.php:191
818
  #: modules/callout/callout.php:567
819
+ #: modules/content-slider/content-slider.php:668
820
+ #: modules/cta/cta.php:314
821
+ #@ fl-builder
822
  msgid "Padding"
823
  msgstr "Padding"
824
 
825
+ #: includes/column-settings.php:186
826
+ #: includes/global-settings.php:80
827
+ #@ fl-builder
828
  msgid "Responsive Layout"
829
  msgstr "Layout reattivo"
830
 
831
+ #: includes/column-settings.php:190
832
+ #: includes/module-settings.php:21
833
+ #: includes/row-settings.php:464
834
+ #: modules/slideshow/slideshow.php:290
835
+ #@ fl-builder
836
  msgid "Display"
837
  msgstr "Visualizza"
838
 
839
+ #: includes/column-settings.php:192
840
+ #: includes/module-settings.php:23
841
  #: includes/row-settings.php:466
842
+ #@ fl-builder
843
  msgid "Always"
844
  msgstr "Sempre"
845
 
846
+ #: includes/column-settings.php:193
847
+ #: includes/module-settings.php:24
848
  #: includes/row-settings.php:467
849
+ #@ fl-builder
850
  msgid "Large Devices Only"
851
  msgstr "Solo dispositivi grandi"
852
 
853
+ #: includes/column-settings.php:194
854
+ #: includes/module-settings.php:25
855
  #: includes/row-settings.php:468
856
+ #@ fl-builder
857
  msgid "Large &amp; Medium Devices Only"
858
  msgstr "Solo dispositivi grandi e medi"
859
 
860
+ #: includes/column-settings.php:195
861
+ #: includes/module-settings.php:26
862
  #: includes/row-settings.php:469
863
+ #@ fl-builder
864
  msgid "Medium Devices Only"
865
  msgstr "Solo dispositivi medi"
866
 
867
+ #: includes/column-settings.php:196
868
+ #: includes/module-settings.php:27
869
  #: includes/row-settings.php:470
870
+ #@ fl-builder
871
  msgid "Medium &amp; Small Devices Only"
872
  msgstr "Solo dispositivi medi e piccoli"
873
 
874
+ #: includes/column-settings.php:197
875
+ #: includes/module-settings.php:28
876
  #: includes/row-settings.php:471
877
+ #@ fl-builder
878
  msgid "Small Devices Only"
879
  msgstr "Solo dispositivi piccoli"
880
 
 
881
  #: includes/column-settings.php:199
882
+ #@ fl-builder
883
  msgid "Choose whether to show or hide this column at different device sizes."
884
+ msgstr "Scegli se visualizzare o nascondere questa colonna a diverse dimensioni dei dispositivi."
 
 
885
 
 
886
  #: includes/column-settings.php:206
887
+ #@ fl-builder
888
  msgid "Medium Device Width"
889
  msgstr "Larghezza dispositivi medi"
890
 
 
891
  #: includes/column-settings.php:207
892
+ #@ fl-builder
893
  msgid "The width of this column on medium devices such as tablets."
894
  msgstr "La larghezza della colonna su dispositivi medi come i tablet."
895
 
896
+ #: includes/column-settings.php:209
897
+ #: includes/column-settings.php:237
898
  #: modules/callout/callout.php:281
899
+ #: modules/content-slider/content-slider.php:442
900
+ #: modules/cta/cta.php:165
901
+ #: modules/heading/heading.php:117
902
+ #: modules/heading/heading.php:144
903
  #: modules/heading/heading.php:174
904
+ #@ fl-builder
905
  msgid "Default"
906
  msgstr "Predefinita"
907
 
908
+ #: includes/column-settings.php:210
909
+ #: includes/column-settings.php:238
910
+ #: modules/button/button.php:151
911
+ #: modules/callout/callout.php:282
912
+ #: modules/content-slider/content-slider.php:443
913
+ #: modules/cta/cta.php:166
914
+ #: modules/heading/heading.php:118
915
+ #: modules/heading/heading.php:145
916
  #: modules/heading/heading.php:175
917
  #: modules/social-buttons/social-buttons.php:74
918
+ #@ fl-builder
919
  msgid "Custom"
920
  msgstr "Personalizzata"
921
 
 
922
  #: includes/column-settings.php:223
923
+ #@ fl-builder
924
  msgid "Custom Medium Device Width"
925
  msgstr "Larghezza personalizzata dispositivi medi"
926
 
 
927
  #: includes/column-settings.php:234
928
+ #@ fl-builder
929
  msgid "Small Device Width"
930
  msgstr "Larghezza dispositivi piccoli"
931
 
 
932
  #: includes/column-settings.php:235
933
+ #@ fl-builder
934
  msgid "The width of this column on small devices such as phones."
935
  msgstr "La larghezza della colonna su dispositivi piccoli come i telefoni."
936
 
 
937
  #: includes/column-settings.php:251
938
+ #@ fl-builder
939
  msgid "Custom Small Device Width"
940
  msgstr "Larghezza personalizzata dispositivi piccoli"
941
 
942
+ #: includes/column-settings.php:356
943
+ #: includes/module-settings.php:115
944
  #: includes/row-settings.php:603
945
+ #@ fl-builder
946
  msgid "CSS Selectors"
947
  msgstr "Selettore CSS"
948
 
 
949
  #: includes/loop-settings.php:27
950
+ #@ fl-builder
951
  msgid "ID"
952
  msgstr "ID"
953
 
 
954
  #: includes/column-settings.php:361
955
+ #@ fl-builder
956
+ msgid "A unique ID that will be applied to this column's HTML. Must start with a letter and only contain dashes, underscores, letters or numbers. No spaces."
957
+ msgstr "Un ID univoco che sarà applicato al codice HTML della colonna. Deve iniziare con una lettera e contenere solo trattini, underscore, lettere o numeri. Niente spazi."
 
 
 
 
958
 
959
+ #: includes/column-settings.php:177
960
+ #: includes/module-settings.php:13
961
  #: includes/row-settings.php:456
962
+ #@ fl-builder
963
  msgid "CSS Class"
964
  msgstr "Classe CSS"
965
 
 
966
  #: includes/column-settings.php:369
967
+ #@ fl-builder
968
+ msgid "A class that will be applied to this column's HTML. Must start with a letter and only contain dashes, underscores, letters or numbers. Separate multiple classes with spaces."
969
+ msgstr "Una classe che sarà applicata al codice HTML di questa colonna. Deve iniziare con una lettera e contenere solo trattini, underscore, lettere o numeri. Separa classi multiple con spazio."
 
 
 
 
 
970
 
 
971
  #: includes/field-form.php:17
972
  #, php-format
973
+ #@ fl-builder
974
  msgctxt "%s stands for form fiel