WP Staging – DB & File Duplicator & Migration - Version 2.9.11

Version Description

  • New: Add Amazon S3 as backup cloud storage option for backup upload #1665
  • Fix: Fatal error due to missing BackupScheduler class in Free version #1688
  • Fix: Can not recursive scan file system if there is a symlink in root directory linking to the root directory itself. #1688
  • Fix: Can not download backup files. Incorrect backup download link if wp-content folder is symlinked to another folder outside the wp root folder #1697
  • Fix: Error on downloading backup in IIS due to section in parent web.config that overwrites the WP STAGING generated web.config in backup folder #1699
  • Fix: PHP Fatal error while cloning if php iconv extension is not active. Continue cloning even if punycode related code doesn't work due to missing extensions #1702
  • Enh: Remove duplicated mbstring class #1702
Download this release

Release Info

Developer ReneHermi
Plugin Icon 128x128 WP Staging – DB & File Duplicator & Migration
Version 2.9.11
Comparing to
See all releases

Code changes from version 2.9.10 to 2.9.11

Files changed (144) hide show
  1. Backend/Administrator.php +1 -1
  2. Backend/Modules/Jobs/Files.php +0 -34
  3. Backend/views/_main/footer.php +1 -0
  4. Backend/views/backup/listing-backups-no-results.php +1 -1
  5. Backend/views/backup/listing.php +3 -0
  6. Backend/views/backup/modal/upload.php +2 -1
  7. Backend/views/notices/analytics-consent-failed.php +2 -2
  8. Backend/views/settings/main-settings.php +3 -3
  9. Backend/views/settings/tabs/general.php +96 -119
  10. Backend/views/settings/tabs/remote-storages.php +1 -1
  11. Backend/views/settings/tabs/storages/amazons3-settings.php +76 -0
  12. Backend/views/settings/tabs/storages/googledrive-settings.php +7 -4
  13. Backend/views/tools/index.php +2 -2
  14. Backend/views/tools/tabs/import_export.php +8 -8
  15. Core/DTO/Settings.php +2 -2
  16. Core/Utils/IISWebConfig.php +2 -0
  17. Framework/Adapter/Directory.php +24 -6
  18. Framework/Analytics/WithAnalyticsSiteInfo.php +2 -1
  19. Framework/Assets/Assets.php +4 -3
  20. Framework/SiteInfo.php +61 -3
  21. Framework/Utils/ThirdParty/Punycode.php +5 -11
  22. Framework/Utils/Urls.php +22 -5
  23. Framework/Utils/WpDefaultDirectories.php +7 -51
  24. assets/css/dist/wpstg-admin.css +98 -10
  25. assets/css/dist/wpstg-admin.css.map +1 -1
  26. assets/css/dist/wpstg-admin.min.css +1 -1
  27. assets/css/dist/wpstg-admin.min.css.map +1 -1
  28. bootstrap.php +1 -1
  29. constantsFree.php +1 -1
  30. languages/wp-staging-de_DE.po +9 -9
  31. languages/wp-staging-fr_FR.po +10 -10
  32. opcacheBootstrap.php +1 -1
  33. readme.txt +76 -33
  34. vendor_wpstg/autoload/files.php +3 -0
  35. vendor_wpstg/autoload/src.php +285 -1
  36. vendor_wpstg/autoload/vendor.php +285 -0
  37. vendor_wpstg/aws/aws-crt-php/NOTICE +1 -0
  38. vendor_wpstg/aws/aws-crt-php/builder.json +37 -0
  39. vendor_wpstg/aws/aws-crt-php/config.m4 +30 -0
  40. vendor_wpstg/aws/aws-crt-php/config.w32 +13 -0
  41. vendor_wpstg/aws/aws-crt-php/ext/awscrt.c +17 -0
  42. vendor_wpstg/aws/aws-crt-php/ext/awscrt.stub.php +212 -0
  43. vendor_wpstg/aws/aws-crt-php/ext/awscrt_arginfo.h +413 -0
  44. vendor_wpstg/aws/aws-crt-php/ext/crc.c +32 -0
  45. vendor_wpstg/aws/aws-crt-php/ext/credentials.c +154 -0
  46. vendor_wpstg/aws/aws-crt-php/ext/crt.c +314 -0
  47. vendor_wpstg/aws/aws-crt-php/ext/event_loop.c +48 -0
  48. vendor_wpstg/aws/aws-crt-php/ext/http.c +36 -0
  49. vendor_wpstg/aws/aws-crt-php/ext/logging.c +65 -0
  50. vendor_wpstg/aws/aws-crt-php/ext/php_aws_crt.h +171 -0
  51. vendor_wpstg/aws/aws-crt-php/ext/php_util.c +33 -0
  52. vendor_wpstg/aws/aws-crt-php/ext/signing.c +374 -0
  53. vendor_wpstg/aws/aws-crt-php/ext/stream.c +148 -0
  54. vendor_wpstg/aws/aws-crt-php/format-check.sh +24 -0
  55. vendor_wpstg/aws/aws-crt-php/gen_api.php +22 -0
  56. vendor_wpstg/aws/aws-crt-php/gen_stub.php +1641 -0
  57. vendor_wpstg/aws/aws-crt-php/package.xml-template_post +19 -0
  58. vendor_wpstg/aws/aws-crt-php/package.xml-template_pre +24 -0
  59. vendor_wpstg/aws/aws-crt-php/php-win.ini +2 -0
  60. vendor_wpstg/aws/aws-crt-php/php.ini +1 -0
  61. vendor_wpstg/aws/aws-crt-php/prepare_package_xml.sh +144 -0
  62. vendor_wpstg/aws/aws-crt-php/prepare_release.sh +31 -0
  63. vendor_wpstg/aws/aws-crt-php/run_tests +18 -0
  64. vendor_wpstg/aws/aws-crt-php/run_tests.bat +4 -0
  65. vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/Auth/AwsCredentials.php +61 -0
  66. vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/Auth/CredentialsProvider.php +24 -0
  67. vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/Auth/Signable.php +44 -0
  68. vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/Auth/SignatureType.php +17 -0
  69. vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/Auth/SignedBodyHeaderType.php +13 -0
  70. vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/Auth/Signing.php +23 -0
  71. vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/Auth/SigningAlgorithm.php +13 -0
  72. vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/Auth/SigningConfigAWS.php +50 -0
  73. vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/Auth/SigningResult.php +34 -0
  74. vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/Auth/StaticCredentialsProvider.php +35 -0
  75. vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/CRT.php +356 -0
  76. vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/HTTP/Headers.php +51 -0
  77. vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/HTTP/Message.php +94 -0
  78. vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/HTTP/Request.php +33 -0
  79. vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/HTTP/Response.php +29 -0
  80. vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/IO/EventLoopGroup.php +38 -0
  81. vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/IO/InputStream.php +49 -0
  82. vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/Internal/Encoding.php +40 -0
  83. vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/Internal/Extension.php +31 -0
  84. vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/Log.php +49 -0
  85. vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/NativeResource.php +42 -0
  86. vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/Options.php +80 -0
  87. vendor_wpstg/aws/aws-sdk-php/NOTICE +17 -0
  88. vendor_wpstg/aws/aws-sdk-php/src/AbstractConfigurationProvider.php +133 -0
  89. vendor_wpstg/aws/aws-sdk-php/src/Api/AbstractModel.php +70 -0
  90. vendor_wpstg/aws/aws-sdk-php/src/Api/ApiProvider.php +212 -0
  91. vendor_wpstg/aws/aws-sdk-php/src/Api/DateTimeResult.php +109 -0
  92. vendor_wpstg/aws/aws-sdk-php/src/Api/DocModel.php +102 -0
  93. vendor_wpstg/aws/aws-sdk-php/src/Api/ErrorParser/AbstractErrorParser.php +70 -0
  94. vendor_wpstg/aws/aws-sdk-php/src/Api/ErrorParser/JsonParserTrait.php +26 -0
  95. vendor_wpstg/aws/aws-sdk-php/src/Api/ErrorParser/JsonRpcErrorParser.php +36 -0
  96. vendor_wpstg/aws/aws-sdk-php/src/Api/ErrorParser/RestJsonErrorParser.php +43 -0
  97. vendor_wpstg/aws/aws-sdk-php/src/Api/ErrorParser/XmlErrorParser.php +82 -0
  98. vendor_wpstg/aws/aws-sdk-php/src/Api/ListShape.php +30 -0
  99. vendor_wpstg/aws/aws-sdk-php/src/Api/MapShape.php +43 -0
  100. vendor_wpstg/aws/aws-sdk-php/src/Api/Operation.php +87 -0
  101. vendor_wpstg/aws/aws-sdk-php/src/Api/Parser/AbstractParser.php +35 -0
  102. vendor_wpstg/aws/aws-sdk-php/src/Api/Parser/AbstractRestParser.php +140 -0
  103. vendor_wpstg/aws/aws-sdk-php/src/Api/Parser/Crc32ValidatingParser.php +38 -0
  104. vendor_wpstg/aws/aws-sdk-php/src/Api/Parser/DecodingEventStreamIterator.php +246 -0
  105. vendor_wpstg/aws/aws-sdk-php/src/Api/Parser/EventParsingIterator.php +86 -0
  106. vendor_wpstg/aws/aws-sdk-php/src/Api/Parser/Exception/ParserException.php +49 -0
  107. vendor_wpstg/aws/aws-sdk-php/src/Api/Parser/JsonParser.php +57 -0
  108. vendor_wpstg/aws/aws-sdk-php/src/Api/Parser/JsonRpcParser.php +36 -0
  109. vendor_wpstg/aws/aws-sdk-php/src/Api/Parser/MetadataParserTrait.php +71 -0
  110. vendor_wpstg/aws/aws-sdk-php/src/Api/Parser/PayloadParserTrait.php +47 -0
  111. vendor_wpstg/aws/aws-sdk-php/src/Api/Parser/QueryParser.php +46 -0
  112. vendor_wpstg/aws/aws-sdk-php/src/Api/Parser/RestJsonParser.php +39 -0
  113. vendor_wpstg/aws/aws-sdk-php/src/Api/Parser/RestXmlParser.php +33 -0
  114. vendor_wpstg/aws/aws-sdk-php/src/Api/Parser/XmlParser.php +125 -0
  115. vendor_wpstg/aws/aws-sdk-php/src/Api/Serializer/Ec2ParamBuilder.php +32 -0
  116. vendor_wpstg/aws/aws-sdk-php/src/Api/Serializer/JsonBody.php +86 -0
  117. vendor_wpstg/aws/aws-sdk-php/src/Api/Serializer/JsonRpcSerializer.php +49 -0
  118. vendor_wpstg/aws/aws-sdk-php/src/Api/Serializer/QueryParamBuilder.php +112 -0
  119. vendor_wpstg/aws/aws-sdk-php/src/Api/Serializer/QuerySerializer.php +44 -0
  120. vendor_wpstg/aws/aws-sdk-php/src/Api/Serializer/RestJsonSerializer.php +34 -0
  121. vendor_wpstg/aws/aws-sdk-php/src/Api/Serializer/RestSerializer.php +200 -0
  122. vendor_wpstg/aws/aws-sdk-php/src/Api/Serializer/RestXmlSerializer.php +42 -0
  123. vendor_wpstg/aws/aws-sdk-php/src/Api/Serializer/XmlBody.php +148 -0
  124. vendor_wpstg/aws/aws-sdk-php/src/Api/Service.php +357 -0
  125. vendor_wpstg/aws/aws-sdk-php/src/Api/Shape.php +49 -0
  126. vendor_wpstg/aws/aws-sdk-php/src/Api/ShapeMap.php +59 -0
  127. vendor_wpstg/aws/aws-sdk-php/src/Api/StructureShape.php +68 -0
  128. vendor_wpstg/aws/aws-sdk-php/src/Api/TimestampShape.php +45 -0
  129. vendor_wpstg/aws/aws-sdk-php/src/Api/Validator.php +245 -0
  130. vendor_wpstg/aws/aws-sdk-php/src/Arn/AccessPointArn.php +55 -0
  131. vendor_wpstg/aws/aws-sdk-php/src/Arn/AccessPointArnInterface.php +11 -0
  132. vendor_wpstg/aws/aws-sdk-php/src/Arn/Arn.php +140 -0
  133. vendor_wpstg/aws/aws-sdk-php/src/Arn/ArnInterface.php +30 -0
  134. vendor_wpstg/aws/aws-sdk-php/src/Arn/ArnParser.php +66 -0
  135. vendor_wpstg/aws/aws-sdk-php/src/Arn/Exception/InvalidArnException.php +10 -0
  136. vendor_wpstg/aws/aws-sdk-php/src/Arn/ObjectLambdaAccessPointArn.php +35 -0
  137. vendor_wpstg/aws/aws-sdk-php/src/Arn/ResourceTypeAndIdTrait.php +25 -0
  138. vendor_wpstg/aws/aws-sdk-php/src/Arn/S3/AccessPointArn.php +26 -0
  139. vendor_wpstg/aws/aws-sdk-php/src/Arn/S3/BucketArnInterface.php +12 -0
  140. vendor_wpstg/aws/aws-sdk-php/src/Arn/S3/MultiRegionAccessPointArn.php +35 -0
  141. vendor_wpstg/aws/aws-sdk-php/src/Arn/S3/OutpostsAccessPointArn.php +77 -0
  142. vendor_wpstg/aws/aws-sdk-php/src/Arn/S3/OutpostsArnInterface.php +12 -0
  143. vendor_wpstg/aws/aws-sdk-php/src/Arn/S3/OutpostsBucketArn.php +71 -0
  144. vendor_wpstg/aws/aws-sdk-php/src/AwsClient.php +120 -0
Backend/Administrator.php CHANGED
@@ -349,7 +349,7 @@ class Administrator
349
  add_submenu_page(
350
  "wpstg_clone",
351
  __("WP Staging Tools", "wp-staging"),
352
- __("Tools", "wp-staging"),
353
  "manage_options",
354
  "wpstg-tools",
355
  [$this, "getToolsPage"]
349
  add_submenu_page(
350
  "wpstg_clone",
351
  __("WP Staging Tools", "wp-staging"),
352
+ __("System Info", "wp-staging"),
353
  "manage_options",
354
  "wpstg-tools",
355
  [$this, "getToolsPage"]
Backend/Modules/Jobs/Files.php CHANGED
@@ -11,7 +11,6 @@ use WPStaging\Framework\Filesystem\FileObject;
11
  use WPStaging\Framework\Filesystem\Filesystem;
12
  use WPStaging\Framework\Filesystem\Permissions;
13
  use WPStaging\Framework\Filesystem\WpUploadsFolderSymlinker;
14
- use WPStaging\Framework\Utils\WpDefaultDirectories;
15
 
16
  /**
17
  * Class Files
@@ -408,39 +407,6 @@ class Files extends JobExecutable
408
  return true;
409
  }
410
 
411
- /**
412
- * Get wp-content and wp-content/uploads destination dir
413
- * Necessary if these folders were customized and changed from the default ones.
414
- *
415
- * @return string
416
- */
417
- protected function getWpContentPath($file)
418
- {
419
- // Get upload directory information
420
- $uploads = wp_upload_dir();
421
-
422
- // Get absolute path to wordpress uploads directory e.g srv/www/htdocs/sitename/wp-content/uploads
423
- $uploadsAbsPath = trailingslashit($uploads['basedir']);
424
-
425
- // Get relative path to the uploads folder, e.g assets or wp-content/uploads
426
- $uploadsRelPath = (new WpDefaultDirectories())->getRelativeUploadPath();
427
-
428
- // Get absolute path to wp-content directory e.g srv/www/htdocs/sitename/wp-content
429
- $wpContentDir = trailingslashit(WP_CONTENT_DIR);
430
-
431
- // Check if there is a custom uploads directory, then do a search $ replace. Do this only if custom upload path is not identical to WP_CONTENT_DIR
432
- if ($uploadsAbsPath != $wpContentDir) {
433
- $file = str_replace($uploadsAbsPath, ABSPATH . $uploadsRelPath, $file, $count);
434
- }
435
- // If there is no custom upload directory do a search & replace of the custom wp-content directory
436
- if (empty($count) || $count === 0) {
437
- $file = str_replace($wpContentDir, ABSPATH . 'wp-content/', $file);
438
- }
439
-
440
-
441
- return $file;
442
- }
443
-
444
  /**
445
  * Set directory permissions
446
  * @param string $file
11
  use WPStaging\Framework\Filesystem\Filesystem;
12
  use WPStaging\Framework\Filesystem\Permissions;
13
  use WPStaging\Framework\Filesystem\WpUploadsFolderSymlinker;
 
14
 
15
  /**
16
  * Class Files
407
  return true;
408
  }
409
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
410
  /**
411
  * Set directory permissions
412
  * @param string $file
Backend/views/_main/footer.php CHANGED
@@ -4,6 +4,7 @@
4
  <div id='wpstg-footer'>
5
  <strong class="wpstg-footer--title"><?php _e("Knowledgebase", "wp-staging") ?></strong>
6
  <ul>
 
7
  <li><a href="https://wp-staging.com/docs/staging-site-redirects-live-site/" target="_blank" rel="external"><?php _e("Can not login to staging site", "wp-staging") ?></a></li>
8
  <li><a href="https://wp-staging.com/docs/staging-site-redirects-live-site/" target="_blank" rel="external"><?php _e("Staging site redirects to production site", "wp-staging") ?></a></li>
9
  <li><a href="https://wp-staging.com/docs/fix-white-or-blank-page-after-pushing-fatal-error-500/" target="_blank" rel="external"><?php _e("Staging site returns blank white page", "wp-staging") ?></a></li>
4
  <div id='wpstg-footer'>
5
  <strong class="wpstg-footer--title"><?php _e("Knowledgebase", "wp-staging") ?></strong>
6
  <ul>
7
+ <li><a href="https://wp-staging.com/docs/how-to-migrate-your-wordpress-site-to-a-new-host/" target="_blank" rel="external"><?php _e("Migrate Website to Another Server or Domain", "wp-staging") ?></a></li>
8
  <li><a href="https://wp-staging.com/docs/staging-site-redirects-live-site/" target="_blank" rel="external"><?php _e("Can not login to staging site", "wp-staging") ?></a></li>
9
  <li><a href="https://wp-staging.com/docs/staging-site-redirects-live-site/" target="_blank" rel="external"><?php _e("Staging site redirects to production site", "wp-staging") ?></a></li>
10
  <li><a href="https://wp-staging.com/docs/fix-white-or-blank-page-after-pushing-fatal-error-500/" target="_blank" rel="external"><?php _e("Staging site returns blank white page", "wp-staging") ?></a></li>
Backend/views/backup/listing-backups-no-results.php CHANGED
@@ -12,7 +12,7 @@
12
  <?php if ($isValidLicenseKey) : ?>
13
  <?php _e('No Backups found. Create your first Backup above!', 'wp-staging'); ?>
14
  <?php else :?>
15
- <strong id="wpstg-invalid-license-message" class="wpstg--red"><?php echo sprintf(__('Please<a href="%s">use a valid license key</a> to create and access your backups.', 'wp-staging'), admin_url() . 'admin.php?page=wpstg-license'); ?></strong>
16
  <?php endif; ?>
17
  </div>
18
  </li>
12
  <?php if ($isValidLicenseKey) : ?>
13
  <?php _e('No Backups found. Create your first Backup above!', 'wp-staging'); ?>
14
  <?php else :?>
15
+ <strong id="wpstg-invalid-license-message" class="wpstg--red"><?php echo sprintf(__('Please<a href="%s">enter your license key</a> to create and restore your backup files.', 'wp-staging'), admin_url() . 'admin.php?page=wpstg-license'); ?></strong>
16
  <?php endif; ?>
17
  </div>
18
  </li>
Backend/views/backup/listing.php CHANGED
@@ -50,6 +50,9 @@ if ($cronMessage !== '') { ?>
50
  <div class="text"><?php esc_html_e('There is a backup work in progress...', 'wp-staging'); ?></div>
51
  </div>
52
  <?php endif; ?>
 
 
 
53
 
54
  <div id="wpstg-step-1">
55
  <button id="wpstg-new-backup" class="wpstg-next-step-link wpstg-blue-primary wpstg-button" <?php echo $disabledProperty; ?> <?php echo $disabledPropertyCreateBackup ?>>
50
  <div class="text"><?php esc_html_e('There is a backup work in progress...', 'wp-staging'); ?></div>
51
  </div>
52
  <?php endif; ?>
53
+ <div id="wpstg-did-you-know" style="margin-bottom:12px">
54
+ <strong><?php echo sprintf(__('Did you know? You can upload backup files to another website to transfer it. <a href="%s" target="_blank">Read more</a>', 'wp-staging'), 'https://wp-staging.com/docs/how-to-migrate-your-wordpress-site-to-a-new-host/'); ?></strong>
55
+ </div>
56
 
57
  <div id="wpstg-step-1">
58
  <button id="wpstg-new-backup" class="wpstg-next-step-link wpstg-blue-primary wpstg-button" <?php echo $disabledProperty; ?> <?php echo $disabledPropertyCreateBackup ?>>
Backend/views/backup/modal/upload.php CHANGED
@@ -67,7 +67,8 @@ $uploadDirectory = str_replace(wp_normalize_path(ABSPATH), '', WPStaging::make(B
67
  </div>
68
  </div>
69
  <p class="wpstg-backup-direct-upload-notice">
70
- <?php esc_html_e('Did you know? You can also upload backups directly to this directory:', 'wp-staging') ?><br>
 
71
  <strong><?php echo esc_html($uploadDirectory) ?></strong>
72
  </p>
73
  </div>
67
  </div>
68
  </div>
69
  <p class="wpstg-backup-direct-upload-notice">
70
+ <?php _e('<strong>Did you know?</strong>', 'wp-staging') ?><br>
71
+ <?php esc_html_e('You can upload backups directly to the directory:', 'wp-staging') ?><br>
72
  <strong><?php echo esc_html($uploadDirectory) ?></strong>
73
  </p>
74
  </div>
Backend/views/notices/analytics-consent-failed.php CHANGED
@@ -6,7 +6,7 @@
6
  ?>
7
  <div class="notice notice-warning">
8
  <p><strong><?php echo esc_html__('WP STAGING - Communication with WP STAGING server failed', 'wp-staging') ?></strong></p>
9
- <p><?php echo esc_html__('We could not reach WP STAGING servers, so the usage information has been disabled automatically.', 'wp-staging') ?></p>
10
- <p><?php echo esc_html__('No action is necessary on your part. You can always re-enable WP STAGING usage information sending in the Settings.', 'wp-staging') ?></p>
11
  <p><?php echo esc_html__('This can be caused by a firewall, WordPress blocking external requests, a security plugin, or WP STAGING servers might be down.', 'wp-staging') ?></p>
 
12
  </div>
6
  ?>
7
  <div class="notice notice-warning">
8
  <p><strong><?php echo esc_html__('WP STAGING - Communication with WP STAGING server failed', 'wp-staging') ?></strong></p>
9
+ <p><?php echo esc_html__('We could not reach WP STAGING servers, so sending usage information has been disabled .', 'wp-staging') ?></p>
 
10
  <p><?php echo esc_html__('This can be caused by a firewall, WordPress blocking external requests, a security plugin, or WP STAGING servers might be down.', 'wp-staging') ?></p>
11
+ <p><?php echo esc_html__('No action is necessary on your part. You can always re-enable WP STAGING usage information sending on the page WP STAGING > Settings.', 'wp-staging') ?></p>
12
  </div>
Backend/views/settings/main-settings.php CHANGED
@@ -3,7 +3,7 @@
3
  <?php require_once(WPSTG_PLUGIN_DIR . 'Backend/views/_main/header.php'); ?>
4
 
5
  <div class="wpstg-tabs-container" id="wpstg-settings">
6
- <ul class="nav-tab-wrapper">
7
  <?php
8
  $tabs = \WPStaging\Core\WPStaging::getInstance()->get("tabs")->get();
9
  $activeTab = (isset($_GET["tab"]) && array_key_exists($_GET["tab"], $tabs)) ? $_GET["tab"] : "general";
@@ -19,12 +19,12 @@
19
  )
20
  );
21
 
22
- $activeClass = ($activeTab === $id) ? " nav-tab-active" : '';
23
  ?>
24
  <li>
25
  <a href="<?php
26
  echo $url ?>" title="<?php
27
- echo esc_attr($name) ?>" class="nav-tab<?php
28
  echo $activeClass ?>">
29
  <?php
30
  echo esc_html($name) ?>
3
  <?php require_once(WPSTG_PLUGIN_DIR . 'Backend/views/_main/header.php'); ?>
4
 
5
  <div class="wpstg-tabs-container" id="wpstg-settings">
6
+ <ul class="wpstg-nav-tab-wrapper">
7
  <?php
8
  $tabs = \WPStaging\Core\WPStaging::getInstance()->get("tabs")->get();
9
  $activeTab = (isset($_GET["tab"]) && array_key_exists($_GET["tab"], $tabs)) ? $_GET["tab"] : "general";
19
  )
20
  );
21
 
22
+ $activeClass = ($activeTab === $id) ? " wpstg-nav-tab-active" : '';
23
  ?>
24
  <li>
25
  <a href="<?php
26
  echo $url ?>" title="<?php
27
+ echo esc_attr($name) ?>" class="wpstg-nav-tab<?php
28
  echo $activeClass ?>">
29
  <?php
30
  echo esc_html($name) ?>
Backend/views/settings/tabs/general.php CHANGED
@@ -15,12 +15,11 @@
15
  continue;
16
  }
17
  ?>
18
- <div id="<?php
19
- echo $id ?>__wpstg_header">
20
  <table class="wpstg-form-table">
21
  <thead>
22
- <tr class="row">
23
- <th class="row th" colspan="2">
24
  <div class="col-title">
25
  <strong><?php
26
  echo $name ?></strong>
@@ -31,8 +30,8 @@
31
  </thead>
32
 
33
  <tbody>
34
- <tr class="row">
35
- <td class="row th">
36
  <div class="col-title">
37
  <?php
38
  echo $form->label("wpstg_settings[queryLimit]")
@@ -40,9 +39,9 @@
40
  <span class="description">
41
  <?php
42
  _e(
43
- "Number of DB rows, that are copied within one ajax query.
44
  The higher the value the faster the database copy process.
45
- To find out the highest possible values try a high value like 1.000 or more. If you get timeout issues, lower it
46
  until you get no more errors during copying process.",
47
  "wp-staging"
48
  ); ?>
@@ -56,8 +55,8 @@
56
  echo $form->render("wpstg_settings[queryLimit]") ?>
57
  </td>
58
  </tr>
59
- <tr class="row">
60
- <td class="row th">
61
  <div class="col-title">
62
  <?php
63
  echo $form->label("wpstg_settings[querySRLimit]")
@@ -65,7 +64,7 @@
65
  <span class="description">
66
  <?php
67
  _e(
68
- "Number of DB rows, that are processed within one ajax query.
69
  The higher the value the faster the database search & replace process.
70
  This is a high memory consumptive process. If you get timeouts lower this value!",
71
  "wp-staging"
@@ -81,8 +80,8 @@
81
  </td>
82
  </tr>
83
 
84
- <tr class="row">
85
- <td class="row th">
86
  <div class="col-title">
87
  <?php
88
  echo $form->label("wpstg_settings[fileLimit]")
@@ -90,7 +89,7 @@
90
  <span class="description">
91
  <?php
92
  _e(
93
- "Number of files to copy that will be copied within one ajax request.
94
  The higher the value the faster the file copy process.
95
  To find out the highest possible values try a high value like 500 or more. If you get timeout issues, lower it
96
  until you get no more errors during copying process.",
@@ -100,7 +99,7 @@
100
  <br>
101
  <?php
102
  _e(
103
- "<strong>Important:</strong> If CPU Load Priority is <strong>Low</strong> set a file copy limit value of 50 or higher! Otherwise file copying process takes a lot of time.",
104
  "wp-staging"
105
  ); ?>
106
  <br>
@@ -115,8 +114,8 @@
115
  </td>
116
  </tr>
117
 
118
- <tr class="row">
119
- <td class="row th">
120
  <div class="col-title">
121
  <?php
122
  echo $form->label("wpstg_settings[maxFileSize]") ?>
@@ -137,8 +136,8 @@
137
  echo $form->render("wpstg_settings[maxFileSize]") ?>
138
  </td>
139
  </tr>
140
- <tr class="row">
141
- <td class="row th">
142
  <div class="col-title">
143
  <?php
144
  echo $form->label("wpstg_settings[batchSize]") ?>
@@ -164,8 +163,8 @@
164
  </td>
165
  </tr>
166
 
167
- <tr class="row">
168
- <td class="row th">
169
  <div class="col-title">
170
  <?php
171
  echo $form->label("wpstg_settings[cpuLoad]") ?>
@@ -188,32 +187,11 @@
188
  echo $form->render("wpstg_settings[cpuLoad]") ?>
189
  </td>
190
  </tr>
191
- <tr class="row">
192
- <td class="row th">
193
- <div class="col-title">
194
- <?php
195
- echo $form->label("wpstg_settings[delayRequests]") ?>
196
- <span class="description">
197
- <?php
198
- _e(
199
- "If your server uses rate limits it blocks requests and WP Staging can be interrupted. You can resolve that by adding one or more seconds of delay between the processing requests. ",
200
- "wp-staging"
201
- ); ?>
202
- <br>
203
- <strong>Default: </strong> 0s
204
- </span>
205
- </div>
206
- </td>
207
- <td>
208
- <?php
209
- echo $form->render("wpstg_settings[delayRequests]") ?>
210
- </td>
211
- </tr>
212
  <?php
213
  if (!defined('WPSTGPRO_VERSION')) {
214
  ?>
215
- <tr class="row">
216
- <td class="row th">
217
  <div class="col-title">
218
  <?php
219
  echo $form->label("wpstg_settings[disableAdminLogin]") ?>
@@ -234,8 +212,8 @@
234
  <?php
235
  if (defined('WPSTGPRO_VERSION')) {
236
  ?>
237
- <tr class="row">
238
- <td class="row th">
239
  <div class="col-title">
240
  <?php
241
  echo $form->label("wpstg_settings[keepPermalinks]") ?>
@@ -243,7 +221,7 @@
243
  <?php
244
  echo sprintf(
245
  __(
246
- 'Keep permalinks original setting activated and do not disable permalinks on staging site. <br/>Read more: <a href="%1$s" target="_blank">Permalink Settings</a> ',
247
  'wp-staging'
248
  ),
249
  'https://wp-staging.com/docs/activate-permalinks-staging-site/'
@@ -259,16 +237,15 @@
259
  <?php
260
  }
261
  ?>
262
- <tr class="row">
263
- <td class="row th">
264
  <div class="col-title">
265
  <?php
266
  echo $form->label("wpstg_settings[debugMode]") ?>
267
  <span class="description">
268
  <?php
269
  _e(
270
- "This will enable an extended debug mode which creates additional entries
271
- in <strong>wp-content/uploads/wp-staging/logs/logfile.log</strong>.
272
  <strong>Do NOT activate this until we ask you to do so!</strong>",
273
  "wp-staging"
274
  ); ?>
@@ -280,15 +257,15 @@
280
  echo $form->render("wpstg_settings[debugMode]") ?>
281
  </td>
282
  </tr>
283
- <tr class="row">
284
- <td class="row th">
285
  <div class="col-title">
286
  <?php
287
  echo $form->label("wpstg_settings[optimizer]") ?>
288
  <span class="description">
289
  <?php
290
  _e(
291
- "The Optimizer is a mu plugin which disables all other plugins during WP Staging processing. Usually this makes the cloning process more reliable. If you experience issues, disable the Optimizer.",
292
  "wp-staging"
293
  ); ?>
294
  </span>
@@ -299,16 +276,15 @@
299
  echo $form->render("wpstg_settings[optimizer]") ?>
300
  </td>
301
  </tr>
302
-
303
- <tr class="row">
304
- <td class="row th">
305
  <div class="col-title">
306
  <?php
307
  echo $form->label("wpstg_settings[unInstallOnDelete]") ?>
308
  <span class="description">
309
  <?php
310
  _e(
311
- "Check this box if you like WP Staging to completely remove all of its data when the plugin is deleted.
312
  This will not remove staging sites files or database tables.",
313
  "wp-staging"
314
  ); ?>
@@ -321,8 +297,8 @@
321
  </td>
322
  </tr>
323
 
324
- <tr class="row">
325
- <td class="row th">
326
  <div class="col-title">
327
  <?php
328
  echo $form->label("wpstg_settings[checkDirectorySize]") ?>
@@ -345,8 +321,8 @@
345
  <?php
346
  if (defined('WPSTGPRO_VERSION')) {
347
  ?>
348
- <tr class="row">
349
- <td class="row th">
350
  <div class="col-title">
351
  <?php
352
  echo $form->label("wpstg_settings[userRoles][]") ?>
@@ -364,8 +340,8 @@
364
  echo $form->render("wpstg_settings[userRoles][]") ?>
365
  </td>
366
  </tr>
367
- <tr class="row">
368
- <td class="row th">
369
  <div class="col-title">
370
  <?php
371
  echo $form->label("wpstg_settings[usersWithStagingAccess]") ?>
@@ -383,17 +359,12 @@
383
  echo $form->render("wpstg_settings[usersWithStagingAccess]") ?>
384
  </td>
385
  </tr>
386
- <tr class="row">
387
- <td class="row th">
388
  <div class="col-title">
389
  <?php
390
  echo $form->label("wpstg_settings[adminBarColor]") ?>
391
  <span class="description">
392
- <?php
393
- _e(
394
- 'Specify the color of staging site admin bar.</strong>',
395
- 'wp-staging'
396
- ); ?>
397
  </span>
398
  </div>
399
  </td>
@@ -402,16 +373,17 @@
402
  echo $form->render("wpstg_settings[adminBarColor]") ?>
403
  </td>
404
  </tr>
405
- <tr class="row">
406
- <td class="row th">
407
  <div class="col-title">
408
  <strong><?php echo __('Send Usage Information', 'wp-staging') ?></strong>
409
  <span class="description">
410
  <?php
411
  _e(
412
- 'Allow WP STAGING to send usage information to wp-staging.com. </strong>',
413
  'wp-staging'
414
  );
 
415
  echo wp_kses_post(__(sprintf('<i>See the data we collect <a href="%s" target="_blank">here</a></i>', 'https://wp-staging.com/what-data-do-we-collect/')), 'wp-staging');
416
  ?>
417
  </span>
@@ -419,10 +391,10 @@
419
  </td>
420
  <td>
421
  <?php
422
- $analytics = WPStaging\Core\WPStaging::make(\WPStaging\Framework\Analytics\AnalyticsConsent::class);
423
- $analyticsAllowed = $analytics->hasUserConsent();
424
- $isAllowed = $analyticsAllowed;
425
- $isDisallowed = !$analyticsAllowed && !is_null($analyticsAllowed); // "null" means didn't answer, "false" means declined
426
  ?>
427
  <div style="font-weight:<?php echo $isAllowed ? 'bold' : ''; ?>"><a href="<?php echo esc_url($analytics->getConsentLink(true)) ?>"><?php echo esc_html__('Yes, send usage information. I\'d like to help improving this plugin.', 'wp-staging') ?></a></div>
428
  <div style="margin-top:10px;font-weight:<?php echo $isDisallowed ? 'bold' : ''; ?>"><a href="<?php echo esc_url($analytics->getConsentLink(false)) ?>"><?php echo esc_html__('No, Don\'t send any usage information.', 'wp-staging') ?></a></div>
@@ -431,6 +403,50 @@
431
  </td>
432
  </tr>
433
  <?php
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
434
  }
435
  ?>
436
  </tbody>
@@ -438,47 +454,8 @@
438
  </div>
439
  <?php
440
  endforeach;
441
- if (WPStaging\Core\WPStaging::isPro()) :
442
- ?>
443
- <div class="wpstg-settings-row">
444
- <b class="wpstg-settings-title"><?php _e('Send Email Error Report', 'wp-staging') ?></b>
445
- <div class="wpstg-settings-form-group">
446
- <p class="wpstg-settings-message">
447
- <?php _e('If a scheduled backup fails, send an email error report.', 'wp-staging') ?>
448
- </p>
449
- <input type="checkbox" id="wpstg-send-schedules-error-report" name="wpstg_settings[schedulesErrorReport]" class="wpstg-checkbox wpstg-settings-field" value="true" <?php echo get_option(WPStaging\Pro\Backup\BackupScheduler::BACKUP_SCHEDULE_ERROR_REPORT_OPTION) === 'true' ? 'checked' : '' ?> />
450
- </div>
451
- </div>
452
- <div class="wpstg-settings-row">
453
- <b class="wpstg-settings-title"><?php _e('Report Email Address', 'wp-staging') ?></b>
454
- <div class="wpstg-settings-form-group">
455
- <p class="wpstg-settings-message">
456
- <?php _e('The email address to which the backup error report will be sent.', 'wp-staging') ?>
457
- </p>
458
- <input type="text" id="wpstg-send-schedules-report-email" name="wpstg_settings[schedulesReportEmail]" class="wpstg-checkbox wpstg-settings-field" value="<?php echo get_option(WPStaging\Pro\Backup\BackupScheduler::BACKUP_SCHEDULE_REPORT_EMAIL_OPTION) ?>" />
459
- </div>
460
- </div>
461
- <?php
462
- endif;
463
- // show this option only on the staging site
464
- if ($this->siteInfo->isStagingSite()) :
465
- ?>
466
- <div class="wpstg-settings-row">
467
- <b class="wpstg-settings-title"><?php _e('Allow Cloning (Staging Site Only)', 'wp-staging') ?></b>
468
- <div class="wpstg-settings-form-group">
469
- <p class="wpstg-settings-message">
470
- <?php _e('Check this box to make this staging site cloneable.', 'wp-staging') ?>
471
- <?php echo sprintf(__("If you would like to know more about cloning staging sites check out <a href='%s' target='_new'>this article</a>.", 'wp-staging'), 'https://wp-staging.com/docs/cloning-a-staging-site-testing-push-method/'); ?>
472
- </p>
473
- <input type="checkbox" id="wpstg-is-staging-cloneable" name="wpstg_settings[isStagingSiteCloneable]" class="wpstg-checkbox wpstg-settings-field" value="true" <?php echo $this->siteInfo->isCloneable() ? 'checked' : '' ?> />
474
- </div>
475
- </div>
476
- <?php
477
- endif;
478
- // Show submit button any tab but add-ons
479
- if ($activeTab !== "add-ons") {
480
- submit_button();
481
- }
482
  unset($tabs);
483
  ?>
484
  </form>
15
  continue;
16
  }
17
  ?>
18
+ <div id="<?php echo $id ?>__wpstg_header">
 
19
  <table class="wpstg-form-table">
20
  <thead>
21
+ <tr class="wpstg-settings-row">
22
+ <th class="wpstg-settings-row th" colspan="2">
23
  <div class="col-title">
24
  <strong><?php
25
  echo $name ?></strong>
30
  </thead>
31
 
32
  <tbody>
33
+ <tr class="wpstg-settings-row">
34
+ <td class="wpstg-settings-row th">
35
  <div class="col-title">
36
  <?php
37
  echo $form->label("wpstg_settings[queryLimit]")
39
  <span class="description">
40
  <?php
41
  _e(
42
+ "Number of DB rows, that are queried within one request.
43
  The higher the value the faster the database copy process.
44
+ To find out the highest possible values try a high value like 10.000 or more. If you get timeout issues, lower it
45
  until you get no more errors during copying process.",
46
  "wp-staging"
47
  ); ?>
55
  echo $form->render("wpstg_settings[queryLimit]") ?>
56
  </td>
57
  </tr>
58
+ <tr class="wpstg-settings-row">
59
+ <td class="wpstg-settings-row th">
60
  <div class="col-title">
61
  <?php
62
  echo $form->label("wpstg_settings[querySRLimit]")
64
  <span class="description">
65
  <?php
66
  _e(
67
+ "Number of DB rows, that are processed within one request.
68
  The higher the value the faster the database search & replace process.
69
  This is a high memory consumptive process. If you get timeouts lower this value!",
70
  "wp-staging"
80
  </td>
81
  </tr>
82
 
83
+ <tr class="wpstg-settings-row">
84
+ <td class="wpstg-settings-row th">
85
  <div class="col-title">
86
  <?php
87
  echo $form->label("wpstg_settings[fileLimit]")
89
  <span class="description">
90
  <?php
91
  _e(
92
+ "Number of files to copy that will be copied within one request.
93
  The higher the value the faster the file copy process.
94
  To find out the highest possible values try a high value like 500 or more. If you get timeout issues, lower it
95
  until you get no more errors during copying process.",
99
  <br>
100
  <?php
101
  _e(
102
+ "<strong>Important:</strong> If CPU Load Priority is <strong>Low</strong>, set a file copy limit value of 50 or higher! Otherwise file copying process takes a lot of time.",
103
  "wp-staging"
104
  ); ?>
105
  <br>
114
  </td>
115
  </tr>
116
 
117
+ <tr class="wpstg-settings-row">
118
+ <td class="wpstg-settings-row th">
119
  <div class="col-title">
120
  <?php
121
  echo $form->label("wpstg_settings[maxFileSize]") ?>
136
  echo $form->render("wpstg_settings[maxFileSize]") ?>
137
  </td>
138
  </tr>
139
+ <tr class="wpstg-settings-row">
140
+ <td class="wpstg-settings-row th">
141
  <div class="col-title">
142
  <?php
143
  echo $form->label("wpstg_settings[batchSize]") ?>
163
  </td>
164
  </tr>
165
 
166
+ <tr class="wpstg-settings-row">
167
+ <td class="wpstg-settings-row th">
168
  <div class="col-title">
169
  <?php
170
  echo $form->label("wpstg_settings[cpuLoad]") ?>
187
  echo $form->render("wpstg_settings[cpuLoad]") ?>
188
  </td>
189
  </tr>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
190
  <?php
191
  if (!defined('WPSTGPRO_VERSION')) {
192
  ?>
193
+ <tr class="wpstg-settings-row">
194
+ <td class="wpstg-settings-row th">
195
  <div class="col-title">
196
  <?php
197
  echo $form->label("wpstg_settings[disableAdminLogin]") ?>
212
  <?php
213
  if (defined('WPSTGPRO_VERSION')) {
214
  ?>
215
+ <tr class="wpstg-settings-row">
216
+ <td class="wpstg-settings-row th">
217
  <div class="col-title">
218
  <?php
219
  echo $form->label("wpstg_settings[keepPermalinks]") ?>
221
  <?php
222
  echo sprintf(
223
  __(
224
+ 'Use on the staging site the same permalink structure and do not set permalinks to plain structure. <br/>Read more: <a href="%1$s" target="_blank">Permalink Settings</a> ',
225
  'wp-staging'
226
  ),
227
  'https://wp-staging.com/docs/activate-permalinks-staging-site/'
237
  <?php
238
  }
239
  ?>
240
+ <tr class="wpstg-settings-row">
241
+ <td class="wpstg-settings-row th">
242
  <div class="col-title">
243
  <?php
244
  echo $form->label("wpstg_settings[debugMode]") ?>
245
  <span class="description">
246
  <?php
247
  _e(
248
+ "Enable an extended debug mode that creates additional log entries in wp-content/uploads/wp-staging/logs/logfile.log.
 
249
  <strong>Do NOT activate this until we ask you to do so!</strong>",
250
  "wp-staging"
251
  ); ?>
257
  echo $form->render("wpstg_settings[debugMode]") ?>
258
  </td>
259
  </tr>
260
+ <tr class="wpstg-settings-row">
261
+ <td class="wpstg-settings-row th">
262
  <div class="col-title">
263
  <?php
264
  echo $form->label("wpstg_settings[optimizer]") ?>
265
  <span class="description">
266
  <?php
267
  _e(
268
+ "The Optimizer is a mu plugin that disables all other plugins during WP STAGING processing. This lowers memory consumption and speeds up processing. This should always be enabled!",
269
  "wp-staging"
270
  ); ?>
271
  </span>
276
  echo $form->render("wpstg_settings[optimizer]") ?>
277
  </td>
278
  </tr>
279
+ <tr class="wpstg-settings-row">
280
+ <td class="wpstg-settings-row th">
 
281
  <div class="col-title">
282
  <?php
283
  echo $form->label("wpstg_settings[unInstallOnDelete]") ?>
284
  <span class="description">
285
  <?php
286
  _e(
287
+ "Check this box if you like to remove all data when the plugin is deleted.
288
  This will not remove staging sites files or database tables.",
289
  "wp-staging"
290
  ); ?>
297
  </td>
298
  </tr>
299
 
300
+ <tr class="wpstg-settings-row">
301
+ <td class="wpstg-settings-row th">
302
  <div class="col-title">
303
  <?php
304
  echo $form->label("wpstg_settings[checkDirectorySize]") ?>
321
  <?php
322
  if (defined('WPSTGPRO_VERSION')) {
323
  ?>
324
+ <tr class="wpstg-settings-row">
325
+ <td class="wpstg-settings-row th">
326
  <div class="col-title">
327
  <?php
328
  echo $form->label("wpstg_settings[userRoles][]") ?>
340
  echo $form->render("wpstg_settings[userRoles][]") ?>
341
  </td>
342
  </tr>
343
+ <tr class="wpstg-settings-row">
344
+ <td class="wpstg-settings-row th">
345
  <div class="col-title">
346
  <?php
347
  echo $form->label("wpstg_settings[usersWithStagingAccess]") ?>
359
  echo $form->render("wpstg_settings[usersWithStagingAccess]") ?>
360
  </td>
361
  </tr>
362
+ <tr class="wpstg-settings-row">
363
+ <td class="wpstg-settings-row th">
364
  <div class="col-title">
365
  <?php
366
  echo $form->label("wpstg_settings[adminBarColor]") ?>
367
  <span class="description">
 
 
 
 
 
368
  </span>
369
  </div>
370
  </td>
373
  echo $form->render("wpstg_settings[adminBarColor]") ?>
374
  </td>
375
  </tr>
376
+ <tr class="wpstg-settings-row">
377
+ <td class="wpstg-settings-row th">
378
  <div class="col-title">
379
  <strong><?php echo __('Send Usage Information', 'wp-staging') ?></strong>
380
  <span class="description">
381
  <?php
382
  _e(
383
+ 'Send usage information to wp-staging.com.',
384
  'wp-staging'
385
  );
386
+ echo '<br>';
387
  echo wp_kses_post(__(sprintf('<i>See the data we collect <a href="%s" target="_blank">here</a></i>', 'https://wp-staging.com/what-data-do-we-collect/')), 'wp-staging');
388
  ?>
389
  </span>
391
  </td>
392
  <td>
393
  <?php
394
+ $analytics = WPStaging\Core\WPStaging::make(\WPStaging\Framework\Analytics\AnalyticsConsent::class);
395
+ $analyticsAllowed = $analytics->hasUserConsent();
396
+ $isAllowed = $analyticsAllowed;
397
+ $isDisallowed = !$analyticsAllowed && !is_null($analyticsAllowed); // "null" means didn't answer, "false" means declined
398
  ?>
399
  <div style="font-weight:<?php echo $isAllowed ? 'bold' : ''; ?>"><a href="<?php echo esc_url($analytics->getConsentLink(true)) ?>"><?php echo esc_html__('Yes, send usage information. I\'d like to help improving this plugin.', 'wp-staging') ?></a></div>
400
  <div style="margin-top:10px;font-weight:<?php echo $isDisallowed ? 'bold' : ''; ?>"><a href="<?php echo esc_url($analytics->getConsentLink(false)) ?>"><?php echo esc_html__('No, Don\'t send any usage information.', 'wp-staging') ?></a></div>
403
  </td>
404
  </tr>
405
  <?php
406
+ if (WPStaging\Core\WPStaging::isPro()) :
407
+ ?>
408
+ <tr class="wpstg-settings-row">
409
+ <td class="wpstg-settings-row th">
410
+ <b class="wpstg-settings-title"><?php _e('Send Email Error Report', 'wp-staging') ?></b>
411
+ <p class="wpstg-settings-message">
412
+ <?php _e('If a scheduled backup fails, send an email.', 'wp-staging') ?>
413
+ </p>
414
+ </td>
415
+ <td>
416
+ <input type="checkbox" id="wpstg-send-schedules-error-report" name="wpstg_settings[schedulesErrorReport]" class="wpstg-checkbox wpstg-settings-field" value="true" <?php echo get_option(WPStaging\Pro\Backup\BackupScheduler::BACKUP_SCHEDULE_ERROR_REPORT_OPTION) === 'true' ? 'checked' : '' ?> />
417
+ </td>
418
+ </tr>
419
+ <tr class="wpstg-settings-row">
420
+ <td>
421
+ <b class="wpstg-settings-title"><?php _e('Email Address', 'wp-staging') ?></b>
422
+ <p class="wpstg-settings-message">
423
+ <?php _e('Send emails to this address', 'wp-staging') ?>
424
+ </p>
425
+ </td>
426
+ <td>
427
+ <input type="text" id="wpstg-send-schedules-report-email" name="wpstg_settings[schedulesReportEmail]" class="wpstg-checkbox wpstg-settings-field" value="<?php echo get_option(WPStaging\Pro\Backup\BackupScheduler::BACKUP_SCHEDULE_REPORT_EMAIL_OPTION) ?>"/>
428
+ </td>
429
+ </tr>
430
+ <?php
431
+ endif;
432
+ // show this option only on the staging site
433
+ if ($this->siteInfo->isStagingSite()) :
434
+ ?>
435
+ <tr>
436
+ <td>
437
+ <b class="wpstg-settings-title"><?php _e('Allow Cloning (Staging Site Only)', 'wp-staging') ?></b>
438
+ <p class="wpstg-settings-message">
439
+ <?php _e('Check this box to make this staging site cloneable.', 'wp-staging') ?>
440
+ <?php echo sprintf(__("If you would like to know more about cloning staging sites check out <a href='%s' target='_new'>this article</a>.", 'wp-staging'), 'https://wp-staging.com/docs/cloning-a-staging-site-testing-push-method/'); ?>
441
+ </p>
442
+ </td>
443
+ <td>
444
+ <input type="checkbox" id="wpstg-is-staging-cloneable" name="wpstg_settings[isStagingSiteCloneable]" class="wpstg-checkbox wpstg-settings-field" value="true" <?php echo $this->siteInfo->isCloneable() ? 'checked' : '' ?> />
445
+ </td>
446
+ </tr>
447
+
448
+ <?php
449
+ endif;
450
  }
451
  ?>
452
  </tbody>
454
  </div>
455
  <?php
456
  endforeach;
457
+
458
+ submit_button();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
459
  unset($tabs);
460
  ?>
461
  </form>
Backend/views/settings/tabs/remote-storages.php CHANGED
@@ -15,7 +15,7 @@ if (isset($_REQUEST['sub'])) {
15
  $providerId = $storage['id'];
16
  }
17
  ?>
18
- <a class="wpstg-storage-provider <?php echo $isActive ? 'wpstg-storage-provider-active' : '' ?> href="<?php echo $isActive ? 'javascript:void(0);' : $storage['settingsPath']; ?>">
19
  <?php echo $storage['name']; ?>
20
  </a>
21
  <?php endforeach; ?>
15
  $providerId = $storage['id'];
16
  }
17
  ?>
18
+ <a class="wpstg-storage-provider <?php echo $isActive ? 'wpstg-storage-provider-active' : '' ?>" href="<?php echo $isActive ? 'javascript:void(0);' : $storage['settingsPath']; ?>">
19
  <?php echo $storage['name']; ?>
20
  </a>
21
  <?php endforeach; ?>
Backend/views/settings/tabs/storages/amazons3-settings.php ADDED
@@ -0,0 +1,76 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * @var string $providerId
4
+ */
5
+ ?>
6
+ <fieldset>
7
+ <?php
8
+ /** @var \WPStaging\Pro\Backup\Storage\Storages\Amazon\S3 */
9
+ $amazonS3Storage = \WPStaging\Core\WPStaging::make(\WPStaging\Pro\Backup\Storage\Storages\Amazon\S3::class);
10
+ $isStorageAuthenticated = $amazonS3Storage->isAuthenticated();
11
+ $options = $amazonS3Storage->getOptions();
12
+ $accessKey = empty($options['accessKey']) ? '' : $options['accessKey'];
13
+ $secretKey = empty($options['secretKey']) ? '' : $options['secretKey'];
14
+ $region = empty($options['region']) ? '' : $options['region'];
15
+ $maxBackupsToKeep = empty($options['maxBackupsToKeep']) ? 2 : $options['maxBackupsToKeep'];
16
+ $location = empty($options['location']) ? '' : $options['location'];
17
+ ?>
18
+ <p>
19
+ <strong class="wpstg-fs-14"><?php _e('Amazon S3', 'wp-staging'); ?></strong>
20
+ <br/>
21
+ <br/>
22
+ <?php echo __('Upload backup files to your personal Amazon S3 account.', 'wp-staging'); ?>
23
+ <br>
24
+ <?php echo sprintf(__('None of your backup data is sent to any other party! <a href="%s" target="_blank">Our privacy policy</a>.', 'wp-staging'), 'https://wp-staging.com/privacy-policy/#'); ?>
25
+ <br/>
26
+ </p>
27
+ <div class="wpstg-form-group">
28
+ <form class="wpstg-provider-settings-form" id="wpstg-provider-settings-form" method="post">
29
+ <div id="wpstg-provider-test-connection-fields">
30
+ <strong><?php _e('API Keys', 'wp-staging') ?></strong>
31
+
32
+ <input type="hidden" name="provider" value="<?php echo $providerId; ?>" />
33
+
34
+ <p>
35
+ <?php echo sprintf(__('<a href="%s" target="_blank">How to create Amazon API keys and S3 bucket</a>.', 'wp-staging'), 'https://wp-staging.com/docs/how-to-backup-website-to-amazon-s3-bucket/'); ?>
36
+ </p>
37
+
38
+ <fieldset class="wpstg-fieldset">
39
+ <label><?php _e('Access Key', 'wp-staging') ?></label>
40
+ <input class="wpstg-form-control" type="text" name="access_key" value="<?php echo $accessKey; ?>" />
41
+ </fieldset>
42
+
43
+ <fieldset class="wpstg-fieldset">
44
+ <label><?php _e('Secret Key', 'wp-staging') ?></label>
45
+ <input class="wpstg-form-control" type="text" name="secret_key" value="<?php echo $secretKey; ?>" />
46
+ </fieldset>
47
+
48
+ <fieldset class="wpstg-fieldset">
49
+ <label><?php _e('Region', 'wp-staging') ?></label>
50
+ <input class="wpstg-form-control" type="text" name="region" value="<?php echo $region; ?>" />
51
+ </fieldset>
52
+ </div>
53
+ <button type="button" id="wpstg-btn-provider-test-connection" class="wpstg-link-btn wpstg-blue-primary"><?php _e("Test Connection", "wp-staging") ?></button>
54
+
55
+ <hr/>
56
+ <strong><?php _e('Upload Settings', 'wp-staging') ?></strong>
57
+ <fieldset class="wpstg-fieldset">
58
+ <label><?php _e('Max Backups to Keep', 'wp-staging') ?></label>
59
+ <input class="wpstg-form-control" type="number" name="max_backups_to_keep" value="<?php echo $maxBackupsToKeep; ?>" style="max-width: 60px" />
60
+ <p><?php _e("Leave empty or zero for no limit", 'wp-staging') ?></p>
61
+ </fieldset>
62
+
63
+ <fieldset class="wpstg-fieldset">
64
+ <label><?php _e('Amazon S3 Bucket Location', 'wp-staging') ?></label>
65
+ <span>s3:</span><input class="wpstg-form-control" type="text" name="location" value="<?php echo $location; ?>" />
66
+ <p>
67
+ <?php echo sprintf(__("Create the bucket beforhand in your Amazon S3 account and add it here! %s To add a subdirectory you can write <code>s3:[bucket-name]/[directory-name]</code>. <br>The directory will be created by WP STAGING automatically during backup upload. ", 'wp-staging'), '<br>'); ?>
68
+ </p>
69
+ </fieldset>
70
+
71
+ <hr/>
72
+
73
+ <button type="button" id="wpstg-btn-save-provider-settings" class="wpstg-link-btn wpstg-blue-primary"><?php _e("Save Settings", "wp-staging") ?></button>
74
+ </form>
75
+ </div>
76
+ </fieldset>
Backend/views/settings/tabs/storages/googledrive-settings.php CHANGED
@@ -27,7 +27,9 @@
27
  <p>
28
  <strong class="wpstg-fs-14"> <?php _e('Google Drive', 'wp-staging'); ?></strong>
29
  <br/>
30
- <p><?php echo sprintf(__('Upload backup files to your personal Google Drive account. None of your backup data is sent to us! <a href="%s" target="_blank">Our privacy policy</a>.', 'wp-staging'), 'https://wp-staging.com/privacy-policy/#Google_Drive'); ?></p>
 
 
31
  </p>
32
  <div class="wpstg-form-group">
33
  <?php
@@ -35,12 +37,13 @@
35
  ?>
36
  <strong class="wpstg-mr-10px">
37
  <?php
38
- _e('You are authenticated to Google.', 'wp-staging');
39
  ?>
40
  </strong>
 
41
  <form class="wpstg-provider-revoke-form" id="wpstg-provider-revoke-form" method="post">
42
  <input type="hidden" name="provider" value="<?php echo $providerId; ?>" />
43
- <button type="button" id="wpstg-btn-provider-revoke" class="wpstg-link-btn wpstg-btn-danger"><?php _e("Logout", "wp-staging") ?></button>
44
  </form>
45
  <br/>
46
  <?php
@@ -93,7 +96,7 @@
93
  <fieldset class="wpstg-fieldset">
94
  <label><?php _e('Max Backups to Keep', 'wp-staging') ?></label>
95
  <input class="wpstg-form-control" type="number" name="max_backups_to_keep" value="<?php echo $maxBackupsToKeep; ?>" style="max-width: 60px" />
96
- <p><?php _e("Add \"0\" or leave empty for no limit", 'wp-staging') ?></p>
97
  </fieldset>
98
 
99
  <fieldset class="wpstg-fieldset">
27
  <p>
28
  <strong class="wpstg-fs-14"> <?php _e('Google Drive', 'wp-staging'); ?></strong>
29
  <br/>
30
+ <?php echo __('Upload backup files to your personal Google Drive account.', 'wp-staging'); ?>
31
+ <br>
32
+ <?php echo sprintf(__('None of your backup data is sent to any other party! <a href="%s" target="_blank">Our privacy policy</a>.', 'wp-staging'), 'https://wp-staging.com/privacy-policy/#Google_Drive'); ?>
33
  </p>
34
  <div class="wpstg-form-group">
35
  <?php
37
  ?>
38
  <strong class="wpstg-mr-10px">
39
  <?php
40
+ _e('You are authenticated to Google Drive.', 'wp-staging');
41
  ?>
42
  </strong>
43
+ <br>
44
  <form class="wpstg-provider-revoke-form" id="wpstg-provider-revoke-form" method="post">
45
  <input type="hidden" name="provider" value="<?php echo $providerId; ?>" />
46
+ <button type="button" id="wpstg-btn-provider-revoke" class="wpstg-link-btn wpstg-btn-danger"><?php _e("Logout from Google", "wp-staging") ?></button>
47
  </form>
48
  <br/>
49
  <?php
96
  <fieldset class="wpstg-fieldset">
97
  <label><?php _e('Max Backups to Keep', 'wp-staging') ?></label>
98
  <input class="wpstg-form-control" type="number" name="max_backups_to_keep" value="<?php echo $maxBackupsToKeep; ?>" style="max-width: 60px" />
99
+ <p><?php _e("Leave empty or zero for no limit", 'wp-staging') ?></p>
100
  </fieldset>
101
 
102
  <fieldset class="wpstg-fieldset">
Backend/views/tools/index.php CHANGED
@@ -2,7 +2,7 @@
2
  <?php require_once(WPSTG_PLUGIN_DIR . 'Backend/views/_main/header.php'); ?>
3
 
4
  <div class="wpstg-tabs-container" id="wpstg-tools">
5
- <ul class="nav-tab-wrapper">
6
  <?php
7
  $tabs = \WPStaging\Core\WPStaging::getInstance()->get("tabs")->get();
8
  $activeTab = (isset($_GET["tab"]) && array_key_exists($_GET["tab"], $tabs)) ? $_GET["tab"] : "system_info";
@@ -14,7 +14,7 @@
14
  "tab" => $id
15
  ]));
16
 
17
- $activeClass = ($activeTab === $id) ? " nav-tab-active" : '';
18
  ?>
19
  <li>
20
  <a href="<?php echo $url?>" title="<?php echo esc_attr($name)?>" class="nav-tab<?php echo $activeClass?>">
2
  <?php require_once(WPSTG_PLUGIN_DIR . 'Backend/views/_main/header.php'); ?>
3
 
4
  <div class="wpstg-tabs-container" id="wpstg-tools">
5
+ <ul class="wpstg-nav-tab-wrapper">
6
  <?php
7
  $tabs = \WPStaging\Core\WPStaging::getInstance()->get("tabs")->get();
8
  $activeTab = (isset($_GET["tab"]) && array_key_exists($_GET["tab"], $tabs)) ? $_GET["tab"] : "system_info";
14
  "tab" => $id
15
  ]));
16
 
17
+ $activeClass = ($activeTab === $id) ? " wpstg-nav-tab-active" : '';
18
  ?>
19
  <li>
20
  <a href="<?php echo $url?>" title="<?php echo esc_attr($name)?>" class="nav-tab<?php echo $activeClass?>">
Backend/views/tools/tabs/import_export.php CHANGED
@@ -1,10 +1,10 @@
1
  <!-- Export -->
2
- <div class="postbox">
3
- <h3>
4
- <span>
5
  <?php _e("Export Settings", "wp-staging")?>
6
- </span>
7
- </h3>
8
 
9
  <div class="inside">
10
  <p>
@@ -27,11 +27,11 @@
27
  <!-- /Export -->
28
 
29
  <!-- Import -->
30
- <div class="postbox">
31
  <h3>
32
- <span>
33
  <?php _e("Import Settings", "wp-staging")?>
34
- </span>
35
  </h3>
36
 
37
  <div class="inside">
1
  <!-- Export -->
2
+ <div>
3
+ <p>
4
+ <strong class="wpstg-fs-14">
5
  <?php _e("Export Settings", "wp-staging")?>
6
+ </strong>
7
+ </p>
8
 
9
  <div class="inside">
10
  <p>
27
  <!-- /Export -->
28
 
29
  <!-- Import -->
30
+ <div class="">
31
  <h3>
32
+ <strong class="wpstg-fs-14">
33
  <?php _e("Import Settings", "wp-staging")?>
34
+ </strong>
35
  </h3>
36
 
37
  <div class="inside">
Core/DTO/Settings.php CHANGED
@@ -216,10 +216,10 @@ class Settings
216
  /**
217
  * @return int
218
  */
219
- public function getDelayRequests()
220
  {
221
  return $this->delayRequests;
222
- }
223
 
224
  /**
225
  * @param string $cpuLoad
216
  /**
217
  * @return int
218
  */
219
+ /* public function getDelayRequests()
220
  {
221
  return $this->delayRequests;
222
+ }*/
223
 
224
  /**
225
  * @param string $cpuLoad
Core/Utils/IISWebConfig.php CHANGED
@@ -40,11 +40,13 @@ class IISWebConfig
40
  '<configuration>',
41
  '<system.webServer>',
42
  '<staticContent>',
 
43
  '<mimeMap fileExtension=".log" mimeType="application/octet-stream" />',
44
  '<mimeMap fileExtension=".wpstg" mimeType="application/octet-stream" />',
45
  '</staticContent>',
46
  '<defaultDocument>',
47
  '<files>',
 
48
  '<add value="index.php" />',
49
  '</files>',
50
  '</defaultDocument>',
40
  '<configuration>',
41
  '<system.webServer>',
42
  '<staticContent>',
43
+ '<clear/>',
44
  '<mimeMap fileExtension=".log" mimeType="application/octet-stream" />',
45
  '<mimeMap fileExtension=".wpstg" mimeType="application/octet-stream" />',
46
  '</staticContent>',
47
  '<defaultDocument>',
48
  '<files>',
49
+ '<clear/>',
50
  '<add value="index.php" />',
51
  '</files>',
52
  '</defaultDocument>',
Framework/Adapter/Directory.php CHANGED
@@ -3,24 +3,28 @@
3
  namespace WPStaging\Framework\Adapter;
4
 
5
  use WPStaging\Framework\Filesystem\Filesystem;
6
- use WPStaging\Pro\Backup\Job\Jobs\JobImport;
7
  use WPStaging\Framework\Utils\Strings;
 
 
8
 
9
  class Directory
10
  {
11
  /** @var string The directory that holds the uploads, usually wp-content/uploads */
12
  protected $uploadDir;
13
 
14
- /** @var string The directory that holds the WPSTAGING cache directory, usually wp-content/uploads/wp-staging/cache */
15
  protected $cacheDirectory;
16
 
17
- /** @var string The directory that holds the WPSTAGING tmp directory, usually wp-content/uploads/wp-staging/tmp */
18
  protected $tmpDirectory;
19
 
20
- /** @var string The directory that holds the WPSTAGING logs directory, usually wp-content/uploads/wp-staging/logs */
21
  protected $logDirectory;
22
 
23
- /** @var string The directory that holds the WPSTAGING data directory, usually wp-content/uploads/wp-staging */
 
 
 
24
  protected $pluginUploadsDirectory;
25
 
26
  /** @var string The directory that holds the plugins, usually wp-content/plugins */
@@ -106,6 +110,20 @@ class Directory
106
  return $this->logDirectory;
107
  }
108
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
109
  /**
110
  * @return string
111
  */
@@ -134,7 +152,7 @@ class Directory
134
 
135
  // Get absolute path to wordpress uploads directory e.g /var/www/wp-content/uploads/
136
  // Default is ABSPATH . 'wp-content/uploads', but it can be customized by the db option upload_path or the constant UPLOADS
137
- $uploadDir = wp_upload_dir(null, false, null)['basedir'];
138
 
139
  $this->uploadDir = trim(trailingslashit(wp_normalize_path($uploadDir)));
140
 
3
  namespace WPStaging\Framework\Adapter;
4
 
5
  use WPStaging\Framework\Filesystem\Filesystem;
 
6
  use WPStaging\Framework\Utils\Strings;
7
+ use WPStaging\Pro\Backup\Job\Jobs\JobImport;
8
+ use WPStaging\Pro\Backup\Service\Compressor;
9
 
10
  class Directory
11
  {
12
  /** @var string The directory that holds the uploads, usually wp-content/uploads */
13
  protected $uploadDir;
14
 
15
+ /** @var string The directory that holds the WP STAGING cache directory, usually wp-content/uploads/wp-staging/cache */
16
  protected $cacheDirectory;
17
 
18
+ /** @var string The directory that holds the WP STAGING tmp directory, usually wp-content/uploads/wp-staging/tmp */
19
  protected $tmpDirectory;
20
 
21
+ /** @var string The directory that holds the WP STAGING logs directory, usually wp-content/uploads/wp-staging/logs */
22
  protected $logDirectory;
23
 
24
+ /** @var string The directory that holds the WP STAGING backup directory, usually wp-content/uploads/wp-staging/backups */
25
+ protected $backupDirectory;
26
+
27
+ /** @var string The directory that holds the WP STAGING data directory, usually wp-content/uploads/wp-staging */
28
  protected $pluginUploadsDirectory;
29
 
30
  /** @var string The directory that holds the plugins, usually wp-content/plugins */
110
  return $this->logDirectory;
111
  }
112
 
113
+ /**
114
+ * @return string
115
+ */
116
+ public function getBackupDirectory()
117
+ {
118
+ if (isset($this->backupDirectory)) {
119
+ return $this->backupDirectory;
120
+ }
121
+
122
+ $this->backupDirectory = trailingslashit(wp_normalize_path($this->getPluginUploadsDirectory() . Compressor::BACKUP_DIR_NAME));
123
+
124
+ return $this->backupDirectory;
125
+ }
126
+
127
  /**
128
  * @return string
129
  */
152
 
153
  // Get absolute path to wordpress uploads directory e.g /var/www/wp-content/uploads/
154
  // Default is ABSPATH . 'wp-content/uploads', but it can be customized by the db option upload_path or the constant UPLOADS
155
+ $uploadDir = wp_upload_dir(null, false, false)['basedir'];
156
 
157
  $this->uploadDir = trim(trailingslashit(wp_normalize_path($uploadDir)));
158
 
Framework/Analytics/WithAnalyticsSiteInfo.php CHANGED
@@ -69,7 +69,8 @@ trait WithAnalyticsSiteInfo
69
  // WP STAGING Settings that are null by default, if they are not present, they are evaluated as FALSY/EMPTY:
70
  'keep_permalinks' => !empty($wpstgSettings['keepPermalinks']) ? $wpstgSettings['keepPermalinks'] : false,
71
  'disable_admin_login' => !empty($wpstgSettings['disableAdminLogin']) ? $wpstgSettings['disableAdminLogin'] : false,
72
- 'delay_between_requests' => !empty($wpstgSettings['delayRequests']) ? $wpstgSettings['delayRequests'] : 0,
 
73
  'debug_mode' => !empty($wpstgSettings['debugMode']) ? $wpstgSettings['debugMode'] : false,
74
  'remove_data_on_uninstall' => !empty($wpstgSettings['unInstallOnDelete']) ? $wpstgSettings['unInstallOnDelete'] : false,
75
  'check_directory_size' => !empty($wpstgSettings['checkDirectorySize']) ? $wpstgSettings['checkDirectorySize'] : false,
69
  // WP STAGING Settings that are null by default, if they are not present, they are evaluated as FALSY/EMPTY:
70
  'keep_permalinks' => !empty($wpstgSettings['keepPermalinks']) ? $wpstgSettings['keepPermalinks'] : false,
71
  'disable_admin_login' => !empty($wpstgSettings['disableAdminLogin']) ? $wpstgSettings['disableAdminLogin'] : false,
72
+ //'delay_between_requests' => !empty($wpstgSettings['delayRequests']) ? $wpstgSettings['delayRequests'] : 0,
73
+ 'delay_between_requests' => 0,
74
  'debug_mode' => !empty($wpstgSettings['debugMode']) ? $wpstgSettings['debugMode'] : false,
75
  'remove_data_on_uninstall' => !empty($wpstgSettings['unInstallOnDelete']) ? $wpstgSettings['unInstallOnDelete'] : false,
76
  'check_directory_size' => !empty($wpstgSettings['checkDirectorySize']) ? $wpstgSettings['checkDirectorySize'] : false,
Framework/Assets/Assets.php CHANGED
@@ -248,7 +248,8 @@ class Assets
248
  );
249
 
250
  wp_localize_script("wpstg-admin-script", "wpstg", [
251
- "delayReq" => $this->getDelay(),
 
252
  // TODO: move directorySeparator to consts?
253
  "settings" => (object)[
254
  "directorySeparator" => ScanConst::DIRECTORIES_SEPARATOR
@@ -372,7 +373,7 @@ class Assets
372
  /**
373
  * @return int
374
  */
375
- public function getDelay()
376
  {
377
  switch ($this->settings->getDelayRequests()) {
378
  case "0":
@@ -400,7 +401,7 @@ class Assets
400
  }
401
 
402
  return $delay;
403
- }
404
 
405
  /**
406
  * @return string
248
  );
249
 
250
  wp_localize_script("wpstg-admin-script", "wpstg", [
251
+ //"delayReq" => $this->getDelay(),
252
+ "delayReq" => 0,
253
  // TODO: move directorySeparator to consts?
254
  "settings" => (object)[
255
  "directorySeparator" => ScanConst::DIRECTORIES_SEPARATOR
373
  /**
374
  * @return int
375
  */
376
+ /* public function getDelay()
377
  {
378
  switch ($this->settings->getDelayRequests()) {
379
  case "0":
401
  }
402
 
403
  return $delay;
404
+ }*/
405
 
406
  /**
407
  * @return string
Framework/SiteInfo.php CHANGED
@@ -2,6 +2,7 @@
2
 
3
  namespace WPStaging\Framework;
4
 
 
5
  use WPStaging\Framework\Staging\CloneOptions;
6
  use WPStaging\Framework\Utils\ThirdParty\Punycode;
7
 
@@ -49,6 +50,11 @@ class SiteInfo
49
  */
50
  private $punycode;
51
 
 
 
 
 
 
52
  public function __construct()
53
  {
54
  // TODO: inject using DI
@@ -103,10 +109,21 @@ class SiteInfo
103
  $siteurl = preg_replace('#^https?://#', '', rtrim(get_option('siteurl'), '/'));
104
  $home = preg_replace('#^https?://#', '', rtrim(get_option('home'), '/'));
105
 
106
- // convert unicode(idn) to punycode(ascii) domain
107
  // turn exämple.com to xn--exmple-cua.com
108
- $home = $this->punycode->encode($home);
109
- $siteurl = $this->punycode->encode($siteurl);
 
 
 
 
 
 
 
 
 
 
 
110
 
111
  if ($home === $siteurl) {
112
  return false;
@@ -182,4 +199,45 @@ class SiteInfo
182
  {
183
  return defined('WPB_VC_VERSION');
184
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
185
  }
2
 
3
  namespace WPStaging\Framework;
4
 
5
+ use Exception;
6
  use WPStaging\Framework\Staging\CloneOptions;
7
  use WPStaging\Framework\Utils\ThirdParty\Punycode;
8
 
50
  */
51
  private $punycode;
52
 
53
+ /**
54
+ * @var array
55
+ */
56
+ private $errors = [];
57
+
58
  public function __construct()
59
  {
60
  // TODO: inject using DI
109
  $siteurl = preg_replace('#^https?://#', '', rtrim(get_option('siteurl'), '/'));
110
  $home = preg_replace('#^https?://#', '', rtrim(get_option('home'), '/'));
111
 
112
+ // convert unicode(idn) to punycode(ascii) domain if possible
113
  // turn exämple.com to xn--exmple-cua.com
114
+ $result = $this->punycodeEncode($home);
115
+ if ($result !== false) {
116
+ $home = $result;
117
+ } else {
118
+ $this->errors[] = __('Unable to detect punycode characters in home URL', 'wp-staging');
119
+ }
120
+
121
+ $result = $this->punycodeEncode($siteurl);
122
+ if ($result !== false) {
123
+ $siteurl = $result;
124
+ } else {
125
+ $this->errors[] = __('Unable to detect punycode characters in site URL', 'wp-staging');
126
+ }
127
 
128
  if ($home === $siteurl) {
129
  return false;
199
  {
200
  return defined('WPB_VC_VERSION');
201
  }
202
+
203
+ /**
204
+ * @param string $url
205
+ * @return string|false
206
+ */
207
+ public function punycodeEncode($url)
208
+ {
209
+ // Get punycode encode if idn extension loaded
210
+ if (extension_loaded('idn') && is_callable('idn_to_ascii')) {
211
+ return idn_to_ascii($url, 0, INTL_IDNA_VARIANT_UTS46);
212
+ }
213
+
214
+ // Get punycode with idn polyfill If mb_string extension and Normalizer class available
215
+ try {
216
+ if (extension_loaded('mbstring') && class_exists('Normalizer') && is_callable('mb_chr')) {
217
+ return idn_to_ascii($url, 0, INTL_IDNA_VARIANT_UTS46);
218
+ }
219
+ } catch (Exception $ex) {
220
+ }
221
+
222
+ // Get punycode with mbstring extension if mbstring extension loaded
223
+ // Otherwise get with mbstring polyfill if iconv extension loaded
224
+ if (extension_loaded('mbstring') || extension_loaded('iconv')) {
225
+ return $this->punycode->encode($url);
226
+ }
227
+
228
+ return false;
229
+ }
230
+
231
+ public function clearErrors()
232
+ {
233
+ $this->errors = [];
234
+ }
235
+
236
+ /**
237
+ * @return array
238
+ */
239
+ public function getErrors()
240
+ {
241
+ return $this->errors;
242
+ }
243
  }
Framework/Utils/ThirdParty/Punycode.php CHANGED
@@ -4,7 +4,6 @@ namespace WPStaging\Framework\Utils\ThirdParty;
4
 
5
  use WPStaging\Framework\Exceptions\DomainOutOfBoundsException;
6
  use WPStaging\Framework\Exceptions\LabelOutOfBoundsException;
7
- use WPStaging\Framework\Utils\Mbstring;
8
 
9
  /**
10
  * This is a port of TrueBV\Punycode.
@@ -66,10 +65,6 @@ class Punycode
66
  */
67
  protected $encoding;
68
 
69
- /** @var object */
70
- private $mbstring;
71
-
72
-
73
  /**
74
  * Constructor
75
  *
@@ -78,7 +73,6 @@ class Punycode
78
  public function __construct($encoding = 'UTF-8')
79
  {
80
  $this->encoding = $encoding;
81
- $this->mbstring = new Mbstring();
82
  }
83
 
84
  /**
@@ -89,7 +83,7 @@ class Punycode
89
  */
90
  public function encode($input)
91
  {
92
- $input = $this->mbstring->mb_strtolower($input, $this->encoding);
93
  $parts = explode('.', $input);
94
  foreach ($parts as &$part) {
95
  $length = strlen($part);
@@ -137,7 +131,7 @@ class Punycode
137
  sort($codePoints['nonBasic']);
138
 
139
  $i = 0;
140
- $length = $this->mbstring->mb_strlen($input, $this->encoding);
141
  while ($h < $length) {
142
  $m = $codePoints['nonBasic'][$i++];
143
  $delta = $delta + ($m - $n) * ($h + 1);
@@ -252,7 +246,7 @@ class Punycode
252
  $bias = $this->adapt($i - $oldi, ++$outputLength, ($oldi === 0));
253
  $n = $n + (int) ($i / $outputLength);
254
  $i = $i % ($outputLength);
255
- $output = $this->mbstring->mb_substr($output, 0, $i, $this->encoding) . $this->codePointToChar($n) . $this->mbstring->mb_substr($output, $i, $outputLength - 1, $this->encoding);
256
 
257
  $i++;
258
  }
@@ -318,9 +312,9 @@ class Punycode
318
  'nonBasic' => [],
319
  ];
320
 
321
- $length = $this->mbstring->mb_strlen($input, $this->encoding);
322
  for ($i = 0; $i < $length; $i++) {
323
- $char = $this->mbstring->mb_substr($input, $i, 1, $this->encoding);
324
  $code = $this->charToCodePoint($char);
325
  if ($code < 128) {
326
  $codePoints['all'][] = $codePoints['basic'][] = $code;
4
 
5
  use WPStaging\Framework\Exceptions\DomainOutOfBoundsException;
6
  use WPStaging\Framework\Exceptions\LabelOutOfBoundsException;
 
7
 
8
  /**
9
  * This is a port of TrueBV\Punycode.
65
  */
66
  protected $encoding;
67
 
 
 
 
 
68
  /**
69
  * Constructor
70
  *
73
  public function __construct($encoding = 'UTF-8')
74
  {
75
  $this->encoding = $encoding;
 
76
  }
77
 
78
  /**
83
  */
84
  public function encode($input)
85
  {
86
+ $input = mb_strtolower($input, $this->encoding);
87
  $parts = explode('.', $input);
88
  foreach ($parts as &$part) {
89
  $length = strlen($part);
131
  sort($codePoints['nonBasic']);
132
 
133
  $i = 0;
134
+ $length = mb_strlen($input, $this->encoding);
135
  while ($h < $length) {
136
  $m = $codePoints['nonBasic'][$i++];
137
  $delta = $delta + ($m - $n) * ($h + 1);
246
  $bias = $this->adapt($i - $oldi, ++$outputLength, ($oldi === 0));
247
  $n = $n + (int) ($i / $outputLength);
248
  $i = $i % ($outputLength);
249
+ $output = mb_substr($output, 0, $i, $this->encoding) . $this->codePointToChar($n) . mb_substr($output, $i, $outputLength - 1, $this->encoding);
250
 
251
  $i++;
252
  }
312
  'nonBasic' => [],
313
  ];
314
 
315
+ $length = mb_strlen($input, $this->encoding);
316
  for ($i = 0; $i < $length; $i++) {
317
+ $char = mb_substr($input, $i, 1, $this->encoding);
318
  $code = $this->charToCodePoint($char);
319
  if ($code < 128) {
320
  $codePoints['all'][] = $codePoints['basic'][] = $code;
Framework/Utils/Urls.php CHANGED
@@ -2,6 +2,8 @@
2
 
3
  namespace WPStaging\Framework\Utils;
4
 
 
 
5
  class Urls
6
  {
7
 
@@ -38,7 +40,6 @@ class Urls
38
 
39
  /**
40
  * Return WordPress home url without scheme e.h. host.com or www.host.com
41
- * @param string $str
42
  * @return string
43
  */
44
  public function getHomeUrlWithoutScheme()
@@ -72,9 +73,7 @@ class Urls
72
  }
73
  }
74
 
75
- $url = set_url_scheme($url, $scheme);
76
-
77
- return $url;
78
  }
79
 
80
  /**
@@ -89,7 +88,6 @@ class Urls
89
 
90
  /**
91
  * Return base URL (domain) without scheme e.g. blog.domain.com or domain.com
92
- * @param string $str
93
  * @return string
94
  */
95
  public function getBaseUrlWithoutScheme()
@@ -116,4 +114,23 @@ class Urls
116
  $result = parse_url($siteurl);
117
  return $result['scheme'] . "://" . $result['host'];
118
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
119
  }
2
 
3
  namespace WPStaging\Framework\Utils;
4
 
5
+ use WPStaging\Pro\Backup\Service\Compressor;
6
+
7
  class Urls
8
  {
9
 
40
 
41
  /**
42
  * Return WordPress home url without scheme e.h. host.com or www.host.com
 
43
  * @return string
44
  */
45
  public function getHomeUrlWithoutScheme()
73
  }
74
  }
75
 
76
+ return set_url_scheme($url, $scheme);
 
 
77
  }
78
 
79
  /**
88
 
89
  /**
90
  * Return base URL (domain) without scheme e.g. blog.domain.com or domain.com
 
91
  * @return string
92
  */
93
  public function getBaseUrlWithoutScheme()
114
  $result = parse_url($siteurl);
115
  return $result['scheme'] . "://" . $result['host'];
116
  }
117
+
118
+ /**
119
+ * Get url of the uploads directory, e.g. http://example.com/wp-content/uploads
120
+ * @return string
121
+ */
122
+ public function getUploadsUrl()
123
+ {
124
+ $upload_dir = wp_upload_dir(null, false, false);
125
+ return trailingslashit($upload_dir['baseurl']);
126
+ }
127
+
128
+ /**
129
+ * Get url of the wp staging backup directory, e.g. http://example.com/wp-content/uploads/backup
130
+ * @return string
131
+ */
132
+ public function getBackupUrl()
133
+ {
134
+ return $this->getUploadsUrl() . WPSTG_PLUGIN_DOMAIN . '/' . Compressor::BACKUP_DIR_NAME . '/';
135
+ }
136
  }
Framework/Utils/WpDefaultDirectories.php CHANGED
@@ -6,29 +6,15 @@ namespace WPStaging\Framework\Utils;
6
 
7
  use DirectoryIterator;
8
  use WPStaging\Framework\Filesystem\Scanning\ScanConst;
9
- use WPStaging\Framework\Utils\SlashMode;
10
 
11
  // TODO PHP7.1; constant visibility
12
  class WpDefaultDirectories
13
  {
14
- const WP_ADMIN = 'wp-admin';
15
- const WP_INCLUDES = 'wp-includes';
16
- const WP_CONTENT = 'wp-content';
17
- const SITES = 'sites';
18
- const MULTI_OLD_UPLOADS_DIR = 'blogs.dir';
19
- const MULTI_UPLOADS_DIR = 'sites';
20
-
21
  /**
22
  * @var Strings
23
  */
24
  private $strUtils;
25
 
26
- /**
27
- * WordPress core directories: wp-admin, wp-includes, wp-content
28
- * @var array
29
- */
30
- private $coreDirectories;
31
-
32
  /**
33
  * Sanitized ABSPATH for comparing against windows iterator
34
  * @var string
@@ -37,7 +23,7 @@ class WpDefaultDirectories
37
 
38
  /**
39
  * refresh cache of upload path
40
- * @var boolean default false
41
  */
42
  private $refreshUploadPathCache = false;
43
 
@@ -49,7 +35,7 @@ class WpDefaultDirectories
49
  }
50
 
51
  /**
52
- * @param boolean $shouldRefresh
53
  */
54
  public function shouldRefreshUploadPathCache($shouldRefresh = true)
55
  {
@@ -92,7 +78,7 @@ class WpDefaultDirectories
92
  // Could have been customized by populating the db option upload_path or the constant UPLOADS in wp-config
93
  // If both are defined WordPress will uses the value of the UPLOADS constant
94
  // First two parameters in wp_upload_dir are default parameter and last parameter is to refresh the cache
95
- // Setting the 3rd and last parameter to true will refresh the cache return the latest value. Set to true for tests
96
  $uploads = wp_upload_dir(null, true, $this->refreshUploadPathCache);
97
 
98
  // Adding slashes at before and end of absolute path to WordPress uploads directory
@@ -101,36 +87,6 @@ class WpDefaultDirectories
101
  return $this->strUtils->sanitizeDirectorySeparator($uploadsAbsPath);
102
  }
103
 
104
- /**
105
- * Get site specific absolute WP uploads path e.g.
106
- * Multisites: /var/www/htdocs/example.com/wp-content/uploads/sites/1 or /var/www/htdocs/example.com/wp-content/blogs.dir/1/files
107
- * Single sites: /var/www/htdocs/example.com/wp-content/uploads
108
- * This is compatible to old WordPress multisite version which contained blogs.dir
109
- * @return string
110
- */
111
- public function getSiteUploadsPath()
112
- {
113
- $uploads = wp_upload_dir(null, false);
114
- $baseDir = $this->strUtils->sanitizeDirectorySeparator($uploads['basedir']);
115
-
116
- // If multisite (and if not the main site in a post-MU network)
117
- if (is_multisite() && !( is_main_network() && is_main_site() && defined('MULTISITE') )) {
118
- // blogs.dir is used on WP 3.5 and lower
119
- if (strpos($baseDir, 'blogs.dir') !== false) {
120
- // remove this piece from the basedir: /blogs.dir/2/files
121
- $uploadDir = wpstg_replace_first_match('/blogs.dir/' . get_current_blog_id() . '/files', null, $baseDir);
122
- $dir = $this->strUtils->sanitizeDirectorySeparator($uploadDir . '/blogs.dir');
123
- } else {
124
- // remove this piece from the basedir: /sites/2
125
- $uploadDir = wpstg_replace_first_match('/sites/' . get_current_blog_id(), null, $baseDir);
126
- $dir = $this->strUtils->sanitizeDirectorySeparator($uploadDir . '/sites');
127
- }
128
-
129
- return $dir;
130
- }
131
- return $baseDir;
132
- }
133
-
134
  /**
135
  * Get the relative path of wp content directory
136
  * @param int $mode Optional. Slash Mode. Default SlashMode::NO_SLASH.
@@ -206,7 +162,7 @@ class WpDefaultDirectories
206
  */
207
  public function getWpCoreDirectories()
208
  {
209
- $this->coreDirectories = [];
210
 
211
  $directories = new DirectoryIterator(ABSPATH);
212
  foreach ($directories as $directory) {
@@ -231,10 +187,10 @@ class WpDefaultDirectories
231
  }
232
 
233
  $path = untrailingslashit($this->strUtils->sanitizeDirectorySeparator($path));
234
- $this->coreDirectories[] = $path;
235
  }
236
 
237
- return $this->coreDirectories;
238
  }
239
 
240
  /**
@@ -247,7 +203,7 @@ class WpDefaultDirectories
247
  */
248
  public function getExcludedDirectories($directoriesRequest)
249
  {
250
- if ((empty($directoriesRequest) || $directoriesRequest === '')) {
251
  return [];
252
  }
253
 
6
 
7
  use DirectoryIterator;
8
  use WPStaging\Framework\Filesystem\Scanning\ScanConst;
 
9
 
10
  // TODO PHP7.1; constant visibility
11
  class WpDefaultDirectories
12
  {
 
 
 
 
 
 
 
13
  /**
14
  * @var Strings
15
  */
16
  private $strUtils;
17
 
 
 
 
 
 
 
18
  /**
19
  * Sanitized ABSPATH for comparing against windows iterator
20
  * @var string
23
 
24
  /**
25
  * refresh cache of upload path
26
+ * @var bool default false
27
  */
28
  private $refreshUploadPathCache = false;
29
 
35
  }
36
 
37
  /**
38
+ * @param bool $shouldRefresh
39
  */
40
  public function shouldRefreshUploadPathCache($shouldRefresh = true)
41
  {
78
  // Could have been customized by populating the db option upload_path or the constant UPLOADS in wp-config
79
  // If both are defined WordPress will uses the value of the UPLOADS constant
80
  // First two parameters in wp_upload_dir are default parameter and last parameter is to refresh the cache
81
+ // Setting the 3rd parameter to true will refresh the cache and return the latest value. Set to true for tests
82
  $uploads = wp_upload_dir(null, true, $this->refreshUploadPathCache);
83
 
84
  // Adding slashes at before and end of absolute path to WordPress uploads directory
87
  return $this->strUtils->sanitizeDirectorySeparator($uploadsAbsPath);
88
  }
89
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
90
  /**
91
  * Get the relative path of wp content directory
92
  * @param int $mode Optional. Slash Mode. Default SlashMode::NO_SLASH.
162
  */
163
  public function getWpCoreDirectories()
164
  {
165
+ $coreDirectories = [];
166
 
167
  $directories = new DirectoryIterator(ABSPATH);
168
  foreach ($directories as $directory) {
187
  }
188
 
189
  $path = untrailingslashit($this->strUtils->sanitizeDirectorySeparator($path));
190
+ $coreDirectories[] = $path;
191
  }
192
 
193
+ return $coreDirectories;
194
  }
195
 
196
  /**
203
  */
204
  public function getExcludedDirectories($directoriesRequest)
205
  {
206
+ if ((empty($directoriesRequest))) {
207
  return [];
208
  }
209
 
assets/css/dist/wpstg-admin.css CHANGED
@@ -790,7 +790,9 @@ body.wp-staging-pro_page_wpstg-license {
790
  font-weight: 400;
791
  line-height: 1.6em;
792
  font-size: 19px;
 
793
  border-bottom: 1px solid #DFDFDF;
 
794
  clear: both;
795
  padding-top: 10px;
796
  }
@@ -848,6 +850,7 @@ body.wp-staging-pro_page_wpstg-license {
848
 
849
  .wpstg-form-table td:first-child {
850
  width: 30%;
 
851
  }
852
 
853
  .wpstg-share-button-container {
@@ -1042,7 +1045,9 @@ body.wp-staging-pro_page_wpstg-license {
1042
  font-size: 13px;
1043
  height: 28px;
1044
  margin: 0;
 
1045
  padding: 0 10px 1px;
 
1046
  cursor: pointer;
1047
  border-width: 1px;
1048
  border-style: solid;
@@ -1053,7 +1058,13 @@ body.wp-staging-pro_page_wpstg-license {
1053
  background: #25a1f0;
1054
  border-color: #2188c9;
1055
  color: #fff;
 
1056
  text-shadow: 0 -1px 1px #006799, 1px 0 1px #006799, 0 1px 1px #006799, -1px 0 1px #006799;
 
 
 
 
 
1057
  }
1058
 
1059
  a.wpstg-blue-primary {
@@ -2737,7 +2748,7 @@ body.toplevel_page_wpstg_clone .wpstg--swal2-container.wpstg--swal2-backdrop-sho
2737
  }
2738
 
2739
  .wpstg-swal-popup .wpstg--swal2-actions > button:hover {
2740
- box-shadow: 0 1px 3px 0 rgba(0 0 0 .1);
2741
  }
2742
 
2743
  .wpstg-swal-popup .wpstg--swal2-actions > button.wpstg--swal2-cancel:hover {
@@ -3390,33 +3401,39 @@ div#wpstg-backup-locked {
3390
  }
3391
 
3392
  .wpstg-storages-postbox {
3393
- display:none;
3394
- padding: 16px 8px;
3395
  margin-top: 8px;
3396
  margin-bottom: 8px;
3397
  background-color: white;
3398
- border:1px solid #cccccc;
3399
  }
3400
 
3401
  .wpstg-storages-postbox a {
3402
  padding: 8px;
3403
  margin-right: 8px;
3404
  text-decoration: none;
 
 
 
 
 
 
3405
  }
3406
 
3407
  .wpstg-storage-postbox {
3408
  padding: 4px 16px;
3409
  background-color: white;
3410
- border-bottom:1px solid #cccccc;
3411
- border-left:1px solid #cccccc;
3412
- border-right:1px solid #cccccc;
3413
  }
3414
 
3415
  .wpstg-storages-postbox a.wpstg-storage-provider-active {
3416
- background: #25a1f0;
3417
  color: white;
3418
  font-weight: 700;
3419
  cursor: default;
 
 
 
 
 
3420
  }
3421
 
3422
  .wpstg-storages-postbox a.wpstg-storage-provider-disabled {
@@ -3452,7 +3469,7 @@ div#wpstg-backup-locked {
3452
 
3453
  .wpstg-provider-settings-form fieldset p {
3454
  margin: 0;
3455
- padding: 0;
3456
  font-size: 12px;
3457
  }
3458
 
@@ -3475,7 +3492,7 @@ div#wpstg-backup-locked {
3475
  align-items: center;
3476
  border-width: 0;
3477
  outline: none;
3478
- border-radius: 2px;
3479
  box-shadow: 0 1px 3px rgba(0, 0, 0, .6);
3480
  color: #555;
3481
  transition: background-color .3s;
@@ -3519,6 +3536,77 @@ div#wpstg-backup-locked {
3519
  border-radius: 2px;
3520
  }
3521
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3522
  #wpstg--js--translations {
3523
  text-decoration: underline;
3524
  }
790
  font-weight: 400;
791
  line-height: 1.6em;
792
  font-size: 19px;
793
+ /*
794
  border-bottom: 1px solid #DFDFDF;
795
+ */
796
  clear: both;
797
  padding-top: 10px;
798
  }
850
 
851
  .wpstg-form-table td:first-child {
852
  width: 30%;
853
+ padding-right: 20px;
854
  }
855
 
856
  .wpstg-share-button-container {
1045
  font-size: 13px;
1046
  height: 28px;
1047
  margin: 0;
1048
+ /*
1049
  padding: 0 10px 1px;
1050
+ */
1051
  cursor: pointer;
1052
  border-width: 1px;
1053
  border-style: solid;
1058
  background: #25a1f0;
1059
  border-color: #2188c9;
1060
  color: #fff;
1061
+ /*
1062
  text-shadow: 0 -1px 1px #006799, 1px 0 1px #006799, 0 1px 1px #006799, -1px 0 1px #006799;
1063
+ */
1064
+ }
1065
+
1066
+ .wpstg-blue-primary:hover {
1067
+ background: #127fc6;
1068
  }
1069
 
1070
  a.wpstg-blue-primary {
2748
  }
2749
 
2750
  .wpstg-swal-popup .wpstg--swal2-actions > button:hover {
2751
+ box-shadow: 0 1px 3px 0 rgba(0, 0, 0, .1);
2752
  }
2753
 
2754
  .wpstg-swal-popup .wpstg--swal2-actions > button.wpstg--swal2-cancel:hover {
3401
  }
3402
 
3403
  .wpstg-storages-postbox {
3404
+ padding: 13px 16px;
 
3405
  margin-top: 8px;
3406
  margin-bottom: 8px;
3407
  background-color: white;
 
3408
  }
3409
 
3410
  .wpstg-storages-postbox a {
3411
  padding: 8px;
3412
  margin-right: 8px;
3413
  text-decoration: none;
3414
+ font-weight: bold;
3415
+ color: #3c434a;
3416
+ }
3417
+
3418
+ .wpstg-storages-postbox a:hover {
3419
+ color: #b70b72;
3420
  }
3421
 
3422
  .wpstg-storage-postbox {
3423
  padding: 4px 16px;
3424
  background-color: white;
 
 
 
3425
  }
3426
 
3427
  .wpstg-storages-postbox a.wpstg-storage-provider-active {
3428
+ background: #b70b72;
3429
  color: white;
3430
  font-weight: 700;
3431
  cursor: default;
3432
+ border-radius:3px;
3433
+ }
3434
+
3435
+ .wpstg-storages-postbox a.wpstg-storage-provider-active:hover {
3436
+ background: #a10a64;
3437
  }
3438
 
3439
  .wpstg-storages-postbox a.wpstg-storage-provider-disabled {
3469
 
3470
  .wpstg-provider-settings-form fieldset p {
3471
  margin: 0;
3472
+ padding: 5px;
3473
  font-size: 12px;
3474
  }
3475
 
3492
  align-items: center;
3493
  border-width: 0;
3494
  outline: none;
3495
+ border-radius: 3px;
3496
  box-shadow: 0 1px 3px rgba(0, 0, 0, .6);
3497
  color: #555;
3498
  transition: background-color .3s;
3536
  border-radius: 2px;
3537
  }
3538
 
3539
+ .wpstg-metabox-holder{
3540
+ border-radius: 8px;
3541
+ background: #fff;
3542
+ padding: 20px;
3543
+ margin-left: 16px;
3544
+ min-height: 600px;
3545
+ margin-right: 32px;
3546
+ margin-top: 60px;
3547
+ -webkit-box-shadow: 0 0 1px rgb(0 0 0 / 13%), 0 1px 3px rgb(0 0 0 / 10%);
3548
+ box-shadow: 0 0 1px rgb(0 0 0 / 13%), 0 1px 3px rgb(0 0 0 / 10%);
3549
+ }
3550
+
3551
+ @media only screen and (max-width: 680px) {
3552
+ .wpstg-metabox-holder {
3553
+ padding: 0px;
3554
+ padding-top: 5px;
3555
+ margin-left: 0;
3556
+ margin-right: 5px;
3557
+ }
3558
+
3559
+ #wpstg-tab-container .wpstg-settings-panel {
3560
+ padding: 0;
3561
+ overflow: auto;
3562
+ }
3563
+
3564
+ .wpstg-form-table td:first-child {
3565
+ width: 50%;
3566
+ }
3567
+ }
3568
+
3569
+ .wpstg-nav-tab {
3570
+ float: left;
3571
+ border: 1px solid #ffffff;
3572
+ border-bottom: none;
3573
+ margin-left: 0.5em;
3574
+ padding: 5px 10px;
3575
+ font-size: 14px;
3576
+ line-height: 1.71428571;
3577
+ font-weight: 600;
3578
+ background: #dcdcde;
3579
+ color: #3c434a;
3580
+ text-decoration: none;
3581
+ white-space: nowrap;
3582
+ }
3583
+
3584
+ .wpstg-nav-tab-active, .wpstg-nav-tab-active:focus, .wpstg-nav-tab-active:focus:active, .wpstg-nav-tab-active:hover {
3585
+ border-bottom: 1px solid #f0f0f1;
3586
+ background: #f3f5f7;
3587
+ color: #b70b72;
3588
+ -webkit-box-shadow: -4px -13px 14px -12px rgb(0 0 0 / 16%);
3589
+ box-shadow: -4px -13px 14px -12px rgb(0 0 0 / 16%);
3590
+ }
3591
+
3592
+ .wpstg-nav-tab-active {
3593
+ margin-bottom: -1px;
3594
+ }
3595
+
3596
+ .wpstg-nav-tab-wrapper {
3597
+ /*
3598
+ border-bottom: 1px solid #c3c4c7;
3599
+ */
3600
+ margin: 0;
3601
+ padding-top: 9px;
3602
+ padding-bottom: 0;
3603
+ line-height: inherit;
3604
+ }
3605
+
3606
+ .wpstg-nav-tab-wrapper li{
3607
+ margin-bottom: 0px;
3608
+ }
3609
+
3610
  #wpstg--js--translations {
3611
  text-decoration: underline;
3612
  }
assets/css/dist/wpstg-admin.css.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["wpstg-admin.css"],"names":[],"mappings":"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","file":"wpstg-admin.css","sourcesContent":["/**\n * WPSTG Admin CSS\n *\n * @package WPSTG\n * @subpackage Admin CSS\n * @copyright Copyright (c) 2021, René Hermenau\n * @license http://opensource.org/licenses/gpl-2.0.php GNU Public License\n*/\n\n/* Font Faces */\n\n/* roboto-regular - latin */\n@font-face {\nfont-family: 'Roboto';\nfont-style: normal;\nfont-weight: 400;\nsrc: url('../../fonts/roboto-v29-latin-regular.eot'); /* IE9 Compat Modes */\nsrc: local(''),\n url('../../fonts/roboto-v29-latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */\n url('../../fonts/roboto-v29-latin-regular.woff2') format('woff2'), /* Super Modern Browsers */\n url('../../fonts/roboto-v29-latin-regular.woff') format('woff'), /* Modern Browsers */\n url('../../fonts/roboto-v29-latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */\n url('../../fonts/roboto-v29-latin-regular.svg#Roboto') format('svg'); /* Legacy iOS */\n}\n\n/* Colors */\n\n.wpstg--violet {\n color: #9d37ae;\n}\n\n.wpstg-border--violet {\n border: 1px solid #9d37ae;\n}\n\n.wpstg--red {\n color: #E01E5A;\n}\n\n.wpstg-cta--red {\n color: #fe008f;\n}\n\n.wpstg--blue {\n color: #24a1f0;\n}\n\n.wpstg--darkblue {\n color: #0e86d9;\n}\n\n.wpstg--green {\n color: #83c11f;\n}\n\n.wpstg--grey {\n color: #3e3e3e;\n}\n\n.wpstg--darkgrey {\n color: #1b1b1b;\n}\n\n.wpstg--filter--svg {\n filter: invert(24%) sepia(11%) saturate(558%) hue-rotate(169deg) brightness(97%) contrast(91%);\n}\n\n/* CSS for Tabs */\n\nbody.wp-staging-pro_page_wpstg_backup,\nbody.toplevel_page_wpstg_clone,\nbody.wp-staging-pro_page_wpstg-settings,\nbody.wp-staging-pro_page_wpstg-tools,\nbody.wp-staging-pro_page_wpstg-license {\n background-color: #f3f5f7;\n}\n\n#wpstg-tab-container ul {\n list-style: none;\n margin: 0;\n padding: 0;\n background: #f1f1f1;\n float: left;\n}\n\n#wpstg-tab-container ul li:first-child.selected-tab {\n border-top: none;\n}\n\n#wpstg-tab-container ul li a.selected-tab {\n font-weight: bold;\n text-decoration: none;\n}\n\n#wpstg-tab-container .row {\n padding-top: 10px;\n padding-bottom: 12px;\n}\n\n.wpstg-tabs-container .nav-tab-wrapper {\n padding: 0;\n}\n\n#wpstg-tab-container .row label strong,\n#wpstg-tab-container .row strong {\n font-weight: bold;\n}\n\n.wpstg-tabs a {\n padding: 5px;\n}\n\n#wpstg-tab-container > ul > li.wpstg-tabs.active {\n background-color: white;\n}\n\n#wpstg_settingsgeneral_header .row:nth-child(3),\n#wpstg_settingsgeneral_header .row:nth-child(4) {\n display: none;\n}\n\n#wpstg-tab-container .wpstg-settings-panel {\n padding: 0 20px 20px 20px;\n overflow: auto;\n}\n\n#wpstg-tab-container .wpstg-form-table th {\n vertical-align: top;\n text-align: left;\n padding: 20px 10px 20px 0;\n line-height: 1.3;\n font-weight: bold;\n font-size: 14px;\n color: #484848;\n width: 30%;\n}\n\n#wpstg-tab-container .wpstg-form-table tr {\n border-bottom: 1px solid #E7E7E7;\n}\n\n#wpstg-tab-container span.description {\n display: block;\n font-weight: 400;\n font-style: normal;\n font-size: 13px;\n margin-top: 7px;\n color: #484848;\n}\n\n#wpstg-tab-container .col-title {\n color: #484848;\n}\n\n@media only screen and (max-width: 680px) {\n #wpstg-tab-container ul {\n float: none;\n }\n\n #wpstg-tab-container .wpstg-form-table tr > th {\n width: 100%;\n }\n\n #wpstg-tab-container span.description {\n font-size: 14px;\n }\n\n #wpstg-tab-container .wpstg-form-table tr > th,\n #wpstg-tab-container .wpstg-form-table tr > td {\n padding: 10px;\n }\n}\n\n#wpstg-tab-container ul li {\n margin-bottom: 0;\n}\n\n#wpstg-tab-container ul li a {\n display: block;\n padding: 10px 4px 10px 14px;\n border-width: 1px 0;\n border-style: solid;\n border-top-color: white;\n border-bottom-color: #e7e7e7;\n text-decoration: none;\n color: #0097DF;\n font-weight: bold;\n}\n\n#wpstg-tab-container ul li a:hover {\n background-color: #e5e5e5;\n color: #777777;\n}\n\n.wpstg-logo {\n display: block;\n font-size: 16px;\n padding-top: 20px;\n width: 220px;\n float: left;\n}\n\n.wpstg-logo img {\n max-width: 212px;\n}\n\n.wpstg-version {\n display: block;\n padding-top: 40px;\n color: #9b9b9b;\n}\n\n.wpstg_admin .nav-tab {\n color: #3C3C3C;\n}\n\n#wpstg-tab-container table tbody tr:nth-child(1) > th > div {\n font-size: 20px;\n}\n\n/* Cloning workflow */\n\n#wpstg-clonepage-wrapper {\n margin-bottom: 20px;\n width: 98%;\n}\n\n@media screen and (min-width: 1090px) {\n #wpstg-clonepage-wrapper {\n float: left;\n margin-bottom: 20px;\n }\n}\n\n#wpstg-steps {\n margin-top: 0px;\n margin-left: 20px;\n}\n\n#wpstg-steps li {\n color: #444;\n line-height: 20px;\n padding-right: 10px;\n float: left;\n}\n\n.wpstg-step-num {\n border: 1px solid #3e3e3e;\n border-radius: 3px;\n display: inline-block;\n width: 20px;\n height: 20px;\n text-align: center;\n margin-right: 5px;\n}\n\n.wpstg-current-step {\n font-weight: bold;\n}\n\n.wpstg-current-step .wpstg-step-num {\n background: #3e3e3e;\n color: #eee;\n}\n\n.wpstg-box {\n margin: 10px 0;\n padding: 10px;\n position: relative;\n overflow: hidden;\n transition: border-color .2s ease-in-out;\n}\n\n.wpstg-clone {\n margin-bottom: 10px;\n padding: 16px;\n position: relative;\n transition: border-color .2s ease-in-out;\n background-color: #ffffff;\n color: #3e3e3e;\n border-radius: 3px;\n box-shadow: 0 0 1px rgba(0, 0, 0, .125), 0 1px 3px rgba(0, 0, 0, .1);\n}\n\n.wpstg-clone.active {\n border-color: #1d94cf;\n}\n\n.wpstg-clone-header {\n display: flex;\n align-items: center;\n}\n\n.wpstg-clone-title {\n display: inline-block;\n margin-right: 8px;\n font-size: 15px;\n max-width: 300px;\n text-decoration: none;\n font-weight: bold;\n color: #3e3e3e;\n}\n\n.wpstg-clone-title:hover {\n color: #111111;\n}\n\n.wpstg-clone-labels {\n display: inline-block;\n}\n\n\n.wpstg-clone-labels .wpstg-clone-label {\n display: inline-block;\n padding: 1px 4px;\n margin-right: 4px;\n font-size: 11px;\n border-radius: 3px;\n background: #8bc34a;\n color: #fff;\n}\n\n.wpstg-clone-actions {\n margin-left: auto;\n display: flex;\n margin-top: 5px;\n}\n\n.wpstg-dropdown {\n position: relative;\n}\n\n.wpstg-clone-actions .wpstg-dropdown-toggler {\n text-decoration: none;\n background: #25a1f0;\n padding: 6px 10px;\n border-radius: 2px;\n font-size: 14px;\n box-shadow: 0 0 1px rgba(0, 0, 0, .125), 0 1px 3px rgba(0, 0, 0, .2);\n color: #ffffff;\n}\n\n.wpstg-clone-actions .wpstg-dropdown-toggler:hover {\n background: #002648;\n color: white;\n}\n\n.wpstg-dropdown {\n position: relative;\n}\n\n.wpstg-dropdown > .wpstg-dropdown-menu {\n background: #fff;\n display: none;\n flex-direction: column;\n position: absolute;\n right: 0;\n top: calc(100% + 4px);\n padding: 8px;\n border-radius: 2px;\n width: 100px;\n box-shadow: 0 0 1px rgba(0, 0, 0, .125), 0 1px 3px rgba(0, 0, 0, .2);\n z-index: 1000;\n}\n\n.wpstg-dropdown > .wpstg-dropdown-menu.wpstg-menu-dropup {\n top: auto;\n bottom: 100%;\n transform: translate3d(0px, -3px, 0px);\n}\n\n.wpstg-dropdown > .wpstg-dropdown-menu.shown {\n display: flex;\n}\n\n.wpstg-clone-action,\n.wpstg-dropdown-action {\n color: #3e3e3e;\n padding: 6px 8px;\n border-radius: 3px;\n text-decoration: none;\n position: relative;\n transition: color .2s ease-in-out;\n border-bottom: 1px solid #f3f3f3;\n}\n\n.wpstg-clone-action:hover,\n.wpstg-dropdown-action:hover {\n background: rgba(0, 0, 0, 0.05);\n}\n\n.wpstg-dropdown-action {\n color: #3e3e3e;\n background: transparent;\n border: 0 solid black;\n outline: none;\n box-shadow: none;\n}\n\n.wpstg-remove-clone:hover {\n color: #E01E5A;\n}\n\n.wpstg-clone-action:last-child {\n border: none;\n}\n\n.wpstg-clone:hover .wpstg-clone-action {\n display: inline-block;\n}\n\n#wpstg-show-error-details:focus,\n#wpstg-workflow .wpstg-clone-action {\n outline: none;\n box-shadow: none;\n}\n\n.wpstg-link-btn {\n background: #45a1c9;\n color: #fff;\n display: inline-block;\n padding: 5px 10px;\n text-decoration: none;\n vertical-align: baseline;\n transition: all .2s ease-in-out;\n}\n\n.wpstg-link-btn:hover,\n.wpstg-link-btn:focus {\n color: #fff;\n outline: none;\n box-shadow: none;\n}\n\n#wpstg-workflow .wpstg-link-btn:active {\n vertical-align: baseline;\n}\n\n.wpstg-link-btn[disabled] {\n background: #777 !important;\n border-color: #555 !important;\n pointer-events: none;\n}\n\n#wpstg-cancel-cloning,\n#wpstg-cancel-cloning-update {\n margin-top: 5px;\n}\n\n#wpstg-cancel-cloning.success,\n#wpstg-cancel-cloning.success {\n background: #64dd58;\n border-color: #54bd4a;\n}\n\n#wpstg-error-wrapper,\n#wpstg-error-details {\n display: none;\n padding-top: 10px;\n font-size: 13px;\n clear: both;\n}\n\n#wpstg-show-error-details {\n display: inline-block;\n margin-left: 5px;\n color: #555;\n text-decoration: none;\n transition: color .2s ease-in-out;\n}\n\n#wpstg-show-error-details:hover {\n color: #1d94cf;\n}\n\n#wpstg-error-details {\n border-left: 5px solid #E01E5A;\n padding: 10px;\n width: 500px;\n}\n\n#wpstg-try-again {\n display: none;\n}\n\n#wpstg-home-link {\n float: right;\n}\n\n.wpstg-loader {\n content: url('../../img/loading.gif');\n display: none;\n}\n\n.wpstg-loader.wpstg-finished {\n display: block;\n content: \"Finished\";\n background-color: #00c89a;\n color: white;\n padding: 2px 10px;\n margin-top: 0;\n border-radius: 3px;\n}\n\n#wpstg-workflow {\n max-width: 800px;\n position: relative;\n clear: both;\n padding-top: 20px;\n float: left;\n min-width: 500px;\n min-height: 380px;\n padding-right: 20px;\n padding-bottom: 20px;\n}\n\n#wpstg-sidebar {\n float: left;\n max-width: 400px;\n display: block;\n margin-left: 10px;\n}\n\n#wpstg-workflow.loading::after,\n#wpstg-removing-clone.loading::after {\n background: rgba(255, 255, 255, .7);\n content: 'Loading... may take a while for huge websites';\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n padding-top: 100px;\n text-align: center;\n position: absolute;\n top: 0;\n left: 0;\n z-index: 99;\n}\n\n#wpstg-removing-clone.loading::after {\n content: 'REMOVING' !important;\n}\n\n#wpstg-existing-clones,\n#wpstg-removing-clone {\n position: relative;\n}\n\n#wpstg-existing-clones h3 {\n color: #3e3e3e;\n}\n\n#wpstg-removing-clone .wpstg-tab-section {\n display: block;\n}\n\n.wpstg-progress-bar {\n max-width: 900px;\n height: 27px;\n padding: 0;\n background-color: #d6d8d7;\n}\n\n.wpstg-progress {\n float: left;\n background: #3fa5ee;\n width: 0;\n height: 100%;\n transition: width .6s ease;\n color: white;\n line-height: 25px;\n text-align: center;\n overflow: hidden;\n}\n\n.wpstg-progress-files {\n background: #16b4f0;\n width: 0;\n height: 100%;\n transition: width .6s ease;\n color: white;\n line-height: 25px;\n text-align: center;\n}\n\n#wpstg-new-clone-id.wpstg-error-input,\n#wpstg-clone-path.wpstg-error-input {\n border: 1px solid #E01E5A;\n box-shadow: 0 0 2px rgba(255, 66, 53, .8);\n}\n\n#wpstg-new-clone-id {\n width: 450px;\n max-width: 100%;\n margin-left: 15px;\n}\n\n#wpstg-new-clone {\n background: #25a1f0;\n border-color: #2188c9;\n}\n\n#wpstg-new-clone:hover {\n background: #259be6;\n border-color: #2188c9;\n}\n\n#wpstg-clone-path {\n margin-left: 10px;\n width: 350px;\n}\n\n.wpstg-error-msg {\n color: #E01E5A;\n}\n\n#wpstg-clone-id-error {\n display: block;\n background-color: #f0f8ff;\n padding: 10px;\n margin: 20px;\n}\n\n#wpstg-start-cloning + .wpstg-error-msg {\n display: block;\n margin-top: 5px;\n}\n\n.wpstg-size-info {\n color: #999;\n font-weight: normal;\n position: relative;\n left: 2px;\n}\n\n.wpstg-db-table .wpstg-size-info {\n top: 2px;\n}\n\n.wpstg-db-table:hover {\n background-color: #f0f8ff;\n}\n\n#wpstg-workflow #wpstg-start-cloning {\n margin-left: 5px;\n vertical-align: baseline;\n}\n\n\n/* Tabs */\n\n.wpstg-tabs-wrapper {\n max-width: 640px;\n margin: 10px 0;\n}\n\n#wpstg-path-wrapper {\n border-bottom: 2px dashed #ccc;\n padding-bottom: 10px;\n margin-bottom: 10px;\n}\n\n.wpstg-tab-section {\n border-bottom: 1px solid #ddd;\n border-right: none;\n border-left: none;\n display: none;\n width: calc(100% - 72px);\n padding: 0px 36px;\n}\n\n.wpstg-tab-section::after {\n display: block;\n content: '';\n clear: both;\n}\n\n.wpstg-tab-header {\n border-bottom: 1px solid #ddd;\n border-right: none;\n border-left: none;\n color: #444;\n font-size: 16px;\n font-weight: bold;\n display: block;\n padding: 10px;;\n text-decoration: none;\n}\n\n.wpstg-tab-triangle {\n display: inline-block;\n margin-right: 12px;\n animation: transform 0.5s;\n width: 0;\n height: 0;\n margin-top: -3px;\n vertical-align: middle;\n border-top: 5px solid transparent;\n border-bottom: 5px solid transparent;\n border-left: 10px solid;\n transition: transform 0.2s;\n cursor: pointer;\n}\n\n.wpstg-tab-triangle.wpstg-no-icon {\n margin-right: 2px;\n width: auto;\n height: auto;\n vertical-align: auto;\n border-top: 0px solid;\n border-bottom: 0px solid;\n border-left: 0px solid;\n}\n\n.wpstg-tab-triangle.wpstg-rotate-90 {\n transform: rotate(90deg);\n}\n\n.wpstg-tab-header:focus {\n color: #444;\n outline: none;\n box-shadow: none;\n}\n\n#wpstg-large-files {\n display: none;\n border: 1px dashed #ccc;\n padding: 10px 10px 10px;\n margin-top: 20px;\n position: relative;\n font-size: 12px;\n}\n\n#wpstg-large-files h3 {\n background: #fff;\n margin: 0;\n padding: 0 5px;\n position: absolute;\n top: -10px;\n left: 5px;\n}\n\n.wpstg-subdir {\n display: none;\n margin-left: 20px;\n}\n\n.wpstg-subdir.wpstg-push {\n display: block;\n margin-left: 20px;\n}\n\n.wpstg-dir a.disabled {\n color: #888;\n cursor: default;\n text-decoration: none;\n}\n\n.wpstg-check-subdirs {\n display: inline-block;\n margin-left: 10px;\n}\n\n.wpstg-notice-alert {\n display: block;\n background-color: #E01E5A;\n padding: 20px;\n max-width: 600px;\n margin-top: 10px;\n color: white;\n}\n\n.wpstg-notice--white {\n display: block;\n background-color: #ffffff;\n padding: 20px;\n max-width: 600px;\n margin-top: 10px;\n}\n\n.wpstg-notice-alert a {\n color: white;\n}\n\n.wpstg-notice-alert h3 {\n color: white;\n}\n\n.wpstg-header {\n font-weight: 400;\n line-height: 1.6em;\n font-size: 19px;\n border-bottom: 1px solid #DFDFDF;\n clear: both;\n padding-top: 10px;\n}\n\n#wpstg-clone-label {\n font-size: 14px;\n font-weight: bold;\n}\n\n.wpstg-log-details {\n height: 300px;\n overflow: scroll;\n max-width: 650px;\n font-family: monospace;\n font-size: 12px;\n line-height: 15px;\n border: 1px solid #FFF;\n background-color: black;\n color: #c0c0c0;\n padding: 3px;\n white-space: nowrap;\n margin-top: 15px;\n}\n\n#wpstg-finished-result {\n display: none;\n}\n\n#wpstg-remove-cloning {\n background: #ff3428;\n border-color: #e72f24;\n margin-top: 5px;\n}\n\n#wpstg-success-notice {\n padding: 10px;\n background-color: white;\n max-width: 900px;\n border: 1px solid #ccc;\n margin-top: 20px;\n}\n\n.wpstg_beta_notice {\n margin-bottom: 20px;\n}\n\n.wpstg-sysinfo {\n width: 700px;\n height: 700px;\n}\n\n.wpstg-form-table .col-title label {\n font-weight: 600;\n}\n\n.wpstg-form-table td:first-child {\n width: 30%;\n}\n\n.wpstg-share-button-container {\n margin: 5px 0;\n}\n\n.wpstg-share-button-container p {\n margin: 0 0 10px 0;\n}\n\n.wpstg-share-button {\n display: inline-block;\n}\n\n.wpstg-share-button a {\n text-decoration: none;\n}\n\n.wpstg-share-button .wpstg-share {\n font-family: sans-serif;\n font-weight: bold;\n text-decoration: none;\n text-align: center;\n}\n\n.wpstg-share-button .wpstg-share {\n -webkit-border-radius: 2px;\n -moz-border-radius: 2px;\n border-radius: 2px;\n color: #FFF;\n display: inline;\n font-size: 12px;\n padding: 4px 8px;\n}\n\n.wpstg-share-button-twitter .wpstg-share {\n background-color: #00ABF0;\n}\n\n.wpstg-share-button-facebook .wpstg-share {\n background-color: #3b5998;\n}\n\n.wpstg-share-button-googleplus .wpstg-share {\n background-color: #F53424;\n}\n\n.wpstg-share-button-twitter .share:active,\n.wpstg-share-button-facebook .share:active,\n.wpstg-share-button-googleplus .share:active {\n background-color: #353535;\n}\n\n#wpstg-check-space {\n margin-left: 8px;\n}\n\n#wpstg-welcome li {\n font-size: 18px;\n line-height: 29px;\n position: relative;\n padding-left: 23px;\n list-style: none !important;\n}\n\n#wpstg-welcome {\n margin-top: 20px;\n margin-right: 20px;\n background-color: white;\n}\n\n.wpstg-heading-pro {\n font-weight: bold;\n}\n\n.wpstg-h2 {\n margin-top: 0;\n margin-bottom: 1.2rem;\n font-size: 30px;\n line-height: 2.5rem;\n}\n\n#wpstg-welcome li:before {\n width: 1em;\n height: 100%;\n background: url(data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%2377B227%22%20d%3D%22M1671%20566q0%2040%2D28%2068l%2D724%20724%2D136%20136q%2D28%2028%2D68%2028t%2D68%2D28l%2D136%2D136%2D362%2D362q%2D28%2D28%2D28%2D68t28%2D68l136%2D136q28%2D28%2068%2D28t68%2028l294%20295%20656%2D657q28%2D28%2068%2D28t68%2028l136%20136q28%2028%2028%2068z%22%2F%3E%3C%2Fsvg%3E) left .4em no-repeat;\n background-size: contain;\n content: \"\";\n position: absolute;\n top: -2px;\n left: 0;\n color: #77b227;\n}\n\n.wpstg-h1 {\n margin-bottom: 1.35rem;\n font-size: 2.5em;\n line-height: 3.68rem;\n letter-spacing: normal;\n}\n\n.wpstg--swal2-content {\n color: #3e3e3e;\n}\n\n.wpstg--swal2-content h1 {\n color: #444;\n}\n\n#wpstg-welcome h2 {\n margin: 0 0 15px;\n}\n\n#wpstg-welcome .wpstg-footer {\n clear: both;\n margin-top: 20px;\n font-style: italic;\n}\n\n#wpstg-footer {\n clear: both;\n margin-top: 20px;\n margin-right: 10px;\n padding-top: 50px;\n}\n\n#wpstg-footer a {\n text-decoration: none;\n}\n\n#wpstg-footer li {\n margin-bottom: 2px;\n list-style: circle;\n}\n\n#wpstg-footer ul {\n margin-left: 15px;\n margin-top: 0px;\n}\n\n.wpstg-footer--title {\n margin-left: 15px;\n}\n\n.wpstg-staging-info {\n margin-top: 8px;\n color: #3e3e3e;\n font-size: 12px;\n}\n\n.wpstg-staging-info a {\n color: #3e3e3e;\n}\n\n.wpstg-staging-info li {\n margin-bottom: 2px;\n}\n\n.wpstg-bold {\n font-weight: 600;\n}\n\n#wpstg-processing-status {\n margin-top: 5px;\n font-size: 13px;\n font-weight: 400;\n float: left;\n}\n\n#wpstg-processing-timer {\n margin-top: 5px;\n font-size: 13px;\n font-weight: 400;\n float: right;\n}\n\n#wpstg-report-issue-button {\n margin-left: 30px;\n border: 1px solid #E01E5A;\n color: #E01E5A;\n background-color: white;\n}\n\n#wpstg-report-issue-button:hover {\n background-color: #dc2b62;\n color: #fff;\n}\n\n.wpstg-blue-primary {\n display: inline-block;\n text-decoration: none;\n font-size: 13px;\n height: 28px;\n margin: 0;\n padding: 0 10px 1px;\n cursor: pointer;\n border-width: 1px;\n border-style: solid;\n -webkit-appearance: none;\n border-radius: 3px;\n white-space: nowrap;\n box-sizing: border-box;\n background: #25a1f0;\n border-color: #2188c9;\n color: #fff;\n text-shadow: 0 -1px 1px #006799, 1px 0 1px #006799, 0 1px 1px #006799, -1px 0 1px #006799;\n}\n\na.wpstg-blue-primary {\n padding: 5px 10px;\n height: auto;\n}\n\n.wpstg-blue-primary:hover {\n background-color: #259be6;\n}\n\n.wpstg-report-issue-form {\n position: absolute;\n z-index: 999;\n width: 300px;\n background-color: #fff;\n padding: 15px 15px 10px;\n border: 1px solid #e8e8e8;\n border-radius: 3px;\n box-shadow: 0 1px 0 0 #fff inset;\n display: none;\n right: 0;\n top: 35px;\n}\n\n@media (max-width: 600px) {\n .wpstg-report-issue-form {\n position: relative;\n }\n}\n\n.wpstg-report-show {\n display: block;\n}\n\n.wpstg-field input[type=text],\n.wpstg-field textarea {\n width: 100%;\n font-weight: 400;\n line-height: 1.4;\n margin-bottom: 4px;\n}\n\n.wpstg-report-email,\n.wpstg-report-hosting-provider {\n width: 100%;\n font-weight: 400;\n font-size: .8rem;\n height: 2.3rem;\n line-height: 2.3rem;\n border-radius: 3px;\n margin-bottom: 4px;\n padding: 0 10px;\n}\n\n.wpstg-report-description {\n border-radius: 3px;\n font-size: .8rem;\n padding: 6px 10px;\n resize: none;\n}\n\n.wpstg-report-privacy-policy {\n font-size: 12px;\n margin-bottom: 15px;\n}\n\n#wpstg-report-cancel {\n float: right;\n margin-right: 5px;\n font-weight: bold;\n}\n\n#wpstg-success-button {\n font-weight: bold;\n}\n\n.wpstg-message {\n box-sizing: border-box;\n -moz-box-sizing: border-box;\n background-color: #f5e0de;\n border-radius: 3px;\n color: rgba(0, 0, 0, .6);\n height: auto;\n margin: 10px 0;\n min-height: 18px;\n padding: 6px 10px;\n position: relative;\n}\n\n.wpstg-message.wpstg-error-message {\n background-color: #f5e0de;\n color: #b65147;\n font-size: 12px;\n}\n\n.wpstg-message.wpstg-success-message {\n background-color: #d7f8e0;\n color: #515151;\n}\n\n.wpstg-message p {\n margin: 3px 0;\n font-size: 13px;\n}\n\n.wpstg-warning {\n display: block;\n padding: 10px;\n background-color: #ffb804;\n color: #ffffff;\n margin: 10px 10px 10px 0;\n}\n\n.wpstg-warning a {\n color: #ffffff;\n font-weight: bold;\n text-decoration: underline;\n}\n\n.wpstg-error {\n display: block;\n padding: 10px !important;\n background-color: #E01E5A !important;\n color: #ffffff;\n margin: 10px 10px 10px 0 !important;\n border-color: transparent !important;\n border-left-color: transparent !important;\n box-shadow: none !important;\n}\n\n.wpstg-error a {\n color: #ffffff;\n font-weight: bold;\n text-decoration: underline;\n}\n\n#wpstg-resume-cloning {\n display: none;\n}\n\n#wpstg-external-db th {\n text-align: left;\n width: 120px;\n}\n\n#wpstg-db-connect {\n font-weight: normal;\n}\n\n#wpstg-db-status {\n display: block;\n margin-top: 5px;\n padding: 5px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n border-radius: 4px;\n text-decoration: none;\n text-align: center;\n}\n\n.wpstg-text-field > #wpstg-db-status {\n margin-top: 8px;\n margin-left: 150px;\n min-width: 300px;\n}\n\n.wpstg-success {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #d6e9c6;\n}\n\n.wpstg-failed {\n color: #a94442;\n background-color: #f2dede;\n border-color: #ebccd1;\n}\n\n#wpstg_select_tables_cloning {\n height: 600px;\n font-size: 13px;\n}\n\n#wpstg_select_tables_pushing {\n height: 400px;\n font-size: 13px;\n}\n\n#wpstg-update-notify {\n background-color: #E01E5A;\n font-size: 14px;\n color: #ffffff;\n line-height: normal;\n padding: 10px;\n}\n\n#wpstg-update-notify a {\n color: #ffffff;\n font-weight: bold;\n}\n\n.wpstg-pointer {\n cursor: pointer;\n}\n\n.wpstg--tab--header {\n background-color: white;\n /* margin-bottom: 10px; */\n /* padding: 16px; */\n position: relative;\n transition: border-color .2s ease-in-out;\n background-color: #ffffff;\n color: #3e3e3e;\n border-radius: 2px;\n box-shadow: 0 0 1px rgba(0, 0, 0, .125), 0 1px 3px rgba(0, 0, 0, .02);\n}\n\n.wpstg--tab--header ul {\n display: flex;\n}\n\n.wpstg--tab--header ul li {\n margin-right: 1em;\n margin-bottom: 0px;\n}\n\n.wpstg--tab--header ul li:last-child {\n margin-right: 0;\n}\n\n.wpstg--tab--header a {\n min-width: 150px;\n text-align: center;\n cursor: pointer;\n display: inline-block;\n padding: 1em 1.25em;\n padding-bottom: 9px;\n color: #c4c4c4;\n font-size: 18px;\n /*\n border: solid 1px;\n */\n}\n\n.wpstg--tab--header a.wpstg--tab--active {\n border-bottom: .4em solid #25A1F0;\n color: #25A1F0;\n}\n\n.wpstg--tab--header a:hover {\n background-color: #fefefe;\n border-bottom: 0.4em solid #25A1F0;\n color: #25A1F0;\n}\n\n.wpstg--tab--content {\n display: none;\n}\n\n.wpstg--tab--active {\n display: block;\n}\n\n.wpstg--text--strong,\n.wpstg--text--strong * {\n font-weight: bold !important;\n}\n\n.wpstg--text--danger {\n color: #a94442;\n}\n\n.wpstg--tooltip {\n position: relative;\n display: inline-block;\n margin-left: 5px;\n}\n\n.wpstg--tooltip.wpstg--tooltip-normal {\n margin-left: 0;\n border-bottom: 0;\n}\n\n.wpstg--tooltip .wpstg--tooltiptext {\n visibility: hidden;\n width: 300px;\n background-color: #ffffff;\n color: #505050;\n text-align: left;\n padding: 12px;\n border-radius: 3px;\n position: absolute;\n z-index: 1;\n -webkit-box-shadow: rgba(0, 0, 0, 0.16) 0px 1px 4px;\n -moz-box-shadow: rgba(0, 0, 0, 0.16) 0px 1px 4px;\n box-shadow: rgba(0, 0, 0, 0.16) 0px 1px 4px;\n font-weight: normal;\n}\n\n.wpstg--tooltiptext-backups {\n width: 120px;\n top: 100%;\n left: -150%;\n margin-left: -56px;\n margin-top: 4px;\n}\n\n.wpstg--tooltip.wpstg--exclude-rules--tooltip {\n border-bottom: 0px solid transparent;\n}\n\n.wpstg--tooltip.wpstg--exclude-rules--tooltip > .wpstg--tooltiptext {\n margin-top: 0px;\n margin-left: -150px;\n}\n\n/**\nTooltip top arrow\n */\n\n.wpstg--tooltip .wpstg--tooltiptext-backups::after {\n content: \" \";\n position: absolute;\n bottom: 100%;\n /* At the top of the tooltip */\n left: 50%;\n margin-left: 25px;\n border-width: 5px;\n border-style: solid;\n border-color: transparent transparent white transparent;\n}\n\n.wpstg--tooltip .wpstg--tooltiptext.has-top-arrow {\n margin-top: 6px;\n}\n\n.wpstg--tooltip .wpstg--tooltiptext.has-top-arrow::after {\n content: \" \";\n position: absolute;\n bottom: 100%;\n left: 50%;\n margin-left: -18px;\n border-width: 5px;\n border-style: solid;\n border-color: transparent transparent white transparent;\n}\n\n.wpstg--snaphot-restore-table tr {\n line-height: 12px;\n}\n\n.wpstg-float-left {\n float: left;\n}\n\n.wpstg-beta-notice {\n background-color: #b0e8b0;\n border-radius: 3px;\n padding: 7px;\n margin-bottom: 20px;\n}\n\n#wpstg-backup-name {\n font-size: 1.875em;\n font-weight: 600;\n}\n\n#wpstg_select_tables_cloning option:checked,\n#wpstg_select_tables_pushing option:checked {\n /* Cannot use background color here because Chrome and Firefox ignore it even if set to !important */\n -webkit-appearance: menulist-button;\n background-image: linear-gradient(0deg, #1e90ff 0%, #1e90ff 100%);\n}\n\n.wpstg--btn--cancel {\n background: #ff3428;\n border-color: #e72f24;\n color: #fff;\n height: auto;\n line-height: normal;\n font-size: 16px;\n padding: .5em;\n margin-bottom: 1.5em;\n}\n\n.wpstg--btn--cancel:hover {\n background: #ff3428;\n border-color: #e72f24;\n}\n\n.wpstg--process--content > .wpstg--swal2-html-container {\n padding: 4em 2em !important;\n}\n\n.wpstg--modal--process--logs,\n.wpstg--modal--error--logs {\n background: #ffffff;\n border: 1px solid #a8a8a8;\n border-radius: 3px;\n height: 300px;\n margin-top: 1em;\n display: none;\n padding-top: 10px;\n padding-left: 10px;\n overflow: auto;\n text-align: justify;\n}\n\n.wpstg--modal--error--logs {\n height: auto;\n max-height: 300px;\n}\n\n.wpstg--modal--process--logs p {\n font-size: 12px;\n white-space: nowrap;\n}\n\n.wpstg--modal--process--logs p.wpstg--modal--process--msg--info {\n color: #222222;\n}\n\n.wpstg--modal--process--logs p.wpstg--modal--process--msg--debug {\n color: #757575;\n}\n\n.wpstg--modal--process--title {\n color: #565656;\n margin: .25em 0;\n}\n\n.wpstg--modal--process--subtitle {\n margin: .5em 0;\n color: #565656;\n}\n\n.wpstg--modal--error--logs > p {\n text-align: left;\n font-size: 14px;\n color: #222222;\n}\n\n.wpstg--modal--process--logs p,\n.wpstg--modal--error--logs p {\n margin: 0px;\n margin-bottom: 2px;\n}\n\n.wpstg--modal--process--msg--error {\n color: #E01E5A;\n}\n\n.wpstg--modal--process--msg--critical {\n color: #E01E5A;\n}\n\n.wpstg--modal--process--msg--warning {\n color: darkorange;\n}\n\n.wpstg--modal--process--msg-found {\n font-size: 16px;\n color: #E01E5A;\n font-weight: bold;\n}\n\n.wpstg--modal--delete {\n text-align: left;\n margin-top: 8px;\n color: #565656;\n}\n\n.wpstg-swal-popup .wpstg--swal2-cancel.wpstg--btn--cancel {\n margin-bottom: 0;\n text-shadow: none !important;\n}\n\n.wpstg-swal-popup .wpstg-loader {\n display: inline-block !important;\n}\n\n.wpstg--modal--process--generic-problem {\n display: none;\n border-left: 5px solid #E01E5A;\n margin: .5em 0;\n}\n\n.wpstg--modal--process--logs--tail {\n font-size: 16px;\n color: #565656;\n background: none;\n border: none;\n cursor: pointer;\n text-decoration: underline;\n}\n\n.wpstg--modal--backup--import--upload--title {\n color: #3e3e3e;\n}\n\n.wpstg--modal--backup--import--configure,\n.wpstg--modal--backup--import--upload--status,\n.wpstg--modal--backup--import--upload--container input[type=\"file\"] {\n display: none;\n}\n\n#wpstg--backups--import--file-list {\n font-size: 14px;\n font-weight: bold;\n}\n\n#wpstg--backups--import--file-list-empty {\n color: #E01E5A;\n}\n\n.wpstg--modal--backup--import--filesystem label {\n font-size: 14px;\n}\n\n.wpstg--modal--backup--import--filesystem button {\n margin-bottom: 20px;\n}\n\n.wpstg--modal--backup--import--upload {\n position: relative;\n min-height: 30px;\n}\n\n.wpstg--modal--backup--import--upload {\n color: #505050;\n}\n\n.wpstg--modal--backup--import--upload--container {\n position: relative;\n border-radius: 10px;\n margin: .5em;\n padding: 1em .5em;\n border: 3.5px dashed #dedede;\n transition: background-color 0.3s ease, color 0.3s ease;\n background-color: #f4fbff;\n min-height: 130px;\n}\n\n.wpstg--modal--backup--import--upload--container.wpstg--has-dragover span.wpstg--drop {\n display: inline-flex;\n}\n\n.wpstg--modal--backup--import--upload--container input[type='file'] {\n display: none;\n}\n\n.wpstg--modal--backup--import--upload--container img {\n margin-top: 10px;\n width: 4em;\n align-self: center;\n border: none;\n}\n\n.wpstg--modal--backup--import--upload--container span {\n margin-top: 1em;\n}\n\n.wpstg--backup--import--options > button {\n margin-top: 1em;\n padding: 1em;\n align-self: center;\n width: 185px;\n height: auto;\n line-height: normal;\n}\n\n.wpstg--backup--import--options {\n position: relative;\n display: flex;\n justify-content: center;\n}\n\n.wpstg--backup--import--options ul {\n display: none;\n}\n\n.wpstg--backup--import--options.wpstg--show-options ul {\n padding: 0;\n margin: 54px 0 0 0;\n display: block;\n position: absolute;\n width: 185px;\n background: #25a1f0;\n box-sizing: border-box;\n border-radius: 0 0 3px 3px;\n border-width: 1px;\n border-color: #2188c9;\n text-shadow: 0 -1px 1px #006799, 1px 0 1px #006799, 0 1px 1px #006799, -1px 0 1px #006799;\n}\n\n.wpstg--backup--import--options.wpstg--show-options ul li {\n border-bottom: .1em solid #25a1f0;\n margin: 0;\n}\n\n.wpstg--backup--import--options.wpstg--show-options ul li:hover {\n background-color: #25a1f0;\n}\n\n.wpstg--backup--import--options.wpstg--show-options ul li:last-child {\n border-bottom: none;\n}\n\n.wpstg--backup--import--options ul li button {\n cursor: pointer;\n background: none;\n border: none;\n margin: 0;\n width: 100%;\n color: white;\n height: 40px;\n line-height: 40px;\n}\n\n.wpstg--backup--import--options ul li button:hover {\n background-color: #259be6;\n}\n\n.wpstg--modal--backup--import--search-replace--info {\n margin: 1em 0;\n display: flex;\n flex-direction: row;\n}\n\n.wpstg--modal--backup--import--info p {\n text-align: left;\n margin: 0;\n}\n\n.wpstg--modal--backup--import--search-replace--wrapper button {\n align-self: center;\n}\n\n.wpstg--import--advanced-options--button {\n border: 0;\n border-radius: 3px;\n font-size: 18px;\n text-shadow: 0 -1px 1px #006799, 1px 0 1px #006799, 0 1px 1px #006799, -1px 0 1px #006799;\n cursor: pointer;\n}\n\n.wpstg--modal--backup--import--search-replace--new {\n color: white;\n background-color: #25a1f0;\n}\n\n.wpstg--modal--backup--import--search-replace--remove {\n color: white;\n background-color: #25a1f0;\n width: 22px;\n height: 22px;\n margin-left: 5px;\n}\n\n.wpstg--modal--backup--import--search-replace--input-group:first-child button {\n display: none;\n}\n\n.wpstg--modal--backup--import--search-replace--input--container {\n flex: 1;\n display: flex;\n flex-direction: column;\n}\n\n.wpstg--modal--backup--import--search-replace--input-group {\n width: 100%;\n border-bottom: 6px solid #f1f1f1;\n margin-bottom: 10px;\n}\n\n.wpstg--modal--backup--import--search-replace--input-group input {\n min-width: 250px;\n width: calc(50% - 4px - 11px - 5px); /* -4px is half of the padding; -11px is half of the button; -5 is the margin left of the button */\n display: inline-block;\n line-height: 10px;\n border: 1px solid #dedede;\n border-radius: 3px;\n color: #666;\n padding: 8px;\n margin-bottom: 12px;\n}\n\n.wpstg--modal--import--upload--process {\n display: none;\n position: relative;\n height: 30px;\n margin-top: 20px;\n margin-bottom: 20px;\n width: 100%;\n top: 0;\n left: 0;\n text-indent: 1em;\n white-space: nowrap;\n overflow: hidden;\n color: #333333;\n justify-content: center;\n align-items: center;\n}\n\n.wpstg--modal--import--upload--progress {\n position: absolute;\n background: #98d452;\n color: white;\n height: 100%;\n border-radius: 4px;\n left: 0;\n top: 0;\n}\n\n.wpstg--modal--import--upload--progress--title {\n z-index: 9;\n}\n\n.wpstg-fieldset:disabled {\n opacity: 0.8;\n border-top: 1px solid white;\n margin-top: 20px;\n}\n\n.wpstg-fieldset {\n padding-left: 20px;\n}\n\n.wpstg-fs-14 {\n font-size: 14px;\n}\n\n.wpstg-dark-alert {\n font-weight: bold;\n background-color: #0e86d9;\n padding: 15px;\n margin-top: 0px;\n color: white;\n}\n\n.wpstg-dark-alert .wpstg-button--cta-red {\n margin-left:10px;\n}\n\n.wpstg-form-group {\n display: block;\n width: 100%;\n margin-bottom: 8px;\n align-items: center;\n}\n\n.wpstg-form-group > label {\n display: block;\n font-weight: 700;\n}\n\n.wpstg-text-field > input {\n width: 300px;\n display: block;\n line-height: 1.5;\n}\n\n.wpstg-code-segment {\n display: block;\n}\n\n.wpstg-text-field > .wpstg-code-segment {\n margin-top: 4px;\n min-width: 300px;\n}\n\n.wpstg-form-group > .wpstg-checkbox {\n min-width: 100%;\n width: 100%;\n position: relative;\n}\n\n.wpstg-form-group > .wpstg-checkbox > input[type='checkbox'] {\n left: 150px;\n}\n\n.wpstg-rounded {\n border-radius: 3px;\n}\n\n.wpstg-white-border {\n border: 1px solid white !important;\n}\n\n.wpstg-ml-4 {\n margin-left: 4px;\n}\n\n#wpstg-confirm-backup-restore-data {\n margin: 40px;\n text-align: left;\n}\n\n#wpstg-advanced-settings hr {\n margin: 20px 0;\n}\n\n.wpstg-form-row {\n display: block;\n}\n\n.wpstg-form-row label,\n.wpstg-form-row input {\n display: table-cell;\n padding-left: 5px;\n padding-right: 5px;\n margin-top: 3px;\n margin-bottom: 3px;\n}\n\n.wpstg-form-row input {\n width: 400px;\n}\n\n.wpstg-form-row label {\n font-weight: bold;\n width: 1px;\n white-space: nowrap;\n}\n\n#wpstg-db-connect-output #wpstg-db-status {\n width: 390px;\n}\n\n.wpstg-fs-14 {\n font-size: 14px;\n}\n\n.wpstg-code-segment {\n display: block;\n}\n\n.wpstg-form-group > .wpstg-checkbox {\n min-width: 100%;\n width: 100%;\n}\n\n.wpstg-form-group > .wpstg-checkbox > input[type='checkbox'] {\n margin-left: 10px;\n}\n\n@media only screen and (max-width: 768px) {\n .wpstg-form-group > label {\n min-width: auto;\n width: auto;\n }\n\n .wpstg-text-field > input {\n width: 100%;\n }\n\n .wpstg-text-field > .wpstg-code-segment {\n margin-left: 0;\n min-width: 100%;\n }\n\n .wpstg-tab-section {\n width: calc(100vw - 60px);\n max-width: 450px;\n }\n}\n\n.wpstg-rounded {\n border-radius: 3px;\n}\n\n.wpstg-white-border {\n border: 1px solid white !important;\n}\n\n.wpstg-m-0 {\n margin: 0;\n}\n\n.wpstg-mt-10px {\n margin-top: 10px !important;\n}\n\n.wpstg-mr-10px {\n margin-right: 10px !important;\n}\n\n.wpstg-my-10px {\n margin-top: 10px !important;\n margin-bottom: 10px !important;\n}\n\n.wpstg-w-100 {\n width: 100%;\n}\n\n.wpstg-box-shadow {\n box-shadow: 0 1px 1px 0 rgba(0, 0, 0, .1);\n}\n\n.wpstg-float-left {\n float: left;\n}\n\n.wpstg-bold-text {\n font-weight: bold;\n}\n\n.wpstg-warning.notice {\n border-left: 4px solid #ffba00;\n}\n\n.wpstg-confirmation-label {\n background-color: #5b9dd9;\n color: #fff;\n padding: 2px;\n border-radius: 3px;\n}\n\n.wpstg-my-6px {\n margin-bottom: 6px;\n margin-top: 6px;\n}\n\n.wpstg-mb-10px {\n margin-bottom: 10px;\n}\n\n.wpstg-clear-both {\n clear: both;\n}\n\n.wpstg-font-italic {\n font-style: italic;\n}\n\n.wpstg-mt-20px {\n margin-top: 20px;\n}\n\n.wpstg-welcome-container {\n border: 2px solid white;\n padding: 20px;\n margin-bottom: 20px;\n}\n\n.wpstg-ml-30px {\n margin-left: 30px;\n}\n\n.wpstg-text-center {\n text-align: center;\n}\n\n.wpstg-feedback-link {\n text-decoration: none;\n}\n\n.wpstg-feedback-span {\n display: block;\n margin-bottom: 3px;\n}\n\n#wpstg-confirm-backup-restore-data {\n margin: 40px;\n text-align: left;\n}\n\n#wpstg-confirm-backup-restore-wrapper {\n margin: 30px;\n margin-top: 0;\n}\n\n#wpstg-confirm-backup-restore-wrapper h3 {\n color: #E01E5A;\n}\n\n#wpstg-progress-db,\n#wpstg-progress-backup {\n background-color: #3fa5ee;\n}\n\n#wpstg-progress-sr,\n#wpstg-progress-files.wpstg-pro {\n background-color: #3c9ee4;\n}\n\n#wpstg-progress-dirs,\n#wpstg-progress-data {\n background-color: #3a96d7;\n}\n\n#wpstg-progress-files:not(.wpstg-pro),\n#wpstg-progress-finishing {\n background-color: #378cc9;\n}\n\n.wpstg-issue-resubmit-confirmation.wpstg--swal2-container,\n.wpstg-swal2-container.wpstg--swal2-container {\n z-index: 10500;\n}\n\n.wpstg-swal2-container.wpstg-swal2-loading .wpstg--swal2-actions,\n.wpstg-swal2-container.wpstg-swal2-loading .wpstg--swal2-header {\n display: none;\n}\n\nbody.toplevel_page_wpstg_backup .wpstg--swal2-container .wpstg--swal2-content,\nbody.toplevel_page_wpstg_clone .wpstg--swal2-container .wpstg--swal2-content {\n z-index: 2;\n}\n\n.toplevel_page_wpstg_clone #swal2-content h2 {\n color: #3e3e3e;\n}\n\n.toplevel_page_wpstg_clone #swal2-content {\n line-height: 1.5em;\n}\n\ndiv#exportUploadsWithoutDatabaseWarning {\n font-style: italic;\n font-size: 0.9rem;\n margin: 10px;\n padding: 10px;\n border: 1px solid #e3e3e3;\n border-radius: 5px;\n text-align: center;\n background-color: #fafafa;\n}\n\n.wpstg-advanced-options-dropdown-wrapper {\n display: none; /* ENABLE WHEN WE HAVE ADVANCED OPTIONS FOR EXPORTING */\n margin-top: 20px;\n}\n\n.wpstg--modal--backup--import--search-replace--wrapper {\n text-align: left;\n margin-top: 20px;\n}\n\n.wpstg--modal--backup--import--search-replace--new--wrapper {\n text-align: center;\n}\n\n.wpstg-import-backup-contains li {\n display: inline-block;\n margin-bottom:0px;\n}\n\n.wpstg-import-backup-contains li .wpstg-backups-contains {\n border-radius: 3px;\n color: #979797;\n background-color: #f4f4f4 !important;\n width: 18px;\n height: 18px;\n font-size: 17px;\n}\n\n.wpstg-import-backup-contains.wpstg-listing-single-backup li .wpstg-backups-contains {\n padding: 2px;\n background-color: white;\n}\n\n.wpstg-import-backup-contains.wpstg-listing-single-backup li .wpstg-backups-contains > .wpstg--dashicons {\n filter: invert(35%);\n}\n\n.wpstg-import-backup-contains .wpstg--tooltiptext {\n width: 80px;\n font-size: 13px;\n padding: 5px;\n left: -25px;\n text-align: center;\n}\n\n.wpstg-import-backup-contains-title {\n display: inline-block;\n}\n\nul.wpstg-import-backup-contains {\n display: inline-block;\n}\n\n.wpstg-import-backup-name {\n display: inline-block;\n font-weight: bold;\n}\n\n.wpstg-backup-more-info-toggle {\n font-size: x-small;\n display: inline-block;\n font-style: italic;\n cursor: pointer;\n}\n\n.wpstg-backup-more-info-toggle::selection {\n background: none;\n}\n\nul.wpstg-import-backup-more-info {\n font-size: 14px;\n text-align: left;\n margin-bottom: 30px;\n margin-top: 10px;\n background-color: #f6f6f6;\n border: 1px solid #878787;\n border-radius: 3px;\n padding: 7px;\n cursor: pointer;\n}\n\nul.wpstg-import-backup-more-info:hover {\n background-color: #def2ff;\n border: 1px solid #25a1f0;\n}\n\nul.wpstg-import-backup-more-info li {\n height: 20px;\n}\n\n.wpstg-backup-list {\n max-width: 800px;\n}\n\n.wpstg-backup-list h3 {\n color:#3e3e3e;\n}\n\n.wpstg-backup-list ul ul {\n margin-block-start: 1em;\n margin-block-end: 1em;\n}\n\n.wpstg-push-confirmation-message {\n text-align: justify;\n font-size: 15px;\n}\n\n.wpstg-settings-row {\n padding-top: 10px;\n padding-bottom: 10px;\n}\n\n.wpstg-settings-title {\n font-weight: 600;\n}\n\n.wpstg-settings-form-group {\n display: flex;\n align-items: center;\n}\n\n.wpstg-settings-form-group > .wpstg-settings-message {\n width: 30%;\n padding: 0;\n margin: 7px 0 0;\n}\n\n/**\n * WP STAGING EXCLUSION RULES TABLE LAYOUT\n */\n\n.wpstg-excluded-filters-container {\n padding: 0;\n margin-top: 10px;\n margin-bottom: 10px;\n max-width: 100%;\n width: 100%;\n}\n\n.wpstg-excluded-filters-container > table {\n width: 100%;\n border-collapse: collapse;\n border-color: transparent;\n}\n\n.wpstg-excluded-filters-container td {\n padding-top: 4px;\n padding-bottom: 4px;\n height: 20px;\n}\n\n.wpstg-excluded-filters-container h4 {\n margin: 0;\n}\n\n.wpstg-exclude-filters-foot {\n display: flex;\n justify-content: flex-start;\n padding: 0;\n}\n\n/**\n * WP STAGING EXCLUSION RULE DROPDOWN STYLE\n */\n\n\n.wpstg-exclude-filter-dropdown > button:hover {\n background: #135e96;;\n border: 1px solid #135e96;;\n}\n\n.wpstg-exclude-filter-dropdown > .wpstg-dropdown-menu {\n width: 128px;\n}\n\n.wpstg-remove-exclude-rule {\n color: #fff !important;\n background-color: #e01e5a;\n border: 1px solid #e01e5a;\n width: 20px;\n height: 20px;\n border-radius: 10px;\n font-size: 24px;\n padding: 0;\n display: inline-flex;\n justify-content: center;\n outline: none;\n box-shadow: none;\n font-weight: 400;\n line-height: 0.7;\n margin-top: 5px;\n cursor: pointer;\n}\n\n.wpstg-remove-exclude-rule:hover {\n background-color: #E01E5A;\n border-color: #E01E5A;\n}\n\n.wpstg-code-block {\n margin-top: 4px;\n font-size: 1.2em;\n background: #f8f8f8;\n border-radius: 2px;\n}\n\n.wpstg-rule-info {\n background: #f8f8f8 !important;\n}\n\ncode.wpstg-code {\n display: inline-block;\n font-size: 11px;\n border: 1px solid #aaa;\n background: #fff;\n padding: 2px 4px;\n margin-bottom: 1px;\n color: #E01E5A;\n}\n\n.wpstg-exclusion-rule-info {\n color: #fff !important;\n background-color: #ffc107;\n border: 1px solid #ffc107;\n width: 14px;\n height: 14px;\n border-radius: 7px;\n font-size: 14px;\n padding: 0;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n outline: none;\n box-shadow: none;\n font-weight: 400;\n vertical-align: middle;\n}\n\n.wpstg-exclusion-rule-info:hover {\n background-color: #ffba0c;\n border: 1px solid #ffba0c;\n}\n\n/**\n * WP STAGING INPUTS EXCLUSION RULES\n */\n\n.wpstg-exclude-rule-input {\n font-size: 12px !important;\n padding: 2px 6px;\n box-shadow: none;\n outline: none !important;\n display: inline-block;\n font-weight: 400;\n line-height: 1.5;\n color: #222;\n border-radius: 0 !important;\n background-color: #fff;\n border: 1px solid #bbb;\n min-height: 24px !important;\n margin-top: 4px;\n margin-left: 4px;\n vertical-align: baseline !important;\n transition: all 0.3s cubic-bezier(.25, .8, .25, 1);\n width: 135px;\n}\n\n.wpstg-excluded-filters-container tbody > tr:last-child .wpstg-exclude-rule-input {\n margin-bottom: 4px;\n}\n\n.wpstg-exclude-rule-input:hover {\n border: 1px solid #999;\n}\n\n.wpstg-exclude-rule-input:focus {\n border: 1px solid #25A0F1 !important;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24) !important;\n}\n\n.wpstg-file-size-exclude-select,\n.wpstg-path-exclude-select {\n width: 135px;\n}\n\n.wpstg-file-size-exclude-select-small {\n width: 52px;\n}\n\n.wpstg-file-size-exclude-input {\n width: 75px;\n}\n\n.wpstg-staging-option-title {\n margin: 15px 0 0;\n}\n\n.wpstg-swal-push-container.wpstg--swal2-container {\n z-index: 9995;\n}\n\n#wpstg-scanning-files {\n padding-bottom: 5px;\n}\n\n#wpstg-scanning-files.wpstg-tab-section, #wpstg-scanning-db.wpstg-tab-section {\n padding-top: 10px;\n}\n\n.wpstg-reset-excludes-container {\n margin: 10px 0;\n}\n\n.wpstg-swal2-ajax-loader {\n width: 100%;\n height: 150px;\n overflow: hidden;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n@keyframes wpstg-loading-icon-anim {\n 0% {\n transform: rotate(0);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n\n.wpstg-swal2-ajax-loader > img {\n width: 64px;\n height: 64px;\n animation: wpstg-loading-icon-anim 1s infinite linear;\n -webkit-animation: wpstg-loading-icon-anim 1s infinite linear;\n}\n\n.wpstg-swal2-container .wpstg-tab-section {\n width: auto !important;\n}\n\n#wpstg-no-staging-site-results {\n margin-top: 10px;\n max-width: 375px;\n}\n\nli#wpstg-backup-no-results {\n max-width: 500px;\n}\n\nli#wpstg-backup-no-results div, #wpstg-no-staging-site-results div {\n display: inline-block;\n text-align: center;\n}\n\nli#wpstg-backup-no-results .wpstg--dashicons, #wpstg-no-staging-site-results .wpstg--dashicons {\n filter: invert(50%);\n position: absolute;\n margin-top: 1px;\n}\n\nli#wpstg-backup-no-results .no-backups-found-text, #wpstg-no-staging-site-results .no-staging-site-found-text {\n color: #5d5d5d;\n margin-left: 20px;\n}\n\n@media only screen and (max-width: 680px) {\n li#wpstg-backup-no-results div, #wpstg-no-staging-site-results div {\n width: 100%;\n }\n}\n\n#wpstg--modal--backup--download-inner p.wpstg-download-modal-text {\n font-size: 16px;\n color: #565656;\n}\n\n#wpstg--modal--backup--download-inner h2 {\n color: #565656;\n}\n\n.wpstg-backup-restore-contains-database,\n.wpstg-backup-restore-contains-files {\n display: none;\n}\n\n.wpstg-green-button {\n background: #8bc34a;\n border: 1px solid #78a93f;\n color: white;\n text-shadow: 0 -1px 1px #78a93f, 1px 0 1px #78a93f, 0 1px 1px #40c921, -1px 0 1px #78a93f;\n}\n\n.wpstg-green-button:hover {\n background: #78a93f;\n}\n\n.wpstg-is-dir-loading {\n position: absolute;\n margin-top: -2px;\n margin-left: 8px;\n display: none;\n}\n\n.wpstg-ml-8px {\n margin-left: 8px;\n}\n\n.wpstg-mb-8px {\n margin-bottom: 8px;\n}\n\n\n.wpstg-btn-danger {\n background-color: #E01E5A;\n border: 1px solid #E01E5A;\n color: white;\n text-shadow: none;\n}\n\n.wpstg-btn-danger:hover {\n background: #c0194d;\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);\n}\n\n.wpstg-swal2-container.wpstg-swal2-loading > .wpstg--swal2-modal {\n height: 200px;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container:not(.wpstg-swal2-loading) > .wpstg--swal2-modal {\n max-width: 480px;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container .wpstg--swal2-header {\n display: none;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container .wpstg--swal2-content {\n height: auto;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container > .wpstg--swal2-modal > .wpstg--swal2-content .wpstg-tabs-wrapper {\n overflow-y: auto;\n height: auto !important;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container > .wpstg--swal2-modal > .wpstg--swal2-content {\n font-size: 13px;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container > .wpstg--swal2-modal > .wpstg--swal2-content .wpstg-dir {\n margin-bottom: 4px;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container > .wpstg--swal2-modal > .wpstg--swal2-content .wpstg-subdir {\n margin-top: 4px;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container.has-collapsible-open .wpstg--swal2-modal {\n height: calc(100vh - 70px);\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container.has-collapsible-open > .wpstg--swal2-modal > .wpstg--swal2-content .wpstg-tabs-wrapper {\n height: calc(100vh - 350px) !important;\n}\n\n.wpstg--swal2-actions.wpstg--modal--actions > button {\n margin-left: 4px;\n margin-right: 4px;\n text-transform: uppercase;\n text-shadow: initial;\n font-weight: 500;\n min-width: 80px;\n}\n\n.wpstg-swal-popup {\n max-width: 1200px !important;\n}\n\n.wpstg-swal-popup.wpstg-push-finished .wpstg--swal2-title {\n color: #a8a8a8;\n}\n\n.wpstg-swal-popup.wpstg-push-finished .wpstg--swal2-content {\n margin-top: 8px;\n color: #a8a8a8;\n}\n\n.wpstg-swal-popup .wpstg--swal2-progress-steps .wpstg--swal2-progress-step.wpstg--swal2-active-progress-step,\n.wpstg-swal-popup .wpstg--swal2-progress-steps .wpstg--swal2-progress-step,\n.wpstg-swal-popup .wpstg--swal2-progress-steps .wpstg--swal2-progress-step-line {\n background: #25a1f0;\n}\n\n.wpstg-swal-popup .wpstg--swal2-progress-steps .wpstg--swal2-progress-step-line {\n width: 2.75em;\n}\n\n.wpstg--dashicons {\n width: 16px;\n height: 16px;\n}\n\n.wpstg--dashicons.wpstg-dashicons-grey {\n filter: invert(20%);\n}\n\n.wpstg--dashicons.wpstg-dashicons-19 {\n width: 19px;\n height: 19px;\n}\n\n.wpstg--dashicons.wpstg-dashicons-21 {\n width: 21px;\n height: 21px;\n}\n\n#wpstg--tab--backup #wpstg-step-1 {\n display: flex;\n align-items: center;\n}\n\n.wpstg-advanced-options .wpstg--tooltip,\n#wpstg--tab--backup #wpstg-step-1 .wpstg--tooltip {\n border-bottom: 0 solid transparent;\n display: inline-flex;\n align-items: center;\n}\n\n.wpstg-advanced-options-site .wpstg--tooltip img.wpstg--dashicons {\n filter: invert(17%) sepia(0%) saturate(1%) hue-rotate(195deg) brightness(97%) contrast(77%);\n}\n\n#wpstg--tab--backup #wpstg-step-1 .wpstg--tooltip {\n border-bottom: 0 solid transparent;\n display: flex;\n align-items: center;\n}\n\n.wpstg--tooltip .wpstg--tooltiptext-backups::after {\n left: calc(20% + 2px);\n}\n\n.wpstg-listing-single-backup .wpstg--dashicons {\n width: 17px;\n height: 17px;\n}\n\n.wpstg-100-width {\n width: 100px;\n}\n\n.wpstg-caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: 4px solid;\n border-right: 4px solid transparent;\n border-left: 4px solid transparent;\n transition: transform 0.2s;\n cursor: pointer;\n}\n\n.wpstg-caret.wpstg-caret-up {\n transform: rotate(-180deg);\n}\n\n.wpstg-advanced-options-site label {\n font-size: 16px;\n display: block;\n margin: .5em 0;\n}\n\n#wpstg-confirm-backup-restore-data {\n font-size: 18px;\n margin: 0;\n margin-top: 30px;\n}\n\n/* Sweetalert WP STAGING Theme */\n\nbody.toplevel_page_wpstg_backup .wpstg--swal2-container.wpstg--swal2-backdrop-show,\nbody.toplevel_page_wpstg_clone .wpstg--swal2-container.wpstg--swal2-backdrop-show {\n background: rgba(0, 0, 0, .6);\n z-index: 9995;\n}\n\n.wpstg-swal-popup.wpstg--swal2-popup {\n border-radius: 8px;\n z-index: 9999;\n padding: 24px;\n color: #3e3e3e;\n font-family: Verdana, Geneva, Tahoma, sans-serif;\n}\n\n.wpstg-swal-popup .wpstg--swal2-title {\n font-size: 22px;\n color: #3e3e3e;\n}\n\n.wpstg-swal-popup.wpstg--swal2-popup:not(.centered-modal) .wpstg--swal2-title {\n align-self: flex-start; /* For an actual Swal title */\n text-align: left; /* Manually adding this class to a non flex display */\n margin-bottom: 0;\n}\n\n.wpstg-swal-popup .wpstg--swal2-close {\n top: 8px;\n right: 8px;\n z-index: 5;\n}\n\n.wpstg-swal-popup .wpstg--swal2-close:focus {\n outline: none;\n}\n\n.wpstg-swal-popup.wpstg--swal2-popup:not(.centered-modal) .wpstg--swal2-actions {\n justify-content: flex-end;\n}\n\n.wpstg-swal-popup .wpstg--swal2-actions > button {\n border-radius: 4px;\n font-weight: 900;\n border: 0;\n font-size: 15px;\n padding: 10px 12px;\n text-transform: capitalize;\n line-height: normal;\n height: 40px;\n min-width: 100px;\n text-shadow: none;\n}\n\n.wpstg-swal-popup.wpstg--swal2-popup:not(.centered-modal) .wpstg--swal2-actions > button {\n margin-left: 8px;\n}\n\n.wpstg-swal-popup .wpstg--swal2-actions > button.wpstg--swal2-cancel {\n border: 1px solid rgba(29, 28, 29, 0.3);\n background: #fff;\n color: rgb(29, 28, 29);\n font-weight: 500;\n width: 100px;\n text-shadow: none;\n}\n\n.wpstg-swal-popup .wpstg--swal2-actions > button:hover {\n box-shadow: 0 1px 3px 0 rgba(0 0 0 .1);\n}\n\n.wpstg-swal-popup .wpstg--swal2-actions > button.wpstg--swal2-cancel:hover {\n background: rgba(28, 29, 28, .04);\n}\n\n#wpstg-backup-name-input {\n height: 44px;\n font-size: 18px;\n}\n\n.wpstg-restore-finished-container .wpstg--swal2-title {\n color: #565656 !important;\n}\n\n/*#wpstg-restore-success {\n color: #565656;\n}*/\n\n.wpstg-restore-finished-container .wpstg--swal2-content {\n margin-top: 20px;\n color: #a8a8a8;\n}\n\n/* WP Staging Implementation of Windows Style Linear Loader */\n\n.wpstg-linear-loader > span[class*=\"wpstg-linear-loader-item\"] {\n height: 6px;\n width: 6px;\n background: #333;\n display: inline-block;\n margin: 12px 2px;\n border-radius: 100%;\n animation: wpstg_linear_loader 3s infinite;\n animation-timing-function: cubic-bezier(0.030, 0.615, 0.995, 0.415);\n animation-fill-mode: both;\n}\n\n.wpstg-linear-loader > span.wpstg-linear-loader-item:nth-child(1) {\n animation-delay: 1s;\n}\n\n.wpstg-linear-loader > span.wpstg-linear-loader-item:nth-child(2) {\n animation-delay: 0.8s;\n}\n\n.wpstg-linear-loader > span.wpstg-linear-loader-item:nth-child(3) {\n animation-delay: 0.6s;\n}\n\n.wpstg-linear-loader > span.wpstg-linear-loader-item:nth-child(4) {\n animation-delay: 0.4s;\n}\n\n.wpstg-linear-loader > span.wpstg-linear-loader-item:nth-child(5) {\n animation-delay: 0.2s;\n}\n\n.wpstg-linear-loader > span.wpstg-linear-loader-item:nth-child(6) {\n animation-delay: 0s;\n}\n\n@keyframes wpstg_linear_loader {\n 0% {\n transform: translateX(-30px);\n opacity: 0;\n }\n 25% {\n opacity: 1;\n }\n 50% {\n transform: translateX(30px);\n opacity: 0;\n }\n 100% {\n opacity: 0;\n }\n}\n\n/* END - Windows Style Linear Loader */\n\n.wpstg--modal--backup--import--upload--content {\n padding: .75em;\n margin: 1em auto;\n}\n\n.wpstg--modal--backup--import--upload--content .wpstg-linear-loader {\n display: none;\n}\n\n#wpstg-multisite-disabled .wpstg-clone {\n width: 355px;\n}\n\n#wpstg-free-version-backups .wpstg-clone {\n text-align: center;\n}\n\n#wpstg-free-version-backups .wpstg-clone p {\n font-size: 16px;\n}\n\n.wpstg-staging-info li .backup-notes {\n word-break: break-word;\n}\n\n.wpstg--modal--import--upload--progress--title small {\n font-weight: normal;\n}\n\n#wpstg-report-issue-wrapper {\n position: relative;\n}\n\n#wpstg-report-issue-wrapper .arrow-up {\n width: 0;\n height: 0;\n border-left: 8px solid transparent;\n border-right: 8px solid transparent;\n border-bottom: 8px solid white;\n position: absolute;\n top: -8px;\n right: 40px;\n}\n\n.notice {\n margin: 10px 20px 0 2px;\n}\n\n.wpstg--notice {\n box-shadow: 0 1px 1px rgba(0, 0, 0, .04);\n margin: 20px 20px 20px 0px;\n padding: 1px 12px;\n}\n\n.wpstg--error a:hover {\n color: #eeeeee;\n}\n\n.wpstg--error, .wpstg--error a {\n background: #E01E5A;\n color: white;\n}\n\n/**\n * Buttons\n */\n\n.wpstg-button {\n display: inline-block;\n border-radius: 2px;\n cursor: pointer;\n padding: 2px 10px 2px 10px;\n text-transform: uppercase;\n font-weight: 500;\n outline: 0;\n transition: background-color .1s ease-in;\n text-decoration: none;\n}\n\n.wpstg-button.wpstg-save {\n background-color: #1687A7;\n color: white;\n}\n\n.wpstg-button.wpstg-save:hover {\n background-color: #276678;\n}\n\n\n.wpstg-button.wpstg-button-light {\n background-color: #f8f8f8;\n border: 1px solid #eee;\n color: #333;\n animation: background-color 0.3s;\n}\n\n.wpstg-button.wpstg-button-light:hover {\n background-color: #e0e0e0;\n border: 1px solid #e0e0e0;\n}\n\n.wpstg-buttons .spinner {\n float: none;\n margin: 0 0 0 5px;\n}\n\n.wpstg-button.danger {\n display: inline-block;\n text-decoration: none;\n text-align: center;\n text-transform: inherit;\n background-color: #E01E5A;\n color: white;\n border-radius: 2px;\n border-color: transparent;\n}\n\n.wpstg-button.danger:hover {\n background-color: #c0194d;\n}\n\n.wpstg-button--big {\n display: inline-block;\n padding: 10px;\n min-width: 170px;\n font-size: 16px;\n text-decoration: none;\n text-align: center;\n margin-top: 20px;\n color: white;\n border-radius: 3px;\n}\n\n.wpstg-button--primary {\n display: inline-block;\n text-decoration: none;\n font-size: 13px;\n line-height: 2.15384615;\n min-height: 30px;\n margin: 0;\n padding: 0 10px;\n cursor: pointer;\n border: 1px solid rgba(29, 28, 29, 0.3);\n -webkit-appearance: none;\n border-radius: 2px;\n white-space: nowrap;\n box-sizing: border-box;\n color: #171717;\n}\n\n.wpstg-button--primary:hover {\n background: rgba(28, 29, 28, .04);\n color: black;\n}\n\n.wpstg-button--secondary {\n display: inline-block;\n background-color: transparent;\n color: #95a5a6;\n border-radius: 2px;\n border: 1px solid rgba(29, 28, 29, 0.3);\n cursor: pointer;\n padding: 4px 10px 2px 10px;\n font-weight: 500;\n outline: 0;\n transition: background-color .1s ease-in;\n text-decoration: none;\n}\n\n.wpstg-button--red {\n background-color: #E01E5A;\n border-color: #E01E5A;\n color: white;\n}\n\n.wpstg-button--red:hover {\n background-color: #d02358;\n border-color: #e0255f;\n color: white;\n}\n\n.wpstg-button--cta-red {\n background-color: #fe008f;\n border-color: #E01E5A;\n color: white;\n}\n\n.wpstg-button--cta-red:hover {\n background-color: #f31391;\n border-color: #e0255f;\n color: white;\n}\n\n.wpstg-button--blue {\n background-color: #25A0F1;\n border-color: #25A0F1;\n color: white;\n}\n\n.wpstg-button--blue:hover {\n background-color: #259be6;\n border-color: #259be6;\n color: white;\n}\n\n#wpstg-button-backup-upgrade {\n font-size: 16px;\n}\n\n.wpstg-staging-status {\n color: #E01E5A;\n}\n\n#wpstg-push-changes,\n#wpstg-start-updating,\n#wpstg-save-clone-data {\n margin-left: 5px;\n}\n\ninput.wpstg-textbox {\n border: 1px solid #aaa;\n border-radius: .25rem;\n padding: 0.25rem 0.5rem;\n font-size: 14px;\n}\n\ninput.wpstg-textbox:focus {\n outline: 0;\n border-color: #259be6;\n -webkit-box-shadow: 0 0 0 0.1rem rgba(221, 221, 221, .35);\n box-shadow: 0 0 0 0.1rem rgba(221, 221, 221, .35);\n}\n\ninput.wpstg-textbox::placeholder {\n color: #888;\n}\n\n.wpstg--advance-settings--checkbox {\n display: flex;\n align-items: center;\n}\n\n.wpstg--advance-settings--checkbox > label {\n font-size: 14px;\n font-weight: bolder;\n width: 165px;\n display: inline-block;\n}\n\n.wpstg--advance-settings--checkbox > .wpstg--tooltip {\n margin-top: 5px;\n margin-left: 5px;\n position: relative;\n display: inline-block;\n border-bottom: 0px solid transparent;\n}\n\n.wpstg--advance-settings--checkbox > .wpstg--tooltip > .wpstg--tooltiptext {\n top: 18px;\n left: -150px;\n}\n\n\ndiv#wpstg-restore-wait {\n display: none;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n text-align: center;\n height: 100vh;\n width: 100vw;\n position: fixed;\n top: 0;\n left: 0;\n background: white;\n z-index: 99999;\n}\n\ndiv#wpstg-restore-wait .wpstg-title {\n font-weight: bold;\n}\n\ndiv#wpstg-restore-wait div {\n font-size: 16px;\n margin-top: 12px;\n}\n\n.resumable-browse {\n cursor: pointer;\n}\n\n.resumable-browse a {\n text-decoration: underline;\n}\n\n.wpstg-upload-text {\n font-weight: 600;\n}\n\n.wpstg--modal--backup--import--upload--container.dragover {\n transition: background-color 0.7s;\n background-color: #94dc96;\n color: #FFF;\n}\n\n.wpstg--modal--backup--import--upload--container.dragover * {\n pointer-events: none; /* Avoids flickering when dragging to drop a file */\n}\n\n.wpstg--modal--backup--import--upload--container.dragover .wpstg-upload-text {\n display: none;\n}\n\n.wpstg--modal--backup--import--upload--container.dragover .wpstg-dragover-text {\n display: block;\n}\n\n.wpstg--modal--backup--import--upload--container .wpstg-dragover-text {\n display: none;\n}\n\n#wpstg-invalid-license-message, #wpstg-invalid-license-message a {\n font-weight: 500;\n color: #E01E5A;\n margin-left: 6px;\n}\n\n#wpstg-sidebar--banner {\n max-width: 200px;\n}\n\n@media screen and (max-width: 1234px) {\n .wpstg-h2 {\n font-size: 24px;\n }\n\n #wpstg-welcome li {\n font-size: 14px;\n }\n}\n\n.wpstg-exclamation {\n color: #ffffff;\n border-radius: 100%;\n background-color: #E01E5A;\n width: 20px;\n height: 20px;\n text-align: center;\n font-weight: bold;\n display: inline-block;\n margin: 6px;\n}\n\n.wpstg--tab--contents {\n padding-top: 1px;\n}\n\n.wpstg-swal-show.wpstg--swal2-show {\n -webkit-animation: wpstg-swal-show 0.2s !important;\n animation: wpstg-swal-show 0.2s !important;\n}\n\n@-webkit-keyframes wpstg-swal-show {\n 0% {\n transform: scale(0.3);\n }\n 100% {\n transform: scale(1);\n }\n}\n\n@keyframes wpstg-swal-show {\n 0% {\n transform: scale(0.3);\n }\n 100% {\n transform: scale(1);\n }\n}\n\n.wpstg-tab-item--vert-center {\n display: flex;\n align-items: center;\n}\n\n.wpstg-db-comparison-modal {\n padding-left: 10px;\n padding-right: 10px;\n}\n\n.wpstg-db-comparison-table {\n font-size: 13px;\n width: 100%;\n}\n\n.wpstg-db-comparison-table tbody td {\n padding-top: 6px;\n}\n\n.wpstg-db-comparison-table tr > td:first-child,\n.wpstg-db-comparison-table tr > th:first-child {\n text-align: left;\n}\n\n.wpstg-css-tick {\n display: inline-block;\n transform: rotate(45deg);\n height: 12px;\n width: 6px;\n border-bottom: 3px solid #78b13f;\n border-right: 3px solid #78b13f;\n}\n\n.wpstg-css-cross {\n position: relative;\n top: -8px;\n left: -2px;\n width: 16px;\n height: 16px;\n}\n\n.wpstg-css-cross:before, .wpstg-css-cross:after {\n position: absolute;\n content: ' ';\n height: 17px;\n width: 3px;\n background-color: #E01E5A;\n}\n\n.wpstg-css-cross:before {\n transform: rotate(45deg);\n}\n\n.wpstg-css-cross:after {\n transform: rotate(-45deg);\n}\n\n.wpstg-selection-preview {\n font-size: 12px;\n margin-left: 20px;\n color: #3216;\n}\n\n.wpstg-selection-preview.danger {\n color: #E01E5A;\n}\n\n.wpstg--backup-automated {\n margin-bottom: -5px;\n}\n\n.wpstg--dismiss-schedule {\n cursor: pointer;\n}\n\n.wpstg-import-backup-contains.wpstg-listing-single-backup {\n vertical-align: middle;\n}\n\n.wpstg-import-backup-contains.wpstg-listing-single-backup li {\n padding:2px;\n}\n\n.wpstg--modal--backup--manage--schedules--content table {\n margin: 0 auto;\n width: 100%;\n}\n\n.wpstg--modal--backup--manage--schedules--title {\n text-align: left;\n margin-bottom: 10px;\n margin-top: 0px;\n}\n\n.wpstg--modal--backup--import--upload--title {\n text-align: center;\n}\n\n#wpstg--modal--backup--manage--schedules--content {\n text-align: left;\n}\n\n#wpstg--modal--backup--manage--schedules--content thead {\n font-weight: bold;\n}\n\n#wpstg--modal--backup--manage--schedules--content .wpstg--tooltip.wpstg--dismiss-schedule {\n border-bottom: none;\n}\n\n.wpstg--tooltip.wpstg--dismiss-schedule img.wpstg--dashicons {\n filter: invert(18%) sepia(57%) saturate(6238%) hue-rotate(332deg) brightness(93%) contrast(88%);\n}\n\n#wpstg--modal--backup--manage--schedules--content td {\n padding-right: 25px;\n padding-top: 10px;\n}\n\n#wpstg--modal--backup--manage--schedules--content ul {\n margin-top: 0;\n margin-bottom: 0;\n}\n\n#wpstg--modal--backup--manage--schedules--content ul li:first-child .wpstg--tooltip {\n margin-left:0;\n}\n\n.wpstg-button:disabled {\n background-color: #dddddd;\n text-shadow: none;\n color: #b3b3b3;\n border: 1px solid #cfcfcf;\n cursor: not-allowed;\n}\n\n#wpstg-backup-runs-info {\n margin: 0px;\n margin-top: 20px;\n padding:0px;\n font-size:12px;\n}\n\n#wpstg-backup-runs-info li {\n margin: 0px;\n}\n\ndiv#wpstg-backup-locked {\n width: 100%;\n max-width: calc(800px - 30px);\n padding: 15px;\n background: white;\n margin-bottom: 10px;\n display: flex;\n align-items: center;\n}\n\n#wpstg-backup-locked .icon {\n display: inline-block;\n height: 20px;\n}\n\n#wpstg-backup-locked .icon img {\n animation: wpstg-loading-icon-anim 2s infinite;;\n}\n\n#wpstg-backup-locked .text {\n display: inline-block;\n margin-left: 15px;\n}\n\n#backup-schedule-current-time {\n font-size: 12px;\n}\n\n.wpstg-backup-scheduling-options label {\n margin-top:17px;\n}\n\n.wpstg-backup-scheduling-options .wpstg-storage-option {\n display: block;\n margin: .5em 0;\n font-size: 15px;\n}\n\n.wpstg-storage-option>span:not(.wpstg-storage-settings) {\n width: 150px;\n display: inline-block;\n}\n\n.wpstg-storages-postbox {\n display:none;\n padding: 16px 8px;\n margin-top: 8px;\n margin-bottom: 8px;\n background-color: white;\n border:1px solid #cccccc;\n}\n\n.wpstg-storages-postbox a {\n padding: 8px;\n margin-right: 8px;\n text-decoration: none;\n}\n\n.wpstg-storage-postbox {\n padding: 4px 16px;\n background-color: white;\n border-bottom:1px solid #cccccc;\n border-left:1px solid #cccccc;\n border-right:1px solid #cccccc;\n}\n\n.wpstg-storages-postbox a.wpstg-storage-provider-active {\n background: #25a1f0;\n color: white;\n font-weight: 700;\n cursor: default;\n}\n\n.wpstg-storages-postbox a.wpstg-storage-provider-disabled {\n color: #999;\n cursor: not-allowed;\n}\n\n.wpstg-provider-revoke-form {\n display: inline;\n margin-top: 12px;\n margin-bottom: 12px;\n}\n\n.wpstg-provider-settings-form {\n margin-top: 10px;\n}\n\n.wpstg-provider-settings-form strong {\n display: block;\n margin: 8px 0;\n}\n\n.wpstg-provider-settings-form p {\n margin: 0;\n margin-bottom: 8px;\n}\n\n.wpstg-provider-settings-form fieldset {\n margin: 0;\n padding: 0;\n margin-bottom: 16px;\n}\n\n.wpstg-provider-settings-form fieldset p {\n margin: 0;\n padding: 0;\n font-size: 12px;\n}\n\n.wpstg-provider-settings-form fieldset label {\n display: block;\n margin-bottom: 2px;\n}\n\n.wpstg-provider-settings-form fieldset input {\n font-size: 12px;\n}\n\n.wpstg-provider-settings-form .wpstg-link-btn.wpstg-blue-primary {\n text-shadow: none;\n}\n\n.wpstg-btn-google {\n font-family: Roboto;\n display: inline-flex;\n align-items: center;\n border-width: 0;\n outline: none;\n border-radius: 2px;\n box-shadow: 0 1px 3px rgba(0, 0, 0, .6);\n color: #555;\n transition: background-color .3s;\n padding: 8px;\n padding-right: 16px;\n height: 40px;\n line-height: 40px;\n font-size: 14px;\n box-sizing: border-box;\n text-decoration: none;\n font-weight: bold;\n margin-right: 10px;\n}\n\n.wpstg-btn-google img {\n width: 18px;\n height: 18px;\n margin-right: 12px;\n margin-left:5px;\n}\n\n#wpstg-custom-google-credentials {\n margin-top: 20px;\n}\n\n.wpstg-fieldset .wpstg-with-icon {\n display: inline-flex;\n align-items: center; \n}\n\n.wpstg-fieldset .wpstg-with-icon .wpstg-fieldset-icon {\n margin-left: 8px;\n}\n\n.wpstg-fieldset .wpstg-with-icon .wpstg-fieldset-icon img {\n width: 16px;\n height: 16px;\n}\n\n#wpstg-btn-provider-revoke {\n border-radius: 2px;\n}\n\n#wpstg--js--translations {\n text-decoration: underline;\n}\n"]}
1
+ {"version":3,"sources":["wpstg-admin.css"],"names":[],"mappings":"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","file":"wpstg-admin.css","sourcesContent":["/**\n * WPSTG Admin CSS\n *\n * @package WPSTG\n * @subpackage Admin CSS\n * @copyright Copyright (c) 2021, René Hermenau\n * @license http://opensource.org/licenses/gpl-2.0.php GNU Public License\n*/\n\n/* Font Faces */\n\n/* roboto-regular - latin */\n@font-face {\nfont-family: 'Roboto';\nfont-style: normal;\nfont-weight: 400;\nsrc: url('../../fonts/roboto-v29-latin-regular.eot'); /* IE9 Compat Modes */\nsrc: local(''),\n url('../../fonts/roboto-v29-latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */\n url('../../fonts/roboto-v29-latin-regular.woff2') format('woff2'), /* Super Modern Browsers */\n url('../../fonts/roboto-v29-latin-regular.woff') format('woff'), /* Modern Browsers */\n url('../../fonts/roboto-v29-latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */\n url('../../fonts/roboto-v29-latin-regular.svg#Roboto') format('svg'); /* Legacy iOS */\n}\n\n/* Colors */\n\n.wpstg--violet {\n color: #9d37ae;\n}\n\n.wpstg-border--violet {\n border: 1px solid #9d37ae;\n}\n\n.wpstg--red {\n color: #E01E5A;\n}\n\n.wpstg-cta--red {\n color: #fe008f;\n}\n\n.wpstg--blue {\n color: #24a1f0;\n}\n\n.wpstg--darkblue {\n color: #0e86d9;\n}\n\n.wpstg--green {\n color: #83c11f;\n}\n\n.wpstg--grey {\n color: #3e3e3e;\n}\n\n.wpstg--darkgrey {\n color: #1b1b1b;\n}\n\n.wpstg--filter--svg {\n filter: invert(24%) sepia(11%) saturate(558%) hue-rotate(169deg) brightness(97%) contrast(91%);\n}\n\n/* CSS for Tabs */\n\nbody.wp-staging-pro_page_wpstg_backup,\nbody.toplevel_page_wpstg_clone,\nbody.wp-staging-pro_page_wpstg-settings,\nbody.wp-staging-pro_page_wpstg-tools,\nbody.wp-staging-pro_page_wpstg-license {\n background-color: #f3f5f7;\n}\n\n#wpstg-tab-container ul {\n list-style: none;\n margin: 0;\n padding: 0;\n background: #f1f1f1;\n float: left;\n}\n\n#wpstg-tab-container ul li:first-child.selected-tab {\n border-top: none;\n}\n\n#wpstg-tab-container ul li a.selected-tab {\n font-weight: bold;\n text-decoration: none;\n}\n\n#wpstg-tab-container .row {\n padding-top: 10px;\n padding-bottom: 12px;\n}\n\n.wpstg-tabs-container .nav-tab-wrapper {\n padding: 0;\n}\n\n#wpstg-tab-container .row label strong,\n#wpstg-tab-container .row strong {\n font-weight: bold;\n}\n\n.wpstg-tabs a {\n padding: 5px;\n}\n\n#wpstg-tab-container > ul > li.wpstg-tabs.active {\n background-color: white;\n}\n\n#wpstg_settingsgeneral_header .row:nth-child(3),\n#wpstg_settingsgeneral_header .row:nth-child(4) {\n display: none;\n}\n\n#wpstg-tab-container .wpstg-settings-panel {\n padding: 0 20px 20px 20px;\n overflow: auto;\n}\n\n#wpstg-tab-container .wpstg-form-table th {\n vertical-align: top;\n text-align: left;\n padding: 20px 10px 20px 0;\n line-height: 1.3;\n font-weight: bold;\n font-size: 14px;\n color: #484848;\n width: 30%;\n}\n\n#wpstg-tab-container .wpstg-form-table tr {\n border-bottom: 1px solid #E7E7E7;\n}\n\n#wpstg-tab-container span.description {\n display: block;\n font-weight: 400;\n font-style: normal;\n font-size: 13px;\n margin-top: 7px;\n color: #484848;\n}\n\n#wpstg-tab-container .col-title {\n color: #484848;\n}\n\n@media only screen and (max-width: 680px) {\n #wpstg-tab-container ul {\n float: none;\n }\n\n #wpstg-tab-container .wpstg-form-table tr > th {\n width: 100%;\n }\n\n #wpstg-tab-container span.description {\n font-size: 14px;\n }\n\n #wpstg-tab-container .wpstg-form-table tr > th,\n #wpstg-tab-container .wpstg-form-table tr > td {\n padding: 10px;\n }\n}\n\n#wpstg-tab-container ul li {\n margin-bottom: 0;\n}\n\n#wpstg-tab-container ul li a {\n display: block;\n padding: 10px 4px 10px 14px;\n border-width: 1px 0;\n border-style: solid;\n border-top-color: white;\n border-bottom-color: #e7e7e7;\n text-decoration: none;\n color: #0097DF;\n font-weight: bold;\n}\n\n#wpstg-tab-container ul li a:hover {\n background-color: #e5e5e5;\n color: #777777;\n}\n\n.wpstg-logo {\n display: block;\n font-size: 16px;\n padding-top: 20px;\n width: 220px;\n float: left;\n}\n\n.wpstg-logo img {\n max-width: 212px;\n}\n\n.wpstg-version {\n display: block;\n padding-top: 40px;\n color: #9b9b9b;\n}\n\n.wpstg_admin .nav-tab {\n color: #3C3C3C;\n}\n\n#wpstg-tab-container table tbody tr:nth-child(1) > th > div {\n font-size: 20px;\n}\n\n/* Cloning workflow */\n\n#wpstg-clonepage-wrapper {\n margin-bottom: 20px;\n width: 98%;\n}\n\n@media screen and (min-width: 1090px) {\n #wpstg-clonepage-wrapper {\n float: left;\n margin-bottom: 20px;\n }\n}\n\n#wpstg-steps {\n margin-top: 0px;\n margin-left: 20px;\n}\n\n#wpstg-steps li {\n color: #444;\n line-height: 20px;\n padding-right: 10px;\n float: left;\n}\n\n.wpstg-step-num {\n border: 1px solid #3e3e3e;\n border-radius: 3px;\n display: inline-block;\n width: 20px;\n height: 20px;\n text-align: center;\n margin-right: 5px;\n}\n\n.wpstg-current-step {\n font-weight: bold;\n}\n\n.wpstg-current-step .wpstg-step-num {\n background: #3e3e3e;\n color: #eee;\n}\n\n.wpstg-box {\n margin: 10px 0;\n padding: 10px;\n position: relative;\n overflow: hidden;\n transition: border-color .2s ease-in-out;\n}\n\n.wpstg-clone {\n margin-bottom: 10px;\n padding: 16px;\n position: relative;\n transition: border-color .2s ease-in-out;\n background-color: #ffffff;\n color: #3e3e3e;\n border-radius: 3px;\n box-shadow: 0 0 1px rgba(0, 0, 0, .125), 0 1px 3px rgba(0, 0, 0, .1);\n}\n\n.wpstg-clone.active {\n border-color: #1d94cf;\n}\n\n.wpstg-clone-header {\n display: flex;\n align-items: center;\n}\n\n.wpstg-clone-title {\n display: inline-block;\n margin-right: 8px;\n font-size: 15px;\n max-width: 300px;\n text-decoration: none;\n font-weight: bold;\n color: #3e3e3e;\n}\n\n.wpstg-clone-title:hover {\n color: #111111;\n}\n\n.wpstg-clone-labels {\n display: inline-block;\n}\n\n\n.wpstg-clone-labels .wpstg-clone-label {\n display: inline-block;\n padding: 1px 4px;\n margin-right: 4px;\n font-size: 11px;\n border-radius: 3px;\n background: #8bc34a;\n color: #fff;\n}\n\n.wpstg-clone-actions {\n margin-left: auto;\n display: flex;\n margin-top: 5px;\n}\n\n.wpstg-dropdown {\n position: relative;\n}\n\n.wpstg-clone-actions .wpstg-dropdown-toggler {\n text-decoration: none;\n background: #25a1f0;\n padding: 6px 10px;\n border-radius: 2px;\n font-size: 14px;\n box-shadow: 0 0 1px rgba(0, 0, 0, .125), 0 1px 3px rgba(0, 0, 0, .2);\n color: #ffffff;\n}\n\n.wpstg-clone-actions .wpstg-dropdown-toggler:hover {\n background: #002648;\n color: white;\n}\n\n.wpstg-dropdown {\n position: relative;\n}\n\n.wpstg-dropdown > .wpstg-dropdown-menu {\n background: #fff;\n display: none;\n flex-direction: column;\n position: absolute;\n right: 0;\n top: calc(100% + 4px);\n padding: 8px;\n border-radius: 2px;\n width: 100px;\n box-shadow: 0 0 1px rgba(0, 0, 0, .125), 0 1px 3px rgba(0, 0, 0, .2);\n z-index: 1000;\n}\n\n.wpstg-dropdown > .wpstg-dropdown-menu.wpstg-menu-dropup {\n top: auto;\n bottom: 100%;\n transform: translate3d(0px, -3px, 0px);\n}\n\n.wpstg-dropdown > .wpstg-dropdown-menu.shown {\n display: flex;\n}\n\n.wpstg-clone-action,\n.wpstg-dropdown-action {\n color: #3e3e3e;\n padding: 6px 8px;\n border-radius: 3px;\n text-decoration: none;\n position: relative;\n transition: color .2s ease-in-out;\n border-bottom: 1px solid #f3f3f3;\n}\n\n.wpstg-clone-action:hover,\n.wpstg-dropdown-action:hover {\n background: rgba(0, 0, 0, 0.05);\n}\n\n.wpstg-dropdown-action {\n color: #3e3e3e;\n background: transparent;\n border: 0 solid black;\n outline: none;\n box-shadow: none;\n}\n\n.wpstg-remove-clone:hover {\n color: #E01E5A;\n}\n\n.wpstg-clone-action:last-child {\n border: none;\n}\n\n.wpstg-clone:hover .wpstg-clone-action {\n display: inline-block;\n}\n\n#wpstg-show-error-details:focus,\n#wpstg-workflow .wpstg-clone-action {\n outline: none;\n box-shadow: none;\n}\n\n.wpstg-link-btn {\n background: #45a1c9;\n color: #fff;\n display: inline-block;\n padding: 5px 10px;\n text-decoration: none;\n vertical-align: baseline;\n transition: all .2s ease-in-out;\n}\n\n.wpstg-link-btn:hover,\n.wpstg-link-btn:focus {\n color: #fff;\n outline: none;\n box-shadow: none;\n}\n\n#wpstg-workflow .wpstg-link-btn:active {\n vertical-align: baseline;\n}\n\n.wpstg-link-btn[disabled] {\n background: #777 !important;\n border-color: #555 !important;\n pointer-events: none;\n}\n\n#wpstg-cancel-cloning,\n#wpstg-cancel-cloning-update {\n margin-top: 5px;\n}\n\n#wpstg-cancel-cloning.success,\n#wpstg-cancel-cloning.success {\n background: #64dd58;\n border-color: #54bd4a;\n}\n\n#wpstg-error-wrapper,\n#wpstg-error-details {\n display: none;\n padding-top: 10px;\n font-size: 13px;\n clear: both;\n}\n\n#wpstg-show-error-details {\n display: inline-block;\n margin-left: 5px;\n color: #555;\n text-decoration: none;\n transition: color .2s ease-in-out;\n}\n\n#wpstg-show-error-details:hover {\n color: #1d94cf;\n}\n\n#wpstg-error-details {\n border-left: 5px solid #E01E5A;\n padding: 10px;\n width: 500px;\n}\n\n#wpstg-try-again {\n display: none;\n}\n\n#wpstg-home-link {\n float: right;\n}\n\n.wpstg-loader {\n content: url('../../img/loading.gif');\n display: none;\n}\n\n.wpstg-loader.wpstg-finished {\n display: block;\n content: \"Finished\";\n background-color: #00c89a;\n color: white;\n padding: 2px 10px;\n margin-top: 0;\n border-radius: 3px;\n}\n\n#wpstg-workflow {\n max-width: 800px;\n position: relative;\n clear: both;\n padding-top: 20px;\n float: left;\n min-width: 500px;\n min-height: 380px;\n padding-right: 20px;\n padding-bottom: 20px;\n}\n\n#wpstg-sidebar {\n float: left;\n max-width: 400px;\n display: block;\n margin-left: 10px;\n}\n\n#wpstg-workflow.loading::after,\n#wpstg-removing-clone.loading::after {\n background: rgba(255, 255, 255, .7);\n content: 'Loading... may take a while for huge websites';\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n padding-top: 100px;\n text-align: center;\n position: absolute;\n top: 0;\n left: 0;\n z-index: 99;\n}\n\n#wpstg-removing-clone.loading::after {\n content: 'REMOVING' !important;\n}\n\n#wpstg-existing-clones,\n#wpstg-removing-clone {\n position: relative;\n}\n\n#wpstg-existing-clones h3 {\n color: #3e3e3e;\n}\n\n#wpstg-removing-clone .wpstg-tab-section {\n display: block;\n}\n\n.wpstg-progress-bar {\n max-width: 900px;\n height: 27px;\n padding: 0;\n background-color: #d6d8d7;\n}\n\n.wpstg-progress {\n float: left;\n background: #3fa5ee;\n width: 0;\n height: 100%;\n transition: width .6s ease;\n color: white;\n line-height: 25px;\n text-align: center;\n overflow: hidden;\n}\n\n.wpstg-progress-files {\n background: #16b4f0;\n width: 0;\n height: 100%;\n transition: width .6s ease;\n color: white;\n line-height: 25px;\n text-align: center;\n}\n\n#wpstg-new-clone-id.wpstg-error-input,\n#wpstg-clone-path.wpstg-error-input {\n border: 1px solid #E01E5A;\n box-shadow: 0 0 2px rgba(255, 66, 53, .8);\n}\n\n#wpstg-new-clone-id {\n width: 450px;\n max-width: 100%;\n margin-left: 15px;\n}\n\n#wpstg-new-clone {\n background: #25a1f0;\n border-color: #2188c9;\n}\n\n#wpstg-new-clone:hover {\n background: #259be6;\n border-color: #2188c9;\n}\n\n#wpstg-clone-path {\n margin-left: 10px;\n width: 350px;\n}\n\n.wpstg-error-msg {\n color: #E01E5A;\n}\n\n#wpstg-clone-id-error {\n display: block;\n background-color: #f0f8ff;\n padding: 10px;\n margin: 20px;\n}\n\n#wpstg-start-cloning + .wpstg-error-msg {\n display: block;\n margin-top: 5px;\n}\n\n.wpstg-size-info {\n color: #999;\n font-weight: normal;\n position: relative;\n left: 2px;\n}\n\n.wpstg-db-table .wpstg-size-info {\n top: 2px;\n}\n\n.wpstg-db-table:hover {\n background-color: #f0f8ff;\n}\n\n#wpstg-workflow #wpstg-start-cloning {\n margin-left: 5px;\n vertical-align: baseline;\n}\n\n\n/* Tabs */\n\n.wpstg-tabs-wrapper {\n max-width: 640px;\n margin: 10px 0;\n}\n\n#wpstg-path-wrapper {\n border-bottom: 2px dashed #ccc;\n padding-bottom: 10px;\n margin-bottom: 10px;\n}\n\n.wpstg-tab-section {\n border-bottom: 1px solid #ddd;\n border-right: none;\n border-left: none;\n display: none;\n width: calc(100% - 72px);\n padding: 0px 36px;\n}\n\n.wpstg-tab-section::after {\n display: block;\n content: '';\n clear: both;\n}\n\n.wpstg-tab-header {\n border-bottom: 1px solid #ddd;\n border-right: none;\n border-left: none;\n color: #444;\n font-size: 16px;\n font-weight: bold;\n display: block;\n padding: 10px;;\n text-decoration: none;\n}\n\n.wpstg-tab-triangle {\n display: inline-block;\n margin-right: 12px;\n animation: transform 0.5s;\n width: 0;\n height: 0;\n margin-top: -3px;\n vertical-align: middle;\n border-top: 5px solid transparent;\n border-bottom: 5px solid transparent;\n border-left: 10px solid;\n transition: transform 0.2s;\n cursor: pointer;\n}\n\n.wpstg-tab-triangle.wpstg-no-icon {\n margin-right: 2px;\n width: auto;\n height: auto;\n vertical-align: auto;\n border-top: 0px solid;\n border-bottom: 0px solid;\n border-left: 0px solid;\n}\n\n.wpstg-tab-triangle.wpstg-rotate-90 {\n transform: rotate(90deg);\n}\n\n.wpstg-tab-header:focus {\n color: #444;\n outline: none;\n box-shadow: none;\n}\n\n#wpstg-large-files {\n display: none;\n border: 1px dashed #ccc;\n padding: 10px 10px 10px;\n margin-top: 20px;\n position: relative;\n font-size: 12px;\n}\n\n#wpstg-large-files h3 {\n background: #fff;\n margin: 0;\n padding: 0 5px;\n position: absolute;\n top: -10px;\n left: 5px;\n}\n\n.wpstg-subdir {\n display: none;\n margin-left: 20px;\n}\n\n.wpstg-subdir.wpstg-push {\n display: block;\n margin-left: 20px;\n}\n\n.wpstg-dir a.disabled {\n color: #888;\n cursor: default;\n text-decoration: none;\n}\n\n.wpstg-check-subdirs {\n display: inline-block;\n margin-left: 10px;\n}\n\n.wpstg-notice-alert {\n display: block;\n background-color: #E01E5A;\n padding: 20px;\n max-width: 600px;\n margin-top: 10px;\n color: white;\n}\n\n.wpstg-notice--white {\n display: block;\n background-color: #ffffff;\n padding: 20px;\n max-width: 600px;\n margin-top: 10px;\n}\n\n.wpstg-notice-alert a {\n color: white;\n}\n\n.wpstg-notice-alert h3 {\n color: white;\n}\n\n.wpstg-header {\n font-weight: 400;\n line-height: 1.6em;\n font-size: 19px;\n /*\n border-bottom: 1px solid #DFDFDF;\n */\n clear: both;\n padding-top: 10px;\n}\n\n#wpstg-clone-label {\n font-size: 14px;\n font-weight: bold;\n}\n\n.wpstg-log-details {\n height: 300px;\n overflow: scroll;\n max-width: 650px;\n font-family: monospace;\n font-size: 12px;\n line-height: 15px;\n border: 1px solid #FFF;\n background-color: black;\n color: #c0c0c0;\n padding: 3px;\n white-space: nowrap;\n margin-top: 15px;\n}\n\n#wpstg-finished-result {\n display: none;\n}\n\n#wpstg-remove-cloning {\n background: #ff3428;\n border-color: #e72f24;\n margin-top: 5px;\n}\n\n#wpstg-success-notice {\n padding: 10px;\n background-color: white;\n max-width: 900px;\n border: 1px solid #ccc;\n margin-top: 20px;\n}\n\n.wpstg_beta_notice {\n margin-bottom: 20px;\n}\n\n.wpstg-sysinfo {\n width: 700px;\n height: 700px;\n}\n\n.wpstg-form-table .col-title label {\n font-weight: 600;\n}\n\n.wpstg-form-table td:first-child {\n width: 30%;\n padding-right: 20px;\n}\n\n.wpstg-share-button-container {\n margin: 5px 0;\n}\n\n.wpstg-share-button-container p {\n margin: 0 0 10px 0;\n}\n\n.wpstg-share-button {\n display: inline-block;\n}\n\n.wpstg-share-button a {\n text-decoration: none;\n}\n\n.wpstg-share-button .wpstg-share {\n font-family: sans-serif;\n font-weight: bold;\n text-decoration: none;\n text-align: center;\n}\n\n.wpstg-share-button .wpstg-share {\n -webkit-border-radius: 2px;\n -moz-border-radius: 2px;\n border-radius: 2px;\n color: #FFF;\n display: inline;\n font-size: 12px;\n padding: 4px 8px;\n}\n\n.wpstg-share-button-twitter .wpstg-share {\n background-color: #00ABF0;\n}\n\n.wpstg-share-button-facebook .wpstg-share {\n background-color: #3b5998;\n}\n\n.wpstg-share-button-googleplus .wpstg-share {\n background-color: #F53424;\n}\n\n.wpstg-share-button-twitter .share:active,\n.wpstg-share-button-facebook .share:active,\n.wpstg-share-button-googleplus .share:active {\n background-color: #353535;\n}\n\n#wpstg-check-space {\n margin-left: 8px;\n}\n\n#wpstg-welcome li {\n font-size: 18px;\n line-height: 29px;\n position: relative;\n padding-left: 23px;\n list-style: none !important;\n}\n\n#wpstg-welcome {\n margin-top: 20px;\n margin-right: 20px;\n background-color: white;\n}\n\n.wpstg-heading-pro {\n font-weight: bold;\n}\n\n.wpstg-h2 {\n margin-top: 0;\n margin-bottom: 1.2rem;\n font-size: 30px;\n line-height: 2.5rem;\n}\n\n#wpstg-welcome li:before {\n width: 1em;\n height: 100%;\n background: url(data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%2377B227%22%20d%3D%22M1671%20566q0%2040%2D28%2068l%2D724%20724%2D136%20136q%2D28%2028%2D68%2028t%2D68%2D28l%2D136%2D136%2D362%2D362q%2D28%2D28%2D28%2D68t28%2D68l136%2D136q28%2D28%2068%2D28t68%2028l294%20295%20656%2D657q28%2D28%2068%2D28t68%2028l136%20136q28%2028%2028%2068z%22%2F%3E%3C%2Fsvg%3E) left .4em no-repeat;\n background-size: contain;\n content: \"\";\n position: absolute;\n top: -2px;\n left: 0;\n color: #77b227;\n}\n\n.wpstg-h1 {\n margin-bottom: 1.35rem;\n font-size: 2.5em;\n line-height: 3.68rem;\n letter-spacing: normal;\n}\n\n.wpstg--swal2-content {\n color: #3e3e3e;\n}\n\n.wpstg--swal2-content h1 {\n color: #444;\n}\n\n#wpstg-welcome h2 {\n margin: 0 0 15px;\n}\n\n#wpstg-welcome .wpstg-footer {\n clear: both;\n margin-top: 20px;\n font-style: italic;\n}\n\n#wpstg-footer {\n clear: both;\n margin-top: 20px;\n margin-right: 10px;\n padding-top: 50px;\n}\n\n#wpstg-footer a {\n text-decoration: none;\n}\n\n#wpstg-footer li {\n margin-bottom: 2px;\n list-style: circle;\n}\n\n#wpstg-footer ul {\n margin-left: 15px;\n margin-top: 0px;\n}\n\n.wpstg-footer--title {\n margin-left: 15px;\n}\n\n.wpstg-staging-info {\n margin-top: 8px;\n color: #3e3e3e;\n font-size: 12px;\n}\n\n.wpstg-staging-info a {\n color: #3e3e3e;\n}\n\n.wpstg-staging-info li {\n margin-bottom: 2px;\n}\n\n.wpstg-bold {\n font-weight: 600;\n}\n\n#wpstg-processing-status {\n margin-top: 5px;\n font-size: 13px;\n font-weight: 400;\n float: left;\n}\n\n#wpstg-processing-timer {\n margin-top: 5px;\n font-size: 13px;\n font-weight: 400;\n float: right;\n}\n\n#wpstg-report-issue-button {\n margin-left: 30px;\n border: 1px solid #E01E5A;\n color: #E01E5A;\n background-color: white;\n}\n\n#wpstg-report-issue-button:hover {\n background-color: #dc2b62;\n color: #fff;\n}\n\n.wpstg-blue-primary {\n display: inline-block;\n text-decoration: none;\n font-size: 13px;\n height: 28px;\n margin: 0;\n /*\n padding: 0 10px 1px;\n */\n cursor: pointer;\n border-width: 1px;\n border-style: solid;\n -webkit-appearance: none;\n border-radius: 3px;\n white-space: nowrap;\n box-sizing: border-box;\n background: #25a1f0;\n border-color: #2188c9;\n color: #fff;\n /*\n text-shadow: 0 -1px 1px #006799, 1px 0 1px #006799, 0 1px 1px #006799, -1px 0 1px #006799;\n */\n}\n\n.wpstg-blue-primary:hover {\n background: #127fc6;\n}\n\na.wpstg-blue-primary {\n padding: 5px 10px;\n height: auto;\n}\n\n.wpstg-blue-primary:hover {\n background-color: #259be6;\n}\n\n.wpstg-report-issue-form {\n position: absolute;\n z-index: 999;\n width: 300px;\n background-color: #fff;\n padding: 15px 15px 10px;\n border: 1px solid #e8e8e8;\n border-radius: 3px;\n box-shadow: 0 1px 0 0 #fff inset;\n display: none;\n right: 0;\n top: 35px;\n}\n\n@media (max-width: 600px) {\n .wpstg-report-issue-form {\n position: relative;\n }\n}\n\n.wpstg-report-show {\n display: block;\n}\n\n.wpstg-field input[type=text],\n.wpstg-field textarea {\n width: 100%;\n font-weight: 400;\n line-height: 1.4;\n margin-bottom: 4px;\n}\n\n.wpstg-report-email,\n.wpstg-report-hosting-provider {\n width: 100%;\n font-weight: 400;\n font-size: .8rem;\n height: 2.3rem;\n line-height: 2.3rem;\n border-radius: 3px;\n margin-bottom: 4px;\n padding: 0 10px;\n}\n\n.wpstg-report-description {\n border-radius: 3px;\n font-size: .8rem;\n padding: 6px 10px;\n resize: none;\n}\n\n.wpstg-report-privacy-policy {\n font-size: 12px;\n margin-bottom: 15px;\n}\n\n#wpstg-report-cancel {\n float: right;\n margin-right: 5px;\n font-weight: bold;\n}\n\n#wpstg-success-button {\n font-weight: bold;\n}\n\n.wpstg-message {\n box-sizing: border-box;\n -moz-box-sizing: border-box;\n background-color: #f5e0de;\n border-radius: 3px;\n color: rgba(0, 0, 0, .6);\n height: auto;\n margin: 10px 0;\n min-height: 18px;\n padding: 6px 10px;\n position: relative;\n}\n\n.wpstg-message.wpstg-error-message {\n background-color: #f5e0de;\n color: #b65147;\n font-size: 12px;\n}\n\n.wpstg-message.wpstg-success-message {\n background-color: #d7f8e0;\n color: #515151;\n}\n\n.wpstg-message p {\n margin: 3px 0;\n font-size: 13px;\n}\n\n.wpstg-warning {\n display: block;\n padding: 10px;\n background-color: #ffb804;\n color: #ffffff;\n margin: 10px 10px 10px 0;\n}\n\n.wpstg-warning a {\n color: #ffffff;\n font-weight: bold;\n text-decoration: underline;\n}\n\n.wpstg-error {\n display: block;\n padding: 10px !important;\n background-color: #E01E5A !important;\n color: #ffffff;\n margin: 10px 10px 10px 0 !important;\n border-color: transparent !important;\n border-left-color: transparent !important;\n box-shadow: none !important;\n}\n\n.wpstg-error a {\n color: #ffffff;\n font-weight: bold;\n text-decoration: underline;\n}\n\n#wpstg-resume-cloning {\n display: none;\n}\n\n#wpstg-external-db th {\n text-align: left;\n width: 120px;\n}\n\n#wpstg-db-connect {\n font-weight: normal;\n}\n\n#wpstg-db-status {\n display: block;\n margin-top: 5px;\n padding: 5px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n border-radius: 4px;\n text-decoration: none;\n text-align: center;\n}\n\n.wpstg-text-field > #wpstg-db-status {\n margin-top: 8px;\n margin-left: 150px;\n min-width: 300px;\n}\n\n.wpstg-success {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #d6e9c6;\n}\n\n.wpstg-failed {\n color: #a94442;\n background-color: #f2dede;\n border-color: #ebccd1;\n}\n\n#wpstg_select_tables_cloning {\n height: 600px;\n font-size: 13px;\n}\n\n#wpstg_select_tables_pushing {\n height: 400px;\n font-size: 13px;\n}\n\n#wpstg-update-notify {\n background-color: #E01E5A;\n font-size: 14px;\n color: #ffffff;\n line-height: normal;\n padding: 10px;\n}\n\n#wpstg-update-notify a {\n color: #ffffff;\n font-weight: bold;\n}\n\n.wpstg-pointer {\n cursor: pointer;\n}\n\n.wpstg--tab--header {\n background-color: white;\n /* margin-bottom: 10px; */\n /* padding: 16px; */\n position: relative;\n transition: border-color .2s ease-in-out;\n background-color: #ffffff;\n color: #3e3e3e;\n border-radius: 2px;\n box-shadow: 0 0 1px rgba(0, 0, 0, .125), 0 1px 3px rgba(0, 0, 0, .02);\n}\n\n.wpstg--tab--header ul {\n display: flex;\n}\n\n.wpstg--tab--header ul li {\n margin-right: 1em;\n margin-bottom: 0px;\n}\n\n.wpstg--tab--header ul li:last-child {\n margin-right: 0;\n}\n\n.wpstg--tab--header a {\n min-width: 150px;\n text-align: center;\n cursor: pointer;\n display: inline-block;\n padding: 1em 1.25em;\n padding-bottom: 9px;\n color: #c4c4c4;\n font-size: 18px;\n /*\n border: solid 1px;\n */\n}\n\n.wpstg--tab--header a.wpstg--tab--active {\n border-bottom: .4em solid #25A1F0;\n color: #25A1F0;\n}\n\n.wpstg--tab--header a:hover {\n background-color: #fefefe;\n border-bottom: 0.4em solid #25A1F0;\n color: #25A1F0;\n}\n\n.wpstg--tab--content {\n display: none;\n}\n\n.wpstg--tab--active {\n display: block;\n}\n\n.wpstg--text--strong,\n.wpstg--text--strong * {\n font-weight: bold !important;\n}\n\n.wpstg--text--danger {\n color: #a94442;\n}\n\n.wpstg--tooltip {\n position: relative;\n display: inline-block;\n margin-left: 5px;\n}\n\n.wpstg--tooltip.wpstg--tooltip-normal {\n margin-left: 0;\n border-bottom: 0;\n}\n\n.wpstg--tooltip .wpstg--tooltiptext {\n visibility: hidden;\n width: 300px;\n background-color: #ffffff;\n color: #505050;\n text-align: left;\n padding: 12px;\n border-radius: 3px;\n position: absolute;\n z-index: 1;\n -webkit-box-shadow: rgba(0, 0, 0, 0.16) 0px 1px 4px;\n -moz-box-shadow: rgba(0, 0, 0, 0.16) 0px 1px 4px;\n box-shadow: rgba(0, 0, 0, 0.16) 0px 1px 4px;\n font-weight: normal;\n}\n\n.wpstg--tooltiptext-backups {\n width: 120px;\n top: 100%;\n left: -150%;\n margin-left: -56px;\n margin-top: 4px;\n}\n\n.wpstg--tooltip.wpstg--exclude-rules--tooltip {\n border-bottom: 0px solid transparent;\n}\n\n.wpstg--tooltip.wpstg--exclude-rules--tooltip > .wpstg--tooltiptext {\n margin-top: 0px;\n margin-left: -150px;\n}\n\n/**\nTooltip top arrow\n */\n\n.wpstg--tooltip .wpstg--tooltiptext-backups::after {\n content: \" \";\n position: absolute;\n bottom: 100%;\n /* At the top of the tooltip */\n left: 50%;\n margin-left: 25px;\n border-width: 5px;\n border-style: solid;\n border-color: transparent transparent white transparent;\n}\n\n.wpstg--tooltip .wpstg--tooltiptext.has-top-arrow {\n margin-top: 6px;\n}\n\n.wpstg--tooltip .wpstg--tooltiptext.has-top-arrow::after {\n content: \" \";\n position: absolute;\n bottom: 100%;\n left: 50%;\n margin-left: -18px;\n border-width: 5px;\n border-style: solid;\n border-color: transparent transparent white transparent;\n}\n\n.wpstg--snaphot-restore-table tr {\n line-height: 12px;\n}\n\n.wpstg-float-left {\n float: left;\n}\n\n.wpstg-beta-notice {\n background-color: #b0e8b0;\n border-radius: 3px;\n padding: 7px;\n margin-bottom: 20px;\n}\n\n#wpstg-backup-name {\n font-size: 1.875em;\n font-weight: 600;\n}\n\n#wpstg_select_tables_cloning option:checked,\n#wpstg_select_tables_pushing option:checked {\n /* Cannot use background color here because Chrome and Firefox ignore it even if set to !important */\n -webkit-appearance: menulist-button;\n background-image: linear-gradient(0deg, #1e90ff 0%, #1e90ff 100%);\n}\n\n.wpstg--btn--cancel {\n background: #ff3428;\n border-color: #e72f24;\n color: #fff;\n height: auto;\n line-height: normal;\n font-size: 16px;\n padding: .5em;\n margin-bottom: 1.5em;\n}\n\n.wpstg--btn--cancel:hover {\n background: #ff3428;\n border-color: #e72f24;\n}\n\n.wpstg--process--content > .wpstg--swal2-html-container {\n padding: 4em 2em !important;\n}\n\n.wpstg--modal--process--logs,\n.wpstg--modal--error--logs {\n background: #ffffff;\n border: 1px solid #a8a8a8;\n border-radius: 3px;\n height: 300px;\n margin-top: 1em;\n display: none;\n padding-top: 10px;\n padding-left: 10px;\n overflow: auto;\n text-align: justify;\n}\n\n.wpstg--modal--error--logs {\n height: auto;\n max-height: 300px;\n}\n\n.wpstg--modal--process--logs p {\n font-size: 12px;\n white-space: nowrap;\n}\n\n.wpstg--modal--process--logs p.wpstg--modal--process--msg--info {\n color: #222222;\n}\n\n.wpstg--modal--process--logs p.wpstg--modal--process--msg--debug {\n color: #757575;\n}\n\n.wpstg--modal--process--title {\n color: #565656;\n margin: .25em 0;\n}\n\n.wpstg--modal--process--subtitle {\n margin: .5em 0;\n color: #565656;\n}\n\n.wpstg--modal--error--logs > p {\n text-align: left;\n font-size: 14px;\n color: #222222;\n}\n\n.wpstg--modal--process--logs p,\n.wpstg--modal--error--logs p {\n margin: 0px;\n margin-bottom: 2px;\n}\n\n.wpstg--modal--process--msg--error {\n color: #E01E5A;\n}\n\n.wpstg--modal--process--msg--critical {\n color: #E01E5A;\n}\n\n.wpstg--modal--process--msg--warning {\n color: darkorange;\n}\n\n.wpstg--modal--process--msg-found {\n font-size: 16px;\n color: #E01E5A;\n font-weight: bold;\n}\n\n.wpstg--modal--delete {\n text-align: left;\n margin-top: 8px;\n color: #565656;\n}\n\n.wpstg-swal-popup .wpstg--swal2-cancel.wpstg--btn--cancel {\n margin-bottom: 0;\n text-shadow: none !important;\n}\n\n.wpstg-swal-popup .wpstg-loader {\n display: inline-block !important;\n}\n\n.wpstg--modal--process--generic-problem {\n display: none;\n border-left: 5px solid #E01E5A;\n margin: .5em 0;\n}\n\n.wpstg--modal--process--logs--tail {\n font-size: 16px;\n color: #565656;\n background: none;\n border: none;\n cursor: pointer;\n text-decoration: underline;\n}\n\n.wpstg--modal--backup--import--upload--title {\n color: #3e3e3e;\n}\n\n.wpstg--modal--backup--import--configure,\n.wpstg--modal--backup--import--upload--status,\n.wpstg--modal--backup--import--upload--container input[type=\"file\"] {\n display: none;\n}\n\n#wpstg--backups--import--file-list {\n font-size: 14px;\n font-weight: bold;\n}\n\n#wpstg--backups--import--file-list-empty {\n color: #E01E5A;\n}\n\n.wpstg--modal--backup--import--filesystem label {\n font-size: 14px;\n}\n\n.wpstg--modal--backup--import--filesystem button {\n margin-bottom: 20px;\n}\n\n.wpstg--modal--backup--import--upload {\n position: relative;\n min-height: 30px;\n}\n\n.wpstg--modal--backup--import--upload {\n color: #505050;\n}\n\n.wpstg--modal--backup--import--upload--container {\n position: relative;\n border-radius: 10px;\n margin: .5em;\n padding: 1em .5em;\n border: 3.5px dashed #dedede;\n transition: background-color 0.3s ease, color 0.3s ease;\n background-color: #f4fbff;\n min-height: 130px;\n}\n\n.wpstg--modal--backup--import--upload--container.wpstg--has-dragover span.wpstg--drop {\n display: inline-flex;\n}\n\n.wpstg--modal--backup--import--upload--container input[type='file'] {\n display: none;\n}\n\n.wpstg--modal--backup--import--upload--container img {\n margin-top: 10px;\n width: 4em;\n align-self: center;\n border: none;\n}\n\n.wpstg--modal--backup--import--upload--container span {\n margin-top: 1em;\n}\n\n.wpstg--backup--import--options > button {\n margin-top: 1em;\n padding: 1em;\n align-self: center;\n width: 185px;\n height: auto;\n line-height: normal;\n}\n\n.wpstg--backup--import--options {\n position: relative;\n display: flex;\n justify-content: center;\n}\n\n.wpstg--backup--import--options ul {\n display: none;\n}\n\n.wpstg--backup--import--options.wpstg--show-options ul {\n padding: 0;\n margin: 54px 0 0 0;\n display: block;\n position: absolute;\n width: 185px;\n background: #25a1f0;\n box-sizing: border-box;\n border-radius: 0 0 3px 3px;\n border-width: 1px;\n border-color: #2188c9;\n text-shadow: 0 -1px 1px #006799, 1px 0 1px #006799, 0 1px 1px #006799, -1px 0 1px #006799;\n}\n\n.wpstg--backup--import--options.wpstg--show-options ul li {\n border-bottom: .1em solid #25a1f0;\n margin: 0;\n}\n\n.wpstg--backup--import--options.wpstg--show-options ul li:hover {\n background-color: #25a1f0;\n}\n\n.wpstg--backup--import--options.wpstg--show-options ul li:last-child {\n border-bottom: none;\n}\n\n.wpstg--backup--import--options ul li button {\n cursor: pointer;\n background: none;\n border: none;\n margin: 0;\n width: 100%;\n color: white;\n height: 40px;\n line-height: 40px;\n}\n\n.wpstg--backup--import--options ul li button:hover {\n background-color: #259be6;\n}\n\n.wpstg--modal--backup--import--search-replace--info {\n margin: 1em 0;\n display: flex;\n flex-direction: row;\n}\n\n.wpstg--modal--backup--import--info p {\n text-align: left;\n margin: 0;\n}\n\n.wpstg--modal--backup--import--search-replace--wrapper button {\n align-self: center;\n}\n\n.wpstg--import--advanced-options--button {\n border: 0;\n border-radius: 3px;\n font-size: 18px;\n text-shadow: 0 -1px 1px #006799, 1px 0 1px #006799, 0 1px 1px #006799, -1px 0 1px #006799;\n cursor: pointer;\n}\n\n.wpstg--modal--backup--import--search-replace--new {\n color: white;\n background-color: #25a1f0;\n}\n\n.wpstg--modal--backup--import--search-replace--remove {\n color: white;\n background-color: #25a1f0;\n width: 22px;\n height: 22px;\n margin-left: 5px;\n}\n\n.wpstg--modal--backup--import--search-replace--input-group:first-child button {\n display: none;\n}\n\n.wpstg--modal--backup--import--search-replace--input--container {\n flex: 1;\n display: flex;\n flex-direction: column;\n}\n\n.wpstg--modal--backup--import--search-replace--input-group {\n width: 100%;\n border-bottom: 6px solid #f1f1f1;\n margin-bottom: 10px;\n}\n\n.wpstg--modal--backup--import--search-replace--input-group input {\n min-width: 250px;\n width: calc(50% - 4px - 11px - 5px); /* -4px is half of the padding; -11px is half of the button; -5 is the margin left of the button */\n display: inline-block;\n line-height: 10px;\n border: 1px solid #dedede;\n border-radius: 3px;\n color: #666;\n padding: 8px;\n margin-bottom: 12px;\n}\n\n.wpstg--modal--import--upload--process {\n display: none;\n position: relative;\n height: 30px;\n margin-top: 20px;\n margin-bottom: 20px;\n width: 100%;\n top: 0;\n left: 0;\n text-indent: 1em;\n white-space: nowrap;\n overflow: hidden;\n color: #333333;\n justify-content: center;\n align-items: center;\n}\n\n.wpstg--modal--import--upload--progress {\n position: absolute;\n background: #98d452;\n color: white;\n height: 100%;\n border-radius: 4px;\n left: 0;\n top: 0;\n}\n\n.wpstg--modal--import--upload--progress--title {\n z-index: 9;\n}\n\n.wpstg-fieldset:disabled {\n opacity: 0.8;\n border-top: 1px solid white;\n margin-top: 20px;\n}\n\n.wpstg-fieldset {\n padding-left: 20px;\n}\n\n.wpstg-fs-14 {\n font-size: 14px;\n}\n\n.wpstg-dark-alert {\n font-weight: bold;\n background-color: #0e86d9;\n padding: 15px;\n margin-top: 0px;\n color: white;\n}\n\n.wpstg-dark-alert .wpstg-button--cta-red {\n margin-left:10px;\n}\n\n.wpstg-form-group {\n display: block;\n width: 100%;\n margin-bottom: 8px;\n align-items: center;\n}\n\n.wpstg-form-group > label {\n display: block;\n font-weight: 700;\n}\n\n.wpstg-text-field > input {\n width: 300px;\n display: block;\n line-height: 1.5;\n}\n\n.wpstg-code-segment {\n display: block;\n}\n\n.wpstg-text-field > .wpstg-code-segment {\n margin-top: 4px;\n min-width: 300px;\n}\n\n.wpstg-form-group > .wpstg-checkbox {\n min-width: 100%;\n width: 100%;\n position: relative;\n}\n\n.wpstg-form-group > .wpstg-checkbox > input[type='checkbox'] {\n left: 150px;\n}\n\n.wpstg-rounded {\n border-radius: 3px;\n}\n\n.wpstg-white-border {\n border: 1px solid white !important;\n}\n\n.wpstg-ml-4 {\n margin-left: 4px;\n}\n\n#wpstg-confirm-backup-restore-data {\n margin: 40px;\n text-align: left;\n}\n\n#wpstg-advanced-settings hr {\n margin: 20px 0;\n}\n\n.wpstg-form-row {\n display: block;\n}\n\n.wpstg-form-row label,\n.wpstg-form-row input {\n display: table-cell;\n padding-left: 5px;\n padding-right: 5px;\n margin-top: 3px;\n margin-bottom: 3px;\n}\n\n.wpstg-form-row input {\n width: 400px;\n}\n\n.wpstg-form-row label {\n font-weight: bold;\n width: 1px;\n white-space: nowrap;\n}\n\n#wpstg-db-connect-output #wpstg-db-status {\n width: 390px;\n}\n\n.wpstg-fs-14 {\n font-size: 14px;\n}\n\n.wpstg-code-segment {\n display: block;\n}\n\n.wpstg-form-group > .wpstg-checkbox {\n min-width: 100%;\n width: 100%;\n}\n\n.wpstg-form-group > .wpstg-checkbox > input[type='checkbox'] {\n margin-left: 10px;\n}\n\n@media only screen and (max-width: 768px) {\n .wpstg-form-group > label {\n min-width: auto;\n width: auto;\n }\n\n .wpstg-text-field > input {\n width: 100%;\n }\n\n .wpstg-text-field > .wpstg-code-segment {\n margin-left: 0;\n min-width: 100%;\n }\n\n .wpstg-tab-section {\n width: calc(100vw - 60px);\n max-width: 450px;\n }\n}\n\n.wpstg-rounded {\n border-radius: 3px;\n}\n\n.wpstg-white-border {\n border: 1px solid white !important;\n}\n\n.wpstg-m-0 {\n margin: 0;\n}\n\n.wpstg-mt-10px {\n margin-top: 10px !important;\n}\n\n.wpstg-mr-10px {\n margin-right: 10px !important;\n}\n\n.wpstg-my-10px {\n margin-top: 10px !important;\n margin-bottom: 10px !important;\n}\n\n.wpstg-w-100 {\n width: 100%;\n}\n\n.wpstg-box-shadow {\n box-shadow: 0 1px 1px 0 rgba(0, 0, 0, .1);\n}\n\n.wpstg-float-left {\n float: left;\n}\n\n.wpstg-bold-text {\n font-weight: bold;\n}\n\n.wpstg-warning.notice {\n border-left: 4px solid #ffba00;\n}\n\n.wpstg-confirmation-label {\n background-color: #5b9dd9;\n color: #fff;\n padding: 2px;\n border-radius: 3px;\n}\n\n.wpstg-my-6px {\n margin-bottom: 6px;\n margin-top: 6px;\n}\n\n.wpstg-mb-10px {\n margin-bottom: 10px;\n}\n\n.wpstg-clear-both {\n clear: both;\n}\n\n.wpstg-font-italic {\n font-style: italic;\n}\n\n.wpstg-mt-20px {\n margin-top: 20px;\n}\n\n.wpstg-welcome-container {\n border: 2px solid white;\n padding: 20px;\n margin-bottom: 20px;\n}\n\n.wpstg-ml-30px {\n margin-left: 30px;\n}\n\n.wpstg-text-center {\n text-align: center;\n}\n\n.wpstg-feedback-link {\n text-decoration: none;\n}\n\n.wpstg-feedback-span {\n display: block;\n margin-bottom: 3px;\n}\n\n#wpstg-confirm-backup-restore-data {\n margin: 40px;\n text-align: left;\n}\n\n#wpstg-confirm-backup-restore-wrapper {\n margin: 30px;\n margin-top: 0;\n}\n\n#wpstg-confirm-backup-restore-wrapper h3 {\n color: #E01E5A;\n}\n\n#wpstg-progress-db,\n#wpstg-progress-backup {\n background-color: #3fa5ee;\n}\n\n#wpstg-progress-sr,\n#wpstg-progress-files.wpstg-pro {\n background-color: #3c9ee4;\n}\n\n#wpstg-progress-dirs,\n#wpstg-progress-data {\n background-color: #3a96d7;\n}\n\n#wpstg-progress-files:not(.wpstg-pro),\n#wpstg-progress-finishing {\n background-color: #378cc9;\n}\n\n.wpstg-issue-resubmit-confirmation.wpstg--swal2-container,\n.wpstg-swal2-container.wpstg--swal2-container {\n z-index: 10500;\n}\n\n.wpstg-swal2-container.wpstg-swal2-loading .wpstg--swal2-actions,\n.wpstg-swal2-container.wpstg-swal2-loading .wpstg--swal2-header {\n display: none;\n}\n\nbody.toplevel_page_wpstg_backup .wpstg--swal2-container .wpstg--swal2-content,\nbody.toplevel_page_wpstg_clone .wpstg--swal2-container .wpstg--swal2-content {\n z-index: 2;\n}\n\n.toplevel_page_wpstg_clone #swal2-content h2 {\n color: #3e3e3e;\n}\n\n.toplevel_page_wpstg_clone #swal2-content {\n line-height: 1.5em;\n}\n\ndiv#exportUploadsWithoutDatabaseWarning {\n font-style: italic;\n font-size: 0.9rem;\n margin: 10px;\n padding: 10px;\n border: 1px solid #e3e3e3;\n border-radius: 5px;\n text-align: center;\n background-color: #fafafa;\n}\n\n.wpstg-advanced-options-dropdown-wrapper {\n display: none; /* ENABLE WHEN WE HAVE ADVANCED OPTIONS FOR EXPORTING */\n margin-top: 20px;\n}\n\n.wpstg--modal--backup--import--search-replace--wrapper {\n text-align: left;\n margin-top: 20px;\n}\n\n.wpstg--modal--backup--import--search-replace--new--wrapper {\n text-align: center;\n}\n\n.wpstg-import-backup-contains li {\n display: inline-block;\n margin-bottom:0px;\n}\n\n.wpstg-import-backup-contains li .wpstg-backups-contains {\n border-radius: 3px;\n color: #979797;\n background-color: #f4f4f4 !important;\n width: 18px;\n height: 18px;\n font-size: 17px;\n}\n\n.wpstg-import-backup-contains.wpstg-listing-single-backup li .wpstg-backups-contains {\n padding: 2px;\n background-color: white;\n}\n\n.wpstg-import-backup-contains.wpstg-listing-single-backup li .wpstg-backups-contains > .wpstg--dashicons {\n filter: invert(35%);\n}\n\n.wpstg-import-backup-contains .wpstg--tooltiptext {\n width: 80px;\n font-size: 13px;\n padding: 5px;\n left: -25px;\n text-align: center;\n}\n\n.wpstg-import-backup-contains-title {\n display: inline-block;\n}\n\nul.wpstg-import-backup-contains {\n display: inline-block;\n}\n\n.wpstg-import-backup-name {\n display: inline-block;\n font-weight: bold;\n}\n\n.wpstg-backup-more-info-toggle {\n font-size: x-small;\n display: inline-block;\n font-style: italic;\n cursor: pointer;\n}\n\n.wpstg-backup-more-info-toggle::selection {\n background: none;\n}\n\nul.wpstg-import-backup-more-info {\n font-size: 14px;\n text-align: left;\n margin-bottom: 30px;\n margin-top: 10px;\n background-color: #f6f6f6;\n border: 1px solid #878787;\n border-radius: 3px;\n padding: 7px;\n cursor: pointer;\n}\n\nul.wpstg-import-backup-more-info:hover {\n background-color: #def2ff;\n border: 1px solid #25a1f0;\n}\n\nul.wpstg-import-backup-more-info li {\n height: 20px;\n}\n\n.wpstg-backup-list {\n max-width: 800px;\n}\n\n.wpstg-backup-list h3 {\n color:#3e3e3e;\n}\n\n.wpstg-backup-list ul ul {\n margin-block-start: 1em;\n margin-block-end: 1em;\n}\n\n.wpstg-push-confirmation-message {\n text-align: justify;\n font-size: 15px;\n}\n\n.wpstg-settings-row {\n padding-top: 10px;\n padding-bottom: 10px;\n}\n\n.wpstg-settings-title {\n font-weight: 600;\n}\n\n.wpstg-settings-form-group {\n display: flex;\n align-items: center;\n}\n\n.wpstg-settings-form-group > .wpstg-settings-message {\n width: 30%;\n padding: 0;\n margin: 7px 0 0;\n}\n\n/**\n * WP STAGING EXCLUSION RULES TABLE LAYOUT\n */\n\n.wpstg-excluded-filters-container {\n padding: 0;\n margin-top: 10px;\n margin-bottom: 10px;\n max-width: 100%;\n width: 100%;\n}\n\n.wpstg-excluded-filters-container > table {\n width: 100%;\n border-collapse: collapse;\n border-color: transparent;\n}\n\n.wpstg-excluded-filters-container td {\n padding-top: 4px;\n padding-bottom: 4px;\n height: 20px;\n}\n\n.wpstg-excluded-filters-container h4 {\n margin: 0;\n}\n\n.wpstg-exclude-filters-foot {\n display: flex;\n justify-content: flex-start;\n padding: 0;\n}\n\n/**\n * WP STAGING EXCLUSION RULE DROPDOWN STYLE\n */\n\n\n.wpstg-exclude-filter-dropdown > button:hover {\n background: #135e96;;\n border: 1px solid #135e96;;\n}\n\n.wpstg-exclude-filter-dropdown > .wpstg-dropdown-menu {\n width: 128px;\n}\n\n.wpstg-remove-exclude-rule {\n color: #fff !important;\n background-color: #e01e5a;\n border: 1px solid #e01e5a;\n width: 20px;\n height: 20px;\n border-radius: 10px;\n font-size: 24px;\n padding: 0;\n display: inline-flex;\n justify-content: center;\n outline: none;\n box-shadow: none;\n font-weight: 400;\n line-height: 0.7;\n margin-top: 5px;\n cursor: pointer;\n}\n\n.wpstg-remove-exclude-rule:hover {\n background-color: #E01E5A;\n border-color: #E01E5A;\n}\n\n.wpstg-code-block {\n margin-top: 4px;\n font-size: 1.2em;\n background: #f8f8f8;\n border-radius: 2px;\n}\n\n.wpstg-rule-info {\n background: #f8f8f8 !important;\n}\n\ncode.wpstg-code {\n display: inline-block;\n font-size: 11px;\n border: 1px solid #aaa;\n background: #fff;\n padding: 2px 4px;\n margin-bottom: 1px;\n color: #E01E5A;\n}\n\n.wpstg-exclusion-rule-info {\n color: #fff !important;\n background-color: #ffc107;\n border: 1px solid #ffc107;\n width: 14px;\n height: 14px;\n border-radius: 7px;\n font-size: 14px;\n padding: 0;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n outline: none;\n box-shadow: none;\n font-weight: 400;\n vertical-align: middle;\n}\n\n.wpstg-exclusion-rule-info:hover {\n background-color: #ffba0c;\n border: 1px solid #ffba0c;\n}\n\n/**\n * WP STAGING INPUTS EXCLUSION RULES\n */\n\n.wpstg-exclude-rule-input {\n font-size: 12px !important;\n padding: 2px 6px;\n box-shadow: none;\n outline: none !important;\n display: inline-block;\n font-weight: 400;\n line-height: 1.5;\n color: #222;\n border-radius: 0 !important;\n background-color: #fff;\n border: 1px solid #bbb;\n min-height: 24px !important;\n margin-top: 4px;\n margin-left: 4px;\n vertical-align: baseline !important;\n transition: all 0.3s cubic-bezier(.25, .8, .25, 1);\n width: 135px;\n}\n\n.wpstg-excluded-filters-container tbody > tr:last-child .wpstg-exclude-rule-input {\n margin-bottom: 4px;\n}\n\n.wpstg-exclude-rule-input:hover {\n border: 1px solid #999;\n}\n\n.wpstg-exclude-rule-input:focus {\n border: 1px solid #25A0F1 !important;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24) !important;\n}\n\n.wpstg-file-size-exclude-select,\n.wpstg-path-exclude-select {\n width: 135px;\n}\n\n.wpstg-file-size-exclude-select-small {\n width: 52px;\n}\n\n.wpstg-file-size-exclude-input {\n width: 75px;\n}\n\n.wpstg-staging-option-title {\n margin: 15px 0 0;\n}\n\n.wpstg-swal-push-container.wpstg--swal2-container {\n z-index: 9995;\n}\n\n#wpstg-scanning-files {\n padding-bottom: 5px;\n}\n\n#wpstg-scanning-files.wpstg-tab-section, #wpstg-scanning-db.wpstg-tab-section {\n padding-top: 10px;\n}\n\n.wpstg-reset-excludes-container {\n margin: 10px 0;\n}\n\n.wpstg-swal2-ajax-loader {\n width: 100%;\n height: 150px;\n overflow: hidden;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n@keyframes wpstg-loading-icon-anim {\n 0% {\n transform: rotate(0);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n\n.wpstg-swal2-ajax-loader > img {\n width: 64px;\n height: 64px;\n animation: wpstg-loading-icon-anim 1s infinite linear;\n -webkit-animation: wpstg-loading-icon-anim 1s infinite linear;\n}\n\n.wpstg-swal2-container .wpstg-tab-section {\n width: auto !important;\n}\n\n#wpstg-no-staging-site-results {\n margin-top: 10px;\n max-width: 375px;\n}\n\nli#wpstg-backup-no-results {\n max-width: 500px;\n}\n\nli#wpstg-backup-no-results div, #wpstg-no-staging-site-results div {\n display: inline-block;\n text-align: center;\n}\n\nli#wpstg-backup-no-results .wpstg--dashicons, #wpstg-no-staging-site-results .wpstg--dashicons {\n filter: invert(50%);\n position: absolute;\n margin-top: 1px;\n}\n\nli#wpstg-backup-no-results .no-backups-found-text, #wpstg-no-staging-site-results .no-staging-site-found-text {\n color: #5d5d5d;\n margin-left: 20px;\n}\n\n@media only screen and (max-width: 680px) {\n li#wpstg-backup-no-results div, #wpstg-no-staging-site-results div {\n width: 100%;\n }\n}\n\n#wpstg--modal--backup--download-inner p.wpstg-download-modal-text {\n font-size: 16px;\n color: #565656;\n}\n\n#wpstg--modal--backup--download-inner h2 {\n color: #565656;\n}\n\n.wpstg-backup-restore-contains-database,\n.wpstg-backup-restore-contains-files {\n display: none;\n}\n\n.wpstg-green-button {\n background: #8bc34a;\n border: 1px solid #78a93f;\n color: white;\n text-shadow: 0 -1px 1px #78a93f, 1px 0 1px #78a93f, 0 1px 1px #40c921, -1px 0 1px #78a93f;\n}\n\n.wpstg-green-button:hover {\n background: #78a93f;\n}\n\n.wpstg-is-dir-loading {\n position: absolute;\n margin-top: -2px;\n margin-left: 8px;\n display: none;\n}\n\n.wpstg-ml-8px {\n margin-left: 8px;\n}\n\n.wpstg-mb-8px {\n margin-bottom: 8px;\n}\n\n\n.wpstg-btn-danger {\n background-color: #E01E5A;\n border: 1px solid #E01E5A;\n color: white;\n text-shadow: none;\n}\n\n.wpstg-btn-danger:hover {\n background: #c0194d;\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);\n}\n\n.wpstg-swal2-container.wpstg-swal2-loading > .wpstg--swal2-modal {\n height: 200px;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container:not(.wpstg-swal2-loading) > .wpstg--swal2-modal {\n max-width: 480px;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container .wpstg--swal2-header {\n display: none;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container .wpstg--swal2-content {\n height: auto;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container > .wpstg--swal2-modal > .wpstg--swal2-content .wpstg-tabs-wrapper {\n overflow-y: auto;\n height: auto !important;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container > .wpstg--swal2-modal > .wpstg--swal2-content {\n font-size: 13px;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container > .wpstg--swal2-modal > .wpstg--swal2-content .wpstg-dir {\n margin-bottom: 4px;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container > .wpstg--swal2-modal > .wpstg--swal2-content .wpstg-subdir {\n margin-top: 4px;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container.has-collapsible-open .wpstg--swal2-modal {\n height: calc(100vh - 70px);\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container.has-collapsible-open > .wpstg--swal2-modal > .wpstg--swal2-content .wpstg-tabs-wrapper {\n height: calc(100vh - 350px) !important;\n}\n\n.wpstg--swal2-actions.wpstg--modal--actions > button {\n margin-left: 4px;\n margin-right: 4px;\n text-transform: uppercase;\n text-shadow: initial;\n font-weight: 500;\n min-width: 80px;\n}\n\n.wpstg-swal-popup {\n max-width: 1200px !important;\n}\n\n.wpstg-swal-popup.wpstg-push-finished .wpstg--swal2-title {\n color: #a8a8a8;\n}\n\n.wpstg-swal-popup.wpstg-push-finished .wpstg--swal2-content {\n margin-top: 8px;\n color: #a8a8a8;\n}\n\n.wpstg-swal-popup .wpstg--swal2-progress-steps .wpstg--swal2-progress-step.wpstg--swal2-active-progress-step,\n.wpstg-swal-popup .wpstg--swal2-progress-steps .wpstg--swal2-progress-step,\n.wpstg-swal-popup .wpstg--swal2-progress-steps .wpstg--swal2-progress-step-line {\n background: #25a1f0;\n}\n\n.wpstg-swal-popup .wpstg--swal2-progress-steps .wpstg--swal2-progress-step-line {\n width: 2.75em;\n}\n\n.wpstg--dashicons {\n width: 16px;\n height: 16px;\n}\n\n.wpstg--dashicons.wpstg-dashicons-grey {\n filter: invert(20%);\n}\n\n.wpstg--dashicons.wpstg-dashicons-19 {\n width: 19px;\n height: 19px;\n}\n\n.wpstg--dashicons.wpstg-dashicons-21 {\n width: 21px;\n height: 21px;\n}\n\n#wpstg--tab--backup #wpstg-step-1 {\n display: flex;\n align-items: center;\n}\n\n.wpstg-advanced-options .wpstg--tooltip,\n#wpstg--tab--backup #wpstg-step-1 .wpstg--tooltip {\n border-bottom: 0 solid transparent;\n display: inline-flex;\n align-items: center;\n}\n\n.wpstg-advanced-options-site .wpstg--tooltip img.wpstg--dashicons {\n filter: invert(17%) sepia(0%) saturate(1%) hue-rotate(195deg) brightness(97%) contrast(77%);\n}\n\n#wpstg--tab--backup #wpstg-step-1 .wpstg--tooltip {\n border-bottom: 0 solid transparent;\n display: flex;\n align-items: center;\n}\n\n.wpstg--tooltip .wpstg--tooltiptext-backups::after {\n left: calc(20% + 2px);\n}\n\n.wpstg-listing-single-backup .wpstg--dashicons {\n width: 17px;\n height: 17px;\n}\n\n.wpstg-100-width {\n width: 100px;\n}\n\n.wpstg-caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: 4px solid;\n border-right: 4px solid transparent;\n border-left: 4px solid transparent;\n transition: transform 0.2s;\n cursor: pointer;\n}\n\n.wpstg-caret.wpstg-caret-up {\n transform: rotate(-180deg);\n}\n\n.wpstg-advanced-options-site label {\n font-size: 16px;\n display: block;\n margin: .5em 0;\n}\n\n#wpstg-confirm-backup-restore-data {\n font-size: 18px;\n margin: 0;\n margin-top: 30px;\n}\n\n/* Sweetalert WP STAGING Theme */\n\nbody.toplevel_page_wpstg_backup .wpstg--swal2-container.wpstg--swal2-backdrop-show,\nbody.toplevel_page_wpstg_clone .wpstg--swal2-container.wpstg--swal2-backdrop-show {\n background: rgba(0, 0, 0, .6);\n z-index: 9995;\n}\n\n.wpstg-swal-popup.wpstg--swal2-popup {\n border-radius: 8px;\n z-index: 9999;\n padding: 24px;\n color: #3e3e3e;\n font-family: Verdana, Geneva, Tahoma, sans-serif;\n}\n\n.wpstg-swal-popup .wpstg--swal2-title {\n font-size: 22px;\n color: #3e3e3e;\n}\n\n.wpstg-swal-popup.wpstg--swal2-popup:not(.centered-modal) .wpstg--swal2-title {\n align-self: flex-start; /* For an actual Swal title */\n text-align: left; /* Manually adding this class to a non flex display */\n margin-bottom: 0;\n}\n\n.wpstg-swal-popup .wpstg--swal2-close {\n top: 8px;\n right: 8px;\n z-index: 5;\n}\n\n.wpstg-swal-popup .wpstg--swal2-close:focus {\n outline: none;\n}\n\n.wpstg-swal-popup.wpstg--swal2-popup:not(.centered-modal) .wpstg--swal2-actions {\n justify-content: flex-end;\n}\n\n.wpstg-swal-popup .wpstg--swal2-actions > button {\n border-radius: 4px;\n font-weight: 900;\n border: 0;\n font-size: 15px;\n padding: 10px 12px;\n text-transform: capitalize;\n line-height: normal;\n height: 40px;\n min-width: 100px;\n text-shadow: none;\n}\n\n.wpstg-swal-popup.wpstg--swal2-popup:not(.centered-modal) .wpstg--swal2-actions > button {\n margin-left: 8px;\n}\n\n.wpstg-swal-popup .wpstg--swal2-actions > button.wpstg--swal2-cancel {\n border: 1px solid rgba(29, 28, 29, 0.3);\n background: #fff;\n color: rgb(29, 28, 29);\n font-weight: 500;\n width: 100px;\n text-shadow: none;\n}\n\n.wpstg-swal-popup .wpstg--swal2-actions > button:hover {\n box-shadow: 0 1px 3px 0 rgba(0, 0, 0, .1);\n}\n\n.wpstg-swal-popup .wpstg--swal2-actions > button.wpstg--swal2-cancel:hover {\n background: rgba(28, 29, 28, .04);\n}\n\n#wpstg-backup-name-input {\n height: 44px;\n font-size: 18px;\n}\n\n.wpstg-restore-finished-container .wpstg--swal2-title {\n color: #565656 !important;\n}\n\n/*#wpstg-restore-success {\n color: #565656;\n}*/\n\n.wpstg-restore-finished-container .wpstg--swal2-content {\n margin-top: 20px;\n color: #a8a8a8;\n}\n\n/* WP Staging Implementation of Windows Style Linear Loader */\n\n.wpstg-linear-loader > span[class*=\"wpstg-linear-loader-item\"] {\n height: 6px;\n width: 6px;\n background: #333;\n display: inline-block;\n margin: 12px 2px;\n border-radius: 100%;\n animation: wpstg_linear_loader 3s infinite;\n animation-timing-function: cubic-bezier(0.030, 0.615, 0.995, 0.415);\n animation-fill-mode: both;\n}\n\n.wpstg-linear-loader > span.wpstg-linear-loader-item:nth-child(1) {\n animation-delay: 1s;\n}\n\n.wpstg-linear-loader > span.wpstg-linear-loader-item:nth-child(2) {\n animation-delay: 0.8s;\n}\n\n.wpstg-linear-loader > span.wpstg-linear-loader-item:nth-child(3) {\n animation-delay: 0.6s;\n}\n\n.wpstg-linear-loader > span.wpstg-linear-loader-item:nth-child(4) {\n animation-delay: 0.4s;\n}\n\n.wpstg-linear-loader > span.wpstg-linear-loader-item:nth-child(5) {\n animation-delay: 0.2s;\n}\n\n.wpstg-linear-loader > span.wpstg-linear-loader-item:nth-child(6) {\n animation-delay: 0s;\n}\n\n@keyframes wpstg_linear_loader {\n 0% {\n transform: translateX(-30px);\n opacity: 0;\n }\n 25% {\n opacity: 1;\n }\n 50% {\n transform: translateX(30px);\n opacity: 0;\n }\n 100% {\n opacity: 0;\n }\n}\n\n/* END - Windows Style Linear Loader */\n\n.wpstg--modal--backup--import--upload--content {\n padding: .75em;\n margin: 1em auto;\n}\n\n.wpstg--modal--backup--import--upload--content .wpstg-linear-loader {\n display: none;\n}\n\n#wpstg-multisite-disabled .wpstg-clone {\n width: 355px;\n}\n\n#wpstg-free-version-backups .wpstg-clone {\n text-align: center;\n}\n\n#wpstg-free-version-backups .wpstg-clone p {\n font-size: 16px;\n}\n\n.wpstg-staging-info li .backup-notes {\n word-break: break-word;\n}\n\n.wpstg--modal--import--upload--progress--title small {\n font-weight: normal;\n}\n\n#wpstg-report-issue-wrapper {\n position: relative;\n}\n\n#wpstg-report-issue-wrapper .arrow-up {\n width: 0;\n height: 0;\n border-left: 8px solid transparent;\n border-right: 8px solid transparent;\n border-bottom: 8px solid white;\n position: absolute;\n top: -8px;\n right: 40px;\n}\n\n.notice {\n margin: 10px 20px 0 2px;\n}\n\n.wpstg--notice {\n box-shadow: 0 1px 1px rgba(0, 0, 0, .04);\n margin: 20px 20px 20px 0px;\n padding: 1px 12px;\n}\n\n.wpstg--error a:hover {\n color: #eeeeee;\n}\n\n.wpstg--error, .wpstg--error a {\n background: #E01E5A;\n color: white;\n}\n\n/**\n * Buttons\n */\n\n.wpstg-button {\n display: inline-block;\n border-radius: 2px;\n cursor: pointer;\n padding: 2px 10px 2px 10px;\n text-transform: uppercase;\n font-weight: 500;\n outline: 0;\n transition: background-color .1s ease-in;\n text-decoration: none;\n}\n\n.wpstg-button.wpstg-save {\n background-color: #1687A7;\n color: white;\n}\n\n.wpstg-button.wpstg-save:hover {\n background-color: #276678;\n}\n\n\n.wpstg-button.wpstg-button-light {\n background-color: #f8f8f8;\n border: 1px solid #eee;\n color: #333;\n animation: background-color 0.3s;\n}\n\n.wpstg-button.wpstg-button-light:hover {\n background-color: #e0e0e0;\n border: 1px solid #e0e0e0;\n}\n\n.wpstg-buttons .spinner {\n float: none;\n margin: 0 0 0 5px;\n}\n\n.wpstg-button.danger {\n display: inline-block;\n text-decoration: none;\n text-align: center;\n text-transform: inherit;\n background-color: #E01E5A;\n color: white;\n border-radius: 2px;\n border-color: transparent;\n}\n\n.wpstg-button.danger:hover {\n background-color: #c0194d;\n}\n\n.wpstg-button--big {\n display: inline-block;\n padding: 10px;\n min-width: 170px;\n font-size: 16px;\n text-decoration: none;\n text-align: center;\n margin-top: 20px;\n color: white;\n border-radius: 3px;\n}\n\n.wpstg-button--primary {\n display: inline-block;\n text-decoration: none;\n font-size: 13px;\n line-height: 2.15384615;\n min-height: 30px;\n margin: 0;\n padding: 0 10px;\n cursor: pointer;\n border: 1px solid rgba(29, 28, 29, 0.3);\n -webkit-appearance: none;\n border-radius: 2px;\n white-space: nowrap;\n box-sizing: border-box;\n color: #171717;\n}\n\n.wpstg-button--primary:hover {\n background: rgba(28, 29, 28, .04);\n color: black;\n}\n\n.wpstg-button--secondary {\n display: inline-block;\n background-color: transparent;\n color: #95a5a6;\n border-radius: 2px;\n border: 1px solid rgba(29, 28, 29, 0.3);\n cursor: pointer;\n padding: 4px 10px 2px 10px;\n font-weight: 500;\n outline: 0;\n transition: background-color .1s ease-in;\n text-decoration: none;\n}\n\n.wpstg-button--red {\n background-color: #E01E5A;\n border-color: #E01E5A;\n color: white;\n}\n\n.wpstg-button--red:hover {\n background-color: #d02358;\n border-color: #e0255f;\n color: white;\n}\n\n.wpstg-button--cta-red {\n background-color: #fe008f;\n border-color: #E01E5A;\n color: white;\n}\n\n.wpstg-button--cta-red:hover {\n background-color: #f31391;\n border-color: #e0255f;\n color: white;\n}\n\n.wpstg-button--blue {\n background-color: #25A0F1;\n border-color: #25A0F1;\n color: white;\n}\n\n.wpstg-button--blue:hover {\n background-color: #259be6;\n border-color: #259be6;\n color: white;\n}\n\n#wpstg-button-backup-upgrade {\n font-size: 16px;\n}\n\n.wpstg-staging-status {\n color: #E01E5A;\n}\n\n#wpstg-push-changes,\n#wpstg-start-updating,\n#wpstg-save-clone-data {\n margin-left: 5px;\n}\n\ninput.wpstg-textbox {\n border: 1px solid #aaa;\n border-radius: .25rem;\n padding: 0.25rem 0.5rem;\n font-size: 14px;\n}\n\ninput.wpstg-textbox:focus {\n outline: 0;\n border-color: #259be6;\n -webkit-box-shadow: 0 0 0 0.1rem rgba(221, 221, 221, .35);\n box-shadow: 0 0 0 0.1rem rgba(221, 221, 221, .35);\n}\n\ninput.wpstg-textbox::placeholder {\n color: #888;\n}\n\n.wpstg--advance-settings--checkbox {\n display: flex;\n align-items: center;\n}\n\n.wpstg--advance-settings--checkbox > label {\n font-size: 14px;\n font-weight: bolder;\n width: 165px;\n display: inline-block;\n}\n\n.wpstg--advance-settings--checkbox > .wpstg--tooltip {\n margin-top: 5px;\n margin-left: 5px;\n position: relative;\n display: inline-block;\n border-bottom: 0px solid transparent;\n}\n\n.wpstg--advance-settings--checkbox > .wpstg--tooltip > .wpstg--tooltiptext {\n top: 18px;\n left: -150px;\n}\n\n\ndiv#wpstg-restore-wait {\n display: none;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n text-align: center;\n height: 100vh;\n width: 100vw;\n position: fixed;\n top: 0;\n left: 0;\n background: white;\n z-index: 99999;\n}\n\ndiv#wpstg-restore-wait .wpstg-title {\n font-weight: bold;\n}\n\ndiv#wpstg-restore-wait div {\n font-size: 16px;\n margin-top: 12px;\n}\n\n.resumable-browse {\n cursor: pointer;\n}\n\n.resumable-browse a {\n text-decoration: underline;\n}\n\n.wpstg-upload-text {\n font-weight: 600;\n}\n\n.wpstg--modal--backup--import--upload--container.dragover {\n transition: background-color 0.7s;\n background-color: #94dc96;\n color: #FFF;\n}\n\n.wpstg--modal--backup--import--upload--container.dragover * {\n pointer-events: none; /* Avoids flickering when dragging to drop a file */\n}\n\n.wpstg--modal--backup--import--upload--container.dragover .wpstg-upload-text {\n display: none;\n}\n\n.wpstg--modal--backup--import--upload--container.dragover .wpstg-dragover-text {\n display: block;\n}\n\n.wpstg--modal--backup--import--upload--container .wpstg-dragover-text {\n display: none;\n}\n\n#wpstg-invalid-license-message, #wpstg-invalid-license-message a {\n font-weight: 500;\n color: #E01E5A;\n margin-left: 6px;\n}\n\n#wpstg-sidebar--banner {\n max-width: 200px;\n}\n\n@media screen and (max-width: 1234px) {\n .wpstg-h2 {\n font-size: 24px;\n }\n\n #wpstg-welcome li {\n font-size: 14px;\n }\n}\n\n.wpstg-exclamation {\n color: #ffffff;\n border-radius: 100%;\n background-color: #E01E5A;\n width: 20px;\n height: 20px;\n text-align: center;\n font-weight: bold;\n display: inline-block;\n margin: 6px;\n}\n\n.wpstg--tab--contents {\n padding-top: 1px;\n}\n\n.wpstg-swal-show.wpstg--swal2-show {\n -webkit-animation: wpstg-swal-show 0.2s !important;\n animation: wpstg-swal-show 0.2s !important;\n}\n\n@-webkit-keyframes wpstg-swal-show {\n 0% {\n transform: scale(0.3);\n }\n 100% {\n transform: scale(1);\n }\n}\n\n@keyframes wpstg-swal-show {\n 0% {\n transform: scale(0.3);\n }\n 100% {\n transform: scale(1);\n }\n}\n\n.wpstg-tab-item--vert-center {\n display: flex;\n align-items: center;\n}\n\n.wpstg-db-comparison-modal {\n padding-left: 10px;\n padding-right: 10px;\n}\n\n.wpstg-db-comparison-table {\n font-size: 13px;\n width: 100%;\n}\n\n.wpstg-db-comparison-table tbody td {\n padding-top: 6px;\n}\n\n.wpstg-db-comparison-table tr > td:first-child,\n.wpstg-db-comparison-table tr > th:first-child {\n text-align: left;\n}\n\n.wpstg-css-tick {\n display: inline-block;\n transform: rotate(45deg);\n height: 12px;\n width: 6px;\n border-bottom: 3px solid #78b13f;\n border-right: 3px solid #78b13f;\n}\n\n.wpstg-css-cross {\n position: relative;\n top: -8px;\n left: -2px;\n width: 16px;\n height: 16px;\n}\n\n.wpstg-css-cross:before, .wpstg-css-cross:after {\n position: absolute;\n content: ' ';\n height: 17px;\n width: 3px;\n background-color: #E01E5A;\n}\n\n.wpstg-css-cross:before {\n transform: rotate(45deg);\n}\n\n.wpstg-css-cross:after {\n transform: rotate(-45deg);\n}\n\n.wpstg-selection-preview {\n font-size: 12px;\n margin-left: 20px;\n color: #3216;\n}\n\n.wpstg-selection-preview.danger {\n color: #E01E5A;\n}\n\n.wpstg--backup-automated {\n margin-bottom: -5px;\n}\n\n.wpstg--dismiss-schedule {\n cursor: pointer;\n}\n\n.wpstg-import-backup-contains.wpstg-listing-single-backup {\n vertical-align: middle;\n}\n\n.wpstg-import-backup-contains.wpstg-listing-single-backup li {\n padding:2px;\n}\n\n.wpstg--modal--backup--manage--schedules--content table {\n margin: 0 auto;\n width: 100%;\n}\n\n.wpstg--modal--backup--manage--schedules--title {\n text-align: left;\n margin-bottom: 10px;\n margin-top: 0px;\n}\n\n.wpstg--modal--backup--import--upload--title {\n text-align: center;\n}\n\n#wpstg--modal--backup--manage--schedules--content {\n text-align: left;\n}\n\n#wpstg--modal--backup--manage--schedules--content thead {\n font-weight: bold;\n}\n\n#wpstg--modal--backup--manage--schedules--content .wpstg--tooltip.wpstg--dismiss-schedule {\n border-bottom: none;\n}\n\n.wpstg--tooltip.wpstg--dismiss-schedule img.wpstg--dashicons {\n filter: invert(18%) sepia(57%) saturate(6238%) hue-rotate(332deg) brightness(93%) contrast(88%);\n}\n\n#wpstg--modal--backup--manage--schedules--content td {\n padding-right: 25px;\n padding-top: 10px;\n}\n\n#wpstg--modal--backup--manage--schedules--content ul {\n margin-top: 0;\n margin-bottom: 0;\n}\n\n#wpstg--modal--backup--manage--schedules--content ul li:first-child .wpstg--tooltip {\n margin-left:0;\n}\n\n.wpstg-button:disabled {\n background-color: #dddddd;\n text-shadow: none;\n color: #b3b3b3;\n border: 1px solid #cfcfcf;\n cursor: not-allowed;\n}\n\n#wpstg-backup-runs-info {\n margin: 0px;\n margin-top: 20px;\n padding:0px;\n font-size:12px;\n}\n\n#wpstg-backup-runs-info li {\n margin: 0px;\n}\n\ndiv#wpstg-backup-locked {\n width: 100%;\n max-width: calc(800px - 30px);\n padding: 15px;\n background: white;\n margin-bottom: 10px;\n display: flex;\n align-items: center;\n}\n\n#wpstg-backup-locked .icon {\n display: inline-block;\n height: 20px;\n}\n\n#wpstg-backup-locked .icon img {\n animation: wpstg-loading-icon-anim 2s infinite;;\n}\n\n#wpstg-backup-locked .text {\n display: inline-block;\n margin-left: 15px;\n}\n\n#backup-schedule-current-time {\n font-size: 12px;\n}\n\n.wpstg-backup-scheduling-options label {\n margin-top:17px;\n}\n\n.wpstg-backup-scheduling-options .wpstg-storage-option {\n display: block;\n margin: .5em 0;\n font-size: 15px;\n}\n\n.wpstg-storage-option>span:not(.wpstg-storage-settings) {\n width: 150px;\n display: inline-block;\n}\n\n.wpstg-storages-postbox {\n padding: 13px 16px;\n margin-top: 8px;\n margin-bottom: 8px;\n background-color: white;\n}\n\n.wpstg-storages-postbox a {\n padding: 8px;\n margin-right: 8px;\n text-decoration: none;\n font-weight: bold;\n color: #3c434a;\n}\n\n.wpstg-storages-postbox a:hover {\n color: #b70b72;\n}\n\n.wpstg-storage-postbox {\n padding: 4px 16px;\n background-color: white;\n}\n\n.wpstg-storages-postbox a.wpstg-storage-provider-active {\n background: #b70b72;\n color: white;\n font-weight: 700;\n cursor: default;\n border-radius:3px;\n}\n\n.wpstg-storages-postbox a.wpstg-storage-provider-active:hover {\n background: #a10a64;\n}\n\n.wpstg-storages-postbox a.wpstg-storage-provider-disabled {\n color: #999;\n cursor: not-allowed;\n}\n\n.wpstg-provider-revoke-form {\n display: inline;\n margin-top: 12px;\n margin-bottom: 12px;\n}\n\n.wpstg-provider-settings-form {\n margin-top: 10px;\n}\n\n.wpstg-provider-settings-form strong {\n display: block;\n margin: 8px 0;\n}\n\n.wpstg-provider-settings-form p {\n margin: 0;\n margin-bottom: 8px;\n}\n\n.wpstg-provider-settings-form fieldset {\n margin: 0;\n padding: 0;\n margin-bottom: 16px;\n}\n\n.wpstg-provider-settings-form fieldset p {\n margin: 0;\n padding: 5px;\n font-size: 12px;\n}\n\n.wpstg-provider-settings-form fieldset label {\n display: block;\n margin-bottom: 2px;\n}\n\n.wpstg-provider-settings-form fieldset input {\n font-size: 12px;\n}\n\n.wpstg-provider-settings-form .wpstg-link-btn.wpstg-blue-primary {\n text-shadow: none;\n}\n\n.wpstg-btn-google {\n font-family: Roboto;\n display: inline-flex;\n align-items: center;\n border-width: 0;\n outline: none;\n border-radius: 3px;\n box-shadow: 0 1px 3px rgba(0, 0, 0, .6);\n color: #555;\n transition: background-color .3s;\n padding: 8px;\n padding-right: 16px;\n height: 40px;\n line-height: 40px;\n font-size: 14px;\n box-sizing: border-box;\n text-decoration: none;\n font-weight: bold;\n margin-right: 10px;\n}\n\n.wpstg-btn-google img {\n width: 18px;\n height: 18px;\n margin-right: 12px;\n margin-left:5px;\n}\n\n#wpstg-custom-google-credentials {\n margin-top: 20px;\n}\n\n.wpstg-fieldset .wpstg-with-icon {\n display: inline-flex;\n align-items: center; \n}\n\n.wpstg-fieldset .wpstg-with-icon .wpstg-fieldset-icon {\n margin-left: 8px;\n}\n\n.wpstg-fieldset .wpstg-with-icon .wpstg-fieldset-icon img {\n width: 16px;\n height: 16px;\n}\n\n#wpstg-btn-provider-revoke {\n border-radius: 2px;\n}\n\n.wpstg-metabox-holder{\n border-radius: 8px;\n background: #fff;\n padding: 20px;\n margin-left: 16px;\n min-height: 600px;\n margin-right: 32px;\n margin-top: 60px;\n -webkit-box-shadow: 0 0 1px rgb(0 0 0 / 13%), 0 1px 3px rgb(0 0 0 / 10%);\n box-shadow: 0 0 1px rgb(0 0 0 / 13%), 0 1px 3px rgb(0 0 0 / 10%);\n}\n\n@media only screen and (max-width: 680px) {\n .wpstg-metabox-holder {\n padding: 0px;\n padding-top: 5px;\n margin-left: 0;\n margin-right: 5px;\n }\n\n #wpstg-tab-container .wpstg-settings-panel {\n padding: 0;\n overflow: auto;\n }\n\n .wpstg-form-table td:first-child {\n width: 50%;\n }\n}\n\n.wpstg-nav-tab {\n float: left;\n border: 1px solid #ffffff;\n border-bottom: none;\n margin-left: 0.5em;\n padding: 5px 10px;\n font-size: 14px;\n line-height: 1.71428571;\n font-weight: 600;\n background: #dcdcde;\n color: #3c434a;\n text-decoration: none;\n white-space: nowrap;\n}\n\n.wpstg-nav-tab-active, .wpstg-nav-tab-active:focus, .wpstg-nav-tab-active:focus:active, .wpstg-nav-tab-active:hover {\n border-bottom: 1px solid #f0f0f1;\n background: #f3f5f7;\n color: #b70b72;\n -webkit-box-shadow: -4px -13px 14px -12px rgb(0 0 0 / 16%);\n box-shadow: -4px -13px 14px -12px rgb(0 0 0 / 16%);\n}\n\n.wpstg-nav-tab-active {\n margin-bottom: -1px;\n}\n\n.wpstg-nav-tab-wrapper {\n /*\n border-bottom: 1px solid #c3c4c7;\n */\n margin: 0;\n padding-top: 9px;\n padding-bottom: 0;\n line-height: inherit;\n}\n\n.wpstg-nav-tab-wrapper li{\n margin-bottom: 0px;\n}\n\n#wpstg--js--translations {\n text-decoration: underline;\n}\n"]}
assets/css/dist/wpstg-admin.min.css CHANGED
@@ -1,2 +1,2 @@
1
- @font-face{font-family:Roboto;font-style:normal;font-weight:400;src:url(../../fonts/roboto-v29-latin-regular.eot);src:local(""),url(../../fonts/roboto-v29-latin-regular.eot?#iefix) format("embedded-opentype"),url(../../fonts/roboto-v29-latin-regular.woff2) format("woff2"),url(../../fonts/roboto-v29-latin-regular.woff) format("woff"),url(../../fonts/roboto-v29-latin-regular.ttf) format("truetype"),url(../../fonts/roboto-v29-latin-regular.svg#Roboto) format("svg")}.wpstg--violet{color:#9d37ae}.wpstg-border--violet{border:1px solid #9d37ae}.wpstg--red{color:#e01e5a}.wpstg-cta--red{color:#fe008f}.wpstg--blue{color:#24a1f0}.wpstg--darkblue{color:#0e86d9}.wpstg--green{color:#83c11f}.wpstg--grey{color:#3e3e3e}.wpstg--darkgrey{color:#1b1b1b}.wpstg--filter--svg{filter:invert(24%) sepia(11%) saturate(558%) hue-rotate(169deg) brightness(97%) contrast(91%)}body.toplevel_page_wpstg_clone,body.wp-staging-pro_page_wpstg-license,body.wp-staging-pro_page_wpstg-settings,body.wp-staging-pro_page_wpstg-tools,body.wp-staging-pro_page_wpstg_backup{background-color:#f3f5f7}#wpstg-tab-container ul{background:#f1f1f1;float:left;list-style:none;margin:0;padding:0}#wpstg-tab-container ul li:first-child.selected-tab{border-top:none}#wpstg-tab-container ul li a.selected-tab{font-weight:700;text-decoration:none}#wpstg-tab-container .row{padding-bottom:12px;padding-top:10px}.wpstg-tabs-container .nav-tab-wrapper{padding:0}#wpstg-tab-container .row label strong,#wpstg-tab-container .row strong{font-weight:700}.wpstg-tabs a{padding:5px}#wpstg-tab-container>ul>li.wpstg-tabs.active{background-color:#fff}#wpstg_settingsgeneral_header .row:nth-child(3),#wpstg_settingsgeneral_header .row:nth-child(4){display:none}#wpstg-tab-container .wpstg-settings-panel{overflow:auto;padding:0 20px 20px}#wpstg-tab-container .wpstg-form-table th{color:#484848;font-size:14px;font-weight:700;line-height:1.3;padding:20px 10px 20px 0;text-align:left;vertical-align:top;width:30%}#wpstg-tab-container .wpstg-form-table tr{border-bottom:1px solid #e7e7e7}#wpstg-tab-container span.description{color:#484848;display:block;font-size:13px;font-style:normal;font-weight:400;margin-top:7px}#wpstg-tab-container .col-title{color:#484848}@media only screen and (max-width:680px){#wpstg-tab-container ul{float:none}#wpstg-tab-container .wpstg-form-table tr>th{width:100%}#wpstg-tab-container span.description{font-size:14px}#wpstg-tab-container .wpstg-form-table tr>td,#wpstg-tab-container .wpstg-form-table tr>th{padding:10px}}#wpstg-tab-container ul li{margin-bottom:0}#wpstg-tab-container ul li a{border-bottom:1px solid #e7e7e7;border-left-style:solid;border-left-width:0;border-right-style:solid;border-right-width:0;border-top:1px solid #fff;color:#0097df;display:block;font-weight:700;padding:10px 4px 10px 14px;text-decoration:none}#wpstg-tab-container ul li a:hover{background-color:#e5e5e5;color:#777}.wpstg-logo{display:block;float:left;font-size:16px;padding-top:20px;width:220px}.wpstg-logo img{max-width:212px}.wpstg-version{color:#9b9b9b;display:block;padding-top:40px}.wpstg_admin .nav-tab{color:#3c3c3c}#wpstg-tab-container table tbody tr:first-child>th>div{font-size:20px}#wpstg-clonepage-wrapper{margin-bottom:20px;width:98%}@media screen and (min-width:1090px){#wpstg-clonepage-wrapper{float:left;margin-bottom:20px}}#wpstg-steps{margin-left:20px;margin-top:0}#wpstg-steps li{color:#444;float:left;line-height:20px;padding-right:10px}.wpstg-step-num{border:1px solid #3e3e3e;border-radius:3px;display:inline-block;height:20px;margin-right:5px;text-align:center;width:20px}.wpstg-current-step{font-weight:700}.wpstg-current-step .wpstg-step-num{background:#3e3e3e;color:#eee}.wpstg-box{margin:10px 0;overflow:hidden;padding:10px}.wpstg-box,.wpstg-clone{position:relative;transition:border-color .2s ease-in-out}.wpstg-clone{background-color:#fff;border-radius:3px;box-shadow:0 0 1px rgba(0,0,0,.125),0 1px 3px rgba(0,0,0,.1);color:#3e3e3e;margin-bottom:10px;padding:16px}.wpstg-clone.active{border-color:#1d94cf}.wpstg-clone-header{align-items:center;display:flex}.wpstg-clone-title{color:#3e3e3e;display:inline-block;font-size:15px;font-weight:700;margin-right:8px;max-width:300px;text-decoration:none}.wpstg-clone-title:hover{color:#111}.wpstg-clone-labels{display:inline-block}.wpstg-clone-labels .wpstg-clone-label{background:#8bc34a;border-radius:3px;color:#fff;display:inline-block;font-size:11px;margin-right:4px;padding:1px 4px}.wpstg-clone-actions{display:flex;margin-left:auto;margin-top:5px}.wpstg-clone-actions .wpstg-dropdown-toggler{background:#25a1f0;border-radius:2px;box-shadow:0 0 1px rgba(0,0,0,.125),0 1px 3px rgba(0,0,0,.2);color:#fff;font-size:14px;padding:6px 10px;text-decoration:none}.wpstg-clone-actions .wpstg-dropdown-toggler:hover{background:#002648;color:#fff}.wpstg-dropdown{position:relative}.wpstg-dropdown>.wpstg-dropdown-menu{background:#fff;border-radius:2px;box-shadow:0 0 1px rgba(0,0,0,.125),0 1px 3px rgba(0,0,0,.2);display:none;flex-direction:column;padding:8px;position:absolute;right:0;top:calc(100% + 4px);width:100px;z-index:1000}.wpstg-dropdown>.wpstg-dropdown-menu.wpstg-menu-dropup{bottom:100%;top:auto;transform:translate3d(0,-3px,0)}.wpstg-dropdown>.wpstg-dropdown-menu.shown{display:flex}.wpstg-clone-action,.wpstg-dropdown-action{border-bottom:1px solid #f3f3f3;border-radius:3px;color:#3e3e3e;padding:6px 8px;position:relative;text-decoration:none;transition:color .2s ease-in-out}.wpstg-clone-action:hover,.wpstg-dropdown-action:hover{background:rgba(0,0,0,.05)}.wpstg-dropdown-action{background:transparent;border:0 solid #000;box-shadow:none;color:#3e3e3e;outline:none}.wpstg-remove-clone:hover{color:#e01e5a}.wpstg-clone-action:last-child{border:none}.wpstg-clone:hover .wpstg-clone-action{display:inline-block}#wpstg-show-error-details:focus,#wpstg-workflow .wpstg-clone-action{box-shadow:none;outline:none}.wpstg-link-btn{background:#45a1c9;color:#fff;display:inline-block;padding:5px 10px;text-decoration:none;transition:all .2s ease-in-out;vertical-align:baseline}.wpstg-link-btn:focus,.wpstg-link-btn:hover{box-shadow:none;color:#fff;outline:none}#wpstg-workflow .wpstg-link-btn:active{vertical-align:baseline}.wpstg-link-btn[disabled]{background:#777!important;border-color:#555!important;pointer-events:none}#wpstg-cancel-cloning,#wpstg-cancel-cloning-update{margin-top:5px}#wpstg-cancel-cloning.success{background:#64dd58;border-color:#54bd4a}#wpstg-error-details,#wpstg-error-wrapper{clear:both;display:none;font-size:13px;padding-top:10px}#wpstg-show-error-details{color:#555;display:inline-block;margin-left:5px;text-decoration:none;transition:color .2s ease-in-out}#wpstg-show-error-details:hover{color:#1d94cf}#wpstg-error-details{border-left:5px solid #e01e5a;padding:10px;width:500px}#wpstg-try-again{display:none}#wpstg-home-link{float:right}.wpstg-loader{content:url(../../img/loading.gif);display:none}.wpstg-loader.wpstg-finished{background-color:#00c89a;border-radius:3px;color:#fff;content:"Finished";display:block;margin-top:0;padding:2px 10px}#wpstg-workflow{clear:both;float:left;max-width:800px;min-height:380px;min-width:500px;padding-bottom:20px;padding-right:20px;padding-top:20px;position:relative}#wpstg-sidebar{display:block;float:left;margin-left:10px;max-width:400px}#wpstg-removing-clone.loading:after,#wpstg-workflow.loading:after{background:hsla(0,0%,100%,.7);content:"Loading... may take a while for huge websites";display:block;font-size:20px;height:100%;left:0;padding-top:100px;position:absolute;text-align:center;top:0;width:100%;z-index:99}#wpstg-removing-clone.loading:after{content:"REMOVING"!important}#wpstg-existing-clones,#wpstg-removing-clone{position:relative}#wpstg-existing-clones h3{color:#3e3e3e}#wpstg-removing-clone .wpstg-tab-section{display:block}.wpstg-progress-bar{background-color:#d6d8d7;height:27px;max-width:900px;padding:0}.wpstg-progress{background:#3fa5ee;float:left;overflow:hidden}.wpstg-progress,.wpstg-progress-files{color:#fff;height:100%;line-height:25px;text-align:center;transition:width .6s ease;width:0}.wpstg-progress-files{background:#16b4f0}#wpstg-clone-path.wpstg-error-input,#wpstg-new-clone-id.wpstg-error-input{border:1px solid #e01e5a;box-shadow:0 0 2px rgba(255,66,53,.8)}#wpstg-new-clone-id{margin-left:15px;max-width:100%;width:450px}#wpstg-new-clone{background:#25a1f0;border-color:#2188c9}#wpstg-new-clone:hover{background:#259be6;border-color:#2188c9}#wpstg-clone-path{margin-left:10px;width:350px}.wpstg-error-msg{color:#e01e5a}#wpstg-clone-id-error{background-color:#f0f8ff;display:block;margin:20px;padding:10px}#wpstg-start-cloning+.wpstg-error-msg{display:block;margin-top:5px}.wpstg-size-info{color:#999;font-weight:400;left:2px;position:relative}.wpstg-db-table .wpstg-size-info{top:2px}.wpstg-db-table:hover{background-color:#f0f8ff}#wpstg-workflow #wpstg-start-cloning{margin-left:5px;vertical-align:baseline}.wpstg-tabs-wrapper{margin:10px 0;max-width:640px}#wpstg-path-wrapper{border-bottom:2px dashed #ccc;margin-bottom:10px;padding-bottom:10px}.wpstg-tab-section{border-bottom:1px solid #ddd;border-left:none;border-right:none;display:none;padding:0 36px;width:calc(100% - 72px)}.wpstg-tab-section:after{clear:both;content:"";display:block}.wpstg-tab-header{border-bottom:1px solid #ddd;border-left:none;border-right:none;color:#444;display:block;font-size:16px;font-weight:700;padding:10px;text-decoration:none}.wpstg-tab-triangle{animation:transform .5s;border-bottom:5px solid transparent;border-left:10px solid;border-top:5px solid transparent;cursor:pointer;display:inline-block;height:0;margin-right:12px;margin-top:-3px;transition:transform .2s;vertical-align:middle;width:0}.wpstg-tab-triangle.wpstg-no-icon{border-bottom:0 solid;border-left:0 solid;border-top:0 solid;height:auto;margin-right:2px;vertical-align:auto;width:auto}.wpstg-tab-triangle.wpstg-rotate-90{transform:rotate(90deg)}.wpstg-tab-header:focus{box-shadow:none;color:#444;outline:none}#wpstg-large-files{border:1px dashed #ccc;display:none;font-size:12px;margin-top:20px;padding:10px;position:relative}#wpstg-large-files h3{background:#fff;left:5px;margin:0;padding:0 5px;position:absolute;top:-10px}.wpstg-subdir{display:none;margin-left:20px}.wpstg-subdir.wpstg-push{display:block;margin-left:20px}.wpstg-dir a.disabled{color:#888;cursor:default;text-decoration:none}.wpstg-check-subdirs{display:inline-block;margin-left:10px}.wpstg-notice-alert{background-color:#e01e5a;color:#fff}.wpstg-notice--white,.wpstg-notice-alert{display:block;margin-top:10px;max-width:600px;padding:20px}.wpstg-notice--white{background-color:#fff}.wpstg-notice-alert a,.wpstg-notice-alert h3{color:#fff}.wpstg-header{border-bottom:1px solid #dfdfdf;clear:both;font-size:19px;font-weight:400;line-height:1.6em;padding-top:10px}#wpstg-clone-label{font-size:14px;font-weight:700}.wpstg-log-details{background-color:#000;border:1px solid #fff;color:silver;font-family:monospace;font-size:12px;height:300px;line-height:15px;margin-top:15px;max-width:650px;overflow:scroll;padding:3px;white-space:nowrap}#wpstg-finished-result{display:none}#wpstg-remove-cloning{background:#ff3428;border-color:#e72f24;margin-top:5px}#wpstg-success-notice{background-color:#fff;border:1px solid #ccc;margin-top:20px;max-width:900px;padding:10px}.wpstg_beta_notice{margin-bottom:20px}.wpstg-sysinfo{height:700px;width:700px}.wpstg-form-table .col-title label{font-weight:600}.wpstg-form-table td:first-child{width:30%}.wpstg-share-button-container{margin:5px 0}.wpstg-share-button-container p{margin:0 0 10px}.wpstg-share-button{display:inline-block}.wpstg-share-button a{text-decoration:none}.wpstg-share-button .wpstg-share{-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;color:#fff;display:inline;font-family:sans-serif;font-size:12px;font-weight:700;padding:4px 8px;text-align:center;text-decoration:none}.wpstg-share-button-twitter .wpstg-share{background-color:#00abf0}.wpstg-share-button-facebook .wpstg-share{background-color:#3b5998}.wpstg-share-button-googleplus .wpstg-share{background-color:#f53424}.wpstg-share-button-facebook .share:active,.wpstg-share-button-googleplus .share:active,.wpstg-share-button-twitter .share:active{background-color:#353535}#wpstg-check-space{margin-left:8px}#wpstg-welcome li{font-size:18px;line-height:29px;list-style:none!important;padding-left:23px;position:relative}#wpstg-welcome{background-color:#fff;margin-right:20px;margin-top:20px}.wpstg-heading-pro{font-weight:700}.wpstg-h2{font-size:30px;line-height:2.5rem;margin-bottom:1.2rem;margin-top:0}#wpstg-welcome li:before{background:url(data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%2377B227%22%20d%3D%22M1671%20566q0%2040%2D28%2068l%2D724%20724%2D136%20136q%2D28%2028%2D68%2028t%2D68%2D28l%2D136%2D136%2D362%2D362q%2D28%2D28%2D28%2D68t28%2D68l136%2D136q28%2D28%2068%2D28t68%2028l294%20295%20656%2D657q28%2D28%2068%2D28t68%2028l136%20136q28%2028%2028%2068z%22%2F%3E%3C%2Fsvg%3E) left .4em no-repeat;background-size:contain;color:#77b227;content:"";height:100%;left:0;position:absolute;top:-2px;width:1em}.wpstg-h1{font-size:2.5em;letter-spacing:normal;line-height:3.68rem;margin-bottom:1.35rem}.wpstg--swal2-content{color:#3e3e3e}.wpstg--swal2-content h1{color:#444}#wpstg-welcome h2{margin:0 0 15px}#wpstg-welcome .wpstg-footer{clear:both;font-style:italic;margin-top:20px}#wpstg-footer{clear:both;margin-right:10px;margin-top:20px;padding-top:50px}#wpstg-footer a{text-decoration:none}#wpstg-footer li{list-style:circle;margin-bottom:2px}#wpstg-footer ul{margin-left:15px;margin-top:0}.wpstg-footer--title{margin-left:15px}.wpstg-staging-info{color:#3e3e3e;font-size:12px;margin-top:8px}.wpstg-staging-info a{color:#3e3e3e}.wpstg-staging-info li{margin-bottom:2px}.wpstg-bold{font-weight:600}#wpstg-processing-status{float:left;font-size:13px;font-weight:400;margin-top:5px}#wpstg-processing-timer{float:right;font-size:13px;font-weight:400;margin-top:5px}#wpstg-report-issue-button{background-color:#fff;border:1px solid #e01e5a;color:#e01e5a;margin-left:30px}#wpstg-report-issue-button:hover{background-color:#dc2b62;color:#fff}.wpstg-blue-primary{-webkit-appearance:none;background:#25a1f0;border:1px solid #2188c9;border-radius:3px;box-sizing:border-box;color:#fff;cursor:pointer;display:inline-block;font-size:13px;height:28px;margin:0;padding:0 10px 1px;text-decoration:none;text-shadow:0 -1px 1px #006799,1px 0 1px #006799,0 1px 1px #006799,-1px 0 1px #006799;white-space:nowrap}a.wpstg-blue-primary{height:auto;padding:5px 10px}.wpstg-blue-primary:hover{background-color:#259be6}.wpstg-report-issue-form{background-color:#fff;border:1px solid #e8e8e8;border-radius:3px;box-shadow:inset 0 1px 0 0 #fff;display:none;padding:15px 15px 10px;position:absolute;right:0;top:35px;width:300px;z-index:999}@media (max-width:600px){.wpstg-report-issue-form{position:relative}}.wpstg-report-show{display:block}.wpstg-field input[type=text],.wpstg-field textarea{font-weight:400;line-height:1.4;margin-bottom:4px;width:100%}.wpstg-report-email,.wpstg-report-hosting-provider{border-radius:3px;font-size:.8rem;font-weight:400;height:2.3rem;line-height:2.3rem;margin-bottom:4px;padding:0 10px;width:100%}.wpstg-report-description{border-radius:3px;font-size:.8rem;padding:6px 10px;resize:none}.wpstg-report-privacy-policy{font-size:12px;margin-bottom:15px}#wpstg-report-cancel{float:right;font-weight:700;margin-right:5px}#wpstg-success-button{font-weight:700}.wpstg-message{background-color:#f5e0de;border-radius:3px;box-sizing:border-box;-moz-box-sizing:border-box;color:rgba(0,0,0,.6);height:auto;margin:10px 0;min-height:18px;padding:6px 10px;position:relative}.wpstg-message.wpstg-error-message{background-color:#f5e0de;color:#b65147;font-size:12px}.wpstg-message.wpstg-success-message{background-color:#d7f8e0;color:#515151}.wpstg-message p{font-size:13px;margin:3px 0}.wpstg-warning{background-color:#ffb804;color:#fff;display:block;margin:10px 10px 10px 0;padding:10px}.wpstg-warning a{color:#fff;font-weight:700;text-decoration:underline}.wpstg-error{background-color:#e01e5a!important;border-color:transparent!important;box-shadow:none!important;color:#fff;display:block;margin:10px 10px 10px 0!important;padding:10px!important}.wpstg-error a{color:#fff;font-weight:700;text-decoration:underline}#wpstg-resume-cloning{display:none}#wpstg-external-db th{text-align:left;width:120px}#wpstg-db-connect{font-weight:400}#wpstg-db-status{border:1px solid transparent;border-radius:4px;display:block;margin-bottom:20px;margin-top:5px;padding:5px;text-align:center;text-decoration:none}.wpstg-text-field>#wpstg-db-status{margin-left:150px;margin-top:8px;min-width:300px}.wpstg-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.wpstg-failed{background-color:#f2dede;border-color:#ebccd1;color:#a94442}#wpstg_select_tables_cloning{font-size:13px;height:600px}#wpstg_select_tables_pushing{font-size:13px;height:400px}#wpstg-update-notify{background-color:#e01e5a;color:#fff;font-size:14px;line-height:normal;padding:10px}#wpstg-update-notify a{color:#fff;font-weight:700}.wpstg-pointer{cursor:pointer}.wpstg--tab--header{background-color:#fff;border-radius:2px;box-shadow:0 0 1px rgba(0,0,0,.125),0 1px 3px rgba(0,0,0,.02);color:#3e3e3e;position:relative;transition:border-color .2s ease-in-out}.wpstg--tab--header ul{display:flex}.wpstg--tab--header ul li{margin-bottom:0;margin-right:1em}.wpstg--tab--header ul li:last-child{margin-right:0}.wpstg--tab--header a{color:#c4c4c4;cursor:pointer;display:inline-block;font-size:18px;min-width:150px;padding:1em 1.25em 9px;text-align:center}.wpstg--tab--header a.wpstg--tab--active,.wpstg--tab--header a:hover{border-bottom:.4em solid #25a1f0;color:#25a1f0}.wpstg--tab--header a:hover{background-color:#fefefe}.wpstg--tab--content{display:none}.wpstg--tab--active{display:block}.wpstg--text--strong,.wpstg--text--strong *{font-weight:700!important}.wpstg--text--danger{color:#a94442}.wpstg--tooltip{display:inline-block;margin-left:5px;position:relative}.wpstg--tooltip.wpstg--tooltip-normal{border-bottom:0;margin-left:0}.wpstg--tooltip .wpstg--tooltiptext{background-color:#fff;border-radius:3px;-webkit-box-shadow:0 1px 4px rgba(0,0,0,.16);-moz-box-shadow:0 1px 4px rgba(0,0,0,.16);box-shadow:0 1px 4px rgba(0,0,0,.16);color:#505050;font-weight:400;padding:12px;position:absolute;text-align:left;visibility:hidden;width:300px;z-index:1}.wpstg--tooltiptext-backups{left:-150%;margin-left:-56px;margin-top:4px;top:100%;width:120px}.wpstg--tooltip.wpstg--exclude-rules--tooltip{border-bottom:0 solid transparent}.wpstg--tooltip.wpstg--exclude-rules--tooltip>.wpstg--tooltiptext{margin-left:-150px;margin-top:0}.wpstg--tooltip .wpstg--tooltiptext-backups:after{border:5px solid transparent;border-bottom-color:#fff;bottom:100%;content:" ";left:50%;margin-left:25px;position:absolute}.wpstg--tooltip .wpstg--tooltiptext.has-top-arrow{margin-top:6px}.wpstg--tooltip .wpstg--tooltiptext.has-top-arrow:after{border:5px solid transparent;border-bottom-color:#fff;bottom:100%;content:" ";left:50%;margin-left:-18px;position:absolute}.wpstg--snaphot-restore-table tr{line-height:12px}.wpstg-beta-notice{background-color:#b0e8b0;border-radius:3px;margin-bottom:20px;padding:7px}#wpstg-backup-name{font-size:1.875em;font-weight:600}#wpstg_select_tables_cloning option:checked,#wpstg_select_tables_pushing option:checked{-webkit-appearance:menulist-button;background-image:linear-gradient(0deg,#1e90ff,#1e90ff)}.wpstg--btn--cancel{color:#fff;font-size:16px;height:auto;line-height:normal;margin-bottom:1.5em;padding:.5em}.wpstg--btn--cancel,.wpstg--btn--cancel:hover{background:#ff3428;border-color:#e72f24}.wpstg--process--content>.wpstg--swal2-html-container{padding:4em 2em!important}.wpstg--modal--error--logs,.wpstg--modal--process--logs{background:#fff;border:1px solid #a8a8a8;border-radius:3px;display:none;height:300px;margin-top:1em;overflow:auto;padding-left:10px;padding-top:10px;text-align:justify}.wpstg--modal--error--logs{height:auto;max-height:300px}.wpstg--modal--process--logs p{font-size:12px;white-space:nowrap}.wpstg--modal--process--logs p.wpstg--modal--process--msg--info{color:#222}.wpstg--modal--process--logs p.wpstg--modal--process--msg--debug{color:#757575}.wpstg--modal--process--title{color:#565656;margin:.25em 0}.wpstg--modal--process--subtitle{color:#565656;margin:.5em 0}.wpstg--modal--error--logs>p{color:#222;font-size:14px;text-align:left}.wpstg--modal--error--logs p,.wpstg--modal--process--logs p{margin:0 0 2px}.wpstg--modal--process--msg--critical,.wpstg--modal--process--msg--error{color:#e01e5a}.wpstg--modal--process--msg--warning{color:#ff8c00}.wpstg--modal--process--msg-found{color:#e01e5a;font-size:16px;font-weight:700}.wpstg--modal--delete{color:#565656;margin-top:8px;text-align:left}.wpstg-swal-popup .wpstg--swal2-cancel.wpstg--btn--cancel{margin-bottom:0;text-shadow:none!important}.wpstg-swal-popup .wpstg-loader{display:inline-block!important}.wpstg--modal--process--generic-problem{border-left:5px solid #e01e5a;display:none;margin:.5em 0}.wpstg--modal--process--logs--tail{background:none;border:none;color:#565656;cursor:pointer;font-size:16px;text-decoration:underline}.wpstg--modal--backup--import--upload--title{color:#3e3e3e}.wpstg--modal--backup--import--configure,.wpstg--modal--backup--import--upload--container input[type=file],.wpstg--modal--backup--import--upload--status{display:none}#wpstg--backups--import--file-list{font-size:14px;font-weight:700}#wpstg--backups--import--file-list-empty{color:#e01e5a}.wpstg--modal--backup--import--filesystem label{font-size:14px}.wpstg--modal--backup--import--filesystem button{margin-bottom:20px}.wpstg--modal--backup--import--upload{color:#505050;min-height:30px;position:relative}.wpstg--modal--backup--import--upload--container{background-color:#f4fbff;border:3.5px dashed #dedede;border-radius:10px;margin:.5em;min-height:130px;padding:1em .5em;position:relative;transition:background-color .3s ease,color .3s ease}.wpstg--modal--backup--import--upload--container.wpstg--has-dragover span.wpstg--drop{display:inline-flex}.wpstg--modal--backup--import--upload--container input[type=file]{display:none}.wpstg--modal--backup--import--upload--container img{align-self:center;border:none;margin-top:10px;width:4em}.wpstg--modal--backup--import--upload--container span{margin-top:1em}.wpstg--backup--import--options>button{align-self:center;height:auto;line-height:normal;margin-top:1em;padding:1em;width:185px}.wpstg--backup--import--options{display:flex;justify-content:center;position:relative}.wpstg--backup--import--options ul{display:none}.wpstg--backup--import--options.wpstg--show-options ul{background:#25a1f0;border-color:#2188c9;border-radius:0 0 3px 3px;border-width:1px;box-sizing:border-box;display:block;margin:54px 0 0;padding:0;position:absolute;text-shadow:0 -1px 1px #006799,1px 0 1px #006799,0 1px 1px #006799,-1px 0 1px #006799;width:185px}.wpstg--backup--import--options.wpstg--show-options ul li{border-bottom:.1em solid #25a1f0;margin:0}.wpstg--backup--import--options.wpstg--show-options ul li:hover{background-color:#25a1f0}.wpstg--backup--import--options.wpstg--show-options ul li:last-child{border-bottom:none}.wpstg--backup--import--options ul li button{background:none;border:none;color:#fff;cursor:pointer;height:40px;line-height:40px;margin:0;width:100%}.wpstg--backup--import--options ul li button:hover{background-color:#259be6}.wpstg--modal--backup--import--search-replace--info{display:flex;flex-direction:row;margin:1em 0}.wpstg--modal--backup--import--info p{margin:0;text-align:left}.wpstg--modal--backup--import--search-replace--wrapper button{align-self:center}.wpstg--import--advanced-options--button{border:0;border-radius:3px;cursor:pointer;font-size:18px;text-shadow:0 -1px 1px #006799,1px 0 1px #006799,0 1px 1px #006799,-1px 0 1px #006799}.wpstg--modal--backup--import--search-replace--new{background-color:#25a1f0;color:#fff}.wpstg--modal--backup--import--search-replace--remove{background-color:#25a1f0;color:#fff;height:22px;margin-left:5px;width:22px}.wpstg--modal--backup--import--search-replace--input-group:first-child button{display:none}.wpstg--modal--backup--import--search-replace--input--container{display:flex;flex:1;flex-direction:column}.wpstg--modal--backup--import--search-replace--input-group{border-bottom:6px solid #f1f1f1;margin-bottom:10px;width:100%}.wpstg--modal--backup--import--search-replace--input-group input{border:1px solid #dedede;border-radius:3px;color:#666;display:inline-block;line-height:10px;margin-bottom:12px;min-width:250px;padding:8px;width:calc(50% - 20px)}.wpstg--modal--import--upload--process{align-items:center;color:#333;display:none;height:30px;justify-content:center;left:0;margin-bottom:20px;margin-top:20px;overflow:hidden;position:relative;text-indent:1em;top:0;white-space:nowrap;width:100%}.wpstg--modal--import--upload--progress{background:#98d452;border-radius:4px;color:#fff;height:100%;left:0;position:absolute;top:0}.wpstg--modal--import--upload--progress--title{z-index:9}.wpstg-fieldset:disabled{border-top:1px solid #fff;margin-top:20px;opacity:.8}.wpstg-fieldset{padding-left:20px}.wpstg-dark-alert{background-color:#0e86d9;color:#fff;font-weight:700;margin-top:0;padding:15px}.wpstg-dark-alert .wpstg-button--cta-red{margin-left:10px}.wpstg-form-group{align-items:center;display:block;margin-bottom:8px;width:100%}.wpstg-form-group>label{display:block;font-weight:700}.wpstg-text-field>input{display:block;line-height:1.5;width:300px}.wpstg-text-field>.wpstg-code-segment{margin-top:4px;min-width:300px}.wpstg-form-group>.wpstg-checkbox{position:relative}.wpstg-form-group>.wpstg-checkbox>input[type=checkbox]{left:150px}.wpstg-ml-4{margin-left:4px}#wpstg-advanced-settings hr{margin:20px 0}.wpstg-form-row{display:block}.wpstg-form-row input,.wpstg-form-row label{display:table-cell;margin-bottom:3px;margin-top:3px;padding-left:5px;padding-right:5px}.wpstg-form-row input{width:400px}.wpstg-form-row label{font-weight:700;white-space:nowrap;width:1px}#wpstg-db-connect-output #wpstg-db-status{width:390px}.wpstg-fs-14{font-size:14px}.wpstg-code-segment{display:block}.wpstg-form-group>.wpstg-checkbox{min-width:100%;width:100%}.wpstg-form-group>.wpstg-checkbox>input[type=checkbox]{margin-left:10px}@media only screen and (max-width:768px){.wpstg-form-group>label{min-width:auto;width:auto}.wpstg-text-field>input{width:100%}.wpstg-text-field>.wpstg-code-segment{margin-left:0;min-width:100%}.wpstg-tab-section{max-width:450px;width:calc(100vw - 60px)}}.wpstg-rounded{border-radius:3px}.wpstg-white-border{border:1px solid #fff!important}.wpstg-m-0{margin:0}.wpstg-mt-10px{margin-top:10px!important}.wpstg-mr-10px{margin-right:10px!important}.wpstg-my-10px{margin-bottom:10px!important;margin-top:10px!important}.wpstg-w-100{width:100%}.wpstg-box-shadow{box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}.wpstg-float-left{float:left}.wpstg-bold-text{font-weight:700}.wpstg-warning.notice{border-left:4px solid #ffba00}.wpstg-confirmation-label{background-color:#5b9dd9;border-radius:3px;color:#fff;padding:2px}.wpstg-my-6px{margin-bottom:6px;margin-top:6px}.wpstg-mb-10px{margin-bottom:10px}.wpstg-clear-both{clear:both}.wpstg-font-italic{font-style:italic}.wpstg-mt-20px{margin-top:20px}.wpstg-welcome-container{border:2px solid #fff;margin-bottom:20px;padding:20px}.wpstg-ml-30px{margin-left:30px}.wpstg-text-center{text-align:center}.wpstg-feedback-link{text-decoration:none}.wpstg-feedback-span{display:block;margin-bottom:3px}#wpstg-confirm-backup-restore-data{margin:40px;text-align:left}#wpstg-confirm-backup-restore-wrapper{margin:0 30px 30px}#wpstg-confirm-backup-restore-wrapper h3{color:#e01e5a}#wpstg-progress-backup,#wpstg-progress-db{background-color:#3fa5ee}#wpstg-progress-files.wpstg-pro,#wpstg-progress-sr{background-color:#3c9ee4}#wpstg-progress-data,#wpstg-progress-dirs{background-color:#3a96d7}#wpstg-progress-files:not(.wpstg-pro),#wpstg-progress-finishing{background-color:#378cc9}.wpstg-issue-resubmit-confirmation.wpstg--swal2-container,.wpstg-swal2-container.wpstg--swal2-container{z-index:10500}.wpstg-swal2-container.wpstg-swal2-loading .wpstg--swal2-actions,.wpstg-swal2-container.wpstg-swal2-loading .wpstg--swal2-header{display:none}body.toplevel_page_wpstg_backup .wpstg--swal2-container .wpstg--swal2-content,body.toplevel_page_wpstg_clone .wpstg--swal2-container .wpstg--swal2-content{z-index:2}.toplevel_page_wpstg_clone #swal2-content h2{color:#3e3e3e}.toplevel_page_wpstg_clone #swal2-content{line-height:1.5em}div#exportUploadsWithoutDatabaseWarning{background-color:#fafafa;border:1px solid #e3e3e3;border-radius:5px;font-size:.9rem;font-style:italic;margin:10px;padding:10px;text-align:center}.wpstg-advanced-options-dropdown-wrapper{display:none;margin-top:20px}.wpstg--modal--backup--import--search-replace--wrapper{margin-top:20px;text-align:left}.wpstg--modal--backup--import--search-replace--new--wrapper{text-align:center}.wpstg-import-backup-contains li{display:inline-block;margin-bottom:0}.wpstg-import-backup-contains li .wpstg-backups-contains{background-color:#f4f4f4!important;border-radius:3px;color:#979797;font-size:17px;height:18px;width:18px}.wpstg-import-backup-contains.wpstg-listing-single-backup li .wpstg-backups-contains{background-color:#fff;padding:2px}.wpstg-import-backup-contains.wpstg-listing-single-backup li .wpstg-backups-contains>.wpstg--dashicons{filter:invert(35%)}.wpstg-import-backup-contains .wpstg--tooltiptext{font-size:13px;left:-25px;padding:5px;text-align:center;width:80px}.wpstg-import-backup-contains-title,ul.wpstg-import-backup-contains{display:inline-block}.wpstg-import-backup-name{display:inline-block;font-weight:700}.wpstg-backup-more-info-toggle{cursor:pointer;display:inline-block;font-size:x-small;font-style:italic}.wpstg-backup-more-info-toggle::selection{background:none}ul.wpstg-import-backup-more-info{background-color:#f6f6f6;border:1px solid #878787;border-radius:3px;cursor:pointer;font-size:14px;margin-bottom:30px;margin-top:10px;padding:7px;text-align:left}ul.wpstg-import-backup-more-info:hover{background-color:#def2ff;border:1px solid #25a1f0}ul.wpstg-import-backup-more-info li{height:20px}.wpstg-backup-list{max-width:800px}.wpstg-backup-list h3{color:#3e3e3e}.wpstg-backup-list ul ul{margin-block-end:1em;margin-block-start:1em}.wpstg-push-confirmation-message{font-size:15px;text-align:justify}.wpstg-settings-row{padding-bottom:10px;padding-top:10px}.wpstg-settings-title{font-weight:600}.wpstg-settings-form-group{align-items:center;display:flex}.wpstg-settings-form-group>.wpstg-settings-message{margin:7px 0 0;padding:0;width:30%}.wpstg-excluded-filters-container{margin-bottom:10px;margin-top:10px;max-width:100%;padding:0;width:100%}.wpstg-excluded-filters-container>table{border-collapse:collapse;border-color:transparent;width:100%}.wpstg-excluded-filters-container td{height:20px;padding-bottom:4px;padding-top:4px}.wpstg-excluded-filters-container h4{margin:0}.wpstg-exclude-filters-foot{display:flex;justify-content:flex-start;padding:0}.wpstg-exclude-filter-dropdown>button:hover{background:#135e96;border:1px solid #135e96}.wpstg-exclude-filter-dropdown>.wpstg-dropdown-menu{width:128px}.wpstg-remove-exclude-rule{background-color:#e01e5a;border:1px solid #e01e5a;border-radius:10px;box-shadow:none;color:#fff!important;cursor:pointer;display:inline-flex;font-size:24px;font-weight:400;height:20px;justify-content:center;line-height:.7;margin-top:5px;outline:none;padding:0;width:20px}.wpstg-remove-exclude-rule:hover{background-color:#e01e5a;border-color:#e01e5a}.wpstg-code-block{background:#f8f8f8;border-radius:2px;font-size:1.2em;margin-top:4px}.wpstg-rule-info{background:#f8f8f8!important}code.wpstg-code{background:#fff;border:1px solid #aaa;color:#e01e5a;display:inline-block;font-size:11px;margin-bottom:1px;padding:2px 4px}.wpstg-exclusion-rule-info{align-items:center;background-color:#ffc107;border:1px solid #ffc107;border-radius:7px;box-shadow:none;color:#fff!important;display:inline-flex;font-size:14px;font-weight:400;height:14px;justify-content:center;outline:none;padding:0;vertical-align:middle;width:14px}.wpstg-exclusion-rule-info:hover{background-color:#ffba0c;border:1px solid #ffba0c}.wpstg-exclude-rule-input{background-color:#fff;border:1px solid #bbb;border-radius:0!important;box-shadow:none;color:#222;display:inline-block;font-size:12px!important;font-weight:400;line-height:1.5;margin-left:4px;margin-top:4px;min-height:24px!important;outline:none!important;padding:2px 6px;transition:all .3s cubic-bezier(.25,.8,.25,1);vertical-align:baseline!important;width:135px}.wpstg-excluded-filters-container tbody>tr:last-child .wpstg-exclude-rule-input{margin-bottom:4px}.wpstg-exclude-rule-input:hover{border:1px solid #999}.wpstg-exclude-rule-input:focus{border:1px solid #25a0f1!important;box-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24)!important}.wpstg-file-size-exclude-select,.wpstg-path-exclude-select{width:135px}.wpstg-file-size-exclude-select-small{width:52px}.wpstg-file-size-exclude-input{width:75px}.wpstg-staging-option-title{margin:15px 0 0}.wpstg-swal-push-container.wpstg--swal2-container{z-index:9995}#wpstg-scanning-files{padding-bottom:5px}#wpstg-scanning-db.wpstg-tab-section,#wpstg-scanning-files.wpstg-tab-section{padding-top:10px}.wpstg-reset-excludes-container{margin:10px 0}.wpstg-swal2-ajax-loader{align-items:center;display:flex;height:150px;justify-content:center;overflow:hidden;width:100%}@keyframes wpstg-loading-icon-anim{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.wpstg-swal2-ajax-loader>img{animation:wpstg-loading-icon-anim 1s linear infinite;-webkit-animation:wpstg-loading-icon-anim 1s linear infinite;height:64px;width:64px}.wpstg-swal2-container .wpstg-tab-section{width:auto!important}#wpstg-no-staging-site-results{margin-top:10px;max-width:375px}li#wpstg-backup-no-results{max-width:500px}#wpstg-no-staging-site-results div,li#wpstg-backup-no-results div{display:inline-block;text-align:center}#wpstg-no-staging-site-results .wpstg--dashicons,li#wpstg-backup-no-results .wpstg--dashicons{filter:invert(50%);margin-top:1px;position:absolute}#wpstg-no-staging-site-results .no-staging-site-found-text,li#wpstg-backup-no-results .no-backups-found-text{color:#5d5d5d;margin-left:20px}@media only screen and (max-width:680px){#wpstg-no-staging-site-results div,li#wpstg-backup-no-results div{width:100%}}#wpstg--modal--backup--download-inner p.wpstg-download-modal-text{color:#565656;font-size:16px}#wpstg--modal--backup--download-inner h2{color:#565656}.wpstg-backup-restore-contains-database,.wpstg-backup-restore-contains-files{display:none}.wpstg-green-button{background:#8bc34a;border:1px solid #78a93f;color:#fff;text-shadow:0 -1px 1px #78a93f,1px 0 1px #78a93f,0 1px 1px #40c921,-1px 0 1px #78a93f}.wpstg-green-button:hover{background:#78a93f}.wpstg-is-dir-loading{display:none;margin-left:8px;margin-top:-2px;position:absolute}.wpstg-ml-8px{margin-left:8px}.wpstg-mb-8px{margin-bottom:8px}.wpstg-btn-danger{background-color:#e01e5a;border:1px solid #e01e5a;color:#fff;text-shadow:none}.wpstg-btn-danger:hover{background:#c0194d;box-shadow:0 1px 4px rgba(0,0,0,.3)}.wpstg-swal2-container.wpstg-swal2-loading>.wpstg--swal2-modal{height:200px}.wpstg-reset-confirmation.wpstg-swal2-container:not(.wpstg-swal2-loading)>.wpstg--swal2-modal{max-width:480px}.wpstg-reset-confirmation.wpstg-swal2-container .wpstg--swal2-header{display:none}.wpstg-reset-confirmation.wpstg-swal2-container .wpstg--swal2-content{height:auto}.wpstg-reset-confirmation.wpstg-swal2-container>.wpstg--swal2-modal>.wpstg--swal2-content .wpstg-tabs-wrapper{height:auto!important;overflow-y:auto}.wpstg-reset-confirmation.wpstg-swal2-container>.wpstg--swal2-modal>.wpstg--swal2-content{font-size:13px}.wpstg-reset-confirmation.wpstg-swal2-container>.wpstg--swal2-modal>.wpstg--swal2-content .wpstg-dir{margin-bottom:4px}.wpstg-reset-confirmation.wpstg-swal2-container>.wpstg--swal2-modal>.wpstg--swal2-content .wpstg-subdir{margin-top:4px}.wpstg-reset-confirmation.wpstg-swal2-container.has-collapsible-open .wpstg--swal2-modal{height:calc(100vh - 70px)}.wpstg-reset-confirmation.wpstg-swal2-container.has-collapsible-open>.wpstg--swal2-modal>.wpstg--swal2-content .wpstg-tabs-wrapper{height:calc(100vh - 350px)!important}.wpstg--swal2-actions.wpstg--modal--actions>button{font-weight:500;margin-left:4px;margin-right:4px;min-width:80px;text-shadow:none;text-transform:uppercase}.wpstg-swal-popup{max-width:1200px!important}.wpstg-swal-popup.wpstg-push-finished .wpstg--swal2-title{color:#a8a8a8}.wpstg-swal-popup.wpstg-push-finished .wpstg--swal2-content{color:#a8a8a8;margin-top:8px}.wpstg-swal-popup .wpstg--swal2-progress-steps .wpstg--swal2-progress-step,.wpstg-swal-popup .wpstg--swal2-progress-steps .wpstg--swal2-progress-step-line,.wpstg-swal-popup .wpstg--swal2-progress-steps .wpstg--swal2-progress-step.wpstg--swal2-active-progress-step{background:#25a1f0}.wpstg-swal-popup .wpstg--swal2-progress-steps .wpstg--swal2-progress-step-line{width:2.75em}.wpstg--dashicons{height:16px;width:16px}.wpstg--dashicons.wpstg-dashicons-grey{filter:invert(20%)}.wpstg--dashicons.wpstg-dashicons-19{height:19px;width:19px}.wpstg--dashicons.wpstg-dashicons-21{height:21px;width:21px}#wpstg--tab--backup #wpstg-step-1{align-items:center;display:flex}#wpstg--tab--backup #wpstg-step-1 .wpstg--tooltip,.wpstg-advanced-options .wpstg--tooltip{align-items:center;border-bottom:0 solid transparent;display:inline-flex}.wpstg-advanced-options-site .wpstg--tooltip img.wpstg--dashicons{filter:invert(17%) sepia(0) saturate(1%) hue-rotate(195deg) brightness(97%) contrast(77%)}#wpstg--tab--backup #wpstg-step-1 .wpstg--tooltip{align-items:center;border-bottom:0 solid transparent;display:flex}.wpstg--tooltip .wpstg--tooltiptext-backups:after{left:calc(20% + 2px)}.wpstg-listing-single-backup .wpstg--dashicons{height:17px;width:17px}.wpstg-100-width{width:100px}.wpstg-caret{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid;cursor:pointer;display:inline-block;height:0;margin-left:2px;transition:transform .2s;vertical-align:middle;width:0}.wpstg-caret.wpstg-caret-up{transform:rotate(-180deg)}.wpstg-advanced-options-site label{display:block;font-size:16px;margin:.5em 0}#wpstg-confirm-backup-restore-data{font-size:18px;margin:30px 0 0}body.toplevel_page_wpstg_backup .wpstg--swal2-container.wpstg--swal2-backdrop-show,body.toplevel_page_wpstg_clone .wpstg--swal2-container.wpstg--swal2-backdrop-show{background:rgba(0,0,0,.6);z-index:9995}.wpstg-swal-popup.wpstg--swal2-popup{border-radius:8px;color:#3e3e3e;font-family:Verdana,Geneva,Tahoma,sans-serif;padding:24px;z-index:9999}.wpstg-swal-popup .wpstg--swal2-title{color:#3e3e3e;font-size:22px}.wpstg-swal-popup.wpstg--swal2-popup:not(.centered-modal) .wpstg--swal2-title{align-self:flex-start;margin-bottom:0;text-align:left}.wpstg-swal-popup .wpstg--swal2-close{right:8px;top:8px;z-index:5}.wpstg-swal-popup .wpstg--swal2-close:focus{outline:none}.wpstg-swal-popup.wpstg--swal2-popup:not(.centered-modal) .wpstg--swal2-actions{justify-content:flex-end}.wpstg-swal-popup .wpstg--swal2-actions>button{border:0;border-radius:4px;font-size:15px;font-weight:900;height:40px;line-height:normal;min-width:100px;padding:10px 12px;text-shadow:none;text-transform:capitalize}.wpstg-swal-popup.wpstg--swal2-popup:not(.centered-modal) .wpstg--swal2-actions>button{margin-left:8px}.wpstg-swal-popup .wpstg--swal2-actions>button.wpstg--swal2-cancel{background:#fff;border:1px solid rgba(29,28,29,.3);color:#1d1c1d;font-weight:500;text-shadow:none;width:100px}.wpstg-swal-popup .wpstg--swal2-actions>button:hover{box-shadow:0 1px 3px 0 rgba(0 0 0 .1)}.wpstg-swal-popup .wpstg--swal2-actions>button.wpstg--swal2-cancel:hover{background:rgba(28,29,28,.04)}#wpstg-backup-name-input{font-size:18px;height:44px}.wpstg-restore-finished-container .wpstg--swal2-title{color:#565656!important}.wpstg-restore-finished-container .wpstg--swal2-content{color:#a8a8a8;margin-top:20px}.wpstg-linear-loader>span[class*=wpstg-linear-loader-item]{animation:wpstg_linear_loader 3s infinite;animation-fill-mode:both;animation-timing-function:cubic-bezier(.03,.615,.995,.415);background:#333;border-radius:100%;display:inline-block;height:6px;margin:12px 2px;width:6px}.wpstg-linear-loader>span.wpstg-linear-loader-item:first-child{animation-delay:1s}.wpstg-linear-loader>span.wpstg-linear-loader-item:nth-child(2){animation-delay:.8s}.wpstg-linear-loader>span.wpstg-linear-loader-item:nth-child(3){animation-delay:.6s}.wpstg-linear-loader>span.wpstg-linear-loader-item:nth-child(4){animation-delay:.4s}.wpstg-linear-loader>span.wpstg-linear-loader-item:nth-child(5){animation-delay:.2s}.wpstg-linear-loader>span.wpstg-linear-loader-item:nth-child(6){animation-delay:0s}@keyframes wpstg_linear_loader{0%{opacity:0;transform:translateX(-30px)}25%{opacity:1}50%{opacity:0;transform:translateX(30px)}to{opacity:0}}.wpstg--modal--backup--import--upload--content{margin:1em auto;padding:.75em}.wpstg--modal--backup--import--upload--content .wpstg-linear-loader{display:none}#wpstg-multisite-disabled .wpstg-clone{width:355px}#wpstg-free-version-backups .wpstg-clone{text-align:center}#wpstg-free-version-backups .wpstg-clone p{font-size:16px}.wpstg-staging-info li .backup-notes{word-break:break-word}.wpstg--modal--import--upload--progress--title small{font-weight:400}#wpstg-report-issue-wrapper{position:relative}#wpstg-report-issue-wrapper .arrow-up{border-bottom:8px solid #fff;border-left:8px solid transparent;border-right:8px solid transparent;height:0;position:absolute;right:40px;top:-8px;width:0}.notice{margin:10px 20px 0 2px}.wpstg--notice{box-shadow:0 1px 1px rgba(0,0,0,.04);margin:20px 20px 20px 0;padding:1px 12px}.wpstg--error a:hover{color:#eee}.wpstg--error,.wpstg--error a{background:#e01e5a;color:#fff}.wpstg-button{border-radius:2px;cursor:pointer;display:inline-block;font-weight:500;outline:0;padding:2px 10px;text-decoration:none;text-transform:uppercase;transition:background-color .1s ease-in}.wpstg-button.wpstg-save{background-color:#1687a7;color:#fff}.wpstg-button.wpstg-save:hover{background-color:#276678}.wpstg-button.wpstg-button-light{animation:background-color .3s;background-color:#f8f8f8;border:1px solid #eee;color:#333}.wpstg-button.wpstg-button-light:hover{background-color:#e0e0e0;border:1px solid #e0e0e0}.wpstg-buttons .spinner{float:none;margin:0 0 0 5px}.wpstg-button.danger{background-color:#e01e5a;border-color:transparent;border-radius:2px;color:#fff;display:inline-block;text-align:center;text-decoration:none;text-transform:inherit}.wpstg-button.danger:hover{background-color:#c0194d}.wpstg-button--big{border-radius:3px;color:#fff;display:inline-block;font-size:16px;margin-top:20px;min-width:170px;padding:10px;text-align:center;text-decoration:none}.wpstg-button--primary{-webkit-appearance:none;border:1px solid rgba(29,28,29,.3);border-radius:2px;box-sizing:border-box;color:#171717;cursor:pointer;display:inline-block;font-size:13px;line-height:2.15384615;margin:0;min-height:30px;padding:0 10px;text-decoration:none;white-space:nowrap}.wpstg-button--primary:hover{background:rgba(28,29,28,.04);color:#000}.wpstg-button--secondary{background-color:transparent;border:1px solid rgba(29,28,29,.3);border-radius:2px;color:#95a5a6;cursor:pointer;display:inline-block;font-weight:500;outline:0;padding:4px 10px 2px;text-decoration:none;transition:background-color .1s ease-in}.wpstg-button--red{background-color:#e01e5a;border-color:#e01e5a;color:#fff}.wpstg-button--red:hover{background-color:#d02358;border-color:#e0255f;color:#fff}.wpstg-button--cta-red{background-color:#fe008f;border-color:#e01e5a;color:#fff}.wpstg-button--cta-red:hover{background-color:#f31391;border-color:#e0255f;color:#fff}.wpstg-button--blue{background-color:#25a0f1;border-color:#25a0f1;color:#fff}.wpstg-button--blue:hover{background-color:#259be6;border-color:#259be6;color:#fff}#wpstg-button-backup-upgrade{font-size:16px}.wpstg-staging-status{color:#e01e5a}#wpstg-push-changes,#wpstg-save-clone-data,#wpstg-start-updating{margin-left:5px}input.wpstg-textbox{border:1px solid #aaa;border-radius:.25rem;font-size:14px;padding:.25rem .5rem}input.wpstg-textbox:focus{border-color:#259be6;-webkit-box-shadow:0 0 0 .1rem hsla(0,0%,86.7%,.35);box-shadow:0 0 0 .1rem hsla(0,0%,86.7%,.35);outline:0}input.wpstg-textbox::placeholder{color:#888}.wpstg--advance-settings--checkbox{align-items:center;display:flex}.wpstg--advance-settings--checkbox>label{display:inline-block;font-size:14px;font-weight:bolder;width:165px}.wpstg--advance-settings--checkbox>.wpstg--tooltip{border-bottom:0 solid transparent;display:inline-block;margin-left:5px;margin-top:5px;position:relative}.wpstg--advance-settings--checkbox>.wpstg--tooltip>.wpstg--tooltiptext{left:-150px;top:18px}div#wpstg-restore-wait{align-items:center;background:#fff;display:none;flex-direction:column;height:100vh;justify-content:center;left:0;position:fixed;text-align:center;top:0;width:100vw;z-index:99999}div#wpstg-restore-wait .wpstg-title{font-weight:700}div#wpstg-restore-wait div{font-size:16px;margin-top:12px}.resumable-browse{cursor:pointer}.resumable-browse a{text-decoration:underline}.wpstg-upload-text{font-weight:600}.wpstg--modal--backup--import--upload--container.dragover{background-color:#94dc96;color:#fff;transition:background-color .7s}.wpstg--modal--backup--import--upload--container.dragover *{pointer-events:none}.wpstg--modal--backup--import--upload--container.dragover .wpstg-upload-text{display:none}.wpstg--modal--backup--import--upload--container.dragover .wpstg-dragover-text{display:block}.wpstg--modal--backup--import--upload--container .wpstg-dragover-text{display:none}#wpstg-invalid-license-message,#wpstg-invalid-license-message a{color:#e01e5a;font-weight:500;margin-left:6px}#wpstg-sidebar--banner{max-width:200px}@media screen and (max-width:1234px){.wpstg-h2{font-size:24px}#wpstg-welcome li{font-size:14px}}.wpstg-exclamation{background-color:#e01e5a;border-radius:100%;color:#fff;display:inline-block;font-weight:700;height:20px;margin:6px;text-align:center;width:20px}.wpstg--tab--contents{padding-top:1px}.wpstg-swal-show.wpstg--swal2-show{-webkit-animation:wpstg-swal-show .2s!important;animation:wpstg-swal-show .2s!important}@-webkit-keyframes wpstg-swal-show{0%{transform:scale(.3)}to{transform:scale(1)}}@keyframes wpstg-swal-show{0%{transform:scale(.3)}to{transform:scale(1)}}.wpstg-tab-item--vert-center{align-items:center;display:flex}.wpstg-db-comparison-modal{padding-left:10px;padding-right:10px}.wpstg-db-comparison-table{font-size:13px;width:100%}.wpstg-db-comparison-table tbody td{padding-top:6px}.wpstg-db-comparison-table tr>td:first-child,.wpstg-db-comparison-table tr>th:first-child{text-align:left}.wpstg-css-tick{border-bottom:3px solid #78b13f;border-right:3px solid #78b13f;display:inline-block;height:12px;transform:rotate(45deg);width:6px}.wpstg-css-cross{height:16px;left:-2px;position:relative;top:-8px;width:16px}.wpstg-css-cross:after,.wpstg-css-cross:before{background-color:#e01e5a;content:" ";height:17px;position:absolute;width:3px}.wpstg-css-cross:before{transform:rotate(45deg)}.wpstg-css-cross:after{transform:rotate(-45deg)}.wpstg-selection-preview{color:rgba(51,34,17,.4);font-size:12px;margin-left:20px}.wpstg-selection-preview.danger{color:#e01e5a}.wpstg--backup-automated{margin-bottom:-5px}.wpstg--dismiss-schedule{cursor:pointer}.wpstg-import-backup-contains.wpstg-listing-single-backup{vertical-align:middle}.wpstg-import-backup-contains.wpstg-listing-single-backup li{padding:2px}.wpstg--modal--backup--manage--schedules--content table{margin:0 auto;width:100%}.wpstg--modal--backup--manage--schedules--title{margin-bottom:10px;margin-top:0;text-align:left}.wpstg--modal--backup--import--upload--title{text-align:center}#wpstg--modal--backup--manage--schedules--content{text-align:left}#wpstg--modal--backup--manage--schedules--content thead{font-weight:700}#wpstg--modal--backup--manage--schedules--content .wpstg--tooltip.wpstg--dismiss-schedule{border-bottom:none}.wpstg--tooltip.wpstg--dismiss-schedule img.wpstg--dashicons{filter:invert(18%) sepia(57%) saturate(6238%) hue-rotate(332deg) brightness(93%) contrast(88%)}#wpstg--modal--backup--manage--schedules--content td{padding-right:25px;padding-top:10px}#wpstg--modal--backup--manage--schedules--content ul{margin-bottom:0;margin-top:0}#wpstg--modal--backup--manage--schedules--content ul li:first-child .wpstg--tooltip{margin-left:0}.wpstg-button:disabled{background-color:#ddd;border:1px solid #cfcfcf;color:#b3b3b3;cursor:not-allowed;text-shadow:none}#wpstg-backup-runs-info{font-size:12px;margin:20px 0 0;padding:0}#wpstg-backup-runs-info li{margin:0}div#wpstg-backup-locked{align-items:center;background:#fff;display:flex;margin-bottom:10px;max-width:770px;padding:15px;width:100%}#wpstg-backup-locked .icon{display:inline-block;height:20px}#wpstg-backup-locked .icon img{animation:wpstg-loading-icon-anim 2s infinite}#wpstg-backup-locked .text{display:inline-block;margin-left:15px}#backup-schedule-current-time{font-size:12px}.wpstg-backup-scheduling-options label{margin-top:17px}.wpstg-backup-scheduling-options .wpstg-storage-option{display:block;font-size:15px;margin:.5em 0}.wpstg-storage-option>span:not(.wpstg-storage-settings){display:inline-block;width:150px}.wpstg-storages-postbox{background-color:#fff;border:1px solid #ccc;display:none;margin-bottom:8px;margin-top:8px;padding:16px 8px}.wpstg-storages-postbox a{margin-right:8px;padding:8px;text-decoration:none}.wpstg-storage-postbox{background-color:#fff;border-bottom:1px solid #ccc;border-left:1px solid #ccc;border-right:1px solid #ccc;padding:4px 16px}.wpstg-storages-postbox a.wpstg-storage-provider-active{background:#25a1f0;color:#fff;cursor:default;font-weight:700}.wpstg-storages-postbox a.wpstg-storage-provider-disabled{color:#999;cursor:not-allowed}.wpstg-provider-revoke-form{display:inline;margin-bottom:12px;margin-top:12px}.wpstg-provider-settings-form{margin-top:10px}.wpstg-provider-settings-form strong{display:block;margin:8px 0}.wpstg-provider-settings-form p{margin:0 0 8px}.wpstg-provider-settings-form fieldset{margin:0 0 16px;padding:0}.wpstg-provider-settings-form fieldset p{font-size:12px;margin:0;padding:0}.wpstg-provider-settings-form fieldset label{display:block;margin-bottom:2px}.wpstg-provider-settings-form fieldset input{font-size:12px}.wpstg-provider-settings-form .wpstg-link-btn.wpstg-blue-primary{text-shadow:none}.wpstg-btn-google{align-items:center;border-radius:2px;border-width:0;box-shadow:0 1px 3px rgba(0,0,0,.6);box-sizing:border-box;color:#555;display:inline-flex;font-family:Roboto;font-size:14px;font-weight:700;height:40px;line-height:40px;margin-right:10px;outline:none;padding:8px 16px 8px 8px;text-decoration:none;transition:background-color .3s}.wpstg-btn-google img{height:18px;margin-left:5px;margin-right:12px;width:18px}#wpstg-custom-google-credentials{margin-top:20px}.wpstg-fieldset .wpstg-with-icon{align-items:center;display:inline-flex}.wpstg-fieldset .wpstg-with-icon .wpstg-fieldset-icon{margin-left:8px}.wpstg-fieldset .wpstg-with-icon .wpstg-fieldset-icon img{height:16px;width:16px}#wpstg-btn-provider-revoke{border-radius:2px}#wpstg--js--translations{text-decoration:underline}
2
  /*# sourceMappingURL=wpstg-admin.min.css.map */
1
+ @font-face{font-family:Roboto;font-style:normal;font-weight:400;src:url(../../fonts/roboto-v29-latin-regular.eot);src:local(""),url(../../fonts/roboto-v29-latin-regular.eot?#iefix) format("embedded-opentype"),url(../../fonts/roboto-v29-latin-regular.woff2) format("woff2"),url(../../fonts/roboto-v29-latin-regular.woff) format("woff"),url(../../fonts/roboto-v29-latin-regular.ttf) format("truetype"),url(../../fonts/roboto-v29-latin-regular.svg#Roboto) format("svg")}.wpstg--violet{color:#9d37ae}.wpstg-border--violet{border:1px solid #9d37ae}.wpstg--red{color:#e01e5a}.wpstg-cta--red{color:#fe008f}.wpstg--blue{color:#24a1f0}.wpstg--darkblue{color:#0e86d9}.wpstg--green{color:#83c11f}.wpstg--grey{color:#3e3e3e}.wpstg--darkgrey{color:#1b1b1b}.wpstg--filter--svg{filter:invert(24%) sepia(11%) saturate(558%) hue-rotate(169deg) brightness(97%) contrast(91%)}body.toplevel_page_wpstg_clone,body.wp-staging-pro_page_wpstg-license,body.wp-staging-pro_page_wpstg-settings,body.wp-staging-pro_page_wpstg-tools,body.wp-staging-pro_page_wpstg_backup{background-color:#f3f5f7}#wpstg-tab-container ul{background:#f1f1f1;float:left;list-style:none;margin:0;padding:0}#wpstg-tab-container ul li:first-child.selected-tab{border-top:none}#wpstg-tab-container ul li a.selected-tab{font-weight:700;text-decoration:none}#wpstg-tab-container .row{padding-bottom:12px;padding-top:10px}.wpstg-tabs-container .nav-tab-wrapper{padding:0}#wpstg-tab-container .row label strong,#wpstg-tab-container .row strong{font-weight:700}.wpstg-tabs a{padding:5px}#wpstg-tab-container>ul>li.wpstg-tabs.active{background-color:#fff}#wpstg_settingsgeneral_header .row:nth-child(3),#wpstg_settingsgeneral_header .row:nth-child(4){display:none}#wpstg-tab-container .wpstg-settings-panel{overflow:auto;padding:0 20px 20px}#wpstg-tab-container .wpstg-form-table th{color:#484848;font-size:14px;font-weight:700;line-height:1.3;padding:20px 10px 20px 0;text-align:left;vertical-align:top;width:30%}#wpstg-tab-container .wpstg-form-table tr{border-bottom:1px solid #e7e7e7}#wpstg-tab-container span.description{color:#484848;display:block;font-size:13px;font-style:normal;font-weight:400;margin-top:7px}#wpstg-tab-container .col-title{color:#484848}@media only screen and (max-width:680px){#wpstg-tab-container ul{float:none}#wpstg-tab-container .wpstg-form-table tr>th{width:100%}#wpstg-tab-container span.description{font-size:14px}#wpstg-tab-container .wpstg-form-table tr>td,#wpstg-tab-container .wpstg-form-table tr>th{padding:10px}}#wpstg-tab-container ul li{margin-bottom:0}#wpstg-tab-container ul li a{border-bottom:1px solid #e7e7e7;border-left-style:solid;border-left-width:0;border-right-style:solid;border-right-width:0;border-top:1px solid #fff;color:#0097df;display:block;font-weight:700;padding:10px 4px 10px 14px;text-decoration:none}#wpstg-tab-container ul li a:hover{background-color:#e5e5e5;color:#777}.wpstg-logo{display:block;float:left;font-size:16px;padding-top:20px;width:220px}.wpstg-logo img{max-width:212px}.wpstg-version{color:#9b9b9b;display:block;padding-top:40px}.wpstg_admin .nav-tab{color:#3c3c3c}#wpstg-tab-container table tbody tr:first-child>th>div{font-size:20px}#wpstg-clonepage-wrapper{margin-bottom:20px;width:98%}@media screen and (min-width:1090px){#wpstg-clonepage-wrapper{float:left;margin-bottom:20px}}#wpstg-steps{margin-left:20px;margin-top:0}#wpstg-steps li{color:#444;float:left;line-height:20px;padding-right:10px}.wpstg-step-num{border:1px solid #3e3e3e;border-radius:3px;display:inline-block;height:20px;margin-right:5px;text-align:center;width:20px}.wpstg-current-step{font-weight:700}.wpstg-current-step .wpstg-step-num{background:#3e3e3e;color:#eee}.wpstg-box{margin:10px 0;overflow:hidden;padding:10px}.wpstg-box,.wpstg-clone{position:relative;transition:border-color .2s ease-in-out}.wpstg-clone{background-color:#fff;border-radius:3px;box-shadow:0 0 1px rgba(0,0,0,.125),0 1px 3px rgba(0,0,0,.1);color:#3e3e3e;margin-bottom:10px;padding:16px}.wpstg-clone.active{border-color:#1d94cf}.wpstg-clone-header{align-items:center;display:flex}.wpstg-clone-title{color:#3e3e3e;display:inline-block;font-size:15px;font-weight:700;margin-right:8px;max-width:300px;text-decoration:none}.wpstg-clone-title:hover{color:#111}.wpstg-clone-labels{display:inline-block}.wpstg-clone-labels .wpstg-clone-label{background:#8bc34a;border-radius:3px;color:#fff;display:inline-block;font-size:11px;margin-right:4px;padding:1px 4px}.wpstg-clone-actions{display:flex;margin-left:auto;margin-top:5px}.wpstg-clone-actions .wpstg-dropdown-toggler{background:#25a1f0;border-radius:2px;box-shadow:0 0 1px rgba(0,0,0,.125),0 1px 3px rgba(0,0,0,.2);color:#fff;font-size:14px;padding:6px 10px;text-decoration:none}.wpstg-clone-actions .wpstg-dropdown-toggler:hover{background:#002648;color:#fff}.wpstg-dropdown{position:relative}.wpstg-dropdown>.wpstg-dropdown-menu{background:#fff;border-radius:2px;box-shadow:0 0 1px rgba(0,0,0,.125),0 1px 3px rgba(0,0,0,.2);display:none;flex-direction:column;padding:8px;position:absolute;right:0;top:calc(100% + 4px);width:100px;z-index:1000}.wpstg-dropdown>.wpstg-dropdown-menu.wpstg-menu-dropup{bottom:100%;top:auto;transform:translate3d(0,-3px,0)}.wpstg-dropdown>.wpstg-dropdown-menu.shown{display:flex}.wpstg-clone-action,.wpstg-dropdown-action{border-bottom:1px solid #f3f3f3;border-radius:3px;color:#3e3e3e;padding:6px 8px;position:relative;text-decoration:none;transition:color .2s ease-in-out}.wpstg-clone-action:hover,.wpstg-dropdown-action:hover{background:rgba(0,0,0,.05)}.wpstg-dropdown-action{background:transparent;border:0 solid #000;box-shadow:none;color:#3e3e3e;outline:none}.wpstg-remove-clone:hover{color:#e01e5a}.wpstg-clone-action:last-child{border:none}.wpstg-clone:hover .wpstg-clone-action{display:inline-block}#wpstg-show-error-details:focus,#wpstg-workflow .wpstg-clone-action{box-shadow:none;outline:none}.wpstg-link-btn{background:#45a1c9;color:#fff;display:inline-block;padding:5px 10px;text-decoration:none;transition:all .2s ease-in-out;vertical-align:baseline}.wpstg-link-btn:focus,.wpstg-link-btn:hover{box-shadow:none;color:#fff;outline:none}#wpstg-workflow .wpstg-link-btn:active{vertical-align:baseline}.wpstg-link-btn[disabled]{background:#777!important;border-color:#555!important;pointer-events:none}#wpstg-cancel-cloning,#wpstg-cancel-cloning-update{margin-top:5px}#wpstg-cancel-cloning.success{background:#64dd58;border-color:#54bd4a}#wpstg-error-details,#wpstg-error-wrapper{clear:both;display:none;font-size:13px;padding-top:10px}#wpstg-show-error-details{color:#555;display:inline-block;margin-left:5px;text-decoration:none;transition:color .2s ease-in-out}#wpstg-show-error-details:hover{color:#1d94cf}#wpstg-error-details{border-left:5px solid #e01e5a;padding:10px;width:500px}#wpstg-try-again{display:none}#wpstg-home-link{float:right}.wpstg-loader{content:url(../../img/loading.gif);display:none}.wpstg-loader.wpstg-finished{background-color:#00c89a;border-radius:3px;color:#fff;content:"Finished";display:block;margin-top:0;padding:2px 10px}#wpstg-workflow{clear:both;float:left;max-width:800px;min-height:380px;min-width:500px;padding-bottom:20px;padding-right:20px;padding-top:20px;position:relative}#wpstg-sidebar{display:block;float:left;margin-left:10px;max-width:400px}#wpstg-removing-clone.loading:after,#wpstg-workflow.loading:after{background:hsla(0,0%,100%,.7);content:"Loading... may take a while for huge websites";display:block;font-size:20px;height:100%;left:0;padding-top:100px;position:absolute;text-align:center;top:0;width:100%;z-index:99}#wpstg-removing-clone.loading:after{content:"REMOVING"!important}#wpstg-existing-clones,#wpstg-removing-clone{position:relative}#wpstg-existing-clones h3{color:#3e3e3e}#wpstg-removing-clone .wpstg-tab-section{display:block}.wpstg-progress-bar{background-color:#d6d8d7;height:27px;max-width:900px;padding:0}.wpstg-progress{background:#3fa5ee;float:left;overflow:hidden}.wpstg-progress,.wpstg-progress-files{color:#fff;height:100%;line-height:25px;text-align:center;transition:width .6s ease;width:0}.wpstg-progress-files{background:#16b4f0}#wpstg-clone-path.wpstg-error-input,#wpstg-new-clone-id.wpstg-error-input{border:1px solid #e01e5a;box-shadow:0 0 2px rgba(255,66,53,.8)}#wpstg-new-clone-id{margin-left:15px;max-width:100%;width:450px}#wpstg-new-clone{background:#25a1f0;border-color:#2188c9}#wpstg-new-clone:hover{background:#259be6;border-color:#2188c9}#wpstg-clone-path{margin-left:10px;width:350px}.wpstg-error-msg{color:#e01e5a}#wpstg-clone-id-error{background-color:#f0f8ff;display:block;margin:20px;padding:10px}#wpstg-start-cloning+.wpstg-error-msg{display:block;margin-top:5px}.wpstg-size-info{color:#999;font-weight:400;left:2px;position:relative}.wpstg-db-table .wpstg-size-info{top:2px}.wpstg-db-table:hover{background-color:#f0f8ff}#wpstg-workflow #wpstg-start-cloning{margin-left:5px;vertical-align:baseline}.wpstg-tabs-wrapper{margin:10px 0;max-width:640px}#wpstg-path-wrapper{border-bottom:2px dashed #ccc;margin-bottom:10px;padding-bottom:10px}.wpstg-tab-section{border-bottom:1px solid #ddd;border-left:none;border-right:none;display:none;padding:0 36px;width:calc(100% - 72px)}.wpstg-tab-section:after{clear:both;content:"";display:block}.wpstg-tab-header{border-bottom:1px solid #ddd;border-left:none;border-right:none;color:#444;display:block;font-size:16px;font-weight:700;padding:10px;text-decoration:none}.wpstg-tab-triangle{animation:transform .5s;border-bottom:5px solid transparent;border-left:10px solid;border-top:5px solid transparent;cursor:pointer;display:inline-block;height:0;margin-right:12px;margin-top:-3px;transition:transform .2s;vertical-align:middle;width:0}.wpstg-tab-triangle.wpstg-no-icon{border-bottom:0 solid;border-left:0 solid;border-top:0 solid;height:auto;margin-right:2px;vertical-align:auto;width:auto}.wpstg-tab-triangle.wpstg-rotate-90{transform:rotate(90deg)}.wpstg-tab-header:focus{box-shadow:none;color:#444;outline:none}#wpstg-large-files{border:1px dashed #ccc;display:none;font-size:12px;margin-top:20px;padding:10px;position:relative}#wpstg-large-files h3{background:#fff;left:5px;margin:0;padding:0 5px;position:absolute;top:-10px}.wpstg-subdir{display:none;margin-left:20px}.wpstg-subdir.wpstg-push{display:block;margin-left:20px}.wpstg-dir a.disabled{color:#888;cursor:default;text-decoration:none}.wpstg-check-subdirs{display:inline-block;margin-left:10px}.wpstg-notice-alert{background-color:#e01e5a;color:#fff}.wpstg-notice--white,.wpstg-notice-alert{display:block;margin-top:10px;max-width:600px;padding:20px}.wpstg-notice--white{background-color:#fff}.wpstg-notice-alert a,.wpstg-notice-alert h3{color:#fff}.wpstg-header{clear:both;font-size:19px;font-weight:400;line-height:1.6em;padding-top:10px}#wpstg-clone-label{font-size:14px;font-weight:700}.wpstg-log-details{background-color:#000;border:1px solid #fff;color:silver;font-family:monospace;font-size:12px;height:300px;line-height:15px;margin-top:15px;max-width:650px;overflow:scroll;padding:3px;white-space:nowrap}#wpstg-finished-result{display:none}#wpstg-remove-cloning{background:#ff3428;border-color:#e72f24;margin-top:5px}#wpstg-success-notice{background-color:#fff;border:1px solid #ccc;margin-top:20px;max-width:900px;padding:10px}.wpstg_beta_notice{margin-bottom:20px}.wpstg-sysinfo{height:700px;width:700px}.wpstg-form-table .col-title label{font-weight:600}.wpstg-form-table td:first-child{padding-right:20px;width:30%}.wpstg-share-button-container{margin:5px 0}.wpstg-share-button-container p{margin:0 0 10px}.wpstg-share-button{display:inline-block}.wpstg-share-button a{text-decoration:none}.wpstg-share-button .wpstg-share{-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;color:#fff;display:inline;font-family:sans-serif;font-size:12px;font-weight:700;padding:4px 8px;text-align:center;text-decoration:none}.wpstg-share-button-twitter .wpstg-share{background-color:#00abf0}.wpstg-share-button-facebook .wpstg-share{background-color:#3b5998}.wpstg-share-button-googleplus .wpstg-share{background-color:#f53424}.wpstg-share-button-facebook .share:active,.wpstg-share-button-googleplus .share:active,.wpstg-share-button-twitter .share:active{background-color:#353535}#wpstg-check-space{margin-left:8px}#wpstg-welcome li{font-size:18px;line-height:29px;list-style:none!important;padding-left:23px;position:relative}#wpstg-welcome{background-color:#fff;margin-right:20px;margin-top:20px}.wpstg-heading-pro{font-weight:700}.wpstg-h2{font-size:30px;line-height:2.5rem;margin-bottom:1.2rem;margin-top:0}#wpstg-welcome li:before{background:url(data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%2377B227%22%20d%3D%22M1671%20566q0%2040%2D28%2068l%2D724%20724%2D136%20136q%2D28%2028%2D68%2028t%2D68%2D28l%2D136%2D136%2D362%2D362q%2D28%2D28%2D28%2D68t28%2D68l136%2D136q28%2D28%2068%2D28t68%2028l294%20295%20656%2D657q28%2D28%2068%2D28t68%2028l136%20136q28%2028%2028%2068z%22%2F%3E%3C%2Fsvg%3E) left .4em no-repeat;background-size:contain;color:#77b227;content:"";height:100%;left:0;position:absolute;top:-2px;width:1em}.wpstg-h1{font-size:2.5em;letter-spacing:normal;line-height:3.68rem;margin-bottom:1.35rem}.wpstg--swal2-content{color:#3e3e3e}.wpstg--swal2-content h1{color:#444}#wpstg-welcome h2{margin:0 0 15px}#wpstg-welcome .wpstg-footer{clear:both;font-style:italic;margin-top:20px}#wpstg-footer{clear:both;margin-right:10px;margin-top:20px;padding-top:50px}#wpstg-footer a{text-decoration:none}#wpstg-footer li{list-style:circle;margin-bottom:2px}#wpstg-footer ul{margin-left:15px;margin-top:0}.wpstg-footer--title{margin-left:15px}.wpstg-staging-info{color:#3e3e3e;font-size:12px;margin-top:8px}.wpstg-staging-info a{color:#3e3e3e}.wpstg-staging-info li{margin-bottom:2px}.wpstg-bold{font-weight:600}#wpstg-processing-status{float:left;font-size:13px;font-weight:400;margin-top:5px}#wpstg-processing-timer{float:right;font-size:13px;font-weight:400;margin-top:5px}#wpstg-report-issue-button{background-color:#fff;border:1px solid #e01e5a;color:#e01e5a;margin-left:30px}#wpstg-report-issue-button:hover{background-color:#dc2b62;color:#fff}.wpstg-blue-primary{-webkit-appearance:none;background:#25a1f0;border:1px solid #2188c9;border-radius:3px;box-sizing:border-box;color:#fff;cursor:pointer;display:inline-block;font-size:13px;height:28px;margin:0;text-decoration:none;white-space:nowrap}.wpstg-blue-primary:hover{background:#127fc6}a.wpstg-blue-primary{height:auto;padding:5px 10px}.wpstg-blue-primary:hover{background-color:#259be6}.wpstg-report-issue-form{background-color:#fff;border:1px solid #e8e8e8;border-radius:3px;box-shadow:inset 0 1px 0 0 #fff;display:none;padding:15px 15px 10px;position:absolute;right:0;top:35px;width:300px;z-index:999}@media (max-width:600px){.wpstg-report-issue-form{position:relative}}.wpstg-report-show{display:block}.wpstg-field input[type=text],.wpstg-field textarea{font-weight:400;line-height:1.4;margin-bottom:4px;width:100%}.wpstg-report-email,.wpstg-report-hosting-provider{border-radius:3px;font-size:.8rem;font-weight:400;height:2.3rem;line-height:2.3rem;margin-bottom:4px;padding:0 10px;width:100%}.wpstg-report-description{border-radius:3px;font-size:.8rem;padding:6px 10px;resize:none}.wpstg-report-privacy-policy{font-size:12px;margin-bottom:15px}#wpstg-report-cancel{float:right;font-weight:700;margin-right:5px}#wpstg-success-button{font-weight:700}.wpstg-message{background-color:#f5e0de;border-radius:3px;box-sizing:border-box;-moz-box-sizing:border-box;color:rgba(0,0,0,.6);height:auto;margin:10px 0;min-height:18px;padding:6px 10px;position:relative}.wpstg-message.wpstg-error-message{background-color:#f5e0de;color:#b65147;font-size:12px}.wpstg-message.wpstg-success-message{background-color:#d7f8e0;color:#515151}.wpstg-message p{font-size:13px;margin:3px 0}.wpstg-warning{background-color:#ffb804;color:#fff;display:block;margin:10px 10px 10px 0;padding:10px}.wpstg-warning a{color:#fff;font-weight:700;text-decoration:underline}.wpstg-error{background-color:#e01e5a!important;border-color:transparent!important;box-shadow:none!important;color:#fff;display:block;margin:10px 10px 10px 0!important;padding:10px!important}.wpstg-error a{color:#fff;font-weight:700;text-decoration:underline}#wpstg-resume-cloning{display:none}#wpstg-external-db th{text-align:left;width:120px}#wpstg-db-connect{font-weight:400}#wpstg-db-status{border:1px solid transparent;border-radius:4px;display:block;margin-bottom:20px;margin-top:5px;padding:5px;text-align:center;text-decoration:none}.wpstg-text-field>#wpstg-db-status{margin-left:150px;margin-top:8px;min-width:300px}.wpstg-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.wpstg-failed{background-color:#f2dede;border-color:#ebccd1;color:#a94442}#wpstg_select_tables_cloning{font-size:13px;height:600px}#wpstg_select_tables_pushing{font-size:13px;height:400px}#wpstg-update-notify{background-color:#e01e5a;color:#fff;font-size:14px;line-height:normal;padding:10px}#wpstg-update-notify a{color:#fff;font-weight:700}.wpstg-pointer{cursor:pointer}.wpstg--tab--header{background-color:#fff;border-radius:2px;box-shadow:0 0 1px rgba(0,0,0,.125),0 1px 3px rgba(0,0,0,.02);color:#3e3e3e;position:relative;transition:border-color .2s ease-in-out}.wpstg--tab--header ul{display:flex}.wpstg--tab--header ul li{margin-bottom:0;margin-right:1em}.wpstg--tab--header ul li:last-child{margin-right:0}.wpstg--tab--header a{color:#c4c4c4;cursor:pointer;display:inline-block;font-size:18px;min-width:150px;padding:1em 1.25em 9px;text-align:center}.wpstg--tab--header a.wpstg--tab--active,.wpstg--tab--header a:hover{border-bottom:.4em solid #25a1f0;color:#25a1f0}.wpstg--tab--header a:hover{background-color:#fefefe}.wpstg--tab--content{display:none}.wpstg--tab--active{display:block}.wpstg--text--strong,.wpstg--text--strong *{font-weight:700!important}.wpstg--text--danger{color:#a94442}.wpstg--tooltip{display:inline-block;margin-left:5px;position:relative}.wpstg--tooltip.wpstg--tooltip-normal{border-bottom:0;margin-left:0}.wpstg--tooltip .wpstg--tooltiptext{background-color:#fff;border-radius:3px;-webkit-box-shadow:0 1px 4px rgba(0,0,0,.16);-moz-box-shadow:0 1px 4px rgba(0,0,0,.16);box-shadow:0 1px 4px rgba(0,0,0,.16);color:#505050;font-weight:400;padding:12px;position:absolute;text-align:left;visibility:hidden;width:300px;z-index:1}.wpstg--tooltiptext-backups{left:-150%;margin-left:-56px;margin-top:4px;top:100%;width:120px}.wpstg--tooltip.wpstg--exclude-rules--tooltip{border-bottom:0 solid transparent}.wpstg--tooltip.wpstg--exclude-rules--tooltip>.wpstg--tooltiptext{margin-left:-150px;margin-top:0}.wpstg--tooltip .wpstg--tooltiptext-backups:after{border:5px solid transparent;border-bottom-color:#fff;bottom:100%;content:" ";left:50%;margin-left:25px;position:absolute}.wpstg--tooltip .wpstg--tooltiptext.has-top-arrow{margin-top:6px}.wpstg--tooltip .wpstg--tooltiptext.has-top-arrow:after{border:5px solid transparent;border-bottom-color:#fff;bottom:100%;content:" ";left:50%;margin-left:-18px;position:absolute}.wpstg--snaphot-restore-table tr{line-height:12px}.wpstg-beta-notice{background-color:#b0e8b0;border-radius:3px;margin-bottom:20px;padding:7px}#wpstg-backup-name{font-size:1.875em;font-weight:600}#wpstg_select_tables_cloning option:checked,#wpstg_select_tables_pushing option:checked{-webkit-appearance:menulist-button;background-image:linear-gradient(0deg,#1e90ff,#1e90ff)}.wpstg--btn--cancel{color:#fff;font-size:16px;height:auto;line-height:normal;margin-bottom:1.5em;padding:.5em}.wpstg--btn--cancel,.wpstg--btn--cancel:hover{background:#ff3428;border-color:#e72f24}.wpstg--process--content>.wpstg--swal2-html-container{padding:4em 2em!important}.wpstg--modal--error--logs,.wpstg--modal--process--logs{background:#fff;border:1px solid #a8a8a8;border-radius:3px;display:none;height:300px;margin-top:1em;overflow:auto;padding-left:10px;padding-top:10px;text-align:justify}.wpstg--modal--error--logs{height:auto;max-height:300px}.wpstg--modal--process--logs p{font-size:12px;white-space:nowrap}.wpstg--modal--process--logs p.wpstg--modal--process--msg--info{color:#222}.wpstg--modal--process--logs p.wpstg--modal--process--msg--debug{color:#757575}.wpstg--modal--process--title{color:#565656;margin:.25em 0}.wpstg--modal--process--subtitle{color:#565656;margin:.5em 0}.wpstg--modal--error--logs>p{color:#222;font-size:14px;text-align:left}.wpstg--modal--error--logs p,.wpstg--modal--process--logs p{margin:0 0 2px}.wpstg--modal--process--msg--critical,.wpstg--modal--process--msg--error{color:#e01e5a}.wpstg--modal--process--msg--warning{color:#ff8c00}.wpstg--modal--process--msg-found{color:#e01e5a;font-size:16px;font-weight:700}.wpstg--modal--delete{color:#565656;margin-top:8px;text-align:left}.wpstg-swal-popup .wpstg--swal2-cancel.wpstg--btn--cancel{margin-bottom:0;text-shadow:none!important}.wpstg-swal-popup .wpstg-loader{display:inline-block!important}.wpstg--modal--process--generic-problem{border-left:5px solid #e01e5a;display:none;margin:.5em 0}.wpstg--modal--process--logs--tail{background:none;border:none;color:#565656;cursor:pointer;font-size:16px;text-decoration:underline}.wpstg--modal--backup--import--upload--title{color:#3e3e3e}.wpstg--modal--backup--import--configure,.wpstg--modal--backup--import--upload--container input[type=file],.wpstg--modal--backup--import--upload--status{display:none}#wpstg--backups--import--file-list{font-size:14px;font-weight:700}#wpstg--backups--import--file-list-empty{color:#e01e5a}.wpstg--modal--backup--import--filesystem label{font-size:14px}.wpstg--modal--backup--import--filesystem button{margin-bottom:20px}.wpstg--modal--backup--import--upload{color:#505050;min-height:30px;position:relative}.wpstg--modal--backup--import--upload--container{background-color:#f4fbff;border:3.5px dashed #dedede;border-radius:10px;margin:.5em;min-height:130px;padding:1em .5em;position:relative;transition:background-color .3s ease,color .3s ease}.wpstg--modal--backup--import--upload--container.wpstg--has-dragover span.wpstg--drop{display:inline-flex}.wpstg--modal--backup--import--upload--container input[type=file]{display:none}.wpstg--modal--backup--import--upload--container img{align-self:center;border:none;margin-top:10px;width:4em}.wpstg--modal--backup--import--upload--container span{margin-top:1em}.wpstg--backup--import--options>button{align-self:center;height:auto;line-height:normal;margin-top:1em;padding:1em;width:185px}.wpstg--backup--import--options{display:flex;justify-content:center;position:relative}.wpstg--backup--import--options ul{display:none}.wpstg--backup--import--options.wpstg--show-options ul{background:#25a1f0;border-color:#2188c9;border-radius:0 0 3px 3px;border-width:1px;box-sizing:border-box;display:block;margin:54px 0 0;padding:0;position:absolute;text-shadow:0 -1px 1px #006799,1px 0 1px #006799,0 1px 1px #006799,-1px 0 1px #006799;width:185px}.wpstg--backup--import--options.wpstg--show-options ul li{border-bottom:.1em solid #25a1f0;margin:0}.wpstg--backup--import--options.wpstg--show-options ul li:hover{background-color:#25a1f0}.wpstg--backup--import--options.wpstg--show-options ul li:last-child{border-bottom:none}.wpstg--backup--import--options ul li button{background:none;border:none;color:#fff;cursor:pointer;height:40px;line-height:40px;margin:0;width:100%}.wpstg--backup--import--options ul li button:hover{background-color:#259be6}.wpstg--modal--backup--import--search-replace--info{display:flex;flex-direction:row;margin:1em 0}.wpstg--modal--backup--import--info p{margin:0;text-align:left}.wpstg--modal--backup--import--search-replace--wrapper button{align-self:center}.wpstg--import--advanced-options--button{border:0;border-radius:3px;cursor:pointer;font-size:18px;text-shadow:0 -1px 1px #006799,1px 0 1px #006799,0 1px 1px #006799,-1px 0 1px #006799}.wpstg--modal--backup--import--search-replace--new{background-color:#25a1f0;color:#fff}.wpstg--modal--backup--import--search-replace--remove{background-color:#25a1f0;color:#fff;height:22px;margin-left:5px;width:22px}.wpstg--modal--backup--import--search-replace--input-group:first-child button{display:none}.wpstg--modal--backup--import--search-replace--input--container{display:flex;flex:1;flex-direction:column}.wpstg--modal--backup--import--search-replace--input-group{border-bottom:6px solid #f1f1f1;margin-bottom:10px;width:100%}.wpstg--modal--backup--import--search-replace--input-group input{border:1px solid #dedede;border-radius:3px;color:#666;display:inline-block;line-height:10px;margin-bottom:12px;min-width:250px;padding:8px;width:calc(50% - 20px)}.wpstg--modal--import--upload--process{align-items:center;color:#333;display:none;height:30px;justify-content:center;left:0;margin-bottom:20px;margin-top:20px;overflow:hidden;position:relative;text-indent:1em;top:0;white-space:nowrap;width:100%}.wpstg--modal--import--upload--progress{background:#98d452;border-radius:4px;color:#fff;height:100%;left:0;position:absolute;top:0}.wpstg--modal--import--upload--progress--title{z-index:9}.wpstg-fieldset:disabled{border-top:1px solid #fff;margin-top:20px;opacity:.8}.wpstg-fieldset{padding-left:20px}.wpstg-dark-alert{background-color:#0e86d9;color:#fff;font-weight:700;margin-top:0;padding:15px}.wpstg-dark-alert .wpstg-button--cta-red{margin-left:10px}.wpstg-form-group{align-items:center;display:block;margin-bottom:8px;width:100%}.wpstg-form-group>label{display:block;font-weight:700}.wpstg-text-field>input{display:block;line-height:1.5;width:300px}.wpstg-text-field>.wpstg-code-segment{margin-top:4px;min-width:300px}.wpstg-form-group>.wpstg-checkbox{position:relative}.wpstg-form-group>.wpstg-checkbox>input[type=checkbox]{left:150px}.wpstg-ml-4{margin-left:4px}#wpstg-advanced-settings hr{margin:20px 0}.wpstg-form-row{display:block}.wpstg-form-row input,.wpstg-form-row label{display:table-cell;margin-bottom:3px;margin-top:3px;padding-left:5px;padding-right:5px}.wpstg-form-row input{width:400px}.wpstg-form-row label{font-weight:700;white-space:nowrap;width:1px}#wpstg-db-connect-output #wpstg-db-status{width:390px}.wpstg-fs-14{font-size:14px}.wpstg-code-segment{display:block}.wpstg-form-group>.wpstg-checkbox{min-width:100%;width:100%}.wpstg-form-group>.wpstg-checkbox>input[type=checkbox]{margin-left:10px}@media only screen and (max-width:768px){.wpstg-form-group>label{min-width:auto;width:auto}.wpstg-text-field>input{width:100%}.wpstg-text-field>.wpstg-code-segment{margin-left:0;min-width:100%}.wpstg-tab-section{max-width:450px;width:calc(100vw - 60px)}}.wpstg-rounded{border-radius:3px}.wpstg-white-border{border:1px solid #fff!important}.wpstg-m-0{margin:0}.wpstg-mt-10px{margin-top:10px!important}.wpstg-mr-10px{margin-right:10px!important}.wpstg-my-10px{margin-bottom:10px!important;margin-top:10px!important}.wpstg-w-100{width:100%}.wpstg-box-shadow{box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}.wpstg-float-left{float:left}.wpstg-bold-text{font-weight:700}.wpstg-warning.notice{border-left:4px solid #ffba00}.wpstg-confirmation-label{background-color:#5b9dd9;border-radius:3px;color:#fff;padding:2px}.wpstg-my-6px{margin-bottom:6px;margin-top:6px}.wpstg-mb-10px{margin-bottom:10px}.wpstg-clear-both{clear:both}.wpstg-font-italic{font-style:italic}.wpstg-mt-20px{margin-top:20px}.wpstg-welcome-container{border:2px solid #fff;margin-bottom:20px;padding:20px}.wpstg-ml-30px{margin-left:30px}.wpstg-text-center{text-align:center}.wpstg-feedback-link{text-decoration:none}.wpstg-feedback-span{display:block;margin-bottom:3px}#wpstg-confirm-backup-restore-data{margin:40px;text-align:left}#wpstg-confirm-backup-restore-wrapper{margin:0 30px 30px}#wpstg-confirm-backup-restore-wrapper h3{color:#e01e5a}#wpstg-progress-backup,#wpstg-progress-db{background-color:#3fa5ee}#wpstg-progress-files.wpstg-pro,#wpstg-progress-sr{background-color:#3c9ee4}#wpstg-progress-data,#wpstg-progress-dirs{background-color:#3a96d7}#wpstg-progress-files:not(.wpstg-pro),#wpstg-progress-finishing{background-color:#378cc9}.wpstg-issue-resubmit-confirmation.wpstg--swal2-container,.wpstg-swal2-container.wpstg--swal2-container{z-index:10500}.wpstg-swal2-container.wpstg-swal2-loading .wpstg--swal2-actions,.wpstg-swal2-container.wpstg-swal2-loading .wpstg--swal2-header{display:none}body.toplevel_page_wpstg_backup .wpstg--swal2-container .wpstg--swal2-content,body.toplevel_page_wpstg_clone .wpstg--swal2-container .wpstg--swal2-content{z-index:2}.toplevel_page_wpstg_clone #swal2-content h2{color:#3e3e3e}.toplevel_page_wpstg_clone #swal2-content{line-height:1.5em}div#exportUploadsWithoutDatabaseWarning{background-color:#fafafa;border:1px solid #e3e3e3;border-radius:5px;font-size:.9rem;font-style:italic;margin:10px;padding:10px;text-align:center}.wpstg-advanced-options-dropdown-wrapper{display:none;margin-top:20px}.wpstg--modal--backup--import--search-replace--wrapper{margin-top:20px;text-align:left}.wpstg--modal--backup--import--search-replace--new--wrapper{text-align:center}.wpstg-import-backup-contains li{display:inline-block;margin-bottom:0}.wpstg-import-backup-contains li .wpstg-backups-contains{background-color:#f4f4f4!important;border-radius:3px;color:#979797;font-size:17px;height:18px;width:18px}.wpstg-import-backup-contains.wpstg-listing-single-backup li .wpstg-backups-contains{background-color:#fff;padding:2px}.wpstg-import-backup-contains.wpstg-listing-single-backup li .wpstg-backups-contains>.wpstg--dashicons{filter:invert(35%)}.wpstg-import-backup-contains .wpstg--tooltiptext{font-size:13px;left:-25px;padding:5px;text-align:center;width:80px}.wpstg-import-backup-contains-title,ul.wpstg-import-backup-contains{display:inline-block}.wpstg-import-backup-name{display:inline-block;font-weight:700}.wpstg-backup-more-info-toggle{cursor:pointer;display:inline-block;font-size:x-small;font-style:italic}.wpstg-backup-more-info-toggle::selection{background:none}ul.wpstg-import-backup-more-info{background-color:#f6f6f6;border:1px solid #878787;border-radius:3px;cursor:pointer;font-size:14px;margin-bottom:30px;margin-top:10px;padding:7px;text-align:left}ul.wpstg-import-backup-more-info:hover{background-color:#def2ff;border:1px solid #25a1f0}ul.wpstg-import-backup-more-info li{height:20px}.wpstg-backup-list{max-width:800px}.wpstg-backup-list h3{color:#3e3e3e}.wpstg-backup-list ul ul{margin-block-end:1em;margin-block-start:1em}.wpstg-push-confirmation-message{font-size:15px;text-align:justify}.wpstg-settings-row{padding-bottom:10px;padding-top:10px}.wpstg-settings-title{font-weight:600}.wpstg-settings-form-group{align-items:center;display:flex}.wpstg-settings-form-group>.wpstg-settings-message{margin:7px 0 0;padding:0;width:30%}.wpstg-excluded-filters-container{margin-bottom:10px;margin-top:10px;max-width:100%;padding:0;width:100%}.wpstg-excluded-filters-container>table{border-collapse:collapse;border-color:transparent;width:100%}.wpstg-excluded-filters-container td{height:20px;padding-bottom:4px;padding-top:4px}.wpstg-excluded-filters-container h4{margin:0}.wpstg-exclude-filters-foot{display:flex;justify-content:flex-start;padding:0}.wpstg-exclude-filter-dropdown>button:hover{background:#135e96;border:1px solid #135e96}.wpstg-exclude-filter-dropdown>.wpstg-dropdown-menu{width:128px}.wpstg-remove-exclude-rule{background-color:#e01e5a;border:1px solid #e01e5a;border-radius:10px;box-shadow:none;color:#fff!important;cursor:pointer;display:inline-flex;font-size:24px;font-weight:400;height:20px;justify-content:center;line-height:.7;margin-top:5px;outline:none;padding:0;width:20px}.wpstg-remove-exclude-rule:hover{background-color:#e01e5a;border-color:#e01e5a}.wpstg-code-block{background:#f8f8f8;border-radius:2px;font-size:1.2em;margin-top:4px}.wpstg-rule-info{background:#f8f8f8!important}code.wpstg-code{background:#fff;border:1px solid #aaa;color:#e01e5a;display:inline-block;font-size:11px;margin-bottom:1px;padding:2px 4px}.wpstg-exclusion-rule-info{align-items:center;background-color:#ffc107;border:1px solid #ffc107;border-radius:7px;box-shadow:none;color:#fff!important;display:inline-flex;font-size:14px;font-weight:400;height:14px;justify-content:center;outline:none;padding:0;vertical-align:middle;width:14px}.wpstg-exclusion-rule-info:hover{background-color:#ffba0c;border:1px solid #ffba0c}.wpstg-exclude-rule-input{background-color:#fff;border:1px solid #bbb;border-radius:0!important;box-shadow:none;color:#222;display:inline-block;font-size:12px!important;font-weight:400;line-height:1.5;margin-left:4px;margin-top:4px;min-height:24px!important;outline:none!important;padding:2px 6px;transition:all .3s cubic-bezier(.25,.8,.25,1);vertical-align:baseline!important;width:135px}.wpstg-excluded-filters-container tbody>tr:last-child .wpstg-exclude-rule-input{margin-bottom:4px}.wpstg-exclude-rule-input:hover{border:1px solid #999}.wpstg-exclude-rule-input:focus{border:1px solid #25a0f1!important;box-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24)!important}.wpstg-file-size-exclude-select,.wpstg-path-exclude-select{width:135px}.wpstg-file-size-exclude-select-small{width:52px}.wpstg-file-size-exclude-input{width:75px}.wpstg-staging-option-title{margin:15px 0 0}.wpstg-swal-push-container.wpstg--swal2-container{z-index:9995}#wpstg-scanning-files{padding-bottom:5px}#wpstg-scanning-db.wpstg-tab-section,#wpstg-scanning-files.wpstg-tab-section{padding-top:10px}.wpstg-reset-excludes-container{margin:10px 0}.wpstg-swal2-ajax-loader{align-items:center;display:flex;height:150px;justify-content:center;overflow:hidden;width:100%}@keyframes wpstg-loading-icon-anim{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.wpstg-swal2-ajax-loader>img{animation:wpstg-loading-icon-anim 1s linear infinite;-webkit-animation:wpstg-loading-icon-anim 1s linear infinite;height:64px;width:64px}.wpstg-swal2-container .wpstg-tab-section{width:auto!important}#wpstg-no-staging-site-results{margin-top:10px;max-width:375px}li#wpstg-backup-no-results{max-width:500px}#wpstg-no-staging-site-results div,li#wpstg-backup-no-results div{display:inline-block;text-align:center}#wpstg-no-staging-site-results .wpstg--dashicons,li#wpstg-backup-no-results .wpstg--dashicons{filter:invert(50%);margin-top:1px;position:absolute}#wpstg-no-staging-site-results .no-staging-site-found-text,li#wpstg-backup-no-results .no-backups-found-text{color:#5d5d5d;margin-left:20px}@media only screen and (max-width:680px){#wpstg-no-staging-site-results div,li#wpstg-backup-no-results div{width:100%}}#wpstg--modal--backup--download-inner p.wpstg-download-modal-text{color:#565656;font-size:16px}#wpstg--modal--backup--download-inner h2{color:#565656}.wpstg-backup-restore-contains-database,.wpstg-backup-restore-contains-files{display:none}.wpstg-green-button{background:#8bc34a;border:1px solid #78a93f;color:#fff;text-shadow:0 -1px 1px #78a93f,1px 0 1px #78a93f,0 1px 1px #40c921,-1px 0 1px #78a93f}.wpstg-green-button:hover{background:#78a93f}.wpstg-is-dir-loading{display:none;margin-left:8px;margin-top:-2px;position:absolute}.wpstg-ml-8px{margin-left:8px}.wpstg-mb-8px{margin-bottom:8px}.wpstg-btn-danger{background-color:#e01e5a;border:1px solid #e01e5a;color:#fff;text-shadow:none}.wpstg-btn-danger:hover{background:#c0194d;box-shadow:0 1px 4px rgba(0,0,0,.3)}.wpstg-swal2-container.wpstg-swal2-loading>.wpstg--swal2-modal{height:200px}.wpstg-reset-confirmation.wpstg-swal2-container:not(.wpstg-swal2-loading)>.wpstg--swal2-modal{max-width:480px}.wpstg-reset-confirmation.wpstg-swal2-container .wpstg--swal2-header{display:none}.wpstg-reset-confirmation.wpstg-swal2-container .wpstg--swal2-content{height:auto}.wpstg-reset-confirmation.wpstg-swal2-container>.wpstg--swal2-modal>.wpstg--swal2-content .wpstg-tabs-wrapper{height:auto!important;overflow-y:auto}.wpstg-reset-confirmation.wpstg-swal2-container>.wpstg--swal2-modal>.wpstg--swal2-content{font-size:13px}.wpstg-reset-confirmation.wpstg-swal2-container>.wpstg--swal2-modal>.wpstg--swal2-content .wpstg-dir{margin-bottom:4px}.wpstg-reset-confirmation.wpstg-swal2-container>.wpstg--swal2-modal>.wpstg--swal2-content .wpstg-subdir{margin-top:4px}.wpstg-reset-confirmation.wpstg-swal2-container.has-collapsible-open .wpstg--swal2-modal{height:calc(100vh - 70px)}.wpstg-reset-confirmation.wpstg-swal2-container.has-collapsible-open>.wpstg--swal2-modal>.wpstg--swal2-content .wpstg-tabs-wrapper{height:calc(100vh - 350px)!important}.wpstg--swal2-actions.wpstg--modal--actions>button{font-weight:500;margin-left:4px;margin-right:4px;min-width:80px;text-shadow:none;text-transform:uppercase}.wpstg-swal-popup{max-width:1200px!important}.wpstg-swal-popup.wpstg-push-finished .wpstg--swal2-title{color:#a8a8a8}.wpstg-swal-popup.wpstg-push-finished .wpstg--swal2-content{color:#a8a8a8;margin-top:8px}.wpstg-swal-popup .wpstg--swal2-progress-steps .wpstg--swal2-progress-step,.wpstg-swal-popup .wpstg--swal2-progress-steps .wpstg--swal2-progress-step-line,.wpstg-swal-popup .wpstg--swal2-progress-steps .wpstg--swal2-progress-step.wpstg--swal2-active-progress-step{background:#25a1f0}.wpstg-swal-popup .wpstg--swal2-progress-steps .wpstg--swal2-progress-step-line{width:2.75em}.wpstg--dashicons{height:16px;width:16px}.wpstg--dashicons.wpstg-dashicons-grey{filter:invert(20%)}.wpstg--dashicons.wpstg-dashicons-19{height:19px;width:19px}.wpstg--dashicons.wpstg-dashicons-21{height:21px;width:21px}#wpstg--tab--backup #wpstg-step-1{align-items:center;display:flex}#wpstg--tab--backup #wpstg-step-1 .wpstg--tooltip,.wpstg-advanced-options .wpstg--tooltip{align-items:center;border-bottom:0 solid transparent;display:inline-flex}.wpstg-advanced-options-site .wpstg--tooltip img.wpstg--dashicons{filter:invert(17%) sepia(0) saturate(1%) hue-rotate(195deg) brightness(97%) contrast(77%)}#wpstg--tab--backup #wpstg-step-1 .wpstg--tooltip{align-items:center;border-bottom:0 solid transparent;display:flex}.wpstg--tooltip .wpstg--tooltiptext-backups:after{left:calc(20% + 2px)}.wpstg-listing-single-backup .wpstg--dashicons{height:17px;width:17px}.wpstg-100-width{width:100px}.wpstg-caret{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid;cursor:pointer;display:inline-block;height:0;margin-left:2px;transition:transform .2s;vertical-align:middle;width:0}.wpstg-caret.wpstg-caret-up{transform:rotate(-180deg)}.wpstg-advanced-options-site label{display:block;font-size:16px;margin:.5em 0}#wpstg-confirm-backup-restore-data{font-size:18px;margin:30px 0 0}body.toplevel_page_wpstg_backup .wpstg--swal2-container.wpstg--swal2-backdrop-show,body.toplevel_page_wpstg_clone .wpstg--swal2-container.wpstg--swal2-backdrop-show{background:rgba(0,0,0,.6);z-index:9995}.wpstg-swal-popup.wpstg--swal2-popup{border-radius:8px;color:#3e3e3e;font-family:Verdana,Geneva,Tahoma,sans-serif;padding:24px;z-index:9999}.wpstg-swal-popup .wpstg--swal2-title{color:#3e3e3e;font-size:22px}.wpstg-swal-popup.wpstg--swal2-popup:not(.centered-modal) .wpstg--swal2-title{align-self:flex-start;margin-bottom:0;text-align:left}.wpstg-swal-popup .wpstg--swal2-close{right:8px;top:8px;z-index:5}.wpstg-swal-popup .wpstg--swal2-close:focus{outline:none}.wpstg-swal-popup.wpstg--swal2-popup:not(.centered-modal) .wpstg--swal2-actions{justify-content:flex-end}.wpstg-swal-popup .wpstg--swal2-actions>button{border:0;border-radius:4px;font-size:15px;font-weight:900;height:40px;line-height:normal;min-width:100px;padding:10px 12px;text-shadow:none;text-transform:capitalize}.wpstg-swal-popup.wpstg--swal2-popup:not(.centered-modal) .wpstg--swal2-actions>button{margin-left:8px}.wpstg-swal-popup .wpstg--swal2-actions>button.wpstg--swal2-cancel{background:#fff;border:1px solid rgba(29,28,29,.3);color:#1d1c1d;font-weight:500;text-shadow:none;width:100px}.wpstg-swal-popup .wpstg--swal2-actions>button:hover{box-shadow:0 1px 3px 0 rgba(0,0,0,.1)}.wpstg-swal-popup .wpstg--swal2-actions>button.wpstg--swal2-cancel:hover{background:rgba(28,29,28,.04)}#wpstg-backup-name-input{font-size:18px;height:44px}.wpstg-restore-finished-container .wpstg--swal2-title{color:#565656!important}.wpstg-restore-finished-container .wpstg--swal2-content{color:#a8a8a8;margin-top:20px}.wpstg-linear-loader>span[class*=wpstg-linear-loader-item]{animation:wpstg_linear_loader 3s infinite;animation-fill-mode:both;animation-timing-function:cubic-bezier(.03,.615,.995,.415);background:#333;border-radius:100%;display:inline-block;height:6px;margin:12px 2px;width:6px}.wpstg-linear-loader>span.wpstg-linear-loader-item:first-child{animation-delay:1s}.wpstg-linear-loader>span.wpstg-linear-loader-item:nth-child(2){animation-delay:.8s}.wpstg-linear-loader>span.wpstg-linear-loader-item:nth-child(3){animation-delay:.6s}.wpstg-linear-loader>span.wpstg-linear-loader-item:nth-child(4){animation-delay:.4s}.wpstg-linear-loader>span.wpstg-linear-loader-item:nth-child(5){animation-delay:.2s}.wpstg-linear-loader>span.wpstg-linear-loader-item:nth-child(6){animation-delay:0s}@keyframes wpstg_linear_loader{0%{opacity:0;transform:translateX(-30px)}25%{opacity:1}50%{opacity:0;transform:translateX(30px)}to{opacity:0}}.wpstg--modal--backup--import--upload--content{margin:1em auto;padding:.75em}.wpstg--modal--backup--import--upload--content .wpstg-linear-loader{display:none}#wpstg-multisite-disabled .wpstg-clone{width:355px}#wpstg-free-version-backups .wpstg-clone{text-align:center}#wpstg-free-version-backups .wpstg-clone p{font-size:16px}.wpstg-staging-info li .backup-notes{word-break:break-word}.wpstg--modal--import--upload--progress--title small{font-weight:400}#wpstg-report-issue-wrapper{position:relative}#wpstg-report-issue-wrapper .arrow-up{border-bottom:8px solid #fff;border-left:8px solid transparent;border-right:8px solid transparent;height:0;position:absolute;right:40px;top:-8px;width:0}.notice{margin:10px 20px 0 2px}.wpstg--notice{box-shadow:0 1px 1px rgba(0,0,0,.04);margin:20px 20px 20px 0;padding:1px 12px}.wpstg--error a:hover{color:#eee}.wpstg--error,.wpstg--error a{background:#e01e5a;color:#fff}.wpstg-button{border-radius:2px;cursor:pointer;display:inline-block;font-weight:500;outline:0;padding:2px 10px;text-decoration:none;text-transform:uppercase;transition:background-color .1s ease-in}.wpstg-button.wpstg-save{background-color:#1687a7;color:#fff}.wpstg-button.wpstg-save:hover{background-color:#276678}.wpstg-button.wpstg-button-light{animation:background-color .3s;background-color:#f8f8f8;border:1px solid #eee;color:#333}.wpstg-button.wpstg-button-light:hover{background-color:#e0e0e0;border:1px solid #e0e0e0}.wpstg-buttons .spinner{float:none;margin:0 0 0 5px}.wpstg-button.danger{background-color:#e01e5a;border-color:transparent;border-radius:2px;color:#fff;display:inline-block;text-align:center;text-decoration:none;text-transform:inherit}.wpstg-button.danger:hover{background-color:#c0194d}.wpstg-button--big{border-radius:3px;color:#fff;display:inline-block;font-size:16px;margin-top:20px;min-width:170px;padding:10px;text-align:center;text-decoration:none}.wpstg-button--primary{-webkit-appearance:none;border:1px solid rgba(29,28,29,.3);border-radius:2px;box-sizing:border-box;color:#171717;cursor:pointer;display:inline-block;font-size:13px;line-height:2.15384615;margin:0;min-height:30px;padding:0 10px;text-decoration:none;white-space:nowrap}.wpstg-button--primary:hover{background:rgba(28,29,28,.04);color:#000}.wpstg-button--secondary{background-color:transparent;border:1px solid rgba(29,28,29,.3);border-radius:2px;color:#95a5a6;cursor:pointer;display:inline-block;font-weight:500;outline:0;padding:4px 10px 2px;text-decoration:none;transition:background-color .1s ease-in}.wpstg-button--red{background-color:#e01e5a;border-color:#e01e5a;color:#fff}.wpstg-button--red:hover{background-color:#d02358;border-color:#e0255f;color:#fff}.wpstg-button--cta-red{background-color:#fe008f;border-color:#e01e5a;color:#fff}.wpstg-button--cta-red:hover{background-color:#f31391;border-color:#e0255f;color:#fff}.wpstg-button--blue{background-color:#25a0f1;border-color:#25a0f1;color:#fff}.wpstg-button--blue:hover{background-color:#259be6;border-color:#259be6;color:#fff}#wpstg-button-backup-upgrade{font-size:16px}.wpstg-staging-status{color:#e01e5a}#wpstg-push-changes,#wpstg-save-clone-data,#wpstg-start-updating{margin-left:5px}input.wpstg-textbox{border:1px solid #aaa;border-radius:.25rem;font-size:14px;padding:.25rem .5rem}input.wpstg-textbox:focus{border-color:#259be6;-webkit-box-shadow:0 0 0 .1rem hsla(0,0%,86.7%,.35);box-shadow:0 0 0 .1rem hsla(0,0%,86.7%,.35);outline:0}input.wpstg-textbox::placeholder{color:#888}.wpstg--advance-settings--checkbox{align-items:center;display:flex}.wpstg--advance-settings--checkbox>label{display:inline-block;font-size:14px;font-weight:bolder;width:165px}.wpstg--advance-settings--checkbox>.wpstg--tooltip{border-bottom:0 solid transparent;display:inline-block;margin-left:5px;margin-top:5px;position:relative}.wpstg--advance-settings--checkbox>.wpstg--tooltip>.wpstg--tooltiptext{left:-150px;top:18px}div#wpstg-restore-wait{align-items:center;background:#fff;display:none;flex-direction:column;height:100vh;justify-content:center;left:0;position:fixed;text-align:center;top:0;width:100vw;z-index:99999}div#wpstg-restore-wait .wpstg-title{font-weight:700}div#wpstg-restore-wait div{font-size:16px;margin-top:12px}.resumable-browse{cursor:pointer}.resumable-browse a{text-decoration:underline}.wpstg-upload-text{font-weight:600}.wpstg--modal--backup--import--upload--container.dragover{background-color:#94dc96;color:#fff;transition:background-color .7s}.wpstg--modal--backup--import--upload--container.dragover *{pointer-events:none}.wpstg--modal--backup--import--upload--container.dragover .wpstg-upload-text{display:none}.wpstg--modal--backup--import--upload--container.dragover .wpstg-dragover-text{display:block}.wpstg--modal--backup--import--upload--container .wpstg-dragover-text{display:none}#wpstg-invalid-license-message,#wpstg-invalid-license-message a{color:#e01e5a;font-weight:500;margin-left:6px}#wpstg-sidebar--banner{max-width:200px}@media screen and (max-width:1234px){.wpstg-h2{font-size:24px}#wpstg-welcome li{font-size:14px}}.wpstg-exclamation{background-color:#e01e5a;border-radius:100%;color:#fff;display:inline-block;font-weight:700;height:20px;margin:6px;text-align:center;width:20px}.wpstg--tab--contents{padding-top:1px}.wpstg-swal-show.wpstg--swal2-show{-webkit-animation:wpstg-swal-show .2s!important;animation:wpstg-swal-show .2s!important}@-webkit-keyframes wpstg-swal-show{0%{transform:scale(.3)}to{transform:scale(1)}}@keyframes wpstg-swal-show{0%{transform:scale(.3)}to{transform:scale(1)}}.wpstg-tab-item--vert-center{align-items:center;display:flex}.wpstg-db-comparison-modal{padding-left:10px;padding-right:10px}.wpstg-db-comparison-table{font-size:13px;width:100%}.wpstg-db-comparison-table tbody td{padding-top:6px}.wpstg-db-comparison-table tr>td:first-child,.wpstg-db-comparison-table tr>th:first-child{text-align:left}.wpstg-css-tick{border-bottom:3px solid #78b13f;border-right:3px solid #78b13f;display:inline-block;height:12px;transform:rotate(45deg);width:6px}.wpstg-css-cross{height:16px;left:-2px;position:relative;top:-8px;width:16px}.wpstg-css-cross:after,.wpstg-css-cross:before{background-color:#e01e5a;content:" ";height:17px;position:absolute;width:3px}.wpstg-css-cross:before{transform:rotate(45deg)}.wpstg-css-cross:after{transform:rotate(-45deg)}.wpstg-selection-preview{color:rgba(51,34,17,.4);font-size:12px;margin-left:20px}.wpstg-selection-preview.danger{color:#e01e5a}.wpstg--backup-automated{margin-bottom:-5px}.wpstg--dismiss-schedule{cursor:pointer}.wpstg-import-backup-contains.wpstg-listing-single-backup{vertical-align:middle}.wpstg-import-backup-contains.wpstg-listing-single-backup li{padding:2px}.wpstg--modal--backup--manage--schedules--content table{margin:0 auto;width:100%}.wpstg--modal--backup--manage--schedules--title{margin-bottom:10px;margin-top:0;text-align:left}.wpstg--modal--backup--import--upload--title{text-align:center}#wpstg--modal--backup--manage--schedules--content{text-align:left}#wpstg--modal--backup--manage--schedules--content thead{font-weight:700}#wpstg--modal--backup--manage--schedules--content .wpstg--tooltip.wpstg--dismiss-schedule{border-bottom:none}.wpstg--tooltip.wpstg--dismiss-schedule img.wpstg--dashicons{filter:invert(18%) sepia(57%) saturate(6238%) hue-rotate(332deg) brightness(93%) contrast(88%)}#wpstg--modal--backup--manage--schedules--content td{padding-right:25px;padding-top:10px}#wpstg--modal--backup--manage--schedules--content ul{margin-bottom:0;margin-top:0}#wpstg--modal--backup--manage--schedules--content ul li:first-child .wpstg--tooltip{margin-left:0}.wpstg-button:disabled{background-color:#ddd;border:1px solid #cfcfcf;color:#b3b3b3;cursor:not-allowed;text-shadow:none}#wpstg-backup-runs-info{font-size:12px;margin:20px 0 0;padding:0}#wpstg-backup-runs-info li{margin:0}div#wpstg-backup-locked{align-items:center;background:#fff;display:flex;margin-bottom:10px;max-width:770px;padding:15px;width:100%}#wpstg-backup-locked .icon{display:inline-block;height:20px}#wpstg-backup-locked .icon img{animation:wpstg-loading-icon-anim 2s infinite}#wpstg-backup-locked .text{display:inline-block;margin-left:15px}#backup-schedule-current-time{font-size:12px}.wpstg-backup-scheduling-options label{margin-top:17px}.wpstg-backup-scheduling-options .wpstg-storage-option{display:block;font-size:15px;margin:.5em 0}.wpstg-storage-option>span:not(.wpstg-storage-settings){display:inline-block;width:150px}.wpstg-storages-postbox{background-color:#fff;margin-bottom:8px;margin-top:8px;padding:13px 16px}.wpstg-storages-postbox a{color:#3c434a;font-weight:700;margin-right:8px;padding:8px;text-decoration:none}.wpstg-storages-postbox a:hover{color:#b70b72}.wpstg-storage-postbox{background-color:#fff;padding:4px 16px}.wpstg-storages-postbox a.wpstg-storage-provider-active{background:#b70b72;border-radius:3px;color:#fff;cursor:default;font-weight:700}.wpstg-storages-postbox a.wpstg-storage-provider-active:hover{background:#a10a64}.wpstg-storages-postbox a.wpstg-storage-provider-disabled{color:#999;cursor:not-allowed}.wpstg-provider-revoke-form{display:inline;margin-bottom:12px;margin-top:12px}.wpstg-provider-settings-form{margin-top:10px}.wpstg-provider-settings-form strong{display:block;margin:8px 0}.wpstg-provider-settings-form p{margin:0 0 8px}.wpstg-provider-settings-form fieldset{margin:0 0 16px;padding:0}.wpstg-provider-settings-form fieldset p{font-size:12px;margin:0;padding:5px}.wpstg-provider-settings-form fieldset label{display:block;margin-bottom:2px}.wpstg-provider-settings-form fieldset input{font-size:12px}.wpstg-provider-settings-form .wpstg-link-btn.wpstg-blue-primary{text-shadow:none}.wpstg-btn-google{align-items:center;border-radius:3px;border-width:0;box-shadow:0 1px 3px rgba(0,0,0,.6);box-sizing:border-box;color:#555;display:inline-flex;font-family:Roboto;font-size:14px;font-weight:700;height:40px;line-height:40px;margin-right:10px;outline:none;padding:8px 16px 8px 8px;text-decoration:none;transition:background-color .3s}.wpstg-btn-google img{height:18px;margin-left:5px;margin-right:12px;width:18px}#wpstg-custom-google-credentials{margin-top:20px}.wpstg-fieldset .wpstg-with-icon{align-items:center;display:inline-flex}.wpstg-fieldset .wpstg-with-icon .wpstg-fieldset-icon{margin-left:8px}.wpstg-fieldset .wpstg-with-icon .wpstg-fieldset-icon img{height:16px;width:16px}#wpstg-btn-provider-revoke{border-radius:2px}.wpstg-metabox-holder{background:#fff;border-radius:8px;-webkit-box-shadow:0 0 1px rgb(0 0 0/13%),0 1px 3px rgb(0 0 0/10%);box-shadow:0 0 1px rgb(0 0 0/13%),0 1px 3px rgb(0 0 0/10%);margin-left:16px;margin-right:32px;margin-top:60px;min-height:600px;padding:20px}@media only screen and (max-width:680px){.wpstg-metabox-holder{margin-left:0;margin-right:5px;padding:5px 0 0}#wpstg-tab-container .wpstg-settings-panel{overflow:auto;padding:0}.wpstg-form-table td:first-child{width:50%}}.wpstg-nav-tab{background:#dcdcde;border:1px solid #fff;border-bottom:none;color:#3c434a;float:left;font-size:14px;font-weight:600;line-height:1.71428571;margin-left:.5em;padding:5px 10px;text-decoration:none;white-space:nowrap}.wpstg-nav-tab-active,.wpstg-nav-tab-active:focus,.wpstg-nav-tab-active:focus:active,.wpstg-nav-tab-active:hover{background:#f3f5f7;border-bottom:1px solid #f0f0f1;-webkit-box-shadow:-4px -13px 14px -12px rgb(0 0 0/16%);box-shadow:-4px -13px 14px -12px rgb(0 0 0/16%);color:#b70b72}.wpstg-nav-tab-active{margin-bottom:-1px}.wpstg-nav-tab-wrapper{line-height:inherit;margin:0;padding-bottom:0;padding-top:9px}.wpstg-nav-tab-wrapper li{margin-bottom:0}#wpstg--js--translations{text-decoration:underline}
2
  /*# sourceMappingURL=wpstg-admin.min.css.map */
assets/css/dist/wpstg-admin.min.css.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["wpstg-admin.css"],"names":[],"mappings":"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","file":"wpstg-admin.min.css","sourcesContent":["/**\n * WPSTG Admin CSS\n *\n * @package WPSTG\n * @subpackage Admin CSS\n * @copyright Copyright (c) 2021, René Hermenau\n * @license http://opensource.org/licenses/gpl-2.0.php GNU Public License\n*/\n\n/* Font Faces */\n\n/* roboto-regular - latin */\n@font-face {\nfont-family: 'Roboto';\nfont-style: normal;\nfont-weight: 400;\nsrc: url('../../fonts/roboto-v29-latin-regular.eot'); /* IE9 Compat Modes */\nsrc: local(''),\n url('../../fonts/roboto-v29-latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */\n url('../../fonts/roboto-v29-latin-regular.woff2') format('woff2'), /* Super Modern Browsers */\n url('../../fonts/roboto-v29-latin-regular.woff') format('woff'), /* Modern Browsers */\n url('../../fonts/roboto-v29-latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */\n url('../../fonts/roboto-v29-latin-regular.svg#Roboto') format('svg'); /* Legacy iOS */\n}\n\n/* Colors */\n\n.wpstg--violet {\n color: #9d37ae;\n}\n\n.wpstg-border--violet {\n border: 1px solid #9d37ae;\n}\n\n.wpstg--red {\n color: #E01E5A;\n}\n\n.wpstg-cta--red {\n color: #fe008f;\n}\n\n.wpstg--blue {\n color: #24a1f0;\n}\n\n.wpstg--darkblue {\n color: #0e86d9;\n}\n\n.wpstg--green {\n color: #83c11f;\n}\n\n.wpstg--grey {\n color: #3e3e3e;\n}\n\n.wpstg--darkgrey {\n color: #1b1b1b;\n}\n\n.wpstg--filter--svg {\n filter: invert(24%) sepia(11%) saturate(558%) hue-rotate(169deg) brightness(97%) contrast(91%);\n}\n\n/* CSS for Tabs */\n\nbody.wp-staging-pro_page_wpstg_backup,\nbody.toplevel_page_wpstg_clone,\nbody.wp-staging-pro_page_wpstg-settings,\nbody.wp-staging-pro_page_wpstg-tools,\nbody.wp-staging-pro_page_wpstg-license {\n background-color: #f3f5f7;\n}\n\n#wpstg-tab-container ul {\n list-style: none;\n margin: 0;\n padding: 0;\n background: #f1f1f1;\n float: left;\n}\n\n#wpstg-tab-container ul li:first-child.selected-tab {\n border-top: none;\n}\n\n#wpstg-tab-container ul li a.selected-tab {\n font-weight: bold;\n text-decoration: none;\n}\n\n#wpstg-tab-container .row {\n padding-top: 10px;\n padding-bottom: 12px;\n}\n\n.wpstg-tabs-container .nav-tab-wrapper {\n padding: 0;\n}\n\n#wpstg-tab-container .row label strong,\n#wpstg-tab-container .row strong {\n font-weight: bold;\n}\n\n.wpstg-tabs a {\n padding: 5px;\n}\n\n#wpstg-tab-container > ul > li.wpstg-tabs.active {\n background-color: white;\n}\n\n#wpstg_settingsgeneral_header .row:nth-child(3),\n#wpstg_settingsgeneral_header .row:nth-child(4) {\n display: none;\n}\n\n#wpstg-tab-container .wpstg-settings-panel {\n padding: 0 20px 20px 20px;\n overflow: auto;\n}\n\n#wpstg-tab-container .wpstg-form-table th {\n vertical-align: top;\n text-align: left;\n padding: 20px 10px 20px 0;\n line-height: 1.3;\n font-weight: bold;\n font-size: 14px;\n color: #484848;\n width: 30%;\n}\n\n#wpstg-tab-container .wpstg-form-table tr {\n border-bottom: 1px solid #E7E7E7;\n}\n\n#wpstg-tab-container span.description {\n display: block;\n font-weight: 400;\n font-style: normal;\n font-size: 13px;\n margin-top: 7px;\n color: #484848;\n}\n\n#wpstg-tab-container .col-title {\n color: #484848;\n}\n\n@media only screen and (max-width: 680px) {\n #wpstg-tab-container ul {\n float: none;\n }\n\n #wpstg-tab-container .wpstg-form-table tr > th {\n width: 100%;\n }\n\n #wpstg-tab-container span.description {\n font-size: 14px;\n }\n\n #wpstg-tab-container .wpstg-form-table tr > th,\n #wpstg-tab-container .wpstg-form-table tr > td {\n padding: 10px;\n }\n}\n\n#wpstg-tab-container ul li {\n margin-bottom: 0;\n}\n\n#wpstg-tab-container ul li a {\n display: block;\n padding: 10px 4px 10px 14px;\n border-width: 1px 0;\n border-style: solid;\n border-top-color: white;\n border-bottom-color: #e7e7e7;\n text-decoration: none;\n color: #0097DF;\n font-weight: bold;\n}\n\n#wpstg-tab-container ul li a:hover {\n background-color: #e5e5e5;\n color: #777777;\n}\n\n.wpstg-logo {\n display: block;\n font-size: 16px;\n padding-top: 20px;\n width: 220px;\n float: left;\n}\n\n.wpstg-logo img {\n max-width: 212px;\n}\n\n.wpstg-version {\n display: block;\n padding-top: 40px;\n color: #9b9b9b;\n}\n\n.wpstg_admin .nav-tab {\n color: #3C3C3C;\n}\n\n#wpstg-tab-container table tbody tr:nth-child(1) > th > div {\n font-size: 20px;\n}\n\n/* Cloning workflow */\n\n#wpstg-clonepage-wrapper {\n margin-bottom: 20px;\n width: 98%;\n}\n\n@media screen and (min-width: 1090px) {\n #wpstg-clonepage-wrapper {\n float: left;\n margin-bottom: 20px;\n }\n}\n\n#wpstg-steps {\n margin-top: 0px;\n margin-left: 20px;\n}\n\n#wpstg-steps li {\n color: #444;\n line-height: 20px;\n padding-right: 10px;\n float: left;\n}\n\n.wpstg-step-num {\n border: 1px solid #3e3e3e;\n border-radius: 3px;\n display: inline-block;\n width: 20px;\n height: 20px;\n text-align: center;\n margin-right: 5px;\n}\n\n.wpstg-current-step {\n font-weight: bold;\n}\n\n.wpstg-current-step .wpstg-step-num {\n background: #3e3e3e;\n color: #eee;\n}\n\n.wpstg-box {\n margin: 10px 0;\n padding: 10px;\n position: relative;\n overflow: hidden;\n transition: border-color .2s ease-in-out;\n}\n\n.wpstg-clone {\n margin-bottom: 10px;\n padding: 16px;\n position: relative;\n transition: border-color .2s ease-in-out;\n background-color: #ffffff;\n color: #3e3e3e;\n border-radius: 3px;\n box-shadow: 0 0 1px rgba(0, 0, 0, .125), 0 1px 3px rgba(0, 0, 0, .1);\n}\n\n.wpstg-clone.active {\n border-color: #1d94cf;\n}\n\n.wpstg-clone-header {\n display: flex;\n align-items: center;\n}\n\n.wpstg-clone-title {\n display: inline-block;\n margin-right: 8px;\n font-size: 15px;\n max-width: 300px;\n text-decoration: none;\n font-weight: bold;\n color: #3e3e3e;\n}\n\n.wpstg-clone-title:hover {\n color: #111111;\n}\n\n.wpstg-clone-labels {\n display: inline-block;\n}\n\n\n.wpstg-clone-labels .wpstg-clone-label {\n display: inline-block;\n padding: 1px 4px;\n margin-right: 4px;\n font-size: 11px;\n border-radius: 3px;\n background: #8bc34a;\n color: #fff;\n}\n\n.wpstg-clone-actions {\n margin-left: auto;\n display: flex;\n margin-top: 5px;\n}\n\n.wpstg-dropdown {\n position: relative;\n}\n\n.wpstg-clone-actions .wpstg-dropdown-toggler {\n text-decoration: none;\n background: #25a1f0;\n padding: 6px 10px;\n border-radius: 2px;\n font-size: 14px;\n box-shadow: 0 0 1px rgba(0, 0, 0, .125), 0 1px 3px rgba(0, 0, 0, .2);\n color: #ffffff;\n}\n\n.wpstg-clone-actions .wpstg-dropdown-toggler:hover {\n background: #002648;\n color: white;\n}\n\n.wpstg-dropdown {\n position: relative;\n}\n\n.wpstg-dropdown > .wpstg-dropdown-menu {\n background: #fff;\n display: none;\n flex-direction: column;\n position: absolute;\n right: 0;\n top: calc(100% + 4px);\n padding: 8px;\n border-radius: 2px;\n width: 100px;\n box-shadow: 0 0 1px rgba(0, 0, 0, .125), 0 1px 3px rgba(0, 0, 0, .2);\n z-index: 1000;\n}\n\n.wpstg-dropdown > .wpstg-dropdown-menu.wpstg-menu-dropup {\n top: auto;\n bottom: 100%;\n transform: translate3d(0px, -3px, 0px);\n}\n\n.wpstg-dropdown > .wpstg-dropdown-menu.shown {\n display: flex;\n}\n\n.wpstg-clone-action,\n.wpstg-dropdown-action {\n color: #3e3e3e;\n padding: 6px 8px;\n border-radius: 3px;\n text-decoration: none;\n position: relative;\n transition: color .2s ease-in-out;\n border-bottom: 1px solid #f3f3f3;\n}\n\n.wpstg-clone-action:hover,\n.wpstg-dropdown-action:hover {\n background: rgba(0, 0, 0, 0.05);\n}\n\n.wpstg-dropdown-action {\n color: #3e3e3e;\n background: transparent;\n border: 0 solid black;\n outline: none;\n box-shadow: none;\n}\n\n.wpstg-remove-clone:hover {\n color: #E01E5A;\n}\n\n.wpstg-clone-action:last-child {\n border: none;\n}\n\n.wpstg-clone:hover .wpstg-clone-action {\n display: inline-block;\n}\n\n#wpstg-show-error-details:focus,\n#wpstg-workflow .wpstg-clone-action {\n outline: none;\n box-shadow: none;\n}\n\n.wpstg-link-btn {\n background: #45a1c9;\n color: #fff;\n display: inline-block;\n padding: 5px 10px;\n text-decoration: none;\n vertical-align: baseline;\n transition: all .2s ease-in-out;\n}\n\n.wpstg-link-btn:hover,\n.wpstg-link-btn:focus {\n color: #fff;\n outline: none;\n box-shadow: none;\n}\n\n#wpstg-workflow .wpstg-link-btn:active {\n vertical-align: baseline;\n}\n\n.wpstg-link-btn[disabled] {\n background: #777 !important;\n border-color: #555 !important;\n pointer-events: none;\n}\n\n#wpstg-cancel-cloning,\n#wpstg-cancel-cloning-update {\n margin-top: 5px;\n}\n\n#wpstg-cancel-cloning.success,\n#wpstg-cancel-cloning.success {\n background: #64dd58;\n border-color: #54bd4a;\n}\n\n#wpstg-error-wrapper,\n#wpstg-error-details {\n display: none;\n padding-top: 10px;\n font-size: 13px;\n clear: both;\n}\n\n#wpstg-show-error-details {\n display: inline-block;\n margin-left: 5px;\n color: #555;\n text-decoration: none;\n transition: color .2s ease-in-out;\n}\n\n#wpstg-show-error-details:hover {\n color: #1d94cf;\n}\n\n#wpstg-error-details {\n border-left: 5px solid #E01E5A;\n padding: 10px;\n width: 500px;\n}\n\n#wpstg-try-again {\n display: none;\n}\n\n#wpstg-home-link {\n float: right;\n}\n\n.wpstg-loader {\n content: url('../../img/loading.gif');\n display: none;\n}\n\n.wpstg-loader.wpstg-finished {\n display: block;\n content: \"Finished\";\n background-color: #00c89a;\n color: white;\n padding: 2px 10px;\n margin-top: 0;\n border-radius: 3px;\n}\n\n#wpstg-workflow {\n max-width: 800px;\n position: relative;\n clear: both;\n padding-top: 20px;\n float: left;\n min-width: 500px;\n min-height: 380px;\n padding-right: 20px;\n padding-bottom: 20px;\n}\n\n#wpstg-sidebar {\n float: left;\n max-width: 400px;\n display: block;\n margin-left: 10px;\n}\n\n#wpstg-workflow.loading::after,\n#wpstg-removing-clone.loading::after {\n background: rgba(255, 255, 255, .7);\n content: 'Loading... may take a while for huge websites';\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n padding-top: 100px;\n text-align: center;\n position: absolute;\n top: 0;\n left: 0;\n z-index: 99;\n}\n\n#wpstg-removing-clone.loading::after {\n content: 'REMOVING' !important;\n}\n\n#wpstg-existing-clones,\n#wpstg-removing-clone {\n position: relative;\n}\n\n#wpstg-existing-clones h3 {\n color: #3e3e3e;\n}\n\n#wpstg-removing-clone .wpstg-tab-section {\n display: block;\n}\n\n.wpstg-progress-bar {\n max-width: 900px;\n height: 27px;\n padding: 0;\n background-color: #d6d8d7;\n}\n\n.wpstg-progress {\n float: left;\n background: #3fa5ee;\n width: 0;\n height: 100%;\n transition: width .6s ease;\n color: white;\n line-height: 25px;\n text-align: center;\n overflow: hidden;\n}\n\n.wpstg-progress-files {\n background: #16b4f0;\n width: 0;\n height: 100%;\n transition: width .6s ease;\n color: white;\n line-height: 25px;\n text-align: center;\n}\n\n#wpstg-new-clone-id.wpstg-error-input,\n#wpstg-clone-path.wpstg-error-input {\n border: 1px solid #E01E5A;\n box-shadow: 0 0 2px rgba(255, 66, 53, .8);\n}\n\n#wpstg-new-clone-id {\n width: 450px;\n max-width: 100%;\n margin-left: 15px;\n}\n\n#wpstg-new-clone {\n background: #25a1f0;\n border-color: #2188c9;\n}\n\n#wpstg-new-clone:hover {\n background: #259be6;\n border-color: #2188c9;\n}\n\n#wpstg-clone-path {\n margin-left: 10px;\n width: 350px;\n}\n\n.wpstg-error-msg {\n color: #E01E5A;\n}\n\n#wpstg-clone-id-error {\n display: block;\n background-color: #f0f8ff;\n padding: 10px;\n margin: 20px;\n}\n\n#wpstg-start-cloning + .wpstg-error-msg {\n display: block;\n margin-top: 5px;\n}\n\n.wpstg-size-info {\n color: #999;\n font-weight: normal;\n position: relative;\n left: 2px;\n}\n\n.wpstg-db-table .wpstg-size-info {\n top: 2px;\n}\n\n.wpstg-db-table:hover {\n background-color: #f0f8ff;\n}\n\n#wpstg-workflow #wpstg-start-cloning {\n margin-left: 5px;\n vertical-align: baseline;\n}\n\n\n/* Tabs */\n\n.wpstg-tabs-wrapper {\n max-width: 640px;\n margin: 10px 0;\n}\n\n#wpstg-path-wrapper {\n border-bottom: 2px dashed #ccc;\n padding-bottom: 10px;\n margin-bottom: 10px;\n}\n\n.wpstg-tab-section {\n border-bottom: 1px solid #ddd;\n border-right: none;\n border-left: none;\n display: none;\n width: calc(100% - 72px);\n padding: 0px 36px;\n}\n\n.wpstg-tab-section::after {\n display: block;\n content: '';\n clear: both;\n}\n\n.wpstg-tab-header {\n border-bottom: 1px solid #ddd;\n border-right: none;\n border-left: none;\n color: #444;\n font-size: 16px;\n font-weight: bold;\n display: block;\n padding: 10px;;\n text-decoration: none;\n}\n\n.wpstg-tab-triangle {\n display: inline-block;\n margin-right: 12px;\n animation: transform 0.5s;\n width: 0;\n height: 0;\n margin-top: -3px;\n vertical-align: middle;\n border-top: 5px solid transparent;\n border-bottom: 5px solid transparent;\n border-left: 10px solid;\n transition: transform 0.2s;\n cursor: pointer;\n}\n\n.wpstg-tab-triangle.wpstg-no-icon {\n margin-right: 2px;\n width: auto;\n height: auto;\n vertical-align: auto;\n border-top: 0px solid;\n border-bottom: 0px solid;\n border-left: 0px solid;\n}\n\n.wpstg-tab-triangle.wpstg-rotate-90 {\n transform: rotate(90deg);\n}\n\n.wpstg-tab-header:focus {\n color: #444;\n outline: none;\n box-shadow: none;\n}\n\n#wpstg-large-files {\n display: none;\n border: 1px dashed #ccc;\n padding: 10px 10px 10px;\n margin-top: 20px;\n position: relative;\n font-size: 12px;\n}\n\n#wpstg-large-files h3 {\n background: #fff;\n margin: 0;\n padding: 0 5px;\n position: absolute;\n top: -10px;\n left: 5px;\n}\n\n.wpstg-subdir {\n display: none;\n margin-left: 20px;\n}\n\n.wpstg-subdir.wpstg-push {\n display: block;\n margin-left: 20px;\n}\n\n.wpstg-dir a.disabled {\n color: #888;\n cursor: default;\n text-decoration: none;\n}\n\n.wpstg-check-subdirs {\n display: inline-block;\n margin-left: 10px;\n}\n\n.wpstg-notice-alert {\n display: block;\n background-color: #E01E5A;\n padding: 20px;\n max-width: 600px;\n margin-top: 10px;\n color: white;\n}\n\n.wpstg-notice--white {\n display: block;\n background-color: #ffffff;\n padding: 20px;\n max-width: 600px;\n margin-top: 10px;\n}\n\n.wpstg-notice-alert a {\n color: white;\n}\n\n.wpstg-notice-alert h3 {\n color: white;\n}\n\n.wpstg-header {\n font-weight: 400;\n line-height: 1.6em;\n font-size: 19px;\n border-bottom: 1px solid #DFDFDF;\n clear: both;\n padding-top: 10px;\n}\n\n#wpstg-clone-label {\n font-size: 14px;\n font-weight: bold;\n}\n\n.wpstg-log-details {\n height: 300px;\n overflow: scroll;\n max-width: 650px;\n font-family: monospace;\n font-size: 12px;\n line-height: 15px;\n border: 1px solid #FFF;\n background-color: black;\n color: #c0c0c0;\n padding: 3px;\n white-space: nowrap;\n margin-top: 15px;\n}\n\n#wpstg-finished-result {\n display: none;\n}\n\n#wpstg-remove-cloning {\n background: #ff3428;\n border-color: #e72f24;\n margin-top: 5px;\n}\n\n#wpstg-success-notice {\n padding: 10px;\n background-color: white;\n max-width: 900px;\n border: 1px solid #ccc;\n margin-top: 20px;\n}\n\n.wpstg_beta_notice {\n margin-bottom: 20px;\n}\n\n.wpstg-sysinfo {\n width: 700px;\n height: 700px;\n}\n\n.wpstg-form-table .col-title label {\n font-weight: 600;\n}\n\n.wpstg-form-table td:first-child {\n width: 30%;\n}\n\n.wpstg-share-button-container {\n margin: 5px 0;\n}\n\n.wpstg-share-button-container p {\n margin: 0 0 10px 0;\n}\n\n.wpstg-share-button {\n display: inline-block;\n}\n\n.wpstg-share-button a {\n text-decoration: none;\n}\n\n.wpstg-share-button .wpstg-share {\n font-family: sans-serif;\n font-weight: bold;\n text-decoration: none;\n text-align: center;\n}\n\n.wpstg-share-button .wpstg-share {\n -webkit-border-radius: 2px;\n -moz-border-radius: 2px;\n border-radius: 2px;\n color: #FFF;\n display: inline;\n font-size: 12px;\n padding: 4px 8px;\n}\n\n.wpstg-share-button-twitter .wpstg-share {\n background-color: #00ABF0;\n}\n\n.wpstg-share-button-facebook .wpstg-share {\n background-color: #3b5998;\n}\n\n.wpstg-share-button-googleplus .wpstg-share {\n background-color: #F53424;\n}\n\n.wpstg-share-button-twitter .share:active,\n.wpstg-share-button-facebook .share:active,\n.wpstg-share-button-googleplus .share:active {\n background-color: #353535;\n}\n\n#wpstg-check-space {\n margin-left: 8px;\n}\n\n#wpstg-welcome li {\n font-size: 18px;\n line-height: 29px;\n position: relative;\n padding-left: 23px;\n list-style: none !important;\n}\n\n#wpstg-welcome {\n margin-top: 20px;\n margin-right: 20px;\n background-color: white;\n}\n\n.wpstg-heading-pro {\n font-weight: bold;\n}\n\n.wpstg-h2 {\n margin-top: 0;\n margin-bottom: 1.2rem;\n font-size: 30px;\n line-height: 2.5rem;\n}\n\n#wpstg-welcome li:before {\n width: 1em;\n height: 100%;\n background: url(data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%2377B227%22%20d%3D%22M1671%20566q0%2040%2D28%2068l%2D724%20724%2D136%20136q%2D28%2028%2D68%2028t%2D68%2D28l%2D136%2D136%2D362%2D362q%2D28%2D28%2D28%2D68t28%2D68l136%2D136q28%2D28%2068%2D28t68%2028l294%20295%20656%2D657q28%2D28%2068%2D28t68%2028l136%20136q28%2028%2028%2068z%22%2F%3E%3C%2Fsvg%3E) left .4em no-repeat;\n background-size: contain;\n content: \"\";\n position: absolute;\n top: -2px;\n left: 0;\n color: #77b227;\n}\n\n.wpstg-h1 {\n margin-bottom: 1.35rem;\n font-size: 2.5em;\n line-height: 3.68rem;\n letter-spacing: normal;\n}\n\n.wpstg--swal2-content {\n color: #3e3e3e;\n}\n\n.wpstg--swal2-content h1 {\n color: #444;\n}\n\n#wpstg-welcome h2 {\n margin: 0 0 15px;\n}\n\n#wpstg-welcome .wpstg-footer {\n clear: both;\n margin-top: 20px;\n font-style: italic;\n}\n\n#wpstg-footer {\n clear: both;\n margin-top: 20px;\n margin-right: 10px;\n padding-top: 50px;\n}\n\n#wpstg-footer a {\n text-decoration: none;\n}\n\n#wpstg-footer li {\n margin-bottom: 2px;\n list-style: circle;\n}\n\n#wpstg-footer ul {\n margin-left: 15px;\n margin-top: 0px;\n}\n\n.wpstg-footer--title {\n margin-left: 15px;\n}\n\n.wpstg-staging-info {\n margin-top: 8px;\n color: #3e3e3e;\n font-size: 12px;\n}\n\n.wpstg-staging-info a {\n color: #3e3e3e;\n}\n\n.wpstg-staging-info li {\n margin-bottom: 2px;\n}\n\n.wpstg-bold {\n font-weight: 600;\n}\n\n#wpstg-processing-status {\n margin-top: 5px;\n font-size: 13px;\n font-weight: 400;\n float: left;\n}\n\n#wpstg-processing-timer {\n margin-top: 5px;\n font-size: 13px;\n font-weight: 400;\n float: right;\n}\n\n#wpstg-report-issue-button {\n margin-left: 30px;\n border: 1px solid #E01E5A;\n color: #E01E5A;\n background-color: white;\n}\n\n#wpstg-report-issue-button:hover {\n background-color: #dc2b62;\n color: #fff;\n}\n\n.wpstg-blue-primary {\n display: inline-block;\n text-decoration: none;\n font-size: 13px;\n height: 28px;\n margin: 0;\n padding: 0 10px 1px;\n cursor: pointer;\n border-width: 1px;\n border-style: solid;\n -webkit-appearance: none;\n border-radius: 3px;\n white-space: nowrap;\n box-sizing: border-box;\n background: #25a1f0;\n border-color: #2188c9;\n color: #fff;\n text-shadow: 0 -1px 1px #006799, 1px 0 1px #006799, 0 1px 1px #006799, -1px 0 1px #006799;\n}\n\na.wpstg-blue-primary {\n padding: 5px 10px;\n height: auto;\n}\n\n.wpstg-blue-primary:hover {\n background-color: #259be6;\n}\n\n.wpstg-report-issue-form {\n position: absolute;\n z-index: 999;\n width: 300px;\n background-color: #fff;\n padding: 15px 15px 10px;\n border: 1px solid #e8e8e8;\n border-radius: 3px;\n box-shadow: 0 1px 0 0 #fff inset;\n display: none;\n right: 0;\n top: 35px;\n}\n\n@media (max-width: 600px) {\n .wpstg-report-issue-form {\n position: relative;\n }\n}\n\n.wpstg-report-show {\n display: block;\n}\n\n.wpstg-field input[type=text],\n.wpstg-field textarea {\n width: 100%;\n font-weight: 400;\n line-height: 1.4;\n margin-bottom: 4px;\n}\n\n.wpstg-report-email,\n.wpstg-report-hosting-provider {\n width: 100%;\n font-weight: 400;\n font-size: .8rem;\n height: 2.3rem;\n line-height: 2.3rem;\n border-radius: 3px;\n margin-bottom: 4px;\n padding: 0 10px;\n}\n\n.wpstg-report-description {\n border-radius: 3px;\n font-size: .8rem;\n padding: 6px 10px;\n resize: none;\n}\n\n.wpstg-report-privacy-policy {\n font-size: 12px;\n margin-bottom: 15px;\n}\n\n#wpstg-report-cancel {\n float: right;\n margin-right: 5px;\n font-weight: bold;\n}\n\n#wpstg-success-button {\n font-weight: bold;\n}\n\n.wpstg-message {\n box-sizing: border-box;\n -moz-box-sizing: border-box;\n background-color: #f5e0de;\n border-radius: 3px;\n color: rgba(0, 0, 0, .6);\n height: auto;\n margin: 10px 0;\n min-height: 18px;\n padding: 6px 10px;\n position: relative;\n}\n\n.wpstg-message.wpstg-error-message {\n background-color: #f5e0de;\n color: #b65147;\n font-size: 12px;\n}\n\n.wpstg-message.wpstg-success-message {\n background-color: #d7f8e0;\n color: #515151;\n}\n\n.wpstg-message p {\n margin: 3px 0;\n font-size: 13px;\n}\n\n.wpstg-warning {\n display: block;\n padding: 10px;\n background-color: #ffb804;\n color: #ffffff;\n margin: 10px 10px 10px 0;\n}\n\n.wpstg-warning a {\n color: #ffffff;\n font-weight: bold;\n text-decoration: underline;\n}\n\n.wpstg-error {\n display: block;\n padding: 10px !important;\n background-color: #E01E5A !important;\n color: #ffffff;\n margin: 10px 10px 10px 0 !important;\n border-color: transparent !important;\n border-left-color: transparent !important;\n box-shadow: none !important;\n}\n\n.wpstg-error a {\n color: #ffffff;\n font-weight: bold;\n text-decoration: underline;\n}\n\n#wpstg-resume-cloning {\n display: none;\n}\n\n#wpstg-external-db th {\n text-align: left;\n width: 120px;\n}\n\n#wpstg-db-connect {\n font-weight: normal;\n}\n\n#wpstg-db-status {\n display: block;\n margin-top: 5px;\n padding: 5px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n border-radius: 4px;\n text-decoration: none;\n text-align: center;\n}\n\n.wpstg-text-field > #wpstg-db-status {\n margin-top: 8px;\n margin-left: 150px;\n min-width: 300px;\n}\n\n.wpstg-success {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #d6e9c6;\n}\n\n.wpstg-failed {\n color: #a94442;\n background-color: #f2dede;\n border-color: #ebccd1;\n}\n\n#wpstg_select_tables_cloning {\n height: 600px;\n font-size: 13px;\n}\n\n#wpstg_select_tables_pushing {\n height: 400px;\n font-size: 13px;\n}\n\n#wpstg-update-notify {\n background-color: #E01E5A;\n font-size: 14px;\n color: #ffffff;\n line-height: normal;\n padding: 10px;\n}\n\n#wpstg-update-notify a {\n color: #ffffff;\n font-weight: bold;\n}\n\n.wpstg-pointer {\n cursor: pointer;\n}\n\n.wpstg--tab--header {\n background-color: white;\n /* margin-bottom: 10px; */\n /* padding: 16px; */\n position: relative;\n transition: border-color .2s ease-in-out;\n background-color: #ffffff;\n color: #3e3e3e;\n border-radius: 2px;\n box-shadow: 0 0 1px rgba(0, 0, 0, .125), 0 1px 3px rgba(0, 0, 0, .02);\n}\n\n.wpstg--tab--header ul {\n display: flex;\n}\n\n.wpstg--tab--header ul li {\n margin-right: 1em;\n margin-bottom: 0px;\n}\n\n.wpstg--tab--header ul li:last-child {\n margin-right: 0;\n}\n\n.wpstg--tab--header a {\n min-width: 150px;\n text-align: center;\n cursor: pointer;\n display: inline-block;\n padding: 1em 1.25em;\n padding-bottom: 9px;\n color: #c4c4c4;\n font-size: 18px;\n /*\n border: solid 1px;\n */\n}\n\n.wpstg--tab--header a.wpstg--tab--active {\n border-bottom: .4em solid #25A1F0;\n color: #25A1F0;\n}\n\n.wpstg--tab--header a:hover {\n background-color: #fefefe;\n border-bottom: 0.4em solid #25A1F0;\n color: #25A1F0;\n}\n\n.wpstg--tab--content {\n display: none;\n}\n\n.wpstg--tab--active {\n display: block;\n}\n\n.wpstg--text--strong,\n.wpstg--text--strong * {\n font-weight: bold !important;\n}\n\n.wpstg--text--danger {\n color: #a94442;\n}\n\n.wpstg--tooltip {\n position: relative;\n display: inline-block;\n margin-left: 5px;\n}\n\n.wpstg--tooltip.wpstg--tooltip-normal {\n margin-left: 0;\n border-bottom: 0;\n}\n\n.wpstg--tooltip .wpstg--tooltiptext {\n visibility: hidden;\n width: 300px;\n background-color: #ffffff;\n color: #505050;\n text-align: left;\n padding: 12px;\n border-radius: 3px;\n position: absolute;\n z-index: 1;\n -webkit-box-shadow: rgba(0, 0, 0, 0.16) 0px 1px 4px;\n -moz-box-shadow: rgba(0, 0, 0, 0.16) 0px 1px 4px;\n box-shadow: rgba(0, 0, 0, 0.16) 0px 1px 4px;\n font-weight: normal;\n}\n\n.wpstg--tooltiptext-backups {\n width: 120px;\n top: 100%;\n left: -150%;\n margin-left: -56px;\n margin-top: 4px;\n}\n\n.wpstg--tooltip.wpstg--exclude-rules--tooltip {\n border-bottom: 0px solid transparent;\n}\n\n.wpstg--tooltip.wpstg--exclude-rules--tooltip > .wpstg--tooltiptext {\n margin-top: 0px;\n margin-left: -150px;\n}\n\n/**\nTooltip top arrow\n */\n\n.wpstg--tooltip .wpstg--tooltiptext-backups::after {\n content: \" \";\n position: absolute;\n bottom: 100%;\n /* At the top of the tooltip */\n left: 50%;\n margin-left: 25px;\n border-width: 5px;\n border-style: solid;\n border-color: transparent transparent white transparent;\n}\n\n.wpstg--tooltip .wpstg--tooltiptext.has-top-arrow {\n margin-top: 6px;\n}\n\n.wpstg--tooltip .wpstg--tooltiptext.has-top-arrow::after {\n content: \" \";\n position: absolute;\n bottom: 100%;\n left: 50%;\n margin-left: -18px;\n border-width: 5px;\n border-style: solid;\n border-color: transparent transparent white transparent;\n}\n\n.wpstg--snaphot-restore-table tr {\n line-height: 12px;\n}\n\n.wpstg-float-left {\n float: left;\n}\n\n.wpstg-beta-notice {\n background-color: #b0e8b0;\n border-radius: 3px;\n padding: 7px;\n margin-bottom: 20px;\n}\n\n#wpstg-backup-name {\n font-size: 1.875em;\n font-weight: 600;\n}\n\n#wpstg_select_tables_cloning option:checked,\n#wpstg_select_tables_pushing option:checked {\n /* Cannot use background color here because Chrome and Firefox ignore it even if set to !important */\n -webkit-appearance: menulist-button;\n background-image: linear-gradient(0deg, #1e90ff 0%, #1e90ff 100%);\n}\n\n.wpstg--btn--cancel {\n background: #ff3428;\n border-color: #e72f24;\n color: #fff;\n height: auto;\n line-height: normal;\n font-size: 16px;\n padding: .5em;\n margin-bottom: 1.5em;\n}\n\n.wpstg--btn--cancel:hover {\n background: #ff3428;\n border-color: #e72f24;\n}\n\n.wpstg--process--content > .wpstg--swal2-html-container {\n padding: 4em 2em !important;\n}\n\n.wpstg--modal--process--logs,\n.wpstg--modal--error--logs {\n background: #ffffff;\n border: 1px solid #a8a8a8;\n border-radius: 3px;\n height: 300px;\n margin-top: 1em;\n display: none;\n padding-top: 10px;\n padding-left: 10px;\n overflow: auto;\n text-align: justify;\n}\n\n.wpstg--modal--error--logs {\n height: auto;\n max-height: 300px;\n}\n\n.wpstg--modal--process--logs p {\n font-size: 12px;\n white-space: nowrap;\n}\n\n.wpstg--modal--process--logs p.wpstg--modal--process--msg--info {\n color: #222222;\n}\n\n.wpstg--modal--process--logs p.wpstg--modal--process--msg--debug {\n color: #757575;\n}\n\n.wpstg--modal--process--title {\n color: #565656;\n margin: .25em 0;\n}\n\n.wpstg--modal--process--subtitle {\n margin: .5em 0;\n color: #565656;\n}\n\n.wpstg--modal--error--logs > p {\n text-align: left;\n font-size: 14px;\n color: #222222;\n}\n\n.wpstg--modal--process--logs p,\n.wpstg--modal--error--logs p {\n margin: 0px;\n margin-bottom: 2px;\n}\n\n.wpstg--modal--process--msg--error {\n color: #E01E5A;\n}\n\n.wpstg--modal--process--msg--critical {\n color: #E01E5A;\n}\n\n.wpstg--modal--process--msg--warning {\n color: darkorange;\n}\n\n.wpstg--modal--process--msg-found {\n font-size: 16px;\n color: #E01E5A;\n font-weight: bold;\n}\n\n.wpstg--modal--delete {\n text-align: left;\n margin-top: 8px;\n color: #565656;\n}\n\n.wpstg-swal-popup .wpstg--swal2-cancel.wpstg--btn--cancel {\n margin-bottom: 0;\n text-shadow: none !important;\n}\n\n.wpstg-swal-popup .wpstg-loader {\n display: inline-block !important;\n}\n\n.wpstg--modal--process--generic-problem {\n display: none;\n border-left: 5px solid #E01E5A;\n margin: .5em 0;\n}\n\n.wpstg--modal--process--logs--tail {\n font-size: 16px;\n color: #565656;\n background: none;\n border: none;\n cursor: pointer;\n text-decoration: underline;\n}\n\n.wpstg--modal--backup--import--upload--title {\n color: #3e3e3e;\n}\n\n.wpstg--modal--backup--import--configure,\n.wpstg--modal--backup--import--upload--status,\n.wpstg--modal--backup--import--upload--container input[type=\"file\"] {\n display: none;\n}\n\n#wpstg--backups--import--file-list {\n font-size: 14px;\n font-weight: bold;\n}\n\n#wpstg--backups--import--file-list-empty {\n color: #E01E5A;\n}\n\n.wpstg--modal--backup--import--filesystem label {\n font-size: 14px;\n}\n\n.wpstg--modal--backup--import--filesystem button {\n margin-bottom: 20px;\n}\n\n.wpstg--modal--backup--import--upload {\n position: relative;\n min-height: 30px;\n}\n\n.wpstg--modal--backup--import--upload {\n color: #505050;\n}\n\n.wpstg--modal--backup--import--upload--container {\n position: relative;\n border-radius: 10px;\n margin: .5em;\n padding: 1em .5em;\n border: 3.5px dashed #dedede;\n transition: background-color 0.3s ease, color 0.3s ease;\n background-color: #f4fbff;\n min-height: 130px;\n}\n\n.wpstg--modal--backup--import--upload--container.wpstg--has-dragover span.wpstg--drop {\n display: inline-flex;\n}\n\n.wpstg--modal--backup--import--upload--container input[type='file'] {\n display: none;\n}\n\n.wpstg--modal--backup--import--upload--container img {\n margin-top: 10px;\n width: 4em;\n align-self: center;\n border: none;\n}\n\n.wpstg--modal--backup--import--upload--container span {\n margin-top: 1em;\n}\n\n.wpstg--backup--import--options > button {\n margin-top: 1em;\n padding: 1em;\n align-self: center;\n width: 185px;\n height: auto;\n line-height: normal;\n}\n\n.wpstg--backup--import--options {\n position: relative;\n display: flex;\n justify-content: center;\n}\n\n.wpstg--backup--import--options ul {\n display: none;\n}\n\n.wpstg--backup--import--options.wpstg--show-options ul {\n padding: 0;\n margin: 54px 0 0 0;\n display: block;\n position: absolute;\n width: 185px;\n background: #25a1f0;\n box-sizing: border-box;\n border-radius: 0 0 3px 3px;\n border-width: 1px;\n border-color: #2188c9;\n text-shadow: 0 -1px 1px #006799, 1px 0 1px #006799, 0 1px 1px #006799, -1px 0 1px #006799;\n}\n\n.wpstg--backup--import--options.wpstg--show-options ul li {\n border-bottom: .1em solid #25a1f0;\n margin: 0;\n}\n\n.wpstg--backup--import--options.wpstg--show-options ul li:hover {\n background-color: #25a1f0;\n}\n\n.wpstg--backup--import--options.wpstg--show-options ul li:last-child {\n border-bottom: none;\n}\n\n.wpstg--backup--import--options ul li button {\n cursor: pointer;\n background: none;\n border: none;\n margin: 0;\n width: 100%;\n color: white;\n height: 40px;\n line-height: 40px;\n}\n\n.wpstg--backup--import--options ul li button:hover {\n background-color: #259be6;\n}\n\n.wpstg--modal--backup--import--search-replace--info {\n margin: 1em 0;\n display: flex;\n flex-direction: row;\n}\n\n.wpstg--modal--backup--import--info p {\n text-align: left;\n margin: 0;\n}\n\n.wpstg--modal--backup--import--search-replace--wrapper button {\n align-self: center;\n}\n\n.wpstg--import--advanced-options--button {\n border: 0;\n border-radius: 3px;\n font-size: 18px;\n text-shadow: 0 -1px 1px #006799, 1px 0 1px #006799, 0 1px 1px #006799, -1px 0 1px #006799;\n cursor: pointer;\n}\n\n.wpstg--modal--backup--import--search-replace--new {\n color: white;\n background-color: #25a1f0;\n}\n\n.wpstg--modal--backup--import--search-replace--remove {\n color: white;\n background-color: #25a1f0;\n width: 22px;\n height: 22px;\n margin-left: 5px;\n}\n\n.wpstg--modal--backup--import--search-replace--input-group:first-child button {\n display: none;\n}\n\n.wpstg--modal--backup--import--search-replace--input--container {\n flex: 1;\n display: flex;\n flex-direction: column;\n}\n\n.wpstg--modal--backup--import--search-replace--input-group {\n width: 100%;\n border-bottom: 6px solid #f1f1f1;\n margin-bottom: 10px;\n}\n\n.wpstg--modal--backup--import--search-replace--input-group input {\n min-width: 250px;\n width: calc(50% - 4px - 11px - 5px); /* -4px is half of the padding; -11px is half of the button; -5 is the margin left of the button */\n display: inline-block;\n line-height: 10px;\n border: 1px solid #dedede;\n border-radius: 3px;\n color: #666;\n padding: 8px;\n margin-bottom: 12px;\n}\n\n.wpstg--modal--import--upload--process {\n display: none;\n position: relative;\n height: 30px;\n margin-top: 20px;\n margin-bottom: 20px;\n width: 100%;\n top: 0;\n left: 0;\n text-indent: 1em;\n white-space: nowrap;\n overflow: hidden;\n color: #333333;\n justify-content: center;\n align-items: center;\n}\n\n.wpstg--modal--import--upload--progress {\n position: absolute;\n background: #98d452;\n color: white;\n height: 100%;\n border-radius: 4px;\n left: 0;\n top: 0;\n}\n\n.wpstg--modal--import--upload--progress--title {\n z-index: 9;\n}\n\n.wpstg-fieldset:disabled {\n opacity: 0.8;\n border-top: 1px solid white;\n margin-top: 20px;\n}\n\n.wpstg-fieldset {\n padding-left: 20px;\n}\n\n.wpstg-fs-14 {\n font-size: 14px;\n}\n\n.wpstg-dark-alert {\n font-weight: bold;\n background-color: #0e86d9;\n padding: 15px;\n margin-top: 0px;\n color: white;\n}\n\n.wpstg-dark-alert .wpstg-button--cta-red {\n margin-left:10px;\n}\n\n.wpstg-form-group {\n display: block;\n width: 100%;\n margin-bottom: 8px;\n align-items: center;\n}\n\n.wpstg-form-group > label {\n display: block;\n font-weight: 700;\n}\n\n.wpstg-text-field > input {\n width: 300px;\n display: block;\n line-height: 1.5;\n}\n\n.wpstg-code-segment {\n display: block;\n}\n\n.wpstg-text-field > .wpstg-code-segment {\n margin-top: 4px;\n min-width: 300px;\n}\n\n.wpstg-form-group > .wpstg-checkbox {\n min-width: 100%;\n width: 100%;\n position: relative;\n}\n\n.wpstg-form-group > .wpstg-checkbox > input[type='checkbox'] {\n left: 150px;\n}\n\n.wpstg-rounded {\n border-radius: 3px;\n}\n\n.wpstg-white-border {\n border: 1px solid white !important;\n}\n\n.wpstg-ml-4 {\n margin-left: 4px;\n}\n\n#wpstg-confirm-backup-restore-data {\n margin: 40px;\n text-align: left;\n}\n\n#wpstg-advanced-settings hr {\n margin: 20px 0;\n}\n\n.wpstg-form-row {\n display: block;\n}\n\n.wpstg-form-row label,\n.wpstg-form-row input {\n display: table-cell;\n padding-left: 5px;\n padding-right: 5px;\n margin-top: 3px;\n margin-bottom: 3px;\n}\n\n.wpstg-form-row input {\n width: 400px;\n}\n\n.wpstg-form-row label {\n font-weight: bold;\n width: 1px;\n white-space: nowrap;\n}\n\n#wpstg-db-connect-output #wpstg-db-status {\n width: 390px;\n}\n\n.wpstg-fs-14 {\n font-size: 14px;\n}\n\n.wpstg-code-segment {\n display: block;\n}\n\n.wpstg-form-group > .wpstg-checkbox {\n min-width: 100%;\n width: 100%;\n}\n\n.wpstg-form-group > .wpstg-checkbox > input[type='checkbox'] {\n margin-left: 10px;\n}\n\n@media only screen and (max-width: 768px) {\n .wpstg-form-group > label {\n min-width: auto;\n width: auto;\n }\n\n .wpstg-text-field > input {\n width: 100%;\n }\n\n .wpstg-text-field > .wpstg-code-segment {\n margin-left: 0;\n min-width: 100%;\n }\n\n .wpstg-tab-section {\n width: calc(100vw - 60px);\n max-width: 450px;\n }\n}\n\n.wpstg-rounded {\n border-radius: 3px;\n}\n\n.wpstg-white-border {\n border: 1px solid white !important;\n}\n\n.wpstg-m-0 {\n margin: 0;\n}\n\n.wpstg-mt-10px {\n margin-top: 10px !important;\n}\n\n.wpstg-mr-10px {\n margin-right: 10px !important;\n}\n\n.wpstg-my-10px {\n margin-top: 10px !important;\n margin-bottom: 10px !important;\n}\n\n.wpstg-w-100 {\n width: 100%;\n}\n\n.wpstg-box-shadow {\n box-shadow: 0 1px 1px 0 rgba(0, 0, 0, .1);\n}\n\n.wpstg-float-left {\n float: left;\n}\n\n.wpstg-bold-text {\n font-weight: bold;\n}\n\n.wpstg-warning.notice {\n border-left: 4px solid #ffba00;\n}\n\n.wpstg-confirmation-label {\n background-color: #5b9dd9;\n color: #fff;\n padding: 2px;\n border-radius: 3px;\n}\n\n.wpstg-my-6px {\n margin-bottom: 6px;\n margin-top: 6px;\n}\n\n.wpstg-mb-10px {\n margin-bottom: 10px;\n}\n\n.wpstg-clear-both {\n clear: both;\n}\n\n.wpstg-font-italic {\n font-style: italic;\n}\n\n.wpstg-mt-20px {\n margin-top: 20px;\n}\n\n.wpstg-welcome-container {\n border: 2px solid white;\n padding: 20px;\n margin-bottom: 20px;\n}\n\n.wpstg-ml-30px {\n margin-left: 30px;\n}\n\n.wpstg-text-center {\n text-align: center;\n}\n\n.wpstg-feedback-link {\n text-decoration: none;\n}\n\n.wpstg-feedback-span {\n display: block;\n margin-bottom: 3px;\n}\n\n#wpstg-confirm-backup-restore-data {\n margin: 40px;\n text-align: left;\n}\n\n#wpstg-confirm-backup-restore-wrapper {\n margin: 30px;\n margin-top: 0;\n}\n\n#wpstg-confirm-backup-restore-wrapper h3 {\n color: #E01E5A;\n}\n\n#wpstg-progress-db,\n#wpstg-progress-backup {\n background-color: #3fa5ee;\n}\n\n#wpstg-progress-sr,\n#wpstg-progress-files.wpstg-pro {\n background-color: #3c9ee4;\n}\n\n#wpstg-progress-dirs,\n#wpstg-progress-data {\n background-color: #3a96d7;\n}\n\n#wpstg-progress-files:not(.wpstg-pro),\n#wpstg-progress-finishing {\n background-color: #378cc9;\n}\n\n.wpstg-issue-resubmit-confirmation.wpstg--swal2-container,\n.wpstg-swal2-container.wpstg--swal2-container {\n z-index: 10500;\n}\n\n.wpstg-swal2-container.wpstg-swal2-loading .wpstg--swal2-actions,\n.wpstg-swal2-container.wpstg-swal2-loading .wpstg--swal2-header {\n display: none;\n}\n\nbody.toplevel_page_wpstg_backup .wpstg--swal2-container .wpstg--swal2-content,\nbody.toplevel_page_wpstg_clone .wpstg--swal2-container .wpstg--swal2-content {\n z-index: 2;\n}\n\n.toplevel_page_wpstg_clone #swal2-content h2 {\n color: #3e3e3e;\n}\n\n.toplevel_page_wpstg_clone #swal2-content {\n line-height: 1.5em;\n}\n\ndiv#exportUploadsWithoutDatabaseWarning {\n font-style: italic;\n font-size: 0.9rem;\n margin: 10px;\n padding: 10px;\n border: 1px solid #e3e3e3;\n border-radius: 5px;\n text-align: center;\n background-color: #fafafa;\n}\n\n.wpstg-advanced-options-dropdown-wrapper {\n display: none; /* ENABLE WHEN WE HAVE ADVANCED OPTIONS FOR EXPORTING */\n margin-top: 20px;\n}\n\n.wpstg--modal--backup--import--search-replace--wrapper {\n text-align: left;\n margin-top: 20px;\n}\n\n.wpstg--modal--backup--import--search-replace--new--wrapper {\n text-align: center;\n}\n\n.wpstg-import-backup-contains li {\n display: inline-block;\n margin-bottom:0px;\n}\n\n.wpstg-import-backup-contains li .wpstg-backups-contains {\n border-radius: 3px;\n color: #979797;\n background-color: #f4f4f4 !important;\n width: 18px;\n height: 18px;\n font-size: 17px;\n}\n\n.wpstg-import-backup-contains.wpstg-listing-single-backup li .wpstg-backups-contains {\n padding: 2px;\n background-color: white;\n}\n\n.wpstg-import-backup-contains.wpstg-listing-single-backup li .wpstg-backups-contains > .wpstg--dashicons {\n filter: invert(35%);\n}\n\n.wpstg-import-backup-contains .wpstg--tooltiptext {\n width: 80px;\n font-size: 13px;\n padding: 5px;\n left: -25px;\n text-align: center;\n}\n\n.wpstg-import-backup-contains-title {\n display: inline-block;\n}\n\nul.wpstg-import-backup-contains {\n display: inline-block;\n}\n\n.wpstg-import-backup-name {\n display: inline-block;\n font-weight: bold;\n}\n\n.wpstg-backup-more-info-toggle {\n font-size: x-small;\n display: inline-block;\n font-style: italic;\n cursor: pointer;\n}\n\n.wpstg-backup-more-info-toggle::selection {\n background: none;\n}\n\nul.wpstg-import-backup-more-info {\n font-size: 14px;\n text-align: left;\n margin-bottom: 30px;\n margin-top: 10px;\n background-color: #f6f6f6;\n border: 1px solid #878787;\n border-radius: 3px;\n padding: 7px;\n cursor: pointer;\n}\n\nul.wpstg-import-backup-more-info:hover {\n background-color: #def2ff;\n border: 1px solid #25a1f0;\n}\n\nul.wpstg-import-backup-more-info li {\n height: 20px;\n}\n\n.wpstg-backup-list {\n max-width: 800px;\n}\n\n.wpstg-backup-list h3 {\n color:#3e3e3e;\n}\n\n.wpstg-backup-list ul ul {\n margin-block-start: 1em;\n margin-block-end: 1em;\n}\n\n.wpstg-push-confirmation-message {\n text-align: justify;\n font-size: 15px;\n}\n\n.wpstg-settings-row {\n padding-top: 10px;\n padding-bottom: 10px;\n}\n\n.wpstg-settings-title {\n font-weight: 600;\n}\n\n.wpstg-settings-form-group {\n display: flex;\n align-items: center;\n}\n\n.wpstg-settings-form-group > .wpstg-settings-message {\n width: 30%;\n padding: 0;\n margin: 7px 0 0;\n}\n\n/**\n * WP STAGING EXCLUSION RULES TABLE LAYOUT\n */\n\n.wpstg-excluded-filters-container {\n padding: 0;\n margin-top: 10px;\n margin-bottom: 10px;\n max-width: 100%;\n width: 100%;\n}\n\n.wpstg-excluded-filters-container > table {\n width: 100%;\n border-collapse: collapse;\n border-color: transparent;\n}\n\n.wpstg-excluded-filters-container td {\n padding-top: 4px;\n padding-bottom: 4px;\n height: 20px;\n}\n\n.wpstg-excluded-filters-container h4 {\n margin: 0;\n}\n\n.wpstg-exclude-filters-foot {\n display: flex;\n justify-content: flex-start;\n padding: 0;\n}\n\n/**\n * WP STAGING EXCLUSION RULE DROPDOWN STYLE\n */\n\n\n.wpstg-exclude-filter-dropdown > button:hover {\n background: #135e96;;\n border: 1px solid #135e96;;\n}\n\n.wpstg-exclude-filter-dropdown > .wpstg-dropdown-menu {\n width: 128px;\n}\n\n.wpstg-remove-exclude-rule {\n color: #fff !important;\n background-color: #e01e5a;\n border: 1px solid #e01e5a;\n width: 20px;\n height: 20px;\n border-radius: 10px;\n font-size: 24px;\n padding: 0;\n display: inline-flex;\n justify-content: center;\n outline: none;\n box-shadow: none;\n font-weight: 400;\n line-height: 0.7;\n margin-top: 5px;\n cursor: pointer;\n}\n\n.wpstg-remove-exclude-rule:hover {\n background-color: #E01E5A;\n border-color: #E01E5A;\n}\n\n.wpstg-code-block {\n margin-top: 4px;\n font-size: 1.2em;\n background: #f8f8f8;\n border-radius: 2px;\n}\n\n.wpstg-rule-info {\n background: #f8f8f8 !important;\n}\n\ncode.wpstg-code {\n display: inline-block;\n font-size: 11px;\n border: 1px solid #aaa;\n background: #fff;\n padding: 2px 4px;\n margin-bottom: 1px;\n color: #E01E5A;\n}\n\n.wpstg-exclusion-rule-info {\n color: #fff !important;\n background-color: #ffc107;\n border: 1px solid #ffc107;\n width: 14px;\n height: 14px;\n border-radius: 7px;\n font-size: 14px;\n padding: 0;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n outline: none;\n box-shadow: none;\n font-weight: 400;\n vertical-align: middle;\n}\n\n.wpstg-exclusion-rule-info:hover {\n background-color: #ffba0c;\n border: 1px solid #ffba0c;\n}\n\n/**\n * WP STAGING INPUTS EXCLUSION RULES\n */\n\n.wpstg-exclude-rule-input {\n font-size: 12px !important;\n padding: 2px 6px;\n box-shadow: none;\n outline: none !important;\n display: inline-block;\n font-weight: 400;\n line-height: 1.5;\n color: #222;\n border-radius: 0 !important;\n background-color: #fff;\n border: 1px solid #bbb;\n min-height: 24px !important;\n margin-top: 4px;\n margin-left: 4px;\n vertical-align: baseline !important;\n transition: all 0.3s cubic-bezier(.25, .8, .25, 1);\n width: 135px;\n}\n\n.wpstg-excluded-filters-container tbody > tr:last-child .wpstg-exclude-rule-input {\n margin-bottom: 4px;\n}\n\n.wpstg-exclude-rule-input:hover {\n border: 1px solid #999;\n}\n\n.wpstg-exclude-rule-input:focus {\n border: 1px solid #25A0F1 !important;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24) !important;\n}\n\n.wpstg-file-size-exclude-select,\n.wpstg-path-exclude-select {\n width: 135px;\n}\n\n.wpstg-file-size-exclude-select-small {\n width: 52px;\n}\n\n.wpstg-file-size-exclude-input {\n width: 75px;\n}\n\n.wpstg-staging-option-title {\n margin: 15px 0 0;\n}\n\n.wpstg-swal-push-container.wpstg--swal2-container {\n z-index: 9995;\n}\n\n#wpstg-scanning-files {\n padding-bottom: 5px;\n}\n\n#wpstg-scanning-files.wpstg-tab-section, #wpstg-scanning-db.wpstg-tab-section {\n padding-top: 10px;\n}\n\n.wpstg-reset-excludes-container {\n margin: 10px 0;\n}\n\n.wpstg-swal2-ajax-loader {\n width: 100%;\n height: 150px;\n overflow: hidden;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n@keyframes wpstg-loading-icon-anim {\n 0% {\n transform: rotate(0);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n\n.wpstg-swal2-ajax-loader > img {\n width: 64px;\n height: 64px;\n animation: wpstg-loading-icon-anim 1s infinite linear;\n -webkit-animation: wpstg-loading-icon-anim 1s infinite linear;\n}\n\n.wpstg-swal2-container .wpstg-tab-section {\n width: auto !important;\n}\n\n#wpstg-no-staging-site-results {\n margin-top: 10px;\n max-width: 375px;\n}\n\nli#wpstg-backup-no-results {\n max-width: 500px;\n}\n\nli#wpstg-backup-no-results div, #wpstg-no-staging-site-results div {\n display: inline-block;\n text-align: center;\n}\n\nli#wpstg-backup-no-results .wpstg--dashicons, #wpstg-no-staging-site-results .wpstg--dashicons {\n filter: invert(50%);\n position: absolute;\n margin-top: 1px;\n}\n\nli#wpstg-backup-no-results .no-backups-found-text, #wpstg-no-staging-site-results .no-staging-site-found-text {\n color: #5d5d5d;\n margin-left: 20px;\n}\n\n@media only screen and (max-width: 680px) {\n li#wpstg-backup-no-results div, #wpstg-no-staging-site-results div {\n width: 100%;\n }\n}\n\n#wpstg--modal--backup--download-inner p.wpstg-download-modal-text {\n font-size: 16px;\n color: #565656;\n}\n\n#wpstg--modal--backup--download-inner h2 {\n color: #565656;\n}\n\n.wpstg-backup-restore-contains-database,\n.wpstg-backup-restore-contains-files {\n display: none;\n}\n\n.wpstg-green-button {\n background: #8bc34a;\n border: 1px solid #78a93f;\n color: white;\n text-shadow: 0 -1px 1px #78a93f, 1px 0 1px #78a93f, 0 1px 1px #40c921, -1px 0 1px #78a93f;\n}\n\n.wpstg-green-button:hover {\n background: #78a93f;\n}\n\n.wpstg-is-dir-loading {\n position: absolute;\n margin-top: -2px;\n margin-left: 8px;\n display: none;\n}\n\n.wpstg-ml-8px {\n margin-left: 8px;\n}\n\n.wpstg-mb-8px {\n margin-bottom: 8px;\n}\n\n\n.wpstg-btn-danger {\n background-color: #E01E5A;\n border: 1px solid #E01E5A;\n color: white;\n text-shadow: none;\n}\n\n.wpstg-btn-danger:hover {\n background: #c0194d;\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);\n}\n\n.wpstg-swal2-container.wpstg-swal2-loading > .wpstg--swal2-modal {\n height: 200px;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container:not(.wpstg-swal2-loading) > .wpstg--swal2-modal {\n max-width: 480px;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container .wpstg--swal2-header {\n display: none;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container .wpstg--swal2-content {\n height: auto;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container > .wpstg--swal2-modal > .wpstg--swal2-content .wpstg-tabs-wrapper {\n overflow-y: auto;\n height: auto !important;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container > .wpstg--swal2-modal > .wpstg--swal2-content {\n font-size: 13px;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container > .wpstg--swal2-modal > .wpstg--swal2-content .wpstg-dir {\n margin-bottom: 4px;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container > .wpstg--swal2-modal > .wpstg--swal2-content .wpstg-subdir {\n margin-top: 4px;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container.has-collapsible-open .wpstg--swal2-modal {\n height: calc(100vh - 70px);\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container.has-collapsible-open > .wpstg--swal2-modal > .wpstg--swal2-content .wpstg-tabs-wrapper {\n height: calc(100vh - 350px) !important;\n}\n\n.wpstg--swal2-actions.wpstg--modal--actions > button {\n margin-left: 4px;\n margin-right: 4px;\n text-transform: uppercase;\n text-shadow: initial;\n font-weight: 500;\n min-width: 80px;\n}\n\n.wpstg-swal-popup {\n max-width: 1200px !important;\n}\n\n.wpstg-swal-popup.wpstg-push-finished .wpstg--swal2-title {\n color: #a8a8a8;\n}\n\n.wpstg-swal-popup.wpstg-push-finished .wpstg--swal2-content {\n margin-top: 8px;\n color: #a8a8a8;\n}\n\n.wpstg-swal-popup .wpstg--swal2-progress-steps .wpstg--swal2-progress-step.wpstg--swal2-active-progress-step,\n.wpstg-swal-popup .wpstg--swal2-progress-steps .wpstg--swal2-progress-step,\n.wpstg-swal-popup .wpstg--swal2-progress-steps .wpstg--swal2-progress-step-line {\n background: #25a1f0;\n}\n\n.wpstg-swal-popup .wpstg--swal2-progress-steps .wpstg--swal2-progress-step-line {\n width: 2.75em;\n}\n\n.wpstg--dashicons {\n width: 16px;\n height: 16px;\n}\n\n.wpstg--dashicons.wpstg-dashicons-grey {\n filter: invert(20%);\n}\n\n.wpstg--dashicons.wpstg-dashicons-19 {\n width: 19px;\n height: 19px;\n}\n\n.wpstg--dashicons.wpstg-dashicons-21 {\n width: 21px;\n height: 21px;\n}\n\n#wpstg--tab--backup #wpstg-step-1 {\n display: flex;\n align-items: center;\n}\n\n.wpstg-advanced-options .wpstg--tooltip,\n#wpstg--tab--backup #wpstg-step-1 .wpstg--tooltip {\n border-bottom: 0 solid transparent;\n display: inline-flex;\n align-items: center;\n}\n\n.wpstg-advanced-options-site .wpstg--tooltip img.wpstg--dashicons {\n filter: invert(17%) sepia(0%) saturate(1%) hue-rotate(195deg) brightness(97%) contrast(77%);\n}\n\n#wpstg--tab--backup #wpstg-step-1 .wpstg--tooltip {\n border-bottom: 0 solid transparent;\n display: flex;\n align-items: center;\n}\n\n.wpstg--tooltip .wpstg--tooltiptext-backups::after {\n left: calc(20% + 2px);\n}\n\n.wpstg-listing-single-backup .wpstg--dashicons {\n width: 17px;\n height: 17px;\n}\n\n.wpstg-100-width {\n width: 100px;\n}\n\n.wpstg-caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: 4px solid;\n border-right: 4px solid transparent;\n border-left: 4px solid transparent;\n transition: transform 0.2s;\n cursor: pointer;\n}\n\n.wpstg-caret.wpstg-caret-up {\n transform: rotate(-180deg);\n}\n\n.wpstg-advanced-options-site label {\n font-size: 16px;\n display: block;\n margin: .5em 0;\n}\n\n#wpstg-confirm-backup-restore-data {\n font-size: 18px;\n margin: 0;\n margin-top: 30px;\n}\n\n/* Sweetalert WP STAGING Theme */\n\nbody.toplevel_page_wpstg_backup .wpstg--swal2-container.wpstg--swal2-backdrop-show,\nbody.toplevel_page_wpstg_clone .wpstg--swal2-container.wpstg--swal2-backdrop-show {\n background: rgba(0, 0, 0, .6);\n z-index: 9995;\n}\n\n.wpstg-swal-popup.wpstg--swal2-popup {\n border-radius: 8px;\n z-index: 9999;\n padding: 24px;\n color: #3e3e3e;\n font-family: Verdana, Geneva, Tahoma, sans-serif;\n}\n\n.wpstg-swal-popup .wpstg--swal2-title {\n font-size: 22px;\n color: #3e3e3e;\n}\n\n.wpstg-swal-popup.wpstg--swal2-popup:not(.centered-modal) .wpstg--swal2-title {\n align-self: flex-start; /* For an actual Swal title */\n text-align: left; /* Manually adding this class to a non flex display */\n margin-bottom: 0;\n}\n\n.wpstg-swal-popup .wpstg--swal2-close {\n top: 8px;\n right: 8px;\n z-index: 5;\n}\n\n.wpstg-swal-popup .wpstg--swal2-close:focus {\n outline: none;\n}\n\n.wpstg-swal-popup.wpstg--swal2-popup:not(.centered-modal) .wpstg--swal2-actions {\n justify-content: flex-end;\n}\n\n.wpstg-swal-popup .wpstg--swal2-actions > button {\n border-radius: 4px;\n font-weight: 900;\n border: 0;\n font-size: 15px;\n padding: 10px 12px;\n text-transform: capitalize;\n line-height: normal;\n height: 40px;\n min-width: 100px;\n text-shadow: none;\n}\n\n.wpstg-swal-popup.wpstg--swal2-popup:not(.centered-modal) .wpstg--swal2-actions > button {\n margin-left: 8px;\n}\n\n.wpstg-swal-popup .wpstg--swal2-actions > button.wpstg--swal2-cancel {\n border: 1px solid rgba(29, 28, 29, 0.3);\n background: #fff;\n color: rgb(29, 28, 29);\n font-weight: 500;\n width: 100px;\n text-shadow: none;\n}\n\n.wpstg-swal-popup .wpstg--swal2-actions > button:hover {\n box-shadow: 0 1px 3px 0 rgba(0 0 0 .1);\n}\n\n.wpstg-swal-popup .wpstg--swal2-actions > button.wpstg--swal2-cancel:hover {\n background: rgba(28, 29, 28, .04);\n}\n\n#wpstg-backup-name-input {\n height: 44px;\n font-size: 18px;\n}\n\n.wpstg-restore-finished-container .wpstg--swal2-title {\n color: #565656 !important;\n}\n\n/*#wpstg-restore-success {\n color: #565656;\n}*/\n\n.wpstg-restore-finished-container .wpstg--swal2-content {\n margin-top: 20px;\n color: #a8a8a8;\n}\n\n/* WP Staging Implementation of Windows Style Linear Loader */\n\n.wpstg-linear-loader > span[class*=\"wpstg-linear-loader-item\"] {\n height: 6px;\n width: 6px;\n background: #333;\n display: inline-block;\n margin: 12px 2px;\n border-radius: 100%;\n animation: wpstg_linear_loader 3s infinite;\n animation-timing-function: cubic-bezier(0.030, 0.615, 0.995, 0.415);\n animation-fill-mode: both;\n}\n\n.wpstg-linear-loader > span.wpstg-linear-loader-item:nth-child(1) {\n animation-delay: 1s;\n}\n\n.wpstg-linear-loader > span.wpstg-linear-loader-item:nth-child(2) {\n animation-delay: 0.8s;\n}\n\n.wpstg-linear-loader > span.wpstg-linear-loader-item:nth-child(3) {\n animation-delay: 0.6s;\n}\n\n.wpstg-linear-loader > span.wpstg-linear-loader-item:nth-child(4) {\n animation-delay: 0.4s;\n}\n\n.wpstg-linear-loader > span.wpstg-linear-loader-item:nth-child(5) {\n animation-delay: 0.2s;\n}\n\n.wpstg-linear-loader > span.wpstg-linear-loader-item:nth-child(6) {\n animation-delay: 0s;\n}\n\n@keyframes wpstg_linear_loader {\n 0% {\n transform: translateX(-30px);\n opacity: 0;\n }\n 25% {\n opacity: 1;\n }\n 50% {\n transform: translateX(30px);\n opacity: 0;\n }\n 100% {\n opacity: 0;\n }\n}\n\n/* END - Windows Style Linear Loader */\n\n.wpstg--modal--backup--import--upload--content {\n padding: .75em;\n margin: 1em auto;\n}\n\n.wpstg--modal--backup--import--upload--content .wpstg-linear-loader {\n display: none;\n}\n\n#wpstg-multisite-disabled .wpstg-clone {\n width: 355px;\n}\n\n#wpstg-free-version-backups .wpstg-clone {\n text-align: center;\n}\n\n#wpstg-free-version-backups .wpstg-clone p {\n font-size: 16px;\n}\n\n.wpstg-staging-info li .backup-notes {\n word-break: break-word;\n}\n\n.wpstg--modal--import--upload--progress--title small {\n font-weight: normal;\n}\n\n#wpstg-report-issue-wrapper {\n position: relative;\n}\n\n#wpstg-report-issue-wrapper .arrow-up {\n width: 0;\n height: 0;\n border-left: 8px solid transparent;\n border-right: 8px solid transparent;\n border-bottom: 8px solid white;\n position: absolute;\n top: -8px;\n right: 40px;\n}\n\n.notice {\n margin: 10px 20px 0 2px;\n}\n\n.wpstg--notice {\n box-shadow: 0 1px 1px rgba(0, 0, 0, .04);\n margin: 20px 20px 20px 0px;\n padding: 1px 12px;\n}\n\n.wpstg--error a:hover {\n color: #eeeeee;\n}\n\n.wpstg--error, .wpstg--error a {\n background: #E01E5A;\n color: white;\n}\n\n/**\n * Buttons\n */\n\n.wpstg-button {\n display: inline-block;\n border-radius: 2px;\n cursor: pointer;\n padding: 2px 10px 2px 10px;\n text-transform: uppercase;\n font-weight: 500;\n outline: 0;\n transition: background-color .1s ease-in;\n text-decoration: none;\n}\n\n.wpstg-button.wpstg-save {\n background-color: #1687A7;\n color: white;\n}\n\n.wpstg-button.wpstg-save:hover {\n background-color: #276678;\n}\n\n\n.wpstg-button.wpstg-button-light {\n background-color: #f8f8f8;\n border: 1px solid #eee;\n color: #333;\n animation: background-color 0.3s;\n}\n\n.wpstg-button.wpstg-button-light:hover {\n background-color: #e0e0e0;\n border: 1px solid #e0e0e0;\n}\n\n.wpstg-buttons .spinner {\n float: none;\n margin: 0 0 0 5px;\n}\n\n.wpstg-button.danger {\n display: inline-block;\n text-decoration: none;\n text-align: center;\n text-transform: inherit;\n background-color: #E01E5A;\n color: white;\n border-radius: 2px;\n border-color: transparent;\n}\n\n.wpstg-button.danger:hover {\n background-color: #c0194d;\n}\n\n.wpstg-button--big {\n display: inline-block;\n padding: 10px;\n min-width: 170px;\n font-size: 16px;\n text-decoration: none;\n text-align: center;\n margin-top: 20px;\n color: white;\n border-radius: 3px;\n}\n\n.wpstg-button--primary {\n display: inline-block;\n text-decoration: none;\n font-size: 13px;\n line-height: 2.15384615;\n min-height: 30px;\n margin: 0;\n padding: 0 10px;\n cursor: pointer;\n border: 1px solid rgba(29, 28, 29, 0.3);\n -webkit-appearance: none;\n border-radius: 2px;\n white-space: nowrap;\n box-sizing: border-box;\n color: #171717;\n}\n\n.wpstg-button--primary:hover {\n background: rgba(28, 29, 28, .04);\n color: black;\n}\n\n.wpstg-button--secondary {\n display: inline-block;\n background-color: transparent;\n color: #95a5a6;\n border-radius: 2px;\n border: 1px solid rgba(29, 28, 29, 0.3);\n cursor: pointer;\n padding: 4px 10px 2px 10px;\n font-weight: 500;\n outline: 0;\n transition: background-color .1s ease-in;\n text-decoration: none;\n}\n\n.wpstg-button--red {\n background-color: #E01E5A;\n border-color: #E01E5A;\n color: white;\n}\n\n.wpstg-button--red:hover {\n background-color: #d02358;\n border-color: #e0255f;\n color: white;\n}\n\n.wpstg-button--cta-red {\n background-color: #fe008f;\n border-color: #E01E5A;\n color: white;\n}\n\n.wpstg-button--cta-red:hover {\n background-color: #f31391;\n border-color: #e0255f;\n color: white;\n}\n\n.wpstg-button--blue {\n background-color: #25A0F1;\n border-color: #25A0F1;\n color: white;\n}\n\n.wpstg-button--blue:hover {\n background-color: #259be6;\n border-color: #259be6;\n color: white;\n}\n\n#wpstg-button-backup-upgrade {\n font-size: 16px;\n}\n\n.wpstg-staging-status {\n color: #E01E5A;\n}\n\n#wpstg-push-changes,\n#wpstg-start-updating,\n#wpstg-save-clone-data {\n margin-left: 5px;\n}\n\ninput.wpstg-textbox {\n border: 1px solid #aaa;\n border-radius: .25rem;\n padding: 0.25rem 0.5rem;\n font-size: 14px;\n}\n\ninput.wpstg-textbox:focus {\n outline: 0;\n border-color: #259be6;\n -webkit-box-shadow: 0 0 0 0.1rem rgba(221, 221, 221, .35);\n box-shadow: 0 0 0 0.1rem rgba(221, 221, 221, .35);\n}\n\ninput.wpstg-textbox::placeholder {\n color: #888;\n}\n\n.wpstg--advance-settings--checkbox {\n display: flex;\n align-items: center;\n}\n\n.wpstg--advance-settings--checkbox > label {\n font-size: 14px;\n font-weight: bolder;\n width: 165px;\n display: inline-block;\n}\n\n.wpstg--advance-settings--checkbox > .wpstg--tooltip {\n margin-top: 5px;\n margin-left: 5px;\n position: relative;\n display: inline-block;\n border-bottom: 0px solid transparent;\n}\n\n.wpstg--advance-settings--checkbox > .wpstg--tooltip > .wpstg--tooltiptext {\n top: 18px;\n left: -150px;\n}\n\n\ndiv#wpstg-restore-wait {\n display: none;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n text-align: center;\n height: 100vh;\n width: 100vw;\n position: fixed;\n top: 0;\n left: 0;\n background: white;\n z-index: 99999;\n}\n\ndiv#wpstg-restore-wait .wpstg-title {\n font-weight: bold;\n}\n\ndiv#wpstg-restore-wait div {\n font-size: 16px;\n margin-top: 12px;\n}\n\n.resumable-browse {\n cursor: pointer;\n}\n\n.resumable-browse a {\n text-decoration: underline;\n}\n\n.wpstg-upload-text {\n font-weight: 600;\n}\n\n.wpstg--modal--backup--import--upload--container.dragover {\n transition: background-color 0.7s;\n background-color: #94dc96;\n color: #FFF;\n}\n\n.wpstg--modal--backup--import--upload--container.dragover * {\n pointer-events: none; /* Avoids flickering when dragging to drop a file */\n}\n\n.wpstg--modal--backup--import--upload--container.dragover .wpstg-upload-text {\n display: none;\n}\n\n.wpstg--modal--backup--import--upload--container.dragover .wpstg-dragover-text {\n display: block;\n}\n\n.wpstg--modal--backup--import--upload--container .wpstg-dragover-text {\n display: none;\n}\n\n#wpstg-invalid-license-message, #wpstg-invalid-license-message a {\n font-weight: 500;\n color: #E01E5A;\n margin-left: 6px;\n}\n\n#wpstg-sidebar--banner {\n max-width: 200px;\n}\n\n@media screen and (max-width: 1234px) {\n .wpstg-h2 {\n font-size: 24px;\n }\n\n #wpstg-welcome li {\n font-size: 14px;\n }\n}\n\n.wpstg-exclamation {\n color: #ffffff;\n border-radius: 100%;\n background-color: #E01E5A;\n width: 20px;\n height: 20px;\n text-align: center;\n font-weight: bold;\n display: inline-block;\n margin: 6px;\n}\n\n.wpstg--tab--contents {\n padding-top: 1px;\n}\n\n.wpstg-swal-show.wpstg--swal2-show {\n -webkit-animation: wpstg-swal-show 0.2s !important;\n animation: wpstg-swal-show 0.2s !important;\n}\n\n@-webkit-keyframes wpstg-swal-show {\n 0% {\n transform: scale(0.3);\n }\n 100% {\n transform: scale(1);\n }\n}\n\n@keyframes wpstg-swal-show {\n 0% {\n transform: scale(0.3);\n }\n 100% {\n transform: scale(1);\n }\n}\n\n.wpstg-tab-item--vert-center {\n display: flex;\n align-items: center;\n}\n\n.wpstg-db-comparison-modal {\n padding-left: 10px;\n padding-right: 10px;\n}\n\n.wpstg-db-comparison-table {\n font-size: 13px;\n width: 100%;\n}\n\n.wpstg-db-comparison-table tbody td {\n padding-top: 6px;\n}\n\n.wpstg-db-comparison-table tr > td:first-child,\n.wpstg-db-comparison-table tr > th:first-child {\n text-align: left;\n}\n\n.wpstg-css-tick {\n display: inline-block;\n transform: rotate(45deg);\n height: 12px;\n width: 6px;\n border-bottom: 3px solid #78b13f;\n border-right: 3px solid #78b13f;\n}\n\n.wpstg-css-cross {\n position: relative;\n top: -8px;\n left: -2px;\n width: 16px;\n height: 16px;\n}\n\n.wpstg-css-cross:before, .wpstg-css-cross:after {\n position: absolute;\n content: ' ';\n height: 17px;\n width: 3px;\n background-color: #E01E5A;\n}\n\n.wpstg-css-cross:before {\n transform: rotate(45deg);\n}\n\n.wpstg-css-cross:after {\n transform: rotate(-45deg);\n}\n\n.wpstg-selection-preview {\n font-size: 12px;\n margin-left: 20px;\n color: #3216;\n}\n\n.wpstg-selection-preview.danger {\n color: #E01E5A;\n}\n\n.wpstg--backup-automated {\n margin-bottom: -5px;\n}\n\n.wpstg--dismiss-schedule {\n cursor: pointer;\n}\n\n.wpstg-import-backup-contains.wpstg-listing-single-backup {\n vertical-align: middle;\n}\n\n.wpstg-import-backup-contains.wpstg-listing-single-backup li {\n padding:2px;\n}\n\n.wpstg--modal--backup--manage--schedules--content table {\n margin: 0 auto;\n width: 100%;\n}\n\n.wpstg--modal--backup--manage--schedules--title {\n text-align: left;\n margin-bottom: 10px;\n margin-top: 0px;\n}\n\n.wpstg--modal--backup--import--upload--title {\n text-align: center;\n}\n\n#wpstg--modal--backup--manage--schedules--content {\n text-align: left;\n}\n\n#wpstg--modal--backup--manage--schedules--content thead {\n font-weight: bold;\n}\n\n#wpstg--modal--backup--manage--schedules--content .wpstg--tooltip.wpstg--dismiss-schedule {\n border-bottom: none;\n}\n\n.wpstg--tooltip.wpstg--dismiss-schedule img.wpstg--dashicons {\n filter: invert(18%) sepia(57%) saturate(6238%) hue-rotate(332deg) brightness(93%) contrast(88%);\n}\n\n#wpstg--modal--backup--manage--schedules--content td {\n padding-right: 25px;\n padding-top: 10px;\n}\n\n#wpstg--modal--backup--manage--schedules--content ul {\n margin-top: 0;\n margin-bottom: 0;\n}\n\n#wpstg--modal--backup--manage--schedules--content ul li:first-child .wpstg--tooltip {\n margin-left:0;\n}\n\n.wpstg-button:disabled {\n background-color: #dddddd;\n text-shadow: none;\n color: #b3b3b3;\n border: 1px solid #cfcfcf;\n cursor: not-allowed;\n}\n\n#wpstg-backup-runs-info {\n margin: 0px;\n margin-top: 20px;\n padding:0px;\n font-size:12px;\n}\n\n#wpstg-backup-runs-info li {\n margin: 0px;\n}\n\ndiv#wpstg-backup-locked {\n width: 100%;\n max-width: calc(800px - 30px);\n padding: 15px;\n background: white;\n margin-bottom: 10px;\n display: flex;\n align-items: center;\n}\n\n#wpstg-backup-locked .icon {\n display: inline-block;\n height: 20px;\n}\n\n#wpstg-backup-locked .icon img {\n animation: wpstg-loading-icon-anim 2s infinite;;\n}\n\n#wpstg-backup-locked .text {\n display: inline-block;\n margin-left: 15px;\n}\n\n#backup-schedule-current-time {\n font-size: 12px;\n}\n\n.wpstg-backup-scheduling-options label {\n margin-top:17px;\n}\n\n.wpstg-backup-scheduling-options .wpstg-storage-option {\n display: block;\n margin: .5em 0;\n font-size: 15px;\n}\n\n.wpstg-storage-option>span:not(.wpstg-storage-settings) {\n width: 150px;\n display: inline-block;\n}\n\n.wpstg-storages-postbox {\n display:none;\n padding: 16px 8px;\n margin-top: 8px;\n margin-bottom: 8px;\n background-color: white;\n border:1px solid #cccccc;\n}\n\n.wpstg-storages-postbox a {\n padding: 8px;\n margin-right: 8px;\n text-decoration: none;\n}\n\n.wpstg-storage-postbox {\n padding: 4px 16px;\n background-color: white;\n border-bottom:1px solid #cccccc;\n border-left:1px solid #cccccc;\n border-right:1px solid #cccccc;\n}\n\n.wpstg-storages-postbox a.wpstg-storage-provider-active {\n background: #25a1f0;\n color: white;\n font-weight: 700;\n cursor: default;\n}\n\n.wpstg-storages-postbox a.wpstg-storage-provider-disabled {\n color: #999;\n cursor: not-allowed;\n}\n\n.wpstg-provider-revoke-form {\n display: inline;\n margin-top: 12px;\n margin-bottom: 12px;\n}\n\n.wpstg-provider-settings-form {\n margin-top: 10px;\n}\n\n.wpstg-provider-settings-form strong {\n display: block;\n margin: 8px 0;\n}\n\n.wpstg-provider-settings-form p {\n margin: 0;\n margin-bottom: 8px;\n}\n\n.wpstg-provider-settings-form fieldset {\n margin: 0;\n padding: 0;\n margin-bottom: 16px;\n}\n\n.wpstg-provider-settings-form fieldset p {\n margin: 0;\n padding: 0;\n font-size: 12px;\n}\n\n.wpstg-provider-settings-form fieldset label {\n display: block;\n margin-bottom: 2px;\n}\n\n.wpstg-provider-settings-form fieldset input {\n font-size: 12px;\n}\n\n.wpstg-provider-settings-form .wpstg-link-btn.wpstg-blue-primary {\n text-shadow: none;\n}\n\n.wpstg-btn-google {\n font-family: Roboto;\n display: inline-flex;\n align-items: center;\n border-width: 0;\n outline: none;\n border-radius: 2px;\n box-shadow: 0 1px 3px rgba(0, 0, 0, .6);\n color: #555;\n transition: background-color .3s;\n padding: 8px;\n padding-right: 16px;\n height: 40px;\n line-height: 40px;\n font-size: 14px;\n box-sizing: border-box;\n text-decoration: none;\n font-weight: bold;\n margin-right: 10px;\n}\n\n.wpstg-btn-google img {\n width: 18px;\n height: 18px;\n margin-right: 12px;\n margin-left:5px;\n}\n\n#wpstg-custom-google-credentials {\n margin-top: 20px;\n}\n\n.wpstg-fieldset .wpstg-with-icon {\n display: inline-flex;\n align-items: center; \n}\n\n.wpstg-fieldset .wpstg-with-icon .wpstg-fieldset-icon {\n margin-left: 8px;\n}\n\n.wpstg-fieldset .wpstg-with-icon .wpstg-fieldset-icon img {\n width: 16px;\n height: 16px;\n}\n\n#wpstg-btn-provider-revoke {\n border-radius: 2px;\n}\n\n#wpstg--js--translations {\n text-decoration: underline;\n}\n"]}
1
+ {"version":3,"sources":["wpstg-admin.css"],"names":[],"mappings":"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","file":"wpstg-admin.min.css","sourcesContent":["/**\n * WPSTG Admin CSS\n *\n * @package WPSTG\n * @subpackage Admin CSS\n * @copyright Copyright (c) 2021, René Hermenau\n * @license http://opensource.org/licenses/gpl-2.0.php GNU Public License\n*/\n\n/* Font Faces */\n\n/* roboto-regular - latin */\n@font-face {\nfont-family: 'Roboto';\nfont-style: normal;\nfont-weight: 400;\nsrc: url('../../fonts/roboto-v29-latin-regular.eot'); /* IE9 Compat Modes */\nsrc: local(''),\n url('../../fonts/roboto-v29-latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */\n url('../../fonts/roboto-v29-latin-regular.woff2') format('woff2'), /* Super Modern Browsers */\n url('../../fonts/roboto-v29-latin-regular.woff') format('woff'), /* Modern Browsers */\n url('../../fonts/roboto-v29-latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */\n url('../../fonts/roboto-v29-latin-regular.svg#Roboto') format('svg'); /* Legacy iOS */\n}\n\n/* Colors */\n\n.wpstg--violet {\n color: #9d37ae;\n}\n\n.wpstg-border--violet {\n border: 1px solid #9d37ae;\n}\n\n.wpstg--red {\n color: #E01E5A;\n}\n\n.wpstg-cta--red {\n color: #fe008f;\n}\n\n.wpstg--blue {\n color: #24a1f0;\n}\n\n.wpstg--darkblue {\n color: #0e86d9;\n}\n\n.wpstg--green {\n color: #83c11f;\n}\n\n.wpstg--grey {\n color: #3e3e3e;\n}\n\n.wpstg--darkgrey {\n color: #1b1b1b;\n}\n\n.wpstg--filter--svg {\n filter: invert(24%) sepia(11%) saturate(558%) hue-rotate(169deg) brightness(97%) contrast(91%);\n}\n\n/* CSS for Tabs */\n\nbody.wp-staging-pro_page_wpstg_backup,\nbody.toplevel_page_wpstg_clone,\nbody.wp-staging-pro_page_wpstg-settings,\nbody.wp-staging-pro_page_wpstg-tools,\nbody.wp-staging-pro_page_wpstg-license {\n background-color: #f3f5f7;\n}\n\n#wpstg-tab-container ul {\n list-style: none;\n margin: 0;\n padding: 0;\n background: #f1f1f1;\n float: left;\n}\n\n#wpstg-tab-container ul li:first-child.selected-tab {\n border-top: none;\n}\n\n#wpstg-tab-container ul li a.selected-tab {\n font-weight: bold;\n text-decoration: none;\n}\n\n#wpstg-tab-container .row {\n padding-top: 10px;\n padding-bottom: 12px;\n}\n\n.wpstg-tabs-container .nav-tab-wrapper {\n padding: 0;\n}\n\n#wpstg-tab-container .row label strong,\n#wpstg-tab-container .row strong {\n font-weight: bold;\n}\n\n.wpstg-tabs a {\n padding: 5px;\n}\n\n#wpstg-tab-container > ul > li.wpstg-tabs.active {\n background-color: white;\n}\n\n#wpstg_settingsgeneral_header .row:nth-child(3),\n#wpstg_settingsgeneral_header .row:nth-child(4) {\n display: none;\n}\n\n#wpstg-tab-container .wpstg-settings-panel {\n padding: 0 20px 20px 20px;\n overflow: auto;\n}\n\n#wpstg-tab-container .wpstg-form-table th {\n vertical-align: top;\n text-align: left;\n padding: 20px 10px 20px 0;\n line-height: 1.3;\n font-weight: bold;\n font-size: 14px;\n color: #484848;\n width: 30%;\n}\n\n#wpstg-tab-container .wpstg-form-table tr {\n border-bottom: 1px solid #E7E7E7;\n}\n\n#wpstg-tab-container span.description {\n display: block;\n font-weight: 400;\n font-style: normal;\n font-size: 13px;\n margin-top: 7px;\n color: #484848;\n}\n\n#wpstg-tab-container .col-title {\n color: #484848;\n}\n\n@media only screen and (max-width: 680px) {\n #wpstg-tab-container ul {\n float: none;\n }\n\n #wpstg-tab-container .wpstg-form-table tr > th {\n width: 100%;\n }\n\n #wpstg-tab-container span.description {\n font-size: 14px;\n }\n\n #wpstg-tab-container .wpstg-form-table tr > th,\n #wpstg-tab-container .wpstg-form-table tr > td {\n padding: 10px;\n }\n}\n\n#wpstg-tab-container ul li {\n margin-bottom: 0;\n}\n\n#wpstg-tab-container ul li a {\n display: block;\n padding: 10px 4px 10px 14px;\n border-width: 1px 0;\n border-style: solid;\n border-top-color: white;\n border-bottom-color: #e7e7e7;\n text-decoration: none;\n color: #0097DF;\n font-weight: bold;\n}\n\n#wpstg-tab-container ul li a:hover {\n background-color: #e5e5e5;\n color: #777777;\n}\n\n.wpstg-logo {\n display: block;\n font-size: 16px;\n padding-top: 20px;\n width: 220px;\n float: left;\n}\n\n.wpstg-logo img {\n max-width: 212px;\n}\n\n.wpstg-version {\n display: block;\n padding-top: 40px;\n color: #9b9b9b;\n}\n\n.wpstg_admin .nav-tab {\n color: #3C3C3C;\n}\n\n#wpstg-tab-container table tbody tr:nth-child(1) > th > div {\n font-size: 20px;\n}\n\n/* Cloning workflow */\n\n#wpstg-clonepage-wrapper {\n margin-bottom: 20px;\n width: 98%;\n}\n\n@media screen and (min-width: 1090px) {\n #wpstg-clonepage-wrapper {\n float: left;\n margin-bottom: 20px;\n }\n}\n\n#wpstg-steps {\n margin-top: 0px;\n margin-left: 20px;\n}\n\n#wpstg-steps li {\n color: #444;\n line-height: 20px;\n padding-right: 10px;\n float: left;\n}\n\n.wpstg-step-num {\n border: 1px solid #3e3e3e;\n border-radius: 3px;\n display: inline-block;\n width: 20px;\n height: 20px;\n text-align: center;\n margin-right: 5px;\n}\n\n.wpstg-current-step {\n font-weight: bold;\n}\n\n.wpstg-current-step .wpstg-step-num {\n background: #3e3e3e;\n color: #eee;\n}\n\n.wpstg-box {\n margin: 10px 0;\n padding: 10px;\n position: relative;\n overflow: hidden;\n transition: border-color .2s ease-in-out;\n}\n\n.wpstg-clone {\n margin-bottom: 10px;\n padding: 16px;\n position: relative;\n transition: border-color .2s ease-in-out;\n background-color: #ffffff;\n color: #3e3e3e;\n border-radius: 3px;\n box-shadow: 0 0 1px rgba(0, 0, 0, .125), 0 1px 3px rgba(0, 0, 0, .1);\n}\n\n.wpstg-clone.active {\n border-color: #1d94cf;\n}\n\n.wpstg-clone-header {\n display: flex;\n align-items: center;\n}\n\n.wpstg-clone-title {\n display: inline-block;\n margin-right: 8px;\n font-size: 15px;\n max-width: 300px;\n text-decoration: none;\n font-weight: bold;\n color: #3e3e3e;\n}\n\n.wpstg-clone-title:hover {\n color: #111111;\n}\n\n.wpstg-clone-labels {\n display: inline-block;\n}\n\n\n.wpstg-clone-labels .wpstg-clone-label {\n display: inline-block;\n padding: 1px 4px;\n margin-right: 4px;\n font-size: 11px;\n border-radius: 3px;\n background: #8bc34a;\n color: #fff;\n}\n\n.wpstg-clone-actions {\n margin-left: auto;\n display: flex;\n margin-top: 5px;\n}\n\n.wpstg-dropdown {\n position: relative;\n}\n\n.wpstg-clone-actions .wpstg-dropdown-toggler {\n text-decoration: none;\n background: #25a1f0;\n padding: 6px 10px;\n border-radius: 2px;\n font-size: 14px;\n box-shadow: 0 0 1px rgba(0, 0, 0, .125), 0 1px 3px rgba(0, 0, 0, .2);\n color: #ffffff;\n}\n\n.wpstg-clone-actions .wpstg-dropdown-toggler:hover {\n background: #002648;\n color: white;\n}\n\n.wpstg-dropdown {\n position: relative;\n}\n\n.wpstg-dropdown > .wpstg-dropdown-menu {\n background: #fff;\n display: none;\n flex-direction: column;\n position: absolute;\n right: 0;\n top: calc(100% + 4px);\n padding: 8px;\n border-radius: 2px;\n width: 100px;\n box-shadow: 0 0 1px rgba(0, 0, 0, .125), 0 1px 3px rgba(0, 0, 0, .2);\n z-index: 1000;\n}\n\n.wpstg-dropdown > .wpstg-dropdown-menu.wpstg-menu-dropup {\n top: auto;\n bottom: 100%;\n transform: translate3d(0px, -3px, 0px);\n}\n\n.wpstg-dropdown > .wpstg-dropdown-menu.shown {\n display: flex;\n}\n\n.wpstg-clone-action,\n.wpstg-dropdown-action {\n color: #3e3e3e;\n padding: 6px 8px;\n border-radius: 3px;\n text-decoration: none;\n position: relative;\n transition: color .2s ease-in-out;\n border-bottom: 1px solid #f3f3f3;\n}\n\n.wpstg-clone-action:hover,\n.wpstg-dropdown-action:hover {\n background: rgba(0, 0, 0, 0.05);\n}\n\n.wpstg-dropdown-action {\n color: #3e3e3e;\n background: transparent;\n border: 0 solid black;\n outline: none;\n box-shadow: none;\n}\n\n.wpstg-remove-clone:hover {\n color: #E01E5A;\n}\n\n.wpstg-clone-action:last-child {\n border: none;\n}\n\n.wpstg-clone:hover .wpstg-clone-action {\n display: inline-block;\n}\n\n#wpstg-show-error-details:focus,\n#wpstg-workflow .wpstg-clone-action {\n outline: none;\n box-shadow: none;\n}\n\n.wpstg-link-btn {\n background: #45a1c9;\n color: #fff;\n display: inline-block;\n padding: 5px 10px;\n text-decoration: none;\n vertical-align: baseline;\n transition: all .2s ease-in-out;\n}\n\n.wpstg-link-btn:hover,\n.wpstg-link-btn:focus {\n color: #fff;\n outline: none;\n box-shadow: none;\n}\n\n#wpstg-workflow .wpstg-link-btn:active {\n vertical-align: baseline;\n}\n\n.wpstg-link-btn[disabled] {\n background: #777 !important;\n border-color: #555 !important;\n pointer-events: none;\n}\n\n#wpstg-cancel-cloning,\n#wpstg-cancel-cloning-update {\n margin-top: 5px;\n}\n\n#wpstg-cancel-cloning.success,\n#wpstg-cancel-cloning.success {\n background: #64dd58;\n border-color: #54bd4a;\n}\n\n#wpstg-error-wrapper,\n#wpstg-error-details {\n display: none;\n padding-top: 10px;\n font-size: 13px;\n clear: both;\n}\n\n#wpstg-show-error-details {\n display: inline-block;\n margin-left: 5px;\n color: #555;\n text-decoration: none;\n transition: color .2s ease-in-out;\n}\n\n#wpstg-show-error-details:hover {\n color: #1d94cf;\n}\n\n#wpstg-error-details {\n border-left: 5px solid #E01E5A;\n padding: 10px;\n width: 500px;\n}\n\n#wpstg-try-again {\n display: none;\n}\n\n#wpstg-home-link {\n float: right;\n}\n\n.wpstg-loader {\n content: url('../../img/loading.gif');\n display: none;\n}\n\n.wpstg-loader.wpstg-finished {\n display: block;\n content: \"Finished\";\n background-color: #00c89a;\n color: white;\n padding: 2px 10px;\n margin-top: 0;\n border-radius: 3px;\n}\n\n#wpstg-workflow {\n max-width: 800px;\n position: relative;\n clear: both;\n padding-top: 20px;\n float: left;\n min-width: 500px;\n min-height: 380px;\n padding-right: 20px;\n padding-bottom: 20px;\n}\n\n#wpstg-sidebar {\n float: left;\n max-width: 400px;\n display: block;\n margin-left: 10px;\n}\n\n#wpstg-workflow.loading::after,\n#wpstg-removing-clone.loading::after {\n background: rgba(255, 255, 255, .7);\n content: 'Loading... may take a while for huge websites';\n display: block;\n width: 100%;\n height: 100%;\n font-size: 20px;\n padding-top: 100px;\n text-align: center;\n position: absolute;\n top: 0;\n left: 0;\n z-index: 99;\n}\n\n#wpstg-removing-clone.loading::after {\n content: 'REMOVING' !important;\n}\n\n#wpstg-existing-clones,\n#wpstg-removing-clone {\n position: relative;\n}\n\n#wpstg-existing-clones h3 {\n color: #3e3e3e;\n}\n\n#wpstg-removing-clone .wpstg-tab-section {\n display: block;\n}\n\n.wpstg-progress-bar {\n max-width: 900px;\n height: 27px;\n padding: 0;\n background-color: #d6d8d7;\n}\n\n.wpstg-progress {\n float: left;\n background: #3fa5ee;\n width: 0;\n height: 100%;\n transition: width .6s ease;\n color: white;\n line-height: 25px;\n text-align: center;\n overflow: hidden;\n}\n\n.wpstg-progress-files {\n background: #16b4f0;\n width: 0;\n height: 100%;\n transition: width .6s ease;\n color: white;\n line-height: 25px;\n text-align: center;\n}\n\n#wpstg-new-clone-id.wpstg-error-input,\n#wpstg-clone-path.wpstg-error-input {\n border: 1px solid #E01E5A;\n box-shadow: 0 0 2px rgba(255, 66, 53, .8);\n}\n\n#wpstg-new-clone-id {\n width: 450px;\n max-width: 100%;\n margin-left: 15px;\n}\n\n#wpstg-new-clone {\n background: #25a1f0;\n border-color: #2188c9;\n}\n\n#wpstg-new-clone:hover {\n background: #259be6;\n border-color: #2188c9;\n}\n\n#wpstg-clone-path {\n margin-left: 10px;\n width: 350px;\n}\n\n.wpstg-error-msg {\n color: #E01E5A;\n}\n\n#wpstg-clone-id-error {\n display: block;\n background-color: #f0f8ff;\n padding: 10px;\n margin: 20px;\n}\n\n#wpstg-start-cloning + .wpstg-error-msg {\n display: block;\n margin-top: 5px;\n}\n\n.wpstg-size-info {\n color: #999;\n font-weight: normal;\n position: relative;\n left: 2px;\n}\n\n.wpstg-db-table .wpstg-size-info {\n top: 2px;\n}\n\n.wpstg-db-table:hover {\n background-color: #f0f8ff;\n}\n\n#wpstg-workflow #wpstg-start-cloning {\n margin-left: 5px;\n vertical-align: baseline;\n}\n\n\n/* Tabs */\n\n.wpstg-tabs-wrapper {\n max-width: 640px;\n margin: 10px 0;\n}\n\n#wpstg-path-wrapper {\n border-bottom: 2px dashed #ccc;\n padding-bottom: 10px;\n margin-bottom: 10px;\n}\n\n.wpstg-tab-section {\n border-bottom: 1px solid #ddd;\n border-right: none;\n border-left: none;\n display: none;\n width: calc(100% - 72px);\n padding: 0px 36px;\n}\n\n.wpstg-tab-section::after {\n display: block;\n content: '';\n clear: both;\n}\n\n.wpstg-tab-header {\n border-bottom: 1px solid #ddd;\n border-right: none;\n border-left: none;\n color: #444;\n font-size: 16px;\n font-weight: bold;\n display: block;\n padding: 10px;;\n text-decoration: none;\n}\n\n.wpstg-tab-triangle {\n display: inline-block;\n margin-right: 12px;\n animation: transform 0.5s;\n width: 0;\n height: 0;\n margin-top: -3px;\n vertical-align: middle;\n border-top: 5px solid transparent;\n border-bottom: 5px solid transparent;\n border-left: 10px solid;\n transition: transform 0.2s;\n cursor: pointer;\n}\n\n.wpstg-tab-triangle.wpstg-no-icon {\n margin-right: 2px;\n width: auto;\n height: auto;\n vertical-align: auto;\n border-top: 0px solid;\n border-bottom: 0px solid;\n border-left: 0px solid;\n}\n\n.wpstg-tab-triangle.wpstg-rotate-90 {\n transform: rotate(90deg);\n}\n\n.wpstg-tab-header:focus {\n color: #444;\n outline: none;\n box-shadow: none;\n}\n\n#wpstg-large-files {\n display: none;\n border: 1px dashed #ccc;\n padding: 10px 10px 10px;\n margin-top: 20px;\n position: relative;\n font-size: 12px;\n}\n\n#wpstg-large-files h3 {\n background: #fff;\n margin: 0;\n padding: 0 5px;\n position: absolute;\n top: -10px;\n left: 5px;\n}\n\n.wpstg-subdir {\n display: none;\n margin-left: 20px;\n}\n\n.wpstg-subdir.wpstg-push {\n display: block;\n margin-left: 20px;\n}\n\n.wpstg-dir a.disabled {\n color: #888;\n cursor: default;\n text-decoration: none;\n}\n\n.wpstg-check-subdirs {\n display: inline-block;\n margin-left: 10px;\n}\n\n.wpstg-notice-alert {\n display: block;\n background-color: #E01E5A;\n padding: 20px;\n max-width: 600px;\n margin-top: 10px;\n color: white;\n}\n\n.wpstg-notice--white {\n display: block;\n background-color: #ffffff;\n padding: 20px;\n max-width: 600px;\n margin-top: 10px;\n}\n\n.wpstg-notice-alert a {\n color: white;\n}\n\n.wpstg-notice-alert h3 {\n color: white;\n}\n\n.wpstg-header {\n font-weight: 400;\n line-height: 1.6em;\n font-size: 19px;\n /*\n border-bottom: 1px solid #DFDFDF;\n */\n clear: both;\n padding-top: 10px;\n}\n\n#wpstg-clone-label {\n font-size: 14px;\n font-weight: bold;\n}\n\n.wpstg-log-details {\n height: 300px;\n overflow: scroll;\n max-width: 650px;\n font-family: monospace;\n font-size: 12px;\n line-height: 15px;\n border: 1px solid #FFF;\n background-color: black;\n color: #c0c0c0;\n padding: 3px;\n white-space: nowrap;\n margin-top: 15px;\n}\n\n#wpstg-finished-result {\n display: none;\n}\n\n#wpstg-remove-cloning {\n background: #ff3428;\n border-color: #e72f24;\n margin-top: 5px;\n}\n\n#wpstg-success-notice {\n padding: 10px;\n background-color: white;\n max-width: 900px;\n border: 1px solid #ccc;\n margin-top: 20px;\n}\n\n.wpstg_beta_notice {\n margin-bottom: 20px;\n}\n\n.wpstg-sysinfo {\n width: 700px;\n height: 700px;\n}\n\n.wpstg-form-table .col-title label {\n font-weight: 600;\n}\n\n.wpstg-form-table td:first-child {\n width: 30%;\n padding-right: 20px;\n}\n\n.wpstg-share-button-container {\n margin: 5px 0;\n}\n\n.wpstg-share-button-container p {\n margin: 0 0 10px 0;\n}\n\n.wpstg-share-button {\n display: inline-block;\n}\n\n.wpstg-share-button a {\n text-decoration: none;\n}\n\n.wpstg-share-button .wpstg-share {\n font-family: sans-serif;\n font-weight: bold;\n text-decoration: none;\n text-align: center;\n}\n\n.wpstg-share-button .wpstg-share {\n -webkit-border-radius: 2px;\n -moz-border-radius: 2px;\n border-radius: 2px;\n color: #FFF;\n display: inline;\n font-size: 12px;\n padding: 4px 8px;\n}\n\n.wpstg-share-button-twitter .wpstg-share {\n background-color: #00ABF0;\n}\n\n.wpstg-share-button-facebook .wpstg-share {\n background-color: #3b5998;\n}\n\n.wpstg-share-button-googleplus .wpstg-share {\n background-color: #F53424;\n}\n\n.wpstg-share-button-twitter .share:active,\n.wpstg-share-button-facebook .share:active,\n.wpstg-share-button-googleplus .share:active {\n background-color: #353535;\n}\n\n#wpstg-check-space {\n margin-left: 8px;\n}\n\n#wpstg-welcome li {\n font-size: 18px;\n line-height: 29px;\n position: relative;\n padding-left: 23px;\n list-style: none !important;\n}\n\n#wpstg-welcome {\n margin-top: 20px;\n margin-right: 20px;\n background-color: white;\n}\n\n.wpstg-heading-pro {\n font-weight: bold;\n}\n\n.wpstg-h2 {\n margin-top: 0;\n margin-bottom: 1.2rem;\n font-size: 30px;\n line-height: 2.5rem;\n}\n\n#wpstg-welcome li:before {\n width: 1em;\n height: 100%;\n background: url(data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%3E%3Cpath%20fill%3D%22%2377B227%22%20d%3D%22M1671%20566q0%2040%2D28%2068l%2D724%20724%2D136%20136q%2D28%2028%2D68%2028t%2D68%2D28l%2D136%2D136%2D362%2D362q%2D28%2D28%2D28%2D68t28%2D68l136%2D136q28%2D28%2068%2D28t68%2028l294%20295%20656%2D657q28%2D28%2068%2D28t68%2028l136%20136q28%2028%2028%2068z%22%2F%3E%3C%2Fsvg%3E) left .4em no-repeat;\n background-size: contain;\n content: \"\";\n position: absolute;\n top: -2px;\n left: 0;\n color: #77b227;\n}\n\n.wpstg-h1 {\n margin-bottom: 1.35rem;\n font-size: 2.5em;\n line-height: 3.68rem;\n letter-spacing: normal;\n}\n\n.wpstg--swal2-content {\n color: #3e3e3e;\n}\n\n.wpstg--swal2-content h1 {\n color: #444;\n}\n\n#wpstg-welcome h2 {\n margin: 0 0 15px;\n}\n\n#wpstg-welcome .wpstg-footer {\n clear: both;\n margin-top: 20px;\n font-style: italic;\n}\n\n#wpstg-footer {\n clear: both;\n margin-top: 20px;\n margin-right: 10px;\n padding-top: 50px;\n}\n\n#wpstg-footer a {\n text-decoration: none;\n}\n\n#wpstg-footer li {\n margin-bottom: 2px;\n list-style: circle;\n}\n\n#wpstg-footer ul {\n margin-left: 15px;\n margin-top: 0px;\n}\n\n.wpstg-footer--title {\n margin-left: 15px;\n}\n\n.wpstg-staging-info {\n margin-top: 8px;\n color: #3e3e3e;\n font-size: 12px;\n}\n\n.wpstg-staging-info a {\n color: #3e3e3e;\n}\n\n.wpstg-staging-info li {\n margin-bottom: 2px;\n}\n\n.wpstg-bold {\n font-weight: 600;\n}\n\n#wpstg-processing-status {\n margin-top: 5px;\n font-size: 13px;\n font-weight: 400;\n float: left;\n}\n\n#wpstg-processing-timer {\n margin-top: 5px;\n font-size: 13px;\n font-weight: 400;\n float: right;\n}\n\n#wpstg-report-issue-button {\n margin-left: 30px;\n border: 1px solid #E01E5A;\n color: #E01E5A;\n background-color: white;\n}\n\n#wpstg-report-issue-button:hover {\n background-color: #dc2b62;\n color: #fff;\n}\n\n.wpstg-blue-primary {\n display: inline-block;\n text-decoration: none;\n font-size: 13px;\n height: 28px;\n margin: 0;\n /*\n padding: 0 10px 1px;\n */\n cursor: pointer;\n border-width: 1px;\n border-style: solid;\n -webkit-appearance: none;\n border-radius: 3px;\n white-space: nowrap;\n box-sizing: border-box;\n background: #25a1f0;\n border-color: #2188c9;\n color: #fff;\n /*\n text-shadow: 0 -1px 1px #006799, 1px 0 1px #006799, 0 1px 1px #006799, -1px 0 1px #006799;\n */\n}\n\n.wpstg-blue-primary:hover {\n background: #127fc6;\n}\n\na.wpstg-blue-primary {\n padding: 5px 10px;\n height: auto;\n}\n\n.wpstg-blue-primary:hover {\n background-color: #259be6;\n}\n\n.wpstg-report-issue-form {\n position: absolute;\n z-index: 999;\n width: 300px;\n background-color: #fff;\n padding: 15px 15px 10px;\n border: 1px solid #e8e8e8;\n border-radius: 3px;\n box-shadow: 0 1px 0 0 #fff inset;\n display: none;\n right: 0;\n top: 35px;\n}\n\n@media (max-width: 600px) {\n .wpstg-report-issue-form {\n position: relative;\n }\n}\n\n.wpstg-report-show {\n display: block;\n}\n\n.wpstg-field input[type=text],\n.wpstg-field textarea {\n width: 100%;\n font-weight: 400;\n line-height: 1.4;\n margin-bottom: 4px;\n}\n\n.wpstg-report-email,\n.wpstg-report-hosting-provider {\n width: 100%;\n font-weight: 400;\n font-size: .8rem;\n height: 2.3rem;\n line-height: 2.3rem;\n border-radius: 3px;\n margin-bottom: 4px;\n padding: 0 10px;\n}\n\n.wpstg-report-description {\n border-radius: 3px;\n font-size: .8rem;\n padding: 6px 10px;\n resize: none;\n}\n\n.wpstg-report-privacy-policy {\n font-size: 12px;\n margin-bottom: 15px;\n}\n\n#wpstg-report-cancel {\n float: right;\n margin-right: 5px;\n font-weight: bold;\n}\n\n#wpstg-success-button {\n font-weight: bold;\n}\n\n.wpstg-message {\n box-sizing: border-box;\n -moz-box-sizing: border-box;\n background-color: #f5e0de;\n border-radius: 3px;\n color: rgba(0, 0, 0, .6);\n height: auto;\n margin: 10px 0;\n min-height: 18px;\n padding: 6px 10px;\n position: relative;\n}\n\n.wpstg-message.wpstg-error-message {\n background-color: #f5e0de;\n color: #b65147;\n font-size: 12px;\n}\n\n.wpstg-message.wpstg-success-message {\n background-color: #d7f8e0;\n color: #515151;\n}\n\n.wpstg-message p {\n margin: 3px 0;\n font-size: 13px;\n}\n\n.wpstg-warning {\n display: block;\n padding: 10px;\n background-color: #ffb804;\n color: #ffffff;\n margin: 10px 10px 10px 0;\n}\n\n.wpstg-warning a {\n color: #ffffff;\n font-weight: bold;\n text-decoration: underline;\n}\n\n.wpstg-error {\n display: block;\n padding: 10px !important;\n background-color: #E01E5A !important;\n color: #ffffff;\n margin: 10px 10px 10px 0 !important;\n border-color: transparent !important;\n border-left-color: transparent !important;\n box-shadow: none !important;\n}\n\n.wpstg-error a {\n color: #ffffff;\n font-weight: bold;\n text-decoration: underline;\n}\n\n#wpstg-resume-cloning {\n display: none;\n}\n\n#wpstg-external-db th {\n text-align: left;\n width: 120px;\n}\n\n#wpstg-db-connect {\n font-weight: normal;\n}\n\n#wpstg-db-status {\n display: block;\n margin-top: 5px;\n padding: 5px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n border-radius: 4px;\n text-decoration: none;\n text-align: center;\n}\n\n.wpstg-text-field > #wpstg-db-status {\n margin-top: 8px;\n margin-left: 150px;\n min-width: 300px;\n}\n\n.wpstg-success {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #d6e9c6;\n}\n\n.wpstg-failed {\n color: #a94442;\n background-color: #f2dede;\n border-color: #ebccd1;\n}\n\n#wpstg_select_tables_cloning {\n height: 600px;\n font-size: 13px;\n}\n\n#wpstg_select_tables_pushing {\n height: 400px;\n font-size: 13px;\n}\n\n#wpstg-update-notify {\n background-color: #E01E5A;\n font-size: 14px;\n color: #ffffff;\n line-height: normal;\n padding: 10px;\n}\n\n#wpstg-update-notify a {\n color: #ffffff;\n font-weight: bold;\n}\n\n.wpstg-pointer {\n cursor: pointer;\n}\n\n.wpstg--tab--header {\n background-color: white;\n /* margin-bottom: 10px; */\n /* padding: 16px; */\n position: relative;\n transition: border-color .2s ease-in-out;\n background-color: #ffffff;\n color: #3e3e3e;\n border-radius: 2px;\n box-shadow: 0 0 1px rgba(0, 0, 0, .125), 0 1px 3px rgba(0, 0, 0, .02);\n}\n\n.wpstg--tab--header ul {\n display: flex;\n}\n\n.wpstg--tab--header ul li {\n margin-right: 1em;\n margin-bottom: 0px;\n}\n\n.wpstg--tab--header ul li:last-child {\n margin-right: 0;\n}\n\n.wpstg--tab--header a {\n min-width: 150px;\n text-align: center;\n cursor: pointer;\n display: inline-block;\n padding: 1em 1.25em;\n padding-bottom: 9px;\n color: #c4c4c4;\n font-size: 18px;\n /*\n border: solid 1px;\n */\n}\n\n.wpstg--tab--header a.wpstg--tab--active {\n border-bottom: .4em solid #25A1F0;\n color: #25A1F0;\n}\n\n.wpstg--tab--header a:hover {\n background-color: #fefefe;\n border-bottom: 0.4em solid #25A1F0;\n color: #25A1F0;\n}\n\n.wpstg--tab--content {\n display: none;\n}\n\n.wpstg--tab--active {\n display: block;\n}\n\n.wpstg--text--strong,\n.wpstg--text--strong * {\n font-weight: bold !important;\n}\n\n.wpstg--text--danger {\n color: #a94442;\n}\n\n.wpstg--tooltip {\n position: relative;\n display: inline-block;\n margin-left: 5px;\n}\n\n.wpstg--tooltip.wpstg--tooltip-normal {\n margin-left: 0;\n border-bottom: 0;\n}\n\n.wpstg--tooltip .wpstg--tooltiptext {\n visibility: hidden;\n width: 300px;\n background-color: #ffffff;\n color: #505050;\n text-align: left;\n padding: 12px;\n border-radius: 3px;\n position: absolute;\n z-index: 1;\n -webkit-box-shadow: rgba(0, 0, 0, 0.16) 0px 1px 4px;\n -moz-box-shadow: rgba(0, 0, 0, 0.16) 0px 1px 4px;\n box-shadow: rgba(0, 0, 0, 0.16) 0px 1px 4px;\n font-weight: normal;\n}\n\n.wpstg--tooltiptext-backups {\n width: 120px;\n top: 100%;\n left: -150%;\n margin-left: -56px;\n margin-top: 4px;\n}\n\n.wpstg--tooltip.wpstg--exclude-rules--tooltip {\n border-bottom: 0px solid transparent;\n}\n\n.wpstg--tooltip.wpstg--exclude-rules--tooltip > .wpstg--tooltiptext {\n margin-top: 0px;\n margin-left: -150px;\n}\n\n/**\nTooltip top arrow\n */\n\n.wpstg--tooltip .wpstg--tooltiptext-backups::after {\n content: \" \";\n position: absolute;\n bottom: 100%;\n /* At the top of the tooltip */\n left: 50%;\n margin-left: 25px;\n border-width: 5px;\n border-style: solid;\n border-color: transparent transparent white transparent;\n}\n\n.wpstg--tooltip .wpstg--tooltiptext.has-top-arrow {\n margin-top: 6px;\n}\n\n.wpstg--tooltip .wpstg--tooltiptext.has-top-arrow::after {\n content: \" \";\n position: absolute;\n bottom: 100%;\n left: 50%;\n margin-left: -18px;\n border-width: 5px;\n border-style: solid;\n border-color: transparent transparent white transparent;\n}\n\n.wpstg--snaphot-restore-table tr {\n line-height: 12px;\n}\n\n.wpstg-float-left {\n float: left;\n}\n\n.wpstg-beta-notice {\n background-color: #b0e8b0;\n border-radius: 3px;\n padding: 7px;\n margin-bottom: 20px;\n}\n\n#wpstg-backup-name {\n font-size: 1.875em;\n font-weight: 600;\n}\n\n#wpstg_select_tables_cloning option:checked,\n#wpstg_select_tables_pushing option:checked {\n /* Cannot use background color here because Chrome and Firefox ignore it even if set to !important */\n -webkit-appearance: menulist-button;\n background-image: linear-gradient(0deg, #1e90ff 0%, #1e90ff 100%);\n}\n\n.wpstg--btn--cancel {\n background: #ff3428;\n border-color: #e72f24;\n color: #fff;\n height: auto;\n line-height: normal;\n font-size: 16px;\n padding: .5em;\n margin-bottom: 1.5em;\n}\n\n.wpstg--btn--cancel:hover {\n background: #ff3428;\n border-color: #e72f24;\n}\n\n.wpstg--process--content > .wpstg--swal2-html-container {\n padding: 4em 2em !important;\n}\n\n.wpstg--modal--process--logs,\n.wpstg--modal--error--logs {\n background: #ffffff;\n border: 1px solid #a8a8a8;\n border-radius: 3px;\n height: 300px;\n margin-top: 1em;\n display: none;\n padding-top: 10px;\n padding-left: 10px;\n overflow: auto;\n text-align: justify;\n}\n\n.wpstg--modal--error--logs {\n height: auto;\n max-height: 300px;\n}\n\n.wpstg--modal--process--logs p {\n font-size: 12px;\n white-space: nowrap;\n}\n\n.wpstg--modal--process--logs p.wpstg--modal--process--msg--info {\n color: #222222;\n}\n\n.wpstg--modal--process--logs p.wpstg--modal--process--msg--debug {\n color: #757575;\n}\n\n.wpstg--modal--process--title {\n color: #565656;\n margin: .25em 0;\n}\n\n.wpstg--modal--process--subtitle {\n margin: .5em 0;\n color: #565656;\n}\n\n.wpstg--modal--error--logs > p {\n text-align: left;\n font-size: 14px;\n color: #222222;\n}\n\n.wpstg--modal--process--logs p,\n.wpstg--modal--error--logs p {\n margin: 0px;\n margin-bottom: 2px;\n}\n\n.wpstg--modal--process--msg--error {\n color: #E01E5A;\n}\n\n.wpstg--modal--process--msg--critical {\n color: #E01E5A;\n}\n\n.wpstg--modal--process--msg--warning {\n color: darkorange;\n}\n\n.wpstg--modal--process--msg-found {\n font-size: 16px;\n color: #E01E5A;\n font-weight: bold;\n}\n\n.wpstg--modal--delete {\n text-align: left;\n margin-top: 8px;\n color: #565656;\n}\n\n.wpstg-swal-popup .wpstg--swal2-cancel.wpstg--btn--cancel {\n margin-bottom: 0;\n text-shadow: none !important;\n}\n\n.wpstg-swal-popup .wpstg-loader {\n display: inline-block !important;\n}\n\n.wpstg--modal--process--generic-problem {\n display: none;\n border-left: 5px solid #E01E5A;\n margin: .5em 0;\n}\n\n.wpstg--modal--process--logs--tail {\n font-size: 16px;\n color: #565656;\n background: none;\n border: none;\n cursor: pointer;\n text-decoration: underline;\n}\n\n.wpstg--modal--backup--import--upload--title {\n color: #3e3e3e;\n}\n\n.wpstg--modal--backup--import--configure,\n.wpstg--modal--backup--import--upload--status,\n.wpstg--modal--backup--import--upload--container input[type=\"file\"] {\n display: none;\n}\n\n#wpstg--backups--import--file-list {\n font-size: 14px;\n font-weight: bold;\n}\n\n#wpstg--backups--import--file-list-empty {\n color: #E01E5A;\n}\n\n.wpstg--modal--backup--import--filesystem label {\n font-size: 14px;\n}\n\n.wpstg--modal--backup--import--filesystem button {\n margin-bottom: 20px;\n}\n\n.wpstg--modal--backup--import--upload {\n position: relative;\n min-height: 30px;\n}\n\n.wpstg--modal--backup--import--upload {\n color: #505050;\n}\n\n.wpstg--modal--backup--import--upload--container {\n position: relative;\n border-radius: 10px;\n margin: .5em;\n padding: 1em .5em;\n border: 3.5px dashed #dedede;\n transition: background-color 0.3s ease, color 0.3s ease;\n background-color: #f4fbff;\n min-height: 130px;\n}\n\n.wpstg--modal--backup--import--upload--container.wpstg--has-dragover span.wpstg--drop {\n display: inline-flex;\n}\n\n.wpstg--modal--backup--import--upload--container input[type='file'] {\n display: none;\n}\n\n.wpstg--modal--backup--import--upload--container img {\n margin-top: 10px;\n width: 4em;\n align-self: center;\n border: none;\n}\n\n.wpstg--modal--backup--import--upload--container span {\n margin-top: 1em;\n}\n\n.wpstg--backup--import--options > button {\n margin-top: 1em;\n padding: 1em;\n align-self: center;\n width: 185px;\n height: auto;\n line-height: normal;\n}\n\n.wpstg--backup--import--options {\n position: relative;\n display: flex;\n justify-content: center;\n}\n\n.wpstg--backup--import--options ul {\n display: none;\n}\n\n.wpstg--backup--import--options.wpstg--show-options ul {\n padding: 0;\n margin: 54px 0 0 0;\n display: block;\n position: absolute;\n width: 185px;\n background: #25a1f0;\n box-sizing: border-box;\n border-radius: 0 0 3px 3px;\n border-width: 1px;\n border-color: #2188c9;\n text-shadow: 0 -1px 1px #006799, 1px 0 1px #006799, 0 1px 1px #006799, -1px 0 1px #006799;\n}\n\n.wpstg--backup--import--options.wpstg--show-options ul li {\n border-bottom: .1em solid #25a1f0;\n margin: 0;\n}\n\n.wpstg--backup--import--options.wpstg--show-options ul li:hover {\n background-color: #25a1f0;\n}\n\n.wpstg--backup--import--options.wpstg--show-options ul li:last-child {\n border-bottom: none;\n}\n\n.wpstg--backup--import--options ul li button {\n cursor: pointer;\n background: none;\n border: none;\n margin: 0;\n width: 100%;\n color: white;\n height: 40px;\n line-height: 40px;\n}\n\n.wpstg--backup--import--options ul li button:hover {\n background-color: #259be6;\n}\n\n.wpstg--modal--backup--import--search-replace--info {\n margin: 1em 0;\n display: flex;\n flex-direction: row;\n}\n\n.wpstg--modal--backup--import--info p {\n text-align: left;\n margin: 0;\n}\n\n.wpstg--modal--backup--import--search-replace--wrapper button {\n align-self: center;\n}\n\n.wpstg--import--advanced-options--button {\n border: 0;\n border-radius: 3px;\n font-size: 18px;\n text-shadow: 0 -1px 1px #006799, 1px 0 1px #006799, 0 1px 1px #006799, -1px 0 1px #006799;\n cursor: pointer;\n}\n\n.wpstg--modal--backup--import--search-replace--new {\n color: white;\n background-color: #25a1f0;\n}\n\n.wpstg--modal--backup--import--search-replace--remove {\n color: white;\n background-color: #25a1f0;\n width: 22px;\n height: 22px;\n margin-left: 5px;\n}\n\n.wpstg--modal--backup--import--search-replace--input-group:first-child button {\n display: none;\n}\n\n.wpstg--modal--backup--import--search-replace--input--container {\n flex: 1;\n display: flex;\n flex-direction: column;\n}\n\n.wpstg--modal--backup--import--search-replace--input-group {\n width: 100%;\n border-bottom: 6px solid #f1f1f1;\n margin-bottom: 10px;\n}\n\n.wpstg--modal--backup--import--search-replace--input-group input {\n min-width: 250px;\n width: calc(50% - 4px - 11px - 5px); /* -4px is half of the padding; -11px is half of the button; -5 is the margin left of the button */\n display: inline-block;\n line-height: 10px;\n border: 1px solid #dedede;\n border-radius: 3px;\n color: #666;\n padding: 8px;\n margin-bottom: 12px;\n}\n\n.wpstg--modal--import--upload--process {\n display: none;\n position: relative;\n height: 30px;\n margin-top: 20px;\n margin-bottom: 20px;\n width: 100%;\n top: 0;\n left: 0;\n text-indent: 1em;\n white-space: nowrap;\n overflow: hidden;\n color: #333333;\n justify-content: center;\n align-items: center;\n}\n\n.wpstg--modal--import--upload--progress {\n position: absolute;\n background: #98d452;\n color: white;\n height: 100%;\n border-radius: 4px;\n left: 0;\n top: 0;\n}\n\n.wpstg--modal--import--upload--progress--title {\n z-index: 9;\n}\n\n.wpstg-fieldset:disabled {\n opacity: 0.8;\n border-top: 1px solid white;\n margin-top: 20px;\n}\n\n.wpstg-fieldset {\n padding-left: 20px;\n}\n\n.wpstg-fs-14 {\n font-size: 14px;\n}\n\n.wpstg-dark-alert {\n font-weight: bold;\n background-color: #0e86d9;\n padding: 15px;\n margin-top: 0px;\n color: white;\n}\n\n.wpstg-dark-alert .wpstg-button--cta-red {\n margin-left:10px;\n}\n\n.wpstg-form-group {\n display: block;\n width: 100%;\n margin-bottom: 8px;\n align-items: center;\n}\n\n.wpstg-form-group > label {\n display: block;\n font-weight: 700;\n}\n\n.wpstg-text-field > input {\n width: 300px;\n display: block;\n line-height: 1.5;\n}\n\n.wpstg-code-segment {\n display: block;\n}\n\n.wpstg-text-field > .wpstg-code-segment {\n margin-top: 4px;\n min-width: 300px;\n}\n\n.wpstg-form-group > .wpstg-checkbox {\n min-width: 100%;\n width: 100%;\n position: relative;\n}\n\n.wpstg-form-group > .wpstg-checkbox > input[type='checkbox'] {\n left: 150px;\n}\n\n.wpstg-rounded {\n border-radius: 3px;\n}\n\n.wpstg-white-border {\n border: 1px solid white !important;\n}\n\n.wpstg-ml-4 {\n margin-left: 4px;\n}\n\n#wpstg-confirm-backup-restore-data {\n margin: 40px;\n text-align: left;\n}\n\n#wpstg-advanced-settings hr {\n margin: 20px 0;\n}\n\n.wpstg-form-row {\n display: block;\n}\n\n.wpstg-form-row label,\n.wpstg-form-row input {\n display: table-cell;\n padding-left: 5px;\n padding-right: 5px;\n margin-top: 3px;\n margin-bottom: 3px;\n}\n\n.wpstg-form-row input {\n width: 400px;\n}\n\n.wpstg-form-row label {\n font-weight: bold;\n width: 1px;\n white-space: nowrap;\n}\n\n#wpstg-db-connect-output #wpstg-db-status {\n width: 390px;\n}\n\n.wpstg-fs-14 {\n font-size: 14px;\n}\n\n.wpstg-code-segment {\n display: block;\n}\n\n.wpstg-form-group > .wpstg-checkbox {\n min-width: 100%;\n width: 100%;\n}\n\n.wpstg-form-group > .wpstg-checkbox > input[type='checkbox'] {\n margin-left: 10px;\n}\n\n@media only screen and (max-width: 768px) {\n .wpstg-form-group > label {\n min-width: auto;\n width: auto;\n }\n\n .wpstg-text-field > input {\n width: 100%;\n }\n\n .wpstg-text-field > .wpstg-code-segment {\n margin-left: 0;\n min-width: 100%;\n }\n\n .wpstg-tab-section {\n width: calc(100vw - 60px);\n max-width: 450px;\n }\n}\n\n.wpstg-rounded {\n border-radius: 3px;\n}\n\n.wpstg-white-border {\n border: 1px solid white !important;\n}\n\n.wpstg-m-0 {\n margin: 0;\n}\n\n.wpstg-mt-10px {\n margin-top: 10px !important;\n}\n\n.wpstg-mr-10px {\n margin-right: 10px !important;\n}\n\n.wpstg-my-10px {\n margin-top: 10px !important;\n margin-bottom: 10px !important;\n}\n\n.wpstg-w-100 {\n width: 100%;\n}\n\n.wpstg-box-shadow {\n box-shadow: 0 1px 1px 0 rgba(0, 0, 0, .1);\n}\n\n.wpstg-float-left {\n float: left;\n}\n\n.wpstg-bold-text {\n font-weight: bold;\n}\n\n.wpstg-warning.notice {\n border-left: 4px solid #ffba00;\n}\n\n.wpstg-confirmation-label {\n background-color: #5b9dd9;\n color: #fff;\n padding: 2px;\n border-radius: 3px;\n}\n\n.wpstg-my-6px {\n margin-bottom: 6px;\n margin-top: 6px;\n}\n\n.wpstg-mb-10px {\n margin-bottom: 10px;\n}\n\n.wpstg-clear-both {\n clear: both;\n}\n\n.wpstg-font-italic {\n font-style: italic;\n}\n\n.wpstg-mt-20px {\n margin-top: 20px;\n}\n\n.wpstg-welcome-container {\n border: 2px solid white;\n padding: 20px;\n margin-bottom: 20px;\n}\n\n.wpstg-ml-30px {\n margin-left: 30px;\n}\n\n.wpstg-text-center {\n text-align: center;\n}\n\n.wpstg-feedback-link {\n text-decoration: none;\n}\n\n.wpstg-feedback-span {\n display: block;\n margin-bottom: 3px;\n}\n\n#wpstg-confirm-backup-restore-data {\n margin: 40px;\n text-align: left;\n}\n\n#wpstg-confirm-backup-restore-wrapper {\n margin: 30px;\n margin-top: 0;\n}\n\n#wpstg-confirm-backup-restore-wrapper h3 {\n color: #E01E5A;\n}\n\n#wpstg-progress-db,\n#wpstg-progress-backup {\n background-color: #3fa5ee;\n}\n\n#wpstg-progress-sr,\n#wpstg-progress-files.wpstg-pro {\n background-color: #3c9ee4;\n}\n\n#wpstg-progress-dirs,\n#wpstg-progress-data {\n background-color: #3a96d7;\n}\n\n#wpstg-progress-files:not(.wpstg-pro),\n#wpstg-progress-finishing {\n background-color: #378cc9;\n}\n\n.wpstg-issue-resubmit-confirmation.wpstg--swal2-container,\n.wpstg-swal2-container.wpstg--swal2-container {\n z-index: 10500;\n}\n\n.wpstg-swal2-container.wpstg-swal2-loading .wpstg--swal2-actions,\n.wpstg-swal2-container.wpstg-swal2-loading .wpstg--swal2-header {\n display: none;\n}\n\nbody.toplevel_page_wpstg_backup .wpstg--swal2-container .wpstg--swal2-content,\nbody.toplevel_page_wpstg_clone .wpstg--swal2-container .wpstg--swal2-content {\n z-index: 2;\n}\n\n.toplevel_page_wpstg_clone #swal2-content h2 {\n color: #3e3e3e;\n}\n\n.toplevel_page_wpstg_clone #swal2-content {\n line-height: 1.5em;\n}\n\ndiv#exportUploadsWithoutDatabaseWarning {\n font-style: italic;\n font-size: 0.9rem;\n margin: 10px;\n padding: 10px;\n border: 1px solid #e3e3e3;\n border-radius: 5px;\n text-align: center;\n background-color: #fafafa;\n}\n\n.wpstg-advanced-options-dropdown-wrapper {\n display: none; /* ENABLE WHEN WE HAVE ADVANCED OPTIONS FOR EXPORTING */\n margin-top: 20px;\n}\n\n.wpstg--modal--backup--import--search-replace--wrapper {\n text-align: left;\n margin-top: 20px;\n}\n\n.wpstg--modal--backup--import--search-replace--new--wrapper {\n text-align: center;\n}\n\n.wpstg-import-backup-contains li {\n display: inline-block;\n margin-bottom:0px;\n}\n\n.wpstg-import-backup-contains li .wpstg-backups-contains {\n border-radius: 3px;\n color: #979797;\n background-color: #f4f4f4 !important;\n width: 18px;\n height: 18px;\n font-size: 17px;\n}\n\n.wpstg-import-backup-contains.wpstg-listing-single-backup li .wpstg-backups-contains {\n padding: 2px;\n background-color: white;\n}\n\n.wpstg-import-backup-contains.wpstg-listing-single-backup li .wpstg-backups-contains > .wpstg--dashicons {\n filter: invert(35%);\n}\n\n.wpstg-import-backup-contains .wpstg--tooltiptext {\n width: 80px;\n font-size: 13px;\n padding: 5px;\n left: -25px;\n text-align: center;\n}\n\n.wpstg-import-backup-contains-title {\n display: inline-block;\n}\n\nul.wpstg-import-backup-contains {\n display: inline-block;\n}\n\n.wpstg-import-backup-name {\n display: inline-block;\n font-weight: bold;\n}\n\n.wpstg-backup-more-info-toggle {\n font-size: x-small;\n display: inline-block;\n font-style: italic;\n cursor: pointer;\n}\n\n.wpstg-backup-more-info-toggle::selection {\n background: none;\n}\n\nul.wpstg-import-backup-more-info {\n font-size: 14px;\n text-align: left;\n margin-bottom: 30px;\n margin-top: 10px;\n background-color: #f6f6f6;\n border: 1px solid #878787;\n border-radius: 3px;\n padding: 7px;\n cursor: pointer;\n}\n\nul.wpstg-import-backup-more-info:hover {\n background-color: #def2ff;\n border: 1px solid #25a1f0;\n}\n\nul.wpstg-import-backup-more-info li {\n height: 20px;\n}\n\n.wpstg-backup-list {\n max-width: 800px;\n}\n\n.wpstg-backup-list h3 {\n color:#3e3e3e;\n}\n\n.wpstg-backup-list ul ul {\n margin-block-start: 1em;\n margin-block-end: 1em;\n}\n\n.wpstg-push-confirmation-message {\n text-align: justify;\n font-size: 15px;\n}\n\n.wpstg-settings-row {\n padding-top: 10px;\n padding-bottom: 10px;\n}\n\n.wpstg-settings-title {\n font-weight: 600;\n}\n\n.wpstg-settings-form-group {\n display: flex;\n align-items: center;\n}\n\n.wpstg-settings-form-group > .wpstg-settings-message {\n width: 30%;\n padding: 0;\n margin: 7px 0 0;\n}\n\n/**\n * WP STAGING EXCLUSION RULES TABLE LAYOUT\n */\n\n.wpstg-excluded-filters-container {\n padding: 0;\n margin-top: 10px;\n margin-bottom: 10px;\n max-width: 100%;\n width: 100%;\n}\n\n.wpstg-excluded-filters-container > table {\n width: 100%;\n border-collapse: collapse;\n border-color: transparent;\n}\n\n.wpstg-excluded-filters-container td {\n padding-top: 4px;\n padding-bottom: 4px;\n height: 20px;\n}\n\n.wpstg-excluded-filters-container h4 {\n margin: 0;\n}\n\n.wpstg-exclude-filters-foot {\n display: flex;\n justify-content: flex-start;\n padding: 0;\n}\n\n/**\n * WP STAGING EXCLUSION RULE DROPDOWN STYLE\n */\n\n\n.wpstg-exclude-filter-dropdown > button:hover {\n background: #135e96;;\n border: 1px solid #135e96;;\n}\n\n.wpstg-exclude-filter-dropdown > .wpstg-dropdown-menu {\n width: 128px;\n}\n\n.wpstg-remove-exclude-rule {\n color: #fff !important;\n background-color: #e01e5a;\n border: 1px solid #e01e5a;\n width: 20px;\n height: 20px;\n border-radius: 10px;\n font-size: 24px;\n padding: 0;\n display: inline-flex;\n justify-content: center;\n outline: none;\n box-shadow: none;\n font-weight: 400;\n line-height: 0.7;\n margin-top: 5px;\n cursor: pointer;\n}\n\n.wpstg-remove-exclude-rule:hover {\n background-color: #E01E5A;\n border-color: #E01E5A;\n}\n\n.wpstg-code-block {\n margin-top: 4px;\n font-size: 1.2em;\n background: #f8f8f8;\n border-radius: 2px;\n}\n\n.wpstg-rule-info {\n background: #f8f8f8 !important;\n}\n\ncode.wpstg-code {\n display: inline-block;\n font-size: 11px;\n border: 1px solid #aaa;\n background: #fff;\n padding: 2px 4px;\n margin-bottom: 1px;\n color: #E01E5A;\n}\n\n.wpstg-exclusion-rule-info {\n color: #fff !important;\n background-color: #ffc107;\n border: 1px solid #ffc107;\n width: 14px;\n height: 14px;\n border-radius: 7px;\n font-size: 14px;\n padding: 0;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n outline: none;\n box-shadow: none;\n font-weight: 400;\n vertical-align: middle;\n}\n\n.wpstg-exclusion-rule-info:hover {\n background-color: #ffba0c;\n border: 1px solid #ffba0c;\n}\n\n/**\n * WP STAGING INPUTS EXCLUSION RULES\n */\n\n.wpstg-exclude-rule-input {\n font-size: 12px !important;\n padding: 2px 6px;\n box-shadow: none;\n outline: none !important;\n display: inline-block;\n font-weight: 400;\n line-height: 1.5;\n color: #222;\n border-radius: 0 !important;\n background-color: #fff;\n border: 1px solid #bbb;\n min-height: 24px !important;\n margin-top: 4px;\n margin-left: 4px;\n vertical-align: baseline !important;\n transition: all 0.3s cubic-bezier(.25, .8, .25, 1);\n width: 135px;\n}\n\n.wpstg-excluded-filters-container tbody > tr:last-child .wpstg-exclude-rule-input {\n margin-bottom: 4px;\n}\n\n.wpstg-exclude-rule-input:hover {\n border: 1px solid #999;\n}\n\n.wpstg-exclude-rule-input:focus {\n border: 1px solid #25A0F1 !important;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24) !important;\n}\n\n.wpstg-file-size-exclude-select,\n.wpstg-path-exclude-select {\n width: 135px;\n}\n\n.wpstg-file-size-exclude-select-small {\n width: 52px;\n}\n\n.wpstg-file-size-exclude-input {\n width: 75px;\n}\n\n.wpstg-staging-option-title {\n margin: 15px 0 0;\n}\n\n.wpstg-swal-push-container.wpstg--swal2-container {\n z-index: 9995;\n}\n\n#wpstg-scanning-files {\n padding-bottom: 5px;\n}\n\n#wpstg-scanning-files.wpstg-tab-section, #wpstg-scanning-db.wpstg-tab-section {\n padding-top: 10px;\n}\n\n.wpstg-reset-excludes-container {\n margin: 10px 0;\n}\n\n.wpstg-swal2-ajax-loader {\n width: 100%;\n height: 150px;\n overflow: hidden;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n@keyframes wpstg-loading-icon-anim {\n 0% {\n transform: rotate(0);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n\n.wpstg-swal2-ajax-loader > img {\n width: 64px;\n height: 64px;\n animation: wpstg-loading-icon-anim 1s infinite linear;\n -webkit-animation: wpstg-loading-icon-anim 1s infinite linear;\n}\n\n.wpstg-swal2-container .wpstg-tab-section {\n width: auto !important;\n}\n\n#wpstg-no-staging-site-results {\n margin-top: 10px;\n max-width: 375px;\n}\n\nli#wpstg-backup-no-results {\n max-width: 500px;\n}\n\nli#wpstg-backup-no-results div, #wpstg-no-staging-site-results div {\n display: inline-block;\n text-align: center;\n}\n\nli#wpstg-backup-no-results .wpstg--dashicons, #wpstg-no-staging-site-results .wpstg--dashicons {\n filter: invert(50%);\n position: absolute;\n margin-top: 1px;\n}\n\nli#wpstg-backup-no-results .no-backups-found-text, #wpstg-no-staging-site-results .no-staging-site-found-text {\n color: #5d5d5d;\n margin-left: 20px;\n}\n\n@media only screen and (max-width: 680px) {\n li#wpstg-backup-no-results div, #wpstg-no-staging-site-results div {\n width: 100%;\n }\n}\n\n#wpstg--modal--backup--download-inner p.wpstg-download-modal-text {\n font-size: 16px;\n color: #565656;\n}\n\n#wpstg--modal--backup--download-inner h2 {\n color: #565656;\n}\n\n.wpstg-backup-restore-contains-database,\n.wpstg-backup-restore-contains-files {\n display: none;\n}\n\n.wpstg-green-button {\n background: #8bc34a;\n border: 1px solid #78a93f;\n color: white;\n text-shadow: 0 -1px 1px #78a93f, 1px 0 1px #78a93f, 0 1px 1px #40c921, -1px 0 1px #78a93f;\n}\n\n.wpstg-green-button:hover {\n background: #78a93f;\n}\n\n.wpstg-is-dir-loading {\n position: absolute;\n margin-top: -2px;\n margin-left: 8px;\n display: none;\n}\n\n.wpstg-ml-8px {\n margin-left: 8px;\n}\n\n.wpstg-mb-8px {\n margin-bottom: 8px;\n}\n\n\n.wpstg-btn-danger {\n background-color: #E01E5A;\n border: 1px solid #E01E5A;\n color: white;\n text-shadow: none;\n}\n\n.wpstg-btn-danger:hover {\n background: #c0194d;\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);\n}\n\n.wpstg-swal2-container.wpstg-swal2-loading > .wpstg--swal2-modal {\n height: 200px;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container:not(.wpstg-swal2-loading) > .wpstg--swal2-modal {\n max-width: 480px;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container .wpstg--swal2-header {\n display: none;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container .wpstg--swal2-content {\n height: auto;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container > .wpstg--swal2-modal > .wpstg--swal2-content .wpstg-tabs-wrapper {\n overflow-y: auto;\n height: auto !important;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container > .wpstg--swal2-modal > .wpstg--swal2-content {\n font-size: 13px;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container > .wpstg--swal2-modal > .wpstg--swal2-content .wpstg-dir {\n margin-bottom: 4px;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container > .wpstg--swal2-modal > .wpstg--swal2-content .wpstg-subdir {\n margin-top: 4px;\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container.has-collapsible-open .wpstg--swal2-modal {\n height: calc(100vh - 70px);\n}\n\n.wpstg-reset-confirmation.wpstg-swal2-container.has-collapsible-open > .wpstg--swal2-modal > .wpstg--swal2-content .wpstg-tabs-wrapper {\n height: calc(100vh - 350px) !important;\n}\n\n.wpstg--swal2-actions.wpstg--modal--actions > button {\n margin-left: 4px;\n margin-right: 4px;\n text-transform: uppercase;\n text-shadow: initial;\n font-weight: 500;\n min-width: 80px;\n}\n\n.wpstg-swal-popup {\n max-width: 1200px !important;\n}\n\n.wpstg-swal-popup.wpstg-push-finished .wpstg--swal2-title {\n color: #a8a8a8;\n}\n\n.wpstg-swal-popup.wpstg-push-finished .wpstg--swal2-content {\n margin-top: 8px;\n color: #a8a8a8;\n}\n\n.wpstg-swal-popup .wpstg--swal2-progress-steps .wpstg--swal2-progress-step.wpstg--swal2-active-progress-step,\n.wpstg-swal-popup .wpstg--swal2-progress-steps .wpstg--swal2-progress-step,\n.wpstg-swal-popup .wpstg--swal2-progress-steps .wpstg--swal2-progress-step-line {\n background: #25a1f0;\n}\n\n.wpstg-swal-popup .wpstg--swal2-progress-steps .wpstg--swal2-progress-step-line {\n width: 2.75em;\n}\n\n.wpstg--dashicons {\n width: 16px;\n height: 16px;\n}\n\n.wpstg--dashicons.wpstg-dashicons-grey {\n filter: invert(20%);\n}\n\n.wpstg--dashicons.wpstg-dashicons-19 {\n width: 19px;\n height: 19px;\n}\n\n.wpstg--dashicons.wpstg-dashicons-21 {\n width: 21px;\n height: 21px;\n}\n\n#wpstg--tab--backup #wpstg-step-1 {\n display: flex;\n align-items: center;\n}\n\n.wpstg-advanced-options .wpstg--tooltip,\n#wpstg--tab--backup #wpstg-step-1 .wpstg--tooltip {\n border-bottom: 0 solid transparent;\n display: inline-flex;\n align-items: center;\n}\n\n.wpstg-advanced-options-site .wpstg--tooltip img.wpstg--dashicons {\n filter: invert(17%) sepia(0%) saturate(1%) hue-rotate(195deg) brightness(97%) contrast(77%);\n}\n\n#wpstg--tab--backup #wpstg-step-1 .wpstg--tooltip {\n border-bottom: 0 solid transparent;\n display: flex;\n align-items: center;\n}\n\n.wpstg--tooltip .wpstg--tooltiptext-backups::after {\n left: calc(20% + 2px);\n}\n\n.wpstg-listing-single-backup .wpstg--dashicons {\n width: 17px;\n height: 17px;\n}\n\n.wpstg-100-width {\n width: 100px;\n}\n\n.wpstg-caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: 4px solid;\n border-right: 4px solid transparent;\n border-left: 4px solid transparent;\n transition: transform 0.2s;\n cursor: pointer;\n}\n\n.wpstg-caret.wpstg-caret-up {\n transform: rotate(-180deg);\n}\n\n.wpstg-advanced-options-site label {\n font-size: 16px;\n display: block;\n margin: .5em 0;\n}\n\n#wpstg-confirm-backup-restore-data {\n font-size: 18px;\n margin: 0;\n margin-top: 30px;\n}\n\n/* Sweetalert WP STAGING Theme */\n\nbody.toplevel_page_wpstg_backup .wpstg--swal2-container.wpstg--swal2-backdrop-show,\nbody.toplevel_page_wpstg_clone .wpstg--swal2-container.wpstg--swal2-backdrop-show {\n background: rgba(0, 0, 0, .6);\n z-index: 9995;\n}\n\n.wpstg-swal-popup.wpstg--swal2-popup {\n border-radius: 8px;\n z-index: 9999;\n padding: 24px;\n color: #3e3e3e;\n font-family: Verdana, Geneva, Tahoma, sans-serif;\n}\n\n.wpstg-swal-popup .wpstg--swal2-title {\n font-size: 22px;\n color: #3e3e3e;\n}\n\n.wpstg-swal-popup.wpstg--swal2-popup:not(.centered-modal) .wpstg--swal2-title {\n align-self: flex-start; /* For an actual Swal title */\n text-align: left; /* Manually adding this class to a non flex display */\n margin-bottom: 0;\n}\n\n.wpstg-swal-popup .wpstg--swal2-close {\n top: 8px;\n right: 8px;\n z-index: 5;\n}\n\n.wpstg-swal-popup .wpstg--swal2-close:focus {\n outline: none;\n}\n\n.wpstg-swal-popup.wpstg--swal2-popup:not(.centered-modal) .wpstg--swal2-actions {\n justify-content: flex-end;\n}\n\n.wpstg-swal-popup .wpstg--swal2-actions > button {\n border-radius: 4px;\n font-weight: 900;\n border: 0;\n font-size: 15px;\n padding: 10px 12px;\n text-transform: capitalize;\n line-height: normal;\n height: 40px;\n min-width: 100px;\n text-shadow: none;\n}\n\n.wpstg-swal-popup.wpstg--swal2-popup:not(.centered-modal) .wpstg--swal2-actions > button {\n margin-left: 8px;\n}\n\n.wpstg-swal-popup .wpstg--swal2-actions > button.wpstg--swal2-cancel {\n border: 1px solid rgba(29, 28, 29, 0.3);\n background: #fff;\n color: rgb(29, 28, 29);\n font-weight: 500;\n width: 100px;\n text-shadow: none;\n}\n\n.wpstg-swal-popup .wpstg--swal2-actions > button:hover {\n box-shadow: 0 1px 3px 0 rgba(0, 0, 0, .1);\n}\n\n.wpstg-swal-popup .wpstg--swal2-actions > button.wpstg--swal2-cancel:hover {\n background: rgba(28, 29, 28, .04);\n}\n\n#wpstg-backup-name-input {\n height: 44px;\n font-size: 18px;\n}\n\n.wpstg-restore-finished-container .wpstg--swal2-title {\n color: #565656 !important;\n}\n\n/*#wpstg-restore-success {\n color: #565656;\n}*/\n\n.wpstg-restore-finished-container .wpstg--swal2-content {\n margin-top: 20px;\n color: #a8a8a8;\n}\n\n/* WP Staging Implementation of Windows Style Linear Loader */\n\n.wpstg-linear-loader > span[class*=\"wpstg-linear-loader-item\"] {\n height: 6px;\n width: 6px;\n background: #333;\n display: inline-block;\n margin: 12px 2px;\n border-radius: 100%;\n animation: wpstg_linear_loader 3s infinite;\n animation-timing-function: cubic-bezier(0.030, 0.615, 0.995, 0.415);\n animation-fill-mode: both;\n}\n\n.wpstg-linear-loader > span.wpstg-linear-loader-item:nth-child(1) {\n animation-delay: 1s;\n}\n\n.wpstg-linear-loader > span.wpstg-linear-loader-item:nth-child(2) {\n animation-delay: 0.8s;\n}\n\n.wpstg-linear-loader > span.wpstg-linear-loader-item:nth-child(3) {\n animation-delay: 0.6s;\n}\n\n.wpstg-linear-loader > span.wpstg-linear-loader-item:nth-child(4) {\n animation-delay: 0.4s;\n}\n\n.wpstg-linear-loader > span.wpstg-linear-loader-item:nth-child(5) {\n animation-delay: 0.2s;\n}\n\n.wpstg-linear-loader > span.wpstg-linear-loader-item:nth-child(6) {\n animation-delay: 0s;\n}\n\n@keyframes wpstg_linear_loader {\n 0% {\n transform: translateX(-30px);\n opacity: 0;\n }\n 25% {\n opacity: 1;\n }\n 50% {\n transform: translateX(30px);\n opacity: 0;\n }\n 100% {\n opacity: 0;\n }\n}\n\n/* END - Windows Style Linear Loader */\n\n.wpstg--modal--backup--import--upload--content {\n padding: .75em;\n margin: 1em auto;\n}\n\n.wpstg--modal--backup--import--upload--content .wpstg-linear-loader {\n display: none;\n}\n\n#wpstg-multisite-disabled .wpstg-clone {\n width: 355px;\n}\n\n#wpstg-free-version-backups .wpstg-clone {\n text-align: center;\n}\n\n#wpstg-free-version-backups .wpstg-clone p {\n font-size: 16px;\n}\n\n.wpstg-staging-info li .backup-notes {\n word-break: break-word;\n}\n\n.wpstg--modal--import--upload--progress--title small {\n font-weight: normal;\n}\n\n#wpstg-report-issue-wrapper {\n position: relative;\n}\n\n#wpstg-report-issue-wrapper .arrow-up {\n width: 0;\n height: 0;\n border-left: 8px solid transparent;\n border-right: 8px solid transparent;\n border-bottom: 8px solid white;\n position: absolute;\n top: -8px;\n right: 40px;\n}\n\n.notice {\n margin: 10px 20px 0 2px;\n}\n\n.wpstg--notice {\n box-shadow: 0 1px 1px rgba(0, 0, 0, .04);\n margin: 20px 20px 20px 0px;\n padding: 1px 12px;\n}\n\n.wpstg--error a:hover {\n color: #eeeeee;\n}\n\n.wpstg--error, .wpstg--error a {\n background: #E01E5A;\n color: white;\n}\n\n/**\n * Buttons\n */\n\n.wpstg-button {\n display: inline-block;\n border-radius: 2px;\n cursor: pointer;\n padding: 2px 10px 2px 10px;\n text-transform: uppercase;\n font-weight: 500;\n outline: 0;\n transition: background-color .1s ease-in;\n text-decoration: none;\n}\n\n.wpstg-button.wpstg-save {\n background-color: #1687A7;\n color: white;\n}\n\n.wpstg-button.wpstg-save:hover {\n background-color: #276678;\n}\n\n\n.wpstg-button.wpstg-button-light {\n background-color: #f8f8f8;\n border: 1px solid #eee;\n color: #333;\n animation: background-color 0.3s;\n}\n\n.wpstg-button.wpstg-button-light:hover {\n background-color: #e0e0e0;\n border: 1px solid #e0e0e0;\n}\n\n.wpstg-buttons .spinner {\n float: none;\n margin: 0 0 0 5px;\n}\n\n.wpstg-button.danger {\n display: inline-block;\n text-decoration: none;\n text-align: center;\n text-transform: inherit;\n background-color: #E01E5A;\n color: white;\n border-radius: 2px;\n border-color: transparent;\n}\n\n.wpstg-button.danger:hover {\n background-color: #c0194d;\n}\n\n.wpstg-button--big {\n display: inline-block;\n padding: 10px;\n min-width: 170px;\n font-size: 16px;\n text-decoration: none;\n text-align: center;\n margin-top: 20px;\n color: white;\n border-radius: 3px;\n}\n\n.wpstg-button--primary {\n display: inline-block;\n text-decoration: none;\n font-size: 13px;\n line-height: 2.15384615;\n min-height: 30px;\n margin: 0;\n padding: 0 10px;\n cursor: pointer;\n border: 1px solid rgba(29, 28, 29, 0.3);\n -webkit-appearance: none;\n border-radius: 2px;\n white-space: nowrap;\n box-sizing: border-box;\n color: #171717;\n}\n\n.wpstg-button--primary:hover {\n background: rgba(28, 29, 28, .04);\n color: black;\n}\n\n.wpstg-button--secondary {\n display: inline-block;\n background-color: transparent;\n color: #95a5a6;\n border-radius: 2px;\n border: 1px solid rgba(29, 28, 29, 0.3);\n cursor: pointer;\n padding: 4px 10px 2px 10px;\n font-weight: 500;\n outline: 0;\n transition: background-color .1s ease-in;\n text-decoration: none;\n}\n\n.wpstg-button--red {\n background-color: #E01E5A;\n border-color: #E01E5A;\n color: white;\n}\n\n.wpstg-button--red:hover {\n background-color: #d02358;\n border-color: #e0255f;\n color: white;\n}\n\n.wpstg-button--cta-red {\n background-color: #fe008f;\n border-color: #E01E5A;\n color: white;\n}\n\n.wpstg-button--cta-red:hover {\n background-color: #f31391;\n border-color: #e0255f;\n color: white;\n}\n\n.wpstg-button--blue {\n background-color: #25A0F1;\n border-color: #25A0F1;\n color: white;\n}\n\n.wpstg-button--blue:hover {\n background-color: #259be6;\n border-color: #259be6;\n color: white;\n}\n\n#wpstg-button-backup-upgrade {\n font-size: 16px;\n}\n\n.wpstg-staging-status {\n color: #E01E5A;\n}\n\n#wpstg-push-changes,\n#wpstg-start-updating,\n#wpstg-save-clone-data {\n margin-left: 5px;\n}\n\ninput.wpstg-textbox {\n border: 1px solid #aaa;\n border-radius: .25rem;\n padding: 0.25rem 0.5rem;\n font-size: 14px;\n}\n\ninput.wpstg-textbox:focus {\n outline: 0;\n border-color: #259be6;\n -webkit-box-shadow: 0 0 0 0.1rem rgba(221, 221, 221, .35);\n box-shadow: 0 0 0 0.1rem rgba(221, 221, 221, .35);\n}\n\ninput.wpstg-textbox::placeholder {\n color: #888;\n}\n\n.wpstg--advance-settings--checkbox {\n display: flex;\n align-items: center;\n}\n\n.wpstg--advance-settings--checkbox > label {\n font-size: 14px;\n font-weight: bolder;\n width: 165px;\n display: inline-block;\n}\n\n.wpstg--advance-settings--checkbox > .wpstg--tooltip {\n margin-top: 5px;\n margin-left: 5px;\n position: relative;\n display: inline-block;\n border-bottom: 0px solid transparent;\n}\n\n.wpstg--advance-settings--checkbox > .wpstg--tooltip > .wpstg--tooltiptext {\n top: 18px;\n left: -150px;\n}\n\n\ndiv#wpstg-restore-wait {\n display: none;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n text-align: center;\n height: 100vh;\n width: 100vw;\n position: fixed;\n top: 0;\n left: 0;\n background: white;\n z-index: 99999;\n}\n\ndiv#wpstg-restore-wait .wpstg-title {\n font-weight: bold;\n}\n\ndiv#wpstg-restore-wait div {\n font-size: 16px;\n margin-top: 12px;\n}\n\n.resumable-browse {\n cursor: pointer;\n}\n\n.resumable-browse a {\n text-decoration: underline;\n}\n\n.wpstg-upload-text {\n font-weight: 600;\n}\n\n.wpstg--modal--backup--import--upload--container.dragover {\n transition: background-color 0.7s;\n background-color: #94dc96;\n color: #FFF;\n}\n\n.wpstg--modal--backup--import--upload--container.dragover * {\n pointer-events: none; /* Avoids flickering when dragging to drop a file */\n}\n\n.wpstg--modal--backup--import--upload--container.dragover .wpstg-upload-text {\n display: none;\n}\n\n.wpstg--modal--backup--import--upload--container.dragover .wpstg-dragover-text {\n display: block;\n}\n\n.wpstg--modal--backup--import--upload--container .wpstg-dragover-text {\n display: none;\n}\n\n#wpstg-invalid-license-message, #wpstg-invalid-license-message a {\n font-weight: 500;\n color: #E01E5A;\n margin-left: 6px;\n}\n\n#wpstg-sidebar--banner {\n max-width: 200px;\n}\n\n@media screen and (max-width: 1234px) {\n .wpstg-h2 {\n font-size: 24px;\n }\n\n #wpstg-welcome li {\n font-size: 14px;\n }\n}\n\n.wpstg-exclamation {\n color: #ffffff;\n border-radius: 100%;\n background-color: #E01E5A;\n width: 20px;\n height: 20px;\n text-align: center;\n font-weight: bold;\n display: inline-block;\n margin: 6px;\n}\n\n.wpstg--tab--contents {\n padding-top: 1px;\n}\n\n.wpstg-swal-show.wpstg--swal2-show {\n -webkit-animation: wpstg-swal-show 0.2s !important;\n animation: wpstg-swal-show 0.2s !important;\n}\n\n@-webkit-keyframes wpstg-swal-show {\n 0% {\n transform: scale(0.3);\n }\n 100% {\n transform: scale(1);\n }\n}\n\n@keyframes wpstg-swal-show {\n 0% {\n transform: scale(0.3);\n }\n 100% {\n transform: scale(1);\n }\n}\n\n.wpstg-tab-item--vert-center {\n display: flex;\n align-items: center;\n}\n\n.wpstg-db-comparison-modal {\n padding-left: 10px;\n padding-right: 10px;\n}\n\n.wpstg-db-comparison-table {\n font-size: 13px;\n width: 100%;\n}\n\n.wpstg-db-comparison-table tbody td {\n padding-top: 6px;\n}\n\n.wpstg-db-comparison-table tr > td:first-child,\n.wpstg-db-comparison-table tr > th:first-child {\n text-align: left;\n}\n\n.wpstg-css-tick {\n display: inline-block;\n transform: rotate(45deg);\n height: 12px;\n width: 6px;\n border-bottom: 3px solid #78b13f;\n border-right: 3px solid #78b13f;\n}\n\n.wpstg-css-cross {\n position: relative;\n top: -8px;\n left: -2px;\n width: 16px;\n height: 16px;\n}\n\n.wpstg-css-cross:before, .wpstg-css-cross:after {\n position: absolute;\n content: ' ';\n height: 17px;\n width: 3px;\n background-color: #E01E5A;\n}\n\n.wpstg-css-cross:before {\n transform: rotate(45deg);\n}\n\n.wpstg-css-cross:after {\n transform: rotate(-45deg);\n}\n\n.wpstg-selection-preview {\n font-size: 12px;\n margin-left: 20px;\n color: #3216;\n}\n\n.wpstg-selection-preview.danger {\n color: #E01E5A;\n}\n\n.wpstg--backup-automated {\n margin-bottom: -5px;\n}\n\n.wpstg--dismiss-schedule {\n cursor: pointer;\n}\n\n.wpstg-import-backup-contains.wpstg-listing-single-backup {\n vertical-align: middle;\n}\n\n.wpstg-import-backup-contains.wpstg-listing-single-backup li {\n padding:2px;\n}\n\n.wpstg--modal--backup--manage--schedules--content table {\n margin: 0 auto;\n width: 100%;\n}\n\n.wpstg--modal--backup--manage--schedules--title {\n text-align: left;\n margin-bottom: 10px;\n margin-top: 0px;\n}\n\n.wpstg--modal--backup--import--upload--title {\n text-align: center;\n}\n\n#wpstg--modal--backup--manage--schedules--content {\n text-align: left;\n}\n\n#wpstg--modal--backup--manage--schedules--content thead {\n font-weight: bold;\n}\n\n#wpstg--modal--backup--manage--schedules--content .wpstg--tooltip.wpstg--dismiss-schedule {\n border-bottom: none;\n}\n\n.wpstg--tooltip.wpstg--dismiss-schedule img.wpstg--dashicons {\n filter: invert(18%) sepia(57%) saturate(6238%) hue-rotate(332deg) brightness(93%) contrast(88%);\n}\n\n#wpstg--modal--backup--manage--schedules--content td {\n padding-right: 25px;\n padding-top: 10px;\n}\n\n#wpstg--modal--backup--manage--schedules--content ul {\n margin-top: 0;\n margin-bottom: 0;\n}\n\n#wpstg--modal--backup--manage--schedules--content ul li:first-child .wpstg--tooltip {\n margin-left:0;\n}\n\n.wpstg-button:disabled {\n background-color: #dddddd;\n text-shadow: none;\n color: #b3b3b3;\n border: 1px solid #cfcfcf;\n cursor: not-allowed;\n}\n\n#wpstg-backup-runs-info {\n margin: 0px;\n margin-top: 20px;\n padding:0px;\n font-size:12px;\n}\n\n#wpstg-backup-runs-info li {\n margin: 0px;\n}\n\ndiv#wpstg-backup-locked {\n width: 100%;\n max-width: calc(800px - 30px);\n padding: 15px;\n background: white;\n margin-bottom: 10px;\n display: flex;\n align-items: center;\n}\n\n#wpstg-backup-locked .icon {\n display: inline-block;\n height: 20px;\n}\n\n#wpstg-backup-locked .icon img {\n animation: wpstg-loading-icon-anim 2s infinite;;\n}\n\n#wpstg-backup-locked .text {\n display: inline-block;\n margin-left: 15px;\n}\n\n#backup-schedule-current-time {\n font-size: 12px;\n}\n\n.wpstg-backup-scheduling-options label {\n margin-top:17px;\n}\n\n.wpstg-backup-scheduling-options .wpstg-storage-option {\n display: block;\n margin: .5em 0;\n font-size: 15px;\n}\n\n.wpstg-storage-option>span:not(.wpstg-storage-settings) {\n width: 150px;\n display: inline-block;\n}\n\n.wpstg-storages-postbox {\n padding: 13px 16px;\n margin-top: 8px;\n margin-bottom: 8px;\n background-color: white;\n}\n\n.wpstg-storages-postbox a {\n padding: 8px;\n margin-right: 8px;\n text-decoration: none;\n font-weight: bold;\n color: #3c434a;\n}\n\n.wpstg-storages-postbox a:hover {\n color: #b70b72;\n}\n\n.wpstg-storage-postbox {\n padding: 4px 16px;\n background-color: white;\n}\n\n.wpstg-storages-postbox a.wpstg-storage-provider-active {\n background: #b70b72;\n color: white;\n font-weight: 700;\n cursor: default;\n border-radius:3px;\n}\n\n.wpstg-storages-postbox a.wpstg-storage-provider-active:hover {\n background: #a10a64;\n}\n\n.wpstg-storages-postbox a.wpstg-storage-provider-disabled {\n color: #999;\n cursor: not-allowed;\n}\n\n.wpstg-provider-revoke-form {\n display: inline;\n margin-top: 12px;\n margin-bottom: 12px;\n}\n\n.wpstg-provider-settings-form {\n margin-top: 10px;\n}\n\n.wpstg-provider-settings-form strong {\n display: block;\n margin: 8px 0;\n}\n\n.wpstg-provider-settings-form p {\n margin: 0;\n margin-bottom: 8px;\n}\n\n.wpstg-provider-settings-form fieldset {\n margin: 0;\n padding: 0;\n margin-bottom: 16px;\n}\n\n.wpstg-provider-settings-form fieldset p {\n margin: 0;\n padding: 5px;\n font-size: 12px;\n}\n\n.wpstg-provider-settings-form fieldset label {\n display: block;\n margin-bottom: 2px;\n}\n\n.wpstg-provider-settings-form fieldset input {\n font-size: 12px;\n}\n\n.wpstg-provider-settings-form .wpstg-link-btn.wpstg-blue-primary {\n text-shadow: none;\n}\n\n.wpstg-btn-google {\n font-family: Roboto;\n display: inline-flex;\n align-items: center;\n border-width: 0;\n outline: none;\n border-radius: 3px;\n box-shadow: 0 1px 3px rgba(0, 0, 0, .6);\n color: #555;\n transition: background-color .3s;\n padding: 8px;\n padding-right: 16px;\n height: 40px;\n line-height: 40px;\n font-size: 14px;\n box-sizing: border-box;\n text-decoration: none;\n font-weight: bold;\n margin-right: 10px;\n}\n\n.wpstg-btn-google img {\n width: 18px;\n height: 18px;\n margin-right: 12px;\n margin-left:5px;\n}\n\n#wpstg-custom-google-credentials {\n margin-top: 20px;\n}\n\n.wpstg-fieldset .wpstg-with-icon {\n display: inline-flex;\n align-items: center; \n}\n\n.wpstg-fieldset .wpstg-with-icon .wpstg-fieldset-icon {\n margin-left: 8px;\n}\n\n.wpstg-fieldset .wpstg-with-icon .wpstg-fieldset-icon img {\n width: 16px;\n height: 16px;\n}\n\n#wpstg-btn-provider-revoke {\n border-radius: 2px;\n}\n\n.wpstg-metabox-holder{\n border-radius: 8px;\n background: #fff;\n padding: 20px;\n margin-left: 16px;\n min-height: 600px;\n margin-right: 32px;\n margin-top: 60px;\n -webkit-box-shadow: 0 0 1px rgb(0 0 0 / 13%), 0 1px 3px rgb(0 0 0 / 10%);\n box-shadow: 0 0 1px rgb(0 0 0 / 13%), 0 1px 3px rgb(0 0 0 / 10%);\n}\n\n@media only screen and (max-width: 680px) {\n .wpstg-metabox-holder {\n padding: 0px;\n padding-top: 5px;\n margin-left: 0;\n margin-right: 5px;\n }\n\n #wpstg-tab-container .wpstg-settings-panel {\n padding: 0;\n overflow: auto;\n }\n\n .wpstg-form-table td:first-child {\n width: 50%;\n }\n}\n\n.wpstg-nav-tab {\n float: left;\n border: 1px solid #ffffff;\n border-bottom: none;\n margin-left: 0.5em;\n padding: 5px 10px;\n font-size: 14px;\n line-height: 1.71428571;\n font-weight: 600;\n background: #dcdcde;\n color: #3c434a;\n text-decoration: none;\n white-space: nowrap;\n}\n\n.wpstg-nav-tab-active, .wpstg-nav-tab-active:focus, .wpstg-nav-tab-active:focus:active, .wpstg-nav-tab-active:hover {\n border-bottom: 1px solid #f0f0f1;\n background: #f3f5f7;\n color: #b70b72;\n -webkit-box-shadow: -4px -13px 14px -12px rgb(0 0 0 / 16%);\n box-shadow: -4px -13px 14px -12px rgb(0 0 0 / 16%);\n}\n\n.wpstg-nav-tab-active {\n margin-bottom: -1px;\n}\n\n.wpstg-nav-tab-wrapper {\n /*\n border-bottom: 1px solid #c3c4c7;\n */\n margin: 0;\n padding-top: 9px;\n padding-bottom: 0;\n line-height: inherit;\n}\n\n.wpstg-nav-tab-wrapper li{\n margin-bottom: 0px;\n}\n\n#wpstg--js--translations {\n text-decoration: underline;\n}\n"]}
bootstrap.php CHANGED
@@ -42,7 +42,7 @@ if (!defined('WPSTG_PLUGIN_SLUG')) {
42
  define('WPSTG_PLUGIN_SLUG', basename(dirname($pluginFilePath)));
43
  }
44
 
45
- // An identifier that is the same both for WPSTAGING Free and WPSTAGING Pro
46
  if (!defined('WPSTG_PLUGIN_DOMAIN')) {
47
  define('WPSTG_PLUGIN_DOMAIN', 'wp-staging');
48
  }
42
  define('WPSTG_PLUGIN_SLUG', basename(dirname($pluginFilePath)));
43
  }
44
 
45
+ // An identifier that is the same both for WP STAGING Free and WP STAGING | PRO
46
  if (!defined('WPSTG_PLUGIN_DOMAIN')) {
47
  define('WPSTG_PLUGIN_DOMAIN', 'wp-staging');
48
  }
constantsFree.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // WP STAGING version number
4
  if (!defined('WPSTG_VERSION')) {
5
- define('WPSTG_VERSION', '2.9.10');
6
  }
7
 
8
  // Compatible up to WordPress Version
2
 
3
  // WP STAGING version number
4
  if (!defined('WPSTG_VERSION')) {
5
+ define('WPSTG_VERSION', '2.9.11');
6
  }
7
 
8
  // Compatible up to WordPress Version
languages/wp-staging-de_DE.po CHANGED
@@ -123,18 +123,18 @@ msgstr "Lasse WP Staging die Ordnergrösse bei jedem Scan Prozess überprüfen<b
123
 
124
  #: Backend/views/settings/main-settings.php:275
125
  msgid ""
126
- "Check this box if you like WP Staging to completely remove all of its data when the plugin is deleted.\n"
127
  " This will not remove staging sites files or database tables."
128
  msgstr "Lösche alle Einstellungen beim Löschen des Plugins"
129
 
130
  #: Backend/views/settings/main-settings.php:261
131
- msgid "The Optimizer is a mu plugin which disables all other plugins during WP Staging processing. Usually this makes the cloning process more reliable. If you experience issues, disable the Optimizer."
132
  msgstr "Der Optimizer ist ein mu Plugin welches alle anderen Plugins während des Klonvorgangs deaktiviert. Gewöhnlich macht das den Klonvorgang sehr viel zuverlässiger. Deaktiviere diese Option wenn etwas nicht funktioniert."
133
 
134
  #: Backend/views/settings/main-settings.php:246
135
  msgid ""
136
- "This will enable an extended debug mode which creates additional entries\n"
137
- " in <strong>wp-content/uploads/wp-staging/logs/logfile.log</strong>.\n"
138
  " Please enable this when we ask you to do so."
139
  msgstr "Dieser Modus schreibt zusätzliche Einträge in die Logdatei <strong>wp-content/uploads/wp-staging/logs/logfile.log</strong> Bitte aktiviere diesen Modus wenn Du ein Support Ticket eröffnest und wir Dich darum bitten."
140
 
@@ -163,12 +163,12 @@ msgid ""
163
  msgstr "Maximale Dateigrösse welche noch kopiert wird. Alle Dateien größer als dieser Wert werden übersprungen. Hinweis: Erhöhe diese Option nur wenn Du einen guten Grund dazu hast. Dateien größer als ein einige Megabyte sind in 99% aller Fälle Log und Backup Dateien welche für eine Staging Seite nicht notwendig sind."
164
 
165
  #: Backend/views/settings/main-settings.php:142
166
- msgid "<strong>Important:</strong> If CPU Load Priority is <strong>Low</strong> set a file copy limit value of 10 or higher! Otherwise file copying process takes a lot of time."
167
  msgstr "<strong>Achtung</strong> Wenn die CPU Load Priority <strong>Low</strong> ist, setze das Datei Kopierlimit auf 10 oder höher! Andernfalls wird der Kopiervorgang sehr langsam sein."
168
 
169
  #: Backend/views/settings/main-settings.php:136
170
  msgid ""
171
- "Number of files to copy that will be copied within one ajax request.\n"
172
  " The higher the value the faster the file copy process.\n"
173
  " To find out the highest possible values try a high value like 500 or more. If you get timeout issues, lower it\n"
174
  " until you get no more errors during copying process."
@@ -176,16 +176,16 @@ msgstr "Anzahl der Dateien, die mit einer Ajax Abfrage kopiert werden. Je höher
176
 
177
  #: Backend/views/settings/main-settings.php:116
178
  msgid ""
179
- "Number of DB rows, that are processed within one ajax query.\n"
180
  " The higher the value the faster the database search & replace process.\n"
181
  " This is a high memory consumptive process. If you get timeouts lower this value!"
182
  msgstr "Anzahl der Datenbankeinträge, welche gleichzeitig verarbeitet werden. Je größer der Wert, desto schneller ist der Suchen & Ersetzen Prozess. Zu große Werte können zu Timeouts durch hohen Speicherverbrauch führen!"
183
 
184
  #: Backend/views/settings/main-settings.php:96
185
  msgid ""
186
- "Number of DB rows, that are copied within one ajax query.\n"
187
  " The higher the value the faster the database copy process.\n"
188
- " To find out the highest possible values try a high value like 1.000 or more. If you get timeout issues, lower it\n"
189
  " until you get no more errors during copying process."
190
  msgstr "Anzahl der Datenbank Einträge, die zugleich kopiert werden. Je höher der Wert, desto schneller wird die Datenbank kopiert. Zu hohe Werte können allerdings zu Timeouts führen."
191
 
123
 
124
  #: Backend/views/settings/main-settings.php:275
125
  msgid ""
126
+ "Check this box if you like to remove all data when the plugin is deleted.\n"
127
  " This will not remove staging sites files or database tables."
128
  msgstr "Lösche alle Einstellungen beim Löschen des Plugins"
129
 
130
  #: Backend/views/settings/main-settings.php:261
131
+ msgid "The Optimizer is a mu plugin that disables all other plugins during WP STAGING processing. This lowers memory consumption and speed up the cloning process more reliable. If you experience issues, disable the Optimizer."
132
  msgstr "Der Optimizer ist ein mu Plugin welches alle anderen Plugins während des Klonvorgangs deaktiviert. Gewöhnlich macht das den Klonvorgang sehr viel zuverlässiger. Deaktiviere diese Option wenn etwas nicht funktioniert."
133
 
134
  #: Backend/views/settings/main-settings.php:246
135
  msgid ""
136
+ "Enable an extended debug mode that creates additional log entries\n"
137
+ " in wp-content/uploads/wp-staging/logs/[filename].log.\n"
138
  " Please enable this when we ask you to do so."
139
  msgstr "Dieser Modus schreibt zusätzliche Einträge in die Logdatei <strong>wp-content/uploads/wp-staging/logs/logfile.log</strong> Bitte aktiviere diesen Modus wenn Du ein Support Ticket eröffnest und wir Dich darum bitten."
140
 
163
  msgstr "Maximale Dateigrösse welche noch kopiert wird. Alle Dateien größer als dieser Wert werden übersprungen. Hinweis: Erhöhe diese Option nur wenn Du einen guten Grund dazu hast. Dateien größer als ein einige Megabyte sind in 99% aller Fälle Log und Backup Dateien welche für eine Staging Seite nicht notwendig sind."
164
 
165
  #: Backend/views/settings/main-settings.php:142
166
+ msgid "<strong>Important:</strong> If CPU Load Priority is <strong>Low</strong>, set a file copy limit value of 10 or higher! Otherwise file copying process takes a lot of time."
167
  msgstr "<strong>Achtung</strong> Wenn die CPU Load Priority <strong>Low</strong> ist, setze das Datei Kopierlimit auf 10 oder höher! Andernfalls wird der Kopiervorgang sehr langsam sein."
168
 
169
  #: Backend/views/settings/main-settings.php:136
170
  msgid ""
171
+ "Number of files to copy that will be copied within one request.\n"
172
  " The higher the value the faster the file copy process.\n"
173
  " To find out the highest possible values try a high value like 500 or more. If you get timeout issues, lower it\n"
174
  " until you get no more errors during copying process."
176
 
177
  #: Backend/views/settings/main-settings.php:116
178
  msgid ""
179
+ "Number of DB rows, that are processed within one request.\n"
180
  " The higher the value the faster the database search & replace process.\n"
181
  " This is a high memory consumptive process. If you get timeouts lower this value!"
182
  msgstr "Anzahl der Datenbankeinträge, welche gleichzeitig verarbeitet werden. Je größer der Wert, desto schneller ist der Suchen & Ersetzen Prozess. Zu große Werte können zu Timeouts durch hohen Speicherverbrauch führen!"
183
 
184
  #: Backend/views/settings/main-settings.php:96
185
  msgid ""
186
+ "Number of DB rows, that are queried within one request.\n"
187
  " The higher the value the faster the database copy process.\n"
188
+ " To find out the highest possible values try a high value like 10.000 or more. If you get timeout issues, lower it\n"
189
  " until you get no more errors during copying process."
190
  msgstr "Anzahl der Datenbank Einträge, die zugleich kopiert werden. Je höher der Wert, desto schneller wird die Datenbank kopiert. Zu hohe Werte können allerdings zu Timeouts führen."
191
 
languages/wp-staging-fr_FR.po CHANGED
@@ -176,7 +176,7 @@ msgid "This staging site is located in another database and needs to be edited w
176
  msgstr "Ce site intermédiaire est situé dans un autre espace de travail et doit être édité avec <a href='https://wp-staging.com' target='_blank'>WP Staging Pro</a>"
177
 
178
  #: apps/Backend/views/settings/main-settings.php:214
179
- msgid "If your server uses rate limits it blocks requests and WP Staging can be interrupted. You can resolve that by adding one or more seconds of delay between the processing requests. "
180
  msgstr "Si votre serveur utilise des limites de débit, il bloque les demandes et WP Staging peut être interrompu. Vous pouvez résoudre ce problème en ajoutant une ou plusieurs secondes de délai entre les demandes de traitement. "
181
 
182
  #: apps/Backend/views/clone/ajax/scan.php:117
@@ -344,20 +344,20 @@ msgstr "Cochez cette case si vous voulez que WP Staging vérifie les tailles de
344
 
345
  #: apps/Backend/views/settings/main-settings.php:272
346
  msgid ""
347
- "Check this box if you like WP Staging to completely remove all of its data when the plugin is deleted.\n"
348
  " This will not remove staging sites files or database tables."
349
  msgstr ""
350
  "Cochez cette case si vous voulez que WP Staging supprime complètement toutes ses données lorsque le plugin est supprimé.\n"
351
  " Cela ne supprimera pas les fichiers sauvegarde ni des tables dans la base de données."
352
 
353
  #: apps/Backend/views/settings/main-settings.php:258
354
- msgid "The Optimizer is a mu plugin which disables all other plugins during WP Staging processing. Usually this makes the cloning process more reliable. If you experience issues, disable the Optimizer."
355
  msgstr "L’optimiseur est une extension mu qui désactive toutes les autres extensions lors du traitement de WP Staging. Cela rend généralement le processus de clonage plus fiable. Si vous rencontrez des problèmes, désactivez l’optimiseur."
356
 
357
  #: apps/Backend/views/settings/main-settings.php:243
358
  msgid ""
359
- "This will enable an extended debug mode which creates additional entries\n"
360
- " in <strong>wp-content/uploads/wp-staging/logs/logfile.log</strong>.\n"
361
  " Please enable this when we ask you to do so."
362
  msgstr ""
363
  "Cela permettra d'activer le mode de débogage étendu qui va créer des enregistrements supplémentaires\n"
@@ -401,12 +401,12 @@ msgstr ""
401
  " Remarque : Augmentez cette option seulement si vous avez une bonne raison. Les fichiers de plus grands en taille sont en général des fichiers log et / ou sauvegardes qui ne sont pas nécessaires sur un site mise en scène."
402
 
403
  #: apps/Backend/views/settings/main-settings.php:142
404
- msgid "<strong>Important:</strong> If CPU Load Priority is <strong>Low</strong> set a file copy limit value of 50 or higher! Otherwise file copying process takes a lot of time."
405
  msgstr "<strong>Important :</strong> Si la priorité de chargement CPU est <strong>basse</strong> définir une valeur limite de copie de fichier à 50 ou plus ! Sinon, le processus de copie de fichier prendra beaucoup de temps."
406
 
407
  #: apps/Backend/views/settings/main-settings.php:136
408
  msgid ""
409
- "Number of files to copy that will be copied within one ajax request.\n"
410
  " The higher the value the faster the file copy process.\n"
411
  " To find out the highest possible values try a high value like 500 or more. If you get timeout issues, lower it\n"
412
  " until you get no more errors during copying process."
@@ -418,7 +418,7 @@ msgstr ""
418
 
419
  #: apps/Backend/views/settings/main-settings.php:116
420
  msgid ""
421
- "Number of DB rows, that are processed within one ajax query.\n"
422
  " The higher the value the faster the database search & replace process.\n"
423
  " This is a high memory consumptive process. If you get timeouts lower this value!"
424
  msgstr ""
@@ -428,9 +428,9 @@ msgstr ""
428
 
429
  #: apps/Backend/views/settings/main-settings.php:96
430
  msgid ""
431
- "Number of DB rows, that are copied within one ajax query.\n"
432
  " The higher the value the faster the database copy process.\n"
433
- " To find out the highest possible values try a high value like 1.000 or more. If you get timeout issues, lower it\n"
434
  " until you get no more errors during copying process."
435
  msgstr ""
436
  "Nombre de lignes dans la base de données qui sont copiées dans une requête Ajax.\n"
176
  msgstr "Ce site intermédiaire est situé dans un autre espace de travail et doit être édité avec <a href='https://wp-staging.com' target='_blank'>WP Staging Pro</a>"
177
 
178
  #: apps/Backend/views/settings/main-settings.php:214
179
+ msgid "If your server uses rate limits it blocks requests and WP STAGING can be interrupted. You can resolve that by adding one or more seconds of delay between the processing requests. "
180
  msgstr "Si votre serveur utilise des limites de débit, il bloque les demandes et WP Staging peut être interrompu. Vous pouvez résoudre ce problème en ajoutant une ou plusieurs secondes de délai entre les demandes de traitement. "
181
 
182
  #: apps/Backend/views/clone/ajax/scan.php:117
344
 
345
  #: apps/Backend/views/settings/main-settings.php:272
346
  msgid ""
347
+ "Check this box if you like to remove all data when the plugin is deleted.\n"
348
  " This will not remove staging sites files or database tables."
349
  msgstr ""
350
  "Cochez cette case si vous voulez que WP Staging supprime complètement toutes ses données lorsque le plugin est supprimé.\n"
351
  " Cela ne supprimera pas les fichiers sauvegarde ni des tables dans la base de données."
352
 
353
  #: apps/Backend/views/settings/main-settings.php:258
354
+ msgid "The Optimizer is a mu plugin that disables all other plugins during WP STAGING processing. This lowers memory consumption and speed up the cloning process more reliable. If you experience issues, disable the Optimizer."
355
  msgstr "L’optimiseur est une extension mu qui désactive toutes les autres extensions lors du traitement de WP Staging. Cela rend généralement le processus de clonage plus fiable. Si vous rencontrez des problèmes, désactivez l’optimiseur."
356
 
357
  #: apps/Backend/views/settings/main-settings.php:243
358
  msgid ""
359
+ "Enable an extended debug mode that creates additional log entries\n"
360
+ " in wp-content/uploads/wp-staging/logs/logfile.log.\n"
361
  " Please enable this when we ask you to do so."
362
  msgstr ""
363
  "Cela permettra d'activer le mode de débogage étendu qui va créer des enregistrements supplémentaires\n"
401
  " Remarque : Augmentez cette option seulement si vous avez une bonne raison. Les fichiers de plus grands en taille sont en général des fichiers log et / ou sauvegardes qui ne sont pas nécessaires sur un site mise en scène."
402
 
403
  #: apps/Backend/views/settings/main-settings.php:142
404
+ msgid "<strong>Important:</strong> If CPU Load Priority is <strong>Low</strong>, set a file copy limit value of 50 or higher! Otherwise file copying process takes a lot of time."
405
  msgstr "<strong>Important :</strong> Si la priorité de chargement CPU est <strong>basse</strong> définir une valeur limite de copie de fichier à 50 ou plus ! Sinon, le processus de copie de fichier prendra beaucoup de temps."
406
 
407
  #: apps/Backend/views/settings/main-settings.php:136
408
  msgid ""
409
+ "Number of files to copy that will be copied within one request.\n"
410
  " The higher the value the faster the file copy process.\n"
411
  " To find out the highest possible values try a high value like 500 or more. If you get timeout issues, lower it\n"
412
  " until you get no more errors during copying process."
418
 
419
  #: apps/Backend/views/settings/main-settings.php:116
420
  msgid ""
421
+ "Number of DB rows, that are processed within one request.\n"
422
  " The higher the value the faster the database search & replace process.\n"
423
  " This is a high memory consumptive process. If you get timeouts lower this value!"
424
  msgstr ""
428
 
429
  #: apps/Backend/views/settings/main-settings.php:96
430
  msgid ""
431
+ "Number of DB rows, that are queried within one request.\n"
432
  " The higher the value the faster the database copy process.\n"
433
+ " To find out the highest possible values try a high value like 10.000 or more. If you get timeout issues, lower it\n"
434
  " until you get no more errors during copying process."
435
  msgstr ""
436
  "Nombre de lignes dans la base de données qui sont copiées dans une requête Ajax.\n"
opcacheBootstrap.php CHANGED
@@ -45,7 +45,7 @@ if (!$canInvalidate) {
45
  *
46
  * We use the "Version" from the headers of the main file of the plugin to compare.
47
  */
48
- $runtimeVersionDifferentFromBuildVersion = get_file_data($pluginFilePath, ['Version' => 'Version'])['Version'] !== '2.9.10';
49
  $lastCheckHappenedAfterInterval = current_time('timestamp') > (int)get_site_transient('wpstg.bootstrap.opcache.lastCleared') + 5 * MINUTE_IN_SECONDS;
50
 
51
  $shouldClearOpCache = apply_filters('wpstg.bootstrap.opcache.shouldClear', $runtimeVersionDifferentFromBuildVersion && $lastCheckHappenedAfterInterval);
45
  *
46
  * We use the "Version" from the headers of the main file of the plugin to compare.
47
  */
48
+ $runtimeVersionDifferentFromBuildVersion = get_file_data($pluginFilePath, ['Version' => 'Version'])['Version'] !== '2.9.11';
49
  $lastCheckHappenedAfterInterval = current_time('timestamp') > (int)get_site_transient('wpstg.bootstrap.opcache.lastCleared') + 5 * MINUTE_IN_SECONDS;
50
 
51
  $shouldClearOpCache = apply_filters('wpstg.bootstrap.opcache.shouldClear', $runtimeVersionDifferentFromBuildVersion && $lastCheckHappenedAfterInterval);
readme.txt CHANGED
@@ -1,42 +1,40 @@
1
- === WP STAGING - Backup Duplicator & Migration ===
2
 
3
  Author URL: https://wp-staging.com/backup-wordpress
4
  Plugin URL: https://wordpress.org/plugins/wp-staging
5
- Contributors: ReneHermi, WP-Staging
6
  Donate link: https://wp-staging.com/backup-wordpress
7
  License: GPLv2 or later
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
- Tags: backup, backup plugin, database backup, wordpress backup plugin, migrate
10
  Requires at least: 3.6+
11
- Tested up to: 5.9
12
- Stable tag: 2.9.10
13
  Requires PHP: 5.6
14
 
15
- Backup & Duplicator Plugin - Clone, move, duplicate & migrate websites to staging, backup, and development sites for authorized users only.
16
 
17
  == Description ==
18
 
19
  <h3>Staging, Backup, Cloning & Migration of WordPress Sites</h3>
20
- WP STAGING is a professional all in one duplicator, staging, and backup plugin. Create an exact copy and backup of your website in seconds.* Perfect for staging, backup, or development purposes.
21
  (Cloning and backup time depends on the size of your website)
22
  <br /><br />
23
- Visit [https://wp-staging.com/backup-wordpress](https://wp-staging.com/backup-wordpress "https://wp-staging.com/backup-wordpress") for more details.
24
- <br /><br />
25
  This backup and staging tool creates a clone of your website into a subfolder or subdomain (Pro) of your main WordPress installation. The cloned site includes an entire copy of your database.
26
  <br /> <br />
27
- For pushing & migrating plugins and themes to the live site, and creating cloud backups, check out the pro edition [https://wp-staging.com/backup-wordpress](https://wp-staging.com/backup-wordpress "WP STAGING | PRO")
28
  <br /><br />
29
- WP STAGING runs all the time-consumptive database, file cloning and backup operations in the background. This tool does automatically a search & replacement of all links and paths.
30
  <br /><br />
31
  This staging and backup plugin can clone your website even if it runs on a weak shared hosting server.
32
  <br /><br />
33
- WP STAGING can help you prevent your website from being broken or unavailable because of installing untested plugin updates!
34
 
35
  [youtube https://www.youtube.com/watch?v=vkv52s36Yvg]
36
 
37
- = WP STAGING | FREE BACKUP AND CLONING WORDPRESS FEATURES =
38
 
39
- * Clones the entire production site into a subfolder like example.com/staging-site.
40
  * Easy to use! Create a clone / backup site by clicking one button
41
  * No Software as a Service - No account needed! All your data stays on your server. Your data belongs to you only.
42
  * No server timeouts on huge websites or small and weak servers
@@ -50,9 +48,9 @@ WP STAGING can help you prevent your website from being broken or unavailable be
50
  * Every release passes thousands of unit and acceptance tests to make the plugin extremely robust, reliable and fast on an enterprise code quality level
51
  * Fast and professional support team
52
 
53
- == WP STAGING | PRO BACKUP AND CLONING WORDPRESS FEATURES ==
54
 
55
- Note: These backup & cloning features are Premium. You need WP STAGING | PRO to use those features. [More about WP STAGING | PRO](https://wp-staging.com/backup-wordpress)!
56
 
57
  * Migration - Migrate and transfer WordPress to another host or domain
58
  * High Performance - Backup and clone an entire website, even with millions of database rows faster and less resource-intensive than with other plugins
@@ -70,7 +68,7 @@ Note: These backup & cloning features are Premium. You need WP STAGING | PRO to
70
  * Mail notifications - Be notified if a backup can not be created
71
  * Backup of WordPress multisites
72
  * Backup to Google Drive
73
- * Backup to Amazon S3 (Released soon)
74
  * Backup to (s)FTP (Released soon)
75
  * Backup to Dropbox (Released soon)
76
  * Specify custom backup folder destination for backup cloud storage providers
@@ -81,22 +79,22 @@ Note: These backup & cloning features are Premium. You need WP STAGING | PRO to
81
  == Backup, Restore & Migration ==
82
 
83
  <strong>How to Backup and Restore WordPress</strong>
84
- https://wp-staging.com/docs/how-to-backup-and-restore-your-wordpress-website/
85
 
86
  <strong>Backup & Transfer WordPress Site to Another Host</strong>
87
- https://wp-staging.com/docs/how-to-migrate-your-wordpress-site-to-a-new-host/
88
 
89
  <strong>All Backup Guides</strong>
90
- https://wp-staging.com/docs/category/backup-restore/
91
 
92
- <strong> Working with Staging Sites </strong>
93
- https://wp-staging.com/docs/category/working-with-wp-staging/
94
 
95
  <strong>FAQ for Backup & Cloning</strong>
96
- https://wp-staging.com/docs/category/frequently-asked-questions/
97
 
98
  <strong>Troubleshooting Backup & Cloning</strong>
99
- https://wp-staging.com/docs/category/troubleshooting/
100
 
101
  <strong>Change your workflow of updating themes and plugins:</strong>
102
 
@@ -123,7 +121,7 @@ That is where WP STAGING comes into play... Site cloning, backup, and staging si
123
  = Why should I use a Backup & Staging Website? =
124
 
125
  Plugin updates and theme customizations should be tested on a staging / backup platform before applying them on the production website.
126
- Usually, it's consense and recommended having the staging / backup platform on an identical server like the production server. You can only catch all possible errors during testing with the same hardware and software environment for your test & backup website.
127
 
128
  So, before you update a plugin or install a new one, it is highly recommended to check out the modifications on a clone / backup of your production website.
129
  That ensures that any modifications work on your production website without throwing unexpected errors or preventing your site from loading, better known as the "WordPress blank page error."
@@ -147,7 +145,7 @@ You can even use it as some kind of backup in case something happens to your pro
147
 
148
  So instead of offering our backup feature free of charge, we think it's time to provide a full-fledged premium backup solution with enterprise code quality affordable for everyone.
149
 
150
- [Video: How we run automated tests for WP STAGING](https://www.youtube.com/watch?v=Tf9C9Pgu7Bs)
151
 
152
  = What is the difference between WP STAGING backup and other backup plugins? =
153
 
@@ -195,7 +193,32 @@ Permalinks are disabled on the staging / backup site after first time cloning /
195
  = How to use a Backup file to Migrate WordPress to another Host or Domain
196
  The pro version of WP STAGING can backup your whole WordPress website. (In the future, we are implementing a basic free version of our sophisticated backup feature into this free version as well)
197
  With this backup function, you can backup and copy your entire WordPress website to another domain, new host, or new server very easily, and often faster and more reliable than with any other existing backup plugins.
198
- Have a look at [https://wp-staging.com/docs/how-to-migrate-your-wordpress-site-to-a-new-host/](this article), which introduces the backup feature.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
199
 
200
  = Can I give you some feedback for WP STAGING Backup & Cloning? =
201
  This plugin has been created in thousands of hours and works even with the smallest shared web hosting package.
@@ -203,14 +226,16 @@ We also use an enterprise-level approved testing coding environment to ensure th
203
  If you are a developer, you will probably like to hear that we use Codeception and PHPUnit for our backup software.
204
 
205
  As there are infinite variations of possible server constellations, it still can happen that something does not work for you 100%. In that case,
206
- please open a [support request](https://wp-staging.com/support/ "support request") and describe your issue.
 
 
207
 
208
- WP STAGING BACKUP & CLONING TECHNICAL REQUIREMENTS & INFORMATION
209
- * WordPress 3.8
210
- * Works with all systems
211
  * No extra libraries required
212
- * Supports huge websites
213
- * Custom backup format is much faster and smaller than tar or zip compression
214
  * Backup & cloning works in low memory & shared hosting environments
215
 
216
  == SUPPORT ==
@@ -234,6 +259,15 @@ WP STAGING BACKUP & CLONING TECHNICAL REQUIREMENTS & INFORMATION
234
 
235
  == Changelog ==
236
 
 
 
 
 
 
 
 
 
 
237
  = 2.9.10 =
238
  * Fix: Fatal error on missing Backup Scheduler class in Free version #1688
239
  * Fix: Fix recursive scanning if there is symlink in root directory linking to root directory itself #1688
@@ -502,6 +536,15 @@ WP STAGING Backup & Cloning | Full changelog:
502
 
503
  == Upgrade Notice ==
504
 
 
 
 
 
 
 
 
 
 
505
  * New: Support up to WordPress 5.9.3
506
  * New: Added upgrade routine for backup created with version 4.1.9 and 4.2.0 to fix backup metadata info #1647
507
  * Fix: Backup creation is blocked by mod_security if access tokens contain 0x string #1651
1
+ === Backup Duplicator & Migration - WP STAGING ===
2
 
3
  Author URL: https://wp-staging.com/backup-wordpress
4
  Plugin URL: https://wordpress.org/plugins/wp-staging
5
+ Contributors: WP-Staging, wpstagingbackup, ReneHermi, lucatume, alaasalama, fayyazfayzi
6
  Donate link: https://wp-staging.com/backup-wordpress
7
  License: GPLv2 or later
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
+ Tags: backup, backup plugin, database backup, wordpress backup plugin, migrate, backup wordpress, backups
10
  Requires at least: 3.6+
11
+ Tested up to: 5.9.3
12
+ Stable tag: 2.9.11
13
  Requires PHP: 5.6
14
 
15
+ Backup & Duplicator Plugin - Clone, backup, move, duplicate & migrate websites to staging, backup, and development sites for authorized users only.
16
 
17
  == Description ==
18
 
19
  <h3>Staging, Backup, Cloning & Migration of WordPress Sites</h3>
20
+ WP STAGING is a professional all in one <strong>duplicator, staging, and backup plugin</strong>. Create an exact copy and backup of your website in seconds. Perfect for staging, backup, or development purposes.
21
  (Cloning and backup time depends on the size of your website)
22
  <br /><br />
 
 
23
  This backup and staging tool creates a clone of your website into a subfolder or subdomain (Pro) of your main WordPress installation. The cloned site includes an entire copy of your database.
24
  <br /> <br />
25
+ For pushing & migrating plugins and themes to the live site, creating a backup and upload a backup to cloud providers, check out [WP STAGING | PRO](https://wp-staging.com/backup-wordpress "WP STAGING - Backup & Cloning")
26
  <br /><br />
27
+ WP STAGING runs all the time-consumptive operations for database and file cloning and backup operations in the background. This tool does <strong>automatically a search & replacement</strong> of all links and paths.
28
  <br /><br />
29
  This staging and backup plugin can clone your website even if it runs on a weak shared hosting server.
30
  <br /><br />
31
+ <strong>WP STAGING can prevent your website from breaking or going offline due to installing untested plugins!</strong>
32
 
33
  [youtube https://www.youtube.com/watch?v=vkv52s36Yvg]
34
 
35
+ == WP STAGING | FREE BACKUP AND CLONING WORDPRESS FEATURES ==
36
 
37
+ * Clones the entire production site into a subdirectory like example.com/staging-site.
38
  * Easy to use! Create a clone / backup site by clicking one button
39
  * No Software as a Service - No account needed! All your data stays on your server. Your data belongs to you only.
40
  * No server timeouts on huge websites or small and weak servers
48
  * Every release passes thousands of unit and acceptance tests to make the plugin extremely robust, reliable and fast on an enterprise code quality level
49
  * Fast and professional support team
50
 
51
+ == WP STAGING | PRO - BACKUP AND CLONING WORDPRESS FEATURES ==
52
 
53
+ The backup & cloning features below are Premium. You need WP STAGING | PRO to use those features. [More about WP STAGING | PRO](https://wp-staging.com/backup-wordpress)!
54
 
55
  * Migration - Migrate and transfer WordPress to another host or domain
56
  * High Performance - Backup and clone an entire website, even with millions of database rows faster and less resource-intensive than with other plugins
68
  * Mail notifications - Be notified if a backup can not be created
69
  * Backup of WordPress multisites
70
  * Backup to Google Drive
71
+ * Backup to Amazon S3
72
  * Backup to (s)FTP (Released soon)
73
  * Backup to Dropbox (Released soon)
74
  * Specify custom backup folder destination for backup cloud storage providers
79
  == Backup, Restore & Migration ==
80
 
81
  <strong>How to Backup and Restore WordPress</strong>
82
+ [https://wp-staging.com/docs/how-to-backup-and-restore-your-wordpress-website/](https://wp-staging.com/docs/how-to-backup-and-restore-your-wordpress-website/ "Backup and Restore WordPress")
83
 
84
  <strong>Backup & Transfer WordPress Site to Another Host</strong>
85
+ [https://wp-staging.com/docs/how-to-migrate-your-wordpress-site-to-a-new-host/](https://wp-staging.com/docs/how-to-migrate-your-wordpress-site-to-a-new-host/ "Backup and Transfer WordPress to new host")
86
 
87
  <strong>All Backup Guides</strong>
88
+ [https://wp-staging.com/docs/category/backup-restore/](https://wp-staging.com/docs/category/backup-restore/ "All Backup Guides")
89
 
90
+ <strong>Working with Staging Sites </strong>
91
+ [https://wp-staging.com/docs/category/working-with-wp-staging/](https://wp-staging.com/docs/category/working-with-wp-staging/ "Working with Staging Sites")
92
 
93
  <strong>FAQ for Backup & Cloning</strong>
94
+ [https://wp-staging.com/docs/category/frequently-asked-questions/](https://wp-staging.com/docs/category/frequently-asked-questions/ "Backup & Cloning FAQ")
95
 
96
  <strong>Troubleshooting Backup & Cloning</strong>
97
+ [https://wp-staging.com/docs/category/troubleshooting/](https://wp-staging.com/docs/category/troubleshooting/ "Troubleshooting Backup & Cloning")
98
 
99
  <strong>Change your workflow of updating themes and plugins:</strong>
100
 
121
  = Why should I use a Backup & Staging Website? =
122
 
123
  Plugin updates and theme customizations should be tested on a staging / backup platform before applying them on the production website.
124
+ Usually, it's recommended having the staging / backup platform on an identical server like the production server. You can only catch all possible errors during testing with the same hardware and software environment for your test & backup website.
125
 
126
  So, before you update a plugin or install a new one, it is highly recommended to check out the modifications on a clone / backup of your production website.
127
  That ensures that any modifications work on your production website without throwing unexpected errors or preventing your site from loading, better known as the "WordPress blank page error."
145
 
146
  So instead of offering our backup feature free of charge, we think it's time to provide a full-fledged premium backup solution with enterprise code quality affordable for everyone.
147
 
148
+ [Video: How we run automated tests on WP STAGING](https://www.youtube.com/watch?v=Tf9C9Pgu7Bs)
149
 
150
  = What is the difference between WP STAGING backup and other backup plugins? =
151
 
193
  = How to use a Backup file to Migrate WordPress to another Host or Domain
194
  The pro version of WP STAGING can backup your whole WordPress website. (In the future, we are implementing a basic free version of our sophisticated backup feature into this free version as well)
195
  With this backup function, you can backup and copy your entire WordPress website to another domain, new host, or new server very easily, and often faster and more reliable than with any other existing backup plugins.
196
+ Have a look at [https://wp-staging.com/docs/how-to-migrate-your-wordpress-site-to-a-new-host/](this article), that introduces the backup feature.
197
+
198
+ = Is There a Translation of WP STAGING in my Language? =
199
+
200
+ We have translated WP STAGING into five languages nearly completely:
201
+
202
+ English: [WP STAGING Backup & Duplicator WordPress Plugin. Backup & Migrate WordPress websites.](https://es.wordpress.org/plugins/wp-staging/)
203
+ French: [Plugin WordPress de sauvegarde et de duplication WP STAGING. Sauvegarder et migrer les sites Web WordPress.](https://es.wordpress.org/plugins/wp-staging/)
204
+ German: [WP STAGING Backup & Duplicator WordPress Plugin. Migrate WordPress Webseiten.](https://es.wordpress.org/plugins/wp-staging/)
205
+ Spanish: [WP STAGING Complemento de copia de seguridad y duplicador de WordPress. Copia de seguridad y migración de sitios web de WordPress.](https://es.wordpress.org/plugins/wp-staging/)
206
+
207
+ The following languages have been partially translated. You can help us with the translation:
208
+
209
+ Croatian: [WP STAGING Backup & Duplicator WordPress dodatak. Izradite sigurnosnu kopiju i migrirajte WordPress web stranice.](https://hr.wordpress.org/plugins/wp-staging/)
210
+ Dutch: [WP STAGING Back-up & Duplicator WordPress-plug-in. Back-up en migratie van WordPress-websites.](https://nl.wordpress.org/plugins/wp-staging/)
211
+ Finnish: [WP STAGING Backup & Duplicator WordPress-laajennus. Varmuuskopioi ja siirrä WordPress-verkkosivustoja.](https://fi.wordpress.org/plugins/wp-staging/)
212
+ Greek: [WP STAGING Πρόσθετο WordPress Backup & Duplicator. Δημιουργία αντιγράφων ασφαλείας και μετεγκατάσταση ιστοσελίδων WordPress.](https://el.wordpress.org/plugins/wp-staging/)
213
+ Hungarian: [WP STAGING Backup & Duplicator WordPress beépülő modul. WordPress-webhelyek biztonsági mentése és migrálása.](https://hu.wordpress.org/plugins/wp-staging/)
214
+ Indonesian: [WP Staging Backup & Duplikator Plugin WordPress. Cadangkan & Migrasi situs web WordPress.](https://id.wordpress.org/plugins/wp-staging/)
215
+ Italian: [WP STAGING Plugin WordPress per backup e duplicatori. Backup e migrazione di siti Web WordPress.](https://it.wordpress.org/plugins/wp-staging/)
216
+ Persian: [WP STAGING پشتیبان گیری و افزونه وردپرس Duplicator. پشتیبان گیری و مهاجرت از وب سایت های وردپرسی.](https://fa.wordpress.org/plugins/wp-staging/)
217
+ Polish: [WP STAGING Wtyczka WordPress do tworzenia kopii zapasowych i powielania. Twórz kopie zapasowe i migruj witryny WordPress.](https://pl.wordpress.org/plugins/wp-staging/)
218
+ Portuguese (Brazil): [WP STAGING Backup & Duplicador Plugin WordPress. Backup e migração de sites WordPress.](https://br.wordpress.org/plugins/wp-staging/)
219
+ Russian: [Плагин WP STAGING Backup & Duplicator для WordPress. Резервное копирование и перенос сайтов WordPress.](https://ru.wordpress.org/plugins/wp-staging/)
220
+ Turkish: [WP STAGING Yedekleme ve Çoğaltıcı WordPress Eklentisi. WordPress web sitelerini yedekleyin ve taşıyın.](https://tr.wordpress.org/plugins/wp-staging/)
221
+ Vietnamese: [WP STAGING Backup & Duplicator WordPress Plugin. Sao lưu và di chuyển các trang web WordPress.](https://vi.wordpress.org/plugins/wp-staging/)
222
 
223
  = Can I give you some feedback for WP STAGING Backup & Cloning? =
224
  This plugin has been created in thousands of hours and works even with the smallest shared web hosting package.
226
  If you are a developer, you will probably like to hear that we use Codeception and PHPUnit for our backup software.
227
 
228
  As there are infinite variations of possible server constellations, it still can happen that something does not work for you 100%. In that case,
229
+ please open a [support request](https://wp-staging.com/support/ "Support Request") and describe your issue.
230
+
231
+ == WP STAGING BACKUP & CLONING TECHNICAL REQUIREMENTS & INFORMATION ==
232
 
233
+ * Works on latest version of WordPress
234
+ * Minimum Supported WordPress Version 3.8
235
+ * Cloning and Backup work on all webhosts
236
  * No extra libraries required
237
+ * Backup & cloning supports huge websites
238
+ * Custom backup format is much faster and smaller than any tar or zip compression
239
  * Backup & cloning works in low memory & shared hosting environments
240
 
241
  == SUPPORT ==
259
 
260
  == Changelog ==
261
 
262
+ = 2.9.11 =
263
+ * New: Add Amazon S3 as backup cloud storage option for backup upload #1665
264
+ * Fix: Fatal error due to missing BackupScheduler class in Free version #1688
265
+ * Fix: Can not recursive scan file system if there is a symlink in root directory linking to the root directory itself. #1688
266
+ * Fix: Can not download backup files. Incorrect backup download link if wp-content folder is symlinked to another folder outside the wp root folder #1697
267
+ * Fix: Error on downloading backup in IIS due to section in parent web.config that overwrites the WP STAGING generated web.config in backup folder #1699
268
+ * Fix: PHP Fatal error while cloning if php iconv extension is not active. Continue cloning even if punycode related code doesn't work due to missing extensions #1702
269
+ * Enh: Remove duplicated mbstring class #1702
270
+
271
  = 2.9.10 =
272
  * Fix: Fatal error on missing Backup Scheduler class in Free version #1688
273
  * Fix: Fix recursive scanning if there is symlink in root directory linking to root directory itself #1688
536
 
537
  == Upgrade Notice ==
538
 
539
+ = 2.9.11 =
540
+ * New: Add Amazon S3 as backup cloud storage option for backup upload #1665
541
+ * Enh: Remove duplicate mbstring related code #1702
542
+ * Fix: Fatal error due to missing BackupScheduler class in Free version #1688
543
+ * Fix: Can not recursive scan file system if there is a symlink in root directory linking to the root directory itself. #1688
544
+ * Fix: Can not download backup files. Incorrect backup download link if wp-content folder is symlinked to another folder outside the wp root folder #1697
545
+ * Fix: Error on downloading backup in IIS due to section in parent web.config that overwrites the WP STAGING generated web.config in backup folder #1699
546
+ * Fix: Improve punycode related code. Keep cloning even if unable to use punycode related code doesn't work due to missing extensions #1702
547
+
548
  * New: Support up to WordPress 5.9.3
549
  * New: Added upgrade routine for backup created with version 4.1.9 and 4.2.0 to fix backup metadata info #1647
550
  * Fix: Backup creation is blocked by mod_security if access tokens contain 0x string #1651
vendor_wpstg/autoload/files.php CHANGED
@@ -15,7 +15,10 @@ return array(
15
  '25072dd6e2470089de65ae7bf11d3109' => $vendorDir . '/symfony/polyfill-php72/bootstrap.php',
16
  'f598d06aa772fa33d905e87be6398fb1' => $vendorDir . '/symfony/polyfill-intl-idn/bootstrap.php',
17
  '37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php',
 
 
18
  'decc78cc4436b1292c6c0d151b19445c' => $vendorDir . '/phpseclib/phpseclib/phpseclib/bootstrap.php',
 
19
  '1f87db08236948d07391152dccb70f04' => $vendorDir . '/google/apiclient-services/autoload.php',
20
  'a8d3953fd9959404dd22d3dfcd0a79f0' => $vendorDir . '/google/apiclient/src/aliases.php',
21
  );
15
  '25072dd6e2470089de65ae7bf11d3109' => $vendorDir . '/symfony/polyfill-php72/bootstrap.php',
16
  'f598d06aa772fa33d905e87be6398fb1' => $vendorDir . '/symfony/polyfill-intl-idn/bootstrap.php',
17
  '37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php',
18
+ '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php',
19
+ 'b067bc7112e384b61c701452d53a14a8' => $vendorDir . '/mtdowling/jmespath.php/src/JmesPath.php',
20
  'decc78cc4436b1292c6c0d151b19445c' => $vendorDir . '/phpseclib/phpseclib/phpseclib/bootstrap.php',
21
+ '8a9dc1de0ca7e01f3e08231539562f61' => $vendorDir . '/aws/aws-sdk-php/src/functions.php',
22
  '1f87db08236948d07391152dccb70f04' => $vendorDir . '/google/apiclient-services/autoload.php',
23
  'a8d3953fd9959404dd22d3dfcd0a79f0' => $vendorDir . '/google/apiclient/src/aliases.php',
24
  );
vendor_wpstg/autoload/src.php CHANGED
@@ -6,8 +6,281 @@ $vendorDir = dirname(dirname(__FILE__));
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9
  'ArithmeticError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/ArithmeticError.php',
10
  'AssertionError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/AssertionError.php',
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11
  'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
12
  'DivisionByZeroError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/DivisionByZeroError.php',
13
  'Error' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/Error.php',
@@ -304,6 +577,17 @@ return array(
304
  'GuzzleHttp\\TransferStats' => $vendorDir . '/guzzlehttp/guzzle/src/TransferStats.php',
305
  'GuzzleHttp\\UriTemplate' => $vendorDir . '/guzzlehttp/guzzle/src/UriTemplate.php',
306
  'GuzzleHttp\\Utils' => $vendorDir . '/guzzlehttp/guzzle/src/Utils.php',
 
 
 
 
 
 
 
 
 
 
 
307
  'Monolog\\ErrorHandler' => $vendorDir . '/monolog/monolog/src/Monolog/ErrorHandler.php',
308
  'Monolog\\Formatter\\ChromePHPFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/ChromePHPFormatter.php',
309
  'Monolog\\Formatter\\ElasticaFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/ElasticaFormatter.php',
@@ -431,6 +715,7 @@ return array(
431
  'Symfony\\Polyfill\\Intl\\Idn\\Resources\\unidata\\DisallowedRanges' => $vendorDir . '/symfony/polyfill-intl-idn/Resources/unidata/DisallowedRanges.php',
432
  'Symfony\\Polyfill\\Intl\\Idn\\Resources\\unidata\\Regex' => $vendorDir . '/symfony/polyfill-intl-idn/Resources/unidata/Regex.php',
433
  'Symfony\\Polyfill\\Intl\\Normalizer\\Normalizer' => $vendorDir . '/symfony/polyfill-intl-normalizer/Normalizer.php',
 
434
  'Symfony\\Polyfill\\Php70\\Php70' => $vendorDir . '/symfony/polyfill-php70/Php70.php',
435
  'Symfony\\Polyfill\\Php72\\Php72' => $vendorDir . '/symfony/polyfill-php72/Php72.php',
436
  'TypeError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/TypeError.php',
@@ -667,7 +952,6 @@ return array(
667
  'WPStaging\\Framework\\Utils\\Cache\\BufferedCache' => $baseDir . '/Framework/Utils/Cache/BufferedCache.php',
668
  'WPStaging\\Framework\\Utils\\Cache\\Cache' => $baseDir . '/Framework/Utils/Cache/Cache.php',
669
  'WPStaging\\Framework\\Utils\\Math' => $baseDir . '/Framework/Utils/Math.php',
670
- 'WPStaging\\Framework\\Utils\\Mbstring' => $baseDir . '/Framework/Utils/Mbstring.php',
671
  'WPStaging\\Framework\\Utils\\SlashMode' => $baseDir . '/Framework/Utils/SlashMode.php',
672
  'WPStaging\\Framework\\Utils\\Strings' => $baseDir . '/Framework/Utils/Strings.php',
673
  'WPStaging\\Framework\\Utils\\ThirdParty\\Glob' => $baseDir . '/Framework/Utils/ThirdParty/Glob.php',
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
9
+ 'AWS\\CRT\\Auth\\AwsCredentials' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/Auth/AwsCredentials.php',
10
+ 'AWS\\CRT\\Auth\\CredentialsProvider' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/Auth/CredentialsProvider.php',
11
+ 'AWS\\CRT\\Auth\\Signable' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/Auth/Signable.php',
12
+ 'AWS\\CRT\\Auth\\SignatureType' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/Auth/SignatureType.php',
13
+ 'AWS\\CRT\\Auth\\SignedBodyHeaderType' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/Auth/SignedBodyHeaderType.php',
14
+ 'AWS\\CRT\\Auth\\Signing' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/Auth/Signing.php',
15
+ 'AWS\\CRT\\Auth\\SigningAlgorithm' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/Auth/SigningAlgorithm.php',
16
+ 'AWS\\CRT\\Auth\\SigningConfigAWS' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/Auth/SigningConfigAWS.php',
17
+ 'AWS\\CRT\\Auth\\SigningResult' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/Auth/SigningResult.php',
18
+ 'AWS\\CRT\\Auth\\StaticCredentialsProvider' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/Auth/StaticCredentialsProvider.php',
19
+ 'AWS\\CRT\\CRT' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/CRT.php',
20
+ 'AWS\\CRT\\HTTP\\Headers' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/HTTP/Headers.php',
21
+ 'AWS\\CRT\\HTTP\\Message' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/HTTP/Message.php',
22
+ 'AWS\\CRT\\HTTP\\Request' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/HTTP/Request.php',
23
+ 'AWS\\CRT\\HTTP\\Response' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/HTTP/Response.php',
24
+ 'AWS\\CRT\\IO\\EventLoopGroup' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/IO/EventLoopGroup.php',
25
+ 'AWS\\CRT\\IO\\InputStream' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/IO/InputStream.php',
26
+ 'AWS\\CRT\\Internal\\Encoding' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/Internal/Encoding.php',
27
+ 'AWS\\CRT\\Internal\\Extension' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/Internal/Extension.php',
28
+ 'AWS\\CRT\\Log' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/Log.php',
29
+ 'AWS\\CRT\\NativeResource' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/NativeResource.php',
30
+ 'AWS\\CRT\\OptionValue' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/Options.php',
31
+ 'AWS\\CRT\\Options' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/Options.php',
32
  'ArithmeticError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/ArithmeticError.php',
33
  'AssertionError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/AssertionError.php',
34
+ 'Aws\\AbstractConfigurationProvider' => $vendorDir . '/aws/aws-sdk-php/src/AbstractConfigurationProvider.php',
35
+ 'Aws\\Api\\AbstractModel' => $vendorDir . '/aws/aws-sdk-php/src/Api/AbstractModel.php',
36
+ 'Aws\\Api\\ApiProvider' => $vendorDir . '/aws/aws-sdk-php/src/Api/ApiProvider.php',
37
+ 'Aws\\Api\\DateTimeResult' => $vendorDir . '/aws/aws-sdk-php/src/Api/DateTimeResult.php',
38
+ 'Aws\\Api\\DocModel' => $vendorDir . '/aws/aws-sdk-php/src/Api/DocModel.php',
39
+ 'Aws\\Api\\ErrorParser\\AbstractErrorParser' => $vendorDir . '/aws/aws-sdk-php/src/Api/ErrorParser/AbstractErrorParser.php',
40
+ 'Aws\\Api\\ErrorParser\\JsonParserTrait' => $vendorDir . '/aws/aws-sdk-php/src/Api/ErrorParser/JsonParserTrait.php',
41
+ 'Aws\\Api\\ErrorParser\\JsonRpcErrorParser' => $vendorDir . '/aws/aws-sdk-php/src/Api/ErrorParser/JsonRpcErrorParser.php',
42
+ 'Aws\\Api\\ErrorParser\\RestJsonErrorParser' => $vendorDir . '/aws/aws-sdk-php/src/Api/ErrorParser/RestJsonErrorParser.php',
43
+ 'Aws\\Api\\ErrorParser\\XmlErrorParser' => $vendorDir . '/aws/aws-sdk-php/src/Api/ErrorParser/XmlErrorParser.php',
44
+ 'Aws\\Api\\ListShape' => $vendorDir . '/aws/aws-sdk-php/src/Api/ListShape.php',
45
+ 'Aws\\Api\\MapShape' => $vendorDir . '/aws/aws-sdk-php/src/Api/MapShape.php',
46
+ 'Aws\\Api\\Operation' => $vendorDir . '/aws/aws-sdk-php/src/Api/Operation.php',
47
+ 'Aws\\Api\\Parser\\AbstractParser' => $vendorDir . '/aws/aws-sdk-php/src/Api/Parser/AbstractParser.php',
48
+ 'Aws\\Api\\Parser\\AbstractRestParser' => $vendorDir . '/aws/aws-sdk-php/src/Api/Parser/AbstractRestParser.php',
49
+ 'Aws\\Api\\Parser\\Crc32ValidatingParser' => $vendorDir . '/aws/aws-sdk-php/src/Api/Parser/Crc32ValidatingParser.php',
50
+ 'Aws\\Api\\Parser\\DecodingEventStreamIterator' => $vendorDir . '/aws/aws-sdk-php/src/Api/Parser/DecodingEventStreamIterator.php',
51
+ 'Aws\\Api\\Parser\\EventParsingIterator' => $vendorDir . '/aws/aws-sdk-php/src/Api/Parser/EventParsingIterator.php',
52
+ 'Aws\\Api\\Parser\\Exception\\ParserException' => $vendorDir . '/aws/aws-sdk-php/src/Api/Parser/Exception/ParserException.php',
53
+ 'Aws\\Api\\Parser\\JsonParser' => $vendorDir . '/aws/aws-sdk-php/src/Api/Parser/JsonParser.php',
54
+ 'Aws\\Api\\Parser\\JsonRpcParser' => $vendorDir . '/aws/aws-sdk-php/src/Api/Parser/JsonRpcParser.php',
55
+ 'Aws\\Api\\Parser\\MetadataParserTrait' => $vendorDir . '/aws/aws-sdk-php/src/Api/Parser/MetadataParserTrait.php',
56
+ 'Aws\\Api\\Parser\\PayloadParserTrait' => $vendorDir . '/aws/aws-sdk-php/src/Api/Parser/PayloadParserTrait.php',
57
+ 'Aws\\Api\\Parser\\QueryParser' => $vendorDir . '/aws/aws-sdk-php/src/Api/Parser/QueryParser.php',
58
+ 'Aws\\Api\\Parser\\RestJsonParser' => $vendorDir . '/aws/aws-sdk-php/src/Api/Parser/RestJsonParser.php',
59
+ 'Aws\\Api\\Parser\\RestXmlParser' => $vendorDir . '/aws/aws-sdk-php/src/Api/Parser/RestXmlParser.php',
60
+ 'Aws\\Api\\Parser\\XmlParser' => $vendorDir . '/aws/aws-sdk-php/src/Api/Parser/XmlParser.php',
61
+ 'Aws\\Api\\Serializer\\Ec2ParamBuilder' => $vendorDir . '/aws/aws-sdk-php/src/Api/Serializer/Ec2ParamBuilder.php',
62
+ 'Aws\\Api\\Serializer\\JsonBody' => $vendorDir . '/aws/aws-sdk-php/src/Api/Serializer/JsonBody.php',
63
+ 'Aws\\Api\\Serializer\\JsonRpcSerializer' => $vendorDir . '/aws/aws-sdk-php/src/Api/Serializer/JsonRpcSerializer.php',
64
+ 'Aws\\Api\\Serializer\\QueryParamBuilder' => $vendorDir . '/aws/aws-sdk-php/src/Api/Serializer/QueryParamBuilder.php',
65
+ 'Aws\\Api\\Serializer\\QuerySerializer' => $vendorDir . '/aws/aws-sdk-php/src/Api/Serializer/QuerySerializer.php',
66
+ 'Aws\\Api\\Serializer\\RestJsonSerializer' => $vendorDir . '/aws/aws-sdk-php/src/Api/Serializer/RestJsonSerializer.php',
67
+ 'Aws\\Api\\Serializer\\RestSerializer' => $vendorDir . '/aws/aws-sdk-php/src/Api/Serializer/RestSerializer.php',
68
+ 'Aws\\Api\\Serializer\\RestXmlSerializer' => $vendorDir . '/aws/aws-sdk-php/src/Api/Serializer/RestXmlSerializer.php',
69
+ 'Aws\\Api\\Serializer\\XmlBody' => $vendorDir . '/aws/aws-sdk-php/src/Api/Serializer/XmlBody.php',
70
+ 'Aws\\Api\\Service' => $vendorDir . '/aws/aws-sdk-php/src/Api/Service.php',
71
+ 'Aws\\Api\\Shape' => $vendorDir . '/aws/aws-sdk-php/src/Api/Shape.php',
72
+ 'Aws\\Api\\ShapeMap' => $vendorDir . '/aws/aws-sdk-php/src/Api/ShapeMap.php',
73
+ 'Aws\\Api\\StructureShape' => $vendorDir . '/aws/aws-sdk-php/src/Api/StructureShape.php',
74
+ 'Aws\\Api\\TimestampShape' => $vendorDir . '/aws/aws-sdk-php/src/Api/TimestampShape.php',
75
+ 'Aws\\Api\\Validator' => $vendorDir . '/aws/aws-sdk-php/src/Api/Validator.php',
76
+ 'Aws\\Arn\\AccessPointArn' => $vendorDir . '/aws/aws-sdk-php/src/Arn/AccessPointArn.php',
77
+ 'Aws\\Arn\\AccessPointArnInterface' => $vendorDir . '/aws/aws-sdk-php/src/Arn/AccessPointArnInterface.php',
78
+ 'Aws\\Arn\\Arn' => $vendorDir . '/aws/aws-sdk-php/src/Arn/Arn.php',
79
+ 'Aws\\Arn\\ArnInterface' => $vendorDir . '/aws/aws-sdk-php/src/Arn/ArnInterface.php',
80
+ 'Aws\\Arn\\ArnParser' => $vendorDir . '/aws/aws-sdk-php/src/Arn/ArnParser.php',
81
+ 'Aws\\Arn\\Exception\\InvalidArnException' => $vendorDir . '/aws/aws-sdk-php/src/Arn/Exception/InvalidArnException.php',
82
+ 'Aws\\Arn\\ObjectLambdaAccessPointArn' => $vendorDir . '/aws/aws-sdk-php/src/Arn/ObjectLambdaAccessPointArn.php',
83
+ 'Aws\\Arn\\ResourceTypeAndIdTrait' => $vendorDir . '/aws/aws-sdk-php/src/Arn/ResourceTypeAndIdTrait.php',
84
+ 'Aws\\Arn\\S3\\AccessPointArn' => $vendorDir . '/aws/aws-sdk-php/src/Arn/S3/AccessPointArn.php',
85
+ 'Aws\\Arn\\S3\\BucketArnInterface' => $vendorDir . '/aws/aws-sdk-php/src/Arn/S3/BucketArnInterface.php',
86
+ 'Aws\\Arn\\S3\\MultiRegionAccessPointArn' => $vendorDir . '/aws/aws-sdk-php/src/Arn/S3/MultiRegionAccessPointArn.php',
87
+ 'Aws\\Arn\\S3\\OutpostsAccessPointArn' => $vendorDir . '/aws/aws-sdk-php/src/Arn/S3/OutpostsAccessPointArn.php',
88
+ 'Aws\\Arn\\S3\\OutpostsArnInterface' => $vendorDir . '/aws/aws-sdk-php/src/Arn/S3/OutpostsArnInterface.php',
89
+ 'Aws\\Arn\\S3\\OutpostsBucketArn' => $vendorDir . '/aws/aws-sdk-php/src/Arn/S3/OutpostsBucketArn.php',
90
+ 'Aws\\AwsClient' => $vendorDir . '/aws/aws-sdk-php/src/AwsClient.php',
91
+ 'Aws\\AwsClientInterface' => $vendorDir . '/aws/aws-sdk-php/src/AwsClientInterface.php',
92
+ 'Aws\\AwsClientTrait' => $vendorDir . '/aws/aws-sdk-php/src/AwsClientTrait.php',
93
+ 'Aws\\CacheInterface' => $vendorDir . '/aws/aws-sdk-php/src/CacheInterface.php',
94
+ 'Aws\\ClientResolver' => $vendorDir . '/aws/aws-sdk-php/src/ClientResolver.php',
95
+ 'Aws\\ClientSideMonitoring\\AbstractMonitoringMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/ClientSideMonitoring/AbstractMonitoringMiddleware.php',
96
+ 'Aws\\ClientSideMonitoring\\ApiCallAttemptMonitoringMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/ClientSideMonitoring/ApiCallAttemptMonitoringMiddleware.php',
97
+ 'Aws\\ClientSideMonitoring\\ApiCallMonitoringMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/ClientSideMonitoring/ApiCallMonitoringMiddleware.php',
98
+ 'Aws\\ClientSideMonitoring\\Configuration' => $vendorDir . '/aws/aws-sdk-php/src/ClientSideMonitoring/Configuration.php',
99
+ 'Aws\\ClientSideMonitoring\\ConfigurationInterface' => $vendorDir . '/aws/aws-sdk-php/src/ClientSideMonitoring/ConfigurationInterface.php',
100
+ 'Aws\\ClientSideMonitoring\\ConfigurationProvider' => $vendorDir . '/aws/aws-sdk-php/src/ClientSideMonitoring/ConfigurationProvider.php',
101
+ 'Aws\\ClientSideMonitoring\\Exception\\ConfigurationException' => $vendorDir . '/aws/aws-sdk-php/src/ClientSideMonitoring/Exception/ConfigurationException.php',
102
+ 'Aws\\ClientSideMonitoring\\MonitoringMiddlewareInterface' => $vendorDir . '/aws/aws-sdk-php/src/ClientSideMonitoring/MonitoringMiddlewareInterface.php',
103
+ 'Aws\\CloudFront\\CloudFrontClient' => $vendorDir . '/aws/aws-sdk-php/src/CloudFront/CloudFrontClient.php',
104
+ 'Aws\\CloudFront\\CookieSigner' => $vendorDir . '/aws/aws-sdk-php/src/CloudFront/CookieSigner.php',
105
+ 'Aws\\CloudFront\\Exception\\CloudFrontException' => $vendorDir . '/aws/aws-sdk-php/src/CloudFront/Exception/CloudFrontException.php',
106
+ 'Aws\\CloudFront\\Signer' => $vendorDir . '/aws/aws-sdk-php/src/CloudFront/Signer.php',
107
+ 'Aws\\CloudFront\\UrlSigner' => $vendorDir . '/aws/aws-sdk-php/src/CloudFront/UrlSigner.php',
108
+ 'Aws\\Command' => $vendorDir . '/aws/aws-sdk-php/src/Command.php',
109
+ 'Aws\\CommandInterface' => $vendorDir . '/aws/aws-sdk-php/src/CommandInterface.php',
110
+ 'Aws\\CommandPool' => $vendorDir . '/aws/aws-sdk-php/src/CommandPool.php',
111
+ 'Aws\\ConfigurationProviderInterface' => $vendorDir . '/aws/aws-sdk-php/src/ConfigurationProviderInterface.php',
112
+ 'Aws\\Credentials\\AssumeRoleCredentialProvider' => $vendorDir . '/aws/aws-sdk-php/src/Credentials/AssumeRoleCredentialProvider.php',
113
+ 'Aws\\Credentials\\AssumeRoleWithWebIdentityCredentialProvider' => $vendorDir . '/aws/aws-sdk-php/src/Credentials/AssumeRoleWithWebIdentityCredentialProvider.php',
114
+ 'Aws\\Credentials\\CredentialProvider' => $vendorDir . '/aws/aws-sdk-php/src/Credentials/CredentialProvider.php',
115
+ 'Aws\\Credentials\\Credentials' => $vendorDir . '/aws/aws-sdk-php/src/Credentials/Credentials.php',
116
+ 'Aws\\Credentials\\CredentialsInterface' => $vendorDir . '/aws/aws-sdk-php/src/Credentials/CredentialsInterface.php',
117
+ 'Aws\\Credentials\\EcsCredentialProvider' => $vendorDir . '/aws/aws-sdk-php/src/Credentials/EcsCredentialProvider.php',
118
+ 'Aws\\Credentials\\InstanceProfileProvider' => $vendorDir . '/aws/aws-sdk-php/src/Credentials/InstanceProfileProvider.php',
119
+ 'Aws\\Crypto\\AbstractCryptoClient' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/AbstractCryptoClient.php',
120
+ 'Aws\\Crypto\\AbstractCryptoClientV2' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/AbstractCryptoClientV2.php',
121
+ 'Aws\\Crypto\\AesDecryptingStream' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/AesDecryptingStream.php',
122
+ 'Aws\\Crypto\\AesEncryptingStream' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/AesEncryptingStream.php',
123
+ 'Aws\\Crypto\\AesGcmDecryptingStream' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/AesGcmDecryptingStream.php',
124
+ 'Aws\\Crypto\\AesGcmEncryptingStream' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/AesGcmEncryptingStream.php',
125
+ 'Aws\\Crypto\\AesStreamInterface' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/AesStreamInterface.php',
126
+ 'Aws\\Crypto\\AesStreamInterfaceV2' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/AesStreamInterfaceV2.php',
127
+ 'Aws\\Crypto\\Cipher\\Cbc' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/Cipher/Cbc.php',
128
+ 'Aws\\Crypto\\Cipher\\CipherBuilderTrait' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/Cipher/CipherBuilderTrait.php',
129
+ 'Aws\\Crypto\\Cipher\\CipherMethod' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/Cipher/CipherMethod.php',
130
+ 'Aws\\Crypto\\DecryptionTrait' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/DecryptionTrait.php',
131
+ 'Aws\\Crypto\\DecryptionTraitV2' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/DecryptionTraitV2.php',
132
+ 'Aws\\Crypto\\EncryptionTrait' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/EncryptionTrait.php',
133
+ 'Aws\\Crypto\\EncryptionTraitV2' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/EncryptionTraitV2.php',
134
+ 'Aws\\Crypto\\KmsMaterialsProvider' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/KmsMaterialsProvider.php',
135
+ 'Aws\\Crypto\\KmsMaterialsProviderV2' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/KmsMaterialsProviderV2.php',
136
+ 'Aws\\Crypto\\MaterialsProvider' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/MaterialsProvider.php',
137
+ 'Aws\\Crypto\\MaterialsProviderInterface' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/MaterialsProviderInterface.php',
138
+ 'Aws\\Crypto\\MaterialsProviderInterfaceV2' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/MaterialsProviderInterfaceV2.php',
139
+ 'Aws\\Crypto\\MaterialsProviderV2' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/MaterialsProviderV2.php',
140
+ 'Aws\\Crypto\\MetadataEnvelope' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/MetadataEnvelope.php',
141
+ 'Aws\\Crypto\\MetadataStrategyInterface' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/MetadataStrategyInterface.php',
142
+ 'Aws\\Crypto\\Polyfill\\AesGcm' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/Polyfill/AesGcm.php',
143
+ 'Aws\\Crypto\\Polyfill\\ByteArray' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/Polyfill/ByteArray.php',
144
+ 'Aws\\Crypto\\Polyfill\\Gmac' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/Polyfill/Gmac.php',
145
+ 'Aws\\Crypto\\Polyfill\\Key' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/Polyfill/Key.php',
146
+ 'Aws\\Crypto\\Polyfill\\NeedsTrait' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/Polyfill/NeedsTrait.php',
147
+ 'Aws\\DefaultsMode\\Configuration' => $vendorDir . '/aws/aws-sdk-php/src/DefaultsMode/Configuration.php',
148
+ 'Aws\\DefaultsMode\\ConfigurationInterface' => $vendorDir . '/aws/aws-sdk-php/src/DefaultsMode/ConfigurationInterface.php',
149
+ 'Aws\\DefaultsMode\\ConfigurationProvider' => $vendorDir . '/aws/aws-sdk-php/src/DefaultsMode/ConfigurationProvider.php',
150
+ 'Aws\\DefaultsMode\\Exception\\ConfigurationException' => $vendorDir . '/aws/aws-sdk-php/src/DefaultsMode/Exception/ConfigurationException.php',
151
+ 'Aws\\DoctrineCacheAdapter' => $vendorDir . '/aws/aws-sdk-php/src/DoctrineCacheAdapter.php',
152
+ 'Aws\\EndpointDiscovery\\Configuration' => $vendorDir . '/aws/aws-sdk-php/src/EndpointDiscovery/Configuration.php',
153
+ 'Aws\\EndpointDiscovery\\ConfigurationInterface' => $vendorDir . '/aws/aws-sdk-php/src/EndpointDiscovery/ConfigurationInterface.php',
154
+ 'Aws\\EndpointDiscovery\\ConfigurationProvider' => $vendorDir . '/aws/aws-sdk-php/src/EndpointDiscovery/ConfigurationProvider.php',
155
+ 'Aws\\EndpointDiscovery\\EndpointDiscoveryMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/EndpointDiscovery/EndpointDiscoveryMiddleware.php',
156
+ 'Aws\\EndpointDiscovery\\EndpointList' => $vendorDir . '/aws/aws-sdk-php/src/EndpointDiscovery/EndpointList.php',
157
+ 'Aws\\EndpointDiscovery\\Exception\\ConfigurationException' => $vendorDir . '/aws/aws-sdk-php/src/EndpointDiscovery/Exception/ConfigurationException.php',
158
+ 'Aws\\EndpointParameterMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/EndpointParameterMiddleware.php',
159
+ 'Aws\\Endpoint\\EndpointProvider' => $vendorDir . '/aws/aws-sdk-php/src/Endpoint/EndpointProvider.php',
160
+ 'Aws\\Endpoint\\Partition' => $vendorDir . '/aws/aws-sdk-php/src/Endpoint/Partition.php',
161
+ 'Aws\\Endpoint\\PartitionEndpointProvider' => $vendorDir . '/aws/aws-sdk-php/src/Endpoint/PartitionEndpointProvider.php',
162
+ 'Aws\\Endpoint\\PartitionInterface' => $vendorDir . '/aws/aws-sdk-php/src/Endpoint/PartitionInterface.php',
163
+ 'Aws\\Endpoint\\PatternEndpointProvider' => $vendorDir . '/aws/aws-sdk-php/src/Endpoint/PatternEndpointProvider.php',
164
+ 'Aws\\Endpoint\\UseDualstackEndpoint\\Configuration' => $vendorDir . '/aws/aws-sdk-php/src/Endpoint/UseDualstackEndpoint/Configuration.php',
165
+ 'Aws\\Endpoint\\UseDualstackEndpoint\\ConfigurationInterface' => $vendorDir . '/aws/aws-sdk-php/src/Endpoint/UseDualstackEndpoint/ConfigurationInterface.php',
166
+ 'Aws\\Endpoint\\UseDualstackEndpoint\\ConfigurationProvider' => $vendorDir . '/aws/aws-sdk-php/src/Endpoint/UseDualstackEndpoint/ConfigurationProvider.php',
167
+ 'Aws\\Endpoint\\UseDualstackEndpoint\\Exception\\ConfigurationException' => $vendorDir . '/aws/aws-sdk-php/src/Endpoint/UseDualstackEndpoint/Exception/ConfigurationException.php',
168
+ 'Aws\\Endpoint\\UseFipsEndpoint\\Configuration' => $vendorDir . '/aws/aws-sdk-php/src/Endpoint/UseFipsEndpoint/Configuration.php',
169
+ 'Aws\\Endpoint\\UseFipsEndpoint\\ConfigurationInterface' => $vendorDir . '/aws/aws-sdk-php/src/Endpoint/UseFipsEndpoint/ConfigurationInterface.php',
170
+ 'Aws\\Endpoint\\UseFipsEndpoint\\ConfigurationProvider' => $vendorDir . '/aws/aws-sdk-php/src/Endpoint/UseFipsEndpoint/ConfigurationProvider.php',
171
+ 'Aws\\Endpoint\\UseFipsEndpoint\\Exception\\ConfigurationException' => $vendorDir . '/aws/aws-sdk-php/src/Endpoint/UseFipsEndpoint/Exception/ConfigurationException.php',
172
+ 'Aws\\Exception\\AwsException' => $vendorDir . '/aws/aws-sdk-php/src/Exception/AwsException.php',
173
+ 'Aws\\Exception\\CommonRuntimeException' => $vendorDir . '/aws/aws-sdk-php/src/Exception/CommonRuntimeException.php',
174
+ 'Aws\\Exception\\CouldNotCreateChecksumException' => $vendorDir . '/aws/aws-sdk-php/src/Exception/CouldNotCreateChecksumException.php',
175
+ 'Aws\\Exception\\CredentialsException' => $vendorDir . '/aws/aws-sdk-php/src/Exception/CredentialsException.php',
176
+ 'Aws\\Exception\\CryptoException' => $vendorDir . '/aws/aws-sdk-php/src/Exception/CryptoException.php',
177
+ 'Aws\\Exception\\CryptoPolyfillException' => $vendorDir . '/aws/aws-sdk-php/src/Exception/CryptoPolyfillException.php',
178
+ 'Aws\\Exception\\EventStreamDataException' => $vendorDir . '/aws/aws-sdk-php/src/Exception/EventStreamDataException.php',
179
+ 'Aws\\Exception\\IncalculablePayloadException' => $vendorDir . '/aws/aws-sdk-php/src/Exception/IncalculablePayloadException.php',
180
+ 'Aws\\Exception\\InvalidJsonException' => $vendorDir . '/aws/aws-sdk-php/src/Exception/InvalidJsonException.php',
181
+ 'Aws\\Exception\\InvalidRegionException' => $vendorDir . '/aws/aws-sdk-php/src/Exception/InvalidRegionException.php',
182
+ 'Aws\\Exception\\MultipartUploadException' => $vendorDir . '/aws/aws-sdk-php/src/Exception/MultipartUploadException.php',
183
+ 'Aws\\Exception\\UnresolvedApiException' => $vendorDir . '/aws/aws-sdk-php/src/Exception/UnresolvedApiException.php',
184
+ 'Aws\\Exception\\UnresolvedEndpointException' => $vendorDir . '/aws/aws-sdk-php/src/Exception/UnresolvedEndpointException.php',
185
+ 'Aws\\Exception\\UnresolvedSignatureException' => $vendorDir . '/aws/aws-sdk-php/src/Exception/UnresolvedSignatureException.php',
186
+ 'Aws\\HandlerList' => $vendorDir . '/aws/aws-sdk-php/src/HandlerList.php',
187
+ 'Aws\\Handler\\GuzzleV5\\GuzzleHandler' => $vendorDir . '/aws/aws-sdk-php/src/Handler/GuzzleV5/GuzzleHandler.php',
188
+ 'Aws\\Handler\\GuzzleV5\\GuzzleStream' => $vendorDir . '/aws/aws-sdk-php/src/Handler/GuzzleV5/GuzzleStream.php',
189
+ 'Aws\\Handler\\GuzzleV5\\PsrStream' => $vendorDir . '/aws/aws-sdk-php/src/Handler/GuzzleV5/PsrStream.php',
190
+ 'Aws\\Handler\\GuzzleV6\\GuzzleHandler' => $vendorDir . '/aws/aws-sdk-php/src/Handler/GuzzleV6/GuzzleHandler.php',
191
+ 'Aws\\HasDataTrait' => $vendorDir . '/aws/aws-sdk-php/src/HasDataTrait.php',
192
+ 'Aws\\HasMonitoringEventsTrait' => $vendorDir . '/aws/aws-sdk-php/src/HasMonitoringEventsTrait.php',
193
+ 'Aws\\HashInterface' => $vendorDir . '/aws/aws-sdk-php/src/HashInterface.php',
194
+ 'Aws\\HashingStream' => $vendorDir . '/aws/aws-sdk-php/src/HashingStream.php',
195
+ 'Aws\\History' => $vendorDir . '/aws/aws-sdk-php/src/History.php',
196
+ 'Aws\\IdempotencyTokenMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/IdempotencyTokenMiddleware.php',
197
+ 'Aws\\InputValidationMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/InputValidationMiddleware.php',
198
+ 'Aws\\JsonCompiler' => $vendorDir . '/aws/aws-sdk-php/src/JsonCompiler.php',
199
+ 'Aws\\LruArrayCache' => $vendorDir . '/aws/aws-sdk-php/src/LruArrayCache.php',
200
+ 'Aws\\Middleware' => $vendorDir . '/aws/aws-sdk-php/src/Middleware.php',
201
+ 'Aws\\MockHandler' => $vendorDir . '/aws/aws-sdk-php/src/MockHandler.php',
202
+ 'Aws\\MonitoringEventsInterface' => $vendorDir . '/aws/aws-sdk-php/src/MonitoringEventsInterface.php',
203
+ 'Aws\\MultiRegionClient' => $vendorDir . '/aws/aws-sdk-php/src/MultiRegionClient.php',
204
+ 'Aws\\Multipart\\AbstractUploadManager' => $vendorDir . '/aws/aws-sdk-php/src/Multipart/AbstractUploadManager.php',
205
+ 'Aws\\Multipart\\AbstractUploader' => $vendorDir . '/aws/aws-sdk-php/src/Multipart/AbstractUploader.php',
206
+ 'Aws\\Multipart\\UploadState' => $vendorDir . '/aws/aws-sdk-php/src/Multipart/UploadState.php',
207
+ 'Aws\\PhpHash' => $vendorDir . '/aws/aws-sdk-php/src/PhpHash.php',
208
+ 'Aws\\PresignUrlMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/PresignUrlMiddleware.php',
209
+ 'Aws\\Psr16CacheAdapter' => $vendorDir . '/aws/aws-sdk-php/src/Psr16CacheAdapter.php',
210
+ 'Aws\\PsrCacheAdapter' => $vendorDir . '/aws/aws-sdk-php/src/PsrCacheAdapter.php',
211
+ 'Aws\\ResponseContainerInterface' => $vendorDir . '/aws/aws-sdk-php/src/ResponseContainerInterface.php',
212
+ 'Aws\\Result' => $vendorDir . '/aws/aws-sdk-php/src/Result.php',
213
+ 'Aws\\ResultInterface' => $vendorDir . '/aws/aws-sdk-php/src/ResultInterface.php',
214
+ 'Aws\\ResultPaginator' => $vendorDir . '/aws/aws-sdk-php/src/ResultPaginator.php',
215
+ 'Aws\\RetryMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/RetryMiddleware.php',
216
+ 'Aws\\RetryMiddlewareV2' => $vendorDir . '/aws/aws-sdk-php/src/RetryMiddlewareV2.php',
217
+ 'Aws\\Retry\\Configuration' => $vendorDir . '/aws/aws-sdk-php/src/Retry/Configuration.php',
218
+ 'Aws\\Retry\\ConfigurationInterface' => $vendorDir . '/aws/aws-sdk-php/src/Retry/ConfigurationInterface.php',
219
+ 'Aws\\Retry\\ConfigurationProvider' => $vendorDir . '/aws/aws-sdk-php/src/Retry/ConfigurationProvider.php',
220
+ 'Aws\\Retry\\Exception\\ConfigurationException' => $vendorDir . '/aws/aws-sdk-php/src/Retry/Exception/ConfigurationException.php',
221
+ 'Aws\\Retry\\QuotaManager' => $vendorDir . '/aws/aws-sdk-php/src/Retry/QuotaManager.php',
222
+ 'Aws\\Retry\\RateLimiter' => $vendorDir . '/aws/aws-sdk-php/src/Retry/RateLimiter.php',
223
+ 'Aws\\Retry\\RetryHelperTrait' => $vendorDir . '/aws/aws-sdk-php/src/Retry/RetryHelperTrait.php',
224
+ 'Aws\\S3\\AmbiguousSuccessParser' => $vendorDir . '/aws/aws-sdk-php/src/S3/AmbiguousSuccessParser.php',
225
+ 'Aws\\S3\\ApplyChecksumMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/S3/ApplyChecksumMiddleware.php',
226
+ 'Aws\\S3\\BatchDelete' => $vendorDir . '/aws/aws-sdk-php/src/S3/BatchDelete.php',
227
+ 'Aws\\S3\\BucketEndpointArnMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/S3/BucketEndpointArnMiddleware.php',
228
+ 'Aws\\S3\\BucketEndpointMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/S3/BucketEndpointMiddleware.php',
229
+ 'Aws\\S3\\CalculatesChecksumTrait' => $vendorDir . '/aws/aws-sdk-php/src/S3/CalculatesChecksumTrait.php',
230
+ 'Aws\\S3\\Crypto\\CryptoParamsTrait' => $vendorDir . '/aws/aws-sdk-php/src/S3/Crypto/CryptoParamsTrait.php',
231
+ 'Aws\\S3\\Crypto\\CryptoParamsTraitV2' => $vendorDir . '/aws/aws-sdk-php/src/S3/Crypto/CryptoParamsTraitV2.php',
232
+ 'Aws\\S3\\Crypto\\HeadersMetadataStrategy' => $vendorDir . '/aws/aws-sdk-php/src/S3/Crypto/HeadersMetadataStrategy.php',
233
+ 'Aws\\S3\\Crypto\\InstructionFileMetadataStrategy' => $vendorDir . '/aws/aws-sdk-php/src/S3/Crypto/InstructionFileMetadataStrategy.php',
234
+ 'Aws\\S3\\Crypto\\S3EncryptionClient' => $vendorDir . '/aws/aws-sdk-php/src/S3/Crypto/S3EncryptionClient.php',
235
+ 'Aws\\S3\\Crypto\\S3EncryptionClientV2' => $vendorDir . '/aws/aws-sdk-php/src/S3/Crypto/S3EncryptionClientV2.php',
236
+ 'Aws\\S3\\Crypto\\S3EncryptionMultipartUploader' => $vendorDir . '/aws/aws-sdk-php/src/S3/Crypto/S3EncryptionMultipartUploader.php',
237
+ 'Aws\\S3\\Crypto\\S3EncryptionMultipartUploaderV2' => $vendorDir . '/aws/aws-sdk-php/src/S3/Crypto/S3EncryptionMultipartUploaderV2.php',
238
+ 'Aws\\S3\\Crypto\\UserAgentTrait' => $vendorDir . '/aws/aws-sdk-php/src/S3/Crypto/UserAgentTrait.php',
239
+ 'Aws\\S3\\EndpointRegionHelperTrait' => $vendorDir . '/aws/aws-sdk-php/src/S3/EndpointRegionHelperTrait.php',
240
+ 'Aws\\S3\\Exception\\DeleteMultipleObjectsException' => $vendorDir . '/aws/aws-sdk-php/src/S3/Exception/DeleteMultipleObjectsException.php',
241
+ 'Aws\\S3\\Exception\\PermanentRedirectException' => $vendorDir . '/aws/aws-sdk-php/src/S3/Exception/PermanentRedirectException.php',
242
+ 'Aws\\S3\\Exception\\S3Exception' => $vendorDir . '/aws/aws-sdk-php/src/S3/Exception/S3Exception.php',
243
+ 'Aws\\S3\\Exception\\S3MultipartUploadException' => $vendorDir . '/aws/aws-sdk-php/src/S3/Exception/S3MultipartUploadException.php',
244
+ 'Aws\\S3\\GetBucketLocationParser' => $vendorDir . '/aws/aws-sdk-php/src/S3/GetBucketLocationParser.php',
245
+ 'Aws\\S3\\MultipartCopy' => $vendorDir . '/aws/aws-sdk-php/src/S3/MultipartCopy.php',
246
+ 'Aws\\S3\\MultipartUploader' => $vendorDir . '/aws/aws-sdk-php/src/S3/MultipartUploader.php',
247
+ 'Aws\\S3\\MultipartUploadingTrait' => $vendorDir . '/aws/aws-sdk-php/src/S3/MultipartUploadingTrait.php',
248
+ 'Aws\\S3\\ObjectCopier' => $vendorDir . '/aws/aws-sdk-php/src/S3/ObjectCopier.php',
249
+ 'Aws\\S3\\ObjectUploader' => $vendorDir . '/aws/aws-sdk-php/src/S3/ObjectUploader.php',
250
+ 'Aws\\S3\\PermanentRedirectMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/S3/PermanentRedirectMiddleware.php',
251
+ 'Aws\\S3\\PostObject' => $vendorDir . '/aws/aws-sdk-php/src/S3/PostObject.php',
252
+ 'Aws\\S3\\PostObjectV4' => $vendorDir . '/aws/aws-sdk-php/src/S3/PostObjectV4.php',
253
+ 'Aws\\S3\\PutObjectUrlMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/S3/PutObjectUrlMiddleware.php',
254
+ 'Aws\\S3\\RegionalEndpoint\\Configuration' => $vendorDir . '/aws/aws-sdk-php/src/S3/RegionalEndpoint/Configuration.php',
255
+ 'Aws\\S3\\RegionalEndpoint\\ConfigurationInterface' => $vendorDir . '/aws/aws-sdk-php/src/S3/RegionalEndpoint/ConfigurationInterface.php',
256
+ 'Aws\\S3\\RegionalEndpoint\\ConfigurationProvider' => $vendorDir . '/aws/aws-sdk-php/src/S3/RegionalEndpoint/ConfigurationProvider.php',
257
+ 'Aws\\S3\\RegionalEndpoint\\Exception\\ConfigurationException' => $vendorDir . '/aws/aws-sdk-php/src/S3/RegionalEndpoint/Exception/ConfigurationException.php',
258
+ 'Aws\\S3\\RetryableMalformedResponseParser' => $vendorDir . '/aws/aws-sdk-php/src/S3/RetryableMalformedResponseParser.php',
259
+ 'Aws\\S3\\S3Client' => $vendorDir . '/aws/aws-sdk-php/src/S3/S3Client.php',
260
+ 'Aws\\S3\\S3ClientInterface' => $vendorDir . '/aws/aws-sdk-php/src/S3/S3ClientInterface.php',
261
+ 'Aws\\S3\\S3ClientTrait' => $vendorDir . '/aws/aws-sdk-php/src/S3/S3ClientTrait.php',
262
+ 'Aws\\S3\\S3EndpointMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/S3/S3EndpointMiddleware.php',
263
+ 'Aws\\S3\\S3MultiRegionClient' => $vendorDir . '/aws/aws-sdk-php/src/S3/S3MultiRegionClient.php',
264
+ 'Aws\\S3\\S3UriParser' => $vendorDir . '/aws/aws-sdk-php/src/S3/S3UriParser.php',
265
+ 'Aws\\S3\\SSECMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/S3/SSECMiddleware.php',
266
+ 'Aws\\S3\\StreamWrapper' => $vendorDir . '/aws/aws-sdk-php/src/S3/StreamWrapper.php',
267
+ 'Aws\\S3\\Transfer' => $vendorDir . '/aws/aws-sdk-php/src/S3/Transfer.php',
268
+ 'Aws\\S3\\UseArnRegion\\Configuration' => $vendorDir . '/aws/aws-sdk-php/src/S3/UseArnRegion/Configuration.php',
269
+ 'Aws\\S3\\UseArnRegion\\ConfigurationInterface' => $vendorDir . '/aws/aws-sdk-php/src/S3/UseArnRegion/ConfigurationInterface.php',
270
+ 'Aws\\S3\\UseArnRegion\\ConfigurationProvider' => $vendorDir . '/aws/aws-sdk-php/src/S3/UseArnRegion/ConfigurationProvider.php',
271
+ 'Aws\\S3\\UseArnRegion\\Exception\\ConfigurationException' => $vendorDir . '/aws/aws-sdk-php/src/S3/UseArnRegion/Exception/ConfigurationException.php',
272
+ 'Aws\\S3\\ValidateResponseChecksumParser' => $vendorDir . '/aws/aws-sdk-php/src/S3/ValidateResponseChecksumParser.php',
273
+ 'Aws\\Sdk' => $vendorDir . '/aws/aws-sdk-php/src/Sdk.php',
274
+ 'Aws\\Signature\\AnonymousSignature' => $vendorDir . '/aws/aws-sdk-php/src/Signature/AnonymousSignature.php',
275
+ 'Aws\\Signature\\S3SignatureV4' => $vendorDir . '/aws/aws-sdk-php/src/Signature/S3SignatureV4.php',
276
+ 'Aws\\Signature\\SignatureInterface' => $vendorDir . '/aws/aws-sdk-php/src/Signature/SignatureInterface.php',
277
+ 'Aws\\Signature\\SignatureProvider' => $vendorDir . '/aws/aws-sdk-php/src/Signature/SignatureProvider.php',
278
+ 'Aws\\Signature\\SignatureTrait' => $vendorDir . '/aws/aws-sdk-php/src/Signature/SignatureTrait.php',
279
+ 'Aws\\Signature\\SignatureV4' => $vendorDir . '/aws/aws-sdk-php/src/Signature/SignatureV4.php',
280
+ 'Aws\\StreamRequestPayloadMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/StreamRequestPayloadMiddleware.php',
281
+ 'Aws\\TraceMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/TraceMiddleware.php',
282
+ 'Aws\\Waiter' => $vendorDir . '/aws/aws-sdk-php/src/Waiter.php',
283
+ 'Aws\\WrappedHttpHandler' => $vendorDir . '/aws/aws-sdk-php/src/WrappedHttpHandler.php',
284
  'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
285
  'DivisionByZeroError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/DivisionByZeroError.php',
286
  'Error' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/Error.php',
577
  'GuzzleHttp\\TransferStats' => $vendorDir . '/guzzlehttp/guzzle/src/TransferStats.php',
578
  'GuzzleHttp\\UriTemplate' => $vendorDir . '/guzzlehttp/guzzle/src/UriTemplate.php',
579
  'GuzzleHttp\\Utils' => $vendorDir . '/guzzlehttp/guzzle/src/Utils.php',
580
+ 'JmesPath\\AstRuntime' => $vendorDir . '/mtdowling/jmespath.php/src/AstRuntime.php',
581
+ 'JmesPath\\CompilerRuntime' => $vendorDir . '/mtdowling/jmespath.php/src/CompilerRuntime.php',
582
+ 'JmesPath\\DebugRuntime' => $vendorDir . '/mtdowling/jmespath.php/src/DebugRuntime.php',
583
+ 'JmesPath\\Env' => $vendorDir . '/mtdowling/jmespath.php/src/Env.php',
584
+ 'JmesPath\\FnDispatcher' => $vendorDir . '/mtdowling/jmespath.php/src/FnDispatcher.php',
585
+ 'JmesPath\\Lexer' => $vendorDir . '/mtdowling/jmespath.php/src/Lexer.php',
586
+ 'JmesPath\\Parser' => $vendorDir . '/mtdowling/jmespath.php/src/Parser.php',
587
+ 'JmesPath\\SyntaxErrorException' => $vendorDir . '/mtdowling/jmespath.php/src/SyntaxErrorException.php',
588
+ 'JmesPath\\TreeCompiler' => $vendorDir . '/mtdowling/jmespath.php/src/TreeCompiler.php',
589
+ 'JmesPath\\TreeInterpreter' => $vendorDir . '/mtdowling/jmespath.php/src/TreeInterpreter.php',
590
+ 'JmesPath\\Utils' => $vendorDir . '/mtdowling/jmespath.php/src/Utils.php',
591
  'Monolog\\ErrorHandler' => $vendorDir . '/monolog/monolog/src/Monolog/ErrorHandler.php',
592
  'Monolog\\Formatter\\ChromePHPFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/ChromePHPFormatter.php',
593
  'Monolog\\Formatter\\ElasticaFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/ElasticaFormatter.php',
715
  'Symfony\\Polyfill\\Intl\\Idn\\Resources\\unidata\\DisallowedRanges' => $vendorDir . '/symfony/polyfill-intl-idn/Resources/unidata/DisallowedRanges.php',
716
  'Symfony\\Polyfill\\Intl\\Idn\\Resources\\unidata\\Regex' => $vendorDir . '/symfony/polyfill-intl-idn/Resources/unidata/Regex.php',
717
  'Symfony\\Polyfill\\Intl\\Normalizer\\Normalizer' => $vendorDir . '/symfony/polyfill-intl-normalizer/Normalizer.php',
718
+ 'Symfony\\Polyfill\\Mbstring\\Mbstring' => $vendorDir . '/symfony/polyfill-mbstring/Mbstring.php',
719
  'Symfony\\Polyfill\\Php70\\Php70' => $vendorDir . '/symfony/polyfill-php70/Php70.php',
720
  'Symfony\\Polyfill\\Php72\\Php72' => $vendorDir . '/symfony/polyfill-php72/Php72.php',
721
  'TypeError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/TypeError.php',
952
  'WPStaging\\Framework\\Utils\\Cache\\BufferedCache' => $baseDir . '/Framework/Utils/Cache/BufferedCache.php',
953
  'WPStaging\\Framework\\Utils\\Cache\\Cache' => $baseDir . '/Framework/Utils/Cache/Cache.php',
954
  'WPStaging\\Framework\\Utils\\Math' => $baseDir . '/Framework/Utils/Math.php',
 
955
  'WPStaging\\Framework\\Utils\\SlashMode' => $baseDir . '/Framework/Utils/SlashMode.php',
956
  'WPStaging\\Framework\\Utils\\Strings' => $baseDir . '/Framework/Utils/Strings.php',
957
  'WPStaging\\Framework\\Utils\\ThirdParty\\Glob' => $baseDir . '/Framework/Utils/ThirdParty/Glob.php',
vendor_wpstg/autoload/vendor.php CHANGED
@@ -7,8 +7,281 @@ $baseDir = dirname($vendorDir);
7
 
8
  return array(
9
  'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10
  'WPStaging\\Vendor\\ArithmeticError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/ArithmeticError.php',
11
  'WPStaging\\Vendor\\AssertionError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/AssertionError.php',
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12
  'WPStaging\\Vendor\\DivisionByZeroError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/DivisionByZeroError.php',
13
  'WPStaging\\Vendor\\Error' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/Error.php',
14
  'WPStaging\\Vendor\\Firebase\\JWT\\BeforeValidException' => $vendorDir . '/firebase/php-jwt/src/BeforeValidException.php',
@@ -283,6 +556,17 @@ return array(
283
  'WPStaging\\Vendor\\GuzzleHttp\\TransferStats' => $vendorDir . '/guzzlehttp/guzzle/src/TransferStats.php',
284
  'WPStaging\\Vendor\\GuzzleHttp\\UriTemplate' => $vendorDir . '/guzzlehttp/guzzle/src/UriTemplate.php',
285
  'WPStaging\\Vendor\\GuzzleHttp\\Utils' => $vendorDir . '/guzzlehttp/guzzle/src/Utils.php',
 
 
 
 
 
 
 
 
 
 
 
286
  'WPStaging\\Vendor\\Monolog\\ErrorHandler' => $vendorDir . '/monolog/monolog/src/Monolog/ErrorHandler.php',
287
  'WPStaging\\Vendor\\Monolog\\Formatter\\ChromePHPFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/ChromePHPFormatter.php',
288
  'WPStaging\\Vendor\\Monolog\\Formatter\\ElasticaFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/ElasticaFormatter.php',
@@ -410,6 +694,7 @@ return array(
410
  'WPStaging\\Vendor\\Symfony\\Polyfill\\Intl\\Idn\\Resources\\unidata\\DisallowedRanges' => $vendorDir . '/symfony/polyfill-intl-idn/Resources/unidata/DisallowedRanges.php',
411
  'WPStaging\\Vendor\\Symfony\\Polyfill\\Intl\\Idn\\Resources\\unidata\\Regex' => $vendorDir . '/symfony/polyfill-intl-idn/Resources/unidata/Regex.php',
412
  'WPStaging\\Vendor\\Symfony\\Polyfill\\Intl\\Normalizer\\Normalizer' => $vendorDir . '/symfony/polyfill-intl-normalizer/Normalizer.php',
 
413
  'WPStaging\\Vendor\\Symfony\\Polyfill\\Php70\\Php70' => $vendorDir . '/symfony/polyfill-php70/Php70.php',
414
  'WPStaging\\Vendor\\Symfony\\Polyfill\\Php72\\Php72' => $vendorDir . '/symfony/polyfill-php72/Php72.php',
415
  'WPStaging\\Vendor\\TypeError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/TypeError.php',
7
 
8
  return array(
9
  'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
10
+ 'WPStaging\\Vendor\\AWS\\CRT\\Auth\\AwsCredentials' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/Auth/AwsCredentials.php',
11
+ 'WPStaging\\Vendor\\AWS\\CRT\\Auth\\CredentialsProvider' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/Auth/CredentialsProvider.php',
12
+ 'WPStaging\\Vendor\\AWS\\CRT\\Auth\\Signable' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/Auth/Signable.php',
13
+ 'WPStaging\\Vendor\\AWS\\CRT\\Auth\\SignatureType' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/Auth/SignatureType.php',
14
+ 'WPStaging\\Vendor\\AWS\\CRT\\Auth\\SignedBodyHeaderType' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/Auth/SignedBodyHeaderType.php',
15
+ 'WPStaging\\Vendor\\AWS\\CRT\\Auth\\Signing' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/Auth/Signing.php',
16
+ 'WPStaging\\Vendor\\AWS\\CRT\\Auth\\SigningAlgorithm' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/Auth/SigningAlgorithm.php',
17
+ 'WPStaging\\Vendor\\AWS\\CRT\\Auth\\SigningConfigAWS' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/Auth/SigningConfigAWS.php',
18
+ 'WPStaging\\Vendor\\AWS\\CRT\\Auth\\SigningResult' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/Auth/SigningResult.php',
19
+ 'WPStaging\\Vendor\\AWS\\CRT\\Auth\\StaticCredentialsProvider' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/Auth/StaticCredentialsProvider.php',
20
+ 'WPStaging\\Vendor\\AWS\\CRT\\CRT' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/CRT.php',
21
+ 'WPStaging\\Vendor\\AWS\\CRT\\HTTP\\Headers' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/HTTP/Headers.php',
22
+ 'WPStaging\\Vendor\\AWS\\CRT\\HTTP\\Message' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/HTTP/Message.php',
23
+ 'WPStaging\\Vendor\\AWS\\CRT\\HTTP\\Request' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/HTTP/Request.php',
24
+ 'WPStaging\\Vendor\\AWS\\CRT\\HTTP\\Response' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/HTTP/Response.php',
25
+ 'WPStaging\\Vendor\\AWS\\CRT\\IO\\EventLoopGroup' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/IO/EventLoopGroup.php',
26
+ 'WPStaging\\Vendor\\AWS\\CRT\\IO\\InputStream' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/IO/InputStream.php',
27
+ 'WPStaging\\Vendor\\AWS\\CRT\\Internal\\Encoding' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/Internal/Encoding.php',
28
+ 'WPStaging\\Vendor\\AWS\\CRT\\Internal\\Extension' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/Internal/Extension.php',
29
+ 'WPStaging\\Vendor\\AWS\\CRT\\Log' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/Log.php',
30
+ 'WPStaging\\Vendor\\AWS\\CRT\\NativeResource' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/NativeResource.php',
31
+ 'WPStaging\\Vendor\\AWS\\CRT\\OptionValue' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/Options.php',
32
+ 'WPStaging\\Vendor\\AWS\\CRT\\Options' => $vendorDir . '/aws/aws-crt-php/src/AWS/CRT/Options.php',
33
  'WPStaging\\Vendor\\ArithmeticError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/ArithmeticError.php',
34
  'WPStaging\\Vendor\\AssertionError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/AssertionError.php',
35
+ 'WPStaging\\Vendor\\Aws\\AbstractConfigurationProvider' => $vendorDir . '/aws/aws-sdk-php/src/AbstractConfigurationProvider.php',
36
+ 'WPStaging\\Vendor\\Aws\\Api\\AbstractModel' => $vendorDir . '/aws/aws-sdk-php/src/Api/AbstractModel.php',
37
+ 'WPStaging\\Vendor\\Aws\\Api\\ApiProvider' => $vendorDir . '/aws/aws-sdk-php/src/Api/ApiProvider.php',
38
+ 'WPStaging\\Vendor\\Aws\\Api\\DateTimeResult' => $vendorDir . '/aws/aws-sdk-php/src/Api/DateTimeResult.php',
39
+ 'WPStaging\\Vendor\\Aws\\Api\\DocModel' => $vendorDir . '/aws/aws-sdk-php/src/Api/DocModel.php',
40
+ 'WPStaging\\Vendor\\Aws\\Api\\ErrorParser\\AbstractErrorParser' => $vendorDir . '/aws/aws-sdk-php/src/Api/ErrorParser/AbstractErrorParser.php',
41
+ 'WPStaging\\Vendor\\Aws\\Api\\ErrorParser\\JsonParserTrait' => $vendorDir . '/aws/aws-sdk-php/src/Api/ErrorParser/JsonParserTrait.php',
42
+ 'WPStaging\\Vendor\\Aws\\Api\\ErrorParser\\JsonRpcErrorParser' => $vendorDir . '/aws/aws-sdk-php/src/Api/ErrorParser/JsonRpcErrorParser.php',
43
+ 'WPStaging\\Vendor\\Aws\\Api\\ErrorParser\\RestJsonErrorParser' => $vendorDir . '/aws/aws-sdk-php/src/Api/ErrorParser/RestJsonErrorParser.php',
44
+ 'WPStaging\\Vendor\\Aws\\Api\\ErrorParser\\XmlErrorParser' => $vendorDir . '/aws/aws-sdk-php/src/Api/ErrorParser/XmlErrorParser.php',
45
+ 'WPStaging\\Vendor\\Aws\\Api\\ListShape' => $vendorDir . '/aws/aws-sdk-php/src/Api/ListShape.php',
46
+ 'WPStaging\\Vendor\\Aws\\Api\\MapShape' => $vendorDir . '/aws/aws-sdk-php/src/Api/MapShape.php',
47
+ 'WPStaging\\Vendor\\Aws\\Api\\Operation' => $vendorDir . '/aws/aws-sdk-php/src/Api/Operation.php',
48
+ 'WPStaging\\Vendor\\Aws\\Api\\Parser\\AbstractParser' => $vendorDir . '/aws/aws-sdk-php/src/Api/Parser/AbstractParser.php',
49
+ 'WPStaging\\Vendor\\Aws\\Api\\Parser\\AbstractRestParser' => $vendorDir . '/aws/aws-sdk-php/src/Api/Parser/AbstractRestParser.php',
50
+ 'WPStaging\\Vendor\\Aws\\Api\\Parser\\Crc32ValidatingParser' => $vendorDir . '/aws/aws-sdk-php/src/Api/Parser/Crc32ValidatingParser.php',
51
+ 'WPStaging\\Vendor\\Aws\\Api\\Parser\\DecodingEventStreamIterator' => $vendorDir . '/aws/aws-sdk-php/src/Api/Parser/DecodingEventStreamIterator.php',
52
+ 'WPStaging\\Vendor\\Aws\\Api\\Parser\\EventParsingIterator' => $vendorDir . '/aws/aws-sdk-php/src/Api/Parser/EventParsingIterator.php',
53
+ 'WPStaging\\Vendor\\Aws\\Api\\Parser\\Exception\\ParserException' => $vendorDir . '/aws/aws-sdk-php/src/Api/Parser/Exception/ParserException.php',
54
+ 'WPStaging\\Vendor\\Aws\\Api\\Parser\\JsonParser' => $vendorDir . '/aws/aws-sdk-php/src/Api/Parser/JsonParser.php',
55
+ 'WPStaging\\Vendor\\Aws\\Api\\Parser\\JsonRpcParser' => $vendorDir . '/aws/aws-sdk-php/src/Api/Parser/JsonRpcParser.php',
56
+ 'WPStaging\\Vendor\\Aws\\Api\\Parser\\MetadataParserTrait' => $vendorDir . '/aws/aws-sdk-php/src/Api/Parser/MetadataParserTrait.php',
57
+ 'WPStaging\\Vendor\\Aws\\Api\\Parser\\PayloadParserTrait' => $vendorDir . '/aws/aws-sdk-php/src/Api/Parser/PayloadParserTrait.php',
58
+ 'WPStaging\\Vendor\\Aws\\Api\\Parser\\QueryParser' => $vendorDir . '/aws/aws-sdk-php/src/Api/Parser/QueryParser.php',
59
+ 'WPStaging\\Vendor\\Aws\\Api\\Parser\\RestJsonParser' => $vendorDir . '/aws/aws-sdk-php/src/Api/Parser/RestJsonParser.php',
60
+ 'WPStaging\\Vendor\\Aws\\Api\\Parser\\RestXmlParser' => $vendorDir . '/aws/aws-sdk-php/src/Api/Parser/RestXmlParser.php',
61
+ 'WPStaging\\Vendor\\Aws\\Api\\Parser\\XmlParser' => $vendorDir . '/aws/aws-sdk-php/src/Api/Parser/XmlParser.php',
62
+ 'WPStaging\\Vendor\\Aws\\Api\\Serializer\\Ec2ParamBuilder' => $vendorDir . '/aws/aws-sdk-php/src/Api/Serializer/Ec2ParamBuilder.php',
63
+ 'WPStaging\\Vendor\\Aws\\Api\\Serializer\\JsonBody' => $vendorDir . '/aws/aws-sdk-php/src/Api/Serializer/JsonBody.php',
64
+ 'WPStaging\\Vendor\\Aws\\Api\\Serializer\\JsonRpcSerializer' => $vendorDir . '/aws/aws-sdk-php/src/Api/Serializer/JsonRpcSerializer.php',
65
+ 'WPStaging\\Vendor\\Aws\\Api\\Serializer\\QueryParamBuilder' => $vendorDir . '/aws/aws-sdk-php/src/Api/Serializer/QueryParamBuilder.php',
66
+ 'WPStaging\\Vendor\\Aws\\Api\\Serializer\\QuerySerializer' => $vendorDir . '/aws/aws-sdk-php/src/Api/Serializer/QuerySerializer.php',
67
+ 'WPStaging\\Vendor\\Aws\\Api\\Serializer\\RestJsonSerializer' => $vendorDir . '/aws/aws-sdk-php/src/Api/Serializer/RestJsonSerializer.php',
68
+ 'WPStaging\\Vendor\\Aws\\Api\\Serializer\\RestSerializer' => $vendorDir . '/aws/aws-sdk-php/src/Api/Serializer/RestSerializer.php',
69
+ 'WPStaging\\Vendor\\Aws\\Api\\Serializer\\RestXmlSerializer' => $vendorDir . '/aws/aws-sdk-php/src/Api/Serializer/RestXmlSerializer.php',
70
+ 'WPStaging\\Vendor\\Aws\\Api\\Serializer\\XmlBody' => $vendorDir . '/aws/aws-sdk-php/src/Api/Serializer/XmlBody.php',
71
+ 'WPStaging\\Vendor\\Aws\\Api\\Service' => $vendorDir . '/aws/aws-sdk-php/src/Api/Service.php',
72
+ 'WPStaging\\Vendor\\Aws\\Api\\Shape' => $vendorDir . '/aws/aws-sdk-php/src/Api/Shape.php',
73
+ 'WPStaging\\Vendor\\Aws\\Api\\ShapeMap' => $vendorDir . '/aws/aws-sdk-php/src/Api/ShapeMap.php',
74
+ 'WPStaging\\Vendor\\Aws\\Api\\StructureShape' => $vendorDir . '/aws/aws-sdk-php/src/Api/StructureShape.php',
75
+ 'WPStaging\\Vendor\\Aws\\Api\\TimestampShape' => $vendorDir . '/aws/aws-sdk-php/src/Api/TimestampShape.php',
76
+ 'WPStaging\\Vendor\\Aws\\Api\\Validator' => $vendorDir . '/aws/aws-sdk-php/src/Api/Validator.php',
77
+ 'WPStaging\\Vendor\\Aws\\Arn\\AccessPointArn' => $vendorDir . '/aws/aws-sdk-php/src/Arn/AccessPointArn.php',
78
+ 'WPStaging\\Vendor\\Aws\\Arn\\AccessPointArnInterface' => $vendorDir . '/aws/aws-sdk-php/src/Arn/AccessPointArnInterface.php',
79
+ 'WPStaging\\Vendor\\Aws\\Arn\\Arn' => $vendorDir . '/aws/aws-sdk-php/src/Arn/Arn.php',
80
+ 'WPStaging\\Vendor\\Aws\\Arn\\ArnInterface' => $vendorDir . '/aws/aws-sdk-php/src/Arn/ArnInterface.php',
81
+ 'WPStaging\\Vendor\\Aws\\Arn\\ArnParser' => $vendorDir . '/aws/aws-sdk-php/src/Arn/ArnParser.php',
82
+ 'WPStaging\\Vendor\\Aws\\Arn\\Exception\\InvalidArnException' => $vendorDir . '/aws/aws-sdk-php/src/Arn/Exception/InvalidArnException.php',
83
+ 'WPStaging\\Vendor\\Aws\\Arn\\ObjectLambdaAccessPointArn' => $vendorDir . '/aws/aws-sdk-php/src/Arn/ObjectLambdaAccessPointArn.php',
84
+ 'WPStaging\\Vendor\\Aws\\Arn\\ResourceTypeAndIdTrait' => $vendorDir . '/aws/aws-sdk-php/src/Arn/ResourceTypeAndIdTrait.php',
85
+ 'WPStaging\\Vendor\\Aws\\Arn\\S3\\AccessPointArn' => $vendorDir . '/aws/aws-sdk-php/src/Arn/S3/AccessPointArn.php',
86
+ 'WPStaging\\Vendor\\Aws\\Arn\\S3\\BucketArnInterface' => $vendorDir . '/aws/aws-sdk-php/src/Arn/S3/BucketArnInterface.php',
87
+ 'WPStaging\\Vendor\\Aws\\Arn\\S3\\MultiRegionAccessPointArn' => $vendorDir . '/aws/aws-sdk-php/src/Arn/S3/MultiRegionAccessPointArn.php',
88
+ 'WPStaging\\Vendor\\Aws\\Arn\\S3\\OutpostsAccessPointArn' => $vendorDir . '/aws/aws-sdk-php/src/Arn/S3/OutpostsAccessPointArn.php',
89
+ 'WPStaging\\Vendor\\Aws\\Arn\\S3\\OutpostsArnInterface' => $vendorDir . '/aws/aws-sdk-php/src/Arn/S3/OutpostsArnInterface.php',
90
+ 'WPStaging\\Vendor\\Aws\\Arn\\S3\\OutpostsBucketArn' => $vendorDir . '/aws/aws-sdk-php/src/Arn/S3/OutpostsBucketArn.php',
91
+ 'WPStaging\\Vendor\\Aws\\AwsClient' => $vendorDir . '/aws/aws-sdk-php/src/AwsClient.php',
92
+ 'WPStaging\\Vendor\\Aws\\AwsClientInterface' => $vendorDir . '/aws/aws-sdk-php/src/AwsClientInterface.php',
93
+ 'WPStaging\\Vendor\\Aws\\AwsClientTrait' => $vendorDir . '/aws/aws-sdk-php/src/AwsClientTrait.php',
94
+ 'WPStaging\\Vendor\\Aws\\CacheInterface' => $vendorDir . '/aws/aws-sdk-php/src/CacheInterface.php',
95
+ 'WPStaging\\Vendor\\Aws\\ClientResolver' => $vendorDir . '/aws/aws-sdk-php/src/ClientResolver.php',
96
+ 'WPStaging\\Vendor\\Aws\\ClientSideMonitoring\\AbstractMonitoringMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/ClientSideMonitoring/AbstractMonitoringMiddleware.php',
97
+ 'WPStaging\\Vendor\\Aws\\ClientSideMonitoring\\ApiCallAttemptMonitoringMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/ClientSideMonitoring/ApiCallAttemptMonitoringMiddleware.php',
98
+ 'WPStaging\\Vendor\\Aws\\ClientSideMonitoring\\ApiCallMonitoringMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/ClientSideMonitoring/ApiCallMonitoringMiddleware.php',
99
+ 'WPStaging\\Vendor\\Aws\\ClientSideMonitoring\\Configuration' => $vendorDir . '/aws/aws-sdk-php/src/ClientSideMonitoring/Configuration.php',
100
+ 'WPStaging\\Vendor\\Aws\\ClientSideMonitoring\\ConfigurationInterface' => $vendorDir . '/aws/aws-sdk-php/src/ClientSideMonitoring/ConfigurationInterface.php',
101
+ 'WPStaging\\Vendor\\Aws\\ClientSideMonitoring\\ConfigurationProvider' => $vendorDir . '/aws/aws-sdk-php/src/ClientSideMonitoring/ConfigurationProvider.php',
102
+ 'WPStaging\\Vendor\\Aws\\ClientSideMonitoring\\Exception\\ConfigurationException' => $vendorDir . '/aws/aws-sdk-php/src/ClientSideMonitoring/Exception/ConfigurationException.php',
103
+ 'WPStaging\\Vendor\\Aws\\ClientSideMonitoring\\MonitoringMiddlewareInterface' => $vendorDir . '/aws/aws-sdk-php/src/ClientSideMonitoring/MonitoringMiddlewareInterface.php',
104
+ 'WPStaging\\Vendor\\Aws\\CloudFront\\CloudFrontClient' => $vendorDir . '/aws/aws-sdk-php/src/CloudFront/CloudFrontClient.php',
105
+ 'WPStaging\\Vendor\\Aws\\CloudFront\\CookieSigner' => $vendorDir . '/aws/aws-sdk-php/src/CloudFront/CookieSigner.php',
106
+ 'WPStaging\\Vendor\\Aws\\CloudFront\\Exception\\CloudFrontException' => $vendorDir . '/aws/aws-sdk-php/src/CloudFront/Exception/CloudFrontException.php',
107
+ 'WPStaging\\Vendor\\Aws\\CloudFront\\Signer' => $vendorDir . '/aws/aws-sdk-php/src/CloudFront/Signer.php',
108
+ 'WPStaging\\Vendor\\Aws\\CloudFront\\UrlSigner' => $vendorDir . '/aws/aws-sdk-php/src/CloudFront/UrlSigner.php',
109
+ 'WPStaging\\Vendor\\Aws\\Command' => $vendorDir . '/aws/aws-sdk-php/src/Command.php',
110
+ 'WPStaging\\Vendor\\Aws\\CommandInterface' => $vendorDir . '/aws/aws-sdk-php/src/CommandInterface.php',
111
+ 'WPStaging\\Vendor\\Aws\\CommandPool' => $vendorDir . '/aws/aws-sdk-php/src/CommandPool.php',
112
+ 'WPStaging\\Vendor\\Aws\\ConfigurationProviderInterface' => $vendorDir . '/aws/aws-sdk-php/src/ConfigurationProviderInterface.php',
113
+ 'WPStaging\\Vendor\\Aws\\Credentials\\AssumeRoleCredentialProvider' => $vendorDir . '/aws/aws-sdk-php/src/Credentials/AssumeRoleCredentialProvider.php',
114
+ 'WPStaging\\Vendor\\Aws\\Credentials\\AssumeRoleWithWebIdentityCredentialProvider' => $vendorDir . '/aws/aws-sdk-php/src/Credentials/AssumeRoleWithWebIdentityCredentialProvider.php',
115
+ 'WPStaging\\Vendor\\Aws\\Credentials\\CredentialProvider' => $vendorDir . '/aws/aws-sdk-php/src/Credentials/CredentialProvider.php',
116
+ 'WPStaging\\Vendor\\Aws\\Credentials\\Credentials' => $vendorDir . '/aws/aws-sdk-php/src/Credentials/Credentials.php',
117
+ 'WPStaging\\Vendor\\Aws\\Credentials\\CredentialsInterface' => $vendorDir . '/aws/aws-sdk-php/src/Credentials/CredentialsInterface.php',
118
+ 'WPStaging\\Vendor\\Aws\\Credentials\\EcsCredentialProvider' => $vendorDir . '/aws/aws-sdk-php/src/Credentials/EcsCredentialProvider.php',
119
+ 'WPStaging\\Vendor\\Aws\\Credentials\\InstanceProfileProvider' => $vendorDir . '/aws/aws-sdk-php/src/Credentials/InstanceProfileProvider.php',
120
+ 'WPStaging\\Vendor\\Aws\\Crypto\\AbstractCryptoClient' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/AbstractCryptoClient.php',
121
+ 'WPStaging\\Vendor\\Aws\\Crypto\\AbstractCryptoClientV2' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/AbstractCryptoClientV2.php',
122
+ 'WPStaging\\Vendor\\Aws\\Crypto\\AesDecryptingStream' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/AesDecryptingStream.php',
123
+ 'WPStaging\\Vendor\\Aws\\Crypto\\AesEncryptingStream' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/AesEncryptingStream.php',
124
+ 'WPStaging\\Vendor\\Aws\\Crypto\\AesGcmDecryptingStream' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/AesGcmDecryptingStream.php',
125
+ 'WPStaging\\Vendor\\Aws\\Crypto\\AesGcmEncryptingStream' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/AesGcmEncryptingStream.php',
126
+ 'WPStaging\\Vendor\\Aws\\Crypto\\AesStreamInterface' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/AesStreamInterface.php',
127
+ 'WPStaging\\Vendor\\Aws\\Crypto\\AesStreamInterfaceV2' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/AesStreamInterfaceV2.php',
128
+ 'WPStaging\\Vendor\\Aws\\Crypto\\Cipher\\Cbc' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/Cipher/Cbc.php',
129
+ 'WPStaging\\Vendor\\Aws\\Crypto\\Cipher\\CipherBuilderTrait' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/Cipher/CipherBuilderTrait.php',
130
+ 'WPStaging\\Vendor\\Aws\\Crypto\\Cipher\\CipherMethod' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/Cipher/CipherMethod.php',
131
+ 'WPStaging\\Vendor\\Aws\\Crypto\\DecryptionTrait' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/DecryptionTrait.php',
132
+ 'WPStaging\\Vendor\\Aws\\Crypto\\DecryptionTraitV2' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/DecryptionTraitV2.php',
133
+ 'WPStaging\\Vendor\\Aws\\Crypto\\EncryptionTrait' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/EncryptionTrait.php',
134
+ 'WPStaging\\Vendor\\Aws\\Crypto\\EncryptionTraitV2' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/EncryptionTraitV2.php',
135
+ 'WPStaging\\Vendor\\Aws\\Crypto\\KmsMaterialsProvider' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/KmsMaterialsProvider.php',
136
+ 'WPStaging\\Vendor\\Aws\\Crypto\\KmsMaterialsProviderV2' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/KmsMaterialsProviderV2.php',
137
+ 'WPStaging\\Vendor\\Aws\\Crypto\\MaterialsProvider' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/MaterialsProvider.php',
138
+ 'WPStaging\\Vendor\\Aws\\Crypto\\MaterialsProviderInterface' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/MaterialsProviderInterface.php',
139
+ 'WPStaging\\Vendor\\Aws\\Crypto\\MaterialsProviderInterfaceV2' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/MaterialsProviderInterfaceV2.php',
140
+ 'WPStaging\\Vendor\\Aws\\Crypto\\MaterialsProviderV2' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/MaterialsProviderV2.php',
141
+ 'WPStaging\\Vendor\\Aws\\Crypto\\MetadataEnvelope' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/MetadataEnvelope.php',
142
+ 'WPStaging\\Vendor\\Aws\\Crypto\\MetadataStrategyInterface' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/MetadataStrategyInterface.php',
143
+ 'WPStaging\\Vendor\\Aws\\Crypto\\Polyfill\\AesGcm' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/Polyfill/AesGcm.php',
144
+ 'WPStaging\\Vendor\\Aws\\Crypto\\Polyfill\\ByteArray' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/Polyfill/ByteArray.php',
145
+ 'WPStaging\\Vendor\\Aws\\Crypto\\Polyfill\\Gmac' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/Polyfill/Gmac.php',
146
+ 'WPStaging\\Vendor\\Aws\\Crypto\\Polyfill\\Key' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/Polyfill/Key.php',
147
+ 'WPStaging\\Vendor\\Aws\\Crypto\\Polyfill\\NeedsTrait' => $vendorDir . '/aws/aws-sdk-php/src/Crypto/Polyfill/NeedsTrait.php',
148
+ 'WPStaging\\Vendor\\Aws\\DefaultsMode\\Configuration' => $vendorDir . '/aws/aws-sdk-php/src/DefaultsMode/Configuration.php',
149
+ 'WPStaging\\Vendor\\Aws\\DefaultsMode\\ConfigurationInterface' => $vendorDir . '/aws/aws-sdk-php/src/DefaultsMode/ConfigurationInterface.php',
150
+ 'WPStaging\\Vendor\\Aws\\DefaultsMode\\ConfigurationProvider' => $vendorDir . '/aws/aws-sdk-php/src/DefaultsMode/ConfigurationProvider.php',
151
+ 'WPStaging\\Vendor\\Aws\\DefaultsMode\\Exception\\ConfigurationException' => $vendorDir . '/aws/aws-sdk-php/src/DefaultsMode/Exception/ConfigurationException.php',
152
+ 'WPStaging\\Vendor\\Aws\\DoctrineCacheAdapter' => $vendorDir . '/aws/aws-sdk-php/src/DoctrineCacheAdapter.php',
153
+ 'WPStaging\\Vendor\\Aws\\EndpointDiscovery\\Configuration' => $vendorDir . '/aws/aws-sdk-php/src/EndpointDiscovery/Configuration.php',
154
+ 'WPStaging\\Vendor\\Aws\\EndpointDiscovery\\ConfigurationInterface' => $vendorDir . '/aws/aws-sdk-php/src/EndpointDiscovery/ConfigurationInterface.php',
155
+ 'WPStaging\\Vendor\\Aws\\EndpointDiscovery\\ConfigurationProvider' => $vendorDir . '/aws/aws-sdk-php/src/EndpointDiscovery/ConfigurationProvider.php',
156
+ 'WPStaging\\Vendor\\Aws\\EndpointDiscovery\\EndpointDiscoveryMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/EndpointDiscovery/EndpointDiscoveryMiddleware.php',
157
+ 'WPStaging\\Vendor\\Aws\\EndpointDiscovery\\EndpointList' => $vendorDir . '/aws/aws-sdk-php/src/EndpointDiscovery/EndpointList.php',
158
+ 'WPStaging\\Vendor\\Aws\\EndpointDiscovery\\Exception\\ConfigurationException' => $vendorDir . '/aws/aws-sdk-php/src/EndpointDiscovery/Exception/ConfigurationException.php',
159
+ 'WPStaging\\Vendor\\Aws\\EndpointParameterMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/EndpointParameterMiddleware.php',
160
+ 'WPStaging\\Vendor\\Aws\\Endpoint\\EndpointProvider' => $vendorDir . '/aws/aws-sdk-php/src/Endpoint/EndpointProvider.php',
161
+ 'WPStaging\\Vendor\\Aws\\Endpoint\\Partition' => $vendorDir . '/aws/aws-sdk-php/src/Endpoint/Partition.php',
162
+ 'WPStaging\\Vendor\\Aws\\Endpoint\\PartitionEndpointProvider' => $vendorDir . '/aws/aws-sdk-php/src/Endpoint/PartitionEndpointProvider.php',
163
+ 'WPStaging\\Vendor\\Aws\\Endpoint\\PartitionInterface' => $vendorDir . '/aws/aws-sdk-php/src/Endpoint/PartitionInterface.php',
164
+ 'WPStaging\\Vendor\\Aws\\Endpoint\\PatternEndpointProvider' => $vendorDir . '/aws/aws-sdk-php/src/Endpoint/PatternEndpointProvider.php',
165
+ 'WPStaging\\Vendor\\Aws\\Endpoint\\UseDualstackEndpoint\\Configuration' => $vendorDir . '/aws/aws-sdk-php/src/Endpoint/UseDualstackEndpoint/Configuration.php',
166
+ 'WPStaging\\Vendor\\Aws\\Endpoint\\UseDualstackEndpoint\\ConfigurationInterface' => $vendorDir . '/aws/aws-sdk-php/src/Endpoint/UseDualstackEndpoint/ConfigurationInterface.php',
167
+ 'WPStaging\\Vendor\\Aws\\Endpoint\\UseDualstackEndpoint\\ConfigurationProvider' => $vendorDir . '/aws/aws-sdk-php/src/Endpoint/UseDualstackEndpoint/ConfigurationProvider.php',
168
+ 'WPStaging\\Vendor\\Aws\\Endpoint\\UseDualstackEndpoint\\Exception\\ConfigurationException' => $vendorDir . '/aws/aws-sdk-php/src/Endpoint/UseDualstackEndpoint/Exception/ConfigurationException.php',
169
+ 'WPStaging\\Vendor\\Aws\\Endpoint\\UseFipsEndpoint\\Configuration' => $vendorDir . '/aws/aws-sdk-php/src/Endpoint/UseFipsEndpoint/Configuration.php',
170
+ 'WPStaging\\Vendor\\Aws\\Endpoint\\UseFipsEndpoint\\ConfigurationInterface' => $vendorDir . '/aws/aws-sdk-php/src/Endpoint/UseFipsEndpoint/ConfigurationInterface.php',
171
+ 'WPStaging\\Vendor\\Aws\\Endpoint\\UseFipsEndpoint\\ConfigurationProvider' => $vendorDir . '/aws/aws-sdk-php/src/Endpoint/UseFipsEndpoint/ConfigurationProvider.php',
172
+ 'WPStaging\\Vendor\\Aws\\Endpoint\\UseFipsEndpoint\\Exception\\ConfigurationException' => $vendorDir . '/aws/aws-sdk-php/src/Endpoint/UseFipsEndpoint/Exception/ConfigurationException.php',
173
+ 'WPStaging\\Vendor\\Aws\\Exception\\AwsException' => $vendorDir . '/aws/aws-sdk-php/src/Exception/AwsException.php',
174
+ 'WPStaging\\Vendor\\Aws\\Exception\\CommonRuntimeException' => $vendorDir . '/aws/aws-sdk-php/src/Exception/CommonRuntimeException.php',
175
+ 'WPStaging\\Vendor\\Aws\\Exception\\CouldNotCreateChecksumException' => $vendorDir . '/aws/aws-sdk-php/src/Exception/CouldNotCreateChecksumException.php',
176
+ 'WPStaging\\Vendor\\Aws\\Exception\\CredentialsException' => $vendorDir . '/aws/aws-sdk-php/src/Exception/CredentialsException.php',
177
+ 'WPStaging\\Vendor\\Aws\\Exception\\CryptoException' => $vendorDir . '/aws/aws-sdk-php/src/Exception/CryptoException.php',
178
+ 'WPStaging\\Vendor\\Aws\\Exception\\CryptoPolyfillException' => $vendorDir . '/aws/aws-sdk-php/src/Exception/CryptoPolyfillException.php',
179
+ 'WPStaging\\Vendor\\Aws\\Exception\\EventStreamDataException' => $vendorDir . '/aws/aws-sdk-php/src/Exception/EventStreamDataException.php',
180
+ 'WPStaging\\Vendor\\Aws\\Exception\\IncalculablePayloadException' => $vendorDir . '/aws/aws-sdk-php/src/Exception/IncalculablePayloadException.php',
181
+ 'WPStaging\\Vendor\\Aws\\Exception\\InvalidJsonException' => $vendorDir . '/aws/aws-sdk-php/src/Exception/InvalidJsonException.php',
182
+ 'WPStaging\\Vendor\\Aws\\Exception\\InvalidRegionException' => $vendorDir . '/aws/aws-sdk-php/src/Exception/InvalidRegionException.php',
183
+ 'WPStaging\\Vendor\\Aws\\Exception\\MultipartUploadException' => $vendorDir . '/aws/aws-sdk-php/src/Exception/MultipartUploadException.php',
184
+ 'WPStaging\\Vendor\\Aws\\Exception\\UnresolvedApiException' => $vendorDir . '/aws/aws-sdk-php/src/Exception/UnresolvedApiException.php',
185
+ 'WPStaging\\Vendor\\Aws\\Exception\\UnresolvedEndpointException' => $vendorDir . '/aws/aws-sdk-php/src/Exception/UnresolvedEndpointException.php',
186
+ 'WPStaging\\Vendor\\Aws\\Exception\\UnresolvedSignatureException' => $vendorDir . '/aws/aws-sdk-php/src/Exception/UnresolvedSignatureException.php',
187
+ 'WPStaging\\Vendor\\Aws\\HandlerList' => $vendorDir . '/aws/aws-sdk-php/src/HandlerList.php',
188
+ 'WPStaging\\Vendor\\Aws\\Handler\\GuzzleV5\\GuzzleHandler' => $vendorDir . '/aws/aws-sdk-php/src/Handler/GuzzleV5/GuzzleHandler.php',
189
+ 'WPStaging\\Vendor\\Aws\\Handler\\GuzzleV5\\GuzzleStream' => $vendorDir . '/aws/aws-sdk-php/src/Handler/GuzzleV5/GuzzleStream.php',
190
+ 'WPStaging\\Vendor\\Aws\\Handler\\GuzzleV5\\PsrStream' => $vendorDir . '/aws/aws-sdk-php/src/Handler/GuzzleV5/PsrStream.php',
191
+ 'WPStaging\\Vendor\\Aws\\Handler\\GuzzleV6\\GuzzleHandler' => $vendorDir . '/aws/aws-sdk-php/src/Handler/GuzzleV6/GuzzleHandler.php',
192
+ 'WPStaging\\Vendor\\Aws\\HasDataTrait' => $vendorDir . '/aws/aws-sdk-php/src/HasDataTrait.php',
193
+ 'WPStaging\\Vendor\\Aws\\HasMonitoringEventsTrait' => $vendorDir . '/aws/aws-sdk-php/src/HasMonitoringEventsTrait.php',
194
+ 'WPStaging\\Vendor\\Aws\\HashInterface' => $vendorDir . '/aws/aws-sdk-php/src/HashInterface.php',
195
+ 'WPStaging\\Vendor\\Aws\\HashingStream' => $vendorDir . '/aws/aws-sdk-php/src/HashingStream.php',
196
+ 'WPStaging\\Vendor\\Aws\\History' => $vendorDir . '/aws/aws-sdk-php/src/History.php',
197
+ 'WPStaging\\Vendor\\Aws\\IdempotencyTokenMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/IdempotencyTokenMiddleware.php',
198
+ 'WPStaging\\Vendor\\Aws\\InputValidationMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/InputValidationMiddleware.php',
199
+ 'WPStaging\\Vendor\\Aws\\JsonCompiler' => $vendorDir . '/aws/aws-sdk-php/src/JsonCompiler.php',
200
+ 'WPStaging\\Vendor\\Aws\\LruArrayCache' => $vendorDir . '/aws/aws-sdk-php/src/LruArrayCache.php',
201
+ 'WPStaging\\Vendor\\Aws\\Middleware' => $vendorDir . '/aws/aws-sdk-php/src/Middleware.php',
202
+ 'WPStaging\\Vendor\\Aws\\MockHandler' => $vendorDir . '/aws/aws-sdk-php/src/MockHandler.php',
203
+ 'WPStaging\\Vendor\\Aws\\MonitoringEventsInterface' => $vendorDir . '/aws/aws-sdk-php/src/MonitoringEventsInterface.php',
204
+ 'WPStaging\\Vendor\\Aws\\MultiRegionClient' => $vendorDir . '/aws/aws-sdk-php/src/MultiRegionClient.php',
205
+ 'WPStaging\\Vendor\\Aws\\Multipart\\AbstractUploadManager' => $vendorDir . '/aws/aws-sdk-php/src/Multipart/AbstractUploadManager.php',
206
+ 'WPStaging\\Vendor\\Aws\\Multipart\\AbstractUploader' => $vendorDir . '/aws/aws-sdk-php/src/Multipart/AbstractUploader.php',
207
+ 'WPStaging\\Vendor\\Aws\\Multipart\\UploadState' => $vendorDir . '/aws/aws-sdk-php/src/Multipart/UploadState.php',
208
+ 'WPStaging\\Vendor\\Aws\\PhpHash' => $vendorDir . '/aws/aws-sdk-php/src/PhpHash.php',
209
+ 'WPStaging\\Vendor\\Aws\\PresignUrlMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/PresignUrlMiddleware.php',
210
+ 'WPStaging\\Vendor\\Aws\\Psr16CacheAdapter' => $vendorDir . '/aws/aws-sdk-php/src/Psr16CacheAdapter.php',
211
+ 'WPStaging\\Vendor\\Aws\\PsrCacheAdapter' => $vendorDir . '/aws/aws-sdk-php/src/PsrCacheAdapter.php',
212
+ 'WPStaging\\Vendor\\Aws\\ResponseContainerInterface' => $vendorDir . '/aws/aws-sdk-php/src/ResponseContainerInterface.php',
213
+ 'WPStaging\\Vendor\\Aws\\Result' => $vendorDir . '/aws/aws-sdk-php/src/Result.php',
214
+ 'WPStaging\\Vendor\\Aws\\ResultInterface' => $vendorDir . '/aws/aws-sdk-php/src/ResultInterface.php',
215
+ 'WPStaging\\Vendor\\Aws\\ResultPaginator' => $vendorDir . '/aws/aws-sdk-php/src/ResultPaginator.php',
216
+ 'WPStaging\\Vendor\\Aws\\RetryMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/RetryMiddleware.php',
217
+ 'WPStaging\\Vendor\\Aws\\RetryMiddlewareV2' => $vendorDir . '/aws/aws-sdk-php/src/RetryMiddlewareV2.php',
218
+ 'WPStaging\\Vendor\\Aws\\Retry\\Configuration' => $vendorDir . '/aws/aws-sdk-php/src/Retry/Configuration.php',
219
+ 'WPStaging\\Vendor\\Aws\\Retry\\ConfigurationInterface' => $vendorDir . '/aws/aws-sdk-php/src/Retry/ConfigurationInterface.php',
220
+ 'WPStaging\\Vendor\\Aws\\Retry\\ConfigurationProvider' => $vendorDir . '/aws/aws-sdk-php/src/Retry/ConfigurationProvider.php',
221
+ 'WPStaging\\Vendor\\Aws\\Retry\\Exception\\ConfigurationException' => $vendorDir . '/aws/aws-sdk-php/src/Retry/Exception/ConfigurationException.php',
222
+ 'WPStaging\\Vendor\\Aws\\Retry\\QuotaManager' => $vendorDir . '/aws/aws-sdk-php/src/Retry/QuotaManager.php',
223
+ 'WPStaging\\Vendor\\Aws\\Retry\\RateLimiter' => $vendorDir . '/aws/aws-sdk-php/src/Retry/RateLimiter.php',
224
+ 'WPStaging\\Vendor\\Aws\\Retry\\RetryHelperTrait' => $vendorDir . '/aws/aws-sdk-php/src/Retry/RetryHelperTrait.php',
225
+ 'WPStaging\\Vendor\\Aws\\S3\\AmbiguousSuccessParser' => $vendorDir . '/aws/aws-sdk-php/src/S3/AmbiguousSuccessParser.php',
226
+ 'WPStaging\\Vendor\\Aws\\S3\\ApplyChecksumMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/S3/ApplyChecksumMiddleware.php',
227
+ 'WPStaging\\Vendor\\Aws\\S3\\BatchDelete' => $vendorDir . '/aws/aws-sdk-php/src/S3/BatchDelete.php',
228
+ 'WPStaging\\Vendor\\Aws\\S3\\BucketEndpointArnMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/S3/BucketEndpointArnMiddleware.php',
229
+ 'WPStaging\\Vendor\\Aws\\S3\\BucketEndpointMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/S3/BucketEndpointMiddleware.php',
230
+ 'WPStaging\\Vendor\\Aws\\S3\\CalculatesChecksumTrait' => $vendorDir . '/aws/aws-sdk-php/src/S3/CalculatesChecksumTrait.php',
231
+ 'WPStaging\\Vendor\\Aws\\S3\\Crypto\\CryptoParamsTrait' => $vendorDir . '/aws/aws-sdk-php/src/S3/Crypto/CryptoParamsTrait.php',
232
+ 'WPStaging\\Vendor\\Aws\\S3\\Crypto\\CryptoParamsTraitV2' => $vendorDir . '/aws/aws-sdk-php/src/S3/Crypto/CryptoParamsTraitV2.php',
233
+ 'WPStaging\\Vendor\\Aws\\S3\\Crypto\\HeadersMetadataStrategy' => $vendorDir . '/aws/aws-sdk-php/src/S3/Crypto/HeadersMetadataStrategy.php',
234
+ 'WPStaging\\Vendor\\Aws\\S3\\Crypto\\InstructionFileMetadataStrategy' => $vendorDir . '/aws/aws-sdk-php/src/S3/Crypto/InstructionFileMetadataStrategy.php',
235
+ 'WPStaging\\Vendor\\Aws\\S3\\Crypto\\S3EncryptionClient' => $vendorDir . '/aws/aws-sdk-php/src/S3/Crypto/S3EncryptionClient.php',
236
+ 'WPStaging\\Vendor\\Aws\\S3\\Crypto\\S3EncryptionClientV2' => $vendorDir . '/aws/aws-sdk-php/src/S3/Crypto/S3EncryptionClientV2.php',
237
+ 'WPStaging\\Vendor\\Aws\\S3\\Crypto\\S3EncryptionMultipartUploader' => $vendorDir . '/aws/aws-sdk-php/src/S3/Crypto/S3EncryptionMultipartUploader.php',
238
+ 'WPStaging\\Vendor\\Aws\\S3\\Crypto\\S3EncryptionMultipartUploaderV2' => $vendorDir . '/aws/aws-sdk-php/src/S3/Crypto/S3EncryptionMultipartUploaderV2.php',
239
+ 'WPStaging\\Vendor\\Aws\\S3\\Crypto\\UserAgentTrait' => $vendorDir . '/aws/aws-sdk-php/src/S3/Crypto/UserAgentTrait.php',
240
+ 'WPStaging\\Vendor\\Aws\\S3\\EndpointRegionHelperTrait' => $vendorDir . '/aws/aws-sdk-php/src/S3/EndpointRegionHelperTrait.php',
241
+ 'WPStaging\\Vendor\\Aws\\S3\\Exception\\DeleteMultipleObjectsException' => $vendorDir . '/aws/aws-sdk-php/src/S3/Exception/DeleteMultipleObjectsException.php',
242
+ 'WPStaging\\Vendor\\Aws\\S3\\Exception\\PermanentRedirectException' => $vendorDir . '/aws/aws-sdk-php/src/S3/Exception/PermanentRedirectException.php',
243
+ 'WPStaging\\Vendor\\Aws\\S3\\Exception\\S3Exception' => $vendorDir . '/aws/aws-sdk-php/src/S3/Exception/S3Exception.php',
244
+ 'WPStaging\\Vendor\\Aws\\S3\\Exception\\S3MultipartUploadException' => $vendorDir . '/aws/aws-sdk-php/src/S3/Exception/S3MultipartUploadException.php',
245
+ 'WPStaging\\Vendor\\Aws\\S3\\GetBucketLocationParser' => $vendorDir . '/aws/aws-sdk-php/src/S3/GetBucketLocationParser.php',
246
+ 'WPStaging\\Vendor\\Aws\\S3\\MultipartCopy' => $vendorDir . '/aws/aws-sdk-php/src/S3/MultipartCopy.php',
247
+ 'WPStaging\\Vendor\\Aws\\S3\\MultipartUploader' => $vendorDir . '/aws/aws-sdk-php/src/S3/MultipartUploader.php',
248
+ 'WPStaging\\Vendor\\Aws\\S3\\MultipartUploadingTrait' => $vendorDir . '/aws/aws-sdk-php/src/S3/MultipartUploadingTrait.php',
249
+ 'WPStaging\\Vendor\\Aws\\S3\\ObjectCopier' => $vendorDir . '/aws/aws-sdk-php/src/S3/ObjectCopier.php',
250
+ 'WPStaging\\Vendor\\Aws\\S3\\ObjectUploader' => $vendorDir . '/aws/aws-sdk-php/src/S3/ObjectUploader.php',
251
+ 'WPStaging\\Vendor\\Aws\\S3\\PermanentRedirectMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/S3/PermanentRedirectMiddleware.php',
252
+ 'WPStaging\\Vendor\\Aws\\S3\\PostObject' => $vendorDir . '/aws/aws-sdk-php/src/S3/PostObject.php',
253
+ 'WPStaging\\Vendor\\Aws\\S3\\PostObjectV4' => $vendorDir . '/aws/aws-sdk-php/src/S3/PostObjectV4.php',
254
+ 'WPStaging\\Vendor\\Aws\\S3\\PutObjectUrlMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/S3/PutObjectUrlMiddleware.php',
255
+ 'WPStaging\\Vendor\\Aws\\S3\\RegionalEndpoint\\Configuration' => $vendorDir . '/aws/aws-sdk-php/src/S3/RegionalEndpoint/Configuration.php',
256
+ 'WPStaging\\Vendor\\Aws\\S3\\RegionalEndpoint\\ConfigurationInterface' => $vendorDir . '/aws/aws-sdk-php/src/S3/RegionalEndpoint/ConfigurationInterface.php',
257
+ 'WPStaging\\Vendor\\Aws\\S3\\RegionalEndpoint\\ConfigurationProvider' => $vendorDir . '/aws/aws-sdk-php/src/S3/RegionalEndpoint/ConfigurationProvider.php',
258
+ 'WPStaging\\Vendor\\Aws\\S3\\RegionalEndpoint\\Exception\\ConfigurationException' => $vendorDir . '/aws/aws-sdk-php/src/S3/RegionalEndpoint/Exception/ConfigurationException.php',
259
+ 'WPStaging\\Vendor\\Aws\\S3\\RetryableMalformedResponseParser' => $vendorDir . '/aws/aws-sdk-php/src/S3/RetryableMalformedResponseParser.php',
260
+ 'WPStaging\\Vendor\\Aws\\S3\\S3Client' => $vendorDir . '/aws/aws-sdk-php/src/S3/S3Client.php',
261
+ 'WPStaging\\Vendor\\Aws\\S3\\S3ClientInterface' => $vendorDir . '/aws/aws-sdk-php/src/S3/S3ClientInterface.php',
262
+ 'WPStaging\\Vendor\\Aws\\S3\\S3ClientTrait' => $vendorDir . '/aws/aws-sdk-php/src/S3/S3ClientTrait.php',
263
+ 'WPStaging\\Vendor\\Aws\\S3\\S3EndpointMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/S3/S3EndpointMiddleware.php',
264
+ 'WPStaging\\Vendor\\Aws\\S3\\S3MultiRegionClient' => $vendorDir . '/aws/aws-sdk-php/src/S3/S3MultiRegionClient.php',
265
+ 'WPStaging\\Vendor\\Aws\\S3\\S3UriParser' => $vendorDir . '/aws/aws-sdk-php/src/S3/S3UriParser.php',
266
+ 'WPStaging\\Vendor\\Aws\\S3\\SSECMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/S3/SSECMiddleware.php',
267
+ 'WPStaging\\Vendor\\Aws\\S3\\StreamWrapper' => $vendorDir . '/aws/aws-sdk-php/src/S3/StreamWrapper.php',
268
+ 'WPStaging\\Vendor\\Aws\\S3\\Transfer' => $vendorDir . '/aws/aws-sdk-php/src/S3/Transfer.php',
269
+ 'WPStaging\\Vendor\\Aws\\S3\\UseArnRegion\\Configuration' => $vendorDir . '/aws/aws-sdk-php/src/S3/UseArnRegion/Configuration.php',
270
+ 'WPStaging\\Vendor\\Aws\\S3\\UseArnRegion\\ConfigurationInterface' => $vendorDir . '/aws/aws-sdk-php/src/S3/UseArnRegion/ConfigurationInterface.php',
271
+ 'WPStaging\\Vendor\\Aws\\S3\\UseArnRegion\\ConfigurationProvider' => $vendorDir . '/aws/aws-sdk-php/src/S3/UseArnRegion/ConfigurationProvider.php',
272
+ 'WPStaging\\Vendor\\Aws\\S3\\UseArnRegion\\Exception\\ConfigurationException' => $vendorDir . '/aws/aws-sdk-php/src/S3/UseArnRegion/Exception/ConfigurationException.php',
273
+ 'WPStaging\\Vendor\\Aws\\S3\\ValidateResponseChecksumParser' => $vendorDir . '/aws/aws-sdk-php/src/S3/ValidateResponseChecksumParser.php',
274
+ 'WPStaging\\Vendor\\Aws\\Sdk' => $vendorDir . '/aws/aws-sdk-php/src/Sdk.php',
275
+ 'WPStaging\\Vendor\\Aws\\Signature\\AnonymousSignature' => $vendorDir . '/aws/aws-sdk-php/src/Signature/AnonymousSignature.php',
276
+ 'WPStaging\\Vendor\\Aws\\Signature\\S3SignatureV4' => $vendorDir . '/aws/aws-sdk-php/src/Signature/S3SignatureV4.php',
277
+ 'WPStaging\\Vendor\\Aws\\Signature\\SignatureInterface' => $vendorDir . '/aws/aws-sdk-php/src/Signature/SignatureInterface.php',
278
+ 'WPStaging\\Vendor\\Aws\\Signature\\SignatureProvider' => $vendorDir . '/aws/aws-sdk-php/src/Signature/SignatureProvider.php',
279
+ 'WPStaging\\Vendor\\Aws\\Signature\\SignatureTrait' => $vendorDir . '/aws/aws-sdk-php/src/Signature/SignatureTrait.php',
280
+ 'WPStaging\\Vendor\\Aws\\Signature\\SignatureV4' => $vendorDir . '/aws/aws-sdk-php/src/Signature/SignatureV4.php',
281
+ 'WPStaging\\Vendor\\Aws\\StreamRequestPayloadMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/StreamRequestPayloadMiddleware.php',
282
+ 'WPStaging\\Vendor\\Aws\\TraceMiddleware' => $vendorDir . '/aws/aws-sdk-php/src/TraceMiddleware.php',
283
+ 'WPStaging\\Vendor\\Aws\\Waiter' => $vendorDir . '/aws/aws-sdk-php/src/Waiter.php',
284
+ 'WPStaging\\Vendor\\Aws\\WrappedHttpHandler' => $vendorDir . '/aws/aws-sdk-php/src/WrappedHttpHandler.php',
285
  'WPStaging\\Vendor\\DivisionByZeroError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/DivisionByZeroError.php',
286
  'WPStaging\\Vendor\\Error' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/Error.php',
287
  'WPStaging\\Vendor\\Firebase\\JWT\\BeforeValidException' => $vendorDir . '/firebase/php-jwt/src/BeforeValidException.php',
556
  'WPStaging\\Vendor\\GuzzleHttp\\TransferStats' => $vendorDir . '/guzzlehttp/guzzle/src/TransferStats.php',
557
  'WPStaging\\Vendor\\GuzzleHttp\\UriTemplate' => $vendorDir . '/guzzlehttp/guzzle/src/UriTemplate.php',
558
  'WPStaging\\Vendor\\GuzzleHttp\\Utils' => $vendorDir . '/guzzlehttp/guzzle/src/Utils.php',
559
+ 'WPStaging\\Vendor\\JmesPath\\AstRuntime' => $vendorDir . '/mtdowling/jmespath.php/src/AstRuntime.php',
560
+ 'WPStaging\\Vendor\\JmesPath\\CompilerRuntime' => $vendorDir . '/mtdowling/jmespath.php/src/CompilerRuntime.php',
561
+ 'WPStaging\\Vendor\\JmesPath\\DebugRuntime' => $vendorDir . '/mtdowling/jmespath.php/src/DebugRuntime.php',
562
+ 'WPStaging\\Vendor\\JmesPath\\Env' => $vendorDir . '/mtdowling/jmespath.php/src/Env.php',
563
+ 'WPStaging\\Vendor\\JmesPath\\FnDispatcher' => $vendorDir . '/mtdowling/jmespath.php/src/FnDispatcher.php',
564
+ 'WPStaging\\Vendor\\JmesPath\\Lexer' => $vendorDir . '/mtdowling/jmespath.php/src/Lexer.php',
565
+ 'WPStaging\\Vendor\\JmesPath\\Parser' => $vendorDir . '/mtdowling/jmespath.php/src/Parser.php',
566
+ 'WPStaging\\Vendor\\JmesPath\\SyntaxErrorException' => $vendorDir . '/mtdowling/jmespath.php/src/SyntaxErrorException.php',
567
+ 'WPStaging\\Vendor\\JmesPath\\TreeCompiler' => $vendorDir . '/mtdowling/jmespath.php/src/TreeCompiler.php',
568
+ 'WPStaging\\Vendor\\JmesPath\\TreeInterpreter' => $vendorDir . '/mtdowling/jmespath.php/src/TreeInterpreter.php',
569
+ 'WPStaging\\Vendor\\JmesPath\\Utils' => $vendorDir . '/mtdowling/jmespath.php/src/Utils.php',
570
  'WPStaging\\Vendor\\Monolog\\ErrorHandler' => $vendorDir . '/monolog/monolog/src/Monolog/ErrorHandler.php',
571
  'WPStaging\\Vendor\\Monolog\\Formatter\\ChromePHPFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/ChromePHPFormatter.php',
572
  'WPStaging\\Vendor\\Monolog\\Formatter\\ElasticaFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/ElasticaFormatter.php',
694
  'WPStaging\\Vendor\\Symfony\\Polyfill\\Intl\\Idn\\Resources\\unidata\\DisallowedRanges' => $vendorDir . '/symfony/polyfill-intl-idn/Resources/unidata/DisallowedRanges.php',
695
  'WPStaging\\Vendor\\Symfony\\Polyfill\\Intl\\Idn\\Resources\\unidata\\Regex' => $vendorDir . '/symfony/polyfill-intl-idn/Resources/unidata/Regex.php',
696
  'WPStaging\\Vendor\\Symfony\\Polyfill\\Intl\\Normalizer\\Normalizer' => $vendorDir . '/symfony/polyfill-intl-normalizer/Normalizer.php',
697
+ 'WPStaging\\Vendor\\Symfony\\Polyfill\\Mbstring\\Mbstring' => $vendorDir . '/symfony/polyfill-mbstring/Mbstring.php',
698
  'WPStaging\\Vendor\\Symfony\\Polyfill\\Php70\\Php70' => $vendorDir . '/symfony/polyfill-php70/Php70.php',
699
  'WPStaging\\Vendor\\Symfony\\Polyfill\\Php72\\Php72' => $vendorDir . '/symfony/polyfill-php72/Php72.php',
700
  'WPStaging\\Vendor\\TypeError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/TypeError.php',
vendor_wpstg/aws/aws-crt-php/NOTICE ADDED
@@ -0,0 +1 @@
 
1
+ Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
vendor_wpstg/aws/aws-crt-php/builder.json ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "aws-crt-php",
3
+ "hosts": {
4
+ "ubuntu": {
5
+ "pkg_setup": [
6
+ "add-apt-repository -y ppa:ondrej/php"
7
+ ],
8
+ "packages": [
9
+ "autotools-dev",
10
+ "autoconf",
11
+ "libtool",
12
+ "clang",
13
+ "php5.6-dev"
14
+ ]
15
+ },
16
+ "al2": {
17
+ "packages": [
18
+ "autoconf",
19
+ "automake",
20
+ "libtool",
21
+ "clang",
22
+ "php-devel"
23
+ ]
24
+ }
25
+ },
26
+ "build_steps": [
27
+ ["phpize"],
28
+ ["./configure"],
29
+ ["make"]
30
+ ],
31
+ "test_env": {
32
+ "NO_INTERACTION": "1"
33
+ },
34
+ "test_steps": [
35
+ ["./run_tests"]
36
+ ]
37
+ }
vendor_wpstg/aws/aws-crt-php/config.m4 ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ dnl
2
+ dnl * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ dnl * SPDX-License-Identifier: Apache-2.0.
4
+ dnl
5
+
6
+ PHP_ARG_WITH(awscrt, for AWS Common Runtime support,
7
+ [ --with-awscrt Include awscrt support])
8
+
9
+ if test "$PHP_AWSCRT" != "no"; then
10
+ # force lib paths to be absolute, or PHP will mangle them
11
+ cwd=`pwd`
12
+ # Enable s2n and libcrypto for non-darwin UNIX
13
+ if uname -a | grep -i darwin > /dev/null 2>&1; then
14
+ platform_tls_libs=""
15
+ else
16
+ platform_tls_libs="-ls2n -lcrypto"
17
+ fi
18
+ CRT_LIBPATHS="-L${cwd}/build/install/lib -L${cwd}/build/install/lib64"
19
+ CRT_LIBS="-laws-crt-ffi -laws-c-auth -laws-c-http -laws-c-io -laws-c-cal -laws-c-compression -laws-checksums -laws-c-common ${platform_tls_libs}"
20
+ PHP_ADD_INCLUDE(${cwd}/build/install/include)
21
+ PHP_EVAL_LIBLINE([$CRT_LIBPATHS $CRT_LIBS], AWSCRT_SHARED_LIBADD)
22
+
23
+ # Shoves the linker line into the Makefile
24
+ PHP_SUBST(AWSCRT_SHARED_LIBADD)
25
+
26
+ # Sources for the PHP extension itself
27
+ AWSCRT_SOURCES=ext/awscrt.c
28
+ PHP_NEW_EXTENSION(awscrt, $AWSCRT_SOURCES, $ext_shared)
29
+ PHP_ADD_MAKEFILE_FRAGMENT
30
+ fi
vendor_wpstg/aws/aws-crt-php/config.w32 ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // vim:ft=javascript
2
+
3
+ ARG_ENABLE("awscrt", "Include AWS Common Runtime support", "yes");
4
+
5
+ if (PHP_AWSCRT != "no") {
6
+ ADD_MAKEFILE_FRAGMENT();
7
+ DEFINE('CFLAGS_AWSCRT', '/I ' + configure_module_dirname + '\\build\\install\\include');
8
+ DEFINE('LIBS_AWSCRT', '/LIBPATH:' + configure_module_dirname + '\\build\\install\\lib ' +
9
+ 'aws-crt-ffi.lib aws-c-auth.lib aws-c-http.lib aws-c-io.lib aws-c-cal.lib aws-c-compression.lib aws-c-common.lib ' +
10
+ 'ncrypt.lib Secur32.lib Crypt32.lib Shlwapi.lib');
11
+ DEFINE('AWSCRT_DIR', configure_module_dirname);
12
+ EXTENSION("awscrt", "ext\\awscrt.c", PHP_AWSCRT_SHARED);
13
+ }
vendor_wpstg/aws/aws-crt-php/ext/awscrt.c ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ * SPDX-License-Identifier: Apache-2.0.
4
+ */
5
+
6
+ /* This is a unity-build style source file, as PHP's build system is simplest with 1 source file per extension */
7
+
8
+ #include "credentials.c"
9
+ #include "crt.c"
10
+ #include "event_loop.c"
11
+ #include "http.c"
12
+ #include "signing.c"
13
+ #include "stream.c"
14
+ // #include "hash.c"
15
+ #include "crc.c"
16
+ #include "logging.c"
17
+ #include "php_util.c"
vendor_wpstg/aws/aws-crt-php/ext/awscrt.stub.php ADDED
@@ -0,0 +1,212 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPStaging\Vendor;
4
+
5
+ /**
6
+ * @generate-class-entries
7
+ * @generate-function-entries
8
+ */
9
+ function aws_crt_last_error() : int
10
+ {
11
+ }
12
+ function aws_crt_error_name(int $error_code) : string
13
+ {
14
+ }
15
+ function aws_crt_error_str(int $error_code) : string
16
+ {
17
+ }
18
+ function aws_crt_error_debug_str(int $error_code) : string
19
+ {
20
+ }
21
+ function aws_crt_log_to_stdout() : void
22
+ {
23
+ }
24
+ function aws_crt_log_to_stderr() : void
25
+ {
26
+ }
27
+ function aws_crt_log_to_file(string $filename) : void
28
+ {
29
+ }
30
+ function aws_crt_log_to_stream(object $stream) : void
31
+ {
32
+ }
33
+ function aws_crt_log_stop() : void
34
+ {
35
+ }
36
+ function aws_crt_log_set_level(int $level) : void
37
+ {
38
+ }
39
+ function aws_crt_log_message(string $message) : void
40
+ {
41
+ }
42
+ function aws_crt_event_loop_group_options_new() : int
43
+ {
44
+ }
45
+ function aws_crt_event_loop_group_options_release(int $elg_options) : void
46
+ {
47
+ }
48
+ function aws_crt_event_loop_group_options_set_max_threads(int $elg_options, int $max_threads) : void
49
+ {
50
+ }
51
+ function aws_crt_event_loop_group_new(object $options) : object
52
+ {
53
+ }
54
+ function aws_crt_event_loop_group_release(object $event_loop_group) : void
55
+ {
56
+ }
57
+ function aws_crt_input_stream_options_new() : object
58
+ {
59
+ }
60
+ function aws_crt_input_stream_options_release(object $options) : void
61
+ {
62
+ }
63
+ function aws_crt_input_stream_options_set_user_data(object $options, object $user_data) : void
64
+ {
65
+ }
66
+ function aws_crt_input_stream_new(object $options) : object
67
+ {
68
+ }
69
+ function aws_crt_input_stream_release(int $stream) : void
70
+ {
71
+ }
72
+ function aws_crt_input_stream_seek(int $stream, int $offset, int $basis) : int
73
+ {
74
+ }
75
+ function aws_crt_input_stream_read(int $stream, int $length) : string
76
+ {
77
+ }
78
+ function aws_crt_input_stream_eof(int $stream) : bool
79
+ {
80
+ }
81
+ function aws_crt_input_stream_get_length(int $stream) : int
82
+ {
83
+ }
84
+ function aws_crt_http_message_new_from_blob(string $blob) : int
85
+ {
86
+ }
87
+ function aws_crt_http_message_to_blob(int $message) : string
88
+ {
89
+ }
90
+ function aws_crt_http_message_release(int $message) : void
91
+ {
92
+ }
93
+ function aws_crt_credentials_options_new() : object
94
+ {
95
+ }
96
+ function aws_crt_credentials_options_release(object $options) : void
97
+ {
98
+ }
99
+ function aws_crt_credentials_options_set_access_key_id(object $options, string $access_key_id) : void
100
+ {
101
+ }
102
+ function aws_crt_credentials_options_set_secret_access_key(object $options, string $secret_access_key) : void
103
+ {
104
+ }
105
+ function aws_crt_credentials_options_set_session_token(object $options, string $session_token) : void
106
+ {
107
+ }
108
+ function aws_crt_credentials_options_set_expiration_timepoint_seconds(object $options, int $expiration_timepoint_seconds) : void
109
+ {
110
+ }
111
+ function aws_crt_credentials_new(object $options) : object
112
+ {
113
+ }
114
+ function aws_crt_credentials_release(object $credentials) : void
115
+ {
116
+ }
117
+ function aws_crt_credentials_provider_release(int $credentials) : void
118
+ {
119
+ }
120
+ function aws_crt_credentials_provider_static_options_new() : object
121
+ {
122
+ }
123
+ function aws_crt_credentials_provider_static_options_release(object $options) : void
124
+ {
125
+ }
126
+ function aws_crt_credentials_provider_static_options_set_access_key_id(object $options, string $access_key_id) : void
127
+ {
128
+ }
129
+ function aws_crt_credentials_provider_static_options_set_secret_access_key(object $options, string $secret_access_key) : void
130
+ {
131
+ }
132
+ function aws_crt_credentials_provider_static_options_set_session_token(object $options, string $session_token) : void
133
+ {
134
+ }
135
+ function aws_crt_credentials_provider_static_new(object $options) : object
136
+ {
137
+ }
138
+ function aws_crt_signing_config_aws_new() : int
139
+ {
140
+ }
141
+ function aws_crt_signing_config_aws_release(int $config) : void
142
+ {
143
+ }
144
+ function aws_crt_signing_config_aws_set_algorithm(int $config, int $algorithm) : void
145
+ {
146
+ }
147
+ function aws_crt_signing_config_aws_set_signature_type(int $config, int $signature_type) : void
148
+ {
149
+ }
150
+ function aws_crt_signing_config_aws_set_credentials_provider(int $config, int $credentials_provider) : void
151
+ {
152
+ }
153
+ function aws_crt_signing_config_aws_set_region(int $config, string $region) : void
154
+ {
155
+ }
156
+ function aws_crt_signing_config_aws_set_service(int $config, string $service) : void
157
+ {
158
+ }
159
+ function aws_crt_signing_config_aws_set_use_double_uri_encode(int $config, bool $use_double_uri_encode) : void
160
+ {
161
+ }
162
+ function aws_crt_signing_config_aws_set_should_normalize_uri_path(int $config, bool $should_normalize_uri_path) : void
163
+ {
164
+ }
165
+ function aws_crt_signing_config_aws_set_omit_session_token(int $config, bool $omit_session_token) : void
166
+ {
167
+ }
168
+ function aws_crt_signing_config_aws_set_signed_body_value(int $config, string $signed_body_value) : void
169
+ {
170
+ }
171
+ function aws_crt_signing_config_aws_set_signed_body_header_type(int $config, int $signed_body_header_type) : void
172
+ {
173
+ }
174
+ function aws_crt_signing_config_aws_set_expiration_in_seconds(int $config, int $expiration_in_seconds) : void
175
+ {
176
+ }
177
+ function aws_crt_signing_config_aws_set_date(int $config, int $timestamp) : void
178
+ {
179
+ }
180
+ function aws_crt_signing_config_aws_set_should_sign_header_fn(int $config, object $should_sign_header) : void
181
+ {
182
+ }
183
+ function aws_crt_signable_new_from_http_request(int $http_message) : int
184
+ {
185
+ }
186
+ function aws_crt_signable_new_from_chunk(int $input_stream, string $previous_signature) : int
187
+ {
188
+ }
189
+ function aws_crt_signable_new_from_canonical_request(string $request) : int
190
+ {
191
+ }
192
+ function aws_crt_signable_release(int $signable) : void
193
+ {
194
+ }
195
+ function aws_crt_signing_result_release(int $signing_result) : void
196
+ {
197
+ }
198
+ function aws_crt_signing_result_apply_to_http_request(object $signing_result, object $http_request) : void
199
+ {
200
+ }
201
+ function aws_crt_sign_request_aws(int $signable, int $signing_config, object $on_complete, object $user_data) : int
202
+ {
203
+ }
204
+ function aws_crt_test_verify_sigv4a_signing(int $signable, int $signing_config, string $expected_canonical_request, string $signature, string $ecc_key_pub_x, string $ecc_key_pub_y) : bool
205
+ {
206
+ }
207
+ function aws_crt_crc32(string $input, int $prev) : int
208
+ {
209
+ }
210
+ function aws_crt_crc32c(string $input, int $prev) : int
211
+ {
212
+ }
vendor_wpstg/aws/aws-crt-php/ext/awscrt_arginfo.h ADDED
@@ -0,0 +1,413 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* This is a generated file, edit the .stub.php file instead.
2
+ * Stub hash: 344f9d59b85697b80bb6808ac7d5eb7c1d07c03f */
3
+
4
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_last_error, 0, 0, 0)
5
+ ZEND_END_ARG_INFO()
6
+
7
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_error_name, 0, 0, 1)
8
+ ZEND_ARG_INFO(0, error_code)
9
+ ZEND_END_ARG_INFO()
10
+
11
+ #define arginfo_aws_crt_error_str arginfo_aws_crt_error_name
12
+
13
+ #define arginfo_aws_crt_error_debug_str arginfo_aws_crt_error_name
14
+
15
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_log_to_stdout, 0, 0, 0)
16
+ ZEND_END_ARG_INFO()
17
+
18
+ #define arginfo_aws_crt_log_to_stderr arginfo_aws_crt_log_to_stdout
19
+
20
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_log_to_file, 0, 0, 1)
21
+ ZEND_ARG_INFO(0, filename)
22
+ ZEND_END_ARG_INFO()
23
+
24
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_log_to_stream, 0, 0, 1)
25
+ ZEND_ARG_INFO(0, stream)
26
+ ZEND_END_ARG_INFO()
27
+
28
+ #define arginfo_aws_crt_log_stop arginfo_aws_crt_log_to_stdout
29
+
30
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_log_set_level, 0, 0, 1)
31
+ ZEND_ARG_INFO(0, level)
32
+ ZEND_END_ARG_INFO()
33
+
34
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_log_message, 0, 0, 1)
35
+ ZEND_ARG_INFO(0, message)
36
+ ZEND_END_ARG_INFO()
37
+
38
+ #define arginfo_aws_crt_event_loop_group_options_new arginfo_aws_crt_last_error
39
+
40
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_event_loop_group_options_release, 0, 0, 1)
41
+ ZEND_ARG_INFO(0, elg_options)
42
+ ZEND_END_ARG_INFO()
43
+
44
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_event_loop_group_options_set_max_threads, 0, 0, 2)
45
+ ZEND_ARG_INFO(0, elg_options)
46
+ ZEND_ARG_INFO(0, max_threads)
47
+ ZEND_END_ARG_INFO()
48
+
49
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_event_loop_group_new, 0, 0, 1)
50
+ ZEND_ARG_INFO(0, options)
51
+ ZEND_END_ARG_INFO()
52
+
53
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_event_loop_group_release, 0, 0, 1)
54
+ ZEND_ARG_INFO(0, event_loop_group)
55
+ ZEND_END_ARG_INFO()
56
+
57
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_input_stream_options_new, 0, 0, 0)
58
+ ZEND_END_ARG_INFO()
59
+
60
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_input_stream_options_release, 0, 0, 1)
61
+ ZEND_ARG_INFO(0, options)
62
+ ZEND_END_ARG_INFO()
63
+
64
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_input_stream_options_set_user_data, 0, 0, 2)
65
+ ZEND_ARG_INFO(0, options)
66
+ ZEND_ARG_INFO(0, user_data)
67
+ ZEND_END_ARG_INFO()
68
+
69
+ #define arginfo_aws_crt_input_stream_new arginfo_aws_crt_event_loop_group_new
70
+
71
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_input_stream_release, 0, 0, 1)
72
+ ZEND_ARG_INFO(0, stream)
73
+ ZEND_END_ARG_INFO()
74
+
75
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_input_stream_seek, 0, 0, 3)
76
+ ZEND_ARG_INFO(0, stream)
77
+ ZEND_ARG_INFO(0, offset)
78
+ ZEND_ARG_INFO(0, basis)
79
+ ZEND_END_ARG_INFO()
80
+
81
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_input_stream_read, 0, 0, 2)
82
+ ZEND_ARG_INFO(0, stream)
83
+ ZEND_ARG_INFO(0, length)
84
+ ZEND_END_ARG_INFO()
85
+
86
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_input_stream_eof, 0, 0, 1)
87
+ ZEND_ARG_INFO(0, stream)
88
+ ZEND_END_ARG_INFO()
89
+
90
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_input_stream_get_length, 0, 0, 1)
91
+ ZEND_ARG_INFO(0, stream)
92
+ ZEND_END_ARG_INFO()
93
+
94
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_http_message_new_from_blob, 0, 0, 1)
95
+ ZEND_ARG_INFO(0, blob)
96
+ ZEND_END_ARG_INFO()
97
+
98
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_http_message_to_blob, 0, 0, 1)
99
+ ZEND_ARG_INFO(0, message)
100
+ ZEND_END_ARG_INFO()
101
+
102
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_http_message_release, 0, 0, 1)
103
+ ZEND_ARG_INFO(0, message)
104
+ ZEND_END_ARG_INFO()
105
+
106
+ #define arginfo_aws_crt_credentials_options_new arginfo_aws_crt_input_stream_options_new
107
+
108
+ #define arginfo_aws_crt_credentials_options_release arginfo_aws_crt_input_stream_options_release
109
+
110
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_credentials_options_set_access_key_id, 0, 0, 2)
111
+ ZEND_ARG_INFO(0, options)
112
+ ZEND_ARG_INFO(0, access_key_id)
113
+ ZEND_END_ARG_INFO()
114
+
115
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_credentials_options_set_secret_access_key, 0, 0, 2)
116
+ ZEND_ARG_INFO(0, options)
117
+ ZEND_ARG_INFO(0, secret_access_key)
118
+ ZEND_END_ARG_INFO()
119
+
120
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_credentials_options_set_session_token, 0, 0, 2)
121
+ ZEND_ARG_INFO(0, options)
122
+ ZEND_ARG_INFO(0, session_token)
123
+ ZEND_END_ARG_INFO()
124
+
125
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_credentials_options_set_expiration_timepoint_seconds, 0, 0, 2)
126
+ ZEND_ARG_INFO(0, options)
127
+ ZEND_ARG_INFO(0, expiration_timepoint_seconds)
128
+ ZEND_END_ARG_INFO()
129
+
130
+ #define arginfo_aws_crt_credentials_new arginfo_aws_crt_event_loop_group_new
131
+
132
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_credentials_release, 0, 0, 1)
133
+ ZEND_ARG_INFO(0, credentials)
134
+ ZEND_END_ARG_INFO()
135
+
136
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_credentials_provider_release, 0, 0, 1)
137
+ ZEND_ARG_INFO(0, credentials)
138
+ ZEND_END_ARG_INFO()
139
+
140
+ #define arginfo_aws_crt_credentials_provider_static_options_new arginfo_aws_crt_input_stream_options_new
141
+
142
+ #define arginfo_aws_crt_credentials_provider_static_options_release arginfo_aws_crt_input_stream_options_release
143
+
144
+ #define arginfo_aws_crt_credentials_provider_static_options_set_access_key_id arginfo_aws_crt_credentials_options_set_access_key_id
145
+
146
+ #define arginfo_aws_crt_credentials_provider_static_options_set_secret_access_key arginfo_aws_crt_credentials_options_set_secret_access_key
147
+
148
+ #define arginfo_aws_crt_credentials_provider_static_options_set_session_token arginfo_aws_crt_credentials_options_set_session_token
149
+
150
+ #define arginfo_aws_crt_credentials_provider_static_new arginfo_aws_crt_event_loop_group_new
151
+
152
+ #define arginfo_aws_crt_signing_config_aws_new arginfo_aws_crt_last_error
153
+
154
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_signing_config_aws_release, 0, 0, 1)
155
+ ZEND_ARG_INFO(0, config)
156
+ ZEND_END_ARG_INFO()
157
+
158
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_signing_config_aws_set_algorithm, 0, 0, 2)
159
+ ZEND_ARG_INFO(0, config)
160
+ ZEND_ARG_INFO(0, algorithm)
161
+ ZEND_END_ARG_INFO()
162
+
163
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_signing_config_aws_set_signature_type, 0, 0, 2)
164
+ ZEND_ARG_INFO(0, config)
165
+ ZEND_ARG_INFO(0, signature_type)
166
+ ZEND_END_ARG_INFO()
167
+
168
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_signing_config_aws_set_credentials_provider, 0, 0, 2)
169
+ ZEND_ARG_INFO(0, config)
170
+ ZEND_ARG_INFO(0, credentials_provider)
171
+ ZEND_END_ARG_INFO()
172
+
173
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_signing_config_aws_set_region, 0, 0, 2)
174
+ ZEND_ARG_INFO(0, config)
175
+ ZEND_ARG_INFO(0, region)
176
+ ZEND_END_ARG_INFO()
177
+
178
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_signing_config_aws_set_service, 0, 0, 2)
179
+ ZEND_ARG_INFO(0, config)
180
+ ZEND_ARG_INFO(0, service)
181
+ ZEND_END_ARG_INFO()
182
+
183
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_signing_config_aws_set_use_double_uri_encode, 0, 0, 2)
184
+ ZEND_ARG_INFO(0, config)
185
+ ZEND_ARG_INFO(0, use_double_uri_encode)
186
+ ZEND_END_ARG_INFO()
187
+
188
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_signing_config_aws_set_should_normalize_uri_path, 0, 0, 2)
189
+ ZEND_ARG_INFO(0, config)
190
+ ZEND_ARG_INFO(0, should_normalize_uri_path)
191
+ ZEND_END_ARG_INFO()
192
+
193
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_signing_config_aws_set_omit_session_token, 0, 0, 2)
194
+ ZEND_ARG_INFO(0, config)
195
+ ZEND_ARG_INFO(0, omit_session_token)
196
+ ZEND_END_ARG_INFO()
197
+
198
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_signing_config_aws_set_signed_body_value, 0, 0, 2)
199
+ ZEND_ARG_INFO(0, config)
200
+ ZEND_ARG_INFO(0, signed_body_value)
201
+ ZEND_END_ARG_INFO()
202
+
203
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_signing_config_aws_set_signed_body_header_type, 0, 0, 2)
204
+ ZEND_ARG_INFO(0, config)
205
+ ZEND_ARG_INFO(0, signed_body_header_type)
206
+ ZEND_END_ARG_INFO()
207
+
208
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_signing_config_aws_set_expiration_in_seconds, 0, 0, 2)
209
+ ZEND_ARG_INFO(0, config)
210
+ ZEND_ARG_INFO(0, expiration_in_seconds)
211
+ ZEND_END_ARG_INFO()
212
+
213
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_signing_config_aws_set_date, 0, 0, 2)
214
+ ZEND_ARG_INFO(0, config)
215
+ ZEND_ARG_INFO(0, timestamp)
216
+ ZEND_END_ARG_INFO()
217
+
218
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_signing_config_aws_set_should_sign_header_fn, 0, 0, 2)
219
+ ZEND_ARG_INFO(0, config)
220
+ ZEND_ARG_INFO(0, should_sign_header)
221
+ ZEND_END_ARG_INFO()
222
+
223
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_signable_new_from_http_request, 0, 0, 1)
224
+ ZEND_ARG_INFO(0, http_message)
225
+ ZEND_END_ARG_INFO()
226
+
227
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_signable_new_from_chunk, 0, 0, 2)
228
+ ZEND_ARG_INFO(0, input_stream)
229
+ ZEND_ARG_INFO(0, previous_signature)
230
+ ZEND_END_ARG_INFO()
231
+
232
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_signable_new_from_canonical_request, 0, 0, 1)
233
+ ZEND_ARG_INFO(0, request)
234
+ ZEND_END_ARG_INFO()
235
+
236
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_signable_release, 0, 0, 1)
237
+ ZEND_ARG_INFO(0, signable)
238
+ ZEND_END_ARG_INFO()
239
+
240
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_signing_result_release, 0, 0, 1)
241
+ ZEND_ARG_INFO(0, signing_result)
242
+ ZEND_END_ARG_INFO()
243
+
244
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_signing_result_apply_to_http_request, 0, 0, 2)
245
+ ZEND_ARG_INFO(0, signing_result)
246
+ ZEND_ARG_INFO(0, http_request)
247
+ ZEND_END_ARG_INFO()
248
+
249
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_sign_request_aws, 0, 0, 4)
250
+ ZEND_ARG_INFO(0, signable)
251
+ ZEND_ARG_INFO(0, signing_config)
252
+ ZEND_ARG_INFO(0, on_complete)
253
+ ZEND_ARG_INFO(0, user_data)
254
+ ZEND_END_ARG_INFO()
255
+
256
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_test_verify_sigv4a_signing, 0, 0, 6)
257
+ ZEND_ARG_INFO(0, signable)
258
+ ZEND_ARG_INFO(0, signing_config)
259
+ ZEND_ARG_INFO(0, expected_canonical_request)
260
+ ZEND_ARG_INFO(0, signature)
261
+ ZEND_ARG_INFO(0, ecc_key_pub_x)
262
+ ZEND_ARG_INFO(0, ecc_key_pub_y)
263
+ ZEND_END_ARG_INFO()
264
+
265
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_crc32, 0, 0, 2)
266
+ ZEND_ARG_INFO(0, input)
267
+ ZEND_ARG_INFO(0, prev)
268
+ ZEND_END_ARG_INFO()
269
+
270
+ #define arginfo_aws_crt_crc32c arginfo_aws_crt_crc32
271
+
272
+
273
+ ZEND_FUNCTION(aws_crt_last_error);
274
+ ZEND_FUNCTION(aws_crt_error_name);
275
+ ZEND_FUNCTION(aws_crt_error_str);
276
+ ZEND_FUNCTION(aws_crt_error_debug_str);
277
+ ZEND_FUNCTION(aws_crt_log_to_stdout);
278
+ ZEND_FUNCTION(aws_crt_log_to_stderr);
279
+ ZEND_FUNCTION(aws_crt_log_to_file);
280
+ ZEND_FUNCTION(aws_crt_log_to_stream);
281
+ ZEND_FUNCTION(aws_crt_log_stop);
282
+ ZEND_FUNCTION(aws_crt_log_set_level);
283
+ ZEND_FUNCTION(aws_crt_log_message);
284
+ ZEND_FUNCTION(aws_crt_event_loop_group_options_new);
285
+ ZEND_FUNCTION(aws_crt_event_loop_group_options_release);
286
+ ZEND_FUNCTION(aws_crt_event_loop_group_options_set_max_threads);
287
+ ZEND_FUNCTION(aws_crt_event_loop_group_new);
288
+ ZEND_FUNCTION(aws_crt_event_loop_group_release);
289
+ ZEND_FUNCTION(aws_crt_input_stream_options_new);
290
+ ZEND_FUNCTION(aws_crt_input_stream_options_release);
291
+ ZEND_FUNCTION(aws_crt_input_stream_options_set_user_data);
292
+ ZEND_FUNCTION(aws_crt_input_stream_new);
293
+ ZEND_FUNCTION(aws_crt_input_stream_release);
294
+ ZEND_FUNCTION(aws_crt_input_stream_seek);
295
+ ZEND_FUNCTION(aws_crt_input_stream_read);
296
+ ZEND_FUNCTION(aws_crt_input_stream_eof);
297
+ ZEND_FUNCTION(aws_crt_input_stream_get_length);
298
+ ZEND_FUNCTION(aws_crt_http_message_new_from_blob);
299
+ ZEND_FUNCTION(aws_crt_http_message_to_blob);
300
+ ZEND_FUNCTION(aws_crt_http_message_release);
301
+ ZEND_FUNCTION(aws_crt_credentials_options_new);
302
+ ZEND_FUNCTION(aws_crt_credentials_options_release);
303
+ ZEND_FUNCTION(aws_crt_credentials_options_set_access_key_id);
304
+ ZEND_FUNCTION(aws_crt_credentials_options_set_secret_access_key);
305
+ ZEND_FUNCTION(aws_crt_credentials_options_set_session_token);
306
+ ZEND_FUNCTION(aws_crt_credentials_options_set_expiration_timepoint_seconds);
307
+ ZEND_FUNCTION(aws_crt_credentials_new);
308
+ ZEND_FUNCTION(aws_crt_credentials_release);
309
+ ZEND_FUNCTION(aws_crt_credentials_provider_release);
310
+ ZEND_FUNCTION(aws_crt_credentials_provider_static_options_new);
311
+ ZEND_FUNCTION(aws_crt_credentials_provider_static_options_release);
312
+ ZEND_FUNCTION(aws_crt_credentials_provider_static_options_set_access_key_id);
313
+ ZEND_FUNCTION(aws_crt_credentials_provider_static_options_set_secret_access_key);
314
+ ZEND_FUNCTION(aws_crt_credentials_provider_static_options_set_session_token);
315
+ ZEND_FUNCTION(aws_crt_credentials_provider_static_new);
316
+ ZEND_FUNCTION(aws_crt_signing_config_aws_new);
317
+ ZEND_FUNCTION(aws_crt_signing_config_aws_release);
318
+ ZEND_FUNCTION(aws_crt_signing_config_aws_set_algorithm);
319
+ ZEND_FUNCTION(aws_crt_signing_config_aws_set_signature_type);
320
+ ZEND_FUNCTION(aws_crt_signing_config_aws_set_credentials_provider);
321
+ ZEND_FUNCTION(aws_crt_signing_config_aws_set_region);
322
+ ZEND_FUNCTION(aws_crt_signing_config_aws_set_service);
323
+ ZEND_FUNCTION(aws_crt_signing_config_aws_set_use_double_uri_encode);
324
+ ZEND_FUNCTION(aws_crt_signing_config_aws_set_should_normalize_uri_path);
325
+ ZEND_FUNCTION(aws_crt_signing_config_aws_set_omit_session_token);
326
+ ZEND_FUNCTION(aws_crt_signing_config_aws_set_signed_body_value);
327
+ ZEND_FUNCTION(aws_crt_signing_config_aws_set_signed_body_header_type);
328
+ ZEND_FUNCTION(aws_crt_signing_config_aws_set_expiration_in_seconds);
329
+ ZEND_FUNCTION(aws_crt_signing_config_aws_set_date);
330
+ ZEND_FUNCTION(aws_crt_signing_config_aws_set_should_sign_header_fn);
331
+ ZEND_FUNCTION(aws_crt_signable_new_from_http_request);
332
+ ZEND_FUNCTION(aws_crt_signable_new_from_chunk);
333
+ ZEND_FUNCTION(aws_crt_signable_new_from_canonical_request);
334
+ ZEND_FUNCTION(aws_crt_signable_release);
335
+ ZEND_FUNCTION(aws_crt_signing_result_release);
336
+ ZEND_FUNCTION(aws_crt_signing_result_apply_to_http_request);
337
+ ZEND_FUNCTION(aws_crt_sign_request_aws);
338
+ ZEND_FUNCTION(aws_crt_test_verify_sigv4a_signing);
339
+ ZEND_FUNCTION(aws_crt_crc32);
340
+ ZEND_FUNCTION(aws_crt_crc32c);
341
+
342
+
343
+ static const zend_function_entry ext_functions[] = {
344
+ ZEND_FE(aws_crt_last_error, arginfo_aws_crt_last_error)
345
+ ZEND_FE(aws_crt_error_name, arginfo_aws_crt_error_name)
346
+ ZEND_FE(aws_crt_error_str, arginfo_aws_crt_error_str)
347
+ ZEND_FE(aws_crt_error_debug_str, arginfo_aws_crt_error_debug_str)
348
+ ZEND_FE(aws_crt_log_to_stdout, arginfo_aws_crt_log_to_stdout)
349
+ ZEND_FE(aws_crt_log_to_stderr, arginfo_aws_crt_log_to_stderr)
350
+ ZEND_FE(aws_crt_log_to_file, arginfo_aws_crt_log_to_file)
351
+ ZEND_FE(aws_crt_log_to_stream, arginfo_aws_crt_log_to_stream)
352
+ ZEND_FE(aws_crt_log_stop, arginfo_aws_crt_log_stop)
353
+ ZEND_FE(aws_crt_log_set_level, arginfo_aws_crt_log_set_level)
354
+ ZEND_FE(aws_crt_log_message, arginfo_aws_crt_log_message)
355
+ ZEND_FE(aws_crt_event_loop_group_options_new, arginfo_aws_crt_event_loop_group_options_new)
356
+ ZEND_FE(aws_crt_event_loop_group_options_release, arginfo_aws_crt_event_loop_group_options_release)
357
+ ZEND_FE(aws_crt_event_loop_group_options_set_max_threads, arginfo_aws_crt_event_loop_group_options_set_max_threads)
358
+ ZEND_FE(aws_crt_event_loop_group_new, arginfo_aws_crt_event_loop_group_new)
359
+ ZEND_FE(aws_crt_event_loop_group_release, arginfo_aws_crt_event_loop_group_release)
360
+ ZEND_FE(aws_crt_input_stream_options_new, arginfo_aws_crt_input_stream_options_new)
361
+ ZEND_FE(aws_crt_input_stream_options_release, arginfo_aws_crt_input_stream_options_release)
362
+ ZEND_FE(aws_crt_input_stream_options_set_user_data, arginfo_aws_crt_input_stream_options_set_user_data)
363
+ ZEND_FE(aws_crt_input_stream_new, arginfo_aws_crt_input_stream_new)
364
+ ZEND_FE(aws_crt_input_stream_release, arginfo_aws_crt_input_stream_release)
365
+ ZEND_FE(aws_crt_input_stream_seek, arginfo_aws_crt_input_stream_seek)
366
+ ZEND_FE(aws_crt_input_stream_read, arginfo_aws_crt_input_stream_read)
367
+ ZEND_FE(aws_crt_input_stream_eof, arginfo_aws_crt_input_stream_eof)
368
+ ZEND_FE(aws_crt_input_stream_get_length, arginfo_aws_crt_input_stream_get_length)
369
+ ZEND_FE(aws_crt_http_message_new_from_blob, arginfo_aws_crt_http_message_new_from_blob)
370
+ ZEND_FE(aws_crt_http_message_to_blob, arginfo_aws_crt_http_message_to_blob)
371
+ ZEND_FE(aws_crt_http_message_release, arginfo_aws_crt_http_message_release)
372
+ ZEND_FE(aws_crt_credentials_options_new, arginfo_aws_crt_credentials_options_new)
373
+ ZEND_FE(aws_crt_credentials_options_release, arginfo_aws_crt_credentials_options_release)
374
+ ZEND_FE(aws_crt_credentials_options_set_access_key_id, arginfo_aws_crt_credentials_options_set_access_key_id)
375
+ ZEND_FE(aws_crt_credentials_options_set_secret_access_key, arginfo_aws_crt_credentials_options_set_secret_access_key)
376
+ ZEND_FE(aws_crt_credentials_options_set_session_token, arginfo_aws_crt_credentials_options_set_session_token)
377
+ ZEND_FE(aws_crt_credentials_options_set_expiration_timepoint_seconds, arginfo_aws_crt_credentials_options_set_expiration_timepoint_seconds)
378
+ ZEND_FE(aws_crt_credentials_new, arginfo_aws_crt_credentials_new)
379
+ ZEND_FE(aws_crt_credentials_release, arginfo_aws_crt_credentials_release)
380
+ ZEND_FE(aws_crt_credentials_provider_release, arginfo_aws_crt_credentials_provider_release)
381
+ ZEND_FE(aws_crt_credentials_provider_static_options_new, arginfo_aws_crt_credentials_provider_static_options_new)
382
+ ZEND_FE(aws_crt_credentials_provider_static_options_release, arginfo_aws_crt_credentials_provider_static_options_release)
383
+ ZEND_FE(aws_crt_credentials_provider_static_options_set_access_key_id, arginfo_aws_crt_credentials_provider_static_options_set_access_key_id)
384
+ ZEND_FE(aws_crt_credentials_provider_static_options_set_secret_access_key, arginfo_aws_crt_credentials_provider_static_options_set_secret_access_key)
385
+ ZEND_FE(aws_crt_credentials_provider_static_options_set_session_token, arginfo_aws_crt_credentials_provider_static_options_set_session_token)
386
+ ZEND_FE(aws_crt_credentials_provider_static_new, arginfo_aws_crt_credentials_provider_static_new)
387
+ ZEND_FE(aws_crt_signing_config_aws_new, arginfo_aws_crt_signing_config_aws_new)
388
+ ZEND_FE(aws_crt_signing_config_aws_release, arginfo_aws_crt_signing_config_aws_release)
389
+ ZEND_FE(aws_crt_signing_config_aws_set_algorithm, arginfo_aws_crt_signing_config_aws_set_algorithm)
390
+ ZEND_FE(aws_crt_signing_config_aws_set_signature_type, arginfo_aws_crt_signing_config_aws_set_signature_type)
391
+ ZEND_FE(aws_crt_signing_config_aws_set_credentials_provider, arginfo_aws_crt_signing_config_aws_set_credentials_provider)
392
+ ZEND_FE(aws_crt_signing_config_aws_set_region, arginfo_aws_crt_signing_config_aws_set_region)
393
+ ZEND_FE(aws_crt_signing_config_aws_set_service, arginfo_aws_crt_signing_config_aws_set_service)
394
+ ZEND_FE(aws_crt_signing_config_aws_set_use_double_uri_encode, arginfo_aws_crt_signing_config_aws_set_use_double_uri_encode)
395
+ ZEND_FE(aws_crt_signing_config_aws_set_should_normalize_uri_path, arginfo_aws_crt_signing_config_aws_set_should_normalize_uri_path)
396
+ ZEND_FE(aws_crt_signing_config_aws_set_omit_session_token, arginfo_aws_crt_signing_config_aws_set_omit_session_token)
397
+ ZEND_FE(aws_crt_signing_config_aws_set_signed_body_value, arginfo_aws_crt_signing_config_aws_set_signed_body_value)
398
+ ZEND_FE(aws_crt_signing_config_aws_set_signed_body_header_type, arginfo_aws_crt_signing_config_aws_set_signed_body_header_type)
399
+ ZEND_FE(aws_crt_signing_config_aws_set_expiration_in_seconds, arginfo_aws_crt_signing_config_aws_set_expiration_in_seconds)
400
+ ZEND_FE(aws_crt_signing_config_aws_set_date, arginfo_aws_crt_signing_config_aws_set_date)
401
+ ZEND_FE(aws_crt_signing_config_aws_set_should_sign_header_fn, arginfo_aws_crt_signing_config_aws_set_should_sign_header_fn)
402
+ ZEND_FE(aws_crt_signable_new_from_http_request, arginfo_aws_crt_signable_new_from_http_request)
403
+ ZEND_FE(aws_crt_signable_new_from_chunk, arginfo_aws_crt_signable_new_from_chunk)
404
+ ZEND_FE(aws_crt_signable_new_from_canonical_request, arginfo_aws_crt_signable_new_from_canonical_request)
405
+ ZEND_FE(aws_crt_signable_release, arginfo_aws_crt_signable_release)
406
+ ZEND_FE(aws_crt_signing_result_release, arginfo_aws_crt_signing_result_release)
407
+ ZEND_FE(aws_crt_signing_result_apply_to_http_request, arginfo_aws_crt_signing_result_apply_to_http_request)
408
+ ZEND_FE(aws_crt_sign_request_aws, arginfo_aws_crt_sign_request_aws)
409
+ ZEND_FE(aws_crt_test_verify_sigv4a_signing, arginfo_aws_crt_test_verify_sigv4a_signing)
410
+ ZEND_FE(aws_crt_crc32, arginfo_aws_crt_crc32)
411
+ ZEND_FE(aws_crt_crc32c, arginfo_aws_crt_crc32c)
412
+ ZEND_FE_END
413
+ };
vendor_wpstg/aws/aws-crt-php/ext/crc.c ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ * SPDX-License-Identifier: Apache-2.0.
4
+ */
5
+
6
+ #include "php_aws_crt.h"
7
+
8
+ PHP_FUNCTION(aws_crt_crc32) {
9
+ zend_ulong prev = 0;
10
+ const char *input = NULL;
11
+ size_t len = 0;
12
+
13
+ aws_php_parse_parameters("sl", &input, &len, &prev);
14
+
15
+ if (prev > UINT32_MAX) {
16
+ aws_php_throw_exception("previous crc cannot be larger than UINT32_MAX");
17
+ }
18
+ RETURN_LONG((zend_ulong)aws_crt_crc32((const uint8_t *)input, len, prev));
19
+ }
20
+
21
+ PHP_FUNCTION(aws_crt_crc32c) {
22
+ zend_ulong prev = 0;
23
+ const char *input = NULL;
24
+ size_t len = 0;
25
+
26
+ aws_php_parse_parameters("sl", &input, &len, &prev);
27
+
28
+ if (prev > UINT32_MAX) {
29
+ aws_php_throw_exception("previous crc cannot be larger than UINT32_MAX");
30
+ }
31
+ RETURN_LONG((zend_ulong)aws_crt_crc32c((const uint8_t *)input, len, prev));
32
+ }
vendor_wpstg/aws/aws-crt-php/ext/credentials.c ADDED
@@ -0,0 +1,154 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ * SPDX-License-Identifier: Apache-2.0.
4
+ */
5
+
6
+ #include "php_aws_crt.h"
7
+
8
+ PHP_FUNCTION(aws_crt_credentials_options_new) {
9
+ aws_crt_credentials_options *options = aws_crt_credentials_options_new();
10
+ RETURN_LONG((zend_ulong)options);
11
+ }
12
+
13
+ PHP_FUNCTION(aws_crt_credentials_options_release) {
14
+ zend_ulong php_options = 0;
15
+
16
+ aws_php_parse_parameters("l", &php_options);
17
+
18
+ aws_crt_credentials_options *options = (void *)php_options;
19
+ aws_crt_credentials_options_release(options);
20
+ }
21
+
22
+ PHP_FUNCTION(aws_crt_credentials_options_set_access_key_id) {
23
+ zend_ulong php_options = 0;
24
+ const char *access_key_id = NULL;
25
+ size_t access_key_id_len = 0;
26
+
27
+ aws_php_parse_parameters("ls", &php_options, &access_key_id, &access_key_id_len);
28
+
29
+ aws_crt_credentials_options *options = (void *)php_options;
30
+ aws_crt_credentials_options_set_access_key_id(options, (uint8_t *)access_key_id, access_key_id_len);
31
+ }
32
+
33
+ PHP_FUNCTION(aws_crt_credentials_options_set_secret_access_key) {
34
+ zend_ulong php_options = 0;
35
+ const char *secret_access_key = NULL;
36
+ size_t secret_access_key_len = 0;
37
+
38
+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "ls", &php_options, &secret_access_key, &secret_access_key_len) ==
39
+ FAILURE) {
40
+ RETURN_NULL();
41
+ }
42
+
43
+ aws_crt_credentials_options *options = (void *)php_options;
44
+ aws_crt_credentials_options_set_secret_access_key(options, (uint8_t *)secret_access_key, secret_access_key_len);
45
+ }
46
+
47
+ PHP_FUNCTION(aws_crt_credentials_options_set_session_token) {
48
+ zend_ulong php_options = 0;
49
+ const char *session_token = NULL;
50
+ size_t session_token_len = 0;
51
+
52
+ aws_php_parse_parameters("ls", &php_options, &session_token, &session_token_len);
53
+
54
+ aws_crt_credentials_options *options = (void *)php_options;
55
+ aws_crt_credentials_options_set_session_token(options, (uint8_t *)session_token, session_token_len);
56
+ }
57
+
58
+ PHP_FUNCTION(aws_crt_credentials_options_set_expiration_timepoint_seconds) {
59
+ zend_ulong php_options = 0;
60
+ zend_ulong expiration_timepoint_seconds = 0;
61
+ aws_php_parse_parameters("ll", &php_options, &expiration_timepoint_seconds);
62
+
63
+ aws_crt_credentials_options *options = (void *)php_options;
64
+ aws_crt_credentials_options_set_expiration_timepoint_seconds(options, expiration_timepoint_seconds);
65
+ }
66
+
67
+ PHP_FUNCTION(aws_crt_credentials_new) {
68
+ zend_ulong php_options = 0;
69
+
70
+ aws_php_parse_parameters("l", &php_options);
71
+
72
+ aws_crt_credentials_options *options = (void *)php_options;
73
+ aws_crt_credentials *credentials = aws_crt_credentials_new(options);
74
+ RETURN_LONG((zend_ulong)credentials);
75
+ }
76
+
77
+ PHP_FUNCTION(aws_crt_credentials_release) {
78
+ zend_ulong php_credentials = 0;
79
+
80
+ aws_php_parse_parameters("l", &php_credentials);
81
+
82
+ aws_crt_credentials *credentials = (void *)php_credentials;
83
+ aws_crt_credentials_release(credentials);
84
+ }
85
+
86
+ PHP_FUNCTION(aws_crt_credentials_provider_release) {
87
+ zend_ulong php_creds_provider = 0;
88
+
89
+ aws_php_parse_parameters("l", &php_creds_provider);
90
+
91
+ aws_crt_credentials_provider *provider = (void *)php_creds_provider;
92
+ aws_crt_credentials_provider_release(provider);
93
+ }
94
+
95
+ PHP_FUNCTION(aws_crt_credentials_provider_static_options_new) {
96
+ aws_crt_credentials_provider_static_options *options = aws_crt_credentials_provider_static_options_new();
97
+ RETURN_LONG((zend_ulong)options);
98
+ }
99
+
100
+ PHP_FUNCTION(aws_crt_credentials_provider_static_options_release) {
101
+ zend_ulong php_options = 0;
102
+
103
+ aws_php_parse_parameters("l", &php_options);
104
+
105
+ aws_crt_credentials_provider_static_options *options = (void *)php_options;
106
+ aws_crt_credentials_provider_static_options_release(options);
107
+ }
108
+
109
+ PHP_FUNCTION(aws_crt_credentials_provider_static_options_set_access_key_id) {
110
+ zend_ulong php_options = 0;
111
+ const char *access_key_id = NULL;
112
+ size_t access_key_id_len = 0;
113
+
114
+ aws_php_parse_parameters("ls", &php_options, &access_key_id, &access_key_id_len);
115
+
116
+ aws_crt_credentials_provider_static_options *options = (void *)php_options;
117
+ aws_crt_credentials_provider_static_options_set_access_key_id(options, (uint8_t *)access_key_id, access_key_id_len);
118
+ }
119
+
120
+ PHP_FUNCTION(aws_crt_credentials_provider_static_options_set_secret_access_key) {
121
+ zend_ulong php_options = 0;
122
+ const char *secret_access_key = NULL;
123
+ size_t secret_access_key_len = 0;
124
+
125
+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "ls", &php_options, &secret_access_key, &secret_access_key_len) ==
126
+ FAILURE) {
127
+ RETURN_NULL();
128
+ }
129
+
130
+ aws_crt_credentials_provider_static_options *options = (void *)php_options;
131
+ aws_crt_credentials_provider_static_options_set_secret_access_key(
132
+ options, (uint8_t *)secret_access_key, secret_access_key_len);
133
+ }
134
+
135
+ PHP_FUNCTION(aws_crt_credentials_provider_static_options_set_session_token) {
136
+ zend_ulong php_options = 0;
137
+ const char *session_token = NULL;
138
+ size_t session_token_len = 0;
139
+
140
+ aws_php_parse_parameters("ls", &php_options, &session_token, &session_token_len);
141
+
142
+ aws_crt_credentials_provider_static_options *options = (void *)php_options;
143
+ aws_crt_credentials_provider_static_options_set_session_token(options, (uint8_t *)session_token, session_token_len);
144
+ }
145
+
146
+ PHP_FUNCTION(aws_crt_credentials_provider_static_new) {
147
+ zend_ulong php_options = 0;
148
+
149
+ aws_php_parse_parameters("l", &php_options);
150
+
151
+ aws_crt_credentials_provider_static_options *options = (void *)php_options;
152
+ aws_crt_credentials_provider *provider = aws_crt_credentials_provider_static_new(options);
153
+ RETURN_LONG((zend_ulong)provider);
154
+ }
vendor_wpstg/aws/aws-crt-php/ext/crt.c ADDED
@@ -0,0 +1,314 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ /**
3
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
4
+ * SPDX-License-Identifier: Apache-2.0.
5
+ */
6
+
7
+ #include "php_aws_crt.h"
8
+
9
+ /* Helpful references for this extension:
10
+ * zend_parse_parameters and friends -
11
+ * https://git.php.net/?p=php-src.git;a=blob;f=docs/parameter-parsing-api.md;h=c962fc6ee58cc756aaac9e65759b7d5ea5c18fc4;hb=HEAD
12
+ * https://git.php.net/?p=php-src.git;a=blob;f=docs/self-contained-extensions.md;h=47f4c636baca8ca195118e2cc234ac7fd2842c1b;hb=HEAD
13
+ * Threads:
14
+ * http://blog.jpauli.tech/2017-01-12-threads-and-php-html/
15
+ * Examples:
16
+ * Curl extension: https://github.com/php/php-src/blob/PHP-5.6/ext/curl/interface.c
17
+ * libuv extension: https://github.com/amphp/ext-uv/blob/master/php_uv.c
18
+ */
19
+
20
+ zval aws_php_invoke_callback(zval *callback, const char *arg_types, ...) {
21
+
22
+ char *error = NULL;
23
+ zend_fcall_info fci = {0};
24
+ zend_fcall_info_cache fcc = empty_fcall_info_cache;
25
+ if (zend_fcall_info_init(callback, IS_CALLABLE_CHECK_SYNTAX_ONLY, &fci, &fcc, NULL, &error) == FAILURE) {
26
+ aws_php_throw_exception("Unable to initialize callback from callable via zend_fcall_info_init: %s", error);
27
+ }
28
+
29
+ /* Allocate the stack frame of zval arguments and fill them in */
30
+ const size_t num_args = strlen(arg_types);
31
+ zval *stack = alloca(sizeof(zval) * num_args);
32
+ int arg_idx = 0;
33
+ va_list va;
34
+ va_start(va, arg_types);
35
+ while (arg_idx < num_args) {
36
+ const char arg_type = arg_types[arg_idx];
37
+ switch (arg_type) {
38
+ /* zval types */
39
+ case 'a':
40
+ case 'A':
41
+ case 'n':
42
+ case 'o':
43
+ case 'r':
44
+ case 'z': {
45
+ zval *zval_val = va_arg(va, zval *);
46
+ ZVAL_ZVAL(&stack[arg_idx], zval_val, 0, 0);
47
+ break;
48
+ }
49
+ /* buffers/strings (char *, size_t) */
50
+ case 'p':
51
+ case 's': {
52
+ const char *buf = va_arg(va, const char *);
53
+ const size_t len = va_arg(va, size_t);
54
+ aws_php_zval_stringl(&stack[arg_idx], buf, len);
55
+ break;
56
+ }
57
+ /* other primitives */
58
+ case 'b': {
59
+ zend_bool bool_val = va_arg(va, int);
60
+ ZVAL_BOOL(&stack[arg_idx], bool_val);
61
+ break;
62
+ }
63
+ case 'd': {
64
+ double double_val = va_arg(va, double);
65
+ ZVAL_DOUBLE(&stack[arg_idx], double_val);
66
+ break;
67
+ }
68
+ case 'l': {
69
+ zend_ulong long_val = va_arg(va, zend_ulong);
70
+ ZVAL_LONG(&stack[arg_idx], long_val);
71
+ break;
72
+ }
73
+ /* strings (zend_string), not supported in PHP 5.6, therefore not supported */
74
+ case 'P':
75
+ case 'S':
76
+ /* unsupported */
77
+ case 'C':
78
+ case 'f':
79
+ case 'h':
80
+ case 'H':
81
+ case 'O':
82
+ aws_php_throw_exception("Unsupported argument type to aws_php_invoke_callback: %c", arg_type);
83
+ break;
84
+ default:
85
+ aws_php_throw_exception("Unsupported argument type to aws_php_invoke_callback: %c", arg_type);
86
+ break;
87
+ }
88
+ ++arg_idx;
89
+ }
90
+ va_end(va);
91
+
92
+ /* set up the stack for the call */
93
+ #if AWS_PHP_AT_LEAST_7
94
+ zend_fcall_info_argp(&fci, num_args, stack);
95
+ #else
96
+ /* PHP5.6 may mutate the arguments due to coercion */
97
+ zval **arg_ptrs = alloca(sizeof(zval *) * num_args);
98
+ zval ***args = alloca(sizeof(zval **) * num_args);
99
+ for (int arg_idx = 0; arg_idx < num_args; ++arg_idx) {
100
+ arg_ptrs[arg_idx] = &stack[arg_idx];
101
+ args[arg_idx] = &arg_ptrs[arg_idx];
102
+ }
103
+ fci.param_count = num_args;
104
+ fci.params = args;
105
+ #endif
106
+
107
+ zval retval;
108
+ /* PHP5 allocates its own return value, 7+ uses an existing one we provide */
109
+ #if !AWS_PHP_AT_LEAST_7
110
+ zval *retval5 = NULL;
111
+ fci.retval_ptr_ptr = &retval5;
112
+ #else
113
+ fci.retval = &retval;
114
+ #endif
115
+
116
+ if (zend_call_function(&fci, &fcc) == FAILURE) {
117
+ aws_php_throw_exception("zend_call_function failed in aws_php_invoke_callback");
118
+ }
119
+
120
+ #if !AWS_PHP_AT_LEAST_7
121
+ /* initialize the local retval from the retval in retval_ptr_ptr above */
122
+ if (retval5) {
123
+ ZVAL_ZVAL(&retval, retval5, 1, 1);
124
+ }
125
+ #endif
126
+
127
+ /* Clean up arguments */
128
+ #if AWS_PHP_AT_LEAST_7
129
+ zend_fcall_info_args_clear(&fci, 1);
130
+ #endif
131
+
132
+ return retval;
133
+ }
134
+
135
+ void aws_php_zval_stringl(zval *val, const char *str, size_t len) {
136
+ AWS_FATAL_ASSERT(val != NULL);
137
+ #if AWS_PHP_AT_LEAST_7
138
+ ZVAL_STRINGL(val, str, len);
139
+ #else
140
+ ZVAL_STRINGL(val, str, len, 1);
141
+ #endif
142
+ }
143
+
144
+ aws_php_thread_queue s_aws_php_main_thread_queue;
145
+
146
+ bool aws_php_is_main_thread(void) {
147
+ return s_aws_php_main_thread_queue.thread_id == aws_thread_current_thread_id();
148
+ }
149
+
150
+ void aws_php_thread_queue_init(aws_php_thread_queue *queue) {
151
+ aws_mutex_init(&queue->mutex);
152
+ memset(queue->queue, 0, sizeof(aws_php_task) * AWS_PHP_THREAD_QUEUE_MAX_DEPTH);
153
+ queue->write_slot = 0;
154
+ queue->thread_id = aws_thread_current_thread_id();
155
+ }
156
+
157
+ void aws_php_thread_queue_clean_up(aws_php_thread_queue *queue) {
158
+ assert(queue->write_slot == 0 && "aws_php_thread_queue cannot be cleaned up while queue is not empty");
159
+ aws_mutex_clean_up(&queue->mutex);
160
+ }
161
+
162
+ void aws_php_thread_queue_push(aws_php_thread_queue *queue, aws_php_task task) {
163
+ aws_mutex_lock(&queue->mutex);
164
+ assert(queue->write_slot < AWS_PHP_THREAD_QUEUE_MAX_DEPTH && "thread queue is full");
165
+ queue->queue[queue->write_slot++] = task;
166
+ aws_mutex_unlock(&queue->mutex);
167
+ }
168
+
169
+ bool aws_php_thread_queue_drain(aws_php_thread_queue *queue) {
170
+ assert(
171
+ queue->thread_id == aws_thread_current_thread_id() &&
172
+ "thread queue cannot be drained from a thread other than its home");
173
+ aws_php_task drain_queue[AWS_PHP_THREAD_QUEUE_MAX_DEPTH];
174
+ aws_mutex_lock(&queue->mutex);
175
+ /* copy any queued tasks into the drain queue, then reset the queue */
176
+ memcpy(drain_queue, queue->queue, sizeof(aws_php_task) * AWS_PHP_THREAD_QUEUE_MAX_DEPTH);
177
+ memset(queue->queue, 0, sizeof(aws_php_task) * AWS_PHP_THREAD_QUEUE_MAX_DEPTH);
178
+ queue->write_slot = 0;
179
+ aws_mutex_unlock(&queue->mutex);
180
+
181
+ bool did_work = false;
182
+ for (int idx = 0; idx < AWS_PHP_THREAD_QUEUE_MAX_DEPTH; ++idx) {
183
+ aws_php_task *task = &drain_queue[idx];
184
+ if (!task->callback) {
185
+ break;
186
+ }
187
+ did_work = true;
188
+ task->callback(task->data);
189
+ if (task->dtor) {
190
+ task->dtor(task->data);
191
+ }
192
+ }
193
+
194
+ return did_work;
195
+ }
196
+
197
+ /* called on main thread after delivery */
198
+ static void s_thread_queue_complete_promise(void *data) {
199
+ struct aws_promise *promise = data;
200
+ aws_promise_complete(promise, NULL, NULL);
201
+ }
202
+
203
+ /* called from worker thread to wait for the main thread to execute any queued work in PHP */
204
+ void aws_php_thread_queue_yield(aws_php_thread_queue *queue) {
205
+ /* If on the main thread, then just drain the queue */
206
+ if (aws_php_is_main_thread()) {
207
+ aws_php_thread_queue_drain(queue);
208
+ } else {
209
+ /* push a task onto the end of the queue, we will return once this task completes our promise */
210
+ struct aws_promise *queue_drained = aws_promise_new(aws_crt_default_allocator());
211
+ aws_php_task queue_drained_task = {
212
+ .callback = s_thread_queue_complete_promise,
213
+ .data = queue_drained,
214
+ };
215
+ aws_php_thread_queue_push(queue, queue_drained_task);
216
+ aws_promise_wait(queue_drained);
217
+ aws_promise_release(queue_drained);
218
+ }
219
+ }
220
+
221
+ /* called from PHP thread to wait on async queued jobs, one of which should complete the promise */
222
+ void aws_php_thread_queue_wait(aws_php_thread_queue *queue, struct aws_promise *promise) {
223
+ while (!aws_promise_is_complete(promise)) {
224
+ aws_php_thread_queue_drain(queue);
225
+ }
226
+ }
227
+
228
+ ZEND_DECLARE_MODULE_GLOBALS(awscrt);
229
+
230
+ PHP_INI_BEGIN()
231
+ STD_PHP_INI_ENTRY(
232
+ "awscrt.log_level",
233
+ "",
234
+ PHP_INI_ALL,
235
+ OnUpdateLongGEZero,
236
+ log_level,
237
+ zend_awscrt_globals,
238
+ awscrt_globals)
239
+ PHP_INI_END()
240
+
241
+ static PHP_MINIT_FUNCTION(awscrt) {
242
+ REGISTER_INI_ENTRIES();
243
+
244
+ /* prevent s2n from initializing/de-initializing OpenSSL/libcrypto */
245
+ aws_crt_crypto_share();
246
+ aws_crt_init();
247
+ aws_php_thread_queue_init(&s_aws_php_main_thread_queue);
248
+ return SUCCESS;
249
+ }
250
+
251
+ static PHP_MSHUTDOWN_FUNCTION(awscrt) {
252
+ UNREGISTER_INI_ENTRIES();
253
+ aws_php_thread_queue_clean_up(&s_aws_php_main_thread_queue);
254
+ aws_crt_thread_join_all(0);
255
+ aws_crt_clean_up();
256
+ return SUCCESS;
257
+ }
258
+
259
+ static PHP_GINIT_FUNCTION(awscrt) {
260
+ #if defined(COMPILE_DL_ASTKIT) && defined(ZTS)
261
+ ZEND_TSRMLS_CACHE_UPDATE();
262
+ #endif
263
+ awscrt_globals->log_level = 0;
264
+ }
265
+
266
+ zend_module_entry awscrt_module_entry = {
267
+ STANDARD_MODULE_HEADER,
268
+ "awscrt",
269
+ ext_functions, /* functions */
270
+ PHP_MINIT(awscrt),
271
+ PHP_MSHUTDOWN(awscrt),
272
+ NULL, /* RINIT */
273
+ NULL, /* RSHUTDOWN */
274
+ NULL, /* MINFO */
275
+ NO_VERSION_YET,
276
+ PHP_MODULE_GLOBALS(awscrt),
277
+ PHP_GINIT(awscrt),
278
+ NULL, /* GSHUTDOWN */
279
+ NULL, /* RPOSTSHUTDOWN */
280
+ STANDARD_MODULE_PROPERTIES_EX,
281
+ };
282
+
283
+ #ifdef COMPILE_DL_AWSCRT
284
+ ZEND_GET_MODULE(awscrt)
285
+ #endif
286
+
287
+ /* aws_crt_last_error() */
288
+ PHP_FUNCTION(aws_crt_last_error) {
289
+ RETURN_LONG(aws_crt_last_error());
290
+ }
291
+
292
+ /* aws_crt_error_str(int error_code) */
293
+ PHP_FUNCTION(aws_crt_error_str) {
294
+ zend_ulong error_code = 0;
295
+ aws_php_parse_parameters("l", &error_code);
296
+
297
+ XRETURN_STRING(aws_crt_error_str(error_code));
298
+ }
299
+
300
+ /* aws_crt_error_name(int error_code) */
301
+ PHP_FUNCTION(aws_crt_error_name) {
302
+ zend_ulong error_code = 0;
303
+ aws_php_parse_parameters("l", &error_code);
304
+
305
+ XRETURN_STRING(aws_crt_error_name(error_code));
306
+ }
307
+
308
+ /* aws_crt_error_debug_str(int error_code) */
309
+ PHP_FUNCTION(aws_crt_error_debug_str) {
310
+ zend_ulong error_code = 0;
311
+ aws_php_parse_parameters("l", &error_code);
312
+
313
+ XRETURN_STRING(aws_crt_error_debug_str(error_code));
314
+ }
vendor_wpstg/aws/aws-crt-php/ext/event_loop.c ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ * SPDX-License-Identifier: Apache-2.0.
4
+ */
5
+
6
+ #include "php_aws_crt.h"
7
+
8
+ PHP_FUNCTION(aws_crt_event_loop_group_options_new) {
9
+ aws_php_parse_parameters_none();
10
+ aws_crt_event_loop_group_options *options = aws_crt_event_loop_group_options_new();
11
+ RETURN_LONG((zend_ulong)options);
12
+ }
13
+
14
+ PHP_FUNCTION(aws_crt_event_loop_group_options_release) {
15
+ zend_ulong php_options = 0;
16
+ aws_php_parse_parameters("l", &php_options);
17
+
18
+ aws_crt_event_loop_group_options *options = (void *)php_options;
19
+ aws_crt_event_loop_group_options_release(options);
20
+ }
21
+
22
+ PHP_FUNCTION(aws_crt_event_loop_group_options_set_max_threads) {
23
+ zend_ulong php_options = 0;
24
+ zend_ulong num_threads = 0;
25
+ aws_php_parse_parameters("ll", &php_options, &num_threads);
26
+
27
+ aws_crt_event_loop_group_options *options = (void *)php_options;
28
+ aws_crt_event_loop_group_options_set_max_threads(options, num_threads);
29
+ }
30
+
31
+ PHP_FUNCTION(aws_crt_event_loop_group_new) {
32
+ zend_ulong php_options = 0;
33
+
34
+ aws_php_parse_parameters("l", &php_options);
35
+
36
+ aws_crt_event_loop_group_options *options = (void *)php_options;
37
+ aws_crt_event_loop_group *elg = aws_crt_event_loop_group_new(options);
38
+ RETURN_LONG((zend_ulong)elg);
39
+ }
40
+
41
+ PHP_FUNCTION(aws_crt_event_loop_group_release) {
42
+ zend_ulong php_elg = 0;
43
+
44
+ aws_php_parse_parameters("l", &php_elg);
45
+
46
+ aws_crt_event_loop_group *elg = (void *)php_elg;
47
+ aws_crt_event_loop_group_release(elg);
48
+ }
vendor_wpstg/aws/aws-crt-php/ext/http.c ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ * SPDX-License-Identifier: Apache-2.0.
4
+ */
5
+
6
+ #include "php_aws_crt.h"
7
+
8
+ PHP_FUNCTION(aws_crt_http_message_new_from_blob) {
9
+ const char *blob = NULL;
10
+ size_t blob_len = 0;
11
+
12
+ aws_php_parse_parameters("s", &blob, &blob_len);
13
+
14
+ aws_crt_http_message *message = aws_crt_http_message_new_from_blob((uint8_t *)blob, blob_len);
15
+ RETURN_LONG((zend_ulong)message);
16
+ }
17
+
18
+ PHP_FUNCTION(aws_crt_http_message_to_blob) {
19
+ zend_ulong php_msg = 0;
20
+
21
+ aws_php_parse_parameters("l", &php_msg);
22
+
23
+ aws_crt_http_message *message = (void *)php_msg;
24
+ aws_crt_buf blob;
25
+ aws_crt_http_message_to_blob(message, &blob);
26
+ XRETURN_STRINGL((const char *)blob.blob, blob.length);
27
+ }
28
+
29
+ PHP_FUNCTION(aws_crt_http_message_release) {
30
+ zend_ulong php_msg = 0;
31
+
32
+ aws_php_parse_parameters("l", &php_msg);
33
+
34
+ aws_crt_http_message *message = (void *)php_msg;
35
+ aws_crt_http_message_release(message);
36
+ }
vendor_wpstg/aws/aws-crt-php/ext/logging.c ADDED
@@ -0,0 +1,65 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ * SPDX-License-Identifier: Apache-2.0.
4
+ */
5
+
6
+ #include "php_aws_crt.h"
7
+
8
+ PHP_FUNCTION(aws_crt_log_to_stdout) {
9
+ aws_php_parse_parameters_none();
10
+ aws_crt_log_to_stdout();
11
+ }
12
+
13
+ PHP_FUNCTION(aws_crt_log_to_stderr) {
14
+ aws_php_parse_parameters_none();
15
+ aws_crt_log_to_stderr();
16
+ }
17
+
18
+ PHP_FUNCTION(aws_crt_log_to_file) {
19
+ const char *filename = NULL;
20
+ size_t filename_len = 0;
21
+ /* read the filename as a path, which guarantees no NUL bytes */
22
+ aws_php_parse_parameters("p", &filename, &filename_len);
23
+ aws_crt_log_to_file(filename);
24
+ }
25
+
26
+ static void php_crt_log(const char *message, size_t len, void *user_data) {
27
+ php_stream *stream = user_data;
28
+ php_stream_write(stream, message, len);
29
+ php_stream_flush(stream);
30
+ }
31
+
32
+ PHP_FUNCTION(aws_crt_log_to_stream) {
33
+ zval *php_log_stream = NULL;
34
+ aws_php_parse_parameters("r", &php_log_stream);
35
+
36
+ if (php_log_stream) {
37
+ php_stream *stream = NULL;
38
+ Z_ADDREF(*php_log_stream);
39
+ AWS_PHP_STREAM_FROM_ZVAL(stream, php_log_stream);
40
+ aws_crt_log_to_callback((aws_crt_log_callback *)php_crt_log, stream);
41
+ } else {
42
+ aws_crt_log_to_callback(NULL, NULL);
43
+ }
44
+ }
45
+
46
+ PHP_FUNCTION(aws_crt_log_set_level) {
47
+ zend_ulong log_level = 0;
48
+ aws_php_parse_parameters("l", &log_level);
49
+ aws_crt_log_set_level((aws_crt_log_level)log_level);
50
+ }
51
+
52
+ PHP_FUNCTION(aws_crt_log_stop) {
53
+ aws_php_parse_parameters_none();
54
+ aws_crt_log_stop();
55
+ }
56
+
57
+ PHP_FUNCTION(aws_crt_log_message) {
58
+ zend_ulong log_level = 0;
59
+ const char *message = NULL;
60
+ size_t message_len = 0;
61
+
62
+ aws_php_parse_parameters("ls", &log_level, &message, &message_len);
63
+
64
+ aws_crt_log_message((aws_crt_log_level)log_level, (const uint8_t *)message, message_len);
65
+ }
vendor_wpstg/aws/aws-crt-php/ext/php_aws_crt.h ADDED
@@ -0,0 +1,171 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ #ifndef PHP_AWS_CRT_H
3
+ #define PHP_AWS_CRT_H
4
+
5
+ /**
6
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
7
+ * SPDX-License-Identifier: Apache-2.0.
8
+ */
9
+
10
+ #ifdef HAVE_CONFIG_H
11
+ # include "config.h"
12
+ #endif
13
+
14
+ #include "php.h"
15
+
16
+ #include "Zend/zend_extensions.h" /* for ZEND_EXTENSION_API_NO */
17
+
18
+ #include <aws/common/common.h>
19
+ #include <aws/common/mutex.h>
20
+ #include <aws/common/promise.h>
21
+ #include <aws/common/thread.h>
22
+
23
+ /* ZEND_EXTENSION_API_NO from each branch of the PHP source */
24
+ #define AWS_PHP_EXTENSION_API_5_5 220121212
25
+ #define AWS_PHP_EXTENSION_API_5_6 220131226
26
+ #define AWS_PHP_EXTENSION_API_7_0 320151012
27
+ #define AWS_PHP_EXTENSION_API_7_1 320160303
28
+ #define AWS_PHP_EXTENSION_API_7_2 320170718
29
+ #define AWS_PHP_EXTENSION_API_7_3 320180731
30
+ #define AWS_PHP_EXTENSION_API_7_4 320190902
31
+ #define AWS_PHP_EXTENSION_API_8_0 420200930
32
+
33
+ #if ZEND_EXTENSION_API_NO < AWS_PHP_EXTENSION_API_5_5
34
+ # error "PHP >= 5.5 is required"
35
+ #endif
36
+
37
+ #define AWS_PHP_AT_LEAST_7 (ZEND_EXTENSION_API_NO >= AWS_PHP_EXTENSION_API_7_0)
38
+ #define AWS_PHP_AT_LEAST_7_2 (ZEND_EXTENSION_API_NO >= AWS_PHP_EXTENSION_API_7_2)
39
+
40
+ ZEND_BEGIN_MODULE_GLOBALS(awscrt)
41
+ long log_level;
42
+ ZEND_END_MODULE_GLOBALS(awscrt)
43
+
44
+ ZEND_EXTERN_MODULE_GLOBALS(awscrt)
45
+
46
+ #define AWSCRT_GLOBAL(v) ZEND_MODULE_GLOBALS_ACCESSOR(awscrt, v)
47
+
48
+ #if AWS_PHP_AT_LEAST_7
49
+ /* PHP 7 takes a zval*, PHP5 takes a zval** */
50
+ # define AWS_PHP_STREAM_FROM_ZVAL(s, z) php_stream_from_zval(s, z)
51
+ #define XRETURN_STRINGL RETURN_STRINGL
52
+ #define XRETURN_STRING RETURN_STRING
53
+ #define XRETVAL_STRINGL RETVAL_STRINGL
54
+ #define XRETVAL_STRING RETVAL_STRING
55
+ #else /* PHP 5.5-5.6 */
56
+ # define AWS_PHP_STREAM_FROM_ZVAL(s, z) php_stream_from_zval(s, &z)
57
+ #define XRETURN_STRINGL(s, l) RETURN_STRINGL(s, l, 1)
58
+ #define XRETURN_STRING(s) RETURN_STRING(s, 1)
59
+ #define XRETVAL_STRINGL(s, l) RETVAL_STRINGL(s, l, 1)
60
+ #define XRETVAL_STRING(s) RETVAL_STRING(s, 1)
61
+ #endif /* PHP 5.x */
62
+
63
+ #include "api.h"
64
+ #include "awscrt_arginfo.h"
65
+
66
+ /* Utility macros borrowed from common */
67
+ #define GLUE(x, y) x y
68
+
69
+ #define RETURN_ARG_COUNT(_1_, _2_, _3_, _4_, _5_, count, ...) count
70
+ #define EXPAND_ARGS(args) RETURN_ARG_COUNT args
71
+ #define COUNT_ARGS_MAX5(...) EXPAND_ARGS((__VA_ARGS__, 5, 4, 3, 2, 1, 0))
72
+
73
+ #define OVERLOAD_MACRO2(name, count) name##count
74
+ #define OVERLOAD_MACRO1(name, count) OVERLOAD_MACRO2(name, count)
75
+ #define OVERLOAD_MACRO(name, count) OVERLOAD_MACRO1(name, count)
76
+
77
+ #define CALL_OVERLOAD(name, ...) GLUE(OVERLOAD_MACRO(name, COUNT_ARGS_MAX5(__VA_ARGS__)), (__VA_ARGS__))
78
+
79
+ #define VARIABLE_LENGTH_ARRAY(type, name, length) type *name = alloca(sizeof(type) * (length))
80
+
81
+ /*
82
+ * PHP utility APIs for this extension
83
+ */
84
+ /*
85
+ * Exception throwing mechanism, will never return
86
+ */
87
+ #define aws_php_throw_exception(...) CALL_OVERLOAD(_AWS_PHP_THROW_EXCEPTION, __VA_ARGS__);
88
+ #define _AWS_PHP_THROW_EXCEPTION5(format, ...) zend_error_noreturn(E_ERROR, format, __VA_ARGS__)
89
+ #define _AWS_PHP_THROW_EXCEPTION4(format, ...) zend_error_noreturn(E_ERROR, format, __VA_ARGS__)
90
+ #define _AWS_PHP_THROW_EXCEPTION3(format, ...) zend_error_noreturn(E_ERROR, format, __VA_ARGS__)
91
+ #define _AWS_PHP_THROW_EXCEPTION2(format, ...) zend_error_noreturn(E_ERROR, format, __VA_ARGS__)
92
+ #define _AWS_PHP_THROW_EXCEPTION1(format) zend_error_noreturn(E_ERROR, format)
93
+
94
+ /**
95
+ * throws an exception resulting from argument parsing, notes the current function name in the exception
96
+ */
97
+ #define aws_php_argparse_fail() \
98
+ do { \
99
+ aws_php_throw_exception("Failed to parse arguments to %s", __func__); \
100
+ } while (0)
101
+
102
+ /**
103
+ * calls zend_parse_parameters() with the arguments and throws an exception if parsing fails
104
+ */
105
+ #define aws_php_parse_parameters(type_spec, ...) \
106
+ do { \
107
+ if (zend_parse_parameters(ZEND_NUM_ARGS(), type_spec, __VA_ARGS__) == FAILURE) { \
108
+ aws_php_argparse_fail(); \
109
+ } \
110
+ } while (0)
111
+
112
+ /**
113
+ * calls zend_parse_parameters_none() and throws an exception if parsing fails
114
+ */
115
+ #define aws_php_parse_parameters_none() \
116
+ do { \
117
+ if (zend_parse_parameters_none() == FAILURE) { \
118
+ aws_php_argparse_fail(); \
119
+ } \
120
+ } while (0)
121
+
122
+ /* PHP/Zend utility functions to work across PHP versions */
123
+ zval *aws_php_zval_new(void);
124
+ void aws_php_zval_dtor(void *zval_ptr);
125
+ bool aws_php_zval_as_bool(zval *z);
126
+ void aws_php_zval_copy(zval *dest, zval *src);
127
+ /**
128
+ * Replacement for ZVAL_STRINGL that is PHP version agnostic
129
+ */
130
+ void aws_php_zval_stringl(zval *val, const char *str, size_t len);
131
+
132
+ /* Thread queue functions for managing PHP's optional threading situation */
133
+ typedef struct _aws_php_task {
134
+ void (*callback)(void *); /* task function */
135
+ void (*dtor)(void *); /* deletes task_data, if non-null */
136
+ void *data;
137
+ } aws_php_task;
138
+
139
+ /* maximum number of queued callbacks to execute at once. Since this is to support single-threaded usage,
140
+ * this can be a fairly small number, as how many callbacks could we reasonably be stacking up?! */
141
+ #define AWS_PHP_THREAD_QUEUE_MAX_DEPTH 32
142
+
143
+ typedef struct _aws_php_thread_queue {
144
+ struct aws_mutex mutex;
145
+ aws_php_task queue[AWS_PHP_THREAD_QUEUE_MAX_DEPTH];
146
+ size_t write_slot;
147
+ aws_thread_id_t thread_id;
148
+ } aws_php_thread_queue;
149
+
150
+ extern aws_php_thread_queue s_aws_php_main_thread_queue;
151
+ bool aws_php_is_main_thread(void);
152
+
153
+ void aws_php_thread_queue_init(aws_php_thread_queue *queue);
154
+ void aws_php_thread_queue_clean_up(aws_php_thread_queue *queue);
155
+ void aws_php_thread_queue_push(aws_php_thread_queue *queue, aws_php_task task);
156
+ bool aws_php_thread_queue_drain(aws_php_thread_queue *queue);
157
+
158
+ /* called from worker thread to wait for the main thread to execute any queued work in PHP */
159
+ void aws_php_thread_queue_yield(aws_php_thread_queue *queue);
160
+
161
+ /* called from PHP thread to wait on async queued jobs, one of which MUST complete the promise */
162
+ void aws_php_thread_queue_wait(aws_php_thread_queue *queue, struct aws_promise *promise);
163
+
164
+ /**
165
+ * generic dispatch mechanism to call a callback provided as a zval with arguments
166
+ * that are converted to zvals based on the arg_types format string
167
+ * Uses the same format string as zend_parse_parameters
168
+ */
169
+ zval aws_php_invoke_callback(zval *callback, const char *arg_types, ...);
170
+
171
+ #endif /* PHP_AWS_CRT_H */
vendor_wpstg/aws/aws-crt-php/ext/php_util.c ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ /**
3
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
4
+ * SPDX-License-Identifier: Apache-2.0.
5
+ */
6
+
7
+ #include "php_aws_crt.h"
8
+
9
+ zval *aws_php_zval_new(void) {
10
+ return emalloc(sizeof(zval));
11
+ }
12
+
13
+ void aws_php_zval_dtor(void *zval_ptr) {
14
+ zval *z = zval_ptr;
15
+ zval_dtor(z);
16
+ efree(z);
17
+ }
18
+
19
+ bool aws_php_zval_as_bool(zval *z) {
20
+ #if AWS_PHP_AT_LEAST_7
21
+ return (Z_TYPE_P(z) == IS_TRUE);
22
+ #else
23
+ return (Z_TYPE_P(z) == IS_BOOL && Z_LVAL_P(z) != 0);
24
+ #endif
25
+ }
26
+
27
+ void aws_php_zval_copy(zval *dest, zval *src) {
28
+ #if AWS_PHP_AT_LEAST_7
29
+ ZVAL_COPY(dest, src);
30
+ #else
31
+ ZVAL_COPY_VALUE(dest, src);
32
+ #endif
33
+ }
vendor_wpstg/aws/aws-crt-php/ext/signing.c ADDED
@@ -0,0 +1,374 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ * SPDX-License-Identifier: Apache-2.0.
4
+ */
5
+
6
+ #include "php_aws_crt.h"
7
+
8
+ PHP_FUNCTION(aws_crt_signing_config_aws_new) {
9
+ if (zend_parse_parameters_none() == FAILURE) {
10
+ RETURN_NULL();
11
+ }
12
+
13
+ aws_crt_signing_config_aws *signing_config = aws_crt_signing_config_aws_new();
14
+ RETURN_LONG((zend_ulong)signing_config);
15
+ }
16
+
17
+ PHP_FUNCTION(aws_crt_signing_config_aws_release) {
18
+ zend_ulong php_signing_config = 0;
19
+
20
+ aws_php_parse_parameters("l", &php_signing_config);
21
+
22
+ aws_crt_signing_config_aws *signing_config = (void *)php_signing_config;
23
+ aws_crt_signing_config_aws_release(signing_config);
24
+ }
25
+
26
+ PHP_FUNCTION(aws_crt_signing_config_aws_set_algorithm) {
27
+ zend_ulong php_signing_config = 0;
28
+ zend_ulong php_algorithm = 0;
29
+
30
+ aws_php_parse_parameters("ll", &php_signing_config, &php_algorithm);
31
+
32
+ aws_crt_signing_config_aws *signing_config = (void *)php_signing_config;
33
+ aws_crt_signing_algorithm algorithm = php_algorithm;
34
+ aws_crt_signing_config_aws_set_algorithm(signing_config, algorithm);
35
+ }
36
+
37
+ PHP_FUNCTION(aws_crt_signing_config_aws_set_signature_type) {
38
+ zend_ulong php_signing_config = 0;
39
+ zend_ulong php_signature_type = 0;
40
+
41
+ aws_php_parse_parameters("ll", &php_signing_config, &php_signature_type);
42
+
43
+ aws_crt_signing_config_aws *signing_config = (void *)php_signing_config;
44
+ aws_crt_signature_type signature_type = php_signature_type;
45
+ aws_crt_signing_config_aws_set_signature_type(signing_config, signature_type);
46
+ }
47
+
48
+ PHP_FUNCTION(aws_crt_signing_config_aws_set_credentials_provider) {
49
+ zend_ulong php_signing_config = 0;
50
+ zend_ulong php_credentials_provider = 0;
51
+
52
+ aws_php_parse_parameters("ll", &php_signing_config, &php_credentials_provider);
53
+
54
+ aws_crt_signing_config_aws *signing_config = (void *)php_signing_config;
55
+ aws_crt_credentials_provider *credentials_provider = (void *)php_credentials_provider;
56
+ aws_crt_signing_config_aws_set_credentials_provider(signing_config, credentials_provider);
57
+ }
58
+
59
+ PHP_FUNCTION(aws_crt_signing_config_aws_set_region) {
60
+ zend_ulong php_signing_config = 0;
61
+ const char *region = NULL;
62
+ size_t region_len = 0;
63
+
64
+ aws_php_parse_parameters("ls", &php_signing_config, &region, &region_len);
65
+
66
+ aws_crt_signing_config_aws *signing_config = (void *)php_signing_config;
67
+ aws_crt_signing_config_aws_set_region(signing_config, (uint8_t *)region, region_len);
68
+ }
69
+
70
+ PHP_FUNCTION(aws_crt_signing_config_aws_set_service) {
71
+ zend_ulong php_signing_config = 0;
72
+ const char *service = NULL;
73
+ size_t service_len = 0;
74
+
75
+ aws_php_parse_parameters("ls", &php_signing_config, &service, &service_len);
76
+
77
+ aws_crt_signing_config_aws *signing_config = (void *)php_signing_config;
78
+ aws_crt_signing_config_aws_set_service(signing_config, (uint8_t *)service, service_len);
79
+ }
80
+
81
+ PHP_FUNCTION(aws_crt_signing_config_aws_set_use_double_uri_encode) {
82
+ zend_ulong php_signing_config = 0;
83
+ zend_bool php_use_double_uri_encode = 0;
84
+
85
+ aws_php_parse_parameters("lb", &php_signing_config, &php_use_double_uri_encode);
86
+
87
+ aws_crt_signing_config_aws *signing_config = (void *)php_signing_config;
88
+ aws_crt_signing_config_aws_set_use_double_uri_encode(signing_config, php_use_double_uri_encode);
89
+ }
90
+
91
+ PHP_FUNCTION(aws_crt_signing_config_aws_set_should_normalize_uri_path) {
92
+ zend_ulong php_signing_config = 0;
93
+ zend_bool php_should_normalize_uri_path = 0;
94
+
95
+ aws_php_parse_parameters("lb", &php_signing_config, &php_should_normalize_uri_path);
96
+
97
+ aws_crt_signing_config_aws *signing_config = (void *)php_signing_config;
98
+ aws_crt_signing_config_aws_set_should_normalize_uri_path(signing_config, php_should_normalize_uri_path);
99
+ }
100
+
101
+ PHP_FUNCTION(aws_crt_signing_config_aws_set_omit_session_token) {
102
+ zend_ulong php_signing_config = 0;
103
+ zend_bool php_omit_session_token = 0;
104
+
105
+ aws_php_parse_parameters("lb", &php_signing_config, &php_omit_session_token);
106
+
107
+ aws_crt_signing_config_aws *signing_config = (void *)php_signing_config;
108
+ aws_crt_signing_config_aws_set_omit_session_token(signing_config, php_omit_session_token);
109
+ }
110
+
111
+ PHP_FUNCTION(aws_crt_signing_config_aws_set_signed_body_value) {
112
+ zend_ulong php_signing_config = 0;
113
+ const char *signed_body_value = NULL;
114
+ size_t signed_body_value_len = 0;
115
+
116
+ aws_php_parse_parameters("ls", &php_signing_config, &signed_body_value, &signed_body_value_len);
117
+
118
+ aws_crt_signing_config_aws *signing_config = (void *)php_signing_config;
119
+ aws_crt_signing_config_aws_set_signed_body_value(
120
+ signing_config, (uint8_t *)signed_body_value, signed_body_value_len);
121
+ }
122
+
123
+ PHP_FUNCTION(aws_crt_signing_config_aws_set_signed_body_header_type) {
124
+ zend_ulong php_signing_config = 0;
125
+ zend_ulong php_signed_body_header_type = 0;
126
+
127
+ aws_php_parse_parameters("ll", &php_signing_config, &php_signed_body_header_type);
128
+
129
+ aws_crt_signing_config_aws *signing_config = (void *)php_signing_config;
130
+ aws_crt_signed_body_header_type signed_body_header_type = php_signed_body_header_type;
131
+ aws_crt_signing_config_aws_set_signed_body_header_type(signing_config, signed_body_header_type);
132
+ }
133
+
134
+ PHP_FUNCTION(aws_crt_signing_config_aws_set_expiration_in_seconds) {
135
+ zend_ulong php_signing_config = 0;
136
+ zend_ulong php_expiration_in_seconds = 0;
137
+
138
+ aws_php_parse_parameters("ll", &php_signing_config, &php_expiration_in_seconds);
139
+
140
+ aws_crt_signing_config_aws *signing_config = (void *)php_signing_config;
141
+ aws_crt_signing_config_aws_set_expiration_in_seconds(signing_config, php_expiration_in_seconds);
142
+ }
143
+
144
+ PHP_FUNCTION(aws_crt_signing_config_aws_set_date) {
145
+ zend_ulong php_signing_config = 0;
146
+ zend_ulong php_timestamp = 0;
147
+
148
+ aws_php_parse_parameters("ll", &php_signing_config, &php_timestamp);
149
+
150
+ aws_crt_signing_config_aws *signing_config = (void *)php_signing_config;
151
+ aws_crt_signing_config_aws_set_date(signing_config, php_timestamp);
152
+ }
153
+
154
+ typedef struct _should_sign_header_data {
155
+ zval *should_sign_header;
156
+ zval *header_name;
157
+ bool result;
158
+ } should_sign_header_data;
159
+
160
+ static void should_sign_header_task(void *data) {
161
+ should_sign_header_data *task = data;
162
+ zval result = aws_php_invoke_callback(task->should_sign_header, "z", task->header_name);
163
+ task->result = aws_php_zval_as_bool(&result);
164
+ zval_dtor(&result);
165
+ }
166
+
167
+ static bool aws_php_should_sign_header(const char *header_name, size_t header_length, void *user_data) {
168
+ zval php_header_name;
169
+ aws_php_zval_stringl(&php_header_name, header_name, header_length);
170
+
171
+ should_sign_header_data task_data = {
172
+ .should_sign_header = user_data,
173
+ .header_name = &php_header_name,
174
+ .result = false,
175
+ };
176
+
177
+ aws_php_task task = {
178
+ .callback = should_sign_header_task,
179
+ .data = &task_data,
180
+ };
181
+
182
+ aws_php_thread_queue_push(&s_aws_php_main_thread_queue, task);
183
+ aws_php_thread_queue_yield(&s_aws_php_main_thread_queue);
184
+
185
+ zval_dtor(&php_header_name);
186
+
187
+ return task_data.result;
188
+ }
189
+
190
+ PHP_FUNCTION(aws_crt_signing_config_aws_set_should_sign_header_fn) {
191
+ zend_ulong php_signing_config = 0;
192
+ zval *php_should_sign_header = NULL;
193
+
194
+ aws_php_parse_parameters("lz", &php_signing_config, &php_should_sign_header);
195
+
196
+ aws_crt_signing_config_aws *signing_config = (void *)php_signing_config;
197
+
198
+ /* copy/retain PHP callback, add as user data for signing_config resource */
199
+ zval *should_sign_header = aws_php_zval_new();
200
+ aws_php_zval_copy(should_sign_header, php_should_sign_header);
201
+ aws_crt_resource_set_user_data(signing_config, should_sign_header, aws_php_zval_dtor);
202
+
203
+ aws_crt_signing_config_aws_set_should_sign_header_fn(
204
+ signing_config, aws_php_should_sign_header, should_sign_header);
205
+ }
206
+
207
+ PHP_FUNCTION(aws_crt_signable_new_from_http_request) {
208
+ zend_ulong php_http_message = 0;
209
+
210
+ aws_php_parse_parameters("l", &php_http_message);
211
+
212
+ const aws_crt_http_message *http_message = (void *)php_http_message;
213
+ aws_crt_signable *signable = aws_crt_signable_new_from_http_request(http_message);
214
+ RETURN_LONG((zend_ulong)signable);
215
+ }
216
+
217
+ PHP_FUNCTION(aws_crt_signable_new_from_chunk) {
218
+ zend_ulong php_input_stream = 0;
219
+ const char *previous_signature = NULL;
220
+ size_t previous_signature_len = 0;
221
+
222
+ aws_php_parse_parameters("ls", &php_input_stream, &previous_signature, &previous_signature_len);
223
+
224
+ aws_crt_input_stream *input_stream = (void *)php_input_stream;
225
+ aws_crt_signable *signable =
226
+ aws_crt_signable_new_from_chunk(input_stream, (uint8_t *)previous_signature, previous_signature_len);
227
+ RETURN_LONG((zend_ulong)signable);
228
+ }
229
+
230
+ PHP_FUNCTION(aws_crt_signable_new_from_canonical_request) {
231
+ const char *canonical_request = NULL;
232
+ size_t canonical_request_len = 0;
233
+
234
+ aws_crt_signable *signable =
235
+ aws_crt_signable_new_from_canonical_request((uint8_t *)canonical_request, canonical_request_len);
236
+ RETURN_LONG((zend_ulong)signable);
237
+ }
238
+
239
+ PHP_FUNCTION(aws_crt_signable_release) {
240
+ zend_ulong php_signable = 0;
241
+
242
+ aws_php_parse_parameters("l", &php_signable);
243
+
244
+ aws_crt_signable *signable = (void *)php_signable;
245
+ aws_crt_signable_release(signable);
246
+ }
247
+
248
+ PHP_FUNCTION(aws_crt_signing_result_release) {
249
+ zend_ulong php_signing_result = 0;
250
+
251
+ aws_php_parse_parameters("l", &php_signing_result);
252
+ aws_crt_signing_result *result = (void *)php_signing_result;
253
+ aws_crt_signing_result_release(result);
254
+ }
255
+
256
+ PHP_FUNCTION(aws_crt_signing_result_apply_to_http_request) {
257
+ zend_ulong php_signing_result = 0;
258
+ zend_ulong php_http_request = 0;
259
+
260
+ aws_php_parse_parameters("ll", &php_signing_result, &php_http_request);
261
+ aws_crt_signing_result *result = (void *)php_signing_result;
262
+ aws_crt_http_message *request = (void *)php_http_request;
263
+
264
+ if (aws_crt_signing_result_apply_to_http_request(result, request)) {
265
+ aws_php_throw_exception(
266
+ "Failed to apply signing result to HTTP request: %s", aws_crt_error_name(aws_crt_last_error()));
267
+ }
268
+ }
269
+
270
+ typedef struct _signing_state {
271
+ struct aws_promise *promise;
272
+ zval *on_complete;
273
+ aws_crt_signing_result *signing_result;
274
+ int error_code;
275
+ } signing_state;
276
+
277
+ /* called on main thread to deliver result to php */
278
+ static void s_sign_aws_complete(void *data) {
279
+ signing_state *state = data;
280
+ zval *on_complete = state->on_complete;
281
+ aws_php_invoke_callback(on_complete, "ll", (zend_ulong)state->signing_result, (zend_ulong)state->error_code);
282
+ }
283
+
284
+ /* called from signing process in aws_sign_request_aws */
285
+ static void s_on_sign_request_aws_complete(aws_crt_signing_result *result, int error_code, void *user_data) {
286
+ signing_state *state = user_data;
287
+ struct aws_promise *promise = state->promise;
288
+
289
+ state->signing_result = result;
290
+ state->error_code = error_code;
291
+
292
+ /*
293
+ * Must execute PHP callback before this function returns, or signing_result will be killed
294
+ * so the callback is queued back to the main thread and will have run when yield returns
295
+ */
296
+ aws_php_task complete_callback_task = {
297
+ .callback = s_sign_aws_complete,
298
+ .data = state,
299
+ };
300
+ aws_php_thread_queue_push(&s_aws_php_main_thread_queue, complete_callback_task);
301
+ aws_php_thread_queue_yield(&s_aws_php_main_thread_queue);
302
+
303
+ if (error_code) {
304
+ aws_promise_fail(promise, error_code);
305
+ } else {
306
+ aws_promise_complete(promise, result, NULL);
307
+ }
308
+ }
309
+
310
+ PHP_FUNCTION(aws_crt_sign_request_aws) {
311
+ zend_ulong php_signable = 0;
312
+ zend_ulong php_signing_config = 0;
313
+ zval *php_on_complete = 0;
314
+ zend_ulong php_user_data = 0;
315
+
316
+ aws_php_parse_parameters("llzl", &php_signable, &php_signing_config, &php_on_complete, &php_user_data);
317
+
318
+ aws_crt_signable *signable = (void *)php_signable;
319
+ aws_crt_signing_config_aws *signing_config = (void *)php_signing_config;
320
+
321
+ struct aws_promise *promise = aws_promise_new(aws_crt_default_allocator());
322
+ signing_state state = {
323
+ .promise = promise,
324
+ .on_complete = php_on_complete,
325
+ };
326
+ int ret = aws_crt_sign_request_aws(signable, signing_config, s_on_sign_request_aws_complete, &state);
327
+ if (ret != 0) {
328
+ int last_error = aws_crt_last_error();
329
+ aws_promise_fail(promise, last_error);
330
+ aws_php_throw_exception(
331
+ "aws_crt_sign_request_aws: error starting signing process: %s", aws_crt_error_name(last_error));
332
+ }
333
+
334
+ aws_php_thread_queue_wait(&s_aws_php_main_thread_queue, promise);
335
+
336
+ done:
337
+ aws_promise_release(promise);
338
+ RETURN_LONG(ret);
339
+ }
340
+
341
+ PHP_FUNCTION(aws_crt_test_verify_sigv4a_signing) {
342
+ zend_ulong php_signable = 0;
343
+ zend_ulong php_signing_config = 0;
344
+ const char *expected_canonical_request = NULL;
345
+ size_t expected_canonical_request_len = 0;
346
+ const char *signature = NULL;
347
+ size_t signature_len = 0;
348
+ const char *ecc_key_pub_x = NULL;
349
+ size_t ecc_key_pub_x_len = 0;
350
+ const char *ecc_key_pub_y = NULL;
351
+ size_t ecc_key_pub_y_len = 0;
352
+
353
+ aws_php_parse_parameters(
354
+ "llssss",
355
+ &php_signable,
356
+ &php_signing_config,
357
+ &expected_canonical_request,
358
+ &expected_canonical_request_len,
359
+ &signature,
360
+ &signature_len,
361
+ &ecc_key_pub_x,
362
+ &ecc_key_pub_x_len,
363
+ &ecc_key_pub_y,
364
+ &ecc_key_pub_y_len);
365
+
366
+ const aws_crt_signable *signable = (void *)php_signable;
367
+ const aws_crt_signing_config *signing_config = (void *)php_signing_config;
368
+
369
+ bool result = AWS_OP_SUCCESS ==
370
+ aws_crt_test_verify_sigv4a_signing(
371
+ signable, signing_config, expected_canonical_request, signature, ecc_key_pub_x, ecc_key_pub_y);
372
+
373
+ RETURN_BOOL(result);
374
+ }
vendor_wpstg/aws/aws-crt-php/ext/stream.c ADDED
@@ -0,0 +1,148 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ * SPDX-License-Identifier: Apache-2.0.
4
+ */
5
+
6
+ #include "php_aws_crt.h"
7
+
8
+ /* PHP streams info:
9
+ * https://git.php.net/?p=php-src.git;a=blob;f=docs/streams.md;h=0ec3846d68bf70067297d8a6c691d2591c49b48a;hb=HEAD
10
+ * https://github.com/php/php-src/blob/PHP-5.6.0/main/php_streams.h
11
+ */
12
+
13
+ PHP_FUNCTION(aws_crt_input_stream_options_new) {
14
+ if (zend_parse_parameters_none() == FAILURE) {
15
+ aws_php_argparse_fail();
16
+ }
17
+
18
+ aws_crt_input_stream_options *options = aws_crt_input_stream_options_new();
19
+ RETURN_LONG((zend_ulong)options);
20
+ }
21
+
22
+ PHP_FUNCTION(aws_crt_input_stream_options_release) {
23
+ zend_ulong php_options = 0;
24
+
25
+ aws_php_parse_parameters("l", &php_options);
26
+
27
+ aws_crt_input_stream_options *options = (void *)php_options;
28
+ aws_crt_input_stream_options_release(options);
29
+ }
30
+
31
+ PHP_FUNCTION(aws_crt_input_stream_options_set_user_data) {
32
+ zend_ulong php_options = 0;
33
+ zval *user_data = NULL;
34
+
35
+ aws_php_parse_parameters("lz", &php_options, &user_data);
36
+
37
+ aws_crt_input_stream_options *options = (void *)php_options;
38
+ php_stream *stream = NULL;
39
+ AWS_PHP_STREAM_FROM_ZVAL(stream, user_data);
40
+ aws_crt_input_stream_options_set_user_data(options, stream);
41
+ }
42
+
43
+ static int s_php_stream_seek(void *user_data, int64_t offset, aws_crt_input_stream_seek_basis basis) {
44
+ php_stream *stream = user_data;
45
+ return php_stream_seek(stream, offset, basis);
46
+ }
47
+
48
+ static int s_php_stream_read(void *user_data, uint8_t *dest, size_t dest_length) {
49
+ php_stream *stream = user_data;
50
+ return php_stream_read(stream, (char *)dest, dest_length) != 0;
51
+ }
52
+
53
+ static int s_php_stream_get_length(void *user_data, int64_t *out_length) {
54
+ php_stream *stream = user_data;
55
+ size_t pos = php_stream_tell(stream);
56
+ php_stream_seek(stream, 0, SEEK_END);
57
+ *out_length = php_stream_tell(stream);
58
+ php_stream_seek(stream, pos, SEEK_SET);
59
+ return 0;
60
+ }
61
+
62
+ static int s_php_stream_get_status(void *user_data, aws_crt_input_stream_status *out_status) {
63
+ php_stream *stream = user_data;
64
+ out_status->is_valid = stream != NULL;
65
+ /* We would like to use php_stream_eof here, but certain streams (notably php://memory)
66
+ * are not actually capable of EOF, so we get to do it the hard way */
67
+ int64_t length = 0;
68
+ int64_t pos = 0;
69
+ s_php_stream_get_length(stream, &length);
70
+ pos = php_stream_tell(stream);
71
+ out_status->is_end_of_stream = pos == length;
72
+ return 0;
73
+ }
74
+
75
+ static void s_php_stream_destroy(void *user_data) {
76
+ (void)user_data;
77
+ /* no op, stream will be freed by PHP refcount dropping from InputStream::stream */
78
+ }
79
+
80
+ PHP_FUNCTION(aws_crt_input_stream_new) {
81
+ zend_ulong php_options = 0;
82
+
83
+ aws_php_parse_parameters("l", &php_options);
84
+
85
+ aws_crt_input_stream_options *options = (void *)php_options;
86
+ aws_crt_input_stream_options_set_seek(options, s_php_stream_seek);
87
+ aws_crt_input_stream_options_set_read(options, s_php_stream_read);
88
+ aws_crt_input_stream_options_set_get_status(options, s_php_stream_get_status);
89
+ aws_crt_input_stream_options_set_get_length(options, s_php_stream_get_length);
90
+ aws_crt_input_stream_options_set_destroy(options, s_php_stream_destroy);
91
+ aws_crt_input_stream *stream = aws_crt_input_stream_new(options);
92
+ RETURN_LONG((zend_ulong)stream);
93
+ }
94
+
95
+ PHP_FUNCTION(aws_crt_input_stream_release) {
96
+ zend_ulong php_stream = 0;
97
+
98
+ aws_php_parse_parameters("l", &php_stream);
99
+
100
+ aws_crt_input_stream *stream = (void *)php_stream;
101
+ aws_crt_input_stream_release(stream);
102
+ }
103
+
104
+ PHP_FUNCTION(aws_crt_input_stream_seek) {
105
+ zend_ulong php_stream = 0;
106
+ zend_ulong offset = 0;
107
+ zend_ulong basis = 0;
108
+
109
+ aws_php_parse_parameters("lll", &php_stream, &offset, &basis);
110
+
111
+ aws_crt_input_stream *stream = (void *)php_stream;
112
+ RETURN_LONG(aws_crt_input_stream_seek(stream, offset, basis));
113
+ }
114
+
115
+ PHP_FUNCTION(aws_crt_input_stream_read) {
116
+ zend_ulong php_stream = 0;
117
+ zend_ulong length = 0;
118
+
119
+ aws_php_parse_parameters("ll", &php_stream, &length);
120
+
121
+ aws_crt_input_stream *stream = (void *)php_stream;
122
+ uint8_t *buf = emalloc(length);
123
+ int ret = aws_crt_input_stream_read(stream, buf, length);
124
+ XRETVAL_STRINGL((const char *)buf, length);
125
+ efree(buf);
126
+ }
127
+
128
+ PHP_FUNCTION(aws_crt_input_stream_eof) {
129
+ zend_ulong php_stream = 0;
130
+
131
+ aws_php_parse_parameters("l", &php_stream);
132
+
133
+ aws_crt_input_stream *stream = (void *)php_stream;
134
+ aws_crt_input_stream_status status = {0};
135
+ aws_crt_input_stream_get_status(stream, &status);
136
+ RETURN_BOOL(status.is_end_of_stream);
137
+ }
138
+
139
+ PHP_FUNCTION(aws_crt_input_stream_get_length) {
140
+ zend_ulong php_stream = 0;
141
+
142
+ aws_php_parse_parameters("l", &php_stream);
143
+
144
+ aws_crt_input_stream *stream = (void *)php_stream;
145
+ int64_t length = 0;
146
+ aws_crt_input_stream_get_length(stream, &length);
147
+ RETURN_LONG(length);
148
+ }
vendor_wpstg/aws/aws-crt-php/format-check.sh ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash
2
+
3
+ if [[ -z $CLANG_FORMAT ]] ; then
4
+ CLANG_FORMAT=clang-format
5
+ fi
6
+
7
+ if NOT type $CLANG_FORMAT 2> /dev/null ; then
8
+ echo "No appropriate clang-format found."
9
+ exit 1
10
+ fi
11
+
12
+ FAIL=0
13
+ SOURCE_FILES=`find src ext -type f \( -name '*.c' \)`
14
+ for i in $SOURCE_FILES
15
+ do
16
+ $CLANG_FORMAT -output-replacements-xml $i | grep -c "<replacement " > /dev/null
17
+ if [ $? -ne 1 ]
18
+ then
19
+ echo "$i failed clang-format check."
20
+ FAIL=1
21
+ fi
22
+ done
23
+
24
+ exit $FAIL
vendor_wpstg/aws/aws-crt-php/gen_api.php ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPStaging\Vendor;
4
+
5
+ $source = "php://stdin";
6
+ if (isset($argv[1])) {
7
+ $source = $argv[1];
8
+ }
9
+ $input_lines = \file($source);
10
+ foreach ($input_lines as $line) {
11
+ // Strip AWS_EXTERN_C_BEGIN/END
12
+ if (\preg_match('/AWS_EXTERN_C/', $line)) {
13
+ continue;
14
+ }
15
+ // Strip macros/includes
16
+ if (\preg_match('/^#/', $line)) {
17
+ continue;
18
+ }
19
+ // Strip visibility attributes
20
+ $line = \str_replace('AWS_CRT_API ', '', $line);
21
+ echo $line;
22
+ }
vendor_wpstg/aws/aws-crt-php/gen_stub.php ADDED
@@ -0,0 +1,1641 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env php
2
+ <?php
3
+ declare (strict_types=1);
4
+ namespace WPStaging\Vendor;
5
+
6
+ // This is a copy of the gen_stub.php from the PHP build scripts, modified to
7
+ // generate macros that we can abstract across versions of PHP
8
+ use WPStaging\Vendor\PhpParser\Comment\Doc as DocComment;
9
+ use WPStaging\Vendor\PhpParser\Node;
10
+ use WPStaging\Vendor\PhpParser\Node\Expr;
11
+ use WPStaging\Vendor\PhpParser\Node\Name;
12
+ use WPStaging\Vendor\PhpParser\Node\Stmt;
13
+ use WPStaging\Vendor\PhpParser\Node\Stmt\Class_;
14
+ use WPStaging\Vendor\PhpParser\PrettyPrinter\Standard;
15
+ use WPStaging\Vendor\PhpParser\PrettyPrinterAbstract;
16
+ \error_reporting(\E_ALL);
17
+ /**
18
+ * @return FileInfo[]
19
+ */
20
+ function processDirectory(string $dir, \WPStaging\Vendor\Context $context) : array
21
+ {
22
+ $fileInfos = [];
23
+ $it = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($dir), \RecursiveIteratorIterator::LEAVES_ONLY);
24
+ foreach ($it as $file) {
25
+ $pathName = $file->getPathName();
26
+ if (\preg_match('/\\.stub\\.php$/', $pathName)) {
27
+ $fileInfo = \WPStaging\Vendor\processStubFile($pathName, $context);
28
+ if ($fileInfo) {
29
+ $fileInfos[] = $fileInfo;
30
+ }
31
+ }
32
+ }
33
+ return $fileInfos;
34
+ }
35
+ function processStubFile(string $stubFile, \WPStaging\Vendor\Context $context) : ?\WPStaging\Vendor\FileInfo
36
+ {
37
+ try {
38
+ if (!\file_exists($stubFile)) {
39
+ throw new \Exception("File {$stubFile} does not exist");
40
+ }
41
+ $arginfoFile = \str_replace('.stub.php', '_arginfo.h', $stubFile);
42
+ $legacyFile = \str_replace('.stub.php', '_legacy_arginfo.h', $stubFile);
43
+ $stubCode = \file_get_contents($stubFile);
44
+ $stubHash = \WPStaging\Vendor\computeStubHash($stubCode);
45
+ $oldStubHash = \WPStaging\Vendor\extractStubHash($arginfoFile);
46
+ if ($stubHash === $oldStubHash && !$context->forceParse) {
47
+ /* Stub file did not change, do not regenerate. */
48
+ return null;
49
+ }
50
+ \WPStaging\Vendor\initPhpParser();
51
+ $fileInfo = \WPStaging\Vendor\parseStubFile($stubCode);
52
+ $arginfoCode = \WPStaging\Vendor\generateArgInfoCode($fileInfo, $stubHash, $context->minimalArgInfo);
53
+ if (($context->forceRegeneration || $stubHash !== $oldStubHash) && \file_put_contents($arginfoFile, $arginfoCode)) {
54
+ echo "Saved {$arginfoFile}\n";
55
+ }
56
+ if ($fileInfo->generateLegacyArginfo) {
57
+ foreach ($fileInfo->getAllFuncInfos() as $funcInfo) {
58
+ $funcInfo->discardInfoForOldPhpVersions();
59
+ }
60
+ $arginfoCode = \WPStaging\Vendor\generateArgInfoCode($fileInfo, $stubHash, $context->minimalArgInfo);
61
+ if (($context->forceRegeneration || $stubHash !== $oldStubHash) && \file_put_contents($legacyFile, $arginfoCode)) {
62
+ echo "Saved {$legacyFile}\n";
63
+ }
64
+ }
65
+ return $fileInfo;
66
+ } catch (\Exception $e) {
67
+ echo "In {$stubFile}:\n{$e->getMessage()}\n";
68
+ exit(1);
69
+ }
70
+ }
71
+ function computeStubHash(string $stubCode) : string
72
+ {
73
+ return \sha1(\str_replace("\r\n", "\n", $stubCode));
74
+ }
75
+ function extractStubHash(string $arginfoFile) : ?string
76
+ {
77
+ if (!\file_exists($arginfoFile)) {
78
+ return null;
79
+ }
80
+ $arginfoCode = \file_get_contents($arginfoFile);
81
+ if (!\preg_match('/\\* Stub hash: ([0-9a-f]+) \\*/', $arginfoCode, $matches)) {
82
+ return null;
83
+ }
84
+ return $matches[1];
85
+ }
86
+ class Context
87
+ {
88
+ /** @var bool */
89
+ public $forceParse = \false;
90
+ /** @var bool */
91
+ public $forceRegeneration = \false;
92
+ /** @var bool */
93
+ public $minimalArgInfo = \false;
94
+ }
95
+ class SimpleType
96
+ {
97
+ /** @var string */
98
+ public $name;
99
+ /** @var bool */
100
+ public $isBuiltin;
101
+ public function __construct(string $name, bool $isBuiltin)
102
+ {
103
+ $this->name = $name;
104
+ $this->isBuiltin = $isBuiltin;
105
+ }
106
+ public static function fromNode(\WPStaging\Vendor\PhpParser\Node $node) : \WPStaging\Vendor\SimpleType
107
+ {
108
+ if ($node instanceof \WPStaging\Vendor\PhpParser\Node\Name) {
109
+ if ($node->toLowerString() === 'static') {
110
+ // PHP internally considers "static" a builtin type.
111
+ return new \WPStaging\Vendor\SimpleType($node->toString(), \true);
112
+ }
113
+ \assert($node->isFullyQualified());
114
+ return new \WPStaging\Vendor\SimpleType($node->toString(), \false);
115
+ }
116
+ if ($node instanceof \WPStaging\Vendor\PhpParser\Node\Identifier) {
117
+ return new \WPStaging\Vendor\SimpleType($node->toString(), \true);
118
+ }
119
+ throw new \Exception("Unexpected node type");
120
+ }
121
+ public static function fromPhpDoc(string $type) : \WPStaging\Vendor\SimpleType
122
+ {
123
+ switch (\strtolower($type)) {
124
+ case "void":
125
+ case "null":
126
+ case "false":
127
+ case "bool":
128
+ case "int":
129
+ case "float":
130
+ case "string":
131
+ case "array":
132
+ case "iterable":
133
+ case "object":
134
+ case "resource":
135
+ case "mixed":
136
+ case "self":
137
+ case "static":
138
+ return new \WPStaging\Vendor\SimpleType(\strtolower($type), \true);
139
+ }
140
+ if (\strpos($type, "[]") !== \false) {
141
+ return new \WPStaging\Vendor\SimpleType("array", \true);
142
+ }
143
+ return new \WPStaging\Vendor\SimpleType($type, \false);
144
+ }
145
+ public static function null() : \WPStaging\Vendor\SimpleType
146
+ {
147
+ return new \WPStaging\Vendor\SimpleType("null", \true);
148
+ }
149
+ public static function void() : \WPStaging\Vendor\SimpleType
150
+ {
151
+ return new \WPStaging\Vendor\SimpleType("void", \true);
152
+ }
153
+ public function isNull() : bool
154
+ {
155
+ return $this->isBuiltin && $this->name === 'null';
156
+ }
157
+ public function toTypeCode() : string
158
+ {
159
+ \assert($this->isBuiltin);
160
+ switch (\strtolower($this->name)) {
161
+ case "bool":
162
+ return "_IS_BOOL";
163
+ case "int":
164
+ return "IS_LONG";
165
+ case "float":
166
+ return "IS_DOUBLE";
167
+ case "string":
168
+ return "IS_STRING";
169
+ case "array":
170
+ return "IS_ARRAY";
171
+ case "object":
172
+ return "IS_OBJECT";
173
+ case "void":
174
+ return "IS_VOID";
175
+ case "callable":
176
+ return "IS_CALLABLE";
177
+ case "iterable":
178
+ return "IS_ITERABLE";
179
+ case "mixed":
180
+ return "IS_MIXED";
181
+ case "static":
182
+ return "IS_STATIC";
183
+ default:
184
+ throw new \Exception("Not implemented: {$this->name}");
185
+ }
186
+ }
187
+ public function toTypeMask()
188
+ {
189
+ \assert($this->isBuiltin);
190
+ switch (\strtolower($this->name)) {
191
+ case "null":
192
+ return "MAY_BE_NULL";
193
+ case "false":
194
+ return "MAY_BE_FALSE";
195
+ case "bool":
196
+ return "MAY_BE_BOOL";
197
+ case "int":
198
+ return "MAY_BE_LONG";
199
+ case "float":
200
+ return "MAY_BE_DOUBLE";
201
+ case "string":
202
+ return "MAY_BE_STRING";
203
+ case "array":
204
+ return "MAY_BE_ARRAY";
205
+ case "object":
206
+ return "MAY_BE_OBJECT";
207
+ case "callable":
208
+ return "MAY_BE_CALLABLE";
209
+ case "mixed":
210
+ return "MAY_BE_ANY";
211
+ case "static":
212
+ return "MAY_BE_STATIC";
213
+ default:
214
+ throw new \Exception("Not implemented: {$this->name}");
215
+ }
216
+ }
217
+ public function toEscapedName() : string
218
+ {
219
+ return \str_replace('\\', '\\\\', $this->name);
220
+ }
221
+ public function equals(\WPStaging\Vendor\SimpleType $other)
222
+ {
223
+ return $this->name === $other->name && $this->isBuiltin === $other->isBuiltin;
224
+ }
225
+ }
226
+ class Type
227
+ {
228
+ /** @var SimpleType[] $types */
229
+ public $types;
230
+ public function __construct(array $types)
231
+ {
232
+ $this->types = $types;
233
+ }
234
+ public static function fromNode(\WPStaging\Vendor\PhpParser\Node $node) : \WPStaging\Vendor\Type
235
+ {
236
+ if ($node instanceof \WPStaging\Vendor\PhpParser\Node\UnionType) {
237
+ return new \WPStaging\Vendor\Type(\array_map(['SimpleType', 'fromNode'], $node->types));
238
+ }
239
+ if ($node instanceof \WPStaging\Vendor\PhpParser\Node\NullableType) {
240
+ return new \WPStaging\Vendor\Type([\WPStaging\Vendor\SimpleType::fromNode($node->type), \WPStaging\Vendor\SimpleType::null()]);
241
+ }
242
+ return new \WPStaging\Vendor\Type([\WPStaging\Vendor\SimpleType::fromNode($node)]);
243
+ }
244
+ public static function fromPhpDoc(string $phpDocType)
245
+ {
246
+ $types = \explode("|", $phpDocType);
247
+ $simpleTypes = [];
248
+ foreach ($types as $type) {
249
+ $simpleTypes[] = \WPStaging\Vendor\SimpleType::fromPhpDoc($type);
250
+ }
251
+ return new \WPStaging\Vendor\Type($simpleTypes);
252
+ }
253
+ public function isNullable() : bool
254
+ {
255
+ foreach ($this->types as $type) {
256
+ if ($type->isNull()) {
257
+ return \true;
258
+ }
259
+ }
260
+ return \false;
261
+ }
262
+ public function getWithoutNull() : \WPStaging\Vendor\Type
263
+ {
264
+ return new \WPStaging\Vendor\Type(\array_filter($this->types, function (\WPStaging\Vendor\SimpleType $type) {
265
+ return !$type->isNull();
266
+ }));
267
+ }
268
+ public function tryToSimpleType() : ?\WPStaging\Vendor\SimpleType
269
+ {
270
+ $withoutNull = $this->getWithoutNull();
271
+ if (\count($withoutNull->types) === 1) {
272
+ return $withoutNull->types[0];
273
+ }
274
+ return null;
275
+ }
276
+ public function toArginfoType() : ?\WPStaging\Vendor\ArginfoType
277
+ {
278
+ $classTypes = [];
279
+ $builtinTypes = [];
280
+ foreach ($this->types as $type) {
281
+ if ($type->isBuiltin) {
282
+ $builtinTypes[] = $type;
283
+ } else {
284
+ $classTypes[] = $type;
285
+ }
286
+ }
287
+ return new \WPStaging\Vendor\ArginfoType($classTypes, $builtinTypes);
288
+ }
289
+ public static function equals(?\WPStaging\Vendor\Type $a, ?\WPStaging\Vendor\Type $b) : bool
290
+ {
291
+ if ($a === null || $b === null) {
292
+ return $a === $b;
293
+ }
294
+ if (\count($a->types) !== \count($b->types)) {
295
+ return \false;
296
+ }
297
+ for ($i = 0; $i < \count($a->types); $i++) {
298
+ if (!$a->types[$i]->equals($b->types[$i])) {
299
+ return \false;
300
+ }
301
+ }
302
+ return \true;
303
+ }
304
+ public function __toString()
305
+ {
306
+ if ($this->types === null) {
307
+ return 'mixed';
308
+ }
309
+ return \implode('|', \array_map(function ($type) {
310
+ return $type->name;
311
+ }, $this->types));
312
+ }
313
+ }
314
+ class ArginfoType
315
+ {
316
+ /** @var ClassType[] $classTypes */
317
+ public $classTypes;
318
+ /** @var SimpleType[] $builtinTypes */
319
+ private $builtinTypes;
320
+ public function __construct(array $classTypes, array $builtinTypes)
321
+ {
322
+ $this->classTypes = $classTypes;
323
+ $this->builtinTypes = $builtinTypes;
324
+ }
325
+ public function hasClassType() : bool
326
+ {
327
+ return !empty($this->classTypes);
328
+ }
329
+ public function toClassTypeString() : string
330
+ {
331
+ return \implode('|', \array_map(function (\WPStaging\Vendor\SimpleType $type) {
332
+ return $type->toEscapedName();
333
+ }, $this->classTypes));
334
+ }
335
+ public function toTypeMask() : string
336
+ {
337
+ if (empty($this->builtinTypes)) {
338
+ return '0';
339
+ }
340
+ return \implode('|', \array_map(function (\WPStaging\Vendor\SimpleType $type) {
341
+ return $type->toTypeMask();
342
+ }, $this->builtinTypes));
343
+ }
344
+ }
345
+ class ArgInfo
346
+ {
347
+ const SEND_BY_VAL = 0;
348
+ const SEND_BY_REF = 1;
349
+ const SEND_PREFER_REF = 2;
350
+ /** @var string */
351
+ public $name;
352
+ /** @var int */
353
+ public $sendBy;
354
+ /** @var bool */
355
+ public $isVariadic;
356
+ /** @var Type|null */
357
+ public $type;
358
+ /** @var Type|null */
359
+ public $phpDocType;
360
+ /** @var string|null */
361
+ public $defaultValue;
362
+ public function __construct(string $name, int $sendBy, bool $isVariadic, ?\WPStaging\Vendor\Type $type, ?\WPStaging\Vendor\Type $phpDocType, ?string $defaultValue)
363
+ {
364
+ $this->name = $name;
365
+ $this->sendBy = $sendBy;
366
+ $this->isVariadic = $isVariadic;
367
+ $this->type = $type;
368
+ $this->phpDocType = $phpDocType;
369
+ $this->defaultValue = $defaultValue;
370
+ }
371
+ public function equals(\WPStaging\Vendor\ArgInfo $other) : bool
372
+ {
373
+ return $this->name === $other->name && $this->sendBy === $other->sendBy && $this->isVariadic === $other->isVariadic && \WPStaging\Vendor\Type::equals($this->type, $other->type) && $this->defaultValue === $other->defaultValue;
374
+ }
375
+ public function getSendByString() : string
376
+ {
377
+ switch ($this->sendBy) {
378
+ case self::SEND_BY_VAL:
379
+ return "0";
380
+ case self::SEND_BY_REF:
381
+ return "1";
382
+ case self::SEND_PREFER_REF:
383
+ return "ZEND_SEND_PREFER_REF";
384
+ }
385
+ throw new \Exception("Invalid sendBy value");
386
+ }
387
+ public function getMethodSynopsisType() : \WPStaging\Vendor\Type
388
+ {
389
+ if ($this->type) {
390
+ return $this->type;
391
+ }
392
+ if ($this->phpDocType) {
393
+ return $this->phpDocType;
394
+ }
395
+ throw new \Exception("A parameter must have a type");
396
+ }
397
+ public function hasProperDefaultValue() : bool
398
+ {
399
+ return $this->defaultValue !== null && $this->defaultValue !== "UNKNOWN";
400
+ }
401
+ public function getDefaultValueAsArginfoString() : string
402
+ {
403
+ if ($this->hasProperDefaultValue()) {
404
+ return '"' . \addslashes($this->defaultValue) . '"';
405
+ }
406
+ return "NULL";
407
+ }
408
+ public function getDefaultValueAsMethodSynopsisString() : ?string
409
+ {
410
+ if ($this->defaultValue === null) {
411
+ return null;
412
+ }
413
+ switch ($this->defaultValue) {
414
+ case 'UNKNOWN':
415
+ return null;
416
+ case 'false':
417
+ case 'true':
418
+ case 'null':
419
+ return "&{$this->defaultValue};";
420
+ }
421
+ return $this->defaultValue;
422
+ }
423
+ }
424
+ interface FunctionOrMethodName
425
+ {
426
+ public function getDeclaration() : string;
427
+ public function getArgInfoName() : string;
428
+ public function getMethodSynopsisFilename() : string;
429
+ public function __toString() : string;
430
+ public function isMethod() : bool;
431
+ public function isConstructor() : bool;
432
+ public function isDestructor() : bool;
433
+ }
434
+ class FunctionName implements \WPStaging\Vendor\FunctionOrMethodName
435
+ {
436
+ /** @var Name */
437
+ private $name;
438
+ public function __construct(\WPStaging\Vendor\PhpParser\Node\Name $name)
439
+ {
440
+ $this->name = $name;
441
+ }
442
+ public function getNamespace() : ?string
443
+ {
444
+ if ($this->name->isQualified()) {
445
+ return $this->name->slice(0, -1)->toString();
446
+ }
447
+ return null;
448
+ }
449
+ public function getNonNamespacedName() : string
450
+ {
451
+ if ($this->name->isQualified()) {
452
+ throw new \Exception("Namespaced name not supported here");
453
+ }
454
+ return $this->name->toString();
455
+ }
456
+ public function getDeclarationName() : string
457
+ {
458
+ return $this->name->getLast();
459
+ }
460
+ public function getDeclaration() : string
461
+ {
462
+ return "ZEND_FUNCTION({$this->getDeclarationName()});\n";
463
+ }
464
+ public function getArgInfoName() : string
465
+ {
466
+ $underscoreName = \implode('_', $this->name->parts);
467
+ return "arginfo_{$underscoreName}";
468
+ }
469
+ public function getMethodSynopsisFilename() : string
470
+ {
471
+ return \implode('_', $this->name->parts);
472
+ }
473
+ public function __toString() : string
474
+ {
475
+ return $this->name->toString();
476
+ }
477
+ public function isMethod() : bool
478
+ {
479
+ return \false;
480
+ }
481
+ public function isConstructor() : bool
482
+ {
483
+ return \false;
484
+ }
485
+ public function isDestructor() : bool
486
+ {
487
+ return \false;
488
+ }
489
+ }
490
+ class MethodName implements \WPStaging\Vendor\FunctionOrMethodName
491
+ {
492
+ /** @var Name */
493
+ private $className;
494
+ /** @var string */
495
+ public $methodName;
496
+ public function __construct(\WPStaging\Vendor\PhpParser\Node\Name $className, string $methodName)
497
+ {
498
+ $this->className = $className;
499
+ $this->methodName = $methodName;
500
+ }
501
+ public function getDeclarationClassName() : string
502
+ {
503
+ return \implode('_', $this->className->parts);
504
+ }
505
+ public function getDeclaration() : string
506
+ {
507
+ return "ZEND_METHOD({$this->getDeclarationClassName()}, {$this->methodName});\n";
508
+ }
509
+ public function getArgInfoName() : string
510
+ {
511
+ return "arginfo_class_{$this->getDeclarationClassName()}_{$this->methodName}";
512
+ }
513
+ public function getMethodSynopsisFilename() : string
514
+ {
515
+ return $this->getDeclarationClassName() . "_{$this->methodName}";
516
+ }
517
+ public function __toString() : string
518
+ {
519
+ return "{$this->className}::{$this->methodName}";
520
+ }
521
+ public function isMethod() : bool
522
+ {
523
+ return \true;
524
+ }
525
+ public function isConstructor() : bool
526
+ {
527
+ return $this->methodName === "__construct";
528
+ }
529
+ public function isDestructor() : bool
530
+ {
531
+ return $this->methodName === "__destruct";
532
+ }
533
+ }
534
+ class ReturnInfo
535
+ {
536
+ /** @var bool */
537
+ public $byRef;
538
+ /** @var Type|null */
539
+ public $type;
540
+ /** @var Type|null */
541
+ public $phpDocType;
542
+ public function __construct(bool $byRef, ?\WPStaging\Vendor\Type $type, ?\WPStaging\Vendor\Type $phpDocType)
543
+ {
544
+ $this->byRef = $byRef;
545
+ $this->type = $type;
546
+ $this->phpDocType = $phpDocType;
547
+ }
548
+ public function equals(\WPStaging\Vendor\ReturnInfo $other) : bool
549
+ {
550
+ return $this->byRef === $other->byRef && \WPStaging\Vendor\Type::equals($this->type, $other->type);
551
+ }
552
+ public function getMethodSynopsisType() : ?\WPStaging\Vendor\Type
553
+ {
554
+ return $this->type ?? $this->phpDocType;
555
+ }
556
+ }
557
+ class FuncInfo
558
+ {
559
+ /** @var FunctionOrMethodName */
560
+ public $name;
561
+ /** @var int */
562
+ public $classFlags;
563
+ /** @var int */
564
+ public $flags;
565
+ /** @var string|null */
566
+ public $aliasType;
567
+ /** @var FunctionName|null */
568
+ public $alias;
569
+ /** @var bool */
570
+ public $isDeprecated;
571
+ /** @var bool */
572
+ public $verify;
573
+ /** @var ArgInfo[] */
574
+ public $args;
575
+ /** @var ReturnInfo */
576
+ public $return;
577
+ /** @var int */
578
+ public $numRequiredArgs;
579
+ /** @var string|null */
580
+ public $cond;
581
+ public function __construct(\WPStaging\Vendor\FunctionOrMethodName $name, int $classFlags, int $flags, ?string $aliasType, ?\WPStaging\Vendor\FunctionOrMethodName $alias, bool $isDeprecated, bool $verify, array $args, \WPStaging\Vendor\ReturnInfo $return, int $numRequiredArgs, ?string $cond)
582
+ {
583
+ $this->name = $name;
584
+ $this->classFlags = $classFlags;
585
+ $this->flags = $flags;
586
+ $this->aliasType = $aliasType;
587
+ $this->alias = $alias;
588
+ $this->isDeprecated = $isDeprecated;
589
+ $this->verify = $verify;
590
+ $this->args = $args;
591
+ $this->return = $return;
592
+ $this->numRequiredArgs = $numRequiredArgs;
593
+ $this->cond = $cond;
594
+ }
595
+ public function isMethod() : bool
596
+ {
597
+ return $this->name->isMethod();
598
+ }
599
+ public function isFinalMethod() : bool
600
+ {
601
+ return $this->flags & \WPStaging\Vendor\PhpParser\Node\Stmt\Class_::MODIFIER_FINAL || $this->classFlags & \WPStaging\Vendor\PhpParser\Node\Stmt\Class_::MODIFIER_FINAL;
602
+ }
603
+ public function isInstanceMethod() : bool
604
+ {
605
+ return !($this->flags & \WPStaging\Vendor\PhpParser\Node\Stmt\Class_::MODIFIER_STATIC) && $this->isMethod() && !$this->name->isConstructor();
606
+ }
607
+ /** @return string[] */
608
+ public function getModifierNames() : array
609
+ {
610
+ if (!$this->isMethod()) {
611
+ return [];
612
+ }
613
+ $result = [];
614
+ if ($this->flags & \WPStaging\Vendor\PhpParser\Node\Stmt\Class_::MODIFIER_FINAL) {
615
+ $result[] = "final";
616
+ } elseif ($this->flags & \WPStaging\Vendor\PhpParser\Node\Stmt\Class_::MODIFIER_ABSTRACT && $this->classFlags & ~\WPStaging\Vendor\PhpParser\Node\Stmt\Class_::MODIFIER_ABSTRACT) {
617
+ $result[] = "abstract";
618
+ }
619
+ if ($this->flags & \WPStaging\Vendor\PhpParser\Node\Stmt\Class_::MODIFIER_PROTECTED) {
620
+ $result[] = "protected";
621
+ } elseif ($this->flags & \WPStaging\Vendor\PhpParser\Node\Stmt\Class_::MODIFIER_PRIVATE) {
622
+ $result[] = "private";
623
+ } else {
624
+ $result[] = "public";
625
+ }
626
+ if ($this->flags & \WPStaging\Vendor\PhpParser\Node\Stmt\Class_::MODIFIER_STATIC) {
627
+ $result[] = "static";
628
+ }
629
+ return $result;
630
+ }
631
+ public function hasParamWithUnknownDefaultValue() : bool
632
+ {
633
+ foreach ($this->args as $arg) {
634
+ if ($arg->defaultValue && !$arg->hasProperDefaultValue()) {
635
+ return \true;
636
+ }
637
+ }
638
+ return \false;
639
+ }
640
+ public function equalsApartFromName(\WPStaging\Vendor\FuncInfo $other) : bool
641
+ {
642
+ if (\count($this->args) !== \count($other->args)) {
643
+ return \false;
644
+ }
645
+ for ($i = 0; $i < \count($this->args); $i++) {
646
+ if (!$this->args[$i]->equals($other->args[$i])) {
647
+ return \false;
648
+ }
649
+ }
650
+ return $this->return->equals($other->return) && $this->numRequiredArgs === $other->numRequiredArgs && $this->cond === $other->cond;
651
+ }
652
+ public function getArgInfoName() : string
653
+ {
654
+ return $this->name->getArgInfoName();
655
+ }
656
+ public function getDeclarationKey() : string
657
+ {
658
+ $name = $this->alias ?? $this->name;
659
+ return "{$name}|{$this->cond}";
660
+ }
661
+ public function getDeclaration() : ?string
662
+ {
663
+ if ($this->flags & \WPStaging\Vendor\PhpParser\Node\Stmt\Class_::MODIFIER_ABSTRACT) {
664
+ return null;
665
+ }
666
+ $name = $this->alias ?? $this->name;
667
+ return $name->getDeclaration();
668
+ }
669
+ public function getFunctionEntry() : string
670
+ {
671
+ if ($this->name instanceof \WPStaging\Vendor\MethodName) {
672
+ if ($this->alias) {
673
+ if ($this->alias instanceof \WPStaging\Vendor\MethodName) {
674
+ return \sprintf("\tZEND_MALIAS(%s, %s, %s, %s, %s)\n", $this->alias->getDeclarationClassName(), $this->name->methodName, $this->alias->methodName, $this->getArgInfoName(), $this->getFlagsAsArginfoString());
675
+ } else {
676
+ if ($this->alias instanceof \WPStaging\Vendor\FunctionName) {
677
+ return \sprintf("\tZEND_ME_MAPPING(%s, %s, %s, %s)\n", $this->name->methodName, $this->alias->getNonNamespacedName(), $this->getArgInfoName(), $this->getFlagsAsArginfoString());
678
+ } else {
679
+ throw new \Error("Cannot happen");
680
+ }
681
+ }
682
+ } else {
683
+ $declarationClassName = $this->name->getDeclarationClassName();
684
+ if ($this->flags & \WPStaging\Vendor\PhpParser\Node\Stmt\Class_::MODIFIER_ABSTRACT) {
685
+ return \sprintf("\tZEND_ABSTRACT_ME_WITH_FLAGS(%s, %s, %s, %s)\n", $declarationClassName, $this->name->methodName, $this->getArgInfoName(), $this->getFlagsAsArginfoString());
686
+ }
687
+ return \sprintf("\tZEND_ME(%s, %s, %s, %s)\n", $declarationClassName, $this->name->methodName, $this->getArgInfoName(), $this->getFlagsAsArginfoString());
688
+ }
689
+ } else {
690
+ if ($this->name instanceof \WPStaging\Vendor\FunctionName) {
691
+ $namespace = $this->name->getNamespace();
692
+ $declarationName = $this->name->getDeclarationName();
693
+ if ($this->alias && $this->isDeprecated) {
694
+ return \sprintf("\tZEND_DEP_FALIAS(%s, %s, %s)\n", $declarationName, $this->alias->getNonNamespacedName(), $this->getArgInfoName());
695
+ }
696
+ if ($this->alias) {
697
+ return \sprintf("\tZEND_FALIAS(%s, %s, %s)\n", $declarationName, $this->alias->getNonNamespacedName(), $this->getArgInfoName());
698
+ }
699
+ if ($this->isDeprecated) {
700
+ return \sprintf("\tZEND_DEP_FE(%s, %s)\n", $declarationName, $this->getArgInfoName());
701
+ }
702
+ if ($namespace) {
703
+ // Render A\B as "A\\B" in C strings for namespaces
704
+ return \sprintf("\tZEND_NS_FE(\"%s\", %s, %s)\n", \addslashes($namespace), $declarationName, $this->getArgInfoName());
705
+ } else {
706
+ return \sprintf("\tZEND_FE(%s, %s)\n", $declarationName, $this->getArgInfoName());
707
+ }
708
+ } else {
709
+ throw new \Error("Cannot happen");
710
+ }
711
+ }
712
+ }
713
+ private function getFlagsAsArginfoString() : string
714
+ {
715
+ $flags = "ZEND_ACC_PUBLIC";
716
+ if ($this->flags & \WPStaging\Vendor\PhpParser\Node\Stmt\Class_::MODIFIER_PROTECTED) {
717
+ $flags = "ZEND_ACC_PROTECTED";
718
+ } elseif ($this->flags & \WPStaging\Vendor\PhpParser\Node\Stmt\Class_::MODIFIER_PRIVATE) {
719
+ $flags = "ZEND_ACC_PRIVATE";
720
+ }
721
+ if ($this->flags & \WPStaging\Vendor\PhpParser\Node\Stmt\Class_::MODIFIER_STATIC) {
722
+ $flags .= "|ZEND_ACC_STATIC";
723
+ }
724
+ if ($this->flags & \WPStaging\Vendor\PhpParser\Node\Stmt\Class_::MODIFIER_FINAL) {
725
+ $flags .= "|ZEND_ACC_FINAL";
726
+ }
727
+ if ($this->flags & \WPStaging\Vendor\PhpParser\Node\Stmt\Class_::MODIFIER_ABSTRACT) {
728
+ $flags .= "|ZEND_ACC_ABSTRACT";
729
+ }
730
+ if ($this->isDeprecated) {
731
+ $flags .= "|ZEND_ACC_DEPRECATED";
732
+ }
733
+ return $flags;
734
+ }
735
+ /**
736
+ * @param FuncInfo[] $funcMap
737
+ * @param FuncInfo[] $aliasMap
738
+ * @throws Exception
739
+ */
740
+ public function getMethodSynopsisDocument(array $funcMap, array $aliasMap) : ?string
741
+ {
742
+ $doc = new \DOMDocument();
743
+ $doc->formatOutput = \true;
744
+ $methodSynopsis = $this->getMethodSynopsisElement($funcMap, $aliasMap, $doc);
745
+ if (!$methodSynopsis) {
746
+ return null;
747
+ }
748
+ $doc->appendChild($methodSynopsis);
749
+ return $doc->saveXML();
750
+ }
751
+ /**
752
+ * @param FuncInfo[] $funcMap
753
+ * @param FuncInfo[] $aliasMap
754
+ * @throws Exception
755
+ */
756
+ public function getMethodSynopsisElement(array $funcMap, array $aliasMap, \DOMDocument $doc) : ?\DOMElement
757
+ {
758
+ if ($this->hasParamWithUnknownDefaultValue()) {
759
+ return null;
760
+ }
761
+ if ($this->name->isConstructor()) {
762
+ $synopsisType = "constructorsynopsis";
763
+ } elseif ($this->name->isDestructor()) {
764
+ $synopsisType = "destructorsynopsis";
765
+ } else {
766
+ $synopsisType = "methodsynopsis";
767
+ }
768
+ $methodSynopsis = $doc->createElement($synopsisType);
769
+ $aliasedFunc = $this->aliasType === "alias" && isset($funcMap[$this->alias->__toString()]) ? $funcMap[$this->alias->__toString()] : null;
770
+ $aliasFunc = $aliasMap[$this->name->__toString()] ?? null;
771
+ if ($this->aliasType === "alias" && $aliasedFunc !== null && $aliasedFunc->isMethod() !== $this->isMethod() || $aliasFunc !== null && $aliasFunc->isMethod() !== $this->isMethod()) {
772
+ $role = $doc->createAttribute("role");
773
+ $role->value = $this->isMethod() ? "oop" : "procedural";
774
+ $methodSynopsis->appendChild($role);
775
+ }
776
+ $methodSynopsis->appendChild(new \DOMText("\n "));
777
+ foreach ($this->getModifierNames() as $modifierString) {
778
+ $modifierElement = $doc->createElement('modifier', $modifierString);
779
+ $methodSynopsis->appendChild($modifierElement);
780
+ $methodSynopsis->appendChild(new \DOMText(" "));
781
+ }
782
+ $returnType = $this->return->getMethodSynopsisType();
783
+ if ($returnType) {
784
+ $this->appendMethodSynopsisTypeToElement($doc, $methodSynopsis, $returnType);
785
+ }
786
+ $methodname = $doc->createElement('methodname', $this->name->__toString());
787
+ $methodSynopsis->appendChild($methodname);
788
+ if (empty($this->args)) {
789
+ $methodSynopsis->appendChild(new \DOMText("\n "));
790
+ $void = $doc->createElement('void');
791
+ $methodSynopsis->appendChild($void);
792
+ } else {
793
+ foreach ($this->args as $arg) {
794
+ $methodSynopsis->appendChild(new \DOMText("\n "));
795
+ $methodparam = $doc->createElement('methodparam');
796
+ if ($arg->defaultValue !== null) {
797
+ $methodparam->setAttribute("choice", "opt");
798
+ }
799
+ if ($arg->isVariadic) {
800
+ $methodparam->setAttribute("rep", "repeat");
801
+ }
802
+ $methodSynopsis->appendChild($methodparam);
803
+ $this->appendMethodSynopsisTypeToElement($doc, $methodparam, $arg->getMethodSynopsisType());
804
+ $parameter = $doc->createElement('parameter', $arg->name);
805
+ if ($arg->sendBy !== \WPStaging\Vendor\ArgInfo::SEND_BY_VAL) {
806
+ $parameter->setAttribute("role", "reference");
807
+ }
808
+ $methodparam->appendChild($parameter);
809
+ $defaultValue = $arg->getDefaultValueAsMethodSynopsisString();
810
+ if ($defaultValue !== null) {
811
+ $initializer = $doc->createElement('initializer');
812
+ if (\preg_match('/^[a-zA-Z_][a-zA-Z_0-9]*$/', $defaultValue)) {
813
+ $constant = $doc->createElement('constant', $defaultValue);
814
+ $initializer->appendChild($constant);
815
+ } else {
816
+ $initializer->nodeValue = $defaultValue;
817
+ }
818
+ $methodparam->appendChild($initializer);
819
+ }
820
+ }
821
+ }
822
+ $methodSynopsis->appendChild(new \DOMText("\n "));
823
+ return $methodSynopsis;
824
+ }
825
+ public function discardInfoForOldPhpVersions() : void
826
+ {
827
+ $this->return->type = null;
828
+ foreach ($this->args as $arg) {
829
+ $arg->type = null;
830
+ $arg->defaultValue = null;
831
+ }
832
+ }
833
+ private function appendMethodSynopsisTypeToElement(\DOMDocument $doc, \DOMElement $elementToAppend, \WPStaging\Vendor\Type $type)
834
+ {
835
+ if (\count($type->types) > 1) {
836
+ $typeElement = $doc->createElement('type');
837
+ $typeElement->setAttribute("class", "union");
838
+ foreach ($type->types as $type) {
839
+ $unionTypeElement = $doc->createElement('type', $type->name);
840
+ $typeElement->appendChild($unionTypeElement);
841
+ }
842
+ } else {
843
+ $typeElement = $doc->createElement('type', $type->types[0]->name);
844
+ }
845
+ $elementToAppend->appendChild($typeElement);
846
+ }
847
+ }
848
+ class ClassInfo
849
+ {
850
+ /** @var Name */
851
+ public $name;
852
+ /** @var FuncInfo[] */
853
+ public $funcInfos;
854
+ public function __construct(\WPStaging\Vendor\PhpParser\Node\Name $name, array $funcInfos)
855
+ {
856
+ $this->name = $name;
857
+ $this->funcInfos = $funcInfos;
858
+ }
859
+ }
860
+ class FileInfo
861
+ {
862
+ /** @var FuncInfo[] */
863
+ public $funcInfos = [];
864
+ /** @var ClassInfo[] */
865
+ public $classInfos = [];
866
+ /** @var bool */
867
+ public $generateFunctionEntries = \false;
868
+ /** @var string */
869
+ public $declarationPrefix = "";
870
+ /** @var bool */
871
+ public $generateLegacyArginfo = \false;
872
+ /**
873
+ * @return iterable<FuncInfo>
874
+ */
875
+ public function getAllFuncInfos() : iterable
876
+ {
877
+ yield from $this->funcInfos;
878
+ foreach ($this->classInfos as $classInfo) {
879
+ yield from $classInfo->funcInfos;
880
+ }
881
+ }
882
+ }
883
+ class DocCommentTag
884
+ {
885
+ /** @var string */
886
+ public $name;
887
+ /** @var string|null */
888
+ public $value;
889
+ public function __construct(string $name, ?string $value)
890
+ {
891
+ $this->name = $name;
892
+ $this->value = $value;
893
+ }
894
+ public function getValue() : string
895
+ {
896
+ if ($this->value === null) {
897
+ throw new \Exception("@{$this->name} does not have a value");
898
+ }
899
+ return $this->value;
900
+ }
901
+ public function getType() : string
902
+ {
903
+ $value = $this->getValue();
904
+ $matches = [];
905
+ if ($this->name === "param") {
906
+ \preg_match('/^\\s*([\\w\\|\\\\\\[\\]]+)\\s*\\$\\w+.*$/', $value, $matches);
907
+ } elseif ($this->name === "return") {
908
+ \preg_match('/^\\s*([\\w\\|\\\\\\[\\]]+)\\s*$/', $value, $matches);
909
+ }
910
+ if (isset($matches[1]) === \false) {
911
+ throw new \Exception("@{$this->name} doesn't contain a type or has an invalid format \"{$value}\"");
912
+ }
913
+ return $matches[1];
914
+ }
915
+ public function getVariableName() : string
916
+ {
917
+ $value = $this->value;
918
+ if ($value === null || \strlen($value) === 0) {
919
+ throw new \Exception("@{$this->name} doesn't have any value");
920
+ }
921
+ $matches = [];
922
+ if ($this->name === "param") {
923
+ \preg_match('/^\\s*[\\w\\|\\\\\\[\\]]+\\s*\\$(\\w+).*$/', $value, $matches);
924
+ } elseif ($this->name === "prefer-ref") {
925
+ \preg_match('/^\\s*\\$(\\w+).*$/', $value, $matches);
926
+ }
927
+ if (isset($matches[1]) === \false) {
928
+ throw new \Exception("@{$this->name} doesn't contain a variable name or has an invalid format \"{$value}\"");
929
+ }
930
+ return $matches[1];
931
+ }
932
+ }
933
+ /** @return DocCommentTag[] */
934
+ function parseDocComment(\WPStaging\Vendor\PhpParser\Comment\Doc $comment) : array
935
+ {
936
+ $commentText = \substr($comment->getText(), 2, -2);
937
+ $tags = [];
938
+ foreach (\explode("\n", $commentText) as $commentLine) {
939
+ $regex = '/^\\*\\s*@([a-z-]+)(?:\\s+(.+))?$/';
940
+ if (\preg_match($regex, \trim($commentLine), $matches)) {
941
+ $tags[] = new \WPStaging\Vendor\DocCommentTag($matches[1], $matches[2] ?? null);
942
+ }
943
+ }
944
+ return $tags;
945
+ }
946
+ function parseFunctionLike(\WPStaging\Vendor\PhpParser\PrettyPrinterAbstract $prettyPrinter, \WPStaging\Vendor\FunctionOrMethodName $name, int $classFlags, int $flags, \WPStaging\Vendor\PhpParser\Node\FunctionLike $func, ?string $cond) : \WPStaging\Vendor\FuncInfo
947
+ {
948
+ $comment = $func->getDocComment();
949
+ $paramMeta = [];
950
+ $aliasType = null;
951
+ $alias = null;
952
+ $isDeprecated = \false;
953
+ $verify = \true;
954
+ $docReturnType = null;
955
+ $docParamTypes = [];
956
+ if ($comment) {
957
+ $tags = \WPStaging\Vendor\parseDocComment($comment);
958
+ foreach ($tags as $tag) {
959
+ if ($tag->name === 'prefer-ref') {
960
+ $varName = $tag->getVariableName();
961
+ if (!isset($paramMeta[$varName])) {
962
+ $paramMeta[$varName] = [];
963
+ }
964
+ $paramMeta[$varName]['preferRef'] = \true;
965
+ } else {
966
+ if ($tag->name === 'alias' || $tag->name === 'implementation-alias') {
967
+ $aliasType = $tag->name;
968
+ $aliasParts = \explode("::", $tag->getValue());
969
+ if (\count($aliasParts) === 1) {
970
+ $alias = new \WPStaging\Vendor\FunctionName(new \WPStaging\Vendor\PhpParser\Node\Name($aliasParts[0]));
971
+ } else {
972
+ $alias = new \WPStaging\Vendor\MethodName(new \WPStaging\Vendor\PhpParser\Node\Name($aliasParts[0]), $aliasParts[1]);
973
+ }
974
+ } else {
975
+ if ($tag->name === 'deprecated') {
976
+ $isDeprecated = \true;
977
+ } else {
978
+ if ($tag->name === 'no-verify') {
979
+ $verify = \false;
980
+ } else {
981
+ if ($tag->name === 'return') {
982
+ $docReturnType = $tag->getType();
983
+ } else {
984
+ if ($tag->name === 'param') {
985
+ $docParamTypes[$tag->getVariableName()] = $tag->getType();
986
+ }
987
+ }
988
+ }
989
+ }
990
+ }
991
+ }
992
+ }
993
+ }
994
+ $varNameSet = [];
995
+ $args = [];
996
+ $numRequiredArgs = 0;
997
+ $foundVariadic = \false;
998
+ foreach ($func->getParams() as $i => $param) {
999
+ $varName = $param->var->name;
1000
+ $preferRef = !empty($paramMeta[$varName]['preferRef']);
1001
+ unset($paramMeta[$varName]);
1002
+ if (isset($varNameSet[$varName])) {
1003
+ throw new \Exception("Duplicate parameter name {$varName} for function {$name}");
1004
+ }
1005
+ $varNameSet[$varName] = \true;
1006
+ if ($preferRef) {
1007
+ $sendBy = \WPStaging\Vendor\ArgInfo::SEND_PREFER_REF;
1008
+ } else {
1009
+ if ($param->byRef) {
1010
+ $sendBy = \WPStaging\Vendor\ArgInfo::SEND_BY_REF;
1011
+ } else {
1012
+ $sendBy = \WPStaging\Vendor\ArgInfo::SEND_BY_VAL;
1013
+ }
1014
+ }
1015
+ if ($foundVariadic) {
1016
+ throw new \Exception("Error in function {$name}: only the last parameter can be variadic");
1017
+ }
1018
+ $type = $param->type ? \WPStaging\Vendor\Type::fromNode($param->type) : null;
1019
+ if ($type === null && !isset($docParamTypes[$varName])) {
1020
+ throw new \Exception("Missing parameter type for function {$name}()");
1021
+ }
1022
+ if ($param->default instanceof \WPStaging\Vendor\PhpParser\Node\Expr\ConstFetch && $param->default->name->toLowerString() === "null" && $type && !$type->isNullable()) {
1023
+ $simpleType = $type->tryToSimpleType();
1024
+ if ($simpleType === null) {
1025
+ throw new \Exception("Parameter {$varName} of function {$name} has null default, but is not nullable");
1026
+ }
1027
+ }
1028
+ $foundVariadic = $param->variadic;
1029
+ $args[] = new \WPStaging\Vendor\ArgInfo($varName, $sendBy, $param->variadic, $type, isset($docParamTypes[$varName]) ? \WPStaging\Vendor\Type::fromPhpDoc($docParamTypes[$varName]) : null, $param->default ? $prettyPrinter->prettyPrintExpr($param->default) : null);
1030
+ if (!$param->default && !$param->variadic) {
1031
+ $numRequiredArgs = $i + 1;
1032
+ }
1033
+ }
1034
+ foreach (\array_keys($paramMeta) as $var) {
1035
+ throw new \Exception("Found metadata for invalid param {$var} of function {$name}");
1036
+ }
1037
+ $returnType = $func->getReturnType();
1038
+ if ($returnType === null && $docReturnType === null && !$name->isConstructor() && !$name->isDestructor()) {
1039
+ throw new \Exception("Missing return type for function {$name}()");
1040
+ }
1041
+ $return = new \WPStaging\Vendor\ReturnInfo($func->returnsByRef(), $returnType ? \WPStaging\Vendor\Type::fromNode($returnType) : null, $docReturnType ? \WPStaging\Vendor\Type::fromPhpDoc($docReturnType) : null);
1042
+ return new \WPStaging\Vendor\FuncInfo($name, $classFlags, $flags, $aliasType, $alias, $isDeprecated, $verify, $args, $return, $numRequiredArgs, $cond);
1043
+ }
1044
+ function handlePreprocessorConditions(array &$conds, \WPStaging\Vendor\PhpParser\Node\Stmt $stmt) : ?string
1045
+ {
1046
+ foreach ($stmt->getComments() as $comment) {
1047
+ $text = \trim($comment->getText());
1048
+ if (\preg_match('/^#\\s*if\\s+(.+)$/', $text, $matches)) {
1049
+ $conds[] = $matches[1];
1050
+ } else {
1051
+ if (\preg_match('/^#\\s*ifdef\\s+(.+)$/', $text, $matches)) {
1052
+ $conds[] = "defined({$matches[1]})";
1053
+ } else {
1054
+ if (\preg_match('/^#\\s*ifndef\\s+(.+)$/', $text, $matches)) {
1055
+ $conds[] = "!defined({$matches[1]})";
1056
+ } else {
1057
+ if (\preg_match('/^#\\s*else$/', $text)) {
1058
+ if (empty($conds)) {
1059
+ throw new \Exception("Encountered else without corresponding #if");
1060
+ }
1061
+ $cond = \array_pop($conds);
1062
+ $conds[] = "!({$cond})";
1063
+ } else {
1064
+ if (\preg_match('/^#\\s*endif$/', $text)) {
1065
+ if (empty($conds)) {
1066
+ throw new \Exception("Encountered #endif without corresponding #if");
1067
+ }
1068
+ \array_pop($conds);
1069
+ } else {
1070
+ if ($text[0] === '#') {
1071
+ throw new \Exception("Unrecognized preprocessor directive \"{$text}\"");
1072
+ }
1073
+ }
1074
+ }
1075
+ }
1076
+ }
1077
+ }
1078
+ }
1079
+ return empty($conds) ? null : \implode(' && ', $conds);
1080
+ }
1081
+ function getFileDocComment(array $stmts) : ?\WPStaging\Vendor\PhpParser\Comment\Doc
1082
+ {
1083
+ if (empty($stmts)) {
1084
+ return null;
1085
+ }
1086
+ $comments = $stmts[0]->getComments();
1087
+ if (empty($comments)) {
1088
+ return null;
1089
+ }
1090
+ if ($comments[0] instanceof \WPStaging\Vendor\PhpParser\Comment\Doc) {
1091
+ return $comments[0];
1092
+ }
1093
+ return null;
1094
+ }
1095
+ function handleStatements(\WPStaging\Vendor\FileInfo $fileInfo, array $stmts, \WPStaging\Vendor\PhpParser\PrettyPrinterAbstract $prettyPrinter)
1096
+ {
1097
+ $conds = [];
1098
+ foreach ($stmts as $stmt) {
1099
+ if ($stmt instanceof \WPStaging\Vendor\PhpParser\Node\Stmt\Nop) {
1100
+ continue;
1101
+ }
1102
+ if ($stmt instanceof \WPStaging\Vendor\PhpParser\Node\Stmt\Namespace_) {
1103
+ \WPStaging\Vendor\handleStatements($fileInfo, $stmt->stmts, $prettyPrinter);
1104
+ continue;
1105
+ }
1106
+ $cond = \WPStaging\Vendor\handlePreprocessorConditions($conds, $stmt);
1107
+ if ($stmt instanceof \WPStaging\Vendor\PhpParser\Node\Stmt\Function_) {
1108
+ $fileInfo->funcInfos[] = \WPStaging\Vendor\parseFunctionLike($prettyPrinter, new \WPStaging\Vendor\FunctionName($stmt->namespacedName), 0, 0, $stmt, $cond);
1109
+ continue;
1110
+ }
1111
+ if ($stmt instanceof \WPStaging\Vendor\PhpParser\Node\Stmt\ClassLike) {
1112
+ $className = $stmt->namespacedName;
1113
+ $methodInfos = [];
1114
+ foreach ($stmt->stmts as $classStmt) {
1115
+ $cond = \WPStaging\Vendor\handlePreprocessorConditions($conds, $classStmt);
1116
+ if ($classStmt instanceof \WPStaging\Vendor\PhpParser\Node\Stmt\Nop) {
1117
+ continue;
1118
+ }
1119
+ if (!$classStmt instanceof \WPStaging\Vendor\PhpParser\Node\Stmt\ClassMethod) {
1120
+ throw new \Exception("Not implemented {$classStmt->getType()}");
1121
+ }
1122
+ $classFlags = 0;
1123
+ if ($stmt instanceof \WPStaging\Vendor\PhpParser\Node\Stmt\Class_) {
1124
+ $classFlags = $stmt->flags;
1125
+ }
1126
+ $flags = $classStmt->flags;
1127
+ if ($stmt instanceof \WPStaging\Vendor\PhpParser\Node\Stmt\Interface_) {
1128
+ $flags |= \WPStaging\Vendor\PhpParser\Node\Stmt\Class_::MODIFIER_ABSTRACT;
1129
+ }
1130
+ if (!($flags & \WPStaging\Vendor\PhpParser\Node\Stmt\Class_::VISIBILITY_MODIFIER_MASK)) {
1131
+ throw new \Exception("Method visibility modifier is required");
1132
+ }
1133
+ $methodInfos[] = \WPStaging\Vendor\parseFunctionLike($prettyPrinter, new \WPStaging\Vendor\MethodName($className, $classStmt->name->toString()), $classFlags, $flags, $classStmt, $cond);
1134
+ }
1135
+ $fileInfo->classInfos[] = new \WPStaging\Vendor\ClassInfo($className, $methodInfos);
1136
+ continue;
1137
+ }
1138
+ throw new \Exception("Unexpected node {$stmt->getType()}");
1139
+ }
1140
+ }
1141
+ function parseStubFile(string $code) : \WPStaging\Vendor\FileInfo
1142
+ {
1143
+ $lexer = new \WPStaging\Vendor\PhpParser\Lexer();
1144
+ $parser = new \WPStaging\Vendor\PhpParser\Parser\Php7($lexer);
1145
+ $nodeTraverser = new \WPStaging\Vendor\PhpParser\NodeTraverser();
1146
+ $nodeTraverser->addVisitor(new \WPStaging\Vendor\PhpParser\NodeVisitor\NameResolver());
1147
+ $prettyPrinter = new class extends \WPStaging\Vendor\PhpParser\PrettyPrinter\Standard
1148
+ {
1149
+ protected function pName_FullyQualified(\WPStaging\Vendor\PhpParser\Node\Name\FullyQualified $node)
1150
+ {
1151
+ return \implode('\\', $node->parts);
1152
+ }
1153
+ };
1154
+ $stmts = $parser->parse($code);
1155
+ $nodeTraverser->traverse($stmts);
1156
+ $fileInfo = new \WPStaging\Vendor\FileInfo();
1157
+ $fileDocComment = \WPStaging\Vendor\getFileDocComment($stmts);
1158
+ if ($fileDocComment) {
1159
+ $fileTags = \WPStaging\Vendor\parseDocComment($fileDocComment);
1160
+ foreach ($fileTags as $tag) {
1161
+ if ($tag->name === 'generate-function-entries') {
1162
+ $fileInfo->generateFunctionEntries = \true;
1163
+ $fileInfo->declarationPrefix = $tag->value ? $tag->value . " " : "";
1164
+ } else {
1165
+ if ($tag->name === 'generate-legacy-arginfo') {
1166
+ $fileInfo->generateLegacyArginfo = \true;
1167
+ }
1168
+ }
1169
+ }
1170
+ }
1171
+ \WPStaging\Vendor\handleStatements($fileInfo, $stmts, $prettyPrinter);
1172
+ return $fileInfo;
1173
+ }
1174
+ function funcInfoToCode(\WPStaging\Vendor\FuncInfo $funcInfo, bool $minimal) : string
1175
+ {
1176
+ $code = '';
1177
+ // Generate the minimal, most compatible arginfo across PHP versions
1178
+ if ($minimal) {
1179
+ $code .= \sprintf("ZEND_BEGIN_ARG_INFO_EX(%s, 0, %d, %d)\n", $funcInfo->getArgInfoName(), $funcInfo->return->byRef, $funcInfo->numRequiredArgs);
1180
+ foreach ($funcInfo->args as $argInfo) {
1181
+ $code .= \sprintf("\tZEND_ARG_INFO(0, %s)\n", $argInfo->name);
1182
+ }
1183
+ } else {
1184
+ $returnType = $funcInfo->return->type;
1185
+ if ($returnType !== null) {
1186
+ if (null !== ($simpleReturnType = $returnType->tryToSimpleType())) {
1187
+ if ($simpleReturnType->isBuiltin) {
1188
+ $code .= \sprintf("AWS_PHP_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(%s, %d, %d, %s, %d)\n", $funcInfo->getArgInfoName(), $funcInfo->return->byRef, $funcInfo->numRequiredArgs, $simpleReturnType->toTypeCode(), $returnType->isNullable());
1189
+ } else {
1190
+ $code .= \sprintf("ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(%s, %d, %d, %s, %d)\n", $funcInfo->getArgInfoName(), $funcInfo->return->byRef, $funcInfo->numRequiredArgs, $simpleReturnType->toEscapedName(), $returnType->isNullable());
1191
+ }
1192
+ } else {
1193
+ $arginfoType = $returnType->toArginfoType();
1194
+ if ($arginfoType->hasClassType()) {
1195
+ $code .= \sprintf("ZEND_BEGIN_ARG_WITH_RETURN_OBJ_TYPE_MASK_EX(%s, %d, %d, %s, %s)\n", $funcInfo->getArgInfoName(), $funcInfo->return->byRef, $funcInfo->numRequiredArgs, $arginfoType->toClassTypeString(), $arginfoType->toTypeMask());
1196
+ } else {
1197
+ $code .= \sprintf("ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(%s, %d, %d, %s)\n", $funcInfo->getArgInfoName(), $funcInfo->return->byRef, $funcInfo->numRequiredArgs, $arginfoType->toTypeMask());
1198
+ }
1199
+ }
1200
+ } else {
1201
+ $code .= \sprintf("ZEND_BEGIN_ARG_INFO_EX(%s, 0, %d, %d)\n", $funcInfo->getArgInfoName(), $funcInfo->return->byRef, $funcInfo->numRequiredArgs);
1202
+ }
1203
+ foreach ($funcInfo->args as $argInfo) {
1204
+ $argKind = $argInfo->isVariadic ? "ARG_VARIADIC" : "ARG";
1205
+ $argDefaultKind = $argInfo->hasProperDefaultValue() ? "_WITH_DEFAULT_VALUE" : "";
1206
+ $argType = $argInfo->type;
1207
+ if ($argType !== null) {
1208
+ if (null !== ($simpleArgType = $argType->tryToSimpleType())) {
1209
+ if ($simpleArgType->isBuiltin) {
1210
+ $code .= \sprintf("\tZEND_%s_TYPE_INFO%s(%s, %s, %s, %d%s)\n", $argKind, $argDefaultKind, $argInfo->getSendByString(), $argInfo->name, $simpleArgType->toTypeCode(), $argType->isNullable(), $argInfo->hasProperDefaultValue() ? ", " . $argInfo->getDefaultValueAsArginfoString() : "");
1211
+ } else {
1212
+ $code .= \sprintf("\tZEND_%s_OBJ_INFO%s(%s, %s, %s, %d%s)\n", $argKind, $argDefaultKind, $argInfo->getSendByString(), $argInfo->name, $simpleArgType->toEscapedName(), $argType->isNullable(), $argInfo->hasProperDefaultValue() ? ", " . $argInfo->getDefaultValueAsArginfoString() : "");
1213
+ }
1214
+ } else {
1215
+ $arginfoType = $argType->toArginfoType();
1216
+ if ($arginfoType->hasClassType()) {
1217
+ $code .= \sprintf("\tZEND_%s_OBJ_TYPE_MASK(%s, %s, %s, %s, %s)\n", $argKind, $argInfo->getSendByString(), $argInfo->name, $arginfoType->toClassTypeString(), $arginfoType->toTypeMask(), $argInfo->getDefaultValueAsArginfoString());
1218
+ } else {
1219
+ $code .= \sprintf("\tZEND_%s_TYPE_MASK(%s, %s, %s, %s)\n", $argKind, $argInfo->getSendByString(), $argInfo->name, $arginfoType->toTypeMask(), $argInfo->getDefaultValueAsArginfoString());
1220
+ }
1221
+ }
1222
+ } else {
1223
+ $code .= \sprintf("\tZEND_%s_INFO%s(%s, %s%s)\n", $argKind, $argDefaultKind, $argInfo->getSendByString(), $argInfo->name, $argInfo->hasProperDefaultValue() ? ", " . $argInfo->getDefaultValueAsArginfoString() : "");
1224
+ }
1225
+ }
1226
+ }
1227
+ $code .= "ZEND_END_ARG_INFO()";
1228
+ return $code . "\n";
1229
+ }
1230
+ /** @param FuncInfo[] $generatedFuncInfos */
1231
+ function findEquivalentFuncInfo(array $generatedFuncInfos, \WPStaging\Vendor\FuncInfo $funcInfo) : ?\WPStaging\Vendor\FuncInfo
1232
+ {
1233
+ foreach ($generatedFuncInfos as $generatedFuncInfo) {
1234
+ if ($generatedFuncInfo->equalsApartFromName($funcInfo)) {
1235
+ return $generatedFuncInfo;
1236
+ }
1237
+ }
1238
+ return null;
1239
+ }
1240
+ /** @param iterable<FuncInfo> $funcInfos */
1241
+ function generateCodeWithConditions(iterable $funcInfos, string $separator, \Closure $codeGenerator) : string
1242
+ {
1243
+ $code = "";
1244
+ foreach ($funcInfos as $funcInfo) {
1245
+ $funcCode = $codeGenerator($funcInfo);
1246
+ if ($funcCode === null) {
1247
+ continue;
1248
+ }
1249
+ $code .= $separator;
1250
+ if ($funcInfo->cond) {
1251
+ $code .= "#if {$funcInfo->cond}\n";
1252
+ $code .= $funcCode;
1253
+ $code .= "#endif\n";
1254
+ } else {
1255
+ $code .= $funcCode;
1256
+ }
1257
+ }
1258
+ return $code;
1259
+ }
1260
+ function generateArgInfoCode(\WPStaging\Vendor\FileInfo $fileInfo, string $stubHash, bool $minimal) : string
1261
+ {
1262
+ $code = "/* This is a generated file, edit the .stub.php file instead.\n" . " * Stub hash: {$stubHash} */\n";
1263
+ $generatedFuncInfos = [];
1264
+ $code .= \WPStaging\Vendor\generateCodeWithConditions($fileInfo->getAllFuncInfos(), "\n", function (\WPStaging\Vendor\FuncInfo $funcInfo) use(&$generatedFuncInfos, $minimal) {
1265
+ /* If there already is an equivalent arginfo structure, only emit a #define */
1266
+ if ($generatedFuncInfo = \WPStaging\Vendor\findEquivalentFuncInfo($generatedFuncInfos, $funcInfo)) {
1267
+ $code = \sprintf("#define %s %s\n", $funcInfo->getArgInfoName(), $generatedFuncInfo->getArgInfoName());
1268
+ } else {
1269
+ $code = \WPStaging\Vendor\funcInfoToCode($funcInfo, $minimal);
1270
+ }
1271
+ $generatedFuncInfos[] = $funcInfo;
1272
+ return $code;
1273
+ });
1274
+ if ($fileInfo->generateFunctionEntries) {
1275
+ $code .= "\n\n";
1276
+ $generatedFunctionDeclarations = [];
1277
+ $code .= \WPStaging\Vendor\generateCodeWithConditions($fileInfo->getAllFuncInfos(), "", function (\WPStaging\Vendor\FuncInfo $funcInfo) use($fileInfo, &$generatedFunctionDeclarations) {
1278
+ $key = $funcInfo->getDeclarationKey();
1279
+ if (isset($generatedFunctionDeclarations[$key])) {
1280
+ return null;
1281
+ }
1282
+ $generatedFunctionDeclarations[$key] = \true;
1283
+ return $fileInfo->declarationPrefix . $funcInfo->getDeclaration();
1284
+ });
1285
+ if (!empty($fileInfo->funcInfos)) {
1286
+ $code .= \WPStaging\Vendor\generateFunctionEntries(null, $fileInfo->funcInfos);
1287
+ }
1288
+ foreach ($fileInfo->classInfos as $classInfo) {
1289
+ $code .= \WPStaging\Vendor\generateFunctionEntries($classInfo->name, $classInfo->funcInfos);
1290
+ }
1291
+ }
1292
+ return $code;
1293
+ }
1294
+ /** @param FuncInfo[] $funcInfos */
1295
+ function generateFunctionEntries(?\WPStaging\Vendor\PhpParser\Node\Name $className, array $funcInfos) : string
1296
+ {
1297
+ $code = "";
1298
+ $functionEntryName = "ext_functions";
1299
+ if ($className) {
1300
+ $underscoreName = \implode("_", $className->parts);
1301
+ $functionEntryName = "class_{$underscoreName}_methods";
1302
+ }
1303
+ $code .= "\n\nstatic const zend_function_entry {$functionEntryName}[] = {\n";
1304
+ $code .= \WPStaging\Vendor\generateCodeWithConditions($funcInfos, "", function (\WPStaging\Vendor\FuncInfo $funcInfo) {
1305
+ return $funcInfo->getFunctionEntry();
1306
+ });
1307
+ $code .= "\tZEND_FE_END\n";
1308
+ $code .= "};\n";
1309
+ return $code;
1310
+ }
1311
+ /**
1312
+ * @param FuncInfo[] $funcMap
1313
+ * @param FuncInfo[] $aliasMap
1314
+ * @return array<string, string>
1315
+ */
1316
+ function generateMethodSynopses(array $funcMap, array $aliasMap) : array
1317
+ {
1318
+ $result = [];
1319
+ foreach ($funcMap as $funcInfo) {
1320
+ $methodSynopsis = $funcInfo->getMethodSynopsisDocument($funcMap, $aliasMap);
1321
+ if ($methodSynopsis !== null) {
1322
+ $result[$funcInfo->name->getMethodSynopsisFilename() . ".xml"] = $methodSynopsis;
1323
+ }
1324
+ }
1325
+ return $result;
1326
+ }
1327
+ /**
1328
+ * @param FuncInfo[] $funcMap
1329
+ * @param FuncInfo[] $aliasMap
1330
+ * @return array<string, string>
1331
+ */
1332
+ function replaceMethodSynopses(string $targetDirectory, array $funcMap, array $aliasMap) : array
1333
+ {
1334
+ $methodSynopses = [];
1335
+ $it = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($targetDirectory), \RecursiveIteratorIterator::LEAVES_ONLY);
1336
+ foreach ($it as $file) {
1337
+ $pathName = $file->getPathName();
1338
+ if (!\preg_match('/\\.xml$/i', $pathName)) {
1339
+ continue;
1340
+ }
1341
+ $xml = \file_get_contents($pathName);
1342
+ if ($xml === \false) {
1343
+ continue;
1344
+ }
1345
+ if (\stripos($xml, "<methodsynopsis") === \false && \stripos($xml, "<constructorsynopsis") === \false && \stripos($xml, "<destructorsynopsis") === \false) {
1346
+ continue;
1347
+ }
1348
+ $replacedXml = \preg_replace("/&([A-Za-z0-9._{}%-]+?;)/", "REPLACED-ENTITY-\$1", $xml);
1349
+ $doc = new \DOMDocument();
1350
+ $doc->formatOutput = \false;
1351
+ $doc->preserveWhiteSpace = \true;
1352
+ $doc->validateOnParse = \true;
1353
+ $success = $doc->loadXML($replacedXml);
1354
+ if (!$success) {
1355
+ echo "Failed opening {$pathName}\n";
1356
+ continue;
1357
+ }
1358
+ $docComparator = new \DOMDocument();
1359
+ $docComparator->preserveWhiteSpace = \false;
1360
+ $docComparator->formatOutput = \true;
1361
+ $methodSynopsisElements = [];
1362
+ foreach ($doc->getElementsByTagName("constructorsynopsis") as $element) {
1363
+ $methodSynopsisElements[] = $element;
1364
+ }
1365
+ foreach ($doc->getElementsByTagName("destructorsynopsis") as $element) {
1366
+ $methodSynopsisElements[] = $element;
1367
+ }
1368
+ foreach ($doc->getElementsByTagName("methodsynopsis") as $element) {
1369
+ $methodSynopsisElements[] = $element;
1370
+ }
1371
+ foreach ($methodSynopsisElements as $methodSynopsis) {
1372
+ if (!$methodSynopsis instanceof \DOMElement) {
1373
+ continue;
1374
+ }
1375
+ $list = $methodSynopsis->getElementsByTagName("methodname");
1376
+ $item = $list->item(0);
1377
+ if (!$item instanceof \DOMElement) {
1378
+ continue;
1379
+ }
1380
+ $funcName = $item->textContent;
1381
+ if (!isset($funcMap[$funcName])) {
1382
+ continue;
1383
+ }
1384
+ $funcInfo = $funcMap[$funcName];
1385
+ $newMethodSynopsis = $funcInfo->getMethodSynopsisElement($funcMap, $aliasMap, $doc);
1386
+ if ($newMethodSynopsis === null) {
1387
+ continue;
1388
+ }
1389
+ // Retrieve current signature
1390
+ $params = [];
1391
+ $list = $methodSynopsis->getElementsByTagName("methodparam");
1392
+ foreach ($list as $i => $item) {
1393
+ if (!$item instanceof \DOMElement) {
1394
+ continue;
1395
+ }
1396
+ $paramList = $item->getElementsByTagName("parameter");
1397
+ if ($paramList->count() !== 1) {
1398
+ continue;
1399
+ }
1400
+ $paramName = $paramList->item(0)->textContent;
1401
+ $paramTypes = [];
1402
+ $paramList = $item->getElementsByTagName("type");
1403
+ foreach ($paramList as $type) {
1404
+ if (!$type instanceof \DOMElement) {
1405
+ continue;
1406
+ }
1407
+ $paramTypes[] = $type->textContent;
1408
+ }
1409
+ $params[$paramName] = ["index" => $i, "type" => $paramTypes];
1410
+ }
1411
+ // Check if there is any change - short circuit if there is not any.
1412
+ $xml1 = $doc->saveXML($methodSynopsis);
1413
+ $xml1 = \preg_replace("/&([A-Za-z0-9._{}%-]+?;)/", "REPLACED-ENTITY-\$1", $xml1);
1414
+ $docComparator->loadXML($xml1);
1415
+ $xml1 = $docComparator->saveXML();
1416
+ $methodSynopsis->parentNode->replaceChild($newMethodSynopsis, $methodSynopsis);
1417
+ $xml2 = $doc->saveXML($newMethodSynopsis);
1418
+ $xml2 = \preg_replace("/&([A-Za-z0-9._{}%-]+?;)/", "REPLACED-ENTITY-\$1", $xml2);
1419
+ $docComparator->loadXML($xml2);
1420
+ $xml2 = $docComparator->saveXML();
1421
+ if ($xml1 === $xml2) {
1422
+ continue;
1423
+ }
1424
+ // Update parameter references
1425
+ $paramList = $doc->getElementsByTagName("parameter");
1426
+ /** @var DOMElement $paramElement */
1427
+ foreach ($paramList as $paramElement) {
1428
+ if ($paramElement->parentNode && $paramElement->parentNode->nodeName === "methodparam") {
1429
+ continue;
1430
+ }
1431
+ $name = $paramElement->textContent;
1432
+ if (!isset($params[$name])) {
1433
+ continue;
1434
+ }
1435
+ $index = $params[$name]["index"];
1436
+ if (!isset($funcInfo->args[$index])) {
1437
+ continue;
1438
+ }
1439
+ $paramElement->textContent = $funcInfo->args[$index]->name;
1440
+ }
1441
+ // Return the updated XML
1442
+ $replacedXml = $doc->saveXML();
1443
+ $replacedXml = \preg_replace(["/REPLACED-ENTITY-([A-Za-z0-9._{}%-]+?;)/", "/<refentry\\s+xmlns=\"([a-z0-9.:\\/]+)\"\\s+xml:id=\"([a-z0-9._-]+)\"\\s*>/i", "/<refentry\\s+xmlns=\"([a-z0-9.:\\/]+)\"\\s+xmlns:xlink=\"([a-z0-9.:\\/]+)\"\\s+xml:id=\"([a-z0-9._-]+)\"\\s*>/i"], ["&\$1", "<refentry xml:id=\"\$2\" xmlns=\"\$1\">", "<refentry xml:id=\"\$3\" xmlns=\"\$1\" xmlns:xlink=\"\$2\">"], $replacedXml);
1444
+ $methodSynopses[$pathName] = $replacedXml;
1445
+ }
1446
+ }
1447
+ return $methodSynopses;
1448
+ }
1449
+ function installPhpParser(string $version, string $phpParserDir)
1450
+ {
1451
+ $lockFile = __DIR__ . "/PHP-Parser-install-lock";
1452
+ $lockFd = \fopen($lockFile, 'w+');
1453
+ if (!\flock($lockFd, \LOCK_EX)) {
1454
+ throw new \Exception("Failed to acquire installation lock");
1455
+ }
1456
+ try {
1457
+ // Check whether a parallel process has already installed PHP-Parser.
1458
+ if (\is_dir($phpParserDir)) {
1459
+ return;
1460
+ }
1461
+ $cwd = \getcwd();
1462
+ \chdir(__DIR__);
1463
+ $tarName = "v{$version}.tar.gz";
1464
+ \passthru("wget https://github.com/nikic/PHP-Parser/archive/{$tarName}", $exit);
1465
+ if ($exit !== 0) {
1466
+ \passthru("curl -LO https://github.com/nikic/PHP-Parser/archive/{$tarName}", $exit);
1467
+ }
1468
+ if ($exit !== 0) {
1469
+ throw new \Exception("Failed to download PHP-Parser tarball");
1470
+ }
1471
+ if (!\mkdir($phpParserDir)) {
1472
+ throw new \Exception("Failed to create directory {$phpParserDir}");
1473
+ }
1474
+ \passthru("tar xvzf {$tarName} -C PHP-Parser-{$version} --strip-components 1", $exit);
1475
+ if ($exit !== 0) {
1476
+ throw new \Exception("Failed to extract PHP-Parser tarball");
1477
+ }
1478
+ \unlink(__DIR__ . "/{$tarName}");
1479
+ \chdir($cwd);
1480
+ } finally {
1481
+ \flock($lockFd, \LOCK_UN);
1482
+ @\unlink($lockFile);
1483
+ }
1484
+ }
1485
+ function initPhpParser()
1486
+ {
1487
+ static $isInitialized = \false;
1488
+ if ($isInitialized) {
1489
+ return;
1490
+ }
1491
+ if (!\extension_loaded("tokenizer")) {
1492
+ throw new \Exception("The \"tokenizer\" extension is not available");
1493
+ }
1494
+ $isInitialized = \true;
1495
+ $version = "4.9.0";
1496
+ $phpParserDir = __DIR__ . "/PHP-Parser-{$version}";
1497
+ if (!\is_dir($phpParserDir)) {
1498
+ \WPStaging\Vendor\installPhpParser($version, $phpParserDir);
1499
+ }
1500
+ \spl_autoload_register(function (string $class) use($phpParserDir) {
1501
+ if (\strpos($class, "PhpParser\\") === 0) {
1502
+ $fileName = $phpParserDir . "/lib/" . \str_replace("\\", "/", $class) . ".php";
1503
+ require $fileName;
1504
+ }
1505
+ });
1506
+ }
1507
+ $optind = null;
1508
+ $options = \getopt("fh", ["force-regeneration", "parameter-stats", "help", "verify", "generate-methodsynopses", "replace-methodsynopses", "minimal-arginfo"], $optind);
1509
+ $context = new \WPStaging\Vendor\Context();
1510
+ $printParameterStats = isset($options["parameter-stats"]);
1511
+ $verify = isset($options["verify"]);
1512
+ $generateMethodSynopses = isset($options["generate-methodsynopses"]);
1513
+ $replaceMethodSynopses = isset($options["replace-methodsynopses"]);
1514
+ $context->forceRegeneration = isset($options["f"]) || isset($options["force-regeneration"]);
1515
+ $context->forceParse = $context->forceRegeneration || $printParameterStats || $verify || $generateMethodSynopses || $replaceMethodSynopses;
1516
+ $context->minimalArgInfo = isset($options["minimal-arginfo"]);
1517
+ $targetMethodSynopses = $argv[$optind + 1] ?? null;
1518
+ if ($replaceMethodSynopses && $targetMethodSynopses === null) {
1519
+ die("A target directory must be provided.\n");
1520
+ }
1521
+ if (isset($options["h"]) || isset($options["help"])) {
1522
+ die("\nusage: gen-stub.php [ -f | --force-regeneration ] [ --generate-methodsynopses ] [ --replace-methodsynopses ] [ --parameter-stats ] [ --verify ] [ -h | --help ] [ name.stub.php | directory ] [ directory ]\n\n");
1523
+ }
1524
+ $fileInfos = [];
1525
+ $location = $argv[$optind] ?? ".";
1526
+ if (\is_file($location)) {
1527
+ // Generate single file.
1528
+ $fileInfo = \WPStaging\Vendor\processStubFile($location, $context);
1529
+ if ($fileInfo) {
1530
+ $fileInfos[] = $fileInfo;
1531
+ }
1532
+ } else {
1533
+ if (\is_dir($location)) {
1534
+ $fileInfos = \WPStaging\Vendor\processDirectory($location, $context);
1535
+ } else {
1536
+ echo "{$location} is neither a file nor a directory.\n";
1537
+ exit(1);
1538
+ }
1539
+ }
1540
+ if ($printParameterStats) {
1541
+ $parameterStats = [];
1542
+ foreach ($fileInfos as $fileInfo) {
1543
+ foreach ($fileInfo->getAllFuncInfos() as $funcInfo) {
1544
+ foreach ($funcInfo->args as $argInfo) {
1545
+ if (!isset($parameterStats[$argInfo->name])) {
1546
+ $parameterStats[$argInfo->name] = 0;
1547
+ }
1548
+ $parameterStats[$argInfo->name]++;
1549
+ }
1550
+ }
1551
+ }
1552
+ \arsort($parameterStats);
1553
+ echo \json_encode($parameterStats, \JSON_PRETTY_PRINT), "\n";
1554
+ }
1555
+ /** @var FuncInfo[] $funcMap */
1556
+ $funcMap = [];
1557
+ /** @var FuncInfo[] $aliasMap */
1558
+ $aliasMap = [];
1559
+ foreach ($fileInfos as $fileInfo) {
1560
+ foreach ($fileInfo->getAllFuncInfos() as $funcInfo) {
1561
+ /** @var FuncInfo $funcInfo */
1562
+ $funcMap[$funcInfo->name->__toString()] = $funcInfo;
1563
+ if ($funcInfo->aliasType === "alias") {
1564
+ $aliasMap[$funcInfo->alias->__toString()] = $funcInfo;
1565
+ }
1566
+ }
1567
+ }
1568
+ if ($verify) {
1569
+ $errors = [];
1570
+ foreach ($aliasMap as $aliasFunc) {
1571
+ if (!isset($funcMap[$aliasFunc->alias->__toString()])) {
1572
+ $errors[] = "Aliased function {$aliasFunc->alias}() cannot be found";
1573
+ continue;
1574
+ }
1575
+ if (!$aliasFunc->verify) {
1576
+ continue;
1577
+ }
1578
+ $aliasedFunc = $funcMap[$aliasFunc->alias->__toString()];
1579
+ $aliasedArgs = $aliasedFunc->args;
1580
+ $aliasArgs = $aliasFunc->args;
1581
+ if ($aliasFunc->isInstanceMethod() !== $aliasedFunc->isInstanceMethod()) {
1582
+ if ($aliasFunc->isInstanceMethod()) {
1583
+ $aliasedArgs = \array_slice($aliasedArgs, 1);
1584
+ }
1585
+ if ($aliasedFunc->isInstanceMethod()) {
1586
+ $aliasArgs = \array_slice($aliasArgs, 1);
1587
+ }
1588
+ }
1589
+ \array_map(function (?\WPStaging\Vendor\ArgInfo $aliasArg, ?\WPStaging\Vendor\ArgInfo $aliasedArg) use($aliasFunc, $aliasedFunc, &$errors) {
1590
+ if ($aliasArg === null) {
1591
+ \assert($aliasedArg !== null);
1592
+ $errors[] = "{$aliasFunc->name}(): Argument \${$aliasedArg->name} of aliased function {$aliasedFunc->name}() is missing";
1593
+ return null;
1594
+ }
1595
+ if ($aliasedArg === null) {
1596
+ $errors[] = "{$aliasedFunc->name}(): Argument \${$aliasArg->name} of alias function {$aliasFunc->name}() is missing";
1597
+ return null;
1598
+ }
1599
+ if ($aliasArg->name !== $aliasedArg->name) {
1600
+ $errors[] = "{$aliasFunc->name}(): Argument \${$aliasArg->name} and argument \${$aliasedArg->name} of aliased function {$aliasedFunc->name}() must have the same name";
1601
+ return null;
1602
+ }
1603
+ if ($aliasArg->type != $aliasedArg->type) {
1604
+ $errors[] = "{$aliasFunc->name}(): Argument \${$aliasArg->name} and argument \${$aliasedArg->name} of aliased function {$aliasedFunc->name}() must have the same type";
1605
+ }
1606
+ if ($aliasArg->defaultValue !== $aliasedArg->defaultValue) {
1607
+ $errors[] = "{$aliasFunc->name}(): Argument \${$aliasArg->name} and argument \${$aliasedArg->name} of aliased function {$aliasedFunc->name}() must have the same default value";
1608
+ }
1609
+ }, $aliasArgs, $aliasedArgs);
1610
+ if ((!$aliasedFunc->isMethod() || $aliasedFunc->isFinalMethod()) && (!$aliasFunc->isMethod() || $aliasFunc->isFinalMethod()) && $aliasFunc->return != $aliasedFunc->return) {
1611
+ $errors[] = "{$aliasFunc->name}() and {$aliasedFunc->name}() must have the same return type";
1612
+ }
1613
+ }
1614
+ echo \implode("\n", $errors);
1615
+ if (!empty($errors)) {
1616
+ echo "\n";
1617
+ exit(1);
1618
+ }
1619
+ }
1620
+ if ($generateMethodSynopses) {
1621
+ $methodSynopsesDirectory = \getcwd() . "/methodsynopses";
1622
+ $methodSynopses = \WPStaging\Vendor\generateMethodSynopses($funcMap, $aliasMap);
1623
+ if (!empty($methodSynopses)) {
1624
+ if (!\file_exists($methodSynopsesDirectory)) {
1625
+ \mkdir($methodSynopsesDirectory);
1626
+ }
1627
+ foreach ($methodSynopses as $filename => $content) {
1628
+ if (\file_put_contents("{$methodSynopsesDirectory}/{$filename}", $content)) {
1629
+ echo "Saved {$filename}\n";
1630
+ }
1631
+ }
1632
+ }
1633
+ }
1634
+ if ($replaceMethodSynopses) {
1635
+ $methodSynopses = \WPStaging\Vendor\replaceMethodSynopses($targetMethodSynopses, $funcMap, $aliasMap);
1636
+ foreach ($methodSynopses as $filename => $content) {
1637
+ if (\file_put_contents($filename, $content)) {
1638
+ echo "Saved {$filename}\n";
1639
+ }
1640
+ }
1641
+ }
vendor_wpstg/aws/aws-crt-php/package.xml-template_post ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ </contents>
2
+ <dependencies>
3
+ <required>
4
+ <php>
5
+ <min>7.4.0</min>
6
+ </php>
7
+ <pearinstaller>
8
+ <min>1.10.0</min>
9
+ </pearinstaller>
10
+ </required>
11
+ </dependencies>
12
+ <providesextension>awscrt</providesextension>
13
+ <extsrcrelease/>
14
+ <changelog>
15
+ <release>
16
+
17
+ </release>
18
+ </changelog>
19
+ </package>
vendor_wpstg/aws/aws-crt-php/package.xml-template_pre ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <package packagerversion="1.8.1" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd">
3
+ <name>awscrt</name>
4
+ <channel>pecl.php.net</channel>
5
+ <summary>AWS Common Runtime PHP bindings</summary>
6
+ <description>AWS Common Runtime provides a set of low level tools as network protocols and authentication used by the AWSSDK for PHP to provide high level API to access AWS services.</description>
7
+ <lead>
8
+ <name>{{{NAME}}}</name>
9
+ <user>{{{USER}}}</user>
10
+ <email>{{{EMAIL}}}</email>
11
+ <active>yes</active>
12
+ </lead>
13
+ <date>{{{TODAY}}}</date>
14
+ <version>
15
+ <release>{{{VERSION}}}</release>
16
+ <api>1.0.0</api>
17
+ </version>
18
+ <stability>
19
+ <release>devel</release>
20
+ <api>stable</api>
21
+ </stability>
22
+ <license uri="https://www.apache.org/licenses/LICENSE-2.0">Apache License Version 2.0</license>
23
+ <notes>{{{NOTES}}}</notes>
24
+ <contents>
vendor_wpstg/aws/aws-crt-php/php-win.ini ADDED
@@ -0,0 +1,2 @@
 
 
1
+ extension=php_awscrt.dll
2
+ extension=php_openssl.dll
vendor_wpstg/aws/aws-crt-php/php.ini ADDED
@@ -0,0 +1 @@
 
1
+ extension=modules/awscrt.so
vendor_wpstg/aws/aws-crt-php/prepare_package_xml.sh ADDED
@@ -0,0 +1,144 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/zsh
2
+ zparseopts -A opts -name: -user: -email: -version: -notes:
3
+ if [[ $# -lt 10 ]]
4
+ then
5
+ echo "Usage ${0} --name NAME, --user USER --email EMAIL --version VERSION --notes NOTES"
6
+ exit 1
7
+ fi
8
+ NAME="${opts[--name]}"
9
+ USER="${opts[--user]}"
10
+ EMAIL="${opts[--email]}"
11
+ VERSION="${opts[--version]}"
12
+ NOTES="${opts[--notes]}"
13
+
14
+ TODAY=$(date -u +%Y-%m-%d)
15
+
16
+ cat package.xml-template_pre \
17
+ | sed "s/{{{NAME}}}/$NAME/g" \
18
+ | sed "s/{{{USER}}}/$USER/g" \
19
+ | sed "s/{{{EMAIL}}}/$EMAIL/g" \
20
+ | sed "s/{{{TODAY}}}/$TODAY/g" \
21
+ | sed "s/{{{VERSION}}}/$VERSION/g" \
22
+ | sed "s/{{{NOTES}}}/$NOTES/g"
23
+
24
+ source_ext='(c|cc|h|cpp|hpp|m4|w32|ini|frag|cmake|inl|in|py|gnu|yaml|def|pl|S|s|errordata|go|lds|num|asm|mod|peg|mk|rs|toml|sh)'
25
+ doc_ext='(md|json|html|dot|graphml|png|gn|sha1|css|rst|)'
26
+
27
+ special_docs='(LICENSE*|NOTICE|changelog.txt|CHANGELOG|THIRD-PARTY|README*|readme|METADATA|CONTRIBUTORS|UPDATING|doc.config)'
28
+ special_tests='(ci-test.sh|format-check.sh|run_tests*|sanitizer-blacklist.txt|run-clang-tidy.sh|benchmark-build-run.sh|break-tests.sh|generate-coverage.sh|test.xml)'
29
+ special_src='(gen_api.php|gen_stub.php|CMakeLists.txt|post.sh|postun.sh|Makefile*|build-buildspec.sh|build-deps.sh|objects.txt|go.*|BUILD*|DEPS|install_and_run.sh|codemod.sh|requirements.txt)'
30
+ skip_files='(package.xml*|prepare_release.sh|codereview.settings|*.o|*.a|*.obj|*.lib|break-tests-android.sh|whitespace.txt|prepare_package_xml.sh|crypto_test_data.cc|*.pdf|*.svg|*.docx|cbmc-proof.txt|codecov*|litani*|*.toml)'
31
+
32
+ special_scripts='(awscrt.stub.php)'
33
+
34
+ skip_directories='(tests|test|AWSCRTAndroidTestRunner|docker-images|codebuild|fuzz|verfication|third_party|docs|generated-src|aws-lc|aws-crt-sys)'
35
+
36
+ process_file() {
37
+ if (( $# == 0 ))
38
+ then
39
+ echo "ERROR: filename not passed"
40
+ exit 1
41
+ fi
42
+ if [[ $1 = $~skip_files ]]
43
+ then
44
+ # This file is not part of the release bundle
45
+ return 0
46
+ fi
47
+
48
+ echo -n '<file name="'"$1"'" role="'
49
+ # Special cases
50
+ case ${a} in
51
+ $~special_scripts)
52
+ echo -n 'script'
53
+ ;;
54
+ $~special_docs)
55
+ echo -n 'doc'
56
+ ;;
57
+ $~special_tests)
58
+ echo -n 'test'
59
+ ;;
60
+ $~special_src)
61
+ echo -n 'src'
62
+ ;;
63
+ *)
64
+ # Extension based cases
65
+ case ${a:t:e} in
66
+ $~source_ext)
67
+ echo -n 'src'
68
+ ;;
69
+ $~doc_ext)
70
+ echo -n 'doc'
71
+ ;;
72
+ php)
73
+ echo -n 'script'
74
+ ;;
75
+ *)
76
+ echo "${a:t:e} - ${a} - FAIL TO RECOGNIZE"
77
+ exit 1
78
+ esac
79
+ esac
80
+ echo '"/>'
81
+ return 0
82
+ }
83
+
84
+
85
+ process_dir() {
86
+ if (( $# == 0 ))
87
+ then
88
+ echo "WARNING: dirname not passed"
89
+ exit 1
90
+ fi
91
+ if [[ "${1}" = $~skip_directories ]]
92
+ then
93
+ return 0
94
+ fi
95
+ echo '<dir name="'"$1"'">'
96
+ cd "$1"
97
+ for a in *
98
+ do
99
+ if [[ -f ${a} ]]
100
+ then process_file "${a}"
101
+ else process_dir "${a}"
102
+ fi
103
+ done
104
+ # Special cases for compiler features placed in tests directories in and s2n
105
+ if [[ "${1}" = "s2n" && -d tests ]]
106
+ then
107
+ echo '<dir name="tests">'
108
+ echo '<dir name="features">'
109
+ cd tests/features
110
+ for a in *
111
+ do
112
+ process_file "${a}"
113
+ done
114
+ cd ../..
115
+ echo '</dir>'
116
+ echo '</dir>'
117
+ fi
118
+ echo '</dir>'
119
+ cd ..
120
+ return 0
121
+ }
122
+
123
+ echo '<dir name="/">'
124
+ for a in *
125
+ do
126
+ if [[ ${a} == 'tests' ]]
127
+ then
128
+ echo '<dir name="tests">'
129
+ for b in tests/*
130
+ do
131
+ echo '<file name="'$( basename "${b}" )'" role="test" />'
132
+ done
133
+ echo '</dir>'
134
+ continue
135
+ fi
136
+ if [[ -f ${a} ]]
137
+ then process_file "${a}"
138
+ else process_dir "${a}"
139
+ fi
140
+ done
141
+ echo '</dir>'
142
+
143
+ cat package.xml-template_post
144
+
vendor_wpstg/aws/aws-crt-php/prepare_release.sh ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/zsh
2
+ zparseopts -A opts -name: -user: -email: -version: -notes:
3
+ if [[ $# -lt 10 ]]; then
4
+ echo "Usage ${0} --name NAME --user USER --email EMAIL --version VERSION --notes NOTES"
5
+ exit 1
6
+ fi
7
+ PACKAGE='awscrt'
8
+ NAME="${opts[--name]}"
9
+ USER="${opts[--user]}"
10
+ EMAIL="${opts[--email]}"
11
+ VERSION="${opts[--version]}"
12
+ NOTES="${opts[--notes]}"
13
+
14
+ ./prepare_package_xml.sh --name "${NAME}" --user "${USER}" --email "${EMAIL}" --version "${VERSION}" --notes "${NOTES}" >package.xml
15
+ if [[ $? -ne 0 ]]; then
16
+ echo "ERROR PROCESSING review package.xml"
17
+ exit 1
18
+ fi
19
+ tidy -xml -m -i package.xml
20
+ pear package-validate
21
+ if [[ $? -ne 0 ]]; then
22
+ echo "ERROR VALIDATING review package.xml"
23
+ exit 1
24
+ fi
25
+ pear package
26
+ if [[ $? -ne 0 ]]; then
27
+ echo "ERROR PROCESSING review package.xml"
28
+ exit 1
29
+ fi
30
+
31
+ echo "Size of ${PACKAGE}-${VERSION}.tgz: " $(du -h "${PACKAGE}-${VERSION}.tgz")
vendor_wpstg/aws/aws-crt-php/run_tests ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env bash
2
+
3
+ set -ex
4
+
5
+ launcher=
6
+ if command -v catchsegv; then
7
+ launcher=catchsegv
8
+ fi
9
+
10
+ if [ -z $PHP_BINARY ]; then
11
+ PHP_BINARY=$(which php)
12
+ fi
13
+
14
+ if [ ! -d vendor ]; then
15
+ composer update
16
+ fi
17
+
18
+ $launcher $PHP_BINARY -c php.ini vendor/bin/phpunit tests --debug
vendor_wpstg/aws/aws-crt-php/run_tests.bat ADDED
@@ -0,0 +1,4 @@
 
 
 
 
1
+
2
+ @echo on
3
+
4
+ %PHP_BINARY% -c php-win.ini vendor/bin/phpunit tests --debug
vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/Auth/AwsCredentials.php ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
5
+ * SPDX-License-Identifier: Apache-2.0.
6
+ */
7
+ namespace WPStaging\Vendor\AWS\CRT\Auth;
8
+
9
+ use WPStaging\Vendor\AWS\CRT\NativeResource as NativeResource;
10
+ use WPStaging\Vendor\AWS\CRT\Options as Options;
11
+ /**
12
+ * Represents a set of AWS credentials
13
+ *
14
+ * @param array options:
15
+ * - string access_key_id - AWS Access Key Id
16
+ * - string secret_access_key - AWS Secret Access Key
17
+ * - string session_token - Optional STS session token
18
+ * - int expiration_timepoint_seconds - Optional time to expire these credentials
19
+ */
20
+ final class AwsCredentials extends \WPStaging\Vendor\AWS\CRT\NativeResource
21
+ {
22
+ static function defaults()
23
+ {
24
+ return ['access_key_id' => '', 'secret_access_key' => '', 'session_token' => '', 'expiration_timepoint_seconds' => 0];
25
+ }
26
+ private $access_key_id;
27
+ private $secret_access_key;
28
+ private $session_token;
29
+ private $expiration_timepoint_seconds = 0;
30
+ public function __get($name)
31
+ {
32
+ return $this->{$name};
33
+ }
34
+ function __construct(array $options = [])
35
+ {
36
+ parent::__construct();
37
+ $options = new \WPStaging\Vendor\AWS\CRT\Options($options, self::defaults());
38
+ $this->access_key_id = $options->access_key_id->asString();
39
+ $this->secret_access_key = $options->secret_access_key->asString();
40
+ $this->session_token = $options->session_token ? $options->session_token->asString() : null;
41
+ $this->expiration_timepoint_seconds = $options->expiration_timepoint_seconds->asInt();
42
+ if (\strlen($this->access_key_id) == 0) {
43
+ throw new \InvalidArgumentException("access_key_id must be provided");
44
+ }
45
+ if (\strlen($this->secret_access_key) == 0) {
46
+ throw new \InvalidArgumentException("secret_access_key must be provided");
47
+ }
48
+ $creds_options = self::$crt->aws_credentials_options_new();
49
+ self::$crt->aws_credentials_options_set_access_key_id($creds_options, $this->access_key_id);
50
+ self::$crt->aws_credentials_options_set_secret_access_key($creds_options, $this->secret_access_key);
51
+ self::$crt->aws_credentials_options_set_session_token($creds_options, $this->session_token);
52
+ self::$crt->aws_credentials_options_set_expiration_timepoint_seconds($creds_options, $this->expiration_timepoint_seconds);
53
+ $this->acquire(self::$crt->aws_credentials_new($creds_options));
54
+ self::$crt->aws_credentials_options_release($creds_options);
55
+ }
56
+ function __destruct()
57
+ {
58
+ self::$crt->aws_credentials_release($this->release());
59
+ parent::__destruct();
60
+ }
61
+ }
vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/Auth/CredentialsProvider.php ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
5
+ * SPDX-License-Identifier: Apache-2.0.
6
+ */
7
+ namespace WPStaging\Vendor\AWS\CRT\Auth;
8
+
9
+ use WPStaging\Vendor\AWS\CRT\NativeResource as NativeResource;
10
+ /**
11
+ * Base class for credentials providers
12
+ */
13
+ abstract class CredentialsProvider extends \WPStaging\Vendor\AWS\CRT\NativeResource
14
+ {
15
+ function __construct(array $options = [])
16
+ {
17
+ parent::__construct();
18
+ }
19
+ function __destruct()
20
+ {
21
+ self::$crt->credentials_provider_release($this->release());
22
+ parent::__destruct();
23
+ }
24
+ }
vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/Auth/Signable.php ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
5
+ * SPDX-License-Identifier: Apache-2.0.
6
+ */
7
+ namespace WPStaging\Vendor\AWS\CRT\Auth;
8
+
9
+ use WPStaging\Vendor\AWS\CRT\IO\InputStream;
10
+ use WPStaging\Vendor\AWS\CRT\NativeResource as NativeResource;
11
+ class Signable extends \WPStaging\Vendor\AWS\CRT\NativeResource
12
+ {
13
+ public static function fromHttpRequest($http_message)
14
+ {
15
+ return new \WPStaging\Vendor\AWS\CRT\Auth\Signable(function () use($http_message) {
16
+ return self::$crt->signable_new_from_http_request($http_message->native);
17
+ });
18
+ }
19
+ public static function fromChunk($chunk_stream, $previous_signature = "")
20
+ {
21
+ if (!$chunk_stream instanceof \WPStaging\Vendor\AWS\CRT\IO\InputStream) {
22
+ $chunk_stream = new \WPStaging\Vendor\AWS\CRT\IO\InputStream($chunk_stream);
23
+ }
24
+ return new \WPStaging\Vendor\AWS\CRT\Auth\Signable(function () use($chunk_stream, $previous_signature) {
25
+ return self::$crt->signable_new_from_chunk($chunk_stream->native, $previous_signature);
26
+ });
27
+ }
28
+ public static function fromCanonicalRequest($canonical_request)
29
+ {
30
+ return new \WPStaging\Vendor\AWS\CRT\Auth\Signable(function () use($canonical_request) {
31
+ return self::$crt->signable_new_from_canonical_request($canonical_request);
32
+ });
33
+ }
34
+ protected function __construct($ctor)
35
+ {
36
+ parent::__construct();
37
+ $this->acquire($ctor());
38
+ }
39
+ function __destruct()
40
+ {
41
+ self::$crt->signable_release($this->release());
42
+ parent::__destruct();
43
+ }
44
+ }
vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/Auth/SignatureType.php ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
5
+ * SPDX-License-Identifier: Apache-2.0.
6
+ */
7
+ namespace WPStaging\Vendor\AWS\CRT\Auth;
8
+
9
+ class SignatureType
10
+ {
11
+ const HTTP_REQUEST_HEADERS = 0;
12
+ const HTTP_REQUEST_QUERY_PARAMS = 1;
13
+ const HTTP_REQUEST_CHUNK = 2;
14
+ const HTTP_REQUEST_EVENT = 3;
15
+ const CANONICAL_REQUEST_HEADERS = 4;
16
+ const CANONICAL_REQUEST_QUERY_PARAMS = 5;
17
+ }
vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/Auth/SignedBodyHeaderType.php ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
5
+ * SPDX-License-Identifier: Apache-2.0.
6
+ */
7
+ namespace WPStaging\Vendor\AWS\CRT\Auth;
8
+
9
+ class SignedBodyHeaderType
10
+ {
11
+ const NONE = 0;
12
+ const X_AMZ_CONTENT_SHA256 = 1;
13
+ }
vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/Auth/Signing.php ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
5
+ * SPDX-License-Identifier: Apache-2.0.
6
+ */
7
+ namespace WPStaging\Vendor\AWS\CRT\Auth;
8
+
9
+ use WPStaging\Vendor\AWS\CRT\NativeResource;
10
+ abstract class Signing extends \WPStaging\Vendor\AWS\CRT\NativeResource
11
+ {
12
+ static function signRequestAws($signable, $signing_config, $on_complete)
13
+ {
14
+ return self::$crt->sign_request_aws($signable->native, $signing_config->native, function ($result, $error_code) use($on_complete) {
15
+ $signing_result = \WPStaging\Vendor\AWS\CRT\Auth\SigningResult::fromNative($result);
16
+ $on_complete($signing_result, $error_code);
17
+ }, null);
18
+ }
19
+ static function testVerifySigV4ASigning($signable, $signing_config, $expected_canonical_request, $signature, $ecc_key_pub_x, $ecc_key_pub_y)
20
+ {
21
+ return self::$crt->test_verify_sigv4a_signing($signable, $signing_config, $expected_canonical_request, $signature, $ecc_key_pub_x, $ecc_key_pub_y);
22
+ }
23
+ }
vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/Auth/SigningAlgorithm.php ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
5
+ * SPDX-License-Identifier: Apache-2.0.
6
+ */
7
+ namespace WPStaging\Vendor\AWS\CRT\Auth;
8
+
9
+ class SigningAlgorithm
10
+ {
11
+ const SIGv4 = 0;
12
+ const SIGv4_ASYMMETRIC = 1;
13
+ }
vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/Auth/SigningConfigAWS.php ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
5
+ * SPDX-License-Identifier: Apache-2.0.
6
+ */
7
+ namespace WPStaging\Vendor\AWS\CRT\Auth;
8
+
9
+ use WPStaging\Vendor\AWS\CRT\NativeResource as NativeResource;
10
+ use WPStaging\Vendor\AWS\CRT\Options as Options;
11
+ class SigningConfigAWS extends \WPStaging\Vendor\AWS\CRT\NativeResource
12
+ {
13
+ public static function defaults()
14
+ {
15
+ return ['algorithm' => \WPStaging\Vendor\AWS\CRT\Auth\SigningAlgorithm::SIGv4, 'signature_type' => \WPStaging\Vendor\AWS\CRT\Auth\SignatureType::HTTP_REQUEST_HEADERS, 'credentials_provider' => null, 'region' => null, 'service' => null, 'use_double_uri_encode' => \false, 'should_normalize_uri_path' => \false, 'omit_session_token' => \false, 'signed_body_value' => null, 'signed_body_header_type' => \WPStaging\Vendor\AWS\CRT\Auth\SignedBodyHeaderType::NONE, 'expiration_in_seconds' => 0, 'date' => \time(), 'should_sign_header' => null];
16
+ }
17
+ private $options;
18
+ public function __construct(array $options = [])
19
+ {
20
+ parent::__construct();
21
+ $this->options = $options = new \WPStaging\Vendor\AWS\CRT\Options($options, self::defaults());
22
+ $sc = $this->acquire(self::$crt->signing_config_aws_new());
23
+ self::$crt->signing_config_aws_set_algorithm($sc, $options->algorithm->asInt());
24
+ self::$crt->signing_config_aws_set_signature_type($sc, $options->signature_type->asInt());
25
+ if ($credentials_provider = $options->credentials_provider->asObject()) {
26
+ self::$crt->signing_config_aws_set_credentials_provider($sc, $credentials_provider->native);
27
+ }
28
+ self::$crt->signing_config_aws_set_region($sc, $options->region->asString());
29
+ self::$crt->signing_config_aws_set_service($sc, $options->service->asString());
30
+ self::$crt->signing_config_aws_set_use_double_uri_encode($sc, $options->use_double_uri_encode->asBool());
31
+ self::$crt->signing_config_aws_set_should_normalize_uri_path($sc, $options->should_normalize_uri_path->asBool());
32
+ self::$crt->signing_config_aws_set_omit_session_token($sc, $options->omit_session_token->asBool());
33
+ self::$crt->signing_config_aws_set_signed_body_value($sc, $options->signed_body_value->asString());
34
+ self::$crt->signing_config_aws_set_signed_body_header_type($sc, $options->signed_body_header_type->asInt());
35
+ self::$crt->signing_config_aws_set_expiration_in_seconds($sc, $options->expiration_in_seconds->asInt());
36
+ self::$crt->signing_config_aws_set_date($sc, $options->date->asInt());
37
+ if ($should_sign_header = $options->should_sign_header->asCallable()) {
38
+ self::$crt->signing_config_aws_set_should_sign_header_fn($sc, $should_sign_header);
39
+ }
40
+ }
41
+ function __destruct()
42
+ {
43
+ self::$crt->signing_config_aws_release($this->release());
44
+ parent::__destruct();
45
+ }
46
+ public function __get($name)
47
+ {
48
+ return $this->options->get($name);
49
+ }
50
+ }
vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/Auth/SigningResult.php ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
5
+ * SPDX-License-Identifier: Apache-2.0.
6
+ */
7
+ namespace WPStaging\Vendor\AWS\CRT\Auth;
8
+
9
+ use WPStaging\Vendor\AWS\CRT\NativeResource;
10
+ use WPStaging\Vendor\AWS\CRT\HTTP\Request;
11
+ class SigningResult extends \WPStaging\Vendor\AWS\CRT\NativeResource
12
+ {
13
+ protected function __construct($native)
14
+ {
15
+ parent::__construct();
16
+ $this->acquire($native);
17
+ }
18
+ function __destruct()
19
+ {
20
+ // No destruction necessary, SigningResults are transient, just release
21
+ $this->release();
22
+ parent::__destruct();
23
+ }
24
+ public static function fromNative($ptr)
25
+ {
26
+ return new \WPStaging\Vendor\AWS\CRT\Auth\SigningResult($ptr);
27
+ }
28
+ public function applyToHttpRequest(&$http_request)
29
+ {
30
+ self::$crt->signing_result_apply_to_http_request($this->native, $http_request->native);
31
+ // Update http_request from native
32
+ $http_request = \WPStaging\Vendor\AWS\CRT\HTTP\Request::unmarshall($http_request->toBlob());
33
+ }
34
+ }
vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/Auth/StaticCredentialsProvider.php ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
5
+ * SPDX-License-Identifier: Apache-2.0.
6
+ */
7
+ namespace WPStaging\Vendor\AWS\CRT\Auth;
8
+
9
+ /**
10
+ * Provides a static set of AWS credentials
11
+ *
12
+ * @param array options:
13
+ * - string access_key_id - AWS Access Key Id
14
+ * - string secret_access_key - AWS Secret Access Key
15
+ * - string session_token - Optional STS session token
16
+ */
17
+ final class StaticCredentialsProvider extends \WPStaging\Vendor\AWS\CRT\Auth\CredentialsProvider
18
+ {
19
+ private $credentials;
20
+ public function __get($name)
21
+ {
22
+ return $this->{$name};
23
+ }
24
+ function __construct(array $options = [])
25
+ {
26
+ parent::__construct();
27
+ $this->credentials = new \WPStaging\Vendor\AWS\CRT\Auth\AwsCredentials($options);
28
+ $provider_options = self::$crt->credentials_provider_static_options_new();
29
+ self::$crt->credentials_provider_static_options_set_access_key_id($provider_options, $this->credentials->access_key_id);
30
+ self::$crt->credentials_provider_static_options_set_secret_access_key($provider_options, $this->credentials->secret_access_key);
31
+ self::$crt->credentials_provider_static_options_set_session_token($provider_options, $this->credentials->session_token);
32
+ $this->acquire(self::$crt->credentials_provider_static_new($provider_options));
33
+ self::$crt->credentials_provider_static_options_release($provider_options);
34
+ }
35
+ }
vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/CRT.php ADDED
@@ -0,0 +1,356 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
5
+ * SPDX-License-Identifier: Apache-2.0.
6
+ */
7
+ namespace WPStaging\Vendor\AWS\CRT;
8
+
9
+ use WPStaging\Vendor\AWS\CRT\Internal\Extension;
10
+ use RuntimeException;
11
+ /**
12
+ * Wrapper for the interface to the CRT. There only ever needs to be one of these, but
13
+ * additional instances won't cost anything other than their memory.
14
+ * Creating an instance of any NativeResource will activate the CRT binding. User code
15
+ * should only need to create one of these if they are only accessing CRT:: static functions.
16
+ */
17
+ final class CRT
18
+ {
19
+ private static $impl = null;
20
+ private static $refcount = 0;
21
+ function __construct()
22
+ {
23
+ if (\is_null(self::$impl)) {
24
+ try {
25
+ self::$impl = new \WPStaging\Vendor\AWS\CRT\Internal\Extension();
26
+ } catch (\RuntimeException $rex) {
27
+ throw new \RuntimeException("Unable to initialize AWS CRT via awscrt extension: \n{$rex}", -1);
28
+ }
29
+ }
30
+ ++self::$refcount;
31
+ }
32
+ function __destruct()
33
+ {
34
+ if (--self::$refcount == 0) {
35
+ self::$impl = null;
36
+ }
37
+ }
38
+ /**
39
+ * @return bool whether or not the CRT is currently loaded
40
+ */
41
+ public static function isLoaded()
42
+ {
43
+ return !\is_null(self::$impl);
44
+ }
45
+ /**
46
+ * @return bool whether or not the CRT is available via one of the possible backends
47
+ */
48
+ public static function isAvailable()
49
+ {
50
+ try {
51
+ new \WPStaging\Vendor\AWS\CRT\CRT();
52
+ return \true;
53
+ } catch (\RuntimeException $ex) {
54
+ return \false;
55
+ }
56
+ }
57
+ /**
58
+ * @return integer last error code reported within the CRT
59
+ */
60
+ public static function last_error()
61
+ {
62
+ return self::$impl->aws_crt_last_error();
63
+ }
64
+ /**
65
+ * @param integer $error Error code from the CRT, usually delivered via callback or {@see last_error}
66
+ * @return string Human-readable description of the provided error code
67
+ */
68
+ public static function error_str($error)
69
+ {
70
+ return self::$impl->aws_crt_error_str((int) $error);
71
+ }
72
+ /**
73
+ * @param integer $error Error code from the CRT, usually delivered via callback or {@see last_error}
74
+ * @return string Name/enum identifier for the provided error code
75
+ */
76
+ public static function error_name($error)
77
+ {
78
+ return self::$impl->aws_crt_error_name((int) $error);
79
+ }
80
+ public static function log_to_stdout()
81
+ {
82
+ return self::$impl->aws_crt_log_to_stdout();
83
+ }
84
+ public static function log_to_stderr()
85
+ {
86
+ return self::$impl->aws_crt_log_to_stderr();
87
+ }
88
+ public static function log_to_file($filename)
89
+ {
90
+ return self::$impl->aws_crt_log_to_file($filename);
91
+ }
92
+ public static function log_to_stream($stream)
93
+ {
94
+ return self::$impl->aws_crt_log_to_stream($stream);
95
+ }
96
+ public static function log_set_level($level)
97
+ {
98
+ return self::$impl->aws_crt_log_set_level($level);
99
+ }
100
+ public static function log_stop()
101
+ {
102
+ return self::$impl->aws_crt_log_stop();
103
+ }
104
+ public static function log_message($level, $message)
105
+ {
106
+ return self::$impl->aws_crt_log_message($level, $message);
107
+ }
108
+ /**
109
+ * @return object Pointer to native event_loop_group_options
110
+ */
111
+ function event_loop_group_options_new()
112
+ {
113
+ return self::$impl->aws_crt_event_loop_group_options_new();
114
+ }
115
+ /**
116
+ * @param object $elg_options Pointer to native event_loop_group_options
117
+ */
118
+ function event_loop_group_options_release($elg_options)
119
+ {
120
+ self::$impl->aws_crt_event_loop_group_options_release($elg_options);
121
+ }
122
+ /**
123
+ * @param object $elg_options Pointer to native event_loop_group_options
124
+ * @param integer $max_threads Maximum number of threads to allow the event loop group to use, default: 0/1 per CPU core
125
+ */
126
+ function event_loop_group_options_set_max_threads($elg_options, $max_threads)
127
+ {
128
+ self::$impl->aws_crt_event_loop_group_options_set_max_threads($elg_options, (int) $max_threads);
129
+ }
130
+ /**
131
+ * @param object Pointer to event_loop_group_options, {@see event_loop_group_options_new}
132
+ * @return object Pointer to the new event loop group
133
+ */
134
+ function event_loop_group_new($options)
135
+ {
136
+ return self::$impl->aws_crt_event_loop_group_new($options);
137
+ }
138
+ /**
139
+ * @param object $elg Pointer to the event loop group to release
140
+ */
141
+ function event_loop_group_release($elg)
142
+ {
143
+ self::$impl->aws_crt_event_loop_group_release($elg);
144
+ }
145
+ /**
146
+ * return object Pointer to native AWS credentials options
147
+ */
148
+ function aws_credentials_options_new()
149
+ {
150
+ return self::$impl->aws_crt_credentials_options_new();
151
+ }
152
+ function aws_credentials_options_release($options)
153
+ {
154
+ self::$impl->aws_crt_credentials_options_release($options);
155
+ }
156
+ function aws_credentials_options_set_access_key_id($options, $access_key_id)
157
+ {
158
+ self::$impl->aws_crt_credentials_options_set_access_key_id($options, $access_key_id);
159
+ }
160
+ function aws_credentials_options_set_secret_access_key($options, $secret_access_key)
161
+ {
162
+ self::$impl->aws_crt_credentials_options_set_secret_access_key($options, $secret_access_key);
163
+ }
164
+ function aws_credentials_options_set_session_token($options, $session_token)
165
+ {
166
+ self::$impl->aws_crt_credentials_options_set_session_token($options, $session_token);
167
+ }
168
+ function aws_credentials_options_set_expiration_timepoint_seconds($options, $expiration_timepoint_seconds)
169
+ {
170
+ self::$impl->aws_crt_credentials_options_set_expiration_timepoint_seconds($options, $expiration_timepoint_seconds);
171
+ }
172
+ function aws_credentials_new($options)
173
+ {
174
+ return self::$impl->aws_crt_credentials_new($options);
175
+ }
176
+ function aws_credentials_release($credentials)
177
+ {
178
+ self::$impl->aws_crt_credentials_release($credentials);
179
+ }
180
+ function credentials_provider_release($provider)
181
+ {
182
+ self::$impl->aws_crt_credentials_provider_release($provider);
183
+ }
184
+ function credentials_provider_static_options_new()
185
+ {
186
+ return self::$impl->aws_crt_credentials_provider_static_options_new();
187
+ }
188
+ function credentials_provider_static_options_release($options)
189
+ {
190
+ self::$impl->aws_crt_credentials_provider_static_options_release($options);
191
+ }
192
+ function credentials_provider_static_options_set_access_key_id($options, $access_key_id)
193
+ {
194
+ self::$impl->aws_crt_credentials_provider_static_options_set_access_key_id($options, $access_key_id);
195
+ }
196
+ function credentials_provider_static_options_set_secret_access_key($options, $secret_access_key)
197
+ {
198
+ self::$impl->aws_crt_credentials_provider_static_options_set_secret_access_key($options, $secret_access_key);
199
+ }
200
+ function credentials_provider_static_options_set_session_token($options, $session_token)
201
+ {
202
+ self::$impl->aws_crt_credentials_provider_static_options_set_session_token($options, $session_token);
203
+ }
204
+ function credentials_provider_static_new($options)
205
+ {
206
+ return self::$impl->aws_crt_credentials_provider_static_new($options);
207
+ }
208
+ function input_stream_options_new()
209
+ {
210
+ return self::$impl->aws_crt_input_stream_options_new();
211
+ }
212
+ function input_stream_options_release($options)
213
+ {
214
+ self::$impl->aws_crt_input_stream_options_release($options);
215
+ }
216
+ function input_stream_options_set_user_data($options, $user_data)
217
+ {
218
+ self::$impl->aws_crt_input_stream_options_set_user_data($options, $user_data);
219
+ }
220
+ function input_stream_new($options)
221
+ {
222
+ return self::$impl->aws_crt_input_stream_new($options);
223
+ }
224
+ function input_stream_release($stream)
225
+ {
226
+ self::$impl->aws_crt_input_stream_release($stream);
227
+ }
228
+ function input_stream_seek($stream, $offset, $basis)
229
+ {
230
+ return self::$impl->aws_crt_input_stream_seek($stream, $offset, $basis);
231
+ }
232
+ function input_stream_read($stream, $length)
233
+ {
234
+ return self::$impl->aws_crt_input_stream_read($stream, $length);
235
+ }
236
+ function input_stream_eof($stream)
237
+ {
238
+ return self::$impl->aws_crt_input_stream_eof($stream);
239
+ }
240
+ function input_stream_get_length($stream)
241
+ {
242
+ return self::$impl->aws_crt_input_stream_get_length($stream);
243
+ }
244
+ function http_message_new_from_blob($blob)
245
+ {
246
+ return self::$impl->aws_crt_http_message_new_from_blob($blob);
247
+ }
248
+ function http_message_to_blob($message)
249
+ {
250
+ return self::$impl->aws_crt_http_message_to_blob($message);
251
+ }
252
+ function http_message_release($message)
253
+ {
254
+ self::$impl->aws_crt_http_message_release($message);
255
+ }
256
+ function signing_config_aws_new()
257
+ {
258
+ return self::$impl->aws_crt_signing_config_aws_new();
259
+ }
260
+ function signing_config_aws_release($signing_config)
261
+ {
262
+ return self::$impl->aws_crt_signing_config_aws_release($signing_config);
263
+ }
264
+ function signing_config_aws_set_algorithm($signing_config, $algorithm)
265
+ {
266
+ self::$impl->aws_crt_signing_config_aws_set_algorithm($signing_config, (int) $algorithm);
267
+ }
268
+ function signing_config_aws_set_signature_type($signing_config, $signature_type)
269
+ {
270
+ self::$impl->aws_crt_signing_config_aws_set_signature_type($signing_config, (int) $signature_type);
271
+ }
272
+ function signing_config_aws_set_credentials_provider($signing_config, $credentials_provider)
273
+ {
274
+ self::$impl->aws_crt_signing_config_aws_set_credentials_provider($signing_config, $credentials_provider);
275
+ }
276
+ function signing_config_aws_set_region($signing_config, $region)
277
+ {
278
+ self::$impl->aws_crt_signing_config_aws_set_region($signing_config, $region);
279
+ }
280
+ function signing_config_aws_set_service($signing_config, $service)
281
+ {
282
+ self::$impl->aws_crt_signing_config_aws_set_service($signing_config, $service);
283
+ }
284
+ function signing_config_aws_set_use_double_uri_encode($signing_config, $use_double_uri_encode)
285
+ {
286
+ self::$impl->aws_crt_signing_config_aws_set_use_double_uri_encode($signing_config, $use_double_uri_encode);
287
+ }
288
+ function signing_config_aws_set_should_normalize_uri_path($signing_config, $should_normalize_uri_path)
289
+ {
290
+ self::$impl->aws_crt_signing_config_aws_set_should_normalize_uri_path($signing_config, $should_normalize_uri_path);
291
+ }
292
+ function signing_config_aws_set_omit_session_token($signing_config, $omit_session_token)
293
+ {
294
+ self::$impl->aws_crt_signing_config_aws_set_omit_session_token($signing_config, $omit_session_token);
295
+ }
296
+ function signing_config_aws_set_signed_body_value($signing_config, $signed_body_value)
297
+ {
298
+ self::$impl->aws_crt_signing_config_aws_set_signed_body_value($signing_config, $signed_body_value);
299
+ }
300
+ function signing_config_aws_set_signed_body_header_type($signing_config, $signed_body_header_type)
301
+ {
302
+ self::$impl->aws_crt_signing_config_aws_set_signed_body_header_type($signing_config, $signed_body_header_type);
303
+ }
304
+ function signing_config_aws_set_expiration_in_seconds($signing_config, $expiration_in_seconds)
305
+ {
306
+ self::$impl->aws_crt_signing_config_aws_set_expiration_in_seconds($signing_config, $expiration_in_seconds);
307
+ }
308
+ function signing_config_aws_set_date($signing_config, $timestamp)
309
+ {
310
+ self::$impl->aws_crt_signing_config_aws_set_date($signing_config, $timestamp);
311
+ }
312
+ function signing_config_aws_set_should_sign_header_fn($signing_config, $should_sign_header_fn)
313
+ {
314
+ self::$impl->aws_crt_signing_config_aws_set_should_sign_header_fn($signing_config, $should_sign_header_fn);
315
+ }
316
+ function signable_new_from_http_request($http_message)
317
+ {
318
+ return self::$impl->aws_crt_signable_new_from_http_request($http_message);
319
+ }
320
+ function signable_new_from_chunk($chunk_stream, $previous_signature)
321
+ {
322
+ return self::$impl->aws_crt_signable_new_from_chunk($chunk_stream, $previous_signature);
323
+ }
324
+ function signable_new_from_canonical_request($canonical_request)
325
+ {
326
+ return self::$impl->aws_crt_signable_new_from_canonical_request($canonical_request);
327
+ }
328
+ function signable_release($signable)
329
+ {
330
+ self::$impl->aws_crt_signable_release($signable);
331
+ }
332
+ function signing_result_release($signing_result)
333
+ {
334
+ self::$impl->aws_crt_signing_result_release($signing_result);
335
+ }
336
+ function signing_result_apply_to_http_request($signing_result, $http_message)
337
+ {
338
+ return self::$impl->aws_crt_signing_result_apply_to_http_request($signing_result, $http_message);
339
+ }
340
+ function sign_request_aws($signable, $signing_config, $on_complete, $user_data)
341
+ {
342
+ return self::$impl->aws_crt_sign_request_aws($signable, $signing_config, $on_complete, $user_data);
343
+ }
344
+ function test_verify_sigv4a_signing($signable, $signing_config, $expected_canonical_request, $signature, $ecc_key_pub_x, $ecc_key_pub_y)
345
+ {
346
+ return self::$impl->aws_crt_test_verify_sigv4a_signing($signable, $signing_config, $expected_canonical_request, $signature, $ecc_key_pub_x, $ecc_key_pub_y);
347
+ }
348
+ public static function crc32($input, $previous = 0)
349
+ {
350
+ return self::$impl->aws_crt_crc32($input, $previous);
351
+ }
352
+ public static function crc32c($input, $previous = 0)
353
+ {
354
+ return self::$impl->aws_crt_crc32c($input, $previous);
355
+ }
356
+ }
vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/HTTP/Headers.php ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
5
+ * SPDX-License-Identifier: Apache-2.0.
6
+ */
7
+ namespace WPStaging\Vendor\AWS\CRT\HTTP;
8
+
9
+ use WPStaging\Vendor\AWS\CRT\Internal\Encoding;
10
+ final class Headers
11
+ {
12
+ private $headers;
13
+ public function __construct($headers = [])
14
+ {
15
+ $this->headers = $headers;
16
+ }
17
+ public static function marshall($headers)
18
+ {
19
+ $buf = "";
20
+ foreach ($headers->headers as $header => $value) {
21
+ $buf .= \WPStaging\Vendor\AWS\CRT\Internal\Encoding::encodeString($header);
22
+ $buf .= \WPStaging\Vendor\AWS\CRT\Internal\Encoding::encodeString($value);
23
+ }
24
+ return $buf;
25
+ }
26
+ public static function unmarshall($buf)
27
+ {
28
+ $strings = \WPStaging\Vendor\AWS\CRT\Internal\Encoding::readStrings($buf);
29
+ $headers = [];
30
+ for ($idx = 0; $idx < \count($strings);) {
31
+ $headers[$strings[$idx++]] = $strings[$idx++];
32
+ }
33
+ return new \WPStaging\Vendor\AWS\CRT\HTTP\Headers($headers);
34
+ }
35
+ public function count()
36
+ {
37
+ return \count($this->headers);
38
+ }
39
+ public function get($header)
40
+ {
41
+ return isset($this->headers[$header]) ? $this->headers[$header] : null;
42
+ }
43
+ public function set($header, $value)
44
+ {
45
+ $this->headers[$header] = $value;
46
+ }
47
+ public function toArray()
48
+ {
49
+ return $this->headers;
50
+ }
51
+ }
vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/HTTP/Message.php ADDED
@@ -0,0 +1,94 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
5
+ * SPDX-License-Identifier: Apache-2.0.
6
+ */
7
+ namespace WPStaging\Vendor\AWS\CRT\HTTP;
8
+
9
+ use WPStaging\Vendor\AWS\CRT\NativeResource;
10
+ use WPStaging\Vendor\AWS\CRT\Internal\Encoding;
11
+ abstract class Message extends \WPStaging\Vendor\AWS\CRT\NativeResource
12
+ {
13
+ private $method;
14
+ private $path;
15
+ private $query;
16
+ private $headers;
17
+ public function __construct($method, $path, $query = [], $headers = [])
18
+ {
19
+ parent::__construct();
20
+ $this->method = $method;
21
+ $this->path = $path;
22
+ $this->query = $query;
23
+ $this->headers = new \WPStaging\Vendor\AWS\CRT\HTTP\Headers($headers);
24
+ $this->acquire(self::$crt->http_message_new_from_blob(self::marshall($this)));
25
+ }
26
+ public function __destruct()
27
+ {
28
+ self::$crt->http_message_release($this->release());
29
+ parent::__destruct();
30
+ }
31
+ public function toBlob()
32
+ {
33
+ return self::$crt->http_message_to_blob($this->native);
34
+ }
35
+ protected static function marshall($msg)
36
+ {
37
+ $buf = "";
38
+ $buf .= \WPStaging\Vendor\AWS\CRT\Internal\Encoding::encodeString($msg->method);
39
+ $buf .= \WPStaging\Vendor\AWS\CRT\Internal\Encoding::encodeString($msg->pathAndQuery());
40
+ $buf .= \WPStaging\Vendor\AWS\CRT\HTTP\Headers::marshall($msg->headers);
41
+ return $buf;
42
+ }
43
+ protected static function _unmarshall($buf, $class = \WPStaging\Vendor\AWS\CRT\HTTP\Message::class)
44
+ {
45
+ $method = \WPStaging\Vendor\AWS\CRT\Internal\Encoding::readString($buf);
46
+ $path_and_query = \WPStaging\Vendor\AWS\CRT\Internal\Encoding::readString($buf);
47
+ $parts = \explode("?", $path_and_query, 2);
48
+ $path = isset($parts[0]) ? $parts[0] : "";
49
+ $query = isset($parts[1]) ? $parts[1] : "";
50
+ $headers = \WPStaging\Vendor\AWS\CRT\HTTP\Headers::unmarshall($buf);
51
+ // Turn query params back into a dictionary
52
+ if (\strlen($query)) {
53
+ $query = \rawurldecode($query);
54
+ $query = \explode("&", $query);
55
+ $query = \array_reduce($query, function ($params, $pair) {
56
+ list($param, $value) = \explode("=", $pair, 2);
57
+ $params[$param] = $value;
58
+ return $params;
59
+ }, []);
60
+ } else {
61
+ $query = [];
62
+ }
63
+ return new $class($method, $path, $query, $headers->toArray());
64
+ }
65
+ public function pathAndQuery()
66
+ {
67
+ $path = $this->path;
68
+ $queries = [];
69
+ foreach ($this->query as $param => $value) {
70
+ $queries[] = \urlencode($param) . "=" . \urlencode($value);
71
+ }
72
+ $query = \implode("&", $queries);
73
+ if (\strlen($query)) {
74
+ $path = \implode("?", [$path, $query]);
75
+ }
76
+ return $path;
77
+ }
78
+ public function method()
79
+ {
80
+ return $this->method;
81
+ }
82
+ public function path()
83
+ {
84
+ return $this->path;
85
+ }
86
+ public function query()
87
+ {
88
+ return $this->query;
89
+ }
90
+ public function headers()
91
+ {
92
+ return $this->headers;
93
+ }
94
+ }
vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/HTTP/Request.php ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
5
+ * SPDX-License-Identifier: Apache-2.0.
6
+ */
7
+ namespace WPStaging\Vendor\AWS\CRT\HTTP;
8
+
9
+ use WPStaging\Vendor\AWS\CRT\IO\InputStream;
10
+ class Request extends \WPStaging\Vendor\AWS\CRT\HTTP\Message
11
+ {
12
+ private $body_stream = null;
13
+ public function __construct($method, $path, $query = [], $headers = [], $body_stream = null)
14
+ {
15
+ parent::__construct($method, $path, $query, $headers);
16
+ if (!\is_null($body_stream) && !$body_stream instanceof \WPStaging\Vendor\AWS\CRT\IO\InputStream) {
17
+ throw InvalidArgumentException('body_stream must be an instance of ' . \WPStaging\Vendor\AWS\CRT\IO\InputStream::class);
18
+ }
19
+ $this->body_stream = $body_stream;
20
+ }
21
+ public static function marshall($request)
22
+ {
23
+ return parent::marshall($request);
24
+ }
25
+ public static function unmarshall($buf)
26
+ {
27
+ return parent::_unmarshall($buf, \WPStaging\Vendor\AWS\CRT\HTTP\Request::class);
28
+ }
29
+ public function body_stream()
30
+ {
31
+ return $this->body_stream;
32
+ }
33
+ }
vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/HTTP/Response.php ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
5
+ * SPDX-License-Identifier: Apache-2.0.
6
+ */
7
+ namespace WPStaging\Vendor\AWS\CRT\HTTP;
8
+
9
+ class Response extends \WPStaging\Vendor\AWS\CRT\HTTP\Message
10
+ {
11
+ private $status_code;
12
+ public function __construct($method, $path, $query, $headers, $status_code)
13
+ {
14
+ parent::__construct($method, $path, $query, $headers);
15
+ $this->status_code = $status_code;
16
+ }
17
+ public static function marshall($response)
18
+ {
19
+ return parent::marshall($response);
20
+ }
21
+ public static function unmarshall($buf)
22
+ {
23
+ return parent::_unmarshall($buf, \WPStaging\Vendor\AWS\CRT\HTTP\Response::class);
24
+ }
25
+ public function status_code()
26
+ {
27
+ return $this->status_code;
28
+ }
29
+ }
vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/IO/EventLoopGroup.php ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
5
+ * SPDX-License-Identifier: Apache-2.0.
6
+ */
7
+ namespace WPStaging\Vendor\AWS\CRT\IO;
8
+
9
+ use WPStaging\Vendor\AWS\CRT\NativeResource as NativeResource;
10
+ use WPStaging\Vendor\AWS\CRT\Options as Options;
11
+ /**
12
+ * Represents 1 or more event loops (1 per thread) for doing I/O and background tasks.
13
+ * Typically, every application has one EventLoopGroup.
14
+ *
15
+ * @param array options:
16
+ * - int num_threads - Number of worker threads in the EventLoopGroup. Defaults to 0/1 per logical core.
17
+ */
18
+ final class EventLoopGroup extends \WPStaging\Vendor\AWS\CRT\NativeResource
19
+ {
20
+ static function defaults()
21
+ {
22
+ return ['max_threads' => 0];
23
+ }
24
+ function __construct(array $options = [])
25
+ {
26
+ parent::__construct();
27
+ $options = new \WPStaging\Vendor\AWS\CRT\Options($options, self::defaults());
28
+ $elg_options = self::$crt->event_loop_group_options_new();
29
+ self::$crt->event_loop_group_options_set_max_threads($elg_options, $options->getInt('max_threads'));
30
+ $this->acquire(self::$crt->event_loop_group_new($elg_options));
31
+ self::$crt->event_loop_group_options_release($elg_options);
32
+ }
33
+ function __destruct()
34
+ {
35
+ self::$crt->event_loop_group_release($this->release());
36
+ parent::__destruct();
37
+ }
38
+ }
vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/IO/InputStream.php ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
5
+ * SPDX-License-Identifier: Apache-2.0.
6
+ */
7
+ namespace WPStaging\Vendor\AWS\CRT\IO;
8
+
9
+ use WPStaging\Vendor\AWS\CRT\NativeResource as NativeResource;
10
+ final class InputStream extends \WPStaging\Vendor\AWS\CRT\NativeResource
11
+ {
12
+ private $stream = null;
13
+ const SEEK_BEGIN = 0;
14
+ const SEEK_END = 2;
15
+ public function __construct($stream)
16
+ {
17
+ $this->stream = $stream;
18
+ $options = self::$crt->input_stream_options_new();
19
+ // The stream implementation in native just converts the PHP stream into
20
+ // a native php_stream* and executes operations entirely in native
21
+ self::$crt->input_stream_options_set_user_data($options, $stream);
22
+ $this->acquire(self::$crt->input_stream_new($options));
23
+ self::$crt->input_stream_options_release($options);
24
+ }
25
+ public function __destruct()
26
+ {
27
+ self::$crt->input_stream_release($this->release());
28
+ parent::__destruct();
29
+ }
30
+ public function eof()
31
+ {
32
+ return self::$crt->input_stream_eof($this->native);
33
+ }
34
+ public function length()
35
+ {
36
+ return self::$crt->input_stream_get_length($this->native);
37
+ }
38
+ public function read($length = 0)
39
+ {
40
+ if ($length == 0) {
41
+ $length = $this->length();
42
+ }
43
+ return self::$crt->input_stream_read($this->native, $length);
44
+ }
45
+ public function seek($offset, $basis)
46
+ {
47
+ return self::$crt->input_stream_seek($this->native, $offset, $basis);
48
+ }
49
+ }
vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/Internal/Encoding.php ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
5
+ * SPDX-License-Identifier: Apache-2.0.
6
+ */
7
+ namespace WPStaging\Vendor\AWS\CRT\Internal;
8
+
9
+ final class Encoding
10
+ {
11
+ public static function readString(&$buffer)
12
+ {
13
+ list($len, $str) = self::decodeString($buffer);
14
+ // Advance by sizeof(length) + strlen(str)
15
+ $buffer = \substr($buffer, 4 + $len);
16
+ return $str;
17
+ }
18
+ public static function readStrings($buffer)
19
+ {
20
+ $strings = [];
21
+ while (\strlen($buffer)) {
22
+ $strings[] = self::readString($buffer);
23
+ }
24
+ return $strings;
25
+ }
26
+ public static function decodeString($buffer)
27
+ {
28
+ $len = \unpack("N", $buffer)[1];
29
+ $buffer = \substr($buffer, 4);
30
+ $str = \unpack("a{$len}", $buffer)[1];
31
+ return [$len, $str];
32
+ }
33
+ public static function encodeString($str)
34
+ {
35
+ if (\is_array($str)) {
36
+ $str = $str[0];
37
+ }
38
+ return \pack("Na*", \strlen($str), $str);
39
+ }
40
+ }
vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/Internal/Extension.php ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
5
+ * SPDX-License-Identifier: Apache-2.0.
6
+ */
7
+ namespace WPStaging\Vendor\AWS\CRT\Internal;
8
+
9
+ use RuntimeException;
10
+ /**
11
+ * @internal
12
+ * Forwards calls on to awscrt PHP extension functions
13
+ */
14
+ final class Extension
15
+ {
16
+ function __construct()
17
+ {
18
+ if (!\extension_loaded('awscrt')) {
19
+ throw new \RuntimeException('awscrt extension is not loaded');
20
+ }
21
+ }
22
+ /**
23
+ * Forwards any call made on this object to the extension function of the
24
+ * same name with the supplied arguments. Argument type hinting and checking
25
+ * occurs at the CRT wrapper.
26
+ */
27
+ function __call($name, $args)
28
+ {
29
+ return \call_user_func_array($name, $args);
30
+ }
31
+ }
vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/Log.php ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
5
+ * SPDX-License-Identifier: Apache-2.0.
6
+ */
7
+ namespace WPStaging\Vendor\AWS\CRT;
8
+
9
+ use WPStaging\Vendor\AWS\CRT\CRT;
10
+ final class Log
11
+ {
12
+ const NONE = 0;
13
+ const FATAL = 1;
14
+ const ERROR = 2;
15
+ const WARN = 3;
16
+ const INFO = 4;
17
+ const DEBUG = 5;
18
+ const TRACE = 6;
19
+ public static function toStdout()
20
+ {
21
+ \WPStaging\Vendor\AWS\CRT\CRT::log_to_stdout();
22
+ }
23
+ public static function toStderr()
24
+ {
25
+ \WPStaging\Vendor\AWS\CRT\CRT::log_to_stderr();
26
+ }
27
+ public static function toFile($filename)
28
+ {
29
+ \WPStaging\Vendor\AWS\CRT\CRT::log_to_file($filename);
30
+ }
31
+ public static function toStream($stream)
32
+ {
33
+ \assert(\get_resource_type($stream) == "stream");
34
+ \WPStaging\Vendor\AWS\CRT\CRT::log_to_stream($stream);
35
+ }
36
+ public static function stop()
37
+ {
38
+ \WPStaging\Vendor\AWS\CRT\CRT::log_stop();
39
+ }
40
+ public static function setLogLevel($level)
41
+ {
42
+ \assert($level >= self::NONE && $level <= self::TRACE);
43
+ \WPStaging\Vendor\AWS\CRT\CRT::log_set_level($level);
44
+ }
45
+ public static function log($level, $message)
46
+ {
47
+ \WPStaging\Vendor\AWS\CRT\CRT::log_message($level, $message);
48
+ }
49
+ }
vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/NativeResource.php ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
5
+ * SPDX-License-Identifier: Apache-2.0.
6
+ */
7
+ namespace WPStaging\Vendor\AWS\CRT;
8
+
9
+ use WPStaging\Vendor\AWS\CRT\CRT as CRT;
10
+ /**
11
+ * Base class for all native resources, tracks all outstanding resources
12
+ * and provides basic leak checking
13
+ */
14
+ abstract class NativeResource
15
+ {
16
+ protected static $crt = null;
17
+ protected static $resources = [];
18
+ protected $native = null;
19
+ protected function __construct()
20
+ {
21
+ if (\is_null(self::$crt)) {
22
+ self::$crt = new \WPStaging\Vendor\AWS\CRT\CRT();
23
+ }
24
+ self::$resources[\spl_object_hash($this)] = 1;
25
+ }
26
+ protected function acquire($handle)
27
+ {
28
+ return $this->native = $handle;
29
+ }
30
+ protected function release()
31
+ {
32
+ $native = $this->native;
33
+ $this->native = null;
34
+ return $native;
35
+ }
36
+ function __destruct()
37
+ {
38
+ // Should have been destroyed and released by derived resource
39
+ \assert($this->native == null);
40
+ unset(self::$resources[\spl_object_hash($this)]);
41
+ }
42
+ }
vendor_wpstg/aws/aws-crt-php/src/AWS/CRT/Options.php ADDED
@@ -0,0 +1,80 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
5
+ * SPDX-License-Identifier: Apache-2.0.
6
+ */
7
+ namespace WPStaging\Vendor\AWS\CRT;
8
+
9
+ final class OptionValue
10
+ {
11
+ private $value;
12
+ function __construct($value)
13
+ {
14
+ $this->value = $value;
15
+ }
16
+ public function asObject()
17
+ {
18
+ return $this->value;
19
+ }
20
+ public function asMixed()
21
+ {
22
+ return $this->value;
23
+ }
24
+ public function asInt()
25
+ {
26
+ return empty($this->value) ? 0 : (int) $this->value;
27
+ }
28
+ public function asBool()
29
+ {
30
+ return \boolval($this->value);
31
+ }
32
+ public function asString()
33
+ {
34
+ return !empty($this->value) ? \strval($this->value) : "";
35
+ }
36
+ public function asArray()
37
+ {
38
+ return \is_array($this->value) ? $this->value : (!empty($this->value) ? [$this->value] : []);
39
+ }
40
+ public function asCallable()
41
+ {
42
+ return \is_callable($this->value) ? $this->value : null;
43
+ }
44
+ }
45
+ final class Options
46
+ {
47
+ private $options;
48
+ public function __construct($opts = [], $defaults = [])
49
+ {
50
+ $this->options = \array_replace($defaults, empty($opts) ? [] : $opts);
51
+ }
52
+ public function __get($name)
53
+ {
54
+ return $this->get($name);
55
+ }
56
+ public function asArray()
57
+ {
58
+ return $this->options;
59
+ }
60
+ public function toArray()
61
+ {
62
+ return \array_merge_recursive([], $this->options);
63
+ }
64
+ public function get($name)
65
+ {
66
+ return new \WPStaging\Vendor\AWS\CRT\OptionValue($this->options[$name]);
67
+ }
68
+ public function getInt($name)
69
+ {
70
+ return $this->get($name)->asInt();
71
+ }
72
+ public function getString($name)
73
+ {
74
+ return $this->get($name)->asString();
75
+ }
76
+ public function getBool($name)
77
+ {
78
+ return $this->get($name)->asBool();
79
+ }
80
+ }
vendor_wpstg/aws/aws-sdk-php/NOTICE ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # AWS SDK for PHP
2
+
3
+ <http://aws.amazon.com/php>
4
+
5
+ Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
6
+
7
+ Licensed under the Apache License, Version 2.0 (the "License").
8
+ You may not use this file except in compliance with the License.
9
+ You may obtain a copy of the License at
10
+
11
+ http://www.apache.org/licenses/LICENSE-2.0
12
+
13
+ Unless required by applicable law or agreed to in writing, software
14
+ distributed under the License is distributed on an "AS IS" BASIS,
15
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ See the License for the specific language governing permissions and
17
+ limitations under the License.
vendor_wpstg/aws/aws-sdk-php/src/AbstractConfigurationProvider.php ADDED
@@ -0,0 +1,133 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPStaging\Vendor\Aws;
4
+
5
+ use WPStaging\Vendor\GuzzleHttp\Promise;
6
+ /**
7
+ * A configuration provider is a function that returns a promise that is
8
+ * fulfilled with a configuration object. This class provides base functionality
9
+ * usable by specific configuration provider implementations
10
+ */
11
+ abstract class AbstractConfigurationProvider
12
+ {
13
+ const ENV_PROFILE = 'AWS_PROFILE';
14
+ const ENV_CONFIG_FILE = 'AWS_CONFIG_FILE';
15
+ public static $cacheKey;
16
+ protected static $interfaceClass;
17
+ protected static $exceptionClass;
18
+ /**
19
+ * Wraps a config provider and saves provided configuration in an
20
+ * instance of Aws\CacheInterface. Forwards calls when no config found
21
+ * in cache and updates cache with the results.
22
+ *
23
+ * @param callable $provider Configuration provider function to wrap
24
+ * @param CacheInterface $cache Cache to store configuration
25
+ * @param string|null $cacheKey (optional) Cache key to use
26
+ *
27
+ * @return callable
28
+ */
29
+ public static function cache(callable $provider, \WPStaging\Vendor\Aws\CacheInterface $cache, $cacheKey = null)
30
+ {
31
+ $cacheKey = $cacheKey ?: static::$cacheKey;
32
+ return function () use($provider, $cache, $cacheKey) {
33
+ $found = $cache->get($cacheKey);
34
+ if ($found instanceof static::$interfaceClass) {
35
+ return \WPStaging\Vendor\GuzzleHttp\Promise\Create::promiseFor($found);
36
+ }
37
+ return $provider()->then(function ($config) use($cache, $cacheKey) {
38
+ $cache->set($cacheKey, $config);
39
+ return $config;
40
+ });
41
+ };
42
+ }
43
+ /**
44
+ * Creates an aggregate configuration provider that invokes the provided
45
+ * variadic providers one after the other until a provider returns
46
+ * configuration.
47
+ *
48
+ * @return callable
49
+ */
50
+ public static function chain()
51
+ {
52
+ $links = \func_get_args();
53
+ if (empty($links)) {
54
+ throw new \InvalidArgumentException('No providers in chain');
55
+ }
56
+ return function () use($links) {
57
+ /** @var callable $parent */
58
+ $parent = \array_shift($links);
59
+ $promise = $parent();
60
+ while ($next = \array_shift($links)) {
61
+ $promise = $promise->otherwise($next);
62
+ }
63
+ return $promise;
64
+ };
65
+ }
66
+ /**
67
+ * Gets the environment's HOME directory if available.
68
+ *
69
+ * @return null|string
70
+ */
71
+ protected static function getHomeDir()
72
+ {
73
+ // On Linux/Unix-like systems, use the HOME environment variable
74
+ if ($homeDir = \getenv('HOME')) {
75
+ return $homeDir;
76
+ }
77
+ // Get the HOMEDRIVE and HOMEPATH values for Windows hosts
78
+ $homeDrive = \getenv('HOMEDRIVE');
79
+ $homePath = \getenv('HOMEPATH');
80
+ return $homeDrive && $homePath ? $homeDrive . $homePath : null;
81
+ }
82
+ /**
83
+ * Gets default config file location from environment, falling back to aws
84
+ * default location
85
+ *
86
+ * @return string
87
+ */
88
+ protected static function getDefaultConfigFilename()
89
+ {
90
+ if ($filename = \getenv(self::ENV_CONFIG_FILE)) {
91
+ return $filename;
92
+ }
93
+ return self::getHomeDir() . '/.aws/config';
94
+ }
95
+ /**
96
+ * Wraps a config provider and caches previously provided configuration.
97
+ *
98
+ * @param callable $provider Config provider function to wrap.
99
+ *
100
+ * @return callable
101
+ */
102
+ public static function memoize(callable $provider)
103
+ {
104
+ return function () use($provider) {
105
+ static $result;
106
+ static $isConstant;
107
+ // Constant config will be returned constantly.
108
+ if ($isConstant) {
109
+ return $result;
110
+ }
111
+ // Create the initial promise that will be used as the cached value
112
+ if (null === $result) {
113
+ $result = $provider();
114
+ }
115
+ // Return config and set flag that provider is already set
116
+ return $result->then(function ($config) use(&$isConstant) {
117
+ $isConstant = \true;
118
+ return $config;
119
+ });
120
+ };
121
+ }
122
+ /**
123
+ * Reject promise with standardized exception.
124
+ *
125
+ * @param $msg
126
+ * @return Promise\RejectedPromise
127
+ */
128
+ protected static function reject($msg)
129
+ {
130
+ $exceptionClass = static::$exceptionClass;
131
+ return new \WPStaging\Vendor\GuzzleHttp\Promise\RejectedPromise(new $exceptionClass($msg));
132
+ }
133
+ }
vendor_wpstg/aws/aws-sdk-php/src/Api/AbstractModel.php ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPStaging\Vendor\Aws\Api;
4
+
5
+ /**
6
+ * Base class that is used by most API shapes
7
+ */
8
+ abstract class AbstractModel implements \ArrayAccess
9
+ {
10
+ /** @var array */
11
+ protected $definition;
12
+ /** @var ShapeMap */
13
+ protected $shapeMap;
14
+ /**
15
+ * @param array $definition Service description
16
+ * @param ShapeMap $shapeMap Shapemap used for creating shapes
17
+ */
18
+ public function __construct(array $definition, \WPStaging\Vendor\Aws\Api\ShapeMap $shapeMap)
19
+ {
20
+ $this->definition = $definition;
21
+ $this->shapeMap = $shapeMap;
22
+ }
23
+ public function toArray()
24
+ {
25
+ return $this->definition;
26
+ }
27
+ /**
28
+ * @return mixed|null
29
+ */
30
+ #[\ReturnTypeWillChange]
31
+ public function offsetGet($offset)
32
+ {
33
+ return isset($this->definition[$offset]) ? $this->definition[$offset] : null;
34
+ }
35
+ /**
36
+ * @return void
37
+ */
38
+ #[\ReturnTypeWillChange]
39
+ public function offsetSet($offset, $value)
40
+ {
41
+ $this->definition[$offset] = $value;
42
+ }
43
+ /**
44
+ * @return bool
45
+ */
46
+ #[\ReturnTypeWillChange]
47
+ public function offsetExists($offset)
48
+ {
49
+ return isset($this->definition[$offset]);
50
+ }
51
+ /**
52
+ * @return void
53
+ */
54
+ #[\ReturnTypeWillChange]
55
+ public function offsetUnset($offset)
56
+ {
57
+ unset($this->definition[$offset]);
58
+ }
59
+ protected function shapeAt($key)
60
+ {
61
+ if (!isset($this->definition[$key])) {
62
+ throw new \InvalidArgumentException('Expected shape definition at ' . $key);
63
+ }
64
+ return $this->shapeFor($this->definition[$key]);
65
+ }
66
+ protected function shapeFor(array $definition)
67
+ {
68
+ return isset($definition['shape']) ? $this->shapeMap->resolve($definition) : \WPStaging\Vendor\Aws\Api\Shape::create($definition, $this->shapeMap);
69
+ }
70
+ }
vendor_wpstg/aws/aws-sdk-php/src/Api/ApiProvider.php ADDED
@@ -0,0 +1,212 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPStaging\Vendor\Aws\Api;
4
+
5
+ use WPStaging\Vendor\Aws\Exception\UnresolvedApiException;
6
+ /**
7
+ * API providers.
8
+ *
9
+ * An API provider is a function that accepts a type, service, and version and
10
+ * returns an array of API data on success or NULL if no API data can be created
11
+ * for the provided arguments.
12
+ *
13
+ * You can wrap your calls to an API provider with the
14
+ * {@see ApiProvider::resolve} method to ensure that API data is created. If the
15
+ * API data is not created, then the resolve() method will throw a
16
+ * {@see Aws\Exception\UnresolvedApiException}.
17
+ *
18
+ * use Aws\Api\ApiProvider;
19
+ * $provider = ApiProvider::defaultProvider();
20
+ * // Returns an array or NULL.
21
+ * $data = $provider('api', 's3', '2006-03-01');
22
+ * // Returns an array or throws.
23
+ * $data = ApiProvider::resolve($provider, 'api', 'elasticfood', '2020-01-01');
24
+ *
25
+ * You can compose multiple providers into a single provider using
26
+ * {@see Aws\or_chain}. This method accepts providers as arguments and
27
+ * returns a new function that will invoke each provider until a non-null value
28
+ * is returned.
29
+ *
30
+ * $a = ApiProvider::filesystem(sys_get_temp_dir() . '/aws-beta-models');
31
+ * $b = ApiProvider::manifest();
32
+ *
33
+ * $c = \Aws\or_chain($a, $b);
34
+ * $data = $c('api', 'betaservice', '2015-08-08'); // $a handles this.
35
+ * $data = $c('api', 's3', '2006-03-01'); // $b handles this.
36
+ * $data = $c('api', 'invalid', '2014-12-15'); // Neither handles this.
37
+ */
38
+ class ApiProvider
39
+ {
40
+ /** @var array A map of public API type names to their file suffix. */
41
+ private static $typeMap = ['api' => 'api-2', 'paginator' => 'paginators-1', 'waiter' => 'waiters-2', 'docs' => 'docs-2'];
42
+ /** @var array API manifest */
43
+ private $manifest;
44
+ /** @var string The directory containing service models. */
45
+ private $modelsDir;
46
+ /**
47
+ * Resolves an API provider and ensures a non-null return value.
48
+ *
49
+ * @param callable $provider Provider function to invoke.
50
+ * @param string $type Type of data ('api', 'waiter', 'paginator').
51
+ * @param string $service Service name.
52
+ * @param string $version API version.
53
+ *
54
+ * @return array
55
+ * @throws UnresolvedApiException
56
+ */
57
+ public static function resolve(callable $provider, $type, $service, $version)
58
+ {
59
+ // Execute the provider and return the result, if there is one.
60
+ $result = $provider($type, $service, $version);
61
+ if (\is_array($result)) {
62
+ if (!isset($result['metadata']['serviceIdentifier'])) {
63
+ $result['metadata']['serviceIdentifier'] = $service;
64
+ }
65
+ return $result;
66
+ }
67
+ // Throw an exception with a message depending on the inputs.
68
+ if (!isset(self::$typeMap[$type])) {
69
+ $msg = "The type must be one of: " . \implode(', ', self::$typeMap);
70
+ } elseif ($service) {
71
+ $msg = "The {$service} service does not have version: {$version}.";
72
+ } else {
73
+ $msg = "You must specify a service name to retrieve its API data.";
74
+ }
75
+ throw new \WPStaging\Vendor\Aws\Exception\UnresolvedApiException($msg);
76
+ }
77
+ /**
78
+ * Default SDK API provider.
79
+ *
80
+ * This provider loads pre-built manifest data from the `data` directory.
81
+ *
82
+ * @return self
83
+ */
84
+ public static function defaultProvider()
85
+ {
86
+ return new self(__DIR__ . '/../data', \WPStaging\Vendor\Aws\manifest());
87
+ }
88
+ /**
89
+ * Loads API data after resolving the version to the latest, compatible,
90
+ * available version based on the provided manifest data.
91
+ *
92
+ * Manifest data is essentially an associative array of service names to
93
+ * associative arrays of API version aliases.
94
+ *
95
+ * [
96
+ * ...
97
+ * 'ec2' => [
98
+ * 'latest' => '2014-10-01',
99
+ * '2014-10-01' => '2014-10-01',
100
+ * '2014-09-01' => '2014-10-01',
101
+ * '2014-06-15' => '2014-10-01',
102
+ * ...
103
+ * ],
104
+ * 'ecs' => [...],
105
+ * 'elasticache' => [...],
106
+ * ...
107
+ * ]
108
+ *
109
+ * @param string $dir Directory containing service models.
110
+ * @param array $manifest The API version manifest data.
111
+ *
112
+ * @return self
113
+ */
114
+ public static function manifest($dir, array $manifest)
115
+ {
116
+ return new self($dir, $manifest);
117
+ }
118
+ /**
119
+ * Loads API data from the specified directory.
120
+ *
121
+ * If "latest" is specified as the version, this provider must glob the
122
+ * directory to find which is the latest available version.
123
+ *
124
+ * @param string $dir Directory containing service models.
125
+ *
126
+ * @return self
127
+ * @throws \InvalidArgumentException if the provided `$dir` is invalid.
128
+ */
129
+ public static function filesystem($dir)
130
+ {
131
+ return new self($dir);
132
+ }
133
+ /**
134
+ * Retrieves a list of valid versions for the specified service.
135
+ *
136
+ * @param string $service Service name
137
+ *
138
+ * @return array
139
+ */
140
+ public function getVersions($service)
141
+ {
142
+ if (!isset($this->manifest)) {
143
+ $this->buildVersionsList($service);
144
+ }
145
+ if (!isset($this->manifest[$service]['versions'])) {
146
+ return [];
147
+ }
148
+ return \array_values(\array_unique($this->manifest[$service]['versions']));
149
+ }
150
+ /**
151
+ * Execute the provider.
152
+ *
153
+ * @param string $type Type of data ('api', 'waiter', 'paginator').
154
+ * @param string $service Service name.
155
+ * @param string $version API version.
156
+ *
157
+ * @return array|null
158
+ */
159
+ public function __invoke($type, $service, $version)
160
+ {
161
+ // Resolve the type or return null.
162
+ if (isset(self::$typeMap[$type])) {
163
+ $type = self::$typeMap[$type];
164
+ } else {
165
+ return null;
166
+ }
167
+ // Resolve the version or return null.
168
+ if (!isset($this->manifest)) {
169
+ $this->buildVersionsList($service);
170
+ }
171
+ if (!isset($this->manifest[$service]['versions'][$version])) {
172
+ return null;
173
+ }
174
+ $version = $this->manifest[$service]['versions'][$version];
175
+ $path = "{$this->modelsDir}/{$service}/{$version}/{$type}.json";
176
+ try {
177
+ return \WPStaging\Vendor\Aws\load_compiled_json($path);
178
+ } catch (\InvalidArgumentException $e) {
179
+ return null;
180
+ }
181
+ }
182
+ /**
183
+ * @param string $modelsDir Directory containing service models.
184
+ * @param array $manifest The API version manifest data.
185
+ */
186
+ private function __construct($modelsDir, array $manifest = null)
187
+ {
188
+ $this->manifest = $manifest;
189
+ $this->modelsDir = \rtrim($modelsDir, '/');
190
+ if (!\is_dir($this->modelsDir)) {
191
+ throw new \InvalidArgumentException("The specified models directory, {$modelsDir}, was not found.");
192
+ }
193
+ }
194
+ /**
195
+ * Build the versions list for the specified service by globbing the dir.
196
+ */
197
+ private function buildVersionsList($service)
198
+ {
199
+ $dir = "{$this->modelsDir}/{$service}/";
200
+ if (!\is_dir($dir)) {
201
+ return;
202
+ }
203
+ // Get versions, remove . and .., and sort in descending order.
204
+ $results = \array_diff(\scandir($dir, \SCANDIR_SORT_DESCENDING), ['..', '.']);
205
+ if (!$results) {
206
+ $this->manifest[$service] = ['versions' => []];
207
+ } else {
208
+ $this->manifest[$service] = ['versions' => ['latest' => $results[0]]];
209
+ $this->manifest[$service]['versions'] += \array_combine($results, $results);
210
+ }
211
+ }
212
+ }
vendor_wpstg/aws/aws-sdk-php/src/Api/DateTimeResult.php ADDED
@@ -0,0 +1,109 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPStaging\Vendor\Aws\Api;
4
+
5
+ use WPStaging\Vendor\Aws\Api\Parser\Exception\ParserException;
6
+ use DateTime;
7
+ use DateTimeZone;
8
+ use Exception;
9
+ /**
10
+ * DateTime overrides that make DateTime work more seamlessly as a string,
11
+ * with JSON documents, and with JMESPath.
12
+ */
13
+ class DateTimeResult extends \DateTime implements \JsonSerializable
14
+ {
15
+ /**
16
+ * Create a new DateTimeResult from a unix timestamp.
17
+ * The Unix epoch (or Unix time or POSIX time or Unix
18
+ * timestamp) is the number of seconds that have elapsed since
19
+ * January 1, 1970 (midnight UTC/GMT).
20
+ *
21
+ * @return DateTimeResult
22
+ * @throws Exception
23
+ */
24
+ public static function fromEpoch($unixTimestamp)
25
+ {
26
+ if (!\is_numeric($unixTimestamp)) {
27
+ throw new \WPStaging\Vendor\Aws\Api\Parser\Exception\ParserException('Invalid timestamp value passed to DateTimeResult::fromEpoch');
28
+ }
29
+ // PHP 5.5 does not support sub-second precision
30
+ if (\PHP_VERSION_ID < 56000) {
31
+ return new self(\gmdate('c', $unixTimestamp));
32
+ }
33
+ $decimalSeparator = isset(\localeconv()['decimal_point']) ? \localeconv()['decimal_point'] : ".";
34
+ $formatString = "U" . $decimalSeparator . "u";
35
+ $dateTime = \DateTime::createFromFormat($formatString, \sprintf('%0.6f', $unixTimestamp), new \DateTimeZone('UTC'));
36
+ if (\false === $dateTime) {
37
+ throw new \WPStaging\Vendor\Aws\Api\Parser\Exception\ParserException('Invalid timestamp value passed to DateTimeResult::fromEpoch');
38
+ }
39
+ return new self($dateTime->format('Y-m-d H:i:s.u'), new \DateTimeZone('UTC'));
40
+ }
41
+ /**
42
+ * @return DateTimeResult
43
+ */
44
+ public static function fromISO8601($iso8601Timestamp)
45
+ {
46
+ if (\is_numeric($iso8601Timestamp) || !\is_string($iso8601Timestamp)) {
47
+ throw new \WPStaging\Vendor\Aws\Api\Parser\Exception\ParserException('Invalid timestamp value passed to DateTimeResult::fromISO8601');
48
+ }
49
+ return new \WPStaging\Vendor\Aws\Api\DateTimeResult($iso8601Timestamp);
50
+ }
51
+ /**
52
+ * Create a new DateTimeResult from an unknown timestamp.
53
+ *
54
+ * @return DateTimeResult
55
+ * @throws Exception
56
+ */
57
+ public static function fromTimestamp($timestamp, $expectedFormat = null)
58
+ {
59
+ if (empty($timestamp)) {
60
+ return self::fromEpoch(0);
61
+ }
62
+ if (!(\is_string($timestamp) || \is_numeric($timestamp))) {
63
+ throw new \WPStaging\Vendor\Aws\Api\Parser\Exception\ParserException('Invalid timestamp value passed to DateTimeResult::fromTimestamp');
64
+ }
65
+ try {
66
+ if ($expectedFormat == 'iso8601') {
67
+ try {
68
+ return self::fromISO8601($timestamp);
69
+ } catch (\Exception $exception) {
70
+ return self::fromEpoch($timestamp);
71
+ }
72
+ } else {
73
+ if ($expectedFormat == 'unixTimestamp') {
74
+ try {
75
+ return self::fromEpoch($timestamp);
76
+ } catch (\Exception $exception) {
77
+ return self::fromISO8601($timestamp);
78
+ }
79
+ } else {
80
+ if (\WPStaging\Vendor\Aws\is_valid_epoch($timestamp)) {
81
+ return self::fromEpoch($timestamp);
82
+ }
83
+ }
84
+ }
85
+ return self::fromISO8601($timestamp);
86
+ } catch (\Exception $exception) {
87
+ throw new \WPStaging\Vendor\Aws\Api\Parser\Exception\ParserException('Invalid timestamp value passed to DateTimeResult::fromTimestamp');
88
+ }
89
+ }
90
+ /**
91
+ * Serialize the DateTimeResult as an ISO 8601 date string.
92
+ *
93
+ * @return string
94
+ */
95
+ public function __toString()
96
+ {
97
+ return $this->format('c');
98
+ }
99
+ /**
100
+ * Serialize the date as an ISO 8601 date when serializing as JSON.
101
+ *
102
+ * @return string
103
+ */
104
+ #[\ReturnTypeWillChange]
105
+ public function jsonSerialize()
106
+ {
107
+ return (string) $this;
108
+ }
109
+ }
vendor_wpstg/aws/aws-sdk-php/src/Api/DocModel.php ADDED
@@ -0,0 +1,102 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPStaging\Vendor\Aws\Api;
4
+
5
+ /**
6
+ * Encapsulates the documentation strings for a given service-version and
7
+ * provides methods for extracting the desired parts related to a service,
8
+ * operation, error, or shape (i.e., parameter).
9
+ */
10
+ class DocModel
11
+ {
12
+ /** @var array */
13
+ private $docs;
14
+ /**
15
+ * @param array $docs
16
+ *
17
+ * @throws \RuntimeException
18
+ */
19
+ public function __construct(array $docs)
20
+ {
21
+ if (!\extension_loaded('tidy')) {
22
+ throw new \RuntimeException('The "tidy" PHP extension is required.');
23
+ }
24
+ $this->docs = $docs;
25
+ }
26
+ /**
27
+ * Convert the doc model to an array.
28
+ *
29
+ * @return array
30
+ */
31
+ public function toArray()
32
+ {
33
+ return $this->docs;
34
+ }
35
+ /**
36
+ * Retrieves documentation about the service.
37
+ *
38
+ * @return null|string
39
+ */
40
+ public function getServiceDocs()
41
+ {
42
+ return isset($this->docs['service']) ? $this->docs['service'] : null;
43
+ }
44
+ /**
45
+ * Retrieves documentation about an operation.
46
+ *
47
+ * @param string $operation Name of the operation
48
+ *
49
+ * @return null|string
50
+ */
51
+ public function getOperationDocs($operation)
52
+ {
53
+ return isset($this->docs['operations'][$operation]) ? $this->docs['operations'][$operation] : null;
54
+ }
55
+ /**
56
+ * Retrieves documentation about an error.
57
+ *
58
+ * @param string $error Name of the error
59
+ *
60
+ * @return null|string
61
+ */
62
+ public function getErrorDocs($error)
63
+ {
64
+ return isset($this->docs['shapes'][$error]['base']) ? $this->docs['shapes'][$error]['base'] : null;
65
+ }
66
+ /**
67
+ * Retrieves documentation about a shape, specific to the context.
68
+ *
69
+ * @param string $shapeName Name of the shape.
70
+ * @param string $parentName Name of the parent/context shape.
71
+ * @param string $ref Name used by the context to reference the shape.
72
+ *
73
+ * @return null|string
74
+ */
75
+ public function getShapeDocs($shapeName, $parentName, $ref)
76
+ {
77
+ if (!isset($this->docs['shapes'][$shapeName])) {
78
+ return '';
79
+ }
80
+ $result = '';
81
+ $d = $this->docs['shapes'][$shapeName];
82
+ if (isset($d['refs']["{$parentName}\${$ref}"])) {
83
+ $result = $d['refs']["{$parentName}\${$ref}"];
84
+ } elseif (isset($d['base'])) {
85
+ $result = $d['base'];
86
+ }
87
+ if (isset($d['append'])) {
88
+ $result .= $d['append'];
89
+ }
90
+ return $this->clean($result);
91
+ }
92
+ private function clean($content)
93
+ {
94
+ if (!$content) {
95
+ return '';
96
+ }
97
+ $tidy = new \tidy();
98
+ $tidy->parseString($content, ['indent' => \true, 'doctype' => 'omit', 'output-html' => \true, 'show-body-only' => \true, 'drop-empty-paras' => \true, 'drop-font-tags' => \true, 'drop-proprietary-attributes' => \true, 'hide-comments' => \true, 'logical-emphasis' => \true]);
99
+ $tidy->cleanRepair();
100
+ return (string) $content;
101
+ }
102
+ }
vendor_wpstg/aws/aws-sdk-php/src/Api/ErrorParser/AbstractErrorParser.php ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPStaging\Vendor\Aws\Api\ErrorParser;
4
+
5
+ use WPStaging\Vendor\Aws\Api\Parser\MetadataParserTrait;
6
+ use WPStaging\Vendor\Aws\Api\Parser\PayloadParserTrait;
7
+ use WPStaging\Vendor\Aws\Api\Service;
8
+ use WPStaging\Vendor\Aws\Api\StructureShape;
9
+ use WPStaging\Vendor\Aws\CommandInterface;
10
+ use WPStaging\Vendor\Psr\Http\Message\ResponseInterface;
11
+ abstract class AbstractErrorParser
12
+ {
13
+ use MetadataParserTrait;
14
+ use PayloadParserTrait;
15
+ /**
16
+ * @var Service
17
+ */
18
+ protected $api;
19
+ /**
20
+ * @param Service $api
21
+ */
22
+ public function __construct(\WPStaging\Vendor\Aws\Api\Service $api = null)
23
+ {
24
+ $this->api = $api;
25
+ }
26
+ protected abstract function payload(\WPStaging\Vendor\Psr\Http\Message\ResponseInterface $response, \WPStaging\Vendor\Aws\Api\StructureShape $member);
27
+ protected function extractPayload(\WPStaging\Vendor\Aws\Api\StructureShape $member, \WPStaging\Vendor\Psr\Http\Message\ResponseInterface $response)
28
+ {
29
+ if ($member instanceof \WPStaging\Vendor\Aws\Api\StructureShape) {
30
+ // Structure members parse top-level data into a specific key.
31
+ return $this->payload($response, $member);
32
+ } else {
33
+ // Streaming data is just the stream from the response body.
34
+ return $response->getBody();
35
+ }
36
+ }
37
+ protected function populateShape(array &$data, \WPStaging\Vendor\Psr\Http\Message\ResponseInterface $response, \WPStaging\Vendor\Aws\CommandInterface $command = null)
38
+ {
39
+ $data['body'] = [];
40
+ if (!empty($command) && !empty($this->api)) {
41
+ // If modeled error code is indicated, check for known error shape
42
+ if (!empty($data['code'])) {
43
+ $errors = $this->api->getOperation($command->getName())->getErrors();
44
+ foreach ($errors as $key => $error) {
45
+ // If error code matches a known error shape, populate the body
46
+ if ($data['code'] == $error['name'] && $error instanceof \WPStaging\Vendor\Aws\Api\StructureShape) {
47
+ $modeledError = $error;
48
+ $data['body'] = $this->extractPayload($modeledError, $response);
49
+ $data['error_shape'] = $modeledError;
50
+ foreach ($error->getMembers() as $name => $member) {
51
+ switch ($member['location']) {
52
+ case 'header':
53
+ $this->extractHeader($name, $member, $response, $data['body']);
54
+ break;
55
+ case 'headers':
56
+ $this->extractHeaders($name, $member, $response, $data['body']);
57
+ break;
58
+ case 'statusCode':
59
+ $this->extractStatus($name, $response, $data['body']);
60
+ break;
61
+ }
62
+ }
63
+ break;
64
+ }
65
+ }
66
+ }
67
+ }
68
+ return $data;
69
+ }
70
+ }
vendor_wpstg/aws/aws-sdk-php/src/Api/ErrorParser/JsonParserTrait.php ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPStaging\Vendor\Aws\Api\ErrorParser;
4
+
5
+ use WPStaging\Vendor\Aws\Api\Parser\PayloadParserTrait;
6
+ use WPStaging\Vendor\Aws\Api\StructureShape;
7
+ use WPStaging\Vendor\Psr\Http\Message\ResponseInterface;
8
+ /**
9
+ * Provides basic JSON error parsing functionality.
10
+ */
11
+ trait JsonParserTrait
12
+ {
13
+ use PayloadParserTrait;
14
+ private function genericHandler(\WPStaging\Vendor\Psr\Http\Message\ResponseInterface $response)
15
+ {
16
+ $code = (string) $response->getStatusCode();
17
+ return ['request_id' => (string) $response->getHeaderLine('x-amzn-requestid'), 'code' => null, 'message' => null, 'type' => $code[0] == '4' ? 'client' : 'server', 'parsed' => $this->parseJson($response->getBody(), $response)];
18
+ }
19
+ protected function payload(\WPStaging\Vendor\Psr\Http\Message\ResponseInterface $response, \WPStaging\Vendor\Aws\Api\StructureShape $member)
20
+ {
21
+ $jsonBody = $this->parseJson($response->getBody(), $response);
22
+ if ($jsonBody) {
23
+ return $this->parser->parse($member, $jsonBody);
24
+ }
25
+ }
26
+ }
vendor_wpstg/aws/aws-sdk-php/src/Api/ErrorParser/JsonRpcErrorParser.php ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPStaging\Vendor\Aws\Api\ErrorParser;
4
+
5
+ use WPStaging\Vendor\Aws\Api\Parser\JsonParser;
6
+ use WPStaging\Vendor\Aws\Api\Service;
7
+ use WPStaging\Vendor\Aws\CommandInterface;
8
+ use WPStaging\Vendor\Psr\Http\Message\ResponseInterface;
9
+ /**
10
+ * Parsers JSON-RPC errors.
11
+ */
12
+ class JsonRpcErrorParser extends \WPStaging\Vendor\Aws\Api\ErrorParser\AbstractErrorParser
13
+ {
14
+ use JsonParserTrait;
15
+ private $parser;
16
+ public function __construct(\WPStaging\Vendor\Aws\Api\Service $api = null, \WPStaging\Vendor\Aws\Api\Parser\JsonParser $parser = null)
17
+ {
18
+ parent::__construct($api);
19
+ $this->parser = $parser ?: new \WPStaging\Vendor\Aws\Api\Parser\JsonParser();
20
+ }
21
+ public function __invoke(\WPStaging\Vendor\Psr\Http\Message\ResponseInterface $response, \WPStaging\Vendor\Aws\CommandInterface $command = null)
22
+ {
23
+ $data = $this->genericHandler($response);
24
+ // Make the casing consistent across services.
25
+ if ($data['parsed']) {
26
+ $data['parsed'] = \array_change_key_case($data['parsed']);
27
+ }
28
+ if (isset($data['parsed']['__type'])) {
29
+ $parts = \explode('#', $data['parsed']['__type']);
30
+ $data['code'] = isset($parts[1]) ? $parts[1] : $parts[0];
31
+ $data['message'] = isset($data['parsed']['message']) ? $data['parsed']['message'] : null;
32
+ }
33
+ $this->populateShape($data, $response, $command);
34
+ return $data;
35
+ }
36
+ }
vendor_wpstg/aws/aws-sdk-php/src/Api/ErrorParser/RestJsonErrorParser.php ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPStaging\Vendor\Aws\Api\ErrorParser;
4
+
5
+ use WPStaging\Vendor\Aws\Api\Parser\JsonParser;
6
+ use WPStaging\Vendor\Aws\Api\Service;
7
+ use WPStaging\Vendor\Aws\Api\StructureShape;
8
+ use WPStaging\Vendor\Aws\CommandInterface;
9
+ use WPStaging\Vendor\Psr\Http\Message\ResponseInterface;
10
+ /**
11
+ * Parses JSON-REST errors.
12
+ */
13
+ class RestJsonErrorParser extends \WPStaging\Vendor\Aws\Api\ErrorParser\AbstractErrorParser
14
+ {
15
+ use JsonParserTrait;
16
+ private $parser;
17
+ public function __construct(\WPStaging\Vendor\Aws\Api\Service $api = null, \WPStaging\Vendor\Aws\Api\Parser\JsonParser $parser = null)
18
+ {
19
+ parent::__construct($api);
20
+ $this->parser = $parser ?: new \WPStaging\Vendor\Aws\Api\Parser\JsonParser();
21
+ }
22
+ public function __invoke(\WPStaging\Vendor\Psr\Http\Message\ResponseInterface $response, \WPStaging\Vendor\Aws\CommandInterface $command = null)
23
+ {
24
+ $data = $this->genericHandler($response);
25
+ // Merge in error data from the JSON body
26
+ if ($json = $data['parsed']) {
27
+ $data = \array_replace($data, $json);
28
+ }
29
+ // Correct error type from services like Amazon Glacier
30
+ if (!empty($data['type'])) {
31
+ $data['type'] = \strtolower($data['type']);
32
+ }
33
+ // Retrieve the error code from services like Amazon Elastic Transcoder
34
+ if ($code = $response->getHeaderLine('x-amzn-errortype')) {
35
+ $colon = \strpos($code, ':');
36
+ $data['code'] = $colon ? \substr($code, 0, $colon) : $code;
37
+ }
38
+ // Retrieve error message directly
39
+ $data['message'] = isset($data['parsed']['message']) ? $data['parsed']['message'] : (isset($data['parsed']['Message']) ? $data['parsed']['Message'] : null);
40
+ $this->populateShape($data, $response, $command);
41
+ return $data;
42
+ }
43
+ }
vendor_wpstg/aws/aws-sdk-php/src/Api/ErrorParser/XmlErrorParser.php ADDED
@@ -0,0 +1,82 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPStaging\Vendor\Aws\Api\ErrorParser;
4
+
5
+ use WPStaging\Vendor\Aws\Api\Parser\PayloadParserTrait;
6
+ use WPStaging\Vendor\Aws\Api\Parser\XmlParser;
7
+ use WPStaging\Vendor\Aws\Api\Service;
8
+ use WPStaging\Vendor\Aws\Api\StructureShape;
9
+ use WPStaging\Vendor\Aws\CommandInterface;
10
+ use WPStaging\Vendor\Psr\Http\Message\ResponseInterface;
11
+ /**
12
+ * Parses XML errors.
13
+ */
14
+ class XmlErrorParser extends \WPStaging\Vendor\Aws\Api\ErrorParser\AbstractErrorParser
15
+ {
16
+ use PayloadParserTrait;
17
+ protected $parser;
18
+ public function __construct(\WPStaging\Vendor\Aws\Api\Service $api = null, \WPStaging\Vendor\Aws\Api\Parser\XmlParser $parser = null)
19
+ {
20
+ parent::__construct($api);
21
+ $this->parser = $parser ?: new \WPStaging\Vendor\Aws\Api\Parser\XmlParser();
22
+ }
23
+ public function __invoke(\WPStaging\Vendor\Psr\Http\Message\ResponseInterface $response, \WPStaging\Vendor\Aws\CommandInterface $command = null)
24
+ {
25
+ $code = (string) $response->getStatusCode();
26
+ $data = ['type' => $code[0] == '4' ? 'client' : 'server', 'request_id' => null, 'code' => null, 'message' => null, 'parsed' => null];
27
+ $body = $response->getBody();
28
+ if ($body->getSize() > 0) {
29
+ $this->parseBody($this->parseXml($body, $response), $data);
30
+ } else {
31
+ $this->parseHeaders($response, $data);
32
+ }
33
+ $this->populateShape($data, $response, $command);
34
+ return $data;
35
+ }
36
+ private function parseHeaders(\WPStaging\Vendor\Psr\Http\Message\ResponseInterface $response, array &$data)
37
+ {
38
+ if ($response->getStatusCode() == '404') {
39
+ $data['code'] = 'NotFound';
40
+ }
41
+ $data['message'] = $response->getStatusCode() . ' ' . $response->getReasonPhrase();
42
+ if ($requestId = $response->getHeaderLine('x-amz-request-id')) {
43
+ $data['request_id'] = $requestId;
44
+ $data['message'] .= " (Request-ID: {$requestId})";
45
+ }
46
+ }
47
+ private function parseBody(\SimpleXMLElement $body, array &$data)
48
+ {
49
+ $data['parsed'] = $body;
50
+ $prefix = $this->registerNamespacePrefix($body);
51
+ if ($tempXml = $body->xpath("//{$prefix}Code[1]")) {
52
+ $data['code'] = (string) $tempXml[0];
53
+ }
54
+ if ($tempXml = $body->xpath("//{$prefix}Message[1]")) {
55
+ $data['message'] = (string) $tempXml[0];
56
+ }
57
+ $tempXml = $body->xpath("//{$prefix}RequestId[1]");
58
+ if (isset($tempXml[0])) {
59
+ $data['request_id'] = (string) $tempXml[0];
60
+ }
61
+ }
62
+ protected function registerNamespacePrefix(\SimpleXMLElement $element)
63
+ {
64
+ $namespaces = $element->getDocNamespaces();
65
+ if (!isset($namespaces[''])) {
66
+ return '';
67
+ }
68
+ // Account for the default namespace being defined and PHP not
69
+ // being able to handle it :(.
70
+ $element->registerXPathNamespace('ns', $namespaces['']);
71
+ return 'ns:';
72
+ }
73
+ protected function payload(\WPStaging\Vendor\Psr\Http\Message\ResponseInterface $response, \WPStaging\Vendor\Aws\Api\StructureShape $member)
74
+ {
75
+ $xmlBody = $this->parseXml($response->getBody(), $response);
76
+ $prefix = $this->registerNamespacePrefix($xmlBody);
77
+ $errorBody = $xmlBody->xpath("//{$prefix}Error");
78
+ if (\is_array($errorBody) && !empty($errorBody[0])) {
79
+ return $this->parser->parse($member, $errorBody[0]);
80
+ }
81
+ }
82
+ }
vendor_wpstg/aws/aws-sdk-php/src/Api/ListShape.php ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPStaging\Vendor\Aws\Api;
4
+
5
+ /**
6
+ * Represents a list shape.
7
+ */
8
+ class ListShape extends \WPStaging\Vendor\Aws\Api\Shape
9
+ {
10
+ private $member;
11
+ public function __construct(array $definition, \WPStaging\Vendor\Aws\Api\ShapeMap $shapeMap)
12
+ {
13
+ $definition['type'] = 'list';
14
+ parent::__construct($definition, $shapeMap);
15
+ }
16
+ /**
17
+ * @return Shape
18
+ * @throws \RuntimeException if no member is specified
19
+ */
20
+ public function getMember()
21
+ {
22
+ if (!$this->member) {
23
+ if (!isset($this->definition['member'])) {
24
+ throw new \RuntimeException('No member attribute specified');
25
+ }
26
+ $this->member = \WPStaging\Vendor\Aws\Api\Shape::create($this->definition['member'], $this->shapeMap);
27
+ }
28
+ return $this->member;
29
+ }
30
+ }
vendor_wpstg/aws/aws-sdk-php/src/Api/MapShape.php ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPStaging\Vendor\Aws\Api;
4
+
5
+ /**
6
+ * Represents a map shape.
7
+ */
8
+ class MapShape extends \WPStaging\Vendor\Aws\Api\Shape
9
+ {
10
+ /** @var Shape */
11
+ private $value;
12
+ /** @var Shape */
13
+ private $key;
14
+ public function __construct(array $definition, \WPStaging\Vendor\Aws\Api\ShapeMap $shapeMap)
15
+ {
16
+ $definition['type'] = 'map';
17
+ parent::__construct($definition, $shapeMap);
18
+ }
19
+ /**
20
+ * @return Shape
21
+ * @throws \RuntimeException if no value is specified
22
+ */
23
+ public function getValue()
24
+ {
25
+ if (!$this->value) {
26
+ if (!isset($this->definition['value'])) {
27
+ throw new \RuntimeException('No value specified');
28
+ }
29
+ $this->value = \WPStaging\Vendor\Aws\Api\Shape::create($this->definition['value'], $this->shapeMap);
30
+ }
31
+ return $this->value;
32
+ }
33
+ /**
34
+ * @return Shape
35
+ */
36
+ public function getKey()
37
+ {
38
+ if (!$this->key) {
39
+ $this->key = isset($this->definition['key']) ? \WPStaging\Vendor\Aws\Api\Shape::create($this->definition['key'], $this->shapeMap) : new \WPStaging\Vendor\Aws\Api\Shape(['type' => 'string'], $this->shapeMap);
40
+ }
41
+ return $this->key;
42
+ }
43
+ }
vendor_wpstg/aws/aws-sdk-php/src/Api/Operation.php ADDED
@@ -0,0 +1,87 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPStaging\Vendor\Aws\Api;
4
+
5
+ /**
6
+ * Represents an API operation.
7
+ */
8
+ class Operation extends \WPStaging\Vendor\Aws\Api\AbstractModel
9
+ {
10
+ private $input;
11
+ private $output;
12
+ private $errors;
13
+ public function __construct(array $definition, \WPStaging\Vendor\Aws\Api\ShapeMap $shapeMap)
14
+ {
15
+ $definition['type'] = 'structure';
16
+ if (!isset($definition['http']['method'])) {
17
+ $definition['http']['method'] = 'POST';
18
+ }
19
+ if (!isset($definition['http']['requestUri'])) {
20
+ $definition['http']['requestUri'] = '/';
21
+ }
22
+ parent::__construct($definition, $shapeMap);
23
+ }
24
+ /**
25
+ * Returns an associative array of the HTTP attribute of the operation:
26
+ *
27
+ * - method: HTTP method of the operation
28
+ * - requestUri: URI of the request (can include URI template placeholders)
29
+ *
30
+ * @return array
31
+ */
32
+ public function getHttp()
33
+ {
34
+ return $this->definition['http'];
35
+ }
36
+ /**
37
+ * Get the input shape of the operation.
38
+ *
39
+ * @return StructureShape
40
+ */
41
+ public function getInput()
42
+ {
43
+ if (!$this->input) {
44
+ if ($input = $this['input']) {
45
+ $this->input = $this->shapeFor($input);
46
+ } else {
47
+ $this->input = new \WPStaging\Vendor\Aws\Api\StructureShape([], $this->shapeMap);
48
+ }
49
+ }
50
+ return $this->input;
51
+ }
52
+ /**
53
+ * Get the output shape of the operation.
54
+ *
55
+ * @return StructureShape
56
+ */
57
+ public function getOutput()
58
+ {
59
+ if (!$this->output) {
60
+ if ($output = $this['output']) {
61
+ $this->output = $this->shapeFor($output);
62
+ } else {
63
+ $this->output = new \WPStaging\Vendor\Aws\Api\StructureShape([], $this->shapeMap);
64
+ }
65
+ }
66
+ return $this->output;
67
+ }
68
+ /**
69
+ * Get an array of operation error shapes.
70
+ *
71
+ * @return Shape[]
72
+ */
73
+ public function getErrors()
74
+ {
75
+ if ($this->errors === null) {
76
+ if ($errors = $this['errors']) {
77
+ foreach ($errors as $key => $error) {
78
+ $errors[$key] = $this->shapeFor($error);
79
+ }
80
+ $this->errors = $errors;
81
+ } else {
82
+ $this->errors = [];
83
+ }
84
+ }
85
+ return $this->errors;
86
+ }
87
+ }
vendor_wpstg/aws/aws-sdk-php/src/Api/Parser/AbstractParser.php ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPStaging\Vendor\Aws\Api\Parser;
4
+
5
+ use WPStaging\Vendor\Aws\Api\Service;
6
+ use WPStaging\Vendor\Aws\Api\StructureShape;
7
+ use WPStaging\Vendor\Aws\CommandInterface;
8
+ use WPStaging\Vendor\Aws\ResultInterface;
9
+ use WPStaging\Vendor\Psr\Http\Message\ResponseInterface;
10
+ use WPStaging\Vendor\Psr\Http\Message\StreamInterface;
11
+ /**
12
+ * @internal
13
+ */
14
+ abstract class AbstractParser
15
+ {
16
+ /** @var \Aws\Api\Service Representation of the service API*/
17
+ protected $api;
18
+ /** @var callable */
19
+ protected $parser;
20
+ /**
21
+ * @param Service $api Service description.
22
+ */
23
+ public function __construct(\WPStaging\Vendor\Aws\Api\Service $api)
24
+ {
25
+ $this->api = $api;
26
+ }
27
+ /**
28
+ * @param CommandInterface $command Command that was executed.
29
+ * @param ResponseInterface $response Response that was received.
30
+ *
31
+ * @return ResultInterface
32
+ */
33
+ public abstract function __invoke(\WPStaging\Vendor\Aws\CommandInterface $command, \WPStaging\Vendor\Psr\Http\Message\ResponseInterface $response);
34
+ public abstract function parseMemberFromStream(\WPStaging\Vendor\Psr\Http\Message\StreamInterface $stream, \WPStaging\Vendor\Aws\Api\StructureShape $member, $response);
35
+ }
vendor_wpstg/aws/aws-sdk-php/src/Api/Parser/AbstractRestParser.php ADDED
@@ -0,0 +1,140 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPStaging\Vendor\Aws\Api\Parser;
4
+
5
+ use WPStaging\Vendor\Aws\Api\DateTimeResult;
6
+ use WPStaging\Vendor\Aws\Api\Shape;
7
+ use WPStaging\Vendor\Aws\Api\StructureShape;
8
+ use WPStaging\Vendor\Aws\Result;
9
+ use WPStaging\Vendor\Aws\CommandInterface;
10
+ use WPStaging\Vendor\Psr\Http\Message\ResponseInterface;
11
+ /**
12
+ * @internal
13
+ */
14
+ abstract class AbstractRestParser extends \WPStaging\Vendor\Aws\Api\Parser\AbstractParser
15
+ {
16
+ use PayloadParserTrait;
17
+ /**
18
+ * Parses a payload from a response.
19
+ *
20
+ * @param ResponseInterface $response Response to parse.
21
+ * @param StructureShape $member Member to parse
22
+ * @param array $result Result value
23
+ *
24
+ * @return mixed
25
+ */
26
+ protected abstract function payload(\WPStaging\Vendor\Psr\Http\Message\ResponseInterface $response, \WPStaging\Vendor\Aws\Api\StructureShape $member, array &$result);
27
+ public function __invoke(\WPStaging\Vendor\Aws\CommandInterface $command, \WPStaging\Vendor\Psr\Http\Message\ResponseInterface $response)
28
+ {
29
+ $output = $this->api->getOperation($command->getName())->getOutput();
30
+ $result = [];
31
+ if ($payload = $output['payload']) {
32
+ $this->extractPayload($payload, $output, $response, $result);
33
+ }
34
+ foreach ($output->getMembers() as $name => $member) {
35
+ switch ($member['location']) {
36
+ case 'header':
37
+ $this->extractHeader($name, $member, $response, $result);
38
+ break;
39
+ case 'headers':
40
+ $this->extractHeaders($name, $member, $response, $result);
41
+ break;
42
+ case 'statusCode':
43
+ $this->extractStatus($name, $response, $result);
44
+ break;
45
+ }
46
+ }
47
+ if (!$payload && $response->getBody()->getSize() > 0 && \count($output->getMembers()) > 0) {
48
+ // if no payload was found, then parse the contents of the body
49
+ $this->payload($response, $output, $result);
50
+ }
51
+ return new \WPStaging\Vendor\Aws\Result($result);
52
+ }
53
+ private function extractPayload($payload, \WPStaging\Vendor\Aws\Api\StructureShape $output, \WPStaging\Vendor\Psr\Http\Message\ResponseInterface $response, array &$result)
54
+ {
55
+ $member = $output->getMember($payload);
56
+ if (!empty($member['eventstream'])) {
57
+ $result[$payload] = new \WPStaging\Vendor\Aws\Api\Parser\EventParsingIterator($response->getBody(), $member, $this);
58
+ } else {
59
+ if ($member instanceof \WPStaging\Vendor\Aws\Api\StructureShape) {
60
+ // Structure members parse top-level data into a specific key.
61
+ $result[$payload] = [];
62
+ $this->payload($response, $member, $result[$payload]);
63
+ } else {
64
+ // Streaming data is just the stream from the response body.
65
+ $result[$payload] = $response->getBody();
66
+ }
67
+ }
68
+ }
69
+ /**
70
+ * Extract a single header from the response into the result.
71
+ */
72
+ private function extractHeader($name, \WPStaging\Vendor\Aws\Api\Shape $shape, \WPStaging\Vendor\Psr\Http\Message\ResponseInterface $response, &$result)
73
+ {
74
+ $value = $response->getHeaderLine($shape['locationName'] ?: $name);
75
+ switch ($shape->getType()) {
76
+ case 'float':
77
+ case 'double':
78
+ $value = (float) $value;
79
+ break;
80
+ case 'long':
81
+ $value = (int) $value;
82
+ break;
83
+ case 'boolean':
84
+ $value = \filter_var($value, \FILTER_VALIDATE_BOOLEAN);
85
+ break;
86
+ case 'blob':
87
+ $value = \base64_decode($value);
88
+ break;
89
+ case 'timestamp':
90
+ try {
91
+ $value = \WPStaging\Vendor\Aws\Api\DateTimeResult::fromTimestamp($value, !empty($shape['timestampFormat']) ? $shape['timestampFormat'] : null);
92
+ break;
93
+ } catch (\Exception $e) {
94
+ // If the value cannot be parsed, then do not add it to the
95
+ // output structure.
96
+ return;
97
+ }
98
+ case 'string':
99
+ try {
100
+ if ($shape['jsonvalue']) {
101
+ $value = $this->parseJson(\base64_decode($value), $response);
102
+ }
103
+ // If value is not set, do not add to output structure.
104
+ if (!isset($value)) {
105
+ return;
106
+ }
107
+ break;
108
+ } catch (\Exception $e) {
109
+ //If the value cannot be parsed, then do not add it to the
110
+ //output structure.
111
+ return;
112
+ }
113
+ }
114
+ $result[$name] = $value;
115
+ }
116
+ /**
117
+ * Extract a map of headers with an optional prefix from the response.
118
+ */
119
+ private function extractHeaders($name, \WPStaging\Vendor\Aws\Api\Shape $shape, \WPStaging\Vendor\Psr\Http\Message\ResponseInterface $response, &$result)
120
+ {
121
+ // Check if the headers are prefixed by a location name
122
+ $result[$name] = [];
123
+ $prefix = $shape['locationName'];
124
+ $prefixLen = \strlen($prefix);
125
+ foreach ($response->getHeaders() as $k => $values) {
126
+ if (!$prefixLen) {
127
+ $result[$name][$k] = \implode(', ', $values);
128
+ } elseif (\stripos($k, $prefix) === 0) {
129
+ $result[$name][\substr($k, $prefixLen)] = \implode(', ', $values);
130
+ }
131
+ }
132
+ }
133
+ /**
134
+ * Places the status code of the response into the result array.
135
+ */
136
+ private function extractStatus($name, \WPStaging\Vendor\Psr\Http\Message\ResponseInterface $response, array &$result)
137
+ {
138
+ $result[$name] = (int) $response->getStatusCode();
139
+ }
140
+ }
vendor_wpstg/aws/aws-sdk-php/src/Api/Parser/Crc32ValidatingParser.php ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPStaging\Vendor\Aws\Api\Parser;
4
+
5
+ use WPStaging\Vendor\Aws\Api\StructureShape;
6
+ use WPStaging\Vendor\Aws\CommandInterface;
7
+ use WPStaging\Vendor\Aws\Exception\AwsException;
8
+ use WPStaging\Vendor\Psr\Http\Message\ResponseInterface;
9
+ use WPStaging\Vendor\Psr\Http\Message\StreamInterface;
10
+ use WPStaging\Vendor\GuzzleHttp\Psr7;
11
+ /**
12
+ * @internal Decorates a parser and validates the x-amz-crc32 header.
13
+ */
14
+ class Crc32ValidatingParser extends \WPStaging\Vendor\Aws\Api\Parser\AbstractParser
15
+ {
16
+ /**
17
+ * @param callable $parser Parser to wrap.
18
+ */
19
+ public function __construct(callable $parser)
20
+ {
21
+ $this->parser = $parser;
22
+ }
23
+ public function __invoke(\WPStaging\Vendor\Aws\CommandInterface $command, \WPStaging\Vendor\Psr\Http\Message\ResponseInterface $response)
24
+ {
25
+ if ($expected = $response->getHeaderLine('x-amz-crc32')) {
26
+ $hash = \hexdec(\WPStaging\Vendor\GuzzleHttp\Psr7\Utils::hash($response->getBody(), 'crc32b'));
27
+ if ($expected != $hash) {
28
+ throw new \WPStaging\Vendor\Aws\Exception\AwsException("crc32 mismatch. Expected {$expected}, found {$hash}.", $command, ['code' => 'ClientChecksumMismatch', 'connection_error' => \true, 'response' => $response]);
29
+ }
30
+ }
31
+ $fn = $this->parser;
32
+ return $fn($command, $response);
33
+ }
34
+ public function parseMemberFromStream(\WPStaging\Vendor\Psr\Http\Message\StreamInterface $stream, \WPStaging\Vendor\Aws\Api\StructureShape $member, $response)
35
+ {
36
+ return $this->parser->parseMemberFromStream($stream, $member, $response);
37
+ }
38
+ }
vendor_wpstg/aws/aws-sdk-php/src/Api/Parser/DecodingEventStreamIterator.php ADDED
@@ -0,0 +1,246 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPStaging\Vendor\Aws\Api\Parser;
4
+
5
+ use Iterator;
6
+ use WPStaging\Vendor\Aws\Api\DateTimeResult;
7
+ use WPStaging\Vendor\GuzzleHttp\Psr7;
8
+ use WPStaging\Vendor\Psr\Http\Message\StreamInterface;
9
+ use WPStaging\Vendor\Aws\Api\Parser\Exception\ParserException;
10
+ /**
11
+ * @internal Implements a decoder for a binary encoded event stream that will
12
+ * decode, validate, and provide individual events from the stream.
13
+ */
14
+ class DecodingEventStreamIterator implements \Iterator
15
+ {
16
+ const HEADERS = 'headers';
17
+ const PAYLOAD = 'payload';
18
+ const LENGTH_TOTAL = 'total_length';
19
+ const LENGTH_HEADERS = 'headers_length';
20
+ const CRC_PRELUDE = 'prelude_crc';
21
+ const BYTES_PRELUDE = 12;
22
+ const BYTES_TRAILING = 4;
23
+ private static $preludeFormat = [self::LENGTH_TOTAL => 'decodeUint32', self::LENGTH_HEADERS => 'decodeUint32', self::CRC_PRELUDE => 'decodeUint32'];
24
+ private static $lengthFormatMap = [1 => 'decodeUint8', 2 => 'decodeUint16', 4 => 'decodeUint32', 8 => 'decodeUint64'];
25
+ private static $headerTypeMap = [0 => 'decodeBooleanTrue', 1 => 'decodeBooleanFalse', 2 => 'decodeInt8', 3 => 'decodeInt16', 4 => 'decodeInt32', 5 => 'decodeInt64', 6 => 'decodeBytes', 7 => 'decodeString', 8 => 'decodeTimestamp', 9 => 'decodeUuid'];
26
+ /** @var StreamInterface Stream of eventstream shape to parse. */
27
+ private $stream;
28
+ /** @var array Currently parsed event. */
29
+ private $currentEvent;
30
+ /** @var int Current in-order event key. */
31
+ private $key;
32
+ /** @var resource|\HashContext CRC32 hash context for event validation */
33
+ private $hashContext;
34
+ /** @var int $currentPosition */
35
+ private $currentPosition;
36
+ /**
37
+ * DecodingEventStreamIterator constructor.
38
+ *
39
+ * @param StreamInterface $stream
40
+ */
41
+ public function __construct(\WPStaging\Vendor\Psr\Http\Message\StreamInterface $stream)
42
+ {
43
+ $this->stream = $stream;
44
+ $this->rewind();
45
+ }
46
+ private function parseHeaders($headerBytes)
47
+ {
48
+ $headers = [];
49
+ $bytesRead = 0;
50
+ while ($bytesRead < $headerBytes) {
51
+ list($key, $numBytes) = $this->decodeString(1);
52
+ $bytesRead += $numBytes;
53
+ list($type, $numBytes) = $this->decodeUint8();
54
+ $bytesRead += $numBytes;
55
+ $f = self::$headerTypeMap[$type];
56
+ list($value, $numBytes) = $this->{$f}();
57
+ $bytesRead += $numBytes;
58
+ if (isset($headers[$key])) {
59
+ throw new \WPStaging\Vendor\Aws\Api\Parser\Exception\ParserException('Duplicate key in event headers.');
60
+ }
61
+ $headers[$key] = $value;
62
+ }
63
+ return [$headers, $bytesRead];
64
+ }
65
+ private function parsePrelude()
66
+ {
67
+ $prelude = [];
68
+ $bytesRead = 0;
69
+ $calculatedCrc = null;
70
+ foreach (self::$preludeFormat as $key => $decodeFunction) {
71
+ if ($key === self::CRC_PRELUDE) {
72
+ $hashCopy = \hash_copy($this->hashContext);
73
+ $calculatedCrc = \hash_final($this->hashContext, \true);
74
+ $this->hashContext = $hashCopy;
75
+ }
76
+ list($value, $numBytes) = $this->{$decodeFunction}();
77
+ $bytesRead += $numBytes;
78
+ $prelude[$key] = $value;
79
+ }
80
+ if (\unpack('N', $calculatedCrc)[1] !== $prelude[self::CRC_PRELUDE]) {
81
+ throw new \WPStaging\Vendor\Aws\Api\Parser\Exception\ParserException('Prelude checksum mismatch.');
82
+ }
83
+ return [$prelude, $bytesRead];
84
+ }
85
+ private function parseEvent()
86
+ {
87
+ $event = [];
88
+ if ($this->stream->tell() < $this->stream->getSize()) {
89
+ $this->hashContext = \hash_init('crc32b');
90
+ $bytesLeft = $this->stream->getSize() - $this->stream->tell();
91
+ list($prelude, $numBytes) = $this->parsePrelude();
92
+ if ($prelude[self::LENGTH_TOTAL] > $bytesLeft) {
93
+ throw new \WPStaging\Vendor\Aws\Api\Parser\Exception\ParserException('Message length too long.');
94
+ }
95
+ $bytesLeft -= $numBytes;
96
+ if ($prelude[self::LENGTH_HEADERS] > $bytesLeft) {
97
+ throw new \WPStaging\Vendor\Aws\Api\Parser\Exception\ParserException('Headers length too long.');
98
+ }
99
+ list($event[self::HEADERS], $numBytes) = $this->parseHeaders($prelude[self::LENGTH_HEADERS]);
100
+ $event[self::PAYLOAD] = \WPStaging\Vendor\GuzzleHttp\Psr7\Utils::streamFor($this->readAndHashBytes($prelude[self::LENGTH_TOTAL] - self::BYTES_PRELUDE - $numBytes - self::BYTES_TRAILING));
101
+ $calculatedCrc = \hash_final($this->hashContext, \true);
102
+ $messageCrc = $this->stream->read(4);
103
+ if ($calculatedCrc !== $messageCrc) {
104
+ throw new \WPStaging\Vendor\Aws\Api\Parser\Exception\ParserException('Message checksum mismatch.');
105
+ }
106
+ }
107
+ return $event;
108
+ }
109
+ // Iterator Functionality
110
+ /**
111
+ * @return array
112
+ */
113
+ #[\ReturnTypeWillChange]
114
+ public function current()
115
+ {
116
+ return $this->currentEvent;
117
+ }
118
+ /**
119
+ * @return int
120
+ */
121
+ #[\ReturnTypeWillChange]
122
+ public function key()
123
+ {
124
+ return $this->key;
125
+ }
126
+ #[\ReturnTypeWillChange]
127
+ public function next()
128
+ {
129
+ $this->currentPosition = $this->stream->tell();
130
+ if ($this->valid()) {
131
+ $this->key++;
132
+ $this->currentEvent = $this->parseEvent();
133
+ }
134
+ }
135
+ #[\ReturnTypeWillChange]
136
+ public function rewind()
137
+ {
138
+ $this->stream->rewind();
139
+ $this->key = 0;
140
+ $this->currentPosition = 0;
141
+ $this->currentEvent = $this->parseEvent();
142
+ }
143
+ /**
144
+ * @return bool
145
+ */
146
+ #[\ReturnTypeWillChange]
147
+ public function valid()
148
+ {
149
+ return $this->currentPosition < $this->stream->getSize();
150
+ }
151
+ // Decoding Utilities
152
+ private function readAndHashBytes($num)
153
+ {
154
+ $bytes = $this->stream->read($num);
155
+ \hash_update($this->hashContext, $bytes);
156
+ return $bytes;
157
+ }
158
+ private function decodeBooleanTrue()
159
+ {
160
+ return [\true, 0];
161
+ }
162
+ private function decodeBooleanFalse()
163
+ {
164
+ return [\false, 0];
165
+ }
166
+ private function uintToInt($val, $size)
167
+ {
168
+ $signedCap = \pow(2, $size - 1);
169
+ if ($val > $signedCap) {
170
+ $val -= 2 * $signedCap;
171
+ }
172
+ return $val;
173
+ }
174
+ private function decodeInt8()
175
+ {
176
+ $val = (int) \unpack('C', $this->readAndHashBytes(1))[1];
177
+ return [$this->uintToInt($val, 8), 1];
178
+ }
179
+ private function decodeUint8()
180
+ {
181
+ return [\unpack('C', $this->readAndHashBytes(1))[1], 1];
182
+ }
183
+ private function decodeInt16()
184
+ {
185
+ $val = (int) \unpack('n', $this->readAndHashBytes(2))[1];
186
+ return [$this->uintToInt($val, 16), 2];
187
+ }
188
+ private function decodeUint16()
189
+ {
190
+ return [\unpack('n', $this->readAndHashBytes(2))[1], 2];
191
+ }
192
+ private function decodeInt32()
193
+ {
194
+ $val = (int) \unpack('N', $this->readAndHashBytes(4))[1];
195
+ return [$this->uintToInt($val, 32), 4];
196
+ }
197
+ private function decodeUint32()
198
+ {
199
+ return [\unpack('N', $this->readAndHashBytes(4))[1], 4];
200
+ }
201
+ private function decodeInt64()
202
+ {
203
+ $val = $this->unpackInt64($this->readAndHashBytes(8))[1];
204
+ return [$this->uintToInt($val, 64), 8];
205
+ }
206
+ private function decodeUint64()
207
+ {
208
+ return [$this->unpackInt64($this->readAndHashBytes(8))[1], 8];
209
+ }
210
+ private function unpackInt64($bytes)
211
+ {
212
+ if (\version_compare(\PHP_VERSION, '5.6.3', '<')) {
213
+ $d = \unpack('N2', $bytes);
214
+ return [1 => $d[1] << 32 | $d[2]];
215
+ }
216
+ return \unpack('J', $bytes);
217
+ }
218
+ private function decodeBytes($lengthBytes = 2)
219
+ {
220
+ if (!isset(self::$lengthFormatMap[$lengthBytes])) {
221
+ throw new \WPStaging\Vendor\Aws\Api\Parser\Exception\ParserException('Undefined variable length format.');
222
+ }
223
+ $f = self::$lengthFormatMap[$lengthBytes];
224
+ list($len, $bytes) = $this->{$f}();
225
+ return [$this->readAndHashBytes($len), $len + $bytes];
226
+ }
227
+ private function decodeString($lengthBytes = 2)
228
+ {
229
+ if (!isset(self::$lengthFormatMap[$lengthBytes])) {
230
+ throw new \WPStaging\Vendor\Aws\Api\Parser\Exception\ParserException('Undefined variable length format.');
231
+ }
232
+ $f = self::$lengthFormatMap[$lengthBytes];
233
+ list($len, $bytes) = $this->{$f}();
234
+ return [$this->readAndHashBytes($len), $len + $bytes];
235
+ }
236
+ private function decodeTimestamp()
237
+ {
238
+ list($val, $bytes) = $this->decodeInt64();
239
+ return [\WPStaging\Vendor\Aws\Api\DateTimeResult::createFromFormat('U.u', $val / 1000), $bytes];
240
+ }
241
+ private function decodeUuid()
242
+ {
243
+ $val = \unpack('H32', $this->readAndHashBytes(16))[1];
244
+ return [\substr($val, 0, 8) . '-' . \substr($val, 8, 4) . '-' . \substr($val, 12, 4) . '-' . \substr($val, 16, 4) . '-' . \substr($val, 20, 12), 16];
245
+ }
246
+ }
vendor_wpstg/aws/aws-sdk-php/src/Api/Parser/EventParsingIterator.php ADDED
@@ -0,0 +1,86 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPStaging\Vendor\Aws\Api\Parser;
4
+
5
+ use Iterator;
6
+ use WPStaging\Vendor\Aws\Exception\EventStreamDataException;
7
+ use WPStaging\Vendor\Aws\Api\Parser\Exception\ParserException;
8
+ use WPStaging\Vendor\Aws\Api\StructureShape;
9
+ use WPStaging\Vendor\Psr\Http\Message\StreamInterface;
10
+ /**
11
+ * @internal Implements a decoder for a binary encoded event stream that will
12
+ * decode, validate, and provide individual events from the stream.
13
+ */
14
+ class EventParsingIterator implements \Iterator
15
+ {
16
+ /** @var StreamInterface */
17
+ private $decodingIterator;
18
+ /** @var StructureShape */
19
+ private $shape;
20
+ /** @var AbstractParser */
21
+ private $parser;
22
+ public function __construct(\WPStaging\Vendor\Psr\Http\Message\StreamInterface $stream, \WPStaging\Vendor\Aws\Api\StructureShape $shape, \WPStaging\Vendor\Aws\Api\Parser\AbstractParser $parser)
23
+ {
24
+ $this->decodingIterator = new \WPStaging\Vendor\Aws\Api\Parser\DecodingEventStreamIterator($stream);
25
+ $this->shape = $shape;
26
+ $this->parser = $parser;
27
+ }
28
+ #[\ReturnTypeWillChange]
29
+ public function current()
30
+ {
31
+ return $this->parseEvent($this->decodingIterator->current());
32
+ }
33
+ #[\ReturnTypeWillChange]
34
+ public function key()
35
+ {
36
+ return $this->decodingIterator->key();
37
+ }
38
+ #[\ReturnTypeWillChange]
39
+ public function next()
40
+ {
41
+ $this->decodingIterator->next();
42
+ }
43
+ #[\ReturnTypeWillChange]
44
+ public function rewind()
45
+ {
46
+ $this->decodingIterator->rewind();
47
+ }
48
+ #[\ReturnTypeWillChange]
49
+ public function valid()
50
+ {
51
+ return $this->decodingIterator->valid();
52
+ }
53
+ private function parseEvent(array $event)
54
+ {
55
+ if (!empty($event['headers'][':message-type'])) {
56
+ if ($event['headers'][':message-type'] === 'error') {
57
+ return $this->parseError($event);
58
+ }
59
+ if ($event['headers'][':message-type'] !== 'event') {
60
+ throw new \WPStaging\Vendor\Aws\Api\Parser\Exception\ParserException('Failed to parse unknown message type.');
61
+ }
62
+ }
63
+ if (empty($event['headers'][':event-type'])) {
64
+ throw new \WPStaging\Vendor\Aws\Api\Parser\Exception\ParserException('Failed to parse without event type.');
65
+ }
66
+ $eventShape = $this->shape->getMember($event['headers'][':event-type']);
67
+ $parsedEvent = [];
68
+ foreach ($eventShape['members'] as $shape => $details) {
69
+ if (!empty($details['eventpayload'])) {
70
+ $payloadShape = $eventShape->getMember($shape);
71
+ if ($payloadShape['type'] === 'blob') {
72
+ $parsedEvent[$shape] = $event['payload'];
73
+ } else {
74
+ $parsedEvent[$shape] = $this->parser->parseMemberFromStream($event['payload'], $payloadShape, null);
75
+ }
76
+ } else {
77
+ $parsedEvent[$shape] = $event['headers'][$shape];
78
+ }
79
+ }
80
+ return [$event['headers'][':event-type'] => $parsedEvent];
81
+ }
82
+ private function parseError(array $event)
83
+ {
84
+ throw new \WPStaging\Vendor\Aws\Exception\EventStreamDataException($event['headers'][':error-code'], $event['headers'][':error-message']);
85
+ }
86
+ }
vendor_wpstg/aws/aws-sdk-php/src/Api/Parser/Exception/ParserException.php ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPStaging\Vendor\Aws\Api\Parser\Exception;
4
+
5
+ use WPStaging\Vendor\Aws\HasMonitoringEventsTrait;
6
+ use WPStaging\Vendor\Aws\MonitoringEventsInterface;
7
+ use WPStaging\Vendor\Aws\ResponseContainerInterface;
8
+ use WPStaging\Vendor\Psr\Http\Message\ResponseInterface;
9
+ class ParserException extends \RuntimeException implements \WPStaging\Vendor\Aws\MonitoringEventsInterface, \WPStaging\Vendor\Aws\ResponseContainerInterface
10
+ {
11
+ use HasMonitoringEventsTrait;
12
+ private $errorCode;
13
+ private $requestId;
14
+ private $response;
15
+ public function __construct($message = '', $code = 0, $previous = null, array $context = [])
16
+ {
17
+ $this->errorCode = isset($context['error_code']) ? $context['error_code'] : null;
18
+ $this->requestId = isset($context['request_id']) ? $context['request_id'] : null;
19
+ $this->response = isset($context['response']) ? $context['response'] : null;
20
+ parent::__construct($message, $code, $previous);
21
+ }
22
+ /**
23
+ * Get the error code, if any.
24
+ *
25
+ * @return string|null
26
+ */
27
+ public function getErrorCode()
28
+ {
29
+ return $this->errorCode;
30
+ }
31
+ /**
32
+ * Get the request ID, if any.
33
+ *
34
+ * @return string|null
35
+ */
36
+ public function getRequestId()
37
+ {
38
+ return $this->requestId;
39
+ }
40
+ /**
41
+ * Get the received HTTP response if any.
42
+ *
43
+ * @return ResponseInterface|null
44
+ */
45
+ public function getResponse()
46
+ {
47
+ return $this->response;
48
+ }
49
+ }
vendor_wpstg/aws/aws-sdk-php/src/Api/Parser/JsonParser.php ADDED
@@ -0,0 +1,57 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPStaging\Vendor\Aws\Api\Parser;
4
+
5
+ use WPStaging\Vendor\Aws\Api\DateTimeResult;
6
+ use WPStaging\Vendor\Aws\Api\Shape;
7
+ /**
8
+ * @internal Implements standard JSON parsing.
9
+ */
10
+ class JsonParser
11
+ {
12
+ public function parse(\WPStaging\Vendor\Aws\Api\Shape $shape, $value)
13
+ {
14
+ if ($value === null) {
15
+ return $value;
16
+ }
17
+ switch ($shape['type']) {
18
+ case 'structure':
19
+ if (isset($shape['document']) && $shape['document']) {
20
+ return $value;
21
+ }
22
+ $target = [];
23
+ foreach ($shape->getMembers() as $name => $member) {
24
+ $locationName = $member['locationName'] ?: $name;
25
+ if (isset($value[$locationName])) {
26
+ $target[$name] = $this->parse($member, $value[$locationName]);
27
+ }
28
+ }
29
+ if (isset($shape['union']) && $shape['union'] && \is_array($value) && empty($target)) {
30
+ foreach ($value as $key => $val) {
31
+ $target['Unknown'][$key] = $val;
32
+ }
33
+ }
34
+ return $target;
35
+ case 'list':
36
+ $member = $shape->getMember();
37
+ $target = [];
38
+ foreach ($value as $v) {
39
+ $target[] = $this->parse($member, $v);
40
+ }
41
+ return $target;
42
+ case 'map':
43
+ $values = $shape->getValue();
44
+ $target = [];
45
+ foreach ($value as $k => $v) {
46
+ $target[$k] = $this->parse($values, $v);
47
+ }
48
+ return $target;
49
+ case 'timestamp':
50
+ return \WPStaging\Vendor\Aws\Api\DateTimeResult::fromTimestamp($value, !empty($shape['timestampFormat']) ? $shape['timestampFormat'] : null);
51
+ case 'blob':
52
+ return \base64_decode($value);
53
+ default:
54
+ return $value;
55
+ }
56
+ }
57
+ }
vendor_wpstg/aws/aws-sdk-php/src/Api/Parser/JsonRpcParser.php ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPStaging\Vendor\Aws\Api\Parser;
4
+
5
+ use WPStaging\Vendor\Aws\Api\StructureShape;
6
+ use WPStaging\Vendor\Aws\Api\Service;
7
+ use WPStaging\Vendor\Aws\Result;
8
+ use WPStaging\Vendor\Aws\CommandInterface;
9
+ use WPStaging\Vendor\Psr\Http\Message\ResponseInterface;
10
+ use WPStaging\Vendor\Psr\Http\Message\StreamInterface;
11
+ /**
12
+ * @internal Implements JSON-RPC parsing (e.g., DynamoDB)
13
+ */
14
+ class JsonRpcParser extends \WPStaging\Vendor\Aws\Api\Parser\AbstractParser
15
+ {
16
+ use PayloadParserTrait;
17
+ /**
18
+ * @param Service $api Service description
19
+ * @param JsonParser $parser JSON body builder
20
+ */
21
+ public function __construct(\WPStaging\Vendor\Aws\Api\Service $api, \WPStaging\Vendor\Aws\Api\Parser\JsonParser $parser = null)
22
+ {
23
+ parent::__construct($api);
24
+ $this->parser = $parser ?: new \WPStaging\Vendor\Aws\Api\Parser\JsonParser();
25
+ }
26
+ public function __invoke(\WPStaging\Vendor\Aws\CommandInterface $command, \WPStaging\Vendor\Psr\Http\Message\ResponseInterface $response)
27
+ {
28
+ $operation = $this->api->getOperation($command->getName());
29
+ $result = null === $operation['output'] ? null : $this->parseMemberFromStream($response->getBody(), $operation->getOutput(), $response);
30
+ return new \WPStaging\Vendor\Aws\Result($result ?: []);
31
+ }
32
+ public function parseMemberFromStream(\WPStaging\Vendor\Psr\Http\Message\StreamInterface $stream, \WPStaging\Vendor\Aws\Api\StructureShape $member, $response)
33
+ {
34
+ return $this->parser->parse($member, $this->parseJson($stream, $response));
35
+ }
36
+ }
vendor_wpstg/aws/aws-sdk-php/src/Api/Parser/MetadataParserTrait.php ADDED
@@ -0,0 +1,71 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPStaging\Vendor\Aws\Api\Parser;
4
+
5
+ use WPStaging\Vendor\Aws\Api\DateTimeResult;
6
+ use WPStaging\Vendor\Aws\Api\Shape;
7
+ use WPStaging\Vendor\Psr\Http\Message\ResponseInterface;
8
+ trait MetadataParserTrait
9
+ {
10
+ /**
11
+ * Extract a single header from the response into the result.
12
+ */
13
+ protected function extractHeader($name, \WPStaging\Vendor\Aws\Api\Shape $shape, \WPStaging\Vendor\Psr\Http\Message\ResponseInterface $response, &$result)
14
+ {
15
+ $value = $response->getHeaderLine($shape['locationName'] ?: $name);
16
+ switch ($shape->getType()) {
17
+ case 'float':
18
+ case 'double':
19
+ $value = (float) $value;
20
+ break;
21
+ case 'long':
22
+ $value = (int) $value;
23
+ break;
24
+ case 'boolean':
25
+ $value = \filter_var($value, \FILTER_VALIDATE_BOOLEAN);
26
+ break;
27
+ case 'blob':
28
+ $value = \base64_decode($value);
29
+ break;
30
+ case 'timestamp':
31
+ try {
32
+ $value = \WPStaging\Vendor\Aws\Api\DateTimeResult::fromTimestamp($value, !empty($shape['timestampFormat']) ? $shape['timestampFormat'] : null);
33
+ break;
34
+ } catch (\Exception $e) {
35
+ // If the value cannot be parsed, then do not add it to the
36
+ // output structure.
37
+ return;
38
+ }
39
+ case 'string':
40
+ if ($shape['jsonvalue']) {
41
+ $value = $this->parseJson(\base64_decode($value), $response);
42
+ }
43
+ break;
44
+ }
45
+ $result[$name] = $value;
46
+ }
47
+ /**
48
+ * Extract a map of headers with an optional prefix from the response.
49
+ */
50
+ protected function extractHeaders($name, \WPStaging\Vendor\Aws\Api\Shape $shape, \WPStaging\Vendor\Psr\Http\Message\ResponseInterface $response, &$result)
51
+ {
52
+ // Check if the headers are prefixed by a location name
53
+ $result[$name] = [];
54
+ $prefix = $shape['locationName'];
55
+ $prefixLen = \strlen($prefix);
56
+ foreach ($response->getHeaders() as $k => $values) {
57
+ if (!$prefixLen) {
58
+ $result[$name][$k] = \implode(', ', $values);
59
+ } elseif (\stripos($k, $prefix) === 0) {
60
+ $result[$name][\substr($k, $prefixLen)] = \implode(', ', $values);
61
+ }
62
+ }
63
+ }
64
+ /**
65
+ * Places the status code of the response into the result array.
66
+ */
67
+ protected function extractStatus($name, \WPStaging\Vendor\Psr\Http\Message\ResponseInterface $response, array &$result)
68
+ {
69
+ $result[$name] = (int) $response->getStatusCode();
70
+ }
71
+ }
vendor_wpstg/aws/aws-sdk-php/src/Api/Parser/PayloadParserTrait.php ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPStaging\Vendor\Aws\Api\Parser;
4
+
5
+ use WPStaging\Vendor\Aws\Api\Parser\Exception\ParserException;
6
+ use WPStaging\Vendor\Psr\Http\Message\ResponseInterface;
7
+ trait PayloadParserTrait
8
+ {
9
+ /**
10
+ * @param string $json
11
+ *
12
+ * @throws ParserException
13
+ *
14
+ * @return array
15
+ */
16
+ private function parseJson($json, $response)
17
+ {
18
+ $jsonPayload = \json_decode($json, \true);
19
+ if (\JSON_ERROR_NONE !== \json_last_error()) {
20
+ throw new \WPStaging\Vendor\Aws\Api\Parser\Exception\ParserException('Error parsing JSON: ' . \json_last_error_msg(), 0, null, ['response' => $response]);
21
+ }
22
+ return $jsonPayload;
23
+ }
24
+ /**
25
+ * @param string $xml
26
+ *
27
+ * @throws ParserException
28
+ *
29
+ * @return \SimpleXMLElement
30
+ */
31
+ protected function parseXml($xml, $response)
32
+ {
33
+ $priorSetting = \libxml_use_internal_errors(\true);
34
+ try {
35
+ \libxml_clear_errors();
36
+ $xmlPayload = new \SimpleXMLElement($xml);
37
+ if ($error = \libxml_get_last_error()) {
38
+ throw new \RuntimeException($error->message);
39
+ }
40
+ } catch (\Exception $e) {
41
+ throw new \WPStaging\Vendor\Aws\Api\Parser\Exception\ParserException("Error parsing XML: {$e->getMessage()}", 0, $e, ['response' => $response]);
42
+ } finally {
43
+ \libxml_use_internal_errors($priorSetting);
44
+ }
45
+ return $xmlPayload;
46
+ }
47
+ }
vendor_wpstg/aws/aws-sdk-php/src/Api/Parser/QueryParser.php ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPStaging\Vendor\Aws\Api\Parser;
4
+
5
+ use WPStaging\Vendor\Aws\Api\Service;
6
+ use WPStaging\Vendor\Aws\Api\StructureShape;
7
+ use WPStaging\Vendor\Aws\Result;
8
+ use WPStaging\Vendor\Aws\CommandInterface;
9
+ use WPStaging\Vendor\Psr\Http\Message\ResponseInterface;
10
+ use WPStaging\Vendor\Psr\Http\Message\StreamInterface;
11
+ /**
12
+ * @internal Parses query (XML) responses (e.g., EC2, SQS, and many others)
13
+ */
14
+ class QueryParser extends \WPStaging\Vendor\Aws\Api\Parser\AbstractParser
15
+ {
16
+ use PayloadParserTrait;
17
+ /** @var bool */
18
+ private $honorResultWrapper;
19
+ /**
20
+ * @param Service $api Service description
21
+ * @param XmlParser $xmlParser Optional XML parser
22
+ * @param bool $honorResultWrapper Set to false to disable the peeling
23
+ * back of result wrappers from the
24
+ * output structure.
25
+ */
26
+ public function __construct(\WPStaging\Vendor\Aws\Api\Service $api, \WPStaging\Vendor\Aws\Api\Parser\XmlParser $xmlParser = null, $honorResultWrapper = \true)
27
+ {
28
+ parent::__construct($api);
29
+ $this->parser = $xmlParser ?: new \WPStaging\Vendor\Aws\Api\Parser\XmlParser();
30
+ $this->honorResultWrapper = $honorResultWrapper;
31
+ }
32
+ public function __invoke(\WPStaging\Vendor\Aws\CommandInterface $command, \WPStaging\Vendor\Psr\Http\Message\ResponseInterface $response)
33
+ {
34
+ $output = $this->api->getOperation($command->getName())->getOutput();
35
+ $xml = $this->parseXml($response->getBody(), $response);
36
+ if ($this->honorResultWrapper && $output['resultWrapper']) {
37
+ $xml = $xml->{$output['resultWrapper']};
38
+ }
39
+ return new \WPStaging\Vendor\Aws\Result($this->parser->parse($output, $xml));
40
+ }
41
+ public function parseMemberFromStream(\WPStaging\Vendor\Psr\Http\Message\StreamInterface $stream, \WPStaging\Vendor\Aws\Api\StructureShape $member, $response)
42
+ {
43
+ $xml = $this->parseXml($stream, $response);
44
+ return $this->parser->parse($member, $xml);
45
+ }
46
+ }
vendor_wpstg/aws/aws-sdk-php/src/Api/Parser/RestJsonParser.php ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPStaging\Vendor\Aws\Api\Parser;
4
+
5
+ use WPStaging\Vendor\Aws\Api\Service;
6
+ use WPStaging\Vendor\Aws\Api\StructureShape;
7
+ use WPStaging\Vendor\Psr\Http\Message\ResponseInterface;
8
+ use WPStaging\Vendor\Psr\Http\Message\StreamInterface;
9
+ /**
10
+ * @internal Implements REST-JSON parsing (e.g., Glacier, Elastic Transcoder)
11
+ */
12
+ class RestJsonParser extends \WPStaging\Vendor\Aws\Api\Parser\AbstractRestParser
13
+ {
14
+ use PayloadParserTrait;
15
+ /**
16
+ * @param Service $api Service description
17
+ * @param JsonParser $parser JSON body builder
18
+ */
19
+ public function __construct(\WPStaging\Vendor\Aws\Api\Service $api, \WPStaging\Vendor\Aws\Api\Parser\JsonParser $parser = null)
20
+ {
21
+ parent::__construct($api);
22
+ $this->parser = $parser ?: new \WPStaging\Vendor\Aws\Api\Parser\JsonParser();
23
+ }
24
+ protected function payload(\WPStaging\Vendor\Psr\Http\Message\ResponseInterface $response, \WPStaging\Vendor\Aws\Api\StructureShape $member, array &$result)
25
+ {
26
+ $jsonBody = $this->parseJson($response->getBody(), $response);
27
+ if ($jsonBody) {
28
+ $result += $this->parser->parse($member, $jsonBody);
29
+ }
30
+ }
31
+ public function parseMemberFromStream(\WPStaging\Vendor\Psr\Http\Message\StreamInterface $stream, \WPStaging\Vendor\Aws\Api\StructureShape $member, $response)
32
+ {
33
+ $jsonBody = $this->parseJson($stream, $response);
34
+ if ($jsonBody) {
35
+ return $this->parser->parse($member, $jsonBody);
36
+ }
37
+ return [];
38
+ }
39
+ }
vendor_wpstg/aws/aws-sdk-php/src/Api/Parser/RestXmlParser.php ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPStaging\Vendor\Aws\Api\Parser;
4
+
5
+ use WPStaging\Vendor\Aws\Api\StructureShape;
6
+ use WPStaging\Vendor\Aws\Api\Service;
7
+ use WPStaging\Vendor\Psr\Http\Message\ResponseInterface;
8
+ use WPStaging\Vendor\Psr\Http\Message\StreamInterface;
9
+ /**
10
+ * @internal Implements REST-XML parsing (e.g., S3, CloudFront, etc...)
11
+ */
12
+ class RestXmlParser extends \WPStaging\Vendor\Aws\Api\Parser\AbstractRestParser
13
+ {
14
+ use PayloadParserTrait;
15
+ /**
16
+ * @param Service $api Service description
17
+ * @param XmlParser $parser XML body parser
18
+ */
19
+ public function __construct(\WPStaging\Vendor\Aws\Api\Service $api, \WPStaging\Vendor\Aws\Api\Parser\XmlParser $parser = null)
20
+ {
21
+ parent::__construct($api);
22
+ $this->parser = $parser ?: new \WPStaging\Vendor\Aws\Api\Parser\XmlParser();
23
+ }
24
+ protected function payload(\WPStaging\Vendor\Psr\Http\Message\ResponseInterface $response, \WPStaging\Vendor\Aws\Api\StructureShape $member, array &$result)
25
+ {
26
+ $result += $this->parseMemberFromStream($response->getBody(), $member, $response);
27
+ }
28
+ public function parseMemberFromStream(\WPStaging\Vendor\Psr\Http\Message\StreamInterface $stream, \WPStaging\Vendor\Aws\Api\StructureShape $member, $response)
29
+ {
30
+ $xml = $this->parseXml($stream, $response);
31
+ return $this->parser->parse($member, $xml);
32
+ }
33
+ }
vendor_wpstg/aws/aws-sdk-php/src/Api/Parser/XmlParser.php ADDED
@@ -0,0 +1,125 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPStaging\Vendor\Aws\Api\Parser;
4
+
5
+ use WPStaging\Vendor\Aws\Api\DateTimeResult;
6
+ use WPStaging\Vendor\Aws\Api\ListShape;
7
+ use WPStaging\Vendor\Aws\Api\MapShape;
8
+ use WPStaging\Vendor\Aws\Api\Parser\Exception\ParserException;
9
+ use WPStaging\Vendor\Aws\Api\Shape;
10
+ use WPStaging\Vendor\Aws\Api\StructureShape;
11
+ /**
12
+ * @internal Implements standard XML parsing for REST-XML and Query protocols.
13
+ */
14
+ class XmlParser
15
+ {
16
+ public function parse(\WPStaging\Vendor\Aws\Api\StructureShape $shape, \SimpleXMLElement $value)
17
+ {
18
+ return $this->dispatch($shape, $value);
19
+ }
20
+ private function dispatch($shape, \SimpleXMLElement $value)
21
+ {
22
+ static $methods = ['structure' => 'parse_structure', 'list' => 'parse_list', 'map' => 'parse_map', 'blob' => 'parse_blob', 'boolean' => 'parse_boolean', 'integer' => 'parse_integer', 'float' => 'parse_float', 'double' => 'parse_float', 'timestamp' => 'parse_timestamp'];
23
+ $type = $shape['type'];
24
+ if (isset($methods[$type])) {
25
+ return $this->{$methods[$type]}($shape, $value);
26
+ }
27
+ return (string) $value;
28
+ }
29
+ private function parse_structure(\WPStaging\Vendor\Aws\Api\StructureShape $shape, \SimpleXMLElement $value)
30
+ {
31
+ $target = [];
32
+ foreach ($shape->getMembers() as $name => $member) {
33
+ // Extract the name of the XML node
34
+ $node = $this->memberKey($member, $name);
35
+ if (isset($value->{$node})) {
36
+ $target[$name] = $this->dispatch($member, $value->{$node});
37
+ } else {
38
+ $memberShape = $shape->getMember($name);
39
+ if (!empty($memberShape['xmlAttribute'])) {
40
+ $target[$name] = $this->parse_xml_attribute($shape, $memberShape, $value);
41
+ }
42
+ }
43
+ }
44
+ if (isset($shape['union']) && $shape['union'] && empty($target)) {
45
+ foreach ($value as $key => $val) {
46
+ $name = $val->children()->getName();
47
+ $target['Unknown'][$name] = $val->{$name};
48
+ }
49
+ }
50
+ return $target;
51
+ }
52
+ private function memberKey(\WPStaging\Vendor\Aws\Api\Shape $shape, $name)
53
+ {
54
+ if (null !== $shape['locationName']) {
55
+ return $shape['locationName'];
56
+ }
57
+ if ($shape instanceof \WPStaging\Vendor\Aws\Api\ListShape && $shape['flattened']) {
58
+ return $shape->getMember()['locationName'] ?: $name;
59
+ }
60
+ return $name;
61
+ }
62
+ private function parse_list(\WPStaging\Vendor\Aws\Api\ListShape $shape, \SimpleXMLElement $value)
63
+ {
64
+ $target = [];
65
+ $member = $shape->getMember();
66
+ if (!$shape['flattened']) {
67
+ $value = $value->{$member['locationName'] ?: 'member'};
68
+ }
69
+ foreach ($value as $v) {
70
+ $target[] = $this->dispatch($member, $v);
71
+ }
72
+ return $target;
73
+ }
74
+ private function parse_map(\WPStaging\Vendor\Aws\Api\MapShape $shape, \SimpleXMLElement $value)
75
+ {
76
+ $target = [];
77
+ if (!$shape['flattened']) {
78
+ $value = $value->entry;
79
+ }
80
+ $mapKey = $shape->getKey();
81
+ $mapValue = $shape->getValue();
82
+ $keyName = $shape->getKey()['locationName'] ?: 'key';
83
+ $valueName = $shape->getValue()['locationName'] ?: 'value';
84
+ foreach ($value as $node) {
85
+ $key = $this->dispatch($mapKey, $node->{$keyName});
86
+ $value = $this->dispatch($mapValue, $node->{$valueName});
87
+ $target[$key] = $value;
88
+ }
89
+ return $target;
90
+ }
91
+ private function parse_blob(\WPStaging\Vendor\Aws\Api\Shape $shape, $value)
92
+ {
93
+ return \base64_decode((string) $value);
94
+ }
95
+ private function parse_float(\WPStaging\Vendor\Aws\Api\Shape $shape, $value)
96
+ {
97
+ return (float) (string) $value;
98
+ }
99
+ private function parse_integer(\WPStaging\Vendor\Aws\Api\Shape $shape, $value)
100
+ {
101
+ return (int) (string) $value;
102
+ }
103
+ private function parse_boolean(\WPStaging\Vendor\Aws\Api\Shape $shape, $value)
104
+ {
105
+ return $value == 'true';
106
+ }
107
+ private function parse_timestamp(\WPStaging\Vendor\Aws\Api\Shape $shape, $value)
108
+ {
109
+ if (\is_string($value) || \is_int($value) || \is_object($value) && \method_exists($value, '__toString')) {
110
+ return \WPStaging\Vendor\Aws\Api\DateTimeResult::fromTimestamp((string) $value, !empty($shape['timestampFormat']) ? $shape['timestampFormat'] : null);
111
+ }
112
+ throw new \WPStaging\Vendor\Aws\Api\Parser\Exception\ParserException('Invalid timestamp value passed to XmlParser::parse_timestamp');
113
+ }
114
+ private function parse_xml_attribute(\WPStaging\Vendor\Aws\Api\Shape $shape, \WPStaging\Vendor\Aws\Api\Shape $memberShape, $value)
115
+ {
116
+ $namespace = $shape['xmlNamespace']['uri'] ? $shape['xmlNamespace']['uri'] : '';
117
+ $prefix = $shape['xmlNamespace']['prefix'] ? $shape['xmlNamespace']['prefix'] : '';
118
+ if (!empty($prefix)) {
119
+ $prefix .= ':';
120
+ }
121
+ $key = \str_replace($prefix, '', $memberShape['locationName']);
122
+ $attributes = $value->attributes($namespace);
123
+ return isset($attributes[$key]) ? (string) $attributes[$key] : null;
124
+ }
125
+ }
vendor_wpstg/aws/aws-sdk-php/src/Api/Serializer/Ec2ParamBuilder.php ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPStaging\Vendor\Aws\Api\Serializer;
4
+
5
+ use WPStaging\Vendor\Aws\Api\Shape;
6
+ use WPStaging\Vendor\Aws\Api\ListShape;
7
+ /**
8
+ * @internal
9
+ */
10
+ class Ec2ParamBuilder extends \WPStaging\Vendor\Aws\Api\Serializer\QueryParamBuilder
11
+ {
12
+ protected function queryName(\WPStaging\Vendor\Aws\Api\Shape $shape, $default = null)
13
+ {
14
+ return ($shape['queryName'] ?: \ucfirst(@$shape['locationName'] ?: "")) ?: $default;
15
+ }
16
+ protected function isFlat(\WPStaging\Vendor\Aws\Api\Shape $shape)
17
+ {
18
+ return \false;
19
+ }
20
+ protected function format_list(\WPStaging\Vendor\Aws\Api\ListShape $shape, array $value, $prefix, &$query)
21
+ {
22
+ // Handle empty list serialization
23
+ if (!$value) {
24
+ $query[$prefix] = \false;
25
+ } else {
26
+ $items = $shape->getMember();
27
+ foreach ($value as $k => $v) {
28
+ $this->format($items, $v, $prefix . '.' . ($k + 1), $query);
29
+ }
30
+ }
31
+ }
32
+ }
vendor_wpstg/aws/aws-sdk-php/src/Api/Serializer/JsonBody.php ADDED
@@ -0,0 +1,86 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPStaging\Vendor\Aws\Api\Serializer;
4
+
5
+ use WPStaging\Vendor\Aws\Api\Service;
6
+ use WPStaging\Vendor\Aws\Api\Shape;
7
+ use WPStaging\Vendor\Aws\Api\TimestampShape;
8
+ use WPStaging\Vendor\Aws\Exception\InvalidJsonException;
9
+ /**
10
+ * Formats the JSON body of a JSON-REST or JSON-RPC operation.
11
+ * @internal
12
+ */
13
+ class JsonBody
14
+ {
15
+ private $api;
16
+ public function __construct(\WPStaging\Vendor\Aws\Api\Service $api)
17
+ {
18
+ $this->api = $api;
19
+ }
20
+ /**
21
+ * Gets the JSON Content-Type header for a service API
22
+ *
23
+ * @param Service $service
24
+ *
25
+ * @return string
26
+ */
27
+ public static function getContentType(\WPStaging\Vendor\Aws\Api\Service $service)
28
+ {
29
+ return 'application/x-amz-json-' . \number_format($service->getMetadata('jsonVersion'), 1);
30
+ }
31
+ /**
32
+ * Builds the JSON body based on an array of arguments.
33
+ *
34
+ * @param Shape $shape Operation being constructed
35
+ * @param array $args Associative array of arguments
36
+ *
37
+ * @return string
38
+ */
39
+ public function build(\WPStaging\Vendor\Aws\Api\Shape $shape, array $args)
40
+ {
41
+ $result = \json_encode($this->format($shape, $args));
42
+ return $result == '[]' ? '{}' : $result;
43
+ }
44
+ private function format(\WPStaging\Vendor\Aws\Api\Shape $shape, $value)
45
+ {
46
+ switch ($shape['type']) {
47
+ case 'structure':
48
+ $data = [];
49
+ if (isset($shape['document']) && $shape['document']) {
50
+ return $value;
51
+ }
52
+ foreach ($value as $k => $v) {
53
+ if ($v !== null && $shape->hasMember($k)) {
54
+ $valueShape = $shape->getMember($k);
55
+ $data[$valueShape['locationName'] ?: $k] = $this->format($valueShape, $v);
56
+ }
57
+ }
58
+ if (empty($data)) {
59
+ return new \stdClass();
60
+ }
61
+ return $data;
62
+ case 'list':
63
+ $items = $shape->getMember();
64
+ foreach ($value as $k => $v) {
65
+ $value[$k] = $this->format($items, $v);
66
+ }
67
+ return $value;
68
+ case 'map':
69
+ if (empty($value)) {
70
+ return new \stdClass();
71
+ }
72
+ $values = $shape->getValue();
73
+ foreach ($value as $k => $v) {
74
+ $value[$k] = $this->format($values, $v);
75
+ }
76
+ return $value;
77
+ case 'blob':
78
+ return \base64_encode($value);
79
+ case 'timestamp':
80
+ $timestampFormat = !empty($shape['timestampFormat']) ? $shape['timestampFormat'] : 'unixTimestamp';
81
+ return \WPStaging\Vendor\Aws\Api\TimestampShape::format($value, $timestampFormat);
82
+ default:
83
+ return $value;
84
+ }
85
+ }
86
+ }
vendor_wpstg/aws/aws-sdk-php/src/Api/Serializer/JsonRpcSerializer.php ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPStaging\Vendor\Aws\Api\Serializer;
4
+
5
+ use WPStaging\Vendor\Aws\Api\Service;
6
+ use WPStaging\Vendor\Aws\CommandInterface;
7
+ use WPStaging\Vendor\GuzzleHttp\Psr7\Request;
8
+ use WPStaging\Vendor\Psr\Http\Message\RequestInterface;
9
+ /**
10
+ * Prepares a JSON-RPC request for transfer.
11
+ * @internal
12
+ */
13
+ class JsonRpcSerializer
14
+ {
15
+ /** @var JsonBody */
16
+ private $jsonFormatter;
17
+ /** @var string */
18
+ private $endpoint;
19
+ /** @var Service */
20
+ private $api;
21
+ /** @var string */
22
+ private $contentType;
23
+ /**
24
+ * @param Service $api Service description
25
+ * @param string $endpoint Endpoint to connect to
26
+ * @param JsonBody $jsonFormatter Optional JSON formatter to use
27
+ */
28
+ public function __construct(\WPStaging\Vendor\Aws\Api\Service $api, $endpoint, \WPStaging\Vendor\Aws\Api\Serializer\JsonBody $jsonFormatter = null)
29
+ {
30
+ $this->endpoint = $endpoint;
31
+ $this->api = $api;
32
+ $this->jsonFormatter = $jsonFormatter ?: new \WPStaging\Vendor\Aws\Api\Serializer\JsonBody($this->api);
33
+ $this->contentType = \WPStaging\Vendor\Aws\Api\Serializer\JsonBody::getContentType($api);
34
+ }
35
+ /**
36
+ * When invoked with an AWS command, returns a serialization array
37
+ * containing "method", "uri", "headers", and "body" key value pairs.
38
+ *
39
+ * @param CommandInterface $command
40
+ *
41
+ * @return RequestInterface
42
+ */
43
+ public function __invoke(\WPStaging\Vendor\Aws\CommandInterface $command)
44
+ {
45
+ $name = $command->getName();
46
+ $operation = $this->api->getOperation($name);
47
+ return new \WPStaging\Vendor\GuzzleHttp\Psr7\Request($operation['http']['method'], $this->endpoint, ['X-Amz-Target' => $this->api->getMetadata('targetPrefix') . '.' . $name, 'Content-Type' => $this->contentType], $this->jsonFormatter->build($operation->getInput(), $command->toArray()));
48
+ }
49
+ }
vendor_wpstg/aws/aws-sdk-php/src/Api/Serializer/QueryParamBuilder.php ADDED
@@ -0,0 +1,112 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPStaging\Vendor\Aws\Api\Serializer;
4
+
5
+ use WPStaging\Vendor\Aws\Api\StructureShape;
6
+ use WPStaging\Vendor\Aws\Api\ListShape;
7
+ use WPStaging\Vendor\Aws\Api\MapShape;
8
+ use WPStaging\Vendor\Aws\Api\Shape;
9
+ use WPStaging\Vendor\Aws\Api\TimestampShape;
10
+ /**
11
+ * @internal
12
+ */
13
+ class QueryParamBuilder
14
+ {
15
+ private $methods;
16
+ protected function queryName(\WPStaging\Vendor\Aws\Api\Shape $shape, $default = null)
17
+ {
18
+ if (null !== $shape['queryName']) {
19
+ return $shape['queryName'];
20
+ }
21
+ if (null !== $shape['locationName']) {
22
+ return $shape['locationName'];
23
+ }
24
+ if ($this->isFlat($shape) && !empty($shape['member']['locationName'])) {
25
+ return $shape['member']['locationName'];
26
+ }
27
+ return $default;
28
+ }
29
+ protected function isFlat(\WPStaging\Vendor\Aws\Api\Shape $shape)
30
+ {
31
+ return $shape['flattened'] === \true;
32
+ }
33
+ public function __invoke(\WPStaging\Vendor\Aws\Api\StructureShape $shape, array $params)
34
+ {
35
+ if (!$this->methods) {
36
+ $this->methods = \array_fill_keys(\get_class_methods($this), \true);
37
+ }
38
+ $query = [];
39
+ $this->format_structure($shape, $params, '', $query);
40
+ return $query;
41
+ }
42
+ protected function format(\WPStaging\Vendor\Aws\Api\Shape $shape, $value, $prefix, array &$query)
43
+ {
44
+ $type = 'format_' . $shape['type'];
45
+ if (isset($this->methods[$type])) {
46
+ $this->{$type}($shape, $value, $prefix, $query);
47
+ } else {
48
+ $query[$prefix] = (string) $value;
49
+ }
50
+ }
51
+ protected function format_structure(\WPStaging\Vendor\Aws\Api\StructureShape $shape, array $value, $prefix, &$query)
52
+ {
53
+ if ($prefix) {
54
+ $prefix .= '.';
55
+ }
56
+ foreach ($value as $k => $v) {
57
+ if ($shape->hasMember($k)) {
58
+ $member = $shape->getMember($k);
59
+ $this->format($member, $v, $prefix . $this->queryName($member, $k), $query);
60
+ }
61
+ }
62
+ }
63
+ protected function format_list(\WPStaging\Vendor\Aws\Api\ListShape $shape, array $value, $prefix, &$query)
64
+ {
65
+ // Handle empty list serialization
66
+ if (!$value) {
67
+ $query[$prefix] = '';
68
+ return;
69
+ }
70
+ $items = $shape->getMember();
71
+ if (!$this->isFlat($shape)) {
72
+ $locationName = $shape->getMember()['locationName'] ?: 'member';
73
+ $prefix .= ".{$locationName}";
74
+ } elseif ($name = $this->queryName($items)) {
75
+ $parts = \explode('.', $prefix);
76
+ $parts[\count($parts) - 1] = $name;
77
+ $prefix = \implode('.', $parts);
78
+ }
79
+ foreach ($value as $k => $v) {
80
+ $this->format($items, $v, $prefix . '.' . ($k + 1), $query);
81
+ }
82
+ }
83
+ protected function format_map(\WPStaging\Vendor\Aws\Api\MapShape $shape, array $value, $prefix, array &$query)
84
+ {
85
+ $vals = $shape->getValue();
86
+ $keys = $shape->getKey();
87
+ if (!$this->isFlat($shape)) {
88
+ $prefix .= '.entry';
89
+ }
90
+ $i = 0;
91
+ $keyName = '%s.%d.' . $this->queryName($keys, 'key');
92
+ $valueName = '%s.%s.' . $this->queryName($vals, 'value');
93
+ foreach ($value as $k => $v) {
94
+ $i++;
95
+ $this->format($keys, $k, \sprintf($keyName, $prefix, $i), $query);
96
+ $this->format($vals, $v, \sprintf($valueName, $prefix, $i), $query);
97
+ }
98
+ }
99
+ protected function format_blob(\WPStaging\Vendor\Aws\Api\Shape $shape, $value, $prefix, array &$query)
100
+ {
101
+ $query[$prefix] = \base64_encode($value);
102
+ }
103
+ protected function format_timestamp(\WPStaging\Vendor\Aws\Api\TimestampShape $shape, $value, $prefix, array &$query)
104
+ {
105
+ $timestampFormat = !empty($shape['timestampFormat']) ? $shape['timestampFormat'] : 'iso8601';
106
+ $query[$prefix] = \WPStaging\Vendor\Aws\Api\TimestampShape::format($value, $timestampFormat);
107
+ }
108
+ protected function format_boolean(\WPStaging\Vendor\Aws\Api\Shape $shape, $value, $prefix, array &$query)
109
+ {
110
+ $query[$prefix] = $value ? 'true' : 'false';
111
+ }
112
+ }
vendor_wpstg/aws/aws-sdk-php/src/Api/Serializer/QuerySerializer.php ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPStaging\Vendor\Aws\Api\Serializer;
4
+
5
+ use WPStaging\Vendor\Aws\Api\Service;
6
+ use WPStaging\Vendor\Aws\CommandInterface;
7
+ use WPStaging\Vendor\GuzzleHttp\Psr7\Request;
8
+ use WPStaging\Vendor\Psr\Http\Message\RequestInterface;
9
+ /**
10
+ * Serializes a query protocol request.
11
+ * @internal
12
+ */
13
+ class QuerySerializer
14
+ {
15
+ private $endpoint;
16
+ private $api;
17
+ private $paramBuilder;
18
+ public function __construct(\WPStaging\Vendor\Aws\Api\Service $api, $endpoint, callable $paramBuilder = null)
19
+ {
20
+ $this->api = $api;
21
+ $this->endpoint = $endpoint;
22
+ $this->paramBuilder = $paramBuilder ?: new \WPStaging\Vendor\Aws\Api\Serializer\QueryParamBuilder();
23
+ }
24
+ /**
25
+ * When invoked with an AWS command, returns a serialization array
26
+ * containing "method", "uri", "headers", and "body" key value pairs.
27
+ *
28
+ * @param CommandInterface $command
29
+ *
30
+ * @return RequestInterface
31
+ */
32
+ public function __invoke(\WPStaging\Vendor\Aws\CommandInterface $command)
33
+ {
34
+ $operation = $this->api->getOperation($command->getName());
35
+ $body = ['Action' => $command->getName(), 'Version' => $this->api->getMetadata('apiVersion')];
36
+ $params = $command->toArray();
37
+ // Only build up the parameters when there are parameters to build
38
+ if ($params) {
39
+ $body += \call_user_func($this->paramBuilder, $operation->getInput(), $params);
40
+ }
41
+ $body = \http_build_query($body, '', '&', \PHP_QUERY_RFC3986);
42
+ return new \WPStaging\Vendor\GuzzleHttp\Psr7\Request('POST', $this->endpoint, ['Content-Length' => \strlen($body), 'Content-Type' => 'application/x-www-form-urlencoded'], $body);
43
+ }
44
+ }
vendor_wpstg/aws/aws-sdk-php/src/Api/Serializer/RestJsonSerializer.php ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPStaging\Vendor\Aws\Api\Serializer;
4
+
5
+ use WPStaging\Vendor\Aws\Api\Service;
6
+ use WPStaging\Vendor\Aws\Api\StructureShape;
7
+ /**
8
+ * Serializes requests for the REST-JSON protocol.
9
+ * @internal
10
+ */
11
+ class RestJsonSerializer extends \WPStaging\Vendor\Aws\Api\Serializer\RestSerializer
12
+ {
13
+ /** @var JsonBody */
14
+ private $jsonFormatter;
15
+ /** @var string */
16
+ private $contentType;
17
+ /**
18
+ * @param Service $api Service API description
19
+ * @param string $endpoint Endpoint to connect to
20
+ * @param JsonBody $jsonFormatter Optional JSON formatter to use
21
+ */
22
+ public function __construct(\WPStaging\Vendor\Aws\Api\Service $api, $endpoint, \WPStaging\Vendor\Aws\Api\Serializer\JsonBody $jsonFormatter = null)
23
+ {
24
+ parent::__construct($api, $endpoint);
25
+ $this->contentType = 'application/json';
26
+ $this->jsonFormatter = $jsonFormatter ?: new \WPStaging\Vendor\Aws\Api\Serializer\JsonBody($api);
27
+ }
28
+ protected function payload(\WPStaging\Vendor\Aws\Api\StructureShape $member, array $value, array &$opts)
29
+ {
30
+ $body = isset($value) ? (string) $this->jsonFormatter->build($member, $value) : "{}";
31
+ $opts['headers']['Content-Type'] = $this->contentType;
32
+ $opts['body'] = $body;
33
+ }
34
+ }
vendor_wpstg/aws/aws-sdk-php/src/Api/Serializer/RestSerializer.php ADDED
@@ -0,0 +1,200 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPStaging\Vendor\Aws\Api\Serializer;
4
+
5
+ use WPStaging\Vendor\Aws\Api\MapShape;
6
+ use WPStaging\Vendor\Aws\Api\Service;
7
+ use WPStaging\Vendor\Aws\Api\Operation;
8
+ use WPStaging\Vendor\Aws\Api\Shape;
9
+ use WPStaging\Vendor\Aws\Api\StructureShape;
10
+ use WPStaging\Vendor\Aws\Api\TimestampShape;
11
+ use WPStaging\Vendor\Aws\CommandInterface;
12
+ use WPStaging\Vendor\GuzzleHttp\Psr7;
13
+ use WPStaging\Vendor\GuzzleHttp\Psr7\Uri;
14
+ use WPStaging\Vendor\GuzzleHttp\Psr7\UriResolver;
15
+ use WPStaging\Vendor\Psr\Http\Message\RequestInterface;
16
+ /**
17
+ * Serializes HTTP locations like header, uri, payload, etc...
18
+ * @internal
19
+ */
20
+ abstract class RestSerializer
21
+ {
22
+ /** @var Service */
23
+ private $api;
24
+ /** @var Psr7\Uri */
25
+ private $endpoint;
26
+ /**
27
+ * @param Service $api Service API description
28
+ * @param string $endpoint Endpoint to connect to
29
+ */
30
+ public function __construct(\WPStaging\Vendor\Aws\Api\Service $api, $endpoint)
31
+ {
32
+ $this->api = $api;
33
+ $this->endpoint = \WPStaging\Vendor\GuzzleHttp\Psr7\Utils::uriFor($endpoint);
34
+ }
35
+ /**
36
+ * @param CommandInterface $command Command to serialized
37
+ *
38
+ * @return RequestInterface
39
+ */
40
+ public function __invoke(\WPStaging\Vendor\Aws\CommandInterface $command)
41
+ {
42
+ $operation = $this->api->getOperation($command->getName());
43
+ $args = $command->toArray();
44
+ $opts = $this->serialize($operation, $args);
45
+ $uri = $this->buildEndpoint($operation, $args, $opts);
46
+ return new \WPStaging\Vendor\GuzzleHttp\Psr7\Request($operation['http']['method'], $uri, isset($opts['headers']) ? $opts['headers'] : [], isset($opts['body']) ? $opts['body'] : null);
47
+ }
48
+ /**
49
+ * Modifies a hash of request options for a payload body.
50
+ *
51
+ * @param StructureShape $member Member to serialize
52
+ * @param array $value Value to serialize
53
+ * @param array $opts Request options to modify.
54
+ */
55
+ protected abstract function payload(\WPStaging\Vendor\Aws\Api\StructureShape $member, array $value, array &$opts);
56
+ private function serialize(\WPStaging\Vendor\Aws\Api\Operation $operation, array $args)
57
+ {
58
+ $opts = [];
59
+ $input = $operation->getInput();
60
+ // Apply the payload trait if present
61
+ if ($payload = $input['payload']) {
62
+ $this->applyPayload($input, $payload, $args, $opts);
63
+ }
64
+ foreach ($args as $name => $value) {
65
+ if ($input->hasMember($name)) {
66
+ $member = $input->getMember($name);
67
+ $location = $member['location'];
68
+ if (!$payload && !$location) {
69
+ $bodyMembers[$name] = $value;
70
+ } elseif ($location == 'header') {
71
+ $this->applyHeader($name, $member, $value, $opts);
72
+ } elseif ($location == 'querystring') {
73
+ $this->applyQuery($name, $member, $value, $opts);
74
+ } elseif ($location == 'headers') {
75
+ $this->applyHeaderMap($name, $member, $value, $opts);
76
+ }
77
+ }
78
+ }
79
+ if (isset($bodyMembers)) {
80
+ $this->payload($operation->getInput(), $bodyMembers, $opts);
81
+ } else {
82
+ if (!isset($opts['body']) && $this->hasPayloadParam($input, $payload)) {
83
+ $this->payload($operation->getInput(), [], $opts);
84
+ }
85
+ }
86
+ return $opts;
87
+ }
88
+ private function applyPayload(\WPStaging\Vendor\Aws\Api\StructureShape $input, $name, array $args, array &$opts)
89
+ {
90
+ if (!isset($args[$name])) {
91
+ return;
92
+ }
93
+ $m = $input->getMember($name);
94
+ if ($m['streaming'] || ($m['type'] == 'string' || $m['type'] == 'blob')) {
95
+ // Streaming bodies or payloads that are strings are
96
+ // always just a stream of data.
97
+ $opts['body'] = \WPStaging\Vendor\GuzzleHttp\Psr7\Utils::streamFor($args[$name]);
98
+ return;
99
+ }
100
+ $this->payload($m, $args[$name], $opts);
101
+ }
102
+ private function applyHeader($name, \WPStaging\Vendor\Aws\Api\Shape $member, $value, array &$opts)
103
+ {
104
+ if ($member->getType() === 'timestamp') {
105
+ $timestampFormat = !empty($member['timestampFormat']) ? $member['timestampFormat'] : 'rfc822';
106
+ $value = \WPStaging\Vendor\Aws\Api\TimestampShape::format($value, $timestampFormat);
107
+ } elseif ($member->getType() === 'boolean') {
108
+ $value = $value ? 'true' : 'false';
109
+ }
110
+ if ($member['jsonvalue']) {
111
+ $value = \json_encode($value);
112
+ if (empty($value) && \JSON_ERROR_NONE !== \json_last_error()) {
113
+ throw new \InvalidArgumentException('Unable to encode the provided value' . ' with \'json_encode\'. ' . \json_last_error_msg());
114
+ }
115
+ $value = \base64_encode($value);
116
+ }
117
+ $opts['headers'][$member['locationName'] ?: $name] = $value;
118
+ }
119
+ /**
120
+ * Note: This is currently only present in the Amazon S3 model.
121
+ */
122
+ private function applyHeaderMap($name, \WPStaging\Vendor\Aws\Api\Shape $member, array $value, array &$opts)
123
+ {
124
+ $prefix = $member['locationName'];
125
+ foreach ($value as $k => $v) {
126
+ $opts['headers'][$prefix . $k] = $v;
127
+ }
128
+ }
129
+ private function applyQuery($name, \WPStaging\Vendor\Aws\Api\Shape $member, $value, array &$opts)
130
+ {
131
+ if ($member instanceof \WPStaging\Vendor\Aws\Api\MapShape) {
132
+ $opts['query'] = isset($opts['query']) && \is_array($opts['query']) ? $opts['query'] + $value : $value;
133
+ } elseif ($value !== null) {
134
+ $type = $member->getType();
135
+ if ($type === 'boolean') {
136
+ $value = $value ? 'true' : 'false';
137
+ } elseif ($type === 'timestamp') {
138
+ $timestampFormat = !empty($member['timestampFormat']) ? $member['timestampFormat'] : 'iso8601';
139
+ $value = \WPStaging\Vendor\Aws\Api\TimestampShape::format($value, $timestampFormat);
140
+ }
141
+ $opts['query'][$member['locationName'] ?: $name] = $value;
142
+ }
143
+ }
144
+ private function buildEndpoint(\WPStaging\Vendor\Aws\Api\Operation $operation, array $args, array $opts)
145
+ {
146
+ $varspecs = [];
147
+ // Create an associative array of varspecs used in expansions
148
+ foreach ($operation->getInput()->getMembers() as $name => $member) {
149
+ if ($member['location'] == 'uri') {
150
+ $varspecs[$member['locationName'] ?: $name] = isset($args[$name]) ? $args[$name] : null;
151
+ }
152
+ }
153
+ $relative = \preg_replace_callback('/\\{([^\\}]+)\\}/', function (array $matches) use($varspecs) {
154
+ $isGreedy = \substr($matches[1], -1, 1) == '+';
155
+ $k = $isGreedy ? \substr($matches[1], 0, -1) : $matches[1];
156
+ if (!isset($varspecs[$k])) {
157
+ return '';
158
+ }
159
+ if ($isGreedy) {
160
+ return \str_replace('%2F', '/', \rawurlencode($varspecs[$k]));
161
+ }
162
+ return \rawurlencode($varspecs[$k]);
163
+ }, $operation['http']['requestUri']);
164
+ // Add the query string variables or appending to one if needed.
165
+ if (!empty($opts['query'])) {
166
+ $append = \WPStaging\Vendor\GuzzleHttp\Psr7\Query::build($opts['query']);
167
+ $relative .= \strpos($relative, '?') ? "&{$append}" : "?{$append}";
168
+ }
169
+ // If endpoint has path, remove leading '/' to preserve URI resolution.
170
+ $path = $this->endpoint->getPath();
171
+ if ($path && $relative[0] === '/') {
172
+ $relative = \substr($relative, 1);
173
+ }
174
+ // Expand path place holders using Amazon's slightly different URI
175
+ // template syntax.
176
+ return \WPStaging\Vendor\GuzzleHttp\Psr7\UriResolver::resolve($this->endpoint, new \WPStaging\Vendor\GuzzleHttp\Psr7\Uri($relative));
177
+ }
178
+ /**
179
+ * @param StructureShape $input
180
+ */
181
+ private function hasPayloadParam(\WPStaging\Vendor\Aws\Api\StructureShape $input, $payload)
182
+ {
183
+ if ($payload) {
184
+ $potentiallyEmptyTypes = ['blob', 'string'];
185
+ if ($this->api->getMetadata('protocol') == 'rest-xml') {
186
+ $potentiallyEmptyTypes[] = 'structure';
187
+ }
188
+ $payloadMember = $input->getMember($payload);
189
+ if (\in_array($payloadMember['type'], $potentiallyEmptyTypes)) {
190
+ return \false;
191
+ }
192
+ }
193
+ foreach ($input->getMembers() as $member) {
194
+ if (!isset($member['location'])) {
195
+ return \true;
196
+ }
197
+ }
198
+ return \false;
199
+ }
200
+ }
vendor_wpstg/aws/aws-sdk-php/src/Api/Serializer/RestXmlSerializer.php ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPStaging\Vendor\Aws\Api\Serializer;
4
+
5
+ use WPStaging\Vendor\Aws\Api\StructureShape;
6
+ use WPStaging\Vendor\Aws\Api\Service;
7
+ /**
8
+ * @internal
9
+ */
10
+ class RestXmlSerializer extends \WPStaging\Vendor\Aws\Api\Serializer\RestSerializer
11
+ {
12
+ /** @var XmlBody */
13
+ private $xmlBody;
14
+ /**
15
+ * @param Service $api Service API description
16
+ * @param string $endpoint Endpoint to connect to
17
+ * @param XmlBody $xmlBody Optional XML formatter to use
18
+ */
19
+ public function __construct(\WPStaging\Vendor\Aws\Api\Service $api, $endpoint, \WPStaging\Vendor\Aws\Api\Serializer\XmlBody $xmlBody = null)
20
+ {
21
+ parent::__construct($api, $endpoint);
22
+ $this->xmlBody = $xmlBody ?: new \WPStaging\Vendor\Aws\Api\Serializer\XmlBody($api);
23
+ }
24
+ protected function payload(\WPStaging\Vendor\Aws\Api\StructureShape $member, array $value, array &$opts)
25
+ {
26
+ $opts['headers']['Content-Type'] = 'application/xml';
27
+ $opts['body'] = $this->getXmlBody($member, $value);
28
+ }
29
+ /**
30
+ * @param StructureShape $member
31
+ * @param array $value
32
+ * @return string
33
+ */
34
+ private function getXmlBody(\WPStaging\Vendor\Aws\Api\StructureShape $member, array $value)
35
+ {
36
+ $xmlBody = (string) $this->xmlBody->build($member, $value);
37
+ $xmlBody = \str_replace("'", "&apos;", $xmlBody);
38
+ $xmlBody = \str_replace('\\r', "&#13;", $xmlBody);
39
+ $xmlBody = \str_replace('\\n', "&#10;", $xmlBody);
40
+ return $xmlBody;
41
+ }
42
+ }
vendor_wpstg/aws/aws-sdk-php/src/Api/Serializer/XmlBody.php ADDED
@@ -0,0 +1,148 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPStaging\Vendor\Aws\Api\Serializer;
4
+
5
+ use WPStaging\Vendor\Aws\Api\MapShape;
6
+ use WPStaging\Vendor\Aws\Api\Service;
7
+ use WPStaging\Vendor\Aws\Api\Shape;
8
+ use WPStaging\Vendor\Aws\Api\StructureShape;
9
+ use WPStaging\Vendor\Aws\Api\ListShape;
10
+ use WPStaging\Vendor\Aws\Api\TimestampShape;
11
+ use XMLWriter;
12
+ /**
13
+ * @internal Formats the XML body of a REST-XML services.
14
+ */
15
+ class XmlBody
16
+ {
17
+ /** @var \Aws\Api\Service */
18
+ private $api;
19
+ /**
20
+ * @param Service $api API being used to create the XML body.
21
+ */
22
+ public function __construct(\WPStaging\Vendor\Aws\Api\Service $api)
23
+ {
24
+ $this->api = $api;
25
+ }
26
+ /**
27
+ * Builds the XML body based on an array of arguments.
28
+ *
29
+ * @param Shape $shape Operation being constructed
30
+ * @param array $args Associative array of arguments
31
+ *
32
+ * @return string
33
+ */
34
+ public function build(\WPStaging\Vendor\Aws\Api\Shape $shape, array $args)
35
+ {
36
+ $xml = new \XMLWriter();
37
+ $xml->openMemory();
38
+ $xml->startDocument('1.0', 'UTF-8');
39
+ $this->format($shape, $shape['locationName'] ?: $shape['name'], $args, $xml);
40
+ $xml->endDocument();
41
+ return $xml->outputMemory();
42
+ }
43
+ private function startElement(\WPStaging\Vendor\Aws\Api\Shape $shape, $name, \XMLWriter $xml)
44
+ {
45
+ $xml->startElement($name);
46
+ if ($ns = $shape['xmlNamespace']) {
47
+ $xml->writeAttribute(isset($ns['prefix']) ? "xmlns:{$ns['prefix']}" : 'xmlns', $shape['xmlNamespace']['uri']);
48
+ }
49
+ }
50
+ private function format(\WPStaging\Vendor\Aws\Api\Shape $shape, $name, $value, \XMLWriter $xml)
51
+ {
52
+ // Any method mentioned here has a custom serialization handler.
53
+ static $methods = ['add_structure' => \true, 'add_list' => \true, 'add_blob' => \true, 'add_timestamp' => \true, 'add_boolean' => \true, 'add_map' => \true, 'add_string' => \true];
54
+ $type = 'add_' . $shape['type'];
55
+ if (isset($methods[$type])) {
56
+ $this->{$type}($shape, $name, $value, $xml);
57
+ } else {
58
+ $this->defaultShape($shape, $name, $value, $xml);
59
+ }
60
+ }
61
+ private function defaultShape(\WPStaging\Vendor\Aws\Api\Shape $shape, $name, $value, \XMLWriter $xml)
62
+ {
63
+ $this->startElement($shape, $name, $xml);
64
+ $xml->text($value);
65
+ $xml->endElement();
66
+ }
67
+ private function add_structure(\WPStaging\Vendor\Aws\Api\StructureShape $shape, $name, array $value, \XMLWriter $xml)
68
+ {
69
+ $this->startElement($shape, $name, $xml);
70
+ foreach ($this->getStructureMembers($shape, $value) as $k => $definition) {
71
+ $this->format($definition['member'], $definition['member']['locationName'] ?: $k, $definition['value'], $xml);
72
+ }
73
+ $xml->endElement();
74
+ }
75
+ private function getStructureMembers(\WPStaging\Vendor\Aws\Api\StructureShape $shape, array $value)
76
+ {
77
+ $members = [];
78
+ foreach ($value as $k => $v) {
79
+ if ($v !== null && $shape->hasMember($k)) {
80
+ $definition = ['member' => $shape->getMember($k), 'value' => $v];
81
+ if ($definition['member']['xmlAttribute']) {
82
+ // array_unshift_associative
83
+ $members = [$k => $definition] + $members;
84
+ } else {
85
+ $members[$k] = $definition;
86
+ }
87
+ }
88
+ }
89
+ return $members;
90
+ }
91
+ private function add_list(\WPStaging\Vendor\Aws\Api\ListShape $shape, $name, array $value, \XMLWriter $xml)
92
+ {
93
+ $items = $shape->getMember();
94
+ if ($shape['flattened']) {
95
+ $elementName = $name;
96
+ } else {
97
+ $this->startElement($shape, $name, $xml);
98
+ $elementName = $items['locationName'] ?: 'member';
99
+ }
100
+ foreach ($value as $v) {
101
+ $this->format($items, $elementName, $v, $xml);
102
+ }
103
+ if (!$shape['flattened']) {
104
+ $xml->endElement();
105
+ }
106
+ }
107
+ private function add_map(\WPStaging\Vendor\Aws\Api\MapShape $shape, $name, array $value, \XMLWriter $xml)
108
+ {
109
+ $xmlEntry = $shape['flattened'] ? $shape['locationName'] : 'entry';
110
+ $xmlKey = $shape->getKey()['locationName'] ?: 'key';
111
+ $xmlValue = $shape->getValue()['locationName'] ?: 'value';
112
+ $this->startElement($shape, $name, $xml);
113
+ foreach ($value as $key => $v) {
114
+ $this->startElement($shape, $xmlEntry, $xml);
115
+ $this->format($shape->getKey(), $xmlKey, $key, $xml);
116
+ $this->format($shape->getValue(), $xmlValue, $v, $xml);
117
+ $xml->endElement();
118
+ }
119
+ $xml->endElement();
120
+ }
121
+ private function add_blob(\WPStaging\Vendor\Aws\Api\Shape $shape, $name, $value, \XMLWriter $xml)
122
+ {
123
+ $this->startElement($shape, $name, $xml);
124
+ $xml->writeRaw(\base64_encode($value));
125
+ $xml->endElement();
126
+ }
127
+ private function add_timestamp(\WPStaging\Vendor\Aws\Api\TimestampShape $shape, $name, $value, \XMLWriter $xml)
128
+ {
129
+ $this->startElement($shape, $name, $xml);
130
+ $timestampFormat = !empty($shape['timestampFormat']) ? $shape['timestampFormat'] : 'iso8601';
131
+ $xml->writeRaw(\WPStaging\Vendor\Aws\Api\TimestampShape::format($value, $timestampFormat));
132
+ $xml->endElement();
133
+ }
134
+ private function add_boolean(\WPStaging\Vendor\Aws\Api\Shape $shape, $name, $value, \XMLWriter $xml)
135
+ {
136
+ $this->startElement($shape, $name, $xml);
137
+ $xml->writeRaw($value ? 'true' : 'false');
138
+ $xml->endElement();
139
+ }
140
+ private function add_string(\WPStaging\Vendor\Aws\Api\Shape $shape, $name, $value, \XMLWriter $xml)
141
+ {
142
+ if ($shape['xmlAttribute']) {
143
+ $xml->writeAttribute($shape['locationName'] ?: $name, $value);
144
+ } else {
145
+ $this->defaultShape($shape, $name, $value, $xml);
146
+ }
147
+ }
148
+ }
vendor_wpstg/aws/aws-sdk-php/src/Api/Service.php ADDED
@@ -0,0 +1,357 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPStaging\Vendor\Aws\Api;
4
+
5
+ use WPStaging\Vendor\Aws\Api\Serializer\QuerySerializer;
6
+ use WPStaging\Vendor\Aws\Api\Serializer\Ec2ParamBuilder;
7
+ use WPStaging\Vendor\Aws\Api\Parser\QueryParser;
8
+ /**
9
+ * Represents a web service API model.
10
+ */
11
+ class Service extends \WPStaging\Vendor\Aws\Api\AbstractModel
12
+ {
13
+ /** @var callable */
14
+ private $apiProvider;
15
+ /** @var string */
16
+ private $serviceName;
17
+ /** @var string */
18
+ private $apiVersion;
19
+ /** @var Operation[] */
20
+ private $operations = [];
21
+ /** @var array */
22
+ private $paginators = null;
23
+ /** @var array */
24
+ private $waiters = null;
25
+ /**
26
+ * @param array $definition
27
+ * @param callable $provider
28
+ *
29
+ * @internal param array $definition Service description
30
+ */
31
+ public function __construct(array $definition, callable $provider)
32
+ {
33
+ static $defaults = ['operations' => [], 'shapes' => [], 'metadata' => []], $defaultMeta = ['apiVersion' => null, 'serviceFullName' => null, 'serviceId' => null, 'endpointPrefix' => null, 'signingName' => null, 'signatureVersion' => null, 'protocol' => null, 'uid' => null];
34
+ $definition += $defaults;
35
+ $definition['metadata'] += $defaultMeta;
36
+ $this->definition = $definition;
37
+ $this->apiProvider = $provider;
38
+ parent::__construct($definition, new \WPStaging\Vendor\Aws\Api\ShapeMap($definition['shapes']));
39
+ if (isset($definition['metadata']['serviceIdentifier'])) {
40
+ $this->serviceName = $this->getServiceName();
41
+ } else {
42
+ $this->serviceName = $this->getEndpointPrefix();
43
+ }
44
+ $this->apiVersion = $this->getApiVersion();
45
+ }
46
+ /**
47
+ * Creates a request serializer for the provided API object.
48
+ *
49
+ * @param Service $api API that contains a protocol.
50
+ * @param string $endpoint Endpoint to send requests to.
51
+ *
52
+ * @return callable
53
+ * @throws \UnexpectedValueException
54
+ */
55
+ public static function createSerializer(\WPStaging\Vendor\Aws\Api\Service $api, $endpoint)
56
+ {
57
+ static $mapping = ['json' => 'WPStaging\\Vendor\\Aws\\Api\\Serializer\\JsonRpcSerializer', 'query' => 'WPStaging\\Vendor\\Aws\\Api\\Serializer\\QuerySerializer', 'rest-json' => 'WPStaging\\Vendor\\Aws\\Api\\Serializer\\RestJsonSerializer', 'rest-xml' => 'WPStaging\\Vendor\\Aws\\Api\\Serializer\\RestXmlSerializer'];
58
+ $proto = $api->getProtocol();
59
+ if (isset($mapping[$proto])) {
60
+ return new $mapping[$proto]($api, $endpoint);
61
+ }
62
+ if ($proto == 'ec2') {
63
+ return new \WPStaging\Vendor\Aws\Api\Serializer\QuerySerializer($api, $endpoint, new \WPStaging\Vendor\Aws\Api\Serializer\Ec2ParamBuilder());
64
+ }
65
+ throw new \UnexpectedValueException('Unknown protocol: ' . $api->getProtocol());
66
+ }
67
+ /**
68
+ * Creates an error parser for the given protocol.
69
+ *
70
+ * Redundant method signature to preserve backwards compatibility.
71
+ *
72
+ * @param string $protocol Protocol to parse (e.g., query, json, etc.)
73
+ *
74
+ * @return callable
75
+ * @throws \UnexpectedValueException
76
+ */
77
+ public static function createErrorParser($protocol, \WPStaging\Vendor\Aws\Api\Service $api = null)
78
+ {
79
+ static $mapping = ['json' => 'WPStaging\\Vendor\\Aws\\Api\\ErrorParser\\JsonRpcErrorParser', 'query' => 'WPStaging\\Vendor\\Aws\\Api\\ErrorParser\\XmlErrorParser', 'rest-json' => 'WPStaging\\Vendor\\Aws\\Api\\ErrorParser\\RestJsonErrorParser', 'rest-xml' => 'WPStaging\\Vendor\\Aws\\Api\\ErrorParser\\XmlErrorParser', 'ec2' => 'WPStaging\\Vendor\\Aws\\Api\\ErrorParser\\XmlErrorParser'];
80
+ if (isset($mapping[$protocol])) {
81
+ return new $mapping[$protocol]($api);
82
+ }
83
+ throw new \UnexpectedValueException("Unknown protocol: {$protocol}");
84
+ }
85
+ /**
86
+ * Applies the listeners needed to parse client models.
87
+ *
88
+ * @param Service $api API to create a parser for
89
+ * @return callable
90
+ * @throws \UnexpectedValueException
91
+ */
92
+ public static function createParser(\WPStaging\Vendor\Aws\Api\Service $api)
93
+ {
94
+ static $mapping = ['json' => 'WPStaging\\Vendor\\Aws\\Api\\Parser\\JsonRpcParser', 'query' => 'WPStaging\\Vendor\\Aws\\Api\\Parser\\QueryParser', 'rest-json' => 'WPStaging\\Vendor\\Aws\\Api\\Parser\\RestJsonParser', 'rest-xml' => 'WPStaging\\Vendor\\Aws\\Api\\Parser\\RestXmlParser'];
95
+ $proto = $api->getProtocol();
96
+ if (isset($mapping[$proto])) {
97
+ return new $mapping[$proto]($api);
98
+ }
99
+ if ($proto == 'ec2') {
100
+ return new \WPStaging\Vendor\Aws\Api\Parser\QueryParser($api, null, \false);
101
+ }
102
+ throw new \UnexpectedValueException('Unknown protocol: ' . $api->getProtocol());
103
+ }
104
+ /**
105
+ * Get the full name of the service
106
+ *
107
+ * @return string
108
+ */
109
+ public function getServiceFullName()
110
+ {
111
+ return $this->definition['metadata']['serviceFullName'];
112
+ }
113
+ /**
114
+ * Get the service id
115
+ *
116
+ * @return string
117
+ */
118
+ public function getServiceId()
119
+ {
120
+ return $this->definition['metadata']['serviceId'];
121
+ }
122
+ /**
123
+ * Get the API version of the service
124
+ *
125
+ * @return string
126
+ */
127
+ public function getApiVersion()
128
+ {
129
+ return $this->definition['metadata']['apiVersion'];
130
+ }
131
+ /**
132
+ * Get the API version of the service
133
+ *
134
+ * @return string
135
+ */
136
+ public function getEndpointPrefix()
137
+ {
138
+ return $this->definition['metadata']['endpointPrefix'];
139
+ }
140
+ /**
141
+ * Get the signing name used by the service.
142
+ *
143
+ * @return string
144
+ */
145
+ public function getSigningName()
146
+ {
147
+ return $this->definition['metadata']['signingName'] ?: $this->definition['metadata']['endpointPrefix'];
148
+ }
149
+ /**
150
+ * Get the service name.
151
+ *
152
+ * @return string
153
+ */
154
+ public function getServiceName()
155
+ {
156
+ return $this->definition['metadata']['serviceIdentifier'];
157
+ }
158
+ /**
159
+ * Get the default signature version of the service.
160
+ *
161
+ * Note: this method assumes "v4" when not specified in the model.
162
+ *
163
+ * @return string
164
+ */
165
+ public function getSignatureVersion()
166
+ {
167
+ return $this->definition['metadata']['signatureVersion'] ?: 'v4';
168
+ }
169
+ /**
170
+ * Get the protocol used by the service.
171
+ *
172
+ * @return string
173
+ */
174
+ public function getProtocol()
175
+ {
176
+ return $this->definition['metadata']['protocol'];
177
+ }
178
+ /**
179
+ * Get the uid string used by the service
180
+ *
181
+ * @return string
182
+ */
183
+ public function getUid()
184
+ {
185
+ return $this->definition['metadata']['uid'];
186
+ }
187
+ /**
188
+ * Check if the description has a specific operation by name.
189
+ *
190
+ * @param string $name Operation to check by name
191
+ *
192
+ * @return bool
193
+ */
194
+ public function hasOperation($name)
195
+ {
196
+ return isset($this['operations'][$name]);
197
+ }
198
+ /**
199
+ * Get an operation by name.
200
+ *
201
+ * @param string $name Operation to retrieve by name
202
+ *
203
+ * @return Operation
204
+ * @throws \InvalidArgumentException If the operation is not found
205
+ */
206
+ public function getOperation($name)
207
+ {
208
+ if (!isset($this->operations[$name])) {
209
+ if (!isset($this->definition['operations'][$name])) {
210
+ throw new \InvalidArgumentException("Unknown operation: {$name}");
211
+ }
212
+ $this->operations[$name] = new \WPStaging\Vendor\Aws\Api\Operation($this->definition['operations'][$name], $this->shapeMap);
213
+ }
214
+ return $this->operations[$name];
215
+ }
216
+ /**
217
+ * Get all of the operations of the description.
218
+ *
219
+ * @return Operation[]
220
+ */
221
+ public function getOperations()
222
+ {
223
+ $result = [];
224
+ foreach ($this->definition['operations'] as $name => $definition) {
225
+ $result[$name] = $this->getOperation($name);
226
+ }
227
+ return $result;
228
+ }
229
+ /**
230
+ * Get all of the error shapes of the service
231
+ *
232
+ * @return array
233
+ */
234
+ public function getErrorShapes()
235
+ {
236
+ $result = [];
237
+ foreach ($this->definition['shapes'] as $name => $definition) {
238
+ if (!empty($definition['exception'])) {
239
+ $definition['name'] = $name;
240
+ $result[] = new \WPStaging\Vendor\Aws\Api\StructureShape($definition, $this->getShapeMap());
241
+ }
242
+ }
243
+ return $result;
244
+ }
245
+ /**
246
+ * Get all of the service metadata or a specific metadata key value.
247
+ *
248
+ * @param string|null $key Key to retrieve or null to retrieve all metadata
249
+ *
250
+ * @return mixed Returns the result or null if the key is not found
251
+ */
252
+ public function getMetadata($key = null)
253
+ {
254
+ if (!$key) {
255
+ return $this['metadata'];
256
+ }
257
+ if (isset($this->definition['metadata'][$key])) {
258
+ return $this->definition['metadata'][$key];
259
+ }
260
+ return null;
261
+ }
262
+ /**
263
+ * Gets an associative array of available paginator configurations where
264
+ * the key is the name of the paginator, and the value is the paginator
265
+ * configuration.
266
+ *
267
+ * @return array
268
+ * @unstable The configuration format of paginators may change in the future
269
+ */
270
+ public function getPaginators()
271
+ {
272
+ if (!isset($this->paginators)) {
273
+ $res = \call_user_func($this->apiProvider, 'paginator', $this->serviceName, $this->apiVersion);
274
+ $this->paginators = isset($res['pagination']) ? $res['pagination'] : [];
275
+ }
276
+ return $this->paginators;
277
+ }
278
+ /**
279
+ * Determines if the service has a paginator by name.
280
+ *
281
+ * @param string $name Name of the paginator.
282
+ *
283
+ * @return bool
284
+ */
285
+ public function hasPaginator($name)
286
+ {
287
+ return isset($this->getPaginators()[$name]);
288
+ }
289
+ /**
290
+ * Retrieve a paginator by name.
291
+ *
292
+ * @param string $name Paginator to retrieve by name. This argument is
293
+ * typically the operation name.
294
+ * @return array
295
+ * @throws \UnexpectedValueException if the paginator does not exist.
296
+ * @unstable The configuration format of paginators may change in the future
297
+ */
298
+ public function getPaginatorConfig($name)
299
+ {
300
+ static $defaults = ['input_token' => null, 'output_token' => null, 'limit_key' => null, 'result_key' => null, 'more_results' => null];
301
+ if ($this->hasPaginator($name)) {
302
+ return $this->paginators[$name] + $defaults;
303
+ }
304
+ throw new \UnexpectedValueException("There is no {$name} " . "paginator defined for the {$this->serviceName} service.");
305
+ }
306
+ /**
307
+ * Gets an associative array of available waiter configurations where the
308
+ * key is the name of the waiter, and the value is the waiter
309
+ * configuration.
310
+ *
311
+ * @return array
312
+ */
313
+ public function getWaiters()
314
+ {
315
+ if (!isset($this->waiters)) {
316
+ $res = \call_user_func($this->apiProvider, 'waiter', $this->serviceName, $this->apiVersion);
317
+ $this->waiters = isset($res['waiters']) ? $res['waiters'] : [];
318
+ }
319
+ return $this->waiters;
320
+ }
321
+ /**
322
+ * Determines if the service has a waiter by name.
323
+ *
324
+ * @param string $name Name of the waiter.
325
+ *
326
+ * @return bool
327
+ */
328
+ public function hasWaiter($name)
329
+ {
330
+ return isset($this->getWaiters()[$name]);
331
+ }
332
+ /**
333
+ * Get a waiter configuration by name.
334
+ *
335
+ * @param string $name Name of the waiter by name.
336
+ *
337
+ * @return array
338
+ * @throws \UnexpectedValueException if the waiter does not exist.
339
+ */
340
+ public function getWaiterConfig($name)
341
+ {
342
+ // Error if the waiter is not defined
343
+ if ($this->hasWaiter($name)) {
344
+ return $this->waiters[$name];
345
+ }
346
+ throw new \UnexpectedValueException("There is no {$name} waiter " . "defined for the {$this->serviceName} service.");
347
+ }
348
+ /**
349
+ * Get the shape map used by the API.
350
+ *
351
+ * @return ShapeMap
352
+ */
353
+ public function getShapeMap()
354
+ {
355
+ return $this->shapeMap;
356
+ }
357
+ }
vendor_wpstg/aws/aws-sdk-php/src/Api/Shape.php ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPStaging\Vendor\Aws\Api;
4
+
5
+ /**
6
+ * Base class representing a modeled shape.
7
+ */
8
+ class Shape extends \WPStaging\Vendor\Aws\Api\AbstractModel
9
+ {
10
+ /**
11
+ * Get a concrete shape for the given definition.
12
+ *
13
+ * @param array $definition
14
+ * @param ShapeMap $shapeMap
15
+ *
16
+ * @return mixed
17
+ * @throws \RuntimeException if the type is invalid
18
+ */
19
+ public static function create(array $definition, \WPStaging\Vendor\Aws\Api\ShapeMap $shapeMap)
20
+ {
21
+ static $map = ['structure' => 'WPStaging\\Vendor\\Aws\\Api\\StructureShape', 'map' => 'WPStaging\\Vendor\\Aws\\Api\\MapShape', 'list' => 'WPStaging\\Vendor\\Aws\\Api\\ListShape', 'timestamp' => 'WPStaging\\Vendor\\Aws\\Api\\TimestampShape', 'integer' => 'WPStaging\\Vendor\\Aws\\Api\\Shape', 'double' => 'WPStaging\\Vendor\\Aws\\Api\\Shape', 'float' => 'WPStaging\\Vendor\\Aws\\Api\\Shape', 'long' => 'WPStaging\\Vendor\\Aws\\Api\\Shape', 'string' => 'WPStaging\\Vendor\\Aws\\Api\\Shape', 'byte' => 'WPStaging\\Vendor\\Aws\\Api\\Shape', 'character' => 'WPStaging\\Vendor\\Aws\\Api\\Shape', 'blob' => 'WPStaging\\Vendor\\Aws\\Api\\Shape', 'boolean' => 'WPStaging\\Vendor\\Aws\\Api\\Shape'];
22
+ if (isset($definition['shape'])) {
23
+ return $shapeMap->resolve($definition);
24
+ }
25
+ if (!isset($map[$definition['type']])) {
26
+ throw new \RuntimeException('Invalid type: ' . \print_r($definition, \true));
27
+ }
28
+ $type = $map[$definition['type']];
29
+ return new $type($definition, $shapeMap);
30
+ }
31
+ /**
32
+ * Get the type of the shape
33
+ *
34
+ * @return string
35
+ */
36
+ public function getType()
37
+ {
38
+ return $this->definition['type'];
39
+ }
40
+ /**
41
+ * Get the name of the shape
42
+ *
43
+ * @return string
44
+ */
45
+ public function getName()
46
+ {
47
+ return $this->definition['name'];
48
+ }
49
+ }
vendor_wpstg/aws/aws-sdk-php/src/Api/ShapeMap.php ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPStaging\Vendor\Aws\Api;
4
+
5
+ /**
6
+ * Builds shape based on shape references.
7
+ */
8
+ class ShapeMap
9
+ {
10
+ /** @var array */
11
+ private $definitions;
12
+ /** @var Shape[] */
13
+ private $simple;
14
+ /**
15
+ * @param array $shapeModels Associative array of shape definitions.
16
+ */
17
+ public function __construct(array $shapeModels)
18
+ {
19
+ $this->definitions = $shapeModels;
20
+ }
21
+ /**
22
+ * Get an array of shape names.
23
+ *
24
+ * @return array
25
+ */
26
+ public function getShapeNames()
27
+ {
28
+ return \array_keys($this->definitions);
29
+ }
30
+ /**
31
+ * Resolve a shape reference
32
+ *
33
+ * @param array $shapeRef Shape reference shape
34
+ *
35
+ * @return Shape
36
+ * @throws \InvalidArgumentException
37
+ */
38
+ public function resolve(array $shapeRef)
39
+ {
40
+ $shape = $shapeRef['shape'];
41
+ if (!isset($this->definitions[$shape])) {
42
+ throw new \InvalidArgumentException('Shape not found: ' . $shape);
43
+ }
44
+ $isSimple = \count($shapeRef) == 1;
45
+ if ($isSimple && isset($this->simple[$shape])) {
46
+ return $this->simple[$shape];
47
+ }
48
+ $definition = $shapeRef + $this->definitions[$shape];
49
+ $definition['name'] = $definition['shape'];
50
+ if (isset($definition['shape'])) {
51
+ unset($definition['shape']);
52
+ }
53
+ $result = \WPStaging\Vendor\Aws\Api\Shape::create($definition, $this);
54
+ if ($isSimple) {
55
+ $this->simple[$shape] = $result;
56
+ }
57
+ return $result;
58
+ }
59
+ }
vendor_wpstg/aws/aws-sdk-php/src/Api/StructureShape.php ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPStaging\Vendor\Aws\Api;
4
+
5
+ /**
6
+ * Represents a structure shape and resolve member shape references.
7
+ */
8
+ class StructureShape extends \WPStaging\Vendor\Aws\Api\Shape
9
+ {
10
+ /**
11
+ * @var Shape[]
12
+ */
13
+ private $members;
14
+ public function __construct(array $definition, \WPStaging\Vendor\Aws\Api\ShapeMap $shapeMap)
15
+ {
16
+ $definition['type'] = 'structure';
17
+ if (!isset($definition['members'])) {
18
+ $definition['members'] = [];
19
+ }
20
+ parent::__construct($definition, $shapeMap);
21
+ }
22
+ /**
23
+ * Gets a list of all members
24
+ *
25
+ * @return Shape[]
26
+ */
27
+ public function getMembers()
28
+ {
29
+ if (empty($this->members)) {
30
+ $this->generateMembersHash();
31
+ }
32
+ return $this->members;
33
+ }
34
+ /**
35
+ * Check if a specific member exists by name.
36
+ *
37
+ * @param string $name Name of the member to check
38
+ *
39
+ * @return bool
40
+ */
41
+ public function hasMember($name)
42
+ {
43
+ return isset($this->definition['members'][$name]);
44
+ }
45
+ /**
46
+ * Retrieve a member by name.
47
+ *
48
+ * @param string $name Name of the member to retrieve
49
+ *
50
+ * @return Shape
51
+ * @throws \InvalidArgumentException if the member is not found.
52
+ */
53
+ public function getMember($name)
54
+ {
55
+ $members = $this->getMembers();
56
+ if (!isset($members[$name])) {
57
+ throw new \InvalidArgumentException('Unknown member ' . $name);
58
+ }
59
+ return $members[$name];
60
+ }
61
+ private function generateMembersHash()
62
+ {
63
+ $this->members = [];
64
+ foreach ($this->definition['members'] as $name => $definition) {
65
+ $this->members[$name] = $this->shapeFor($definition);
66
+ }
67
+ }
68
+ }
vendor_wpstg/aws/aws-sdk-php/src/Api/TimestampShape.php ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPStaging\Vendor\Aws\Api;
4
+
5
+ /**
6
+ * Represents a timestamp shape.
7
+ */
8
+ class TimestampShape extends \WPStaging\Vendor\Aws\Api\Shape
9
+ {
10
+ public function __construct(array $definition, \WPStaging\Vendor\Aws\Api\ShapeMap $shapeMap)
11
+ {
12
+ $definition['type'] = 'timestamp';
13
+ parent::__construct($definition, $shapeMap);
14
+ }
15
+ /**
16
+ * Formats a timestamp value for a service.
17
+ *
18
+ * @param mixed $value Value to format
19
+ * @param string $format Format used to serialize the value
20
+ *
21
+ * @return int|string
22
+ * @throws \UnexpectedValueException if the format is unknown.
23
+ * @throws \InvalidArgumentException if the value is an unsupported type.
24
+ */
25
+ public static function format($value, $format)
26
+ {
27
+ if ($value instanceof \DateTime) {
28
+ $value = $value->getTimestamp();
29
+ } elseif (\is_string($value)) {
30
+ $value = \strtotime($value);
31
+ } elseif (!\is_int($value)) {
32
+ throw new \InvalidArgumentException('Unable to handle the provided' . ' timestamp type: ' . \gettype($value));
33
+ }
34
+ switch ($format) {
35
+ case 'iso8601':
36
+ return \gmdate('Y-m-d\\TH:i:s\\Z', $value);
37
+ case 'rfc822':
38
+ return \gmdate('D, d M Y H:i:s \\G\\M\\T', $value);
39
+ case 'unixTimestamp':
40
+ return $value;
41
+ default:
42
+ throw new \UnexpectedValueException('Unknown timestamp format: ' . $format);
43
+ }
44
+ }
45
+ }
vendor_wpstg/aws/aws-sdk-php/src/Api/Validator.php ADDED
@@ -0,0 +1,245 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPStaging\Vendor\Aws\Api;
4
+
5
+ use WPStaging\Vendor\Aws;
6
+ /**
7
+ * Validates a schema against a hash of input.
8
+ */
9
+ class Validator
10
+ {
11
+ private $path = [];
12
+ private $errors = [];
13
+ private $constraints = [];
14
+ private static $defaultConstraints = ['required' => \true, 'min' => \true, 'max' => \false, 'pattern' => \false];
15
+ /**
16
+ * @param array $constraints Associative array of constraints to enforce.
17
+ * Accepts the following keys: "required", "min",
18
+ * "max", and "pattern". If a key is not
19
+ * provided, the constraint will assume false.
20
+ */
21
+ public function __construct(array $constraints = null)
22
+ {
23
+ static $assumedFalseValues = ['required' => \false, 'min' => \false, 'max' => \false, 'pattern' => \false];
24
+ $this->constraints = empty($constraints) ? self::$defaultConstraints : $constraints + $assumedFalseValues;
25
+ }
26
+ /**
27
+ * Validates the given input against the schema.
28
+ *
29
+ * @param string $name Operation name
30
+ * @param Shape $shape Shape to validate
31
+ * @param array $input Input to validate
32
+ *
33
+ * @throws \InvalidArgumentException if the input is invalid.
34
+ */
35
+ public function validate($name, \WPStaging\Vendor\Aws\Api\Shape $shape, array $input)
36
+ {
37
+ $this->dispatch($shape, $input);
38
+ if ($this->errors) {
39
+ $message = \sprintf("Found %d error%s while validating the input provided for the " . "%s operation:\n%s", \count($this->errors), \count($this->errors) > 1 ? 's' : '', $name, \implode("\n", $this->errors));
40
+ $this->errors = [];
41
+ throw new \InvalidArgumentException($message);
42
+ }
43
+ }
44
+ private function dispatch(\WPStaging\Vendor\Aws\Api\Shape $shape, $value)
45
+ {
46
+ static $methods = ['structure' => 'check_structure', 'list' => 'check_list', 'map' => 'check_map', 'blob' => 'check_blob', 'boolean' => 'check_boolean', 'integer' => 'check_numeric', 'float' => 'check_numeric', 'long' => 'check_numeric', 'string' => 'check_string', 'byte' => 'check_string', 'char' => 'check_string'];
47
+ $type = $shape->getType();
48
+ if (isset($methods[$type])) {
49
+ $this->{$methods[$type]}($shape, $value);
50
+ }
51
+ }
52
+ private function check_structure(\WPStaging\Vendor\Aws\Api\StructureShape $shape, $value)
53
+ {
54
+ $isDocument = isset($shape['document']) && $shape['document'];
55
+ $isUnion = isset($shape['union']) && $shape['union'];
56
+ if ($isDocument) {
57
+ if (!$this->checkDocumentType($value)) {
58
+ $this->addError("is not a valid document type");
59
+ return;
60
+ }
61
+ } elseif ($isUnion) {
62
+ if (!$this->checkUnion($value)) {
63
+ $this->addError("is a union type and must have exactly one non null value");
64
+ return;
65
+ }
66
+ } elseif (!$this->checkAssociativeArray($value)) {
67
+ return;
68
+ }
69
+ if ($this->constraints['required'] && $shape['required']) {
70
+ foreach ($shape['required'] as $req) {
71
+ if (!isset($value[$req])) {
72
+ $this->path[] = $req;
73
+ $this->addError('is missing and is a required parameter');
74
+ \array_pop($this->path);
75
+ }
76
+ }
77
+ }
78
+ if (!$isDocument) {
79
+ foreach ($value as $name => $v) {
80
+ if ($shape->hasMember($name)) {
81
+ $this->path[] = $name;
82
+ $this->dispatch($shape->getMember($name), isset($value[$name]) ? $value[$name] : null);
83
+ \array_pop($this->path);
84
+ }
85
+ }
86
+ }
87
+ }
88
+ private function check_list(\WPStaging\Vendor\Aws\Api\ListShape $shape, $value)
89
+ {
90
+ if (!\is_array($value)) {
91
+ $this->addError('must be an array. Found ' . \WPStaging\Vendor\Aws\describe_type($value));
92
+ return;
93
+ }
94
+ $this->validateRange($shape, \count($value), "list element count");
95
+ $items = $shape->getMember();
96
+ foreach ($value as $index => $v) {
97
+ $this->path[] = $index;
98
+ $this->dispatch($items, $v);
99
+ \array_pop($this->path);
100
+ }
101
+ }
102
+ private function check_map(\WPStaging\Vendor\Aws\Api\MapShape $shape, $value)
103
+ {
104
+ if (!$this->checkAssociativeArray($value)) {
105
+ return;
106
+ }
107
+ $values = $shape->getValue();
108
+ foreach ($value as $key => $v) {
109
+ $this->path[] = $key;
110
+ $this->dispatch($values, $v);
111
+ \array_pop($this->path);
112
+ }
113
+ }
114
+ private function check_blob(\WPStaging\Vendor\Aws\Api\Shape $shape, $value)
115
+ {
116
+ static $valid = ['string' => \true, 'integer' => \true, 'double' => \true, 'resource' => \true];
117
+ $type = \gettype($value);
118
+ if (!isset($valid[$type])) {
119
+ if ($type != 'object' || !\method_exists($value, '__toString')) {
120
+ $this->addError('must be an fopen resource, a ' . 'GuzzleHttp\\Stream\\StreamInterface object, or something ' . 'that can be cast to a string. Found ' . \WPStaging\Vendor\Aws\describe_type($value));
121
+ }
122
+ }
123
+ }
124
+ private function check_numeric(\WPStaging\Vendor\Aws\Api\Shape $shape, $value)
125
+ {
126
+ if (!\is_numeric($value)) {
127
+ $this->addError('must be numeric. Found ' . \WPStaging\Vendor\Aws\describe_type($value));
128
+ return;
129
+ }
130
+ $this->validateRange($shape, $value, "numeric value");
131
+ }
132
+ private function check_boolean(\WPStaging\Vendor\Aws\Api\Shape $shape, $value)
133
+ {
134
+ if (!\is_bool($value)) {
135
+ $this->addError('must be a boolean. Found ' . \WPStaging\Vendor\Aws\describe_type($value));
136
+ }
137
+ }
138
+ private function check_string(\WPStaging\Vendor\Aws\Api\Shape $shape, $value)
139
+ {
140
+ if ($shape['jsonvalue']) {
141
+ if (!self::canJsonEncode($value)) {
142
+ $this->addError('must be a value encodable with \'json_encode\'.' . ' Found ' . \WPStaging\Vendor\Aws\describe_type($value));
143
+ }
144
+ return;
145
+ }
146
+ if (!$this->checkCanString($value)) {
147
+ $this->addError('must be a string or an object that implements ' . '__toString(). Found ' . \WPStaging\Vendor\Aws\describe_type($value));
148
+ return;
149
+ }
150
+ $this->validateRange($shape, \strlen($value), "string length");
151
+ if ($this->constraints['pattern']) {
152
+ $pattern = $shape['pattern'];
153
+ if ($pattern && !\preg_match("/{$pattern}/", $value)) {
154
+ $this->addError("Pattern /{$pattern}/ failed to match '{$value}'");
155
+ }
156
+ }
157
+ }
158
+ private function validateRange(\WPStaging\Vendor\Aws\Api\Shape $shape, $length, $descriptor)
159
+ {
160
+ if ($this->constraints['min']) {
161
+ $min = $shape['min'];
162
+ if ($min && $length < $min) {
163
+ $this->addError("expected {$descriptor} to be >= {$min}, but " . "found {$descriptor} of {$length}");
164
+ }
165
+ }
166
+ if ($this->constraints['max']) {
167
+ $max = $shape['max'];
168
+ if ($max && $length > $max) {
169
+ $this->addError("expected {$descriptor} to be <= {$max}, but " . "found {$descriptor} of {$length}");
170
+ }
171
+ }
172
+ }
173
+ private function checkArray($arr)
174
+ {
175
+ return $this->isIndexed($arr) || $this->isAssociative($arr);
176
+ }
177
+ private function isAssociative($arr)
178
+ {
179
+ return \count(\array_filter(\array_keys($arr), "is_string")) == \count($arr);
180
+ }
181
+ private function isIndexed(array $arr)
182
+ {
183
+ return $arr == \array_values($arr);
184
+ }
185
+ private function checkCanString($value)
186
+ {
187
+ static $valid = ['string' => \true, 'integer' => \true, 'double' => \true, 'NULL' => \true];
188
+ $type = \gettype($value);
189
+ return isset($valid[$type]) || $type == 'object' && \method_exists($value, '__toString');
190
+ }
191
+ private function checkAssociativeArray($value)
192
+ {
193
+ $isAssociative = \false;
194
+ if (\is_array($value)) {
195
+ $expectedIndex = 0;
196
+ $key = \key($value);
197
+ do {
198
+ $isAssociative = $key !== $expectedIndex++;
199
+ \next($value);
200
+ $key = \key($value);
201
+ } while (!$isAssociative && null !== $key);
202
+ }
203
+ if (!$isAssociative) {
204
+ $this->addError('must be an associative array. Found ' . \WPStaging\Vendor\Aws\describe_type($value));
205
+ return \false;
206
+ }
207
+ return \true;
208
+ }
209
+ private function checkDocumentType($value)
210
+ {
211
+ if (\is_array($value)) {
212
+ $typeOfFirstKey = \gettype(\key($value));
213
+ foreach ($value as $key => $val) {
214
+ if (!$this->checkDocumentType($val) || \gettype($key) != $typeOfFirstKey) {
215
+ return \false;
216
+ }
217
+ }
218
+ return $this->checkArray($value);
219
+ }
220
+ return \is_null($value) || \is_numeric($value) || \is_string($value) || \is_bool($value);
221
+ }
222
+ private function checkUnion($value)
223
+ {
224
+ if (\is_array($value)) {
225
+ $nonNullCount = 0;
226
+ foreach ($value as $key => $val) {
227
+ if (!\is_null($val) && !(\strpos($key, "@") === 0)) {
228
+ $nonNullCount++;
229
+ }
230
+ }
231
+ return $nonNullCount == 1;
232
+ }
233
+ return !\is_null($value);
234
+ }
235
+ private function addError($message)
236
+ {
237
+ $this->errors[] = \implode('', \array_map(function ($s) {
238
+ return "[{$s}]";
239
+ }, $this->path)) . ' ' . $message;
240
+ }
241
+ private function canJsonEncode($data)
242
+ {
243
+ return !\is_resource($data);
244
+ }
245
+ }
vendor_wpstg/aws/aws-sdk-php/src/Arn/AccessPointArn.php ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPStaging\Vendor\Aws\Arn;
4
+
5
+ use WPStaging\Vendor\Aws\Arn\Exception\InvalidArnException;
6
+ /**
7
+ * @internal
8
+ */
9
+ class AccessPointArn extends \WPStaging\Vendor\Aws\Arn\Arn implements \WPStaging\Vendor\Aws\Arn\AccessPointArnInterface
10
+ {
11
+ use ResourceTypeAndIdTrait;
12
+ /**
13
+ * AccessPointArn constructor
14
+ *
15
+ * @param $data
16
+ */
17
+ public function __construct($data)
18
+ {
19
+ parent::__construct($data);
20
+ static::validate($this->data);
21
+ }
22
+ public static function parse($string)
23
+ {
24
+ $data = parent::parse($string);
25
+ $data = self::parseResourceTypeAndId($data);
26
+ $data['accesspoint_name'] = $data['resource_id'];
27
+ return $data;
28
+ }
29
+ public function getAccesspointName()
30
+ {
31
+ return $this->data['accesspoint_name'];
32
+ }
33
+ /**
34
+ * Validation specific to AccessPointArn
35
+ *
36
+ * @param array $data
37
+ */
38
+ protected static function validate(array $data)
39
+ {
40
+ self::validateRegion($data, 'access point ARN');
41
+ self::validateAccountId($data, 'access point ARN');
42
+ if ($data['resource_type'] !== 'accesspoint') {
43
+ throw new \WPStaging\Vendor\Aws\Arn\Exception\InvalidArnException("The 6th component of an access point ARN" . " represents the resource type and must be 'accesspoint'.");
44
+ }
45
+ if (empty($data['resource_id'])) {
46
+ throw new \WPStaging\Vendor\Aws\Arn\Exception\InvalidArnException("The 7th component of an access point ARN" . " represents the resource ID and must not be empty.");
47
+ }
48
+ if (\strpos($data['resource_id'], ':') !== \false) {
49
+ throw new \WPStaging\Vendor\Aws\Arn\Exception\InvalidArnException("The resource ID component of an access" . " point ARN must not contain additional components" . " (delimited by ':').");
50
+ }
51
+ if (!self::isValidHostLabel($data['resource_id'])) {
52
+ throw new \WPStaging\Vendor\Aws\Arn\Exception\InvalidArnException("The resource ID in an access point ARN" . " must be a valid host label value.");
53
+ }
54
+ }
55
+ }
vendor_wpstg/aws/aws-sdk-php/src/Arn/AccessPointArnInterface.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPStaging\Vendor\Aws\Arn;
4
+
5
+ /**
6
+ * @internal
7
+ */
8
+ interface AccessPointArnInterface extends \WPStaging\Vendor\Aws\Arn\ArnInterface
9
+ {
10
+ public function getAccesspointName();
11
+ }
vendor_wpstg/aws/aws-sdk-php/src/Arn/Arn.php ADDED
@@ -0,0 +1,140 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPStaging\Vendor\Aws\Arn;
4
+
5
+ use WPStaging\Vendor\Aws\Arn\Exception\InvalidArnException;
6
+ /**
7
+ * Amazon Resource Names (ARNs) uniquely identify AWS resources. The Arn class
8
+ * parses and stores a generic ARN object representation that can apply to any
9
+ * service resource.
10
+ *
11
+ * @internal
12
+ */
13
+ class Arn implements \WPStaging\Vendor\Aws\Arn\ArnInterface
14
+ {
15
+ protected $data;
16
+ protected $string;
17
+ public static function parse($string)
18
+ {
19
+ $data = ['arn' => null, 'partition' => null, 'service' => null, 'region' => null, 'account_id' => null, 'resource' => null];
20
+ $length = \strlen($string);
21
+ $lastDelim = 0;
22
+ $numComponents = 0;
23
+ for ($i = 0; $i < $length; $i++) {
24
+ if ($numComponents < 5 && $string[$i] === ':') {
25
+ // Split components between delimiters
26
+ $data[\key($data)] = \substr($string, $lastDelim, $i - $lastDelim);
27
+ // Do not include delimiter character itself
28
+ $lastDelim = $i + 1;
29
+ \next($data);
30
+ $numComponents++;
31
+ }
32
+ if ($i === $length - 1) {
33
+ // Put the remainder in the last component.
34
+ if (\in_array($numComponents, [5])) {
35
+ $data['resource'] = \substr($string, $lastDelim);
36
+ } else {
37
+ // If there are < 5 components, put remainder in current
38
+ // component.
39
+ $data[\key($data)] = \substr($string, $lastDelim);
40
+ }
41
+ }
42
+ }
43
+ return $data;
44
+ }
45
+ public function __construct($data)
46
+ {
47
+ if (\is_array($data)) {
48
+ $this->data = $data;
49
+ } elseif (\is_string($data)) {
50
+ $this->data = static::parse($data);
51
+ } else {
52
+ throw new \WPStaging\Vendor\Aws\Arn\Exception\InvalidArnException('Constructor accepts a string or an' . ' array as an argument.');
53
+ }
54
+ static::validate($this->data);
55
+ }
56
+ public function __toString()
57
+ {
58
+ if (!isset($this->string)) {
59
+ $components = [$this->getPrefix(), $this->getPartition(), $this->getService(), $this->getRegion(), $this->getAccountId(), $this->getResource()];
60
+ $this->string = \implode(':', $components);
61
+ }
62
+ return $this->string;
63
+ }
64
+ public function getPrefix()
65
+ {
66
+ return $this->data['arn'];
67
+ }
68
+ public function getPartition()
69
+ {
70
+ return $this->data['partition'];
71
+ }
72
+ public function getService()
73
+ {
74
+ return $this->data['service'];
75
+ }
76
+ public function getRegion()
77
+ {
78
+ return $this->data['region'];
79
+ }
80
+ public function getAccountId()
81
+ {
82
+ return $this->data['account_id'];
83
+ }
84
+ public function getResource()
85
+ {
86
+ return $this->data['resource'];
87
+ }
88
+ public function toArray()
89
+ {
90
+ return $this->data;
91
+ }
92
+ /**
93
+ * Minimally restrictive generic ARN validation
94
+ *
95
+ * @param array $data
96
+ */
97
+ protected static function validate(array $data)
98
+ {
99
+ if ($data['arn'] !== 'arn') {
100
+ throw new \WPStaging\Vendor\Aws\Arn\Exception\InvalidArnException("The 1st component of an ARN must be" . " 'arn'.");
101
+ }
102
+ if (empty($data['partition'])) {
103
+ throw new \WPStaging\Vendor\Aws\Arn\Exception\InvalidArnException("The 2nd component of an ARN" . " represents the partition and must not be empty.");
104
+ }
105
+ if (empty($data['service'])) {
106
+ throw new \WPStaging\Vendor\Aws\Arn\Exception\InvalidArnException("The 3rd component of an ARN" . " represents the service and must not be empty.");
107
+ }
108
+ if (empty($data['resource'])) {
109
+ throw new \WPStaging\Vendor\Aws\Arn\Exception\InvalidArnException("The 6th component of an ARN" . " represents the resource information and must not be empty." . " Individual service ARNs may include additional delimiters" . " to further qualify resources.");
110
+ }
111
+ }
112
+ protected static function validateAccountId($data, $arnName)
113
+ {
114
+ if (!self::isValidHostLabel($data['account_id'])) {
115
+ throw new \WPStaging\Vendor\Aws\Arn\Exception\InvalidArnException("The 5th component of a {$arnName}" . " is required, represents the account ID, and" . " must be a valid host label.");
116
+ }
117
+ }
118
+ protected static function validateRegion($data, $arnName)
119
+ {
120
+ if (empty($data['region'])) {
121
+ throw new \WPStaging\Vendor\Aws\Arn\Exception\InvalidArnException("The 4th component of a {$arnName}" . " represents the region and must not be empty.");
122
+ }
123
+ }
124
+ /**
125
+ * Validates whether a string component is a valid host label
126
+ *
127
+ * @param $string
128
+ * @return bool
129
+ */
130
+ protected static function isValidHostLabel($string)
131
+ {
132
+ if (empty($string) || \strlen($string) > 63) {
133
+ return \false;
134
+ }
135
+ if ($value = \preg_match("/^[a-zA-Z0-9-]+\$/", $string)) {
136
+ return \true;
137
+ }
138
+ return \false;
139
+ }
140
+ }
vendor_wpstg/aws/aws-sdk-php/src/Arn/ArnInterface.php ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPStaging\Vendor\Aws\Arn;
4
+
5
+ /**
6
+ * Amazon Resource Names (ARNs) uniquely identify AWS resources. Classes
7
+ * implementing ArnInterface parse and store an ARN object representation.
8
+ *
9
+ * Valid ARN formats include:
10
+ *
11
+ * arn:partition:service:region:account-id:resource-id
12
+ * arn:partition:service:region:account-id:resource-type/resource-id
13
+ * arn:partition:service:region:account-id:resource-type:resource-id
14
+ *
15
+ * Some components may be omitted, depending on the service and resource type.
16
+ *
17
+ * @internal
18
+ */
19
+ interface ArnInterface
20
+ {
21
+ public static function parse($string);
22
+ public function __toString();
23
+ public function getPrefix();
24
+ public function getPartition();
25
+ public function getService();
26
+ public function getRegion();
27
+ public function getAccountId();
28
+ public function getResource();
29
+ public function toArray();
30
+ }
vendor_wpstg/aws/aws-sdk-php/src/Arn/ArnParser.php ADDED
@@ -0,0 +1,66 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPStaging\Vendor\Aws\Arn;
4
+
5
+ use WPStaging\Vendor\Aws\Arn\S3\AccessPointArn as S3AccessPointArn;
6
+ use WPStaging\Vendor\Aws\Arn\ObjectLambdaAccessPointArn;
7
+ use WPStaging\Vendor\Aws\Arn\S3\MultiRegionAccessPointArn;
8
+ use WPStaging\Vendor\Aws\Arn\S3\OutpostsBucketArn;
9
+ use WPStaging\Vendor\Aws\Arn\S3\RegionalBucketArn;
10
+ use WPStaging\Vendor\Aws\Arn\S3\OutpostsAccessPointArn;
11
+ /**
12
+ * This class provides functionality to parse ARN strings and return a
13
+ * corresponding ARN object. ARN-parsing logic may be subject to change in the
14
+ * future, so this should not be relied upon for external customer usage.
15
+ *
16
+ * @internal
17
+ */
18
+ class ArnParser
19
+ {
20
+ /**
21
+ * @param $string
22
+ * @return bool
23
+ */
24
+ public static function isArn($string)
25
+ {
26
+ return \strpos($string, 'arn:') === 0;
27
+ }
28
+ /**
29
+ * Parses a string and returns an instance of ArnInterface. Returns a
30
+ * specific type of Arn object if it has a specific class representation
31
+ * or a generic Arn object if not.
32
+ *
33
+ * @param $string
34
+ * @return ArnInterface
35
+ */
36
+ public static function parse($string)
37
+ {
38
+ $data = \WPStaging\Vendor\Aws\Arn\Arn::parse($string);
39
+ if ($data['service'] === 's3-object-lambda') {
40
+ return new \WPStaging\Vendor\Aws\Arn\ObjectLambdaAccessPointArn($string);
41
+ }
42
+ $resource = self::explodeResourceComponent($data['resource']);
43
+ if ($resource[0] === 'outpost') {
44
+ if (isset($resource[2]) && $resource[2] === 'bucket') {
45
+ return new \WPStaging\Vendor\Aws\Arn\S3\OutpostsBucketArn($string);
46
+ }
47
+ if (isset($resource[2]) && $resource[2] === 'accesspoint') {
48
+ return new \WPStaging\Vendor\Aws\Arn\S3\OutpostsAccessPointArn($string);
49
+ }
50
+ }
51
+ if (empty($data['region'])) {
52
+ return new \WPStaging\Vendor\Aws\Arn\S3\MultiRegionAccessPointArn($string);
53
+ }
54
+ if ($resource[0] === 'accesspoint') {
55
+ if ($data['service'] === 's3') {
56
+ return new \WPStaging\Vendor\Aws\Arn\S3\AccessPointArn($string);
57
+ }
58
+ return new \WPStaging\Vendor\Aws\Arn\AccessPointArn($string);
59
+ }
60
+ return new \WPStaging\Vendor\Aws\Arn\Arn($data);
61
+ }
62
+ private static function explodeResourceComponent($resource)
63
+ {
64
+ return \preg_split("/[\\/:]/", $resource);
65
+ }
66
+ }
vendor_wpstg/aws/aws-sdk-php/src/Arn/Exception/InvalidArnException.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPStaging\Vendor\Aws\Arn\Exception;
4
+
5
+ /**
6
+ * Represents a failed attempt to construct an Arn
7
+ */
8
+ class InvalidArnException extends \RuntimeException
9
+ {
10
+ }
vendor_wpstg/aws/aws-sdk-php/src/Arn/ObjectLambdaAccessPointArn.php ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPStaging\Vendor\Aws\Arn;
4
+
5
+ /**
6
+ * This class represents an S3 Object bucket ARN, which is in the
7
+ * following format:
8
+ *
9
+ * @internal
10
+ */
11
+ class ObjectLambdaAccessPointArn extends \WPStaging\Vendor\Aws\Arn\AccessPointArn
12
+ {
13
+ /**
14
+ * Parses a string into an associative array of components that represent
15
+ * a ObjectLambdaAccessPointArn
16
+ *
17
+ * @param $string
18
+ * @return array
19
+ */
20
+ public static function parse($string)
21
+ {
22
+ $data = parent::parse($string);
23
+ return parent::parseResourceTypeAndId($data);
24
+ }
25
+ /**
26
+ *
27
+ * @param array $data
28
+ */
29
+ protected static function validate(array $data)
30
+ {
31
+ parent::validate($data);
32
+ self::validateRegion($data, 'S3 Object Lambda ARN');
33
+ self::validateAccountId($data, 'S3 Object Lambda ARN');
34
+ }
35
+ }
vendor_wpstg/aws/aws-sdk-php/src/Arn/ResourceTypeAndIdTrait.php ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPStaging\Vendor\Aws\Arn;
4
+
5
+ /**
6
+ * @internal
7
+ */
8
+ trait ResourceTypeAndIdTrait
9
+ {
10
+ public function getResourceType()
11
+ {
12
+ return $this->data['resource_type'];
13
+ }
14
+ public function getResourceId()
15
+ {
16
+ return $this->data['resource_id'];
17
+ }
18
+ protected static function parseResourceTypeAndId(array $data)
19
+ {
20
+ $resourceData = \preg_split("/[\\/:]/", $data['resource'], 2);
21
+ $data['resource_type'] = isset($resourceData[0]) ? $resourceData[0] : null;
22
+ $data['resource_id'] = isset($resourceData[1]) ? $resourceData[1] : null;
23
+ return $data;
24
+ }
25
+ }
vendor_wpstg/aws/aws-sdk-php/src/Arn/S3/AccessPointArn.php ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPStaging\Vendor\Aws\Arn\S3;
4
+
5
+ use WPStaging\Vendor\Aws\Arn\AccessPointArn as BaseAccessPointArn;
6
+ use WPStaging\Vendor\Aws\Arn\AccessPointArnInterface;
7
+ use WPStaging\Vendor\Aws\Arn\ArnInterface;
8
+ use WPStaging\Vendor\Aws\Arn\Exception\InvalidArnException;
9
+ /**
10
+ * @internal
11
+ */
12
+ class AccessPointArn extends \WPStaging\Vendor\Aws\Arn\AccessPointArn implements \WPStaging\Vendor\Aws\Arn\AccessPointArnInterface
13
+ {
14
+ /**
15
+ * Validation specific to AccessPointArn
16
+ *
17
+ * @param array $data
18
+ */
19
+ public static function validate(array $data)
20
+ {
21
+ parent::validate($data);
22
+ if ($data['service'] !== 's3') {
23
+ throw new \WPStaging\Vendor\Aws\Arn\Exception\InvalidArnException("The 3rd component of an S3 access" . " point ARN represents the region and must be 's3'.");
24
+ }
25
+ }
26
+ }
vendor_wpstg/aws/aws-sdk-php/src/Arn/S3/BucketArnInterface.php ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPStaging\Vendor\Aws\Arn\S3;
4
+
5
+ use WPStaging\Vendor\Aws\Arn\ArnInterface;
6
+ /**
7
+ * @internal
8
+ */
9
+ interface BucketArnInterface extends \WPStaging\Vendor\Aws\Arn\ArnInterface
10
+ {
11
+ public function getBucketName();
12
+ }
vendor_wpstg/aws/aws-sdk-php/src/Arn/S3/MultiRegionAccessPointArn.php ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPStaging\Vendor\Aws\Arn\S3;
4
+
5
+ use WPStaging\Vendor\Aws\Arn\Arn;
6
+ use WPStaging\Vendor\Aws\Arn\ResourceTypeAndIdTrait;
7
+ /**
8
+ * This class represents an S3 multi-region bucket ARN, which is in the
9
+ * following format:
10
+ *
11
+ * @internal
12
+ */
13
+ class MultiRegionAccessPointArn extends \WPStaging\Vendor\Aws\Arn\S3\AccessPointArn
14
+ {
15
+ use ResourceTypeAndIdTrait;
16
+ /**
17
+ * Parses a string into an associative array of components that represent
18
+ * a MultiRegionArn
19
+ *
20
+ * @param $string
21
+ * @return array
22
+ */
23
+ public static function parse($string)
24
+ {
25
+ return parent::parse($string);
26
+ }
27
+ /**
28
+ *
29
+ * @param array $data
30
+ */
31
+ public static function validate(array $data)
32
+ {
33
+ \WPStaging\Vendor\Aws\Arn\Arn::validate($data);
34
+ }
35
+ }
vendor_wpstg/aws/aws-sdk-php/src/Arn/S3/OutpostsAccessPointArn.php ADDED
@@ -0,0 +1,77 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPStaging\Vendor\Aws\Arn\S3;
4
+
5
+ use WPStaging\Vendor\Aws\Arn\AccessPointArn as BaseAccessPointArn;
6
+ use WPStaging\Vendor\Aws\Arn\AccessPointArnInterface;
7
+ use WPStaging\Vendor\Aws\Arn\Arn;
8
+ use WPStaging\Vendor\Aws\Arn\Exception\InvalidArnException;
9
+ /**
10
+ * This class represents an S3 Outposts access point ARN, which is in the
11
+ * following format:
12
+ *
13
+ * arn:{partition}:s3-outposts:{region}:{accountId}:outpost:{outpostId}:accesspoint:{accesspointName}
14
+ *
15
+ * ':' and '/' can be used interchangeably as delimiters for components after
16
+ * the account ID.
17
+ *
18
+ * @internal
19
+ */
20
+ class OutpostsAccessPointArn extends \WPStaging\Vendor\Aws\Arn\AccessPointArn implements \WPStaging\Vendor\Aws\Arn\AccessPointArnInterface, \WPStaging\Vendor\Aws\Arn\S3\OutpostsArnInterface
21
+ {
22
+ public static function parse($string)
23
+ {
24
+ $data = parent::parse($string);
25
+ return self::parseOutpostData($data);
26
+ }
27
+ public function getOutpostId()
28
+ {
29
+ return $this->data['outpost_id'];
30
+ }
31
+ public function getAccesspointName()
32
+ {
33
+ return $this->data['accesspoint_name'];
34
+ }
35
+ private static function parseOutpostData(array $data)
36
+ {
37
+ $resourceData = \preg_split("/[\\/:]/", $data['resource_id']);
38
+ $data['outpost_id'] = isset($resourceData[0]) ? $resourceData[0] : null;
39
+ $data['accesspoint_type'] = isset($resourceData[1]) ? $resourceData[1] : null;
40
+ $data['accesspoint_name'] = isset($resourceData[2]) ? $resourceData[2] : null;
41
+ if (isset($resourceData[3])) {
42
+ $data['resource_extra'] = \implode(':', \array_slice($resourceData, 3));
43
+ }
44
+ return $data;
45
+ }
46
+ /**
47
+ * Validation specific to OutpostsAccessPointArn. Note this uses the base Arn
48
+ * class validation instead of the direct parent due to it having slightly
49
+ * differing requirements from its parent.
50
+ *
51
+ * @param array $data
52
+ */
53
+ public static function validate(array $data)
54
+ {
55
+ \WPStaging\Vendor\Aws\Arn\Arn::validate($data);
56
+ if ($data['service'] !== 's3-outposts') {
57
+ throw new \WPStaging\Vendor\Aws\Arn\Exception\InvalidArnException("The 3rd component of an S3 Outposts" . " access point ARN represents the service and must be" . " 's3-outposts'.");
58
+ }
59
+ self::validateRegion($data, 'S3 Outposts access point ARN');
60
+ self::validateAccountId($data, 'S3 Outposts access point ARN');
61
+ if ($data['resource_type'] !== 'outpost') {
62
+ throw new \WPStaging\Vendor\Aws\Arn\Exception\InvalidArnException("The 6th component of an S3 Outposts" . " access point ARN represents the resource type and must be" . " 'outpost'.");
63
+ }
64
+ if (!self::isValidHostLabel($data['outpost_id'])) {
65
+ throw new \WPStaging\Vendor\Aws\Arn\Exception\InvalidArnException("The 7th component of an S3 Outposts" . " access point ARN is required, represents the outpost ID, and" . " must be a valid host label.");
66
+ }
67
+ if ($data['accesspoint_type'] !== 'accesspoint') {
68
+ throw new \WPStaging\Vendor\Aws\Arn\Exception\InvalidArnException("The 8th component of an S3 Outposts" . " access point ARN must be 'accesspoint'");
69
+ }
70
+ if (!self::isValidHostLabel($data['accesspoint_name'])) {
71
+ throw new \WPStaging\Vendor\Aws\Arn\Exception\InvalidArnException("The 9th component of an S3 Outposts" . " access point ARN is required, represents the accesspoint name," . " and must be a valid host label.");
72
+ }
73
+ if (!empty($data['resource_extra'])) {
74
+ throw new \WPStaging\Vendor\Aws\Arn\Exception\InvalidArnException("An S3 Outposts access point ARN" . " should only have 9 components, delimited by the characters" . " ':' and '/'. '{$data['resource_extra']}' was found after the" . " 9th component.");
75
+ }
76
+ }
77
+ }
vendor_wpstg/aws/aws-sdk-php/src/Arn/S3/OutpostsArnInterface.php ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPStaging\Vendor\Aws\Arn\S3;
4
+
5
+ use WPStaging\Vendor\Aws\Arn\ArnInterface;
6
+ /**
7
+ * @internal
8
+ */
9
+ interface OutpostsArnInterface extends \WPStaging\Vendor\Aws\Arn\ArnInterface
10
+ {
11
+ public function getOutpostId();
12
+ }
vendor_wpstg/aws/aws-sdk-php/src/Arn/S3/OutpostsBucketArn.php ADDED
@@ -0,0 +1,71 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPStaging\Vendor\Aws\Arn\S3;
4
+
5
+ use WPStaging\Vendor\Aws\Arn\Arn;
6
+ use WPStaging\Vendor\Aws\Arn\Exception\InvalidArnException;
7
+ use WPStaging\Vendor\Aws\Arn\ResourceTypeAndIdTrait;
8
+ /**
9
+ * This class represents an S3 Outposts bucket ARN, which is in the
10
+ * following format:
11
+ *
12
+ * @internal
13
+ */
14
+ class OutpostsBucketArn extends \WPStaging\Vendor\Aws\Arn\Arn implements \WPStaging\Vendor\Aws\Arn\S3\BucketArnInterface, \WPStaging\Vendor\Aws\Arn\S3\OutpostsArnInterface
15
+ {
16
+ use ResourceTypeAndIdTrait;
17
+ /**
18
+ * Parses a string into an associative array of components that represent
19
+ * a OutpostsBucketArn
20
+ *
21
+ * @param $string
22
+ * @return array
23
+ */
24
+ public static function parse($string)
25
+ {
26
+ $data = parent::parse($string);
27
+ $data = self::parseResourceTypeAndId($data);
28
+ return self::parseOutpostData($data);
29
+ }
30
+ public function getBucketName()
31
+ {
32
+ return $this->data['bucket_name'];
33
+ }
34
+ public function getOutpostId()
35
+ {
36
+ return $this->data['outpost_id'];
37
+ }
38
+ private static function parseOutpostData(array $data)
39
+ {
40
+ $resourceData = \preg_split("/[\\/:]/", $data['resource_id'], 3);
41
+ $data['outpost_id'] = isset($resourceData[0]) ? $resourceData[0] : null;
42
+ $data['bucket_label'] = isset($resourceData[1]) ? $resourceData[1] : null;
43
+ $data['bucket_name'] = isset($resourceData[2]) ? $resourceData[2] : null;
44
+ return $data;
45
+ }
46
+ /**
47
+ *
48
+ * @param array $data
49
+ */
50
+ public static function validate(array $data)
51
+ {
52
+ \WPStaging\Vendor\Aws\Arn\Arn::validate($data);
53
+ if ($data['service'] !== 's3-outposts') {
54
+ throw new \WPStaging\Vendor\Aws\Arn\Exception\InvalidArnException("The 3rd component of an S3 Outposts" . " bucket ARN represents the service and must be 's3-outposts'.");
55
+ }
56
+ self::validateRegion($data, 'S3 Outposts bucket ARN');
57
+ self::validateAccountId($data, 'S3 Outposts bucket ARN');
58
+ if ($data['resource_type'] !== 'outpost') {
59
+ throw new \WPStaging\Vendor\Aws\Arn\Exception\InvalidArnException("The 6th component of an S3 Outposts" . " bucket ARN represents the resource type and must be" . " 'outpost'.");
60
+ }
61
+ if (!self::isValidHostLabel($data['outpost_id'])) {
62
+ throw new \WPStaging\Vendor\Aws\Arn\Exception\InvalidArnException("The 7th component of an S3 Outposts" . " bucket ARN is required, represents the outpost ID, and" . " must be a valid host label.");
63
+ }
64
+ if ($data['bucket_label'] !== 'bucket') {
65
+ throw new \WPStaging\Vendor\Aws\Arn\Exception\InvalidArnException("The 8th component of an S3 Outposts" . " bucket ARN must be 'bucket'");
66
+ }
67
+ if (empty($data['bucket_name'])) {
68
+ throw new \WPStaging\Vendor\Aws\Arn\Exception\InvalidArnException("The 9th component of an S3 Outposts" . " bucket ARN represents the bucket name and must not be empty.");
69
+ }
70
+ }
71
+ }
vendor_wpstg/aws/aws-sdk-php/src/AwsClient.php ADDED
@@ -0,0 +1,388 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace WPStaging\Vendor\Aws;
4
+
5
+ use WPStaging\Vendor\Aws\Api\ApiProvider;
6
+ use WPStaging\Vendor\Aws\Api\DocModel;
7
+ use WPStaging\Vendor\Aws\Api\Service;
8
+ use WPStaging\Vendor\Aws\ClientSideMonitoring\ApiCallAttemptMonitoringMiddleware;
9
+ use WPStaging\Vendor\Aws\ClientSideMonitoring\ApiCallMonitoringMiddleware;
10
+ use WPStaging\Vendor\Aws\ClientSideMonitoring\ConfigurationProvider;
11
+ use WPStaging\Vendor\Aws\EndpointDiscovery\EndpointDiscoveryMiddleware;
12
+ use WPStaging\Vendor\Aws\Signature\SignatureProvider;
13
+ use WPStaging\Vendor\GuzzleHttp\Psr7\Uri;
14
+ /**
15
+ * Default AWS client implementation
16
+ */
17
+ class AwsClient implements \WPStaging\Vendor\Aws\AwsClientInterface
18
+ {
19
+ use AwsClientTrait;
20
+ /** @var array */
21
+ private $aliases;
22
+ /** @var array */
23
+ private $config;
24
+ /** @var string */
25
+ private $region;
26
+ /** @var string */
27
+ private $endpoint;
28
+ /** @var Service */
29
+ private $api;
30
+ /** @var callable */
31
+ private $signatureProvider;
32
+ /** @var callable */
33
+ private $credentialProvider;
34
+ /** @var HandlerList */
35
+ private $handlerList;
36
+ /** @var array*/
37
+ private $defaultRequestOptions;
38
+ /**
39
+ * Get an array of client constructor arguments used by the client.
40
+ *
41
+ * @return array
42
+ */
43
+ public static function getArguments()
44
+ {
45
+ return \WPStaging\Vendor\Aws\ClientResolver::getDefaultArguments();
46
+ }
47
+ /**
48
+ * The client constructor accepts the following options:
49
+ *
50
+ * - api_provider: (callable) An optional PHP callable that accepts a
51
+ * type, service, and version argument, and returns an array of
52
+ * corresponding configuration data. The type value can be one of api,
53
+ * waiter, or paginator.
54
+ * - credentials:
55
+ * (Aws\Credentials\CredentialsInterface|array|bool|callable) Specifies
56
+ * the credentials used to sign requests. Provide an
57
+ * Aws\Credentials\CredentialsInterface object, an associative array of
58
+ * "key", "secret", and an optional "token" key, `false` to use null
59
+ * credentials, or a callable credentials provider used to create
60
+ * credentials or return null. See Aws\Credentials\CredentialProvider for
61
+ * a list of built-in credentials providers. If no credentials are
62
+ * provided, the SDK will attempt to load them from the environment.
63
+ * - csm:
64
+ * (Aws\ClientSideMonitoring\ConfigurationInterface|array|callable) Specifies
65
+ * the credentials used to sign requests. Provide an
66
+ * Aws\ClientSideMonitoring\ConfigurationInterface object, a callable
67
+ * configuration provider used to create client-side monitoring configuration,
68
+ * `false` to disable csm, or an associative array with the following keys:
69
+ * enabled: (bool) Set to true to enable client-side monitoring, defaults
70
+ * to false; host: (string) the host location to send monitoring events to,
71
+ * defaults to 127.0.0.1; port: (int) The port used for the host connection,
72
+ * defaults to 31000; client_id: (string) An identifier for this project
73
+ * - debug: (bool|array) Set to true to display debug information when
74
+ * sending requests. Alternatively, you can provide an associative array
75
+ * with the following keys: logfn: (callable) Function that is invoked
76
+ * with log messages; stream_size: (int) When the size of a stream is
77
+ * greater than this number, the stream data will not be logged (set to
78
+ * "0" to not log any stream data); scrub_auth: (bool) Set to false to
79
+ * disable the scrubbing of auth data from the logged messages; http:
80
+ * (bool) Set to false to disable the "debug" feature of lower level HTTP
81
+ * adapters (e.g., verbose curl output).
82
+ * - stats: (bool|array) Set to true to gather transfer statistics on
83
+ * requests sent. Alternatively, you can provide an associative array with
84
+ * the following keys: retries: (bool) Set to false to disable reporting
85
+ * on retries attempted; http: (bool) Set to true to enable collecting
86
+ * statistics from lower level HTTP adapters (e.g., values returned in
87
+ * GuzzleHttp\TransferStats). HTTP handlers must support an
88
+ * `http_stats_receiver` option for this to have an effect; timer: (bool)
89
+ * Set to true to enable a command timer that reports the total wall clock
90
+ * time spent on an operation in seconds.
91
+ * - disable_host_prefix_injection: (bool) Set to true to disable host prefix
92
+ * injection logic for services that use it. This disables the entire
93
+ * prefix injection, including the portions supplied by user-defined
94
+ * parameters. Setting this flag will have no effect on services that do
95
+ * not use host prefix injection.
96
+ * - endpoint: (string) The full URI of the webservice. This is only
97
+ * required when connecting to a custom endpoint (e.g., a local version
98
+ * of S3).
99
+ * - endpoint_discovery: (Aws\EndpointDiscovery\ConfigurationInterface,
100
+ * Aws\CacheInterface, array, callable) Settings for endpoint discovery.
101
+ * Provide an instance of Aws\EndpointDiscovery\ConfigurationInterface,
102
+ * an instance Aws\CacheInterface, a callable that provides a promise for
103
+ * a Configuration object, or an associative array with the following
104
+ * keys: enabled: (bool) Set to true to enable endpoint discovery, false
105
+ * to explicitly disable it, defaults to false; cache_limit: (int) The
106
+ * maximum number of keys in the endpoints cache, defaults to 1000.
107
+ * - endpoint_provider: (callable) An optional PHP callable that
108
+ * accepts a hash of options including a "service" and "region" key and
109
+ * returns NULL or a hash of endpoint data, of which the "endpoint" key
110
+ * is required. See Aws\Endpoint\EndpointProvider for a list of built-in
111
+ * providers.
112
+ * - handler: (callable) A handler that accepts a command object,
113
+ * request object and returns a promise that is fulfilled with an
114
+ * Aws\ResultInterface object or rejected with an
115
+ * Aws\Exception\AwsException. A handler does not accept a next handler
116
+ * as it is terminal and expected to fulfill a command. If no handler is
117
+ * provided, a default Guzzle handler will be utilized.
118
+ * - http: (array, default=array(0)) Set to an array of SDK request
119
+ * options to apply to each request (e.g., proxy, verify, etc.).
120
+ * - http_handler: (callable) An HTTP handler is a