Wordfence Security – Firewall & Malware Scan - Version 7.4.14

Version Description

  • December 3, 2020 =

  • Improvement: Added option to disable application passwords.

  • Improvement: Updated site cleaning callout with 1-year guarantee.

  • Improvement: Upgraded sodium_compat library to 1.13.0.

  • Improvement: Replaced the terms whitelist and blacklist with allowlist and blocklist.

  • Improvement: Made a number of WordPress 5.6 and jQuery 3.x compatibility improvements.

  • Improvement: Made a number of PHP8 compatilibility improvements.

  • Improvement: Added dismissable notice informing users of possible PHP8 compatibility issues.

Download this release

Release Info

Developer wfmatt
Plugin Icon 128x128 Wordfence Security – Firewall & Malware Scan
Version 7.4.14
Comparing to
See all releases

Code changes from version 7.4.12 to 7.4.14

Files changed (149) hide show
  1. crypto/vendor/composer/ClassLoader.php +1 -1
  2. crypto/vendor/composer/InstalledVersions.php +227 -0
  3. crypto/vendor/composer/autoload_real.php +3 -0
  4. crypto/vendor/composer/installed.json +13 -13
  5. crypto/vendor/composer/installed.php +42 -0
  6. crypto/vendor/composer/platform_check.php +26 -0
  7. crypto/vendor/paragonie/random_compat/lib/cast_to_int.php +4 -4
  8. crypto/vendor/paragonie/random_compat/lib/error_polyfill.php +6 -6
  9. crypto/vendor/paragonie/random_compat/lib/random_bytes_com_dotnet.php +7 -7
  10. crypto/vendor/paragonie/random_compat/lib/random_bytes_dev_urandom.php +27 -45
  11. crypto/vendor/paragonie/random_compat/lib/random_bytes_libsodium.php +5 -5
  12. crypto/vendor/paragonie/random_compat/lib/random_bytes_libsodium_legacy.php +5 -5
  13. crypto/vendor/paragonie/random_compat/lib/random_bytes_mcrypt.php +5 -5
  14. crypto/vendor/paragonie/random_compat/psalm-autoload.php +10 -0
  15. crypto/vendor/paragonie/sodium_compat/LICENSE +2 -2
  16. crypto/vendor/paragonie/sodium_compat/autoload-php7.php +32 -0
  17. crypto/vendor/paragonie/sodium_compat/autoload-phpunit.php +8 -0
  18. crypto/vendor/paragonie/sodium_compat/autoload.php +49 -33
  19. crypto/vendor/paragonie/sodium_compat/composer-php52.json +87 -0
  20. crypto/vendor/paragonie/sodium_compat/lib/constants.php +2 -0
  21. crypto/vendor/paragonie/sodium_compat/lib/namespaced.php +3 -1
  22. crypto/vendor/paragonie/sodium_compat/lib/php72compat.php +311 -2
  23. crypto/vendor/paragonie/sodium_compat/lib/php72compat_const.php +91 -0
  24. crypto/vendor/paragonie/sodium_compat/lib/sodium_compat.php +2 -0
  25. crypto/vendor/paragonie/sodium_compat/psalm-above-3.xml +52 -0
  26. crypto/vendor/paragonie/sodium_compat/psalm-below-3.xml +43 -0
  27. crypto/vendor/paragonie/sodium_compat/src/Compat.php +706 -9
  28. crypto/vendor/paragonie/sodium_compat/src/Core/BLAKE2b.php +40 -10
  29. crypto/vendor/paragonie/sodium_compat/src/Core/Base64/Common.php +214 -0
  30. crypto/vendor/paragonie/sodium_compat/src/Core/Base64/Original.php +249 -0
  31. crypto/vendor/paragonie/sodium_compat/src/Core/Base64/UrlSafe.php +248 -0
  32. crypto/vendor/paragonie/sodium_compat/src/Core/Ed25519.php +1 -1
  33. crypto/vendor/paragonie/sodium_compat/src/Core/Poly1305/State.php +28 -2
  34. crypto/vendor/paragonie/sodium_compat/src/Core/SecretStream/State.php +164 -0
  35. crypto/vendor/paragonie/sodium_compat/src/Core/Util.php +1 -0
  36. crypto/vendor/paragonie/sodium_compat/src/Core/XChaCha20.php +53 -0
  37. crypto/vendor/paragonie/sodium_compat/src/Core32/BLAKE2b.php +45 -11
  38. crypto/vendor/paragonie/sodium_compat/src/Core32/Ed25519.php +1 -1
  39. crypto/vendor/paragonie/sodium_compat/src/Core32/Poly1305/State.php +2 -2
  40. crypto/vendor/paragonie/sodium_compat/src/Core32/SecretStream/State.php +164 -0
  41. crypto/vendor/paragonie/sodium_compat/src/Core32/X25519.php +3 -2
  42. crypto/vendor/paragonie/sodium_compat/src/Crypto.php +403 -0
  43. crypto/vendor/paragonie/sodium_compat/src/Crypto32.php +403 -0
  44. crypto/vendor/paragonie/sodium_compat/src/File.php +34 -12
  45. crypto/vendor/paragonie/sodium_compat/src/PHP52/SplFixedArray.php +188 -0
  46. css/{activity-report-widget.1603293147.css → activity-report-widget.1607007971.css} +0 -0
  47. css/{diff.1603293147.css → diff.1607007971.css} +0 -0
  48. css/{dt_table.1603293147.css → dt_table.1607007971.css} +0 -0
  49. css/{fullLog.1603293147.css → fullLog.1607007971.css} +0 -0
  50. css/{iptraf.1603293147.css → iptraf.1607007971.css} +0 -0
  51. css/{jquery-ui-timepicker-addon.1603293147.css → jquery-ui-timepicker-addon.1607007971.css} +0 -0
  52. css/{jquery-ui.min.1603293147.css → jquery-ui.min.1607007971.css} +0 -0
  53. css/{jquery-ui.structure.min.1603293147.css → jquery-ui.structure.min.1607007971.css} +0 -0
  54. css/{jquery-ui.theme.min.1603293147.css → jquery-ui.theme.min.1607007971.css} +0 -0
  55. css/main.1603293147.css +0 -1
  56. css/main.1607007971.css +1 -0
  57. css/{phpinfo.1603293147.css → phpinfo.1607007971.css} +0 -0
  58. css/{wf-adminbar.1603293147.css → wf-adminbar.1607007971.css} +0 -0
  59. css/{wf-colorbox.1603293147.css → wf-colorbox.1607007971.css} +0 -0
  60. css/{wf-font-awesome.1603293147.css → wf-font-awesome.1607007971.css} +0 -0
  61. css/{wf-global.1603293147.css → wf-global.1607007971.css} +0 -0
  62. css/{wf-ionicons.1603293147.css → wf-ionicons.1607007971.css} +0 -0
  63. css/{wf-onboarding.1603293147.css → wf-onboarding.1607007971.css} +0 -0
  64. css/{wf-roboto-font.1603293147.css → wf-roboto-font.1607007971.css} +0 -0
  65. css/{wfselect2.min.1603293147.css → wfselect2.min.1607007971.css} +0 -0
  66. css/{wordfenceBox.1603293147.css → wordfenceBox.1607007971.css} +0 -0
  67. js/{Chart.bundle.min.1603293147.js → Chart.bundle.min.1607007971.js} +0 -0
  68. js/{admin.1603293147.js → admin.1607007971.js} +2 -2
  69. js/{admin.ajaxWatcher.1603293147.js → admin.ajaxWatcher.1607007971.js} +4 -4
  70. js/{admin.liveTraffic.1603293147.js → admin.liveTraffic.1607007971.js} +1 -1
  71. js/{date.1603293147.js → date.1607007971.js} +0 -0
  72. js/{jquery-ui-timepicker-addon.1603293147.js → jquery-ui-timepicker-addon.1607007971.js} +0 -0
  73. js/{jquery.colorbox-min.1603293147.js → jquery.colorbox-min.1607007971.js} +0 -0
  74. js/{jquery.colorbox.1603293147.js → jquery.colorbox.1607007971.js} +0 -0
  75. js/{jquery.dataTables.min.1603293147.js → jquery.dataTables.min.1607007971.js} +0 -0
  76. js/{jquery.qrcode.min.1603293147.js → jquery.qrcode.min.1607007971.js} +0 -0
  77. js/{jquery.tmpl.min.1603293147.js → jquery.tmpl.min.1607007971.js} +0 -0
  78. js/{jquery.tools.min.1603293147.js → jquery.tools.min.1607007971.js} +0 -0
  79. js/{knockout-3.3.0.1603293147.js → knockout-3.3.0.1607007971.js} +0 -0
  80. js/{wfdashboard.1603293147.js → wfdashboard.1607007971.js} +0 -0
  81. js/{wfdropdown.1603293147.js → wfdropdown.1607007971.js} +0 -0
  82. js/{wfglobal.1603293147.js → wfglobal.1607007971.js} +0 -0
  83. js/{wfpopover.1603293147.js → wfpopover.1607007971.js} +0 -0
  84. js/{wfselect2.min.1603293147.js → wfselect2.min.1607007971.js} +0 -0
  85. languages/wordfence.po +37 -37
  86. lib/Diff/SequenceMatcher.php +1 -1
  87. lib/email_genericAlert.php +1 -1
  88. lib/email_newIssues.php +1 -1
  89. lib/menu_firewall_waf.php +4 -4
  90. lib/menu_firewall_waf_options.php +3 -3
  91. lib/menu_options.php +8 -7
  92. lib/menu_scanner.php +1 -1
  93. lib/menu_scanner_options.php +1 -1
  94. lib/menu_tools_diagnostic.php +1 -1
  95. lib/menu_tools_livetraffic.php +1 -1
  96. lib/wfActivityReport.php +1 -1
  97. lib/wfConfig.php +5 -1
  98. lib/wfDashboard.php +1 -1
  99. lib/wfScanEngine.php +15 -15
  100. lib/wfSupportController.php +2 -0
  101. lib/wordfenceClass.php +53 -16
  102. lib/wordfenceScanner.php +2 -22
  103. models/block/wfBlock.php +1 -1
  104. models/firewall/wfFirewall.php +2 -2
  105. models/scanner/wfScanner.php +1 -1
  106. modules/login-security/classes/controller/wordfencels.php +1 -1
  107. modules/login-security/css/{admin-global.1603293147.css → admin-global.1607007971.css} +0 -0
  108. modules/login-security/css/{admin.1603293147.css → admin.1607007971.css} +0 -0
  109. modules/login-security/css/{colorbox.1603293147.css → colorbox.1607007971.css} +0 -0
  110. modules/login-security/css/{font-awesome.1603293147.css → font-awesome.1607007971.css} +0 -0
  111. modules/login-security/css/{ionicons.1603293147.css → ionicons.1607007971.css} +0 -0
  112. modules/login-security/css/{jquery-ui-timepicker-addon.1603293147.css → jquery-ui-timepicker-addon.1607007971.css} +0 -0
  113. modules/login-security/css/{jquery-ui.min.1603293147.css → jquery-ui.min.1607007971.css} +0 -0
  114. modules/login-security/css/{jquery-ui.structure.min.1603293147.css → jquery-ui.structure.min.1607007971.css} +0 -0
  115. modules/login-security/css/{jquery-ui.theme.min.1603293147.css → jquery-ui.theme.min.1607007971.css} +0 -0
  116. modules/login-security/css/{login.1603293147.css → login.1607007971.css} +0 -0
  117. modules/login-security/js/{admin-global.1603293147.js → admin-global.1607007971.js} +0 -0
  118. modules/login-security/js/{admin.1603293147.js → admin.1607007971.js} +0 -0
  119. modules/login-security/js/{jquery-ui-timepicker-addon.1603293147.js → jquery-ui-timepicker-addon.1607007971.js} +0 -0
  120. modules/login-security/js/{jquery.colorbox.1603293147.js → jquery.colorbox.1607007971.js} +0 -0
  121. modules/login-security/js/{jquery.colorbox.min.1603293147.js → jquery.colorbox.min.1607007971.js} +0 -0
  122. modules/login-security/js/{jquery.qrcode.min.1603293147.js → jquery.qrcode.min.1607007971.js} +0 -0
  123. modules/login-security/js/{jquery.tmpl.min.1603293147.js → jquery.tmpl.min.1607007971.js} +0 -0
  124. modules/login-security/js/{login.1603293147.js → login.1607007971.js} +0 -0
  125. modules/login-security/views/options/option-ip-source.php +1 -1
  126. modules/login-security/views/page/manage.php +1 -1
  127. modules/login-security/views/settings/options.php +2 -2
  128. modules/login-security/wordfence-login-security.php +1 -1
  129. readme.txt +50 -40
  130. vendor/wordfence/wf-waf/src/lib/rules.php +6 -0
  131. vendor/wordfence/wf-waf/src/lib/waf.php +3 -3
  132. vendor/wordfence/wf-waf/src/views/403-roadblock.php +4 -4
  133. views/blocking/blocking-create.php +1 -1
  134. views/dashboard/option-howgetips.php +1 -1
  135. views/diagnostics/text.php +1 -1
  136. views/scanner/options-group-general.php +1 -1
  137. views/scanner/scan-progress.php +1 -1
  138. views/scanner/scanner-status.php +1 -1
  139. views/scanner/site-cleaning-bottom.php +2 -2
  140. views/tours/login-security.php +2 -2
  141. views/waf/debug.php +1 -1
  142. views/waf/option-whitelist.php +3 -3
  143. views/waf/options-group-advanced-firewall.php +3 -3
  144. views/waf/options-group-basic-firewall.php +3 -3
  145. views/waf/options-group-brute-force.php +12 -0
  146. views/waf/options-group-rate-limiting.php +1 -1
  147. views/waf/options-group-whitelisted.php +2 -2
  148. waf/bootstrap.php +2 -2
  149. wordfence.php +3 -3
crypto/vendor/composer/ClassLoader.php CHANGED
@@ -60,7 +60,7 @@ class ClassLoader
60
  public function getPrefixes()
61
  {
62
  if (!empty($this->prefixesPsr0)) {
63
- return call_user_func_array('array_merge', $this->prefixesPsr0);
64
  }
65
 
66
  return array();
60
  public function getPrefixes()
61
  {
62
  if (!empty($this->prefixesPsr0)) {
63
+ return call_user_func_array('array_merge', array_values($this->prefixesPsr0));
64
  }
65
 
66
  return array();
crypto/vendor/composer/InstalledVersions.php ADDED
@@ -0,0 +1,227 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Composer;
4
+
5
+ use Composer\Semver\VersionParser;
6
+
7
+
8
+
9
+
10
+
11
+
12
+ class InstalledVersions
13
+ {
14
+ private static $installed = array (
15
+ 'root' =>
16
+ array (
17
+ 'pretty_version' => 'dev-master',
18
+ 'version' => 'dev-master',
19
+ 'aliases' =>
20
+ array (
21
+ ),
22
+ 'reference' => '547ce2234fff039cbd57697d05f7236e431868e5',
23
+ 'name' => '__root__',
24
+ ),
25
+ 'versions' =>
26
+ array (
27
+ '__root__' =>
28
+ array (
29
+ 'pretty_version' => 'dev-master',
30
+ 'version' => 'dev-master',
31
+ 'aliases' =>
32
+ array (
33
+ ),
34
+ 'reference' => '547ce2234fff039cbd57697d05f7236e431868e5',
35
+ ),
36
+ 'paragonie/random_compat' =>
37
+ array (
38
+ 'pretty_version' => 'v2.0.10',
39
+ 'version' => '2.0.10.0',
40
+ 'aliases' =>
41
+ array (
42
+ ),
43
+ 'reference' => '634bae8e911eefa89c1abfbf1b66da679ac8f54d',
44
+ ),
45
+ 'paragonie/sodium_compat' =>
46
+ array (
47
+ 'pretty_version' => 'v1.13.0',
48
+ 'version' => '1.13.0.0',
49
+ 'aliases' =>
50
+ array (
51
+ ),
52
+ 'reference' => 'bbade402cbe84c69b718120911506a3aa2bae653',
53
+ ),
54
+ ),
55
+ );
56
+
57
+
58
+
59
+
60
+
61
+
62
+
63
+ public static function getInstalledPackages()
64
+ {
65
+ return array_keys(self::$installed['versions']);
66
+ }
67
+
68
+
69
+
70
+
71
+
72
+
73
+
74
+
75
+
76
+ public static function isInstalled($packageName)
77
+ {
78
+ return isset(self::$installed['versions'][$packageName]);
79
+ }
80
+
81
+
82
+
83
+
84
+
85
+
86
+
87
+
88
+
89
+
90
+
91
+
92
+
93
+
94
+ public static function satisfies(VersionParser $parser, $packageName, $constraint)
95
+ {
96
+ $constraint = $parser->parseConstraints($constraint);
97
+ $provided = $parser->parseConstraints(self::getVersionRanges($packageName));
98
+
99
+ return $provided->matches($constraint);
100
+ }
101
+
102
+
103
+
104
+
105
+
106
+
107
+
108
+
109
+
110
+
111
+ public static function getVersionRanges($packageName)
112
+ {
113
+ if (!isset(self::$installed['versions'][$packageName])) {
114
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
115
+ }
116
+
117
+ $ranges = array();
118
+ if (isset(self::$installed['versions'][$packageName]['pretty_version'])) {
119
+ $ranges[] = self::$installed['versions'][$packageName]['pretty_version'];
120
+ }
121
+ if (array_key_exists('aliases', self::$installed['versions'][$packageName])) {
122
+ $ranges = array_merge($ranges, self::$installed['versions'][$packageName]['aliases']);
123
+ }
124
+ if (array_key_exists('replaced', self::$installed['versions'][$packageName])) {
125
+ $ranges = array_merge($ranges, self::$installed['versions'][$packageName]['replaced']);
126
+ }
127
+ if (array_key_exists('provided', self::$installed['versions'][$packageName])) {
128
+ $ranges = array_merge($ranges, self::$installed['versions'][$packageName]['provided']);
129
+ }
130
+
131
+ return implode(' || ', $ranges);
132
+ }
133
+
134
+
135
+
136
+
137
+
138
+ public static function getVersion($packageName)
139
+ {
140
+ if (!isset(self::$installed['versions'][$packageName])) {
141
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
142
+ }
143
+
144
+ if (!isset(self::$installed['versions'][$packageName]['version'])) {
145
+ return null;
146
+ }
147
+
148
+ return self::$installed['versions'][$packageName]['version'];
149
+ }
150
+
151
+
152
+
153
+
154
+
155
+ public static function getPrettyVersion($packageName)
156
+ {
157
+ if (!isset(self::$installed['versions'][$packageName])) {
158
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
159
+ }
160
+
161
+ if (!isset(self::$installed['versions'][$packageName]['pretty_version'])) {
162
+ return null;
163
+ }
164
+
165
+ return self::$installed['versions'][$packageName]['pretty_version'];
166
+ }
167
+
168
+
169
+
170
+
171
+
172
+ public static function getReference($packageName)
173
+ {
174
+ if (!isset(self::$installed['versions'][$packageName])) {
175
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
176
+ }
177
+
178
+ if (!isset(self::$installed['versions'][$packageName]['reference'])) {
179
+ return null;
180
+ }
181
+
182
+ return self::$installed['versions'][$packageName]['reference'];
183
+ }
184
+
185
+
186
+
187
+
188
+
189
+ public static function getRootPackage()
190
+ {
191
+ return self::$installed['root'];
192
+ }
193
+
194
+
195
+
196
+
197
+
198
+
199
+
200
+ public static function getRawData()
201
+ {
202
+ return self::$installed;
203
+ }
204
+
205
+
206
+
207
+
208
+
209
+
210
+
211
+
212
+
213
+
214
+
215
+
216
+
217
+
218
+
219
+
220
+
221
+
222
+
223
+ public static function reload($data)
224
+ {
225
+ self::$installed = $data;
226
+ }
227
+ }
crypto/vendor/composer/autoload_real.php CHANGED
@@ -13,6 +13,9 @@ class ComposerAutoloaderInite213e65b2dafae4ad799b13fe0d36f8e
13
  }
14
  }
15
 
 
 
 
16
  public static function getLoader()
17
  {
18
  if (null !== self::$loader) {
13
  }
14
  }
15
 
16
+ /**
17
+ * @return \Composer\Autoload\ClassLoader
18
+ */
19
  public static function getLoader()
20
  {
21
  if (null !== self::$loader) {
crypto/vendor/composer/installed.json CHANGED
@@ -1,17 +1,17 @@
1
  [
2
  {
3
  "name": "paragonie/random_compat",
4
- "version": "v2.0.18",
5
- "version_normalized": "2.0.18.0",
6
  "source": {
7
  "type": "git",
8
  "url": "https://github.com/paragonie/random_compat.git",
9
- "reference": "0a58ef6e3146256cc3dc7cc393927bcc7d1b72db"
10
  },
11
  "dist": {
12
  "type": "zip",
13
- "url": "https://api.github.com/repos/paragonie/random_compat/zipball/0a58ef6e3146256cc3dc7cc393927bcc7d1b72db",
14
- "reference": "0a58ef6e3146256cc3dc7cc393927bcc7d1b72db",
15
  "shasum": ""
16
  },
17
  "require": {
@@ -23,7 +23,7 @@
23
  "suggest": {
24
  "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
25
  },
26
- "time": "2019-01-03T20:59:08+00:00",
27
  "type": "library",
28
  "installation-source": "dist",
29
  "autoload": {
@@ -52,17 +52,17 @@
52
  },
53
  {
54
  "name": "paragonie/sodium_compat",
55
- "version": "v1.10.0",
56
- "version_normalized": "1.10.0.0",
57
  "source": {
58
  "type": "git",
59
  "url": "https://github.com/paragonie/sodium_compat.git",
60
- "reference": "228a9fc64cf4ba84c7967c1076d94209db03e0ee"
61
  },
62
  "dist": {
63
  "type": "zip",
64
- "url": "https://api.github.com/repos/paragonie/sodium_compat/zipball/228a9fc64cf4ba84c7967c1076d94209db03e0ee",
65
- "reference": "228a9fc64cf4ba84c7967c1076d94209db03e0ee",
66
  "shasum": ""
67
  },
68
  "require": {
@@ -70,13 +70,13 @@
70
  "php": "^5.2.4|^5.3|^5.4|^5.5|^5.6|^7|^8"
71
  },
72
  "require-dev": {
73
- "phpunit/phpunit": "^3|^4|^5"
74
  },
75
  "suggest": {
76
  "ext-libsodium": "PHP < 7.0: Better performance, password hashing (Argon2i), secure memory management (memzero), and better security.",
77
  "ext-sodium": "PHP >= 7.0: Better performance, password hashing (Argon2i), secure memory management (memzero), and better security."
78
  },
79
- "time": "2019-05-13T16:04:50+00:00",
80
  "type": "library",
81
  "installation-source": "dist",
82
  "autoload": {
1
  [
2
  {
3
  "name": "paragonie/random_compat",
4
+ "version": "v2.0.17",
5
+ "version_normalized": "2.0.17.0",
6
  "source": {
7
  "type": "git",
8
  "url": "https://github.com/paragonie/random_compat.git",
9
+ "reference": "29af24f25bab834fcbb38ad2a69fa93b867e070d"
10
  },
11
  "dist": {
12
  "type": "zip",
13
+ "url": "https://api.github.com/repos/paragonie/random_compat/zipball/29af24f25bab834fcbb38ad2a69fa93b867e070d",
14
+ "reference": "29af24f25bab834fcbb38ad2a69fa93b867e070d",
15
  "shasum": ""
16
  },
17
  "require": {
23
  "suggest": {
24
  "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
25
  },
26
+ "time": "2018-07-04T16:31:37+00:00",
27
  "type": "library",
28
  "installation-source": "dist",
29
  "autoload": {
52
  },
53
  {
54
  "name": "paragonie/sodium_compat",
55
+ "version": "v1.13.0",
56
+ "version_normalized": "1.13.0.0",
57
  "source": {
58
  "type": "git",
59
  "url": "https://github.com/paragonie/sodium_compat.git",
60
+ "reference": "bbade402cbe84c69b718120911506a3aa2bae653"
61
  },
62
  "dist": {
63
  "type": "zip",
64
+ "url": "https://api.github.com/repos/paragonie/sodium_compat/zipball/bbade402cbe84c69b718120911506a3aa2bae653",
65
+ "reference": "bbade402cbe84c69b718120911506a3aa2bae653",
66
  "shasum": ""
67
  },
68
  "require": {
70
  "php": "^5.2.4|^5.3|^5.4|^5.5|^5.6|^7|^8"
71
  },
72
  "require-dev": {
73
+ "phpunit/phpunit": "^3|^4|^5|^6|^7"
74
  },
75
  "suggest": {
76
  "ext-libsodium": "PHP < 7.0: Better performance, password hashing (Argon2i), secure memory management (memzero), and better security.",
77
  "ext-sodium": "PHP >= 7.0: Better performance, password hashing (Argon2i), secure memory management (memzero), and better security."
78
  },
79
+ "time": "2020-03-20T21:48:09+00:00",
80
  "type": "library",
81
  "installation-source": "dist",
82
  "autoload": {
crypto/vendor/composer/installed.php ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php return array (
2
+ 'root' =>
3
+ array (
4
+ 'pretty_version' => 'dev-master',
5
+ 'version' => 'dev-master',
6
+ 'aliases' =>
7
+ array (
8
+ ),
9
+ 'reference' => '547ce2234fff039cbd57697d05f7236e431868e5',
10
+ 'name' => '__root__',
11
+ ),
12
+ 'versions' =>
13
+ array (
14
+ '__root__' =>
15
+ array (
16
+ 'pretty_version' => 'dev-master',
17
+ 'version' => 'dev-master',
18
+ 'aliases' =>
19
+ array (
20
+ ),
21
+ 'reference' => '547ce2234fff039cbd57697d05f7236e431868e5',
22
+ ),
23
+ 'paragonie/random_compat' =>
24
+ array (
25
+ 'pretty_version' => 'v2.0.10',
26
+ 'version' => '2.0.10.0',
27
+ 'aliases' =>
28
+ array (
29
+ ),
30
+ 'reference' => '634bae8e911eefa89c1abfbf1b66da679ac8f54d',
31
+ ),
32
+ 'paragonie/sodium_compat' =>
33
+ array (
34
+ 'pretty_version' => 'v1.13.0',
35
+ 'version' => '1.13.0.0',
36
+ 'aliases' =>
37
+ array (
38
+ ),
39
+ 'reference' => 'bbade402cbe84c69b718120911506a3aa2bae653',
40
+ ),
41
+ ),
42
+ );
crypto/vendor/composer/platform_check.php ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ // platform_check.php @generated by Composer
4
+
5
+ $issues = array();
6
+
7
+ if (!(PHP_VERSION_ID >= 50204)) {
8
+ $issues[] = 'Your Composer dependencies require a PHP version ">= 5.2.4". You are running ' . PHP_VERSION . '.';
9
+ }
10
+
11
+ if ($issues) {
12
+ if (!headers_sent()) {
13
+ header('HTTP/1.1 500 Internal Server Error');
14
+ }
15
+ if (!ini_get('display_errors')) {
16
+ if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
17
+ fwrite(STDERR, 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . implode(PHP_EOL, $issues) . PHP_EOL.PHP_EOL);
18
+ } elseif (!headers_sent()) {
19
+ echo 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . str_replace('You are running '.PHP_VERSION.'.', '', implode(PHP_EOL, $issues)) . PHP_EOL.PHP_EOL;
20
+ }
21
+ }
22
+ trigger_error(
23
+ 'Composer detected issues in your platform: ' . implode(' ', $issues),
24
+ E_USER_ERROR
25
+ );
26
+ }
crypto/vendor/paragonie/random_compat/lib/cast_to_int.php CHANGED
@@ -28,19 +28,19 @@
28
  */
29
 
30
  if (!is_callable('RandomCompat_intval')) {
31
-
32
  /**
33
  * Cast to an integer if we can, safely.
34
- *
35
  * If you pass it a float in the range (~PHP_INT_MAX, PHP_INT_MAX)
36
  * (non-inclusive), it will sanely cast it to an int. If you it's equal to
37
  * ~PHP_INT_MAX or PHP_INT_MAX, we let it fail as not an integer. Floats
38
  * lose precision, so the <= and => operators might accidentally let a float
39
  * through.
40
- *
41
  * @param int|float $number The number we want to convert to an int
42
  * @param bool $fail_open Set to true to not throw an exception
43
- *
44
  * @return float|int
45
  * @psalm-suppress InvalidReturnType
46
  *
28
  */
29
 
30
  if (!is_callable('RandomCompat_intval')) {
31
+
32
  /**
33
  * Cast to an integer if we can, safely.
34
+ *
35
  * If you pass it a float in the range (~PHP_INT_MAX, PHP_INT_MAX)
36
  * (non-inclusive), it will sanely cast it to an int. If you it's equal to
37
  * ~PHP_INT_MAX or PHP_INT_MAX, we let it fail as not an integer. Floats
38
  * lose precision, so the <= and => operators might accidentally let a float
39
  * through.
40
+ *
41
  * @param int|float $number The number we want to convert to an int
42
  * @param bool $fail_open Set to true to not throw an exception
43
+ *
44
  * @return float|int
45
  * @psalm-suppress InvalidReturnType
46
  *
crypto/vendor/paragonie/random_compat/lib/error_polyfill.php CHANGED
@@ -1,13 +1,13 @@
1
  <?php
2
  // phpcs:ignoreFile -- compatibility library for PHP 5-7.1
3
  /**
4
- * Random_* Compatibility Library
5
  * for using the new PHP 7 random_* API in PHP 5 projects
6
- *
7
  * The MIT License (MIT)
8
  *
9
  * Copyright (c) 2015 - 2018 Paragon Initiative Enterprises
10
- *
11
  * Permission is hereby granted, free of charge, to any person obtaining a copy
12
  * of this software and associated documentation files (the "Software"), to deal
13
  * in the Software without restriction, including without limitation the rights
@@ -31,7 +31,7 @@ if (!class_exists('Error', false)) {
31
  // We can't really avoid making this extend Exception in PHP 5.
32
  class Error extends Exception
33
  {
34
-
35
  }
36
  }
37
 
@@ -39,12 +39,12 @@ if (!class_exists('TypeError', false)) {
39
  if (is_subclass_of('Error', 'Exception')) {
40
  class TypeError extends Error
41
  {
42
-
43
  }
44
  } else {
45
  class TypeError extends Exception
46
  {
47
-
48
  }
49
  }
50
  }
1
  <?php
2
  // phpcs:ignoreFile -- compatibility library for PHP 5-7.1
3
  /**
4
+ * Random_* Compatibility Library
5
  * for using the new PHP 7 random_* API in PHP 5 projects
6
+ *
7
  * The MIT License (MIT)
8
  *
9
  * Copyright (c) 2015 - 2018 Paragon Initiative Enterprises
10
+ *
11
  * Permission is hereby granted, free of charge, to any person obtaining a copy
12
  * of this software and associated documentation files (the "Software"), to deal
13
  * in the Software without restriction, including without limitation the rights
31
  // We can't really avoid making this extend Exception in PHP 5.
32
  class Error extends Exception
33
  {
34
+
35
  }
36
  }
37
 
39
  if (is_subclass_of('Error', 'Exception')) {
40
  class TypeError extends Error
41
  {
42
+
43
  }
44
  } else {
45
  class TypeError extends Exception
46
  {
47
+
48
  }
49
  }
50
  }
crypto/vendor/paragonie/random_compat/lib/random_bytes_com_dotnet.php CHANGED
@@ -1,23 +1,23 @@
1
  <?php
2
  // phpcs:ignoreFile -- compatibility library for PHP 5-7.1
3
  /**
4
- * Random_* Compatibility Library
5
  * for using the new PHP 7 random_* API in PHP 5 projects
6
- *
7
  * The MIT License (MIT)
8
- *
9
  * Copyright (c) 2015 - 2018 Paragon Initiative Enterprises
10
- *
11
  * Permission is hereby granted, free of charge, to any person obtaining a copy
12
  * of this software and associated documentation files (the "Software"), to deal
13
  * in the Software without restriction, including without limitation the rights
14
  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
15
  * copies of the Software, and to permit persons to whom the Software is
16
  * furnished to do so, subject to the following conditions:
17
- *
18
  * The above copyright notice and this permission notice shall be included in
19
  * all copies or substantial portions of the Software.
20
- *
21
  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22
  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23
  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -89,4 +89,4 @@ if (!is_callable('random_bytes')) {
89
  'Could not gather sufficient random data'
90
  );
91
  }
92
- }
1
  <?php
2
  // phpcs:ignoreFile -- compatibility library for PHP 5-7.1
3
  /**
4
+ * Random_* Compatibility Library
5
  * for using the new PHP 7 random_* API in PHP 5 projects
6
+ *
7
  * The MIT License (MIT)
8
+ *
9
  * Copyright (c) 2015 - 2018 Paragon Initiative Enterprises
10
+ *
11
  * Permission is hereby granted, free of charge, to any person obtaining a copy
12
  * of this software and associated documentation files (the "Software"), to deal
13
  * in the Software without restriction, including without limitation the rights
14
  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
15
  * copies of the Software, and to permit persons to whom the Software is
16
  * furnished to do so, subject to the following conditions:
17
+ *
18
  * The above copyright notice and this permission notice shall be included in
19
  * all copies or substantial portions of the Software.
20
+ *
21
  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22
  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23
  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
89
  'Could not gather sufficient random data'
90
  );
91
  }
92
+ }
crypto/vendor/paragonie/random_compat/lib/random_bytes_dev_urandom.php CHANGED
@@ -1,23 +1,23 @@
1
  <?php
2
  // phpcs:ignoreFile -- compatibility library for PHP 5-7.1
3
  /**
4
- * Random_* Compatibility Library
5
  * for using the new PHP 7 random_* API in PHP 5 projects
6
- *
7
  * The MIT License (MIT)
8
  *
9
  * Copyright (c) 2015 - 2018 Paragon Initiative Enterprises
10
- *
11
  * Permission is hereby granted, free of charge, to any person obtaining a copy
12
  * of this software and associated documentation files (the "Software"), to deal
13
  * in the Software without restriction, including without limitation the rights
14
  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
15
  * copies of the Software, and to permit persons to whom the Software is
16
  * furnished to do so, subject to the following conditions:
17
- *
18
  * The above copyright notice and this permission notice shall be included in
19
  * all copies or substantial portions of the Software.
20
- *
21
  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22
  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23
  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -37,7 +37,6 @@ if (!is_callable('random_bytes')) {
37
  * random numbers in accordance with best practices
38
  *
39
  * Why we use /dev/urandom and not /dev/random
40
- * @ref https://www.2uo.de/myths-about-urandom
41
  * @ref http://sockpuppet.org/blog/2014/02/25/safely-generate-random-numbers
42
  *
43
  * @param int $bytes
@@ -56,35 +55,17 @@ if (!is_callable('random_bytes')) {
56
  */
57
  if (empty($fp)) {
58
  /**
59
- * We don't want to ever read C:\dev\random, only /dev/urandom on
60
- * Unix-like operating systems. While we guard against this
61
- * condition in random.php, it doesn't hurt to be defensive in depth
62
- * here.
63
- *
64
- * To that end, we only try to open /dev/urandom if we're on a Unix-
65
- * like operating system (which means the directory separator is set
66
- * to "/" not "\".
67
  */
68
- if (DIRECTORY_SEPARATOR === '/') {
69
- if (!is_readable('/dev/urandom')) {
70
- throw new Exception(
71
- 'Environment misconfiguration: ' .
72
- '/dev/urandom cannot be read.'
73
- );
74
- }
75
- /**
76
- * We use /dev/urandom if it is a char device.
77
- * We never fall back to /dev/random
78
- */
79
- /** @var resource|bool $fp */
80
- $fp = fopen('/dev/urandom', 'rb');
81
- if (is_resource($fp)) {
82
- /** @var array<string, int> $st */
83
- $st = fstat($fp);
84
- if (($st['mode'] & 0170000) !== 020000) {
85
- fclose($fp);
86
- $fp = false;
87
- }
88
  }
89
  }
90
 
@@ -148,28 +129,29 @@ if (!is_callable('random_bytes')) {
148
  */
149
  $read = fread($fp, $remaining);
150
  if (!is_string($read)) {
151
- /**
152
- * We cannot safely read from the file. Exit the
153
- * do-while loop and trigger the exception condition
154
- *
155
- * @var string|bool
156
- */
157
- $buf = false;
158
- break;
 
 
159
  }
160
  /**
161
  * Decrease the number of bytes returned from remaining
162
  */
163
  $remaining -= RandomCompat_strlen($read);
164
  /**
165
- * @var string $buf
166
  */
167
- $buf .= $read;
168
  } while ($remaining > 0);
169
 
170
  /**
171
  * Is our result valid?
172
- * @var string|bool $buf
173
  */
174
  if (is_string($buf)) {
175
  if (RandomCompat_strlen($buf) === $bytes) {
1
  <?php
2
  // phpcs:ignoreFile -- compatibility library for PHP 5-7.1
3
  /**
4
+ * Random_* Compatibility Library
5
  * for using the new PHP 7 random_* API in PHP 5 projects
6
+ *
7
  * The MIT License (MIT)
8
  *
9
  * Copyright (c) 2015 - 2018 Paragon Initiative Enterprises
10
+ *
11
  * Permission is hereby granted, free of charge, to any person obtaining a copy
12
  * of this software and associated documentation files (the "Software"), to deal
13
  * in the Software without restriction, including without limitation the rights
14
  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
15
  * copies of the Software, and to permit persons to whom the Software is
16
  * furnished to do so, subject to the following conditions:
17
+ *
18
  * The above copyright notice and this permission notice shall be included in
19
  * all copies or substantial portions of the Software.
20
+ *
21
  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22
  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23
  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
37
  * random numbers in accordance with best practices
38
  *
39
  * Why we use /dev/urandom and not /dev/random
 
40
  * @ref http://sockpuppet.org/blog/2014/02/25/safely-generate-random-numbers
41
  *
42
  * @param int $bytes
55
  */
56
  if (empty($fp)) {
57
  /**
58
+ * We use /dev/urandom if it is a char device.
59
+ * We never fall back to /dev/random
 
 
 
 
 
 
60
  */
61
+ /** @var resource|bool $fp */
62
+ $fp = fopen('/dev/urandom', 'rb');
63
+ if (is_resource($fp)) {
64
+ /** @var array<string, int> $st */
65
+ $st = fstat($fp);
66
+ if (($st['mode'] & 0170000) !== 020000) {
67
+ fclose($fp);
68
+ $fp = false;
 
 
 
 
 
 
 
 
 
 
 
 
69
  }
70
  }
71
 
129
  */
130
  $read = fread($fp, $remaining);
131
  if (!is_string($read)) {
132
+ if ($read === false) {
133
+ /**
134
+ * We cannot safely read from the file. Exit the
135
+ * do-while loop and trigger the exception condition
136
+ *
137
+ * @var string|bool
138
+ */
139
+ $buf = false;
140
+ break;
141
+ }
142
  }
143
  /**
144
  * Decrease the number of bytes returned from remaining
145
  */
146
  $remaining -= RandomCompat_strlen($read);
147
  /**
148
+ * @var string|bool
149
  */
150
+ $buf = $buf . $read;
151
  } while ($remaining > 0);
152
 
153
  /**
154
  * Is our result valid?
 
155
  */
156
  if (is_string($buf)) {
157
  if (RandomCompat_strlen($buf) === $bytes) {
crypto/vendor/paragonie/random_compat/lib/random_bytes_libsodium.php CHANGED
@@ -1,23 +1,23 @@
1
  <?php
2
  // phpcs:ignoreFile -- compatibility library for PHP 5-7.1
3
  /**
4
- * Random_* Compatibility Library
5
  * for using the new PHP 7 random_* API in PHP 5 projects
6
- *
7
  * The MIT License (MIT)
8
  *
9
  * Copyright (c) 2015 - 2018 Paragon Initiative Enterprises
10
- *
11
  * Permission is hereby granted, free of charge, to any person obtaining a copy
12
  * of this software and associated documentation files (the "Software"), to deal
13
  * in the Software without restriction, including without limitation the rights
14
  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
15
  * copies of the Software, and to permit persons to whom the Software is
16
  * furnished to do so, subject to the following conditions:
17
- *
18
  * The above copyright notice and this permission notice shall be included in
19
  * all copies or substantial portions of the Software.
20
- *
21
  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22
  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23
  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1
  <?php
2
  // phpcs:ignoreFile -- compatibility library for PHP 5-7.1
3
  /**
4
+ * Random_* Compatibility Library
5
  * for using the new PHP 7 random_* API in PHP 5 projects
6
+ *
7
  * The MIT License (MIT)
8
  *
9
  * Copyright (c) 2015 - 2018 Paragon Initiative Enterprises
10
+ *
11
  * Permission is hereby granted, free of charge, to any person obtaining a copy
12
  * of this software and associated documentation files (the "Software"), to deal
13
  * in the Software without restriction, including without limitation the rights
14
  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
15
  * copies of the Software, and to permit persons to whom the Software is
16
  * furnished to do so, subject to the following conditions:
17
+ *
18
  * The above copyright notice and this permission notice shall be included in
19
  * all copies or substantial portions of the Software.
20
+ *
21
  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22
  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23
  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
crypto/vendor/paragonie/random_compat/lib/random_bytes_libsodium_legacy.php CHANGED
@@ -1,23 +1,23 @@
1
  <?php
2
  // phpcs:ignoreFile -- compatibility library for PHP 5-7.1
3
  /**
4
- * Random_* Compatibility Library
5
  * for using the new PHP 7 random_* API in PHP 5 projects
6
- *
7
  * The MIT License (MIT)
8
  *
9
  * Copyright (c) 2015 - 2018 Paragon Initiative Enterprises
10
- *
11
  * Permission is hereby granted, free of charge, to any person obtaining a copy
12
  * of this software and associated documentation files (the "Software"), to deal
13
  * in the Software without restriction, including without limitation the rights
14
  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
15
  * copies of the Software, and to permit persons to whom the Software is
16
  * furnished to do so, subject to the following conditions:
17
- *
18
  * The above copyright notice and this permission notice shall be included in
19
  * all copies or substantial portions of the Software.
20
- *
21
  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22
  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23
  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1
  <?php
2
  // phpcs:ignoreFile -- compatibility library for PHP 5-7.1
3
  /**
4
+ * Random_* Compatibility Library
5
  * for using the new PHP 7 random_* API in PHP 5 projects
6
+ *
7
  * The MIT License (MIT)
8
  *
9
  * Copyright (c) 2015 - 2018 Paragon Initiative Enterprises
10
+ *
11
  * Permission is hereby granted, free of charge, to any person obtaining a copy
12
  * of this software and associated documentation files (the "Software"), to deal
13
  * in the Software without restriction, including without limitation the rights
14
  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
15
  * copies of the Software, and to permit persons to whom the Software is
16
  * furnished to do so, subject to the following conditions:
17
+ *
18
  * The above copyright notice and this permission notice shall be included in
19
  * all copies or substantial portions of the Software.
20
+ *
21
  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22
  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23
  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
crypto/vendor/paragonie/random_compat/lib/random_bytes_mcrypt.php CHANGED
@@ -1,23 +1,23 @@
1
  <?php
2
  // phpcs:ignoreFile -- compatibility library for PHP 5-7.1
3
  /**
4
- * Random_* Compatibility Library
5
  * for using the new PHP 7 random_* API in PHP 5 projects
6
- *
7
  * The MIT License (MIT)
8
  *
9
  * Copyright (c) 2015 - 2018 Paragon Initiative Enterprises
10
- *
11
  * Permission is hereby granted, free of charge, to any person obtaining a copy
12
  * of this software and associated documentation files (the "Software"), to deal
13
  * in the Software without restriction, including without limitation the rights
14
  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
15
  * copies of the Software, and to permit persons to whom the Software is
16
  * furnished to do so, subject to the following conditions:
17
- *
18
  * The above copyright notice and this permission notice shall be included in
19
  * all copies or substantial portions of the Software.
20
- *
21
  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22
  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23
  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1
  <?php
2
  // phpcs:ignoreFile -- compatibility library for PHP 5-7.1
3
  /**
4
+ * Random_* Compatibility Library
5
  * for using the new PHP 7 random_* API in PHP 5 projects
6
+ *
7
  * The MIT License (MIT)
8
  *
9
  * Copyright (c) 2015 - 2018 Paragon Initiative Enterprises
10
+ *
11
  * Permission is hereby granted, free of charge, to any person obtaining a copy
12
  * of this software and associated documentation files (the "Software"), to deal
13
  * in the Software without restriction, including without limitation the rights
14
  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
15
  * copies of the Software, and to permit persons to whom the Software is
16
  * furnished to do so, subject to the following conditions:
17
+ *
18
  * The above copyright notice and this permission notice shall be included in
19
  * all copies or substantial portions of the Software.
20
+ *
21
  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22
  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23
  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
crypto/vendor/paragonie/random_compat/psalm-autoload.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ // phpcs:ignoreFile -- compatibility library for PHP 5-7.1
3
+
4
+ require_once 'lib/byte_safe_strings.php';
5
+ require_once 'lib/cast_to_int.php';
6
+ require_once 'lib/error_polyfill.php';
7
+ require_once 'other/ide_stubs/libsodium.php';
8
+ require_once 'lib/random.php';
9
+
10
+ $int = random_int(0, 65536);
crypto/vendor/paragonie/sodium_compat/LICENSE CHANGED
@@ -1,10 +1,10 @@
1
  /*
2
  * ISC License
3
  *
4
- * Copyright (c) 2016-2018
5
  * Paragon Initiative Enterprises <security at paragonie dot com>
6
  *
7
- * Copyright (c) 2013-2018
8
  * Frank Denis <j at pureftpd dot org>
9
  *
10
  * Permission to use, copy, modify, and/or distribute this software for any
1
  /*
2
  * ISC License
3
  *
4
+ * Copyright (c) 2016-2019
5
  * Paragon Initiative Enterprises <security at paragonie dot com>
6
  *
7
+ * Copyright (c) 2013-2019
8
  * Frank Denis <j at pureftpd dot org>
9
  *
10
  * Permission to use, copy, modify, and/or distribute this software for any
crypto/vendor/paragonie/sodium_compat/autoload-php7.php ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ // phpcs:ignoreFile -- compatibility library for PHP 5-7.1
3
+ /*
4
+ This file should only ever be loaded on PHP 7+
5
+ */
6
+ if (PHP_VERSION_ID < 70000) {
7
+ return;
8
+ }
9
+
10
+ spl_autoload_register(function ($class) {
11
+ $namespace = 'ParagonIE_Sodium_';
12
+ // Does the class use the namespace prefix?
13
+ $len = strlen($namespace);
14
+ if (strncmp($namespace, $class, $len) !== 0) {
15
+ // no, move to the next registered autoloader
16
+ return false;
17
+ }
18
+
19
+ // Get the relative class name
20
+ $relative_class = substr($class, $len);
21
+
22
+ // Replace the namespace prefix with the base directory, replace namespace
23
+ // separators with directory separators in the relative class name, append
24
+ // with .php
25
+ $file = dirname(__FILE__) . '/src/' . str_replace('_', '/', $relative_class) . '.php';
26
+ // if the file exists, require it
27
+ if (file_exists($file)) {
28
+ require_once $file;
29
+ return true;
30
+ }
31
+ return false;
32
+ });
crypto/vendor/paragonie/sodium_compat/autoload-phpunit.php ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
1
+ <?php
2
+ // phpcs:ignoreFile -- compatibility library for PHP 5-7.1
3
+
4
+ require_once (dirname(__FILE__) . '/vendor/autoload.php');
5
+
6
+ if (PHP_VERSION_ID >= 50300) {
7
+ require_once (dirname(__FILE__) . '/tests/phpunit-shim.php');
8
+ }
crypto/vendor/paragonie/sodium_compat/autoload.php CHANGED
@@ -1,50 +1,66 @@
1
  <?php
2
  // phpcs:ignoreFile -- compatibility library for PHP 5-7.1
3
 
4
- if (!is_callable('sodiumCompatAutoloader')) {
5
- /**
6
- * Sodium_Compat autoloader.
7
- *
8
- * @param string $class Class name to be autoloaded.
9
- *
10
- * @return bool Stop autoloading?
11
- */
12
- function sodiumCompatAutoloader($class)
13
- {
14
- $namespace = 'ParagonIE_Sodium_';
15
- // Does the class use the namespace prefix?
16
- $len = strlen($namespace);
17
- if (strncmp($namespace, $class, $len) !== 0) {
18
- // no, move to the next registered autoloader
19
- return false;
20
- }
 
21
 
22
- // Get the relative class name
23
- $relative_class = substr($class, $len);
24
 
25
- // Replace the namespace prefix with the base directory, replace namespace
26
- // separators with directory separators in the relative class name, append
27
- // with .php
28
- $file = dirname(__FILE__) . '/src/' . str_replace('_', '/', $relative_class) . '.php';
29
- // if the file exists, require it
30
- if (file_exists($file)) {
31
- require_once $file;
32
- return true;
 
 
33
  }
34
- return false;
35
- }
36
 
37
- // Now that we have an autoloader, let's register it!
38
- spl_autoload_register('sodiumCompatAutoloader');
 
 
 
39
  }
40
 
41
- require_once dirname(__FILE__) . '/src/SodiumException.php';
 
 
42
  if (PHP_VERSION_ID >= 50300) {
43
  // Namespaces didn't exist before 5.3.0, so don't even try to use this
44
  // unless PHP >= 5.3.0
45
  require_once dirname(__FILE__) . '/lib/namespaced.php';
46
  require_once dirname(__FILE__) . '/lib/sodium_compat.php';
 
 
47
  }
48
  if (PHP_VERSION_ID < 70200 || !extension_loaded('sodium')) {
49
- require_once dirname(__FILE__) . '/lib/php72compat.php';
 
 
 
 
 
 
 
 
50
  }
1
  <?php
2
  // phpcs:ignoreFile -- compatibility library for PHP 5-7.1
3
 
4
+ if (PHP_VERSION_ID < 70000) {
5
+ if (!is_callable('sodiumCompatAutoloader')) {
6
+ /**
7
+ * Sodium_Compat autoloader.
8
+ *
9
+ * @param string $class Class name to be autoloaded.
10
+ *
11
+ * @return bool Stop autoloading?
12
+ */
13
+ function sodiumCompatAutoloader($class)
14
+ {
15
+ $namespace = 'ParagonIE_Sodium_';
16
+ // Does the class use the namespace prefix?
17
+ $len = strlen($namespace);
18
+ if (strncmp($namespace, $class, $len) !== 0) {
19
+ // no, move to the next registered autoloader
20
+ return false;
21
+ }
22
 
23
+ // Get the relative class name
24
+ $relative_class = substr($class, $len);
25
 
26
+ // Replace the namespace prefix with the base directory, replace namespace
27
+ // separators with directory separators in the relative class name, append
28
+ // with .php
29
+ $file = dirname(__FILE__) . '/src/' . str_replace('_', '/', $relative_class) . '.php';
30
+ // if the file exists, require it
31
+ if (file_exists($file)) {
32
+ require_once $file;
33
+ return true;
34
+ }
35
+ return false;
36
  }
 
 
37
 
38
+ // Now that we have an autoloader, let's register it!
39
+ spl_autoload_register('sodiumCompatAutoloader');
40
+ }
41
+ } else {
42
+ require_once dirname(__FILE__) . '/autoload-php7.php';
43
  }
44
 
45
+ if (!class_exists('SodiumException', false)) {
46
+ require_once dirname(__FILE__) . '/src/SodiumException.php';
47
+ }
48
  if (PHP_VERSION_ID >= 50300) {
49
  // Namespaces didn't exist before 5.3.0, so don't even try to use this
50
  // unless PHP >= 5.3.0
51
  require_once dirname(__FILE__) . '/lib/namespaced.php';
52
  require_once dirname(__FILE__) . '/lib/sodium_compat.php';
53
+ } else {
54
+ require_once dirname(__FILE__) . '/src/PHP52/SplFixedArray.php';
55
  }
56
  if (PHP_VERSION_ID < 70200 || !extension_loaded('sodium')) {
57
+ if (PHP_VERSION_ID >= 50300 && !defined('SODIUM_CRYPTO_SCALARMULT_BYTES')) {
58
+ require_once dirname(__FILE__) . '/lib/php72compat_const.php';
59
+ }
60
+ if (PHP_VERSION_ID >= 70000) {
61
+ assert(class_exists('ParagonIE_Sodium_Compat'), 'Possible filesystem/autoloader bug?');
62
+ } else {
63
+ assert(class_exists('ParagonIE_Sodium_Compat'));
64
+ }
65
+ require_once (dirname(__FILE__) . '/lib/php72compat.php');
66
  }
crypto/vendor/paragonie/sodium_compat/composer-php52.json ADDED
@@ -0,0 +1,87 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "paragonie/sodium_compat",
3
+ "description": "Pure PHP implementation of libsodium; uses the PHP extension if it exists",
4
+ "keywords": [
5
+ "PHP",
6
+ "cryptography",
7
+ "elliptic curve",
8
+ "elliptic curve cryptography",
9
+ "Pure-PHP cryptography",
10
+ "side-channel resistant",
11
+ "Curve25519",
12
+ "X25519",
13
+ "ECDH",
14
+ "Elliptic Curve Diffie-Hellman",
15
+ "Ed25519",
16
+ "RFC 7748",
17
+ "RFC 8032",
18
+ "EdDSA",
19
+ "Edwards-curve Digital Signature Algorithm",
20
+ "ChaCha20",
21
+ "Salsa20",
22
+ "Xchacha20",
23
+ "Xsalsa20",
24
+ "Poly1305",
25
+ "BLAKE2b",
26
+ "public-key cryptography",
27
+ "secret-key cryptography",
28
+ "AEAD",
29
+ "Chapoly",
30
+ "Salpoly",
31
+ "ChaCha20-Poly1305",
32
+ "XSalsa20-Poly1305",
33
+ "XChaCha20-Poly1305",
34
+ "encryption",
35
+ "authentication",
36
+ "libsodium"
37
+ ],
38
+ "license": "ISC",
39
+ "authors": [
40
+ {
41
+ "name": "Paragon Initiative Enterprises",
42
+ "email": "security@paragonie.com"
43
+ },
44
+ {
45
+ "name": "Frank Denis",
46
+ "email": "jedisct1@pureftpd.org"
47
+ }
48
+ ],
49
+ "autoload": {
50
+ "files": ["autoload.php"]
51
+ },
52
+ "repositories": [
53
+ {
54
+ "type": "git",
55
+ "url": "https://github.com/garex/phpunit"
56
+ },
57
+ {
58
+ "type": "git",
59
+ "url": "https://github.com/garex/phpunit-mock-objects"
60
+ }
61
+ ],
62
+ "require": {
63
+ "php": "^5.2.4|^5.3|^5.4|^5.5|^5.6|^7|^8",
64
+ "xrstf/composer-php52": "1.*",
65
+ "paragonie/random_compat": ">=1"
66
+ },
67
+ "minimum-stability": "dev",
68
+ "require-dev": {
69
+ "phpunit/phpunit-php52": "dev-3.6.12-php52",
70
+ "phpunit/phpunit-mock-objects-php52": "dev-1.1.0-php52"
71
+ },
72
+ "scripts": {
73
+ "post-install-cmd": [
74
+ "xrstf\\Composer52\\Generator::onPostInstallCmd"
75
+ ],
76
+ "post-update-cmd": [
77
+ "xrstf\\Composer52\\Generator::onPostInstallCmd"
78
+ ],
79
+ "post-autoload-dump": [
80
+ "xrstf\\Composer52\\Generator::onPostInstallCmd"
81
+ ]
82
+ },
83
+ "suggest": {
84
+ "ext-libsodium": "PHP < 7.0: Better performance, password hashing (Argon2i), secure memory management (memzero), and better security.",
85
+ "ext-sodium": "PHP >= 7.0: Better performance, password hashing (Argon2i), secure memory management (memzero), and better security."
86
+ }
87
+ }
crypto/vendor/paragonie/sodium_compat/lib/constants.php CHANGED
@@ -2,6 +2,8 @@
2
  // phpcs:ignoreFile -- compatibility library for PHP 5-7.1
3
  namespace Sodium;
4
 
 
 
5
  use ParagonIE_Sodium_Compat;
6
 
7
  const CRYPTO_AEAD_AES256GCM_KEYBYTES = ParagonIE_Sodium_Compat::CRYPTO_AEAD_AES256GCM_KEYBYTES;
2
  // phpcs:ignoreFile -- compatibility library for PHP 5-7.1
3
  namespace Sodium;
4
 
5
+ require_once dirname(dirname(__FILE__)) . '/autoload.php';
6
+
7
  use ParagonIE_Sodium_Compat;
8
 
9
  const CRYPTO_AEAD_AES256GCM_KEYBYTES = ParagonIE_Sodium_Compat::CRYPTO_AEAD_AES256GCM_KEYBYTES;
crypto/vendor/paragonie/sodium_compat/lib/namespaced.php CHANGED
@@ -1,6 +1,8 @@
1
  <?php
2
  // phpcs:ignoreFile -- compatibility library for PHP 5-7.1
3
 
 
 
4
  if (PHP_VERSION_ID < 50300) {
5
  return;
6
  }
@@ -37,7 +39,7 @@ spl_autoload_register(function ($class) {
37
  // Replace the namespace prefix with the base directory, replace namespace
38
  // separators with directory separators in the relative class name, append
39
  // with .php
40
- $file = dirname(__DIR__) . '/namespaced/' . str_replace('\\', '/', $relative_class) . '.php';
41
  // if the file exists, require it
42
  if (file_exists($file)) {
43
  require_once $file;
1
  <?php
2
  // phpcs:ignoreFile -- compatibility library for PHP 5-7.1
3
 
4
+ require_once dirname(dirname(__FILE__)) . '/autoload.php';
5
+
6
  if (PHP_VERSION_ID < 50300) {
7
  return;
8
  }
39
  // Replace the namespace prefix with the base directory, replace namespace
40
  // separators with directory separators in the relative class name, append
41
  // with .php
42
+ $file = dirname(dirname(__FILE__)) . '/namespaced/' . str_replace('\\', '/', $relative_class) . '.php';
43
  // if the file exists, require it
44
  if (file_exists($file)) {
45
  require_once $file;
crypto/vendor/paragonie/sodium_compat/lib/php72compat.php CHANGED
@@ -1,6 +1,8 @@
1
  <?php
2
  // phpcs:ignoreFile -- compatibility library for PHP 5-7.1
3
 
 
 
4
  /**
5
  * This file will monkey patch the pure-PHP implementation in place of the
6
  * PECL functions and constants, but only if they do not already exist.
@@ -9,6 +11,10 @@
9
  * ParagonIE_Sodium_Compat method or class constant, respectively.
10
  */
11
  foreach (array(
 
 
 
 
12
  'CRYPTO_AEAD_CHACHA20POLY1305_KEYBYTES',
13
  'CRYPTO_AEAD_CHACHA20POLY1305_NSECBYTES',
14
  'CRYPTO_AEAD_CHACHA20POLY1305_NPUBBYTES',
@@ -21,6 +27,10 @@ foreach (array(
21
  'CRYPTO_AEAD_CHACHA20POLY1305_IETF_NSECBYTES',
22
  'CRYPTO_AEAD_CHACHA20POLY1305_IETF_NPUBBYTES',
23
  'CRYPTO_AEAD_CHACHA20POLY1305_IETF_ABYTES',
 
 
 
 
24
  'CRYPTO_AUTH_BYTES',
25
  'CRYPTO_AUTH_KEYBYTES',
26
  'CRYPTO_BOX_SEALBYTES',
@@ -30,10 +40,17 @@ foreach (array(
30
  'CRYPTO_BOX_MACBYTES',
31
  'CRYPTO_BOX_NONCEBYTES',
32
  'CRYPTO_BOX_SEEDBYTES',
 
 
 
 
33
  'CRYPTO_KX_BYTES',
 
 
34
  'CRYPTO_KX_SEEDBYTES',
35
  'CRYPTO_KX_PUBLICKEYBYTES',
36
  'CRYPTO_KX_SECRETKEYBYTES',
 
37
  'CRYPTO_GENERICHASH_BYTES',
38
  'CRYPTO_GENERICHASH_BYTES_MIN',
39
  'CRYPTO_GENERICHASH_BYTES_MAX',
@@ -50,6 +67,12 @@ foreach (array(
50
  'CRYPTO_PWHASH_OPSLIMIT_MODERATE',
51
  'CRYPTO_PWHASH_MEMLIMIT_SENSITIVE',
52
  'CRYPTO_PWHASH_OPSLIMIT_SENSITIVE',
 
 
 
 
 
 
53
  'CRYPTO_SCALARMULT_BYTES',
54
  'CRYPTO_SCALARMULT_SCALARBYTES',
55
  'CRYPTO_SHORTHASH_BYTES',
@@ -57,6 +80,14 @@ foreach (array(
57
  'CRYPTO_SECRETBOX_KEYBYTES',
58
  'CRYPTO_SECRETBOX_MACBYTES',
59
  'CRYPTO_SECRETBOX_NONCEBYTES',
 
 
 
 
 
 
 
 
60
  'CRYPTO_SIGN_BYTES',
61
  'CRYPTO_SIGN_SEEDBYTES',
62
  'CRYPTO_SIGN_PUBLICKEYBYTES',
@@ -64,16 +95,59 @@ foreach (array(
64
  'CRYPTO_SIGN_KEYPAIRBYTES',
65
  'CRYPTO_STREAM_KEYBYTES',
66
  'CRYPTO_STREAM_NONCEBYTES',
 
 
67
  'LIBRARY_VERSION_MAJOR',
68
  'LIBRARY_VERSION_MINOR',
69
  'VERSION_STRING'
70
  ) as $constant
71
  ) {
72
- if (!defined("SODIUM_$constant")) {
73
  define("SODIUM_$constant", constant("ParagonIE_Sodium_Compat::$constant"));
74
  }
75
  }
76
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
77
  if (!is_callable('sodium_bin2hex')) {
78
  /**
79
  * @see ParagonIE_Sodium_Compat::hex2bin()
@@ -187,6 +261,7 @@ if (!is_callable('sodium_crypto_aead_chacha20poly1305_keygen')) {
187
  /**
188
  * @see ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_keygen()
189
  * @return string
 
190
  */
191
  function sodium_crypto_aead_chacha20poly1305_keygen()
192
  {
@@ -233,6 +308,7 @@ if (!is_callable('sodium_crypto_aead_chacha20poly1305_ietf_keygen')) {
233
  /**
234
  * @see ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_ietf_keygen()
235
  * @return string
 
236
  */
237
  function sodium_crypto_aead_chacha20poly1305_ietf_keygen()
238
  {
@@ -279,6 +355,7 @@ if (!is_callable('sodium_crypto_aead_xchacha20poly1305_ietf_keygen')) {
279
  /**
280
  * @see ParagonIE_Sodium_Compat::crypto_aead_xchacha20poly1305_ietf_keygen()
281
  * @return string
 
282
  */
283
  function sodium_crypto_aead_xchacha20poly1305_ietf_keygen()
284
  {
@@ -303,6 +380,7 @@ if (!is_callable('sodium_crypto_auth_keygen')) {
303
  /**
304
  * @see ParagonIE_Sodium_Compat::crypto_auth_keygen()
305
  * @return string
 
306
  */
307
  function sodium_crypto_auth_keygen()
308
  {
@@ -517,6 +595,7 @@ if (!is_callable('sodium_crypto_generichash_keygen')) {
517
  /**
518
  * @see ParagonIE_Sodium_Compat::crypto_generichash_keygen()
519
  * @return string
 
520
  */
521
  function sodium_crypto_generichash_keygen()
522
  {
@@ -537,6 +616,37 @@ if (!is_callable('sodium_crypto_generichash_update')) {
537
  ParagonIE_Sodium_Compat::crypto_generichash_update($ctx, $message);
538
  }
539
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
540
  if (!is_callable('sodium_crypto_kx')) {
541
  /**
542
  * @see ParagonIE_Sodium_Compat::crypto_kx()
@@ -558,6 +668,73 @@ if (!is_callable('sodium_crypto_kx')) {
558
  );
559
  }
560
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
561
  if (!is_callable('sodium_crypto_pwhash')) {
562
  /**
563
  * @see ParagonIE_Sodium_Compat::crypto_pwhash()
@@ -591,6 +768,21 @@ if (!is_callable('sodium_crypto_pwhash_str')) {
591
  return ParagonIE_Sodium_Compat::crypto_pwhash_str($passwd, $opslimit, $memlimit);
592
  }
593
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
594
  if (!is_callable('sodium_crypto_pwhash_str_verify')) {
595
  /**
596
  * @see ParagonIE_Sodium_Compat::crypto_pwhash_str_verify()
@@ -697,6 +889,7 @@ if (!is_callable('sodium_crypto_secretbox_keygen')) {
697
  /**
698
  * @see ParagonIE_Sodium_Compat::crypto_secretbox_keygen()
699
  * @return string
 
700
  */
701
  function sodium_crypto_secretbox_keygen()
702
  {
@@ -722,6 +915,77 @@ if (!is_callable('sodium_crypto_secretbox_open')) {
722
  }
723
  }
724
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
725
  if (!is_callable('sodium_crypto_shorthash')) {
726
  /**
727
  * @see ParagonIE_Sodium_Compat::crypto_shorthash()
@@ -740,6 +1004,7 @@ if (!is_callable('sodium_crypto_shorthash_keygen')) {
740
  /**
741
  * @see ParagonIE_Sodium_Compat::crypto_shorthash_keygen()
742
  * @return string
 
743
  */
744
  function sodium_crypto_shorthash_keygen()
745
  {
@@ -774,6 +1039,20 @@ if (!is_callable('sodium_crypto_sign_detached')) {
774
  return ParagonIE_Sodium_Compat::crypto_sign_detached($message, $sk);
775
  }
776
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
777
  if (!is_callable('sodium_crypto_sign_keypair')) {
778
  /**
779
  * @see ParagonIE_Sodium_Compat::crypto_sign_keypair()
@@ -916,6 +1195,7 @@ if (!is_callable('sodium_crypto_stream_keygen')) {
916
  /**
917
  * @see ParagonIE_Sodium_Compat::crypto_stream_keygen()
918
  * @return string
 
919
  */
920
  function sodium_crypto_stream_keygen()
921
  {
@@ -1020,6 +1300,34 @@ if (!is_callable('sodium_memzero')) {
1020
  ParagonIE_Sodium_Compat::memzero($str);
1021
  }
1022
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1023
  if (!is_callable('sodium_randombytes_buf')) {
1024
  /**
1025
  * @see ParagonIE_Sodium_Compat::randombytes_buf()
@@ -1050,6 +1358,7 @@ if (!is_callable('sodium_randombytes_random16')) {
1050
  /**
1051
  * @see ParagonIE_Sodium_Compat::randombytes_random16()
1052
  * @return int
 
1053
  */
1054
  function sodium_randombytes_random16()
1055
  {
1
  <?php
2
  // phpcs:ignoreFile -- compatibility library for PHP 5-7.1
3
 
4
+ require_once dirname(dirname(__FILE__)) . '/autoload.php';
5
+
6
  /**
7
  * This file will monkey patch the pure-PHP implementation in place of the
8
  * PECL functions and constants, but only if they do not already exist.
11
  * ParagonIE_Sodium_Compat method or class constant, respectively.
12
  */
13
  foreach (array(
14
+ 'BASE64_VARIANT_ORIGINAL',
15
+ 'BASE64_VARIANT_ORIGINAL_NO_PADDING',
16
+ 'BASE64_VARIANT_URLSAFE',
17
+ 'BASE64_VARIANT_URLSAFE_NO_PADDING',
18
  'CRYPTO_AEAD_CHACHA20POLY1305_KEYBYTES',
19
  'CRYPTO_AEAD_CHACHA20POLY1305_NSECBYTES',
20
  'CRYPTO_AEAD_CHACHA20POLY1305_NPUBBYTES',
27
  'CRYPTO_AEAD_CHACHA20POLY1305_IETF_NSECBYTES',
28
  'CRYPTO_AEAD_CHACHA20POLY1305_IETF_NPUBBYTES',
29
  'CRYPTO_AEAD_CHACHA20POLY1305_IETF_ABYTES',
30
+ 'CRYPTO_AEAD_XCHACHA20POLY1305_IETF_KEYBYTES',
31
+ 'CRYPTO_AEAD_XCHACHA20POLY1305_IETF_NSECBYTES',
32
+ 'CRYPTO_AEAD_XCHACHA20POLY1305_IETF_NPUBBYTES',
33
+ 'CRYPTO_AEAD_XCHACHA20POLY1305_IETF_ABYTES',
34
  'CRYPTO_AUTH_BYTES',
35
  'CRYPTO_AUTH_KEYBYTES',
36
  'CRYPTO_BOX_SEALBYTES',
40
  'CRYPTO_BOX_MACBYTES',
41
  'CRYPTO_BOX_NONCEBYTES',
42
  'CRYPTO_BOX_SEEDBYTES',
43
+ 'CRYPTO_KDF_BYTES_MIN',
44
+ 'CRYPTO_KDF_BYTES_MAX',
45
+ 'CRYPTO_KDF_CONTEXTBYTES',
46
+ 'CRYPTO_KDF_KEYBYTES',
47
  'CRYPTO_KX_BYTES',
48
+ 'CRYPTO_KX_KEYPAIRBYTES',
49
+ 'CRYPTO_KX_PRIMITIVE',
50
  'CRYPTO_KX_SEEDBYTES',
51
  'CRYPTO_KX_PUBLICKEYBYTES',
52
  'CRYPTO_KX_SECRETKEYBYTES',
53
+ 'CRYPTO_KX_SESSIONKEYBYTES',
54
  'CRYPTO_GENERICHASH_BYTES',
55
  'CRYPTO_GENERICHASH_BYTES_MIN',
56
  'CRYPTO_GENERICHASH_BYTES_MAX',
67
  'CRYPTO_PWHASH_OPSLIMIT_MODERATE',
68
  'CRYPTO_PWHASH_MEMLIMIT_SENSITIVE',
69
  'CRYPTO_PWHASH_OPSLIMIT_SENSITIVE',
70
+ 'CRYPTO_PWHASH_SCRYPTSALSA208SHA256_SALTBYTES',
71
+ 'CRYPTO_PWHASH_SCRYPTSALSA208SHA256_STRPREFIX',
72
+ 'CRYPTO_PWHASH_SCRYPTSALSA208SHA256_MEMLIMIT_INTERACTIVE',
73
+ 'CRYPTO_PWHASH_SCRYPTSALSA208SHA256_OPSLIMIT_INTERACTIVE',
74
+ 'CRYPTO_PWHASH_SCRYPTSALSA208SHA256_MEMLIMIT_SENSITIVE',
75
+ 'CRYPTO_PWHASH_SCRYPTSALSA208SHA256_OPSLIMIT_SENSITIVE',
76
  'CRYPTO_SCALARMULT_BYTES',
77
  'CRYPTO_SCALARMULT_SCALARBYTES',
78
  'CRYPTO_SHORTHASH_BYTES',
80
  'CRYPTO_SECRETBOX_KEYBYTES',
81
  'CRYPTO_SECRETBOX_MACBYTES',
82
  'CRYPTO_SECRETBOX_NONCEBYTES',
83
+ 'CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_ABYTES',
84
+ 'CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_HEADERBYTES',
85
+ 'CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_KEYBYTES',
86
+ 'CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_PUSH',
87
+ 'CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_PULL',
88
+ 'CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_REKEY',
89
+ 'CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_FINAL',
90
+ 'CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_MESSAGEBYTES_MAX',
91
  'CRYPTO_SIGN_BYTES',
92
  'CRYPTO_SIGN_SEEDBYTES',
93
  'CRYPTO_SIGN_PUBLICKEYBYTES',
95
  'CRYPTO_SIGN_KEYPAIRBYTES',
96
  'CRYPTO_STREAM_KEYBYTES',
97
  'CRYPTO_STREAM_NONCEBYTES',
98
+ 'LIBRARY_MAJOR_VERSION',
99
+ 'LIBRARY_MINOR_VERSION',
100
  'LIBRARY_VERSION_MAJOR',
101
  'LIBRARY_VERSION_MINOR',
102
  'VERSION_STRING'
103
  ) as $constant
104
  ) {
105
+ if (!defined("SODIUM_$constant") && defined("ParagonIE_Sodium_Compat::$constant")) {
106
  define("SODIUM_$constant", constant("ParagonIE_Sodium_Compat::$constant"));
107
  }
108
  }
109
+ if (!is_callable('sodium_add')) {
110
+ /**
111
+ * @see ParagonIE_Sodium_Compat::add()
112
+ * @param string $val
113
+ * @param string $addv
114
+ * @return void
115
+ * @throws SodiumException
116
+ */
117
+ function sodium_add(&$val, $addv)
118
+ {
119
+ ParagonIE_Sodium_Compat::add($val, $addv);
120
+ }
121
+ }
122
+ if (!is_callable('sodium_base642bin')) {
123
+ /**
124
+ * @see ParagonIE_Sodium_Compat::bin2base64()
125
+ * @param string $string
126
+ * @param int $variant
127
+ * @param string $ignore
128
+ * @return string
129
+ * @throws SodiumException
130
+ * @throws TypeError
131
+ */
132
+ function sodium_base642bin($string, $variant, $ignore ='')
133
+ {
134
+ return ParagonIE_Sodium_Compat::base642bin($string, $variant, $ignore);
135
+ }
136
+ }
137
+ if (!is_callable('sodium_bin2base64')) {
138
+ /**
139
+ * @see ParagonIE_Sodium_Compat::bin2base64()
140
+ * @param string $string
141
+ * @param int $variant
142
+ * @return string
143
+ * @throws SodiumException
144
+ * @throws TypeError
145
+ */
146
+ function sodium_bin2base64($string, $variant)
147
+ {
148
+ return ParagonIE_Sodium_Compat::bin2base64($string, $variant);
149
+ }
150
+ }
151
  if (!is_callable('sodium_bin2hex')) {
152
  /**
153
  * @see ParagonIE_Sodium_Compat::hex2bin()
261
  /**
262
  * @see ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_keygen()
263
  * @return string
264
+ * @throws Exception
265
  */
266
  function sodium_crypto_aead_chacha20poly1305_keygen()
267
  {
308
  /**
309
  * @see ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_ietf_keygen()
310
  * @return string
311
+ * @throws Exception
312
  */
313
  function sodium_crypto_aead_chacha20poly1305_ietf_keygen()
314
  {
355
  /**
356
  * @see ParagonIE_Sodium_Compat::crypto_aead_xchacha20poly1305_ietf_keygen()
357
  * @return string
358
+ * @throws Exception
359
  */
360
  function sodium_crypto_aead_xchacha20poly1305_ietf_keygen()
361
  {
380
  /**
381
  * @see ParagonIE_Sodium_Compat::crypto_auth_keygen()
382
  * @return string
383
+ * @throws Exception
384
  */
385
  function sodium_crypto_auth_keygen()
386
  {
595
  /**
596
  * @see ParagonIE_Sodium_Compat::crypto_generichash_keygen()
597
  * @return string
598
+ * @throws Exception
599
  */
600
  function sodium_crypto_generichash_keygen()
601
  {
616
  ParagonIE_Sodium_Compat::crypto_generichash_update($ctx, $message);
617
  }
618
  }
619
+ if (!is_callable('sodium_crypto_kdf_keygen')) {
620
+ /**
621
+ * @see ParagonIE_Sodium_Compat::crypto_kdf_keygen()
622
+ * @return string
623
+ * @throws Exception
624
+ */
625
+ function sodium_crypto_kdf_keygen()
626
+ {
627
+ return ParagonIE_Sodium_Compat::crypto_kdf_keygen();
628
+ }
629
+ }
630
+ if (!is_callable('sodium_crypto_kdf_derive_from_key')) {
631
+ /**
632
+ * @see ParagonIE_Sodium_Compat::crypto_kdf_derive_from_key()
633
+ * @param int $subkey_len
634
+ * @param int $subkey_id
635
+ * @param string $context
636
+ * @param string $key
637
+ * @return string
638
+ * @throws Exception
639
+ */
640
+ function sodium_crypto_kdf_derive_from_key($subkey_len, $subkey_id, $context, $key)
641
+ {
642
+ return ParagonIE_Sodium_Compat::crypto_kdf_derive_from_key(
643
+ $subkey_len,
644
+ $subkey_id,
645
+ $context,
646
+ $key
647
+ );
648
+ }
649
+ }
650
  if (!is_callable('sodium_crypto_kx')) {
651
  /**
652
  * @see ParagonIE_Sodium_Compat::crypto_kx()
668
  );
669
  }
670
  }
671
+ if (!is_callable('sodium_crypto_kx_seed_keypair')) {
672
+ /**
673
+ * @param string $seed
674
+ * @return string
675
+ * @throws Exception
676
+ */
677
+ function sodium_crypto_kx_seed_keypair($seed)
678
+ {
679
+ return ParagonIE_Sodium_Compat::crypto_kx_seed_keypair($seed);
680
+ }
681
+ }
682
+ if (!is_callable('sodium_crypto_kx_keypair')) {
683
+ /**
684
+ * @return string
685
+ * @throws Exception
686
+ */
687
+ function sodium_crypto_kx_keypair()
688
+ {
689
+ return ParagonIE_Sodium_Compat::crypto_kx_keypair();
690
+ }
691
+ }
692
+ if (!is_callable('sodium_crypto_kx_client_session_keys')) {
693
+ /**
694
+ * @param string $keypair
695
+ * @param string $serverPublicKey
696
+ * @return array{0: string, 1: string}
697
+ * @throws SodiumException
698
+ */
699
+ function sodium_crypto_kx_client_session_keys($keypair, $serverPublicKey)
700
+ {
701
+ return ParagonIE_Sodium_Compat::crypto_kx_client_session_keys($keypair, $serverPublicKey);
702
+ }
703
+ }
704
+ if (!is_callable('sodium_crypto_kx_server_session_keys')) {
705
+ /**
706
+ * @param string $keypair
707
+ * @param string $clientPublicKey
708
+ * @return array{0: string, 1: string}
709
+ * @throws SodiumException
710
+ */
711
+ function sodium_crypto_kx_server_session_keys($keypair, $clientPublicKey)
712
+ {
713
+ return ParagonIE_Sodium_Compat::crypto_kx_server_session_keys($keypair, $clientPublicKey);
714
+ }
715
+ }
716
+ if (!is_callable('sodium_crypto_kx_secretkey')) {
717
+ /**
718
+ * @param string $keypair
719
+ * @return string
720
+ * @throws Exception
721
+ */
722
+ function sodium_crypto_kx_secretkey($keypair)
723
+ {
724
+ return ParagonIE_Sodium_Compat::crypto_kx_secretkey($keypair);
725
+ }
726
+ }
727
+ if (!is_callable('sodium_crypto_kx_publickey')) {
728
+ /**
729
+ * @param string $keypair
730
+ * @return string
731
+ * @throws Exception
732
+ */
733
+ function sodium_crypto_kx_publickey($keypair)
734
+ {
735
+ return ParagonIE_Sodium_Compat::crypto_kx_publickey($keypair);
736
+ }
737
+ }
738
  if (!is_callable('sodium_crypto_pwhash')) {
739
  /**
740
  * @see ParagonIE_Sodium_Compat::crypto_pwhash()
768
  return ParagonIE_Sodium_Compat::crypto_pwhash_str($passwd, $opslimit, $memlimit);
769
  }
770
  }
771
+ if (!is_callable('sodium_crypto_pwhash_str_needs_rehash')) {
772
+ /**
773
+ * @see ParagonIE_Sodium_Compat::crypto_pwhash_str_needs_rehash()
774
+ * @param string $hash
775
+ * @param int $opslimit
776
+ * @param int $memlimit
777
+ * @return bool
778
+ *
779
+ * @throws SodiumException
780
+ */
781
+ function sodium_crypto_pwhash_str_needs_rehash($hash, $opslimit, $memlimit)
782
+ {
783
+ return ParagonIE_Sodium_Compat::crypto_pwhash_str_needs_rehash($hash, $opslimit, $memlimit);
784
+ }
785
+ }
786
  if (!is_callable('sodium_crypto_pwhash_str_verify')) {
787
  /**
788
  * @see ParagonIE_Sodium_Compat::crypto_pwhash_str_verify()
889
  /**
890
  * @see ParagonIE_Sodium_Compat::crypto_secretbox_keygen()
891
  * @return string
892
+ * @throws Exception
893
  */
894
  function sodium_crypto_secretbox_keygen()
895
  {
915
  }
916
  }
917
  }
918
+ if (!is_callable('sodium_crypto_secretstream_xchacha20poly1305_init_push')) {
919
+ /**
920
+ * @param string $key
921
+ * @return array<int, string>
922
+ * @throws SodiumException
923
+ */
924
+ function sodium_crypto_secretstream_xchacha20poly1305_init_push($key)
925
+ {
926
+ return ParagonIE_Sodium_Compat::crypto_secretstream_xchacha20poly1305_init_push($key);
927
+ }
928
+ }
929
+ if (!is_callable('sodium_crypto_secretstream_xchacha20poly1305_push')) {
930
+ /**
931
+ * @param string $state
932
+ * @param string $msg
933
+ * @param string $aad
934
+ * @param int $tag
935
+ * @return string
936
+ * @throws SodiumException
937
+ */
938
+ function sodium_crypto_secretstream_xchacha20poly1305_push(&$state, $msg, $aad = '', $tag = 0)
939
+ {
940
+ return ParagonIE_Sodium_Compat::crypto_secretstream_xchacha20poly1305_push($state, $msg, $aad, $tag);
941
+ }
942
+ }
943
+ if (!is_callable('sodium_crypto_secretstream_xchacha20poly1305_init_pull')) {
944
+ /**
945
+ * @param string $header
946
+ * @param string $key
947
+ * @return string
948
+ * @throws Exception
949
+ */
950
+ function sodium_crypto_secretstream_xchacha20poly1305_init_pull($header, $key)
951
+ {
952
+ return ParagonIE_Sodium_Compat::crypto_secretstream_xchacha20poly1305_init_pull($header, $key);
953
+ }
954
+ }
955
+ if (!is_callable('sodium_crypto_secretstream_xchacha20poly1305_pull')) {
956
+ /**
957
+ * @param string $state
958
+ * @param string $cipher
959
+ * @param string $aad
960
+ * @return bool|array{0: string, 1: int}
961
+ * @throws SodiumException
962
+ */
963
+ function sodium_crypto_secretstream_xchacha20poly1305_pull(&$state, $cipher, $aad = '')
964
+ {
965
+ return ParagonIE_Sodium_Compat::crypto_secretstream_xchacha20poly1305_pull($state, $cipher, $aad);
966
+ }
967
+ }
968
+ if (!is_callable('sodium_crypto_secretstream_xchacha20poly1305_rekey')) {
969
+ /**
970
+ * @param string $state
971
+ * @return void
972
+ * @throws SodiumException
973
+ */
974
+ function sodium_crypto_secretstream_xchacha20poly1305_rekey(&$state)
975
+ {
976
+ ParagonIE_Sodium_Compat::crypto_secretstream_xchacha20poly1305_rekey($state);
977
+ }
978
+ }
979
+ if (!is_callable('sodium_crypto_secretstream_xchacha20poly1305_keygen')) {
980
+ /**
981
+ * @return string
982
+ * @throws Exception
983
+ */
984
+ function sodium_crypto_secretstream_xchacha20poly1305_keygen()
985
+ {
986
+ return ParagonIE_Sodium_Compat::crypto_secretstream_xchacha20poly1305_keygen();
987
+ }
988
+ }
989
  if (!is_callable('sodium_crypto_shorthash')) {
990
  /**
991
  * @see ParagonIE_Sodium_Compat::crypto_shorthash()
1004
  /**
1005
  * @see ParagonIE_Sodium_Compat::crypto_shorthash_keygen()
1006
  * @return string
1007
+ * @throws Exception
1008
  */
1009
  function sodium_crypto_shorthash_keygen()
1010
  {
1039
  return ParagonIE_Sodium_Compat::crypto_sign_detached($message, $sk);
1040
  }
1041
  }
1042
+ if (!is_callable('sodium_crypto_sign_keypair_from_secretkey_and_publickey')) {
1043
+ /**
1044
+ * @see ParagonIE_Sodium_Compat::crypto_sign_keypair_from_secretkey_and_publickey()
1045
+ * @param string $sk
1046
+ * @param string $pk
1047
+ * @return string
1048
+ * @throws SodiumException
1049
+ * @throws TypeError
1050
+ */
1051
+ function sodium_crypto_sign_keypair_from_secretkey_and_publickey($sk, $pk)
1052
+ {
1053
+ return ParagonIE_Sodium_Compat::crypto_sign_keypair_from_secretkey_and_publickey($sk, $pk);
1054
+ }
1055
+ }
1056
  if (!is_callable('sodium_crypto_sign_keypair')) {
1057
  /**
1058
  * @see ParagonIE_Sodium_Compat::crypto_sign_keypair()
1195
  /**
1196
  * @see ParagonIE_Sodium_Compat::crypto_stream_keygen()
1197
  * @return string
1198
+ * @throws Exception
1199
  */
1200
  function sodium_crypto_stream_keygen()
1201
  {
1300
  ParagonIE_Sodium_Compat::memzero($str);
1301
  }
1302
  }
1303
+ if (!is_callable('sodium_pad')) {
1304
+ /**
1305
+ * @see ParagonIE_Sodium_Compat::pad()
1306
+ * @param string $unpadded
1307
+ * @param int $blockSize
1308
+ * @return int
1309
+ * @throws SodiumException
1310
+ * @throws TypeError
1311
+ */
1312
+ function sodium_pad($unpadded, $blockSize)
1313
+ {
1314
+ return ParagonIE_Sodium_Compat::pad($unpadded, $blockSize, true);
1315
+ }
1316
+ }
1317
+ if (!is_callable('sodium_unpad')) {
1318
+ /**
1319
+ * @see ParagonIE_Sodium_Compat::pad()
1320
+ * @param string $padded
1321
+ * @param int $blockSize
1322
+ * @return int
1323
+ * @throws SodiumException
1324
+ * @throws TypeError
1325
+ */
1326
+ function sodium_unpad($padded, $blockSize)
1327
+ {
1328
+ return ParagonIE_Sodium_Compat::unpad($padded, $blockSize, true);
1329
+ }
1330
+ }
1331
  if (!is_callable('sodium_randombytes_buf')) {
1332
  /**
1333
  * @see ParagonIE_Sodium_Compat::randombytes_buf()
1358
  /**
1359
  * @see ParagonIE_Sodium_Compat::randombytes_random16()
1360
  * @return int
1361
+ * @throws Exception
1362
  */
1363
  function sodium_randombytes_random16()
1364
  {
crypto/vendor/paragonie/sodium_compat/lib/php72compat_const.php ADDED
@@ -0,0 +1,91 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ // phpcs:ignoreFile -- compatibility library for PHP 5-7.1
3
+
4
+ const SODIUM_LIBRARY_MAJOR_VERSION = 9;
5
+ const SODIUM_LIBRARY_MINOR_VERSION = 1;
6
+ const SODIUM_LIBRARY_VERSION = '1.0.8';
7
+
8
+ const SODIUM_BASE64_VARIANT_ORIGINAL = 1;
9
+ const SODIUM_BASE64_VARIANT_ORIGINAL_NO_PADDING = 3;
10
+ const SODIUM_BASE64_VARIANT_URLSAFE = 5;
11
+ const SODIUM_BASE64_VARIANT_URLSAFE_NO_PADDING = 7;
12
+ const SODIUM_CRYPTO_AEAD_AES256GCM_KEYBYTES = 32;
13
+ const SODIUM_CRYPTO_AEAD_AES256GCM_NSECBYTES = 0;
14
+ const SODIUM_CRYPTO_AEAD_AES256GCM_NPUBBYTES = 12;
15
+ const SODIUM_CRYPTO_AEAD_AES256GCM_ABYTES = 16;
16
+ const SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_KEYBYTES = 32;
17
+ const SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_NSECBYTES = 0;
18
+ const SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_NPUBBYTES = 8;
19
+ const SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_ABYTES = 16;
20
+ const SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_IETF_KEYBYTES = 32;
21
+ const SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_IETF_NSECBYTES = 0;
22
+ const SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_IETF_NPUBBYTES = 12;
23
+ const SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_IETF_ABYTES = 16;
24
+ const SODIUM_CRYPTO_AEAD_XCHACHA20POLY1305_IETF_KEYBYTES = 32;
25
+ const SODIUM_CRYPTO_AEAD_XCHACHA20POLY1305_IETF_NSECBYTES = 0;
26
+ const SODIUM_CRYPTO_AEAD_XCHACHA20POLY1305_IETF_NPUBBYTES = 24;
27
+ const SODIUM_CRYPTO_AEAD_XCHACHA20POLY1305_IETF_ABYTES = 16;
28
+ const SODIUM_CRYPTO_AUTH_BYTES = 32;
29
+ const SODIUM_CRYPTO_AUTH_KEYBYTES = 32;
30
+ const SODIUM_CRYPTO_BOX_SEALBYTES = 16;
31
+ const SODIUM_CRYPTO_BOX_SECRETKEYBYTES = 32;
32
+ const SODIUM_CRYPTO_BOX_PUBLICKEYBYTES = 32;
33
+ const SODIUM_CRYPTO_BOX_KEYPAIRBYTES = 64;
34
+ const SODIUM_CRYPTO_BOX_MACBYTES = 16;
35
+ const SODIUM_CRYPTO_BOX_NONCEBYTES = 24;
36
+ const SODIUM_CRYPTO_BOX_SEEDBYTES = 32;
37
+ const SODIUM_CRYPTO_KDF_BYTES_MIN = 16;
38
+ const SODIUM_CRYPTO_KDF_BYTES_MAX = 64;
39
+ const SODIUM_CRYPTO_KDF_CONTEXTBYTES = 8;
40
+ const SODIUM_CRYPTO_KDF_KEYBYTES = 32;
41
+ const SODIUM_CRYPTO_KX_BYTES = 32;
42
+ const SODIUM_CRYPTO_KX_PRIMITIVE = 'x25519blake2b';
43
+ const SODIUM_CRYPTO_KX_SEEDBYTES = 32;
44
+ const SODIUM_CRYPTO_KX_KEYPAIRBYTES = 64;
45
+ const SODIUM_CRYPTO_KX_PUBLICKEYBYTES = 32;
46
+ const SODIUM_CRYPTO_KX_SECRETKEYBYTES = 32;
47
+ const SODIUM_CRYPTO_KX_SESSIONKEYBYTES = 32;
48
+ const SODIUM_CRYPTO_GENERICHASH_BYTES = 32;
49
+ const SODIUM_CRYPTO_GENERICHASH_BYTES_MIN = 16;
50
+ const SODIUM_CRYPTO_GENERICHASH_BYTES_MAX = 64;
51
+ const SODIUM_CRYPTO_GENERICHASH_KEYBYTES = 32;
52
+ const SODIUM_CRYPTO_GENERICHASH_KEYBYTES_MIN = 16;
53
+ const SODIUM_CRYPTO_GENERICHASH_KEYBYTES_MAX = 64;
54
+ const SODIUM_CRYPTO_PWHASH_SALTBYTES = 16;
55
+ const SODIUM_CRYPTO_PWHASH_STRPREFIX = '$argon2id$';
56
+ const SODIUM_CRYPTO_PWHASH_ALG_ARGON2I13 = 1;
57
+ const SODIUM_CRYPTO_PWHASH_ALG_ARGON2ID13 = 2;
58
+ const SODIUM_CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE = 33554432;
59
+ const SODIUM_CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE = 4;
60
+ const SODIUM_CRYPTO_PWHASH_MEMLIMIT_MODERATE = 134217728;
61
+ const SODIUM_CRYPTO_PWHASH_OPSLIMIT_MODERATE = 6;
62
+ const SODIUM_CRYPTO_PWHASH_MEMLIMIT_SENSITIVE = 536870912;
63
+ const SODIUM_CRYPTO_PWHASH_OPSLIMIT_SENSITIVE = 8;
64
+ const SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_SALTBYTES = 32;
65
+ const SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_STRPREFIX = '$7$';
66
+ const SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_OPSLIMIT_INTERACTIVE = 534288;
67
+ const SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_MEMLIMIT_INTERACTIVE = 16777216;
68
+ const SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_OPSLIMIT_SENSITIVE = 33554432;
69
+ const SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_MEMLIMIT_SENSITIVE = 1073741824;
70
+ const SODIUM_CRYPTO_SCALARMULT_BYTES = 32;
71
+ const SODIUM_CRYPTO_SCALARMULT_SCALARBYTES = 32;
72
+ const SODIUM_CRYPTO_SHORTHASH_BYTES = 8;
73
+ const SODIUM_CRYPTO_SHORTHASH_KEYBYTES = 16;
74
+ const SODIUM_CRYPTO_SECRETBOX_KEYBYTES = 32;
75
+ const SODIUM_CRYPTO_SECRETBOX_MACBYTES = 16;
76
+ const SODIUM_CRYPTO_SECRETBOX_NONCEBYTES = 24;
77
+ const SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_ABYTES = 17;
78
+ const SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_HEADERBYTES = 24;
79
+ const SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_KEYBYTES = 32;
80
+ const SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_PUSH = 0;
81
+ const SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_PULL = 1;
82
+ const SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_REKEY = 2;
83
+ const SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_FINAL = 3;
84
+ const SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_MESSAGEBYTES_MAX = 0x3fffffff80;
85
+ const SODIUM_CRYPTO_SIGN_BYTES = 64;
86
+ const SODIUM_CRYPTO_SIGN_SEEDBYTES = 32;
87
+ const SODIUM_CRYPTO_SIGN_PUBLICKEYBYTES = 32;
88
+ const SODIUM_CRYPTO_SIGN_SECRETKEYBYTES = 64;
89
+ const SODIUM_CRYPTO_SIGN_KEYPAIRBYTES = 96;
90
+ const SODIUM_CRYPTO_STREAM_KEYBYTES = 32;
91
+ const SODIUM_CRYPTO_STREAM_NONCEBYTES = 24;
crypto/vendor/paragonie/sodium_compat/lib/sodium_compat.php CHANGED
@@ -2,6 +2,8 @@
2
  // phpcs:ignoreFile -- compatibility library for PHP 5-7.1
3
  namespace Sodium;
4
 
 
 
5
  use ParagonIE_Sodium_Compat;
6
 
7
  /**
2
  // phpcs:ignoreFile -- compatibility library for PHP 5-7.1
3
  namespace Sodium;
4
 
5
+ require_once dirname(dirname(__FILE__)) . '/autoload.php';
6
+
7
  use ParagonIE_Sodium_Compat;
8
 
9
  /**
crypto/vendor/paragonie/sodium_compat/psalm-above-3.xml ADDED
@@ -0,0 +1,52 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <psalm
3
+ useDocblockTypes="true"
4
+ totallyTyped="true"
5
+ >
6
+ <projectFiles>
7
+ <directory name="src" />
8
+ </projectFiles>
9
+ <issueHandlers>
10
+ <InvalidFunctionCall errorLevel="suppress" />
11
+ <!--
12
+ Previous issue type is suppressed because we have to use a string
13
+ as a function name for PHP 5.2 compatibility. When testing, be sure
14
+ to change this to "info".
15
+ -->
16
+
17
+ <UndefinedFunction errorLevel="info" />
18
+ <!--
19
+ Inconsistently erroneous.
20
+ -->
21
+
22
+ <DuplicateClass errorLevel="info" />
23
+ <!--
24
+ Psalm isn't correctly identifying the guard conditions that return
25
+ early if a class already exists.
26
+ -->
27
+ <RedundantConditionGivenDocblockType errorLevel="suppress" />
28
+
29
+ <TooFewArguments errorLevel="info" />
30
+
31
+ <DocblockTypeContradiction errorLevel="suppress" />
32
+ <RedundantCondition errorLevel="info" />
33
+ <!--
34
+ Redundancy is good for PHP <7
35
+ -->
36
+
37
+ <TypeDoesNotContainType errorLevel="info" />
38
+ <!--
39
+ This mostly fails on `PHP_INT_SIZE === 4`
40
+ -->
41
+
42
+ <InternalMethod errorLevel="suppress" />
43
+ <!--
44
+ We mark methods as internal.
45
+ -->
46
+ <PossiblyNullArgument errorLevel="suppress" />
47
+ <!--
48
+ Not interesting
49
+ -->
50
+
51
+ </issueHandlers>
52
+ </psalm>
crypto/vendor/paragonie/sodium_compat/psalm-below-3.xml ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <psalm
3
+ useDocblockTypes="true"
4
+ totallyTyped="true"
5
+ >
6
+ <projectFiles>
7
+ <directory name="src" />
8
+ </projectFiles>
9
+ <issueHandlers>
10
+ <InvalidFunctionCall errorLevel="suppress" />
11
+ <!--
12
+ Previous issue type is suppressed because we have to use a string
13
+ as a function name for PHP 5.2 compatibility. When testing, be sure
14
+ to change this to "info".
15
+ -->
16
+
17
+ <UndefinedFunction errorLevel="info" />
18
+ <!--
19
+ Inconsistently erroneous.
20
+ -->
21
+
22
+ <DuplicateClass errorLevel="info" />
23
+ <!--
24
+ Psalm isn't correctly identifying the guard conditions that return
25
+ early if a class already exists.
26
+ -->
27
+ <RedundantConditionGivenDocblockType errorLevel="suppress" />
28
+
29
+ <TooFewArguments errorLevel="info" />
30
+
31
+ <DocblockTypeContradiction errorLevel="info" />
32
+ <RedundantCondition errorLevel="info" />
33
+ <!--
34
+ Redundancy is good for PHP <7
35
+ -->
36
+
37
+ <TypeDoesNotContainType errorLevel="info" />
38
+ <!--
39
+ This mostly fails on `PHP_INT_SIZE === 4`
40
+ -->
41
+
42
+ </issueHandlers>
43
+ </psalm>
crypto/vendor/paragonie/sodium_compat/src/Compat.php CHANGED
@@ -45,11 +45,17 @@ class ParagonIE_Sodium_Compat
45
  */
46
  public static $fastMult = false;
47
 
 
 
48
  const LIBRARY_VERSION_MAJOR = 9;
49
  const LIBRARY_VERSION_MINOR = 1;
50
  const VERSION_STRING = 'polyfill-1.0.8';
51
 
52
  // From libsodium
 
 
 
 
53
  const CRYPTO_AEAD_AES256GCM_KEYBYTES = 32;
54
  const CRYPTO_AEAD_AES256GCM_NSECBYTES = 0;
55
  const CRYPTO_AEAD_AES256GCM_NPUBBYTES = 12;
@@ -75,10 +81,17 @@ class ParagonIE_Sodium_Compat
75
  const CRYPTO_BOX_MACBYTES = 16;
76
  const CRYPTO_BOX_NONCEBYTES = 24;
77
  const CRYPTO_BOX_SEEDBYTES = 32;
 
 
 
 
78
  const CRYPTO_KX_BYTES = 32;
 
79
  const CRYPTO_KX_SEEDBYTES = 32;
 
80
  const CRYPTO_KX_PUBLICKEYBYTES = 32;
81
  const CRYPTO_KX_SECRETKEYBYTES = 32;
 
82
  const CRYPTO_GENERICHASH_BYTES = 32;
83
  const CRYPTO_GENERICHASH_BYTES_MIN = 16;
84
  const CRYPTO_GENERICHASH_BYTES_MAX = 64;
@@ -86,7 +99,7 @@ class ParagonIE_Sodium_Compat
86
  const CRYPTO_GENERICHASH_KEYBYTES_MIN = 16;
87
  const CRYPTO_GENERICHASH_KEYBYTES_MAX = 64;
88
  const CRYPTO_PWHASH_SALTBYTES = 16;
89
- const CRYPTO_PWHASH_STRPREFIX = '$argon2i$';
90
  const CRYPTO_PWHASH_ALG_ARGON2I13 = 1;
91
  const CRYPTO_PWHASH_ALG_ARGON2ID13 = 2;
92
  const CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE = 33554432;
@@ -108,6 +121,14 @@ class ParagonIE_Sodium_Compat
108
  const CRYPTO_SECRETBOX_KEYBYTES = 32;
109
  const CRYPTO_SECRETBOX_MACBYTES = 16;
110
  const CRYPTO_SECRETBOX_NONCEBYTES = 24;
 
 
 
 
 
 
 
 
111
  const CRYPTO_SIGN_BYTES = 64;
112
  const CRYPTO_SIGN_SEEDBYTES = 32;
113
  const CRYPTO_SIGN_PUBLICKEYBYTES = 32;
@@ -116,6 +137,110 @@ class ParagonIE_Sodium_Compat
116
  const CRYPTO_STREAM_KEYBYTES = 32;
117
  const CRYPTO_STREAM_NONCEBYTES = 24;
118
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
119
  /**
120
  * Cache-timing-safe implementation of bin2hex().
121
  *
@@ -1311,6 +1436,7 @@ class ParagonIE_Sodium_Compat
1311
  * @throws TypeError
1312
  * @psalm-suppress MixedArgument
1313
  * @psalm-suppress ReferenceConstraintViolation
 
1314
  */
1315
  public static function crypto_generichash_final(&$ctx, $length = self::CRYPTO_GENERICHASH_BYTES)
1316
  {
@@ -1325,6 +1451,14 @@ class ParagonIE_Sodium_Compat
1325
  $func = '\\Sodium\\crypto_generichash_final';
1326
  return (string) $func($ctx, $length);
1327
  }
 
 
 
 
 
 
 
 
1328
  if (PHP_INT_SIZE === 4) {
1329
  $result = ParagonIE_Sodium_Crypto32::generichash_final($ctx, $length);
1330
  } else {
@@ -1380,6 +1514,53 @@ class ParagonIE_Sodium_Compat
1380
  return ParagonIE_Sodium_Crypto::generichash_init($key, $length);
1381
  }
1382
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1383
  /**
1384
  * Update a BLAKE2b hashing context with additional data.
1385
  *
@@ -1425,6 +1606,65 @@ class ParagonIE_Sodium_Compat
1425
  return random_bytes(self::CRYPTO_GENERICHASH_KEYBYTES);
1426
  }
1427
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1428
  /**
1429
  * Perform a key exchange, between a designated client and a server.
1430
  *
@@ -1511,6 +1751,149 @@ class ParagonIE_Sodium_Compat
1511
  );
1512
  }
1513
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1514
  /**
1515
  * @param int $outlen
1516
  * @param string $passwd
@@ -1593,6 +1976,36 @@ class ParagonIE_Sodium_Compat
1593
  );
1594
  }
1595
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1596
  /**
1597
  * @param string $passwd
1598
  * @param string $hash
@@ -1988,6 +2401,111 @@ class ParagonIE_Sodium_Compat
1988
  return ParagonIE_Sodium_Crypto::secretbox_xchacha20poly1305_open($ciphertext, $nonce, $key);
1989
  }
1990
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1991
  /**
1992
  * Calculates a SipHash-2-4 hash of a message for a given key.
1993
  *
@@ -2137,6 +2655,32 @@ class ParagonIE_Sodium_Compat
2137
  return ParagonIE_Sodium_Core_Ed25519::keypair();
2138
  }
2139
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2140
  /**
2141
  * Generate an Ed25519 keypair from a seed.
2142
  *
@@ -2576,15 +3120,14 @@ class ParagonIE_Sodium_Compat
2576
  * with (sans pwhash and memzero).
2577
  *
2578
  * @return int
2579
- * @psalm-suppress MixedInferredReturnType
2580
- * @psalm-suppress UndefinedFunction
2581
  */
2582
  public static function library_version_major()
2583
  {
2584
- if (self::useNewSodiumAPI()) {
2585
- return sodium_library_version_major();
2586
  }
2587
  if (self::use_fallback('library_version_major')) {
 
2588
  return (int) call_user_func('\\Sodium\\library_version_major');
2589
  }
2590
  return self::LIBRARY_VERSION_MAJOR;
@@ -2595,15 +3138,14 @@ class ParagonIE_Sodium_Compat
2595
  * with (sans pwhash and memzero).
2596
  *
2597
  * @return int
2598
- * @psalm-suppress MixedInferredReturnType
2599
- * @psalm-suppress UndefinedFunction
2600
  */
2601
  public static function library_version_minor()
2602
  {
2603
- if (self::useNewSodiumAPI()) {
2604
- return sodium_library_version_minor();
2605
  }
2606
  if (self::use_fallback('library_version_minor')) {
 
2607
  return (int) call_user_func('\\Sodium\\library_version_minor');
2608
  }
2609
  return self::LIBRARY_VERSION_MINOR;
@@ -2625,6 +3167,9 @@ class ParagonIE_Sodium_Compat
2625
  ParagonIE_Sodium_Core_Util::declareScalarType($left, 'string', 1);
2626
  ParagonIE_Sodium_Core_Util::declareScalarType($right, 'string', 2);
2627
 
 
 
 
2628
  if (self::use_fallback('memcmp')) {
2629
  return (int) call_user_func('\\Sodium\\memcmp', $left, $right);
2630
  }
@@ -2669,6 +3214,158 @@ class ParagonIE_Sodium_Compat
2669
  );
2670
  }
2671
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2672
  /**
2673
  * Will sodium_compat run fast on the current hardware and PHP configuration?
2674
  *
45
  */
46
  public static $fastMult = false;
47
 
48
+ const LIBRARY_MAJOR_VERSION = 9;
49
+ const LIBRARY_MINOR_VERSION = 1;
50
  const LIBRARY_VERSION_MAJOR = 9;
51
  const LIBRARY_VERSION_MINOR = 1;
52
  const VERSION_STRING = 'polyfill-1.0.8';
53
 
54
  // From libsodium
55
+ const BASE64_VARIANT_ORIGINAL = 1;
56
+ const BASE64_VARIANT_ORIGINAL_NO_PADDING = 3;
57
+ const BASE64_VARIANT_URLSAFE = 5;
58
+ const BASE64_VARIANT_URLSAFE_NO_PADDING = 7;
59
  const CRYPTO_AEAD_AES256GCM_KEYBYTES = 32;
60
  const CRYPTO_AEAD_AES256GCM_NSECBYTES = 0;
61
  const CRYPTO_AEAD_AES256GCM_NPUBBYTES = 12;
81
  const CRYPTO_BOX_MACBYTES = 16;
82
  const CRYPTO_BOX_NONCEBYTES = 24;
83
  const CRYPTO_BOX_SEEDBYTES = 32;
84
+ const CRYPTO_KDF_BYTES_MIN = 16;
85
+ const CRYPTO_KDF_BYTES_MAX = 64;
86
+ const CRYPTO_KDF_CONTEXTBYTES = 8;
87
+ const CRYPTO_KDF_KEYBYTES = 32;
88
  const CRYPTO_KX_BYTES = 32;
89
+ const CRYPTO_KX_PRIMITIVE = 'x25519blake2b';
90
  const CRYPTO_KX_SEEDBYTES = 32;
91
+ const CRYPTO_KX_KEYPAIRBYTES = 64;
92
  const CRYPTO_KX_PUBLICKEYBYTES = 32;
93
  const CRYPTO_KX_SECRETKEYBYTES = 32;
94
+ const CRYPTO_KX_SESSIONKEYBYTES = 32;
95
  const CRYPTO_GENERICHASH_BYTES = 32;
96
  const CRYPTO_GENERICHASH_BYTES_MIN = 16;
97
  const CRYPTO_GENERICHASH_BYTES_MAX = 64;
99
  const CRYPTO_GENERICHASH_KEYBYTES_MIN = 16;
100
  const CRYPTO_GENERICHASH_KEYBYTES_MAX = 64;
101
  const CRYPTO_PWHASH_SALTBYTES = 16;
102
+ const CRYPTO_PWHASH_STRPREFIX = '$argon2id$';
103
  const CRYPTO_PWHASH_ALG_ARGON2I13 = 1;
104
  const CRYPTO_PWHASH_ALG_ARGON2ID13 = 2;
105
  const CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE = 33554432;
121
  const CRYPTO_SECRETBOX_KEYBYTES = 32;
122
  const CRYPTO_SECRETBOX_MACBYTES = 16;
123
  const CRYPTO_SECRETBOX_NONCEBYTES = 24;
124
+ const CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_ABYTES = 17;
125
+ const CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_HEADERBYTES = 24;
126
+ const CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_KEYBYTES = 32;
127
+ const CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_PUSH = 0;
128
+ const CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_PULL = 1;
129
+ const CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_REKEY = 2;
130
+ const CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_FINAL = 3;
131
+ const CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_MESSAGEBYTES_MAX = 0x3fffffff80;
132
  const CRYPTO_SIGN_BYTES = 64;
133
  const CRYPTO_SIGN_SEEDBYTES = 32;
134
  const CRYPTO_SIGN_PUBLICKEYBYTES = 32;
137
  const CRYPTO_STREAM_KEYBYTES = 32;
138
  const CRYPTO_STREAM_NONCEBYTES = 24;
139
 
140
+ /**
141
+ * Add two numbers (little-endian unsigned), storing the value in the first
142
+ * parameter.
143
+ *
144
+ * This mutates $val.
145
+ *
146
+ * @param string $val
147
+ * @param string $addv
148
+ * @return void
149
+ * @throws SodiumException
150
+ */
151
+ public static function add(&$val, $addv)
152
+ {
153
+ $val_len = ParagonIE_Sodium_Core_Util::strlen($val);
154
+ $addv_len = ParagonIE_Sodium_Core_Util::strlen($addv);
155
+ if ($val_len !== $addv_len) {
156
+ throw new SodiumException('values must have the same length');
157
+ }
158
+ $A = ParagonIE_Sodium_Core_Util::stringToIntArray($val);
159
+ $B = ParagonIE_Sodium_Core_Util::stringToIntArray($addv);
160
+
161
+ $c = 0;
162
+ for ($i = 0; $i < $val_len; $i++) {
163
+ $c += ($A[$i] + $B[$i]);
164
+ $A[$i] = ($c & 0xff);
165
+ $c >>= 8;
166
+ }
167
+ $val = ParagonIE_Sodium_Core_Util::intArrayToString($A);
168
+ }
169
+
170
+ /**
171
+ * @param string $encoded
172
+ * @param int $variant
173
+ * @param string $ignore
174
+ * @return string
175
+ * @throws SodiumException
176
+ */
177
+ public static function base642bin($encoded, $variant, $ignore = '')
178
+ {
179
+ /* Type checks: */
180
+ ParagonIE_Sodium_Core_Util::declareScalarType($encoded, 'string', 1);
181
+
182
+ /** @var string $encoded */
183
+ $encoded = (string) $encoded;
184
+ if (ParagonIE_Sodium_Core_Util::strlen($encoded) === 0) {
185
+ return '';
186
+ }
187
+
188
+ // Just strip before decoding
189
+ if (!empty($ignore)) {
190
+ $encoded = str_replace($ignore, '', $encoded);
191
+ }
192
+
193
+ try {
194
+ switch ($variant) {
195
+ case self::BASE64_VARIANT_ORIGINAL:
196
+ return ParagonIE_Sodium_Core_Base64_Original::decode($encoded, true);
197
+ case self::BASE64_VARIANT_ORIGINAL_NO_PADDING:
198
+ return ParagonIE_Sodium_Core_Base64_Original::decode($encoded, false);
199
+ case self::BASE64_VARIANT_URLSAFE:
200
+ return ParagonIE_Sodium_Core_Base64_UrlSafe::decode($encoded, true);
201
+ case self::BASE64_VARIANT_URLSAFE_NO_PADDING:
202
+ return ParagonIE_Sodium_Core_Base64_UrlSafe::decode($encoded, false);
203
+ default:
204
+ throw new SodiumException('invalid base64 variant identifier');
205
+ }
206
+ } catch (Exception $ex) {
207
+ if ($ex instanceof SodiumException) {
208
+ throw $ex;
209
+ }
210
+ throw new SodiumException('invalid base64 string');
211
+ }
212
+ }
213
+
214
+ /**
215
+ * @param string $decoded
216
+ * @param int $variant
217
+ * @return string
218
+ * @throws SodiumException
219
+ */
220
+ public static function bin2base64($decoded, $variant)
221
+ {
222
+ /* Type checks: */
223
+ ParagonIE_Sodium_Core_Util::declareScalarType($decoded, 'string', 1);
224
+ /** @var string $decoded */
225
+ $decoded = (string) $decoded;
226
+ if (ParagonIE_Sodium_Core_Util::strlen($decoded) === 0) {
227
+ return '';
228
+ }
229
+
230
+ switch ($variant) {
231
+ case self::BASE64_VARIANT_ORIGINAL:
232
+ return ParagonIE_Sodium_Core_Base64_Original::encode($decoded);
233
+ case self::BASE64_VARIANT_ORIGINAL_NO_PADDING:
234
+ return ParagonIE_Sodium_Core_Base64_Original::encodeUnpadded($decoded);
235
+ case self::BASE64_VARIANT_URLSAFE:
236
+ return ParagonIE_Sodium_Core_Base64_UrlSafe::encode($decoded);
237
+ case self::BASE64_VARIANT_URLSAFE_NO_PADDING:
238
+ return ParagonIE_Sodium_Core_Base64_UrlSafe::encodeUnpadded($decoded);
239
+ default:
240
+ throw new SodiumException('invalid base64 variant identifier');
241
+ }
242
+ }
243
+
244
  /**
245
  * Cache-timing-safe implementation of bin2hex().
246
  *
1436
  * @throws TypeError
1437
  * @psalm-suppress MixedArgument
1438
  * @psalm-suppress ReferenceConstraintViolation
1439
+ * @psalm-suppress ConflictingReferenceConstraint
1440
  */
1441
  public static function crypto_generichash_final(&$ctx, $length = self::CRYPTO_GENERICHASH_BYTES)
1442
  {
1451
  $func = '\\Sodium\\crypto_generichash_final';
1452
  return (string) $func($ctx, $length);
1453
  }
1454
+ if ($length < 1) {
1455
+ try {
1456
+ self::memzero($ctx);
1457
+ } catch (SodiumException $ex) {
1458
+ unset($ctx);
1459
+ }
1460
+ return '';
1461
+ }
1462
  if (PHP_INT_SIZE === 4) {
1463
  $result = ParagonIE_Sodium_Crypto32::generichash_final($ctx, $length);
1464
  } else {
1514
  return ParagonIE_Sodium_Crypto::generichash_init($key, $length);
1515
  }
1516
 
1517
+ /**
1518
+ * Initialize a BLAKE2b hashing context, for use in a streaming interface.
1519
+ *
1520
+ * @param string|null $key If specified must be a string between 16 and 64 bytes
1521
+ * @param int $length The size of the desired hash output
1522
+ * @param string $salt Salt (up to 16 bytes)
1523
+ * @param string $personal Personalization string (up to 16 bytes)
1524
+ * @return string A BLAKE2 hashing context, encoded as a string
1525
+ * (To be 100% compatible with ext/libsodium)
1526
+ * @throws SodiumException
1527
+ * @throws TypeError
1528
+ * @psalm-suppress MixedArgument
1529
+ */
1530
+ public static function crypto_generichash_init_salt_personal(
1531
+ $key = '',
1532
+ $length = self::CRYPTO_GENERICHASH_BYTES,
1533
+ $salt = '',
1534
+ $personal = ''
1535
+ ) {
1536
+ /* Type checks: */
1537
+ if (is_null($key)) {
1538
+ $key = '';
1539
+ }
1540
+ ParagonIE_Sodium_Core_Util::declareScalarType($key, 'string', 1);
1541
+ ParagonIE_Sodium_Core_Util::declareScalarType($length, 'int', 2);
1542
+ ParagonIE_Sodium_Core_Util::declareScalarType($salt, 'string', 3);
1543
+ ParagonIE_Sodium_Core_Util::declareScalarType($personal, 'string', 4);
1544
+ $salt = str_pad($salt, 16, "\0", STR_PAD_RIGHT);
1545
+ $personal = str_pad($personal, 16, "\0", STR_PAD_RIGHT);
1546
+
1547
+ /* Input validation: */
1548
+ if (!empty($key)) {
1549
+ /*
1550
+ if (ParagonIE_Sodium_Core_Util::strlen($key) < self::CRYPTO_GENERICHASH_KEYBYTES_MIN) {
1551
+ throw new SodiumException('Unsupported key size. Must be at least CRYPTO_GENERICHASH_KEYBYTES_MIN bytes long.');
1552
+ }
1553
+ */
1554
+ if (ParagonIE_Sodium_Core_Util::strlen($key) > self::CRYPTO_GENERICHASH_KEYBYTES_MAX) {
1555
+ throw new SodiumException('Unsupported key size. Must be at most CRYPTO_GENERICHASH_KEYBYTES_MAX bytes long.');
1556
+ }
1557
+ }
1558
+ if (PHP_INT_SIZE === 4) {
1559
+ return ParagonIE_Sodium_Crypto32::generichash_init_salt_personal($key, $length, $salt, $personal);
1560
+ }
1561
+ return ParagonIE_Sodium_Crypto::generichash_init_salt_personal($key, $length, $salt, $personal);
1562
+ }
1563
+
1564
  /**
1565
  * Update a BLAKE2b hashing context with additional data.
1566
  *
1606
  return random_bytes(self::CRYPTO_GENERICHASH_KEYBYTES);
1607
  }
1608
 
1609
+ /**
1610
+ * @param int $subkey_len
1611
+ * @param int $subkey_id
1612
+ * @param string $context
1613
+ * @param string $key
1614
+ * @return string
1615
+ * @throws SodiumException
1616
+ */
1617
+ public static function crypto_kdf_derive_from_key(
1618
+ $subkey_len,
1619
+ $subkey_id,
1620
+ $context,
1621
+ $key
1622
+ ) {
1623
+ ParagonIE_Sodium_Core_Util::declareScalarType($subkey_len, 'int', 1);
1624
+ ParagonIE_Sodium_Core_Util::declareScalarType($subkey_id, 'int', 2);
1625
+ ParagonIE_Sodium_Core_Util::declareScalarType($context, 'string', 3);
1626
+ ParagonIE_Sodium_Core_Util::declareScalarType($key, 'string', 4);
1627
+ $subkey_id = (int) $subkey_id;
1628
+ $subkey_len = (int) $subkey_len;
1629
+ $context = (string) $context;
1630
+ $key = (string) $key;
1631
+
1632
+ if ($subkey_len < self::CRYPTO_KDF_BYTES_MIN) {
1633
+ throw new SodiumException('subkey cannot be smaller than SODIUM_CRYPTO_KDF_BYTES_MIN');
1634
+ }
1635
+ if ($subkey_len > self::CRYPTO_KDF_BYTES_MAX) {
1636
+ throw new SodiumException('subkey cannot be larger than SODIUM_CRYPTO_KDF_BYTES_MAX');
1637
+ }
1638
+ if ($subkey_id < 0) {
1639
+ throw new SodiumException('subkey_id cannot be negative');
1640
+ }
1641
+ if (ParagonIE_Sodium_Core_Util::strlen($context) !== self::CRYPTO_KDF_CONTEXTBYTES) {
1642
+ throw new SodiumException('context should be SODIUM_CRYPTO_KDF_CONTEXTBYTES bytes');
1643
+ }
1644
+ if (ParagonIE_Sodium_Core_Util::strlen($key) !== self::CRYPTO_KDF_KEYBYTES) {
1645
+ throw new SodiumException('key should be SODIUM_CRYPTO_KDF_KEYBYTES bytes');
1646
+ }
1647
+
1648
+ $salt = ParagonIE_Sodium_Core_Util::store64_le($subkey_id);
1649
+ $state = self::crypto_generichash_init_salt_personal(
1650
+ $key,
1651
+ $subkey_len,
1652
+ $salt,
1653
+ $context
1654
+ );
1655
+ return self::crypto_generichash_final($state, $subkey_len);
1656
+ }
1657
+
1658
+ /**
1659
+ * @return string
1660
+ * @throws Exception
1661
+ * @throws Error
1662
+ */
1663
+ public static function crypto_kdf_keygen()
1664
+ {
1665
+ return random_bytes(self::CRYPTO_KDF_KEYBYTES);
1666
+ }
1667
+
1668
  /**
1669
  * Perform a key exchange, between a designated client and a server.
1670
  *
1751
  );
1752
  }
1753
 
1754
+ /**
1755
+ * @param string $seed
1756
+ * @return string
1757
+ * @throws SodiumException
1758
+ */
1759
+ public static function crypto_kx_seed_keypair($seed)
1760
+ {
1761
+ ParagonIE_Sodium_Core_Util::declareScalarType($seed, 'string', 1);
1762
+
1763
+ $seed = (string) $seed;
1764
+
1765
+ if (ParagonIE_Sodium_Core_Util::strlen($seed) !== self::CRYPTO_KX_SEEDBYTES) {
1766
+ throw new SodiumException('seed must be SODIUM_CRYPTO_KX_SEEDBYTES bytes');
1767
+ }
1768
+
1769
+ $sk = self::crypto_generichash($seed, '', self::CRYPTO_KX_SECRETKEYBYTES);
1770
+ $pk = self::crypto_scalarmult_base($sk);
1771
+ return $sk . $pk;
1772
+ }
1773
+
1774
+ /**
1775
+ * @return string
1776
+ * @throws Exception
1777
+ */
1778
+ public static function crypto_kx_keypair()
1779
+ {
1780
+ $sk = self::randombytes_buf(self::CRYPTO_KX_SECRETKEYBYTES);
1781
+ $pk = self::crypto_scalarmult_base($sk);
1782
+ return $sk . $pk;
1783
+ }
1784
+
1785
+ /**
1786
+ * @param string $keypair
1787
+ * @param string $serverPublicKey
1788
+ * @return array{0: string, 1: string}
1789
+ * @throws SodiumException
1790
+ */
1791
+ public static function crypto_kx_client_session_keys($keypair, $serverPublicKey)
1792
+ {
1793
+ ParagonIE_Sodium_Core_Util::declareScalarType($keypair, 'string', 1);
1794
+ ParagonIE_Sodium_Core_Util::declareScalarType($serverPublicKey, 'string', 2);
1795
+
1796
+ $keypair = (string) $keypair;
1797
+ $serverPublicKey = (string) $serverPublicKey;
1798
+
1799
+ if (ParagonIE_Sodium_Core_Util::strlen($keypair) !== self::CRYPTO_KX_KEYPAIRBYTES) {
1800
+ throw new SodiumException('keypair should be SODIUM_CRYPTO_KX_KEYPAIRBYTES bytes');
1801
+ }
1802
+ if (ParagonIE_Sodium_Core_Util::strlen($serverPublicKey) !== self::CRYPTO_KX_PUBLICKEYBYTES) {
1803
+ throw new SodiumException('public keys must be SODIUM_CRYPTO_KX_PUBLICKEYBYTES bytes');
1804
+ }
1805
+
1806
+ $sk = self::crypto_kx_secretkey($keypair);
1807
+ $pk = self::crypto_kx_publickey($keypair);
1808
+ $h = self::crypto_generichash_init(null, self::CRYPTO_KX_SESSIONKEYBYTES * 2);
1809
+ self::crypto_generichash_update($h, self::crypto_scalarmult($sk, $serverPublicKey));
1810
+ self::crypto_generichash_update($h, $pk);
1811
+ self::crypto_generichash_update($h, $serverPublicKey);
1812
+ $sessionKeys = self::crypto_generichash_final($h, self::CRYPTO_KX_SESSIONKEYBYTES * 2);
1813
+ return array(
1814
+ ParagonIE_Sodium_Core_Util::substr(
1815
+ $sessionKeys,
1816
+ 0,
1817
+ self::CRYPTO_KX_SESSIONKEYBYTES
1818
+ ),
1819
+ ParagonIE_Sodium_Core_Util::substr(
1820
+ $sessionKeys,
1821
+ self::CRYPTO_KX_SESSIONKEYBYTES,
1822
+ self::CRYPTO_KX_SESSIONKEYBYTES
1823
+ )
1824
+ );
1825
+ }
1826
+
1827
+ /**
1828
+ * @param string $keypair
1829
+ * @param string $clientPublicKey
1830
+ * @return array{0: string, 1: string}
1831
+ * @throws SodiumException
1832
+ */
1833
+ public static function crypto_kx_server_session_keys($keypair, $clientPublicKey)
1834
+ {
1835
+ ParagonIE_Sodium_Core_Util::declareScalarType($keypair, 'string', 1);
1836
+ ParagonIE_Sodium_Core_Util::declareScalarType($clientPublicKey, 'string', 2);
1837
+
1838
+ $keypair = (string) $keypair;
1839
+ $clientPublicKey = (string) $clientPublicKey;
1840
+
1841
+ if (ParagonIE_Sodium_Core_Util::strlen($keypair) !== self::CRYPTO_KX_KEYPAIRBYTES) {
1842
+ throw new SodiumException('keypair should be SODIUM_CRYPTO_KX_KEYPAIRBYTES bytes');
1843
+ }
1844
+ if (ParagonIE_Sodium_Core_Util::strlen($clientPublicKey) !== self::CRYPTO_KX_PUBLICKEYBYTES) {
1845
+ throw new SodiumException('public keys must be SODIUM_CRYPTO_KX_PUBLICKEYBYTES bytes');
1846
+ }
1847
+
1848
+ $sk = self::crypto_kx_secretkey($keypair);
1849
+ $pk = self::crypto_kx_publickey($keypair);
1850
+ $h = self::crypto_generichash_init(null, self::CRYPTO_KX_SESSIONKEYBYTES * 2);
1851
+ self::crypto_generichash_update($h, self::crypto_scalarmult($sk, $clientPublicKey));
1852
+ self::crypto_generichash_update($h, $clientPublicKey);
1853
+ self::crypto_generichash_update($h, $pk);
1854
+ $sessionKeys = self::crypto_generichash_final($h, self::CRYPTO_KX_SESSIONKEYBYTES * 2);
1855
+ return array(
1856
+ ParagonIE_Sodium_Core_Util::substr(
1857
+ $sessionKeys,
1858
+ self::CRYPTO_KX_SESSIONKEYBYTES,
1859
+ self::CRYPTO_KX_SESSIONKEYBYTES
1860
+ ),
1861
+ ParagonIE_Sodium_Core_Util::substr(
1862
+ $sessionKeys,
1863
+ 0,
1864
+ self::CRYPTO_KX_SESSIONKEYBYTES
1865
+ )
1866
+ );
1867
+ }
1868
+
1869
+ /**
1870
+ * @param string $kp
1871
+ * @return string
1872
+ * @throws SodiumException
1873
+ */
1874
+ public static function crypto_kx_secretkey($kp)
1875
+ {
1876
+ return ParagonIE_Sodium_Core_Util::substr(
1877
+ $kp,
1878
+ 0,
1879
+ self::CRYPTO_KX_SECRETKEYBYTES
1880
+ );
1881
+ }
1882
+
1883
+ /**
1884
+ * @param string $kp
1885
+ * @return string
1886
+ * @throws SodiumException
1887
+ */
1888
+ public static function crypto_kx_publickey($kp)
1889
+ {
1890
+ return ParagonIE_Sodium_Core_Util::substr(
1891
+ $kp,
1892
+ self::CRYPTO_KX_SECRETKEYBYTES,
1893
+ self::CRYPTO_KX_PUBLICKEYBYTES
1894
+ );
1895
+ }
1896
+
1897
  /**
1898
  * @param int $outlen
1899
  * @param string $passwd
1976
  );
1977
  }
1978
 
1979
+ /**
1980
+ * Do we need to rehash this password?
1981
+ *
1982
+ * @param string $hash
1983
+ * @param int $opslimit
1984
+ * @param int $memlimit
1985
+ * @return bool
1986
+ * @throws SodiumException
1987
+ */
1988
+ public static function crypto_pwhash_str_needs_rehash($hash, $opslimit, $memlimit)
1989
+ {
1990
+ ParagonIE_Sodium_Core_Util::declareScalarType($hash, 'string', 1);
1991
+ ParagonIE_Sodium_Core_Util::declareScalarType($opslimit, 'int', 2);
1992
+ ParagonIE_Sodium_Core_Util::declareScalarType($memlimit, 'int', 3);
1993
+
1994
+ // Just grab the first 4 pieces.
1995
+ $pieces = explode('$', (string) $hash);
1996
+ $prefix = implode('$', array_slice($pieces, 0, 4));
1997
+
1998
+ // Rebuild the expected header.
1999
+ /** @var int $ops */
2000
+ $ops = (int) $opslimit;
2001
+ /** @var int $mem */
2002
+ $mem = (int) $memlimit >> 10;
2003
+ $encoded = self::CRYPTO_PWHASH_STRPREFIX . 'v=19$m=' . $mem . ',t=' . $ops . ',p=1';
2004
+
2005
+ // Do they match? If so, we don't need to rehash, so return false.
2006
+ return !ParagonIE_Sodium_Core_Util::hashEquals($encoded, $prefix);
2007
+ }
2008
+
2009
  /**
2010
  * @param string $passwd
2011
  * @param string $hash
2401
  return ParagonIE_Sodium_Crypto::secretbox_xchacha20poly1305_open($ciphertext, $nonce, $key);
2402
  }
2403
 
2404
+ /**
2405
+ * @param string $key
2406
+ * @return array<int, string> Returns a state and a header.
2407
+ * @throws Exception
2408
+ * @throws SodiumException
2409
+ */
2410
+ public static function crypto_secretstream_xchacha20poly1305_init_push($key)
2411
+ {
2412
+ if (PHP_INT_SIZE === 4) {
2413
+ return ParagonIE_Sodium_Crypto32::secretstream_xchacha20poly1305_init_push($key);
2414
+ }
2415
+ return ParagonIE_Sodium_Crypto::secretstream_xchacha20poly1305_init_push($key);
2416
+ }
2417
+
2418
+ /**
2419
+ * @param string $header
2420
+ * @param string $key
2421
+ * @return string Returns a state.
2422
+ * @throws Exception
2423
+ */
2424
+ public static function crypto_secretstream_xchacha20poly1305_init_pull($header, $key)
2425
+ {
2426
+ if (ParagonIE_Sodium_Core_Util::strlen($header) < self::CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_HEADERBYTES) {
2427
+ throw new SodiumException(
2428
+ 'header size should be SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_HEADERBYTES bytes'
2429
+ );
2430
+ }
2431
+ if (PHP_INT_SIZE === 4) {
2432
+ return ParagonIE_Sodium_Crypto32::secretstream_xchacha20poly1305_init_pull($key, $header);
2433
+ }
2434
+ return ParagonIE_Sodium_Crypto::secretstream_xchacha20poly1305_init_pull($key, $header);
2435
+ }
2436
+
2437
+ /**
2438
+ * @param string $state
2439
+ * @param string $msg
2440
+ * @param string $aad
2441
+ * @param int $tag
2442
+ * @return string
2443
+ * @throws SodiumException
2444
+ */
2445
+ public static function crypto_secretstream_xchacha20poly1305_push(&$state, $msg, $aad = '', $tag = 0)
2446
+ {
2447
+ if (PHP_INT_SIZE === 4) {
2448
+ return ParagonIE_Sodium_Crypto32::secretstream_xchacha20poly1305_push(
2449
+ $state,
2450
+ $msg,
2451
+ $aad,
2452
+ $tag
2453
+ );
2454
+ }
2455
+ return ParagonIE_Sodium_Crypto::secretstream_xchacha20poly1305_push(
2456
+ $state,
2457
+ $msg,
2458
+ $aad,
2459
+ $tag
2460
+ );
2461
+ }
2462
+
2463
+ /**
2464
+ * @param string $state
2465
+ * @param string $msg
2466
+ * @param string $aad
2467
+ * @return bool|array{0: string, 1: int}
2468
+ * @throws SodiumException
2469
+ */
2470
+ public static function crypto_secretstream_xchacha20poly1305_pull(&$state, $msg, $aad = '')
2471
+ {
2472
+ if (PHP_INT_SIZE === 4) {
2473
+ return ParagonIE_Sodium_Crypto32::secretstream_xchacha20poly1305_pull(
2474
+ $state,
2475
+ $msg,
2476
+ $aad
2477
+ );
2478
+ }
2479
+ return ParagonIE_Sodium_Crypto::secretstream_xchacha20poly1305_pull(
2480
+ $state,
2481
+ $msg,
2482
+ $aad
2483
+ );
2484
+ }
2485
+
2486
+ /**
2487
+ * @return string
2488
+ * @throws Exception
2489
+ */
2490
+ public static function crypto_secretstream_xchacha20poly1305_keygen()
2491
+ {
2492
+ return random_bytes(self::CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_KEYBYTES);
2493
+ }
2494
+
2495
+ /**
2496
+ * @param string $state
2497
+ * @return void
2498
+ * @throws SodiumException
2499
+ */
2500
+ public static function crypto_secretstream_xchacha20poly1305_rekey(&$state)
2501
+ {
2502
+ if (PHP_INT_SIZE === 4) {
2503
+ ParagonIE_Sodium_Crypto32::secretstream_xchacha20poly1305_rekey($state);
2504
+ } else {
2505
+ ParagonIE_Sodium_Crypto::secretstream_xchacha20poly1305_rekey($state);
2506
+ }
2507
+ }
2508
+
2509
  /**
2510
  * Calculates a SipHash-2-4 hash of a message for a given key.
2511
  *
2655
  return ParagonIE_Sodium_Core_Ed25519::keypair();
2656
  }
2657
 
2658
+ /**
2659
+ * @param string $sk
2660
+ * @param string $pk
2661
+ * @return string
2662
+ * @throws SodiumException
2663
+ */
2664
+ public static function crypto_sign_keypair_from_secretkey_and_publickey($sk, $pk)
2665
+ {
2666
+ ParagonIE_Sodium_Core_Util::declareScalarType($sk, 'string', 1);
2667
+ ParagonIE_Sodium_Core_Util::declareScalarType($pk, 'string', 1);
2668
+ $sk = (string) $sk;
2669
+ $pk = (string) $pk;
2670
+
2671
+ if (ParagonIE_Sodium_Core_Util::strlen($sk) !== self::CRYPTO_SIGN_SECRETKEYBYTES) {
2672
+ throw new SodiumException('secretkey should be SODIUM_CRYPTO_SIGN_SECRETKEYBYTES bytes');
2673
+ }
2674
+ if (ParagonIE_Sodium_Core_Util::strlen($pk) !== self::CRYPTO_SIGN_PUBLICKEYBYTES) {
2675
+ throw new SodiumException('publickey should be SODIUM_CRYPTO_SIGN_PUBLICKEYBYTES bytes');
2676
+ }
2677
+
2678
+ if (self::useNewSodiumAPI()) {
2679
+ return sodium_crypto_sign_keypair_from_secretkey_and_publickey($sk, $pk);
2680
+ }
2681
+ return $sk . $pk;
2682
+ }
2683
+
2684
  /**
2685
  * Generate an Ed25519 keypair from a seed.
2686
  *
3120
  * with (sans pwhash and memzero).
3121
  *
3122
  * @return int
 
 
3123
  */
3124
  public static function library_version_major()
3125
  {
3126
+ if (self::useNewSodiumAPI() && defined('SODIUM_LIBRARY_MAJOR_VERSION')) {
3127
+ return SODIUM_LIBRARY_MAJOR_VERSION;
3128
  }
3129
  if (self::use_fallback('library_version_major')) {
3130
+ /** @psalm-suppress UndefinedFunction */
3131
  return (int) call_user_func('\\Sodium\\library_version_major');
3132
  }
3133
  return self::LIBRARY_VERSION_MAJOR;
3138
  * with (sans pwhash and memzero).
3139
  *
3140
  * @return int
 
 
3141
  */
3142
  public static function library_version_minor()
3143
  {
3144
+ if (self::useNewSodiumAPI() && defined('SODIUM_LIBRARY_MINOR_VERSION')) {
3145
+ return SODIUM_LIBRARY_MINOR_VERSION;
3146
  }
3147
  if (self::use_fallback('library_version_minor')) {
3148
+ /** @psalm-suppress UndefinedFunction */
3149
  return (int) call_user_func('\\Sodium\\library_version_minor');
3150
  }
3151
  return self::LIBRARY_VERSION_MINOR;
3167
  ParagonIE_Sodium_Core_Util::declareScalarType($left, 'string', 1);
3168
  ParagonIE_Sodium_Core_Util::declareScalarType($right, 'string', 2);
3169
 
3170
+ if (self::useNewSodiumAPI()) {
3171
+ return sodium_memcmp($left, $right);
3172
+ }
3173
  if (self::use_fallback('memcmp')) {
3174
  return (int) call_user_func('\\Sodium\\memcmp', $left, $right);
3175
  }
3214
  );
3215
  }
3216
 
3217
+ /**
3218
+ * @param string $unpadded
3219
+ * @param int $blockSize
3220
+ * @param bool $dontFallback
3221
+ * @return string
3222
+ * @throws SodiumException
3223
+ */
3224
+ public static function pad($unpadded, $blockSize, $dontFallback = false)
3225
+ {
3226
+ /* Type checks: */
3227
+ ParagonIE_Sodium_Core_Util::declareScalarType($unpadded, 'string', 1);
3228
+ ParagonIE_Sodium_Core_Util::declareScalarType($blockSize, 'int', 2);
3229
+
3230
+ $unpadded = (string) $unpadded;
3231
+ $blockSize = (int) $blockSize;
3232
+
3233
+ if (self::useNewSodiumAPI() && !$dontFallback) {
3234
+ return (string) sodium_pad($unpadded, $blockSize);
3235
+ }
3236
+
3237
+ if ($blockSize <= 0) {
3238
+ throw new SodiumException(
3239
+ 'block size cannot be less than 1'
3240
+ );
3241
+ }
3242
+ $unpadded_len = ParagonIE_Sodium_Core_Util::strlen($unpadded);
3243
+ $xpadlen = ($blockSize - 1);
3244
+ if (($blockSize & ($blockSize - 1)) === 0) {
3245
+ $xpadlen -= $unpadded_len & ($blockSize - 1);
3246
+ } else {
3247
+ $xpadlen -= $unpadded_len % $blockSize;
3248
+ }
3249
+
3250
+ $xpadded_len = $unpadded_len + $xpadlen;
3251
+ $padded = str_repeat("\0", $xpadded_len - 1);
3252
+ if ($unpadded_len > 0) {
3253
+ $st = 1;
3254
+ $i = 0;
3255
+ $k = $unpadded_len;
3256
+ for ($j = 0; $j <= $xpadded_len; ++$j) {
3257
+ $i = (int) $i;
3258
+ $k = (int) $k;
3259
+ $st = (int) $st;
3260
+ if ($j >= $unpadded_len) {
3261
+ $padded[$j] = "\0";
3262
+ } else {
3263
+ $padded[$j] = $unpadded[$j];
3264
+ }
3265
+ /** @var int $k */
3266
+ $k -= $st;
3267
+ $st = (int) (~(
3268
+ (
3269
+ (
3270
+ ($k >> 48)
3271
+ |
3272
+ ($k >> 32)
3273
+ |
3274
+ ($k >> 16)
3275
+ |
3276
+ $k
3277
+ ) - 1
3278
+ ) >> 16
3279
+ )
3280
+ ) & 1;
3281
+ $i += $st;
3282
+ }
3283
+ }
3284
+
3285
+ $mask = 0;
3286
+ $tail = $xpadded_len;
3287
+ for ($i = 0; $i < $blockSize; ++$i) {
3288
+ # barrier_mask = (unsigned char)
3289
+ # (((i ^ xpadlen) - 1U) >> ((sizeof(size_t) - 1U) * CHAR_BIT));
3290
+ $barrier_mask = (($i ^ $xpadlen) -1) >> ((PHP_INT_SIZE << 3) - 1);
3291
+ # tail[-i] = (tail[-i] & mask) | (0x80 & barrier_mask);
3292
+ $padded[$tail - $i] = ParagonIE_Sodium_Core_Util::intToChr(
3293
+ (ParagonIE_Sodium_Core_Util::chrToInt($padded[$tail - $i]) & $mask)
3294
+ |
3295
+ (0x80 & $barrier_mask)
3296
+ );
3297
+ # mask |= barrier_mask;
3298
+ $mask |= $barrier_mask;
3299
+ }
3300
+ return $padded;
3301
+ }
3302
+
3303
+ /**
3304
+ * @param string $padded
3305
+ * @param int $blockSize
3306
+ * @param bool $dontFallback
3307
+ * @return string
3308
+ * @throws SodiumException
3309
+ */
3310
+ public static function unpad($padded, $blockSize, $dontFallback = false)
3311
+ {
3312
+ /* Type checks: */
3313
+ ParagonIE_Sodium_Core_Util::declareScalarType($padded, 'string', 1);
3314
+ ParagonIE_Sodium_Core_Util::declareScalarType($blockSize, 'int', 2);
3315
+
3316
+ $padded = (string) $padded;
3317
+ $blockSize = (int) $blockSize;
3318
+
3319
+ if (self::useNewSodiumAPI() && !$dontFallback) {
3320
+ return (string) sodium_unpad($padded, $blockSize);
3321
+ }
3322
+ if ($blockSize <= 0) {
3323
+ throw new SodiumException('block size cannot be less than 1');
3324
+ }
3325
+ $padded_len = ParagonIE_Sodium_Core_Util::strlen($padded);
3326
+ if ($padded_len < $blockSize) {
3327
+ throw new SodiumException('invalid padding');
3328
+ }
3329
+
3330
+ # tail = &padded[padded_len - 1U];
3331
+ $tail = $padded_len - 1;
3332
+
3333
+ $acc = 0;
3334
+ $valid = 0;
3335
+ $pad_len = 0;
3336
+
3337
+ $found = 0;
3338
+ for ($i = 0; $i < $blockSize; ++$i) {
3339
+ # c = tail[-i];
3340
+ $c = ParagonIE_Sodium_Core_Util::chrToInt($padded[$tail - $i]);
3341
+
3342
+ # is_barrier =
3343
+ # (( (acc - 1U) & (pad_len - 1U) & ((c ^ 0x80) - 1U) ) >> 8) & 1U;
3344
+ $is_barrier = (
3345
+ (
3346
+ ($acc - 1) & ($pad_len - 1) & (($c ^ 80) - 1)
3347
+ ) >> 7
3348
+ ) & 1;
3349
+ $is_barrier &= ~$found;
3350
+ $found |= $is_barrier;
3351
+
3352
+ # acc |= c;
3353
+ $acc |= $c;
3354
+
3355
+ # pad_len |= i & (1U + ~is_barrier);
3356
+ $pad_len |= $i & (1 + ~$is_barrier);
3357
+
3358
+ # valid |= (unsigned char) is_barrier;
3359
+ $valid |= ($is_barrier & 0xff);
3360
+ }
3361
+ # unpadded_len = padded_len - 1U - pad_len;
3362
+ $unpadded_len = $padded_len - 1 - $pad_len;
3363
+ if ($valid !== 1) {
3364
+ throw new SodiumException('invalid padding');
3365
+ }
3366
+ return ParagonIE_Sodium_Core_Util::substr($padded, 0, $unpadded_len);
3367
+ }
3368
+
3369
  /**
3370
  * Will sodium_compat run fast on the current hardware and PHP configuration?
3371
  *
crypto/vendor/paragonie/sodium_compat/src/Core/BLAKE2b.php CHANGED
@@ -89,10 +89,10 @@ abstract class ParagonIE_Sodium_Core_BLAKE2b extends ParagonIE_Sodium_Core_Util
89
  {
90
  $l = ($x[1] + $y[1]) & 0xffffffff;
91
  return self::new64(
92
- $x[0] + $y[0] + (
93
  ($l < $x[1]) ? 1 : 0
94
- ),
95
- $l
96
  );
97
  }
98
 
@@ -133,8 +133,8 @@ abstract class ParagonIE_Sodium_Core_BLAKE2b extends ParagonIE_Sodium_Core_Util
133
  throw new SodiumException('y[1] is not an integer');
134
  }
135
  return self::new64(
136
- (int) ($x[0] ^ $y[0]),
137
- (int) ($x[1] ^ $y[1])
138
  );
139
  }
140
 
@@ -300,12 +300,13 @@ abstract class ParagonIE_Sodium_Core_BLAKE2b extends ParagonIE_Sodium_Core_Util
300
  */
301
  protected static function context()
302
  {
303
- $ctx = new SplFixedArray(5);
304
  $ctx[0] = new SplFixedArray(8); // h
305
  $ctx[1] = new SplFixedArray(2); // t
306
  $ctx[2] = new SplFixedArray(2); // f
307
  $ctx[3] = new SplFixedArray(256); // buf
308
  $ctx[4] = 0; // buflen
 
309
 
310
  for ($i = 8; $i--;) {
311
  $ctx[0][$i] = self::$iv[$i];
@@ -551,6 +552,8 @@ abstract class ParagonIE_Sodium_Core_BLAKE2b extends ParagonIE_Sodium_Core_Util
551
  *
552
  * @param SplFixedArray|null $key
553
  * @param int $outlen
 
 
554
  * @return SplFixedArray
555
  * @throws SodiumException
556
  * @throws TypeError
@@ -560,8 +563,12 @@ abstract class ParagonIE_Sodium_Core_BLAKE2b extends ParagonIE_Sodium_Core_Util
560
  * @psalm-suppress MixedArrayAssignment
561
  * @psalm-suppress MixedArrayOffset
562
  */
563
- public static function init($key = null, $outlen = 64)
564
- {
 
 
 
 
565
  self::pseudoConstructor();
566
  $klen = 0;
567
 
@@ -579,6 +586,7 @@ abstract class ParagonIE_Sodium_Core_BLAKE2b extends ParagonIE_Sodium_Core_Util
579
  $ctx = self::context();
580
 
581
  $p = new SplFixedArray(64);
 
582
  for ($i = 64; --$i;) {
583
  $p[$i] = 0;
584
  }
@@ -588,10 +596,32 @@ abstract class ParagonIE_Sodium_Core_BLAKE2b extends ParagonIE_Sodium_Core_Util
588
  $p[2] = 1; // fanout
589
  $p[3] = 1; // depth
590
 
 
 
 
 
 
 
 
 
 
 
 
 
 
591
  $ctx[0][0] = self::xor64(
592
  $ctx[0][0],
593
  self::load64($p, 0)
594
  );
 
 
 
 
 
 
 
 
 
595
 
596
  if ($klen > 0 && $key instanceof SplFixedArray) {
597
  $block = new SplFixedArray(128);
@@ -602,6 +632,7 @@ abstract class ParagonIE_Sodium_Core_BLAKE2b extends ParagonIE_Sodium_Core_Util
602
  $block[$i] = $key[$i];
603
  }
604
  self::update($ctx, $block, 128);
 
605
  }
606
 
607
  return $ctx;
@@ -694,7 +725,7 @@ abstract class ParagonIE_Sodium_Core_BLAKE2b extends ParagonIE_Sodium_Core_Util
694
  self::intToChr(($ctx4 >> 56) & 0xff)
695
  ));
696
  # uint8_t last_node;
697
- return $str . "\x00";
698
  }
699
 
700
  /**
@@ -747,7 +778,6 @@ abstract class ParagonIE_Sodium_Core_BLAKE2b extends ParagonIE_Sodium_Core_Util
747
  # uint8_t buf[2 * 128];
748
  $ctx[3] = self::stringToSplFixedArray(self::substr($string, 96, 256));
749
 
750
-
751
  # uint8_t buf[2 * 128];
752
  $int = 0;
753
  for ($i = 0; $i < 8; ++$i) {
89
  {
90
  $l = ($x[1] + $y[1]) & 0xffffffff;
91
  return self::new64(
92
+ (int) ($x[0] + $y[0] + (
93
  ($l < $x[1]) ? 1 : 0
94
+ )),
95
+ (int) $l
96
  );
97
  }
98
 
133
  throw new SodiumException('y[1] is not an integer');
134
  }
135
  return self::new64(
136
+ (int) (($x[0] ^ $y[0]) & 0xffffffff),
137
+ (int) (($x[1] ^ $y[1]) & 0xffffffff)
138
  );
139
  }
140
 
300
  */
301
  protected static function context()
302
  {
303
+ $ctx = new SplFixedArray(6);
304
  $ctx[0] = new SplFixedArray(8); // h
305
  $ctx[1] = new SplFixedArray(2); // t
306
  $ctx[2] = new SplFixedArray(2); // f
307
  $ctx[3] = new SplFixedArray(256); // buf
308
  $ctx[4] = 0; // buflen
309
+ $ctx[5] = 0; // last_node (uint8_t)
310
 
311
  for ($i = 8; $i--;) {
312
  $ctx[0][$i] = self::$iv[$i];
552
  *
553
  * @param SplFixedArray|null $key
554
  * @param int $outlen
555
+ * @param SplFixedArray|null $salt
556
+ * @param SplFixedArray|null $personal
557
  * @return SplFixedArray
558
  * @throws SodiumException
559
  * @throws TypeError
563
  * @psalm-suppress MixedArrayAssignment
564
  * @psalm-suppress MixedArrayOffset
565
  */
566
+ public static function init(
567
+ $key = null,
568
+ $outlen = 64,
569
+ $salt = null,
570
+ $personal = null
571
+ ) {
572
  self::pseudoConstructor();
573
  $klen = 0;
574
 
586
  $ctx = self::context();
587
 
588
  $p = new SplFixedArray(64);
589
+ // Zero our param buffer...
590
  for ($i = 64; --$i;) {
591
  $p[$i] = 0;
592
  }
596
  $p[2] = 1; // fanout
597
  $p[3] = 1; // depth
598
 
599
+ if ($salt instanceof SplFixedArray) {
600
+ // salt: [32] through [47]
601
+ for ($i = 0; $i < 16; ++$i) {
602
+ $p[32 + $i] = (int) $salt[$i];
603
+ }
604
+ }
605
+ if ($personal instanceof SplFixedArray) {
606
+ // personal: [48] through [63]
607
+ for ($i = 0; $i < 16; ++$i) {
608
+ $p[48 + $i] = (int) $personal[$i];
609
+ }
610
+ }
611
+
612
  $ctx[0][0] = self::xor64(
613
  $ctx[0][0],
614
  self::load64($p, 0)
615
  );
616
+ if ($salt instanceof SplFixedArray || $personal instanceof SplFixedArray) {
617
+ // We need to do what blake2b_init_param() does:
618
+ for ($i = 1; $i < 8; ++$i) {
619
+ $ctx[0][$i] = self::xor64(
620
+ $ctx[0][$i],
621
+ self::load64($p, $i << 3)
622
+ );
623
+ }
624
+ }
625
 
626
  if ($klen > 0 && $key instanceof SplFixedArray) {
627
  $block = new SplFixedArray(128);
632
  $block[$i] = $key[$i];
633
  }
634
  self::update($ctx, $block, 128);
635
+ $ctx[4] = 128;
636
  }
637
 
638
  return $ctx;
725
  self::intToChr(($ctx4 >> 56) & 0xff)
726
  ));
727
  # uint8_t last_node;
728
+ return $str . self::intToChr($ctx[5]) . str_repeat("\x00", 23);
729
  }
730
 
731
  /**
778
  # uint8_t buf[2 * 128];
779
  $ctx[3] = self::stringToSplFixedArray(self::substr($string, 96, 256));
780
 
 
781
  # uint8_t buf[2 * 128];
782
  $int = 0;
783
  for ($i = 0; $i < 8; ++$i) {
crypto/vendor/paragonie/sodium_compat/src/Core/Base64/Common.php ADDED
@@ -0,0 +1,214 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ // phpcs:ignoreFile -- compatibility library for PHP 5-7.1
3
+
4
+ /**
5
+ * Class ParagonIE_Sodium_Core_Base64
6
+ *
7
+ * Copyright (c) 2016 - 2018 Paragon Initiative Enterprises.
8
+ * Copyright (c) 2014 Steve "Sc00bz" Thomas (steve at tobtu dot com)
9
+ *
10
+ * We have to copy/paste the contents into the variant files because PHP 5.2
11
+ * doesn't support late static binding, and we have no better workaround
12
+ * available that won't break PHP 7+. Therefore, we're forced to duplicate code.
13
+ */
14
+ abstract class ParagonIE_Sodium_Core_Base64_Common
15
+ {
16
+ /**
17
+ * Encode into Base64
18
+ *
19
+ * Base64 character set "[A-Z][a-z][0-9]+/"
20
+ *
21
+ * @param string $src
22
+ * @return string
23
+ * @throws TypeError
24
+ */
25
+ public static function encode($src)
26
+ {
27
+ return self::doEncode($src, true);
28
+ }
29
+
30
+ /**
31
+ * Encode into Base64, no = padding
32
+ *
33
+ * Base64 character set "[A-Z][a-z][0-9]+/"
34
+ *
35
+ * @param string $src
36
+ * @return string
37
+ * @throws TypeError
38
+ */
39
+ public static function encodeUnpadded($src)
40
+ {
41
+ return self::doEncode($src, false);
42
+ }
43
+
44
+ /**
45
+ * @param string $src
46
+ * @param bool $pad Include = padding?
47
+ * @return string
48
+ * @throws TypeError
49
+ */
50
+ protected static function doEncode($src, $pad = true)
51
+ {
52
+ $dest = '';
53
+ $srcLen = ParagonIE_Sodium_Core_Util::strlen($src);
54
+ // Main loop (no padding):
55
+ for ($i = 0; $i + 3 <= $srcLen; $i += 3) {
56
+ /** @var array<int, int> $chunk */
57
+ $chunk = unpack('C*', ParagonIE_Sodium_Core_Util::substr($src, $i, 3));
58
+ $b0 = $chunk[1];
59
+ $b1 = $chunk[2];
60
+ $b2 = $chunk[3];
61
+
62
+ $dest .=
63
+ self::encode6Bits( $b0 >> 2 ) .
64
+ self::encode6Bits((($b0 << 4) | ($b1 >> 4)) & 63) .
65
+ self::encode6Bits((($b1 << 2) | ($b2 >> 6)) & 63) .
66
+ self::encode6Bits( $b2 & 63);
67
+ }
68
+ // The last chunk, which may have padding:
69
+ if ($i < $srcLen) {
70
+ /** @var array<int, int> $chunk */
71
+ $chunk = unpack('C*', ParagonIE_Sodium_Core_Util::substr($src, $i, $srcLen - $i));
72
+ $b0 = $chunk[1];
73
+ if ($i + 1 < $srcLen) {
74
+ $b1 = $chunk[2];
75
+ $dest .=
76
+ self::encode6Bits($b0 >> 2) .
77
+ self::encode6Bits((($b0 << 4) | ($b1 >> 4)) & 63) .
78
+ self::encode6Bits(($b1 << 2) & 63);
79
+ if ($pad) {
80
+ $dest .= '=';
81
+ }
82
+ } else {
83
+ $dest .=
84
+ self::encode6Bits( $b0 >> 2) .
85
+ self::encode6Bits(($b0 << 4) & 63);
86
+ if ($pad) {
87
+ $dest .= '==';
88
+ }
89
+ }
90
+ }
91
+ return $dest;
92
+ }
93
+
94
+ /**
95
+ * decode from base64 into binary
96
+ *
97
+ * Base64 character set "./[A-Z][a-z][0-9]"
98
+ *
99
+ * @param string $src
100
+ * @param bool $strictPadding
101
+ * @return string
102
+ * @throws RangeException
103
+ * @throws TypeError
104
+ * @psalm-suppress RedundantCondition
105
+ */
106
+ public static function decode($src, $strictPadding = false)
107
+ {
108
+ // Remove padding
109
+ $srcLen = ParagonIE_Sodium_Core_Util::strlen($src);
110
+ if ($srcLen === 0) {
111
+ return '';
112
+ }
113
+
114
+ if ($strictPadding) {
115
+ if (($srcLen & 3) === 0) {
116
+ if ($src[$srcLen - 1] === '=') {
117
+ $srcLen--;
118
+ if ($src[$srcLen - 1] === '=') {
119
+ $srcLen--;
120
+ }
121
+ }
122
+ }
123
+ if (($srcLen & 3) === 1) {
124
+ throw new RangeException(
125
+ 'Incorrect padding'
126
+ );
127
+ }
128
+ if ($src[$srcLen - 1] === '=') {
129
+ throw new RangeException(
130
+ 'Incorrect padding'
131
+ );
132
+ }
133
+ } else {
134
+ $src = rtrim($src, '=');
135
+ $srcLen = ParagonIE_Sodium_Core_Util::strlen($src);
136
+ }
137
+
138
+ $err = 0;
139
+ $dest = '';
140
+ // Main loop (no padding):
141
+ for ($i = 0; $i + 4 <= $srcLen; $i += 4) {
142
+ /** @var array<int, int> $chunk */
143
+ $chunk = unpack('C*', ParagonIE_Sodium_Core_Util::substr($src, $i, 4));
144
+ $c0 = self::decode6Bits($chunk[1]);
145
+ $c1 = self::decode6Bits($chunk[2]);
146
+ $c2 = self::decode6Bits($chunk[3]);
147
+ $c3 = self::decode6Bits($chunk[4]);
148
+
149
+ $dest .= pack(
150
+ 'CCC',
151
+ ((($c0 << 2) | ($c1 >> 4)) & 0xff),
152
+ ((($c1 << 4) | ($c2 >> 2)) & 0xff),
153
+ ((($c2 << 6) | $c3 ) & 0xff)
154
+ );
155
+ $err |= ($c0 | $c1 | $c2 | $c3) >> 8;
156
+ }
157
+ // The last chunk, which may have padding:
158
+ if ($i < $srcLen) {
159
+ /** @var array<int, int> $chunk */
160
+ $chunk = unpack('C*', ParagonIE_Sodium_Core_Util::substr($src, $i, $srcLen - $i));
161
+ $c0 = self::decode6Bits($chunk[1]);
162
+
163
+ if ($i + 2 < $srcLen) {
164
+ $c1 = self::decode6Bits($chunk[2]);
165
+ $c2 = self::decode6Bits($chunk[3]);
166
+ $dest .= pack(
167
+ 'CC',
168
+ ((($c0 << 2) | ($c1 >> 4)) & 0xff),
169
+ ((($c1 << 4) | ($c2 >> 2)) & 0xff)
170
+ );
171
+ $err |= ($c0 | $c1 | $c2) >> 8;
172
+ } elseif ($i + 1 < $srcLen) {
173
+ $c1 = self::decode6Bits($chunk[2]);
174
+ $dest .= pack(
175
+ 'C',
176
+ ((($c0 << 2) | ($c1 >> 4)) & 0xff)
177
+ );
178
+ $err |= ($c0 | $c1) >> 8;
179
+ } elseif ($i < $srcLen && $strictPadding) {
180
+ $err |= 1;
181
+ }
182
+ }
183
+ /** @var bool $check */
184
+ $check = ($err === 0);
185
+ if (!$check) {
186
+ throw new RangeException(
187
+ 'Base64::decode() only expects characters in the correct base64 alphabet'
188
+ );
189
+ }
190
+ return $dest;
191
+ }
192
+
193
+ /**
194
+ * Uses bitwise operators instead of table-lookups to turn 6-bit integers
195
+ * into 8-bit integers.
196
+ *
197
+ * Base64 character set:
198
+ * [A-Z] [a-z] [0-9] + /
199
+ * 0x41-0x5a, 0x61-0x7a, 0x30-0x39, 0x2b, 0x2f
200
+ *
201
+ * @param int $src
202
+ * @return int
203
+ */
204
+ abstract protected static function decode6Bits($src);
205
+
206
+ /**
207
+ * Uses bitwise operators instead of table-lookups to turn 8-bit integers
208
+ * into 6-bit integers.
209
+ *
210
+ * @param int $src
211
+ * @return string
212
+ */
213
+ abstract protected static function encode6Bits($src);
214
+ }
crypto/vendor/paragonie/sodium_compat/src/Core/Base64/Original.php ADDED
@@ -0,0 +1,249 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ // phpcs:ignoreFile -- compatibility library for PHP 5-7.1
3
+
4
+ /**
5
+ * Class ParagonIE_Sodium_Core_Base64
6
+ *
7
+ * Copyright (c) 2016 - 2018 Paragon Initiative Enterprises.
8
+ * Copyright (c) 2014 Steve "Sc00bz" Thomas (steve at tobtu dot com)
9
+ */
10
+ class ParagonIE_Sodium_Core_Base64_Original
11
+ {
12
+ // COPY ParagonIE_Sodium_Core_Base64_Common STARTING HERE
13
+ /**
14
+ * Encode into Base64
15
+ *
16
+ * Base64 character set "[A-Z][a-z][0-9]+/"
17
+ *
18
+ * @param string $src
19
+ * @return string
20
+ * @throws TypeError
21
+ */
22
+ public static function encode($src)
23
+ {
24
+ return self::doEncode($src, true);
25
+ }
26
+
27
+ /**
28
+ * Encode into Base64, no = padding
29
+ *
30
+ * Base64 character set "[A-Z][a-z][0-9]+/"
31
+ *
32
+ * @param string $src
33
+ * @return string
34
+ * @throws TypeError
35
+ */
36
+ public static function encodeUnpadded($src)
37
+ {
38
+ return self::doEncode($src, false);
39
+ }
40
+
41
+ /**
42
+ * @param string $src
43
+ * @param bool $pad Include = padding?
44
+ * @return string
45
+ * @throws TypeError
46
+ */
47
+ protected static function doEncode($src, $pad = true)
48
+ {
49
+ $dest = '';
50
+ $srcLen = ParagonIE_Sodium_Core_Util::strlen($src);
51
+ // Main loop (no padding):
52
+ for ($i = 0; $i + 3 <= $srcLen; $i += 3) {
53
+ /** @var array<int, int> $chunk */
54
+ $chunk = unpack('C*', ParagonIE_Sodium_Core_Util::substr($src, $i, 3));
55
+ $b0 = $chunk[1];
56
+ $b1 = $chunk[2];
57
+ $b2 = $chunk[3];
58
+
59
+ $dest .=
60
+ self::encode6Bits( $b0 >> 2 ) .
61
+ self::encode6Bits((($b0 << 4) | ($b1 >> 4)) & 63) .
62
+ self::encode6Bits((($b1 << 2) | ($b2 >> 6)) & 63) .
63
+ self::encode6Bits( $b2 & 63);
64
+ }
65
+ // The last chunk, which may have padding:
66
+ if ($i < $srcLen) {
67
+ /** @var array<int, int> $chunk */
68
+ $chunk = unpack('C*', ParagonIE_Sodium_Core_Util::substr($src, $i, $srcLen - $i));
69
+ $b0 = $chunk[1];
70
+ if ($i + 1 < $srcLen) {
71
+ $b1 = $chunk[2];
72
+ $dest .=
73
+ self::encode6Bits($b0 >> 2) .
74
+ self::encode6Bits((($b0 << 4) | ($b1 >> 4)) & 63) .
75
+ self::encode6Bits(($b1 << 2) & 63);
76
+ if ($pad) {
77
+ $dest .= '=';
78
+ }
79
+ } else {
80
+ $dest .=
81
+ self::encode6Bits( $b0 >> 2) .
82
+ self::encode6Bits(($b0 << 4) & 63);
83
+ if ($pad) {
84
+ $dest .= '==';
85
+ }
86
+ }
87
+ }
88
+ return $dest;
89
+ }
90
+
91
+ /**
92
+ * decode from base64 into binary
93
+ *
94
+ * Base64 character set "./[A-Z][a-z][0-9]"
95
+ *
96
+ * @param string $src
97
+ * @param bool $strictPadding
98
+ * @return string
99
+ * @throws RangeException
100
+ * @throws TypeError
101
+ * @psalm-suppress RedundantCondition
102
+ */
103
+ public static function decode($src, $strictPadding = false)
104
+ {
105
+ // Remove padding
106
+ $srcLen = ParagonIE_Sodium_Core_Util::strlen($src);
107
+ if ($srcLen === 0) {
108
+ return '';
109
+ }
110
+
111
+ if ($strictPadding) {
112
+ if (($srcLen & 3) === 0) {
113
+ if ($src[$srcLen - 1] === '=') {
114
+ $srcLen--;
115
+ if ($src[$srcLen - 1] === '=') {
116
+ $srcLen--;
117
+ }
118
+ }
119
+ }
120
+ if (($srcLen & 3) === 1) {
121
+ throw new RangeException(
122
+ 'Incorrect padding'
123
+ );
124
+ }
125
+ if ($src[$srcLen - 1] === '=') {
126
+ throw new RangeException(
127
+ 'Incorrect padding'
128
+ );
129
+ }
130
+ } else {
131
+ $src = rtrim($src, '=');
132
+ $srcLen = ParagonIE_Sodium_Core_Util::strlen($src);
133
+ }
134
+
135
+ $err = 0;
136
+ $dest = '';
137
+ // Main loop (no padding):
138
+ for ($i = 0; $i + 4 <= $srcLen; $i += 4) {
139
+ /** @var array<int, int> $chunk */
140
+ $chunk = unpack('C*', ParagonIE_Sodium_Core_Util::substr($src, $i, 4));
141
+ $c0 = self::decode6Bits($chunk[1]);
142
+ $c1 = self::decode6Bits($chunk[2]);
143
+ $c2 = self::decode6Bits($chunk[3]);
144
+ $c3 = self::decode6Bits($chunk[4]);
145
+
146
+ $dest .= pack(
147
+ 'CCC',
148
+ ((($c0 << 2) | ($c1 >> 4)) & 0xff),
149
+ ((($c1 << 4) | ($c2 >> 2)) & 0xff),
150
+ ((($c2 << 6) | $c3) & 0xff)
151
+ );
152
+ $err |= ($c0 | $c1 | $c2 | $c3) >> 8;
153
+ }
154
+ // The last chunk, which may have padding:
155
+ if ($i < $srcLen) {
156
+ /** @var array<int, int> $chunk */
157
+ $chunk = unpack('C*', ParagonIE_Sodium_Core_Util::substr($src, $i, $srcLen - $i));
158
+ $c0 = self::decode6Bits($chunk[1]);
159
+
160
+ if ($i + 2 < $srcLen) {
161
+ $c1 = self::decode6Bits($chunk[2]);
162
+ $c2 = self::decode6Bits($chunk[3]);
163
+ $dest .= pack(
164
+ 'CC',
165
+ ((($c0 << 2) | ($c1 >> 4)) & 0xff),
166
+ ((($c1 << 4) | ($c2 >> 2)) & 0xff)
167
+ );
168
+ $err |= ($c0 | $c1 | $c2) >> 8;
169
+ } elseif ($i + 1 < $srcLen) {
170
+ $c1 = self::decode6Bits($chunk[2]);
171
+ $dest .= pack(
172
+ 'C',
173
+ ((($c0 << 2) | ($c1 >> 4)) & 0xff)
174
+ );
175
+ $err |= ($c0 | $c1) >> 8;
176
+ } elseif ($i < $srcLen && $strictPadding) {
177
+ $err |= 1;
178
+ }
179
+ }
180
+ /** @var bool $check */
181
+ $check = ($err === 0);
182
+ if (!$check) {
183
+ throw new RangeException(
184
+ 'Base64::decode() only expects characters in the correct base64 alphabet'
185
+ );
186
+ }
187
+ return $dest;
188
+ }
189
+ // COPY ParagonIE_Sodium_Core_Base64_Common ENDING HERE
190
+
191
+ /**
192
+ * Uses bitwise operators instead of table-lookups to turn 6-bit integers
193
+ * into 8-bit integers.
194
+ *
195
+ * Base64 character set:
196
+ * [A-Z] [a-z] [0-9] + /
197
+ * 0x41-0x5a, 0x61-0x7a, 0x30-0x39, 0x2b, 0x2f
198
+ *
199
+ * @param int $src
200
+ * @return int
201
+ */
202
+ protected static function decode6Bits($src)
203
+ {
204
+ $ret = -1;
205
+
206
+ // if ($src > 0x40 && $src < 0x5b) $ret += $src - 0x41 + 1; // -64
207
+ $ret += (((0x40 - $src) & ($src - 0x5b)) >> 8) & ($src - 64);
208
+
209
+ // if ($src > 0x60 && $src < 0x7b) $ret += $src - 0x61 + 26 + 1; // -70
210
+ $ret += (((0x60 - $src) & ($src - 0x7b)) >> 8) & ($src - 70);
211
+
212
+ // if ($src > 0x2f && $src < 0x3a) $ret += $src - 0x30 + 52 + 1; // 5
213
+ $ret += (((0x2f - $src) & ($src - 0x3a)) >> 8) & ($src + 5);
214
+
215
+ // if ($src == 0x2b) $ret += 62 + 1;
216
+ $ret += (((0x2a - $src) & ($src - 0x2c)) >> 8) & 63;
217
+
218
+ // if ($src == 0x2f) ret += 63 + 1;
219
+ $ret += (((0x2e - $src) & ($src - 0x30)) >> 8) & 64;
220
+
221
+ return $ret;
222
+ }
223
+
224
+ /**
225
+ * Uses bitwise operators instead of table-lookups to turn 8-bit integers
226
+ * into 6-bit integers.
227
+ *
228
+ * @param int $src
229
+ * @return string
230
+ */
231
+ protected static function encode6Bits($src)
232
+ {
233
+ $diff = 0x41;
234
+
235
+ // if ($src > 25) $diff += 0x61 - 0x41 - 26; // 6
236
+ $diff += ((25 - $src) >> 8) & 6;
237
+
238
+ // if ($src > 51) $diff += 0x30 - 0x61 - 26; // -75
239
+ $diff -= ((51 - $src) >> 8) & 75;
240
+
241
+ // if ($src > 61) $diff += 0x2b - 0x30 - 10; // -15
242
+ $diff -= ((61 - $src) >> 8) & 15;
243
+
244
+ // if ($src > 62) $diff += 0x2f - 0x2b - 1; // 3
245
+ $diff += ((62 - $src) >> 8) & 3;
246
+
247
+ return pack('C', $src + $diff);
248
+ }
249
+ }
crypto/vendor/paragonie/sodium_compat/src/Core/Base64/UrlSafe.php ADDED
@@ -0,0 +1,248 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ // phpcs:ignoreFile -- compatibility library for PHP 5-7.1
3
+
4
+ /**
5
+ * Class ParagonIE_Sodium_Core_Base64UrlSafe
6
+ *
7
+ * Copyright (c) 2016 - 2018 Paragon Initiative Enterprises.
8
+ * Copyright (c) 2014 Steve "Sc00bz" Thomas (steve at tobtu dot com)
9
+ */
10
+ class ParagonIE_Sodium_Core_Base64_UrlSafe
11
+ {
12
+ // COPY ParagonIE_Sodium_Core_Base64_Common STARTING HERE
13
+ /**
14
+ * Encode into Base64
15
+ *
16
+ * Base64 character set "[A-Z][a-z][0-9]+/"
17
+ *
18
+ * @param string $src
19
+ * @return string
20
+ * @throws TypeError
21
+ */
22
+ public static function encode($src)
23
+ {
24
+ return self::doEncode($src, true);
25
+ }
26
+
27
+ /**
28
+ * Encode into Base64, no = padding
29
+ *
30
+ * Base64 character set "[A-Z][a-z][0-9]+/"
31
+ *
32
+ * @param string $src
33
+ * @return string
34
+ * @throws TypeError
35
+ */
36
+ public static function encodeUnpadded($src)
37
+ {
38
+ return self::doEncode($src, false);
39
+ }
40
+
41
+ /**
42
+ * @param string $src
43
+ * @param bool $pad Include = padding?
44
+ * @return string
45
+ * @throws TypeError
46
+ */
47
+ protected static function doEncode($src, $pad = true)
48
+ {
49
+ $dest = '';
50
+ $srcLen = ParagonIE_Sodium_Core_Util::strlen($src);
51
+ // Main loop (no padding):
52
+ for ($i = 0; $i + 3 <= $srcLen; $i += 3) {
53
+ /** @var array<int, int> $chunk */
54
+ $chunk = unpack('C*', ParagonIE_Sodium_Core_Util::substr($src, $i, 3));
55
+ $b0 = $chunk[1];
56
+ $b1 = $chunk[2];
57
+ $b2 = $chunk[3];
58
+
59
+ $dest .=
60
+ self::encode6Bits( $b0 >> 2 ) .
61
+ self::encode6Bits((($b0 << 4) | ($b1 >> 4)) & 63) .
62
+ self::encode6Bits((($b1 << 2) | ($b2 >> 6)) & 63) .
63
+ self::encode6Bits( $b2 & 63);
64
+ }
65
+ // The last chunk, which may have padding:
66
+ if ($i < $srcLen) {
67
+ /** @var array<int, int> $chunk */
68
+ $chunk = unpack('C*', ParagonIE_Sodium_Core_Util::substr($src, $i, $srcLen - $i));
69
+ $b0 = $chunk[1];
70
+ if ($i + 1 < $srcLen) {
71
+ $b1 = $chunk[2];
72
+ $dest .=
73
+ self::encode6Bits($b0 >> 2) .
74
+ self::encode6Bits((($b0 << 4) | ($b1 >> 4)) & 63) .
75
+ self::encode6Bits(($b1 << 2) & 63);
76
+ if ($pad) {
77
+ $dest .= '=';
78
+ }
79
+ } else {
80
+ $dest .=
81
+ self::encode6Bits( $b0 >> 2) .
82
+ self::encode6Bits(($b0 << 4) & 63);
83
+ if ($pad) {
84
+ $dest .= '==';
85
+ }
86
+ }
87
+ }
88
+ return $dest;
89
+ }
90
+
91
+ /**
92
+ * decode from base64 into binary
93
+ *
94
+ * Base64 character set "./[A-Z][a-z][0-9]"
95
+ *
96
+ * @param string $src
97
+ * @param bool $strictPadding
98
+ * @return string
99
+ * @throws RangeException
100
+ * @throws TypeError
101
+ * @psalm-suppress RedundantCondition
102
+ */
103
+ public static function decode($src, $strictPadding = false)
104
+ {
105
+ // Remove padding
106
+ $srcLen = ParagonIE_Sodium_Core_Util::strlen($src);
107
+ if ($srcLen === 0) {
108
+ return '';
109
+ }
110
+
111
+ if ($strictPadding) {
112
+ if (($srcLen & 3) === 0) {
113
+ if ($src[$srcLen - 1] === '=') {
114
+ $srcLen--;
115
+ if ($src[$srcLen - 1] === '=') {
116
+ $srcLen--;
117
+ }
118
+ }
119
+ }
120
+ if (($srcLen & 3) === 1) {
121
+ throw new RangeException(
122
+ 'Incorrect padding'
123
+ );
124
+ }
125
+ if ($src[$srcLen - 1] === '=') {
126
+ throw new RangeException(
127
+ 'Incorrect padding'
128
+ );
129
+ }
130
+ } else {
131
+ $src = rtrim($src, '=');
132
+ $srcLen = ParagonIE_Sodium_Core_Util::strlen($src);
133
+ }
134
+
135
+ $err = 0;
136
+ $dest = '';
137
+ // Main loop (no padding):
138
+ for ($i = 0; $i + 4 <= $srcLen; $i += 4) {
139
+ /** @var array<int, int> $chunk */
140
+ $chunk = unpack('C*', ParagonIE_Sodium_Core_Util::substr($src, $i, 4));
141
+ $c0 = self::decode6Bits($chunk[1]);
142
+ $c1 = self::decode6Bits($chunk[2]);
143
+ $c2 = self::decode6Bits($chunk[3]);
144
+ $c3 = self::decode6Bits($chunk[4]);
145
+
146
+ $dest .= pack(
147
+ 'CCC',
148
+ ((($c0 << 2) | ($c1 >> 4)) & 0xff),
149
+ ((($c1 << 4) | ($c2 >> 2)) & 0xff),
150
+ ((($c2 << 6) | $c3) & 0xff)
151
+ );
152
+ $err |= ($c0 | $c1 | $c2 | $c3) >> 8;
153
+ }
154
+ // The last chunk, which may have padding:
155
+ if ($i < $srcLen) {
156
+ /** @var array<int, int> $chunk */
157
+ $chunk = unpack('C*', ParagonIE_Sodium_Core_Util::substr($src, $i, $srcLen - $i));
158
+ $c0 = self::decode6Bits($chunk[1]);
159
+
160
+ if ($i + 2 < $srcLen) {
161
+ $c1 = self::decode6Bits($chunk[2]);
162
+ $c2 = self::decode6Bits($chunk[3]);
163
+ $dest .= pack(
164
+ 'CC',
165
+ ((($c0 << 2) | ($c1 >> 4)) & 0xff),
166
+ ((($c1 << 4) | ($c2 >> 2)) & 0xff)
167
+ );
168
+ $err |= ($c0 | $c1 | $c2) >> 8;
169
+ } elseif ($i + 1 < $srcLen) {
170
+ $c1 = self::decode6Bits($chunk[2]);
171
+ $dest .= pack(
172
+ 'C',
173
+ ((($c0 << 2) | ($c1 >> 4)) & 0xff)
174
+ );
175
+ $err |= ($c0 | $c1) >> 8;
176
+ } elseif ($i < $srcLen && $strictPadding) {
177
+ $err |= 1;
178
+ }
179
+ }
180
+ /** @var bool $check */
181
+ $check = ($err === 0);
182
+ if (!$check) {
183
+ throw new RangeException(
184
+ 'Base64::decode() only expects characters in the correct base64 alphabet'
185
+ );
186
+ }
187
+ return $dest;
188
+ }
189
+ // COPY ParagonIE_Sodium_Core_Base64_Common ENDING HERE
190
+ /**
191
+ * Uses bitwise operators instead of table-lookups to turn 6-bit integers
192
+ * into 8-bit integers.
193
+ *
194
+ * Base64 character set:
195
+ * [A-Z] [a-z] [0-9] + /
196
+ * 0x41-0x5a, 0x61-0x7a, 0x30-0x39, 0x2b, 0x2f
197
+ *
198
+ * @param int $src
199
+ * @return int
200
+ */
201
+ protected static function decode6Bits($src)
202
+ {
203
+ $ret = -1;
204
+
205
+ // if ($src > 0x40 && $src < 0x5b) $ret += $src - 0x41 + 1; // -64
206
+ $ret += (((0x40 - $src) & ($src - 0x5b)) >> 8) & ($src - 64);
207
+
208
+ // if ($src > 0x60 && $src < 0x7b) $ret += $src - 0x61 + 26 + 1; // -70
209
+ $ret += (((0x60 - $src) & ($src - 0x7b)) >> 8) & ($src - 70);
210
+
211
+ // if ($src > 0x2f && $src < 0x3a) $ret += $src - 0x30 + 52 + 1; // 5
212
+ $ret += (((0x2f - $src) & ($src - 0x3a)) >> 8) & ($src + 5);
213
+
214
+ // if ($src == 0x2c) $ret += 62 + 1;
215
+ $ret += (((0x2c - $src) & ($src - 0x2e)) >> 8) & 63;
216
+
217
+ // if ($src == 0x5f) ret += 63 + 1;
218
+ $ret += (((0x5e - $src) & ($src - 0x60)) >> 8) & 64;
219
+
220
+ return $ret;
221
+ }
222
+
223
+ /**
224
+ * Uses bitwise operators instead of table-lookups to turn 8-bit integers
225
+ * into 6-bit integers.
226
+ *
227
+ * @param int $src
228
+ * @return string
229
+ */
230
+ protected static function encode6Bits($src)
231
+ {
232
+ $diff = 0x41;
233
+
234
+ // if ($src > 25) $diff += 0x61 - 0x41 - 26; // 6
235
+ $diff += ((25 - $src) >> 8) & 6;
236
+
237
+ // if ($src > 51) $diff += 0x30 - 0x61 - 26; // -75
238
+ $diff -= ((51 - $src) >> 8) & 75;
239
+
240
+ // if ($src > 61) $diff += 0x2d - 0x30 - 10; // -13
241
+ $diff -= ((61 - $src) >> 8) & 13;
242
+
243
+ // if ($src > 62) $diff += 0x5f - 0x2b - 1; // 3
244
+ $diff += ((62 - $src) >> 8) & 49;
245
+
246
+ return pack('C', $src + $diff);
247
+ }
248
+ }
crypto/vendor/paragonie/sodium_compat/src/Core/Ed25519.php CHANGED
@@ -277,7 +277,7 @@ abstract class ParagonIE_Sodium_Core_Ed25519 extends ParagonIE_Sodium_Core_Curve
277
  if (self::strlen($sig) < 64) {
278
  throw new SodiumException('Signature is too short');
279
  }
280
- if (self::check_S_lt_L(self::substr($sig, 32, 32))) {
281
  throw new SodiumException('S < L - Invalid signature');
282
  }
283
  if (self::small_order($sig)) {
277
  if (self::strlen($sig) < 64) {
278
  throw new SodiumException('Signature is too short');
279
  }
280
+ if ((self::chrToInt($sig[63]) & 240) && self::check_S_lt_L(self::substr($sig, 32, 32))) {
281
  throw new SodiumException('S < L - Invalid signature');
282
  }
283
  if (self::small_order($sig)) {
crypto/vendor/paragonie/sodium_compat/src/Core/Poly1305/State.php CHANGED
@@ -80,6 +80,29 @@ class ParagonIE_Sodium_Core_Poly1305_State extends ParagonIE_Sodium_Core_Util
80
  $this->final = false;
81
  }
82
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
83
  /**
84
  * @internal You should not use this directly from another application
85
  *
@@ -91,6 +114,9 @@ class ParagonIE_Sodium_Core_Poly1305_State extends ParagonIE_Sodium_Core_Util
91
  public function update($message = '')
92
  {
93
  $bytes = self::strlen($message);
 
 
 
94
 
95
  /* handle leftover */
96
  if ($this->leftover) {
@@ -112,7 +138,7 @@ class ParagonIE_Sodium_Core_Poly1305_State extends ParagonIE_Sodium_Core_Util
112
  }
113
 
114
  $this->blocks(
115
- static::intArrayToString($this->buffer),
116
  ParagonIE_Sodium_Core_Poly1305::BLOCK_SIZE
117
  );
118
  $this->leftover = 0;
@@ -297,7 +323,7 @@ class ParagonIE_Sodium_Core_Poly1305_State extends ParagonIE_Sodium_Core_Util
297
  $this->final = true;
298
  $this->blocks(
299
  self::substr(
300
- static::intArrayToString($this->buffer),
301
  0,
302
  ParagonIE_Sodium_Core_Poly1305::BLOCK_SIZE
303
  ),
80
  $this->final = false;
81
  }
82
 
83
+ /**
84
+ * Zero internal buffer upon destruction
85
+ */
86
+ public function __destruct()
87
+ {
88
+ $this->r[0] ^= $this->r[0];
89
+ $this->r[1] ^= $this->r[1];
90
+ $this->r[2] ^= $this->r[2];
91
+ $this->r[3] ^= $this->r[3];
92
+ $this->r[4] ^= $this->r[4];
93
+ $this->h[0] ^= $this->h[0];
94
+ $this->h[1] ^= $this->h[1];
95
+ $this->h[2] ^= $this->h[2];
96
+ $this->h[3] ^= $this->h[3];
97
+ $this->h[4] ^= $this->h[4];
98
+ $this->pad[0] ^= $this->pad[0];
99
+ $this->pad[1] ^= $this->pad[1];
100
+ $this->pad[2] ^= $this->pad[2];
101
+ $this->pad[3] ^= $this->pad[3];
102
+ $this->leftover = 0;
103
+ $this->final = true;
104
+ }
105
+
106
  /**
107
  * @internal You should not use this directly from another application
108
  *
114
  public function update($message = '')
115
  {
116
  $bytes = self::strlen($message);
117
+ if ($bytes < 1) {
118
+ return $this;
119
+ }
120
 
121
  /* handle leftover */
122
  if ($this->leftover) {
138
  }
139
 
140
  $this->blocks(
141
+ self::intArrayToString($this->buffer),
142
  ParagonIE_Sodium_Core_Poly1305::BLOCK_SIZE
143
  );
144
  $this->leftover = 0;
323
  $this->final = true;
324
  $this->blocks(
325
  self::substr(
326
+ self::intArrayToString($this->buffer),
327
  0,
328
  ParagonIE_Sodium_Core_Poly1305::BLOCK_SIZE
329
  ),
crypto/vendor/paragonie/sodium_compat/src/Core/SecretStream/State.php ADDED
@@ -0,0 +1,164 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ // phpcs:ignoreFile -- compatibility library for PHP 5-7.1
3
+
4
+ /**
5
+ * Class ParagonIE_Sodium_Core_SecretStream_State
6
+ */
7
+ class ParagonIE_Sodium_Core_SecretStream_State
8
+ {
9
+ /** @var string $key */
10
+ protected $key;
11
+
12
+ /** @var int $counter */
13
+ protected $counter;
14
+
15
+ /** @var string $nonce */
16
+ protected $nonce;
17
+
18
+ /** @var string $_pad */
19
+ protected $_pad;
20
+
21
+ /**
22
+ * ParagonIE_Sodium_Core_SecretStream_State constructor.
23
+ * @param string $key
24
+ * @param string|null $nonce
25
+ */
26
+ public function __construct($key, $nonce = null)
27
+ {
28
+ $this->key = $key;
29
+ $this->counter = 1;
30
+ if (is_null($nonce)) {
31
+ $nonce = str_repeat("\0", 12);
32
+ }
33
+ $this->nonce = str_pad($nonce, 12, "\0", STR_PAD_RIGHT);;
34
+ $this->_pad = str_repeat("\0", 4);
35
+ }
36
+
37
+ /**
38
+ * @return self
39
+ */
40
+ public function counterReset()
41
+ {
42
+ $this->counter = 1;
43
+ $this->_pad = str_repeat("\0", 4);
44
+ return $this;
45
+ }
46
+
47
+ /**
48
+ * @return string
49
+ */
50
+ public function getKey()
51
+ {
52
+ return $this->key;
53
+ }
54
+
55
+ /**
56
+ * @return string
57
+ */
58
+ public function getCounter()
59
+ {
60
+ return ParagonIE_Sodium_Core_Util::store32_le($this->counter);
61
+ }
62
+
63
+ /**
64
+ * @return string
65
+ */
66
+ public function getNonce()
67
+ {
68
+ if (!is_string($this->nonce)) {
69
+ $this->nonce = str_repeat("\0", 12);
70
+ }
71
+ if (ParagonIE_Sodium_Core_Util::strlen($this->nonce) !== 12) {
72
+ $this->nonce = str_pad($this->nonce, 12, "\0", STR_PAD_RIGHT);
73
+ }
74
+ return $this->nonce;
75
+ }
76
+
77
+ /**
78
+ * @return string
79
+ */
80
+ public function getCombinedNonce()
81
+ {
82
+ return $this->getCounter() .
83
+ ParagonIE_Sodium_Core_Util::substr($this->getNonce(), 0, 8);
84
+ }
85
+
86
+ /**
87
+ * @return self
88
+ */
89
+ public function incrementCounter()
90
+ {
91
+ ++$this->counter;
92
+ return $this;
93
+ }
94
+
95
+ /**
96
+ * @return bool
97
+ */
98
+ public function needsRekey()
99
+ {
100
+ return ($this->counter & 0xffff) === 0;
101
+ }
102
+
103
+ /**
104
+ * @param string $newKeyAndNonce
105
+ * @return self
106
+ */
107
+ public function rekey($newKeyAndNonce)
108
+ {
109
+ $this->key = ParagonIE_Sodium_Core_Util::substr($newKeyAndNonce, 0, 32);
110
+ $this->nonce = str_pad(
111
+ ParagonIE_Sodium_Core_Util::substr($newKeyAndNonce, 32),
112
+ 12,
113
+ "\0",
114
+ STR_PAD_RIGHT
115
+ );
116
+ return $this;
117
+ }
118
+
119
+ /**
120
+ * @param string $str
121
+ * @return self
122
+ */
123
+ public function xorNonce($str)
124
+ {
125
+ $this->nonce = ParagonIE_Sodium_Core_Util::xorStrings(
126
+ $this->getNonce(),
127
+ str_pad(
128
+ ParagonIE_Sodium_Core_Util::substr($str, 0, 8),
129
+ 12,
130
+ "\0",
131
+ STR_PAD_RIGHT
132
+ )
133
+ );
134
+ return $this;
135
+ }
136
+
137
+ /**
138
+ * @param string $string
139
+ * @return self
140
+ */
141
+ public static function fromString($string)
142
+ {
143
+ $state = new ParagonIE_Sodium_Core_SecretStream_State(
144
+ ParagonIE_Sodium_Core_Util::substr($string, 0, 32)
145
+ );
146
+ $state->counter = ParagonIE_Sodium_Core_Util::load_4(
147
+ ParagonIE_Sodium_Core_Util::substr($string, 32, 4)
148
+ );
149
+ $state->nonce = ParagonIE_Sodium_Core_Util::substr($string, 36, 12);
150
+ $state->_pad = ParagonIE_Sodium_Core_Util::substr($string, 48, 8);
151
+ return $state;
152
+ }
153
+
154
+ /**
155
+ * @return string
156
+ */
157
+ public function toString()
158
+ {
159
+ return $this->key .
160
+ $this->getCounter() .
161
+ $this->nonce .
162
+ $this->_pad;
163
+ }
164
+ }
crypto/vendor/paragonie/sodium_compat/src/Core/Util.php CHANGED
@@ -912,6 +912,7 @@ abstract class ParagonIE_Sodium_Core_Util
912
 
913
  if ($mbstring === null) {
914
  $mbstring = extension_loaded('mbstring')
 
915
  &&
916
  ((int) (ini_get('mbstring.func_overload')) & MB_OVERLOAD_STRING);
917
  }
912
 
913
  if ($mbstring === null) {
914
  $mbstring = extension_loaded('mbstring')
915
+ && defined('MB_OVERLOAD_STRING')
916
  &&
917
  ((int) (ini_get('mbstring.func_overload')) & MB_OVERLOAD_STRING);
918
  }
crypto/vendor/paragonie/sodium_compat/src/Core/XChaCha20.php CHANGED
@@ -37,6 +37,33 @@ class ParagonIE_Sodium_Core_XChaCha20 extends ParagonIE_Sodium_Core_HChaCha20
37
  );
38
  }
39
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
40
  /**
41
  * @internal You should not use this directly from another application
42
  *
@@ -62,4 +89,30 @@ class ParagonIE_Sodium_Core_XChaCha20 extends ParagonIE_Sodium_Core_HChaCha20
62
  $message
63
  );
64
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
65
  }
37
  );
38
  }
39
 
40
+ /**
41
+ * @internal You should not use this directly from another application
42
+ *
43
+ * @param int $len
44
+ * @param string $nonce
45
+ * @param string $key
46
+ * @return string
47
+ * @throws SodiumException
48
+ * @throws TypeError
49
+ */
50
+ public static function ietfStream($len = 64, $nonce = '', $key = '')
51
+ {
52
+ if (self::strlen($nonce) !== 24) {
53
+ throw new SodiumException('Nonce must be 24 bytes long');
54
+ }
55
+ return self::encryptBytes(
56
+ new ParagonIE_Sodium_Core_ChaCha20_IetfCtx(
57
+ self::hChaCha20(
58
+ self::substr($nonce, 0, 16),
59
+ $key
60
+ ),
61
+ "\x00\x00\x00\x00" . self::substr($nonce, 16, 8)
62
+ ),
63
+ str_repeat("\x00", $len)
64
+ );
65
+ }
66
+
67
  /**
68
  * @internal You should not use this directly from another application
69
  *
89
  $message
90
  );
91
  }
92
+
93
+ /**
94
+ * @internal You should not use this directly from another application
95
+ *
96
+ * @param string $message
97
+ * @param string $nonce
98
+ * @param string $key
99
+ * @param string $ic
100
+ * @return string
101
+ * @throws SodiumException
102
+ * @throws TypeError
103
+ */
104
+ public static function ietfStreamXorIc($message, $nonce = '', $key = '', $ic = '')
105
+ {
106
+ if (self::strlen($nonce) !== 24) {
107
+ throw new SodiumException('Nonce must be 24 bytes long');
108
+ }
109
+ return self::encryptBytes(
110
+ new ParagonIE_Sodium_Core_ChaCha20_IetfCtx(
111
+ self::hChaCha20(self::substr($nonce, 0, 16), $key),
112
+ "\x00\x00\x00\x00" . self::substr($nonce, 16, 8),
113
+ $ic
114
+ ),
115
+ $message
116
+ );
117
+ }
118
  }
crypto/vendor/paragonie/sodium_compat/src/Core32/BLAKE2b.php CHANGED
@@ -224,12 +224,13 @@ abstract class ParagonIE_Sodium_Core32_BLAKE2b extends ParagonIE_Sodium_Core_Uti
224
  */
225
  protected static function context()
226
  {
227
- $ctx = new SplFixedArray(5);
228
  $ctx[0] = new SplFixedArray(8); // h
229
  $ctx[1] = new SplFixedArray(2); // t
230
  $ctx[2] = new SplFixedArray(2); // f
231
  $ctx[3] = new SplFixedArray(256); // buf
232
  $ctx[4] = 0; // buflen
 
233
 
234
  for ($i = 8; $i--;) {
235
  $ctx[0][$i] = self::$iv[$i];
@@ -483,6 +484,8 @@ abstract class ParagonIE_Sodium_Core32_BLAKE2b extends ParagonIE_Sodium_Core_Uti
483
  *
484
  * @param SplFixedArray|null $key
485
  * @param int $outlen
 
 
486
  * @return SplFixedArray
487
  * @throws SodiumException
488
  * @throws TypeError
@@ -492,8 +495,12 @@ abstract class ParagonIE_Sodium_Core32_BLAKE2b extends ParagonIE_Sodium_Core_Uti
492
  * @psalm-suppress MixedArrayAssignment
493
  * @psalm-suppress MixedMethodCall
494
  */
495
- public static function init($key = null, $outlen = 64)
496
- {
 
 
 
 
497
  self::pseudoConstructor();
498
  $klen = 0;
499
 
@@ -511,6 +518,7 @@ abstract class ParagonIE_Sodium_Core32_BLAKE2b extends ParagonIE_Sodium_Core_Uti
511
  $ctx = self::context();
512
 
513
  $p = new SplFixedArray(64);
 
514
  for ($i = 64; --$i;) {
515
  $p[$i] = 0;
516
  }
@@ -520,11 +528,34 @@ abstract class ParagonIE_Sodium_Core32_BLAKE2b extends ParagonIE_Sodium_Core_Uti
520
  $p[2] = 1; // fanout
521
  $p[3] = 1; // depth
522
 
 
 
 
 
 
 
 
 
 
 
 
 
 
523
  $ctx[0][0] = self::xor64(
524
  $ctx[0][0],
525
  self::load64($p, 0)
526
  );
527
 
 
 
 
 
 
 
 
 
 
 
528
  if ($klen > 0 && $key instanceof SplFixedArray) {
529
  $block = new SplFixedArray(128);
530
  for ($i = 128; $i--;) {
@@ -534,6 +565,7 @@ abstract class ParagonIE_Sodium_Core32_BLAKE2b extends ParagonIE_Sodium_Core_Uti
534
  $block[$i] = $key[$i];
535
  }
536
  self::update($ctx, $block, 128);
 
537
  }
538
 
539
  return $ctx;
@@ -596,7 +628,7 @@ abstract class ParagonIE_Sodium_Core32_BLAKE2b extends ParagonIE_Sodium_Core_Uti
596
  }
597
  /** @var ParagonIE_Sodium_Core32_Int64 $ctxAi */
598
  $ctxAi = $ctxA[$i];
599
- $str .= $ctxAi->toString();
600
  }
601
 
602
  # uint64_t t[2];
@@ -609,8 +641,8 @@ abstract class ParagonIE_Sodium_Core32_BLAKE2b extends ParagonIE_Sodium_Core_Uti
609
  /** @var ParagonIE_Sodium_Core32_Int64 $ctxA2 */
610
  $ctxA2 = $ctxA[1];
611
 
612
- $str .= $ctxA1->toString();
613
- $str .= $ctxA2->toString();
614
  }
615
 
616
  # uint8_t buf[2 * 128];
@@ -625,13 +657,16 @@ abstract class ParagonIE_Sodium_Core32_BLAKE2b extends ParagonIE_Sodium_Core_Uti
625
  self::intToChr(($ctx4 >> 8) & 0xff),
626
  self::intToChr(($ctx4 >> 16) & 0xff),
627
  self::intToChr(($ctx4 >> 24) & 0xff),
 
 
628
  self::intToChr(($ctx4 >> 32) & 0xff),
629
  self::intToChr(($ctx4 >> 40) & 0xff),
630
  self::intToChr(($ctx4 >> 48) & 0xff),
631
  self::intToChr(($ctx4 >> 56) & 0xff)
 
632
  ));
633
  # uint8_t last_node;
634
- return $str . "\x00";
635
  }
636
 
637
  /**
@@ -653,7 +688,7 @@ abstract class ParagonIE_Sodium_Core32_BLAKE2b extends ParagonIE_Sodium_Core_Uti
653
 
654
  # uint64_t h[8];
655
  for ($i = 0; $i < 8; ++$i) {
656
- $ctx[0][$i] = ParagonIE_Sodium_Core32_Int64::fromString(
657
  self::substr($string, (($i << 3) + 0), 8)
658
  );
659
  }
@@ -661,10 +696,10 @@ abstract class ParagonIE_Sodium_Core32_BLAKE2b extends ParagonIE_Sodium_Core_Uti
661
  # uint64_t t[2];
662
  # uint64_t f[2];
663
  for ($i = 1; $i < 3; ++$i) {
664
- $ctx[$i][1] = ParagonIE_Sodium_Core32_Int64::fromString(
665
  self::substr($string, 72 + (($i - 1) << 4), 8)
666
  );
667
- $ctx[$i][0] = ParagonIE_Sodium_Core32_Int64::fromString(
668
  self::substr($string, 64 + (($i - 1) << 4), 8)
669
  );
670
  }
@@ -672,7 +707,6 @@ abstract class ParagonIE_Sodium_Core32_BLAKE2b extends ParagonIE_Sodium_Core_Uti
672
  # uint8_t buf[2 * 128];
673
  $ctx[3] = self::stringToSplFixedArray(self::substr($string, 96, 256));
674
 
675
-
676
  # uint8_t buf[2 * 128];
677
  $int = 0;
678
  for ($i = 0; $i < 8; ++$i) {
224
  */
225
  protected static function context()
226
  {
227
+ $ctx = new SplFixedArray(6);
228
  $ctx[0] = new SplFixedArray(8); // h
229
  $ctx[1] = new SplFixedArray(2); // t
230
  $ctx[2] = new SplFixedArray(2); // f
231
  $ctx[3] = new SplFixedArray(256); // buf
232
  $ctx[4] = 0; // buflen
233
+ $ctx[5] = 0; // last_node (uint8_t)
234
 
235
  for ($i = 8; $i--;) {
236
  $ctx[0][$i] = self::$iv[$i];
484
  *
485
  * @param SplFixedArray|null $key
486
  * @param int $outlen
487
+ * @param SplFixedArray|null $salt
488
+ * @param SplFixedArray|null $personal
489
  * @return SplFixedArray
490
  * @throws SodiumException
491
  * @throws TypeError
495
  * @psalm-suppress MixedArrayAssignment
496
  * @psalm-suppress MixedMethodCall
497
  */
498
+ public static function init(
499
+ $key = null,
500
+ $outlen = 64,
501
+ $salt = null,
502
+ $personal = null
503
+ ) {
504
  self::pseudoConstructor();
505
  $klen = 0;
506
 
518
  $ctx = self::context();
519
 
520
  $p = new SplFixedArray(64);
521
+ // Zero our param buffer...
522
  for ($i = 64; --$i;) {
523
  $p[$i] = 0;
524
  }
528
  $p[2] = 1; // fanout
529
  $p[3] = 1; // depth
530
 
531
+ if ($salt instanceof SplFixedArray) {
532
+ // salt: [32] through [47]
533
+ for ($i = 0; $i < 16; ++$i) {
534
+ $p[32 + $i] = (int) $salt[$i];
535
+ }
536
+ }
537
+ if ($personal instanceof SplFixedArray) {
538
+ // personal: [48] through [63]
539
+ for ($i = 0; $i < 16; ++$i) {
540
+ $p[48 + $i] = (int) $personal[$i];
541
+ }
542
+ }
543
+
544
  $ctx[0][0] = self::xor64(
545
  $ctx[0][0],
546
  self::load64($p, 0)
547
  );
548
 
549
+ if ($salt instanceof SplFixedArray || $personal instanceof SplFixedArray) {
550
+ // We need to do what blake2b_init_param() does:
551
+ for ($i = 1; $i < 8; ++$i) {
552
+ $ctx[0][$i] = self::xor64(
553
+ $ctx[0][$i],
554
+ self::load64($p, $i << 3)
555
+ );
556
+ }
557
+ }
558
+
559
  if ($klen > 0 && $key instanceof SplFixedArray) {
560
  $block = new SplFixedArray(128);
561
  for ($i = 128; $i--;) {
565
  $block[$i] = $key[$i];
566
  }
567
  self::update($ctx, $block, 128);
568
+ $ctx[4] = 128;
569
  }
570
 
571
  return $ctx;
628
  }
629
  /** @var ParagonIE_Sodium_Core32_Int64 $ctxAi */
630
  $ctxAi = $ctxA[$i];
631
+ $str .= $ctxAi->toReverseString();
632
  }
633
 
634
  # uint64_t t[2];
641
  /** @var ParagonIE_Sodium_Core32_Int64 $ctxA2 */
642
  $ctxA2 = $ctxA[1];
643
 
644
+ $str .= $ctxA1->toReverseString();
645
+ $str .= $ctxA2->toReverseString();
646
  }
647
 
648
  # uint8_t buf[2 * 128];
657
  self::intToChr(($ctx4 >> 8) & 0xff),
658
  self::intToChr(($ctx4 >> 16) & 0xff),
659
  self::intToChr(($ctx4 >> 24) & 0xff),
660
+ "\x00\x00\x00\x00"
661
+ /*
662
  self::intToChr(($ctx4 >> 32) & 0xff),
663
  self::intToChr(($ctx4 >> 40) & 0xff),
664
  self::intToChr(($ctx4 >> 48) & 0xff),
665
  self::intToChr(($ctx4 >> 56) & 0xff)
666
+ */
667
  ));
668
  # uint8_t last_node;
669
+ return $str . self::intToChr($ctx[5]) . str_repeat("\x00", 23);
670
  }
671
 
672
  /**
688
 
689
  # uint64_t h[8];
690
  for ($i = 0; $i < 8; ++$i) {
691
+ $ctx[0][$i] = ParagonIE_Sodium_Core32_Int64::fromReverseString(
692
  self::substr($string, (($i << 3) + 0), 8)
693
  );
694
  }
696
  # uint64_t t[2];
697
  # uint64_t f[2];
698
  for ($i = 1; $i < 3; ++$i) {
699
+ $ctx[$i][1] = ParagonIE_Sodium_Core32_Int64::fromReverseString(
700
  self::substr($string, 72 + (($i - 1) << 4), 8)
701
  );
702
+ $ctx[$i][0] = ParagonIE_Sodium_Core32_Int64::fromReverseString(
703
  self::substr($string, 64 + (($i - 1) << 4), 8)
704
  );
705
  }
707
  # uint8_t buf[2 * 128];
708
  $ctx[3] = self::stringToSplFixedArray(self::substr($string, 96, 256));
709
 
 
710
  # uint8_t buf[2 * 128];
711
  $int = 0;
712
  for ($i = 0; $i < 8; ++$i) {
crypto/vendor/paragonie/sodium_compat/src/Core32/Ed25519.php CHANGED
@@ -279,7 +279,7 @@ abstract class ParagonIE_Sodium_Core32_Ed25519 extends ParagonIE_Sodium_Core32_C
279
  if (self::strlen($sig) < 64) {
280
  throw new SodiumException('Signature is too short');
281
  }
282
- if (self::check_S_lt_L(self::substr($sig, 32, 32))) {
283
  throw new SodiumException('S < L - Invalid signature');
284
  }
285
  if (self::small_order($sig)) {
279
  if (self::strlen($sig) < 64) {
280
  throw new SodiumException('Signature is too short');
281
  }
282
+ if ((self::chrToInt($sig[63]) & 240) && self::check_S_lt_L(self::substr($sig, 32, 32))) {
283
  throw new SodiumException('S < L - Invalid signature');
284
  }
285
  if (self::small_order($sig)) {
crypto/vendor/paragonie/sodium_compat/src/Core32/Poly1305/State.php CHANGED
@@ -143,7 +143,7 @@ class ParagonIE_Sodium_Core32_Poly1305_State extends ParagonIE_Sodium_Core32_Uti
143
  }
144
 
145
  $this->blocks(
146
- static::intArrayToString($this->buffer),
147
  ParagonIE_Sodium_Core32_Poly1305::BLOCK_SIZE
148
  );
149
  $this->leftover = 0;
@@ -347,7 +347,7 @@ class ParagonIE_Sodium_Core32_Poly1305_State extends ParagonIE_Sodium_Core32_Uti
347
  $this->final = true;
348
  $this->blocks(
349
  self::substr(
350
- static::intArrayToString($this->buffer),
351
  0,
352
  ParagonIE_Sodium_Core32_Poly1305::BLOCK_SIZE
353
  ),
143
  }
144
 
145
  $this->blocks(
146
+ self::intArrayToString($this->buffer),
147
  ParagonIE_Sodium_Core32_Poly1305::BLOCK_SIZE
148
  );
149
  $this->leftover = 0;
347
  $this->final = true;
348
  $this->blocks(
349
  self::substr(
350
+ self::intArrayToString($this->buffer),
351
  0,
352
  ParagonIE_Sodium_Core32_Poly1305::BLOCK_SIZE
353
  ),
crypto/vendor/paragonie/sodium_compat/src/Core32/SecretStream/State.php ADDED
@@ -0,0 +1,164 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ // phpcs:ignoreFile -- compatibility library for PHP 5-7.1
3
+
4
+ /**
5
+ * Class ParagonIE_Sodium_Core32_SecretStream_State
6
+ */
7
+ class ParagonIE_Sodium_Core32_SecretStream_State
8
+ {
9
+ /** @var string $key */
10
+ protected $key;
11
+
12
+ /** @var int $counter */
13
+ protected $counter;
14
+
15
+ /** @var string $nonce */
16
+ protected $nonce;
17
+
18
+ /** @var string $_pad */
19
+ protected $_pad;
20
+
21
+ /**
22
+ * ParagonIE_Sodium_Core32_SecretStream_State constructor.
23
+ * @param string $key
24
+ * @param string|null $nonce
25
+ */
26
+ public function __construct($key, $nonce = null)
27
+ {
28
+ $this->key = $key;
29
+ $this->counter = 1;
30
+ if (is_null($nonce)) {
31
+ $nonce = str_repeat("\0", 12);
32
+ }
33
+ $this->nonce = str_pad($nonce, 12, "\0", STR_PAD_RIGHT);;
34
+ $this->_pad = str_repeat("\0", 4);
35
+ }
36
+
37
+ /**
38
+ * @return self
39
+ */
40
+ public function counterReset()
41
+ {
42
+ $this->counter = 1;
43
+ $this->_pad = str_repeat("\0", 4);
44
+ return $this;
45
+ }
46
+
47
+ /**
48
+ * @return string
49
+ */
50
+ public function getKey()
51
+ {
52
+ return $this->key;
53
+ }
54
+
55
+ /**
56
+ * @return string
57
+ */
58
+ public function getCounter()
59
+ {
60
+ return ParagonIE_Sodium_Core32_Util::store32_le($this->counter);
61
+ }
62
+
63
+ /**
64
+ * @return string
65
+ */
66
+ public function getNonce()
67
+ {
68
+ if (!is_string($this->nonce)) {
69
+ $this->nonce = str_repeat("\0", 12);
70
+ }
71
+ if (ParagonIE_Sodium_Core32_Util::strlen($this->nonce) !== 12) {
72
+ $this->nonce = str_pad($this->nonce, 12, "\0", STR_PAD_RIGHT);
73
+ }
74
+ return $this->nonce;
75
+ }
76
+
77
+ /**
78
+ * @return string
79
+ */
80
+ public function getCombinedNonce()
81
+ {
82
+ return $this->getCounter() .
83
+ ParagonIE_Sodium_Core32_Util::substr($this->getNonce(), 0, 8);
84
+ }
85
+
86
+ /**
87
+ * @return self
88
+ */
89
+ public function incrementCounter()
90
+ {
91
+ ++$this->counter;
92
+ return $this;
93
+ }
94
+
95
+ /**
96
+ * @return bool
97
+ */
98
+ public function needsRekey()
99
+ {
100
+ return ($this->counter & 0xffff) === 0;
101
+ }
102
+
103
+ /**
104
+ * @param string $newKeyAndNonce
105
+ * @return self
106
+ */
107
+ public function rekey($newKeyAndNonce)
108
+ {
109
+ $this->key = ParagonIE_Sodium_Core32_Util::substr($newKeyAndNonce, 0, 32);
110
+ $this->nonce = str_pad(
111
+ ParagonIE_Sodium_Core32_Util::substr($newKeyAndNonce, 32),
112
+ 12,
113
+ "\0",
114
+ STR_PAD_RIGHT
115
+ );
116
+ return $this;
117
+ }
118
+
119
+ /**
120
+ * @param string $str
121
+ * @return self
122
+ */
123
+ public function xorNonce($str)
124
+ {
125
+ $this->nonce = ParagonIE_Sodium_Core32_Util::xorStrings(
126
+ $this->getNonce(),
127
+ str_pad(
128
+ ParagonIE_Sodium_Core32_Util::substr($str, 0, 8),
129
+ 12,
130
+ "\0",
131
+ STR_PAD_RIGHT
132
+ )
133
+ );
134
+ return $this;
135
+ }
136
+
137
+ /**
138
+ * @param string $string
139
+ * @return self
140
+ */
141
+ public static function fromString($string)
142
+ {
143
+ $state = new ParagonIE_Sodium_Core32_SecretStream_State(
144
+ ParagonIE_Sodium_Core32_Util::substr($string, 0, 32)
145
+ );
146
+ $state->counter = ParagonIE_Sodium_Core32_Util::load_4(
147
+ ParagonIE_Sodium_Core32_Util::substr($string, 32, 4)
148
+ );
149
+ $state->nonce = ParagonIE_Sodium_Core32_Util::substr($string, 36, 12);
150
+ $state->_pad = ParagonIE_Sodium_Core32_Util::substr($string, 48, 8);
151
+ return $state;
152
+ }
153
+
154
+ /**
155
+ * @return string
156
+ */
157
+ public function toString()
158
+ {
159
+ return $this->key .
160
+ $this->getCounter() .
161
+ $this->nonce .
162
+ $this->_pad;
163
+ }
164
+ }
crypto/vendor/paragonie/sodium_compat/src/Core32/X25519.php CHANGED
@@ -152,8 +152,9 @@ abstract class ParagonIE_Sodium_Core32_X25519 extends ParagonIE_Sodium_Core32_Cu
152
  for ($i = 0; $i < 10; ++$i) {
153
  $h[$i] = $h[$i]->toInt32();
154
  }
155
- /** @var array<int, ParagonIE_Sodium_Core32_Int32> $h */
156
- return ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray($h);
 
157
  }
158
 
159
  /**
152
  for ($i = 0; $i < 10; ++$i) {
153
  $h[$i] = $h[$i]->toInt32();
154
  }
155
+ /** @var array<int, ParagonIE_Sodium_Core32_Int32> $h2 */
156
+ $h2 = $h;
157
+ return ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray($h2);
158
  }
159
 
160
  /**
crypto/vendor/paragonie/sodium_compat/src/Crypto.php CHANGED
@@ -778,6 +778,53 @@ abstract class ParagonIE_Sodium_Crypto
778
  return ParagonIE_Sodium_Core_BLAKE2b::contextToString($ctx);
779
  }
780
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
781
  /**
782
  * Update a hashing context for BLAKE2b with $message
783
  *
@@ -1186,6 +1233,362 @@ abstract class ParagonIE_Sodium_Crypto
1186
  return $m;
1187
  }
1188
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1189
  /**
1190
  * Detached Ed25519 signature.
1191
  *
778
  return ParagonIE_Sodium_Core_BLAKE2b::contextToString($ctx);
779
  }
780
 
781
+ /**
782
+ * Initialize a hashing context for BLAKE2b.
783
+ *
784
+ * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
785
+ *
786
+ * @param string $key
787
+ * @param int $outputLength
788
+ * @param string $salt
789
+ * @param string $personal
790
+ * @return string
791
+ * @throws RangeException
792
+ * @throws SodiumException
793
+ * @throws TypeError
794
+ */
795
+ public static function generichash_init_salt_personal(
796
+ $key = '',
797
+ $outputLength = 32,
798
+ $salt = '',
799
+ $personal = ''
800
+ ) {
801
+ // This ensures that ParagonIE_Sodium_Core_BLAKE2b::$iv is initialized
802
+ ParagonIE_Sodium_Core_BLAKE2b::pseudoConstructor();
803
+
804
+ $k = null;
805
+ if (!empty($key)) {
806
+ $k = ParagonIE_Sodium_Core_BLAKE2b::stringToSplFixedArray($key);
807
+ if ($k->count() > ParagonIE_Sodium_Core_BLAKE2b::KEYBYTES) {
808
+ throw new RangeException('Invalid key size');
809
+ }
810
+ }
811
+ if (!empty($salt)) {
812
+ $s = ParagonIE_Sodium_Core_BLAKE2b::stringToSplFixedArray($salt);
813
+ } else {
814
+ $s = null;
815
+ }
816
+ if (!empty($salt)) {
817
+ $p = ParagonIE_Sodium_Core_BLAKE2b::stringToSplFixedArray($personal);
818
+ } else {
819
+ $p = null;
820
+ }
821
+
822
+ /** @var SplFixedArray $ctx */
823
+ $ctx = ParagonIE_Sodium_Core_BLAKE2b::init($k, $outputLength, $s, $p);
824
+
825
+ return ParagonIE_Sodium_Core_BLAKE2b::contextToString($ctx);
826
+ }
827
+
828
  /**
829
  * Update a hashing context for BLAKE2b with $message
830
  *
1233
  return $m;
1234
  }
1235
 
1236
+ /**
1237
+ * @param string $key
1238
+ * @return array<int, string> Returns a state and a header.
1239
+ * @throws Exception
1240
+ * @throws SodiumException
1241
+ */
1242
+ public static function secretstream_xchacha20poly1305_init_push($key)
1243
+ {
1244
+ # randombytes_buf(out, crypto_secretstream_xchacha20poly1305_HEADERBYTES);
1245
+ $out = random_bytes(24);
1246
+
1247
+ # crypto_core_hchacha20(state->k, out, k, NULL);
1248
+ $subkey = ParagonIE_Sodium_Core_HChaCha20::hChaCha20($out, $key);
1249
+ $state = new ParagonIE_Sodium_Core_SecretStream_State(
1250
+ $subkey,
1251
+ ParagonIE_Sodium_Core_Util::substr($out, 16, 8) . str_repeat("\0", 4)
1252
+ );
1253
+
1254
+ # _crypto_secretstream_xchacha20poly1305_counter_reset(state);
1255
+ $state->counterReset();
1256
+
1257
+ # memcpy(STATE_INONCE(state), out + crypto_core_hchacha20_INPUTBYTES,
1258
+ # crypto_secretstream_xchacha20poly1305_INONCEBYTES);
1259
+ # memset(state->_pad, 0, sizeof state->_pad);
1260
+ return array(
1261
+ $state->toString(),
1262
+ $out
1263
+ );
1264
+ }
1265
+
1266
+ /**
1267
+ * @param string $key
1268
+ * @param string $header
1269
+ * @return string Returns a state.
1270
+ * @throws Exception
1271
+ */
1272
+ public static function secretstream_xchacha20poly1305_init_pull($key, $header)
1273
+ {
1274
+ # crypto_core_hchacha20(state->k, in, k, NULL);
1275
+ $subkey = ParagonIE_Sodium_Core_HChaCha20::hChaCha20(
1276
+ ParagonIE_Sodium_Core_Util::substr($header, 0, 16),
1277
+ $key
1278
+ );
1279
+ $state = new ParagonIE_Sodium_Core_SecretStream_State(
1280
+ $subkey,
1281
+ ParagonIE_Sodium_Core_Util::substr($header, 16)
1282
+ );
1283
+ $state->counterReset();
1284
+ # memcpy(STATE_INONCE(state), in + crypto_core_hchacha20_INPUTBYTES,
1285
+ # crypto_secretstream_xchacha20poly1305_INONCEBYTES);
1286
+ # memset(state->_pad, 0, sizeof state->_pad);
1287
+ # return 0;
1288
+ return $state->toString();
1289
+ }
1290
+
1291
+ /**
1292
+ * @param string $state
1293
+ * @param string $msg
1294
+ * @param string $aad
1295
+ * @param int $tag
1296
+ * @return string
1297
+ * @throws SodiumException
1298
+ */
1299
+ public static function secretstream_xchacha20poly1305_push(&$state, $msg, $aad = '', $tag = 0)
1300
+ {
1301
+ $st = ParagonIE_Sodium_Core_SecretStream_State::fromString($state);
1302
+ # crypto_onetimeauth_poly1305_state poly1305_state;
1303
+ # unsigned char block[64U];
1304
+ # unsigned char slen[8U];
1305
+ # unsigned char *c;
1306
+ # unsigned char *mac;
1307
+
1308
+ $msglen = ParagonIE_Sodium_Core_Util::strlen($msg);
1309
+ $aadlen = ParagonIE_Sodium_Core_Util::strlen($aad);
1310
+
1311
+ if ((($msglen + 63) >> 6) > 0xfffffffe) {
1312
+ throw new SodiumException(
1313
+ 'message cannot be larger than SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_MESSAGEBYTES_MAX bytes'
1314
+ );
1315
+ }
1316
+
1317
+ # if (outlen_p != NULL) {
1318
+ # *outlen_p = 0U;
1319
+ # }
1320
+ # if (mlen > crypto_secretstream_xchacha20poly1305_MESSAGEBYTES_MAX) {
1321
+ # sodium_misuse();
1322
+ # }
1323
+
1324
+ # crypto_stream_chacha20_ietf(block, sizeof block, state->nonce, state->k);
1325
+ # crypto_onetimeauth_poly1305_init(&poly1305_state, block);
1326
+ # sodium_memzero(block, sizeof block);
1327
+ $auth = new ParagonIE_Sodium_Core_Poly1305_State(
1328
+ ParagonIE_Sodium_Core_ChaCha20::ietfStream(32, $st->getCombinedNonce(), $st->getKey())
1329
+ );
1330
+
1331
+ # crypto_onetimeauth_poly1305_update(&poly1305_state, ad, adlen);
1332
+ $auth->update($aad);
1333
+
1334
+ # crypto_onetimeauth_poly1305_update(&poly1305_state, _pad0,
1335
+ # (0x10 - adlen) & 0xf);
1336
+ $auth->update(str_repeat("\0", ((0x10 - $aadlen) & 0xf)));
1337
+
1338
+ # memset(block, 0, sizeof block);
1339
+ # block[0] = tag;
1340
+ # crypto_stream_chacha20_ietf_xor_ic(block, block, sizeof block,
1341
+ # state->nonce, 1U, state->k);
1342
+ $block = ParagonIE_Sodium_Core_ChaCha20::ietfStreamXorIc(
1343
+ ParagonIE_Sodium_Core_Util::intToChr($tag) . str_repeat("\0", 63),
1344
+ $st->getCombinedNonce(),
1345
+ $st->getKey(),
1346
+ ParagonIE_Sodium_Core_Util::store64_le(1)
1347
+ );
1348
+
1349
+ # crypto_onetimeauth_poly1305_update(&poly1305_state, block, sizeof block);
1350
+ $auth->update($block);
1351
+
1352
+ # out[0] = block[0];
1353
+ $out = $block[0];
1354
+ # c = out + (sizeof tag);
1355
+ # crypto_stream_chacha20_ietf_xor_ic(c, m, mlen, state->nonce, 2U, state->k);
1356
+ $cipher = ParagonIE_Sodium_Core_ChaCha20::ietfStreamXorIc(
1357
+ $msg,
1358
+ $st->getCombinedNonce(),
1359
+ $st->getKey(),
1360
+ ParagonIE_Sodium_Core_Util::store64_le(2)
1361
+ );
1362
+
1363
+ # crypto_onetimeauth_poly1305_update(&poly1305_state, c, mlen);
1364
+ $auth->update($cipher);
1365
+
1366
+ $out .= $cipher;
1367
+ unset($cipher);
1368
+
1369
+ # crypto_onetimeauth_poly1305_update
1370
+ # (&poly1305_state, _pad0, (0x10 - (sizeof block) + mlen) & 0xf);
1371
+ $auth->update(str_repeat("\0", ((0x10 - 64 + $msglen) & 0xf)));
1372
+
1373
+ # STORE64_LE(slen, (uint64_t) adlen);
1374
+ $slen = ParagonIE_Sodium_Core_Util::store64_le($aadlen);
1375
+
1376
+ # crypto_onetimeauth_poly1305_update(&poly1305_state, slen, sizeof slen);
1377
+ $auth->update($slen);
1378
+
1379
+ # STORE64_LE(slen, (sizeof block) + mlen);
1380
+ $slen = ParagonIE_Sodium_Core_Util::store64_le(64 + $msglen);
1381
+
1382
+ # crypto_onetimeauth_poly1305_update(&poly1305_state, slen, sizeof slen);
1383
+ $auth->update($slen);
1384
+
1385
+ # mac = c + mlen;
1386
+ # crypto_onetimeauth_poly1305_final(&poly1305_state, mac);
1387
+ $mac = $auth->finish();
1388
+ $out .= $mac;
1389
+
1390
+ # sodium_memzero(&poly1305_state, sizeof poly1305_state);
1391
+ unset($auth);
1392
+
1393
+
1394
+ # XOR_BUF(STATE_INONCE(state), mac,
1395
+ # crypto_secretstream_xchacha20poly1305_INONCEBYTES);
1396
+ $st->xorNonce($mac);
1397
+
1398
+ # sodium_increment(STATE_COUNTER(state),
1399
+ # crypto_secretstream_xchacha20poly1305_COUNTERBYTES);
1400
+ $st->incrementCounter();
1401
+ // Overwrite by reference:
1402
+ $state = $st->toString();
1403
+
1404
+ /** @var bool $rekey */
1405
+ $rekey = ($tag & ParagonIE_Sodium_Compat::CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_REKEY) !== 0;
1406
+ # if ((tag & crypto_secretstream_xchacha20poly1305_TAG_REKEY) != 0 ||
1407
+ # sodium_is_zero(STATE_COUNTER(state),
1408
+ # crypto_secretstream_xchacha20poly1305_COUNTERBYTES)) {
1409
+ # crypto_secretstream_xchacha20poly1305_rekey(state);
1410
+ # }
1411
+ if ($rekey || $st->needsRekey()) {
1412
+ // DO REKEY
1413
+ self::secretstream_xchacha20poly1305_rekey($state);
1414
+ }
1415
+ # if (outlen_p != NULL) {
1416
+ # *outlen_p = crypto_secretstream_xchacha20poly1305_ABYTES + mlen;
1417
+ # }
1418
+ return $out;
1419
+ }
1420
+
1421
+ /**
1422
+ * @param string $state
1423
+ * @param string $cipher
1424
+ * @param string $aad
1425
+ * @return bool|array{0: string, 1: int}
1426
+ * @throws SodiumException
1427
+ */
1428
+ public static function secretstream_xchacha20poly1305_pull(&$state, $cipher, $aad = '')
1429
+ {
1430
+ $st = ParagonIE_Sodium_Core_SecretStream_State::fromString($state);
1431
+
1432
+ $cipherlen = ParagonIE_Sodium_Core_Util::strlen($cipher);
1433
+ # mlen = inlen - crypto_secretstream_xchacha20poly1305_ABYTES;
1434
+ $msglen = $cipherlen - ParagonIE_Sodium_Compat::CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_ABYTES;
1435
+ $aadlen = ParagonIE_Sodium_Core_Util::strlen($aad);
1436
+
1437
+ # if (mlen > crypto_secretstream_xchacha20poly1305_MESSAGEBYTES_MAX) {
1438
+ # sodium_misuse();
1439
+ # }
1440
+ if ((($msglen + 63) >> 6) > 0xfffffffe) {
1441
+ throw new SodiumException(
1442
+ 'message cannot be larger than SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_MESSAGEBYTES_MAX bytes'
1443
+ );
1444
+ }
1445
+
1446
+ # crypto_stream_chacha20_ietf(block, sizeof block, state->nonce, state->k);
1447
+ # crypto_onetimeauth_poly1305_init(&poly1305_state, block);
1448
+ # sodium_memzero(block, sizeof block);
1449
+ $auth = new ParagonIE_Sodium_Core_Poly1305_State(
1450
+ ParagonIE_Sodium_Core_ChaCha20::ietfStream(32, $st->getCombinedNonce(), $st->getKey())
1451
+ );
1452
+
1453
+ # crypto_onetimeauth_poly1305_update(&poly1305_state, ad, adlen);
1454
+ $auth->update($aad);
1455
+
1456
+ # crypto_onetimeauth_poly1305_update(&poly1305_state, _pad0,
1457
+ # (0x10 - adlen) & 0xf);
1458
+ $auth->update(str_repeat("\0", ((0x10 - $aadlen) & 0xf)));
1459
+
1460
+
1461
+ # memset(block, 0, sizeof block);
1462
+ # block[0] = in[0];
1463
+ # crypto_stream_chacha20_ietf_xor_ic(block, block, sizeof block,
1464
+ # state->nonce, 1U, state->k);
1465
+ $block = ParagonIE_Sodium_Core_ChaCha20::ietfStreamXorIc(
1466
+ $cipher[0] . str_repeat("\0", 63),
1467
+ $st->getCombinedNonce(),
1468
+ $st->getKey(),
1469
+ ParagonIE_Sodium_Core_Util::store64_le(1)
1470
+ );
1471
+ # tag = block[0];
1472
+ # block[0] = in[0];
1473
+ # crypto_onetimeauth_poly1305_update(&poly1305_state, block, sizeof block);
1474
+ $tag = ParagonIE_Sodium_Core_Util::chrToInt($block[0]);
1475
+ $block[0] = $cipher[0];
1476
+ $auth->update($block);
1477
+
1478
+
1479
+ # c = in + (sizeof tag);
1480
+ # crypto_onetimeauth_poly1305_update(&poly1305_state, c, mlen);
1481
+ $auth->update(ParagonIE_Sodium_Core_Util::substr($cipher, 1, $msglen));
1482
+
1483
+ # crypto_onetimeauth_poly1305_update
1484
+ # (&poly1305_state, _pad0, (0x10 - (sizeof block) + mlen) & 0xf);
1485
+ $auth->update(str_repeat("\0", ((0x10 - 64 + $msglen) & 0xf)));
1486
+
1487
+ # STORE64_LE(slen, (uint64_t) adlen);
1488
+ # crypto_onetimeauth_poly1305_update(&poly1305_state, slen, sizeof slen);
1489
+ $slen = ParagonIE_Sodium_Core_Util::store64_le($aadlen);
1490
+ $auth->update($slen);
1491
+
1492
+ # STORE64_LE(slen, (sizeof block) + mlen);
1493
+ # crypto_onetimeauth_poly1305_update(&poly1305_state, slen, sizeof slen);
1494
+ $slen = ParagonIE_Sodium_Core_Util::store64_le(64 + $msglen);
1495
+ $auth->update($slen);
1496
+
1497
+ # crypto_onetimeauth_poly1305_final(&poly1305_state, mac);
1498
+ # sodium_memzero(&poly1305_state, sizeof poly1305_state);
1499
+ $mac = $auth->finish();
1500
+
1501
+ # stored_mac = c + mlen;
1502
+ # if (sodium_memcmp(mac, stored_mac, sizeof mac) != 0) {
1503
+ # sodium_memzero(mac, sizeof mac);
1504
+ # return -1;
1505
+ # }
1506
+
1507
+ $stored = ParagonIE_Sodium_Core_Util::substr($cipher, $msglen + 1, 16);
1508
+ if (!ParagonIE_Sodium_Core_Util::hashEquals($mac, $stored)) {
1509
+ return false;
1510
+ }
1511
+
1512
+ # crypto_stream_chacha20_ietf_xor_ic(m, c, mlen, state->nonce, 2U, state->k);
1513
+ $out = ParagonIE_Sodium_Core_ChaCha20::ietfStreamXorIc(
1514
+ ParagonIE_Sodium_Core_Util::substr($cipher, 1, $msglen),
1515
+ $st->getCombinedNonce(),
1516
+ $st->getKey(),
1517
+ ParagonIE_Sodium_Core_Util::store64_le(2)
1518
+ );
1519
+
1520
+ # XOR_BUF(STATE_INONCE(state), mac,
1521
+ # crypto_secretstream_xchacha20poly1305_INONCEBYTES);
1522
+ $st->xorNonce($mac);
1523
+
1524
+ # sodium_increment(STATE_COUNTER(state),
1525
+ # crypto_secretstream_xchacha20poly1305_COUNTERBYTES);
1526
+ $st->incrementCounter();
1527
+
1528
+ # if ((tag & crypto_secretstream_xchacha20poly1305_TAG_REKEY) != 0 ||
1529
+ # sodium_is_zero(STATE_COUNTER(state),
1530
+ # crypto_secretstream_xchacha20poly1305_COUNTERBYTES)) {
1531
+ # crypto_secretstream_xchacha20poly1305_rekey(state);
1532
+ # }
1533
+
1534
+ // Overwrite by reference:
1535
+ $state = $st->toString();
1536
+
1537
+ /** @var bool $rekey */
1538
+ $rekey = ($tag & ParagonIE_Sodium_Compat::CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_REKEY) !== 0;
1539
+ if ($rekey || $st->needsRekey()) {
1540
+ // DO REKEY
1541
+ self::secretstream_xchacha20poly1305_rekey($state);
1542
+ }
1543
+ return array($out, $tag);
1544
+ }
1545
+
1546
+ /**
1547
+ * @param string $state
1548
+ * @return void
1549
+ * @throws SodiumException
1550
+ */
1551
+ public static function secretstream_xchacha20poly1305_rekey(&$state)
1552
+ {
1553
+ $st = ParagonIE_Sodium_Core_SecretStream_State::fromString($state);
1554
+ # unsigned char new_key_and_inonce[crypto_stream_chacha20_ietf_KEYBYTES +
1555
+ # crypto_secretstream_xchacha20poly1305_INONCEBYTES];
1556
+ # size_t i;
1557
+ # for (i = 0U; i < crypto_stream_chacha20_ietf_KEYBYTES; i++) {
1558
+ # new_key_and_inonce[i] = state->k[i];
1559
+ # }
1560
+ $new_key_and_inonce = $st->getKey();
1561
+
1562
+ # for (i = 0U; i < crypto_secretstream_xchacha20poly1305_INONCEBYTES; i++) {
1563
+ # new_key_and_inonce[crypto_stream_chacha20_ietf_KEYBYTES + i] =
1564
+ # STATE_INONCE(state)[i];
1565
+ # }
1566
+ $new_key_and_inonce .= ParagonIE_Sodium_Core_Util::substR($st->getNonce(), 0, 8);
1567
+
1568
+ # crypto_stream_chacha20_ietf_xor(new_key_and_inonce, new_key_and_inonce,
1569
+ # sizeof new_key_and_inonce,
1570
+ # state->nonce, state->k);
1571
+
1572
+ $st->rekey(ParagonIE_Sodium_Core_ChaCha20::ietfStreamXorIc(
1573
+ $new_key_and_inonce,
1574
+ $st->getCombinedNonce(),
1575
+ $st->getKey(),
1576
+ ParagonIE_Sodium_Core_Util::store64_le(0)
1577
+ ));
1578
+
1579
+ # for (i = 0U; i < crypto_stream_chacha20_ietf_KEYBYTES; i++) {
1580
+ # state->k[i] = new_key_and_inonce[i];
1581
+ # }
1582
+ # for (i = 0U; i < crypto_secretstream_xchacha20poly1305_INONCEBYTES; i++) {
1583
+ # STATE_INONCE(state)[i] =
1584
+ # new_key_and_inonce[crypto_stream_chacha20_ietf_KEYBYTES + i];
1585
+ # }
1586
+ # _crypto_secretstream_xchacha20poly1305_counter_reset(state);
1587
+ $st->counterReset();
1588
+
1589
+ $state = $st->toString();
1590
+ }
1591
+
1592
  /**
1593
  * Detached Ed25519 signature.
1594
  *
crypto/vendor/paragonie/sodium_compat/src/Crypto32.php CHANGED
@@ -777,6 +777,53 @@ abstract class ParagonIE_Sodium_Crypto32
777
  return ParagonIE_Sodium_Core32_BLAKE2b::contextToString($ctx);
778
  }
779
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
780
  /**
781
  * Update a hashing context for BLAKE2b with $message
782
  *
@@ -1185,6 +1232,362 @@ abstract class ParagonIE_Sodium_Crypto32
1185
  return $m;
1186
  }
1187
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1188
  /**
1189
  * Detached Ed25519 signature.
1190
  *
777
  return ParagonIE_Sodium_Core32_BLAKE2b::contextToString($ctx);
778
  }
779
 
780
+ /**
781
+ * Initialize a hashing context for BLAKE2b.
782
+ *
783
+ * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
784
+ *
785
+ * @param string $key
786
+ * @param int $outputLength
787
+ * @param string $salt
788
+ * @param string $personal
789
+ * @return string
790
+ * @throws RangeException
791
+ * @throws SodiumException
792
+ * @throws TypeError
793
+ */
794
+ public static function generichash_init_salt_personal(
795
+ $key = '',
796
+ $outputLength = 32,
797
+ $salt = '',
798
+ $personal = ''
799
+ ) {
800
+ // This ensures that ParagonIE_Sodium_Core32_BLAKE2b::$iv is initialized
801
+ ParagonIE_Sodium_Core32_BLAKE2b::pseudoConstructor();
802
+
803
+ $k = null;
804
+ if (!empty($key)) {
805
+ $k = ParagonIE_Sodium_Core32_BLAKE2b::stringToSplFixedArray($key);
806
+ if ($k->count() > ParagonIE_Sodium_Core32_BLAKE2b::KEYBYTES) {
807
+ throw new RangeException('Invalid key size');
808
+ }
809
+ }
810
+ if (!empty($salt)) {
811
+ $s = ParagonIE_Sodium_Core32_BLAKE2b::stringToSplFixedArray($salt);
812
+ } else {
813
+ $s = null;
814
+ }
815
+ if (!empty($salt)) {
816
+ $p = ParagonIE_Sodium_Core32_BLAKE2b::stringToSplFixedArray($personal);
817
+ } else {
818
+ $p = null;
819
+ }
820
+
821
+ /** @var SplFixedArray $ctx */
822
+ $ctx = ParagonIE_Sodium_Core32_BLAKE2b::init($k, $outputLength, $s, $p);
823
+
824
+ return ParagonIE_Sodium_Core32_BLAKE2b::contextToString($ctx);
825
+ }
826
+
827
  /**
828
  * Update a hashing context for BLAKE2b with $message
829
  *
1232
  return $m;
1233
  }
1234
 
1235
+ /**
1236
+ * @param string $key
1237
+ * @return array<int, string> Returns a state and a header.
1238
+ * @throws Exception
1239
+ * @throws SodiumException
1240
+ */
1241
+ public static function secretstream_xchacha20poly1305_init_push($key)
1242
+ {
1243
+ # randombytes_buf(out, crypto_secretstream_xchacha20poly1305_HEADERBYTES);
1244
+ $out = random_bytes(24);
1245
+
1246
+ # crypto_core_hchacha20(state->k, out, k, NULL);
1247
+ $subkey = ParagonIE_Sodium_Core32_HChaCha20::hChaCha20($out, $key);
1248
+ $state = new ParagonIE_Sodium_Core32_SecretStream_State(
1249
+ $subkey,
1250
+ ParagonIE_Sodium_Core32_Util::substr($out, 16, 8) . str_repeat("\0", 4)
1251
+ );
1252
+
1253
+ # _crypto_secretstream_xchacha20poly1305_counter_reset(state);
1254
+ $state->counterReset();
1255
+
1256
+ # memcpy(STATE_INONCE(state), out + crypto_core_hchacha20_INPUTBYTES,
1257
+ # crypto_secretstream_xchacha20poly1305_INONCEBYTES);
1258
+ # memset(state->_pad, 0, sizeof state->_pad);
1259
+ return array(
1260
+ $state->toString(),
1261
+ $out
1262
+ );
1263
+ }
1264
+
1265
+ /**
1266
+ * @param string $key
1267
+ * @param string $header
1268
+ * @return string Returns a state.
1269
+ * @throws Exception
1270
+ */
1271
+ public static function secretstream_xchacha20poly1305_init_pull($key, $header)
1272
+ {
1273
+ # crypto_core_hchacha20(state->k, in, k, NULL);
1274
+ $subkey = ParagonIE_Sodium_Core32_HChaCha20::hChaCha20(
1275
+ ParagonIE_Sodium_Core32_Util::substr($header, 0, 16),
1276
+ $key
1277
+ );
1278
+ $state = new ParagonIE_Sodium_Core32_SecretStream_State(
1279
+ $subkey,
1280
+ ParagonIE_Sodium_Core32_Util::substr($header, 16)
1281
+ );
1282
+ $state->counterReset();
1283
+ # memcpy(STATE_INONCE(state), in + crypto_core_hchacha20_INPUTBYTES,
1284
+ # crypto_secretstream_xchacha20poly1305_INONCEBYTES);
1285
+ # memset(state->_pad, 0, sizeof state->_pad);
1286
+ # return 0;
1287
+ return $state->toString();
1288
+ }
1289
+
1290
+ /**
1291
+ * @param string $state
1292
+ * @param string $msg
1293
+ * @param string $aad
1294
+ * @param int $tag
1295
+ * @return string
1296
+ * @throws SodiumException
1297
+ */
1298
+ public static function secretstream_xchacha20poly1305_push(&$state, $msg, $aad = '', $tag = 0)
1299
+ {
1300
+ $st = ParagonIE_Sodium_Core32_SecretStream_State::fromString($state);
1301
+ # crypto_onetimeauth_poly1305_state poly1305_state;
1302
+ # unsigned char block[64U];
1303
+ # unsigned char slen[8U];
1304
+ # unsigned char *c;
1305
+ # unsigned char *mac;
1306
+
1307
+ $msglen = ParagonIE_Sodium_Core32_Util::strlen($msg);
1308
+ $aadlen = ParagonIE_Sodium_Core32_Util::strlen($aad);
1309
+
1310
+ if ((($msglen + 63) >> 6) > 0xfffffffe) {
1311
+ throw new SodiumException(
1312
+ 'message cannot be larger than SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_MESSAGEBYTES_MAX bytes'
1313
+ );
1314
+ }
1315
+
1316
+ # if (outlen_p != NULL) {
1317
+ # *outlen_p = 0U;
1318
+ # }
1319
+ # if (mlen > crypto_secretstream_xchacha20poly1305_MESSAGEBYTES_MAX) {
1320
+ # sodium_misuse();
1321
+ # }
1322
+
1323
+ # crypto_stream_chacha20_ietf(block, sizeof block, state->nonce, state->k);
1324
+ # crypto_onetimeauth_poly1305_init(&poly1305_state, block);
1325
+ # sodium_memzero(block, sizeof block);
1326
+ $auth = new ParagonIE_Sodium_Core32_Poly1305_State(
1327
+ ParagonIE_Sodium_Core32_ChaCha20::ietfStream(32, $st->getCombinedNonce(), $st->getKey())
1328
+ );
1329
+
1330
+ # crypto_onetimeauth_poly1305_update(&poly1305_state, ad, adlen);
1331
+ $auth->update($aad);
1332
+
1333
+ # crypto_onetimeauth_poly1305_update(&poly1305_state, _pad0,
1334
+ # (0x10 - adlen) & 0xf);
1335
+ $auth->update(str_repeat("\0", ((0x10 - $aadlen) & 0xf)));
1336
+
1337
+ # memset(block, 0, sizeof block);
1338
+ # block[0] = tag;
1339
+ # crypto_stream_chacha20_ietf_xor_ic(block, block, sizeof block,
1340
+ # state->nonce, 1U, state->k);
1341
+ $block = ParagonIE_Sodium_Core32_ChaCha20::ietfStreamXorIc(
1342
+ ParagonIE_Sodium_Core32_Util::intToChr($tag) . str_repeat("\0", 63),
1343
+ $st->getCombinedNonce(),
1344
+ $st->getKey(),
1345
+ ParagonIE_Sodium_Core32_Util::store64_le(1)
1346
+ );
1347
+
1348
+ # crypto_onetimeauth_poly1305_update(&poly1305_state, block, sizeof block);
1349
+ $auth->update($block);
1350
+
1351
+ # out[0] = block[0];
1352
+ $out = $block[0];
1353
+ # c = out + (sizeof tag);
1354
+ # crypto_stream_chacha20_ietf_xor_ic(c, m, mlen, state->nonce, 2U, state->k);
1355
+ $cipher = ParagonIE_Sodium_Core32_ChaCha20::ietfStreamXorIc(
1356
+ $msg,
1357
+ $st->getCombinedNonce(),
1358
+ $st->getKey(),
1359
+ ParagonIE_Sodium_Core32_Util::store64_le(2)
1360
+ );
1361
+
1362
+ # crypto_onetimeauth_poly1305_update(&poly1305_state, c, mlen);
1363
+ $auth->update($cipher);
1364
+
1365
+ $out .= $cipher;
1366
+ unset($cipher);
1367
+
1368
+ # crypto_onetimeauth_poly1305_update
1369
+ # (&poly1305_state, _pad0, (0x10 - (sizeof block) + mlen) & 0xf);
1370
+ $auth->update(str_repeat("\0", ((0x10 - 64 + $msglen) & 0xf)));
1371
+
1372
+ # STORE64_LE(slen, (uint64_t) adlen);
1373
+ $slen = ParagonIE_Sodium_Core32_Util::store64_le($aadlen);
1374
+
1375
+ # crypto_onetimeauth_poly1305_update(&poly1305_state, slen, sizeof slen);
1376
+ $auth->update($slen);
1377
+
1378
+ # STORE64_LE(slen, (sizeof block) + mlen);
1379
+ $slen = ParagonIE_Sodium_Core32_Util::store64_le(64 + $msglen);
1380
+
1381
+ # crypto_onetimeauth_poly1305_update(&poly1305_state, slen, sizeof slen);
1382
+ $auth->update($slen);
1383
+
1384
+ # mac = c + mlen;
1385
+ # crypto_onetimeauth_poly1305_final(&poly1305_state, mac);
1386
+ $mac = $auth->finish();
1387
+ $out .= $mac;
1388
+
1389
+ # sodium_memzero(&poly1305_state, sizeof poly1305_state);
1390
+ unset($auth);
1391
+
1392
+
1393
+ # XOR_BUF(STATE_INONCE(state), mac,
1394
+ # crypto_secretstream_xchacha20poly1305_INONCEBYTES);
1395
+ $st->xorNonce($mac);
1396
+
1397
+ # sodium_increment(STATE_COUNTER(state),
1398
+ # crypto_secretstream_xchacha20poly1305_COUNTERBYTES);
1399
+ $st->incrementCounter();
1400
+ // Overwrite by reference:
1401
+ $state = $st->toString();
1402
+
1403
+ /** @var bool $rekey */
1404
+ $rekey = ($tag & ParagonIE_Sodium_Compat::CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_REKEY) !== 0;
1405
+ # if ((tag & crypto_secretstream_xchacha20poly1305_TAG_REKEY) != 0 ||
1406
+ # sodium_is_zero(STATE_COUNTER(state),
1407
+ # crypto_secretstream_xchacha20poly1305_COUNTERBYTES)) {
1408
+ # crypto_secretstream_xchacha20poly1305_rekey(state);
1409
+ # }
1410
+ if ($rekey || $st->needsRekey()) {
1411
+ // DO REKEY
1412
+ self::secretstream_xchacha20poly1305_rekey($state);
1413
+ }
1414
+ # if (outlen_p != NULL) {
1415
+ # *outlen_p = crypto_secretstream_xchacha20poly1305_ABYTES + mlen;
1416
+ # }
1417
+ return $out;
1418
+ }
1419
+
1420
+ /**
1421
+ * @param string $state
1422
+ * @param string $cipher
1423
+ * @param string $aad
1424
+ * @return bool|array{0: string, 1: int}
1425
+ * @throws SodiumException
1426
+ */
1427
+ public static function secretstream_xchacha20poly1305_pull(&$state, $cipher, $aad = '')
1428
+ {
1429
+ $st = ParagonIE_Sodium_Core32_SecretStream_State::fromString($state);
1430
+
1431
+ $cipherlen = ParagonIE_Sodium_Core32_Util::strlen($cipher);
1432
+ # mlen = inlen - crypto_secretstream_xchacha20poly1305_ABYTES;
1433
+ $msglen = $cipherlen - ParagonIE_Sodium_Compat::CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_ABYTES;
1434
+ $aadlen = ParagonIE_Sodium_Core32_Util::strlen($aad);
1435
+
1436
+ # if (mlen > crypto_secretstream_xchacha20poly1305_MESSAGEBYTES_MAX) {
1437
+ # sodium_misuse();
1438
+ # }
1439
+ if ((($msglen + 63) >> 6) > 0xfffffffe) {
1440
+ throw new SodiumException(
1441
+ 'message cannot be larger than SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_MESSAGEBYTES_MAX bytes'
1442
+ );
1443
+ }
1444
+
1445
+ # crypto_stream_chacha20_ietf(block, sizeof block, state->nonce, state->k);
1446
+ # crypto_onetimeauth_poly1305_init(&poly1305_state, block);
1447
+ # sodium_memzero(block, sizeof block);
1448
+ $auth = new ParagonIE_Sodium_Core32_Poly1305_State(
1449
+ ParagonIE_Sodium_Core32_ChaCha20::ietfStream(32, $st->getCombinedNonce(), $st->getKey())
1450
+ );
1451
+
1452
+ # crypto_onetimeauth_poly1305_update(&poly1305_state, ad, adlen);
1453
+ $auth->update($aad);
1454
+
1455
+ # crypto_onetimeauth_poly1305_update(&poly1305_state, _pad0,
1456
+ # (0x10 - adlen) & 0xf);
1457
+ $auth->update(str_repeat("\0", ((0x10 - $aadlen) & 0xf)));
1458
+
1459
+
1460
+ # memset(block, 0, sizeof block);
1461
+ # block[0] = in[0];
1462
+ # crypto_stream_chacha20_ietf_xor_ic(block, block, sizeof block,
1463
+ # state->nonce, 1U, state->k);
1464
+ $block = ParagonIE_Sodium_Core32_ChaCha20::ietfStreamXorIc(
1465
+ $cipher[0] . str_repeat("\0", 63),
1466
+ $st->getCombinedNonce(),
1467
+ $st->getKey(),
1468
+ ParagonIE_Sodium_Core32_Util::store64_le(1)
1469
+ );
1470
+ # tag = block[0];
1471
+ # block[0] = in[0];
1472
+ # crypto_onetimeauth_poly1305_update(&poly1305_state, block, sizeof block);
1473
+ $tag = ParagonIE_Sodium_Core32_Util::chrToInt($block[0]);
1474
+ $block[0] = $cipher[0];
1475
+ $auth->update($block);
1476
+
1477
+
1478
+ # c = in + (sizeof tag);
1479
+ # crypto_onetimeauth_poly1305_update(&poly1305_state, c, mlen);
1480
+ $auth->update(ParagonIE_Sodium_Core32_Util::substr($cipher, 1, $msglen));
1481
+
1482
+ # crypto_onetimeauth_poly1305_update
1483
+ # (&poly1305_state, _pad0, (0x10 - (sizeof block) + mlen) & 0xf);
1484
+ $auth->update(str_repeat("\0", ((0x10 - 64 + $msglen) & 0xf)));
1485
+
1486
+ # STORE64_LE(slen, (uint64_t) adlen);
1487
+ # crypto_onetimeauth_poly1305_update(&poly1305_state, slen, sizeof slen);
1488
+ $slen = ParagonIE_Sodium_Core32_Util::store64_le($aadlen);
1489
+ $auth->update($slen);
1490
+
1491
+ # STORE64_LE(slen, (sizeof block) + mlen);
1492
+ # crypto_onetimeauth_poly1305_update(&poly1305_state, slen, sizeof slen);
1493
+ $slen = ParagonIE_Sodium_Core32_Util::store64_le(64 + $msglen);
1494
+ $auth->update($slen);
1495
+
1496
+ # crypto_onetimeauth_poly1305_final(&poly1305_state, mac);
1497
+ # sodium_memzero(&poly1305_state, sizeof poly1305_state);
1498
+ $mac = $auth->finish();
1499
+
1500
+ # stored_mac = c + mlen;
1501
+ # if (sodium_memcmp(mac, stored_mac, sizeof mac) != 0) {
1502
+ # sodium_memzero(mac, sizeof mac);
1503
+ # return -1;
1504
+ # }
1505
+
1506
+ $stored = ParagonIE_Sodium_Core32_Util::substr($cipher, $msglen + 1, 16);
1507
+ if (!ParagonIE_Sodium_Core32_Util::hashEquals($mac, $stored)) {
1508
+ return false;
1509
+ }
1510
+
1511
+ # crypto_stream_chacha20_ietf_xor_ic(m, c, mlen, state->nonce, 2U, state->k);
1512
+ $out = ParagonIE_Sodium_Core32_ChaCha20::ietfStreamXorIc(
1513
+ ParagonIE_Sodium_Core32_Util::substr($cipher, 1, $msglen),
1514
+ $st->getCombinedNonce(),
1515
+ $st->getKey(),
1516
+ ParagonIE_Sodium_Core32_Util::store64_le(2)
1517
+ );
1518
+
1519
+ # XOR_BUF(STATE_INONCE(state), mac,
1520
+ # crypto_secretstream_xchacha20poly1305_INONCEBYTES);
1521
+ $st->xorNonce($mac);
1522
+
1523
+ # sodium_increment(STATE_COUNTER(state),
1524
+ # crypto_secretstream_xchacha20poly1305_COUNTERBYTES);
1525
+ $st->incrementCounter();
1526
+
1527
+ # if ((tag & crypto_secretstream_xchacha20poly1305_TAG_REKEY) != 0 ||
1528
+ # sodium_is_zero(STATE_COUNTER(state),
1529
+ # crypto_secretstream_xchacha20poly1305_COUNTERBYTES)) {
1530
+ # crypto_secretstream_xchacha20poly1305_rekey(state);
1531
+ # }
1532
+
1533
+ // Overwrite by reference:
1534
+ $state = $st->toString();
1535
+
1536
+ /** @var bool $rekey */
1537
+ $rekey = ($tag & ParagonIE_Sodium_Compat::CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_REKEY) !== 0;
1538
+ if ($rekey || $st->needsRekey()) {
1539
+ // DO REKEY
1540
+ self::secretstream_xchacha20poly1305_rekey($state);
1541
+ }
1542
+ return array($out, $tag);
1543
+ }
1544
+
1545
+ /**
1546
+ * @param string $state
1547
+ * @return void
1548
+ * @throws SodiumException
1549
+ */
1550
+ public static function secretstream_xchacha20poly1305_rekey(&$state)
1551
+ {
1552
+ $st = ParagonIE_Sodium_Core32_SecretStream_State::fromString($state);
1553
+ # unsigned char new_key_and_inonce[crypto_stream_chacha20_ietf_KEYBYTES +
1554
+ # crypto_secretstream_xchacha20poly1305_INONCEBYTES];
1555
+ # size_t i;
1556
+ # for (i = 0U; i < crypto_stream_chacha20_ietf_KEYBYTES; i++) {
1557
+ # new_key_and_inonce[i] = state->k[i];
1558
+ # }
1559
+ $new_key_and_inonce = $st->getKey();
1560
+
1561
+ # for (i = 0U; i < crypto_secretstream_xchacha20poly1305_INONCEBYTES; i++) {
1562
+ # new_key_and_inonce[crypto_stream_chacha20_ietf_KEYBYTES + i] =
1563
+ # STATE_INONCE(state)[i];
1564
+ # }
1565
+ $new_key_and_inonce .= ParagonIE_Sodium_Core32_Util::substR($st->getNonce(), 0, 8);
1566
+
1567
+ # crypto_stream_chacha20_ietf_xor(new_key_and_inonce, new_key_and_inonce,
1568
+ # sizeof new_key_and_inonce,
1569
+ # state->nonce, state->k);
1570
+
1571
+ $st->rekey(ParagonIE_Sodium_Core32_ChaCha20::ietfStreamXorIc(
1572
+ $new_key_and_inonce,
1573
+ $st->getCombinedNonce(),
1574
+ $st->getKey(),
1575
+ ParagonIE_Sodium_Core32_Util::store64_le(0)
1576
+ ));
1577
+
1578
+ # for (i = 0U; i < crypto_stream_chacha20_ietf_KEYBYTES; i++) {
1579
+ # state->k[i] = new_key_and_inonce[i];
1580
+ # }
1581
+ # for (i = 0U; i < crypto_secretstream_xchacha20poly1305_INONCEBYTES; i++) {
1582
+ # STATE_INONCE(state)[i] =
1583
+ # new_key_and_inonce[crypto_stream_chacha20_ietf_KEYBYTES + i];
1584
+ # }
1585
+ # _crypto_secretstream_xchacha20poly1305_counter_reset(state);
1586
+ $st->counterReset();
1587
+
1588
+ $state = $st->toString();
1589
+ }
1590
+
1591
  /**
1592
  * Detached Ed25519 signature.
1593
  *
crypto/vendor/paragonie/sodium_compat/src/File.php CHANGED
@@ -142,7 +142,9 @@ class ParagonIE_Sodium_File extends ParagonIE_Sodium_Core_Util
142
  ParagonIE_Sodium_Compat::memzero($nonce);
143
  ParagonIE_Sodium_Compat::memzero($ephKeypair);
144
  } catch (SodiumException $ex) {
145
- unset($ephKeypair);
 
 
146
  }
147
  return $res;
148
  }
@@ -329,7 +331,9 @@ class ParagonIE_Sodium_File extends ParagonIE_Sodium_Core_Util
329
  ParagonIE_Sodium_Compat::memzero($nonce);
330
  ParagonIE_Sodium_Compat::memzero($ephKeypair);
331
  } catch (SodiumException $ex) {
332
- unset($ephKeypair);
 
 
333
  }
334
  return $res;
335
  }
@@ -680,7 +684,11 @@ class ParagonIE_Sodium_File extends ParagonIE_Sodium_Core_Util
680
  }
681
 
682
  /* Security checks */
683
- if (ParagonIE_Sodium_Core_Ed25519::check_S_lt_L(self::substr($sig, 32, 32))) {
 
 
 
 
684
  throw new SodiumException('S < L - Invalid signature');
685
  }
686
  if (ParagonIE_Sodium_Core_Ed25519::small_order($sig)) {
@@ -842,7 +850,7 @@ class ParagonIE_Sodium_File extends ParagonIE_Sodium_Core_Util
842
  if (!is_string($plaintext)) {
843
  throw new SodiumException('Could not read input file');
844
  }
845
- $first32 = ftell($ifp);
846
 
847
  /** @var string $subkey */
848
  $subkey = ParagonIE_Sodium_Core_HSalsa20::hsalsa20($nonce, $key);
@@ -876,7 +884,7 @@ class ParagonIE_Sodium_File extends ParagonIE_Sodium_Core_Util
876
  );
877
 
878
  // Pre-write 16 blank bytes for the Poly1305 tag
879
- $start = ftell($ofp);
880
  fwrite($ofp, str_repeat("\x00", 16));
881
 
882
  /** @var string $c */
@@ -927,7 +935,7 @@ class ParagonIE_Sodium_File extends ParagonIE_Sodium_Core_Util
927
  $block0 = null;
928
  $subkey = null;
929
  }
930
- $end = ftell($ofp);
931
 
932
  /*
933
  * Write the Poly1305 authentication tag that provides integrity
@@ -1044,7 +1052,7 @@ class ParagonIE_Sodium_File extends ParagonIE_Sodium_Core_Util
1044
  $mlen = 0
1045
  ) {
1046
  /** @var int $pos */
1047
- $pos = ftell($ifp);
1048
 
1049
  /** @var int $iter */
1050
  $iter = 1;
@@ -1107,7 +1115,7 @@ class ParagonIE_Sodium_File extends ParagonIE_Sodium_Core_Util
1107
  }
1108
 
1109
  /** @var int $originalPosition */
1110
- $originalPosition = ftell($fp);
1111
 
1112
  // Move file pointer to beginning of file
1113
  fseek($fp, 0, SEEK_SET);
@@ -1315,7 +1323,7 @@ class ParagonIE_Sodium_File extends ParagonIE_Sodium_Core_Util
1315
  if (!is_string($plaintext)) {
1316
  throw new SodiumException('Could not read input file');
1317
  }
1318
- $first32 = ftell($ifp);
1319
 
1320
  /** @var string $subkey */
1321
  $subkey = ParagonIE_Sodium_Core32_HSalsa20::hsalsa20($nonce, $key);
@@ -1349,7 +1357,7 @@ class ParagonIE_Sodium_File extends ParagonIE_Sodium_Core_Util
1349
  );
1350
 
1351
  // Pre-write 16 blank bytes for the Poly1305 tag
1352
- $start = ftell($ofp);
1353
  fwrite($ofp, str_repeat("\x00", 16));
1354
 
1355
  /** @var string $c */
@@ -1400,7 +1408,7 @@ class ParagonIE_Sodium_File extends ParagonIE_Sodium_Core_Util
1400
  $block0 = null;
1401
  $subkey = null;
1402
  }
1403
- $end = ftell($ofp);
1404
 
1405
  /*
1406
  * Write the Poly1305 authentication tag that provides integrity
@@ -1516,7 +1524,7 @@ class ParagonIE_Sodium_File extends ParagonIE_Sodium_Core_Util
1516
  $mlen = 0
1517
  ) {
1518
  /** @var int $pos */
1519
- $pos = ftell($ifp);
1520
 
1521
  /** @var int $iter */
1522
  $iter = 1;
@@ -1541,4 +1549,18 @@ class ParagonIE_Sodium_File extends ParagonIE_Sodium_Core_Util
1541
  fseek($ifp, $pos, SEEK_SET);
1542
  return $res;
1543
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1544
  }
142
  ParagonIE_Sodium_Compat::memzero($nonce);
143
  ParagonIE_Sodium_Compat::memzero($ephKeypair);
144
  } catch (SodiumException $ex) {
145
+ if (isset($ephKeypair)) {
146
+ unset($ephKeypair);
147
+ }
148
  }
149
  return $res;
150
  }
331
  ParagonIE_Sodium_Compat::memzero($nonce);
332
  ParagonIE_Sodium_Compat::memzero($ephKeypair);
333
  } catch (SodiumException $ex) {
334
+ if (isset($ephKeypair)) {
335
+ unset($ephKeypair);
336
+ }
337
  }
338
  return $res;
339
  }
684
  }
685
 
686
  /* Security checks */
687
+ if (
688
+ (ParagonIE_Sodium_Core_Ed25519::chrToInt($sig[63]) & 240)
689
+ &&
690
+ ParagonIE_Sodium_Core_Ed25519::check_S_lt_L(self::substr($sig, 32, 32))
691
+ ) {
692
  throw new SodiumException('S < L - Invalid signature');
693
  }
694
  if (ParagonIE_Sodium_Core_Ed25519::small_order($sig)) {
850
  if (!is_string($plaintext)) {
851
  throw new SodiumException('Could not read input file');
852
  }
853
+ $first32 = self::ftell($ifp);
854
 
855
  /** @var string $subkey */
856
  $subkey = ParagonIE_Sodium_Core_HSalsa20::hsalsa20($nonce, $key);
884
  );
885
 
886
  // Pre-write 16 blank bytes for the Poly1305 tag
887
+ $start = self::ftell($ofp);
888
  fwrite($ofp, str_repeat("\x00", 16));
889
 
890
  /** @var string $c */
935
  $block0 = null;
936
  $subkey = null;
937
  }
938
+ $end = self::ftell($ofp);
939
 
940
  /*
941
  * Write the Poly1305 authentication tag that provides integrity
1052
  $mlen = 0
1053
  ) {
1054
  /** @var int $pos */
1055
+ $pos = self::ftell($ifp);
1056
 
1057
  /** @var int $iter */
1058
  $iter = 1;
1115
  }
1116
 
1117
  /** @var int $originalPosition */
1118
+ $originalPosition = self::ftell($fp);
1119
 
1120
  // Move file pointer to beginning of file
1121
  fseek($fp, 0, SEEK_SET);
1323
  if (!is_string($plaintext)) {
1324
  throw new SodiumException('Could not read input file');
1325
  }
1326
+ $first32 = self::ftell($ifp);
1327
 
1328
  /** @var string $subkey */
1329
  $subkey = ParagonIE_Sodium_Core32_HSalsa20::hsalsa20($nonce, $key);
1357
  );
1358
 
1359
  // Pre-write 16 blank bytes for the Poly1305 tag
1360
+ $start = self::ftell($ofp);
1361
  fwrite($ofp, str_repeat("\x00", 16));
1362
 
1363
  /** @var string $c */
1408
  $block0 = null;
1409
  $subkey = null;
1410
  }
1411
+ $end = self::ftell($ofp);
1412
 
1413
  /*
1414
  * Write the Poly1305 authentication tag that provides integrity
1524
  $mlen = 0
1525
  ) {
1526
  /** @var int $pos */
1527
+ $pos = self::ftell($ifp);
1528
 
1529
  /** @var int $iter */
1530
  $iter = 1;
1549
  fseek($ifp, $pos, SEEK_SET);
1550
  return $res;
1551
  }
1552
+
1553
+ /**
1554
+ * @param resource $resource
1555
+ * @return int
1556
+ * @throws SodiumException
1557
+ */
1558
+ private static function ftell($resource)
1559
+ {
1560
+ $return = ftell($resource);
1561
+ if (!is_int($return)) {
1562
+ throw new SodiumException('ftell() returned false');
1563
+ }
1564
+ return (int) $return;
1565
+ }
1566
  }
crypto/vendor/paragonie/sodium_compat/src/PHP52/SplFixedArray.php ADDED
@@ -0,0 +1,188 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ // phpcs:ignoreFile -- compatibility library for PHP 5-7.1
3
+
4
+ if (class_exists('SplFixedArray')) {
5
+ return;
6
+ }
7
+
8
+ /**
9
+ * The SplFixedArray class provides the main functionalities of array. The
10
+ * main differences between a SplFixedArray and a normal PHP array is that
11
+ * the SplFixedArray is of fixed length and allows only integers within
12
+ * the range as indexes. The advantage is that it allows a faster array
13
+ * implementation.
14
+ */
15
+ class SplFixedArray implements Iterator, ArrayAccess, Countable
16
+ {
17
+ /** @var array<int, mixed> */
18
+ private $internalArray = array();
19
+
20
+ /** @var int $size */
21
+ private $size = 0;
22
+
23
+ /**
24
+ * SplFixedArray constructor.
25
+ * @param int $size
26
+ */
27
+ public function __construct($size = 0)
28
+ {
29
+ $this->size = $size;
30
+ $this->internalArray = array();
31
+ }
32
+
33
+ /**
34
+ * @return int
35
+ */
36
+ public function count()
37
+ {
38
+ return count($this->internalArray);
39
+ }
40
+
41
+ /**
42
+ * @return array
43
+ */
44
+ public function toArray()
45
+ {
46
+ ksort($this->internalArray);
47
+ return (array) $this->internalArray;
48
+ }
49
+
50
+ /**
51
+ * @param array $array
52
+ * @param bool $save_indexes
53
+ * @return SplFixedArray
54
+ * @psalm-suppress MixedAssignment
55
+ */
56
+ public static function fromArray(array $array, $save_indexes = true)
57
+ {
58
+ $self = new SplFixedArray(count($array));
59
+ if($save_indexes) {
60
+ foreach($array as $key => $value) {
61
+ $self[(int) $key] = $value;
62
+ }
63
+ } else {
64
+ $i = 0;
65
+ foreach (array_values($array) as $value) {
66
+ $self[$i] = $value;
67
+ $i++;
68
+ }
69
+ }
70
+ return $self;
71
+ }
72
+
73
+ /**
74
+ * @return int
75
+ */
76
+ public function getSize()
77
+ {
78
+ return $this->size;
79
+ }
80
+
81
+ /**
82
+ * @param int $size
83
+ * @return bool
84
+ */
85
+ public function setSize($size)
86
+ {
87
+ $this->size = $size;
88
+ return true;
89
+ }
90
+
91
+ /**
92
+ * @param string|int $index
93
+ * @return bool
94
+ */
95
+ public function offsetExists($index)
96
+ {
97
+ return array_key_exists((int) $index, $this->internalArray);
98
+ }
99
+
100
+ /**
101
+ * @param string|int $index
102
+ * @return mixed
103
+ */
104
+ public function offsetGet($index)
105
+ {
106
+ return $this->internalArray[(int) $index];
107
+ }
108
+
109
+ /**
110
+ * @param string|int $index
111
+ * @param mixed $newval
112
+ * @psalm-suppress MixedAssignment
113
+ */
114
+ public function offsetSet($index, $newval)
115
+ {
116
+ $this->internalArray[(int) $index] = $newval;
117
+ }
118
+
119
+ /**
120
+ * @param string|int $index
121
+ */
122
+ public function offsetUnset($index)
123
+ {
124
+ unset($this->internalArray[(int) $index]);
125
+ }
126
+
127
+ /**
128
+ * Rewind iterator back to the start
129
+ * @link https://php.net/manual/en/splfixedarray.rewind.php
130
+ * @return void
131
+ * @since 5.3.0
132
+ */
133
+ public function rewind()
134
+ {
135
+ reset($this->internalArray);
136
+ }
137
+
138
+ /**
139
+ * Return current array entry
140
+ * @link https://php.net/manual/en/splfixedarray.current.php
141
+ * @return mixed The current element value.
142
+ * @since 5.3.0
143
+ */
144
+ public function current()
145
+ {
146
+ return current($this->internalArray);
147
+ }
148
+
149
+ /**
150
+ * Return current array index
151
+ * @return int The current array index.
152
+ */
153
+ public function key()
154
+ {
155
+ return key($this->internalArray);
156
+ }
157
+
158
+ /**
159
+ * @return void
160
+ */
161
+ public function next()
162
+ {
163
+ next($this->internalArray);
164
+ }
165
+
166
+ /**
167
+ * Check whether the array contains more elements
168
+ * @link https://php.net/manual/en/splfixedarray.valid.php
169
+ * @return bool true if the array contains any more elements, false otherwise.
170
+ */
171
+ public function valid()
172
+ {
173
+ if (empty($this->internalArray)) {
174
+ return false;
175
+ }
176
+ $result = next($this->internalArray) !== false;
177
+ prev($this->internalArray);
178
+ return $result;
179
+ }
180
+
181
+ /**
182
+ * Do nothing.
183
+ */
184
+ public function __wakeup()
185
+ {
186
+ // NOP
187
+ }
188
+ }
css/{activity-report-widget.1603293147.css → activity-report-widget.1607007971.css} RENAMED
File without changes
css/{diff.1603293147.css → diff.1607007971.css} RENAMED
File without changes
css/{dt_table.1603293147.css → dt_table.1607007971.css} RENAMED
File without changes
css/{fullLog.1603293147.css → fullLog.1607007971.css} RENAMED
File without changes
css/{iptraf.1603293147.css → iptraf.1607007971.css} RENAMED
File without changes
css/{jquery-ui-timepicker-addon.1603293147.css → jquery-ui-timepicker-addon.1607007971.css} RENAMED
File without changes
css/{jquery-ui.min.1603293147.css → jquery-ui.min.1607007971.css} RENAMED
File without changes
css/{jquery-ui.structure.min.1603293147.css → jquery-ui.structure.min.1607007971.css} RENAMED
File without changes
css/{jquery-ui.theme.min.1603293147.css → jquery-ui.theme.min.1607007971.css} RENAMED
File without changes
css/main.1603293147.css DELETED
@@ -1 +0,0 @@
1
- .wf-clearfix:before,.wf-clearfix:after{content:" ";display:table}.wf-clearfix:after{clear:both}.wf-btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;text-transform:uppercase;padding:.4rem 1rem;font-size:.875rem;line-height:1.3125rem;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}@media (min-width: 768px){.wf-btn{padding:.5rem 1.25rem;font-size:.875rem;line-height:1.3125rem;border-radius:4px}}.wf-btn:focus,.wf-btn.wf-focus,.wf-btn:active:focus,.wf-btn:active.wf-focus,.wf-btn.wf-active:focus,.wf-btn.wf-active.wf-focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.wf-btn:hover,.wf-btn:focus,.wf-btn.wf-focus{color:#00709e;text-decoration:none}.wf-btn:active,.wf-btn.wf-active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.wf-btn.wf-disabled,.wf-btn[disabled],.wf-btn[readonly],fieldset[disabled] .wf-btn{cursor:not-allowed;-webkit-box-shadow:none;box-shadow:none}a.wf-btn{text-decoration:none}a.wf-btn.wf-disabled,fieldset[disabled] a.wf-btn{cursor:not-allowed;pointer-events:none}.wf-btn-default{color:#00709e;background-color:#fff;border-color:#00709e}.wf-btn-default:focus,.wf-btn-default.focus{color:#00709e;background-color:#e6e6e6;border-color:#00161f}.wf-btn-default:hover{color:#00709e;background-color:#e6e6e6;border-color:#004561}.wf-btn-default:active,.wf-btn-default.active,.wf-open>.wf-btn-default.wf-dropdown-toggle{color:#00709e;background-color:#e6e6e6;border-color:#004561}.wf-btn-default:active:hover,.wf-btn-default:active:focus,.wf-btn-default:active.focus,.wf-btn-default.active:hover,.wf-btn-default.active:focus,.wf-btn-default.active.focus,.wf-open>.wf-btn-default.wf-dropdown-toggle:hover,.wf-open>.wf-btn-default.wf-dropdown-toggle:focus,.wf-open>.wf-btn-default.wf-dropdown-toggle.focus{color:#00709e;background-color:#d4d4d4;border-color:#00161f}.wf-btn-default:active,.wf-btn-default.wf-active,.wf-open>.wf-btn-default.wf-dropdown-toggle{background-image:none}.wf-btn-default.wf-disabled,.wf-btn-default[disabled],.wf-btn-default[readonly],fieldset[disabled] .wf-btn-default{color:#777;background-color:#fff;border-color:#e2e2e2;cursor:not-allowed}.wf-btn-default.wf-disabled:hover,.wf-btn-default.wf-disabled:focus,.wf-btn-default.wf-disabled.wf-focus,.wf-btn-default[disabled]:hover,.wf-btn-default[disabled]:focus,.wf-btn-default[disabled].wf-focus,.wf-btn-default[readonly]:hover,.wf-btn-default[readonly]:focus,.wf-btn-default[readonly].wf-focus,fieldset[disabled] .wf-btn-default:hover,fieldset[disabled] .wf-btn-default:focus,fieldset[disabled] .wf-btn-default.wf-focus{background-color:#fff;border-color:#00709e}.wf-btn-default .wf-badge{color:#fff;background-color:#00709e}.wf-btn-primary{color:#fff;background-color:#00709e;border-color:#005e85}.wf-btn-primary:focus,.wf-btn-primary.focus{color:#fff;background-color:#004c6b;border-color:#000405}.wf-btn-primary:hover{color:#fff;background-color:#004c6b;border-color:#003347}.wf-btn-primary:active,.wf-btn-primary.active,.wf-open>.wf-btn-primary.wf-dropdown-toggle{color:#fff;background-color:#004c6b;border-color:#003347}.wf-btn-primary:active:hover,.wf-btn-primary:active:focus,.wf-btn-primary:active.focus,.wf-btn-primary.active:hover,.wf-btn-primary.active:focus,.wf-btn-primary.active.focus,.wf-open>.wf-btn-primary.wf-dropdown-toggle:hover,.wf-open>.wf-btn-primary.wf-dropdown-toggle:focus,.wf-open>.wf-btn-primary.wf-dropdown-toggle.focus{color:#fff;background-color:#003347;border-color:#000405}.wf-btn-primary:active,.wf-btn-primary.wf-active,.wf-open>.wf-btn-primary.wf-dropdown-toggle{background-image:none}.wf-btn-primary.wf-disabled,.wf-btn-primary[disabled],.wf-btn-primary[readonly],fieldset[disabled] .wf-btn-primary{color:#fff;background-color:#59a2c0;border-color:#5996b0;cursor:not-allowed}.wf-btn-primary.wf-disabled:hover,.wf-btn-primary.wf-disabled:focus,.wf-btn-primary.wf-disabled.wf-focus,.wf-btn-primary[disabled]:hover,.wf-btn-primary[disabled]:focus,.wf-btn-primary[disabled].wf-focus,.wf-btn-primary[readonly]:hover,.wf-btn-primary[readonly]:focus,.wf-btn-primary[readonly].wf-focus,fieldset[disabled] .wf-btn-primary:hover,fieldset[disabled] .wf-btn-primary:focus,fieldset[disabled] .wf-btn-primary.wf-focus{background-color:#00709e;border-color:#005e85}.wf-btn-primary .wf-badge{color:#00709e;background-color:#fff}.wf-btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.wf-btn-success:focus,.wf-btn-success.focus{color:#fff;background-color:#449d44;border-color:#255625}.wf-btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.wf-btn-success:active,.wf-btn-success.active,.wf-open>.wf-btn-success.wf-dropdown-toggle{color:#fff;background-color:#449d44;border-color:#398439}.wf-btn-success:active:hover,.wf-btn-success:active:focus,.wf-btn-success:active.focus,.wf-btn-success.active:hover,.wf-btn-success.active:focus,.wf-btn-success.active.focus,.wf-open>.wf-btn-success.wf-dropdown-toggle:hover,.wf-open>.wf-btn-success.wf-dropdown-toggle:focus,.wf-open>.wf-btn-success.wf-dropdown-toggle.focus{color:#fff;background-color:#398439;border-color:#255625}.wf-btn-success:active,.wf-btn-success.wf-active,.wf-open>.wf-btn-success.wf-dropdown-toggle{background-image:none}.wf-btn-success.wf-disabled,.wf-btn-success[disabled],.wf-btn-success[readonly],fieldset[disabled] .wf-btn-success{color:#fff;background-color:#95d195;border-color:#8bca8b;cursor:not-allowed}.wf-btn-success.wf-disabled:hover,.wf-btn-success.wf-disabled:focus,.wf-btn-success.wf-disabled.wf-focus,.wf-btn-success[disabled]:hover,.wf-btn-success[disabled]:focus,.wf-btn-success[disabled].wf-focus,.wf-btn-success[readonly]:hover,.wf-btn-success[readonly]:focus,.wf-btn-success[readonly].wf-focus,fieldset[disabled] .wf-btn-success:hover,fieldset[disabled] .wf-btn-success:focus,fieldset[disabled] .wf-btn-success.wf-focus{background-color:#5cb85c;border-color:#4cae4c}.wf-btn-success .wf-badge{color:#5cb85c;background-color:#fff}.wf-btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.wf-btn-info:focus,.wf-btn-info.focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.wf-btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.wf-btn-info:active,.wf-btn-info.active,.wf-open>.wf-btn-info.wf-dropdown-toggle{color:#fff;background-color:#31b0d5;border-color:#269abc}.wf-btn-info:active:hover,.wf-btn-info:active:focus,.wf-btn-info:active.focus,.wf-btn-info.active:hover,.wf-btn-info.active:focus,.wf-btn-info.active.focus,.wf-open>.wf-btn-info.wf-dropdown-toggle:hover,.wf-open>.wf-btn-info.wf-dropdown-toggle:focus,.wf-open>.wf-btn-info.wf-dropdown-toggle.focus{color:#fff;background-color:#269abc;border-color:#1b6d85}.wf-btn-info:active,.wf-btn-info.wf-active,.wf-open>.wf-btn-info.wf-dropdown-toggle{background-image:none}.wf-btn-info.wf-disabled,.wf-btn-info[disabled],.wf-btn-info[readonly],fieldset[disabled] .wf-btn-info{color:#fff;background-color:#94d6ea;border-color:#87d1e7;cursor:not-allowed}.wf-btn-info.wf-disabled:hover,.wf-btn-info.wf-disabled:focus,.wf-btn-info.wf-disabled.wf-focus,.wf-btn-info[disabled]:hover,.wf-btn-info[disabled]:focus,.wf-btn-info[disabled].wf-focus,.wf-btn-info[readonly]:hover,.wf-btn-info[readonly]:focus,.wf-btn-info[readonly].wf-focus,fieldset[disabled] .wf-btn-info:hover,fieldset[disabled] .wf-btn-info:focus,fieldset[disabled] .wf-btn-info.wf-focus{background-color:#5bc0de;border-color:#46b8da}.wf-btn-info .wf-badge{color:#5bc0de;background-color:#fff}.wf-btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.wf-btn-warning:focus,.wf-btn-warning.focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.wf-btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.wf-btn-warning:active,.wf-btn-warning.active,.wf-open>.wf-btn-warning.wf-dropdown-toggle{color:#fff;background-color:#ec971f;border-color:#d58512}.wf-btn-warning:active:hover,.wf-btn-warning:active:focus,.wf-btn-warning:active.focus,.wf-btn-warning.active:hover,.wf-btn-warning.active:focus,.wf-btn-warning.active.focus,.wf-open>.wf-btn-warning.wf-dropdown-toggle:hover,.wf-open>.wf-btn-warning.wf-dropdown-toggle:focus,.wf-open>.wf-btn-warning.wf-dropdown-toggle.focus{color:#fff;background-color:#d58512;border-color:#985f0d}.wf-btn-warning:active,.wf-btn-warning.wf-active,.wf-open>.wf-btn-warning.wf-dropdown-toggle{background-image:none}.wf-btn-warning.wf-disabled,.wf-btn-warning[disabled],.wf-btn-warning[readonly],fieldset[disabled] .wf-btn-warning{color:#fff;background-color:#f5ca8c;border-color:#f4c37c;cursor:not-allowed}.wf-btn-warning.wf-disabled:hover,.wf-btn-warning.wf-disabled:focus,.wf-btn-warning.wf-disabled.wf-focus,.wf-btn-warning[disabled]:hover,.wf-btn-warning[disabled]:focus,.wf-btn-warning[disabled].wf-focus,.wf-btn-warning[readonly]:hover,.wf-btn-warning[readonly]:focus,.wf-btn-warning[readonly].wf-focus,fieldset[disabled] .wf-btn-warning:hover,fieldset[disabled] .wf-btn-warning:focus,fieldset[disabled] .wf-btn-warning.wf-focus{background-color:#f0ad4e;border-color:#eea236}.wf-btn-warning .wf-badge{color:#f0ad4e;background-color:#fff}.wf-btn-danger{color:#fff;background-color:#930000;border-color:#7a0000}.wf-btn-danger:focus,.wf-btn-danger.focus{color:#fff;background-color:#600000;border-color:#000}.wf-btn-danger:hover{color:#fff;background-color:#600000;border-color:#3c0000}.wf-btn-danger:active,.wf-btn-danger.active,.wf-open>.wf-btn-danger.wf-dropdown-toggle{color:#fff;background-color:#600000;border-color:#3c0000}.wf-btn-danger:active:hover,.wf-btn-danger:active:focus,.wf-btn-danger:active.focus,.wf-btn-danger.active:hover,.wf-btn-danger.active:focus,.wf-btn-danger.active.focus,.wf-open>.wf-btn-danger.wf-dropdown-toggle:hover,.wf-open>.wf-btn-danger.wf-dropdown-toggle:focus,.wf-open>.wf-btn-danger.wf-dropdown-toggle.focus{color:#fff;background-color:#3c0000;border-color:#000}.wf-btn-danger:active,.wf-btn-danger.wf-active,.wf-open>.wf-btn-danger.wf-dropdown-toggle{background-image:none}.wf-btn-danger.wf-disabled,.wf-btn-danger[disabled],.wf-btn-danger[readonly],fieldset[disabled] .wf-btn-danger{color:#fff;background-color:#b95959;border-color:#a95959;cursor:not-allowed}.wf-btn-danger.wf-disabled:hover,.wf-btn-danger.wf-disabled:focus,.wf-btn-danger.wf-disabled.wf-focus,.wf-btn-danger[disabled]:hover,.wf-btn-danger[disabled]:focus,.wf-btn-danger[disabled].wf-focus,.wf-btn-danger[readonly]:hover,.wf-btn-danger[readonly]:focus,.wf-btn-danger[readonly].wf-focus,fieldset[disabled] .wf-btn-danger:hover,fieldset[disabled] .wf-btn-danger:focus,fieldset[disabled] .wf-btn-danger.wf-focus{background-color:#930000;border-color:#7a0000}.wf-btn-danger .wf-badge{color:#930000;background-color:#fff}.wf-btn-callout{font-weight:600;text-transform:uppercase}.wf-btn-callout-subtle{font-weight:400;text-transform:uppercase}.wf-btn-link{color:#00709e;font-weight:normal;border-radius:0}.wf-btn-link,.wf-btn-link:active,.wf-btn-link.wf-active,.wf-btn-link[disabled],fieldset[disabled] .wf-btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.wf-btn-link,.wf-btn-link:hover,.wf-btn-link:focus,.wf-btn-link:active{border-color:transparent}.wf-btn-link:hover,.wf-btn-link:focus{color:#003a52;text-decoration:underline;background-color:transparent}.wf-btn-link[disabled]:hover,.wf-btn-link[disabled]:focus,fieldset[disabled] .wf-btn-link:hover,fieldset[disabled] .wf-btn-link:focus{color:#777;text-decoration:none}.wf-btn-lg,.wf-btn-group-lg>.wf-btn{padding:10px 16px;font-size:18px;line-height:1.33333;border-radius:6px}.wf-btn-sm,.wf-btn-group-sm>.wf-btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.wf-btn-xs,.wf-btn-group-xs>.wf-btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.wf-btn-block{display:block;width:100%}.wf-btn-block+.wf-btn-block{margin-top:5px}input[type="submit"].wf-btn-block,input[type="reset"].wf-btn-block,input[type="button"].wf-btn-block{width:100%}.wf-btn-group,.wf-btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.wf-btn-group>.wf-btn,.wf-btn-group-vertical>.wf-btn{position:relative;float:left}.wf-btn-group>.wf-btn:hover,.wf-btn-group>.wf-btn:focus,.wf-btn-group>.wf-btn:active,.wf-btn-group>.wf-btn.wf-active,.wf-btn-group-vertical>.wf-btn:hover,.wf-btn-group-vertical>.wf-btn:focus,.wf-btn-group-vertical>.wf-btn:active,.wf-btn-group-vertical>.wf-btn.wf-active{z-index:2}.wf-btn-group .wf-btn+.wf-btn,.wf-btn-group .wf-btn+.wf-btn-group,.wf-btn-group .wf-btn-group+.wf-btn,.wf-btn-group .wf-btn-group+.wf-btn-group{margin-left:-1px}.wf-btn-toolbar{margin-left:-5px}.wf-btn-toolbar:before,.wf-btn-toolbar:after{content:" ";display:table}.wf-btn-toolbar:after{clear:both}.wf-btn-toolbar .wf-btn,.wf-btn-toolbar .wf-btn-group,.wf-btn-toolbar .wf-input-group{float:left}.wf-btn-toolbar>.wf-btn,.wf-btn-toolbar>.wf-btn-group,.wf-btn-toolbar>.wf-input-group{margin-left:5px}.wf-btn-group>.wf-btn:not(:first-child):not(:last-child):not(.wf-dropdown-toggle){border-radius:0}.wf-btn-group>.wf-btn:first-child{margin-left:0}.wf-btn-group>.wf-btn:first-child:not(:last-child):not(.wf-dropdown-toggle){-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0}.wf-btn-group>.wf-btn:last-child:not(:first-child),.wf-btn-group>.wf-dropdown-toggle:not(:first-child){-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0}.wf-btn-group>.wf-btn-group{float:left}.wf-btn-group>.wf-btn-group:not(:first-child):not(:last-child)>.wf-btn{border-radius:0}.wf-btn-group>.wf-btn-group:first-child:not(:last-child)>.wf-btn:last-child,.wf-btn-group>.wf-btn-group:first-child:not(:last-child)>.wf-dropdown-toggle{-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0}.wf-btn-group>.wf-btn-group:last-child:not(:first-child)>.wf-btn:first-child{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0}.wf-btn-group .wf-dropdown-toggle:active,.wf-btn-group.wf-open .wf-dropdown-toggle{outline:0}.wf-btn-group>.wf-btn+.wf-dropdown-toggle{padding-left:8px;padding-right:8px}.wf-btn-group>.wf-btn-lg+.wf-dropdown-toggle,.wf-btn-group-lg.wf-btn-group>.wf-btn+.wf-dropdown-toggle{padding-left:12px;padding-right:12px}.wf-btn-group.open .wf-dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.wf-btn-group.open .wf-dropdown-toggle.wf-btn-link{-webkit-box-shadow:none;box-shadow:none}.wf-btn .wf-caret{margin-left:0}.wf-btn-lg .wf-caret,.wf-btn-group-lg>.wf-btn .wf-caret{border-width:5px 5px 0;border-bottom-width:0}.wf-dropup .wf-btn-lg .wf-caret,.wf-dropup .wf-btn-group-lg>.wf-btn .wf-caret{border-width:0 5px 5px}.wf-btn-group-vertical>.wf-btn,.wf-btn-group-vertical>.wf-btn-group,.wf-btn-group-vertical>.wf-btn-group>.wf-btn{display:block;float:none;width:100%;max-width:100%}.wf-btn-group-vertical>.wf-btn-group:before,.wf-btn-group-vertical>.wf-btn-group:after{content:" ";display:table}.wf-btn-group-vertical>.wf-btn-group:after{clear:both}.wf-btn-group-vertical>.wf-btn-group>.wf-btn{float:none}.wf-btn-group-vertical>.wf-btn+.wf-btn,.wf-btn-group-vertical>.wf-btn+.wf-btn-group,.wf-btn-group-vertical>.wf-btn-group+.wf-btn,.wf-btn-group-vertical>.wf-btn-group+.wf-btn-group{margin-top:-1px;margin-left:0}.wf-btn-group-vertical>.wf-btn:not(:first-child):not(:last-child){border-radius:0}.wf-btn-group-vertical>.wf-btn:first-child:not(:last-child){-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0}.wf-btn-group-vertical>.wf-btn:last-child:not(:first-child){-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px}.wf-btn-group-vertical>.wf-btn-group:not(:first-child):not(:last-child)>.wf-btn{border-radius:0}.wf-btn-group-vertical>.wf-btn-group:first-child:not(:last-child)>.wf-btn:last-child,.wf-btn-group-vertical>.wf-btn-group:first-child:not(:last-child)>.wf-dropdown-toggle{-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0}.wf-btn-group-vertical>.wf-btn-group:last-child:not(:first-child)>.wf-btn:first-child{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0}.wf-btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.wf-btn-group-justified>.wf-btn,.wf-btn-group-justified>.wf-btn-group{float:none;display:table-cell;width:1%}.wf-btn-group-justified>.wf-btn-group .wf-btn{width:100%}.wf-btn-group-justified>.wf-btn-group .wf-dropdown-menu{left:auto}[data-toggle="buttons"]>.wf-btn input[type="radio"],[data-toggle="buttons"]>.wf-btn input[type="checkbox"],[data-toggle="buttons"]>.wf-btn-group>.wf-btn input[type="radio"],[data-toggle="buttons"]>.wf-btn-group>.wf-btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.wf-pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.wf-pagination>li{display:inline}.wf-pagination>li>a,.wf-pagination>li>span{position:relative;float:left;padding:.5rem 1.25rem;line-height:1.42857;text-decoration:none;color:#00709e;background-color:#fff;border:1px solid #ddd;margin-left:-1px}.wf-pagination>li:first-child>a,.wf-pagination>li:first-child>span{margin-left:0;-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px}.wf-pagination>li:last-child>a,.wf-pagination>li:last-child>span{-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px}.wf-pagination>li>a:hover,.wf-pagination>li>a:focus,.wf-pagination>li>span:hover,.wf-pagination>li>span:focus{z-index:2;color:#003a52;background-color:#e2e2e2;border-color:#ddd}.wf-pagination>.wf-active>a,.wf-pagination>.wf-active>a:hover,.wf-pagination>.wf-active>a:focus,.wf-pagination>.wf-active>span,.wf-pagination>.wf-active>span:hover,.wf-pagination>.wf-active>span:focus{z-index:3;color:#fff;background-color:#00709e;border-color:#00709e;cursor:default}.wf-pagination>.wf-disabled>span,.wf-pagination>.wf-disabled>span:hover,.wf-pagination>.wf-disabled>span:focus,.wf-pagination>.wf-disabled>a,.wf-pagination>.wf-disabled>a:hover,.wf-pagination>.wf-disabled>a:focus{color:#777;background-color:#fff;border-color:#ddd;cursor:not-allowed}.wf-pagination-lg>li>a,.wf-pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.33333}.wf-pagination-lg>li:first-child>a,.wf-pagination-lg>li:first-child>span{-moz-border-radius-topleft:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px}.wf-pagination-lg>li:last-child>a,.wf-pagination-lg>li:last-child>span{-moz-border-radius-topright:6px;-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-moz-border-radius-bottomright:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px}.wf-pagination-sm>li>a,.wf-pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.wf-pagination-sm>li:first-child>a,.wf-pagination-sm>li:first-child>span{-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-bottomleft:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px}.wf-pagination-sm>li:last-child>a,.wf-pagination-sm>li:last-child>span{-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-moz-border-radius-bottomright:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px}@-ms-viewport{width:device-width}.wf-visible-xs{display:none !important}.wf-visible-sm{display:none !important}.wf-visible-md{display:none !important}.wf-visible-lg{display:none !important}.wf-visible-xs-block,.wf-visible-xs-inline,.wf-visible-xs-inline-block,.wf-visible-sm-block,.wf-visible-sm-inline,.wf-visible-sm-inline-block,.wf-visible-md-block,.wf-visible-md-inline,.wf-visible-md-inline-block,.wf-visible-lg-block,.wf-visible-lg-inline,.wf-visible-lg-inline-block{display:none !important}@media (max-width: 767px){.wf-visible-xs{display:block !important}table.wf-visible-xs{display:table !important}tr.wf-visible-xs{display:table-row !important}th.wf-visible-xs,td.wf-visible-xs{display:table-cell !important}}@media (max-width: 767px){.wf-visible-xs-block{display:block !important}}@media (max-width: 767px){.wf-visible-xs-inline{display:inline !important}}@media (max-width: 767px){.wf-visible-xs-inline-block{display:inline-block !important}}@media (min-width: 768px) and (max-width: 991px){.wf-visible-sm{display:block !important}table.wf-visible-sm{display:table !important}tr.wf-visible-sm{display:table-row !important}th.wf-visible-sm,td.wf-visible-sm{display:table-cell !important}}@media (min-width: 768px) and (max-width: 991px){.wf-visible-sm-block{display:block !important}}@media (min-width: 768px) and (max-width: 991px){.wf-visible-sm-inline{display:inline !important}}@media (min-width: 768px) and (max-width: 991px){.wf-visible-sm-inline-block{display:inline-block !important}}@media (min-width: 992px) and (max-width: 1199px){.wf-visible-md{display:block !important}table.wf-visible-md{display:table !important}tr.wf-visible-md{display:table-row !important}th.wf-visible-md,td.wf-visible-md{display:table-cell !important}}@media (min-width: 992px) and (max-width: 1199px){.wf-visible-md-block{display:block !important}}@media (min-width: 992px) and (max-width: 1199px){.wf-visible-md-inline{display:inline !important}}@media (min-width: 992px) and (max-width: 1199px){.wf-visible-md-inline-block{display:inline-block !important}}@media (min-width: 1200px){.wf-visible-lg{display:block !important}table.wf-visible-lg{display:table !important}tr.wf-visible-lg{display:table-row !important}th.wf-visible-lg,td.wf-visible-lg{display:table-cell !important}}@media (min-width: 1200px){.wf-visible-lg-block{display:block !important}}@media (min-width: 1200px){.wf-visible-lg-inline{display:inline !important}}@media (min-width: 1200px){.wf-visible-lg-inline-block{display:inline-block !important}}@media (max-width: 767px){.wf-hidden-xs{display:none !important}}@media (min-width: 768px) and (max-width: 991px){.wf-hidden-sm{display:none !important}}@media (min-width: 992px) and (max-width: 1199px){.wf-hidden-md{display:none !important}}@media (min-width: 1200px){.wf-hidden-lg{display:none !important}}.wf-visible-print{display:none !important}@media print{.wf-visible-print{display:block !important}table.wf-visible-print{display:table !important}tr.wf-visible-print{display:table-row !important}th.wf-visible-print,td.wf-visible-print{display:table-cell !important}}.wf-visible-print-block{display:none !important}@media print{.wf-visible-print-block{display:block !important}}.wf-visible-print-inline{display:none !important}@media print{.wf-visible-print-inline{display:inline !important}}.wf-visible-print-inline-block{display:none !important}@media print{.wf-visible-print-inline-block{display:inline-block !important}}@media print{.wf-hidden-print{display:none !important}}.wf-container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.wf-container:before,.wf-container:after{content:" ";display:table}.wf-container:after{clear:both}@media (min-width: 768px){.wf-container{width:750px}}@media (min-width: 992px){.wf-container{width:970px}}@media (min-width: 1200px){.wf-container{width:1170px}}.wf-container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.wf-container-fluid:before,.wf-container-fluid:after{content:" ";display:table}.wf-container-fluid:after{clear:both}.wf-row{margin-left:-15px;margin-right:-15px}.wf-row:before,.wf-row:after{content:" ";display:table}.wf-row:after{clear:both}.wf-col-xs-1,.wf-col-sm-1,.wf-col-md-1,.wf-col-lg-1,.wf-col-xs-2,.wf-col-sm-2,.wf-col-md-2,.wf-col-lg-2,.wf-col-xs-3,.wf-col-sm-3,.wf-col-md-3,.wf-col-lg-3,.wf-col-xs-4,.wf-col-sm-4,.wf-col-md-4,.wf-col-lg-4,.wf-col-xs-5,.wf-col-sm-5,.wf-col-md-5,.wf-col-lg-5,.wf-col-xs-6,.wf-col-sm-6,.wf-col-md-6,.wf-col-lg-6,.wf-col-xs-7,.wf-col-sm-7,.wf-col-md-7,.wf-col-lg-7,.wf-col-xs-8,.wf-col-sm-8,.wf-col-md-8,.wf-col-lg-8,.wf-col-xs-9,.wf-col-sm-9,.wf-col-md-9,.wf-col-lg-9,.wf-col-xs-10,.wf-col-sm-10,.wf-col-md-10,.wf-col-lg-10,.wf-col-xs-11,.wf-col-sm-11,.wf-col-md-11,.wf-col-lg-11,.wf-col-xs-12,.wf-col-sm-12,.wf-col-md-12,.wf-col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px;box-sizing:border-box}.wf-col-xs-1,.wf-col-xs-2,.wf-col-xs-3,.wf-col-xs-4,.wf-col-xs-5,.wf-col-xs-6,.wf-col-xs-7,.wf-col-xs-8,.wf-col-xs-9,.wf-col-xs-10,.wf-col-xs-11,.wf-col-xs-12{float:left}.wf-col-xs-1{width:8.33333%}.wf-col-xs-2{width:16.66667%}.wf-col-xs-3{width:25%}.wf-col-xs-4{width:33.33333%}.wf-col-xs-5{width:41.66667%}.wf-col-xs-6{width:50%}.wf-col-xs-7{width:58.33333%}.wf-col-xs-8{width:66.66667%}.wf-col-xs-9{width:75%}.wf-col-xs-10{width:83.33333%}.wf-col-xs-11{width:91.66667%}.wf-col-xs-12{width:100%}.wf-col-xs-pull-0{right:auto}.wf-col-xs-pull-1{right:8.33333%}.wf-col-xs-pull-2{right:16.66667%}.wf-col-xs-pull-3{right:25%}.wf-col-xs-pull-4{right:33.33333%}.wf-col-xs-pull-5{right:41.66667%}.wf-col-xs-pull-6{right:50%}.wf-col-xs-pull-7{right:58.33333%}.wf-col-xs-pull-8{right:66.66667%}.wf-col-xs-pull-9{right:75%}.wf-col-xs-pull-10{right:83.33333%}.wf-col-xs-pull-11{right:91.66667%}.wf-col-xs-pull-12{right:100%}.wf-col-xs-push-0{left:auto}.wf-col-xs-push-1{left:8.33333%}.wf-col-xs-push-2{left:16.66667%}.wf-col-xs-push-3{left:25%}.wf-col-xs-push-4{left:33.33333%}.wf-col-xs-push-5{left:41.66667%}.wf-col-xs-push-6{left:50%}.wf-col-xs-push-7{left:58.33333%}.wf-col-xs-push-8{left:66.66667%}.wf-col-xs-push-9{left:75%}.wf-col-xs-push-10{left:83.33333%}.wf-col-xs-push-11{left:91.66667%}.wf-col-xs-push-12{left:100%}.wf-col-xs-offset-0{margin-left:0%}.wf-col-xs-offset-1{margin-left:8.33333%}.wf-col-xs-offset-2{margin-left:16.66667%}.wf-col-xs-offset-3{margin-left:25%}.wf-col-xs-offset-4{margin-left:33.33333%}.wf-col-xs-offset-5{margin-left:41.66667%}.wf-col-xs-offset-6{margin-left:50%}.wf-col-xs-offset-7{margin-left:58.33333%}.wf-col-xs-offset-8{margin-left:66.66667%}.wf-col-xs-offset-9{margin-left:75%}.wf-col-xs-offset-10{margin-left:83.33333%}.wf-col-xs-offset-11{margin-left:91.66667%}.wf-col-xs-offset-12{margin-left:100%}.wf-col-xs-half-padding-left{padding-left:8px}.wf-col-xs-half-padding-right{padding-right:7px}@media (min-width: 768px){.wf-col-sm-1,.wf-col-sm-2,.wf-col-sm-3,.wf-col-sm-4,.wf-col-sm-5,.wf-col-sm-6,.wf-col-sm-7,.wf-col-sm-8,.wf-col-sm-9,.wf-col-sm-10,.wf-col-sm-11,.wf-col-sm-12{float:left}.wf-col-sm-1{width:8.33333%}.wf-col-sm-2{width:16.66667%}.wf-col-sm-3{width:25%}.wf-col-sm-4{width:33.33333%}.wf-col-sm-5{width:41.66667%}.wf-col-sm-6{width:50%}.wf-col-sm-7{width:58.33333%}.wf-col-sm-8{width:66.66667%}.wf-col-sm-9{width:75%}.wf-col-sm-10{width:83.33333%}.wf-col-sm-11{width:91.66667%}.wf-col-sm-12{width:100%}.wf-col-sm-pull-0{right:auto}.wf-col-sm-pull-1{right:8.33333%}.wf-col-sm-pull-2{right:16.66667%}.wf-col-sm-pull-3{right:25%}.wf-col-sm-pull-4{right:33.33333%}.wf-col-sm-pull-5{right:41.66667%}.wf-col-sm-pull-6{right:50%}.wf-col-sm-pull-7{right:58.33333%}.wf-col-sm-pull-8{right:66.66667%}.wf-col-sm-pull-9{right:75%}.wf-col-sm-pull-10{right:83.33333%}.wf-col-sm-pull-11{right:91.66667%}.wf-col-sm-pull-12{right:100%}.wf-col-sm-push-0{left:auto}.wf-col-sm-push-1{left:8.33333%}.wf-col-sm-push-2{left:16.66667%}.wf-col-sm-push-3{left:25%}.wf-col-sm-push-4{left:33.33333%}.wf-col-sm-push-5{left:41.66667%}.wf-col-sm-push-6{left:50%}.wf-col-sm-push-7{left:58.33333%}.wf-col-sm-push-8{left:66.66667%}.wf-col-sm-push-9{left:75%}.wf-col-sm-push-10{left:83.33333%}.wf-col-sm-push-11{left:91.66667%}.wf-col-sm-push-12{left:100%}.wf-col-sm-offset-0{margin-left:0%}.wf-col-sm-offset-1{margin-left:8.33333%}.wf-col-sm-offset-2{margin-left:16.66667%}.wf-col-sm-offset-3{margin-left:25%}.wf-col-sm-offset-4{margin-left:33.33333%}.wf-col-sm-offset-5{margin-left:41.66667%}.wf-col-sm-offset-6{margin-left:50%}.wf-col-sm-offset-7{margin-left:58.33333%}.wf-col-sm-offset-8{margin-left:66.66667%}.wf-col-sm-offset-9{margin-left:75%}.wf-col-sm-offset-10{margin-left:83.33333%}.wf-col-sm-offset-11{margin-left:91.66667%}.wf-col-sm-offset-12{margin-left:100%}.wf-col-sm-half-padding-left{padding-left:8px}.wf-col-sm-half-padding-right{padding-right:7px}}@media (min-width: 992px){.wf-col-md-1,.wf-col-md-2,.wf-col-md-3,.wf-col-md-4,.wf-col-md-5,.wf-col-md-6,.wf-col-md-7,.wf-col-md-8,.wf-col-md-9,.wf-col-md-10,.wf-col-md-11,.wf-col-md-12{float:left}.wf-col-md-1{width:8.33333%}.wf-col-md-2{width:16.66667%}.wf-col-md-3{width:25%}.wf-col-md-4{width:33.33333%}.wf-col-md-5{width:41.66667%}.wf-col-md-6{width:50%}.wf-col-md-7{width:58.33333%}.wf-col-md-8{width:66.66667%}.wf-col-md-9{width:75%}.wf-col-md-10{width:83.33333%}.wf-col-md-11{width:91.66667%}.wf-col-md-12{width:100%}.wf-col-md-pull-0{right:auto}.wf-col-md-pull-1{right:8.33333%}.wf-col-md-pull-2{right:16.66667%}.wf-col-md-pull-3{right:25%}.wf-col-md-pull-4{right:33.33333%}.wf-col-md-pull-5{right:41.66667%}.wf-col-md-pull-6{right:50%}.wf-col-md-pull-7{right:58.33333%}.wf-col-md-pull-8{right:66.66667%}.wf-col-md-pull-9{right:75%}.wf-col-md-pull-10{right:83.33333%}.wf-col-md-pull-11{right:91.66667%}.wf-col-md-pull-12{right:100%}.wf-col-md-push-0{left:auto}.wf-col-md-push-1{left:8.33333%}.wf-col-md-push-2{left:16.66667%}.wf-col-md-push-3{left:25%}.wf-col-md-push-4{left:33.33333%}.wf-col-md-push-5{left:41.66667%}.wf-col-md-push-6{left:50%}.wf-col-md-push-7{left:58.33333%}.wf-col-md-push-8{left:66.66667%}.wf-col-md-push-9{left:75%}.wf-col-md-push-10{left:83.33333%}.wf-col-md-push-11{left:91.66667%}.wf-col-md-push-12{left:100%}.wf-col-md-offset-0{margin-left:0%}.wf-col-md-offset-1{margin-left:8.33333%}.wf-col-md-offset-2{margin-left:16.66667%}.wf-col-md-offset-3{margin-left:25%}.wf-col-md-offset-4{margin-left:33.33333%}.wf-col-md-offset-5{margin-left:41.66667%}.wf-col-md-offset-6{margin-left:50%}.wf-col-md-offset-7{margin-left:58.33333%}.wf-col-md-offset-8{margin-left:66.66667%}.wf-col-md-offset-9{margin-left:75%}.wf-col-md-offset-10{margin-left:83.33333%}.wf-col-md-offset-11{margin-left:91.66667%}.wf-col-md-offset-12{margin-left:100%}.wf-col-md-half-padding-left{padding-left:8px}.wf-col-md-half-padding-right{padding-right:7px}}@media (min-width: 1200px){.wf-col-lg-1,.wf-col-lg-2,.wf-col-lg-3,.wf-col-lg-4,.wf-col-lg-5,.wf-col-lg-6,.wf-col-lg-7,.wf-col-lg-8,.wf-col-lg-9,.wf-col-lg-10,.wf-col-lg-11,.wf-col-lg-12{float:left}.wf-col-lg-1{width:8.33333%}.wf-col-lg-2{width:16.66667%}.wf-col-lg-3{width:25%}.wf-col-lg-4{width:33.33333%}.wf-col-lg-5{width:41.66667%}.wf-col-lg-6{width:50%}.wf-col-lg-7{width:58.33333%}.wf-col-lg-8{width:66.66667%}.wf-col-lg-9{width:75%}.wf-col-lg-10{width:83.33333%}.wf-col-lg-11{width:91.66667%}.wf-col-lg-12{width:100%}.wf-col-lg-pull-0{right:auto}.wf-col-lg-pull-1{right:8.33333%}.wf-col-lg-pull-2{right:16.66667%}.wf-col-lg-pull-3{right:25%}.wf-col-lg-pull-4{right:33.33333%}.wf-col-lg-pull-5{right:41.66667%}.wf-col-lg-pull-6{right:50%}.wf-col-lg-pull-7{right:58.33333%}.wf-col-lg-pull-8{right:66.66667%}.wf-col-lg-pull-9{right:75%}.wf-col-lg-pull-10{right:83.33333%}.wf-col-lg-pull-11{right:91.66667%}.wf-col-lg-pull-12{right:100%}.wf-col-lg-push-0{left:auto}.wf-col-lg-push-1{left:8.33333%}.wf-col-lg-push-2{left:16.66667%}.wf-col-lg-push-3{left:25%}.wf-col-lg-push-4{left:33.33333%}.wf-col-lg-push-5{left:41.66667%}.wf-col-lg-push-6{left:50%}.wf-col-lg-push-7{left:58.33333%}.wf-col-lg-push-8{left:66.66667%}.wf-col-lg-push-9{left:75%}.wf-col-lg-push-10{left:83.33333%}.wf-col-lg-push-11{left:91.66667%}.wf-col-lg-push-12{left:100%}.wf-col-lg-offset-0{margin-left:0%}.wf-col-lg-offset-1{margin-left:8.33333%}.wf-col-lg-offset-2{margin-left:16.66667%}.wf-col-lg-offset-3{margin-left:25%}.wf-col-lg-offset-4{margin-left:33.33333%}.wf-col-lg-offset-5{margin-left:41.66667%}.wf-col-lg-offset-6{margin-left:50%}.wf-col-lg-offset-7{margin-left:58.33333%}.wf-col-lg-offset-8{margin-left:66.66667%}.wf-col-lg-offset-9{margin-left:75%}.wf-col-lg-offset-10{margin-left:83.33333%}.wf-col-lg-offset-11{margin-left:91.66667%}.wf-col-lg-offset-12{margin-left:100%}.wf-col-lg-half-padding-left{padding-left:8px}.wf-col-lg-half-padding-right{padding-right:7px}}.wrap.wordfence{direction:ltr}@media (min-width: 768px){.wrap.wordfence{max-width:750px}}@media (min-width: 992px){.wrap.wordfence{max-width:970px}}@media (min-width: 1200px){.wrap.wordfence{max-width:1170px}}.wrap.wordfence>.wf-container-fluid{padding-left:0px;padding-right:0px}.wrap.wordfence .button-primary{text-align:center;text-transform:uppercase;font-weight:bold;background-color:#00709e}.wrap.wordfence a{text-decoration:none}.wrap.wordfence a:hover{text-decoration:underline}.wrap.wordfence a.wf-btn:hover{text-decoration:none}.wrap.wordfence p,.wrap.wordfence td,.wrap.wordfence li{font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:.875rem;color:#2d2d2d;line-height:1.3125;font-weight:normal}.wrap.wordfence p strong,.wrap.wordfence td strong,.wrap.wordfence li strong{font-weight:600}.wrap.wordfence p em,.wrap.wordfence td em,.wrap.wordfence li em{font-weight:normal}.wrap.wordfence h1,.wrap.wordfence h2,.wrap.wordfence h3,.wrap.wordfence h4,.wrap.wordfence h5,.wrap.wordfence h6{font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;color:#2d2d2d;font-weight:700}.wrap.wordfence h2{font-size:1.3125rem;line-height:1.5}.wrap.wordfence h3{font-size:1.125rem}.wrap.wordfence h4{font-size:1rem}a{color:#00709e}.wf-inline-help{color:#9f9fa0}.wf-inline-help:hover{color:#00709e}.wordfenceWrap{margin:20px 0 0 20px}.wordfence-icon32{width:32px;height:32px;background-position:0 0;background-repeat:no-repeat;padding:0;margin:7px 5px 0 0;float:left}#wfHeading:after{content:'.';visibility:hidden;display:block;clear:both;height:0px}.wordfence-lock-icon{width:32px;height:32px;background-image:url(../images/wordfence-logo.svg)}a.wfhelp{margin:0 3px 0 3px;text-decoration:none;display:inline-block;vertical-align:middle;font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased}a.wfhelp:before{content:'\f29c'}.wordfence .resulticon{display:block;float:left;width:16px;height:16px;background-position:0 0;background-repeat:no-repeat;border-width:0;padding:0;margin:0 3px 0 0;background-image:url(../images/icons/bullet_yellow.png)}.wordfenceBoldTD{font-weight:bold}.wfAjax24{display:none;width:24px;height:24px;background-image:url(../images/icons/ajax24.gif);margin:0;padding:0}div.wfLoadingWhite32{width:32px;height:32px;background-image:url(../images/icons/ajaxWhite32x32.gif);margin:0;padding:0}.wfTabsContainer{background-color:#FFF;overflow:hidden;border:1px solid #CCC;padding:15px;min-height:200px;-webkit-font-smoothing:antialiased}#wfTabs::after{content:".";display:block;height:0;width:0;line-height:0;clear:both;visibility:hidden}#wfTabs a{float:left;z-index:10;height:18px;margin:0 5px -1px 0;padding:5px 8px;border:1px solid #CCC;text-decoration:none;background-color:#EFEFEF;color:#21759B;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px}#wfTabs a.selected{border-bottom:1px solid #FFF;background-color:#FFF;color:#777}.wordfenceTopTab{display:none;margin-top:15px}.wordfenceTopTab.active{display:block}.wordfenceHelpLink{margin-top:15px}.wfAjaxLight128{background-image:url(../images/icons/ajax3.gif)}.wfStrong{font-weight:bold}.wordfenceModeElem{width:1px;height:1px;opacity:0}.wfWarn{color:#F00}.wf-flag{display:inline-block;vertical-align:middle;margin:0px 2px 0 0;background-repeat:no-repeat;background-position:center center;width:16px;height:11px;background-image:url(../images/flags.png);-webkit-flex-shrink:0;flex-shrink:0;-webkit-flex-grow:0;flex-grow:0}.wfHitTime{font-style:italic}.wfAvatar img{vertical-align:middle;margin-right:0.5rem}.wf-hex-sequence{color:#587ECB}.wfLoadMoreButton.disabled,.wfLoadMoreButton[disabled]{pointer-events:none;opacity:0.65}table.wfConfigForm th{font-weight:normal;text-align:left;padding:2px 3px 1px 0;vertical-align:middle}table.wfConfigForm td{vertical-align:middle}table.wfConfigForm td.align-top{vertical-align:top}table th.wfConfigEnable{font-weight:bold;min-width:25%}.wfSavedMsg{display:none;color:#A00}table th.wfSubheading{font-weight:bold;padding-top:10px}h3.wfConfigHeading{font-size:22px;color:#777;font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:italic;font-weight:normal}.wfTipText{color:#777;font-family:Georgia,Times New Roman,Times,serif;font-style:italic}.wfBlackCursor{color:#FFF}.wf-spinner{display:inline-block;width:4px}.wferror{color:#F00}#wordfenceWorking{padding:10px 40px 6px 16px;z-index:100000;position:fixed;right:16px;bottom:0px;background-color:#fcb214;border:5px solid #fcb214;border-width:6px 15px 6px 6px;color:#525355;font-size:12px;font-weight:bold;font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;background-image:url("../images/icons/working-indicator.gif");background-position:100% 50%;background-repeat:no-repeat}@media (max-width: 960px){#wordfenceWorking{left:auto;right:0px}}#paidWrap{position:relative}.paidInnerMsg{width:500px;margin:150px auto 0 auto;color:#000;font-size:18px;font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;line-height:1.8em;text-align:center;-webkit-font-smoothing:antialiased}.wfMarker{height:1px;width:1px}.wfPaidOnlyNotice{width:500px;background-color:#FFFFE0;border:1px solid #000;padding:10px;margin:20px}.wfOnOffSwitch{display:inline-block;position:relative !important;width:69px !important;-webkit-user-select:none !important;-moz-user-select:none !important;-ms-user-select:none !important;user-select:none !important}.wfOnOffSwitch-checkbox{display:none !important}.wfOnOffSwitch-label{display:block !important;overflow:hidden !important;cursor:pointer !important;border:2px solid #999999 !important;border-radius:19px !important;margin:0}.wfOnOffSwitch-inner{width:200% !important;margin-left:-100% !important;-webkit-transition:margin 0.3s ease-in !important;-o-transition:margin 0.3s ease-in !important;transition:margin 0.3s ease-in !important;-webkit-transition-delay:0s !important;transition-delay:0s !important}.wfOnOffSwitch-inner:before,.wfOnOffSwitch-inner:after{float:left !important;width:50% !important;height:19px !important;padding:0 !important;line-height:19px !important;font-size:14px !important;color:white !important;font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif !important;font-weight:bold !important;-webkit-box-sizing:border-box !important;-moz-box-sizing:border-box !important;box-sizing:border-box !important;-moz-border-radius:19px !important;-webkit-border-radius:19px;border-radius:19px !important;-webkit-box-shadow:0 9.5px 0 rgba(0,0,0,0.08) inset !important;box-shadow:0 9.5px 0 rgba(0,0,0,0.08) inset !important}.wfOnOffSwitch-inner:before{content:"ON" !important;padding-left:10px !important;background-color:#30D965 !important;color:#FFFFFF !important;-moz-border-radius:19px 0 0 19px !important;-webkit-border-radius:19px;border-radius:19px 0 0 19px !important}.wfOnOffSwitch-inner:after{content:"OFF" !important;padding-right:10px !important;background-color:#EEEEEE !important;color:#999999 !important;text-align:right !important;-moz-border-radius:0 19px 19px 0 !important;-webkit-border-radius:0;border-radius:0 19px 19px 0 !important}.wfOnOffSwitch-switch{width:19px !important;margin:0 !important;background:#FFFFFF !important;border:2px solid #999999 !important;-moz-border-radius:19px !important;-webkit-border-radius:19px;border-radius:19px !important;position:absolute !important;top:0 !important;bottom:0 !important;right:46px !important;-webkit-transition:all 0.3s ease-in !important;-o-transition:all 0.3s ease-in !important;transition:all 0.3s ease-in !important;-webkit-transition-delay:0s !important;transition-delay:0s !important;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzAwMDAwMCIgc3RvcC1vcGFjaXR5PSIwLjEiLz48c3RvcCBvZmZzZXQ9IjgwJSIgc3RvcC1jb2xvcj0iIzAwMDAwMCIgc3RvcC1vcGFjaXR5PSIwLjAiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2dyYWQpIiAvPjwvc3ZnPiA=') !important;background-size:100%;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, rgba(0,0,0,0.1)),color-stop(80%, rgba(0,0,0,0))) !important;background-image:-moz-linear-gradient(center top, rgba(0,0,0,0.1) 0%,rgba(0,0,0,0) 80%) !important;background-image:-webkit-linear-gradient(center top, rgba(0,0,0,0.1) 0%,rgba(0,0,0,0) 80%) !important;background-image:linear-gradient(to center bottom, rgba(0,0,0,0.1) 0%,rgba(0,0,0,0) 80%) !important;box-shadow:0 1px 1px white inset !important}.wfOnOffSwitch-checkbox:checked+.wfOnOffSwitch-label .wfOnOffSwitch-inner{margin-left:0 !important}.wfOnOffSwitch-checkbox:checked+.wfOnOffSwitch-label .wfOnOffSwitch-switch{right:0 !important}#wordfenceConfigWarning,#wordfenceAdminEmailWarning{clear:left;margin-top:5px}.wf-striped-table{width:100%;max-width:100%;border-collapse:collapse}.wf-striped-table th{border-left:1px solid #bdbdbd}.wf-striped-table th:first-of-type{border-left:0}.wf-striped-table th,.wf-striped-table td{padding:1rem}.wf-striped-table thead th,.wf-striped-table thead td,.wf-striped-table tfoot th,.wf-striped-table tfoot td,.wf-striped-table tbody.thead th,.wf-striped-table tbody.thead td{background-color:#ebebeb;color:#777;font-weight:bold;text-align:left}.wf-striped-table tbody tr.even td,.wf-striped-table tbody tr:nth-child(2n) td{background-color:#ffffff}.wf-striped-table tbody tr td,.wf-striped-table tbody tr.odd td{background-color:#fafafa}.wf-striped-table tbody tr:hover>td{background-color:#fffbd8}.wf-striped-table tbody.empty-row tr td{border-width:0;padding:8px 0;background-color:transparent}.wf-striped-table .wf-result-error,.wf-block-list .wf-result-error{color:#d0514c !important;font-weight:bold}.wf-striped-table .wf-result-error:before,.wf-block-list .wf-result-error:before{content:"\2718"}.wf-striped-table .wf-result-success{max-width:20%}.wf-striped-table .wf-result-success,.wf-block-list .wf-result-success{color:#008c10 !important;font-weight:bold}.wf-striped-table .wf-result-success:before,.wf-block-list .wf-result-success:before{content:"\2713"}.wf-striped-table .wf-result-success:before,.wf-block-list .wf-result-success:before,.wf-striped-table .wf-result-error:before,.wf-block-list .wf-result-error:before{font-size:16px;display:inline-block;margin:0px 8px 0px 0px}.wf-striped-table .wf-result-inactive,.wf-block-list .wf-result-inactive{font-weight:bold;color:#666666 !important}.wf-fixed-table{table-layout:fixed}pre.wf-pre{margin:8px 0 20px;padding:12px;background:#ffffff;border:1px solid #999999;overflow:auto}.wf-center{text-align:center}#wfConfigForm,.wf-diagnostics-wrapper{max-width:1035px}.wf-hidden{display:none !important}.wf-card{position:relative;margin:0 auto .625rem;padding:1rem;box-sizing:border-box;background:#fff;box-shadow:0 0 0 1px rgba(200,215,225,0.5),0 1px 2px #e9eff3}.wf-card .wf-card-inner{min-height:76px;width:100%;padding:8px;box-sizing:border-box;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;position:relative}.wf-card .wf-card-inner .wf-card-content{max-width:75%}.wf-card .wf-card-inner .wf-card-content .wf-card-title{font-size:1.125rem;width:100%}.wf-card .wf-card-inner .wf-card-content .wf-card-subtitle{margin-top:.125rem;margin-bottom:.125rem;font-size:.875rem;color:#4f748e}.wf-card .wf-card-inner .wf-card-action{position:absolute;top:0;right:0;height:100%;background:none;border:0;outline:0;width:48px;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;vertical-align:middle;transition:transform 0.15s cubic-bezier(0.175, 0.885, 0.32, 1.275),color 0.2s ease-in}.wf-card .wf-card-inner .wf-card-action .wf-card-action-chevron{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJjaGV2cm9uLW9iamVjdCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiCgkgd2lkdGg9IjI0cHgiIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAyNCAyNCIKCSB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHBhdGggaWQ9ImNoZXZyb24iIGQ9Ik0yMCA5bC04IDgtOC04IDEuNDE0LTEuNDE0TDEyIDE0LjE3Mmw2LjU4Ni02LjU4NiIvPgo8L3N2Zz4K");background-repeat:no-repeat;background-position:center center;width:24px;height:24px;fill:#87a6bc}.wf-card .wf-card-inner .wf-card-action .wf-card-action-checkbox{background-image:url(../images/checkbox.png);background-repeat:no-repeat;background-position:left center;width:29px;height:29px}.wf-card .wf-card-inner .wf-card-action .wf-card-action-checkbox.checked{background-position:right center}.wf-card .wf-card-extra{display:none;padding:0.5rem;margin-top:1rem;border-top:1px solid #f3f6f8}@media (min-width: 768px){.wf-card .wf-card-extra{padding:1rem}}.wf-card.active .wf-card-extra{display:block}.wf-card.wf-card-left .wf-card-content{margin-left:48px}.wf-card.wf-card-left .wf-card-action{right:auto;left:0px}.wf-card.disabled .wf-card-content .wf-card-title{color:#aaaaaa}.wf-card.disabled .wf-card-content .wf-card-subtitle{color:#8ea6be}.wf-inline-block{display:inline-block}@media (max-width: 767px){.wf-inline-block-xs{display:inline-block}}.wf-full-width{width:100%;max-width:100%}.wf-no-top{margin-top:0 !important}.wf-add-top{margin-top:1rem !important}.wf-add-top-large{margin-top:1.5rem !important}.wf-add-top-medium{margin-top:0.75rem !important}.wf-add-top-small{margin-top:0.5rem !important}.wf-add-top-smaller{margin-top:0.25rem !important}.wf-no-bottom{margin-bottom:0 !important}.wf-add-bottom{margin-bottom:1rem !important}.wf-add-bottom-large{margin-bottom:1.5rem !important}.wf-add-bottom-medium{margin-bottom:0.75rem !important}.wf-add-bottom-small{margin-bottom:0.5rem !important}.wf-add-bottom-smaller{margin-bottom:0.25rem !important}.wf-padding-no-top{padding-top:0 !important}.wf-no-right{margin-right:0 !important}.wf-padding-no-bottom{padding-bottom:0 !important}.wf-padding-no-left{padding-left:0 !important}.wf-padding-no-right{padding-right:0 !important}.wf-padding-add-top{padding-top:1rem !important}.wf-padding-add-top-small{padding-top:0.5rem !important}.wf-padding-add-top-medium{padding-top:0.75rem !important}.wf-padding-add-top-large{padding-top:1.5rem !important}.wf-padding-add-bottom{padding-bottom:1rem !important}.wf-padding-add-bottom-small{padding-bottom:0.5rem !important}.wf-padding-add-bottom-medium{padding-bottom:0.75rem !important}.wf-padding-add-bottom-large{padding-bottom:1.5rem !important}.wf-padding-add-left{padding-left:1rem !important}.wf-padding-add-left-small{padding-left:0.5rem !important}.wf-padding-add-left-medium{padding-left:0.75rem !important}.wf-padding-add-left-large{padding-left:1.5rem !important}.wf-padding-add-right{padding-right:1rem !important}.wf-padding-add-right-small{padding-right:0.5rem !important}.wf-padding-add-right-medium{padding-right:0.75rem !important}.wf-padding-add-right-large{padding-right:1.5rem !important}.wf-left{text-align:left !important}.wf-center{text-align:center !important}.wf-block-center{margin:0 auto}.wf-right{text-align:right !important}.wf-block-right{margin:0 0 0 auto}@media (max-width: 767px){.wf-left-xs{text-align:left !important}.wf-center-xs{text-align:center !important}.wf-padding-add-top-xs{padding-top:1rem !important}.wf-padding-add-top-xs-small{padding-top:0.5rem !important}.wf-padding-add-top-xs-large{padding-top:1.5rem !important}.wf-padding-add-bottom-xs{padding-bottom:1rem !important}.wf-padding-add-bottom-xs-small{padding-bottom:0.5rem !important}.wf-padding-add-bottom-xs-large{padding-bottom:1.5rem !important}}@media (min-width: 768px) and (max-width: 991px){.wf-left-sm{text-align:left !important}.wf-center-sm{text-align:center !important}}@media (min-width: 992px) and (max-width: 1199px){.wf-left-md{text-align:left !important}.wf-center-md{text-align:center !important}.wf-right-md{text-align:right !important}}@media (min-width: 1200px){.wf-left-lg{text-align:left !important}.wf-center-lg{text-align:center !important}.wf-right-lg{text-align:right !important}}.wf-border-no-top{border-top:none !important}.wf-border-no-right{border-right:none !important}.wf-border-no-bottom{border-bottom:none !important}.wf-border-no-left{border-left:none !important}.wf-overflow-x-auto{overflow-x:auto}.wf-overflow-y-auto{overflow-y:auto}@media (max-width: 767px){.wf-overflow-x-auto-xs{overflow-x:auto}.wf-overflow-y-auto-xs{overflow-y:auto}}.wf-blue{color:#00709e !important}.wf-blue-light{color:#008cc1 !important}.wf-gray-dark{color:#2d2d2d !important}.wf-gray-blue{color:#3f596b !important}.wf-green-dark{color:#11967a !important}.wf-green-light{color:#16bc9b !important}.wf-red-dark{color:#930000 !important}.wf-red-light{color:#c10000 !important}.wf-yellow-dark{color:#fcb214 !important}.wf-yellow-light{color:#ffd10a !important}.wf-gray{color:#525355 !important}.wf-gray-light{color:#9f9fa0 !important}.wf-nowrap{white-space:nowrap}.wf-tip{color:#fcb214;font-size:1.1rem;margin-right:0.25rem}.wf-text-small{font-size:80%}.wf-scroll-x::-webkit-scrollbar,.wf-scroll-y::-webkit-scrollbar{-webkit-appearance:none;width:7px;height:7px}.wf-scroll-x::-webkit-scrollbar-thumb,.wf-scroll-y::-webkit-scrollbar-thumb{border-radius:4px;background-color:rgba(0,0,0,0.194);-webkit-box-shadow:0 0 1px rgba(255,255,255,0.5)}.wf-split-word{word-wrap:break-word;word-break:break-all}@media (max-width: 767px){.wf-split-word-xs{word-wrap:break-word;word-break:break-all;white-space:normal !important}}.wfselect2-container{font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;min-width:200px}@media (min-width: 768px){.wfselect2-container{min-width:280px}}@media (min-width: 992px){.wfselect2-container{min-width:320px}}@media (max-width: 767px){.wfselect2-container .wfselect2-search.wfselect2-search--inline{margin:0 !important}}.wf-select2-placeholder-fix .wfselect2-search__field{width:auto !important}#wf-all-options-search .wfselect2-container{min-width:250px}#wf-all-options-search .wf-select2-placeholder-fix .wfselect2-search__field{margin-top:10px !important}.wf-page-title{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;margin-top:0.5rem}.wf-page-title>*{-webkit-flex-grow:0;flex-grow:0;min-width:0}.wf-page-title>*:first-child{-webkit-flex-grow:0;flex-grow:0;min-width:32px;-webkit-flex-basis:32px;flex-basis:32px;padding-right:0.25rem}.wf-page-title .wordfence-icon32{margin:0;margin-right:0.5rem}.wf-page-title h2{padding:0 !important}.wf-page-title .wfOnOffSwitch{-webkit-flex-basis:69px;flex-basis:69px;-webkit-flex-shrink:0;flex-shrink:0;margin-left:0.5rem}.wf-tab-container{background-color:#fff}@media (min-width: 768px){.wf-tab-container{background-color:unset}}.wf-page-tabs,.wf-page-fixed-tabs{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;border-bottom:1px solid #d0d0d0;margin:0;margin-top:0.5rem;margin-left:-10px;margin-right:-10px}@media (min-width: 768px){.wf-page-tabs,.wf-page-fixed-tabs{margin-left:0;margin-right:0}}.wf-page-tabs>*,.wf-page-fixed-tabs>*{-webkit-flex-grow:0;flex-grow:0;min-width:0}.wf-page-tabs>*:first-child,.wf-page-fixed-tabs>*:first-child{-webkit-flex-grow:0;flex-grow:0;min-width:32px;-webkit-flex-basis:32px;flex-basis:32px}.wf-page-tabs .wordfence-icon32,.wf-page-fixed-tabs .wordfence-icon32{margin:0;margin-right:0.5rem;margin-left:0.5rem}@media (min-width: 768px){.wf-page-tabs .wordfence-icon32,.wf-page-fixed-tabs .wordfence-icon32{margin-left:0}}.wf-page-tabs .wf-text-tab,.wf-page-fixed-tabs .wf-text-tab{margin:0;margin-left:0.5rem;color:#333}.wf-page-tabs .wf-tab,.wf-page-fixed-tabs .wf-tab{border:1px solid #fff;border-top-right-radius:0.5rem;border-top-left-radius:0.5rem;border-bottom:none;margin-bottom:-1px;margin-right:0.5rem;color:#333}@media (min-width: 768px){.wf-page-tabs .wf-tab,.wf-page-fixed-tabs .wf-tab{border:1px solid #d0d0d0;background:#e6e6e6}}.wf-page-tabs .wf-tab a,.wf-page-fixed-tabs .wf-tab a{display:block;padding:0.5rem 1rem;font-size:14px;line-height:24px;text-decoration:none;font-weight:bold;color:#333}.wf-page-tabs .wf-tab.wf-active,.wf-page-tabs .wf-tab:hover,.wf-page-fixed-tabs .wf-tab.wf-active,.wf-page-fixed-tabs .wf-tab:hover{border-bottom:1px solid #f1f1f1;background:#f1f1f1;color:#00709e;-webkit-box-shadow:none;box-shadow:none}.wf-page-tabs .wf-tab.wf-active a,.wf-page-tabs .wf-tab:hover a,.wf-page-fixed-tabs .wf-tab.wf-active a,.wf-page-fixed-tabs .wf-tab:hover a{color:#00709e}.wf-tab-content{display:none;margin-top:15px}.wf-tab-content.wf-active{display:block}.wf-fixed-tab-content{margin-top:15px}.wf-section-title{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start}.wf-section-title>*{-webkit-flex-grow:0;flex-grow:0;min-width:0}.wf-section-title>h1,.wf-section-title>h2,.wf-section-title>h3,.wf-section-title>h4,.wf-section-title>h5,.wf-section-title>h6{-webkit-flex-grow:1;flex-grow:1;color:#2d2d2d !important;font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif !important;line-height:1.5rem !important;font-weight:700 !important;padding:0 !important;margin:0 !important}@media (min-width: 768px){.wf-section-title>h1,.wf-section-title>h2,.wf-section-title>h3,.wf-section-title>h4,.wf-section-title>h5,.wf-section-title>h6{padding-right:0.25rem !important}}.wf-section-title h2{font-size:1.3125rem;line-height:1.5}.wf-section-title h3{font-size:1.125rem}.wf-section-title h4{font-size:1rem}.wf-section-title .wordfence-icon32{margin:0;margin-right:0.5rem}.wf-status-circular{position:relative}.wf-status-circular-text{position:absolute;left:50%;top:50%;padding:0;margin:0;transform:translate(-50%, -50%);color:#aaa;font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:1.3125rem;font-weight:300;line-height:1.5}.wf-status-circular .wf-status-overlay-text{position:absolute;left:50%;top:50%;padding:0;margin:0;width:200%;text-align:center;transform:translate(-50%, -50%);font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:.875rem;font-weight:normal;line-height:1.3125;opacity:0.0;color:#777}.wf-status-warning,.wf-status-critical,.wf-status-payment-expiring,.wf-status-renewing{width:100px;height:100px;margin-bottom:1rem}.wf-status-warning svg path{fill:#fcb214}.wf-status-critical svg path{fill:#930000}.wf-status-payment-expiring svg rect,.wf-status-payment-expiring svg path{fill:#930000}.wf-status-renewing svg rect,.wf-status-renewing svg path{fill:#11967a}#howGetIPs-preview{color:#8c8c8c}#howGetIPs-preview strong{color:#666}.wf-scrollTop{background:#424242;bottom:30px;right:15px;position:fixed;z-index:999;display:none}.wf-scrollTop a{background:#959595;display:block;padding:4px 5px;line-height:32px;width:32px;color:#ffffff;text-align:center}.wf-back-icon{color:#00709e;margin-right:0.75rem;font-size:1.5rem !important}.wf-back-link-chevron{margin-left:1rem}.wf-back-link-chevron:first-of-type{margin-left:0}.wf-back-link{font-weight:bold;text-decoration:none}.wf-premium-link{font-weight:bold}.wf-boolean-switch{border:1px solid #aaa;display:block;cursor:pointer;width:54px;height:30px;min-width:54px;min-height:30px;-moz-border-radius:15px;-webkit-border-radius:15px;border-radius:15px;line-height:30px !important;background-color:#ffffff;position:relative;box-sizing:border-box;transition:background-color 0.2s ease-in-out, border-color 0.2s ease-in-out}@media (min-width: 768px){.wf-boolean-switch{width:34px;height:20px;min-width:34px;min-height:20px;-moz-border-radius:10px;-webkit-border-radius:10px;border-radius:10px;line-height:20px !important}}.wf-boolean-switch .wf-boolean-switch-handle{position:relative;display:block;border:1px solid #aaa;background-color:#fff;width:30px;height:30px;min-width:30px;min-height:30px;-moz-border-radius:15px;-webkit-border-radius:15px;border-radius:15px;margin-top:-1px;box-sizing:border-box;left:-1px;transition:border-color 0.2s ease-in-out, left 0.2s ease-in-out}@media (min-width: 768px){.wf-boolean-switch .wf-boolean-switch-handle{width:20px;height:20px;min-width:20px;min-height:20px;-moz-border-radius:10px;-webkit-border-radius:10px;border-radius:10px}}.wf-boolean-switch.wf-active{border:1px solid #00709e;background-color:#00709e}.wf-boolean-switch.wf-active .wf-boolean-switch-handle{border:1px solid #00709e;left:25px}@media (min-width: 768px){.wf-boolean-switch.wf-active .wf-boolean-switch-handle{left:15px}}.wf-boolean-switch.wf-disabled{pointer-events:none;border-color:#e2e2e2}.wf-boolean-switch.wf-disabled .wf-boolean-switch-handle{border-color:#e2e2e2}.wf-boolean-switch.wf-disabled.wf-active{border-color:#e2e2e2;background-color:#e2e2e2}.wf-boolean-switch.wf-disabled.wf-active .wf-boolean-switch-handle{border-color:#e2e2e2}.wf-option-checkbox,[type=checkbox].wf-option-checkbox+label:before{content:'\f3fd';font-family:"Ionicons" !important;display:block;cursor:pointer;width:30px;height:30px;min-width:30px;min-height:30px;-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px;line-height:30px !important;text-align:center !important;background-color:#ffffff !important;box-shadow:0px 0px 0px 1px #aaa;color:#ffffff !important;font-size:30px !important;font-weight:normal !important}@media (min-width: 768px){.wf-option-checkbox,[type=checkbox].wf-option-checkbox+label:before{width:20px;height:20px;min-width:20px;min-height:20px;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;line-height:21px !important;font-size:25px !important}}@media (min-width: 768px){.wf-option-checkbox{position:relative}.wf-option-checkbox>*{position:absolute;top:9px;left:50%;transform:translateX(-50%) translateY(-50%)}}.wf-option-radio,[type=radio].wf-option-radio+label:before{content:"\f401";font-family:"Ionicons" !important;display:block;cursor:pointer;width:30px;height:30px;min-width:30px;min-height:30px;line-height:30px !important;text-align:center !important;color:#ccc !important;font-size:30px !important;font-weight:normal !important}@media (min-width: 768px){.wf-option-radio,[type=radio].wf-option-radio+label:before{width:20px;height:20px;min-width:20px;min-height:20px;-moz-border-radius:10px;-webkit-border-radius:10px;border-radius:10px;line-height:20px !important}}[type=checkbox].wf-option-checkbox.wf-small+label:before{width:20px;height:20px;min-width:20px;min-height:20px;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;line-height:21px !important;font-size:20px !important}[type=radio].wf-option-radio.wf-small+label:before{width:20px;height:20px;min-width:20px;min-height:20px;line-height:21px !important;font-size:20px !important}[type=checkbox].wf-option-checkbox+label:before,[type=radio].wf-option-radio+label:before{text-align:center !important;text-indent:0px;display:inline-block;vertical-align:-6px;margin:0px 5px 0px 0px;font-weight:normal;font-style:normal}[type=checkbox].wf-option-checkbox.wf-small+label:before,[type=radio].wf-option-radio.wf-small+label:before{text-indent:0px;vertical-align:-3px}.wf-option-checkbox.wf-checked,[type=checkbox].wf-option-checkbox:checked+label:before{color:#ffffff !important;box-shadow:0px 0px 0px 1px #00709e !important;background-color:#00709e !important}.wf-option-checkbox.wf-disabled,[type=checkbox].wf-option-checkbox:disabled+label:before{color:#f1f1f1 !important;box-shadow:0px 0px 0px 1px #e2e2e2 !important;background-color:#f1f1f1 !important}.wf-option-checkbox.wf-checked.wf-disabled,[type=checkbox].wf-option-checkbox:disabled:checked+label:before{color:#777 !important;box-shadow:0px 0px 0px 1px #e2e2e2 !important;background-color:#f1f1f1 !important}.wf-option-radio.wf-checked,[type=radio].wf-option-radio:checked+label:before{content:"\f3a7";color:#00709e !important}.wf-option-checkbox[type=checkbox],.wf-option-checkbox[type=radio],.wf-option-radio[type=checkbox],.wf-option-radio[type=radio]{position:absolute;left:-9999px}.wf-option-text input[type="text"],input.wf-input-text{text-align:left;width:100%;height:40px;border-radius:0;border:0;background-color:#ffffff;box-shadow:1px 1px 1px 2px rgba(215,215,215,0.65)}.wf-option-text input[type="text"]:placeholder-shown,input.wf-input-text:placeholder-shown{font-style:italic;color:#bfbfbf}::-webkit-input-placeholder{color:#bfbfbf}:-moz-placeholder{color:#bfbfbf;opacity:1}::-moz-placeholder{color:#bfbfbf;opacity:1}:-ms-input-placeholder{color:#bfbfbf}::-ms-input-placeholder{color:#bfbfbf}::placeholder{color:#bfbfbf}.wf-option-premium .wf-option-title,.wf-option-premium .wf-option-title>ul>li,.wf-option.wf-disabled .wf-option-title,.wf-option.wf-disabled .wf-option-title>ul>li{color:#aaa !important}.wf-option-premium .wf-option-checkbox,.wf-option-premium .wf-option-radio,.wf-option.wf-disabled .wf-option-checkbox,.wf-option.wf-disabled .wf-option-radio{opacity:0.5}.wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status .wf-block-labeled-value-value{padding-top:0}.wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status .wf-block-labeled-value-value .wf-fa{font-size:8rem}.wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status .wf-block-labeled-value-value svg{width:160px}.wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status .wf-block-labeled-value-label{font-size:1.35rem;font-weight:300;padding-bottom:0}.wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status-premium .wf-block-labeled-value-value{color:#9f9fa0}.wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status-premium .wf-block-labeled-value-value svg{fill:#9f9fa0}.wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status-premium .wf-block-labeled-value-label{color:#9f9fa0}.wf-indeterminate-progress{-webkit-animation:wf-indeterminate-progress-keyframes 1s steps(8, end) infinite;-o-animation:wf-indeterminate-progress-keyframes 1s steps(8, end) infinite;animation:wf-indeterminate-progress-keyframes 1s steps(8, end) infinite}.wf-indeterminate-progress path{fill:#00709e}@-moz-keyframes wf-indeterminate-progress-keyframes{to{-moz-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes wf-indeterminate-progress-keyframes{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes wf-indeterminate-progress-keyframes{to{-moz-transform:rotate(360deg);-ms-transform:rotate(360deg);-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.wf-flex-row{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:row;flex-direction:row}.wf-flex-row.wf-flex-row-full-height{-webkit-align-items:stretch;align-items:stretch}.wf-flex-row.wf-flex-row-vertical-xs{-webkit-flex-direction:column;flex-direction:column}@media (min-width: 768px){.wf-flex-row.wf-flex-row-vertical-xs{-webkit-flex-direction:row;flex-direction:row}}.wf-flex-row .wf-flex-row-1{-webkit-flex-grow:1;flex-grow:1}.wf-flex-row .wf-flex-row-0{-webkit-flex-grow:0;flex-grow:0}.wf-flex-row .wf-flex-col-100,.wf-flex-row .wf-flex-col-xs-100{-webkit-flex-grow:0;flex-grow:0;-webkit-flex-basis:100%;flex-basis:100%;width:100%}@media (min-width: 768px){.wf-flex-row .wf-flex-col-sm-100{-webkit-flex-grow:0;flex-grow:0;-webkit-flex-basis:100%;flex-basis:100%;width:100%}}@media (min-width: 992px){.wf-flex-row .wf-flex-col-md-100{-webkit-flex-grow:0;flex-grow:0;-webkit-flex-basis:100%;flex-basis:100%;width:100%}}@media (min-width: 1200px){.wf-flex-row .wf-flex-col-lg-100{-webkit-flex-grow:0;flex-grow:0;-webkit-flex-basis:100%;flex-basis:100%;width:100%}}.wf-flex-row .wf-flex-col-50,.wf-flex-row .wf-flex-col-xs-50{-webkit-flex-grow:0;flex-grow:0;-webkit-flex-basis:50%;flex-basis:50%;width:50%}@media (min-width: 768px){.wf-flex-row .wf-flex-col-sm-50{-webkit-flex-grow:0;flex-grow:0;-webkit-flex-basis:50%;flex-basis:50%;width:50%}}@media (min-width: 992px){.wf-flex-row .wf-flex-col-md-50{-webkit-flex-grow:0;flex-grow:0;-webkit-flex-basis:50%;flex-basis:50%;width:50%}}@media (min-width: 1200px){.wf-flex-row .wf-flex-col-lg-50{-webkit-flex-grow:0;flex-grow:0;-webkit-flex-basis:50%;flex-basis:50%;width:50%}}.wf-switch{display:-webkit-flex !important;display:flex !important;-webkit-align-items:stretch !important;align-items:stretch !important;-webkit-justify-content:flex-start !important;justify-content:flex-start !important;-webkit-flex-direction:row !important;flex-direction:row !important;margin:0;padding:0}.wf-switch>li{margin:0 !important;padding:0.5rem 0.7rem !important;text-transform:uppercase;cursor:pointer;color:#aaa;font-weight:400;border-top:1px solid #bfbfbf;border-bottom:1px solid #bfbfbf;border-right:1px solid #bfbfbf}.wf-switch>li:first-of-type{border-left:1px solid #bfbfbf;-moz-border-radius-topleft:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px}.wf-switch>li:last-of-type{-moz-border-radius-topright:6px;-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-moz-border-radius-bottomright:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px}.wf-switch>li.wf-active{color:#ffffff;background-color:#00709e}.wf-tooltip,.ui-widget.wf-tooltip{max-width:600px;font-size:0.75rem;overflow-wrap:break-word}.wf-widget-learning-mode{border-top:1px solid #eee;margin:0 -1rem;padding:1rem;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;-webkit-flex-direction:row;flex-direction:row}@media (min-width: 768px){.wf-widget-learning-mode{padding:1.5rem}}.wf-widget-learning-mode svg{width:18px}.wf-widget-learning-mode svg path{fill:#aaa}.wf-widget-learning-mode span{padding-left:0.5rem;font-size:.875rem;line-height:1.3125;font-weight:600}.wf-drawer-overlay{position:fixed;top:0px;right:0px;bottom:0px;left:160px;background-color:rgba(0,0,0,0.5);z-index:9980;padding:5rem 0}.folded .wf-drawer-overlay{left:36px}@media only screen and (max-width: 960px){.auto-fold .wf-drawer-overlay{left:36px}}.rtl .wf-drawer-overlay{right:160px;left:0px}.rtl .folded .wf-drawer-overlay{right:36px}@media only screen and (max-width: 960px){.rtl .auto-fold .wf-drawer-overlay{right:36px}}@media screen and (max-width: 782px){.wf-drawer-overlay,.folded .wf-drawer-overlay,.auto-fold .wf-drawer-overlay,.rtl .wf-drawer-overlay,.rtl .folded .wf-drawer-overlay,.rtl .auto-fold .wf-drawer-overlay{left:0px;right:0px}}.wf-drawer{background-color:#ffffff;position:fixed;top:32px;bottom:0px;right:0px;z-index:9981}.wf-drawer .wf-modal{display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:column;flex-direction:column;height:100%}.wf-drawer .wf-modal ul,.wf-drawer .wf-modal li{padding:0;margin:0}.wf-drawer .wf-modal .wf-modal-header{-webkit-flex-shrink:0;flex-shrink:0;min-height:44px;padding:1rem;width:100%;box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;position:relative;background-color:#00709e;color:#ffffff}.wf-drawer .wf-modal .wf-modal-header .wf-modal-header-content{max-width:75%}.wf-drawer .wf-modal .wf-modal-header .wf-modal-header-content .wf-modal-title{font-size:1.3125rem;line-height:1.5;font-weight:300;width:100%;transition:color 0.2s ease-in}.wf-drawer .wf-modal .wf-modal-header .wf-modal-header-content .wf-modal-subtitle{margin-top:.125rem;margin-bottom:.125rem;font-size:.575rem;color:#4f748e}.wf-drawer .wf-modal .wf-modal-content{-webkit-flex-grow:1;flex-grow:1;display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:column;flex-direction:column;padding:1rem}.wf-drawer .wf-modal .wf-modal-content>*:first-child{margin-top:0}.wf-drawer .wf-modal .wf-modal-content select,.wf-drawer .wf-modal .wf-modal-content select option,.wf-drawer .wf-modal .wf-modal-content .wfselect2-container--default{font-size:0.7rem;font-weight:bold}@media (min-width: 768px){.wf-drawer .wf-modal .wf-modal-content select,.wf-drawer .wf-modal .wf-modal-content select option,.wf-drawer .wf-modal .wf-modal-content .wfselect2-container--default{font-size:0.8rem}}@media (min-width: 992px){.wf-drawer .wf-modal .wf-modal-content select,.wf-drawer .wf-modal .wf-modal-content select option,.wf-drawer .wf-modal .wf-modal-content .wfselect2-container--default{font-size:0.9rem}}.wf-drawer .wf-modal .wf-modal-content .wf-option-select-option,.wf-drawer .wf-modal .wf-modal-content .wfselect2-container--default,.wf-drawer .wf-modal .wf-modal-content .wfselect2-container--default .wfselect2-selection--single{text-align:left;height:40px;border-radius:0;border:0;background-color:#ffffff;box-shadow:1px 1px 1px 2px rgba(215,215,215,0.35)}.wf-drawer .wf-modal .wf-modal-content .wf-option-select-option .wfselect2-selection__rendered,.wf-drawer .wf-modal .wf-modal-content .wfselect2-container--default .wfselect2-selection__rendered,.wf-drawer .wf-modal .wf-modal-content .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__rendered{color:#333;line-height:40px}.wf-drawer .wf-modal .wf-modal-content .wf-option-select-option .wfselect2-selection__arrow,.wf-drawer .wf-modal .wf-modal-content .wfselect2-container--default .wfselect2-selection__arrow,.wf-drawer .wf-modal .wf-modal-content .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow{height:38px}.wf-drawer .wf-modal .wf-modal-content .wf-option-select-option.wfselect2-container--disabled .wfselect2-selection__rendered,.wf-drawer .wf-modal .wf-modal-content .wfselect2-container--default.wfselect2-container--disabled .wfselect2-selection__rendered,.wf-drawer .wf-modal .wf-modal-content .wfselect2-container--default .wfselect2-selection--single.wfselect2-container--disabled .wfselect2-selection__rendered{color:#aaa}.wf-drawer .wf-modal .wf-modal-content .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow b{border-color:#333 transparent transparent}.wf-drawer .wf-modal .wf-modal-content .wfselect2-container--default.wfselect2-container--open .wfselect2-selection--single .wfselect2-selection__arrow b{border-color:transparent transparent #333}.wf-drawer .wf-modal .wf-modal-footer{-webkit-flex-shrink:0;flex-shrink:0;min-height:44px;padding:1rem;width:100%;box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;position:relative;background-color:#f1f1f1;border-top:1px solid #d9d9d9}.wf-mobile-menu-overlay{position:fixed;top:0px;right:0px;bottom:0px;left:0px;background-color:rgba(0,0,0,0.5);z-index:100000}.wf-mobile-menu-overlay>.wf-mobile-menu-tap-hint{position:absolute;top:25%;left:50%;transform:translateX(-50%);color:#ffffff;font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:1.3125rem;font-weight:300;line-height:1.5}.wf-mobile-menu{position:fixed;left:50%;transform:translateX(-50%);z-index:100001}.wf-mobile-menu>.wf-mobile-menu-items{margin:0;padding:0 0 0.25rem 0;list-style:none}.wf-mobile-menu>.wf-mobile-menu-items>li{margin:0;padding:0.25rem 0}.wf-mobile-menu>.wf-mobile-menu-items>li>a{box-sizing:border-box}.wf-circle-tooltip.ui-tooltip{padding:0;font-size:0.7rem;max-width:400px;border:1px solid #9f9fa0;position:absolute !important;z-index:3000;-moz-border-radius:6px;-webkit-border-radius:6px;border-radius:6px}.wf-circle-tooltip.ui-tooltip h4{margin:0 0 10px}.wf-circle-tooltip.ui-tooltip ul{margin:10px 0}.wf-circle-tooltip.ui-tooltip p{font-size:0.7rem;margin:10px 0 0}.wf-circle-tooltip.ui-tooltip a{color:#00709e;text-decoration:none}.wf-circle-tooltip.ui-tooltip a:hover{text-decoration:underline}.wf-circle-tooltip.ui-tooltip .wf-circle-tooltip-header,.wf-circle-tooltip.ui-tooltip .wf-circle-tooltip-body{padding:12px}.wf-circle-tooltip.ui-tooltip .wf-circle-tooltip-header{-moz-border-radius:6px 6px 0px 0px;-webkit-border-radius:6px;border-radius:6px 6px 0px 0px;background-color:#f1f1f1}.wf-circle-tooltip.ui-tooltip .wf-circle-tooltip-header h4{margin:0;font-size:0.8rem}.wf-circle-tooltip.ui-tooltip .wf-circle-tooltip-body .wf-tooltip-status-circle{position:relative;padding:0 10px 0 0}.wf-circle-tooltip.ui-tooltip .wf-circle-tooltip-body .wf-tooltip-status-circle .wf-status-overlay-text{display:none}.wf-circle-tooltip.ui-tooltip .wf-circle-tooltip-body ul li strong{width:20%}.wf-circle-tooltip.ui-tooltip .wf-circle-tooltip-body ul li span{width:80%}.wf-circle-tooltip.ui-tooltip .wf-circle-tooltip-block{position:relative;background-color:#fff;z-index:3001;-moz-border-radius:6px;-webkit-border-radius:6px;border-radius:6px}.wf-circle-tooltip.ui-tooltip .wf-circle-tooltip-block:after{content:'';position:absolute;bottom:-20px;left:20px;width:0;height:0;border-left:20px solid transparent;border-right:20px solid transparent;border-top:20px solid #fff}.wf-circle-tooltip.ui-tooltip:after{content:'';position:absolute;bottom:-22px;left:18px;width:0;height:0;border-left:22px solid transparent;border-right:22px solid transparent;border-top:22px solid rgba(0,0,0,0.5);filter:blur(2px)}.wf-circle-tooltip.ui-tooltip.wf-tooltip-vertical-top:after{top:-22px;bottom:auto;border-left:22px solid transparent;border-right:22px solid transparent;border-bottom:22px solid rgba(0,0,0,0.5);border-top-width:0}.wf-circle-tooltip.ui-tooltip.wf-tooltip-vertical-top .wf-circle-tooltip-block:after{top:-20px;bottom:auto;border-left:20px solid transparent;border-right:20px solid transparent;border-bottom:20px solid #f1f1f1;border-top-width:0}.wf-circle-tooltip.ui-tooltip.wf-tooltip-vertical-top.wf-tooltip-horizontal-right:after{left:auto;right:18px}.wf-circle-tooltip.ui-tooltip.wf-tooltip-vertical-top.wf-tooltip-horizontal-right .wf-circle-tooltip-block:after{left:auto;right:20px}.wf-circle-tooltip.ui-tooltip.wf-tooltip-vertical-bottom.wf-tooltip-horizontal-right:after{left:auto;right:18px}.wf-circle-tooltip.ui-tooltip.wf-tooltip-vertical-bottom.wf-tooltip-horizontal-right .wf-circle-tooltip-block:after{left:auto;right:20px}#wf-mobile-controls{white-space:nowrap;font-size:1.2rem}.wf-callout-warning{background-color:#feecc4;padding:0.8rem 1.25rem}.wf-tip-light-bulb{color:#fcb214;font-size:1.5rem;font-weight:bold}.wf-tip-info-message{padding-left:0.5rem !important;font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:.875rem;color:#2d2d2d;line-height:1.3125;font-weight:normal}.wf-overdue-cron td{background-color:#fff4f4 !important}.wf-inline-notice{background:#ffffff;border:1px solid #ccd0d4;border-left-color:#ffb900;border-left-width:4px;box-shadow:0 1px 1px rgba(0,0,0,0.04);padding:8px 12px;display:flex;justify-content:flex-start;align-items:center}.wf-inline-notice>*{flex-grow:1}.wf-inline-notice:first-child{flex-grow:0;flex-shrink:0}.wf-inline-notice span{padding-left:0.5rem}.wf-block{position:relative;margin:0 auto 0.5rem;padding:0 1rem;box-sizing:border-box;background-color:#fff;box-shadow:0 0 0 1px rgba(200,215,225,0.25),0 1px 2px #e9eff3}@media (min-width: 768px){.wf-block{padding:0 1.5rem}}.wf-block.wf-block-no-padding{padding:0}.wf-block.wf-block-transparent{background-color:transparent;box-shadow:none}.wf-block .wf-block-banner{min-height:44px;margin:0 -1rem;padding:0;box-sizing:border-box;position:relative;background-color:#fcb214;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;-webkit-flex-direction:row;flex-direction:row}.wf-block .wf-block-banner>li{margin:0;padding:0.75rem 1rem}@media (min-width: 768px){.wf-block .wf-block-banner{margin:0 -1.5rem}.wf-block .wf-block-banner>li{padding:0.75rem 1.5rem}}.wf-block .wf-block-header{min-height:44px;padding:1rem 0;width:100%;box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;position:relative}.wf-block .wf-block-header .wf-block-header-content{max-width:75%}.wf-block .wf-block-header .wf-block-header-content .wf-block-title{font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:0.9rem;width:100%;transition:color 0.2s ease-in}.wf-block .wf-block-header .wf-block-header-content .wf-block-subtitle{margin-top:.125rem;margin-bottom:.125rem;font-size:0.775rem}.wf-block .wf-block-header .wf-block-header-action{position:absolute;top:0;right:0;height:100%;background:none;border:0;outline:0;width:48px;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-end;justify-content:flex-end;vertical-align:middle;transition:transform 0.15s cubic-bezier(0.175, 0.885, 0.32, 1.275),color 0.2s ease-in}.wf-block .wf-block-header .wf-block-header-action.wf-block-header-action-text{width:auto}.wf-block .wf-block-header .wf-block-header-action.wf-block-header-action-text.wf-block-header-action-text-success{color:#11967a}.wf-block .wf-block-header .wf-block-header-action.wf-block-header-action-text.wf-block-header-action-text-warning{color:#930000}.wf-block .wf-block-header .wf-block-header-action.wf-block-header-action-text.wf-block-header-action-text-warning a{color:#930000}.wf-block .wf-block-header .wf-block-header-action .wf-block-header-action-chevron{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJjaGV2cm9uLW9iamVjdCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiCgkgd2lkdGg9IjI0cHgiIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAyNCAyNCIKCSB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHBhdGggaWQ9ImNoZXZyb24iIGQ9Ik0yMCA5bC04IDgtOC04IDEuNDE0LTEuNDE0TDEyIDE0LjE3Mmw2LjU4Ni02LjU4NiIvPgo8L3N2Zz4K");background-repeat:no-repeat;background-position:center center;width:24px;height:24px}.wf-block .wf-block-header .wf-block-header-action .wf-block-header-action-disclosure{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJkaXNjbG9zdXJlLWNsb3NlZC1vYmplY3QiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHdpZHRoPSIxMnB4IiBoZWlnaHQ9IjEycHgiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMTIgMTIiCgkgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxwYXRoIGlkPSJkaXNjbG9zdXJlLWNsb3NlZCIgZD0iTSA2IDAgbCA2IDYgLTYgNiAwIC0xMiIgZmlsbD0iIzc3NyIvPgo8L3N2Zz4=");background-repeat:no-repeat;background-position:center center;width:12px;height:12px;transition:transform 0.15s cubic-bezier(0.175, 0.885, 0.32, 1.275),background 0.2s ease-in}.wf-block .wf-block-header .wf-block-header-action .wf-block-header-action-checkbox{background-image:url(../images/checkbox.png);background-repeat:no-repeat;background-position:left center;width:29px;height:29px}.wf-block .wf-block-header .wf-block-header-action .wf-block-header-action-checkbox.wf-checked{background-position:right center}.wf-block .wf-block-content{display:none;margin:0 -1rem;padding:0 1rem}@media (min-width: 768px){.wf-block .wf-block-content{margin:0 -1.5rem;padding:0 1.5rem}}.wf-block .wf-block-content .wf-block-list{margin:0 -1rem;padding:0;list-style:none}@media (min-width: 768px){.wf-block .wf-block-content .wf-block-list{margin:0 -1.5rem}}.wf-block .wf-block-content .wf-block-list.wf-block-list-striped>li:nth-of-type(odd){background-color:#f9f9f9}.wf-block .wf-block-content .wf-block-list.wf-block-list-striped>li:nth-of-type(even){background-color:#ffffff}.wf-block .wf-block-content .wf-block-list>li{display:block;min-height:44px;padding:0 1rem;margin:0;border-top:1px solid #e2e2e2;box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between}@media (min-width: 768px){.wf-block .wf-block-content .wf-block-list>li{padding:0 1.5rem}}.wf-block .wf-block-content .wf-block-list>li>*:first-child{-webkit-flex-grow:1;flex-grow:1;min-width:0}.wf-block .wf-block-content .wf-block-list.wf-block-list-horizontal{box-sizing:border-box;margin-top:-1px;display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-align-content:flex-start;align-content:flex-start;-webkit-justify-content:space-between;justify-content:space-between;-webkit-flex-wrap:wrap;flex-wrap:wrap}.wf-block .wf-block-content .wf-block-list.wf-block-list-horizontal>li{-webkit-flex-grow:1;flex-grow:1;-webkit-flex-basis:100%;flex-basis:100%;border-left:1px solid #e2e2e2}@media (min-width: 768px){.wf-block .wf-block-content .wf-block-list.wf-block-list-horizontal>li{-webkit-flex-basis:50%;flex-basis:50%}}@media (min-width: 992px){.wf-block .wf-block-content .wf-block-list.wf-block-list-horizontal>li{-webkit-flex-basis:25%;flex-basis:25%}}.wf-block .wf-block-content .wf-block-list.wf-block-list-horizontal.wf-block-list-nowrap{overflow-y:auto;-webkit-flex-wrap:nowrap;flex-wrap:nowrap}.wf-block .wf-block-content .wf-block-list.wf-block-list-horizontal.wf-block-list-nowrap>li{-webkit-flex-shrink:0;flex-shrink:0}.wf-block .wf-block-content .wf-block-list.wf-block-list-horizontal.wf-block-list-horizontal-5>li{-webkit-flex-grow:1;flex-grow:1;-webkit-flex-basis:20%;flex-basis:20%}.wf-block .wf-block-content .wf-block-list.wf-block-list-horizontal>*:first-child{border-left:0}@media (min-width: 768px){.wf-block .wf-block-content .wf-block-list.wf-block-list-horizontal.wf-block-list-equal>li{max-width:50%}}@media (min-width: 992px){.wf-block .wf-block-content .wf-block-list.wf-block-list-horizontal.wf-block-list-equal>li{max-width:25%}}.wf-block .wf-block-content .wf-block-list.wf-block-list-horizontal.wf-block-list-horizontal-5.wf-block-list-equal>li{max-width:20%}.wf-block .wf-block-content .wf-block-list .wf-block-list-state{text-align:center}@media (min-width: 1200px){.wf-block .wf-block-content .wf-block-list .wf-block-list-state{text-align:left}}.wf-block .wf-block-content .wf-block-list .wf-block-list-state-enabled .wf-fa{color:#11967a}.wf-block .wf-block-content .wf-block-list .wf-block-list-state-disabled .wf-fa{color:#525355}.wf-block .wf-block-content .wf-block-list .wf-block-list-state-premium{color:#9f9fa0}.wf-block .wf-block-content .wf-block-list .wf-block-list-dismiss{padding-left:2rem;font-size:1.25rem}.wf-block .wf-block-content .wf-block-list .wf-block-list-dismiss a{color:#525355}.wf-block .wf-block-content:first-child>.wf-block-list>li:first-child{border-top:none}.wf-block .wf-block-content .wf-block-left-right{margin:0 -1rem;padding:0;list-style:none;display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-align-content:flex-start;align-content:flex-start;-webkit-justify-content:space-between;justify-content:space-between;-webkit-flex-wrap:wrap;flex-wrap:wrap}@media (min-width: 768px){.wf-block .wf-block-content .wf-block-left-right{margin:0 -1.5rem}}.wf-block .wf-block-content .wf-block-left-right.wf-block-left-right-nowrap{-webkit-flex-wrap:nowrap;flex-wrap:nowrap}.wf-block .wf-block-content .wf-block-left-right>li{display:block;min-height:44px;padding:0;margin:0;box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between}.wf-block .wf-block-content .wf-block-left-right>li>*:first-child{-webkit-flex-grow:1;flex-grow:1;min-width:0}.wf-block .wf-block-content .wf-block-left-right>li.wf-left{text-align:left}.wf-block .wf-block-content .wf-block-left-right>li.wf-right{text-align:right}.wf-block .wf-block-content .wf-block-left-center-right{margin:0 -1rem;padding:0;list-style:none;display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-align-content:center;align-content:center;-webkit-justify-content:space-between;justify-content:space-between;-webkit-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;flex-wrap:nowrap}.wf-block .wf-block-content .wf-block-left-center-right>li{display:block;min-height:44px;padding:0;margin:0;box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-grow:1;flex-grow:1;-webkit-flex-basis:33.3333%;flex-basis:33.3333%;max-width:33.3333%}.wf-block .wf-block-content .wf-block-left-center-right>li a{text-decoration:none;font-size:.875rem}.wf-block .wf-block-content .wf-block-left-center-right>li.wf-left{text-align:left}.wf-block .wf-block-content .wf-block-left-center-right>li.wf-center{text-align:center;-webkit-justify-content:center;justify-content:center}.wf-block .wf-block-content .wf-block-left-center-right>li.wf-center .wordfence-icon32{margin:0}.wf-block .wf-block-content .wf-block-left-center-right>li.wf-right{text-align:right;-webkit-justify-content:flex-end;justify-content:flex-end}.wf-block .wf-block-content .wf-block-labeled-value{box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;-webkit-flex-direction:column;flex-direction:column;margin:0 -1rem;padding:1rem}@media (min-width: 768px){.wf-block .wf-block-content .wf-block-labeled-value{margin:0 -1.5rem;padding:1.5rem}}.wf-block .wf-block-content .wf-block-labeled-value-value{font-size:3rem;line-height:3rem;color:#9f9fa0;padding:1rem}.wf-block .wf-block-content .wf-block-labeled-value-label{font-size:0.75rem;color:#9f9fa0;padding:0 1rem 1rem 1rem}.wf-block.wf-block-no-header .wf-block-content .wf-block-list>li{border-top:none}.wf-block.wf-active .wf-block-content,.wf-block.wf-always-active .wf-block-content{display:block}.wf-block.wf-active>.wf-block-header>.wf-block-header-content>.wf-block-title{color:#00709e}.wf-block.wf-active>.wf-block-header>.wf-block-header-content>.wf-block-header-action>.wf-block-header-action-disclosure{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJkaXNjbG9zdXJlLWNsb3NlZC1vYmplY3QiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHdpZHRoPSIxMnB4IiBoZWlnaHQ9IjEycHgiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMTIgMTIiCgkgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxwYXRoIGlkPSJkaXNjbG9zdXJlLWNsb3NlZCIgZD0iTSA2IDAgbCA2IDYgLTYgNiAwIC0xMiIgZmlsbD0iIzAwNzA5ZSIvPgo8L3N2Zz4=") !important;transform:rotate(90deg)}.wf-block.wf-disabled>.wf-block-header>.wf-block-header-content>.wf-block-title,.wf-block.wf-disabled>.wf-block-header>.wf-block-header-content>.wf-block-subtitle{color:#bfbfbf !important}.wf-block.wf-disabled>.wf-block-header>.wf-block-header-content>.wf-block-header-action>.wf-block-header-action-disclosure{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJkaXNjbG9zdXJlLWNsb3NlZC1vYmplY3QiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHdpZHRoPSIxMnB4IiBoZWlnaHQ9IjEycHgiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMTIgMTIiCgkgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxwYXRoIGlkPSJkaXNjbG9zdXJlLWNsb3NlZCIgZD0iTSA2IDAgbCA2IDYgLTYgNiAwIC0xMiIgZmlsbD0iI2JkYmRiZCIvPgo8L3N2Zz4=") !important;transform:rotate(0deg)}.wf-block.wf-disabled>.wf-block-content{display:none !important}.wf-block.wf-block-header-left .wf-block-header-content{margin-left:48px}.wf-block.wf-block-header-left .wf-block-header-action{right:auto;left:0px}.wf-block.wf-disabled .wf-dashboard-item-content .wf-block-title{color:#aaaaaa}.wf-block.wf-disabled .wf-dashboard-item-content .wf-block-subtitle{color:#8ea6be}.wf-section-title{margin-bottom:1rem}.wf-status-detail{box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;-webkit-flex-direction:column;flex-direction:column;margin:0 -1rem;padding:1rem}.wf-status-detail p{margin:0 0 0.45rem 0}.wf-status-detail .wf-status-circular{margin-bottom:1rem}.wf-status-detail .wf-status-detail-title{font-weight:700 !important;font-size:1rem !important;line-height:1.3125 !important}.wf-status-detail .wf-status-detail-subtitle{font-size:.875rem !important;line-height:1.3125 !important;font-weight:normal !important;text-align:center}.wf-status-detail .wf-status-detail-link>a{font-weight:600 !important;font-size:0.85rem !important}.wf-block-navigation-option{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-align-content:flex-start;align-content:flex-start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-wrap:nowrap;flex-wrap:nowrap}.wf-block-navigation-option svg.wf-block-navigation-option-icon{width:50px;min-width:50px;fill:#9f9fa0}.wf-block-navigation-option:hover{cursor:pointer}.wf-block-navigation-option:hover a{text-decoration:underline}.wf-block-navigation-option:hover svg.wf-block-navigation-option-icon{fill:#00709e}.wf-select-group{display:-webkit-flex !important;display:flex !important;-webkit-align-items:center !important;align-items:center !important;-webkit-justify-content:flex-start !important;justify-content:flex-start !important;-webkit-flex-direction:row !important;flex-direction:row !important;-webkit-flex-grow:0 !important;flex-grow:0 !important}.wf-select-group .wfselect2-container{min-width:200px}@media (max-width: 767px){.wf-select-group .wfselect2-container{max-width:100px}}.wf-select-group .wfselect2-container--default .wfselect2-selection--single{display:block;width:100%;height:38px;padding:.5rem 1.25rem;font-size:14px;line-height:1.42857;color:#2b2b2b;background-color:#fff;background-image:none;border:1px solid #ddd;border-radius:4px;border-top-right-radius:0;border-bottom-right-radius:0;border-right:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;-o-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s}.wf-select-group .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__rendered{color:#2b2b2b;line-height:inherit}.wf-select-group .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow{height:38px}.wf-select-group .wf-form-control{display:inline-block;width:auto;border-top-left-radius:0;border-bottom-left-radius:0;margin-left:0}.wf-flex-horizontal{display:-webkit-flex !important;display:flex !important;-webkit-align-items:center !important;align-items:center !important;-webkit-justify-content:flex-start !important;justify-content:flex-start !important;-webkit-flex-direction:row !important;flex-direction:row !important}.wf-flex-horizontal>*:first-child{-webkit-flex-grow:0 !important;flex-grow:0 !important}.wf-flex-horizontal.wf-flex-align-left{-webkit-align-items:flex-start !important;align-items:flex-start !important}.wf-flex-horizontal.wf-flex-align-right{-webkit-justify-content:flex-end !important;justify-content:flex-end !important}.wf-flex-horizontal.wf-flex-full-width{width:100%}.wf-flex-horizontal.wf-flex-full-width>*:last-child{-webkit-flex-grow:1 !important;flex-grow:1 !important}.wf-flex-horizontal.wf-flex-full-width.wf-flex-grow-first>*:first-child{-webkit-flex-grow:1 !important;flex-grow:1 !important}.wf-flex-horizontal.wf-flex-full-width.wf-flex-grow-first>*:last-child{-webkit-flex-grow:0 !important;flex-grow:0 !important}.wf-flex-horizontal.wf-flex-full-width.wf-flex-grow-all>*:first-child,.wf-flex-horizontal.wf-flex-full-width.wf-flex-grow-all>*{-webkit-flex-grow:1 !important;flex-grow:1 !important}.wf-flex-horizontal>li{padding:0;margin:0}.wf-flex-vertical{display:-webkit-flex !important;display:flex !important;-webkit-align-items:center !important;align-items:center !important;-webkit-justify-content:flex-start !important;justify-content:flex-start !important;-webkit-flex-direction:column !important;flex-direction:column !important}.wf-flex-vertical>*:first-child{-webkit-flex-grow:0 !important;flex-grow:0 !important}.wf-flex-vertical.wf-flex-align-left{-webkit-align-items:flex-start !important;align-items:flex-start !important}.wf-flex-vertical.wf-flex-align-right{-webkit-align-items:flex-end !important;align-items:flex-end !important}.wf-flex-vertical.wf-flex-full-width{-webkit-align-items:stretch !important;align-items:stretch !important}@media (max-width: 767px){.wf-flex-vertical.wf-flex-align-left-xs{-webkit-align-items:flex-start !important;align-items:flex-start !important}}@media (min-width: 768px) and (max-width: 991px){.wf-flex-vertical.wf-flex-align-left-sm{-webkit-align-items:flex-start !important;align-items:flex-start !important}}@media (min-width: 992px) and (max-width: 1199px){.wf-flex-vertical.wf-flex-align-left-md{-webkit-align-items:flex-start !important;align-items:flex-start !important}}@media (min-width: 1200px){.wf-flex-vertical.wf-flex-align-left-lg{-webkit-align-items:flex-start !important;align-items:flex-start !important}}.wf-flex-vertical>li{padding:0;margin:0}@media (max-width: 767px){.wf-flex-vertical-xs{display:-webkit-flex !important;display:flex !important;-webkit-align-items:center !important;align-items:center !important;-webkit-justify-content:flex-start !important;justify-content:flex-start !important;-webkit-flex-direction:column !important;flex-direction:column !important}.wf-flex-vertical-xs>*:first-child{-webkit-flex-grow:0 !important;flex-grow:0 !important}.wf-flex-vertical-xs.wf-flex-align-left{-webkit-align-items:flex-start !important;align-items:flex-start !important}.wf-flex-vertical-xs.wf-flex-align-right{-webkit-align-items:flex-end !important;align-items:flex-end !important}.wf-flex-vertical-xs.wf-flex-full-width{-webkit-align-items:stretch !important;align-items:stretch !important}}ul.wf-option,.wf-form-field{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;flex-wrap:nowrap;padding:1rem 0;position:relative}ul.wf-option li,.wf-form-field li{margin:0;padding:0}ul.wf-option.wf-option-no-spacing,.wf-form-field.wf-option-no-spacing{padding:0;margin:0}ul.wf-option.wf-option-toggled>*:last-child,ul.wf-option.wf-option-footer>*:last-child,.wf-form-field.wf-option-toggled>*:last-child,.wf-form-field.wf-option-footer>*:last-child{margin-right:1rem}@media (max-width: 768px){ul.wf-option.wf-option-footer,.wf-form-field.wf-option-footer{-webkit-flex-direction:column;flex-direction:column}}ul.wf-option>.wf-option-content,.wf-form-field>.wf-option-content{-webkit-flex-grow:1;flex-grow:1}ul.wf-option>.wf-option-content>ul,.wf-form-field>.wf-option-content>ul{display:-webkit-flex;display:flex;-webkit-align-items:flex-start;align-items:flex-start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:column;flex-direction:column;-webkit-flex-wrap:nowrap;flex-wrap:nowrap;width:100%}ul.wf-option>.wf-option-content>ul>*:first-child,.wf-form-field>.wf-option-content>ul>*:first-child{-webkit-flex-grow:1;flex-grow:1}@media (min-width: 768px){ul.wf-option>.wf-option-content>ul,.wf-form-field>.wf-option-content>ul{-webkit-flex-direction:row;flex-direction:row;-webkit-align-items:center;align-items:center}}ul.wf-option.wf-option-toggled-segmented *,.wf-form-field.wf-option-toggled-segmented *{-webkit-flex-grow:0;flex-grow:0}ul.wf-option.wf-option-toggled-segmented *:first-child,.wf-form-field.wf-option-toggled-segmented *:first-child{-webkit-flex-grow:1;flex-grow:1}ul.wf-option.wf-option-toggled-segmented>*:last-child,.wf-form-field.wf-option-toggled-segmented>*:last-child{margin-left:1rem}ul.wf-option.wf-option-toggled-segmented .wf-option-title,.wf-form-field.wf-option-toggled-segmented .wf-option-title{font-size:.8rem}ul.wf-option.wf-option-toggled-segmented .wf-option-segments,.wf-form-field.wf-option-toggled-segmented .wf-option-segments{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-align-content:stretch;align-content:stretch;-webkit-flex-wrap:nowrap;flex-wrap:nowrap}ul.wf-option.wf-option-toggled-segmented .wf-option-segments label,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label{-webkit-flex-grow:1;flex-grow:1;-webkit-flex-basis:50%;flex-basis:50%;display:block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;text-transform:uppercase;padding:.5rem 1.25rem;font-size:14px;line-height:1.42857;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;color:#00709e;background-color:#fff;border-color:#00709e;border-radius:0}ul.wf-option.wf-option-toggled-segmented .wf-option-segments label:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.focus{color:#00709e;background-color:#e6e6e6;border-color:#00161f}ul.wf-option.wf-option-toggled-segmented .wf-option-segments label:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label:hover{color:#00709e;background-color:#e6e6e6;border-color:#004561}ul.wf-option.wf-option-toggled-segmented .wf-option-segments label:active,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.active,.wf-open>ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-dropdown-toggle,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label:active,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.active,.wf-open>.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-dropdown-toggle{color:#00709e;background-color:#e6e6e6;border-color:#004561}ul.wf-option.wf-option-toggled-segmented .wf-option-segments label:active:hover,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label:active:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label:active.focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.active:hover,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.active:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.active.focus,.wf-open>ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-dropdown-toggle:hover,.wf-open>ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-dropdown-toggle:focus,.wf-open>ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-dropdown-toggle.focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label:active:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label:active:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label:active.focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.active:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.active:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.active.focus,.wf-open>.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-dropdown-toggle:hover,.wf-open>.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-dropdown-toggle:focus,.wf-open>.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-dropdown-toggle.focus{color:#00709e;background-color:#d4d4d4;border-color:#00161f}ul.wf-option.wf-option-toggled-segmented .wf-option-segments label:active,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-active,.wf-open>ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-dropdown-toggle,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label:active,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-active,.wf-open>.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-dropdown-toggle{background-image:none}ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-disabled,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label[disabled],ul.wf-option.wf-option-toggled-segmented .wf-option-segments label[readonly],fieldset[disabled] ul.wf-option.wf-option-toggled-segmented .wf-option-segments label,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-disabled,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label[disabled],.wf-form-field.wf-option-toggled-segmented .wf-option-segments label[readonly],fieldset[disabled] .wf-form-field.wf-option-toggled-segmented .wf-option-segments label{color:#777;background-color:#fff;border-color:#e2e2e2;cursor:not-allowed}ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-disabled:hover,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-disabled:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-disabled.wf-focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label[disabled]:hover,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label[disabled]:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label[disabled].wf-focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label[readonly]:hover,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label[readonly]:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label[readonly].wf-focus,fieldset[disabled] ul.wf-option.wf-option-toggled-segmented .wf-option-segments label:hover,fieldset[disabled] ul.wf-option.wf-option-toggled-segmented .wf-option-segments label:focus,fieldset[disabled] ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-disabled:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-disabled:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-disabled.wf-focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label[disabled]:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label[disabled]:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label[disabled].wf-focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label[readonly]:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label[readonly]:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label[readonly].wf-focus,fieldset[disabled] .wf-form-field.wf-option-toggled-segmented .wf-option-segments label:hover,fieldset[disabled] .wf-form-field.wf-option-toggled-segmented .wf-option-segments label:focus,fieldset[disabled] .wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-focus{background-color:#fff;border-color:#00709e}ul.wf-option.wf-option-toggled-segmented .wf-option-segments label .wf-badge,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label .wf-badge{color:#fff;background-color:#00709e}ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-segment-first,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-segment-first{border-radius:4px 0 0 4px}ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-segment-last,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-segment-last{border-radius:0 4px 4px 0}ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio],.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]{position:absolute;left:-9999px}ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label{color:#fff;background-color:#00709e;border-color:#005e85}ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.focus{color:#fff;background-color:#004c6b;border-color:#000405}ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:hover{color:#fff;background-color:#004c6b;border-color:#003347}ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:active,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.active,.wf-open>ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-dropdown-toggle,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:active,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.active,.wf-open>.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-dropdown-toggle{color:#fff;background-color:#004c6b;border-color:#003347}ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:active:hover,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:active:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:active.focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.active:hover,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.active:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.active.focus,.wf-open>ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-dropdown-toggle:hover,.wf-open>ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-dropdown-toggle:focus,.wf-open>ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-dropdown-toggle.focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:active:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:active:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:active.focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.active:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.active:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.active.focus,.wf-open>.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-dropdown-toggle:hover,.wf-open>.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-dropdown-toggle:focus,.wf-open>.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-dropdown-toggle.focus{color:#fff;background-color:#003347;border-color:#000405}ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:active,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-active,.wf-open>ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-dropdown-toggle,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:active,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-active,.wf-open>.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-dropdown-toggle{background-image:none}ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-disabled,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[disabled],ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[readonly],fieldset[disabled] ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-disabled,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[disabled],.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[readonly],fieldset[disabled] .wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label{color:#fff;background-color:#59a2c0;border-color:#5996b0;cursor:not-allowed}ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-disabled:hover,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-disabled:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-disabled.wf-focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[disabled]:hover,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[disabled]:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[disabled].wf-focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[readonly]:hover,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[readonly]:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[readonly].wf-focus,fieldset[disabled] ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:hover,fieldset[disabled] ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:focus,fieldset[disabled] ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-disabled:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-disabled:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-disabled.wf-focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[disabled]:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[disabled]:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[disabled].wf-focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[readonly]:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[readonly]:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[readonly].wf-focus,fieldset[disabled] .wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:hover,fieldset[disabled] .wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:focus,fieldset[disabled] .wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-focus{background-color:#00709e;border-color:#005e85}ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label .wf-badge,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label .wf-badge{color:#00709e;background-color:#fff}ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:disabled+label,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:disabled+label{cursor:not-allowed;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=65);opacity:.65}ul.wf-option.wf-option-toggled-multiple>.wf-option-content>ul,.wf-form-field.wf-option-toggled-multiple>.wf-option-content>ul{-webkit-flex-direction:column;flex-direction:column;-webkit-align-items:flex-start;align-items:flex-start}ul.wf-option>.wf-option-spacer,.wf-form-field>.wf-option-spacer{-webkit-flex-grow:0;flex-grow:0;-webkit-flex-shrink:0;flex-shrink:0;margin:0 1rem 0 0;width:30px;height:30px}@media (min-width: 768px){ul.wf-option>.wf-option-spacer,.wf-form-field>.wf-option-spacer{margin:0 2rem 0 1rem;width:20px;height:20px}}ul.wf-option>.wf-option-premium-lock,.wf-form-field>.wf-option-premium-lock{-webkit-flex-grow:0;flex-grow:0;-webkit-flex-shrink:0;flex-shrink:0;background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIzMHB4IiB2aWV3Qm94PSIwIDAgMjQgMzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KCTxwYXRoIGQ9Ik0yMy45NDksMTQuMjMzYy0wLjM3OSwtMC4zOSAtMC45MDQsLTAuNjA2IC0xLjQ0OCwtMC41OTVsLTAuNjgzLDBsMCwtNC4wOTJjMC4wMzIsLTIuNTM1IC0wLjk4NiwtNC45NzMgLTIuODEyLC02LjczMWMtMS43NTksLTEuODI4IC00LjE5OCwtMi44NDcgLTYuNzM0LC0yLjgxNWMtMi41MzYsLTAuMDMyIC00Ljk3NiwwLjk4NyAtNi43MzQsMi44MTVjLTEuODI2LDEuNzU4IC0yLjg0NCw0LjE5NiAtMi44MTIsNi43MzFsMCw0LjA4OWwtMC42OCwwYy0wLjU0NCwtMC4wMTEgLTEuMDY5LDAuMjA1IC0xLjQ0OCwwLjU5NWMtMC4zOTUsMC4zODIgLTAuNjEyLDAuOTEyIC0wLjU5OCwxLjQ2MWwwLDEyLjI2NmMtMC4wMTEsMC41NDQgMC4yMDQsMS4wNjkgMC41OTUsMS40NDhjMC4zNzksMC4zOTEgMC45MDQsMC42MDYgMS40NDgsMC41OTVsMjAuNDU4LDBjMC4wMDMsMCAwLjAwNiwwIDAuMDEsMGMxLjExNywwIDIuMDM2LC0wLjkxOSAyLjAzNiwtMi4wMzdjMCwtMC4wMDMgMCwtMC4wMDYgMCwtMC4wMDlsMCwtMTIuMjYzYzAuMDExLC0wLjU0NCAtMC4yMDYsLTEuMDY5IC0wLjU5OCwtMS40NDhsMCwtMC4wMVptLTYuMjExLC0wLjU5NWwtMTAuOTE5LDBsMCwtNC4wOTJjLTAuMDIyLC0xLjQ1MSAwLjU1NywtMi44NDggMS41OTksLTMuODU4YzEuMDA5LC0xLjA0MiAyLjQwNywtMS42MjEgMy44NTcsLTEuNTk4YzEuNDUxLC0wLjAyMyAyLjg0OCwwLjU1NiAzLjg1OCwxLjU5OGMxLjA0MiwxLjAwOSAxLjYyMSwyLjQwNyAxLjU5OCwzLjg1OGwwLjAwNyw0LjA5MloiIGZpbGw9IiNkMWQxZDEiLz4KPC9zdmc+");background-repeat:no-repeat;background-position:center center;background-size:contain;margin:0 1rem 0 0;width:30px;height:30px}@media (min-width: 768px){ul.wf-option>.wf-option-premium-lock,.wf-form-field>.wf-option-premium-lock{margin:0 2rem 0 1rem;width:20px;height:20px}}ul.wf-option>.wf-option-checkbox,.wf-form-field>.wf-option-checkbox{-webkit-flex-grow:0;flex-grow:0;-webkit-flex-shrink:0;flex-shrink:0;margin:0 1rem 0 0}@media (min-width: 768px){ul.wf-option>.wf-option-checkbox,.wf-form-field>.wf-option-checkbox{margin:0 2rem 0 1rem}}ul.wf-option>.wf-boolean-switch,.wf-form-field>.wf-boolean-switch{-webkit-flex-grow:0;flex-grow:0;-webkit-flex-shrink:0;flex-shrink:0;margin:0 1rem 0 0}@media (min-width: 768px){ul.wf-option>.wf-boolean-switch,.wf-form-field>.wf-boolean-switch{margin:0 1rem 0 1rem}}ul.wf-option.wf-option-no-spacing>.wf-boolean-switch,.wf-form-field.wf-option-no-spacing>.wf-boolean-switch{margin:0}ul.wf-option>.wf-option-radio-container,.wf-form-field>.wf-option-radio-container{-webkit-flex-grow:0;flex-grow:0;-webkit-flex-shrink:0;flex-shrink:0;margin:0 1rem 0 0}@media (min-width: 768px){ul.wf-option>.wf-option-radio-container,.wf-form-field>.wf-option-radio-container{margin:0 2rem 0 1rem}}ul.wf-option>.wf-option-radio-container [type=radio].wf-option-radio+label:before,.wf-form-field>.wf-option-radio-container [type=radio].wf-option-radio+label:before{margin:0}ul.wf-option>li>.wf-option-title,ul.wf-option>.wf-option-title,ul.wf-option>.wf-option-content>ul>.wf-option-title,.wf-form-field>li>.wf-option-title,.wf-form-field>.wf-option-title,.wf-form-field>.wf-option-content>ul>.wf-option-title{font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:0.9rem;color:#2b2b2b;padding-right:0.5rem}ul.wf-option>li>.wf-option-title.wf-option-title-top,ul.wf-option>.wf-option-title.wf-option-title-top,ul.wf-option>.wf-option-content>ul>.wf-option-title.wf-option-title-top,.wf-form-field>li>.wf-option-title.wf-option-title-top,.wf-form-field>.wf-option-title.wf-option-title-top,.wf-form-field>.wf-option-content>ul>.wf-option-title.wf-option-title-top{-webkit-align-self:flex-start;align-self:flex-start}ul.wf-option>li>.wf-option-title.wf-option-title-bottom,ul.wf-option>.wf-option-title.wf-option-title-bottom,ul.wf-option>.wf-option-content>ul>.wf-option-title.wf-option-title-bottom,.wf-form-field>li>.wf-option-title.wf-option-title-bottom,.wf-form-field>.wf-option-title.wf-option-title-bottom,.wf-form-field>.wf-option-content>ul>.wf-option-title.wf-option-title-bottom{-webkit-align-self:flex-end;align-self:flex-end}ul.wf-option .wf-option-subtitle,.wf-form-field .wf-option-subtitle{padding-top:0.25rem;font-size:0.75rem}ul.wf-option .wf-flex-vertical .wf-option-title,.wf-form-field .wf-flex-vertical .wf-option-title{padding-bottom:0.75rem}ul.wf-option.wf-flex-vertical>.wf-option-subtitle,.wf-form-field.wf-flex-vertical>.wf-option-subtitle{padding-top:0.25rem !important;font-size:0.75rem !important}ul.wf-option .wf-option-checkboxes,ul.wf-option .wf-option-checkboxes>ul,.wf-form-field .wf-option-checkboxes,.wf-form-field .wf-option-checkboxes>ul{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;flex-wrap:nowrap}ul.wf-option .wf-option-checkboxes,.wf-form-field .wf-option-checkboxes{margin-top:1rem}ul.wf-option .wf-option-checkboxes>ul,.wf-form-field .wf-option-checkboxes>ul{margin-left:1rem}@media (min-width: 768px){ul.wf-option .wf-option-checkboxes>ul,.wf-form-field .wf-option-checkboxes>ul{margin-left:1.5rem}}ul.wf-option .wf-option-checkboxes>ul:first-of-type,.wf-form-field .wf-option-checkboxes>ul:first-of-type{margin-left:0}ul.wf-option .wf-option-checkboxes>ul>.wf-option-checkbox,.wf-form-field .wf-option-checkboxes>ul>.wf-option-checkbox{margin:0 1rem 0 0}ul.wf-option li.wf-option-text,ul.wf-option li.wf-option-textarea,ul.wf-option td.wf-option-text,.wf-form-field li.wf-option-text,.wf-form-field li.wf-option-textarea,.wf-form-field td.wf-option-text{padding-top:0.5rem}@media (min-width: 768px){ul.wf-option li.wf-option-text,ul.wf-option li.wf-option-textarea,ul.wf-option td.wf-option-text,.wf-form-field li.wf-option-text,.wf-form-field li.wf-option-textarea,.wf-form-field td.wf-option-text{-webkit-flex-grow:1;flex-grow:1;text-align:right;padding-left:1rem;padding-top:0}}ul.wf-option li.wf-option-text>input[type="text"],.wf-form-field li.wf-option-text>input[type="text"]{max-width:240px}@media (min-width: 768px){ul.wf-option li.wf-option-text>input[type="text"],.wf-form-field li.wf-option-text>input[type="text"]{max-width:280px}}@media (min-width: 992px){ul.wf-option li.wf-option-text>input[type="text"],.wf-form-field li.wf-option-text>input[type="text"]{max-width:340px}}ul.wf-option li.wf-option-text.wf-option-full-width>input[type="text"],.wf-form-field li.wf-option-text.wf-option-full-width>input[type="text"]{max-width:100%;width:100%}ul.wf-option li.wf-option-textarea,.wf-form-field li.wf-option-textarea{min-width:150px;max-width:240px}@media (min-width: 768px){ul.wf-option li.wf-option-textarea,.wf-form-field li.wf-option-textarea{min-width:200px;max-width:400px}}@media (min-width: 992px){ul.wf-option li.wf-option-textarea,.wf-form-field li.wf-option-textarea{min-width:250px;max-width:500px}}ul.wf-option li.wf-option-textarea>textarea,.wf-form-field li.wf-option-textarea>textarea{width:100%;height:80px;min-width:150px;max-width:240px}@media (min-width: 768px){ul.wf-option li.wf-option-textarea>textarea,.wf-form-field li.wf-option-textarea>textarea{min-width:200px;max-width:280px}}@media (min-width: 992px){ul.wf-option li.wf-option-textarea>textarea,.wf-form-field li.wf-option-textarea>textarea{min-width:250px;max-width:340px}}ul.wf-option li.wf-option-textarea>.wf-flex-vertical>li>textarea,.wf-form-field li.wf-option-textarea>.wf-flex-vertical>li>textarea{width:100%;height:80px;box-sizing:border-box}ul.wf-option li.wf-option-textarea>.wf-flex-vertical>li.wf-option-subtitle,.wf-form-field li.wf-option-textarea>.wf-flex-vertical>li.wf-option-subtitle{width:100%;text-align:left}ul.wf-option li.wf-option-switch,.wf-form-field li.wf-option-switch{-webkit-flex-grow:1;flex-grow:1}ul.wf-option li.wf-option-switch.wf-right .wf-switch,.wf-form-field li.wf-option-switch.wf-right .wf-switch{justify-content:flex-end !important}ul.wf-option li.wf-option-select,.wf-form-field li.wf-option-select{-webkit-flex-grow:1;flex-grow:1;text-align:right}ul.wf-option li.wf-option-select select,ul.wf-option li.wf-option-select select option,ul.wf-option li.wf-option-select .wfselect2-container--default,.wf-form-field li.wf-option-select select,.wf-form-field li.wf-option-select select option,.wf-form-field li.wf-option-select .wfselect2-container--default{font-size:0.7rem;font-weight:bold}@media (min-width: 768px){ul.wf-option li.wf-option-select select,ul.wf-option li.wf-option-select select option,ul.wf-option li.wf-option-select .wfselect2-container--default,.wf-form-field li.wf-option-select select,.wf-form-field li.wf-option-select select option,.wf-form-field li.wf-option-select .wfselect2-container--default{font-size:0.8rem}}@media (min-width: 992px){ul.wf-option li.wf-option-select select,ul.wf-option li.wf-option-select select option,ul.wf-option li.wf-option-select .wfselect2-container--default,.wf-form-field li.wf-option-select select,.wf-form-field li.wf-option-select select option,.wf-form-field li.wf-option-select .wfselect2-container--default{font-size:0.9rem}}ul.wf-option li.wf-option-select .wf-option-select-option,ul.wf-option li.wf-option-select .wfselect2-container--default,ul.wf-option li.wf-option-select .wfselect2-container--default .wfselect2-selection--single,.wf-form-field li.wf-option-select .wf-option-select-option,.wf-form-field li.wf-option-select .wfselect2-container--default,.wf-form-field li.wf-option-select .wfselect2-container--default .wfselect2-selection--single{text-align:left;height:40px;border-radius:0;border:0;background-color:#fff;box-shadow:1px 1px 1px 2px rgba(215,215,215,0.35)}ul.wf-option li.wf-option-select .wf-option-select-option .wfselect2-selection__rendered,ul.wf-option li.wf-option-select .wfselect2-container--default .wfselect2-selection__rendered,ul.wf-option li.wf-option-select .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__rendered,.wf-form-field li.wf-option-select .wf-option-select-option .wfselect2-selection__rendered,.wf-form-field li.wf-option-select .wfselect2-container--default .wfselect2-selection__rendered,.wf-form-field li.wf-option-select .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__rendered{color:#333;line-height:40px}ul.wf-option li.wf-option-select .wf-option-select-option .wfselect2-selection__arrow,ul.wf-option li.wf-option-select .wfselect2-container--default .wfselect2-selection__arrow,ul.wf-option li.wf-option-select .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow,.wf-form-field li.wf-option-select .wf-option-select-option .wfselect2-selection__arrow,.wf-form-field li.wf-option-select .wfselect2-container--default .wfselect2-selection__arrow,.wf-form-field li.wf-option-select .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow{height:38px}ul.wf-option li.wf-option-select .wf-option-select-option.wfselect2-container--disabled .wfselect2-selection__rendered,ul.wf-option li.wf-option-select .wfselect2-container--default.wfselect2-container--disabled .wfselect2-selection__rendered,ul.wf-option li.wf-option-select .wfselect2-container--default .wfselect2-selection--single.wfselect2-container--disabled .wfselect2-selection__rendered,.wf-form-field li.wf-option-select .wf-option-select-option.wfselect2-container--disabled .wfselect2-selection__rendered,.wf-form-field li.wf-option-select .wfselect2-container--default.wfselect2-container--disabled .wfselect2-selection__rendered,.wf-form-field li.wf-option-select .wfselect2-container--default .wfselect2-selection--single.wfselect2-container--disabled .wfselect2-selection__rendered{color:#aaa}ul.wf-option li.wf-option-select .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow b,.wf-form-field li.wf-option-select .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow b{border-color:#333 transparent transparent}ul.wf-option li.wf-option-select .wfselect2-container--default.wfselect2-container--open .wfselect2-selection--single .wfselect2-selection__arrow b,.wf-form-field li.wf-option-select .wfselect2-container--default.wfselect2-container--open .wfselect2-selection--single .wfselect2-selection__arrow b{border-color:transparent transparent #333}ul.wf-option.wf-option-token select,.wf-form-field.wf-option-token select{width:240px}@media (min-width: 768px){ul.wf-option.wf-option-token select,.wf-form-field.wf-option-token select{width:280px}}@media (min-width: 992px){ul.wf-option.wf-option-token select,.wf-form-field.wf-option-token select{width:320px}}ul.wf-option.wf-option-token .wfselect2-container--default,ul.wf-option.wf-option-token .wfselect2-container--default .wfselect2-selection--multiple,.wf-form-field.wf-option-token .wfselect2-container--default,.wf-form-field.wf-option-token .wfselect2-container--default .wfselect2-selection--multiple{border-color:#e2e2e2}ul.wf-option.wf-option-token .wfselect2-container--default .wfselect2-selection__choice,ul.wf-option.wf-option-token .wfselect2-container--default .wfselect2-selection--multiple .wfselect2-selection__choice,.wf-form-field.wf-option-token .wfselect2-container--default .wfselect2-selection__choice,.wf-form-field.wf-option-token .wfselect2-container--default .wfselect2-selection--multiple .wfselect2-selection__choice{background-color:#fff;border-color:#e2e2e2;padding:0.5rem}ul.wf-option.wf-option-token .wfselect2-container--default .wfselect2-search__field,ul.wf-option.wf-option-token .wfselect2-container--default .wfselect2-selection--multiple .wfselect2-search__field,.wf-form-field.wf-option-token .wfselect2-container--default .wfselect2-search__field,.wf-form-field.wf-option-token .wfselect2-container--default .wfselect2-selection--multiple .wfselect2-search__field{margin-right:5px;margin-top:5px;padding:0.5rem 0}.wf-option-sub{padding-left:2rem !important;margin-left:30px !important}.wf-select2-suppress-dropdown .wfselect2-results,.wf-select2-suppress-dropdown .wfselect2-dropdown{display:none}.wf-options-controls{direction:ltr;background:#ffffff;border-bottom:1px solid #e2e2e2;position:absolute;left:160px;right:0px;top:46px;z-index:900;padding-left:15px;padding-right:15px}@media (min-width: 616px){.wf-options-controls{position:fixed}}.wf-options-controls .wf-block{margin:0}@media (min-width: 782px){.wf-options-controls .wf-block{margin:0.5rem 0}}.wf-options-controls,.sticky-menu .wf-options-controls{top:32px}.folded .wf-options-controls{left:36px}@media only screen and (max-width: 960px){.auto-fold .wf-options-controls{left:36px}}.rtl .wf-options-controls{right:160px;left:0px}.rtl .folded .wf-options-controls{right:36px}@media only screen and (max-width: 960px){.rtl .auto-fold .wf-options-controls{right:36px}}@media screen and (max-width: 782px){.wf-options-controls,.folded .wf-options-controls,.auto-fold .wf-options-controls,.rtl .wf-options-controls,.rtl .folded .wf-options-controls,.rtl .auto-fold .wf-options-controls{left:-10px;right:0px}}.wf-options-controls-spacer{height:45px}@media (min-width: 782px){.wf-options-controls-spacer{height:75px}}.wf-options-controls-spacer,.sticky-menu .wf-options-controls-spacer{top:61px}.wordfence .wfselect2-container .wfselect2-selection--single{border:1px solid #dadada;font-weight:normal;font-size:0.8rem}#wf-notices{margin-top:15px}#wf-notices .wf-admin-notice{margin-left:0px;margin-right:0px}.wf-success-text,.wf-notice-text{display:inline-block;vertical-align:middle;line-height:1.3;font-size:16px;font-weight:bold;font-style:italic}.wf-notice{margin:12px 0;padding:8px;background-color:#ffffe0;border:1px solid #ffd975;border-width:1px 1px 1px 10px}.wf-notice-text{color:#6d798c}.wf-success{margin:12px 0;padding:8px;background-color:#ffffff;border:1px solid #16bc9b;border-width:1px 1px 1px 10px}.wf-success-text{color:#11967a}.wf-premium-callout{border:1px solid #dfdfdf;background-color:#ffffff;padding:16px;margin:20px 0 0;text-align:center}.wf-premium-callout ul{margin:8px 0;padding:0 0 0 15px}.wf-premium-callout ul li{list-style-type:disc;margin:0;padding:0}.wf-premium-callout .center{text-align:center;margin:0}.wf-premium-callout .button-primary{text-align:center;text-transform:uppercase;font-weight:bold;background-color:#00709e}#wfLiveTrafficOverlayAnchor::after{position:absolute;z-index:3002;top:0;right:0;width:0;height:0;background:rgba(241,241,241,0.6);content:'';opacity:0;-webkit-transition:opacity 0.5s,width 0.1s 0.5s,height 0.1s 0.5s;-o-transition:opacity 0.5s,width 0.1s 0.5s,height 0.1s 0.5s;transition:opacity 0.5s,width 0.1s 0.5s,height 0.1s 0.5s}.wordfenceLiveActivityPaused #wfLiveTrafficOverlayAnchor::after{width:100%;height:100%;opacity:1;-webkit-transition:opacity 0.5s;-o-transition:opacity 0.5s;transition:opacity 0.5s}#wordfenceLiveActivitySecurityOnly,#wordfenceLiveActivityAll{background:#fff;border-left:4px solid #00709e;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);margin-bottom:0.5rem;padding:1px 13px}#wfLiveTrafficDisabledMessage{display:none;position:fixed;z-index:3003;left:0;width:100%;top:50%;transform:translateY(-50%);text-align:center;color:#666666;opacity:0;-webkit-transition:opacity 0.5s,width 0.1s 0.5s,height 0.1s 0.5s;-o-transition:opacity 0.5s,width 0.1s 0.5s,height 0.1s 0.5s;transition:opacity 0.5s,width 0.1s 0.5s,height 0.1s 0.5s}#wfLiveTrafficDisabledMessage h2{background-color:#00709e;color:#fff;overflow:hidden;max-width:350px;margin:0 auto;padding:20px;font-size:2.0em}#wfLiveTrafficDisabledMessage h2 small{font-size:0.5em;font-weight:normal;margin-top:12px;display:block}.wordfenceLiveActivityPaused #wfLiveTrafficDisabledMessage{display:block;opacity:1;-webkit-transition:opacity 0.5s;transition:opacity 0.5s}.wf-live-activity{position:relative;margin:20px 0 10px 0;padding:0.75rem;box-sizing:border-box;background:#FFFCEF;box-shadow:0 0 0 1px rgba(153,155,135,0.5),0 1px 2px #e8f3e0}.wf-live-activity .wf-live-activity-inner{width:100%;box-sizing:border-box;position:relative}.wf-live-activity .wf-live-activity-inner .wf-live-activity-content{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:flex-start}.wf-live-activity .wf-live-activity-inner .wf-live-activity-content .wf-live-activity-title{color:#888888;font-size:0.85rem;font-weight:bold;padding-right:0.5rem}.wf-live-activity .wf-live-activity-inner .wf-live-activity-content .wf-live-activity-message{font-size:0.80rem;color:#000000}.wf-live-activity .wf-live-activity-inner .wf-live-activity-state{position:absolute;top:0px;right:0px;bottom:0px;left:0px;background:rgba(255,252,239,0.9);display:none;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:center;z-index:3001;-webkit-transition:opacity 0.5s,width 0.1s 0.5s,height 0.1s 0.5s;-o-transition:opacity 0.5s,width 0.1s 0.5s,height 0.1s 0.5s;transition:opacity 0.5s,width 0.1s 0.5s,height 0.1s 0.5s}.wordfenceLiveActivityPaused .wf-live-activity .wf-live-activity-inner .wf-live-activity-state{display:-ms-flexbox;display:flex;opacity:1;-webkit-transition:opacity 0.5s;-webkit-transition:opacity 0.5s;-o-transition:opacity 0.5s;transition:opacity 0.5s}.wordfence .wordfenceScanButton{margin:20px 0 20px 0}.wordfence .wordfenceScanButton input.button-wf-grey{background:#EFEFEF url(../images/button-grad-grey.png) repeat-x scroll left top;border-color:#EFEFEF}.wordfence .wordfenceScanButton table td{vertical-align:top}.wordfence .wordfenceScanButton .button-primary{text-align:center;text-transform:uppercase;font-weight:bold;background-color:#00709E;height:44px;line-height:44px;padding:0px 20px}table.wfSummaryParent{font-family:sans-serif;font-size:14px;color:#000;z-index:9}table.wfSummaryParent td{vertical-align:top;padding:0;margin:0}table.wfSummaryParent table.wfSummaryChild th{font-weight:bold;text-align:right;font-family:Georgia,Times New Roman,Times,serif;color:#000;padding:5px 10px 5px 0;border-top:1px solid #CCC}table.wfSummaryParent table.wfSummaryChild td{font-weight:normal;text-align:left;padding:5px 0 5px 0;border-top:1px solid #CCC}table.wfSummaryParent table.wfSC1 td{width:300px;padding:0 25px 10px 0}table.wfSummaryParent table.wfSC2 th{width:80px}table.wfSummaryParent table.wfSC2 td{width:100px}table.wfSummaryParent table.wfSC3 th{width:80px}table.wfSummaryParent table.wfSC3 td{width:250px}table.wfSummaryParent th.wfHead{font-size:22px;font-family:Georgia,Times New Roman,Times,serif;font-style:italic;color:#555;font-weight:bold;text-align:left;padding:20px 0 20px 0;-webkit-font-smoothing:antialiased}.wf-issues-table{table-layout:fixed;width:100%}div.wfIssue{width:100%}div.wfIssue table.wfIssue td{padding:2px;margin:0;border-width:0;text-align:left;width:100%}div.wfIssue table.wfIssue th{padding:2px;margin:0;font-weight:bold;text-align:left;color:#777;white-space:nowrap}div.wfIssue table.wfIssueLinks td{border-width:0;text-align:left;padding-right:10px}div.wfIssue h2{margin:0 0 5px 0;padding:0;font-size:0.9rem}@media (min-width: 768px){div.wfIssue h2{font-size:1.05rem}}.wfIssueOptions{border-top:1px solid #CCC;padding:10px}.wfIssueOptions h3{font-size:0.8rem;margin:0}@media (min-width: 768px){.wfIssueOptions h3{display:inline-block}}.wfIssueOptions ul{margin-bottom:0;padding-left:0;list-style:none;display:-webkit-flex;display:flex;-webkit-align-items:flex-start;align-items:flex-start;-webkit-align-content:flex-start;align-content:flex-start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-flex-direction:column;flex-direction:column}@media (min-width: 768px){.wfIssueOptions ul{-webkit-flex-direction:row;flex-direction:row;-webkit-align-items:center;align-items:center}}.wfIssueOptions ul>li>a{position:relative;display:block;padding:8px 12px/2}.wfIssueOptions ul>li>a:hover,.wfIssueOptions ul>li>a:focus{text-decoration:none;background-color:#e2e2e2}.wfIssueOptions a{margin-left:10px}.wfIssueOptions strong{float:left;display:block;width:60px}.wfIssueOptions p{margin:6px 0px 0px}.wfProbSev1,.wfProbSev2,.wfAjaxLight128,.wfResolved{width:128px;height:128px;border:0;margin:0 auto;background-repeat:no-repeat;background-position:0 0;text-decoration:none;display:block}.wfProbSev1{background-image:url(../images/icons/error128.png)}.wfProbSev2{background-image:url(../images/icons/warning128.png)}.wfResolved{background-image:url(../images/icons/tick128.png)}.wfIssuesContainer{width:100%;display:none}.wfIssuesContainer p{max-width:550px}.wfALogTime{color:#999}.wfALogMailLink,.wfALogViewLink{display:block;position:absolute;padding:0 0 0 18px;margin:0;right:10px;top:0;background-repeat:no-repeat;font-weight:normal}.wfALogMailLink{background-image:url(../images/icons/email_go.png)}.wfALogViewLink{background-image:url(../images/icons/magnifier.png)}#wfActivity{position:relative}.consoleHead{position:relative;padding:0 0 0 3px;font-weight:bold;width:100%}.consoleHeadText{margin-bottom:4px;font-size:18px;font-family:Georgia,Times New Roman,Times,serif;color:#555;font-weight:bold;-webkit-font-smoothing:antialiased}.consoleFooter{position:relative}.consoleOuter{width:100%}.consoleInner{height:116px;overflow:auto;z-index:1}.bevelDiv1{border:1px solid #EFEFEF}.bevelDiv2{border:1px solid #AAA}.bevelDiv3{background-color:#ffffed;padding:5px;font-family:Roboto,Helvetica Neue,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased}.wfSecure{color:#0A0;font-weight:bold}.wfSummaryLine{display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-align-content:flex-start;align-content:flex-start;-webkit-justify-content:space-between;justify-content:space-between;-webkit-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-flex-direction:column;flex-direction:column}@media (min-width: 768px){.wfSummaryLine{-webkit-flex-direction:row;flex-direction:row}}.wfSummaryLine .wfSummaryDate{padding-left:3px}.wfSummaryLine .wfSummaryMsg{padding-left:3px;-webkit-flex-grow:1;flex-grow:1;min-width:0}.wfSummaryLoading{width:16px;height:11px;background-image:url("../images/icons/ajaxScan.gif")}.wfSummaryBad,.wfSummaryErr{color:#930000}.wfSummaryOK{color:#11967a}.wfSummaryIgnored{color:#a87302}.wfClear{content:".";display:block;height:0;width:0;line-height:0;clear:both;visibility:hidden}.wfSummaryFinal{-webkit-font-smoothing:antialiased;font-weight:bold;color:#555}.wfStartScanButton{text-align:center}.wordfenceScanHelp{border:1px solid #CCC;padding:4px}.wf-scan-no-issues{font-size:1.25rem;color:#11967a}.wf-scan-severity{position:relative;width:10px}@media (min-width: 768px){.wf-scan-severity{width:144px}}.wf-scan-severity-1,.wf-scan-severity-2{position:absolute;top:0px;right:0px;bottom:0px;left:0px}.wf-scan-severity-1{background-color:#c10000}.wf-scan-severity-2{background-color:#ffd10a}.scan-schedule{border-collapse:collapse;border-spacing:0}.scan-schedule tr:first-of-type th{padding-top:0}.scan-schedule td{padding:0}.scan-schedule th{padding:1.5rem 0.5rem 0.75rem 0;font-size:1rem;text-align:left}@media (min-width: 768px){.scan-schedule th{padding:0 0.5rem 0 0;font-size:0.8125rem;text-align:center}}.next-scan{font-size:1em;display:block;position:relative;width:7em;height:7em;background-color:#fff;border-radius:0.6em;box-shadow:0 1px 0 rgba(189,189,189,0.6);overflow:hidden}.next-scan *{display:block;width:100%;font-size:1em;font-weight:bold;font-style:normal;text-align:center}.next-scan strong{position:absolute;top:0;padding:0.4em 0;color:#fff;background-color:#00709E;box-shadow:0 2px 0 #00709E}.next-scan em{position:absolute;bottom:0.3em;color:#00709E}.next-scan span{width:100%;font-size:2.8em;padding-top:1.15em;color:#2f2f2f}#wf-lt-listings .wfActEvent{padding-left:15px;border-left:5px solid #cccccc}#wf-lt-listings .wfActEvent.wfHuman{border-left:5px solid #16bc9b}#wf-lt-listings .wfActEvent.wfActionBlocked{border-left:5px solid #d03935}#wf-lt-listings .wfActEvent.wfNotice{border-left:5px solid #c10000}#wf-lt-listings .wfActEvent.wfWarning,#wf-lt-listings .wfActEvent.wf404,#wf-lt-listings .wfActEvent.wfFailedLogin{border-left:5px solid #ffd10a}#wf-lt-listings .wfActEvent:hover{background-color:#fff9e9 !important}.wf-live-traffic-controls{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:column;flex-direction:column;width:100%;margin-bottom:0}.wf-live-traffic-controls>*:first-child{-webkit-flex-grow:1;flex-grow:1}.wf-live-traffic-controls>*:last-child{-webkit-flex-grow:0;flex-grow:0}@media (min-width: 768px){.wf-live-traffic-controls{-webkit-flex-direction:row;flex-direction:row}}.wf-live-traffic-filter{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-align-content:flex-start;align-content:flex-start;-webkit-justify-content:flex-start;justify-content:flex-start}@media (min-width: 768px){.wf-live-traffic-filter{-webkit-flex-direction:row;flex-direction:row}}.wf-live-traffic-filter>*{padding:0.5rem}.wf-live-traffic-filter h2{margin:0;padding-bottom:0.5rem}@media (min-width: 768px){.wf-live-traffic-filter h2{padding-bottom:0;padding-right:0.5rem}}.wf-live-traffic-show-expanded{text-align:right;padding:0.5rem}@media (max-width: 1330px){.wf-live-traffic-show-expanded{display:none}}#wf-lt-advanced-filters{padding-left:0;padding-right:0;overflow:hidden}.wf-live-traffic-filter-detail{display:-webkit-flex;display:flex;-webkit-align-items:flex-start;align-items:flex-start;-webkit-align-content:flex-start;align-content:flex-start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:column;flex-direction:column}@media (min-width: 768px){.wf-live-traffic-filter-detail{-webkit-flex-direction:row;flex-direction:row}.wf-live-traffic-filter-detail *{-webkit-flex-grow:1;flex-grow:1}}.wf-live-traffic-filter-detail .wf-live-traffic-filter-item{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-align-content:flex-start;align-content:flex-start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:row;flex-direction:row}.wf-live-traffic-filter-detail .wf-live-traffic-filter-item .wf-live-traffic-filter-remove{margin-left:0.5rem;font-size:1.5rem;color:#333}.wf-live-traffic-filter-detail .wf-live-traffic-filter-item .wf-live-traffic-filter-item-parameters{display:-webkit-flex;display:flex;-webkit-align-items:flex-start;align-items:flex-start;-webkit-align-content:flex-start;align-content:flex-start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:column;flex-direction:column}.wf-live-traffic-filter-detail .wf-live-traffic-filter-item .wf-live-traffic-filter-item-parameters div{padding:0.25rem 0}.wf-live-traffic-filter-detail .wf-live-traffic-filter-item .wf-live-traffic-filter-item-parameters select{font-size:0.75rem !important}@media (min-width: 768px){.wf-live-traffic-filter-detail .wf-live-traffic-filter-item .wf-live-traffic-filter-item-parameters{-webkit-flex-direction:row;flex-direction:row;-webkit-align-items:center;align-items:center}.wf-live-traffic-filter-detail .wf-live-traffic-filter-item .wf-live-traffic-filter-item-parameters div{padding:0}.wf-live-traffic-filter-detail .wf-live-traffic-filter-item .wf-live-traffic-filter-item-parameters select{font-size:1rem !important}}.wf-filtered-traffic .wf-filtered-traffic-hits{font-size:1.75rem;color:#999999;margin-top:10px}#wf-live-traffic{position:relative;overflow:visible}#wf-live-traffic-legend{white-space:nowrap;background-color:#fff;padding:0.75rem 0px;position:fixed;width:320px;height:17px;top:auto;bottom:0px;right:auto;left:10px;z-index:2000;box-shadow:0px 0px 5px rgba(0,0,0,0.5);padding-left:1rem}@media (min-width: 768px){#wf-live-traffic-legend{left:182px}}@media (max-width: 1330px){#wf-live-traffic-legend{display:none}}#wf-live-traffic-legend-placeholder{display:none;padding:12px}#wf-live-traffic-legend-placeholder.sticky{display:block}#wf-live-traffic-legend ul{margin:0;padding:0}#wf-live-traffic-legend ul:before,#wf-live-traffic-legend ul:after{content:" ";display:table}#wf-live-traffic-legend ul:after{clear:both}#wf-live-traffic-legend ul li{margin:0 1rem 0 0;padding:0;position:relative;float:left;font-size:0.7185rem}@media (min-width: 768px){#wf-live-traffic-legend ul li{font-size:0.8125rem}}#wf-live-traffic-legend ul li+li{margin-left:0.5rem}#wf-live-traffic-legend ul li:before,.wf-live-traffic-hit-type:before{content:'';display:inline-block;margin:3px 6px 0 0;width:12px;height:12px;background-color:#CCCCCC;border-radius:10px;vertical-align:-2px}#wf-live-traffic-legend ul li.wfHuman:before,.wf-live-traffic-hit-type.wfHuman:before{background-color:#16bc9b}#wf-live-traffic-legend ul li.wfNotice:before,.wf-live-traffic-hit-type.wfNotice:before,#wf-live-traffic-legend ul li.wf404:before,.wf-live-traffic-hit-type.wf404:before,#wf-live-traffic-legend ul li.wfFailedLogin:before,.wf-live-traffic-hit-type.wfFailedLogin:before{background-color:#ffd10a}#wf-live-traffic-legend ul li.wfBlocked:before,.wf-live-traffic-hit-type.wfBlocked:before,#wf-live-traffic-legend ul li.wfActionBlocked:before,.wf-live-traffic-hit-type.wfActionBlocked:before{background-color:#d03935}.wfTimeAgo{font-family:Georgia,Times New Roman,Times,serif;color:#999;font-weight:bold;font-style:italic}.wfActEvent{border-bottom:1px solid #CCC;padding:10px 20px;overflow:auto}.wf-pad-small{margin:8px 0}#wf-lt-listings{margin:0 0 0}#wf-lt-listings a{cursor:pointer;text-decoration:none}#wf-lt-listings a:hover{text-decoration:underline}#wf-lt-listings a.button,#wf-lt-listings a.wf-btn{text-decoration:none}[class*="span"]{float:left;min-height:1px;margin-left:30px}.highlighted,.highlighted td,#wf-live-traffic .wf-striped-table .highlighted td{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}@-moz-keyframes highlighted{0%{opacity:0;background-color:#ffeaa0}100%{opacity:1;background-color:#ffffff}}@-webkit-keyframes highlighted{0%{opacity:0;background-color:#ffeaa0}100%{opacity:1;background-color:#ffffff}}@keyframes highlighted{0%{opacity:0;background-color:#ffeaa0}100%{opacity:1;background-color:#ffffff}}@-moz-keyframes highlightedBlocked{0%{opacity:0;background-color:#ffeaa0}100%{opacity:1;background-color:#fff6f6}}@-webkit-keyframes highlightedBlocked{0%{opacity:0;background-color:#ffeaa0}100%{opacity:1;background-color:#fff6f6}}@keyframes highlightedBlocked{0%{opacity:0;background-color:#ffeaa0}100%{opacity:1;background-color:#fff6f6}}.highlighted,.highlighted td,#wf-live-traffic .wf-striped-table .highlighted td{-webkit-animation-name:highlighted;animation-name:highlighted}.highlighted.wfActionBlocked,.highlighted td.wfActionBlocked,#wf-live-traffic .wf-striped-table .highlighted td.wfActionBlocked{-webkit-animation-name:highlightedBlocked;animation-name:highlightedBlocked}#wf-lt-preset-filters{min-width:250px}#wf-lt-advanced-filters>table{width:100%}#wf-lt-advanced-filters>table>tr>td{vertical-align:top}.wf-lt-url{white-space:nowrap}.wf-live-traffic-filter label{font-weight:normal}#wf-live-traffic .wf-striped-table th,#wf-live-traffic .wf-striped-table td{padding:.5rem .6rem}#wf-live-traffic .wf-striped-table th{white-space:nowrap}#wf-live-traffic .wf-striped-table tbody tr:hover>td{background-color:#e7f5ff}#wf-live-traffic .wf-live-traffic-show-details{font-size:1.5rem;color:#9a9a9a;text-align:center;cursor:hand}#wf-live-traffic .wf-live-traffic-show-details .wf-ion-eye-disabled{display:none}#wf-live-traffic .wf-details-open .wf-live-traffic-show-details .wf-ion-eye-disabled{display:inline-block}#wf-live-traffic .wf-details-open .wf-live-traffic-show-details .wf-ion-eye{display:none}#wf-live-traffic.wf-live-traffic-display-expanded .wf-summary-row{display:none}#wf-live-traffic.wf-live-traffic-display-expanded .wf-live-traffic-activity-detail h2{display:none}#wf-live-traffic.wf-live-traffic-display-expanded .wf-striped-table thead{display:none}#wf-live-traffic .wf-details-hidden .wf-live-traffic-details,#wf-live-traffic .wf-details-visible .wf-live-traffic-details{transition:padding 200ms}#wf-live-traffic .wf-details-hidden .wf-live-traffic-details{padding:0 .6rem}#wf-live-traffic .wf-details-visible .wf-live-traffic-details,#wf-live-traffic.wf-live-traffic-display-expanded .wf-details-hidden .wf-live-traffic-details{padding:.8rem .6rem}#wf-live-traffic.wf-live-traffic-display-expanded .wf-details-hidden .wf-live-traffic-details{border-top:1px solid #e2e2e2}#wf-live-traffic .wf-details-hidden .wf-live-traffic-activity-detail-wrapper,#wf-live-traffic .wf-details-visible .wf-live-traffic-activity-detail-wrapper{transition:opacity 200ms, max-height 200ms ease-out;overflow:hidden}#wf-live-traffic .wf-details-hidden .wf-live-traffic-activity-detail-wrapper{opacity:0;max-height:0px}#wf-live-traffic .wf-details-visible .wf-live-traffic-activity-detail-wrapper,#wf-live-traffic.wf-live-traffic-display-expanded .wf-details-hidden .wf-live-traffic-activity-detail-wrapper{opacity:1;max-height:800px}#wf-live-traffic .wf-block-ip-btn{display:none}#wf-live-traffic-group-by{width:100%}#wf-live-traffic-no-group-by{overflow-x:auto}@media (max-width: 1330px){#wf-live-traffic .wf-summary-row{display:none}#wf-live-traffic .wf-live-traffic-activity-detail h2{display:none}#wf-live-traffic .wf-striped-table thead{display:none}#wf-live-traffic .wf-details-hidden .wf-live-traffic-details{padding:0.8rem 0.6rem}#wf-live-traffic .wf-details-hidden .wf-live-traffic-details{border-top:1px solid #e2e2e2}#wf-live-traffic .wf-details-hidden .wf-live-traffic-activity-detail-wrapper{opacity:1;max-height:300px}#wf-live-traffic-no-group-by .wf-striped-table{table-layout:fixed}}.wf-live-traffic-activity-type{text-align:center;float:left;width:65px}@media (min-width: 768px){.wf-live-traffic-activity-type{width:85px}}@media (min-width: 992px){.wf-live-traffic-activity-type{width:105px}}@media (min-width: 1200px){.wf-live-traffic-activity-type{width:125px}}.wf-live-traffic-activity-type .wf-live-traffic-type-icon{font-size:3rem;color:#CCCCCC}@media (min-width: 768px){.wf-live-traffic-activity-type .wf-live-traffic-type-icon{font-size:4rem}}@media (min-width: 992px){.wf-live-traffic-activity-type .wf-live-traffic-type-icon{font-size:5rem}}@media (min-width: 1200px){.wf-live-traffic-activity-type .wf-live-traffic-type-icon{font-size:6rem}}.wf-live-traffic-activity-type .wf-live-traffic-type-icon.wf-icon-human{color:#16bc9b}.wf-live-traffic-activity-type .wf-live-traffic-type-icon.wf-icon-warning{color:#ffd10a}.wf-live-traffic-activity-type .wf-live-traffic-type-icon.wf-icon-blocked{color:#d03935}.wf-live-traffic-activity-detail{margin:0;margin-left:90px}@media (min-width: 768px){.wf-live-traffic-activity-detail{margin-left:110px}}@media (min-width: 992px){.wf-live-traffic-activity-detail{margin-left:130px}}@media (min-width: 1200px){.wf-live-traffic-activity-detail{margin-left:150px}}.wf-live-traffic-activity-detail h2{margin:0px 0px .5rem}.wf-live-traffic-actions{margin:.5rem 0px 0px}#wf-live-traffic-util-overlay-wrapper{position:fixed;top:32px;right:0px;bottom:0px;left:0px;background-color:rgba(0,0,0,0.5);z-index:3000}#wf-live-traffic-util-overlay-wrapper .wf-live-traffic-util-overlay{position:fixed;top:32px;right:0px;bottom:0px;left:auto;max-width:800px;background-color:#ffffff;overflow:auto}#wf-live-traffic-util-overlay-wrapper .wf-live-traffic-util-overlay-header,#wf-live-traffic-util-overlay-wrapper .wf-live-traffic-util-overlay-body{padding:1rem 1.5rem}#wf-live-traffic-util-overlay-wrapper .wf-live-traffic-util-overlay-body{padding:1rem 1.5rem 1rem 3rem}#wf-live-traffic-util-overlay-wrapper .wf-live-traffic-util-overlay-header{background-color:#e9e9e9;border:1px solid #ffd10a;border-width:10px 0px}#wf-live-traffic-util-overlay-wrapper .wf-live-traffic-util-overlay-body .wf-flex-row{margin:0.6rem 0}#wf-live-traffic-util-overlay-wrapper .wf-live-traffic-actions{display:none}#wf-live-traffic-util-overlay-wrapper .wf-live-traffic-util-overlay-close{position:absolute;top:20px;right:16px;font-size:20px;cursor:pointer}#wf-live-traffic-util-overlay-wrapper .wf-live-traffic-activity-detail div{margin:0px 0px 0.6rem}#wf-live-traffic-util-overlay-wrapper .wf-block-ip-btn{display:inline-block}#wf-live-traffic-options .wf-block-list .wf-option-text .wf-option-title{width:30%}.wf-recent-traffic-table{font-size:.7rem}.wf-recent-traffic-table th,.wf-recent-traffic-table td{vertical-align:top}.wf-recent-traffic-table th{text-align:left;white-space:nowrap}.wf-recent-traffic-table td{word-wrap:break-word;word-break:break-all}.wf-recent-traffic-table .wf-recent-traffic-table-row-border td div{border-top:1px solid #e2e2e2;margin:10px 0}.wf-live-traffic-none{padding:0.5rem 0.6rem}.wf-flag.wf-flag-unspecified{width:16px;height:16px;background:none}.wf-flag.wf-flag-unspecified path{fill:#9f9fa0}table.block-ranges-table{border-collapse:collapse;margin:10px 0 0}table.block-ranges-table tr td{border:1px solid #CCC;border-width:1px 0;padding:10px 0 12px 0}#input-wafStatus,#input-wafStatus option,.wfselect2-container--default{font-size:0.7rem;font-weight:bold}@media (min-width: 768px){#input-wafStatus,#input-wafStatus option,.wfselect2-container--default{font-size:0.8rem}}@media (min-width: 992px){#input-wafStatus,#input-wafStatus option,.wfselect2-container--default{font-size:0.9rem}}.wfselect2-results__options{border-top:1px solid #e2e2e2}.wafStatus-enabled,.wafStatus-learning-mode,.wafStatus-disabled,.wafStatus-enabled.wfselect2-container--default .wfselect2-selection--single,.wafStatus-learning-mode.wfselect2-container--default .wfselect2-selection--single,.wafStatus-disabled.wfselect2-container--default .wfselect2-selection--single{height:40px;border-radius:0;border:0;background-color:#fff;box-shadow:1px 1px 1px 2px rgba(215,215,215,0.35)}.wafStatus-enabled .wfselect2-selection__rendered,.wafStatus-learning-mode .wfselect2-selection__rendered,.wafStatus-disabled .wfselect2-selection__rendered,.wafStatus-enabled.wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__rendered,.wafStatus-learning-mode.wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__rendered,.wafStatus-disabled.wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__rendered{color:#333;line-height:40px}.wafStatus-enabled .wfselect2-selection__arrow,.wafStatus-learning-mode .wfselect2-selection__arrow,.wafStatus-disabled .wfselect2-selection__arrow,.wafStatus-enabled.wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow,.wafStatus-learning-mode.wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow,.wafStatus-disabled.wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow{height:38px}#waf-config-form .waf-config-label{font-size:1.3em}#waf-config-form .wfselect2-container--default .wfselect2-selection--single{padding:0.4rem;text-shadow:0 0 3px #000000;font-weight:bold}#waf-config-form .wfselect2-container .wfselect2-selection--single{height:auto}#waf-config-form .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow{height:100%;top:0}.wafStatus-enabled.wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow b,.wafStatus-learning-mode.wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow b,.wafStatus-disabled.wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow b{border-color:#333 transparent transparent}.wafStatus-enabled.wfselect2-container--default.wfselect2-container--open .wfselect2-selection--single .wfselect2-selection__arrow b,.wafStatus-learning-mode.wfselect2-container--default.wfselect2-container--open .wfselect2-selection--single .wfselect2-selection__arrow b,.wafStatus-disabled.wfselect2-container--default.wfselect2-container--open .wfselect2-selection--single .wfselect2-selection__arrow b{border-color:transparent transparent #333}#waf-learning-mode-grace-period{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:row;flex-direction:row}#waf-learning-mode-grace-period span{padding:0 0.5rem 0 1rem}#waf-learning-mode-grace-period input{width:auto}#whitelist-form{padding-top:0.5rem}#whitelist-form .wfselect2-container--default .wfselect2-selection--single{display:block;width:100%;height:38px;padding:.5rem 1.25rem;font-size:14px;line-height:1.42857;color:#2b2b2b;background-color:#fff;background-image:none;border:1px solid #ddd;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;-o-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s}#whitelist-form .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__rendered{color:#2b2b2b;line-height:inherit}#whitelist-form .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow{height:38px}#whitelist-form-separator{margin:1rem 0}#whitelist-table-controls{margin-bottom:0.5rem}#whitelist-table-controls .wfselect2-container--default{text-align:left !important}#whitelist-table-controls .wf-select-group{-webkit-justify-content:flex-end !important;justify-content:flex-end !important}.whitelist-table-container{overflow-x:auto}table.whitelist-table .whitelist-edit{display:none}table.whitelist-table .edit-mode .whitelist-display{display:none}table.whitelist-table .edit-mode .whitelist-edit{display:block}table.whitelist-table .edit-mode span.whitelist-edit,table.whitelist-table .edit-mode input.whitelist-edit{display:inline}.wf-bulk-action{margin:12px 0}tr.wf-table-filters input{max-width:120px}.wf-waf-status-disabled{padding:2rem 0}.wf-block .wf-block-content .wf-block-labeled-value.wf-waf-status .wf-block-labeled-value-value{padding-top:0}.wf-block .wf-block-content .wf-block-labeled-value.wf-waf-status .wf-block-labeled-value-value .wf-fa{font-size:8rem}.wf-block .wf-block-content .wf-block-labeled-value.wf-waf-status .wf-block-labeled-value-value svg{width:160px}.wf-block .wf-block-content .wf-block-labeled-value.wf-waf-status .wf-block-labeled-value-label{font-size:1.3125rem;font-weight:300;line-height:1.5;padding-bottom:0}.wf-block .wf-block-content .wf-block-labeled-value.wf-waf-status-full-enabled{background-color:#00709e}.wf-block .wf-block-content .wf-block-labeled-value.wf-waf-status-full-enabled .wf-block-labeled-value-value{color:#ffffff}.wf-block .wf-block-content .wf-block-labeled-value.wf-waf-status-full-enabled .wf-block-labeled-value-label{color:#ffffff;padding:0}.wf-block .wf-block-content .wf-block-labeled-value.wf-waf-status-enabled .wf-block-labeled-value-value{color:#00709e}.wf-block .wf-block-content .wf-block-labeled-value.wf-waf-status-enabled .wf-block-labeled-value-value svg{fill:#00709e}.wf-block .wf-block-content .wf-block-labeled-value.wf-waf-status-enabled .wf-block-labeled-value-label{color:#00709e}.wf-block .wf-block-content .wf-block-labeled-value.wf-waf-status-learning-mode .wf-block-labeled-value-value,.wf-block .wf-block-content .wf-block-labeled-value.wf-waf-status-disabled .wf-block-labeled-value-value{color:#9f9fa0}.wf-block .wf-block-content .wf-block-labeled-value.wf-waf-status-learning-mode .wf-block-labeled-value-value svg,.wf-block .wf-block-content .wf-block-labeled-value.wf-waf-status-disabled .wf-block-labeled-value-value svg{fill:#9f9fa0}.wf-block .wf-block-content .wf-block-labeled-value.wf-waf-status-learning-mode .wf-block-labeled-value-label,.wf-block .wf-block-content .wf-block-labeled-value.wf-waf-status-disabled .wf-block-labeled-value-label{color:#9f9fa0}.wf-waf-coverage li{-webkit-align-items:flex-start !important;align-items:flex-start !important}.wf-waf-navigation .wf-block-navigation-option-content,.wf-blocking-status .wf-block-navigation-option-content{padding:1.5rem 0 1.5rem 1.0rem}.wf-waf-navigation .wf-block-navigation-option-content h4,.wf-blocking-status .wf-block-navigation-option-content h4{margin:0 0 0.25rem 0}.wf-waf-navigation .wf-block-navigation-option-content p,.wf-blocking-status .wf-block-navigation-option-content p{margin:0 0 0.45rem 0}.wf-blocking-status>li{-webkit-flex-grow:0 !important;flex-grow:0 !important;-webkit-flex-basis:66.66667% !important;flex-basis:66.66667% !important}.wf-blocking-status>li:first-of-type{-webkit-flex-basis:33.33333% !important;flex-basis:33.33333% !important}.wf-blocking-status-premium>li{-webkit-flex-grow:0 !important;flex-grow:0 !important;-webkit-flex-basis:33.33333% !important;flex-basis:33.33333% !important}ul.wf-option.wf-option-rate-limit *{-webkit-flex-grow:1;flex-grow:1}ul.wf-option.wf-option-rate-limit *:first-child{-webkit-flex-grow:0;flex-grow:0}ul.wf-option.wf-option-rate-limit .wfselect2-container{min-width:100px}@media (min-width: 768px){ul.wf-option.wf-option-rate-limit .wfselect2-container{min-width:140px}}@media (min-width: 992px){ul.wf-option.wf-option-rate-limit .wfselect2-container{min-width:140px}}#waf-rules-wrapper tbody tr:nth-of-type(n+10){display:none}#waf-rules-wrapper.wf-show-all tbody tr:nth-of-type(n+10){display:table-row}#waf-rules-wrapper.wf-show-all #waf-show-all-rules{display:none}.wf-waf-backup-file-list{display:-webkit-flex;display:flex;-webkit-align-items:flex-start;align-items:flex-start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:row;flex-direction:row}.wf-waf-backup-file-list>*{margin-left:0.5rem !important}.wf-waf-backup-file-list>*:first-child{margin-left:0 !important}#wf-option-loginSecurityEnabled .wf-option-subtitle{font-size:.875rem}.wf-rate-limit-warning{display:none;padding-top:1rem}.wf-rate-limit-warning .wf-inline-notice{display:inline-block}.wf-scan-status-disabled{padding:2rem 0}.wf-block .wf-block-content .wf-block-labeled-value.wf-scan-status .wf-block-labeled-value-value{padding-top:0}.wf-block .wf-block-content .wf-block-labeled-value.wf-scan-status .wf-block-labeled-value-value .wf-fa{font-size:8rem}.wf-block .wf-block-content .wf-block-labeled-value.wf-scan-status .wf-block-labeled-value-value svg{width:160px}.wf-block .wf-block-content .wf-block-labeled-value.wf-scan-status .wf-block-labeled-value-label{font-size:1.3125rem;font-weight:300;line-height:1.5;padding-bottom:0}.wf-block .wf-block-content .wf-block-labeled-value.wf-scan-status-full-enabled{background-color:#00709e}.wf-block .wf-block-content .wf-block-labeled-value.wf-scan-status-full-enabled .wf-block-labeled-value-value{color:#ffffff}.wf-block .wf-block-content .wf-block-labeled-value.wf-scan-status-full-enabled .wf-block-labeled-value-label{color:#ffffff;padding:0}.wf-block .wf-block-content .wf-block-labeled-value.wf-scan-status-enabled .wf-block-labeled-value-value{color:#00709e}.wf-block .wf-block-content .wf-block-labeled-value.wf-scan-status-enabled .wf-block-labeled-value-value svg{fill:#00709e}.wf-block .wf-block-content .wf-block-labeled-value.wf-scan-status-enabled .wf-block-labeled-value-label{color:#00709e}.wf-block .wf-block-content .wf-block-labeled-value.wf-scan-status-disabled .wf-block-labeled-value-value{color:#9f9fa0}.wf-block .wf-block-content .wf-block-labeled-value.wf-scan-status-disabled .wf-block-labeled-value-value svg{fill:#9f9fa0}.wf-block .wf-block-content .wf-block-labeled-value.wf-scan-status-disabled .wf-block-labeled-value-label{color:#9f9fa0}.wf-scan-navigation .wf-block-navigation-option-content{padding:1.5rem 0 1.5rem 1.0rem}.wf-scan-navigation .wf-block-navigation-option-content h4{margin:0 0 0.25rem 0}.wf-scan-navigation .wf-block-navigation-option-content p{margin:0 0 0.45rem 0}#wf-scan-starter{-webkit-justify-content:center;justify-content:center}#wf-scan-starter:hover{cursor:unset}#wf-scan-starter:hover a{text-decoration:none}.wf-scanner-progress{display:-webkit-flex;display:flex;-webkit-align-items:flex-start;align-items:flex-start;-webkit-justify-content:space-between;justify-content:space-between;-webkit-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;flex-wrap:nowrap;margin-top:0.5rem;margin-bottom:0.5rem;background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB3aWR0aD0iMXB4IiBoZWlnaHQ9IjZweCIgdmlld0JveD0iMCAwIDEgNiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3BhY2U9InByZXNlcnZlIj4KCTxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIGZpbGw9IiNkMWQxZDEiLz48cmVjdCB4PSIwIiB5PSI1IiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBmaWxsPSIjZDFkMWQxIi8+Cjwvc3ZnPg==");background-repeat:repeat-x;background-position:center 24px;overflow-x:auto;overflow-y:hidden}.wf-scanner-progress>.wf-scan-step{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;-webkit-flex-direction:column;flex-direction:column;padding-left:0.5rem;padding-right:0.5rem}.wf-scanner-progress>.wf-scan-step:first-of-type{padding-left:0;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuMCIgeTE9IjAuNSIgeDI9IjEuMCIgeTI9IjAuNSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIvPjxzdG9wIG9mZnNldD0iNTAlIiBzdG9wLWNvbG9yPSIjZmZmZmZmIi8+PHN0b3Agb2Zmc2V0PSI1MSUiIHN0b3AtY29sb3I9IiNmZmZmZmYiIHN0b3Atb3BhY2l0eT0iMC4wIi8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjZmZmZmZmIiBzdG9wLW9wYWNpdHk9IjAuMCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');background-size:100%;background-image:-webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #ffffff),color-stop(50%, #ffffff),color-stop(51%, rgba(255,255,255,0)),color-stop(100%, rgba(255,255,255,0)));background-image:-moz-linear-gradient(left, #ffffff 0%,#ffffff 50%,rgba(255,255,255,0) 51%,rgba(255,255,255,0) 100%);background-image:-webkit-linear-gradient(left, #ffffff 0%,#ffffff 50%,rgba(255,255,255,0) 51%,rgba(255,255,255,0) 100%);background-image:linear-gradient(to right, #ffffff 0%,#ffffff 50%,rgba(255,255,255,0) 51%,rgba(255,255,255,0) 100%);background-repeat:no-repeat;background-position:left center}.wf-scanner-progress>.wf-scan-step:last-of-type{padding-right:0;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuMCIgeTE9IjAuNSIgeDI9IjEuMCIgeTI9IjAuNSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIgc3RvcC1vcGFjaXR5PSIwLjAiLz48c3RvcCBvZmZzZXQ9IjQ5JSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIgc3RvcC1vcGFjaXR5PSIwLjAiLz48c3RvcCBvZmZzZXQ9IjUwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');background-size:100%;background-image:-webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, rgba(255,255,255,0)),color-stop(49%, rgba(255,255,255,0)),color-stop(50%, #ffffff),color-stop(100%, #ffffff));background-image:-moz-linear-gradient(left, rgba(255,255,255,0) 0%,rgba(255,255,255,0) 49%,#ffffff 50%,#ffffff 100%);background-image:-webkit-linear-gradient(left, rgba(255,255,255,0) 0%,rgba(255,255,255,0) 49%,#ffffff 50%,#ffffff 100%);background-image:linear-gradient(to right, rgba(255,255,255,0) 0%,rgba(255,255,255,0) 49%,#ffffff 50%,#ffffff 100%);background-repeat:no-repeat;background-position:right center}.wf-scanner-progress>.wf-scan-step>.wf-scan-step-title{font-size:0.7rem;padding-top:0.5rem;white-space:nowrap}.wf-scanner-progress>.wf-scan-step>.wf-scan-step-subtitle{font-size:0.7rem}.wf-scanner-progress>.wf-scan-step>.wf-scan-step-icon>.wf-scan-step-pending,.wf-step-pending{width:50px;height:54px;background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB3aWR0aD0iMTRweCIgaGVpZ2h0PSIxNHB4IiB2aWV3Qm94PSIwIDAgMTQgMTQiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+Cgk8Y2lyY2xlIGN4PSI3IiBjeT0iNyIgcj0iNyIgZmlsbD0iI2QxZDFkMSIvPgo8L3N2Zz4=");background-repeat:no-repeat;background-position:center center}.wf-scanner-progress>.wf-scan-step>.wf-scan-step-icon>.wf-scan-step-running,.wf-step-running{display:none;background-color:#ffffff !important}.wf-scanner-progress>.wf-scan-step>.wf-scan-step-icon>.wf-scan-step-complete-success,.wf-step-complete-success{display:none;width:50px;height:54px;background:#fff url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj48c3ZnIHdpZHRoPSI1MHB4IiBoZWlnaHQ9IjUwcHgiIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTk4LjI4NywyMS4wMjVsLTcuODIzLC03LjgxMmMtMS4wNjYsLTEuMDkyIC0yLjUyOCwtMS43MDggLTQuMDU0LC0xLjcwOGMtMS41MjUsMCAtMi45ODgsMC42MTYgLTQuMDUzLDEuNzA4bC00Ni4wMTIsNDYuMDEybC0xOC43MTMsLTE4LjcxMmMtMS4wNjYsLTEuMDkgLTIuNTI5LC0xLjcwNCAtNC4wNTMsLTEuNzA0Yy0xLjUyNSwwIC0yLjk4NywwLjYxNCAtNC4wNTQsMS43MDRsLTcuODEyLDcuODM0Yy0xLjA5MiwxLjA2NSAtMS43MDgsMi41MjggLTEuNzA4LDQuMDUzYzAsMS41MjYgMC42MTYsMi45ODggMS43MDgsNC4wNTRsMzAuNTUxLDMwLjU1MWMxLjA2NywxLjA4OSAyLjUyOSwxLjcwMyA0LjA1NCwxLjcwM2MxLjUyNCwwIDIuOTg2LC0wLjYxNCA0LjA1MywtMS43MDNsNTcuOTE2LC01Ny44NjJjMS4wOTIsLTEuMDY1IDEuNzA4LC0yLjUyOCAxLjcwOCwtNC4wNTNjMCwtMS41MjYgLTAuNjE2LC0yLjk4OCAtMS43MDgsLTQuMDU0bDAsLTAuMDExbDAsMFoiIGZpbGw9IiMwMDcwOWUiLz48L3N2Zz4=");background-repeat:no-repeat;background-position:center center;background-size:80%}.wf-scanner-progress>.wf-scan-step>.wf-scan-step-icon>.wf-scan-step-complete-warning,.wf-step-complete-warning{display:none;width:50px;height:54px;background:#fff url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj48c3ZnIHdpZHRoPSI1MHB4IiBoZWlnaHQ9IjUwcHgiIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTk5LjA1MSw4Mi44NDJsLTQyLjgxMiwtNzguNDgzYy0wLjYxLC0xLjEzMSAtMS41MTQsLTIuMDc3IC0yLjYxNywtMi43MzdjLTIuMjI3LC0xLjMzNCAtNS4wMTcsLTEuMzM0IC03LjI0NCwwYy0xLjEwNiwwLjY1OSAtMi4wMTMsMS42MDUgLTIuNjI1LDIuNzM3bC00Mi44MDQsNzguNDgzYy0xLjI5OSwyLjE2OCAtMS4yNTYsNC44OTYgMC4xMTEsNy4wMjFjMC42MTQsMS4wNjcgMS41LDEuOTUyIDIuNTY2LDIuNTY2YzEuMDc0LDAuNjI3IDIuMjk3LDAuOTU1IDMuNTQxLDAuOTQ5bDg1LjY0MSwwYzIuNTE3LC0wLjAwOSA0Ljg1MiwtMS4zNDcgNi4xMzIsLTMuNTE1YzEuMzY3LC0yLjEyNSAxLjQxLC00Ljg1MyAwLjExMSwtNy4wMjFsMCwwWm0tNDEuOTA2LC01LjU3NmMwLjAxMSwwLjQ5IC0wLjE4MSwwLjk2NCAtMC41MywxLjMwOGMtMC4zMjUsMC4zNDIgLTAuNzc3LDAuNTM0IC0xLjI0OSwwLjUzMWwtMTAuNzE1LDBjLTAuNDcyLDAuMDAzIC0wLjkyNCwtMC4xODkgLTEuMjQ5LC0wLjUzMWMtMC4zNDksLTAuMzQ0IC0wLjU0MiwtMC44MTggLTAuNTMsLTEuMzA4bDAsLTEwLjU4OGMtMC4wMTIsLTAuNDkgMC4xODEsLTAuOTY0IDAuNTMsLTEuMzA4YzAuMzI1LC0wLjM0MSAwLjc3NywtMC41MzMgMS4yNDksLTAuNTNsMTAuNjk4LDBjMC40NzUsLTAuMDA2IDAuOTMsMC4xODcgMS4yNTgsMC41M2MwLjM0OCwwLjM0NSAwLjU0LDAuODE4IDAuNTMsMS4zMDhsMCwxMC41ODhsMC4wMDgsMFptLTAuMTExLC0yMC44NDJjLTAuMDQ1LDAuMzggLTAuMjYzLDAuNzE4IC0wLjU5LDAuOTE2Yy0wLjM4OSwwLjI1IC0wLjg0NiwwLjM3NSAtMS4zMDgsMC4zNTlsLTEwLjMyMywwYy0wLjQ3LDAuMDEzIC0wLjkzNCwtMC4xMTIgLTEuMzM0LC0wLjM1OWMtMC4zMzgsLTAuMTg1IC0wLjU1MSwtMC41MzkgLTAuNTU2LC0wLjkyNGwtMC45NDksLTI1LjQ2OGMtMC4wMywtMC40NiAwLjE4MSwtMC45MDQgMC41NTYsLTEuMTcyYzAuMzU4LC0wLjM1NSAwLjgzMSwtMC41NzMgMS4zMzQsLTAuNjE2bDEyLjI3MiwwYzAuNTA2LDAuMDQgMC45ODIsMC4yNTggMS4zNDMsMC42MTZjMC4zNTcsMC4yMzIgMC41NjgsMC42MzUgMC41NTYsMS4wNmwtMS4wMDEsMjUuNTg4WiIgZmlsbD0iI2ZjYjIxNCIvPjwvc3ZnPg==");background-repeat:no-repeat;background-position:center center;background-size:80%}.wf-scanner-progress>.wf-scan-step>.wf-scan-step-icon>.wf-scan-step-disabled,.wf-step-disabled{display:none;width:50px;height:54px;background:#fff url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj48c3ZnIHdpZHRoPSI1MHB4IiBoZWlnaHQ9IjUwcHgiIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTk1Ljg5LDMwLjUyOGMtMi40OTYsLTUuOTQxIC02LjEwOCwtMTEuMzUxIC0xMC42NDIsLTE1LjkzOGMtNC41NzUsLTQuNTM4IC05Ljk5LC04LjE0OCAtMTUuOTQyLC0xMC42M2MtMTIuNDAxLC01LjI4IC0yNi40NDEsLTUuMjggLTM4Ljg0MiwwYy01Ljk2NSwyLjQ4NSAtMTEuMzg5LDYuMTAxIC0xNS45NzIsMTAuNjVjLTQuNTEsNC41ODYgLTguMTAxLDkuOTg5IC0xMC41ODIsMTUuOTE4Yy01LjI4NywxMi40MzIgLTUuMjg3LDI2LjQ5IDAsMzguOTIxYzIuNDk1LDUuOTQyIDYuMTA3LDExLjM1MyAxMC42NDIsMTUuOTM5YzQuNTgzLDQuNTQ4IDEwLjAwNyw4LjE2NSAxNS45NzIsMTAuNjQ5YzEyLjQsNS4yODQgMjYuNDQyLDUuMjg0IDM4Ljg0MiwwYzUuOTY1LC0yLjQ4NCAxMS4zODksLTYuMTAxIDE1Ljk3MiwtMTAuNjQ5YzQuNTM2LC00LjU4NSA4LjE0OSwtOS45OTYgMTAuNjQyLC0xNS45MzljNS4yODcsLTEyLjQzMSA1LjI4NywtMjYuNDg5IDAsLTM4LjkyMWwtMC4wOSwwWm0tNzUuNjA4LDM4Ljg1MWMtNy4zMDIsLTExLjIxMiAtNy42ODksLTI1LjYyIC0wLjk5OCwtMzcuMjA3YzMuMDc1LC01LjM3NSA3LjUyMiwtOS44NDQgMTIuODg3LC0xMi45NWM1LjM3NSwtMy4xMjkgMTEuNDk3LC00Ljc1NCAxNy43MTksLTQuNzAyYzYuOTU1LC0wLjA2IDEzLjc2NiwyLjAwMiAxOS41MTYsNS45MDdsLTQ5LjEyNCw0OC45NTJabTYyLjIwMSwtNS42NDhjLTEuNzU1LDQuMjI4IC00LjMxOCw4LjA3NiAtNy41NDcsMTEuMzI2Yy0zLjI0MywzLjIyOSAtNy4wNzYsNS44MDkgLTExLjI5LDcuNjAxYy00LjM0MywxLjg4MyAtOS4wMzEsMi44NDYgLTEzLjc2NiwyLjgyOWMtNi44NzIsMC4wMDggLTEzLjU5NSwtMi4wMTcgLTE5LjMxNiwtNS44MTdsNDkuMDU0LC00OC44MTNjMy43NDEsNS42ODcgNS43MTEsMTIuMzU0IDUuNjYsMTkuMTU3YzAuMDAzLDQuNzEzIC0wLjk0OCw5LjM3OSAtMi43OTUsMTMuNzE3bDAsMFoiIGZpbGw9IiNkMWQxZDEiLz48L3N2Zz4=");background-repeat:no-repeat;background-position:center center;background-size:80%}.wf-scanner-progress>.wf-scan-step>.wf-scan-step-icon>.wf-scan-step-premium,.wf-step-premium{width:50px;height:54px;background:#fff url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIzMHB4IiB2aWV3Qm94PSIwIDAgMjQgMzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KCTxwYXRoIGQ9Ik0yMy45NDksMTQuMjMzYy0wLjM3OSwtMC4zOSAtMC45MDQsLTAuNjA2IC0xLjQ0OCwtMC41OTVsLTAuNjgzLDBsMCwtNC4wOTJjMC4wMzIsLTIuNTM1IC0wLjk4NiwtNC45NzMgLTIuODEyLC02LjczMWMtMS43NTksLTEuODI4IC00LjE5OCwtMi44NDcgLTYuNzM0LC0yLjgxNWMtMi41MzYsLTAuMDMyIC00Ljk3NiwwLjk4NyAtNi43MzQsMi44MTVjLTEuODI2LDEuNzU4IC0yLjg0NCw0LjE5NiAtMi44MTIsNi43MzFsMCw0LjA4OWwtMC42OCwwYy0wLjU0NCwtMC4wMTEgLTEuMDY5LDAuMjA1IC0xLjQ0OCwwLjU5NWMtMC4zOTUsMC4zODIgLTAuNjEyLDAuOTEyIC0wLjU5OCwxLjQ2MWwwLDEyLjI2NmMtMC4wMTEsMC41NDQgMC4yMDQsMS4wNjkgMC41OTUsMS40NDhjMC4zNzksMC4zOTEgMC45MDQsMC42MDYgMS40NDgsMC41OTVsMjAuNDU4LDBjMC4wMDMsMCAwLjAwNiwwIDAuMDEsMGMxLjExNywwIDIuMDM2LC0wLjkxOSAyLjAzNiwtMi4wMzdjMCwtMC4wMDMgMCwtMC4wMDYgMCwtMC4wMDlsMCwtMTIuMjYzYzAuMDExLC0wLjU0NCAtMC4yMDYsLTEuMDY5IC0wLjU5OCwtMS40NDhsMCwtMC4wMVptLTYuMjExLC0wLjU5NWwtMTAuOTE5LDBsMCwtNC4wOTJjLTAuMDIyLC0xLjQ1MSAwLjU1NywtMi44NDggMS41OTksLTMuODU4YzEuMDA5LC0xLjA0MiAyLjQwNywtMS42MjEgMy44NTcsLTEuNTk4YzEuNDUxLC0wLjAyMyAyLjg0OCwwLjU1NiAzLjg1OCwxLjU5OGMxLjA0MiwxLjAwOSAxLjYyMSwyLjQwNyAxLjU5OCwzLjg1OGwwLjAwNyw0LjA5MloiIGZpbGw9IiNkMWQxZDEiLz4KPC9zdmc+");background-repeat:no-repeat;background-position:center center;background-size:40%}.wf-scanner-progress>.wf-scan-step.wf-scan-step-premium>.wf-scan-step-icon>.wf-scan-step-pending{display:none}.wf-scanner-progress>.wf-scan-step.wf-scan-step-premium>.wf-scan-step-icon>.wf-scan-step-running{display:none}.wf-scanner-progress>.wf-scan-step.wf-scan-step-premium>.wf-scan-step-icon>.wf-scan-step-complete-success{display:none}.wf-scanner-progress>.wf-scan-step.wf-scan-step-premium>.wf-scan-step-icon>.wf-scan-step-complete-warning{display:none}.wf-scanner-progress>.wf-scan-step.wf-scan-step-premium>.wf-scan-step-icon>.wf-scan-step-disabled{display:none}.wf-scanner-progress>.wf-scan-step.wf-scan-step-running>.wf-scan-step-icon>.wf-scan-step-pending{display:none}.wf-scanner-progress>.wf-scan-step.wf-scan-step-running>.wf-scan-step-icon>.wf-scan-step-running{display:block}.wf-scanner-progress>.wf-scan-step.wf-scan-step-running>.wf-scan-step-icon>.wf-scan-step-complete-success{display:none}.wf-scanner-progress>.wf-scan-step.wf-scan-step-running>.wf-scan-step-icon>.wf-scan-step-complete-warning{display:none}.wf-scanner-progress>.wf-scan-step.wf-scan-step-running>.wf-scan-step-icon>.wf-scan-step-disabled{display:none}.wf-scanner-progress>.wf-scan-step.wf-scan-step-complete-success>.wf-scan-step-icon>.wf-scan-step-pending{display:none}.wf-scanner-progress>.wf-scan-step.wf-scan-step-complete-success>.wf-scan-step-icon>.wf-scan-step-running{display:none}.wf-scanner-progress>.wf-scan-step.wf-scan-step-complete-success>.wf-scan-step-icon>.wf-scan-step-complete-success{display:block}.wf-scanner-progress>.wf-scan-step.wf-scan-step-complete-success>.wf-scan-step-icon>.wf-scan-step-complete-warning{display:none}.wf-scanner-progress>.wf-scan-step.wf-scan-step-complete-success>.wf-scan-step-icon>.wf-scan-step-disabled{display:none}.wf-scanner-progress>.wf-scan-step.wf-scan-step-complete-warning>.wf-scan-step-icon>.wf-scan-step-pending{display:none}.wf-scanner-progress>.wf-scan-step.wf-scan-step-complete-warning>.wf-scan-step-icon>.wf-scan-step-running{display:none}.wf-scanner-progress>.wf-scan-step.wf-scan-step-complete-warning>.wf-scan-step-icon>.wf-scan-step-complete-success{display:none}.wf-scanner-progress>.wf-scan-step.wf-scan-step-complete-warning>.wf-scan-step-icon>.wf-scan-step-complete-warning{display:block}.wf-scanner-progress>.wf-scan-step.wf-scan-step-complete-warning>.wf-scan-step-icon>.wf-scan-step-disabled{display:none}.wf-scanner-progress>.wf-scan-step.wf-scan-step-disabled>.wf-scan-step-icon>.wf-scan-step-pending{display:none}.wf-scanner-progress>.wf-scan-step.wf-scan-step-disabled>.wf-scan-step-icon>.wf-scan-step-running{display:none}.wf-scanner-progress>.wf-scan-step.wf-scan-step-disabled>.wf-scan-step-icon>.wf-scan-step-complete-success{display:none}.wf-scanner-progress>.wf-scan-step.wf-scan-step-disabled>.wf-scan-step-icon>.wf-scan-step-complete-warning{display:none}.wf-scanner-progress>.wf-scan-step.wf-scan-step-disabled>.wf-scan-step-icon>.wf-scan-step-disabled{display:block}#wf-scan-last-status{font-size:0.75rem;text-align:center}@media (min-width: 768px){#wf-scan-last-status{text-align:left}}#wf-scan-activity-log-controls{-webkit-flex-shrink:0;flex-shrink:0;text-align:center;white-space:nowrap}@media (min-width: 768px){#wf-scan-activity-log-controls{text-align:right}}#wf-scan-activity-log-controls a{text-transform:uppercase;font-size:0.75rem;white-space:nowrap}#wf-scan-toggle-activity-log .wf-scan-activity-log-visible{display:none}#wf-scan-toggle-activity-log .wf-scan-activity-log-hidden{display:inline}#wf-scan-toggle-activity-log.wf-active .wf-scan-activity-log-visible{display:inline}#wf-scan-toggle-activity-log.wf-active .wf-scan-activity-log-hidden{display:none}#wf-scan-running-bar{height:4px;border:1px solid #e2e2e2;background-color:#ffffff;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}#wf-scan-running-bar-pill{height:4px;background-color:#00709e;width:33.3333%;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-webkit-animation:wf-scan-running-bar-pill-keyframes 1s linear infinite alternate both;-o-animation:wf-scan-running-bar-pill-keyframes 1s linear infinite alternate both;animation:wf-scan-running-bar-pill-keyframes 1s linear infinite alternate both}@-moz-keyframes wf-scan-running-bar-pill-keyframes{from{margin-left:0%}to{margin-left:66.6667%}}@-webkit-keyframes wf-scan-running-bar-pill-keyframes{from{margin-left:0%}to{margin-left:66.6667%}}@keyframes wf-scan-running-bar-pill-keyframes{from{margin-left:0%}to{margin-left:66.6667%}}#wf-scan-activity-log{display:none;overflow-x:hidden;overflow-y:auto;background-color:#ffffff;box-shadow:0 0 0 1px rgba(200,215,225,0.25),0 1px 2px #e9eff3;padding:0.5rem;height:7rem}#wf-scan-activity-log>li{margin:0;padding:0}#wf-scan-activity-log.wf-active{display:block}.wf-scan-tabs{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;box-shadow:inset 0px 0px 0px 1px #f1f1f1,inset 0px -1px 0px 1px #e2e2e2;margin:0.5rem 0 0 0}.wf-scan-tabs>*{-webkit-flex-grow:0;flex-grow:0;min-width:0}.wf-scan-tabs .wf-tab{border:1px solid #d0d0d0;border-top-right-radius:0.5rem;border-top-left-radius:0.5rem;border-bottom:none;margin:0;margin-left:0.5rem;background:#e6e6e6;color:#333}.wf-scan-tabs .wf-tab:first-of-type{margin-left:0}.wf-scan-tabs .wf-tab a{display:block;padding:0.5rem 1rem;font-size:14px;line-height:24px;text-decoration:none;font-weight:bold;color:#333}.wf-scan-tabs .wf-tab.wf-active,.wf-scan-tabs .wf-tab:hover{border-bottom:1px solid #ffffff;background:#ffffff;color:#00709e;margin-bottom:-1px;-webkit-box-shadow:none;box-shadow:none}.wf-scan-tabs .wf-tab.wf-active a,.wf-scan-tabs .wf-tab:hover a{color:#00709e}.wf-scan-tabs #wf-scan-bulk-buttons{-webkit-flex-grow:1 !important;flex-grow:1 !important;text-align:right}.wf-scan-tab-content{display:none;margin-top:15px}.wf-scan-tab-content.wf-active{display:block}.wf-scan-results{margin:0;margin-top:-1px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border-left:1px solid #e2e2e2;border-right:1px solid #e2e2e2;border-bottom:1px solid #e2e2e2}.wf-scan-results>.wf-scan-results-stats{margin:0}.wf-scan-results>.wf-scan-results-stats>.wf-block{box-shadow:none;margin:0}.wf-scan-results>.wf-scan-results-stats>.wf-block>.wf-block-content>.wf-block-list>li{border-top:0px;padding:0 1rem}.wf-scan-results>.wf-scan-results-stats>.wf-block>.wf-block-content>.wf-block-list .wf-flex-horizontal>li{font-size:0.75rem;white-space:nowrap;margin:0}.wf-scan-results>.wf-scan-results-stats>.wf-block>.wf-block-content>.wf-block-list .wf-flex-horizontal>li:last-of-type{text-align:right}.wf-scan-results-issues{padding:0;margin:0;display:none}.wf-scan-results-issues.wf-active{display:block}.wf-issue,.wf-issue-site-cleaning{display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:column;flex-direction:column;border-top:1px solid #e2e2e2}.wf-issue:nth-of-type(2n),.wf-issue-site-cleaning:nth-of-type(2n){background-color:#fff}.wf-issue>li,.wf-issue-site-cleaning>li{margin:0}.wf-issue.wf-issue-severity-critical,.wf-issue-site-cleaning.wf-issue-severity-critical{border-left:4px solid #930000}.wf-issue.wf-issue-severity-high,.wf-issue-site-cleaning.wf-issue-severity-high{border-left:4px solid #c10000}.wf-issue.wf-issue-severity-warning,.wf-issue.wf-issue-severity-medium,.wf-issue-site-cleaning.wf-issue-severity-warning,.wf-issue-site-cleaning.wf-issue-severity-medium{border-left:4px solid #fcb214}.wf-issue.wf-issue-severity-low,.wf-issue-site-cleaning.wf-issue-severity-low{border-left:4px solid #3f596b}.wf-issue.wf-issue-severity-good,.wf-issue-site-cleaning.wf-issue-severity-good{border-left:4px solid #16bc9b}.wf-issue>.wf-issue-summary>ul,.wf-issue-site-cleaning>.wf-issue-summary>ul{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:row;flex-direction:row;padding:1.5rem}.wf-issue>.wf-issue-summary>ul>li,.wf-issue-site-cleaning>.wf-issue-summary>ul>li{margin:0;padding:0;padding-left:1.5rem}@media (max-width: 767px){.wf-issue>.wf-issue-summary>ul>li,.wf-issue-site-cleaning>.wf-issue-summary>ul>li{padding-left:0.5rem}}.wf-issue>.wf-issue-summary>ul>li:first-of-type,.wf-issue-site-cleaning>.wf-issue-summary>ul>li:first-of-type{padding-left:0}.wf-issue>.wf-issue-summary>ul>.wf-issue-icon,.wf-issue>.wf-issue-summary>ul>.wf-issue-icon-colored,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-icon,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-icon-colored{text-align:left;-webkit-flex-basis:50px;flex-basis:50px;-webkit-flex-shrink:0;flex-shrink:0}.wf-issue>.wf-issue-summary>ul>.wf-issue-icon>*,.wf-issue>.wf-issue-summary>ul>.wf-issue-icon-colored>*,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-icon>*,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-icon-colored>*{height:40px}.wf-issue>.wf-issue-summary>ul>.wf-issue-icon svg path,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-icon svg path{fill:#9e9e9e}.wf-issue>.wf-issue-summary>ul>.wf-issue-short,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short{-webkit-flex-basis:40%;flex-basis:40%}.wf-issue>.wf-issue-summary>ul>.wf-issue-stats,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-stats{-webkit-flex-basis:25%;flex-basis:25%}.wf-issue>.wf-issue-summary>ul>.wf-issue-short-stats,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short-stats{-webkit-flex-grow:1;flex-grow:1}.wf-issue>.wf-issue-summary>ul .wf-issue-severity-critical,.wf-issue>.wf-issue-summary>ul .wf-issue-severity-high,.wf-issue>.wf-issue-summary>ul .wf-issue-severity-medium,.wf-issue>.wf-issue-summary>ul .wf-issue-severity-low,.wf-issue>.wf-issue-summary>ul .wf-issue-severity-warning,.wf-issue-site-cleaning>.wf-issue-summary>ul .wf-issue-severity-critical,.wf-issue-site-cleaning>.wf-issue-summary>ul .wf-issue-severity-high,.wf-issue-site-cleaning>.wf-issue-summary>ul .wf-issue-severity-medium,.wf-issue-site-cleaning>.wf-issue-summary>ul .wf-issue-severity-low,.wf-issue-site-cleaning>.wf-issue-summary>ul .wf-issue-severity-warning{padding-left:18px;position:relative}.wf-issue>.wf-issue-summary>ul .wf-issue-severity-critical:before,.wf-issue>.wf-issue-summary>ul .wf-issue-severity-high:before,.wf-issue>.wf-issue-summary>ul .wf-issue-severity-medium:before,.wf-issue>.wf-issue-summary>ul .wf-issue-severity-low:before,.wf-issue>.wf-issue-summary>ul .wf-issue-severity-warning:before,.wf-issue-site-cleaning>.wf-issue-summary>ul .wf-issue-severity-critical:before,.wf-issue-site-cleaning>.wf-issue-summary>ul .wf-issue-severity-high:before,.wf-issue-site-cleaning>.wf-issue-summary>ul .wf-issue-severity-medium:before,.wf-issue-site-cleaning>.wf-issue-summary>ul .wf-issue-severity-low:before,.wf-issue-site-cleaning>.wf-issue-summary>ul .wf-issue-severity-warning:before{content:'';display:block;position:absolute;top:50%;left:0;margin-top:-5px;border:5px solid #9f9fa0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.wf-issue>.wf-issue-summary>ul .wf-issue-severity-critical:before,.wf-issue-site-cleaning>.wf-issue-summary>ul .wf-issue-severity-critical:before{border-color:#930000}.wf-issue>.wf-issue-summary>ul .wf-issue-severity-high:before,.wf-issue-site-cleaning>.wf-issue-summary>ul .wf-issue-severity-high:before{border-color:#c10000}.wf-issue>.wf-issue-summary>ul .wf-issue-severity-medium:before,.wf-issue>.wf-issue-summary>ul .wf-issue-severity-warning:before,.wf-issue-site-cleaning>.wf-issue-summary>ul .wf-issue-severity-medium:before,.wf-issue-site-cleaning>.wf-issue-summary>ul .wf-issue-severity-warning:before{border-color:#fcb214}.wf-issue>.wf-issue-summary>ul .wf-issue-severity-low:before,.wf-issue-site-cleaning>.wf-issue-summary>ul .wf-issue-severity-low:before{border-color:#3f596b}.wf-issue>.wf-issue-summary>ul>.wf-issue-controls,.wf-issue>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-controls,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls{-webkit-flex-grow:1;flex-grow:1;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-end;justify-content:flex-end;-webkit-flex-direction:row;flex-direction:row}.wf-issue>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control,.wf-issue>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;-webkit-flex-direction:column;flex-direction:column;padding-left:2rem;text-decoration:none}.wf-issue>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control:first-of-type,.wf-issue>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control:first-of-type,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control:first-of-type,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control:first-of-type{padding-left:0}.wf-issue>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control>.wf-issue-control-icon,.wf-issue>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control .wf-issue-control-icon-inactive,.wf-issue>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control .wf-issue-control-icon-active,.wf-issue>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control>.wf-issue-control-icon,.wf-issue>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control .wf-issue-control-icon-inactive,.wf-issue>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control .wf-issue-control-icon-active,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control>.wf-issue-control-icon,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control .wf-issue-control-icon-inactive,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control .wf-issue-control-icon-active,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control>.wf-issue-control-icon,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control .wf-issue-control-icon-inactive,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control .wf-issue-control-icon-active{height:20px}.wf-issue>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control>.wf-issue-control-icon path,.wf-issue>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control .wf-issue-control-icon-inactive path,.wf-issue>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control .wf-issue-control-icon-active path,.wf-issue>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control>.wf-issue-control-icon path,.wf-issue>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control .wf-issue-control-icon-inactive path,.wf-issue>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control .wf-issue-control-icon-active path,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control>.wf-issue-control-icon path,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control .wf-issue-control-icon-inactive path,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control .wf-issue-control-icon-active path,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control>.wf-issue-control-icon path,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control .wf-issue-control-icon-inactive path,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control .wf-issue-control-icon-active path{fill:#9e9e9e;fill-rule:nonzero}.wf-issue>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control>.wf-issue-control-label,.wf-issue>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control>.wf-issue-control-label,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control>.wf-issue-control-label,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control>.wf-issue-control-label{padding-top:0.65rem;font-size:0.7rem;font-weight:500;text-transform:uppercase;color:#9e9e9e}.wf-issue>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control:hover>.wf-issue-control-icon path,.wf-issue>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control:hover .wf-issue-control-icon-inactive path,.wf-issue>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control:hover .wf-issue-control-icon-active path,.wf-issue>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control:hover>.wf-issue-control-icon path,.wf-issue>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control:hover .wf-issue-control-icon-inactive path,.wf-issue>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control:hover .wf-issue-control-icon-active path,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control:hover>.wf-issue-control-icon path,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control:hover .wf-issue-control-icon-inactive path,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control:hover .wf-issue-control-icon-active path,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control:hover>.wf-issue-control-icon path,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control:hover .wf-issue-control-icon-inactive path,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control:hover .wf-issue-control-icon-active path{fill:#00709e}.wf-issue>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control:hover>.wf-issue-control-label,.wf-issue>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control:hover>.wf-issue-control-label,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control:hover>.wf-issue-control-label,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control:hover>.wf-issue-control-label{color:#00709e}.wf-issue>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls{margin-top:1rem;-webkit-justify-content:flex-start;justify-content:flex-start}.wf-issue .wf-issue-control-icon-active,.wf-issue-site-cleaning .wf-issue-control-icon-active{display:none}.wf-issue .wf-issue-control-icon-inactive,.wf-issue-site-cleaning .wf-issue-control-icon-inactive{display:block}.wf-issue>.wf-issue-detail,.wf-issue-site-cleaning>.wf-issue-detail{display:none;padding:1.5rem;border-top:1px solid #e2e2e2}.wf-issue>.wf-issue-detail .wf-issue-detail-spacer,.wf-issue-site-cleaning>.wf-issue-detail .wf-issue-detail-spacer{height:1rem;margin:0;padding:0}.wf-issue>.wf-issue-detail .wf-issue-detail-controls,.wf-issue-site-cleaning>.wf-issue-detail .wf-issue-detail-controls{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:row;flex-direction:row;margin:0;margin-top:1rem}.wf-issue>.wf-issue-detail .wf-issue-detail-controls>*,.wf-issue-site-cleaning>.wf-issue-detail .wf-issue-detail-controls>*{margin-left:1rem}.wf-issue>.wf-issue-detail .wf-issue-detail-controls>*:first-of-type,.wf-issue-site-cleaning>.wf-issue-detail .wf-issue-detail-controls>*:first-of-type{margin-left:0}@media (max-width: 767px){.wf-issue>.wf-issue-detail .wf-issue-detail-controls,.wf-issue-site-cleaning>.wf-issue-detail .wf-issue-detail-controls{-webkit-align-items:flex-start;align-items:flex-start;-webkit-flex-direction:column;flex-direction:column}.wf-issue>.wf-issue-detail .wf-issue-detail-controls>*,.wf-issue-site-cleaning>.wf-issue-detail .wf-issue-detail-controls>*{margin-left:0;margin-top:0.5rem}.wf-issue>.wf-issue-detail .wf-issue-detail-controls>*:first-of-type,.wf-issue-site-cleaning>.wf-issue-detail .wf-issue-detail-controls>*:first-of-type{margin-top:0}}.wf-issue.wf-active>.wf-issue-summary>ul>.wf-issue-controls .wf-issue-control-show-details>.wf-issue-control-icon path,.wf-issue.wf-active>.wf-issue-summary>ul>.wf-issue-controls .wf-issue-control-show-details .wf-issue-control-icon-inactive path,.wf-issue.wf-active>.wf-issue-summary>ul>.wf-issue-controls .wf-issue-control-show-details .wf-issue-control-icon-active path,.wf-issue-site-cleaning.wf-active>.wf-issue-summary>ul>.wf-issue-controls .wf-issue-control-show-details>.wf-issue-control-icon path,.wf-issue-site-cleaning.wf-active>.wf-issue-summary>ul>.wf-issue-controls .wf-issue-control-show-details .wf-issue-control-icon-inactive path,.wf-issue-site-cleaning.wf-active>.wf-issue-summary>ul>.wf-issue-controls .wf-issue-control-show-details .wf-issue-control-icon-active path{fill:#00709e}.wf-issue.wf-active>.wf-issue-summary>ul>.wf-issue-controls .wf-issue-control-show-details>.wf-issue-control-label,.wf-issue-site-cleaning.wf-active>.wf-issue-summary>ul>.wf-issue-controls .wf-issue-control-show-details>.wf-issue-control-label{color:#00709e}.wf-issue.wf-active>.wf-issue-summary>ul>.wf-issue-controls .wf-issue-control-icon-inactive,.wf-issue-site-cleaning.wf-active>.wf-issue-summary>ul>.wf-issue-controls .wf-issue-control-icon-inactive{display:none}.wf-issue.wf-active>.wf-issue-summary>ul>.wf-issue-controls .wf-issue-control-icon-active,.wf-issue-site-cleaning.wf-active>.wf-issue-summary>ul>.wf-issue-controls .wf-issue-control-icon-active{display:block}.wf-issue.wf-active>.wf-issue-detail,.wf-issue-site-cleaning.wf-active>.wf-issue-detail{display:block}.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short{-webkit-flex-basis:auto;flex-basis:auto}.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short p{padding:0;margin:0}.wf-option-scan-signatures>.wf-option-disclosure{-webkit-flex-grow:1;flex-grow:1;text-align:right}.wf-option-scan-signatures>.wf-option-disclosure>svg{transition:transform 0.15s cubic-bezier(0.175, 0.885, 0.32, 1.275)}#wf-scan-additional-signatures{display:none;margin-left:3rem;padding-left:30px;padding-bottom:1rem}#wf-scan-additional-signatures>h4{margin:0 0 0.5rem 0}#wf-scan-additional-signatures>textarea{width:300px;height:80px}.wf-scan-type-enabled{padding:1rem 0.5rem}.wf-scan-type-enabled>li:first-of-type{padding-right:1.5rem}.wf-scan-type-controls{display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:column;flex-direction:column;margin:0 -0.5rem}.wf-scan-type{display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-justify-content:center;justify-content:center;-webkit-flex-direction:row;flex-direction:row;min-width:700px}@media (max-width: 767px){.wf-scan-type{-webkit-justify-content:flex-start;justify-content:flex-start}}.wf-scan-type>li{-webkit-flex-grow:1;flex-grow:1;-webkit-flex-shrink:0;flex-shrink:0;-webkit-flex-basis:25%;flex-basis:25%;display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-justify-content:center;justify-content:center;max-width:25%;padding:0.5rem}@media (min-width: 768px){.wf-scan-type>li{-webkit-flex-shrink:1;flex-shrink:1}}.wf-scan-type>li>ul.wf-scan-type-option{-webkit-flex-grow:1;flex-grow:1;margin:0;padding:0;border:1px solid #d9d9d9;min-height:100%;cursor:pointer}.wf-scan-type>li>ul.wf-scan-type-option.wf-scan-type-option-custom{cursor:inherit}.wf-scan-type>li>ul.wf-scan-type-option>.wf-scan-type-option-name{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;-webkit-flex-direction:row;flex-direction:row;border-bottom:2px solid #d9d9d9;padding:0.5rem 1rem}.wf-scan-type>li>ul.wf-scan-type-option>.wf-scan-type-option-name .wf-option-checkbox{margin-right:0.5rem;width:20px;height:20px;min-width:20px;min-height:20px;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;line-height:20px !important;background-color:#ffffff;box-shadow:0px 0px 0px 1px rgba(185,185,185,0.75);color:#ffffff !important;font-size:25px !important}.wf-scan-type>li>ul.wf-scan-type-option>.wf-scan-type-option-name span{font-weight:400;font-size:0.95rem}.wf-scan-type>li>ul.wf-scan-type-option>.wf-scan-type-option-description{padding:1rem}.wf-scan-type>li>ul.wf-scan-type-option.wf-active>.wf-scan-type-option-name{background-color:#00709e}.wf-scan-type>li>ul.wf-scan-type-option.wf-active>.wf-scan-type-option-name .wf-option-checkbox{color:#00709e !important}.wf-scan-type>li>ul.wf-scan-type-option.wf-active>.wf-scan-type-option-name span{color:#ffffff}.wf-scan-scheduling-manual{display:none;margin-left:3rem;padding-left:30px}.wf-scan-scheduling-manual.wf-active{display:block}.wf-scan-scheduling-manual>li{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:row;flex-direction:row}.wf-scan-scheduling-manual .wf-scan-scheduling-manual-presets-label{padding-right:1rem}.wf-scan-scheduling-manual .wf-scan-scheduling-manual-presets{display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:row;flex-direction:row;margin:0;padding:0}.wf-scan-scheduling-manual .wf-scan-scheduling-manual-presets>li{margin:0;padding:0.5rem 0.7rem;text-transform:uppercase;cursor:pointer;color:#aaa;font-weight:400;border-top:1px solid #bfbfbf;border-bottom:1px solid #bfbfbf;border-right:1px solid #bfbfbf}.wf-scan-scheduling-manual .wf-scan-scheduling-manual-presets>li:first-of-type{border-left:1px solid #bfbfbf;-moz-border-radius-topleft:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px}.wf-scan-scheduling-manual .wf-scan-scheduling-manual-presets>li:last-of-type{-moz-border-radius-topright:6px;-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-moz-border-radius-bottomright:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px}.wf-scan-scheduling-manual .wf-scan-scheduling-manual-presets>li.wf-active{color:#ffffff;background-color:#00709e}.wf-scan-scheduling-manual-preset-options .wfselect2-container{min-width:100px}.wf-scan-scheduling-manual-preset-options:not(.wf-active),.wf-scan-scheduling-manual-custom-options:not(.wf-active){display:none !important}.wf-scan-scheduling-manual-custom-options{padding-bottom:1rem}.wf-schedule-times-wrapper{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;-webkit-flex-direction:row;flex-direction:row;margin-top:1rem}@media (min-width: 768px){.wf-schedule-times-wrapper{margin-top:0.25rem}}.wf-schedule-times-wrapper:first-of-type{margin-top:0}@media (min-width: 768px){.wf-schedule-times-wrapper:first-of-type{margin-top:1rem}}.wf-schedule-times-wrapper>*{-webkit-flex-grow:1;flex-grow:1;min-width:0}.wf-schedule-times-wrapper>*:first-child{-webkit-flex-grow:0;flex-grow:0;min-width:initial;padding-right:0.25rem}.wf-schedule-times-wrapper .wf-schedule-period{font-weight:500;padding:0.5rem 0.7rem}.wf-schedule-times{display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:row;flex-direction:row}.wf-schedule-times>li{margin:0;padding:0.5rem 0.7rem;text-transform:uppercase;cursor:pointer;color:#aaa;font-weight:400;border-top:1px solid #bfbfbf;border-bottom:1px solid #bfbfbf;border-right:1px solid #bfbfbf}.wf-schedule-times>li:first-of-type{border-left:1px solid #bfbfbf;-moz-border-radius-topleft:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px}.wf-schedule-times>li:last-of-type{-moz-border-radius-topright:6px;-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-moz-border-radius-bottomright:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px}.wf-schedule-times>li.wf-active{color:#ffffff;background-color:#00709e}.wf-issue-control-ignore-menu{position:absolute;z-index:9999;background-color:#ffffff;border:1px solid #bfbfbf}.wf-issue-control-ignore-menu>li{padding:0.5rem 1rem;margin:0;border-top:1px solid #bfbfbf;cursor:pointer}.wf-issue-control-ignore-menu>li:hover{color:#ffffff;background-color:#00709e}.wf-issue-control-ignore-menu>li:first-of-type{border-top:0}#wf-scan-failed.wf-alert.wf-alert-danger{background-color:#ffe470;border-color:#ffd10a;border-radius:0}#wf-scan-failed.wf-alert.wf-alert-danger pre{white-space:normal}#wf-scan-failed.wf-alert.wf-alert-danger svg{width:50px;height:50px;margin-right:1rem}#wf-scan-failed.wf-alert.wf-alert-danger svg path{fill:#da9603}#wf-scan-failed.wf-alert.wf-alert-danger h4{margin:0}#wf-scan-failed.wf-alert.wf-alert-danger p{margin-top:0.25rem;margin-bottom:0}#wf-scan-failed.wf-alert.wf-alert-danger .wf-btn.wf-btn-default{border-color:#ffffff;background-color:#ffffff;color:#000000}#wf-site-cleaning-bottom h3{color:#00709e;font-weight:300;font-size:1.5rem;margin:1rem 0}#wf-site-cleaning-bottom p{max-width:750px}#wfTwoFactorQRCodeTable{width:175px;height:175px;margin:0 auto}@media (min-width: 500px){#wfTwoFactorQRCodeTable{width:256px;height:256px}}#wfTwoFactorRecoveryCodes{list-style-type:none}#wfTwoFactorRecoveryCodes li{font-family:monospace;text-align:center}#wfTwoFactorDownload .dashicons{line-height:26px}.wf-twofactor-delete{font-size:1.5rem}.wf-twofactor-delete a{text-decoration:none;color:#333}.wf-twofactor-delete a i{font-size:1.5rem}.wf-table.wf-table-twofactor>tbody>tr>td{vertical-align:middle}.wf-form-twofactor{max-width:400px}.wf-form-twofactor .wf-radio label{padding-left:0}#twofactor .wf-block-list>li{padding:.8rem 1.5rem;min-height:0px}#twofactor .wf-block-list .wf-form-control{margin:0px 0px}.wf-block-list .wf-block-list-title{font-weight:bold;font-size:0.9rem}.wf-block-list .wf-block-list-subtitle{font-weight:bold;font-size:0.85rem;color:#008cc1}#wfTwoFacUsers{margin:0 auto 1.5rem}#wf-tools-two-factor #wf-two-factor-img1,#wf-tools-two-factor #wf-two-factor-img2,#wf-all-options #wf-two-factor-img1,#wf-all-options #wf-two-factor-img2{display:inline}#wf-tools-two-factor #wf-two-factor-img1,#wf-all-options #wf-two-factor-img1{max-width:316px}#wf-tools-two-factor #wf-two-factor-img2,#wf-all-options #wf-two-factor-img2{max-width:270px}#wfUsername{max-width:568px}@media screen and (max-width: 782px){#wf-tools-two-factor #wf-two-factor-img1,#wf-tools-two-factor #wf-two-factor-img2,#wf-all-options #wf-two-factor-img1,#wf-all-options #wf-two-factor-img2{display:block;margin:0px auto 20px}}#wordfenceTwoFactorLegacy,#wordfenceTwoFactorModern{background:#fff;border-left:4px solid #00709e;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);margin-bottom:0.5rem;padding:1px 13px}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}label.wf-plain{font-weight:normal}label.wf-control-label.wf-disabled{pointer-events:none}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:1.5rem;font-size:14px;line-height:1.42857;color:#555}.wf-form-control{display:block;width:100%;height:38px;padding:.5rem 1.25rem;font-size:14px;line-height:1.42857;color:#555;background-color:#fff;background-image:none;border:1px solid #ddd;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;-o-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s}.wf-form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.wf-form-control::-moz-placeholder{color:#bfbfbf;opacity:1}.wf-form-control:-ms-input-placeholder{color:#bfbfbf}.wf-form-control::-webkit-input-placeholder{color:#bfbfbf}.wf-form-control::-ms-expand{border:0;background-color:transparent}.wf-form-control[disabled],.wf-form-control[readonly],fieldset[disabled] .wf-form-control{background-color:#e2e2e2;opacity:1}.wf-form-control[disabled],.wf-form-control[readonly],fieldset[disabled] .wf-form-control{cursor:not-allowed;pointer-events:none}textarea.wf-form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio: 0){input[type="date"].wf-form-control,input[type="time"].wf-form-control,input[type="datetime-local"].wf-form-control,input[type="month"].wf-form-control{line-height:38px}input[type="date"].wf-input-sm,.wf-input-group-sm input[type="date"],input[type="time"].wf-input-sm,.wf-input-group-sm input[type="time"],input[type="datetime-local"].wf-input-sm,.wf-input-group-sm input[type="datetime-local"],input[type="month"].wf-input-sm,.wf-input-group-sm input[type="month"]{line-height:30px}input[type="date"].wf-input-lg,.wf-input-group-lg input[type="date"],input[type="time"].wf-input-lg,.wf-input-group-lg input[type="time"],input[type="datetime-local"].wf-input-lg,.wf-input-group-lg input[type="datetime-local"],input[type="month"].wf-input-lg,.wf-input-group-lg input[type="month"]{line-height:46px}}.wf-form-group{margin-bottom:8px}.wf-form-group.wf-sub-group label{color:#666666;font-weight:normal;padding-left:20px}.wf-form-group.wf-focus{border-left:4px solid #11967a;padding-bottom:8px;background-color:#e5e5e5}.wf-form-group.wf-focus label{margin-left:-4px}.wf-radio,.wf-checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.wf-radio label,.wf-checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.wf-radio input[type="radio"],.wf-radio-inline input[type="radio"],.wf-checkbox input[type="checkbox"],.wf-checkbox-inline input[type="checkbox"]{margin-top:4px \9}.wf-radio-offset{padding-left:29px}@media (min-width: 768px){.wf-radio-offset{padding-left:20px}}.wf-radio+.wf-radio,.wf-checkbox+.wf-checkbox{margin-top:-5px}.wf-radio-inline,.wf-checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.wf-radio-inline+.wf-radio-inline,.wf-checkbox-inline+.wf-checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="radio"][readonly],input[type="radio"].wf-disabled,fieldset[disabled] input[type="radio"],input[type="checkbox"][disabled],input[type="checkbox"][readonly],input[type="checkbox"].wf-disabled,fieldset[disabled] input[type="checkbox"]{cursor:not-allowed;pointer-events:none}.wf-radio-inline.wf-disabled,fieldset[disabled] .wf-radio-inline,.wf-checkbox-inline.wf-disabled,fieldset[disabled] .wf-checkbox-inline{cursor:not-allowed}.wf-radio.wf-disabled label,fieldset[disabled] .wf-radio label,.wf-checkbox.wf-disabled label,fieldset[disabled] .wf-checkbox label{cursor:not-allowed;pointer-events:none}.wf-form-control-static{padding-top:1.5rem;padding-bottom:1.5rem;margin:0;line-height:1}.wf-form-control-static.wf-input-lg,.wf-form-control-static.wf-input-sm{padding-left:0;padding-right:0}.wf-input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.wf-input-sm{height:30px;line-height:30px}textarea.wf-input-sm,select[multiple].wf-input-sm{height:auto}.wf-form-group-sm .wf-form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.wf-form-group-sm select.wf-form-control{height:30px;line-height:30px}.wf-form-group-sm textarea.wf-form-control,.wf-form-group-sm select[multiple].wf-form-control{height:auto}.wf-form-group-sm .wf-form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.wf-input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33333;border-radius:6px}select.wf-input-lg{height:46px;line-height:46px}textarea.wf-input-lg,select[multiple].wf-input-lg{height:auto}.wf-form-group-lg .wf-form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.33333;border-radius:6px}.wf-form-group-lg select.wf-form-control{height:46px;line-height:46px}.wf-form-group-lg textarea.wf-form-control,.wf-form-group-lg select[multiple].wf-form-control{height:auto}.wf-form-group-lg .wf-form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.33333}.wf-has-feedback{position:relative}.wf-has-feedback .wf-form-control{padding-right:47.5px}.wf-form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:38px;height:38px;line-height:38px;text-align:center;pointer-events:none}.wf-input-lg+.wf-form-control-feedback,.wf-input-group-lg+.wf-form-control-feedback,.wf-form-group-lg .wf-form-control+.wf-form-control-feedback{width:46px;height:46px;line-height:46px}.wf-input-sm+.wf-form-control-feedback,.wf-input-group-sm+.wf-form-control-feedback,.wf-form-group-sm .wf-form-control+.wf-form-control-feedback{width:30px;height:30px;line-height:30px}.wf-has-success .wf-help-block,.wf-has-success .wf-control-label,.wf-has-success .wf-radio,.wf-has-success .wf-checkbox,.wf-has-success .wf-radio-inline,.wf-has-success .wf-checkbox-inline,.wf-has-success.wf-radio label,.wf-has-success.wf-checkbox label,.wf-has-success.wf-radio-inline label,.wf-has-success.wf-checkbox-inline label{color:#3c763d}.wf-has-success .wf-form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.wf-has-success .wf-form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168}.wf-has-success .wf-input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.wf-has-success .wf-form-control-feedback{color:#3c763d}.wf-has-warning .wf-help-block,.wf-has-warning .wf-control-label,.wf-has-warning .wf-radio,.wf-has-warning .wf-checkbox,.wf-has-warning .wf-radio-inline,.wf-has-warning .wf-checkbox-inline,.wf-has-warning.wf-radio label,.wf-has-warning.wf-checkbox label,.wf-has-warning.wf-radio-inline label,.wf-has-warning.wf-checkbox-inline label{color:#8a6d3b}.wf-has-warning .wf-form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.wf-has-warning .wf-form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b}.wf-has-warning .wf-input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.wf-has-warning .wf-form-control-feedback{color:#8a6d3b}.wf-has-error .wf-help-block,.wf-has-error .wf-control-label,.wf-has-error .wf-radio,.wf-has-error .wf-checkbox,.wf-has-error .wf-radio-inline,.wf-has-error .wf-checkbox-inline,.wf-has-error.wf-radio label,.wf-has-error.wf-checkbox label,.wf-has-error.wf-radio-inline label,.wf-has-error.wf-checkbox-inline label{color:#a94442}.wf-has-error .wf-form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.wf-has-error .wf-form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483}.wf-has-error .wf-input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.wf-has-error .wf-form-control-feedback{color:#a94442}.wf-has-feedback label ~ .wf-form-control-feedback{top:25px}.wf-has-feedback label.wf-sr-only ~ .wf-form-control-feedback{top:0}.wf-help-block{display:block;margin-top:5px;color:#737373}@media (min-width: 768px){.wf-form-inline .wf-form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.wf-form-inline .wf-form-control{display:inline-block;width:auto;vertical-align:middle}.wf-form-inline .wf-form-control-static{display:inline-block}.wf-form-inline .wf-input-group{display:inline-table;vertical-align:middle}.wf-form-inline .wf-input-group .wf-input-group-addon,.wf-form-inline .wf-input-group .wf-input-group-btn,.wf-form-inline .wf-input-group .wf-form-control{width:auto}.wf-form-inline .wf-input-group>.wf-form-control{width:100%}.wf-form-inline .wf-control-label{margin-bottom:0;vertical-align:middle}.wf-form-inline .wf-radio,.wf-form-inline .wf-checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.wf-form-inline .wf-radio label,.wf-form-inline .wf-checkbox label{padding-left:0}.wf-form-inline .wf-radio input[type="radio"],.wf-form-inline .wf-checkbox input[type="checkbox"]{position:relative;margin-left:0}.wf-form-inline .wf-has-feedback .wf-form-control-feedback{top:0}}.wf-form-horizontal .wf-radio,.wf-form-horizontal .wf-checkbox,.wf-form-horizontal .wf-radio-inline,.wf-form-horizontal .wf-checkbox-inline{margin-top:0;margin-bottom:0;padding-top:1.5rem}.wf-form-horizontal .wf-radio,.wf-form-horizontal .wf-checkbox{min-height:29px}.wf-form-horizontal .wf-form-group{margin-left:-15px;margin-right:-15px}.wf-form-horizontal .wf-form-group:before,.wf-form-horizontal .wf-form-group:after{content:" ";display:table}.wf-form-horizontal .wf-form-group:after{clear:both}@media (min-width: 768px){.wf-form-horizontal .wf-control-label{text-align:right;margin-bottom:0;padding-top:1.5rem}}.wf-form-horizontal .wf-has-feedback .wf-form-control-feedback{right:15px}@media (min-width: 768px){.wf-form-horizontal .wf-form-group-lg .wf-control-label{padding-top:11px;font-size:18px}}@media (min-width: 768px){.wf-form-horizontal .wf-form-group-sm .wf-control-label{padding-top:6px;font-size:12px}}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status .wf-block-labeled-value-value,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status .wf-block-labeled-value-value{padding-top:0}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status .wf-block-labeled-value-value .wf-fa,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status .wf-block-labeled-value-value .wf-fa{font-size:8rem}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status .wf-block-labeled-value-value svg,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status .wf-block-labeled-value-value svg{width:140px}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status .wf-block-labeled-value-label,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status .wf-block-labeled-value-label{font-size:1.3125rem;font-weight:300;line-height:1.5;padding-bottom:0}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-full-enabled,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-full-enabled{background-color:#00709e}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-full-enabled .wf-block-labeled-value-value,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-full-enabled .wf-block-labeled-value-value{color:#ffffff}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-full-enabled .wf-block-labeled-value-label,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-full-enabled .wf-block-labeled-value-label{color:#ffffff;padding:0}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-enabled .wf-block-labeled-value-value,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-enabled .wf-block-labeled-value-value{color:#11967a}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-enabled .wf-block-labeled-value-value svg,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-enabled .wf-block-labeled-value-value svg{fill:#11967a}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-enabled .wf-block-labeled-value-label,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-enabled .wf-block-labeled-value-label{color:#11967a}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-learning-mode .wf-block-labeled-value-value,#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-disabled .wf-block-labeled-value-value,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-learning-mode .wf-block-labeled-value-value,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-disabled .wf-block-labeled-value-value{color:#9f9fa0}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-learning-mode .wf-block-labeled-value-value svg,#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-disabled .wf-block-labeled-value-value svg,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-learning-mode .wf-block-labeled-value-value svg,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-disabled .wf-block-labeled-value-value svg{fill:#9f9fa0}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-learning-mode .wf-block-labeled-value-label,#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-disabled .wf-block-labeled-value-label,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-learning-mode .wf-block-labeled-value-label,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-disabled .wf-block-labeled-value-label{color:#9f9fa0}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status .wf-block-labeled-value-value .wf-fa,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status .wf-block-labeled-value-value .wf-fa{font-size:7rem}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status .wf-block-labeled-value-value svg,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status .wf-block-labeled-value-value svg{width:120px}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status .wf-block-labeled-value-label,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status .wf-block-labeled-value-label{font-size:1.15rem;font-weight:300}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status-premium .wf-block-labeled-value-value,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status-premium .wf-block-labeled-value-value{color:#00709e}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status-premium .wf-block-labeled-value-value svg,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status-premium .wf-block-labeled-value-value svg{fill:#00709e}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status-premium .wf-block-labeled-value-label,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status-premium .wf-block-labeled-value-label{color:#00709e}.wf-dashboard-item{position:relative;margin:0 auto 1rem;padding:0 1rem;box-sizing:border-box;background:#fff;box-shadow:0 0 0 1px rgba(200,215,225,0.5),0 1px 2px #e9eff3}.wf-dashboard-item .wf-dashboard-item-inner{min-height:44px;padding:1rem 0;width:100%;box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;position:relative}.wf-dashboard-item .wf-dashboard-item-inner .wf-dashboard-item-content{max-width:75%}.wf-dashboard-item .wf-dashboard-item-inner .wf-dashboard-item-content .wf-dashboard-item-title{font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:0.875rem;width:100%}.wf-dashboard-item .wf-dashboard-item-inner .wf-dashboard-item-content .wf-dashboard-item-subtitle{margin-top:.125rem;margin-bottom:.125rem;font-size:.575rem;color:#4f748e}.wf-dashboard-item .wf-dashboard-item-inner .wf-dashboard-item-action{position:absolute;top:0;right:0;height:100%;background:none;border:0;outline:0;width:48px;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;vertical-align:middle;transition:transform 0.15s cubic-bezier(0.175, 0.885, 0.32, 1.275),color 0.2s ease-in}.wf-dashboard-item .wf-dashboard-item-inner .wf-dashboard-item-action.wf-dashboard-item-action-text{width:auto}.wf-dashboard-item .wf-dashboard-item-inner .wf-dashboard-item-action.wf-dashboard-item-action-text.wf-dashboard-item-action-text-success{color:#11967a}.wf-dashboard-item .wf-dashboard-item-inner .wf-dashboard-item-action.wf-dashboard-item-action-text.wf-dashboard-item-action-text-warning{color:#930000}.wf-dashboard-item .wf-dashboard-item-inner .wf-dashboard-item-action.wf-dashboard-item-action-text.wf-dashboard-item-action-text-warning a{color:#930000}.wf-dashboard-item .wf-dashboard-item-inner .wf-dashboard-item-action .wf-dashboard-item-action-chevron{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJjaGV2cm9uLW9iamVjdCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiCgkgd2lkdGg9IjI0cHgiIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAyNCAyNCIKCSB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHBhdGggaWQ9ImNoZXZyb24iIGQ9Ik0yMCA5bC04IDgtOC04IDEuNDE0LTEuNDE0TDEyIDE0LjE3Mmw2LjU4Ni02LjU4NiIvPgo8L3N2Zz4K");background-repeat:no-repeat;background-position:center center;width:24px;height:24px;fill:#87a6bc}.wf-dashboard-item .wf-dashboard-item-inner .wf-dashboard-item-action .wf-dashboard-item-action-checkbox{background-image:url(../images/checkbox.png);background-repeat:no-repeat;background-position:left center;width:29px;height:29px}.wf-dashboard-item .wf-dashboard-item-inner .wf-dashboard-item-action .wf-dashboard-item-action-checkbox.checked{background-position:right center}.wf-dashboard-item .wf-dashboard-item-extra{display:none;margin:0 -1rem;padding:0 1rem}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list{margin:0 -1rem;padding:0;list-style:none}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-striped>li:nth-of-type(odd){background-color:#f9f9f9}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-striped>li:nth-of-type(odd).wf-notification{border-left:4px solid #f9f9f9}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-striped>li:nth-of-type(odd).wf-notification.wf-notification-warning{border-left:4px solid #fcb214}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-striped>li:nth-of-type(odd).wf-notification.wf-notification-critical{border-left:4px solid #930000}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-striped>li:nth-of-type(even){background-color:#ffffff}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-striped>li:nth-of-type(even).wf-notification{border-left:4px solid #ffffff}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-striped>li:nth-of-type(even).wf-notification.wf-notification-warning{border-left:4px solid #fcb214}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-striped>li:nth-of-type(even).wf-notification.wf-notification-critical{border-left:4px solid #930000}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list>li{display:block;min-height:44px;padding:0 1rem;margin:0;border-top:1px solid #eeeeee;box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list>li>*:first-child{-webkit-flex-grow:1;flex-grow:1;min-width:0}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-horizontal{box-sizing:border-box;margin-top:-1px;display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-align-content:flex-start;align-content:flex-start;-webkit-justify-content:space-between;justify-content:space-between;-webkit-flex-wrap:wrap;flex-wrap:wrap}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-horizontal>li{-webkit-flex-grow:1;flex-grow:1;-webkit-flex-basis:100%;flex-basis:100%;border-left:1px solid #eeeeee}@media (min-width: 768px){.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-horizontal>li{-webkit-flex-basis:50%;flex-basis:50%}}@media (min-width: 992px){.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-horizontal>li{-webkit-flex-basis:25%;flex-basis:25%}}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-horizontal>*:first-child{border-left:0}@media (min-width: 768px){.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-horizontal.wf-dashboard-item-list-equal>li{max-width:50%}}@media (min-width: 992px){.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-horizontal.wf-dashboard-item-list-equal>li{max-width:25%}}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list .wf-dashboard-item-list-state{text-align:center}@media (min-width: 1200px){.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list .wf-dashboard-item-list-state{text-align:left}}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list .wf-dashboard-item-list-state-enabled .fa{color:#11967a}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list .wf-dashboard-item-list-state-disabled .fa{color:#525355}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list .wf-dashboard-item-list-state-premium{color:#9f9fa0}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list .wf-dashboard-item-list-dismiss{padding-left:2rem;font-size:1.25rem}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list .wf-dashboard-item-list-dismiss a{color:#525355}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-labeled-count{box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;-webkit-flex-direction:column;flex-direction:column}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-labeled-count-count{font-size:3rem;line-height:3rem;color:#9f9fa0;padding:1rem}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-labeled-count-label{font-size:0.75rem;color:#9f9fa0;padding:0 1rem 1rem 1rem}.wf-dashboard-item.active .wf-dashboard-item-extra{display:block}.wf-dashboard-item.wf-dashboard-item-left .wf-dashboard-item-content{margin-left:48px}.wf-dashboard-item.wf-dashboard-item-left .wf-dashboard-item-action{right:auto;left:0px}.wf-dashboard-item.disabled .wf-dashboard-item-content .wf-dashboard-item-title{color:#aaaaaa}.wf-dashboard-item.disabled .wf-dashboard-item-content .wf-dashboard-item-subtitle{color:#8ea6be}.wf-dashboard-item-flex-wrapper{display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:column;flex-direction:column}.wf-dashboard-item-flex-wrapper .wf-dashboard-item{-webkit-flex-grow:1;flex-grow:1;width:100%}.wf-notifications-empty{font-size:0.9rem;color:#9f9fa0}.wf-dashboard-graph-wrapper{width:100%}.wf-dashboard-badge{display:inline-block;min-width:10px;padding:3px 7px;margin-left:0.5rem;font-size:12px;font-weight:bold;color:#fff;line-height:1;vertical-align:middle;white-space:nowrap;text-align:center;background-color:#fcb214;border-radius:10px}.wf-dashboard-badge:empty{display:none}.wf-btn .wf-dashboard-badge{position:relative;top:-1px}.wf-btn-xs .wf-dashboard-badge,.wf-btn-group-xs>.wf-btn .wf-dashboard-badge,.wf-btn-group-xs>.wf-btn .wf-dashboard-badge{top:0;padding:1px 5px}.wf-list-group-item.active>.wf-dashboard-badge,.wf-nav-pills>.active>a>.wf-dashboard-badge{color:#00709e;background-color:#fff}.wf-list-group-item>.wf-dashboard-badge{float:right}.wf-list-group-item>.wf-dashboard-badge+.wf-dashboard-badge{margin-right:5px}.wf-nav-pills>li>a>.wf-dashboard-badge{margin-left:3px}.wf-dashboard-toggle-btns{text-align:center}.wf-dashboard-toggle-btns .wf-pagination{margin:1rem 1rem 0.5rem 1rem}.wf-dashboard-show-more{position:relative;font-size:14px;color:#959595;text-align:center;line-height:1rem;background:#ffffff;width:60%;margin:20px auto 0 auto}.wf-dashboard-show-more:before{display:inline-block;content:"";position:absolute;height:1px;background:#dddddd;top:50%;width:100%;left:0;right:0}.wf-dashboard-show-more a{display:inline-block;position:relative;padding:0 10px;background-color:#ffffff}.wf-ips,.wf-recent-logins,.wf-countries{max-height:30rem;overflow-y:auto;margin-bottom:20px}.wf-ips .wf-table,.wf-recent-logins .wf-table,.wf-countries .wf-table{margin-bottom:0}.wf-dashboard-last-updated{font-style:italic;font-size:0.6rem;text-align:center;padding-bottom:1rem;margin:0}.wf-dashboard-navigation .wf-block-navigation-option-content{padding:1rem 0 1rem 1rem}@media (min-width: 768px){.wf-dashboard-navigation .wf-block-navigation-option-content{padding:1.5rem 0 1.5rem 1rem}}.wf-dashboard-navigation .wf-block-navigation-option-content h4{margin:0 0 0.25rem 0}.wf-dashboard-navigation .wf-block-navigation-option-content p{margin:0 0 0.45rem 0}.wf-blocks-summary{width:100%;margin:1rem 0;border-spacing:0}.wf-blocks-summary>thead>tr>th,.wf-blocks-summary>tbody>tr>th,.wf-blocks-summary>tr>th{font-weight:600;padding:0.25rem 0.25rem;white-space:nowrap}@media (min-width: 768px){.wf-blocks-summary>thead>tr>th,.wf-blocks-summary>tbody>tr>th,.wf-blocks-summary>tr>th{padding:0.25rem 1rem}}.wf-blocks-summary>thead>tr>th.wf-premium,.wf-blocks-summary>tbody>tr>th.wf-premium,.wf-blocks-summary>tr>th.wf-premium{border-top:2px solid #00709e;border-left:2px solid #00709e;border-right:2px solid #00709e;border-top-left-radius:0.5rem;border-top-right-radius:0.5rem;color:#aaa}.wf-blocks-summary>thead>tr>th,.wf-blocks-summary>tr>th{text-align:center}.wf-blocks-summary>thead>tr>th:first-child,.wf-blocks-summary>tbody>tr>th{text-align:right}.wf-blocks-summary>tbody>tr>td,.wf-blocks-summary>tfoot>tr>td,.wf-blocks-summary>tr>td{text-align:center;padding:0.25rem 0.25rem}@media (min-width: 768px){.wf-blocks-summary>tbody>tr>td,.wf-blocks-summary>tfoot>tr>td,.wf-blocks-summary>tr>td{padding:0.25rem 1rem}}.wf-blocks-summary>tbody>tr>td.wf-premium,.wf-blocks-summary>tfoot>tr>td.wf-premium,.wf-blocks-summary>tr>td.wf-premium{border-left:2px solid #00709e;border-right:2px solid #00709e;color:#aaa}.wf-blocks-summary>tfoot>tr>td.wf-premium,.wf-blocks-summary>tr:last-child>td.wf-premium{border-bottom:2px solid #00709e;border-bottom-left-radius:0.5rem;border-bottom-right-radius:0.5rem;background-color:#00709e;color:#fff}#howGetIPs-trusted-proxies{display:none}ul.wf-option.wf-option-howgetips .wf-option-howgetips-details{display:-webkit-flex;display:flex;-webkit-align-items:flex-start;align-items:flex-start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:column;flex-direction:column;font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:0.8rem;margin-top:0.5rem}.wf-central-dashboard{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-align-content:stretch;align-content:stretch;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-wrap:nowrap;flex-wrap:nowrap}.wf-central-dashboard .wf-central-dashboard-logo{width:80px;min-width:80px;margin:10px 0}.wf-central-dashboard .wf-central-dashboard-copy{padding-left:20px}@media (min-width: 768px){.wf-central-dashboard{-webkit-flex-direction:row;flex-direction:row;-webkit-align-items:center;align-items:center}}table.wf-table{background-color:transparent;border-collapse:collapse;border-spacing:0}table.wf-table td,table.wf-table th{padding:0}.wf-table caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}.wf-table th{text-align:left}.wf-table{width:100%;max-width:100%;margin-bottom:20px}.wf-table>thead>tr>th,.wf-table>thead>tr>td,.wf-table>tbody>tr>th,.wf-table>tbody>tr>td,.wf-table>tfoot>tr>th,.wf-table>tfoot>tr>td{padding:8px;line-height:1.42857;vertical-align:top;border-top:1px solid #ddd}.wf-table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.wf-table>caption+thead>tr:first-child>th,.wf-table>caption+thead>tr:first-child>td,.wf-table>colgroup+thead>tr:first-child>th,.wf-table>colgroup+thead>tr:first-child>td,.wf-table>thead:first-child>tr:first-child>th,.wf-table>thead:first-child>tr:first-child>td{border-top:0}.wf-table>tbody+tbody{border-top:2px solid #ddd}.wf-table .wf-table{background-color:#fff}.wf-table-condensed>thead>tr>th,.wf-table-condensed>thead>tr>td,.wf-table-condensed>tbody>tr>th,.wf-table-condensed>tbody>tr>td,.wf-table-condensed>tfoot>tr>th,.wf-table-condensed>tfoot>tr>td{padding:5px}.wf-table-bordered{border:1px solid #ddd}.wf-table-bordered>thead>tr>th,.wf-table-bordered>thead>tr>td,.wf-table-bordered>tbody>tr>th,.wf-table-bordered>tbody>tr>td,.wf-table-bordered>tfoot>tr>th,.wf-table-bordered>tfoot>tr>td{border:1px solid #ddd}.wf-table-bordered>thead>tr>th,.wf-table-bordered>thead>tr>td{border-bottom-width:2px}.wf-table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.wf-table-hover>tbody>tr:hover{background-color:#f5f5f5}table.wf-table col[class*="col-"]{position:static;float:none;display:table-column}table.wf-table td[class*="col-"],table.wf-table th[class*="col-"]{position:static;float:none;display:table-cell}.wf-table>thead>tr>td.active,.wf-table>thead>tr>th.active,.wf-table>thead>tr.active>td,.wf-table>thead>tr.active>th,.wf-table>tbody>tr>td.active,.wf-table>tbody>tr>th.active,.wf-table>tbody>tr.active>td,.wf-table>tbody>tr.active>th,.wf-table>tfoot>tr>td.active,.wf-table>tfoot>tr>th.active,.wf-table>tfoot>tr.active>td,.wf-table>tfoot>tr.active>th{background-color:#f5f5f5}.wf-table-hover>tbody>tr>td.active:hover,.wf-table-hover>tbody>tr>th.active:hover,.wf-table-hover>tbody>tr.active:hover>td,.wf-table-hover>tbody>tr:hover>.active,.wf-table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.wf-table>thead>tr>td.success,.wf-table>thead>tr>th.success,.wf-table>thead>tr.success>td,.wf-table>thead>tr.success>th,.wf-table>tbody>tr>td.success,.wf-table>tbody>tr>th.success,.wf-table>tbody>tr.success>td,.wf-table>tbody>tr.success>th,.wf-table>tfoot>tr>td.success,.wf-table>tfoot>tr>th.success,.wf-table>tfoot>tr.success>td,.wf-table>tfoot>tr.success>th{background-color:#dff0d8}.wf-table-hover>tbody>tr>td.success:hover,.wf-table-hover>tbody>tr>th.success:hover,.wf-table-hover>tbody>tr.success:hover>td,.wf-table-hover>tbody>tr:hover>.success,.wf-table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.wf-table>thead>tr>td.info,.wf-table>thead>tr>th.info,.wf-table>thead>tr.info>td,.wf-table>thead>tr.info>th,.wf-table>tbody>tr>td.info,.wf-table>tbody>tr>th.info,.wf-table>tbody>tr.info>td,.wf-table>tbody>tr.info>th,.wf-table>tfoot>tr>td.info,.wf-table>tfoot>tr>th.info,.wf-table>tfoot>tr.info>td,.wf-table>tfoot>tr.info>th{background-color:#d9edf7}.wf-table-hover>tbody>tr>td.info:hover,.wf-table-hover>tbody>tr>th.info:hover,.wf-table-hover>tbody>tr.info:hover>td,.wf-table-hover>tbody>tr:hover>.info,.wf-table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.wf-table>thead>tr>td.warning,.wf-table>thead>tr>th.warning,.wf-table>thead>tr.warning>td,.wf-table>thead>tr.warning>th,.wf-table>tbody>tr>td.warning,.wf-table>tbody>tr>th.warning,.wf-table>tbody>tr.warning>td,.wf-table>tbody>tr.warning>th,.wf-table>tfoot>tr>td.warning,.wf-table>tfoot>tr>th.warning,.wf-table>tfoot>tr.warning>td,.wf-table>tfoot>tr.warning>th{background-color:#fcf8e3}.wf-table-hover>tbody>tr>td.warning:hover,.wf-table-hover>tbody>tr>th.warning:hover,.wf-table-hover>tbody>tr.warning:hover>td,.wf-table-hover>tbody>tr:hover>.warning,.wf-table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.wf-table>thead>tr>td.danger,.wf-table>thead>tr>th.danger,.wf-table>thead>tr.danger>td,.wf-table>thead>tr.danger>th,.wf-table>tbody>tr>td.danger,.wf-table>tbody>tr>th.danger,.wf-table>tbody>tr.danger>td,.wf-table>tbody>tr.danger>th,.wf-table>tfoot>tr>td.danger,.wf-table>tfoot>tr>th.danger,.wf-table>tfoot>tr.danger>td,.wf-table>tfoot>tr.danger>th{background-color:#f2dede}.wf-table-hover>tbody>tr>td.danger:hover,.wf-table-hover>tbody>tr>th.danger:hover,.wf-table-hover>tbody>tr.danger:hover>td,.wf-table-hover>tbody>tr:hover>.danger,.wf-table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.wf-table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width: 767px){.wf-table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.wf-table-responsive>.wf-table{margin-bottom:0}.wf-table-responsive>.wf-table>thead>tr>th,.wf-table-responsive>.wf-table>thead>tr>td,.wf-table-responsive>.wf-table>tbody>tr>th,.wf-table-responsive>.wf-table>tbody>tr>td,.wf-table-responsive>.wf-table>tfoot>tr>th,.wf-table-responsive>.wf-table>tfoot>tr>td{white-space:nowrap}.wf-table-responsive>.wf-table-bordered{border:0}.wf-table-responsive>.wf-table-bordered>thead>tr>th:first-child,.wf-table-responsive>.wf-table-bordered>thead>tr>td:first-child,.wf-table-responsive>.wf-table-bordered>tbody>tr>th:first-child,.wf-table-responsive>.wf-table-bordered>tbody>tr>td:first-child,.wf-table-responsive>.wf-table-bordered>tfoot>tr>th:first-child,.wf-table-responsive>.wf-table-bordered>tfoot>tr>td:first-child{border-left:0}.wf-table-responsive>.wf-table-bordered>thead>tr>th:last-child,.wf-table-responsive>.wf-table-bordered>thead>tr>td:last-child,.wf-table-responsive>.wf-table-bordered>tbody>tr>th:last-child,.wf-table-responsive>.wf-table-bordered>tbody>tr>td:last-child,.wf-table-responsive>.wf-table-bordered>tfoot>tr>th:last-child,.wf-table-responsive>.wf-table-bordered>tfoot>tr>td:last-child{border-right:0}.wf-table-responsive>.wf-table-bordered>tbody>tr:last-child>th,.wf-table-responsive>.wf-table-bordered>tbody>tr:last-child>td,.wf-table-responsive>.wf-table-bordered>tfoot>tr:last-child>th,.wf-table-responsive>.wf-table-bordered>tfoot>tr:last-child>td{border-bottom:0}}.wf-sortable{position:relative;padding-right:2rem !important}.wf-sortable .wf-sorted-ascending,.wf-sortable .wf-sorted-descending{display:none;position:absolute;right:1rem;top:50%;transform:translateY(-50%)}.wf-sortable.wf-unsorted:hover .wf-sorted-ascending{display:block}.wf-sortable.wf-unsorted,.wf-sortable.wf-sorted-ascending,.wf-sortable.wf-sorted-descending{cursor:pointer}.wf-sortable.wf-unsorted:hover,.wf-sortable.wf-sorted-ascending:hover,.wf-sortable.wf-sorted-descending:hover{background-color:#e0e0e0}.wf-sortable.wf-sorted-ascending,.wf-sortable.wf-sorted-descending{background-color:#e0e0e0}.wf-sortable.wf-sorted-ascending .wf-sorted-ascending{display:block}.wf-sortable.wf-sorted-descending .wf-sorted-descending{display:block}.wf-nav{margin-bottom:0;padding-left:0;list-style:none}.wf-nav:before,.wf-nav:after{content:" ";display:table}.wf-nav:after{clear:both}.wf-nav>li{position:relative;display:block}.wf-nav>li>a{position:relative;display:block;padding:8px 12px}.wf-nav>li>a:hover,.wf-nav>li>a:focus{text-decoration:none;background-color:#e2e2e2}.wf-nav>li.wf-disabled>a{color:#777}.wf-nav>li.wf-disabled>a:hover,.wf-nav>li.wf-disabled>a:focus{color:#777;text-decoration:none;background-color:transparent;cursor:not-allowed}.wf-nav .wf-open>a,.wf-nav .wf-open>a:hover,.wf-nav .wf-open>a:focus{background-color:#e2e2e2;border-color:#00709e}.wf-nav>li>a>img{max-width:none}.wf-nav-tabs{border-bottom:1px solid #d0d0d0}.wf-nav-tabs>li{float:left;margin-bottom:-1px}.wf-nav-tabs>li>a{margin-right:2px;line-height:1.42857;border:1px solid transparent;border-radius:4px 4px 0 0}.wf-nav-tabs>li>a:hover{border-color:#e2e2e2 #e2e2e2 #d0d0d0}.wf-nav-tabs>li.wf-active>a,.wf-nav-tabs>li.wf-active>a:hover,.wf-nav-tabs>li.wf-active>a:focus{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.wf-nav-pills>li{float:left}.wf-nav-pills>li>a{border-radius:4px;text-decoration:none;position:relative;display:block;padding:8px 12px}.wf-nav-pills>li>a:hover,.wf-nav-pills>li>a:focus{text-decoration:none !important;background-color:#e2e2e2}.wf-nav-pills>li+li{margin-left:2px}.wf-nav-pills>li.wf-active>a,.wf-nav-pills>li.wf-active>a:hover,.wf-nav-pills>li.wf-active>a:focus{color:#fff;background-color:#00709e}.wf-nav-pills.wf-nav-pills-bordered>li>a{border:1px solid #e2e2e2}.wf-nav-pills.wf-nav-pills-connected>li>a{border-radius:0;border-right-width:0px}.wf-nav-pills.wf-nav-pills-connected>li+li{margin-left:0}.wf-nav-pills.wf-nav-pills-connected>li.active+li>a{border-left-width:0px}.wf-nav-pills.wf-nav-pills-connected>li:first-of-type>a{-moz-border-radius:4px 0 0 4px;-webkit-border-radius:4px;border-radius:4px 0 0 4px}.wf-nav-pills.wf-nav-pills-connected>li:last-of-type>a{-moz-border-radius:0 4px 4px 0;-webkit-border-radius:0;border-radius:0 4px 4px 0;border-right-width:1px}.wf-nav-stacked>li{float:none}.wf-nav-stacked>li+li{margin-top:2px;margin-left:0}.wf-nav-justified,.wf-nav-tabs.wf-nav-justified{width:100%}.wf-nav-justified>li,.wf-nav-tabs.wf-nav-justified>li{float:none}.wf-nav-justified>li>a,.wf-nav-tabs.wf-nav-justified>li>a{text-align:center;margin-bottom:5px}.wf-nav-justified>.wf-dropdown .wf-dropdown-menu{top:auto;left:auto}@media (min-width: 768px){.wf-nav-justified>li,.wf-nav-tabs.wf-nav-justified>li{display:table-cell;width:1%}.wf-nav-justified>li>a,.wf-nav-tabs.wf-nav-justified>li>a{margin-bottom:0}}.wf-nav-tabs-justified,.wf-nav-tabs.wf-nav-justified{border-bottom:0}.wf-nav-tabs-justified>li>a,.wf-nav-tabs.wf-nav-justified>li>a{margin-right:0;border-radius:4px}.wf-nav-tabs-justified>.wf-active>a,.wf-nav-tabs.wf-nav-justified>.wf-active>a,.wf-nav-tabs-justified>.wf-active>a:hover,.wf-nav-tabs.wf-nav-justified>.wf-active>a:hover,.wf-nav-tabs-justified>.wf-active>a:focus,.wf-nav-tabs.wf-nav-justified>.wf-active>a:focus{border:1px solid #ddd}@media (min-width: 768px){.wf-nav-tabs-justified>li>a,.wf-nav-tabs.wf-nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.wf-nav-tabs-justified>.wf-active>a,.wf-nav-tabs.wf-nav-justified>.wf-active>a,.wf-nav-tabs-justified>.wf-active>a:hover,.wf-nav-tabs.wf-nav-justified>.wf-active>a:hover,.wf-nav-tabs-justified>.wf-active>a:focus,.wf-nav-tabs.wf-nav-justified>.wf-active>a:focus{border-bottom-color:#fff}}.wf-tab-content>.wf-tab-pane{display:none}.wf-tab-content>.wf-active{display:block}.wf-nav-tabs .wf-dropdown-menu{margin-top:-1px;-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0}.wf-navbar-brand{float:left;padding:12px 8px;font-size:18px;line-height:20px;margin:10px 0 0 0}.wf-navbar-brand:hover,.wf-navbar-brand:focus{text-decoration:none}.wf-navbar-brand>img{display:block}@media (min-width: 768px){.navbar>.container .wf-navbar-brand,.navbar>.container-fluid .wf-navbar-brand{margin-left:-8px}}.wf-caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}.wf-dropup,.wf-dropdown{position:relative}.wf-dropdown-toggle:focus{outline:0}.wf-dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;text-align:left;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box}.wf-dropdown-menu .wf-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.wf-dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857;color:#333;text-decoration:none;white-space:nowrap}.wf-dropdown-menu>li>a:hover,.wf-dropdown-menu>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.wf-dropdown-menu>.wf-active>a,.wf-dropdown-menu>.wf-active>a:hover,.wf-dropdown-menu>.wf-active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#00709e}.wf-dropdown-menu>.wf-disabled>a,.wf-dropdown-menu>.wf-disabled>a:hover,.wf-dropdown-menu>.wf-disabled>a:focus{color:#777}.wf-dropdown-menu>.wf-disabled>a:hover,.wf-dropdown-menu>.wf-disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);cursor:not-allowed}.wf-open>.wf-dropdown-menu{display:block}.wf-open>a{outline:0}.wf-dropdown-menu-right{left:auto;right:0}.wf-dropdown-menu-left{left:0;right:auto}.wf-dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857;color:#777;white-space:nowrap}.wf-dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.wf-pull-right>.wf-dropdown-menu{right:0;left:auto}.wf-dropup .wf-caret,.wf-navbar-fixed-bottom .wf-dropdown .wf-caret{border-top:0;border-bottom:4px dashed;border-bottom:4px solid \9;content:""}.wf-dropup .wf-dropdown-menu,.wf-navbar-fixed-bottom .wf-dropdown .wf-dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width: 768px){.wf-navbar-right .wf-dropdown-menu{right:0;left:auto}.wf-navbar-right .wf-dropdown-menu-left{left:0;right:auto}}.wf-mobile-dropdown{border:1px solid #ccc;margin-left:.5em;padding:5px 10px;font-size:14px;line-height:24px;margin:10px 10px 0 0;background:#f1f1f1;color:#000;font-weight:600;text-decoration:none}.wf-blocks-table tbody tr.wf-editing,.wf-blocks-table tbody tr.wf-editing td{background-color:#fffbd8}.wf-blocked-countries-section{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-align-content:stretch;align-content:stretch;-webkit-flex-wrap:nowrap;flex-wrap:nowrap}.wf-blocked-countries-section-title{font-size:1.1rem;padding-right:0.5rem}.wf-blocked-countries-section-spacer{-webkit-flex-basis:30px;flex-basis:30px;height:1px;background:#aaa}.wf-blocked-countries-section-options{margin-bottom:0;margin-top:0;padding-left:0.5rem;list-style:none;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-align-content:stretch;align-content:stretch;-webkit-flex-wrap:nowrap;flex-wrap:nowrap}.wf-blocked-countries-section-options li{padding:0;margin:0;color:#777}.wf-blocked-countries-section-options li a{padding:2px 4px;text-decoration:none;color:#777}.wf-blocked-countries-section-options li a.active-section{background-color:#777;color:#e2e2e2}.wf-option-bypass-redirect .wf-option-title,.wf-option-bypass-cookie .wf-option-title{-webkit-align-self:flex-start;align-self:flex-start}.wf-option-bypass-redirect *,.wf-option-bypass-cookie *{-webkit-flex-grow:1;flex-grow:1}.wf-option-bypass-redirect *:first-child,.wf-option-bypass-cookie *:first-child{-webkit-flex-grow:0;flex-grow:0}.wf-country-block-map{width:300px}@media (min-width: 768px){.wf-country-block-map{width:500px}}@media (min-width: 992px){.wf-country-block-map{width:700px}}@media (min-width: 1200px){.wf-country-block-map{width:700px}}#wf-create-block{width:100%}#wf-create-block th{white-space:nowrap}#wf-create-block td{width:100%}#wf-create-block td.wf-block-type{width:auto}@media (min-width: 768px){#wf-create-block{width:500px}}@media (min-width: 992px){#wf-create-block{width:700px}}@media (min-width: 1200px){#wf-create-block{width:700px}}#wf-create-block .wf-block-add-country select{width:240px}@media (min-width: 768px){#wf-create-block .wf-block-add-country select{width:280px}}@media (min-width: 992px){#wf-create-block .wf-block-add-country select{width:320px}}#wf-create-block .wf-block-add-country .wfselect2-container--default,#wf-create-block .wf-block-add-country .wfselect2-container--default .wfselect2-selection--multiple{border-color:#e2e2e2}#wf-create-block .wf-block-add-country .wfselect2-container--default .wfselect2-selection__choice,#wf-create-block .wf-block-add-country .wfselect2-container--default .wfselect2-selection--multiple .wfselect2-selection__choice{background-color:#ffffff;border-color:#e2e2e2;padding:0.5rem}#wf-create-block .wf-block-add-country .wfselect2-container--default .wfselect2-search__field,#wf-create-block .wf-block-add-country .wfselect2-container--default .wfselect2-selection--multiple .wfselect2-search__field{margin-right:5px;margin-top:5px;padding:0.5rem 0}#wfcolorbox .wf-country-selector-controls,.wf-drawer .wf-country-selector-controls{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;-webkit-align-content:stretch;align-content:stretch;-webkit-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-flex-shrink:0;flex-shrink:0}#wfcolorbox .wf-country-selector-controls .wf-country-selector-section-options,.wf-drawer .wf-country-selector-controls .wf-country-selector-section-options{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;-webkit-align-content:stretch;align-content:stretch;-webkit-flex-wrap:nowrap;flex-wrap:nowrap}#wfcolorbox .wf-country-selector-controls .wf-country-selector-section-options>li,.wf-drawer .wf-country-selector-controls .wf-country-selector-section-options>li{border:1px solid #ffffff;border-radius:4px;padding:0.25rem;background-color:#ffffff}#wfcolorbox .wf-country-selector-controls .wf-country-selector-section-options>li:hover,#wfcolorbox .wf-country-selector-controls .wf-country-selector-section-options>li:focus,.wf-drawer .wf-country-selector-controls .wf-country-selector-section-options>li:hover,.wf-drawer .wf-country-selector-controls .wf-country-selector-section-options>li:focus{background-color:#00709e;border-color:#00709e}#wfcolorbox .wf-country-selector-controls .wf-country-selector-section-options>li:hover>a,#wfcolorbox .wf-country-selector-controls .wf-country-selector-section-options>li:focus>a,.wf-drawer .wf-country-selector-controls .wf-country-selector-section-options>li:hover>a,.wf-drawer .wf-country-selector-controls .wf-country-selector-section-options>li:focus>a{color:#ffffff}#wfcolorbox .wf-country-selector-controls .wf-country-selector-section-options>li>a,.wf-drawer .wf-country-selector-controls .wf-country-selector-section-options>li>a{text-decoration:none;color:#525355}#wfcolorbox .wf-country-selector-options .wf-blocked-countries,.wf-drawer .wf-country-selector-options .wf-blocked-countries{margin-bottom:0;margin-top:1rem;list-style:none;margin-left:-6px;display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-align-content:stretch;align-content:stretch;-webkit-flex-wrap:wrap;flex-wrap:wrap}#wfcolorbox .wf-country-selector-options .wf-blocked-countries>li,.wf-drawer .wf-country-selector-options .wf-blocked-countries>li{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;margin:0px 0px 2px 6px;text-align:center;border:1px solid #e2e2e2;border-radius:4px;padding:8px 12px;background-color:#ffffff;-webkit-flex-basis:38%;flex-basis:38%}@media (min-width: 768px){#wfcolorbox .wf-country-selector-options .wf-blocked-countries>li,.wf-drawer .wf-country-selector-options .wf-blocked-countries>li{-webkit-flex-basis:20%;flex-basis:20%}}@media (min-width: 992px){#wfcolorbox .wf-country-selector-options .wf-blocked-countries>li,.wf-drawer .wf-country-selector-options .wf-blocked-countries>li{-webkit-flex-basis:15%;flex-basis:15%}}@media (min-width: 1200px){#wfcolorbox .wf-country-selector-options .wf-blocked-countries>li,.wf-drawer .wf-country-selector-options .wf-blocked-countries>li{-webkit-flex-basis:10%;flex-basis:10%}}#wfcolorbox .wf-country-selector-options .wf-blocked-countries>li:hover,#wfcolorbox .wf-country-selector-options .wf-blocked-countries>li:focus,.wf-drawer .wf-country-selector-options .wf-blocked-countries>li:hover,.wf-drawer .wf-country-selector-options .wf-blocked-countries>li:focus{text-decoration:none;background-color:#e2e2e2}#wfcolorbox .wf-country-selector-options .wf-blocked-countries>li.disabled>a,.wf-drawer .wf-country-selector-options .wf-blocked-countries>li.disabled>a{color:#777}#wfcolorbox .wf-country-selector-options .wf-blocked-countries>li.disabled>a:hover,#wfcolorbox .wf-country-selector-options .wf-blocked-countries>li.disabled>a:focus,.wf-drawer .wf-country-selector-options .wf-blocked-countries>li.disabled>a:hover,.wf-drawer .wf-country-selector-options .wf-blocked-countries>li.disabled>a:focus{color:#777;text-decoration:none;background-color:transparent;cursor:not-allowed}#wfcolorbox .wf-country-selector-options .wf-blocked-countries>li>a,.wf-drawer .wf-country-selector-options .wf-blocked-countries>li>a{text-decoration:none;position:relative;display:block}#wfcolorbox .wf-country-selector-options .wf-blocked-countries>li.wf-active,#wfcolorbox .wf-country-selector-options .wf-blocked-countries>li.wf-active:hover,#wfcolorbox .wf-country-selector-options .wf-blocked-countries>li.wf-active:focus,.wf-drawer .wf-country-selector-options .wf-blocked-countries>li.wf-active,.wf-drawer .wf-country-selector-options .wf-blocked-countries>li.wf-active:hover,.wf-drawer .wf-country-selector-options .wf-blocked-countries>li.wf-active:focus{background-color:#00709e;border-color:#00709e}#wfcolorbox .wf-country-selector-options .wf-blocked-countries>li.wf-active>a,#wfcolorbox .wf-country-selector-options .wf-blocked-countries>li.wf-active:hover>a,#wfcolorbox .wf-country-selector-options .wf-blocked-countries>li.wf-active:focus>a,.wf-drawer .wf-country-selector-options .wf-blocked-countries>li.wf-active>a,.wf-drawer .wf-country-selector-options .wf-blocked-countries>li.wf-active:hover>a,.wf-drawer .wf-country-selector-options .wf-blocked-countries>li.wf-active:focus>a{color:#fff}#wfcolorbox .wf-country-selector-options .wf-blocked-countries>li.text-only,.wf-drawer .wf-country-selector-options .wf-blocked-countries>li.text-only{position:relative;display:block;padding:8px 12px}#wfcolorbox .wf-country-selector-options .wf-blocked-countries>li>a>img,.wf-drawer .wf-country-selector-options .wf-blocked-countries>li>a>img{max-width:none}.wf-tag-selected{background-color:#ffffff;border:1px solid #e2e2e2;border-radius:4px;cursor:default;float:left;margin-right:5px !important;margin-top:5px !important;list-style:none;padding:0.5rem !important}.wf-destroy-tag-selected{color:#999;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.wf-destroy-tag-selected:hover{text-decoration:none}.wf-tags-show-hide-more{float:left;margin-right:5px;margin-top:5px;list-style:none;padding:0.5rem}.wf-select2-hide-tags .wfselect2-selection__choice{display:none}.wf-country-selector-outer-wrapper{position:relative;-webkit-flex-grow:1;flex-grow:1}.wf-country-selector-outer-wrapper .wf-country-selector-inner-wrapper{position:absolute;top:0px;right:0px;bottom:0px;left:0px;overflow-x:hidden;overflow-y:auto}table.wf-dataTable{width:auto;max-width:800px;clear:both;border-collapse:collapse;border-spacing:0}table.wf-dataTable>thead th,table.wf-dataTable>tfoot th{font-weight:bold}table.wf-dataTable>thead th,table.wf-dataTable>thead td{cursor:pointer;text-align:left;font-size:11px;border:1px solid #ccc;padding:8px 4px 5px 9px;text-transform:uppercase}table.wf-dataTable>thead th:active,table.wf-dataTable>thead td:active{outline:none}table.wf-dataTable>tfoot th,table.wf-dataTable>tfoot td{padding:10px 18px 6px 18px;border-top:1px solid #111}table.wf-dataTable>thead .sorting,table.wf-dataTable>thead .sorting_asc,table.wf-dataTable>thead .sorting_desc{cursor:pointer;*cursor:hand}table.wf-dataTable>thead .sorting,table.wf-dataTable>thead .sorting_asc,table.wf-dataTable>thead .sorting_desc,table.wf-dataTable>thead .sorting_asc_disabled,table.wf-dataTable>thead .sorting_desc_disabled{background-repeat:no-repeat;background-position:center right}table.wf-dataTable>thead .sorting{background-image:url(../images/sort_both.png)}table.wf-dataTable>thead .sorting_asc{background-image:url(../images/sort_asc.png)}table.wf-dataTable>thead .sorting_desc{background-image:url(../images/sort_desc.png)}table.wf-dataTable>thead .sorting_asc_disabled{background-image:url(../images/sort_asc_disabled.png)}table.wf-dataTable>thead .sorting_desc_disabled{background-image:url(../images/sort_desc_disabled.png)}table.wf-dataTable>tbody>tr{background-color:#ffffff}table.wf-dataTable>tbody>tr.selected{background-color:#B0BED9}table.wf-dataTable>tbody>tr>th,table.wf-dataTable>tbody>tr>td{padding:5px 8px}table.wf-dataTable.row-border>tbody>tr>th,table.wf-dataTable.row-border>tbody>tr>td,table.wf-dataTable.display>tbody>tr>th,table.wf-dataTable.display>tbody>tr>td{border:1px solid #cccccc}table.wf-dataTable.row-border>tbody>tr:first-child>th,table.wf-dataTable.row-border>tbody>tr:first-child>td,table.wf-dataTable.display>tbody>tr:first-child>th,table.wf-dataTable.display>tbody>tr:first-child>td{border-top:none}table.wf-dataTable.cell-border>tbody>tr>th,table.wf-dataTable.cell-border>tbody>tr>td{border-top:1px solid #ddd;border-right:1px solid #ddd}table.wf-dataTable.cell-border>tbody>tr>th:first-child,table.wf-dataTable.cell-border>tbody>tr>td:first-child{border-left:1px solid #ddd}table.wf-dataTable.cell-border>tbody>tr:first-child>th,table.wf-dataTable.cell-border>tbody>tr:first-child>td{border-top:none}table.wf-dataTable.stripe>tbody>tr.odd,table.wf-dataTable.display>tbody>tr.odd{background-color:#f9f9f9}table.wf-dataTable.stripe>tbody>tr.odd.selected,table.wf-dataTable.display>tbody>tr.odd.selected{background-color:#acbad4}table.wf-dataTable.hover>tbody>tr:hover,table.wf-dataTable.display>tbody>tr:hover{background-color:#f6f6f6}table.wf-dataTable.hover>tbody>tr:hover.selected,table.wf-dataTable.display>tbody>tr:hover.selected{background-color:#aab7d1}table.wf-dataTable.order-column>tbody>tr>.sorting_1,table.wf-dataTable.order-column>tbody>tr>.sorting_2,table.wf-dataTable.order-column>tbody>tr>.sorting_3,table.wf-dataTable.display tbody>tr>.sorting_1,table.wf-dataTable.display>tbody>tr>.sorting_2,table.wf-dataTable.display>tbody>tr>.sorting_3{background-color:#fafafa}table.wf-dataTable.order-column>tbody>tr.selected>.sorting_1,table.wf-dataTable.order-column>tbody>tr.selected>.sorting_2,table.wf-dataTable.order-column>tbody>tr.selected>.sorting_3,table.wf-dataTable.display>tbody>tr.selected>.sorting_1,table.wf-dataTable.display>tbody>tr.selected>.sorting_2,table.wf-dataTable.display>tbody>tr.selected>.sorting_3{background-color:#acbad5}table.wf-dataTable.display>tbody>tr.odd>.sorting_1,table.wf-dataTable.order-column.stripe>tbody>tr.odd>.sorting_1{background-color:#f1f1f1}table.wf-dataTable.display>tbody>tr.odd>.sorting_2,table.wf-dataTable.order-column.stripe>tbody>tr.odd>.sorting_2{background-color:#f3f3f3}table.wf-dataTable.display>tbody>tr.odd>.sorting_3,table.wf-dataTable.order-column.stripe>tbody>tr.odd>.sorting_3{background-color:whitesmoke}table.wf-dataTable.display>tbody>tr.odd.selected>.sorting_1,table.wf-dataTable.order-column.stripe>tbody>tr.odd.selected>.sorting_1{background-color:#a6b4cd}table.wf-dataTable.display>tbody>tr.odd.selected>.sorting_2,table.wf-dataTable.order-column.stripe>tbody>tr.odd.selected>.sorting_2{background-color:#a8b5cf}table.wf-dataTable.display>tbody>tr.odd.selected>.sorting_3,table.wf-dataTable.order-column.stripe>tbody>tr.odd.selected>.sorting_3{background-color:#a9b7d1}table.wf-dataTable.display>tbody>tr.even>.sorting_1,table.wf-dataTable.order-column.stripe>tbody>tr.even>.sorting_1{background-color:#fafafa}table.wf-dataTable.display>tbody>tr.even>.sorting_2,table.wf-dataTable.order-column.stripe>tbody>tr.even>.sorting_2{background-color:#fcfcfc}table.wf-dataTable.display>tbody>tr.even>.sorting_3,table.wf-dataTable.order-column.stripe>tbody>tr.even>.sorting_3{background-color:#fefefe}table.wf-dataTable.display>tbody>tr.even.selected>.sorting_1,table.wf-dataTable.order-column.stripe>tbody>tr.even.selected>.sorting_1{background-color:#acbad5}table.wf-dataTable.display>tbody>tr.even.selected>.sorting_2,table.wf-dataTable.order-column.stripe>tbody>tr.even.selected>.sorting_2{background-color:#aebcd6}table.wf-dataTable.display>tbody>tr.even.selected>.sorting_3,table.wf-dataTable.order-column.stripe>tbody>tr.even.selected>.sorting_3{background-color:#afbdd8}table.wf-dataTable.display>tbody>tr:hover>.sorting_1,table.wf-dataTable.order-column.hover>tbody>tr:hover>.sorting_1{background-color:#eaeaea}table.wf-dataTable.display>tbody>tr:hover>.sorting_2,table.wf-dataTable.order-column.hover>tbody>tr:hover>.sorting_2{background-color:#ececec}table.wf-dataTable.display>tbody>tr:hover>.sorting_3,table.wf-dataTable.order-column.hover>tbody>tr:hover>.sorting_3{background-color:#efefef}table.wf-dataTable.display>tbody>tr:hover.selected>.sorting_1,table.wf-dataTable.order-column.hover>tbody>tr:hover.selected>.sorting_1{background-color:#a2aec7}table.wf-dataTable.display>tbody>tr:hover.selected>.sorting_2,table.wf-dataTable.order-column.hover>tbody>tr:hover.selected>.sorting_2{background-color:#a3b0c9}table.wf-dataTable.display>tbody>tr:hover.selected>.sorting_3,table.wf-dataTable.order-column.hover>tbody>tr:hover.selected>.sorting_3{background-color:#a5b2cb}table.wf-dataTable.no-footer{border-bottom:1px solid #111}table.wf-dataTable.nowrap th,table.wf-dataTable.nowrap td{white-space:nowrap}table.wf-dataTable.compact thead th,table.wf-dataTable.compact thead td{padding:4px 17px 4px 4px}table.wf-dataTable.compact tfoot th,table.wf-dataTable.compact tfoot td{padding:4px}table.wf-dataTable.compact>tbody>tr>th,table.wf-dataTable.compact>tbody>tr>td{padding:4px}table.wf-dataTable th.dt-left,table.wf-dataTable td.dt-left{text-align:left}table.wf-dataTable th.dt-center,table.wf-dataTable td.dt-center,table.wf-dataTable td.dataTables_empty{text-align:center}table.wf-dataTable th.dt-right,table.wf-dataTable td.dt-right{text-align:right}table.wf-dataTable th.dt-justify,table.wf-dataTable td.dt-justify{text-align:justify}table.wf-dataTable th.dt-nowrap,table.wf-dataTable td.dt-nowrap{white-space:nowrap}table.wf-dataTable thead th.dt-head-left,table.wf-dataTable thead td.dt-head-left,table.wf-dataTable tfoot th.dt-head-left,table.wf-dataTable tfoot td.dt-head-left{text-align:left}table.wf-dataTable thead th.dt-head-center,table.wf-dataTable thead td.dt-head-center,table.wf-dataTable tfoot th.dt-head-center,table.wf-dataTable tfoot td.dt-head-center{text-align:center}table.wf-dataTable thead th.dt-head-right,table.wf-dataTable thead td.dt-head-right,table.wf-dataTable tfoot th.dt-head-right,table.wf-dataTable tfoot td.dt-head-right{text-align:right}table.wf-dataTable thead th.dt-head-justify,table.wf-dataTable thead td.dt-head-justify,table.wf-dataTable tfoot th.dt-head-justify,table.wf-dataTable tfoot td.dt-head-justify{text-align:justify}table.wf-dataTable thead th.dt-head-nowrap,table.wf-dataTable thead td.dt-head-nowrap,table.wf-dataTable tfoot th.dt-head-nowrap,table.wf-dataTable tfoot td.dt-head-nowrap{white-space:nowrap}table.wf-dataTable>tbody>tr>th.dt-body-left,table.wf-dataTable>tbody>tr>td.dt-body-left{text-align:left}table.wf-dataTable>tbody>tr>th.dt-body-center,table.wf-dataTable>tbody>tr>td.dt-body-center{text-align:center}table.wf-dataTable>tbody>tr>th.dt-body-right,table.wf-dataTable>tbody>tr>td.dt-body-right{text-align:right}table.wf-dataTable>tbody>tr>th.dt-body-justify,table.wf-dataTable>tbody>tr>td.dt-body-justify{text-align:justify}table.wf-dataTable>tbody>tr>th.dt-body-nowrap,table.wf-dataTable>tbody>tr>td.dt-body-nowrap{white-space:nowrap}table.wf-dataTable table.dataTable,table.wf-dataTable th,table.wf-dataTable td{-webkit-box-sizing:content-box;box-sizing:content-box}.wf-dataTables_wrapper{position:relative;clear:both;*zoom:1;zoom:1}.wf-dataTables_wrapper .dataTables_length{float:left}.wf-dataTables_wrapper .dataTables_filter{float:right;text-align:right}.wf-dataTables_wrapper .dataTables_filter input{margin-left:0.5em}.wf-dataTables_wrapper .dataTables_info{clear:both;float:left;padding-top:0.755em}.wf-dataTables_wrapper .dataTables_paginate{float:right;text-align:right;padding-top:0.25em}.wf-dataTables_wrapper .dataTables_paginate .paginate_button{box-sizing:border-box;display:inline-block;min-width:1.5em;padding:0.5em 1em;margin-left:2px;text-align:center;text-decoration:none !important;cursor:pointer;*cursor:hand;color:#333 !important;border:1px solid transparent;border-radius:2px}.wf-dataTables_wrapper .dataTables_paginate .paginate_button.current,.wf-dataTables_wrapper .dataTables_paginate .paginate_button.current:hover{color:#333 !important;border:1px solid #979797;background-color:white;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #fff), color-stop(100%, #dcdcdc));background:-webkit-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-moz-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-ms-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-o-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:linear-gradient(to bottom, #ffffff 0%,#dcdcdc 100%)}.wf-dataTables_wrapper .dataTables_paginate .paginate_button.disabled,.wf-dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover,.wf-dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active{cursor:default;color:#666 !important;border:1px solid transparent;background:transparent;box-shadow:none}.wf-dataTables_wrapper .dataTables_paginate .paginate_button:hover{color:white !important;border:1px solid #111;background-color:#585858;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111));background:-webkit-linear-gradient(top, #585858 0%, #111 100%);background:-moz-linear-gradient(top, #585858 0%, #111 100%);background:-ms-linear-gradient(top, #585858 0%, #111 100%);background:-o-linear-gradient(top, #585858 0%, #111 100%);background:linear-gradient(to bottom, #585858 0%,#111111 100%)}.wf-dataTables_wrapper .dataTables_paginate .paginate_button:active{outline:none;background-color:#2b2b2b;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c));background:-webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:linear-gradient(to bottom, #2b2b2b 0%,#0c0c0c 100%);box-shadow:inset 0 0 3px #111}.wf-dataTables_wrapper .dataTables_paginate .ellipsis{padding:0 1em}.wf-dataTables_wrapper .dataTables_processing{position:absolute;top:50%;left:50%;width:100%;height:40px;margin-left:-50%;margin-top:-25px;padding-top:20px;text-align:center;font-size:1.2em;background-color:white;background:-webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255,255,255,0)), color-stop(25%, rgba(255,255,255,0.9)), color-stop(75%, rgba(255,255,255,0.9)), color-stop(100%, rgba(255,255,255,0)));background:-webkit-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-moz-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-o-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:linear-gradient(to right, rgba(255,255,255,0) 0%,rgba(255,255,255,0.9) 25%,rgba(255,255,255,0.9) 75%,rgba(255,255,255,0) 100%)}.wf-dataTables_wrapper .dataTables_length,.wf-dataTables_wrapper .dataTables_filter,.wf-dataTables_wrapper .dataTables_info,.wf-dataTables_wrapper .dataTables_processing,.wf-dataTables_wrapper .dataTables_paginate{color:#333}.wf-dataTables_wrapper .dataTables_scroll{clear:both}.wf-dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody{*margin-top:-1px;-webkit-overflow-scrolling:touch}.wf-dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody th,.wf-dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody td{vertical-align:middle}.wf-dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody th>div.dataTables_sizing,.wf-dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody td>div.dataTables_sizing{height:0;overflow:hidden;margin:0 !important;padding:0 !important}.wf-dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:1px solid #111}.wf-dataTables_wrapper.no-footer div.dataTables_scrollHead table,.wf-dataTables_wrapper.no-footer div.dataTables_scrollBody table{border-bottom:none}.wf-dataTables_wrapper:after{visibility:hidden;display:block;content:"";clear:both;height:0}@media screen and (max-width: 767px){.wf-dataTables_wrapper .dataTables_info,.wf-dataTables_wrapper .dataTables_paginate{float:none;text-align:center}.wf-dataTables_wrapper .dataTables_paginate{margin-top:0.5em}}@media screen and (max-width: 640px){.wf-dataTables_wrapper .dataTables_length,.wf-dataTables_wrapper .dataTables_filter{float:none;text-align:center}.wf-dataTables_wrapper .dataTables_filter{margin-top:0.5em}}.wf-alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.wf-alert h4{margin-top:0;color:inherit}.wf-alert .wf-alert-link{font-weight:bold}.wf-alert>p,.wf-alert>ul{margin-bottom:0}.wf-alert>p+p{margin-top:5px}.wf-alert-dismissable,.wf-alert-dismissible{padding-right:35px}.wf-alert-dismissable .close,.wf-alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.wf-alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.wf-alert-success hr{border-top-color:#c9e2b3}.wf-alert-success .alert-link{color:#2b542c}.wf-alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.wf-alert-info hr{border-top-color:#a6e1ec}.wf-alert-info .alert-link{color:#245269}.wf-alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.wf-alert-warning hr{border-top-color:#f7e1b5}.wf-alert-warning .alert-link{color:#66512c}.wf-alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.wf-alert-danger hr{border-top-color:#e4b9c0}.wf-alert-danger .alert-link{color:#843534}#wf-tools-whois #wfrawhtml .wf-flex-row{margin:.5rem 0 1rem}#wf-tools-whois #wfrawhtml .wf-flex-row a.wf-flex-row-1{color:#444;text-decoration:none}#wf-tools-whois #wfrawhtml .wf-flex-row a.wf-flex-row-1:hover{color:#00a0d2;text-decoration:underline}.wf-diagnostic-fail.wf-block .wf-block-header .wf-block-header-content .wf-block-title{color:#d0514c}.wf-diagnostic-fail.wf-block .wf-block-header .wf-block-header-content .wf-block-title:before{content:'\f100';font-family:"Ionicons";display:inline-block;margin:0 .4rem 0 0}#wf-diagnostics .wf-block{margin:0 auto 0.5rem}#wf-diagnostics-other-tests .wf-btn-sm,#wf-diagnostics-other-tests .wf-btn-group-sm>.wf-btn{padding:2px 10px;vertical-align:top}.wf-support-block{padding:1rem 0}.wf-support-block>h4{margin:0;padding:0 0 1rem 0}.wf-support-block>h4>a{text-decoration:none;font-size:1.3125rem;line-height:1.5;font-weight:300}.wf-support-block>p{margin:0;padding:0}.wf-support-block>ul{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:row;flex-direction:row;-webkit-flex-wrap:wrap;flex-wrap:wrap;margin:0;padding:0}.wf-support-block>ul>li{margin:0;padding:1rem 1rem 1rem 0}.wf-support-block>ul>li>a{text-decoration:none;font-size:.875rem;line-height:1.3125;font-weight:normal}.wf-support-top-block,.wf-support-missing-block{padding:1.5rem 0}.wf-support-top-block>h4,.wf-support-missing-block>h4{margin:0;padding:0}.wf-support-top-block>ol>li,.wf-support-missing-block>ol>li{margin:0.75rem 0;padding:0}.wf-support-top-block>ol>li>a,.wf-support-missing-block>ol>li>a{text-decoration:none;font-size:.875rem;line-height:1.3125;font-weight:normal}#wf-gdpr-banner{position:relative;z-index:3006;background-color:#fcb214;font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:.875rem;color:#2d2d2d;line-height:1.3125;font-weight:normal;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;-webkit-flex-direction:row;flex-direction:row;margin:0 0 0 -20px;padding:0}#wf-gdpr-banner>li{margin:0;padding:0.5rem 1rem}#wf-toupp-required-overlay::after{position:absolute;z-index:3004;top:0;right:0;width:0;height:0;background:rgba(241,241,241,0.6);content:'';opacity:0;-webkit-transition:opacity 0.5s,width 0.1s 0.5s,height 0.1s 0.5s;-o-transition:opacity 0.5s,width 0.1s 0.5s,height 0.1s 0.5s;transition:opacity 0.5s,width 0.1s 0.5s,height 0.1s 0.5s}.wf-toupp-required #wf-toupp-required-overlay::after{width:100%;height:100%;opacity:1;-webkit-transition:opacity 0.5s;-o-transition:opacity 0.5s;transition:opacity 0.5s}#wf-toupp-required-message{display:none;position:fixed;z-index:3005;left:0;width:100%;top:50%;transform:translateY(-50%);text-align:center;color:#666666;opacity:0;-webkit-transition:opacity 0.5s,width 0.1s 0.5s,height 0.1s 0.5s;-o-transition:opacity 0.5s,width 0.1s 0.5s,height 0.1s 0.5s;transition:opacity 0.5s,width 0.1s 0.5s,height 0.1s 0.5s}#wf-toupp-required-message #wf-toupp-required-message-inner{background-color:#00709e;color:#fff;overflow:hidden;max-width:550px;margin:0 auto;padding:20px}#wf-toupp-required-message #wf-toupp-required-message-inner h2{font-size:2.0rem}#wf-toupp-required-message #wf-toupp-required-message-inner h2 .wf-toupp-required-header{line-height:2.4rem}#wf-toupp-required-message #wf-toupp-required-message-inner p{font-size:1rem}#wf-toupp-required-message #wf-toupp-required-message-inner p:first-child{margin-top:0}#wf-toupp-required-message #wf-toupp-required-message-inner p:last-child{margin-bottom:0}#wf-toupp-required-message #wf-toupp-required-message-inner small{font-size:0.9rem;font-weight:normal;margin-top:12px;display:block}.wf-toupp-required #wf-toupp-required-message{display:block;opacity:1;-webkit-transition:opacity 0.5s;transition:opacity 0.5s}.wf-flag-{background-position:-0px -0px !important}.wf-flag-ad{background-position:-16px -0px !important}.wf-flag-ae{background-position:-32px -0px !important}.wf-flag-af{background-position:-48px -0px !important}.wf-flag-ag{background-position:-64px -0px !important}.wf-flag-ai{background-position:-80px -0px !important}.wf-flag-al{background-position:-96px -0px !important}.wf-flag-am{background-position:-112px -0px !important}.wf-flag-an{background-position:-128px -0px !important}.wf-flag-ao{background-position:-144px -0px !important}.wf-flag-ap{background-position:-160px -0px !important}.wf-flag-aq{background-position:-176px -0px !important}.wf-flag-ar{background-position:-0px -11px !important}.wf-flag-as{background-position:-16px -11px !important}.wf-flag-at{background-position:-32px -11px !important}.wf-flag-au{background-position:-48px -11px !important}.wf-flag-aw{background-position:-64px -11px !important}.wf-flag-ax{background-position:-80px -11px !important}.wf-flag-az{background-position:-96px -11px !important}.wf-flag-ba{background-position:-112px -11px !important}.wf-flag-bb{background-position:-128px -11px !important}.wf-flag-bd{background-position:-144px -11px !important}.wf-flag-be{background-position:-160px -11px !important}.wf-flag-bf{background-position:-176px -11px !important}.wf-flag-bg{background-position:-0px -22px !important}.wf-flag-bh{background-position:-16px -22px !important}.wf-flag-bi{background-position:-32px -22px !important}.wf-flag-bj{background-position:-48px -22px !important}.wf-flag-bl{background-position:-64px -22px !important}.wf-flag-bm{background-position:-80px -22px !important}.wf-flag-bn{background-position:-96px -22px !important}.wf-flag-bo{background-position:-112px -22px !important}.wf-flag-bq{background-position:-128px -22px !important}.wf-flag-br{background-position:-144px -22px !important}.wf-flag-bs{background-position:-160px -22px !important}.wf-flag-bt{background-position:-176px -22px !important}.wf-flag-bv{background-position:-0px -33px !important}.wf-flag-bw{background-position:-16px -33px !important}.wf-flag-by{background-position:-32px -33px !important}.wf-flag-bz{background-position:-48px -33px !important}.wf-flag-ca{background-position:-64px -33px !important}.wf-flag-cc{background-position:-80px -33px !important}.wf-flag-cd{background-position:-96px -33px !important}.wf-flag-cf{background-position:-112px -33px !important}.wf-flag-cg{background-position:-128px -33px !important}.wf-flag-ch{background-position:-144px -33px !important}.wf-flag-ci{background-position:-160px -33px !important}.wf-flag-ck{background-position:-176px -33px !important}.wf-flag-cl{background-position:-0px -44px !important}.wf-flag-cm{background-position:-16px -44px !important}.wf-flag-cn{background-position:-32px -44px !important}.wf-flag-co{background-position:-48px -44px !important}.wf-flag-cr{background-position:-64px -44px !important}.wf-flag-cs{background-position:-80px -44px !important}.wf-flag-cu{background-position:-96px -44px !important}.wf-flag-cv{background-position:-112px -44px !important}.wf-flag-cw{background-position:-128px -44px !important}.wf-flag-cx{background-position:-144px -44px !important}.wf-flag-cy{background-position:-160px -44px !important}.wf-flag-cz{background-position:-176px -44px !important}.wf-flag-de{background-position:-0px -55px !important}.wf-flag-dj{background-position:-16px -55px !important}.wf-flag-dk{background-position:-32px -55px !important}.wf-flag-dm{background-position:-48px -55px !important}.wf-flag-do{background-position:-64px -55px !important}.wf-flag-dz{background-position:-80px -55px !important}.wf-flag-ec{background-position:-96px -55px !important}.wf-flag-ee{background-position:-112px -55px !important}.wf-flag-eg{background-position:-128px -55px !important}.wf-flag-eh{background-position:-144px -55px !important}.wf-flag-england{background-position:-160px -55px !important}.wf-flag-er{background-position:-176px -55px !important}.wf-flag-es{background-position:-0px -66px !important}.wf-flag-et{background-position:-16px -66px !important}.wf-flag-eu{background-position:-32px -66px !important}.wf-flag-fam{background-position:-48px -66px !important}.wf-flag-fi{background-position:-64px -66px !important}.wf-flag-fj{background-position:-80px -66px !important}.wf-flag-fk{background-position:-96px -66px !important}.wf-flag-fm{background-position:-112px -66px !important}.wf-flag-fo{background-position:-128px -66px !important}.wf-flag-fr{background-position:-144px -66px !important}.wf-flag-ga{background-position:-160px -66px !important}.wf-flag-gb{background-position:-176px -66px !important}.wf-flag-gd{background-position:-0px -77px !important}.wf-flag-ge{background-position:-16px -77px !important}.wf-flag-gf{background-position:-32px -77px !important}.wf-flag-gg{background-position:-48px -77px !important}.wf-flag-gh{background-position:-64px -77px !important}.wf-flag-gi{background-position:-80px -77px !important}.wf-flag-gl{background-position:-96px -77px !important}.wf-flag-gm{background-position:-112px -77px !important}.wf-flag-gn{background-position:-128px -77px !important}.wf-flag-gp{background-position:-144px -77px !important}.wf-flag-gq{background-position:-160px -77px !important}.wf-flag-gr{background-position:-176px -77px !important}.wf-flag-gs{background-position:-0px -88px !important}.wf-flag-gt{background-position:-16px -88px !important}.wf-flag-gu{background-position:-32px -88px !important}.wf-flag-gw{background-position:-48px -88px !important}.wf-flag-gy{background-position:-64px -88px !important}.wf-flag-hk{background-position:-80px -88px !important}.wf-flag-hm{background-position:-96px -88px !important}.wf-flag-hn{background-position:-112px -88px !important}.wf-flag-hr{background-position:-128px -88px !important}.wf-flag-ht{background-position:-144px -88px !important}.wf-flag-hu{background-position:-160px -88px !important}.wf-flag-id{background-position:-176px -88px !important}.wf-flag-ie{background-position:-0px -99px !important}.wf-flag-il{background-position:-16px -99px !important}.wf-flag-im{background-position:-32px -99px !important}.wf-flag-in{background-position:-48px -99px !important}.wf-flag-io{background-position:-64px -99px !important}.wf-flag-iq{background-position:-80px -99px !important}.wf-flag-ir{background-position:-96px -99px !important}.wf-flag-is{background-position:-112px -99px !important}.wf-flag-it{background-position:-128px -99px !important}.wf-flag-je{background-position:-144px -99px !important}.wf-flag-jm{background-position:-160px -99px !important}.wf-flag-jo{background-position:-176px -99px !important}.wf-flag-jp{background-position:-0px -110px !important}.wf-flag-ke{background-position:-16px -110px !important}.wf-flag-kg{background-position:-32px -110px !important}.wf-flag-kh{background-position:-48px -110px !important}.wf-flag-ki{background-position:-64px -110px !important}.wf-flag-km{background-position:-80px -110px !important}.wf-flag-kn{background-position:-96px -110px !important}.wf-flag-kp{background-position:-112px -110px !important}.wf-flag-kr{background-position:-128px -110px !important}.wf-flag-kw{background-position:-144px -110px !important}.wf-flag-ky{background-position:-160px -110px !important}.wf-flag-kz{background-position:-176px -110px !important}.wf-flag-la{background-position:-0px -121px !important}.wf-flag-lb{background-position:-16px -121px !important}.wf-flag-lc{background-position:-32px -121px !important}.wf-flag-li{background-position:-48px -121px !important}.wf-flag-lk{background-position:-64px -121px !important}.wf-flag-lr{background-position:-80px -121px !important}.wf-flag-ls{background-position:-96px -121px !important}.wf-flag-lt{background-position:-112px -121px !important}.wf-flag-lu{background-position:-128px -121px !important}.wf-flag-lv{background-position:-144px -121px !important}.wf-flag-ly{background-position:-160px -121px !important}.wf-flag-ma{background-position:-176px -121px !important}.wf-flag-mc{background-position:-0px -132px !important}.wf-flag-md{background-position:-16px -132px !important}.wf-flag-me{background-position:-32px -132px !important}.wf-flag-mf{background-position:-48px -132px !important}.wf-flag-mg{background-position:-64px -132px !important}.wf-flag-mh{background-position:-80px -132px !important}.wf-flag-mk{background-position:-96px -132px !important}.wf-flag-ml{background-position:-112px -132px !important}.wf-flag-mm{background-position:-128px -132px !important}.wf-flag-mn{background-position:-144px -132px !important}.wf-flag-mo{background-position:-160px -132px !important}.wf-flag-mp{background-position:-176px -132px !important}.wf-flag-mq{background-position:-0px -143px !important}.wf-flag-mr{background-position:-16px -143px !important}.wf-flag-ms{background-position:-32px -143px !important}.wf-flag-mt{background-position:-48px -143px !important}.wf-flag-mu{background-position:-64px -143px !important}.wf-flag-mv{background-position:-80px -143px !important}.wf-flag-mw{background-position:-96px -143px !important}.wf-flag-mx{background-position:-112px -143px !important}.wf-flag-my{background-position:-128px -143px !important}.wf-flag-mz{background-position:-144px -143px !important}.wf-flag-na{background-position:-160px -143px !important}.wf-flag-nc{background-position:-176px -143px !important}.wf-flag-ne{background-position:-0px -154px !important}.wf-flag-nf{background-position:-16px -154px !important}.wf-flag-ng{background-position:-32px -154px !important}.wf-flag-ni{background-position:-48px -154px !important}.wf-flag-nl{background-position:-64px -154px !important}.wf-flag-no{background-position:-80px -154px !important}.wf-flag-np{background-position:-96px -154px !important}.wf-flag-nr{background-position:-112px -154px !important}.wf-flag-nu{background-position:-128px -154px !important}.wf-flag-nz{background-position:-144px -154px !important}.wf-flag-om{background-position:-160px -154px !important}.wf-flag-pa{background-position:-176px -154px !important}.wf-flag-pe{background-position:-0px -165px !important}.wf-flag-pf{background-position:-16px -165px !important}.wf-flag-pg{background-position:-32px -165px !important}.wf-flag-ph{background-position:-48px -165px !important}.wf-flag-pk{background-position:-64px -165px !important}.wf-flag-pl{background-position:-80px -165px !important}.wf-flag-pm{background-position:-96px -165px !important}.wf-flag-pn{background-position:-112px -165px !important}.wf-flag-pr{background-position:-128px -165px !important}.wf-flag-ps{background-position:-144px -165px !important}.wf-flag-pt{background-position:-160px -165px !important}.wf-flag-pw{background-position:-176px -165px !important}.wf-flag-py{background-position:-0px -176px !important}.wf-flag-qa{background-position:-16px -176px !important}.wf-flag-re{background-position:-32px -176px !important}.wf-flag-ro{background-position:-48px -176px !important}.wf-flag-rs{background-position:-64px -176px !important}.wf-flag-ru{background-position:-80px -176px !important}.wf-flag-rw{background-position:-96px -176px !important}.wf-flag-sa{background-position:-112px -176px !important}.wf-flag-sb{background-position:-128px -176px !important}.wf-flag-sc{background-position:-144px -176px !important}.wf-flag-scotland{background-position:-160px -176px !important}.wf-flag-sd{background-position:-176px -176px !important}.wf-flag-se{background-position:-0px -187px !important}.wf-flag-sg{background-position:-16px -187px !important}.wf-flag-sh{background-position:-32px -187px !important}.wf-flag-si{background-position:-48px -187px !important}.wf-flag-sj{background-position:-64px -187px !important}.wf-flag-sk{background-position:-80px -187px !important}.wf-flag-sl{background-position:-96px -187px !important}.wf-flag-sm{background-position:-112px -187px !important}.wf-flag-sn{background-position:-128px -187px !important}.wf-flag-so{background-position:-144px -187px !important}.wf-flag-sr{background-position:-160px -187px !important}.wf-flag-ss{background-position:-176px -187px !important}.wf-flag-st{background-position:-0px -198px !important}.wf-flag-sv{background-position:-16px -198px !important}.wf-flag-sx{background-position:-32px -198px !important}.wf-flag-sy{background-position:-48px -198px !important}.wf-flag-sz{background-position:-64px -198px !important}.wf-flag-tc{background-position:-80px -198px !important}.wf-flag-td{background-position:-96px -198px !important}.wf-flag-tf{background-position:-112px -198px !important}.wf-flag-tg{background-position:-128px -198px !important}.wf-flag-th{background-position:-144px -198px !important}.wf-flag-tj{background-position:-160px -198px !important}.wf-flag-tk{background-position:-176px -198px !important}.wf-flag-tl{background-position:-0px -209px !important}.wf-flag-tm{background-position:-16px -209px !important}.wf-flag-tn{background-position:-32px -209px !important}.wf-flag-to{background-position:-48px -209px !important}.wf-flag-tr{background-position:-64px -209px !important}.wf-flag-tt{background-position:-80px -209px !important}.wf-flag-tv{background-position:-96px -209px !important}.wf-flag-tw{background-position:-112px -209px !important}.wf-flag-tz{background-position:-128px -209px !important}.wf-flag-ua{background-position:-144px -209px !important}.wf-flag-ug{background-position:-160px -209px !important}.wf-flag-uk{background-position:-176px -209px !important}.wf-flag-um{background-position:-0px -220px !important}.wf-flag-un{background-position:-16px -220px !important}.wf-flag-us{background-position:-32px -220px !important}.wf-flag-uy{background-position:-48px -220px !important}.wf-flag-uz{background-position:-64px -220px !important}.wf-flag-va{background-position:-80px -220px !important}.wf-flag-vc{background-position:-96px -220px !important}.wf-flag-ve{background-position:-112px -220px !important}.wf-flag-vg{background-position:-128px -220px !important}.wf-flag-vi{background-position:-144px -220px !important}.wf-flag-vn{background-position:-160px -220px !important}.wf-flag-vu{background-position:-176px -220px !important}.wf-flag-wales{background-position:-0px -231px !important}.wf-flag-wf{background-position:-16px -231px !important}.wf-flag-ws{background-position:-32px -231px !important}.wf-flag-xk{background-position:-48px -231px !important}.wf-flag-ye{background-position:-64px -231px !important}.wf-flag-yt{background-position:-80px -231px !important}.wf-flag-za{background-position:-96px -231px !important}.wf-flag-zm{background-position:-112px -231px !important}.wf-flag-zw{background-position:-128px -231px !important}#wf-central-progress li{display:-webkit-flex;display:flex;-webkit-align-items:flex-start;align-items:flex-start;padding:8px 1.5rem}#wf-central-progress li .wf-central-progress-icon{display:-webkit-flex;display:flex;-webkit-flex-grow:0;flex-grow:0}#wf-central-progress li .wf-central-progress-content{display:-webkit-flex;display:flex;-webkit-flex-grow:1;flex-grow:1;margin:3px 20px 0px}#wf-central-progress li .wf-step-pending,#wf-central-progress li .wf-step-running,#wf-central-progress li .wf-step-complete-success,#wf-central-progress li .wf-step-complete-warning{display:none}#wf-central-progress li.pending{filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=40);opacity:.4}#wf-central-progress li.pending .wf-step-pending{display:block}#wf-central-progress li.running .wf-step-running{display:block}#wf-central-progress li.complete-success .wf-step-complete-success{display:block}#wf-central-progress li.complete-warning .wf-step-complete-warning{display:block}.wf-central-connected .wf-flex-row{align-items:stretch}.wf-central-connected .wf-flex-row .wf-flex-row-1{width:50%}.wf-central-connected .wf-flex-row .wf-flex-row-1:first-child{margin-right:5px}.wf-central-connected .wf-flex-row .wf-flex-row-1:last-child{margin-left:5px}@media (max-width: 768px){.wf-central-connected .wf-flex-row{-webkit-flex-direction:column !important;flex-direction:column !important}.wf-central-connected .wf-flex-row .wf-flex-row-1{width:100%;margin:0 0 10px !important}}#wf-extended-protection-notice{display:inline-block;line-height:1.4;padding:11px 15px;font-size:14px;text-align:left;margin:25px 20px 0 2px;background-color:#fff;border-left:4px solid #ffba00;box-shadow:0 1px 1px 0 rgba(0,0,0,0.1)}
 
css/main.1607007971.css ADDED
@@ -0,0 +1 @@
 
1
+ .wf-clearfix:before,.wf-clearfix:after{content:" ";display:table}.wf-clearfix:after{clear:both}.wf-btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;text-transform:uppercase;padding:.4rem 1rem;font-size:.875rem;line-height:1.3125rem;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}@media (min-width: 768px){.wf-btn{padding:.5rem 1.25rem;font-size:.875rem;line-height:1.3125rem;border-radius:4px}}.wf-btn:focus,.wf-btn.wf-focus,.wf-btn:active:focus,.wf-btn:active.wf-focus,.wf-btn.wf-active:focus,.wf-btn.wf-active.wf-focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.wf-btn:hover,.wf-btn:focus,.wf-btn.wf-focus{color:#00709e;text-decoration:none}.wf-btn:active,.wf-btn.wf-active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.wf-btn.wf-disabled,.wf-btn[disabled],.wf-btn[readonly],fieldset[disabled] .wf-btn{cursor:not-allowed;-webkit-box-shadow:none;box-shadow:none}a.wf-btn{text-decoration:none}a.wf-btn.wf-disabled,fieldset[disabled] a.wf-btn{cursor:not-allowed;pointer-events:none}.wf-btn-default{color:#00709e;background-color:#fff;border-color:#00709e}.wf-btn-default:focus,.wf-btn-default.focus{color:#00709e;background-color:#e6e6e6;border-color:#00161f}.wf-btn-default:hover{color:#00709e;background-color:#e6e6e6;border-color:#004561}.wf-btn-default:active,.wf-btn-default.active,.wf-open>.wf-btn-default.wf-dropdown-toggle{color:#00709e;background-color:#e6e6e6;border-color:#004561}.wf-btn-default:active:hover,.wf-btn-default:active:focus,.wf-btn-default:active.focus,.wf-btn-default.active:hover,.wf-btn-default.active:focus,.wf-btn-default.active.focus,.wf-open>.wf-btn-default.wf-dropdown-toggle:hover,.wf-open>.wf-btn-default.wf-dropdown-toggle:focus,.wf-open>.wf-btn-default.wf-dropdown-toggle.focus{color:#00709e;background-color:#d4d4d4;border-color:#00161f}.wf-btn-default:active,.wf-btn-default.wf-active,.wf-open>.wf-btn-default.wf-dropdown-toggle{background-image:none}.wf-btn-default.wf-disabled,.wf-btn-default[disabled],.wf-btn-default[readonly],fieldset[disabled] .wf-btn-default{color:#777;background-color:#fff;border-color:#e2e2e2;cursor:not-allowed}.wf-btn-default.wf-disabled:hover,.wf-btn-default.wf-disabled:focus,.wf-btn-default.wf-disabled.wf-focus,.wf-btn-default[disabled]:hover,.wf-btn-default[disabled]:focus,.wf-btn-default[disabled].wf-focus,.wf-btn-default[readonly]:hover,.wf-btn-default[readonly]:focus,.wf-btn-default[readonly].wf-focus,fieldset[disabled] .wf-btn-default:hover,fieldset[disabled] .wf-btn-default:focus,fieldset[disabled] .wf-btn-default.wf-focus{background-color:#fff;border-color:#00709e}.wf-btn-default .wf-badge{color:#fff;background-color:#00709e}.wf-btn-primary{color:#fff;background-color:#00709e;border-color:#005e85}.wf-btn-primary:focus,.wf-btn-primary.focus{color:#fff;background-color:#004c6b;border-color:#000405}.wf-btn-primary:hover{color:#fff;background-color:#004c6b;border-color:#003347}.wf-btn-primary:active,.wf-btn-primary.active,.wf-open>.wf-btn-primary.wf-dropdown-toggle{color:#fff;background-color:#004c6b;border-color:#003347}.wf-btn-primary:active:hover,.wf-btn-primary:active:focus,.wf-btn-primary:active.focus,.wf-btn-primary.active:hover,.wf-btn-primary.active:focus,.wf-btn-primary.active.focus,.wf-open>.wf-btn-primary.wf-dropdown-toggle:hover,.wf-open>.wf-btn-primary.wf-dropdown-toggle:focus,.wf-open>.wf-btn-primary.wf-dropdown-toggle.focus{color:#fff;background-color:#003347;border-color:#000405}.wf-btn-primary:active,.wf-btn-primary.wf-active,.wf-open>.wf-btn-primary.wf-dropdown-toggle{background-image:none}.wf-btn-primary.wf-disabled,.wf-btn-primary[disabled],.wf-btn-primary[readonly],fieldset[disabled] .wf-btn-primary{color:#fff;background-color:#59a2c0;border-color:#5996b0;cursor:not-allowed}.wf-btn-primary.wf-disabled:hover,.wf-btn-primary.wf-disabled:focus,.wf-btn-primary.wf-disabled.wf-focus,.wf-btn-primary[disabled]:hover,.wf-btn-primary[disabled]:focus,.wf-btn-primary[disabled].wf-focus,.wf-btn-primary[readonly]:hover,.wf-btn-primary[readonly]:focus,.wf-btn-primary[readonly].wf-focus,fieldset[disabled] .wf-btn-primary:hover,fieldset[disabled] .wf-btn-primary:focus,fieldset[disabled] .wf-btn-primary.wf-focus{background-color:#00709e;border-color:#005e85}.wf-btn-primary .wf-badge{color:#00709e;background-color:#fff}.wf-btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.wf-btn-success:focus,.wf-btn-success.focus{color:#fff;background-color:#449d44;border-color:#255625}.wf-btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.wf-btn-success:active,.wf-btn-success.active,.wf-open>.wf-btn-success.wf-dropdown-toggle{color:#fff;background-color:#449d44;border-color:#398439}.wf-btn-success:active:hover,.wf-btn-success:active:focus,.wf-btn-success:active.focus,.wf-btn-success.active:hover,.wf-btn-success.active:focus,.wf-btn-success.active.focus,.wf-open>.wf-btn-success.wf-dropdown-toggle:hover,.wf-open>.wf-btn-success.wf-dropdown-toggle:focus,.wf-open>.wf-btn-success.wf-dropdown-toggle.focus{color:#fff;background-color:#398439;border-color:#255625}.wf-btn-success:active,.wf-btn-success.wf-active,.wf-open>.wf-btn-success.wf-dropdown-toggle{background-image:none}.wf-btn-success.wf-disabled,.wf-btn-success[disabled],.wf-btn-success[readonly],fieldset[disabled] .wf-btn-success{color:#fff;background-color:#95d195;border-color:#8bca8b;cursor:not-allowed}.wf-btn-success.wf-disabled:hover,.wf-btn-success.wf-disabled:focus,.wf-btn-success.wf-disabled.wf-focus,.wf-btn-success[disabled]:hover,.wf-btn-success[disabled]:focus,.wf-btn-success[disabled].wf-focus,.wf-btn-success[readonly]:hover,.wf-btn-success[readonly]:focus,.wf-btn-success[readonly].wf-focus,fieldset[disabled] .wf-btn-success:hover,fieldset[disabled] .wf-btn-success:focus,fieldset[disabled] .wf-btn-success.wf-focus{background-color:#5cb85c;border-color:#4cae4c}.wf-btn-success .wf-badge{color:#5cb85c;background-color:#fff}.wf-btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.wf-btn-info:focus,.wf-btn-info.focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.wf-btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.wf-btn-info:active,.wf-btn-info.active,.wf-open>.wf-btn-info.wf-dropdown-toggle{color:#fff;background-color:#31b0d5;border-color:#269abc}.wf-btn-info:active:hover,.wf-btn-info:active:focus,.wf-btn-info:active.focus,.wf-btn-info.active:hover,.wf-btn-info.active:focus,.wf-btn-info.active.focus,.wf-open>.wf-btn-info.wf-dropdown-toggle:hover,.wf-open>.wf-btn-info.wf-dropdown-toggle:focus,.wf-open>.wf-btn-info.wf-dropdown-toggle.focus{color:#fff;background-color:#269abc;border-color:#1b6d85}.wf-btn-info:active,.wf-btn-info.wf-active,.wf-open>.wf-btn-info.wf-dropdown-toggle{background-image:none}.wf-btn-info.wf-disabled,.wf-btn-info[disabled],.wf-btn-info[readonly],fieldset[disabled] .wf-btn-info{color:#fff;background-color:#94d6ea;border-color:#87d1e7;cursor:not-allowed}.wf-btn-info.wf-disabled:hover,.wf-btn-info.wf-disabled:focus,.wf-btn-info.wf-disabled.wf-focus,.wf-btn-info[disabled]:hover,.wf-btn-info[disabled]:focus,.wf-btn-info[disabled].wf-focus,.wf-btn-info[readonly]:hover,.wf-btn-info[readonly]:focus,.wf-btn-info[readonly].wf-focus,fieldset[disabled] .wf-btn-info:hover,fieldset[disabled] .wf-btn-info:focus,fieldset[disabled] .wf-btn-info.wf-focus{background-color:#5bc0de;border-color:#46b8da}.wf-btn-info .wf-badge{color:#5bc0de;background-color:#fff}.wf-btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.wf-btn-warning:focus,.wf-btn-warning.focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.wf-btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.wf-btn-warning:active,.wf-btn-warning.active,.wf-open>.wf-btn-warning.wf-dropdown-toggle{color:#fff;background-color:#ec971f;border-color:#d58512}.wf-btn-warning:active:hover,.wf-btn-warning:active:focus,.wf-btn-warning:active.focus,.wf-btn-warning.active:hover,.wf-btn-warning.active:focus,.wf-btn-warning.active.focus,.wf-open>.wf-btn-warning.wf-dropdown-toggle:hover,.wf-open>.wf-btn-warning.wf-dropdown-toggle:focus,.wf-open>.wf-btn-warning.wf-dropdown-toggle.focus{color:#fff;background-color:#d58512;border-color:#985f0d}.wf-btn-warning:active,.wf-btn-warning.wf-active,.wf-open>.wf-btn-warning.wf-dropdown-toggle{background-image:none}.wf-btn-warning.wf-disabled,.wf-btn-warning[disabled],.wf-btn-warning[readonly],fieldset[disabled] .wf-btn-warning{color:#fff;background-color:#f5ca8c;border-color:#f4c37c;cursor:not-allowed}.wf-btn-warning.wf-disabled:hover,.wf-btn-warning.wf-disabled:focus,.wf-btn-warning.wf-disabled.wf-focus,.wf-btn-warning[disabled]:hover,.wf-btn-warning[disabled]:focus,.wf-btn-warning[disabled].wf-focus,.wf-btn-warning[readonly]:hover,.wf-btn-warning[readonly]:focus,.wf-btn-warning[readonly].wf-focus,fieldset[disabled] .wf-btn-warning:hover,fieldset[disabled] .wf-btn-warning:focus,fieldset[disabled] .wf-btn-warning.wf-focus{background-color:#f0ad4e;border-color:#eea236}.wf-btn-warning .wf-badge{color:#f0ad4e;background-color:#fff}.wf-btn-danger{color:#fff;background-color:#930000;border-color:#7a0000}.wf-btn-danger:focus,.wf-btn-danger.focus{color:#fff;background-color:#600000;border-color:#000}.wf-btn-danger:hover{color:#fff;background-color:#600000;border-color:#3c0000}.wf-btn-danger:active,.wf-btn-danger.active,.wf-open>.wf-btn-danger.wf-dropdown-toggle{color:#fff;background-color:#600000;border-color:#3c0000}.wf-btn-danger:active:hover,.wf-btn-danger:active:focus,.wf-btn-danger:active.focus,.wf-btn-danger.active:hover,.wf-btn-danger.active:focus,.wf-btn-danger.active.focus,.wf-open>.wf-btn-danger.wf-dropdown-toggle:hover,.wf-open>.wf-btn-danger.wf-dropdown-toggle:focus,.wf-open>.wf-btn-danger.wf-dropdown-toggle.focus{color:#fff;background-color:#3c0000;border-color:#000}.wf-btn-danger:active,.wf-btn-danger.wf-active,.wf-open>.wf-btn-danger.wf-dropdown-toggle{background-image:none}.wf-btn-danger.wf-disabled,.wf-btn-danger[disabled],.wf-btn-danger[readonly],fieldset[disabled] .wf-btn-danger{color:#fff;background-color:#b95959;border-color:#a95959;cursor:not-allowed}.wf-btn-danger.wf-disabled:hover,.wf-btn-danger.wf-disabled:focus,.wf-btn-danger.wf-disabled.wf-focus,.wf-btn-danger[disabled]:hover,.wf-btn-danger[disabled]:focus,.wf-btn-danger[disabled].wf-focus,.wf-btn-danger[readonly]:hover,.wf-btn-danger[readonly]:focus,.wf-btn-danger[readonly].wf-focus,fieldset[disabled] .wf-btn-danger:hover,fieldset[disabled] .wf-btn-danger:focus,fieldset[disabled] .wf-btn-danger.wf-focus{background-color:#930000;border-color:#7a0000}.wf-btn-danger .wf-badge{color:#930000;background-color:#fff}.wf-btn-callout{font-weight:600;text-transform:uppercase}.wf-btn-callout-subtle{font-weight:400;text-transform:uppercase}.wf-btn-link{color:#00709e;font-weight:normal;border-radius:0}.wf-btn-link,.wf-btn-link:active,.wf-btn-link.wf-active,.wf-btn-link[disabled],fieldset[disabled] .wf-btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.wf-btn-link,.wf-btn-link:hover,.wf-btn-link:focus,.wf-btn-link:active{border-color:transparent}.wf-btn-link:hover,.wf-btn-link:focus{color:#003a52;text-decoration:underline;background-color:transparent}.wf-btn-link[disabled]:hover,.wf-btn-link[disabled]:focus,fieldset[disabled] .wf-btn-link:hover,fieldset[disabled] .wf-btn-link:focus{color:#777;text-decoration:none}.wf-btn-lg,.wf-btn-group-lg>.wf-btn{padding:10px 16px;font-size:18px;line-height:1.33333;border-radius:6px}.wf-btn-sm,.wf-btn-group-sm>.wf-btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.wf-btn-xs,.wf-btn-group-xs>.wf-btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.wf-btn-block{display:block;width:100%}.wf-btn-block+.wf-btn-block{margin-top:5px}input[type="submit"].wf-btn-block,input[type="reset"].wf-btn-block,input[type="button"].wf-btn-block{width:100%}.wf-btn-group,.wf-btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.wf-btn-group>.wf-btn,.wf-btn-group-vertical>.wf-btn{position:relative;float:left}.wf-btn-group>.wf-btn:hover,.wf-btn-group>.wf-btn:focus,.wf-btn-group>.wf-btn:active,.wf-btn-group>.wf-btn.wf-active,.wf-btn-group-vertical>.wf-btn:hover,.wf-btn-group-vertical>.wf-btn:focus,.wf-btn-group-vertical>.wf-btn:active,.wf-btn-group-vertical>.wf-btn.wf-active{z-index:2}.wf-btn-group .wf-btn+.wf-btn,.wf-btn-group .wf-btn+.wf-btn-group,.wf-btn-group .wf-btn-group+.wf-btn,.wf-btn-group .wf-btn-group+.wf-btn-group{margin-left:-1px}.wf-btn-toolbar{margin-left:-5px}.wf-btn-toolbar:before,.wf-btn-toolbar:after{content:" ";display:table}.wf-btn-toolbar:after{clear:both}.wf-btn-toolbar .wf-btn,.wf-btn-toolbar .wf-btn-group,.wf-btn-toolbar .wf-input-group{float:left}.wf-btn-toolbar>.wf-btn,.wf-btn-toolbar>.wf-btn-group,.wf-btn-toolbar>.wf-input-group{margin-left:5px}.wf-btn-group>.wf-btn:not(:first-child):not(:last-child):not(.wf-dropdown-toggle){border-radius:0}.wf-btn-group>.wf-btn:first-child{margin-left:0}.wf-btn-group>.wf-btn:first-child:not(:last-child):not(.wf-dropdown-toggle){-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0}.wf-btn-group>.wf-btn:last-child:not(:first-child),.wf-btn-group>.wf-dropdown-toggle:not(:first-child){-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0}.wf-btn-group>.wf-btn-group{float:left}.wf-btn-group>.wf-btn-group:not(:first-child):not(:last-child)>.wf-btn{border-radius:0}.wf-btn-group>.wf-btn-group:first-child:not(:last-child)>.wf-btn:last-child,.wf-btn-group>.wf-btn-group:first-child:not(:last-child)>.wf-dropdown-toggle{-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0}.wf-btn-group>.wf-btn-group:last-child:not(:first-child)>.wf-btn:first-child{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0}.wf-btn-group .wf-dropdown-toggle:active,.wf-btn-group.wf-open .wf-dropdown-toggle{outline:0}.wf-btn-group>.wf-btn+.wf-dropdown-toggle{padding-left:8px;padding-right:8px}.wf-btn-group>.wf-btn-lg+.wf-dropdown-toggle,.wf-btn-group-lg.wf-btn-group>.wf-btn+.wf-dropdown-toggle{padding-left:12px;padding-right:12px}.wf-btn-group.open .wf-dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.wf-btn-group.open .wf-dropdown-toggle.wf-btn-link{-webkit-box-shadow:none;box-shadow:none}.wf-btn .wf-caret{margin-left:0}.wf-btn-lg .wf-caret,.wf-btn-group-lg>.wf-btn .wf-caret{border-width:5px 5px 0;border-bottom-width:0}.wf-dropup .wf-btn-lg .wf-caret,.wf-dropup .wf-btn-group-lg>.wf-btn .wf-caret{border-width:0 5px 5px}.wf-btn-group-vertical>.wf-btn,.wf-btn-group-vertical>.wf-btn-group,.wf-btn-group-vertical>.wf-btn-group>.wf-btn{display:block;float:none;width:100%;max-width:100%}.wf-btn-group-vertical>.wf-btn-group:before,.wf-btn-group-vertical>.wf-btn-group:after{content:" ";display:table}.wf-btn-group-vertical>.wf-btn-group:after{clear:both}.wf-btn-group-vertical>.wf-btn-group>.wf-btn{float:none}.wf-btn-group-vertical>.wf-btn+.wf-btn,.wf-btn-group-vertical>.wf-btn+.wf-btn-group,.wf-btn-group-vertical>.wf-btn-group+.wf-btn,.wf-btn-group-vertical>.wf-btn-group+.wf-btn-group{margin-top:-1px;margin-left:0}.wf-btn-group-vertical>.wf-btn:not(:first-child):not(:last-child){border-radius:0}.wf-btn-group-vertical>.wf-btn:first-child:not(:last-child){-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0}.wf-btn-group-vertical>.wf-btn:last-child:not(:first-child){-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px}.wf-btn-group-vertical>.wf-btn-group:not(:first-child):not(:last-child)>.wf-btn{border-radius:0}.wf-btn-group-vertical>.wf-btn-group:first-child:not(:last-child)>.wf-btn:last-child,.wf-btn-group-vertical>.wf-btn-group:first-child:not(:last-child)>.wf-dropdown-toggle{-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0}.wf-btn-group-vertical>.wf-btn-group:last-child:not(:first-child)>.wf-btn:first-child{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0}.wf-btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.wf-btn-group-justified>.wf-btn,.wf-btn-group-justified>.wf-btn-group{float:none;display:table-cell;width:1%}.wf-btn-group-justified>.wf-btn-group .wf-btn{width:100%}.wf-btn-group-justified>.wf-btn-group .wf-dropdown-menu{left:auto}[data-toggle="buttons"]>.wf-btn input[type="radio"],[data-toggle="buttons"]>.wf-btn input[type="checkbox"],[data-toggle="buttons"]>.wf-btn-group>.wf-btn input[type="radio"],[data-toggle="buttons"]>.wf-btn-group>.wf-btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.wf-pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.wf-pagination>li{display:inline}.wf-pagination>li>a,.wf-pagination>li>span{position:relative;float:left;padding:.5rem 1.25rem;line-height:1.42857;text-decoration:none;color:#00709e;background-color:#fff;border:1px solid #ddd;margin-left:-1px}.wf-pagination>li:first-child>a,.wf-pagination>li:first-child>span{margin-left:0;-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px}.wf-pagination>li:last-child>a,.wf-pagination>li:last-child>span{-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px}.wf-pagination>li>a:hover,.wf-pagination>li>a:focus,.wf-pagination>li>span:hover,.wf-pagination>li>span:focus{z-index:2;color:#003a52;background-color:#e2e2e2;border-color:#ddd}.wf-pagination>.wf-active>a,.wf-pagination>.wf-active>a:hover,.wf-pagination>.wf-active>a:focus,.wf-pagination>.wf-active>span,.wf-pagination>.wf-active>span:hover,.wf-pagination>.wf-active>span:focus{z-index:3;color:#fff;background-color:#00709e;border-color:#00709e;cursor:default}.wf-pagination>.wf-disabled>span,.wf-pagination>.wf-disabled>span:hover,.wf-pagination>.wf-disabled>span:focus,.wf-pagination>.wf-disabled>a,.wf-pagination>.wf-disabled>a:hover,.wf-pagination>.wf-disabled>a:focus{color:#777;background-color:#fff;border-color:#ddd;cursor:not-allowed}.wf-pagination-lg>li>a,.wf-pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.33333}.wf-pagination-lg>li:first-child>a,.wf-pagination-lg>li:first-child>span{-moz-border-radius-topleft:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px}.wf-pagination-lg>li:last-child>a,.wf-pagination-lg>li:last-child>span{-moz-border-radius-topright:6px;-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-moz-border-radius-bottomright:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px}.wf-pagination-sm>li>a,.wf-pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.wf-pagination-sm>li:first-child>a,.wf-pagination-sm>li:first-child>span{-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-bottomleft:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px}.wf-pagination-sm>li:last-child>a,.wf-pagination-sm>li:last-child>span{-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-moz-border-radius-bottomright:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px}@-ms-viewport{width:device-width}.wf-visible-xs{display:none !important}.wf-visible-sm{display:none !important}.wf-visible-md{display:none !important}.wf-visible-lg{display:none !important}.wf-visible-xs-block,.wf-visible-xs-inline,.wf-visible-xs-inline-block,.wf-visible-sm-block,.wf-visible-sm-inline,.wf-visible-sm-inline-block,.wf-visible-md-block,.wf-visible-md-inline,.wf-visible-md-inline-block,.wf-visible-lg-block,.wf-visible-lg-inline,.wf-visible-lg-inline-block{display:none !important}@media (max-width: 767px){.wf-visible-xs{display:block !important}table.wf-visible-xs{display:table !important}tr.wf-visible-xs{display:table-row !important}th.wf-visible-xs,td.wf-visible-xs{display:table-cell !important}}@media (max-width: 767px){.wf-visible-xs-block{display:block !important}}@media (max-width: 767px){.wf-visible-xs-inline{display:inline !important}}@media (max-width: 767px){.wf-visible-xs-inline-block{display:inline-block !important}}@media (min-width: 768px) and (max-width: 991px){.wf-visible-sm{display:block !important}table.wf-visible-sm{display:table !important}tr.wf-visible-sm{display:table-row !important}th.wf-visible-sm,td.wf-visible-sm{display:table-cell !important}}@media (min-width: 768px) and (max-width: 991px){.wf-visible-sm-block{display:block !important}}@media (min-width: 768px) and (max-width: 991px){.wf-visible-sm-inline{display:inline !important}}@media (min-width: 768px) and (max-width: 991px){.wf-visible-sm-inline-block{display:inline-block !important}}@media (min-width: 992px) and (max-width: 1199px){.wf-visible-md{display:block !important}table.wf-visible-md{display:table !important}tr.wf-visible-md{display:table-row !important}th.wf-visible-md,td.wf-visible-md{display:table-cell !important}}@media (min-width: 992px) and (max-width: 1199px){.wf-visible-md-block{display:block !important}}@media (min-width: 992px) and (max-width: 1199px){.wf-visible-md-inline{display:inline !important}}@media (min-width: 992px) and (max-width: 1199px){.wf-visible-md-inline-block{display:inline-block !important}}@media (min-width: 1200px){.wf-visible-lg{display:block !important}table.wf-visible-lg{display:table !important}tr.wf-visible-lg{display:table-row !important}th.wf-visible-lg,td.wf-visible-lg{display:table-cell !important}}@media (min-width: 1200px){.wf-visible-lg-block{display:block !important}}@media (min-width: 1200px){.wf-visible-lg-inline{display:inline !important}}@media (min-width: 1200px){.wf-visible-lg-inline-block{display:inline-block !important}}@media (max-width: 767px){.wf-hidden-xs{display:none !important}}@media (min-width: 768px) and (max-width: 991px){.wf-hidden-sm{display:none !important}}@media (min-width: 992px) and (max-width: 1199px){.wf-hidden-md{display:none !important}}@media (min-width: 1200px){.wf-hidden-lg{display:none !important}}.wf-visible-print{display:none !important}@media print{.wf-visible-print{display:block !important}table.wf-visible-print{display:table !important}tr.wf-visible-print{display:table-row !important}th.wf-visible-print,td.wf-visible-print{display:table-cell !important}}.wf-visible-print-block{display:none !important}@media print{.wf-visible-print-block{display:block !important}}.wf-visible-print-inline{display:none !important}@media print{.wf-visible-print-inline{display:inline !important}}.wf-visible-print-inline-block{display:none !important}@media print{.wf-visible-print-inline-block{display:inline-block !important}}@media print{.wf-hidden-print{display:none !important}}.wf-container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.wf-container:before,.wf-container:after{content:" ";display:table}.wf-container:after{clear:both}@media (min-width: 768px){.wf-container{width:750px}}@media (min-width: 992px){.wf-container{width:970px}}@media (min-width: 1200px){.wf-container{width:1170px}}.wf-container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.wf-container-fluid:before,.wf-container-fluid:after{content:" ";display:table}.wf-container-fluid:after{clear:both}.wf-row{margin-left:-15px;margin-right:-15px}.wf-row:before,.wf-row:after{content:" ";display:table}.wf-row:after{clear:both}.wf-col-xs-1,.wf-col-sm-1,.wf-col-md-1,.wf-col-lg-1,.wf-col-xs-2,.wf-col-sm-2,.wf-col-md-2,.wf-col-lg-2,.wf-col-xs-3,.wf-col-sm-3,.wf-col-md-3,.wf-col-lg-3,.wf-col-xs-4,.wf-col-sm-4,.wf-col-md-4,.wf-col-lg-4,.wf-col-xs-5,.wf-col-sm-5,.wf-col-md-5,.wf-col-lg-5,.wf-col-xs-6,.wf-col-sm-6,.wf-col-md-6,.wf-col-lg-6,.wf-col-xs-7,.wf-col-sm-7,.wf-col-md-7,.wf-col-lg-7,.wf-col-xs-8,.wf-col-sm-8,.wf-col-md-8,.wf-col-lg-8,.wf-col-xs-9,.wf-col-sm-9,.wf-col-md-9,.wf-col-lg-9,.wf-col-xs-10,.wf-col-sm-10,.wf-col-md-10,.wf-col-lg-10,.wf-col-xs-11,.wf-col-sm-11,.wf-col-md-11,.wf-col-lg-11,.wf-col-xs-12,.wf-col-sm-12,.wf-col-md-12,.wf-col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px;box-sizing:border-box}.wf-col-xs-1,.wf-col-xs-2,.wf-col-xs-3,.wf-col-xs-4,.wf-col-xs-5,.wf-col-xs-6,.wf-col-xs-7,.wf-col-xs-8,.wf-col-xs-9,.wf-col-xs-10,.wf-col-xs-11,.wf-col-xs-12{float:left}.wf-col-xs-1{width:8.33333%}.wf-col-xs-2{width:16.66667%}.wf-col-xs-3{width:25%}.wf-col-xs-4{width:33.33333%}.wf-col-xs-5{width:41.66667%}.wf-col-xs-6{width:50%}.wf-col-xs-7{width:58.33333%}.wf-col-xs-8{width:66.66667%}.wf-col-xs-9{width:75%}.wf-col-xs-10{width:83.33333%}.wf-col-xs-11{width:91.66667%}.wf-col-xs-12{width:100%}.wf-col-xs-pull-0{right:auto}.wf-col-xs-pull-1{right:8.33333%}.wf-col-xs-pull-2{right:16.66667%}.wf-col-xs-pull-3{right:25%}.wf-col-xs-pull-4{right:33.33333%}.wf-col-xs-pull-5{right:41.66667%}.wf-col-xs-pull-6{right:50%}.wf-col-xs-pull-7{right:58.33333%}.wf-col-xs-pull-8{right:66.66667%}.wf-col-xs-pull-9{right:75%}.wf-col-xs-pull-10{right:83.33333%}.wf-col-xs-pull-11{right:91.66667%}.wf-col-xs-pull-12{right:100%}.wf-col-xs-push-0{left:auto}.wf-col-xs-push-1{left:8.33333%}.wf-col-xs-push-2{left:16.66667%}.wf-col-xs-push-3{left:25%}.wf-col-xs-push-4{left:33.33333%}.wf-col-xs-push-5{left:41.66667%}.wf-col-xs-push-6{left:50%}.wf-col-xs-push-7{left:58.33333%}.wf-col-xs-push-8{left:66.66667%}.wf-col-xs-push-9{left:75%}.wf-col-xs-push-10{left:83.33333%}.wf-col-xs-push-11{left:91.66667%}.wf-col-xs-push-12{left:100%}.wf-col-xs-offset-0{margin-left:0%}.wf-col-xs-offset-1{margin-left:8.33333%}.wf-col-xs-offset-2{margin-left:16.66667%}.wf-col-xs-offset-3{margin-left:25%}.wf-col-xs-offset-4{margin-left:33.33333%}.wf-col-xs-offset-5{margin-left:41.66667%}.wf-col-xs-offset-6{margin-left:50%}.wf-col-xs-offset-7{margin-left:58.33333%}.wf-col-xs-offset-8{margin-left:66.66667%}.wf-col-xs-offset-9{margin-left:75%}.wf-col-xs-offset-10{margin-left:83.33333%}.wf-col-xs-offset-11{margin-left:91.66667%}.wf-col-xs-offset-12{margin-left:100%}.wf-col-xs-half-padding-left{padding-left:8px}.wf-col-xs-half-padding-right{padding-right:7px}@media (min-width: 768px){.wf-col-sm-1,.wf-col-sm-2,.wf-col-sm-3,.wf-col-sm-4,.wf-col-sm-5,.wf-col-sm-6,.wf-col-sm-7,.wf-col-sm-8,.wf-col-sm-9,.wf-col-sm-10,.wf-col-sm-11,.wf-col-sm-12{float:left}.wf-col-sm-1{width:8.33333%}.wf-col-sm-2{width:16.66667%}.wf-col-sm-3{width:25%}.wf-col-sm-4{width:33.33333%}.wf-col-sm-5{width:41.66667%}.wf-col-sm-6{width:50%}.wf-col-sm-7{width:58.33333%}.wf-col-sm-8{width:66.66667%}.wf-col-sm-9{width:75%}.wf-col-sm-10{width:83.33333%}.wf-col-sm-11{width:91.66667%}.wf-col-sm-12{width:100%}.wf-col-sm-pull-0{right:auto}.wf-col-sm-pull-1{right:8.33333%}.wf-col-sm-pull-2{right:16.66667%}.wf-col-sm-pull-3{right:25%}.wf-col-sm-pull-4{right:33.33333%}.wf-col-sm-pull-5{right:41.66667%}.wf-col-sm-pull-6{right:50%}.wf-col-sm-pull-7{right:58.33333%}.wf-col-sm-pull-8{right:66.66667%}.wf-col-sm-pull-9{right:75%}.wf-col-sm-pull-10{right:83.33333%}.wf-col-sm-pull-11{right:91.66667%}.wf-col-sm-pull-12{right:100%}.wf-col-sm-push-0{left:auto}.wf-col-sm-push-1{left:8.33333%}.wf-col-sm-push-2{left:16.66667%}.wf-col-sm-push-3{left:25%}.wf-col-sm-push-4{left:33.33333%}.wf-col-sm-push-5{left:41.66667%}.wf-col-sm-push-6{left:50%}.wf-col-sm-push-7{left:58.33333%}.wf-col-sm-push-8{left:66.66667%}.wf-col-sm-push-9{left:75%}.wf-col-sm-push-10{left:83.33333%}.wf-col-sm-push-11{left:91.66667%}.wf-col-sm-push-12{left:100%}.wf-col-sm-offset-0{margin-left:0%}.wf-col-sm-offset-1{margin-left:8.33333%}.wf-col-sm-offset-2{margin-left:16.66667%}.wf-col-sm-offset-3{margin-left:25%}.wf-col-sm-offset-4{margin-left:33.33333%}.wf-col-sm-offset-5{margin-left:41.66667%}.wf-col-sm-offset-6{margin-left:50%}.wf-col-sm-offset-7{margin-left:58.33333%}.wf-col-sm-offset-8{margin-left:66.66667%}.wf-col-sm-offset-9{margin-left:75%}.wf-col-sm-offset-10{margin-left:83.33333%}.wf-col-sm-offset-11{margin-left:91.66667%}.wf-col-sm-offset-12{margin-left:100%}.wf-col-sm-half-padding-left{padding-left:8px}.wf-col-sm-half-padding-right{padding-right:7px}}@media (min-width: 992px){.wf-col-md-1,.wf-col-md-2,.wf-col-md-3,.wf-col-md-4,.wf-col-md-5,.wf-col-md-6,.wf-col-md-7,.wf-col-md-8,.wf-col-md-9,.wf-col-md-10,.wf-col-md-11,.wf-col-md-12{float:left}.wf-col-md-1{width:8.33333%}.wf-col-md-2{width:16.66667%}.wf-col-md-3{width:25%}.wf-col-md-4{width:33.33333%}.wf-col-md-5{width:41.66667%}.wf-col-md-6{width:50%}.wf-col-md-7{width:58.33333%}.wf-col-md-8{width:66.66667%}.wf-col-md-9{width:75%}.wf-col-md-10{width:83.33333%}.wf-col-md-11{width:91.66667%}.wf-col-md-12{width:100%}.wf-col-md-pull-0{right:auto}.wf-col-md-pull-1{right:8.33333%}.wf-col-md-pull-2{right:16.66667%}.wf-col-md-pull-3{right:25%}.wf-col-md-pull-4{right:33.33333%}.wf-col-md-pull-5{right:41.66667%}.wf-col-md-pull-6{right:50%}.wf-col-md-pull-7{right:58.33333%}.wf-col-md-pull-8{right:66.66667%}.wf-col-md-pull-9{right:75%}.wf-col-md-pull-10{right:83.33333%}.wf-col-md-pull-11{right:91.66667%}.wf-col-md-pull-12{right:100%}.wf-col-md-push-0{left:auto}.wf-col-md-push-1{left:8.33333%}.wf-col-md-push-2{left:16.66667%}.wf-col-md-push-3{left:25%}.wf-col-md-push-4{left:33.33333%}.wf-col-md-push-5{left:41.66667%}.wf-col-md-push-6{left:50%}.wf-col-md-push-7{left:58.33333%}.wf-col-md-push-8{left:66.66667%}.wf-col-md-push-9{left:75%}.wf-col-md-push-10{left:83.33333%}.wf-col-md-push-11{left:91.66667%}.wf-col-md-push-12{left:100%}.wf-col-md-offset-0{margin-left:0%}.wf-col-md-offset-1{margin-left:8.33333%}.wf-col-md-offset-2{margin-left:16.66667%}.wf-col-md-offset-3{margin-left:25%}.wf-col-md-offset-4{margin-left:33.33333%}.wf-col-md-offset-5{margin-left:41.66667%}.wf-col-md-offset-6{margin-left:50%}.wf-col-md-offset-7{margin-left:58.33333%}.wf-col-md-offset-8{margin-left:66.66667%}.wf-col-md-offset-9{margin-left:75%}.wf-col-md-offset-10{margin-left:83.33333%}.wf-col-md-offset-11{margin-left:91.66667%}.wf-col-md-offset-12{margin-left:100%}.wf-col-md-half-padding-left{padding-left:8px}.wf-col-md-half-padding-right{padding-right:7px}}@media (min-width: 1200px){.wf-col-lg-1,.wf-col-lg-2,.wf-col-lg-3,.wf-col-lg-4,.wf-col-lg-5,.wf-col-lg-6,.wf-col-lg-7,.wf-col-lg-8,.wf-col-lg-9,.wf-col-lg-10,.wf-col-lg-11,.wf-col-lg-12{float:left}.wf-col-lg-1{width:8.33333%}.wf-col-lg-2{width:16.66667%}.wf-col-lg-3{width:25%}.wf-col-lg-4{width:33.33333%}.wf-col-lg-5{width:41.66667%}.wf-col-lg-6{width:50%}.wf-col-lg-7{width:58.33333%}.wf-col-lg-8{width:66.66667%}.wf-col-lg-9{width:75%}.wf-col-lg-10{width:83.33333%}.wf-col-lg-11{width:91.66667%}.wf-col-lg-12{width:100%}.wf-col-lg-pull-0{right:auto}.wf-col-lg-pull-1{right:8.33333%}.wf-col-lg-pull-2{right:16.66667%}.wf-col-lg-pull-3{right:25%}.wf-col-lg-pull-4{right:33.33333%}.wf-col-lg-pull-5{right:41.66667%}.wf-col-lg-pull-6{right:50%}.wf-col-lg-pull-7{right:58.33333%}.wf-col-lg-pull-8{right:66.66667%}.wf-col-lg-pull-9{right:75%}.wf-col-lg-pull-10{right:83.33333%}.wf-col-lg-pull-11{right:91.66667%}.wf-col-lg-pull-12{right:100%}.wf-col-lg-push-0{left:auto}.wf-col-lg-push-1{left:8.33333%}.wf-col-lg-push-2{left:16.66667%}.wf-col-lg-push-3{left:25%}.wf-col-lg-push-4{left:33.33333%}.wf-col-lg-push-5{left:41.66667%}.wf-col-lg-push-6{left:50%}.wf-col-lg-push-7{left:58.33333%}.wf-col-lg-push-8{left:66.66667%}.wf-col-lg-push-9{left:75%}.wf-col-lg-push-10{left:83.33333%}.wf-col-lg-push-11{left:91.66667%}.wf-col-lg-push-12{left:100%}.wf-col-lg-offset-0{margin-left:0%}.wf-col-lg-offset-1{margin-left:8.33333%}.wf-col-lg-offset-2{margin-left:16.66667%}.wf-col-lg-offset-3{margin-left:25%}.wf-col-lg-offset-4{margin-left:33.33333%}.wf-col-lg-offset-5{margin-left:41.66667%}.wf-col-lg-offset-6{margin-left:50%}.wf-col-lg-offset-7{margin-left:58.33333%}.wf-col-lg-offset-8{margin-left:66.66667%}.wf-col-lg-offset-9{margin-left:75%}.wf-col-lg-offset-10{margin-left:83.33333%}.wf-col-lg-offset-11{margin-left:91.66667%}.wf-col-lg-offset-12{margin-left:100%}.wf-col-lg-half-padding-left{padding-left:8px}.wf-col-lg-half-padding-right{padding-right:7px}}.wrap.wordfence{direction:ltr}@media (min-width: 768px){.wrap.wordfence{max-width:750px}}@media (min-width: 992px){.wrap.wordfence{max-width:970px}}@media (min-width: 1200px){.wrap.wordfence{max-width:1170px}}.wrap.wordfence>.wf-container-fluid{padding-left:0px;padding-right:0px}.wrap.wordfence .button-primary{text-align:center;text-transform:uppercase;font-weight:bold;background-color:#00709e}.wrap.wordfence a{text-decoration:none}.wrap.wordfence a:hover{text-decoration:underline}.wrap.wordfence a.wf-btn:hover{text-decoration:none}.wrap.wordfence p,.wrap.wordfence td,.wrap.wordfence li{font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:.875rem;color:#2d2d2d;line-height:1.3125;font-weight:normal}.wrap.wordfence p strong,.wrap.wordfence td strong,.wrap.wordfence li strong{font-weight:600}.wrap.wordfence p em,.wrap.wordfence td em,.wrap.wordfence li em{font-weight:normal}.wrap.wordfence h1,.wrap.wordfence h2,.wrap.wordfence h3,.wrap.wordfence h4,.wrap.wordfence h5,.wrap.wordfence h6{font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;color:#2d2d2d;font-weight:700}.wrap.wordfence h2{font-size:1.3125rem;line-height:1.5}.wrap.wordfence h3{font-size:1.125rem}.wrap.wordfence h4{font-size:1rem}a{color:#00709e}.wf-inline-help{color:#9f9fa0}.wf-inline-help:hover{color:#00709e}.wordfenceWrap{margin:20px 0 0 20px}.wordfence-icon32{width:32px;height:32px;background-position:0 0;background-repeat:no-repeat;padding:0;margin:7px 5px 0 0;float:left}#wfHeading:after{content:'.';visibility:hidden;display:block;clear:both;height:0px}.wordfence-lock-icon{width:32px;height:32px;background-image:url(../images/wordfence-logo.svg)}a.wfhelp{margin:0 3px 0 3px;text-decoration:none;display:inline-block;vertical-align:middle;font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased}a.wfhelp:before{content:'\f29c'}.wordfence .resulticon{display:block;float:left;width:16px;height:16px;background-position:0 0;background-repeat:no-repeat;border-width:0;padding:0;margin:0 3px 0 0;background-image:url(../images/icons/bullet_yellow.png)}.wordfenceBoldTD{font-weight:bold}.wfAjax24{display:none;width:24px;height:24px;background-image:url(../images/icons/ajax24.gif);margin:0;padding:0}div.wfLoadingWhite32{width:32px;height:32px;background-image:url(../images/icons/ajaxWhite32x32.gif);margin:0;padding:0}.wfTabsContainer{background-color:#FFF;overflow:hidden;border:1px solid #CCC;padding:15px;min-height:200px;-webkit-font-smoothing:antialiased}#wfTabs::after{content:".";display:block;height:0;width:0;line-height:0;clear:both;visibility:hidden}#wfTabs a{float:left;z-index:10;height:18px;margin:0 5px -1px 0;padding:5px 8px;border:1px solid #CCC;text-decoration:none;background-color:#EFEFEF;color:#21759B;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px}#wfTabs a.selected{border-bottom:1px solid #FFF;background-color:#FFF;color:#777}.wordfenceTopTab{display:none;margin-top:15px}.wordfenceTopTab.active{display:block}.wordfenceHelpLink{margin-top:15px}.wfAjaxLight128{background-image:url(../images/icons/ajax3.gif)}.wfStrong{font-weight:bold}.wordfenceModeElem{width:1px;height:1px;opacity:0}.wfWarn{color:#F00}.wf-flag{display:inline-block;vertical-align:middle;margin:0px 2px 0 0;background-repeat:no-repeat;background-position:center center;width:16px;height:11px;background-image:url(../images/flags.png);-webkit-flex-shrink:0;flex-shrink:0;-webkit-flex-grow:0;flex-grow:0}.wfHitTime{font-style:italic}.wfAvatar img{vertical-align:middle;margin-right:0.5rem}.wf-hex-sequence{color:#587ECB}.wfLoadMoreButton.disabled,.wfLoadMoreButton[disabled]{pointer-events:none;opacity:0.65}table.wfConfigForm th{font-weight:normal;text-align:left;padding:2px 3px 1px 0;vertical-align:middle}table.wfConfigForm td{vertical-align:middle}table.wfConfigForm td.align-top{vertical-align:top}table th.wfConfigEnable{font-weight:bold;min-width:25%}.wfSavedMsg{display:none;color:#A00}table th.wfSubheading{font-weight:bold;padding-top:10px}h3.wfConfigHeading{font-size:22px;color:#777;font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:italic;font-weight:normal}.wfTipText{color:#777;font-family:Georgia,Times New Roman,Times,serif;font-style:italic}.wfBlackCursor{color:#FFF}.wf-spinner{display:inline-block;width:4px}.wferror{color:#F00}#wordfenceWorking{padding:10px 40px 6px 16px;z-index:100000;position:fixed;right:16px;bottom:0px;background-color:#fcb214;border:5px solid #fcb214;border-width:6px 15px 6px 6px;color:#525355;font-size:12px;font-weight:bold;font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;background-image:url("../images/icons/working-indicator.gif");background-position:100% 50%;background-repeat:no-repeat}@media (max-width: 960px){#wordfenceWorking{left:auto;right:0px}}#paidWrap{position:relative}.paidInnerMsg{width:500px;margin:150px auto 0 auto;color:#000;font-size:18px;font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;line-height:1.8em;text-align:center;-webkit-font-smoothing:antialiased}.wfMarker{height:1px;width:1px}.wfPaidOnlyNotice{width:500px;background-color:#FFFFE0;border:1px solid #000;padding:10px;margin:20px}.wfOnOffSwitch{display:inline-block;position:relative !important;width:69px !important;-webkit-user-select:none !important;-moz-user-select:none !important;-ms-user-select:none !important;user-select:none !important}.wfOnOffSwitch-checkbox{display:none !important}.wfOnOffSwitch-label{display:block !important;overflow:hidden !important;cursor:pointer !important;border:2px solid #999999 !important;border-radius:19px !important;margin:0}.wfOnOffSwitch-inner{width:200% !important;margin-left:-100% !important;-webkit-transition:margin 0.3s ease-in !important;-o-transition:margin 0.3s ease-in !important;transition:margin 0.3s ease-in !important;-webkit-transition-delay:0s !important;transition-delay:0s !important}.wfOnOffSwitch-inner:before,.wfOnOffSwitch-inner:after{float:left !important;width:50% !important;height:19px !important;padding:0 !important;line-height:19px !important;font-size:14px !important;color:white !important;font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif !important;font-weight:bold !important;-webkit-box-sizing:border-box !important;-moz-box-sizing:border-box !important;box-sizing:border-box !important;-moz-border-radius:19px !important;-webkit-border-radius:19px;border-radius:19px !important;-webkit-box-shadow:0 9.5px 0 rgba(0,0,0,0.08) inset !important;box-shadow:0 9.5px 0 rgba(0,0,0,0.08) inset !important}.wfOnOffSwitch-inner:before{content:"ON" !important;padding-left:10px !important;background-color:#30D965 !important;color:#FFFFFF !important;-moz-border-radius:19px 0 0 19px !important;-webkit-border-radius:19px;border-radius:19px 0 0 19px !important}.wfOnOffSwitch-inner:after{content:"OFF" !important;padding-right:10px !important;background-color:#EEEEEE !important;color:#999999 !important;text-align:right !important;-moz-border-radius:0 19px 19px 0 !important;-webkit-border-radius:0;border-radius:0 19px 19px 0 !important}.wfOnOffSwitch-switch{width:19px !important;margin:0 !important;background:#FFFFFF !important;border:2px solid #999999 !important;-moz-border-radius:19px !important;-webkit-border-radius:19px;border-radius:19px !important;position:absolute !important;top:0 !important;bottom:0 !important;right:46px !important;-webkit-transition:all 0.3s ease-in !important;-o-transition:all 0.3s ease-in !important;transition:all 0.3s ease-in !important;-webkit-transition-delay:0s !important;transition-delay:0s !important;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzAwMDAwMCIgc3RvcC1vcGFjaXR5PSIwLjEiLz48c3RvcCBvZmZzZXQ9IjgwJSIgc3RvcC1jb2xvcj0iIzAwMDAwMCIgc3RvcC1vcGFjaXR5PSIwLjAiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2dyYWQpIiAvPjwvc3ZnPiA=') !important;background-size:100%;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, rgba(0,0,0,0.1)),color-stop(80%, rgba(0,0,0,0))) !important;background-image:-moz-linear-gradient(center top, rgba(0,0,0,0.1) 0%,rgba(0,0,0,0) 80%) !important;background-image:-webkit-linear-gradient(center top, rgba(0,0,0,0.1) 0%,rgba(0,0,0,0) 80%) !important;background-image:linear-gradient(to center bottom, rgba(0,0,0,0.1) 0%,rgba(0,0,0,0) 80%) !important;box-shadow:0 1px 1px white inset !important}.wfOnOffSwitch-checkbox:checked+.wfOnOffSwitch-label .wfOnOffSwitch-inner{margin-left:0 !important}.wfOnOffSwitch-checkbox:checked+.wfOnOffSwitch-label .wfOnOffSwitch-switch{right:0 !important}#wordfenceConfigWarning,#wordfenceAdminEmailWarning{clear:left;margin-top:5px}.wf-striped-table{width:100%;max-width:100%;border-collapse:collapse}.wf-striped-table th{border-left:1px solid #bdbdbd}.wf-striped-table th:first-of-type{border-left:0}.wf-striped-table th,.wf-striped-table td{padding:1rem}.wf-striped-table thead th,.wf-striped-table thead td,.wf-striped-table tfoot th,.wf-striped-table tfoot td,.wf-striped-table tbody.thead th,.wf-striped-table tbody.thead td{background-color:#ebebeb;color:#777;font-weight:bold;text-align:left}.wf-striped-table tbody tr.even td,.wf-striped-table tbody tr:nth-child(2n) td{background-color:#ffffff}.wf-striped-table tbody tr td,.wf-striped-table tbody tr.odd td{background-color:#fafafa}.wf-striped-table tbody tr:hover>td{background-color:#fffbd8}.wf-striped-table tbody.empty-row tr td{border-width:0;padding:8px 0;background-color:transparent}.wf-striped-table .wf-result-error,.wf-block-list .wf-result-error{color:#d0514c !important;font-weight:bold}.wf-striped-table .wf-result-error:before,.wf-block-list .wf-result-error:before{content:"\2718"}.wf-striped-table .wf-result-success{max-width:20%}.wf-striped-table .wf-result-success,.wf-block-list .wf-result-success{color:#008c10 !important;font-weight:bold}.wf-striped-table .wf-result-success:before,.wf-block-list .wf-result-success:before{content:"\2713"}.wf-striped-table .wf-result-success:before,.wf-block-list .wf-result-success:before,.wf-striped-table .wf-result-error:before,.wf-block-list .wf-result-error:before{font-size:16px;display:inline-block;margin:0px 8px 0px 0px}.wf-striped-table .wf-result-inactive,.wf-block-list .wf-result-inactive{font-weight:bold;color:#666666 !important}.wf-fixed-table{table-layout:fixed}pre.wf-pre{margin:8px 0 20px;padding:12px;background:#ffffff;border:1px solid #999999;overflow:auto}.wf-center{text-align:center}#wfConfigForm,.wf-diagnostics-wrapper{max-width:1035px}.wf-hidden{display:none !important}.wf-card{position:relative;margin:0 auto .625rem;padding:1rem;box-sizing:border-box;background:#fff;box-shadow:0 0 0 1px rgba(200,215,225,0.5),0 1px 2px #e9eff3}.wf-card .wf-card-inner{min-height:76px;width:100%;padding:8px;box-sizing:border-box;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;position:relative}.wf-card .wf-card-inner .wf-card-content{max-width:75%}.wf-card .wf-card-inner .wf-card-content .wf-card-title{font-size:1.125rem;width:100%}.wf-card .wf-card-inner .wf-card-content .wf-card-subtitle{margin-top:.125rem;margin-bottom:.125rem;font-size:.875rem;color:#4f748e}.wf-card .wf-card-inner .wf-card-action{position:absolute;top:0;right:0;height:100%;background:none;border:0;outline:0;width:48px;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;vertical-align:middle;transition:transform 0.15s cubic-bezier(0.175, 0.885, 0.32, 1.275),color 0.2s ease-in}.wf-card .wf-card-inner .wf-card-action .wf-card-action-chevron{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJjaGV2cm9uLW9iamVjdCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiCgkgd2lkdGg9IjI0cHgiIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAyNCAyNCIKCSB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHBhdGggaWQ9ImNoZXZyb24iIGQ9Ik0yMCA5bC04IDgtOC04IDEuNDE0LTEuNDE0TDEyIDE0LjE3Mmw2LjU4Ni02LjU4NiIvPgo8L3N2Zz4K");background-repeat:no-repeat;background-position:center center;width:24px;height:24px;fill:#87a6bc}.wf-card .wf-card-inner .wf-card-action .wf-card-action-checkbox{background-image:url(../images/checkbox.png);background-repeat:no-repeat;background-position:left center;width:29px;height:29px}.wf-card .wf-card-inner .wf-card-action .wf-card-action-checkbox.checked{background-position:right center}.wf-card .wf-card-extra{display:none;padding:0.5rem;margin-top:1rem;border-top:1px solid #f3f6f8}@media (min-width: 768px){.wf-card .wf-card-extra{padding:1rem}}.wf-card.active .wf-card-extra{display:block}.wf-card.wf-card-left .wf-card-content{margin-left:48px}.wf-card.wf-card-left .wf-card-action{right:auto;left:0px}.wf-card.disabled .wf-card-content .wf-card-title{color:#aaaaaa}.wf-card.disabled .wf-card-content .wf-card-subtitle{color:#8ea6be}.wf-inline-block{display:inline-block}@media (max-width: 767px){.wf-inline-block-xs{display:inline-block}}.wf-full-width{width:100%;max-width:100%}.wf-no-top{margin-top:0 !important}.wf-add-top{margin-top:1rem !important}.wf-add-top-large{margin-top:1.5rem !important}.wf-add-top-medium{margin-top:0.75rem !important}.wf-add-top-small{margin-top:0.5rem !important}.wf-add-top-smaller{margin-top:0.25rem !important}.wf-no-bottom{margin-bottom:0 !important}.wf-add-bottom{margin-bottom:1rem !important}.wf-add-bottom-large{margin-bottom:1.5rem !important}.wf-add-bottom-medium{margin-bottom:0.75rem !important}.wf-add-bottom-small{margin-bottom:0.5rem !important}.wf-add-bottom-smaller{margin-bottom:0.25rem !important}.wf-padding-no-top{padding-top:0 !important}.wf-no-right{margin-right:0 !important}.wf-padding-no-bottom{padding-bottom:0 !important}.wf-padding-no-left{padding-left:0 !important}.wf-padding-no-right{padding-right:0 !important}.wf-padding-add-top{padding-top:1rem !important}.wf-padding-add-top-small{padding-top:0.5rem !important}.wf-padding-add-top-medium{padding-top:0.75rem !important}.wf-padding-add-top-large{padding-top:1.5rem !important}.wf-padding-add-bottom{padding-bottom:1rem !important}.wf-padding-add-bottom-small{padding-bottom:0.5rem !important}.wf-padding-add-bottom-medium{padding-bottom:0.75rem !important}.wf-padding-add-bottom-large{padding-bottom:1.5rem !important}.wf-padding-add-left{padding-left:1rem !important}.wf-padding-add-left-small{padding-left:0.5rem !important}.wf-padding-add-left-medium{padding-left:0.75rem !important}.wf-padding-add-left-large{padding-left:1.5rem !important}.wf-padding-add-right{padding-right:1rem !important}.wf-padding-add-right-small{padding-right:0.5rem !important}.wf-padding-add-right-medium{padding-right:0.75rem !important}.wf-padding-add-right-large{padding-right:1.5rem !important}.wf-left{text-align:left !important}.wf-center{text-align:center !important}.wf-block-center{margin:0 auto}.wf-right{text-align:right !important}.wf-block-right{margin:0 0 0 auto}@media (max-width: 767px){.wf-left-xs{text-align:left !important}.wf-center-xs{text-align:center !important}.wf-padding-add-top-xs{padding-top:1rem !important}.wf-padding-add-top-xs-small{padding-top:0.5rem !important}.wf-padding-add-top-xs-large{padding-top:1.5rem !important}.wf-padding-add-bottom-xs{padding-bottom:1rem !important}.wf-padding-add-bottom-xs-small{padding-bottom:0.5rem !important}.wf-padding-add-bottom-xs-large{padding-bottom:1.5rem !important}}@media (min-width: 768px) and (max-width: 991px){.wf-left-sm{text-align:left !important}.wf-center-sm{text-align:center !important}}@media (min-width: 992px) and (max-width: 1199px){.wf-left-md{text-align:left !important}.wf-center-md{text-align:center !important}.wf-right-md{text-align:right !important}}@media (min-width: 1200px){.wf-left-lg{text-align:left !important}.wf-center-lg{text-align:center !important}.wf-right-lg{text-align:right !important}}.wf-border-no-top{border-top:none !important}.wf-border-no-right{border-right:none !important}.wf-border-no-bottom{border-bottom:none !important}.wf-border-no-left{border-left:none !important}.wf-overflow-x-auto{overflow-x:auto}.wf-overflow-y-auto{overflow-y:auto}@media (max-width: 767px){.wf-overflow-x-auto-xs{overflow-x:auto}.wf-overflow-y-auto-xs{overflow-y:auto}}.wf-blue{color:#00709e !important}.wf-blue-light{color:#008cc1 !important}.wf-gray-dark{color:#2d2d2d !important}.wf-gray-blue{color:#3f596b !important}.wf-green-dark{color:#11967a !important}.wf-green-light{color:#16bc9b !important}.wf-red-dark{color:#930000 !important}.wf-red-light{color:#c10000 !important}.wf-yellow-dark{color:#fcb214 !important}.wf-yellow-light{color:#ffd10a !important}.wf-gray{color:#525355 !important}.wf-gray-light{color:#9f9fa0 !important}.wf-nowrap{white-space:nowrap}.wf-tip{color:#fcb214;font-size:1.1rem;margin-right:0.25rem}.wf-text-small{font-size:80%}.wf-scroll-x::-webkit-scrollbar,.wf-scroll-y::-webkit-scrollbar{-webkit-appearance:none;width:7px;height:7px}.wf-scroll-x::-webkit-scrollbar-thumb,.wf-scroll-y::-webkit-scrollbar-thumb{border-radius:4px;background-color:rgba(0,0,0,0.194);-webkit-box-shadow:0 0 1px rgba(255,255,255,0.5)}.wf-split-word{word-wrap:break-word;word-break:break-all}@media (max-width: 767px){.wf-split-word-xs{word-wrap:break-word;word-break:break-all;white-space:normal !important}}.wfselect2-container{font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;min-width:200px}@media (min-width: 768px){.wfselect2-container{min-width:280px}}@media (min-width: 992px){.wfselect2-container{min-width:320px}}@media (max-width: 767px){.wfselect2-container .wfselect2-search.wfselect2-search--inline{margin:0 !important}}.wf-select2-placeholder-fix .wfselect2-search__field{width:auto !important}#wf-all-options-search .wfselect2-container{min-width:250px}#wf-all-options-search .wf-select2-placeholder-fix .wfselect2-search__field{margin-top:10px !important}.wf-page-title{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;margin-top:0.5rem}.wf-page-title>*{-webkit-flex-grow:0;flex-grow:0;min-width:0}.wf-page-title>*:first-child{-webkit-flex-grow:0;flex-grow:0;min-width:32px;-webkit-flex-basis:32px;flex-basis:32px;padding-right:0.25rem}.wf-page-title .wordfence-icon32{margin:0;margin-right:0.5rem}.wf-page-title h2{padding:0 !important}.wf-page-title .wfOnOffSwitch{-webkit-flex-basis:69px;flex-basis:69px;-webkit-flex-shrink:0;flex-shrink:0;margin-left:0.5rem}.wf-tab-container{background-color:#fff}@media (min-width: 768px){.wf-tab-container{background-color:unset}}.wf-page-tabs,.wf-page-fixed-tabs{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;border-bottom:1px solid #d0d0d0;margin:0;margin-top:0.5rem;margin-left:-10px;margin-right:-10px}@media (min-width: 768px){.wf-page-tabs,.wf-page-fixed-tabs{margin-left:0;margin-right:0}}.wf-page-tabs>*,.wf-page-fixed-tabs>*{-webkit-flex-grow:0;flex-grow:0;min-width:0}.wf-page-tabs>*:first-child,.wf-page-fixed-tabs>*:first-child{-webkit-flex-grow:0;flex-grow:0;min-width:32px;-webkit-flex-basis:32px;flex-basis:32px}.wf-page-tabs .wordfence-icon32,.wf-page-fixed-tabs .wordfence-icon32{margin:0;margin-right:0.5rem;margin-left:0.5rem}@media (min-width: 768px){.wf-page-tabs .wordfence-icon32,.wf-page-fixed-tabs .wordfence-icon32{margin-left:0}}.wf-page-tabs .wf-text-tab,.wf-page-fixed-tabs .wf-text-tab{margin:0;margin-left:0.5rem;color:#333}.wf-page-tabs .wf-tab,.wf-page-fixed-tabs .wf-tab{border:1px solid #fff;border-top-right-radius:0.5rem;border-top-left-radius:0.5rem;border-bottom:none;margin-bottom:-1px;margin-right:0.5rem;color:#333}@media (min-width: 768px){.wf-page-tabs .wf-tab,.wf-page-fixed-tabs .wf-tab{border:1px solid #d0d0d0;background:#e6e6e6}}.wf-page-tabs .wf-tab a,.wf-page-fixed-tabs .wf-tab a{display:block;padding:0.5rem 1rem;font-size:14px;line-height:24px;text-decoration:none;font-weight:bold;color:#333}.wf-page-tabs .wf-tab.wf-active,.wf-page-tabs .wf-tab:hover,.wf-page-fixed-tabs .wf-tab.wf-active,.wf-page-fixed-tabs .wf-tab:hover{border-bottom:1px solid #f1f1f1;background:#f1f1f1;color:#00709e;-webkit-box-shadow:none;box-shadow:none}.wf-page-tabs .wf-tab.wf-active a,.wf-page-tabs .wf-tab:hover a,.wf-page-fixed-tabs .wf-tab.wf-active a,.wf-page-fixed-tabs .wf-tab:hover a{color:#00709e}.wf-tab-content{display:none;margin-top:15px}.wf-tab-content.wf-active{display:block}.wf-fixed-tab-content{margin-top:15px}.wf-section-title{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start}.wf-section-title>*{-webkit-flex-grow:0;flex-grow:0;min-width:0}.wf-section-title>h1,.wf-section-title>h2,.wf-section-title>h3,.wf-section-title>h4,.wf-section-title>h5,.wf-section-title>h6{-webkit-flex-grow:1;flex-grow:1;color:#2d2d2d !important;font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif !important;line-height:1.5rem !important;font-weight:700 !important;padding:0 !important;margin:0 !important}@media (min-width: 768px){.wf-section-title>h1,.wf-section-title>h2,.wf-section-title>h3,.wf-section-title>h4,.wf-section-title>h5,.wf-section-title>h6{padding-right:0.25rem !important}}.wf-section-title h2{font-size:1.3125rem;line-height:1.5}.wf-section-title h3{font-size:1.125rem}.wf-section-title h4{font-size:1rem}.wf-section-title .wordfence-icon32{margin:0;margin-right:0.5rem}.wf-status-circular{position:relative}.wf-status-circular-text{position:absolute;left:50%;top:50%;padding:0;margin:0;transform:translate(-50%, -50%);color:#aaa;font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:1.3125rem;font-weight:300;line-height:1.5}.wf-status-circular .wf-status-overlay-text{position:absolute;left:50%;top:50%;padding:0;margin:0;width:200%;text-align:center;transform:translate(-50%, -50%);font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:.875rem;font-weight:normal;line-height:1.3125;opacity:0.0;color:#777}.wf-status-warning,.wf-status-critical,.wf-status-payment-expiring,.wf-status-renewing{width:100px;height:100px;margin-bottom:1rem}.wf-status-warning svg path{fill:#fcb214}.wf-status-critical svg path{fill:#930000}.wf-status-payment-expiring svg rect,.wf-status-payment-expiring svg path{fill:#930000}.wf-status-renewing svg rect,.wf-status-renewing svg path{fill:#11967a}#howGetIPs-preview{color:#8c8c8c}#howGetIPs-preview strong{color:#666}.wf-scrollTop{background:#424242;bottom:30px;right:15px;position:fixed;z-index:999;display:none}.wf-scrollTop a{background:#959595;display:block;padding:4px 5px;line-height:32px;width:32px;color:#ffffff;text-align:center}.wf-back-icon{color:#00709e;margin-right:0.75rem;font-size:1.5rem !important}.wf-back-link-chevron{margin-left:1rem}.wf-back-link-chevron:first-of-type{margin-left:0}.wf-back-link{font-weight:bold;text-decoration:none}.wf-premium-link{font-weight:bold}.wf-boolean-switch{border:1px solid #aaa;display:block;cursor:pointer;width:54px;height:30px;min-width:54px;min-height:30px;-moz-border-radius:15px;-webkit-border-radius:15px;border-radius:15px;line-height:30px !important;background-color:#ffffff;position:relative;box-sizing:border-box;transition:background-color 0.2s ease-in-out, border-color 0.2s ease-in-out}@media (min-width: 768px){.wf-boolean-switch{width:34px;height:20px;min-width:34px;min-height:20px;-moz-border-radius:10px;-webkit-border-radius:10px;border-radius:10px;line-height:20px !important}}.wf-boolean-switch .wf-boolean-switch-handle{position:relative;display:block;border:1px solid #aaa;background-color:#fff;width:30px;height:30px;min-width:30px;min-height:30px;-moz-border-radius:15px;-webkit-border-radius:15px;border-radius:15px;margin-top:-1px;box-sizing:border-box;left:-1px;transition:border-color 0.2s ease-in-out, left 0.2s ease-in-out}@media (min-width: 768px){.wf-boolean-switch .wf-boolean-switch-handle{width:20px;height:20px;min-width:20px;min-height:20px;-moz-border-radius:10px;-webkit-border-radius:10px;border-radius:10px}}.wf-boolean-switch.wf-active{border:1px solid #00709e;background-color:#00709e}.wf-boolean-switch.wf-active .wf-boolean-switch-handle{border:1px solid #00709e;left:25px}@media (min-width: 768px){.wf-boolean-switch.wf-active .wf-boolean-switch-handle{left:15px}}.wf-boolean-switch.wf-disabled{pointer-events:none;border-color:#e2e2e2}.wf-boolean-switch.wf-disabled .wf-boolean-switch-handle{border-color:#e2e2e2}.wf-boolean-switch.wf-disabled.wf-active{border-color:#e2e2e2;background-color:#e2e2e2}.wf-boolean-switch.wf-disabled.wf-active .wf-boolean-switch-handle{border-color:#e2e2e2}.wf-option-checkbox,[type=checkbox].wf-option-checkbox+label:before{content:'\f3fd';font-family:"Ionicons" !important;display:block;cursor:pointer;width:30px;height:30px;min-width:30px;min-height:30px;-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px;line-height:30px !important;text-align:center !important;background-color:#ffffff !important;box-shadow:0px 0px 0px 1px #aaa;color:#ffffff !important;font-size:30px !important;font-weight:normal !important}@media (min-width: 768px){.wf-option-checkbox,[type=checkbox].wf-option-checkbox+label:before{width:20px;height:20px;min-width:20px;min-height:20px;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;line-height:21px !important;font-size:25px !important}}@media (min-width: 768px){.wf-option-checkbox{position:relative}.wf-option-checkbox>*{position:absolute;top:9px;left:50%;transform:translateX(-50%) translateY(-50%)}}.wf-option-radio,[type=radio].wf-option-radio+label:before{content:"\f401";font-family:"Ionicons" !important;display:block;cursor:pointer;width:30px;height:30px;min-width:30px;min-height:30px;line-height:30px !important;text-align:center !important;color:#ccc !important;font-size:30px !important;font-weight:normal !important}@media (min-width: 768px){.wf-option-radio,[type=radio].wf-option-radio+label:before{width:20px;height:20px;min-width:20px;min-height:20px;-moz-border-radius:10px;-webkit-border-radius:10px;border-radius:10px;line-height:20px !important}}[type=checkbox].wf-option-checkbox.wf-small+label:before{width:20px;height:20px;min-width:20px;min-height:20px;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;line-height:21px !important;font-size:20px !important}[type=radio].wf-option-radio.wf-small+label:before{width:20px;height:20px;min-width:20px;min-height:20px;line-height:21px !important;font-size:20px !important}[type=checkbox].wf-option-checkbox+label:before,[type=radio].wf-option-radio+label:before{text-align:center !important;text-indent:0px;display:inline-block;vertical-align:-6px;margin:0px 5px 0px 0px;font-weight:normal;font-style:normal}[type=checkbox].wf-option-checkbox.wf-small+label:before,[type=radio].wf-option-radio.wf-small+label:before{text-indent:0px;vertical-align:-3px}.wf-option-checkbox.wf-checked,[type=checkbox].wf-option-checkbox:checked+label:before{color:#ffffff !important;box-shadow:0px 0px 0px 1px #00709e !important;background-color:#00709e !important}.wf-option-checkbox.wf-disabled,[type=checkbox].wf-option-checkbox:disabled+label:before{color:#f1f1f1 !important;box-shadow:0px 0px 0px 1px #e2e2e2 !important;background-color:#f1f1f1 !important}.wf-option-checkbox.wf-checked.wf-disabled,[type=checkbox].wf-option-checkbox:disabled:checked+label:before{color:#777 !important;box-shadow:0px 0px 0px 1px #e2e2e2 !important;background-color:#f1f1f1 !important}.wf-option-radio.wf-checked,[type=radio].wf-option-radio:checked+label:before{content:"\f3a7";color:#00709e !important}.wf-option-checkbox[type=checkbox],.wf-option-checkbox[type=radio],.wf-option-radio[type=checkbox],.wf-option-radio[type=radio]{position:absolute;left:-9999px}.wf-option-text input[type="text"],input.wf-input-text{text-align:left;width:100%;height:40px;border-radius:0;border:0;background-color:#ffffff;box-shadow:1px 1px 1px 2px rgba(215,215,215,0.65)}.wf-option-text input[type="text"]:placeholder-shown,input.wf-input-text:placeholder-shown{font-style:italic;color:#bfbfbf}::-webkit-input-placeholder{color:#bfbfbf}:-moz-placeholder{color:#bfbfbf;opacity:1}::-moz-placeholder{color:#bfbfbf;opacity:1}:-ms-input-placeholder{color:#bfbfbf}::-ms-input-placeholder{color:#bfbfbf}::placeholder{color:#bfbfbf}.wf-option-premium .wf-option-title,.wf-option-premium .wf-option-title>ul>li,.wf-option.wf-disabled .wf-option-title,.wf-option.wf-disabled .wf-option-title>ul>li{color:#aaa !important}.wf-option-premium .wf-option-checkbox,.wf-option-premium .wf-option-radio,.wf-option.wf-disabled .wf-option-checkbox,.wf-option.wf-disabled .wf-option-radio{opacity:0.5}.wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status .wf-block-labeled-value-value{padding-top:0}.wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status .wf-block-labeled-value-value .wf-fa{font-size:8rem}.wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status .wf-block-labeled-value-value svg{width:160px}.wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status .wf-block-labeled-value-label{font-size:1.35rem;font-weight:300;padding-bottom:0}.wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status-premium .wf-block-labeled-value-value{color:#9f9fa0}.wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status-premium .wf-block-labeled-value-value svg{fill:#9f9fa0}.wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status-premium .wf-block-labeled-value-label{color:#9f9fa0}.wf-indeterminate-progress{-webkit-animation:wf-indeterminate-progress-keyframes 1s steps(8, end) infinite;-o-animation:wf-indeterminate-progress-keyframes 1s steps(8, end) infinite;animation:wf-indeterminate-progress-keyframes 1s steps(8, end) infinite}.wf-indeterminate-progress path{fill:#00709e}@-moz-keyframes wf-indeterminate-progress-keyframes{to{-moz-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes wf-indeterminate-progress-keyframes{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes wf-indeterminate-progress-keyframes{to{-moz-transform:rotate(360deg);-ms-transform:rotate(360deg);-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.wf-flex-row{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:row;flex-direction:row}.wf-flex-row.wf-flex-row-full-height{-webkit-align-items:stretch;align-items:stretch}.wf-flex-row.wf-flex-row-vertical-xs{-webkit-flex-direction:column;flex-direction:column}@media (min-width: 768px){.wf-flex-row.wf-flex-row-vertical-xs{-webkit-flex-direction:row;flex-direction:row}}.wf-flex-row .wf-flex-row-1{-webkit-flex-grow:1;flex-grow:1}.wf-flex-row .wf-flex-row-0{-webkit-flex-grow:0;flex-grow:0}.wf-flex-row .wf-flex-col-100,.wf-flex-row .wf-flex-col-xs-100{-webkit-flex-grow:0;flex-grow:0;-webkit-flex-basis:100%;flex-basis:100%;width:100%}@media (min-width: 768px){.wf-flex-row .wf-flex-col-sm-100{-webkit-flex-grow:0;flex-grow:0;-webkit-flex-basis:100%;flex-basis:100%;width:100%}}@media (min-width: 992px){.wf-flex-row .wf-flex-col-md-100{-webkit-flex-grow:0;flex-grow:0;-webkit-flex-basis:100%;flex-basis:100%;width:100%}}@media (min-width: 1200px){.wf-flex-row .wf-flex-col-lg-100{-webkit-flex-grow:0;flex-grow:0;-webkit-flex-basis:100%;flex-basis:100%;width:100%}}.wf-flex-row .wf-flex-col-50,.wf-flex-row .wf-flex-col-xs-50{-webkit-flex-grow:0;flex-grow:0;-webkit-flex-basis:50%;flex-basis:50%;width:50%}@media (min-width: 768px){.wf-flex-row .wf-flex-col-sm-50{-webkit-flex-grow:0;flex-grow:0;-webkit-flex-basis:50%;flex-basis:50%;width:50%}}@media (min-width: 992px){.wf-flex-row .wf-flex-col-md-50{-webkit-flex-grow:0;flex-grow:0;-webkit-flex-basis:50%;flex-basis:50%;width:50%}}@media (min-width: 1200px){.wf-flex-row .wf-flex-col-lg-50{-webkit-flex-grow:0;flex-grow:0;-webkit-flex-basis:50%;flex-basis:50%;width:50%}}.wf-switch{display:-webkit-flex !important;display:flex !important;-webkit-align-items:stretch !important;align-items:stretch !important;-webkit-justify-content:flex-start !important;justify-content:flex-start !important;-webkit-flex-direction:row !important;flex-direction:row !important;margin:0;padding:0}.wf-switch>li{margin:0 !important;padding:0.5rem 0.7rem !important;text-transform:uppercase;cursor:pointer;color:#aaa;font-weight:400;border-top:1px solid #bfbfbf;border-bottom:1px solid #bfbfbf;border-right:1px solid #bfbfbf}.wf-switch>li:first-of-type{border-left:1px solid #bfbfbf;-moz-border-radius-topleft:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px}.wf-switch>li:last-of-type{-moz-border-radius-topright:6px;-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-moz-border-radius-bottomright:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px}.wf-switch>li.wf-active{color:#ffffff;background-color:#00709e}.wf-tooltip,.ui-widget.wf-tooltip{max-width:600px;font-size:0.75rem;overflow-wrap:break-word;opacity:1.0;background-color:#ffffff}.wf-widget-learning-mode{border-top:1px solid #eee;margin:0 -1rem;padding:1rem;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;-webkit-flex-direction:row;flex-direction:row}@media (min-width: 768px){.wf-widget-learning-mode{padding:1.5rem}}.wf-widget-learning-mode svg{width:18px}.wf-widget-learning-mode svg path{fill:#aaa}.wf-widget-learning-mode span{padding-left:0.5rem;font-size:.875rem;line-height:1.3125;font-weight:600}.wf-drawer-overlay{position:fixed;top:0px;right:0px;bottom:0px;left:160px;background-color:rgba(0,0,0,0.5);z-index:9980;padding:5rem 0}.folded .wf-drawer-overlay{left:36px}@media only screen and (max-width: 960px){.auto-fold .wf-drawer-overlay{left:36px}}.rtl .wf-drawer-overlay{right:160px;left:0px}.rtl .folded .wf-drawer-overlay{right:36px}@media only screen and (max-width: 960px){.rtl .auto-fold .wf-drawer-overlay{right:36px}}@media screen and (max-width: 782px){.wf-drawer-overlay,.folded .wf-drawer-overlay,.auto-fold .wf-drawer-overlay,.rtl .wf-drawer-overlay,.rtl .folded .wf-drawer-overlay,.rtl .auto-fold .wf-drawer-overlay{left:0px;right:0px}}.wf-drawer{background-color:#ffffff;position:fixed;top:32px;bottom:0px;right:0px;z-index:9981}.wf-drawer .wf-modal{display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:column;flex-direction:column;height:100%}.wf-drawer .wf-modal ul,.wf-drawer .wf-modal li{padding:0;margin:0}.wf-drawer .wf-modal .wf-modal-header{-webkit-flex-shrink:0;flex-shrink:0;min-height:44px;padding:1rem;width:100%;box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;position:relative;background-color:#00709e;color:#ffffff}.wf-drawer .wf-modal .wf-modal-header .wf-modal-header-content{max-width:75%}.wf-drawer .wf-modal .wf-modal-header .wf-modal-header-content .wf-modal-title{font-size:1.3125rem;line-height:1.5;font-weight:300;width:100%;transition:color 0.2s ease-in}.wf-drawer .wf-modal .wf-modal-header .wf-modal-header-content .wf-modal-subtitle{margin-top:.125rem;margin-bottom:.125rem;font-size:.575rem;color:#4f748e}.wf-drawer .wf-modal .wf-modal-content{-webkit-flex-grow:1;flex-grow:1;display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:column;flex-direction:column;padding:1rem}.wf-drawer .wf-modal .wf-modal-content>*:first-child{margin-top:0}.wf-drawer .wf-modal .wf-modal-content select,.wf-drawer .wf-modal .wf-modal-content select option,.wf-drawer .wf-modal .wf-modal-content .wfselect2-container--default{font-size:0.7rem;font-weight:bold}@media (min-width: 768px){.wf-drawer .wf-modal .wf-modal-content select,.wf-drawer .wf-modal .wf-modal-content select option,.wf-drawer .wf-modal .wf-modal-content .wfselect2-container--default{font-size:0.8rem}}@media (min-width: 992px){.wf-drawer .wf-modal .wf-modal-content select,.wf-drawer .wf-modal .wf-modal-content select option,.wf-drawer .wf-modal .wf-modal-content .wfselect2-container--default{font-size:0.9rem}}.wf-drawer .wf-modal .wf-modal-content .wf-option-select-option,.wf-drawer .wf-modal .wf-modal-content .wfselect2-container--default,.wf-drawer .wf-modal .wf-modal-content .wfselect2-container--default .wfselect2-selection--single{text-align:left;height:40px;border-radius:0;border:0;background-color:#ffffff;box-shadow:1px 1px 1px 2px rgba(215,215,215,0.35)}.wf-drawer .wf-modal .wf-modal-content .wf-option-select-option .wfselect2-selection__rendered,.wf-drawer .wf-modal .wf-modal-content .wfselect2-container--default .wfselect2-selection__rendered,.wf-drawer .wf-modal .wf-modal-content .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__rendered{color:#333;line-height:40px}.wf-drawer .wf-modal .wf-modal-content .wf-option-select-option .wfselect2-selection__arrow,.wf-drawer .wf-modal .wf-modal-content .wfselect2-container--default .wfselect2-selection__arrow,.wf-drawer .wf-modal .wf-modal-content .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow{height:38px}.wf-drawer .wf-modal .wf-modal-content .wf-option-select-option.wfselect2-container--disabled .wfselect2-selection__rendered,.wf-drawer .wf-modal .wf-modal-content .wfselect2-container--default.wfselect2-container--disabled .wfselect2-selection__rendered,.wf-drawer .wf-modal .wf-modal-content .wfselect2-container--default .wfselect2-selection--single.wfselect2-container--disabled .wfselect2-selection__rendered{color:#aaa}.wf-drawer .wf-modal .wf-modal-content .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow b{border-color:#333 transparent transparent}.wf-drawer .wf-modal .wf-modal-content .wfselect2-container--default.wfselect2-container--open .wfselect2-selection--single .wfselect2-selection__arrow b{border-color:transparent transparent #333}.wf-drawer .wf-modal .wf-modal-footer{-webkit-flex-shrink:0;flex-shrink:0;min-height:44px;padding:1rem;width:100%;box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;position:relative;background-color:#f1f1f1;border-top:1px solid #d9d9d9}.wf-mobile-menu-overlay{position:fixed;top:0px;right:0px;bottom:0px;left:0px;background-color:rgba(0,0,0,0.5);z-index:100000}.wf-mobile-menu-overlay>.wf-mobile-menu-tap-hint{position:absolute;top:25%;left:50%;transform:translateX(-50%);color:#ffffff;font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:1.3125rem;font-weight:300;line-height:1.5}.wf-mobile-menu{position:fixed;left:50%;transform:translateX(-50%);z-index:100001}.wf-mobile-menu>.wf-mobile-menu-items{margin:0;padding:0 0 0.25rem 0;list-style:none}.wf-mobile-menu>.wf-mobile-menu-items>li{margin:0;padding:0.25rem 0}.wf-mobile-menu>.wf-mobile-menu-items>li>a{box-sizing:border-box}.wf-circle-tooltip.ui-tooltip{padding:0;font-size:0.7rem;max-width:400px;border:1px solid #9f9fa0;position:absolute !important;z-index:3000;opacity:1.0;-moz-border-radius:6px;-webkit-border-radius:6px;border-radius:6px}.wf-circle-tooltip.ui-tooltip h4{margin:0 0 10px}.wf-circle-tooltip.ui-tooltip ul{margin:10px 0}.wf-circle-tooltip.ui-tooltip p{font-size:0.7rem;margin:10px 0 0}.wf-circle-tooltip.ui-tooltip a{color:#00709e;text-decoration:none}.wf-circle-tooltip.ui-tooltip a:hover{text-decoration:underline}.wf-circle-tooltip.ui-tooltip .wf-circle-tooltip-header,.wf-circle-tooltip.ui-tooltip .wf-circle-tooltip-body{padding:12px}.wf-circle-tooltip.ui-tooltip .wf-circle-tooltip-header{-moz-border-radius:6px 6px 0px 0px;-webkit-border-radius:6px;border-radius:6px 6px 0px 0px;background-color:#f1f1f1}.wf-circle-tooltip.ui-tooltip .wf-circle-tooltip-header h4{margin:0;font-size:0.8rem}.wf-circle-tooltip.ui-tooltip .wf-circle-tooltip-body .wf-tooltip-status-circle{position:relative;padding:0 10px 0 0}.wf-circle-tooltip.ui-tooltip .wf-circle-tooltip-body .wf-tooltip-status-circle .wf-status-overlay-text{display:none}.wf-circle-tooltip.ui-tooltip .wf-circle-tooltip-body ul li strong{width:20%}.wf-circle-tooltip.ui-tooltip .wf-circle-tooltip-body ul li span{width:80%}.wf-circle-tooltip.ui-tooltip .wf-circle-tooltip-block{position:relative;background-color:#fff;z-index:3001;-moz-border-radius:6px;-webkit-border-radius:6px;border-radius:6px}.wf-circle-tooltip.ui-tooltip .wf-circle-tooltip-block:after{content:'';position:absolute;bottom:-20px;left:20px;width:0;height:0;border-left:20px solid transparent;border-right:20px solid transparent;border-top:20px solid #fff}.wf-circle-tooltip.ui-tooltip:after{content:'';position:absolute;bottom:-22px;left:18px;width:0;height:0;border-left:22px solid transparent;border-right:22px solid transparent;border-top:22px solid rgba(0,0,0,0.5);filter:blur(2px)}.wf-circle-tooltip.ui-tooltip.wf-tooltip-vertical-top:after{top:-22px;bottom:auto;border-left:22px solid transparent;border-right:22px solid transparent;border-bottom:22px solid rgba(0,0,0,0.5);border-top-width:0}.wf-circle-tooltip.ui-tooltip.wf-tooltip-vertical-top .wf-circle-tooltip-block:after{top:-20px;bottom:auto;border-left:20px solid transparent;border-right:20px solid transparent;border-bottom:20px solid #f1f1f1;border-top-width:0}.wf-circle-tooltip.ui-tooltip.wf-tooltip-vertical-top.wf-tooltip-horizontal-right:after{left:auto;right:18px}.wf-circle-tooltip.ui-tooltip.wf-tooltip-vertical-top.wf-tooltip-horizontal-right .wf-circle-tooltip-block:after{left:auto;right:20px}.wf-circle-tooltip.ui-tooltip.wf-tooltip-vertical-bottom.wf-tooltip-horizontal-right:after{left:auto;right:18px}.wf-circle-tooltip.ui-tooltip.wf-tooltip-vertical-bottom.wf-tooltip-horizontal-right .wf-circle-tooltip-block:after{left:auto;right:20px}#wf-mobile-controls{white-space:nowrap;font-size:1.2rem}.wf-callout-warning{background-color:#feecc4;padding:0.8rem 1.25rem}.wf-tip-light-bulb{color:#fcb214;font-size:1.5rem;font-weight:bold}.wf-tip-info-message{padding-left:0.5rem !important;font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:.875rem;color:#2d2d2d;line-height:1.3125;font-weight:normal}.wf-overdue-cron td{background-color:#fff4f4 !important}.wf-inline-notice{background:#ffffff;border:1px solid #ccd0d4;border-left-color:#ffb900;border-left-width:4px;box-shadow:0 1px 1px rgba(0,0,0,0.04);padding:8px 12px;display:flex;justify-content:flex-start;align-items:center}.wf-inline-notice>*{flex-grow:1}.wf-inline-notice:first-child{flex-grow:0;flex-shrink:0}.wf-inline-notice span{padding-left:0.5rem}.wf-block{position:relative;margin:0 auto 0.5rem;padding:0 1rem;box-sizing:border-box;background-color:#fff;box-shadow:0 0 0 1px rgba(200,215,225,0.25),0 1px 2px #e9eff3}@media (min-width: 768px){.wf-block{padding:0 1.5rem}}.wf-block.wf-block-no-padding{padding:0}.wf-block.wf-block-transparent{background-color:transparent;box-shadow:none}.wf-block .wf-block-banner{min-height:44px;margin:0 -1rem;padding:0;box-sizing:border-box;position:relative;background-color:#fcb214;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;-webkit-flex-direction:row;flex-direction:row}.wf-block .wf-block-banner>li{margin:0;padding:0.75rem 1rem}@media (min-width: 768px){.wf-block .wf-block-banner{margin:0 -1.5rem}.wf-block .wf-block-banner>li{padding:0.75rem 1.5rem}}.wf-block .wf-block-header{min-height:44px;padding:1rem 0;width:100%;box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;position:relative}.wf-block .wf-block-header .wf-block-header-content{max-width:75%}.wf-block .wf-block-header .wf-block-header-content .wf-block-title{font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:0.9rem;width:100%;transition:color 0.2s ease-in}.wf-block .wf-block-header .wf-block-header-content .wf-block-subtitle{margin-top:.125rem;margin-bottom:.125rem;font-size:0.775rem}.wf-block .wf-block-header .wf-block-header-action{position:absolute;top:0;right:0;height:100%;background:none;border:0;outline:0;width:48px;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-end;justify-content:flex-end;vertical-align:middle;transition:transform 0.15s cubic-bezier(0.175, 0.885, 0.32, 1.275),color 0.2s ease-in}.wf-block .wf-block-header .wf-block-header-action.wf-block-header-action-text{width:auto}.wf-block .wf-block-header .wf-block-header-action.wf-block-header-action-text.wf-block-header-action-text-success{color:#11967a}.wf-block .wf-block-header .wf-block-header-action.wf-block-header-action-text.wf-block-header-action-text-warning{color:#930000}.wf-block .wf-block-header .wf-block-header-action.wf-block-header-action-text.wf-block-header-action-text-warning a{color:#930000}.wf-block .wf-block-header .wf-block-header-action .wf-block-header-action-chevron{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJjaGV2cm9uLW9iamVjdCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiCgkgd2lkdGg9IjI0cHgiIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAyNCAyNCIKCSB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHBhdGggaWQ9ImNoZXZyb24iIGQ9Ik0yMCA5bC04IDgtOC04IDEuNDE0LTEuNDE0TDEyIDE0LjE3Mmw2LjU4Ni02LjU4NiIvPgo8L3N2Zz4K");background-repeat:no-repeat;background-position:center center;width:24px;height:24px}.wf-block .wf-block-header .wf-block-header-action .wf-block-header-action-disclosure{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJkaXNjbG9zdXJlLWNsb3NlZC1vYmplY3QiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHdpZHRoPSIxMnB4IiBoZWlnaHQ9IjEycHgiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMTIgMTIiCgkgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxwYXRoIGlkPSJkaXNjbG9zdXJlLWNsb3NlZCIgZD0iTSA2IDAgbCA2IDYgLTYgNiAwIC0xMiIgZmlsbD0iIzc3NyIvPgo8L3N2Zz4=");background-repeat:no-repeat;background-position:center center;width:12px;height:12px;transition:transform 0.15s cubic-bezier(0.175, 0.885, 0.32, 1.275),background 0.2s ease-in}.wf-block .wf-block-header .wf-block-header-action .wf-block-header-action-checkbox{background-image:url(../images/checkbox.png);background-repeat:no-repeat;background-position:left center;width:29px;height:29px}.wf-block .wf-block-header .wf-block-header-action .wf-block-header-action-checkbox.wf-checked{background-position:right center}.wf-block .wf-block-content{display:none;margin:0 -1rem;padding:0 1rem}@media (min-width: 768px){.wf-block .wf-block-content{margin:0 -1.5rem;padding:0 1.5rem}}.wf-block .wf-block-content .wf-block-list{margin:0 -1rem;padding:0;list-style:none}@media (min-width: 768px){.wf-block .wf-block-content .wf-block-list{margin:0 -1.5rem}}.wf-block .wf-block-content .wf-block-list.wf-block-list-striped>li:nth-of-type(odd){background-color:#f9f9f9}.wf-block .wf-block-content .wf-block-list.wf-block-list-striped>li:nth-of-type(even){background-color:#ffffff}.wf-block .wf-block-content .wf-block-list>li{display:block;min-height:44px;padding:0 1rem;margin:0;border-top:1px solid #e2e2e2;box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between}@media (min-width: 768px){.wf-block .wf-block-content .wf-block-list>li{padding:0 1.5rem}}.wf-block .wf-block-content .wf-block-list>li>*:first-child{-webkit-flex-grow:1;flex-grow:1;min-width:0}.wf-block .wf-block-content .wf-block-list.wf-block-list-horizontal{box-sizing:border-box;margin-top:-1px;display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-align-content:flex-start;align-content:flex-start;-webkit-justify-content:space-between;justify-content:space-between;-webkit-flex-wrap:wrap;flex-wrap:wrap}.wf-block .wf-block-content .wf-block-list.wf-block-list-horizontal>li{-webkit-flex-grow:1;flex-grow:1;-webkit-flex-basis:100%;flex-basis:100%;border-left:1px solid #e2e2e2}@media (min-width: 768px){.wf-block .wf-block-content .wf-block-list.wf-block-list-horizontal>li{-webkit-flex-basis:50%;flex-basis:50%}}@media (min-width: 992px){.wf-block .wf-block-content .wf-block-list.wf-block-list-horizontal>li{-webkit-flex-basis:25%;flex-basis:25%}}.wf-block .wf-block-content .wf-block-list.wf-block-list-horizontal.wf-block-list-nowrap{overflow-y:auto;-webkit-flex-wrap:nowrap;flex-wrap:nowrap}.wf-block .wf-block-content .wf-block-list.wf-block-list-horizontal.wf-block-list-nowrap>li{-webkit-flex-shrink:0;flex-shrink:0}.wf-block .wf-block-content .wf-block-list.wf-block-list-horizontal.wf-block-list-horizontal-5>li{-webkit-flex-grow:1;flex-grow:1;-webkit-flex-basis:20%;flex-basis:20%}.wf-block .wf-block-content .wf-block-list.wf-block-list-horizontal>*:first-child{border-left:0}@media (min-width: 768px){.wf-block .wf-block-content .wf-block-list.wf-block-list-horizontal.wf-block-list-equal>li{max-width:50%}}@media (min-width: 992px){.wf-block .wf-block-content .wf-block-list.wf-block-list-horizontal.wf-block-list-equal>li{max-width:25%}}.wf-block .wf-block-content .wf-block-list.wf-block-list-horizontal.wf-block-list-horizontal-5.wf-block-list-equal>li{max-width:20%}.wf-block .wf-block-content .wf-block-list .wf-block-list-state{text-align:center}@media (min-width: 1200px){.wf-block .wf-block-content .wf-block-list .wf-block-list-state{text-align:left}}.wf-block .wf-block-content .wf-block-list .wf-block-list-state-enabled .wf-fa{color:#11967a}.wf-block .wf-block-content .wf-block-list .wf-block-list-state-disabled .wf-fa{color:#525355}.wf-block .wf-block-content .wf-block-list .wf-block-list-state-premium{color:#9f9fa0}.wf-block .wf-block-content .wf-block-list .wf-block-list-dismiss{padding-left:2rem;font-size:1.25rem}.wf-block .wf-block-content .wf-block-list .wf-block-list-dismiss a{color:#525355}.wf-block .wf-block-content:first-child>.wf-block-list>li:first-child{border-top:none}.wf-block .wf-block-content .wf-block-left-right{margin:0 -1rem;padding:0;list-style:none;display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-align-content:flex-start;align-content:flex-start;-webkit-justify-content:space-between;justify-content:space-between;-webkit-flex-wrap:wrap;flex-wrap:wrap}@media (min-width: 768px){.wf-block .wf-block-content .wf-block-left-right{margin:0 -1.5rem}}.wf-block .wf-block-content .wf-block-left-right.wf-block-left-right-nowrap{-webkit-flex-wrap:nowrap;flex-wrap:nowrap}.wf-block .wf-block-content .wf-block-left-right>li{display:block;min-height:44px;padding:0;margin:0;box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between}.wf-block .wf-block-content .wf-block-left-right>li>*:first-child{-webkit-flex-grow:1;flex-grow:1;min-width:0}.wf-block .wf-block-content .wf-block-left-right>li.wf-left{text-align:left}.wf-block .wf-block-content .wf-block-left-right>li.wf-right{text-align:right}.wf-block .wf-block-content .wf-block-left-center-right{margin:0 -1rem;padding:0;list-style:none;display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-align-content:center;align-content:center;-webkit-justify-content:space-between;justify-content:space-between;-webkit-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;flex-wrap:nowrap}.wf-block .wf-block-content .wf-block-left-center-right>li{display:block;min-height:44px;padding:0;margin:0;box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-grow:1;flex-grow:1;-webkit-flex-basis:33.3333%;flex-basis:33.3333%;max-width:33.3333%}.wf-block .wf-block-content .wf-block-left-center-right>li a{text-decoration:none;font-size:.875rem}.wf-block .wf-block-content .wf-block-left-center-right>li.wf-left{text-align:left}.wf-block .wf-block-content .wf-block-left-center-right>li.wf-center{text-align:center;-webkit-justify-content:center;justify-content:center}.wf-block .wf-block-content .wf-block-left-center-right>li.wf-center .wordfence-icon32{margin:0}.wf-block .wf-block-content .wf-block-left-center-right>li.wf-right{text-align:right;-webkit-justify-content:flex-end;justify-content:flex-end}.wf-block .wf-block-content .wf-block-labeled-value{box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;-webkit-flex-direction:column;flex-direction:column;margin:0 -1rem;padding:1rem}@media (min-width: 768px){.wf-block .wf-block-content .wf-block-labeled-value{margin:0 -1.5rem;padding:1.5rem}}.wf-block .wf-block-content .wf-block-labeled-value-value{font-size:3rem;line-height:3rem;color:#9f9fa0;padding:1rem}.wf-block .wf-block-content .wf-block-labeled-value-label{font-size:0.75rem;color:#9f9fa0;padding:0 1rem 1rem 1rem}.wf-block.wf-block-no-header .wf-block-content .wf-block-list>li{border-top:none}.wf-block.wf-active .wf-block-content,.wf-block.wf-always-active .wf-block-content{display:block}.wf-block.wf-active>.wf-block-header>.wf-block-header-content>.wf-block-title{color:#00709e}.wf-block.wf-active>.wf-block-header>.wf-block-header-content>.wf-block-header-action>.wf-block-header-action-disclosure{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJkaXNjbG9zdXJlLWNsb3NlZC1vYmplY3QiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHdpZHRoPSIxMnB4IiBoZWlnaHQ9IjEycHgiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMTIgMTIiCgkgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxwYXRoIGlkPSJkaXNjbG9zdXJlLWNsb3NlZCIgZD0iTSA2IDAgbCA2IDYgLTYgNiAwIC0xMiIgZmlsbD0iIzAwNzA5ZSIvPgo8L3N2Zz4=") !important;transform:rotate(90deg)}.wf-block.wf-disabled>.wf-block-header>.wf-block-header-content>.wf-block-title,.wf-block.wf-disabled>.wf-block-header>.wf-block-header-content>.wf-block-subtitle{color:#bfbfbf !important}.wf-block.wf-disabled>.wf-block-header>.wf-block-header-content>.wf-block-header-action>.wf-block-header-action-disclosure{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJkaXNjbG9zdXJlLWNsb3NlZC1vYmplY3QiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHdpZHRoPSIxMnB4IiBoZWlnaHQ9IjEycHgiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMTIgMTIiCgkgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxwYXRoIGlkPSJkaXNjbG9zdXJlLWNsb3NlZCIgZD0iTSA2IDAgbCA2IDYgLTYgNiAwIC0xMiIgZmlsbD0iI2JkYmRiZCIvPgo8L3N2Zz4=") !important;transform:rotate(0deg)}.wf-block.wf-disabled>.wf-block-content{display:none !important}.wf-block.wf-block-header-left .wf-block-header-content{margin-left:48px}.wf-block.wf-block-header-left .wf-block-header-action{right:auto;left:0px}.wf-block.wf-disabled .wf-dashboard-item-content .wf-block-title{color:#aaaaaa}.wf-block.wf-disabled .wf-dashboard-item-content .wf-block-subtitle{color:#8ea6be}.wf-section-title{margin-bottom:1rem}.wf-status-detail{box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;-webkit-flex-direction:column;flex-direction:column;margin:0 -1rem;padding:1rem}.wf-status-detail p{margin:0 0 0.45rem 0}.wf-status-detail .wf-status-circular{margin-bottom:1rem}.wf-status-detail .wf-status-detail-title{font-weight:700 !important;font-size:1rem !important;line-height:1.3125 !important}.wf-status-detail .wf-status-detail-subtitle{font-size:.875rem !important;line-height:1.3125 !important;font-weight:normal !important;text-align:center}.wf-status-detail .wf-status-detail-link>a{font-weight:600 !important;font-size:0.85rem !important}.wf-block-navigation-option{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-align-content:flex-start;align-content:flex-start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-wrap:nowrap;flex-wrap:nowrap}.wf-block-navigation-option svg.wf-block-navigation-option-icon{width:50px;min-width:50px;fill:#9f9fa0}.wf-block-navigation-option:hover{cursor:pointer}.wf-block-navigation-option:hover a{text-decoration:underline}.wf-block-navigation-option:hover svg.wf-block-navigation-option-icon{fill:#00709e}.wf-select-group{display:-webkit-flex !important;display:flex !important;-webkit-align-items:center !important;align-items:center !important;-webkit-justify-content:flex-start !important;justify-content:flex-start !important;-webkit-flex-direction:row !important;flex-direction:row !important;-webkit-flex-grow:0 !important;flex-grow:0 !important}.wf-select-group .wfselect2-container{min-width:200px}@media (max-width: 767px){.wf-select-group .wfselect2-container{max-width:100px}}.wf-select-group .wfselect2-container--default .wfselect2-selection--single{display:block;width:100%;height:38px;padding:.5rem 1.25rem;font-size:14px;line-height:1.42857;color:#2b2b2b;background-color:#fff;background-image:none;border:1px solid #ddd;border-radius:4px;border-top-right-radius:0;border-bottom-right-radius:0;border-right:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;-o-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s}.wf-select-group .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__rendered{color:#2b2b2b;line-height:inherit}.wf-select-group .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow{height:38px}.wf-select-group .wf-form-control{display:inline-block;width:auto;border-top-left-radius:0;border-bottom-left-radius:0;margin-left:0}.wf-flex-horizontal{display:-webkit-flex !important;display:flex !important;-webkit-align-items:center !important;align-items:center !important;-webkit-justify-content:flex-start !important;justify-content:flex-start !important;-webkit-flex-direction:row !important;flex-direction:row !important}.wf-flex-horizontal>*:first-child{-webkit-flex-grow:0 !important;flex-grow:0 !important}.wf-flex-horizontal.wf-flex-align-left{-webkit-align-items:flex-start !important;align-items:flex-start !important}.wf-flex-horizontal.wf-flex-align-right{-webkit-justify-content:flex-end !important;justify-content:flex-end !important}.wf-flex-horizontal.wf-flex-full-width{width:100%}.wf-flex-horizontal.wf-flex-full-width>*:last-child{-webkit-flex-grow:1 !important;flex-grow:1 !important}.wf-flex-horizontal.wf-flex-full-width.wf-flex-grow-first>*:first-child{-webkit-flex-grow:1 !important;flex-grow:1 !important}.wf-flex-horizontal.wf-flex-full-width.wf-flex-grow-first>*:last-child{-webkit-flex-grow:0 !important;flex-grow:0 !important}.wf-flex-horizontal.wf-flex-full-width.wf-flex-grow-all>*:first-child,.wf-flex-horizontal.wf-flex-full-width.wf-flex-grow-all>*{-webkit-flex-grow:1 !important;flex-grow:1 !important}.wf-flex-horizontal>li{padding:0;margin:0}.wf-flex-vertical{display:-webkit-flex !important;display:flex !important;-webkit-align-items:center !important;align-items:center !important;-webkit-justify-content:flex-start !important;justify-content:flex-start !important;-webkit-flex-direction:column !important;flex-direction:column !important}.wf-flex-vertical>*:first-child{-webkit-flex-grow:0 !important;flex-grow:0 !important}.wf-flex-vertical.wf-flex-align-left{-webkit-align-items:flex-start !important;align-items:flex-start !important}.wf-flex-vertical.wf-flex-align-right{-webkit-align-items:flex-end !important;align-items:flex-end !important}.wf-flex-vertical.wf-flex-full-width{-webkit-align-items:stretch !important;align-items:stretch !important}@media (max-width: 767px){.wf-flex-vertical.wf-flex-align-left-xs{-webkit-align-items:flex-start !important;align-items:flex-start !important}}@media (min-width: 768px) and (max-width: 991px){.wf-flex-vertical.wf-flex-align-left-sm{-webkit-align-items:flex-start !important;align-items:flex-start !important}}@media (min-width: 992px) and (max-width: 1199px){.wf-flex-vertical.wf-flex-align-left-md{-webkit-align-items:flex-start !important;align-items:flex-start !important}}@media (min-width: 1200px){.wf-flex-vertical.wf-flex-align-left-lg{-webkit-align-items:flex-start !important;align-items:flex-start !important}}.wf-flex-vertical>li{padding:0;margin:0}@media (max-width: 767px){.wf-flex-vertical-xs{display:-webkit-flex !important;display:flex !important;-webkit-align-items:center !important;align-items:center !important;-webkit-justify-content:flex-start !important;justify-content:flex-start !important;-webkit-flex-direction:column !important;flex-direction:column !important}.wf-flex-vertical-xs>*:first-child{-webkit-flex-grow:0 !important;flex-grow:0 !important}.wf-flex-vertical-xs.wf-flex-align-left{-webkit-align-items:flex-start !important;align-items:flex-start !important}.wf-flex-vertical-xs.wf-flex-align-right{-webkit-align-items:flex-end !important;align-items:flex-end !important}.wf-flex-vertical-xs.wf-flex-full-width{-webkit-align-items:stretch !important;align-items:stretch !important}}ul.wf-option,.wf-form-field{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;flex-wrap:nowrap;padding:1rem 0;position:relative}ul.wf-option li,.wf-form-field li{margin:0;padding:0}ul.wf-option.wf-option-no-spacing,.wf-form-field.wf-option-no-spacing{padding:0;margin:0}ul.wf-option.wf-option-toggled>*:last-child,ul.wf-option.wf-option-footer>*:last-child,.wf-form-field.wf-option-toggled>*:last-child,.wf-form-field.wf-option-footer>*:last-child{margin-right:1rem}@media (max-width: 768px){ul.wf-option.wf-option-footer,.wf-form-field.wf-option-footer{-webkit-flex-direction:column;flex-direction:column}}ul.wf-option>.wf-option-content,.wf-form-field>.wf-option-content{-webkit-flex-grow:1;flex-grow:1}ul.wf-option>.wf-option-content>ul,.wf-form-field>.wf-option-content>ul{display:-webkit-flex;display:flex;-webkit-align-items:flex-start;align-items:flex-start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:column;flex-direction:column;-webkit-flex-wrap:nowrap;flex-wrap:nowrap;width:100%}ul.wf-option>.wf-option-content>ul>*:first-child,.wf-form-field>.wf-option-content>ul>*:first-child{-webkit-flex-grow:1;flex-grow:1}@media (min-width: 768px){ul.wf-option>.wf-option-content>ul,.wf-form-field>.wf-option-content>ul{-webkit-flex-direction:row;flex-direction:row;-webkit-align-items:center;align-items:center}}ul.wf-option.wf-option-toggled-segmented *,.wf-form-field.wf-option-toggled-segmented *{-webkit-flex-grow:0;flex-grow:0}ul.wf-option.wf-option-toggled-segmented *:first-child,.wf-form-field.wf-option-toggled-segmented *:first-child{-webkit-flex-grow:1;flex-grow:1}ul.wf-option.wf-option-toggled-segmented>*:last-child,.wf-form-field.wf-option-toggled-segmented>*:last-child{margin-left:1rem}ul.wf-option.wf-option-toggled-segmented .wf-option-title,.wf-form-field.wf-option-toggled-segmented .wf-option-title{font-size:.8rem}ul.wf-option.wf-option-toggled-segmented .wf-option-segments,.wf-form-field.wf-option-toggled-segmented .wf-option-segments{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-align-content:stretch;align-content:stretch;-webkit-flex-wrap:nowrap;flex-wrap:nowrap}ul.wf-option.wf-option-toggled-segmented .wf-option-segments label,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label{-webkit-flex-grow:1;flex-grow:1;-webkit-flex-basis:50%;flex-basis:50%;display:block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;text-transform:uppercase;padding:.5rem 1.25rem;font-size:14px;line-height:1.42857;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;color:#00709e;background-color:#fff;border-color:#00709e;border-radius:0}ul.wf-option.wf-option-toggled-segmented .wf-option-segments label:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.focus{color:#00709e;background-color:#e6e6e6;border-color:#00161f}ul.wf-option.wf-option-toggled-segmented .wf-option-segments label:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label:hover{color:#00709e;background-color:#e6e6e6;border-color:#004561}ul.wf-option.wf-option-toggled-segmented .wf-option-segments label:active,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.active,.wf-open>ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-dropdown-toggle,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label:active,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.active,.wf-open>.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-dropdown-toggle{color:#00709e;background-color:#e6e6e6;border-color:#004561}ul.wf-option.wf-option-toggled-segmented .wf-option-segments label:active:hover,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label:active:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label:active.focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.active:hover,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.active:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.active.focus,.wf-open>ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-dropdown-toggle:hover,.wf-open>ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-dropdown-toggle:focus,.wf-open>ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-dropdown-toggle.focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label:active:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label:active:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label:active.focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.active:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.active:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.active.focus,.wf-open>.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-dropdown-toggle:hover,.wf-open>.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-dropdown-toggle:focus,.wf-open>.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-dropdown-toggle.focus{color:#00709e;background-color:#d4d4d4;border-color:#00161f}ul.wf-option.wf-option-toggled-segmented .wf-option-segments label:active,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-active,.wf-open>ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-dropdown-toggle,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label:active,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-active,.wf-open>.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-dropdown-toggle{background-image:none}ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-disabled,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label[disabled],ul.wf-option.wf-option-toggled-segmented .wf-option-segments label[readonly],fieldset[disabled] ul.wf-option.wf-option-toggled-segmented .wf-option-segments label,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-disabled,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label[disabled],.wf-form-field.wf-option-toggled-segmented .wf-option-segments label[readonly],fieldset[disabled] .wf-form-field.wf-option-toggled-segmented .wf-option-segments label{color:#777;background-color:#fff;border-color:#e2e2e2;cursor:not-allowed}ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-disabled:hover,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-disabled:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-disabled.wf-focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label[disabled]:hover,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label[disabled]:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label[disabled].wf-focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label[readonly]:hover,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label[readonly]:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label[readonly].wf-focus,fieldset[disabled] ul.wf-option.wf-option-toggled-segmented .wf-option-segments label:hover,fieldset[disabled] ul.wf-option.wf-option-toggled-segmented .wf-option-segments label:focus,fieldset[disabled] ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-disabled:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-disabled:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-disabled.wf-focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label[disabled]:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label[disabled]:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label[disabled].wf-focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label[readonly]:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label[readonly]:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label[readonly].wf-focus,fieldset[disabled] .wf-form-field.wf-option-toggled-segmented .wf-option-segments label:hover,fieldset[disabled] .wf-form-field.wf-option-toggled-segmented .wf-option-segments label:focus,fieldset[disabled] .wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-focus{background-color:#fff;border-color:#00709e}ul.wf-option.wf-option-toggled-segmented .wf-option-segments label .wf-badge,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label .wf-badge{color:#fff;background-color:#00709e}ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-segment-first,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-segment-first{border-radius:4px 0 0 4px}ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-segment-last,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-segment-last{border-radius:0 4px 4px 0}ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio],.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]{position:absolute;left:-9999px}ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label{color:#fff;background-color:#00709e;border-color:#005e85}ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.focus{color:#fff;background-color:#004c6b;border-color:#000405}ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:hover{color:#fff;background-color:#004c6b;border-color:#003347}ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:active,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.active,.wf-open>ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-dropdown-toggle,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:active,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.active,.wf-open>.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-dropdown-toggle{color:#fff;background-color:#004c6b;border-color:#003347}ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:active:hover,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:active:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:active.focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.active:hover,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.active:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.active.focus,.wf-open>ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-dropdown-toggle:hover,.wf-open>ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-dropdown-toggle:focus,.wf-open>ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-dropdown-toggle.focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:active:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:active:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:active.focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.active:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.active:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.active.focus,.wf-open>.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-dropdown-toggle:hover,.wf-open>.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-dropdown-toggle:focus,.wf-open>.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-dropdown-toggle.focus{color:#fff;background-color:#003347;border-color:#000405}ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:active,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-active,.wf-open>ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-dropdown-toggle,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:active,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-active,.wf-open>.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-dropdown-toggle{background-image:none}ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-disabled,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[disabled],ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[readonly],fieldset[disabled] ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-disabled,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[disabled],.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[readonly],fieldset[disabled] .wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label{color:#fff;background-color:#59a2c0;border-color:#5996b0;cursor:not-allowed}ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-disabled:hover,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-disabled:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-disabled.wf-focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[disabled]:hover,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[disabled]:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[disabled].wf-focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[readonly]:hover,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[readonly]:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[readonly].wf-focus,fieldset[disabled] ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:hover,fieldset[disabled] ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:focus,fieldset[disabled] ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-disabled:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-disabled:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-disabled.wf-focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[disabled]:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[disabled]:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[disabled].wf-focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[readonly]:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[readonly]:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[readonly].wf-focus,fieldset[disabled] .wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:hover,fieldset[disabled] .wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:focus,fieldset[disabled] .wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-focus{background-color:#00709e;border-color:#005e85}ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label .wf-badge,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label .wf-badge{color:#00709e;background-color:#fff}ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:disabled+label,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:disabled+label{cursor:not-allowed;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=65);opacity:.65}ul.wf-option.wf-option-toggled-multiple>.wf-option-content>ul,.wf-form-field.wf-option-toggled-multiple>.wf-option-content>ul{-webkit-flex-direction:column;flex-direction:column;-webkit-align-items:flex-start;align-items:flex-start}ul.wf-option>.wf-option-spacer,.wf-form-field>.wf-option-spacer{-webkit-flex-grow:0;flex-grow:0;-webkit-flex-shrink:0;flex-shrink:0;margin:0 1rem 0 0;width:30px;height:30px}@media (min-width: 768px){ul.wf-option>.wf-option-spacer,.wf-form-field>.wf-option-spacer{margin:0 2rem 0 1rem;width:20px;height:20px}}ul.wf-option>.wf-option-premium-lock,.wf-form-field>.wf-option-premium-lock{-webkit-flex-grow:0;flex-grow:0;-webkit-flex-shrink:0;flex-shrink:0;background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIzMHB4IiB2aWV3Qm94PSIwIDAgMjQgMzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KCTxwYXRoIGQ9Ik0yMy45NDksMTQuMjMzYy0wLjM3OSwtMC4zOSAtMC45MDQsLTAuNjA2IC0xLjQ0OCwtMC41OTVsLTAuNjgzLDBsMCwtNC4wOTJjMC4wMzIsLTIuNTM1IC0wLjk4NiwtNC45NzMgLTIuODEyLC02LjczMWMtMS43NTksLTEuODI4IC00LjE5OCwtMi44NDcgLTYuNzM0LC0yLjgxNWMtMi41MzYsLTAuMDMyIC00Ljk3NiwwLjk4NyAtNi43MzQsMi44MTVjLTEuODI2LDEuNzU4IC0yLjg0NCw0LjE5NiAtMi44MTIsNi43MzFsMCw0LjA4OWwtMC42OCwwYy0wLjU0NCwtMC4wMTEgLTEuMDY5LDAuMjA1IC0xLjQ0OCwwLjU5NWMtMC4zOTUsMC4zODIgLTAuNjEyLDAuOTEyIC0wLjU5OCwxLjQ2MWwwLDEyLjI2NmMtMC4wMTEsMC41NDQgMC4yMDQsMS4wNjkgMC41OTUsMS40NDhjMC4zNzksMC4zOTEgMC45MDQsMC42MDYgMS40NDgsMC41OTVsMjAuNDU4LDBjMC4wMDMsMCAwLjAwNiwwIDAuMDEsMGMxLjExNywwIDIuMDM2LC0wLjkxOSAyLjAzNiwtMi4wMzdjMCwtMC4wMDMgMCwtMC4wMDYgMCwtMC4wMDlsMCwtMTIuMjYzYzAuMDExLC0wLjU0NCAtMC4yMDYsLTEuMDY5IC0wLjU5OCwtMS40NDhsMCwtMC4wMVptLTYuMjExLC0wLjU5NWwtMTAuOTE5LDBsMCwtNC4wOTJjLTAuMDIyLC0xLjQ1MSAwLjU1NywtMi44NDggMS41OTksLTMuODU4YzEuMDA5LC0xLjA0MiAyLjQwNywtMS42MjEgMy44NTcsLTEuNTk4YzEuNDUxLC0wLjAyMyAyLjg0OCwwLjU1NiAzLjg1OCwxLjU5OGMxLjA0MiwxLjAwOSAxLjYyMSwyLjQwNyAxLjU5OCwzLjg1OGwwLjAwNyw0LjA5MloiIGZpbGw9IiNkMWQxZDEiLz4KPC9zdmc+");background-repeat:no-repeat;background-position:center center;background-size:contain;margin:0 1rem 0 0;width:30px;height:30px}@media (min-width: 768px){ul.wf-option>.wf-option-premium-lock,.wf-form-field>.wf-option-premium-lock{margin:0 2rem 0 1rem;width:20px;height:20px}}ul.wf-option>.wf-option-checkbox,.wf-form-field>.wf-option-checkbox{-webkit-flex-grow:0;flex-grow:0;-webkit-flex-shrink:0;flex-shrink:0;margin:0 1rem 0 0}@media (min-width: 768px){ul.wf-option>.wf-option-checkbox,.wf-form-field>.wf-option-checkbox{margin:0 2rem 0 1rem}}ul.wf-option>.wf-boolean-switch,.wf-form-field>.wf-boolean-switch{-webkit-flex-grow:0;flex-grow:0;-webkit-flex-shrink:0;flex-shrink:0;margin:0 1rem 0 0}@media (min-width: 768px){ul.wf-option>.wf-boolean-switch,.wf-form-field>.wf-boolean-switch{margin:0 1rem 0 1rem}}ul.wf-option.wf-option-no-spacing>.wf-boolean-switch,.wf-form-field.wf-option-no-spacing>.wf-boolean-switch{margin:0}ul.wf-option>.wf-option-radio-container,.wf-form-field>.wf-option-radio-container{-webkit-flex-grow:0;flex-grow:0;-webkit-flex-shrink:0;flex-shrink:0;margin:0 1rem 0 0}@media (min-width: 768px){ul.wf-option>.wf-option-radio-container,.wf-form-field>.wf-option-radio-container{margin:0 2rem 0 1rem}}ul.wf-option>.wf-option-radio-container [type=radio].wf-option-radio+label:before,.wf-form-field>.wf-option-radio-container [type=radio].wf-option-radio+label:before{margin:0}ul.wf-option>li>.wf-option-title,ul.wf-option>.wf-option-title,ul.wf-option>.wf-option-content>ul>.wf-option-title,.wf-form-field>li>.wf-option-title,.wf-form-field>.wf-option-title,.wf-form-field>.wf-option-content>ul>.wf-option-title{font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:0.9rem;color:#2b2b2b;padding-right:0.5rem}ul.wf-option>li>.wf-option-title.wf-option-title-top,ul.wf-option>.wf-option-title.wf-option-title-top,ul.wf-option>.wf-option-content>ul>.wf-option-title.wf-option-title-top,.wf-form-field>li>.wf-option-title.wf-option-title-top,.wf-form-field>.wf-option-title.wf-option-title-top,.wf-form-field>.wf-option-content>ul>.wf-option-title.wf-option-title-top{-webkit-align-self:flex-start;align-self:flex-start}ul.wf-option>li>.wf-option-title.wf-option-title-bottom,ul.wf-option>.wf-option-title.wf-option-title-bottom,ul.wf-option>.wf-option-content>ul>.wf-option-title.wf-option-title-bottom,.wf-form-field>li>.wf-option-title.wf-option-title-bottom,.wf-form-field>.wf-option-title.wf-option-title-bottom,.wf-form-field>.wf-option-content>ul>.wf-option-title.wf-option-title-bottom{-webkit-align-self:flex-end;align-self:flex-end}ul.wf-option .wf-option-subtitle,.wf-form-field .wf-option-subtitle{padding-top:0.25rem;font-size:0.75rem}ul.wf-option .wf-flex-vertical .wf-option-title,.wf-form-field .wf-flex-vertical .wf-option-title{padding-bottom:0.75rem}ul.wf-option.wf-flex-vertical>.wf-option-subtitle,.wf-form-field.wf-flex-vertical>.wf-option-subtitle{padding-top:0.25rem !important;font-size:0.75rem !important}ul.wf-option .wf-option-checkboxes,ul.wf-option .wf-option-checkboxes>ul,.wf-form-field .wf-option-checkboxes,.wf-form-field .wf-option-checkboxes>ul{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;flex-wrap:nowrap}ul.wf-option .wf-option-checkboxes,.wf-form-field .wf-option-checkboxes{margin-top:1rem}ul.wf-option .wf-option-checkboxes>ul,.wf-form-field .wf-option-checkboxes>ul{margin-left:1rem}@media (min-width: 768px){ul.wf-option .wf-option-checkboxes>ul,.wf-form-field .wf-option-checkboxes>ul{margin-left:1.5rem}}ul.wf-option .wf-option-checkboxes>ul:first-of-type,.wf-form-field .wf-option-checkboxes>ul:first-of-type{margin-left:0}ul.wf-option .wf-option-checkboxes>ul>.wf-option-checkbox,.wf-form-field .wf-option-checkboxes>ul>.wf-option-checkbox{margin:0 1rem 0 0}ul.wf-option li.wf-option-text,ul.wf-option li.wf-option-textarea,ul.wf-option td.wf-option-text,.wf-form-field li.wf-option-text,.wf-form-field li.wf-option-textarea,.wf-form-field td.wf-option-text{padding-top:0.5rem}@media (min-width: 768px){ul.wf-option li.wf-option-text,ul.wf-option li.wf-option-textarea,ul.wf-option td.wf-option-text,.wf-form-field li.wf-option-text,.wf-form-field li.wf-option-textarea,.wf-form-field td.wf-option-text{-webkit-flex-grow:1;flex-grow:1;text-align:right;padding-left:1rem;padding-top:0}}ul.wf-option li.wf-option-text>input[type="text"],.wf-form-field li.wf-option-text>input[type="text"]{max-width:240px}@media (min-width: 768px){ul.wf-option li.wf-option-text>input[type="text"],.wf-form-field li.wf-option-text>input[type="text"]{max-width:280px}}@media (min-width: 992px){ul.wf-option li.wf-option-text>input[type="text"],.wf-form-field li.wf-option-text>input[type="text"]{max-width:340px}}ul.wf-option li.wf-option-text.wf-option-full-width>input[type="text"],.wf-form-field li.wf-option-text.wf-option-full-width>input[type="text"]{max-width:100%;width:100%}ul.wf-option li.wf-option-textarea,.wf-form-field li.wf-option-textarea{min-width:150px;max-width:240px}@media (min-width: 768px){ul.wf-option li.wf-option-textarea,.wf-form-field li.wf-option-textarea{min-width:200px;max-width:400px}}@media (min-width: 992px){ul.wf-option li.wf-option-textarea,.wf-form-field li.wf-option-textarea{min-width:250px;max-width:500px}}ul.wf-option li.wf-option-textarea>textarea,.wf-form-field li.wf-option-textarea>textarea{width:100%;height:80px;min-width:150px;max-width:240px}@media (min-width: 768px){ul.wf-option li.wf-option-textarea>textarea,.wf-form-field li.wf-option-textarea>textarea{min-width:200px;max-width:280px}}@media (min-width: 992px){ul.wf-option li.wf-option-textarea>textarea,.wf-form-field li.wf-option-textarea>textarea{min-width:250px;max-width:340px}}ul.wf-option li.wf-option-textarea>.wf-flex-vertical>li>textarea,.wf-form-field li.wf-option-textarea>.wf-flex-vertical>li>textarea{width:100%;height:80px;box-sizing:border-box}ul.wf-option li.wf-option-textarea>.wf-flex-vertical>li.wf-option-subtitle,.wf-form-field li.wf-option-textarea>.wf-flex-vertical>li.wf-option-subtitle{width:100%;text-align:left}ul.wf-option li.wf-option-switch,.wf-form-field li.wf-option-switch{-webkit-flex-grow:1;flex-grow:1}ul.wf-option li.wf-option-switch.wf-right .wf-switch,.wf-form-field li.wf-option-switch.wf-right .wf-switch{justify-content:flex-end !important}ul.wf-option li.wf-option-select,.wf-form-field li.wf-option-select{-webkit-flex-grow:1;flex-grow:1;text-align:right}ul.wf-option li.wf-option-select select,ul.wf-option li.wf-option-select select option,ul.wf-option li.wf-option-select .wfselect2-container--default,.wf-form-field li.wf-option-select select,.wf-form-field li.wf-option-select select option,.wf-form-field li.wf-option-select .wfselect2-container--default{font-size:0.7rem;font-weight:bold}@media (min-width: 768px){ul.wf-option li.wf-option-select select,ul.wf-option li.wf-option-select select option,ul.wf-option li.wf-option-select .wfselect2-container--default,.wf-form-field li.wf-option-select select,.wf-form-field li.wf-option-select select option,.wf-form-field li.wf-option-select .wfselect2-container--default{font-size:0.8rem}}@media (min-width: 992px){ul.wf-option li.wf-option-select select,ul.wf-option li.wf-option-select select option,ul.wf-option li.wf-option-select .wfselect2-container--default,.wf-form-field li.wf-option-select select,.wf-form-field li.wf-option-select select option,.wf-form-field li.wf-option-select .wfselect2-container--default{font-size:0.9rem}}ul.wf-option li.wf-option-select .wf-option-select-option,ul.wf-option li.wf-option-select .wfselect2-container--default,ul.wf-option li.wf-option-select .wfselect2-container--default .wfselect2-selection--single,.wf-form-field li.wf-option-select .wf-option-select-option,.wf-form-field li.wf-option-select .wfselect2-container--default,.wf-form-field li.wf-option-select .wfselect2-container--default .wfselect2-selection--single{text-align:left;height:40px;border-radius:0;border:0;background-color:#fff;box-shadow:1px 1px 1px 2px rgba(215,215,215,0.35)}ul.wf-option li.wf-option-select .wf-option-select-option .wfselect2-selection__rendered,ul.wf-option li.wf-option-select .wfselect2-container--default .wfselect2-selection__rendered,ul.wf-option li.wf-option-select .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__rendered,.wf-form-field li.wf-option-select .wf-option-select-option .wfselect2-selection__rendered,.wf-form-field li.wf-option-select .wfselect2-container--default .wfselect2-selection__rendered,.wf-form-field li.wf-option-select .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__rendered{color:#333;line-height:40px}ul.wf-option li.wf-option-select .wf-option-select-option .wfselect2-selection__arrow,ul.wf-option li.wf-option-select .wfselect2-container--default .wfselect2-selection__arrow,ul.wf-option li.wf-option-select .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow,.wf-form-field li.wf-option-select .wf-option-select-option .wfselect2-selection__arrow,.wf-form-field li.wf-option-select .wfselect2-container--default .wfselect2-selection__arrow,.wf-form-field li.wf-option-select .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow{height:38px}ul.wf-option li.wf-option-select .wf-option-select-option.wfselect2-container--disabled .wfselect2-selection__rendered,ul.wf-option li.wf-option-select .wfselect2-container--default.wfselect2-container--disabled .wfselect2-selection__rendered,ul.wf-option li.wf-option-select .wfselect2-container--default .wfselect2-selection--single.wfselect2-container--disabled .wfselect2-selection__rendered,.wf-form-field li.wf-option-select .wf-option-select-option.wfselect2-container--disabled .wfselect2-selection__rendered,.wf-form-field li.wf-option-select .wfselect2-container--default.wfselect2-container--disabled .wfselect2-selection__rendered,.wf-form-field li.wf-option-select .wfselect2-container--default .wfselect2-selection--single.wfselect2-container--disabled .wfselect2-selection__rendered{color:#aaa}ul.wf-option li.wf-option-select .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow b,.wf-form-field li.wf-option-select .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow b{border-color:#333 transparent transparent}ul.wf-option li.wf-option-select .wfselect2-container--default.wfselect2-container--open .wfselect2-selection--single .wfselect2-selection__arrow b,.wf-form-field li.wf-option-select .wfselect2-container--default.wfselect2-container--open .wfselect2-selection--single .wfselect2-selection__arrow b{border-color:transparent transparent #333}ul.wf-option.wf-option-token select,.wf-form-field.wf-option-token select{width:240px}@media (min-width: 768px){ul.wf-option.wf-option-token select,.wf-form-field.wf-option-token select{width:280px}}@media (min-width: 992px){ul.wf-option.wf-option-token select,.wf-form-field.wf-option-token select{width:320px}}ul.wf-option.wf-option-token .wfselect2-container--default,ul.wf-option.wf-option-token .wfselect2-container--default .wfselect2-selection--multiple,.wf-form-field.wf-option-token .wfselect2-container--default,.wf-form-field.wf-option-token .wfselect2-container--default .wfselect2-selection--multiple{border-color:#e2e2e2}ul.wf-option.wf-option-token .wfselect2-container--default .wfselect2-selection__choice,ul.wf-option.wf-option-token .wfselect2-container--default .wfselect2-selection--multiple .wfselect2-selection__choice,.wf-form-field.wf-option-token .wfselect2-container--default .wfselect2-selection__choice,.wf-form-field.wf-option-token .wfselect2-container--default .wfselect2-selection--multiple .wfselect2-selection__choice{background-color:#fff;border-color:#e2e2e2;padding:0.5rem}ul.wf-option.wf-option-token .wfselect2-container--default .wfselect2-search__field,ul.wf-option.wf-option-token .wfselect2-container--default .wfselect2-selection--multiple .wfselect2-search__field,.wf-form-field.wf-option-token .wfselect2-container--default .wfselect2-search__field,.wf-form-field.wf-option-token .wfselect2-container--default .wfselect2-selection--multiple .wfselect2-search__field{margin-right:5px;margin-top:5px;padding:0.5rem 0}.wf-option-sub{padding-left:2rem !important;margin-left:30px !important}.wf-select2-suppress-dropdown .wfselect2-results,.wf-select2-suppress-dropdown .wfselect2-dropdown{display:none}.wf-options-controls{direction:ltr;background:#ffffff;border-bottom:1px solid #e2e2e2;position:absolute;left:160px;right:0px;top:46px;z-index:900;padding-left:15px;padding-right:15px}@media (min-width: 616px){.wf-options-controls{position:fixed}}.wf-options-controls .wf-block{margin:0}@media (min-width: 782px){.wf-options-controls .wf-block{margin:0.5rem 0}}.wf-options-controls,.sticky-menu .wf-options-controls{top:32px}.folded .wf-options-controls{left:36px}@media only screen and (max-width: 960px){.auto-fold .wf-options-controls{left:36px}}.rtl .wf-options-controls{right:160px;left:0px}.rtl .folded .wf-options-controls{right:36px}@media only screen and (max-width: 960px){.rtl .auto-fold .wf-options-controls{right:36px}}@media screen and (max-width: 782px){.wf-options-controls,.folded .wf-options-controls,.auto-fold .wf-options-controls,.rtl .wf-options-controls,.rtl .folded .wf-options-controls,.rtl .auto-fold .wf-options-controls{left:-10px;right:0px}}.wf-options-controls-spacer{height:45px}@media (min-width: 782px){.wf-options-controls-spacer{height:75px}}.wf-options-controls-spacer,.sticky-menu .wf-options-controls-spacer{top:61px}.wordfence .wfselect2-container .wfselect2-selection--single{border:1px solid #dadada;font-weight:normal;font-size:0.8rem}#wf-notices{margin-top:15px}#wf-notices .wf-admin-notice{margin-left:0px;margin-right:0px}.wf-success-text,.wf-notice-text{display:inline-block;vertical-align:middle;line-height:1.3;font-size:16px;font-weight:bold;font-style:italic}.wf-notice{margin:12px 0;padding:8px;background-color:#ffffe0;border:1px solid #ffd975;border-width:1px 1px 1px 10px}.wf-notice-text{color:#6d798c}.wf-success{margin:12px 0;padding:8px;background-color:#ffffff;border:1px solid #16bc9b;border-width:1px 1px 1px 10px}.wf-success-text{color:#11967a}.wf-premium-callout{border:1px solid #dfdfdf;background-color:#ffffff;padding:16px;margin:20px 0 0;text-align:center}.wf-premium-callout ul{margin:8px 0;padding:0 0 0 15px}.wf-premium-callout ul li{list-style-type:disc;margin:0;padding:0}.wf-premium-callout .center{text-align:center;margin:0}.wf-premium-callout .button-primary{text-align:center;text-transform:uppercase;font-weight:bold;background-color:#00709e}#wfLiveTrafficOverlayAnchor::after{position:absolute;z-index:3002;top:0;right:0;width:0;height:0;background:rgba(241,241,241,0.6);content:'';opacity:0;-webkit-transition:opacity 0.5s,width 0.1s 0.5s,height 0.1s 0.5s;-o-transition:opacity 0.5s,width 0.1s 0.5s,height 0.1s 0.5s;transition:opacity 0.5s,width 0.1s 0.5s,height 0.1s 0.5s}.wordfenceLiveActivityPaused #wfLiveTrafficOverlayAnchor::after{width:100%;height:100%;opacity:1;-webkit-transition:opacity 0.5s;-o-transition:opacity 0.5s;transition:opacity 0.5s}#wordfenceLiveActivitySecurityOnly,#wordfenceLiveActivityAll{background:#fff;border-left:4px solid #00709e;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);margin-bottom:0.5rem;padding:1px 13px}#wfLiveTrafficDisabledMessage{display:none;position:fixed;z-index:3003;left:0;width:100%;top:50%;transform:translateY(-50%);text-align:center;color:#666666;opacity:0;-webkit-transition:opacity 0.5s,width 0.1s 0.5s,height 0.1s 0.5s;-o-transition:opacity 0.5s,width 0.1s 0.5s,height 0.1s 0.5s;transition:opacity 0.5s,width 0.1s 0.5s,height 0.1s 0.5s}#wfLiveTrafficDisabledMessage h2{background-color:#00709e;color:#fff;overflow:hidden;max-width:350px;margin:0 auto;padding:20px;font-size:2.0em}#wfLiveTrafficDisabledMessage h2 small{font-size:0.5em;font-weight:normal;margin-top:12px;display:block}.wordfenceLiveActivityPaused #wfLiveTrafficDisabledMessage{display:block;opacity:1;-webkit-transition:opacity 0.5s;transition:opacity 0.5s}.wf-live-activity{position:relative;margin:20px 0 10px 0;padding:0.75rem;box-sizing:border-box;background:#FFFCEF;box-shadow:0 0 0 1px rgba(153,155,135,0.5),0 1px 2px #e8f3e0}.wf-live-activity .wf-live-activity-inner{width:100%;box-sizing:border-box;position:relative}.wf-live-activity .wf-live-activity-inner .wf-live-activity-content{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:flex-start}.wf-live-activity .wf-live-activity-inner .wf-live-activity-content .wf-live-activity-title{color:#888888;font-size:0.85rem;font-weight:bold;padding-right:0.5rem}.wf-live-activity .wf-live-activity-inner .wf-live-activity-content .wf-live-activity-message{font-size:0.80rem;color:#000000}.wf-live-activity .wf-live-activity-inner .wf-live-activity-state{position:absolute;top:0px;right:0px;bottom:0px;left:0px;background:rgba(255,252,239,0.9);display:none;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:center;z-index:3001;-webkit-transition:opacity 0.5s,width 0.1s 0.5s,height 0.1s 0.5s;-o-transition:opacity 0.5s,width 0.1s 0.5s,height 0.1s 0.5s;transition:opacity 0.5s,width 0.1s 0.5s,height 0.1s 0.5s}.wordfenceLiveActivityPaused .wf-live-activity .wf-live-activity-inner .wf-live-activity-state{display:-ms-flexbox;display:flex;opacity:1;-webkit-transition:opacity 0.5s;-webkit-transition:opacity 0.5s;-o-transition:opacity 0.5s;transition:opacity 0.5s}.wordfence .wordfenceScanButton{margin:20px 0 20px 0}.wordfence .wordfenceScanButton input.button-wf-grey{background:#EFEFEF url(../images/button-grad-grey.png) repeat-x scroll left top;border-color:#EFEFEF}.wordfence .wordfenceScanButton table td{vertical-align:top}.wordfence .wordfenceScanButton .button-primary{text-align:center;text-transform:uppercase;font-weight:bold;background-color:#00709E;height:44px;line-height:44px;padding:0px 20px}table.wfSummaryParent{font-family:sans-serif;font-size:14px;color:#000;z-index:9}table.wfSummaryParent td{vertical-align:top;padding:0;margin:0}table.wfSummaryParent table.wfSummaryChild th{font-weight:bold;text-align:right;font-family:Georgia,Times New Roman,Times,serif;color:#000;padding:5px 10px 5px 0;border-top:1px solid #CCC}table.wfSummaryParent table.wfSummaryChild td{font-weight:normal;text-align:left;padding:5px 0 5px 0;border-top:1px solid #CCC}table.wfSummaryParent table.wfSC1 td{width:300px;padding:0 25px 10px 0}table.wfSummaryParent table.wfSC2 th{width:80px}table.wfSummaryParent table.wfSC2 td{width:100px}table.wfSummaryParent table.wfSC3 th{width:80px}table.wfSummaryParent table.wfSC3 td{width:250px}table.wfSummaryParent th.wfHead{font-size:22px;font-family:Georgia,Times New Roman,Times,serif;font-style:italic;color:#555;font-weight:bold;text-align:left;padding:20px 0 20px 0;-webkit-font-smoothing:antialiased}.wf-issues-table{table-layout:fixed;width:100%}div.wfIssue{width:100%}div.wfIssue table.wfIssue td{padding:2px;margin:0;border-width:0;text-align:left;width:100%}div.wfIssue table.wfIssue th{padding:2px;margin:0;font-weight:bold;text-align:left;color:#777;white-space:nowrap}div.wfIssue table.wfIssueLinks td{border-width:0;text-align:left;padding-right:10px}div.wfIssue h2{margin:0 0 5px 0;padding:0;font-size:0.9rem}@media (min-width: 768px){div.wfIssue h2{font-size:1.05rem}}.wfIssueOptions{border-top:1px solid #CCC;padding:10px}.wfIssueOptions h3{font-size:0.8rem;margin:0}@media (min-width: 768px){.wfIssueOptions h3{display:inline-block}}.wfIssueOptions ul{margin-bottom:0;padding-left:0;list-style:none;display:-webkit-flex;display:flex;-webkit-align-items:flex-start;align-items:flex-start;-webkit-align-content:flex-start;align-content:flex-start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-flex-direction:column;flex-direction:column}@media (min-width: 768px){.wfIssueOptions ul{-webkit-flex-direction:row;flex-direction:row;-webkit-align-items:center;align-items:center}}.wfIssueOptions ul>li>a{position:relative;display:block;padding:8px 12px/2}.wfIssueOptions ul>li>a:hover,.wfIssueOptions ul>li>a:focus{text-decoration:none;background-color:#e2e2e2}.wfIssueOptions a{margin-left:10px}.wfIssueOptions strong{float:left;display:block;width:60px}.wfIssueOptions p{margin:6px 0px 0px}.wfProbSev1,.wfProbSev2,.wfAjaxLight128,.wfResolved{width:128px;height:128px;border:0;margin:0 auto;background-repeat:no-repeat;background-position:0 0;text-decoration:none;display:block}.wfProbSev1{background-image:url(../images/icons/error128.png)}.wfProbSev2{background-image:url(../images/icons/warning128.png)}.wfResolved{background-image:url(../images/icons/tick128.png)}.wfIssuesContainer{width:100%;display:none}.wfIssuesContainer p{max-width:550px}.wfALogTime{color:#999}.wfALogMailLink,.wfALogViewLink{display:block;position:absolute;padding:0 0 0 18px;margin:0;right:10px;top:0;background-repeat:no-repeat;font-weight:normal}.wfALogMailLink{background-image:url(../images/icons/email_go.png)}.wfALogViewLink{background-image:url(../images/icons/magnifier.png)}#wfActivity{position:relative}.consoleHead{position:relative;padding:0 0 0 3px;font-weight:bold;width:100%}.consoleHeadText{margin-bottom:4px;font-size:18px;font-family:Georgia,Times New Roman,Times,serif;color:#555;font-weight:bold;-webkit-font-smoothing:antialiased}.consoleFooter{position:relative}.consoleOuter{width:100%}.consoleInner{height:116px;overflow:auto;z-index:1}.bevelDiv1{border:1px solid #EFEFEF}.bevelDiv2{border:1px solid #AAA}.bevelDiv3{background-color:#ffffed;padding:5px;font-family:Roboto,Helvetica Neue,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased}.wfSecure{color:#0A0;font-weight:bold}.wfSummaryLine{display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-align-content:flex-start;align-content:flex-start;-webkit-justify-content:space-between;justify-content:space-between;-webkit-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-flex-direction:column;flex-direction:column}@media (min-width: 768px){.wfSummaryLine{-webkit-flex-direction:row;flex-direction:row}}.wfSummaryLine .wfSummaryDate{padding-left:3px}.wfSummaryLine .wfSummaryMsg{padding-left:3px;-webkit-flex-grow:1;flex-grow:1;min-width:0}.wfSummaryLoading{width:16px;height:11px;background-image:url("../images/icons/ajaxScan.gif")}.wfSummaryBad,.wfSummaryErr{color:#930000}.wfSummaryOK{color:#11967a}.wfSummaryIgnored{color:#a87302}.wfClear{content:".";display:block;height:0;width:0;line-height:0;clear:both;visibility:hidden}.wfSummaryFinal{-webkit-font-smoothing:antialiased;font-weight:bold;color:#555}.wfStartScanButton{text-align:center}.wordfenceScanHelp{border:1px solid #CCC;padding:4px}.wf-scan-no-issues{font-size:1.25rem;color:#11967a}.wf-scan-severity{position:relative;width:10px}@media (min-width: 768px){.wf-scan-severity{width:144px}}.wf-scan-severity-1,.wf-scan-severity-2{position:absolute;top:0px;right:0px;bottom:0px;left:0px}.wf-scan-severity-1{background-color:#c10000}.wf-scan-severity-2{background-color:#ffd10a}.scan-schedule{border-collapse:collapse;border-spacing:0}.scan-schedule tr:first-of-type th{padding-top:0}.scan-schedule td{padding:0}.scan-schedule th{padding:1.5rem 0.5rem 0.75rem 0;font-size:1rem;text-align:left}@media (min-width: 768px){.scan-schedule th{padding:0 0.5rem 0 0;font-size:0.8125rem;text-align:center}}.next-scan{font-size:1em;display:block;position:relative;width:7em;height:7em;background-color:#fff;border-radius:0.6em;box-shadow:0 1px 0 rgba(189,189,189,0.6);overflow:hidden}.next-scan *{display:block;width:100%;font-size:1em;font-weight:bold;font-style:normal;text-align:center}.next-scan strong{position:absolute;top:0;padding:0.4em 0;color:#fff;background-color:#00709E;box-shadow:0 2px 0 #00709E}.next-scan em{position:absolute;bottom:0.3em;color:#00709E}.next-scan span{width:100%;font-size:2.8em;padding-top:1.15em;color:#2f2f2f}#wf-lt-listings .wfActEvent{padding-left:15px;border-left:5px solid #cccccc}#wf-lt-listings .wfActEvent.wfHuman{border-left:5px solid #16bc9b}#wf-lt-listings .wfActEvent.wfActionBlocked{border-left:5px solid #d03935}#wf-lt-listings .wfActEvent.wfNotice{border-left:5px solid #c10000}#wf-lt-listings .wfActEvent.wfWarning,#wf-lt-listings .wfActEvent.wf404,#wf-lt-listings .wfActEvent.wfFailedLogin{border-left:5px solid #ffd10a}#wf-lt-listings .wfActEvent:hover{background-color:#fff9e9 !important}.wf-live-traffic-controls{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:column;flex-direction:column;width:100%;margin-bottom:0}.wf-live-traffic-controls>*:first-child{-webkit-flex-grow:1;flex-grow:1}.wf-live-traffic-controls>*:last-child{-webkit-flex-grow:0;flex-grow:0}@media (min-width: 768px){.wf-live-traffic-controls{-webkit-flex-direction:row;flex-direction:row}}.wf-live-traffic-filter{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-align-content:flex-start;align-content:flex-start;-webkit-justify-content:flex-start;justify-content:flex-start}@media (min-width: 768px){.wf-live-traffic-filter{-webkit-flex-direction:row;flex-direction:row}}.wf-live-traffic-filter>*{padding:0.5rem}.wf-live-traffic-filter h2{margin:0;padding-bottom:0.5rem}@media (min-width: 768px){.wf-live-traffic-filter h2{padding-bottom:0;padding-right:0.5rem}}.wf-live-traffic-show-expanded{text-align:right;padding:0.5rem}@media (max-width: 1330px){.wf-live-traffic-show-expanded{display:none}}#wf-lt-advanced-filters{padding-left:0;padding-right:0;overflow:hidden}.wf-live-traffic-filter-detail{display:-webkit-flex;display:flex;-webkit-align-items:flex-start;align-items:flex-start;-webkit-align-content:flex-start;align-content:flex-start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:column;flex-direction:column}@media (min-width: 768px){.wf-live-traffic-filter-detail{-webkit-flex-direction:row;flex-direction:row}.wf-live-traffic-filter-detail *{-webkit-flex-grow:1;flex-grow:1}}.wf-live-traffic-filter-detail .wf-live-traffic-filter-item{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-align-content:flex-start;align-content:flex-start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:row;flex-direction:row}.wf-live-traffic-filter-detail .wf-live-traffic-filter-item .wf-live-traffic-filter-remove{margin-left:0.5rem;font-size:1.5rem;color:#333}.wf-live-traffic-filter-detail .wf-live-traffic-filter-item .wf-live-traffic-filter-item-parameters{display:-webkit-flex;display:flex;-webkit-align-items:flex-start;align-items:flex-start;-webkit-align-content:flex-start;align-content:flex-start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:column;flex-direction:column}.wf-live-traffic-filter-detail .wf-live-traffic-filter-item .wf-live-traffic-filter-item-parameters div{padding:0.25rem 0}.wf-live-traffic-filter-detail .wf-live-traffic-filter-item .wf-live-traffic-filter-item-parameters select{font-size:0.75rem !important}@media (min-width: 768px){.wf-live-traffic-filter-detail .wf-live-traffic-filter-item .wf-live-traffic-filter-item-parameters{-webkit-flex-direction:row;flex-direction:row;-webkit-align-items:center;align-items:center}.wf-live-traffic-filter-detail .wf-live-traffic-filter-item .wf-live-traffic-filter-item-parameters div{padding:0}.wf-live-traffic-filter-detail .wf-live-traffic-filter-item .wf-live-traffic-filter-item-parameters select{font-size:1rem !important}}.wf-filtered-traffic .wf-filtered-traffic-hits{font-size:1.75rem;color:#999999;margin-top:10px}#wf-live-traffic{position:relative;overflow:visible}#wf-live-traffic-legend{white-space:nowrap;background-color:#fff;padding:0.75rem 0px;position:fixed;width:320px;height:17px;top:auto;bottom:0px;right:auto;left:10px;z-index:2000;box-shadow:0px 0px 5px rgba(0,0,0,0.5);padding-left:1rem}@media (min-width: 768px){#wf-live-traffic-legend{left:182px}}@media (max-width: 1330px){#wf-live-traffic-legend{display:none}}#wf-live-traffic-legend-placeholder{display:none;padding:12px}#wf-live-traffic-legend-placeholder.sticky{display:block}#wf-live-traffic-legend ul{margin:0;padding:0}#wf-live-traffic-legend ul:before,#wf-live-traffic-legend ul:after{content:" ";display:table}#wf-live-traffic-legend ul:after{clear:both}#wf-live-traffic-legend ul li{margin:0 1rem 0 0;padding:0;position:relative;float:left;font-size:0.7185rem}@media (min-width: 768px){#wf-live-traffic-legend ul li{font-size:0.8125rem}}#wf-live-traffic-legend ul li+li{margin-left:0.5rem}#wf-live-traffic-legend ul li:before,.wf-live-traffic-hit-type:before{content:'';display:inline-block;margin:3px 6px 0 0;width:12px;height:12px;background-color:#CCCCCC;border-radius:10px;vertical-align:-2px}#wf-live-traffic-legend ul li.wfHuman:before,.wf-live-traffic-hit-type.wfHuman:before{background-color:#16bc9b}#wf-live-traffic-legend ul li.wfNotice:before,.wf-live-traffic-hit-type.wfNotice:before,#wf-live-traffic-legend ul li.wf404:before,.wf-live-traffic-hit-type.wf404:before,#wf-live-traffic-legend ul li.wfFailedLogin:before,.wf-live-traffic-hit-type.wfFailedLogin:before{background-color:#ffd10a}#wf-live-traffic-legend ul li.wfBlocked:before,.wf-live-traffic-hit-type.wfBlocked:before,#wf-live-traffic-legend ul li.wfActionBlocked:before,.wf-live-traffic-hit-type.wfActionBlocked:before{background-color:#d03935}.wfTimeAgo{font-family:Georgia,Times New Roman,Times,serif;color:#999;font-weight:bold;font-style:italic}.wfActEvent{border-bottom:1px solid #CCC;padding:10px 20px;overflow:auto}.wf-pad-small{margin:8px 0}#wf-lt-listings{margin:0 0 0}#wf-lt-listings a{cursor:pointer;text-decoration:none}#wf-lt-listings a:hover{text-decoration:underline}#wf-lt-listings a.button,#wf-lt-listings a.wf-btn{text-decoration:none}[class*="span"]{float:left;min-height:1px;margin-left:30px}.highlighted,.highlighted td,#wf-live-traffic .wf-striped-table .highlighted td{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}@-moz-keyframes highlighted{0%{opacity:0;background-color:#ffeaa0}100%{opacity:1;background-color:#ffffff}}@-webkit-keyframes highlighted{0%{opacity:0;background-color:#ffeaa0}100%{opacity:1;background-color:#ffffff}}@keyframes highlighted{0%{opacity:0;background-color:#ffeaa0}100%{opacity:1;background-color:#ffffff}}@-moz-keyframes highlightedBlocked{0%{opacity:0;background-color:#ffeaa0}100%{opacity:1;background-color:#fff6f6}}@-webkit-keyframes highlightedBlocked{0%{opacity:0;background-color:#ffeaa0}100%{opacity:1;background-color:#fff6f6}}@keyframes highlightedBlocked{0%{opacity:0;background-color:#ffeaa0}100%{opacity:1;background-color:#fff6f6}}.highlighted,.highlighted td,#wf-live-traffic .wf-striped-table .highlighted td{-webkit-animation-name:highlighted;animation-name:highlighted}.highlighted.wfActionBlocked,.highlighted td.wfActionBlocked,#wf-live-traffic .wf-striped-table .highlighted td.wfActionBlocked{-webkit-animation-name:highlightedBlocked;animation-name:highlightedBlocked}#wf-lt-preset-filters{min-width:250px}#wf-lt-advanced-filters>table{width:100%}#wf-lt-advanced-filters>table>tr>td{vertical-align:top}.wf-lt-url{white-space:nowrap}.wf-live-traffic-filter label{font-weight:normal}#wf-live-traffic .wf-striped-table th,#wf-live-traffic .wf-striped-table td{padding:.5rem .6rem}#wf-live-traffic .wf-striped-table th{white-space:nowrap}#wf-live-traffic .wf-striped-table tbody tr:hover>td{background-color:#e7f5ff}#wf-live-traffic .wf-live-traffic-show-details{font-size:1.5rem;color:#9a9a9a;text-align:center;cursor:hand}#wf-live-traffic .wf-live-traffic-show-details .wf-ion-eye-disabled{display:none}#wf-live-traffic .wf-details-open .wf-live-traffic-show-details .wf-ion-eye-disabled{display:inline-block}#wf-live-traffic .wf-details-open .wf-live-traffic-show-details .wf-ion-eye{display:none}#wf-live-traffic.wf-live-traffic-display-expanded .wf-summary-row{display:none}#wf-live-traffic.wf-live-traffic-display-expanded .wf-live-traffic-activity-detail h2{display:none}#wf-live-traffic.wf-live-traffic-display-expanded .wf-striped-table thead{display:none}#wf-live-traffic .wf-details-hidden .wf-live-traffic-details,#wf-live-traffic .wf-details-visible .wf-live-traffic-details{transition:padding 200ms}#wf-live-traffic .wf-details-hidden .wf-live-traffic-details{padding:0 .6rem}#wf-live-traffic .wf-details-visible .wf-live-traffic-details,#wf-live-traffic.wf-live-traffic-display-expanded .wf-details-hidden .wf-live-traffic-details{padding:.8rem .6rem}#wf-live-traffic.wf-live-traffic-display-expanded .wf-details-hidden .wf-live-traffic-details{border-top:1px solid #e2e2e2}#wf-live-traffic .wf-details-hidden .wf-live-traffic-activity-detail-wrapper,#wf-live-traffic .wf-details-visible .wf-live-traffic-activity-detail-wrapper{transition:opacity 200ms, max-height 200ms ease-out;overflow:hidden}#wf-live-traffic .wf-details-hidden .wf-live-traffic-activity-detail-wrapper{opacity:0;max-height:0px}#wf-live-traffic .wf-details-visible .wf-live-traffic-activity-detail-wrapper,#wf-live-traffic.wf-live-traffic-display-expanded .wf-details-hidden .wf-live-traffic-activity-detail-wrapper{opacity:1;max-height:800px}#wf-live-traffic .wf-block-ip-btn{display:none}#wf-live-traffic-group-by{width:100%}#wf-live-traffic-no-group-by{overflow-x:auto}@media (max-width: 1330px){#wf-live-traffic .wf-summary-row{display:none}#wf-live-traffic .wf-live-traffic-activity-detail h2{display:none}#wf-live-traffic .wf-striped-table thead{display:none}#wf-live-traffic .wf-details-hidden .wf-live-traffic-details{padding:0.8rem 0.6rem}#wf-live-traffic .wf-details-hidden .wf-live-traffic-details{border-top:1px solid #e2e2e2}#wf-live-traffic .wf-details-hidden .wf-live-traffic-activity-detail-wrapper{opacity:1;max-height:300px}#wf-live-traffic-no-group-by .wf-striped-table{table-layout:fixed}}.wf-live-traffic-activity-type{text-align:center;float:left;width:65px}@media (min-width: 768px){.wf-live-traffic-activity-type{width:85px}}@media (min-width: 992px){.wf-live-traffic-activity-type{width:105px}}@media (min-width: 1200px){.wf-live-traffic-activity-type{width:125px}}.wf-live-traffic-activity-type .wf-live-traffic-type-icon{font-size:3rem;color:#CCCCCC}@media (min-width: 768px){.wf-live-traffic-activity-type .wf-live-traffic-type-icon{font-size:4rem}}@media (min-width: 992px){.wf-live-traffic-activity-type .wf-live-traffic-type-icon{font-size:5rem}}@media (min-width: 1200px){.wf-live-traffic-activity-type .wf-live-traffic-type-icon{font-size:6rem}}.wf-live-traffic-activity-type .wf-live-traffic-type-icon.wf-icon-human{color:#16bc9b}.wf-live-traffic-activity-type .wf-live-traffic-type-icon.wf-icon-warning{color:#ffd10a}.wf-live-traffic-activity-type .wf-live-traffic-type-icon.wf-icon-blocked{color:#d03935}.wf-live-traffic-activity-detail{margin:0;margin-left:90px}@media (min-width: 768px){.wf-live-traffic-activity-detail{margin-left:110px}}@media (min-width: 992px){.wf-live-traffic-activity-detail{margin-left:130px}}@media (min-width: 1200px){.wf-live-traffic-activity-detail{margin-left:150px}}.wf-live-traffic-activity-detail h2{margin:0px 0px .5rem}.wf-live-traffic-actions{margin:.5rem 0px 0px}#wf-live-traffic-util-overlay-wrapper{position:fixed;top:32px;right:0px;bottom:0px;left:0px;background-color:rgba(0,0,0,0.5);z-index:3000}#wf-live-traffic-util-overlay-wrapper .wf-live-traffic-util-overlay{position:fixed;top:32px;right:0px;bottom:0px;left:auto;max-width:800px;background-color:#ffffff;overflow:auto}#wf-live-traffic-util-overlay-wrapper .wf-live-traffic-util-overlay-header,#wf-live-traffic-util-overlay-wrapper .wf-live-traffic-util-overlay-body{padding:1rem 1.5rem}#wf-live-traffic-util-overlay-wrapper .wf-live-traffic-util-overlay-body{padding:1rem 1.5rem 1rem 3rem}#wf-live-traffic-util-overlay-wrapper .wf-live-traffic-util-overlay-header{background-color:#e9e9e9;border:1px solid #ffd10a;border-width:10px 0px}#wf-live-traffic-util-overlay-wrapper .wf-live-traffic-util-overlay-body .wf-flex-row{margin:0.6rem 0}#wf-live-traffic-util-overlay-wrapper .wf-live-traffic-actions{display:none}#wf-live-traffic-util-overlay-wrapper .wf-live-traffic-util-overlay-close{position:absolute;top:20px;right:16px;font-size:20px;cursor:pointer}#wf-live-traffic-util-overlay-wrapper .wf-live-traffic-activity-detail div{margin:0px 0px 0.6rem}#wf-live-traffic-util-overlay-wrapper .wf-block-ip-btn{display:inline-block}#wf-live-traffic-options .wf-block-list .wf-option-text .wf-option-title{width:30%}.wf-recent-traffic-table{font-size:.7rem}.wf-recent-traffic-table th,.wf-recent-traffic-table td{vertical-align:top}.wf-recent-traffic-table th{text-align:left;white-space:nowrap}.wf-recent-traffic-table td{word-wrap:break-word;word-break:break-all}.wf-recent-traffic-table .wf-recent-traffic-table-row-border td div{border-top:1px solid #e2e2e2;margin:10px 0}.wf-live-traffic-none{padding:0.5rem 0.6rem}.wf-flag.wf-flag-unspecified{width:16px;height:16px;background:none}.wf-flag.wf-flag-unspecified path{fill:#9f9fa0}table.block-ranges-table{border-collapse:collapse;margin:10px 0 0}table.block-ranges-table tr td{border:1px solid #CCC;border-width:1px 0;padding:10px 0 12px 0}#input-wafStatus,#input-wafStatus option,.wfselect2-container--default{font-size:0.7rem;font-weight:bold}@media (min-width: 768px){#input-wafStatus,#input-wafStatus option,.wfselect2-container--default{font-size:0.8rem}}@media (min-width: 992px){#input-wafStatus,#input-wafStatus option,.wfselect2-container--default{font-size:0.9rem}}.wfselect2-results__options{border-top:1px solid #e2e2e2}.wafStatus-enabled,.wafStatus-learning-mode,.wafStatus-disabled,.wafStatus-enabled.wfselect2-container--default .wfselect2-selection--single,.wafStatus-learning-mode.wfselect2-container--default .wfselect2-selection--single,.wafStatus-disabled.wfselect2-container--default .wfselect2-selection--single{height:40px;border-radius:0;border:0;background-color:#fff;box-shadow:1px 1px 1px 2px rgba(215,215,215,0.35)}.wafStatus-enabled .wfselect2-selection__rendered,.wafStatus-learning-mode .wfselect2-selection__rendered,.wafStatus-disabled .wfselect2-selection__rendered,.wafStatus-enabled.wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__rendered,.wafStatus-learning-mode.wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__rendered,.wafStatus-disabled.wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__rendered{color:#333;line-height:40px}.wafStatus-enabled .wfselect2-selection__arrow,.wafStatus-learning-mode .wfselect2-selection__arrow,.wafStatus-disabled .wfselect2-selection__arrow,.wafStatus-enabled.wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow,.wafStatus-learning-mode.wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow,.wafStatus-disabled.wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow{height:38px}#waf-config-form .waf-config-label{font-size:1.3em}#waf-config-form .wfselect2-container--default .wfselect2-selection--single{padding:0.4rem;text-shadow:0 0 3px #000000;font-weight:bold}#waf-config-form .wfselect2-container .wfselect2-selection--single{height:auto}#waf-config-form .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow{height:100%;top:0}.wafStatus-enabled.wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow b,.wafStatus-learning-mode.wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow b,.wafStatus-disabled.wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow b{border-color:#333 transparent transparent}.wafStatus-enabled.wfselect2-container--default.wfselect2-container--open .wfselect2-selection--single .wfselect2-selection__arrow b,.wafStatus-learning-mode.wfselect2-container--default.wfselect2-container--open .wfselect2-selection--single .wfselect2-selection__arrow b,.wafStatus-disabled.wfselect2-container--default.wfselect2-container--open .wfselect2-selection--single .wfselect2-selection__arrow b{border-color:transparent transparent #333}#waf-learning-mode-grace-period{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:row;flex-direction:row}#waf-learning-mode-grace-period span{padding:0 0.5rem 0 1rem}#waf-learning-mode-grace-period input{width:auto}#whitelist-form{padding-top:0.5rem}#whitelist-form .wfselect2-container--default .wfselect2-selection--single{display:block;width:100%;height:38px;padding:.5rem 1.25rem;font-size:14px;line-height:1.42857;color:#2b2b2b;background-color:#fff;background-image:none;border:1px solid #ddd;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;-o-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s}#whitelist-form .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__rendered{color:#2b2b2b;line-height:inherit}#whitelist-form .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow{height:38px}#whitelist-form-separator{margin:1rem 0}#whitelist-table-controls{margin-bottom:0.5rem}#whitelist-table-controls .wfselect2-container--default{text-align:left !important}#whitelist-table-controls .wf-select-group{-webkit-justify-content:flex-end !important;justify-content:flex-end !important}.whitelist-table-container{overflow-x:auto}table.whitelist-table .whitelist-edit{display:none}table.whitelist-table .edit-mode .whitelist-display{display:none}table.whitelist-table .edit-mode .whitelist-edit{display:block}table.whitelist-table .edit-mode span.whitelist-edit,table.whitelist-table .edit-mode input.whitelist-edit{display:inline}.wf-bulk-action{margin:12px 0}tr.wf-table-filters input{max-width:120px}.wf-waf-status-disabled{padding:2rem 0}.wf-block .wf-block-content .wf-block-labeled-value.wf-waf-status .wf-block-labeled-value-value{padding-top:0}.wf-block .wf-block-content .wf-block-labeled-value.wf-waf-status .wf-block-labeled-value-value .wf-fa{font-size:8rem}.wf-block .wf-block-content .wf-block-labeled-value.wf-waf-status .wf-block-labeled-value-value svg{width:160px}.wf-block .wf-block-content .wf-block-labeled-value.wf-waf-status .wf-block-labeled-value-label{font-size:1.3125rem;font-weight:300;line-height:1.5;padding-bottom:0}.wf-block .wf-block-content .wf-block-labeled-value.wf-waf-status-full-enabled{background-color:#00709e}.wf-block .wf-block-content .wf-block-labeled-value.wf-waf-status-full-enabled .wf-block-labeled-value-value{color:#ffffff}.wf-block .wf-block-content .wf-block-labeled-value.wf-waf-status-full-enabled .wf-block-labeled-value-label{color:#ffffff;padding:0}.wf-block .wf-block-content .wf-block-labeled-value.wf-waf-status-enabled .wf-block-labeled-value-value{color:#00709e}.wf-block .wf-block-content .wf-block-labeled-value.wf-waf-status-enabled .wf-block-labeled-value-value svg{fill:#00709e}.wf-block .wf-block-content .wf-block-labeled-value.wf-waf-status-enabled .wf-block-labeled-value-label{color:#00709e}.wf-block .wf-block-content .wf-block-labeled-value.wf-waf-status-learning-mode .wf-block-labeled-value-value,.wf-block .wf-block-content .wf-block-labeled-value.wf-waf-status-disabled .wf-block-labeled-value-value{color:#9f9fa0}.wf-block .wf-block-content .wf-block-labeled-value.wf-waf-status-learning-mode .wf-block-labeled-value-value svg,.wf-block .wf-block-content .wf-block-labeled-value.wf-waf-status-disabled .wf-block-labeled-value-value svg{fill:#9f9fa0}.wf-block .wf-block-content .wf-block-labeled-value.wf-waf-status-learning-mode .wf-block-labeled-value-label,.wf-block .wf-block-content .wf-block-labeled-value.wf-waf-status-disabled .wf-block-labeled-value-label{color:#9f9fa0}.wf-waf-coverage li{-webkit-align-items:flex-start !important;align-items:flex-start !important}.wf-waf-navigation .wf-block-navigation-option-content,.wf-blocking-status .wf-block-navigation-option-content{padding:1.5rem 0 1.5rem 1.0rem}.wf-waf-navigation .wf-block-navigation-option-content h4,.wf-blocking-status .wf-block-navigation-option-content h4{margin:0 0 0.25rem 0}.wf-waf-navigation .wf-block-navigation-option-content p,.wf-blocking-status .wf-block-navigation-option-content p{margin:0 0 0.45rem 0}.wf-blocking-status>li{-webkit-flex-grow:0 !important;flex-grow:0 !important;-webkit-flex-basis:66.66667% !important;flex-basis:66.66667% !important}.wf-blocking-status>li:first-of-type{-webkit-flex-basis:33.33333% !important;flex-basis:33.33333% !important}.wf-blocking-status-premium>li{-webkit-flex-grow:0 !important;flex-grow:0 !important;-webkit-flex-basis:33.33333% !important;flex-basis:33.33333% !important}ul.wf-option.wf-option-rate-limit *{-webkit-flex-grow:1;flex-grow:1}ul.wf-option.wf-option-rate-limit *:first-child{-webkit-flex-grow:0;flex-grow:0}ul.wf-option.wf-option-rate-limit .wfselect2-container{min-width:100px}@media (min-width: 768px){ul.wf-option.wf-option-rate-limit .wfselect2-container{min-width:140px}}@media (min-width: 992px){ul.wf-option.wf-option-rate-limit .wfselect2-container{min-width:140px}}#waf-rules-wrapper tbody tr:nth-of-type(n+10){display:none}#waf-rules-wrapper.wf-show-all tbody tr:nth-of-type(n+10){display:table-row}#waf-rules-wrapper.wf-show-all #waf-show-all-rules{display:none}.wf-waf-backup-file-list{display:-webkit-flex;display:flex;-webkit-align-items:flex-start;align-items:flex-start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:row;flex-direction:row}.wf-waf-backup-file-list>*{margin-left:0.5rem !important}.wf-waf-backup-file-list>*:first-child{margin-left:0 !important}#wf-option-loginSecurityEnabled .wf-option-subtitle{font-size:.875rem}.wf-rate-limit-warning{display:none;padding-top:1rem}.wf-rate-limit-warning .wf-inline-notice{display:inline-block}.wf-scan-status-disabled{padding:2rem 0}.wf-block .wf-block-content .wf-block-labeled-value.wf-scan-status .wf-block-labeled-value-value{padding-top:0}.wf-block .wf-block-content .wf-block-labeled-value.wf-scan-status .wf-block-labeled-value-value .wf-fa{font-size:8rem}.wf-block .wf-block-content .wf-block-labeled-value.wf-scan-status .wf-block-labeled-value-value svg{width:160px}.wf-block .wf-block-content .wf-block-labeled-value.wf-scan-status .wf-block-labeled-value-label{font-size:1.3125rem;font-weight:300;line-height:1.5;padding-bottom:0}.wf-block .wf-block-content .wf-block-labeled-value.wf-scan-status-full-enabled{background-color:#00709e}.wf-block .wf-block-content .wf-block-labeled-value.wf-scan-status-full-enabled .wf-block-labeled-value-value{color:#ffffff}.wf-block .wf-block-content .wf-block-labeled-value.wf-scan-status-full-enabled .wf-block-labeled-value-label{color:#ffffff;padding:0}.wf-block .wf-block-content .wf-block-labeled-value.wf-scan-status-enabled .wf-block-labeled-value-value{color:#00709e}.wf-block .wf-block-content .wf-block-labeled-value.wf-scan-status-enabled .wf-block-labeled-value-value svg{fill:#00709e}.wf-block .wf-block-content .wf-block-labeled-value.wf-scan-status-enabled .wf-block-labeled-value-label{color:#00709e}.wf-block .wf-block-content .wf-block-labeled-value.wf-scan-status-disabled .wf-block-labeled-value-value{color:#9f9fa0}.wf-block .wf-block-content .wf-block-labeled-value.wf-scan-status-disabled .wf-block-labeled-value-value svg{fill:#9f9fa0}.wf-block .wf-block-content .wf-block-labeled-value.wf-scan-status-disabled .wf-block-labeled-value-label{color:#9f9fa0}.wf-scan-navigation .wf-block-navigation-option-content{padding:1.5rem 0 1.5rem 1.0rem}.wf-scan-navigation .wf-block-navigation-option-content h4{margin:0 0 0.25rem 0}.wf-scan-navigation .wf-block-navigation-option-content p{margin:0 0 0.45rem 0}#wf-scan-starter{-webkit-justify-content:center;justify-content:center}#wf-scan-starter:hover{cursor:unset}#wf-scan-starter:hover a{text-decoration:none}.wf-scanner-progress{display:-webkit-flex;display:flex;-webkit-align-items:flex-start;align-items:flex-start;-webkit-justify-content:space-between;justify-content:space-between;-webkit-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;flex-wrap:nowrap;margin-top:0.5rem;margin-bottom:0.5rem;background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB3aWR0aD0iMXB4IiBoZWlnaHQ9IjZweCIgdmlld0JveD0iMCAwIDEgNiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3BhY2U9InByZXNlcnZlIj4KCTxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIGZpbGw9IiNkMWQxZDEiLz48cmVjdCB4PSIwIiB5PSI1IiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBmaWxsPSIjZDFkMWQxIi8+Cjwvc3ZnPg==");background-repeat:repeat-x;background-position:center 24px;overflow-x:auto;overflow-y:hidden}.wf-scanner-progress>.wf-scan-step{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;-webkit-flex-direction:column;flex-direction:column;padding-left:0.5rem;padding-right:0.5rem}.wf-scanner-progress>.wf-scan-step:first-of-type{padding-left:0;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuMCIgeTE9IjAuNSIgeDI9IjEuMCIgeTI9IjAuNSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIvPjxzdG9wIG9mZnNldD0iNTAlIiBzdG9wLWNvbG9yPSIjZmZmZmZmIi8+PHN0b3Agb2Zmc2V0PSI1MSUiIHN0b3AtY29sb3I9IiNmZmZmZmYiIHN0b3Atb3BhY2l0eT0iMC4wIi8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjZmZmZmZmIiBzdG9wLW9wYWNpdHk9IjAuMCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');background-size:100%;background-image:-webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #ffffff),color-stop(50%, #ffffff),color-stop(51%, rgba(255,255,255,0)),color-stop(100%, rgba(255,255,255,0)));background-image:-moz-linear-gradient(left, #ffffff 0%,#ffffff 50%,rgba(255,255,255,0) 51%,rgba(255,255,255,0) 100%);background-image:-webkit-linear-gradient(left, #ffffff 0%,#ffffff 50%,rgba(255,255,255,0) 51%,rgba(255,255,255,0) 100%);background-image:linear-gradient(to right, #ffffff 0%,#ffffff 50%,rgba(255,255,255,0) 51%,rgba(255,255,255,0) 100%);background-repeat:no-repeat;background-position:left center}.wf-scanner-progress>.wf-scan-step:last-of-type{padding-right:0;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuMCIgeTE9IjAuNSIgeDI9IjEuMCIgeTI9IjAuNSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIgc3RvcC1vcGFjaXR5PSIwLjAiLz48c3RvcCBvZmZzZXQ9IjQ5JSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIgc3RvcC1vcGFjaXR5PSIwLjAiLz48c3RvcCBvZmZzZXQ9IjUwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');background-size:100%;background-image:-webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, rgba(255,255,255,0)),color-stop(49%, rgba(255,255,255,0)),color-stop(50%, #ffffff),color-stop(100%, #ffffff));background-image:-moz-linear-gradient(left, rgba(255,255,255,0) 0%,rgba(255,255,255,0) 49%,#ffffff 50%,#ffffff 100%);background-image:-webkit-linear-gradient(left, rgba(255,255,255,0) 0%,rgba(255,255,255,0) 49%,#ffffff 50%,#ffffff 100%);background-image:linear-gradient(to right, rgba(255,255,255,0) 0%,rgba(255,255,255,0) 49%,#ffffff 50%,#ffffff 100%);background-repeat:no-repeat;background-position:right center}.wf-scanner-progress>.wf-scan-step>.wf-scan-step-title{font-size:0.7rem;padding-top:0.5rem;white-space:nowrap}.wf-scanner-progress>.wf-scan-step>.wf-scan-step-subtitle{font-size:0.7rem}.wf-scanner-progress>.wf-scan-step>.wf-scan-step-icon>.wf-scan-step-pending,.wf-step-pending{width:50px;height:54px;background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB3aWR0aD0iMTRweCIgaGVpZ2h0PSIxNHB4IiB2aWV3Qm94PSIwIDAgMTQgMTQiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+Cgk8Y2lyY2xlIGN4PSI3IiBjeT0iNyIgcj0iNyIgZmlsbD0iI2QxZDFkMSIvPgo8L3N2Zz4=");background-repeat:no-repeat;background-position:center center}.wf-scanner-progress>.wf-scan-step>.wf-scan-step-icon>.wf-scan-step-running,.wf-step-running{display:none;background-color:#ffffff !important}.wf-scanner-progress>.wf-scan-step>.wf-scan-step-icon>.wf-scan-step-complete-success,.wf-step-complete-success{display:none;width:50px;height:54px;background:#fff url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj48c3ZnIHdpZHRoPSI1MHB4IiBoZWlnaHQ9IjUwcHgiIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTk4LjI4NywyMS4wMjVsLTcuODIzLC03LjgxMmMtMS4wNjYsLTEuMDkyIC0yLjUyOCwtMS43MDggLTQuMDU0LC0xLjcwOGMtMS41MjUsMCAtMi45ODgsMC42MTYgLTQuMDUzLDEuNzA4bC00Ni4wMTIsNDYuMDEybC0xOC43MTMsLTE4LjcxMmMtMS4wNjYsLTEuMDkgLTIuNTI5LC0xLjcwNCAtNC4wNTMsLTEuNzA0Yy0xLjUyNSwwIC0yLjk4NywwLjYxNCAtNC4wNTQsMS43MDRsLTcuODEyLDcuODM0Yy0xLjA5MiwxLjA2NSAtMS43MDgsMi41MjggLTEuNzA4LDQuMDUzYzAsMS41MjYgMC42MTYsMi45ODggMS43MDgsNC4wNTRsMzAuNTUxLDMwLjU1MWMxLjA2NywxLjA4OSAyLjUyOSwxLjcwMyA0LjA1NCwxLjcwM2MxLjUyNCwwIDIuOTg2LC0wLjYxNCA0LjA1MywtMS43MDNsNTcuOTE2LC01Ny44NjJjMS4wOTIsLTEuMDY1IDEuNzA4LC0yLjUyOCAxLjcwOCwtNC4wNTNjMCwtMS41MjYgLTAuNjE2LC0yLjk4OCAtMS43MDgsLTQuMDU0bDAsLTAuMDExbDAsMFoiIGZpbGw9IiMwMDcwOWUiLz48L3N2Zz4=");background-repeat:no-repeat;background-position:center center;background-size:80%}.wf-scanner-progress>.wf-scan-step>.wf-scan-step-icon>.wf-scan-step-complete-warning,.wf-step-complete-warning{display:none;width:50px;height:54px;background:#fff url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj48c3ZnIHdpZHRoPSI1MHB4IiBoZWlnaHQ9IjUwcHgiIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTk5LjA1MSw4Mi44NDJsLTQyLjgxMiwtNzguNDgzYy0wLjYxLC0xLjEzMSAtMS41MTQsLTIuMDc3IC0yLjYxNywtMi43MzdjLTIuMjI3LC0xLjMzNCAtNS4wMTcsLTEuMzM0IC03LjI0NCwwYy0xLjEwNiwwLjY1OSAtMi4wMTMsMS42MDUgLTIuNjI1LDIuNzM3bC00Mi44MDQsNzguNDgzYy0xLjI5OSwyLjE2OCAtMS4yNTYsNC44OTYgMC4xMTEsNy4wMjFjMC42MTQsMS4wNjcgMS41LDEuOTUyIDIuNTY2LDIuNTY2YzEuMDc0LDAuNjI3IDIuMjk3LDAuOTU1IDMuNTQxLDAuOTQ5bDg1LjY0MSwwYzIuNTE3LC0wLjAwOSA0Ljg1MiwtMS4zNDcgNi4xMzIsLTMuNTE1YzEuMzY3LC0yLjEyNSAxLjQxLC00Ljg1MyAwLjExMSwtNy4wMjFsMCwwWm0tNDEuOTA2LC01LjU3NmMwLjAxMSwwLjQ5IC0wLjE4MSwwLjk2NCAtMC41MywxLjMwOGMtMC4zMjUsMC4zNDIgLTAuNzc3LDAuNTM0IC0xLjI0OSwwLjUzMWwtMTAuNzE1LDBjLTAuNDcyLDAuMDAzIC0wLjkyNCwtMC4xODkgLTEuMjQ5LC0wLjUzMWMtMC4zNDksLTAuMzQ0IC0wLjU0MiwtMC44MTggLTAuNTMsLTEuMzA4bDAsLTEwLjU4OGMtMC4wMTIsLTAuNDkgMC4xODEsLTAuOTY0IDAuNTMsLTEuMzA4YzAuMzI1LC0wLjM0MSAwLjc3NywtMC41MzMgMS4yNDksLTAuNTNsMTAuNjk4LDBjMC40NzUsLTAuMDA2IDAuOTMsMC4xODcgMS4yNTgsMC41M2MwLjM0OCwwLjM0NSAwLjU0LDAuODE4IDAuNTMsMS4zMDhsMCwxMC41ODhsMC4wMDgsMFptLTAuMTExLC0yMC44NDJjLTAuMDQ1LDAuMzggLTAuMjYzLDAuNzE4IC0wLjU5LDAuOTE2Yy0wLjM4OSwwLjI1IC0wLjg0NiwwLjM3NSAtMS4zMDgsMC4zNTlsLTEwLjMyMywwYy0wLjQ3LDAuMDEzIC0wLjkzNCwtMC4xMTIgLTEuMzM0LC0wLjM1OWMtMC4zMzgsLTAuMTg1IC0wLjU1MSwtMC41MzkgLTAuNTU2LC0wLjkyNGwtMC45NDksLTI1LjQ2OGMtMC4wMywtMC40NiAwLjE4MSwtMC45MDQgMC41NTYsLTEuMTcyYzAuMzU4LC0wLjM1NSAwLjgzMSwtMC41NzMgMS4zMzQsLTAuNjE2bDEyLjI3MiwwYzAuNTA2LDAuMDQgMC45ODIsMC4yNTggMS4zNDMsMC42MTZjMC4zNTcsMC4yMzIgMC41NjgsMC42MzUgMC41NTYsMS4wNmwtMS4wMDEsMjUuNTg4WiIgZmlsbD0iI2ZjYjIxNCIvPjwvc3ZnPg==");background-repeat:no-repeat;background-position:center center;background-size:80%}.wf-scanner-progress>.wf-scan-step>.wf-scan-step-icon>.wf-scan-step-disabled,.wf-step-disabled{display:none;width:50px;height:54px;background:#fff url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj48c3ZnIHdpZHRoPSI1MHB4IiBoZWlnaHQ9IjUwcHgiIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTk1Ljg5LDMwLjUyOGMtMi40OTYsLTUuOTQxIC02LjEwOCwtMTEuMzUxIC0xMC42NDIsLTE1LjkzOGMtNC41NzUsLTQuNTM4IC05Ljk5LC04LjE0OCAtMTUuOTQyLC0xMC42M2MtMTIuNDAxLC01LjI4IC0yNi40NDEsLTUuMjggLTM4Ljg0MiwwYy01Ljk2NSwyLjQ4NSAtMTEuMzg5LDYuMTAxIC0xNS45NzIsMTAuNjVjLTQuNTEsNC41ODYgLTguMTAxLDkuOTg5IC0xMC41ODIsMTUuOTE4Yy01LjI4NywxMi40MzIgLTUuMjg3LDI2LjQ5IDAsMzguOTIxYzIuNDk1LDUuOTQyIDYuMTA3LDExLjM1MyAxMC42NDIsMTUuOTM5YzQuNTgzLDQuNTQ4IDEwLjAwNyw4LjE2NSAxNS45NzIsMTAuNjQ5YzEyLjQsNS4yODQgMjYuNDQyLDUuMjg0IDM4Ljg0MiwwYzUuOTY1LC0yLjQ4NCAxMS4zODksLTYuMTAxIDE1Ljk3MiwtMTAuNjQ5YzQuNTM2LC00LjU4NSA4LjE0OSwtOS45OTYgMTAuNjQyLC0xNS45MzljNS4yODcsLTEyLjQzMSA1LjI4NywtMjYuNDg5IDAsLTM4LjkyMWwtMC4wOSwwWm0tNzUuNjA4LDM4Ljg1MWMtNy4zMDIsLTExLjIxMiAtNy42ODksLTI1LjYyIC0wLjk5OCwtMzcuMjA3YzMuMDc1LC01LjM3NSA3LjUyMiwtOS44NDQgMTIuODg3LC0xMi45NWM1LjM3NSwtMy4xMjkgMTEuNDk3LC00Ljc1NCAxNy43MTksLTQuNzAyYzYuOTU1LC0wLjA2IDEzLjc2NiwyLjAwMiAxOS41MTYsNS45MDdsLTQ5LjEyNCw0OC45NTJabTYyLjIwMSwtNS42NDhjLTEuNzU1LDQuMjI4IC00LjMxOCw4LjA3NiAtNy41NDcsMTEuMzI2Yy0zLjI0MywzLjIyOSAtNy4wNzYsNS44MDkgLTExLjI5LDcuNjAxYy00LjM0MywxLjg4MyAtOS4wMzEsMi44NDYgLTEzLjc2NiwyLjgyOWMtNi44NzIsMC4wMDggLTEzLjU5NSwtMi4wMTcgLTE5LjMxNiwtNS44MTdsNDkuMDU0LC00OC44MTNjMy43NDEsNS42ODcgNS43MTEsMTIuMzU0IDUuNjYsMTkuMTU3YzAuMDAzLDQuNzEzIC0wLjk0OCw5LjM3OSAtMi43OTUsMTMuNzE3bDAsMFoiIGZpbGw9IiNkMWQxZDEiLz48L3N2Zz4=");background-repeat:no-repeat;background-position:center center;background-size:80%}.wf-scanner-progress>.wf-scan-step>.wf-scan-step-icon>.wf-scan-step-premium,.wf-step-premium{width:50px;height:54px;background:#fff url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIzMHB4IiB2aWV3Qm94PSIwIDAgMjQgMzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KCTxwYXRoIGQ9Ik0yMy45NDksMTQuMjMzYy0wLjM3OSwtMC4zOSAtMC45MDQsLTAuNjA2IC0xLjQ0OCwtMC41OTVsLTAuNjgzLDBsMCwtNC4wOTJjMC4wMzIsLTIuNTM1IC0wLjk4NiwtNC45NzMgLTIuODEyLC02LjczMWMtMS43NTksLTEuODI4IC00LjE5OCwtMi44NDcgLTYuNzM0LC0yLjgxNWMtMi41MzYsLTAuMDMyIC00Ljk3NiwwLjk4NyAtNi43MzQsMi44MTVjLTEuODI2LDEuNzU4IC0yLjg0NCw0LjE5NiAtMi44MTIsNi43MzFsMCw0LjA4OWwtMC42OCwwYy0wLjU0NCwtMC4wMTEgLTEuMDY5LDAuMjA1IC0xLjQ0OCwwLjU5NWMtMC4zOTUsMC4zODIgLTAuNjEyLDAuOTEyIC0wLjU5OCwxLjQ2MWwwLDEyLjI2NmMtMC4wMTEsMC41NDQgMC4yMDQsMS4wNjkgMC41OTUsMS40NDhjMC4zNzksMC4zOTEgMC45MDQsMC42MDYgMS40NDgsMC41OTVsMjAuNDU4LDBjMC4wMDMsMCAwLjAwNiwwIDAuMDEsMGMxLjExNywwIDIuMDM2LC0wLjkxOSAyLjAzNiwtMi4wMzdjMCwtMC4wMDMgMCwtMC4wMDYgMCwtMC4wMDlsMCwtMTIuMjYzYzAuMDExLC0wLjU0NCAtMC4yMDYsLTEuMDY5IC0wLjU5OCwtMS40NDhsMCwtMC4wMVptLTYuMjExLC0wLjU5NWwtMTAuOTE5LDBsMCwtNC4wOTJjLTAuMDIyLC0xLjQ1MSAwLjU1NywtMi44NDggMS41OTksLTMuODU4YzEuMDA5LC0xLjA0MiAyLjQwNywtMS42MjEgMy44NTcsLTEuNTk4YzEuNDUxLC0wLjAyMyAyLjg0OCwwLjU1NiAzLjg1OCwxLjU5OGMxLjA0MiwxLjAwOSAxLjYyMSwyLjQwNyAxLjU5OCwzLjg1OGwwLjAwNyw0LjA5MloiIGZpbGw9IiNkMWQxZDEiLz4KPC9zdmc+");background-repeat:no-repeat;background-position:center center;background-size:40%}.wf-scanner-progress>.wf-scan-step.wf-scan-step-premium>.wf-scan-step-icon>.wf-scan-step-pending{display:none}.wf-scanner-progress>.wf-scan-step.wf-scan-step-premium>.wf-scan-step-icon>.wf-scan-step-running{display:none}.wf-scanner-progress>.wf-scan-step.wf-scan-step-premium>.wf-scan-step-icon>.wf-scan-step-complete-success{display:none}.wf-scanner-progress>.wf-scan-step.wf-scan-step-premium>.wf-scan-step-icon>.wf-scan-step-complete-warning{display:none}.wf-scanner-progress>.wf-scan-step.wf-scan-step-premium>.wf-scan-step-icon>.wf-scan-step-disabled{display:none}.wf-scanner-progress>.wf-scan-step.wf-scan-step-running>.wf-scan-step-icon>.wf-scan-step-pending{display:none}.wf-scanner-progress>.wf-scan-step.wf-scan-step-running>.wf-scan-step-icon>.wf-scan-step-running{display:block}.wf-scanner-progress>.wf-scan-step.wf-scan-step-running>.wf-scan-step-icon>.wf-scan-step-complete-success{display:none}.wf-scanner-progress>.wf-scan-step.wf-scan-step-running>.wf-scan-step-icon>.wf-scan-step-complete-warning{display:none}.wf-scanner-progress>.wf-scan-step.wf-scan-step-running>.wf-scan-step-icon>.wf-scan-step-disabled{display:none}.wf-scanner-progress>.wf-scan-step.wf-scan-step-complete-success>.wf-scan-step-icon>.wf-scan-step-pending{display:none}.wf-scanner-progress>.wf-scan-step.wf-scan-step-complete-success>.wf-scan-step-icon>.wf-scan-step-running{display:none}.wf-scanner-progress>.wf-scan-step.wf-scan-step-complete-success>.wf-scan-step-icon>.wf-scan-step-complete-success{display:block}.wf-scanner-progress>.wf-scan-step.wf-scan-step-complete-success>.wf-scan-step-icon>.wf-scan-step-complete-warning{display:none}.wf-scanner-progress>.wf-scan-step.wf-scan-step-complete-success>.wf-scan-step-icon>.wf-scan-step-disabled{display:none}.wf-scanner-progress>.wf-scan-step.wf-scan-step-complete-warning>.wf-scan-step-icon>.wf-scan-step-pending{display:none}.wf-scanner-progress>.wf-scan-step.wf-scan-step-complete-warning>.wf-scan-step-icon>.wf-scan-step-running{display:none}.wf-scanner-progress>.wf-scan-step.wf-scan-step-complete-warning>.wf-scan-step-icon>.wf-scan-step-complete-success{display:none}.wf-scanner-progress>.wf-scan-step.wf-scan-step-complete-warning>.wf-scan-step-icon>.wf-scan-step-complete-warning{display:block}.wf-scanner-progress>.wf-scan-step.wf-scan-step-complete-warning>.wf-scan-step-icon>.wf-scan-step-disabled{display:none}.wf-scanner-progress>.wf-scan-step.wf-scan-step-disabled>.wf-scan-step-icon>.wf-scan-step-pending{display:none}.wf-scanner-progress>.wf-scan-step.wf-scan-step-disabled>.wf-scan-step-icon>.wf-scan-step-running{display:none}.wf-scanner-progress>.wf-scan-step.wf-scan-step-disabled>.wf-scan-step-icon>.wf-scan-step-complete-success{display:none}.wf-scanner-progress>.wf-scan-step.wf-scan-step-disabled>.wf-scan-step-icon>.wf-scan-step-complete-warning{display:none}.wf-scanner-progress>.wf-scan-step.wf-scan-step-disabled>.wf-scan-step-icon>.wf-scan-step-disabled{display:block}#wf-scan-last-status{font-size:0.75rem;text-align:center}@media (min-width: 768px){#wf-scan-last-status{text-align:left}}#wf-scan-activity-log-controls{-webkit-flex-shrink:0;flex-shrink:0;text-align:center;white-space:nowrap}@media (min-width: 768px){#wf-scan-activity-log-controls{text-align:right}}#wf-scan-activity-log-controls a{text-transform:uppercase;font-size:0.75rem;white-space:nowrap}#wf-scan-toggle-activity-log .wf-scan-activity-log-visible{display:none}#wf-scan-toggle-activity-log .wf-scan-activity-log-hidden{display:inline}#wf-scan-toggle-activity-log.wf-active .wf-scan-activity-log-visible{display:inline}#wf-scan-toggle-activity-log.wf-active .wf-scan-activity-log-hidden{display:none}#wf-scan-running-bar{height:4px;border:1px solid #e2e2e2;background-color:#ffffff;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}#wf-scan-running-bar-pill{height:4px;background-color:#00709e;width:33.3333%;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-webkit-animation:wf-scan-running-bar-pill-keyframes 1s linear infinite alternate both;-o-animation:wf-scan-running-bar-pill-keyframes 1s linear infinite alternate both;animation:wf-scan-running-bar-pill-keyframes 1s linear infinite alternate both}@-moz-keyframes wf-scan-running-bar-pill-keyframes{from{margin-left:0%}to{margin-left:66.6667%}}@-webkit-keyframes wf-scan-running-bar-pill-keyframes{from{margin-left:0%}to{margin-left:66.6667%}}@keyframes wf-scan-running-bar-pill-keyframes{from{margin-left:0%}to{margin-left:66.6667%}}#wf-scan-activity-log{display:none;overflow-x:hidden;overflow-y:auto;background-color:#ffffff;box-shadow:0 0 0 1px rgba(200,215,225,0.25),0 1px 2px #e9eff3;padding:0.5rem;height:7rem}#wf-scan-activity-log>li{margin:0;padding:0}#wf-scan-activity-log.wf-active{display:block}.wf-scan-tabs{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;box-shadow:inset 0px 0px 0px 1px #f1f1f1,inset 0px -1px 0px 1px #e2e2e2;margin:0.5rem 0 0 0}.wf-scan-tabs>*{-webkit-flex-grow:0;flex-grow:0;min-width:0}.wf-scan-tabs .wf-tab{border:1px solid #d0d0d0;border-top-right-radius:0.5rem;border-top-left-radius:0.5rem;border-bottom:none;margin:0;margin-left:0.5rem;background:#e6e6e6;color:#333}.wf-scan-tabs .wf-tab:first-of-type{margin-left:0}.wf-scan-tabs .wf-tab a{display:block;padding:0.5rem 1rem;font-size:14px;line-height:24px;text-decoration:none;font-weight:bold;color:#333}.wf-scan-tabs .wf-tab.wf-active,.wf-scan-tabs .wf-tab:hover{border-bottom:1px solid #ffffff;background:#ffffff;color:#00709e;margin-bottom:-1px;-webkit-box-shadow:none;box-shadow:none}.wf-scan-tabs .wf-tab.wf-active a,.wf-scan-tabs .wf-tab:hover a{color:#00709e}.wf-scan-tabs #wf-scan-bulk-buttons{-webkit-flex-grow:1 !important;flex-grow:1 !important;text-align:right}.wf-scan-tab-content{display:none;margin-top:15px}.wf-scan-tab-content.wf-active{display:block}.wf-scan-results{margin:0;margin-top:-1px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border-left:1px solid #e2e2e2;border-right:1px solid #e2e2e2;border-bottom:1px solid #e2e2e2}.wf-scan-results>.wf-scan-results-stats{margin:0}.wf-scan-results>.wf-scan-results-stats>.wf-block{box-shadow:none;margin:0}.wf-scan-results>.wf-scan-results-stats>.wf-block>.wf-block-content>.wf-block-list>li{border-top:0px;padding:0 1rem}.wf-scan-results>.wf-scan-results-stats>.wf-block>.wf-block-content>.wf-block-list .wf-flex-horizontal>li{font-size:0.75rem;white-space:nowrap;margin:0}.wf-scan-results>.wf-scan-results-stats>.wf-block>.wf-block-content>.wf-block-list .wf-flex-horizontal>li:last-of-type{text-align:right}.wf-scan-results-issues{padding:0;margin:0;display:none}.wf-scan-results-issues.wf-active{display:block}.wf-issue,.wf-issue-site-cleaning{display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:column;flex-direction:column;border-top:1px solid #e2e2e2}.wf-issue:nth-of-type(2n),.wf-issue-site-cleaning:nth-of-type(2n){background-color:#fff}.wf-issue>li,.wf-issue-site-cleaning>li{margin:0}.wf-issue.wf-issue-severity-critical,.wf-issue-site-cleaning.wf-issue-severity-critical{border-left:4px solid #930000}.wf-issue.wf-issue-severity-high,.wf-issue-site-cleaning.wf-issue-severity-high{border-left:4px solid #c10000}.wf-issue.wf-issue-severity-warning,.wf-issue.wf-issue-severity-medium,.wf-issue-site-cleaning.wf-issue-severity-warning,.wf-issue-site-cleaning.wf-issue-severity-medium{border-left:4px solid #fcb214}.wf-issue.wf-issue-severity-low,.wf-issue-site-cleaning.wf-issue-severity-low{border-left:4px solid #3f596b}.wf-issue.wf-issue-severity-good,.wf-issue-site-cleaning.wf-issue-severity-good{border-left:4px solid #16bc9b}.wf-issue>.wf-issue-summary>ul,.wf-issue-site-cleaning>.wf-issue-summary>ul{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:row;flex-direction:row;padding:1.5rem}.wf-issue>.wf-issue-summary>ul>li,.wf-issue-site-cleaning>.wf-issue-summary>ul>li{margin:0;padding:0;padding-left:1.5rem}@media (max-width: 767px){.wf-issue>.wf-issue-summary>ul>li,.wf-issue-site-cleaning>.wf-issue-summary>ul>li{padding-left:0.5rem}}.wf-issue>.wf-issue-summary>ul>li:first-of-type,.wf-issue-site-cleaning>.wf-issue-summary>ul>li:first-of-type{padding-left:0}.wf-issue>.wf-issue-summary>ul>.wf-issue-icon,.wf-issue>.wf-issue-summary>ul>.wf-issue-icon-colored,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-icon,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-icon-colored{text-align:left;-webkit-flex-basis:50px;flex-basis:50px;-webkit-flex-shrink:0;flex-shrink:0}.wf-issue>.wf-issue-summary>ul>.wf-issue-icon>*,.wf-issue>.wf-issue-summary>ul>.wf-issue-icon-colored>*,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-icon>*,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-icon-colored>*{height:40px}.wf-issue>.wf-issue-summary>ul>.wf-issue-icon svg path,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-icon svg path{fill:#9e9e9e}.wf-issue>.wf-issue-summary>ul>.wf-issue-short,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short{-webkit-flex-basis:40%;flex-basis:40%}.wf-issue>.wf-issue-summary>ul>.wf-issue-stats,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-stats{-webkit-flex-basis:25%;flex-basis:25%}.wf-issue>.wf-issue-summary>ul>.wf-issue-short-stats,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short-stats{-webkit-flex-grow:1;flex-grow:1}.wf-issue>.wf-issue-summary>ul .wf-issue-severity-critical,.wf-issue>.wf-issue-summary>ul .wf-issue-severity-high,.wf-issue>.wf-issue-summary>ul .wf-issue-severity-medium,.wf-issue>.wf-issue-summary>ul .wf-issue-severity-low,.wf-issue>.wf-issue-summary>ul .wf-issue-severity-warning,.wf-issue-site-cleaning>.wf-issue-summary>ul .wf-issue-severity-critical,.wf-issue-site-cleaning>.wf-issue-summary>ul .wf-issue-severity-high,.wf-issue-site-cleaning>.wf-issue-summary>ul .wf-issue-severity-medium,.wf-issue-site-cleaning>.wf-issue-summary>ul .wf-issue-severity-low,.wf-issue-site-cleaning>.wf-issue-summary>ul .wf-issue-severity-warning{padding-left:18px;position:relative}.wf-issue>.wf-issue-summary>ul .wf-issue-severity-critical:before,.wf-issue>.wf-issue-summary>ul .wf-issue-severity-high:before,.wf-issue>.wf-issue-summary>ul .wf-issue-severity-medium:before,.wf-issue>.wf-issue-summary>ul .wf-issue-severity-low:before,.wf-issue>.wf-issue-summary>ul .wf-issue-severity-warning:before,.wf-issue-site-cleaning>.wf-issue-summary>ul .wf-issue-severity-critical:before,.wf-issue-site-cleaning>.wf-issue-summary>ul .wf-issue-severity-high:before,.wf-issue-site-cleaning>.wf-issue-summary>ul .wf-issue-severity-medium:before,.wf-issue-site-cleaning>.wf-issue-summary>ul .wf-issue-severity-low:before,.wf-issue-site-cleaning>.wf-issue-summary>ul .wf-issue-severity-warning:before{content:'';display:block;position:absolute;top:50%;left:0;margin-top:-5px;border:5px solid #9f9fa0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.wf-issue>.wf-issue-summary>ul .wf-issue-severity-critical:before,.wf-issue-site-cleaning>.wf-issue-summary>ul .wf-issue-severity-critical:before{border-color:#930000}.wf-issue>.wf-issue-summary>ul .wf-issue-severity-high:before,.wf-issue-site-cleaning>.wf-issue-summary>ul .wf-issue-severity-high:before{border-color:#c10000}.wf-issue>.wf-issue-summary>ul .wf-issue-severity-medium:before,.wf-issue>.wf-issue-summary>ul .wf-issue-severity-warning:before,.wf-issue-site-cleaning>.wf-issue-summary>ul .wf-issue-severity-medium:before,.wf-issue-site-cleaning>.wf-issue-summary>ul .wf-issue-severity-warning:before{border-color:#fcb214}.wf-issue>.wf-issue-summary>ul .wf-issue-severity-low:before,.wf-issue-site-cleaning>.wf-issue-summary>ul .wf-issue-severity-low:before{border-color:#3f596b}.wf-issue>.wf-issue-summary>ul>.wf-issue-controls,.wf-issue>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-controls,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls{-webkit-flex-grow:1;flex-grow:1;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-end;justify-content:flex-end;-webkit-flex-direction:row;flex-direction:row}.wf-issue>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control,.wf-issue>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;-webkit-flex-direction:column;flex-direction:column;padding-left:2rem;text-decoration:none}.wf-issue>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control:first-of-type,.wf-issue>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control:first-of-type,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control:first-of-type,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control:first-of-type{padding-left:0}.wf-issue>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control>.wf-issue-control-icon,.wf-issue>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control .wf-issue-control-icon-inactive,.wf-issue>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control .wf-issue-control-icon-active,.wf-issue>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control>.wf-issue-control-icon,.wf-issue>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control .wf-issue-control-icon-inactive,.wf-issue>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control .wf-issue-control-icon-active,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control>.wf-issue-control-icon,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control .wf-issue-control-icon-inactive,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control .wf-issue-control-icon-active,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control>.wf-issue-control-icon,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control .wf-issue-control-icon-inactive,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control .wf-issue-control-icon-active{height:20px}.wf-issue>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control>.wf-issue-control-icon path,.wf-issue>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control .wf-issue-control-icon-inactive path,.wf-issue>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control .wf-issue-control-icon-active path,.wf-issue>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control>.wf-issue-control-icon path,.wf-issue>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control .wf-issue-control-icon-inactive path,.wf-issue>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control .wf-issue-control-icon-active path,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control>.wf-issue-control-icon path,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control .wf-issue-control-icon-inactive path,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control .wf-issue-control-icon-active path,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control>.wf-issue-control-icon path,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control .wf-issue-control-icon-inactive path,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control .wf-issue-control-icon-active path{fill:#9e9e9e;fill-rule:nonzero}.wf-issue>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control>.wf-issue-control-label,.wf-issue>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control>.wf-issue-control-label,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control>.wf-issue-control-label,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control>.wf-issue-control-label{padding-top:0.65rem;font-size:0.7rem;font-weight:500;text-transform:uppercase;color:#9e9e9e}.wf-issue>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control:hover>.wf-issue-control-icon path,.wf-issue>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control:hover .wf-issue-control-icon-inactive path,.wf-issue>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control:hover .wf-issue-control-icon-active path,.wf-issue>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control:hover>.wf-issue-control-icon path,.wf-issue>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control:hover .wf-issue-control-icon-inactive path,.wf-issue>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control:hover .wf-issue-control-icon-active path,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control:hover>.wf-issue-control-icon path,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control:hover .wf-issue-control-icon-inactive path,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control:hover .wf-issue-control-icon-active path,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control:hover>.wf-issue-control-icon path,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control:hover .wf-issue-control-icon-inactive path,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control:hover .wf-issue-control-icon-active path{fill:#00709e}.wf-issue>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control:hover>.wf-issue-control-label,.wf-issue>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control:hover>.wf-issue-control-label,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control:hover>.wf-issue-control-label,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control:hover>.wf-issue-control-label{color:#00709e}.wf-issue>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls{margin-top:1rem;-webkit-justify-content:flex-start;justify-content:flex-start}.wf-issue .wf-issue-control-icon-active,.wf-issue-site-cleaning .wf-issue-control-icon-active{display:none}.wf-issue .wf-issue-control-icon-inactive,.wf-issue-site-cleaning .wf-issue-control-icon-inactive{display:block}.wf-issue>.wf-issue-detail,.wf-issue-site-cleaning>.wf-issue-detail{display:none;padding:1.5rem;border-top:1px solid #e2e2e2}.wf-issue>.wf-issue-detail .wf-issue-detail-spacer,.wf-issue-site-cleaning>.wf-issue-detail .wf-issue-detail-spacer{height:1rem;margin:0;padding:0}.wf-issue>.wf-issue-detail .wf-issue-detail-controls,.wf-issue-site-cleaning>.wf-issue-detail .wf-issue-detail-controls{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:row;flex-direction:row;margin:0;margin-top:1rem}.wf-issue>.wf-issue-detail .wf-issue-detail-controls>*,.wf-issue-site-cleaning>.wf-issue-detail .wf-issue-detail-controls>*{margin-left:1rem}.wf-issue>.wf-issue-detail .wf-issue-detail-controls>*:first-of-type,.wf-issue-site-cleaning>.wf-issue-detail .wf-issue-detail-controls>*:first-of-type{margin-left:0}@media (max-width: 767px){.wf-issue>.wf-issue-detail .wf-issue-detail-controls,.wf-issue-site-cleaning>.wf-issue-detail .wf-issue-detail-controls{-webkit-align-items:flex-start;align-items:flex-start;-webkit-flex-direction:column;flex-direction:column}.wf-issue>.wf-issue-detail .wf-issue-detail-controls>*,.wf-issue-site-cleaning>.wf-issue-detail .wf-issue-detail-controls>*{margin-left:0;margin-top:0.5rem}.wf-issue>.wf-issue-detail .wf-issue-detail-controls>*:first-of-type,.wf-issue-site-cleaning>.wf-issue-detail .wf-issue-detail-controls>*:first-of-type{margin-top:0}}.wf-issue.wf-active>.wf-issue-summary>ul>.wf-issue-controls .wf-issue-control-show-details>.wf-issue-control-icon path,.wf-issue.wf-active>.wf-issue-summary>ul>.wf-issue-controls .wf-issue-control-show-details .wf-issue-control-icon-inactive path,.wf-issue.wf-active>.wf-issue-summary>ul>.wf-issue-controls .wf-issue-control-show-details .wf-issue-control-icon-active path,.wf-issue-site-cleaning.wf-active>.wf-issue-summary>ul>.wf-issue-controls .wf-issue-control-show-details>.wf-issue-control-icon path,.wf-issue-site-cleaning.wf-active>.wf-issue-summary>ul>.wf-issue-controls .wf-issue-control-show-details .wf-issue-control-icon-inactive path,.wf-issue-site-cleaning.wf-active>.wf-issue-summary>ul>.wf-issue-controls .wf-issue-control-show-details .wf-issue-control-icon-active path{fill:#00709e}.wf-issue.wf-active>.wf-issue-summary>ul>.wf-issue-controls .wf-issue-control-show-details>.wf-issue-control-label,.wf-issue-site-cleaning.wf-active>.wf-issue-summary>ul>.wf-issue-controls .wf-issue-control-show-details>.wf-issue-control-label{color:#00709e}.wf-issue.wf-active>.wf-issue-summary>ul>.wf-issue-controls .wf-issue-control-icon-inactive,.wf-issue-site-cleaning.wf-active>.wf-issue-summary>ul>.wf-issue-controls .wf-issue-control-icon-inactive{display:none}.wf-issue.wf-active>.wf-issue-summary>ul>.wf-issue-controls .wf-issue-control-icon-active,.wf-issue-site-cleaning.wf-active>.wf-issue-summary>ul>.wf-issue-controls .wf-issue-control-icon-active{display:block}.wf-issue.wf-active>.wf-issue-detail,.wf-issue-site-cleaning.wf-active>.wf-issue-detail{display:block}.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short{-webkit-flex-basis:auto;flex-basis:auto}.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short p{padding:0;margin:0}.wf-option-scan-signatures>.wf-option-disclosure{-webkit-flex-grow:1;flex-grow:1;text-align:right}.wf-option-scan-signatures>.wf-option-disclosure>svg{transition:transform 0.15s cubic-bezier(0.175, 0.885, 0.32, 1.275)}#wf-scan-additional-signatures{display:none;margin-left:3rem;padding-left:30px;padding-bottom:1rem}#wf-scan-additional-signatures>h4{margin:0 0 0.5rem 0}#wf-scan-additional-signatures>textarea{width:300px;height:80px}.wf-scan-type-enabled{padding:1rem 0.5rem}.wf-scan-type-enabled>li:first-of-type{padding-right:1.5rem}.wf-scan-type-controls{display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:column;flex-direction:column;margin:0 -0.5rem}.wf-scan-type{display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-justify-content:center;justify-content:center;-webkit-flex-direction:row;flex-direction:row;min-width:700px}@media (max-width: 767px){.wf-scan-type{-webkit-justify-content:flex-start;justify-content:flex-start}}.wf-scan-type>li{-webkit-flex-grow:1;flex-grow:1;-webkit-flex-shrink:0;flex-shrink:0;-webkit-flex-basis:25%;flex-basis:25%;display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-justify-content:center;justify-content:center;max-width:25%;padding:0.5rem}@media (min-width: 768px){.wf-scan-type>li{-webkit-flex-shrink:1;flex-shrink:1}}.wf-scan-type>li>ul.wf-scan-type-option{-webkit-flex-grow:1;flex-grow:1;margin:0;padding:0;border:1px solid #d9d9d9;min-height:100%;cursor:pointer}.wf-scan-type>li>ul.wf-scan-type-option.wf-scan-type-option-custom{cursor:inherit}.wf-scan-type>li>ul.wf-scan-type-option>.wf-scan-type-option-name{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;-webkit-flex-direction:row;flex-direction:row;border-bottom:2px solid #d9d9d9;padding:0.5rem 1rem}.wf-scan-type>li>ul.wf-scan-type-option>.wf-scan-type-option-name .wf-option-checkbox{margin-right:0.5rem;width:20px;height:20px;min-width:20px;min-height:20px;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;line-height:20px !important;background-color:#ffffff;box-shadow:0px 0px 0px 1px rgba(185,185,185,0.75);color:#ffffff !important;font-size:25px !important}.wf-scan-type>li>ul.wf-scan-type-option>.wf-scan-type-option-name span{font-weight:400;font-size:0.95rem}.wf-scan-type>li>ul.wf-scan-type-option>.wf-scan-type-option-description{padding:1rem}.wf-scan-type>li>ul.wf-scan-type-option.wf-active>.wf-scan-type-option-name{background-color:#00709e}.wf-scan-type>li>ul.wf-scan-type-option.wf-active>.wf-scan-type-option-name .wf-option-checkbox{color:#00709e !important}.wf-scan-type>li>ul.wf-scan-type-option.wf-active>.wf-scan-type-option-name span{color:#ffffff}.wf-scan-scheduling-manual{display:none;margin-left:3rem;padding-left:30px}.wf-scan-scheduling-manual.wf-active{display:block}.wf-scan-scheduling-manual>li{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:row;flex-direction:row}.wf-scan-scheduling-manual .wf-scan-scheduling-manual-presets-label{padding-right:1rem}.wf-scan-scheduling-manual .wf-scan-scheduling-manual-presets{display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:row;flex-direction:row;margin:0;padding:0}.wf-scan-scheduling-manual .wf-scan-scheduling-manual-presets>li{margin:0;padding:0.5rem 0.7rem;text-transform:uppercase;cursor:pointer;color:#aaa;font-weight:400;border-top:1px solid #bfbfbf;border-bottom:1px solid #bfbfbf;border-right:1px solid #bfbfbf}.wf-scan-scheduling-manual .wf-scan-scheduling-manual-presets>li:first-of-type{border-left:1px solid #bfbfbf;-moz-border-radius-topleft:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px}.wf-scan-scheduling-manual .wf-scan-scheduling-manual-presets>li:last-of-type{-moz-border-radius-topright:6px;-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-moz-border-radius-bottomright:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px}.wf-scan-scheduling-manual .wf-scan-scheduling-manual-presets>li.wf-active{color:#ffffff;background-color:#00709e}.wf-scan-scheduling-manual-preset-options .wfselect2-container{min-width:100px}.wf-scan-scheduling-manual-preset-options:not(.wf-active),.wf-scan-scheduling-manual-custom-options:not(.wf-active){display:none !important}.wf-scan-scheduling-manual-custom-options{padding-bottom:1rem}.wf-schedule-times-wrapper{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;-webkit-flex-direction:row;flex-direction:row;margin-top:1rem}@media (min-width: 768px){.wf-schedule-times-wrapper{margin-top:0.25rem}}.wf-schedule-times-wrapper:first-of-type{margin-top:0}@media (min-width: 768px){.wf-schedule-times-wrapper:first-of-type{margin-top:1rem}}.wf-schedule-times-wrapper>*{-webkit-flex-grow:1;flex-grow:1;min-width:0}.wf-schedule-times-wrapper>*:first-child{-webkit-flex-grow:0;flex-grow:0;min-width:initial;padding-right:0.25rem}.wf-schedule-times-wrapper .wf-schedule-period{font-weight:500;padding:0.5rem 0.7rem}.wf-schedule-times{display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:row;flex-direction:row}.wf-schedule-times>li{margin:0;padding:0.5rem 0.7rem;text-transform:uppercase;cursor:pointer;color:#aaa;font-weight:400;border-top:1px solid #bfbfbf;border-bottom:1px solid #bfbfbf;border-right:1px solid #bfbfbf}.wf-schedule-times>li:first-of-type{border-left:1px solid #bfbfbf;-moz-border-radius-topleft:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px}.wf-schedule-times>li:last-of-type{-moz-border-radius-topright:6px;-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-moz-border-radius-bottomright:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px}.wf-schedule-times>li.wf-active{color:#ffffff;background-color:#00709e}.wf-issue-control-ignore-menu{position:absolute;z-index:9999;background-color:#ffffff;border:1px solid #bfbfbf}.wf-issue-control-ignore-menu>li{padding:0.5rem 1rem;margin:0;border-top:1px solid #bfbfbf;cursor:pointer}.wf-issue-control-ignore-menu>li:hover{color:#ffffff;background-color:#00709e}.wf-issue-control-ignore-menu>li:first-of-type{border-top:0}#wf-scan-failed.wf-alert.wf-alert-danger{background-color:#ffe470;border-color:#ffd10a;border-radius:0}#wf-scan-failed.wf-alert.wf-alert-danger pre{white-space:normal}#wf-scan-failed.wf-alert.wf-alert-danger svg{width:50px;height:50px;margin-right:1rem}#wf-scan-failed.wf-alert.wf-alert-danger svg path{fill:#da9603}#wf-scan-failed.wf-alert.wf-alert-danger h4{margin:0}#wf-scan-failed.wf-alert.wf-alert-danger p{margin-top:0.25rem;margin-bottom:0}#wf-scan-failed.wf-alert.wf-alert-danger .wf-btn.wf-btn-default{border-color:#ffffff;background-color:#ffffff;color:#000000}#wf-site-cleaning-bottom h3{color:#00709e;font-weight:300;font-size:1.5rem;margin:1rem 0}#wf-site-cleaning-bottom p{max-width:750px}#wfTwoFactorQRCodeTable{width:175px;height:175px;margin:0 auto}@media (min-width: 500px){#wfTwoFactorQRCodeTable{width:256px;height:256px}}#wfTwoFactorRecoveryCodes{list-style-type:none}#wfTwoFactorRecoveryCodes li{font-family:monospace;text-align:center}#wfTwoFactorDownload .dashicons{line-height:26px}.wf-twofactor-delete{font-size:1.5rem}.wf-twofactor-delete a{text-decoration:none;color:#333}.wf-twofactor-delete a i{font-size:1.5rem}.wf-table.wf-table-twofactor>tbody>tr>td{vertical-align:middle}.wf-form-twofactor{max-width:400px}.wf-form-twofactor .wf-radio label{padding-left:0}#twofactor .wf-block-list>li{padding:.8rem 1.5rem;min-height:0px}#twofactor .wf-block-list .wf-form-control{margin:0px 0px}.wf-block-list .wf-block-list-title{font-weight:bold;font-size:0.9rem}.wf-block-list .wf-block-list-subtitle{font-weight:bold;font-size:0.85rem;color:#008cc1}#wfTwoFacUsers{margin:0 auto 1.5rem}#wf-tools-two-factor #wf-two-factor-img1,#wf-tools-two-factor #wf-two-factor-img2,#wf-all-options #wf-two-factor-img1,#wf-all-options #wf-two-factor-img2{display:inline}#wf-tools-two-factor #wf-two-factor-img1,#wf-all-options #wf-two-factor-img1{max-width:316px}#wf-tools-two-factor #wf-two-factor-img2,#wf-all-options #wf-two-factor-img2{max-width:270px}#wfUsername{max-width:568px}@media screen and (max-width: 782px){#wf-tools-two-factor #wf-two-factor-img1,#wf-tools-two-factor #wf-two-factor-img2,#wf-all-options #wf-two-factor-img1,#wf-all-options #wf-two-factor-img2{display:block;margin:0px auto 20px}}#wordfenceTwoFactorLegacy,#wordfenceTwoFactorModern{background:#fff;border-left:4px solid #00709e;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);margin-bottom:0.5rem;padding:1px 13px}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}label.wf-plain{font-weight:normal}label.wf-control-label.wf-disabled{pointer-events:none}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:1.5rem;font-size:14px;line-height:1.42857;color:#555}.wf-form-control{display:block;width:100%;height:38px;padding:.5rem 1.25rem;font-size:14px;line-height:1.42857;color:#555;background-color:#fff;background-image:none;border:1px solid #ddd;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;-o-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s}.wf-form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.wf-form-control::-moz-placeholder{color:#bfbfbf;opacity:1}.wf-form-control:-ms-input-placeholder{color:#bfbfbf}.wf-form-control::-webkit-input-placeholder{color:#bfbfbf}.wf-form-control::-ms-expand{border:0;background-color:transparent}.wf-form-control[disabled],.wf-form-control[readonly],fieldset[disabled] .wf-form-control{background-color:#e2e2e2;opacity:1}.wf-form-control[disabled],.wf-form-control[readonly],fieldset[disabled] .wf-form-control{cursor:not-allowed;pointer-events:none}textarea.wf-form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio: 0){input[type="date"].wf-form-control,input[type="time"].wf-form-control,input[type="datetime-local"].wf-form-control,input[type="month"].wf-form-control{line-height:38px}input[type="date"].wf-input-sm,.wf-input-group-sm input[type="date"],input[type="time"].wf-input-sm,.wf-input-group-sm input[type="time"],input[type="datetime-local"].wf-input-sm,.wf-input-group-sm input[type="datetime-local"],input[type="month"].wf-input-sm,.wf-input-group-sm input[type="month"]{line-height:30px}input[type="date"].wf-input-lg,.wf-input-group-lg input[type="date"],input[type="time"].wf-input-lg,.wf-input-group-lg input[type="time"],input[type="datetime-local"].wf-input-lg,.wf-input-group-lg input[type="datetime-local"],input[type="month"].wf-input-lg,.wf-input-group-lg input[type="month"]{line-height:46px}}.wf-form-group{margin-bottom:8px}.wf-form-group.wf-sub-group label{color:#666666;font-weight:normal;padding-left:20px}.wf-form-group.wf-focus{border-left:4px solid #11967a;padding-bottom:8px;background-color:#e5e5e5}.wf-form-group.wf-focus label{margin-left:-4px}.wf-radio,.wf-checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.wf-radio label,.wf-checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.wf-radio input[type="radio"],.wf-radio-inline input[type="radio"],.wf-checkbox input[type="checkbox"],.wf-checkbox-inline input[type="checkbox"]{margin-top:4px \9}.wf-radio-offset{padding-left:29px}@media (min-width: 768px){.wf-radio-offset{padding-left:20px}}.wf-radio+.wf-radio,.wf-checkbox+.wf-checkbox{margin-top:-5px}.wf-radio-inline,.wf-checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.wf-radio-inline+.wf-radio-inline,.wf-checkbox-inline+.wf-checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="radio"][readonly],input[type="radio"].wf-disabled,fieldset[disabled] input[type="radio"],input[type="checkbox"][disabled],input[type="checkbox"][readonly],input[type="checkbox"].wf-disabled,fieldset[disabled] input[type="checkbox"]{cursor:not-allowed;pointer-events:none}.wf-radio-inline.wf-disabled,fieldset[disabled] .wf-radio-inline,.wf-checkbox-inline.wf-disabled,fieldset[disabled] .wf-checkbox-inline{cursor:not-allowed}.wf-radio.wf-disabled label,fieldset[disabled] .wf-radio label,.wf-checkbox.wf-disabled label,fieldset[disabled] .wf-checkbox label{cursor:not-allowed;pointer-events:none}.wf-form-control-static{padding-top:1.5rem;padding-bottom:1.5rem;margin:0;line-height:1}.wf-form-control-static.wf-input-lg,.wf-form-control-static.wf-input-sm{padding-left:0;padding-right:0}.wf-input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.wf-input-sm{height:30px;line-height:30px}textarea.wf-input-sm,select[multiple].wf-input-sm{height:auto}.wf-form-group-sm .wf-form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.wf-form-group-sm select.wf-form-control{height:30px;line-height:30px}.wf-form-group-sm textarea.wf-form-control,.wf-form-group-sm select[multiple].wf-form-control{height:auto}.wf-form-group-sm .wf-form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.wf-input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33333;border-radius:6px}select.wf-input-lg{height:46px;line-height:46px}textarea.wf-input-lg,select[multiple].wf-input-lg{height:auto}.wf-form-group-lg .wf-form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.33333;border-radius:6px}.wf-form-group-lg select.wf-form-control{height:46px;line-height:46px}.wf-form-group-lg textarea.wf-form-control,.wf-form-group-lg select[multiple].wf-form-control{height:auto}.wf-form-group-lg .wf-form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.33333}.wf-has-feedback{position:relative}.wf-has-feedback .wf-form-control{padding-right:47.5px}.wf-form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:38px;height:38px;line-height:38px;text-align:center;pointer-events:none}.wf-input-lg+.wf-form-control-feedback,.wf-input-group-lg+.wf-form-control-feedback,.wf-form-group-lg .wf-form-control+.wf-form-control-feedback{width:46px;height:46px;line-height:46px}.wf-input-sm+.wf-form-control-feedback,.wf-input-group-sm+.wf-form-control-feedback,.wf-form-group-sm .wf-form-control+.wf-form-control-feedback{width:30px;height:30px;line-height:30px}.wf-has-success .wf-help-block,.wf-has-success .wf-control-label,.wf-has-success .wf-radio,.wf-has-success .wf-checkbox,.wf-has-success .wf-radio-inline,.wf-has-success .wf-checkbox-inline,.wf-has-success.wf-radio label,.wf-has-success.wf-checkbox label,.wf-has-success.wf-radio-inline label,.wf-has-success.wf-checkbox-inline label{color:#3c763d}.wf-has-success .wf-form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.wf-has-success .wf-form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168}.wf-has-success .wf-input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.wf-has-success .wf-form-control-feedback{color:#3c763d}.wf-has-warning .wf-help-block,.wf-has-warning .wf-control-label,.wf-has-warning .wf-radio,.wf-has-warning .wf-checkbox,.wf-has-warning .wf-radio-inline,.wf-has-warning .wf-checkbox-inline,.wf-has-warning.wf-radio label,.wf-has-warning.wf-checkbox label,.wf-has-warning.wf-radio-inline label,.wf-has-warning.wf-checkbox-inline label{color:#8a6d3b}.wf-has-warning .wf-form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.wf-has-warning .wf-form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b}.wf-has-warning .wf-input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.wf-has-warning .wf-form-control-feedback{color:#8a6d3b}.wf-has-error .wf-help-block,.wf-has-error .wf-control-label,.wf-has-error .wf-radio,.wf-has-error .wf-checkbox,.wf-has-error .wf-radio-inline,.wf-has-error .wf-checkbox-inline,.wf-has-error.wf-radio label,.wf-has-error.wf-checkbox label,.wf-has-error.wf-radio-inline label,.wf-has-error.wf-checkbox-inline label{color:#a94442}.wf-has-error .wf-form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.wf-has-error .wf-form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483}.wf-has-error .wf-input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.wf-has-error .wf-form-control-feedback{color:#a94442}.wf-has-feedback label ~ .wf-form-control-feedback{top:25px}.wf-has-feedback label.wf-sr-only ~ .wf-form-control-feedback{top:0}.wf-help-block{display:block;margin-top:5px;color:#737373}@media (min-width: 768px){.wf-form-inline .wf-form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.wf-form-inline .wf-form-control{display:inline-block;width:auto;vertical-align:middle}.wf-form-inline .wf-form-control-static{display:inline-block}.wf-form-inline .wf-input-group{display:inline-table;vertical-align:middle}.wf-form-inline .wf-input-group .wf-input-group-addon,.wf-form-inline .wf-input-group .wf-input-group-btn,.wf-form-inline .wf-input-group .wf-form-control{width:auto}.wf-form-inline .wf-input-group>.wf-form-control{width:100%}.wf-form-inline .wf-control-label{margin-bottom:0;vertical-align:middle}.wf-form-inline .wf-radio,.wf-form-inline .wf-checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.wf-form-inline .wf-radio label,.wf-form-inline .wf-checkbox label{padding-left:0}.wf-form-inline .wf-radio input[type="radio"],.wf-form-inline .wf-checkbox input[type="checkbox"]{position:relative;margin-left:0}.wf-form-inline .wf-has-feedback .wf-form-control-feedback{top:0}}.wf-form-horizontal .wf-radio,.wf-form-horizontal .wf-checkbox,.wf-form-horizontal .wf-radio-inline,.wf-form-horizontal .wf-checkbox-inline{margin-top:0;margin-bottom:0;padding-top:1.5rem}.wf-form-horizontal .wf-radio,.wf-form-horizontal .wf-checkbox{min-height:29px}.wf-form-horizontal .wf-form-group{margin-left:-15px;margin-right:-15px}.wf-form-horizontal .wf-form-group:before,.wf-form-horizontal .wf-form-group:after{content:" ";display:table}.wf-form-horizontal .wf-form-group:after{clear:both}@media (min-width: 768px){.wf-form-horizontal .wf-control-label{text-align:right;margin-bottom:0;padding-top:1.5rem}}.wf-form-horizontal .wf-has-feedback .wf-form-control-feedback{right:15px}@media (min-width: 768px){.wf-form-horizontal .wf-form-group-lg .wf-control-label{padding-top:11px;font-size:18px}}@media (min-width: 768px){.wf-form-horizontal .wf-form-group-sm .wf-control-label{padding-top:6px;font-size:12px}}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status .wf-block-labeled-value-value,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status .wf-block-labeled-value-value{padding-top:0}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status .wf-block-labeled-value-value .wf-fa,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status .wf-block-labeled-value-value .wf-fa{font-size:8rem}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status .wf-block-labeled-value-value svg,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status .wf-block-labeled-value-value svg{width:140px}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status .wf-block-labeled-value-label,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status .wf-block-labeled-value-label{font-size:1.3125rem;font-weight:300;line-height:1.5;padding-bottom:0}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-full-enabled,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-full-enabled{background-color:#00709e}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-full-enabled .wf-block-labeled-value-value,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-full-enabled .wf-block-labeled-value-value{color:#ffffff}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-full-enabled .wf-block-labeled-value-label,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-full-enabled .wf-block-labeled-value-label{color:#ffffff;padding:0}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-enabled .wf-block-labeled-value-value,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-enabled .wf-block-labeled-value-value{color:#11967a}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-enabled .wf-block-labeled-value-value svg,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-enabled .wf-block-labeled-value-value svg{fill:#11967a}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-enabled .wf-block-labeled-value-label,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-enabled .wf-block-labeled-value-label{color:#11967a}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-learning-mode .wf-block-labeled-value-value,#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-disabled .wf-block-labeled-value-value,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-learning-mode .wf-block-labeled-value-value,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-disabled .wf-block-labeled-value-value{color:#9f9fa0}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-learning-mode .wf-block-labeled-value-value svg,#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-disabled .wf-block-labeled-value-value svg,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-learning-mode .wf-block-labeled-value-value svg,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-disabled .wf-block-labeled-value-value svg{fill:#9f9fa0}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-learning-mode .wf-block-labeled-value-label,#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-disabled .wf-block-labeled-value-label,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-learning-mode .wf-block-labeled-value-label,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-disabled .wf-block-labeled-value-label{color:#9f9fa0}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status .wf-block-labeled-value-value .wf-fa,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status .wf-block-labeled-value-value .wf-fa{font-size:7rem}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status .wf-block-labeled-value-value svg,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status .wf-block-labeled-value-value svg{width:120px}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status .wf-block-labeled-value-label,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status .wf-block-labeled-value-label{font-size:1.15rem;font-weight:300}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status-premium .wf-block-labeled-value-value,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status-premium .wf-block-labeled-value-value{color:#00709e}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status-premium .wf-block-labeled-value-value svg,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status-premium .wf-block-labeled-value-value svg{fill:#00709e}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status-premium .wf-block-labeled-value-label,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status-premium .wf-block-labeled-value-label{color:#00709e}.wf-dashboard-item{position:relative;margin:0 auto 1rem;padding:0 1rem;box-sizing:border-box;background:#fff;box-shadow:0 0 0 1px rgba(200,215,225,0.5),0 1px 2px #e9eff3}.wf-dashboard-item .wf-dashboard-item-inner{min-height:44px;padding:1rem 0;width:100%;box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;position:relative}.wf-dashboard-item .wf-dashboard-item-inner .wf-dashboard-item-content{max-width:75%}.wf-dashboard-item .wf-dashboard-item-inner .wf-dashboard-item-content .wf-dashboard-item-title{font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:0.875rem;width:100%}.wf-dashboard-item .wf-dashboard-item-inner .wf-dashboard-item-content .wf-dashboard-item-subtitle{margin-top:.125rem;margin-bottom:.125rem;font-size:.575rem;color:#4f748e}.wf-dashboard-item .wf-dashboard-item-inner .wf-dashboard-item-action{position:absolute;top:0;right:0;height:100%;background:none;border:0;outline:0;width:48px;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;vertical-align:middle;transition:transform 0.15s cubic-bezier(0.175, 0.885, 0.32, 1.275),color 0.2s ease-in}.wf-dashboard-item .wf-dashboard-item-inner .wf-dashboard-item-action.wf-dashboard-item-action-text{width:auto}.wf-dashboard-item .wf-dashboard-item-inner .wf-dashboard-item-action.wf-dashboard-item-action-text.wf-dashboard-item-action-text-success{color:#11967a}.wf-dashboard-item .wf-dashboard-item-inner .wf-dashboard-item-action.wf-dashboard-item-action-text.wf-dashboard-item-action-text-warning{color:#930000}.wf-dashboard-item .wf-dashboard-item-inner .wf-dashboard-item-action.wf-dashboard-item-action-text.wf-dashboard-item-action-text-warning a{color:#930000}.wf-dashboard-item .wf-dashboard-item-inner .wf-dashboard-item-action .wf-dashboard-item-action-chevron{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJjaGV2cm9uLW9iamVjdCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiCgkgd2lkdGg9IjI0cHgiIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAyNCAyNCIKCSB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHBhdGggaWQ9ImNoZXZyb24iIGQ9Ik0yMCA5bC04IDgtOC04IDEuNDE0LTEuNDE0TDEyIDE0LjE3Mmw2LjU4Ni02LjU4NiIvPgo8L3N2Zz4K");background-repeat:no-repeat;background-position:center center;width:24px;height:24px;fill:#87a6bc}.wf-dashboard-item .wf-dashboard-item-inner .wf-dashboard-item-action .wf-dashboard-item-action-checkbox{background-image:url(../images/checkbox.png);background-repeat:no-repeat;background-position:left center;width:29px;height:29px}.wf-dashboard-item .wf-dashboard-item-inner .wf-dashboard-item-action .wf-dashboard-item-action-checkbox.checked{background-position:right center}.wf-dashboard-item .wf-dashboard-item-extra{display:none;margin:0 -1rem;padding:0 1rem}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list{margin:0 -1rem;padding:0;list-style:none}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-striped>li:nth-of-type(odd){background-color:#f9f9f9}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-striped>li:nth-of-type(odd).wf-notification{border-left:4px solid #f9f9f9}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-striped>li:nth-of-type(odd).wf-notification.wf-notification-warning{border-left:4px solid #fcb214}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-striped>li:nth-of-type(odd).wf-notification.wf-notification-critical{border-left:4px solid #930000}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-striped>li:nth-of-type(even){background-color:#ffffff}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-striped>li:nth-of-type(even).wf-notification{border-left:4px solid #ffffff}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-striped>li:nth-of-type(even).wf-notification.wf-notification-warning{border-left:4px solid #fcb214}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-striped>li:nth-of-type(even).wf-notification.wf-notification-critical{border-left:4px solid #930000}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list>li{display:block;min-height:44px;padding:0 1rem;margin:0;border-top:1px solid #eeeeee;box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list>li>*:first-child{-webkit-flex-grow:1;flex-grow:1;min-width:0}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-horizontal{box-sizing:border-box;margin-top:-1px;display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-align-content:flex-start;align-content:flex-start;-webkit-justify-content:space-between;justify-content:space-between;-webkit-flex-wrap:wrap;flex-wrap:wrap}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-horizontal>li{-webkit-flex-grow:1;flex-grow:1;-webkit-flex-basis:100%;flex-basis:100%;border-left:1px solid #eeeeee}@media (min-width: 768px){.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-horizontal>li{-webkit-flex-basis:50%;flex-basis:50%}}@media (min-width: 992px){.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-horizontal>li{-webkit-flex-basis:25%;flex-basis:25%}}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-horizontal>*:first-child{border-left:0}@media (min-width: 768px){.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-horizontal.wf-dashboard-item-list-equal>li{max-width:50%}}@media (min-width: 992px){.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-horizontal.wf-dashboard-item-list-equal>li{max-width:25%}}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list .wf-dashboard-item-list-state{text-align:center}@media (min-width: 1200px){.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list .wf-dashboard-item-list-state{text-align:left}}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list .wf-dashboard-item-list-state-enabled .fa{color:#11967a}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list .wf-dashboard-item-list-state-disabled .fa{color:#525355}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list .wf-dashboard-item-list-state-premium{color:#9f9fa0}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list .wf-dashboard-item-list-dismiss{padding-left:2rem;font-size:1.25rem}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list .wf-dashboard-item-list-dismiss a{color:#525355}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-labeled-count{box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;-webkit-flex-direction:column;flex-direction:column}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-labeled-count-count{font-size:3rem;line-height:3rem;color:#9f9fa0;padding:1rem}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-labeled-count-label{font-size:0.75rem;color:#9f9fa0;padding:0 1rem 1rem 1rem}.wf-dashboard-item.active .wf-dashboard-item-extra{display:block}.wf-dashboard-item.wf-dashboard-item-left .wf-dashboard-item-content{margin-left:48px}.wf-dashboard-item.wf-dashboard-item-left .wf-dashboard-item-action{right:auto;left:0px}.wf-dashboard-item.disabled .wf-dashboard-item-content .wf-dashboard-item-title{color:#aaaaaa}.wf-dashboard-item.disabled .wf-dashboard-item-content .wf-dashboard-item-subtitle{color:#8ea6be}.wf-dashboard-item-flex-wrapper{display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:column;flex-direction:column}.wf-dashboard-item-flex-wrapper .wf-dashboard-item{-webkit-flex-grow:1;flex-grow:1;width:100%}.wf-notifications-empty{font-size:0.9rem;color:#9f9fa0}.wf-dashboard-graph-wrapper{width:100%}.wf-dashboard-badge{display:inline-block;min-width:10px;padding:3px 7px;margin-left:0.5rem;font-size:12px;font-weight:bold;color:#fff;line-height:1;vertical-align:middle;white-space:nowrap;text-align:center;background-color:#fcb214;border-radius:10px}.wf-dashboard-badge:empty{display:none}.wf-btn .wf-dashboard-badge{position:relative;top:-1px}.wf-btn-xs .wf-dashboard-badge,.wf-btn-group-xs>.wf-btn .wf-dashboard-badge,.wf-btn-group-xs>.wf-btn .wf-dashboard-badge{top:0;padding:1px 5px}.wf-list-group-item.active>.wf-dashboard-badge,.wf-nav-pills>.active>a>.wf-dashboard-badge{color:#00709e;background-color:#fff}.wf-list-group-item>.wf-dashboard-badge{float:right}.wf-list-group-item>.wf-dashboard-badge+.wf-dashboard-badge{margin-right:5px}.wf-nav-pills>li>a>.wf-dashboard-badge{margin-left:3px}.wf-dashboard-toggle-btns{text-align:center}.wf-dashboard-toggle-btns .wf-pagination{margin:1rem 1rem 0.5rem 1rem}.wf-dashboard-show-more{position:relative;font-size:14px;color:#959595;text-align:center;line-height:1rem;background:#ffffff;width:60%;margin:20px auto 0 auto}.wf-dashboard-show-more:before{display:inline-block;content:"";position:absolute;height:1px;background:#dddddd;top:50%;width:100%;left:0;right:0}.wf-dashboard-show-more a{display:inline-block;position:relative;padding:0 10px;background-color:#ffffff}.wf-ips,.wf-recent-logins,.wf-countries{max-height:30rem;overflow-y:auto;margin-bottom:20px}.wf-ips .wf-table,.wf-recent-logins .wf-table,.wf-countries .wf-table{margin-bottom:0}.wf-dashboard-last-updated{font-style:italic;font-size:0.6rem;text-align:center;padding-bottom:1rem;margin:0}.wf-dashboard-navigation .wf-block-navigation-option-content{padding:1rem 0 1rem 1rem}@media (min-width: 768px){.wf-dashboard-navigation .wf-block-navigation-option-content{padding:1.5rem 0 1.5rem 1rem}}.wf-dashboard-navigation .wf-block-navigation-option-content h4{margin:0 0 0.25rem 0}.wf-dashboard-navigation .wf-block-navigation-option-content p{margin:0 0 0.45rem 0}.wf-blocks-summary{width:100%;margin:1rem 0;border-spacing:0}.wf-blocks-summary>thead>tr>th,.wf-blocks-summary>tbody>tr>th,.wf-blocks-summary>tr>th{font-weight:600;padding:0.25rem 0.25rem;white-space:nowrap}@media (min-width: 768px){.wf-blocks-summary>thead>tr>th,.wf-blocks-summary>tbody>tr>th,.wf-blocks-summary>tr>th{padding:0.25rem 1rem}}.wf-blocks-summary>thead>tr>th.wf-premium,.wf-blocks-summary>tbody>tr>th.wf-premium,.wf-blocks-summary>tr>th.wf-premium{border-top:2px solid #00709e;border-left:2px solid #00709e;border-right:2px solid #00709e;border-top-left-radius:0.5rem;border-top-right-radius:0.5rem;color:#aaa}.wf-blocks-summary>thead>tr>th,.wf-blocks-summary>tr>th{text-align:center}.wf-blocks-summary>thead>tr>th:first-child,.wf-blocks-summary>tbody>tr>th{text-align:right}.wf-blocks-summary>tbody>tr>td,.wf-blocks-summary>tfoot>tr>td,.wf-blocks-summary>tr>td{text-align:center;padding:0.25rem 0.25rem}@media (min-width: 768px){.wf-blocks-summary>tbody>tr>td,.wf-blocks-summary>tfoot>tr>td,.wf-blocks-summary>tr>td{padding:0.25rem 1rem}}.wf-blocks-summary>tbody>tr>td.wf-premium,.wf-blocks-summary>tfoot>tr>td.wf-premium,.wf-blocks-summary>tr>td.wf-premium{border-left:2px solid #00709e;border-right:2px solid #00709e;color:#aaa}.wf-blocks-summary>tfoot>tr>td.wf-premium,.wf-blocks-summary>tr:last-child>td.wf-premium{border-bottom:2px solid #00709e;border-bottom-left-radius:0.5rem;border-bottom-right-radius:0.5rem;background-color:#00709e;color:#fff}#howGetIPs-trusted-proxies{display:none}ul.wf-option.wf-option-howgetips .wf-option-howgetips-details{display:-webkit-flex;display:flex;-webkit-align-items:flex-start;align-items:flex-start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:column;flex-direction:column;font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:0.8rem;margin-top:0.5rem}.wf-central-dashboard{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-align-content:stretch;align-content:stretch;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-wrap:nowrap;flex-wrap:nowrap}.wf-central-dashboard .wf-central-dashboard-logo{width:80px;min-width:80px;margin:10px 0}.wf-central-dashboard .wf-central-dashboard-copy{padding-left:20px}@media (min-width: 768px){.wf-central-dashboard{-webkit-flex-direction:row;flex-direction:row;-webkit-align-items:center;align-items:center}}table.wf-table{background-color:transparent;border-collapse:collapse;border-spacing:0}table.wf-table td,table.wf-table th{padding:0}.wf-table caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}.wf-table th{text-align:left}.wf-table{width:100%;max-width:100%;margin-bottom:20px}.wf-table>thead>tr>th,.wf-table>thead>tr>td,.wf-table>tbody>tr>th,.wf-table>tbody>tr>td,.wf-table>tfoot>tr>th,.wf-table>tfoot>tr>td{padding:8px;line-height:1.42857;vertical-align:top;border-top:1px solid #ddd}.wf-table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.wf-table>caption+thead>tr:first-child>th,.wf-table>caption+thead>tr:first-child>td,.wf-table>colgroup+thead>tr:first-child>th,.wf-table>colgroup+thead>tr:first-child>td,.wf-table>thead:first-child>tr:first-child>th,.wf-table>thead:first-child>tr:first-child>td{border-top:0}.wf-table>tbody+tbody{border-top:2px solid #ddd}.wf-table .wf-table{background-color:#fff}.wf-table-condensed>thead>tr>th,.wf-table-condensed>thead>tr>td,.wf-table-condensed>tbody>tr>th,.wf-table-condensed>tbody>tr>td,.wf-table-condensed>tfoot>tr>th,.wf-table-condensed>tfoot>tr>td{padding:5px}.wf-table-bordered{border:1px solid #ddd}.wf-table-bordered>thead>tr>th,.wf-table-bordered>thead>tr>td,.wf-table-bordered>tbody>tr>th,.wf-table-bordered>tbody>tr>td,.wf-table-bordered>tfoot>tr>th,.wf-table-bordered>tfoot>tr>td{border:1px solid #ddd}.wf-table-bordered>thead>tr>th,.wf-table-bordered>thead>tr>td{border-bottom-width:2px}.wf-table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.wf-table-hover>tbody>tr:hover{background-color:#f5f5f5}table.wf-table col[class*="col-"]{position:static;float:none;display:table-column}table.wf-table td[class*="col-"],table.wf-table th[class*="col-"]{position:static;float:none;display:table-cell}.wf-table>thead>tr>td.active,.wf-table>thead>tr>th.active,.wf-table>thead>tr.active>td,.wf-table>thead>tr.active>th,.wf-table>tbody>tr>td.active,.wf-table>tbody>tr>th.active,.wf-table>tbody>tr.active>td,.wf-table>tbody>tr.active>th,.wf-table>tfoot>tr>td.active,.wf-table>tfoot>tr>th.active,.wf-table>tfoot>tr.active>td,.wf-table>tfoot>tr.active>th{background-color:#f5f5f5}.wf-table-hover>tbody>tr>td.active:hover,.wf-table-hover>tbody>tr>th.active:hover,.wf-table-hover>tbody>tr.active:hover>td,.wf-table-hover>tbody>tr:hover>.active,.wf-table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.wf-table>thead>tr>td.success,.wf-table>thead>tr>th.success,.wf-table>thead>tr.success>td,.wf-table>thead>tr.success>th,.wf-table>tbody>tr>td.success,.wf-table>tbody>tr>th.success,.wf-table>tbody>tr.success>td,.wf-table>tbody>tr.success>th,.wf-table>tfoot>tr>td.success,.wf-table>tfoot>tr>th.success,.wf-table>tfoot>tr.success>td,.wf-table>tfoot>tr.success>th{background-color:#dff0d8}.wf-table-hover>tbody>tr>td.success:hover,.wf-table-hover>tbody>tr>th.success:hover,.wf-table-hover>tbody>tr.success:hover>td,.wf-table-hover>tbody>tr:hover>.success,.wf-table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.wf-table>thead>tr>td.info,.wf-table>thead>tr>th.info,.wf-table>thead>tr.info>td,.wf-table>thead>tr.info>th,.wf-table>tbody>tr>td.info,.wf-table>tbody>tr>th.info,.wf-table>tbody>tr.info>td,.wf-table>tbody>tr.info>th,.wf-table>tfoot>tr>td.info,.wf-table>tfoot>tr>th.info,.wf-table>tfoot>tr.info>td,.wf-table>tfoot>tr.info>th{background-color:#d9edf7}.wf-table-hover>tbody>tr>td.info:hover,.wf-table-hover>tbody>tr>th.info:hover,.wf-table-hover>tbody>tr.info:hover>td,.wf-table-hover>tbody>tr:hover>.info,.wf-table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.wf-table>thead>tr>td.warning,.wf-table>thead>tr>th.warning,.wf-table>thead>tr.warning>td,.wf-table>thead>tr.warning>th,.wf-table>tbody>tr>td.warning,.wf-table>tbody>tr>th.warning,.wf-table>tbody>tr.warning>td,.wf-table>tbody>tr.warning>th,.wf-table>tfoot>tr>td.warning,.wf-table>tfoot>tr>th.warning,.wf-table>tfoot>tr.warning>td,.wf-table>tfoot>tr.warning>th{background-color:#fcf8e3}.wf-table-hover>tbody>tr>td.warning:hover,.wf-table-hover>tbody>tr>th.warning:hover,.wf-table-hover>tbody>tr.warning:hover>td,.wf-table-hover>tbody>tr:hover>.warning,.wf-table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.wf-table>thead>tr>td.danger,.wf-table>thead>tr>th.danger,.wf-table>thead>tr.danger>td,.wf-table>thead>tr.danger>th,.wf-table>tbody>tr>td.danger,.wf-table>tbody>tr>th.danger,.wf-table>tbody>tr.danger>td,.wf-table>tbody>tr.danger>th,.wf-table>tfoot>tr>td.danger,.wf-table>tfoot>tr>th.danger,.wf-table>tfoot>tr.danger>td,.wf-table>tfoot>tr.danger>th{background-color:#f2dede}.wf-table-hover>tbody>tr>td.danger:hover,.wf-table-hover>tbody>tr>th.danger:hover,.wf-table-hover>tbody>tr.danger:hover>td,.wf-table-hover>tbody>tr:hover>.danger,.wf-table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.wf-table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width: 767px){.wf-table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.wf-table-responsive>.wf-table{margin-bottom:0}.wf-table-responsive>.wf-table>thead>tr>th,.wf-table-responsive>.wf-table>thead>tr>td,.wf-table-responsive>.wf-table>tbody>tr>th,.wf-table-responsive>.wf-table>tbody>tr>td,.wf-table-responsive>.wf-table>tfoot>tr>th,.wf-table-responsive>.wf-table>tfoot>tr>td{white-space:nowrap}.wf-table-responsive>.wf-table-bordered{border:0}.wf-table-responsive>.wf-table-bordered>thead>tr>th:first-child,.wf-table-responsive>.wf-table-bordered>thead>tr>td:first-child,.wf-table-responsive>.wf-table-bordered>tbody>tr>th:first-child,.wf-table-responsive>.wf-table-bordered>tbody>tr>td:first-child,.wf-table-responsive>.wf-table-bordered>tfoot>tr>th:first-child,.wf-table-responsive>.wf-table-bordered>tfoot>tr>td:first-child{border-left:0}.wf-table-responsive>.wf-table-bordered>thead>tr>th:last-child,.wf-table-responsive>.wf-table-bordered>thead>tr>td:last-child,.wf-table-responsive>.wf-table-bordered>tbody>tr>th:last-child,.wf-table-responsive>.wf-table-bordered>tbody>tr>td:last-child,.wf-table-responsive>.wf-table-bordered>tfoot>tr>th:last-child,.wf-table-responsive>.wf-table-bordered>tfoot>tr>td:last-child{border-right:0}.wf-table-responsive>.wf-table-bordered>tbody>tr:last-child>th,.wf-table-responsive>.wf-table-bordered>tbody>tr:last-child>td,.wf-table-responsive>.wf-table-bordered>tfoot>tr:last-child>th,.wf-table-responsive>.wf-table-bordered>tfoot>tr:last-child>td{border-bottom:0}}.wf-sortable{position:relative;padding-right:2rem !important}.wf-sortable .wf-sorted-ascending,.wf-sortable .wf-sorted-descending{display:none;position:absolute;right:1rem;top:50%;transform:translateY(-50%)}.wf-sortable.wf-unsorted:hover .wf-sorted-ascending{display:block}.wf-sortable.wf-unsorted,.wf-sortable.wf-sorted-ascending,.wf-sortable.wf-sorted-descending{cursor:pointer}.wf-sortable.wf-unsorted:hover,.wf-sortable.wf-sorted-ascending:hover,.wf-sortable.wf-sorted-descending:hover{background-color:#e0e0e0}.wf-sortable.wf-sorted-ascending,.wf-sortable.wf-sorted-descending{background-color:#e0e0e0}.wf-sortable.wf-sorted-ascending .wf-sorted-ascending{display:block}.wf-sortable.wf-sorted-descending .wf-sorted-descending{display:block}.wf-nav{margin-bottom:0;padding-left:0;list-style:none}.wf-nav:before,.wf-nav:after{content:" ";display:table}.wf-nav:after{clear:both}.wf-nav>li{position:relative;display:block}.wf-nav>li>a{position:relative;display:block;padding:8px 12px}.wf-nav>li>a:hover,.wf-nav>li>a:focus{text-decoration:none;background-color:#e2e2e2}.wf-nav>li.wf-disabled>a{color:#777}.wf-nav>li.wf-disabled>a:hover,.wf-nav>li.wf-disabled>a:focus{color:#777;text-decoration:none;background-color:transparent;cursor:not-allowed}.wf-nav .wf-open>a,.wf-nav .wf-open>a:hover,.wf-nav .wf-open>a:focus{background-color:#e2e2e2;border-color:#00709e}.wf-nav>li>a>img{max-width:none}.wf-nav-tabs{border-bottom:1px solid #d0d0d0}.wf-nav-tabs>li{float:left;margin-bottom:-1px}.wf-nav-tabs>li>a{margin-right:2px;line-height:1.42857;border:1px solid transparent;border-radius:4px 4px 0 0}.wf-nav-tabs>li>a:hover{border-color:#e2e2e2 #e2e2e2 #d0d0d0}.wf-nav-tabs>li.wf-active>a,.wf-nav-tabs>li.wf-active>a:hover,.wf-nav-tabs>li.wf-active>a:focus{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.wf-nav-pills>li{float:left}.wf-nav-pills>li>a{border-radius:4px;text-decoration:none;position:relative;display:block;padding:8px 12px}.wf-nav-pills>li>a:hover,.wf-nav-pills>li>a:focus{text-decoration:none !important;background-color:#e2e2e2}.wf-nav-pills>li+li{margin-left:2px}.wf-nav-pills>li.wf-active>a,.wf-nav-pills>li.wf-active>a:hover,.wf-nav-pills>li.wf-active>a:focus{color:#fff;background-color:#00709e}.wf-nav-pills.wf-nav-pills-bordered>li>a{border:1px solid #e2e2e2}.wf-nav-pills.wf-nav-pills-connected>li>a{border-radius:0;border-right-width:0px}.wf-nav-pills.wf-nav-pills-connected>li+li{margin-left:0}.wf-nav-pills.wf-nav-pills-connected>li.active+li>a{border-left-width:0px}.wf-nav-pills.wf-nav-pills-connected>li:first-of-type>a{-moz-border-radius:4px 0 0 4px;-webkit-border-radius:4px;border-radius:4px 0 0 4px}.wf-nav-pills.wf-nav-pills-connected>li:last-of-type>a{-moz-border-radius:0 4px 4px 0;-webkit-border-radius:0;border-radius:0 4px 4px 0;border-right-width:1px}.wf-nav-stacked>li{float:none}.wf-nav-stacked>li+li{margin-top:2px;margin-left:0}.wf-nav-justified,.wf-nav-tabs.wf-nav-justified{width:100%}.wf-nav-justified>li,.wf-nav-tabs.wf-nav-justified>li{float:none}.wf-nav-justified>li>a,.wf-nav-tabs.wf-nav-justified>li>a{text-align:center;margin-bottom:5px}.wf-nav-justified>.wf-dropdown .wf-dropdown-menu{top:auto;left:auto}@media (min-width: 768px){.wf-nav-justified>li,.wf-nav-tabs.wf-nav-justified>li{display:table-cell;width:1%}.wf-nav-justified>li>a,.wf-nav-tabs.wf-nav-justified>li>a{margin-bottom:0}}.wf-nav-tabs-justified,.wf-nav-tabs.wf-nav-justified{border-bottom:0}.wf-nav-tabs-justified>li>a,.wf-nav-tabs.wf-nav-justified>li>a{margin-right:0;border-radius:4px}.wf-nav-tabs-justified>.wf-active>a,.wf-nav-tabs.wf-nav-justified>.wf-active>a,.wf-nav-tabs-justified>.wf-active>a:hover,.wf-nav-tabs.wf-nav-justified>.wf-active>a:hover,.wf-nav-tabs-justified>.wf-active>a:focus,.wf-nav-tabs.wf-nav-justified>.wf-active>a:focus{border:1px solid #ddd}@media (min-width: 768px){.wf-nav-tabs-justified>li>a,.wf-nav-tabs.wf-nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.wf-nav-tabs-justified>.wf-active>a,.wf-nav-tabs.wf-nav-justified>.wf-active>a,.wf-nav-tabs-justified>.wf-active>a:hover,.wf-nav-tabs.wf-nav-justified>.wf-active>a:hover,.wf-nav-tabs-justified>.wf-active>a:focus,.wf-nav-tabs.wf-nav-justified>.wf-active>a:focus{border-bottom-color:#fff}}.wf-tab-content>.wf-tab-pane{display:none}.wf-tab-content>.wf-active{display:block}.wf-nav-tabs .wf-dropdown-menu{margin-top:-1px;-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0}.wf-navbar-brand{float:left;padding:12px 8px;font-size:18px;line-height:20px;margin:10px 0 0 0}.wf-navbar-brand:hover,.wf-navbar-brand:focus{text-decoration:none}.wf-navbar-brand>img{display:block}@media (min-width: 768px){.navbar>.container .wf-navbar-brand,.navbar>.container-fluid .wf-navbar-brand{margin-left:-8px}}.wf-caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}.wf-dropup,.wf-dropdown{position:relative}.wf-dropdown-toggle:focus{outline:0}.wf-dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;text-align:left;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box}.wf-dropdown-menu .wf-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.wf-dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857;color:#333;text-decoration:none;white-space:nowrap}.wf-dropdown-menu>li>a:hover,.wf-dropdown-menu>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.wf-dropdown-menu>.wf-active>a,.wf-dropdown-menu>.wf-active>a:hover,.wf-dropdown-menu>.wf-active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#00709e}.wf-dropdown-menu>.wf-disabled>a,.wf-dropdown-menu>.wf-disabled>a:hover,.wf-dropdown-menu>.wf-disabled>a:focus{color:#777}.wf-dropdown-menu>.wf-disabled>a:hover,.wf-dropdown-menu>.wf-disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);cursor:not-allowed}.wf-open>.wf-dropdown-menu{display:block}.wf-open>a{outline:0}.wf-dropdown-menu-right{left:auto;right:0}.wf-dropdown-menu-left{left:0;right:auto}.wf-dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857;color:#777;white-space:nowrap}.wf-dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.wf-pull-right>.wf-dropdown-menu{right:0;left:auto}.wf-dropup .wf-caret,.wf-navbar-fixed-bottom .wf-dropdown .wf-caret{border-top:0;border-bottom:4px dashed;border-bottom:4px solid \9;content:""}.wf-dropup .wf-dropdown-menu,.wf-navbar-fixed-bottom .wf-dropdown .wf-dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width: 768px){.wf-navbar-right .wf-dropdown-menu{right:0;left:auto}.wf-navbar-right .wf-dropdown-menu-left{left:0;right:auto}}.wf-mobile-dropdown{border:1px solid #ccc;margin-left:.5em;padding:5px 10px;font-size:14px;line-height:24px;margin:10px 10px 0 0;background:#f1f1f1;color:#000;font-weight:600;text-decoration:none}.wf-blocks-table tbody tr.wf-editing,.wf-blocks-table tbody tr.wf-editing td{background-color:#fffbd8}.wf-blocked-countries-section{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-align-content:stretch;align-content:stretch;-webkit-flex-wrap:nowrap;flex-wrap:nowrap}.wf-blocked-countries-section-title{font-size:1.1rem;padding-right:0.5rem}.wf-blocked-countries-section-spacer{-webkit-flex-basis:30px;flex-basis:30px;height:1px;background:#aaa}.wf-blocked-countries-section-options{margin-bottom:0;margin-top:0;padding-left:0.5rem;list-style:none;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-align-content:stretch;align-content:stretch;-webkit-flex-wrap:nowrap;flex-wrap:nowrap}.wf-blocked-countries-section-options li{padding:0;margin:0;color:#777}.wf-blocked-countries-section-options li a{padding:2px 4px;text-decoration:none;color:#777}.wf-blocked-countries-section-options li a.active-section{background-color:#777;color:#e2e2e2}.wf-option-bypass-redirect .wf-option-title,.wf-option-bypass-cookie .wf-option-title{-webkit-align-self:flex-start;align-self:flex-start}.wf-option-bypass-redirect *,.wf-option-bypass-cookie *{-webkit-flex-grow:1;flex-grow:1}.wf-option-bypass-redirect *:first-child,.wf-option-bypass-cookie *:first-child{-webkit-flex-grow:0;flex-grow:0}.wf-country-block-map{width:300px}@media (min-width: 768px){.wf-country-block-map{width:500px}}@media (min-width: 992px){.wf-country-block-map{width:700px}}@media (min-width: 1200px){.wf-country-block-map{width:700px}}#wf-create-block{width:100%}#wf-create-block th{white-space:nowrap}#wf-create-block td{width:100%}#wf-create-block td.wf-block-type{width:auto}@media (min-width: 768px){#wf-create-block{width:500px}}@media (min-width: 992px){#wf-create-block{width:700px}}@media (min-width: 1200px){#wf-create-block{width:700px}}#wf-create-block .wf-block-add-country select{width:240px}@media (min-width: 768px){#wf-create-block .wf-block-add-country select{width:280px}}@media (min-width: 992px){#wf-create-block .wf-block-add-country select{width:320px}}#wf-create-block .wf-block-add-country .wfselect2-container--default,#wf-create-block .wf-block-add-country .wfselect2-container--default .wfselect2-selection--multiple{border-color:#e2e2e2}#wf-create-block .wf-block-add-country .wfselect2-container--default .wfselect2-selection__choice,#wf-create-block .wf-block-add-country .wfselect2-container--default .wfselect2-selection--multiple .wfselect2-selection__choice{background-color:#ffffff;border-color:#e2e2e2;padding:0.5rem}#wf-create-block .wf-block-add-country .wfselect2-container--default .wfselect2-search__field,#wf-create-block .wf-block-add-country .wfselect2-container--default .wfselect2-selection--multiple .wfselect2-search__field{margin-right:5px;margin-top:5px;padding:0.5rem 0}#wfcolorbox .wf-country-selector-controls,.wf-drawer .wf-country-selector-controls{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;-webkit-align-content:stretch;align-content:stretch;-webkit-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-flex-shrink:0;flex-shrink:0}#wfcolorbox .wf-country-selector-controls .wf-country-selector-section-options,.wf-drawer .wf-country-selector-controls .wf-country-selector-section-options{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;-webkit-align-content:stretch;align-content:stretch;-webkit-flex-wrap:nowrap;flex-wrap:nowrap}#wfcolorbox .wf-country-selector-controls .wf-country-selector-section-options>li,.wf-drawer .wf-country-selector-controls .wf-country-selector-section-options>li{border:1px solid #ffffff;border-radius:4px;padding:0.25rem;background-color:#ffffff}#wfcolorbox .wf-country-selector-controls .wf-country-selector-section-options>li:hover,#wfcolorbox .wf-country-selector-controls .wf-country-selector-section-options>li:focus,.wf-drawer .wf-country-selector-controls .wf-country-selector-section-options>li:hover,.wf-drawer .wf-country-selector-controls .wf-country-selector-section-options>li:focus{background-color:#00709e;border-color:#00709e}#wfcolorbox .wf-country-selector-controls .wf-country-selector-section-options>li:hover>a,#wfcolorbox .wf-country-selector-controls .wf-country-selector-section-options>li:focus>a,.wf-drawer .wf-country-selector-controls .wf-country-selector-section-options>li:hover>a,.wf-drawer .wf-country-selector-controls .wf-country-selector-section-options>li:focus>a{color:#ffffff}#wfcolorbox .wf-country-selector-controls .wf-country-selector-section-options>li>a,.wf-drawer .wf-country-selector-controls .wf-country-selector-section-options>li>a{text-decoration:none;color:#525355}#wfcolorbox .wf-country-selector-options .wf-blocked-countries,.wf-drawer .wf-country-selector-options .wf-blocked-countries{margin-bottom:0;margin-top:1rem;list-style:none;margin-left:-6px;display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-align-content:stretch;align-content:stretch;-webkit-flex-wrap:wrap;flex-wrap:wrap}#wfcolorbox .wf-country-selector-options .wf-blocked-countries>li,.wf-drawer .wf-country-selector-options .wf-blocked-countries>li{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;margin:0px 0px 2px 6px;text-align:center;border:1px solid #e2e2e2;border-radius:4px;padding:8px 12px;background-color:#ffffff;-webkit-flex-basis:38%;flex-basis:38%}@media (min-width: 768px){#wfcolorbox .wf-country-selector-options .wf-blocked-countries>li,.wf-drawer .wf-country-selector-options .wf-blocked-countries>li{-webkit-flex-basis:20%;flex-basis:20%}}@media (min-width: 992px){#wfcolorbox .wf-country-selector-options .wf-blocked-countries>li,.wf-drawer .wf-country-selector-options .wf-blocked-countries>li{-webkit-flex-basis:15%;flex-basis:15%}}@media (min-width: 1200px){#wfcolorbox .wf-country-selector-options .wf-blocked-countries>li,.wf-drawer .wf-country-selector-options .wf-blocked-countries>li{-webkit-flex-basis:10%;flex-basis:10%}}#wfcolorbox .wf-country-selector-options .wf-blocked-countries>li:hover,#wfcolorbox .wf-country-selector-options .wf-blocked-countries>li:focus,.wf-drawer .wf-country-selector-options .wf-blocked-countries>li:hover,.wf-drawer .wf-country-selector-options .wf-blocked-countries>li:focus{text-decoration:none;background-color:#e2e2e2}#wfcolorbox .wf-country-selector-options .wf-blocked-countries>li.disabled>a,.wf-drawer .wf-country-selector-options .wf-blocked-countries>li.disabled>a{color:#777}#wfcolorbox .wf-country-selector-options .wf-blocked-countries>li.disabled>a:hover,#wfcolorbox .wf-country-selector-options .wf-blocked-countries>li.disabled>a:focus,.wf-drawer .wf-country-selector-options .wf-blocked-countries>li.disabled>a:hover,.wf-drawer .wf-country-selector-options .wf-blocked-countries>li.disabled>a:focus{color:#777;text-decoration:none;background-color:transparent;cursor:not-allowed}#wfcolorbox .wf-country-selector-options .wf-blocked-countries>li>a,.wf-drawer .wf-country-selector-options .wf-blocked-countries>li>a{text-decoration:none;position:relative;display:block}#wfcolorbox .wf-country-selector-options .wf-blocked-countries>li.wf-active,#wfcolorbox .wf-country-selector-options .wf-blocked-countries>li.wf-active:hover,#wfcolorbox .wf-country-selector-options .wf-blocked-countries>li.wf-active:focus,.wf-drawer .wf-country-selector-options .wf-blocked-countries>li.wf-active,.wf-drawer .wf-country-selector-options .wf-blocked-countries>li.wf-active:hover,.wf-drawer .wf-country-selector-options .wf-blocked-countries>li.wf-active:focus{background-color:#00709e;border-color:#00709e}#wfcolorbox .wf-country-selector-options .wf-blocked-countries>li.wf-active>a,#wfcolorbox .wf-country-selector-options .wf-blocked-countries>li.wf-active:hover>a,#wfcolorbox .wf-country-selector-options .wf-blocked-countries>li.wf-active:focus>a,.wf-drawer .wf-country-selector-options .wf-blocked-countries>li.wf-active>a,.wf-drawer .wf-country-selector-options .wf-blocked-countries>li.wf-active:hover>a,.wf-drawer .wf-country-selector-options .wf-blocked-countries>li.wf-active:focus>a{color:#fff}#wfcolorbox .wf-country-selector-options .wf-blocked-countries>li.text-only,.wf-drawer .wf-country-selector-options .wf-blocked-countries>li.text-only{position:relative;display:block;padding:8px 12px}#wfcolorbox .wf-country-selector-options .wf-blocked-countries>li>a>img,.wf-drawer .wf-country-selector-options .wf-blocked-countries>li>a>img{max-width:none}.wf-tag-selected{background-color:#ffffff;border:1px solid #e2e2e2;border-radius:4px;cursor:default;float:left;margin-right:5px !important;margin-top:5px !important;list-style:none;padding:0.5rem !important}.wf-destroy-tag-selected{color:#999;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.wf-destroy-tag-selected:hover{text-decoration:none}.wf-tags-show-hide-more{float:left;margin-right:5px;margin-top:5px;list-style:none;padding:0.5rem}.wf-select2-hide-tags .wfselect2-selection__choice{display:none}.wf-country-selector-outer-wrapper{position:relative;-webkit-flex-grow:1;flex-grow:1}.wf-country-selector-outer-wrapper .wf-country-selector-inner-wrapper{position:absolute;top:0px;right:0px;bottom:0px;left:0px;overflow-x:hidden;overflow-y:auto}table.wf-dataTable{width:auto;max-width:800px;clear:both;border-collapse:collapse;border-spacing:0}table.wf-dataTable>thead th,table.wf-dataTable>tfoot th{font-weight:bold}table.wf-dataTable>thead th,table.wf-dataTable>thead td{cursor:pointer;text-align:left;font-size:11px;border:1px solid #ccc;padding:8px 4px 5px 9px;text-transform:uppercase}table.wf-dataTable>thead th:active,table.wf-dataTable>thead td:active{outline:none}table.wf-dataTable>tfoot th,table.wf-dataTable>tfoot td{padding:10px 18px 6px 18px;border-top:1px solid #111}table.wf-dataTable>thead .sorting,table.wf-dataTable>thead .sorting_asc,table.wf-dataTable>thead .sorting_desc{cursor:pointer;*cursor:hand}table.wf-dataTable>thead .sorting,table.wf-dataTable>thead .sorting_asc,table.wf-dataTable>thead .sorting_desc,table.wf-dataTable>thead .sorting_asc_disabled,table.wf-dataTable>thead .sorting_desc_disabled{background-repeat:no-repeat;background-position:center right}table.wf-dataTable>thead .sorting{background-image:url(../images/sort_both.png)}table.wf-dataTable>thead .sorting_asc{background-image:url(../images/sort_asc.png)}table.wf-dataTable>thead .sorting_desc{background-image:url(../images/sort_desc.png)}table.wf-dataTable>thead .sorting_asc_disabled{background-image:url(../images/sort_asc_disabled.png)}table.wf-dataTable>thead .sorting_desc_disabled{background-image:url(../images/sort_desc_disabled.png)}table.wf-dataTable>tbody>tr{background-color:#ffffff}table.wf-dataTable>tbody>tr.selected{background-color:#B0BED9}table.wf-dataTable>tbody>tr>th,table.wf-dataTable>tbody>tr>td{padding:5px 8px}table.wf-dataTable.row-border>tbody>tr>th,table.wf-dataTable.row-border>tbody>tr>td,table.wf-dataTable.display>tbody>tr>th,table.wf-dataTable.display>tbody>tr>td{border:1px solid #cccccc}table.wf-dataTable.row-border>tbody>tr:first-child>th,table.wf-dataTable.row-border>tbody>tr:first-child>td,table.wf-dataTable.display>tbody>tr:first-child>th,table.wf-dataTable.display>tbody>tr:first-child>td{border-top:none}table.wf-dataTable.cell-border>tbody>tr>th,table.wf-dataTable.cell-border>tbody>tr>td{border-top:1px solid #ddd;border-right:1px solid #ddd}table.wf-dataTable.cell-border>tbody>tr>th:first-child,table.wf-dataTable.cell-border>tbody>tr>td:first-child{border-left:1px solid #ddd}table.wf-dataTable.cell-border>tbody>tr:first-child>th,table.wf-dataTable.cell-border>tbody>tr:first-child>td{border-top:none}table.wf-dataTable.stripe>tbody>tr.odd,table.wf-dataTable.display>tbody>tr.odd{background-color:#f9f9f9}table.wf-dataTable.stripe>tbody>tr.odd.selected,table.wf-dataTable.display>tbody>tr.odd.selected{background-color:#acbad4}table.wf-dataTable.hover>tbody>tr:hover,table.wf-dataTable.display>tbody>tr:hover{background-color:#f6f6f6}table.wf-dataTable.hover>tbody>tr:hover.selected,table.wf-dataTable.display>tbody>tr:hover.selected{background-color:#aab7d1}table.wf-dataTable.order-column>tbody>tr>.sorting_1,table.wf-dataTable.order-column>tbody>tr>.sorting_2,table.wf-dataTable.order-column>tbody>tr>.sorting_3,table.wf-dataTable.display tbody>tr>.sorting_1,table.wf-dataTable.display>tbody>tr>.sorting_2,table.wf-dataTable.display>tbody>tr>.sorting_3{background-color:#fafafa}table.wf-dataTable.order-column>tbody>tr.selected>.sorting_1,table.wf-dataTable.order-column>tbody>tr.selected>.sorting_2,table.wf-dataTable.order-column>tbody>tr.selected>.sorting_3,table.wf-dataTable.display>tbody>tr.selected>.sorting_1,table.wf-dataTable.display>tbody>tr.selected>.sorting_2,table.wf-dataTable.display>tbody>tr.selected>.sorting_3{background-color:#acbad5}table.wf-dataTable.display>tbody>tr.odd>.sorting_1,table.wf-dataTable.order-column.stripe>tbody>tr.odd>.sorting_1{background-color:#f1f1f1}table.wf-dataTable.display>tbody>tr.odd>.sorting_2,table.wf-dataTable.order-column.stripe>tbody>tr.odd>.sorting_2{background-color:#f3f3f3}table.wf-dataTable.display>tbody>tr.odd>.sorting_3,table.wf-dataTable.order-column.stripe>tbody>tr.odd>.sorting_3{background-color:whitesmoke}table.wf-dataTable.display>tbody>tr.odd.selected>.sorting_1,table.wf-dataTable.order-column.stripe>tbody>tr.odd.selected>.sorting_1{background-color:#a6b4cd}table.wf-dataTable.display>tbody>tr.odd.selected>.sorting_2,table.wf-dataTable.order-column.stripe>tbody>tr.odd.selected>.sorting_2{background-color:#a8b5cf}table.wf-dataTable.display>tbody>tr.odd.selected>.sorting_3,table.wf-dataTable.order-column.stripe>tbody>tr.odd.selected>.sorting_3{background-color:#a9b7d1}table.wf-dataTable.display>tbody>tr.even>.sorting_1,table.wf-dataTable.order-column.stripe>tbody>tr.even>.sorting_1{background-color:#fafafa}table.wf-dataTable.display>tbody>tr.even>.sorting_2,table.wf-dataTable.order-column.stripe>tbody>tr.even>.sorting_2{background-color:#fcfcfc}table.wf-dataTable.display>tbody>tr.even>.sorting_3,table.wf-dataTable.order-column.stripe>tbody>tr.even>.sorting_3{background-color:#fefefe}table.wf-dataTable.display>tbody>tr.even.selected>.sorting_1,table.wf-dataTable.order-column.stripe>tbody>tr.even.selected>.sorting_1{background-color:#acbad5}table.wf-dataTable.display>tbody>tr.even.selected>.sorting_2,table.wf-dataTable.order-column.stripe>tbody>tr.even.selected>.sorting_2{background-color:#aebcd6}table.wf-dataTable.display>tbody>tr.even.selected>.sorting_3,table.wf-dataTable.order-column.stripe>tbody>tr.even.selected>.sorting_3{background-color:#afbdd8}table.wf-dataTable.display>tbody>tr:hover>.sorting_1,table.wf-dataTable.order-column.hover>tbody>tr:hover>.sorting_1{background-color:#eaeaea}table.wf-dataTable.display>tbody>tr:hover>.sorting_2,table.wf-dataTable.order-column.hover>tbody>tr:hover>.sorting_2{background-color:#ececec}table.wf-dataTable.display>tbody>tr:hover>.sorting_3,table.wf-dataTable.order-column.hover>tbody>tr:hover>.sorting_3{background-color:#efefef}table.wf-dataTable.display>tbody>tr:hover.selected>.sorting_1,table.wf-dataTable.order-column.hover>tbody>tr:hover.selected>.sorting_1{background-color:#a2aec7}table.wf-dataTable.display>tbody>tr:hover.selected>.sorting_2,table.wf-dataTable.order-column.hover>tbody>tr:hover.selected>.sorting_2{background-color:#a3b0c9}table.wf-dataTable.display>tbody>tr:hover.selected>.sorting_3,table.wf-dataTable.order-column.hover>tbody>tr:hover.selected>.sorting_3{background-color:#a5b2cb}table.wf-dataTable.no-footer{border-bottom:1px solid #111}table.wf-dataTable.nowrap th,table.wf-dataTable.nowrap td{white-space:nowrap}table.wf-dataTable.compact thead th,table.wf-dataTable.compact thead td{padding:4px 17px 4px 4px}table.wf-dataTable.compact tfoot th,table.wf-dataTable.compact tfoot td{padding:4px}table.wf-dataTable.compact>tbody>tr>th,table.wf-dataTable.compact>tbody>tr>td{padding:4px}table.wf-dataTable th.dt-left,table.wf-dataTable td.dt-left{text-align:left}table.wf-dataTable th.dt-center,table.wf-dataTable td.dt-center,table.wf-dataTable td.dataTables_empty{text-align:center}table.wf-dataTable th.dt-right,table.wf-dataTable td.dt-right{text-align:right}table.wf-dataTable th.dt-justify,table.wf-dataTable td.dt-justify{text-align:justify}table.wf-dataTable th.dt-nowrap,table.wf-dataTable td.dt-nowrap{white-space:nowrap}table.wf-dataTable thead th.dt-head-left,table.wf-dataTable thead td.dt-head-left,table.wf-dataTable tfoot th.dt-head-left,table.wf-dataTable tfoot td.dt-head-left{text-align:left}table.wf-dataTable thead th.dt-head-center,table.wf-dataTable thead td.dt-head-center,table.wf-dataTable tfoot th.dt-head-center,table.wf-dataTable tfoot td.dt-head-center{text-align:center}table.wf-dataTable thead th.dt-head-right,table.wf-dataTable thead td.dt-head-right,table.wf-dataTable tfoot th.dt-head-right,table.wf-dataTable tfoot td.dt-head-right{text-align:right}table.wf-dataTable thead th.dt-head-justify,table.wf-dataTable thead td.dt-head-justify,table.wf-dataTable tfoot th.dt-head-justify,table.wf-dataTable tfoot td.dt-head-justify{text-align:justify}table.wf-dataTable thead th.dt-head-nowrap,table.wf-dataTable thead td.dt-head-nowrap,table.wf-dataTable tfoot th.dt-head-nowrap,table.wf-dataTable tfoot td.dt-head-nowrap{white-space:nowrap}table.wf-dataTable>tbody>tr>th.dt-body-left,table.wf-dataTable>tbody>tr>td.dt-body-left{text-align:left}table.wf-dataTable>tbody>tr>th.dt-body-center,table.wf-dataTable>tbody>tr>td.dt-body-center{text-align:center}table.wf-dataTable>tbody>tr>th.dt-body-right,table.wf-dataTable>tbody>tr>td.dt-body-right{text-align:right}table.wf-dataTable>tbody>tr>th.dt-body-justify,table.wf-dataTable>tbody>tr>td.dt-body-justify{text-align:justify}table.wf-dataTable>tbody>tr>th.dt-body-nowrap,table.wf-dataTable>tbody>tr>td.dt-body-nowrap{white-space:nowrap}table.wf-dataTable table.dataTable,table.wf-dataTable th,table.wf-dataTable td{-webkit-box-sizing:content-box;box-sizing:content-box}.wf-dataTables_wrapper{position:relative;clear:both;*zoom:1;zoom:1}.wf-dataTables_wrapper .dataTables_length{float:left}.wf-dataTables_wrapper .dataTables_filter{float:right;text-align:right}.wf-dataTables_wrapper .dataTables_filter input{margin-left:0.5em}.wf-dataTables_wrapper .dataTables_info{clear:both;float:left;padding-top:0.755em}.wf-dataTables_wrapper .dataTables_paginate{float:right;text-align:right;padding-top:0.25em}.wf-dataTables_wrapper .dataTables_paginate .paginate_button{box-sizing:border-box;display:inline-block;min-width:1.5em;padding:0.5em 1em;margin-left:2px;text-align:center;text-decoration:none !important;cursor:pointer;*cursor:hand;color:#333 !important;border:1px solid transparent;border-radius:2px}.wf-dataTables_wrapper .dataTables_paginate .paginate_button.current,.wf-dataTables_wrapper .dataTables_paginate .paginate_button.current:hover{color:#333 !important;border:1px solid #979797;background-color:white;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #fff), color-stop(100%, #dcdcdc));background:-webkit-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-moz-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-ms-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-o-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:linear-gradient(to bottom, #ffffff 0%,#dcdcdc 100%)}.wf-dataTables_wrapper .dataTables_paginate .paginate_button.disabled,.wf-dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover,.wf-dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active{cursor:default;color:#666 !important;border:1px solid transparent;background:transparent;box-shadow:none}.wf-dataTables_wrapper .dataTables_paginate .paginate_button:hover{color:white !important;border:1px solid #111;background-color:#585858;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111));background:-webkit-linear-gradient(top, #585858 0%, #111 100%);background:-moz-linear-gradient(top, #585858 0%, #111 100%);background:-ms-linear-gradient(top, #585858 0%, #111 100%);background:-o-linear-gradient(top, #585858 0%, #111 100%);background:linear-gradient(to bottom, #585858 0%,#111111 100%)}.wf-dataTables_wrapper .dataTables_paginate .paginate_button:active{outline:none;background-color:#2b2b2b;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c));background:-webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:linear-gradient(to bottom, #2b2b2b 0%,#0c0c0c 100%);box-shadow:inset 0 0 3px #111}.wf-dataTables_wrapper .dataTables_paginate .ellipsis{padding:0 1em}.wf-dataTables_wrapper .dataTables_processing{position:absolute;top:50%;left:50%;width:100%;height:40px;margin-left:-50%;margin-top:-25px;padding-top:20px;text-align:center;font-size:1.2em;background-color:white;background:-webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255,255,255,0)), color-stop(25%, rgba(255,255,255,0.9)), color-stop(75%, rgba(255,255,255,0.9)), color-stop(100%, rgba(255,255,255,0)));background:-webkit-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-moz-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-o-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:linear-gradient(to right, rgba(255,255,255,0) 0%,rgba(255,255,255,0.9) 25%,rgba(255,255,255,0.9) 75%,rgba(255,255,255,0) 100%)}.wf-dataTables_wrapper .dataTables_length,.wf-dataTables_wrapper .dataTables_filter,.wf-dataTables_wrapper .dataTables_info,.wf-dataTables_wrapper .dataTables_processing,.wf-dataTables_wrapper .dataTables_paginate{color:#333}.wf-dataTables_wrapper .dataTables_scroll{clear:both}.wf-dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody{*margin-top:-1px;-webkit-overflow-scrolling:touch}.wf-dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody th,.wf-dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody td{vertical-align:middle}.wf-dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody th>div.dataTables_sizing,.wf-dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody td>div.dataTables_sizing{height:0;overflow:hidden;margin:0 !important;padding:0 !important}.wf-dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:1px solid #111}.wf-dataTables_wrapper.no-footer div.dataTables_scrollHead table,.wf-dataTables_wrapper.no-footer div.dataTables_scrollBody table{border-bottom:none}.wf-dataTables_wrapper:after{visibility:hidden;display:block;content:"";clear:both;height:0}@media screen and (max-width: 767px){.wf-dataTables_wrapper .dataTables_info,.wf-dataTables_wrapper .dataTables_paginate{float:none;text-align:center}.wf-dataTables_wrapper .dataTables_paginate{margin-top:0.5em}}@media screen and (max-width: 640px){.wf-dataTables_wrapper .dataTables_length,.wf-dataTables_wrapper .dataTables_filter{float:none;text-align:center}.wf-dataTables_wrapper .dataTables_filter{margin-top:0.5em}}.wf-alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.wf-alert h4{margin-top:0;color:inherit}.wf-alert .wf-alert-link{font-weight:bold}.wf-alert>p,.wf-alert>ul{margin-bottom:0}.wf-alert>p+p{margin-top:5px}.wf-alert-dismissable,.wf-alert-dismissible{padding-right:35px}.wf-alert-dismissable .close,.wf-alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.wf-alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.wf-alert-success hr{border-top-color:#c9e2b3}.wf-alert-success .alert-link{color:#2b542c}.wf-alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.wf-alert-info hr{border-top-color:#a6e1ec}.wf-alert-info .alert-link{color:#245269}.wf-alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.wf-alert-warning hr{border-top-color:#f7e1b5}.wf-alert-warning .alert-link{color:#66512c}.wf-alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.wf-alert-danger hr{border-top-color:#e4b9c0}.wf-alert-danger .alert-link{color:#843534}#wf-tools-whois #wfrawhtml .wf-flex-row{margin:.5rem 0 1rem}#wf-tools-whois #wfrawhtml .wf-flex-row a.wf-flex-row-1{color:#444;text-decoration:none}#wf-tools-whois #wfrawhtml .wf-flex-row a.wf-flex-row-1:hover{color:#00a0d2;text-decoration:underline}.wf-diagnostic-fail.wf-block .wf-block-header .wf-block-header-content .wf-block-title{color:#d0514c}.wf-diagnostic-fail.wf-block .wf-block-header .wf-block-header-content .wf-block-title:before{content:'\f100';font-family:"Ionicons";display:inline-block;margin:0 .4rem 0 0}#wf-diagnostics .wf-block{margin:0 auto 0.5rem}#wf-diagnostics-other-tests .wf-btn-sm,#wf-diagnostics-other-tests .wf-btn-group-sm>.wf-btn{padding:2px 10px;vertical-align:top}.wf-support-block{padding:1rem 0}.wf-support-block>h4{margin:0;padding:0 0 1rem 0}.wf-support-block>h4>a{text-decoration:none;font-size:1.3125rem;line-height:1.5;font-weight:300}.wf-support-block>p{margin:0;padding:0}.wf-support-block>ul{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:row;flex-direction:row;-webkit-flex-wrap:wrap;flex-wrap:wrap;margin:0;padding:0}.wf-support-block>ul>li{margin:0;padding:1rem 1rem 1rem 0}.wf-support-block>ul>li>a{text-decoration:none;font-size:.875rem;line-height:1.3125;font-weight:normal}.wf-support-top-block,.wf-support-missing-block{padding:1.5rem 0}.wf-support-top-block>h4,.wf-support-missing-block>h4{margin:0;padding:0}.wf-support-top-block>ol>li,.wf-support-missing-block>ol>li{margin:0.75rem 0;padding:0}.wf-support-top-block>ol>li>a,.wf-support-missing-block>ol>li>a{text-decoration:none;font-size:.875rem;line-height:1.3125;font-weight:normal}#wf-gdpr-banner{position:relative;z-index:3006;background-color:#fcb214;font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:.875rem;color:#2d2d2d;line-height:1.3125;font-weight:normal;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;-webkit-flex-direction:row;flex-direction:row;margin:0 0 0 -20px;padding:0}#wf-gdpr-banner>li{margin:0;padding:0.5rem 1rem}#wf-toupp-required-overlay::after{position:absolute;z-index:3004;top:0;right:0;width:0;height:0;background:rgba(241,241,241,0.6);content:'';opacity:0;-webkit-transition:opacity 0.5s,width 0.1s 0.5s,height 0.1s 0.5s;-o-transition:opacity 0.5s,width 0.1s 0.5s,height 0.1s 0.5s;transition:opacity 0.5s,width 0.1s 0.5s,height 0.1s 0.5s}.wf-toupp-required #wf-toupp-required-overlay::after{width:100%;height:100%;opacity:1;-webkit-transition:opacity 0.5s;-o-transition:opacity 0.5s;transition:opacity 0.5s}#wf-toupp-required-message{display:none;position:fixed;z-index:3005;left:0;width:100%;top:50%;transform:translateY(-50%);text-align:center;color:#666666;opacity:0;-webkit-transition:opacity 0.5s,width 0.1s 0.5s,height 0.1s 0.5s;-o-transition:opacity 0.5s,width 0.1s 0.5s,height 0.1s 0.5s;transition:opacity 0.5s,width 0.1s 0.5s,height 0.1s 0.5s}#wf-toupp-required-message #wf-toupp-required-message-inner{background-color:#00709e;color:#fff;overflow:hidden;max-width:550px;margin:0 auto;padding:20px}#wf-toupp-required-message #wf-toupp-required-message-inner h2{font-size:2.0rem}#wf-toupp-required-message #wf-toupp-required-message-inner h2 .wf-toupp-required-header{line-height:2.4rem}#wf-toupp-required-message #wf-toupp-required-message-inner p{font-size:1rem}#wf-toupp-required-message #wf-toupp-required-message-inner p:first-child{margin-top:0}#wf-toupp-required-message #wf-toupp-required-message-inner p:last-child{margin-bottom:0}#wf-toupp-required-message #wf-toupp-required-message-inner small{font-size:0.9rem;font-weight:normal;margin-top:12px;display:block}.wf-toupp-required #wf-toupp-required-message{display:block;opacity:1;-webkit-transition:opacity 0.5s;transition:opacity 0.5s}.wf-flag-{background-position:-0px -0px !important}.wf-flag-ad{background-position:-16px -0px !important}.wf-flag-ae{background-position:-32px -0px !important}.wf-flag-af{background-position:-48px -0px !important}.wf-flag-ag{background-position:-64px -0px !important}.wf-flag-ai{background-position:-80px -0px !important}.wf-flag-al{background-position:-96px -0px !important}.wf-flag-am{background-position:-112px -0px !important}.wf-flag-an{background-position:-128px -0px !important}.wf-flag-ao{background-position:-144px -0px !important}.wf-flag-ap{background-position:-160px -0px !important}.wf-flag-aq{background-position:-176px -0px !important}.wf-flag-ar{background-position:-0px -11px !important}.wf-flag-as{background-position:-16px -11px !important}.wf-flag-at{background-position:-32px -11px !important}.wf-flag-au{background-position:-48px -11px !important}.wf-flag-aw{background-position:-64px -11px !important}.wf-flag-ax{background-position:-80px -11px !important}.wf-flag-az{background-position:-96px -11px !important}.wf-flag-ba{background-position:-112px -11px !important}.wf-flag-bb{background-position:-128px -11px !important}.wf-flag-bd{background-position:-144px -11px !important}.wf-flag-be{background-position:-160px -11px !important}.wf-flag-bf{background-position:-176px -11px !important}.wf-flag-bg{background-position:-0px -22px !important}.wf-flag-bh{background-position:-16px -22px !important}.wf-flag-bi{background-position:-32px -22px !important}.wf-flag-bj{background-position:-48px -22px !important}.wf-flag-bl{background-position:-64px -22px !important}.wf-flag-bm{background-position:-80px -22px !important}.wf-flag-bn{background-position:-96px -22px !important}.wf-flag-bo{background-position:-112px -22px !important}.wf-flag-bq{background-position:-128px -22px !important}.wf-flag-br{background-position:-144px -22px !important}.wf-flag-bs{background-position:-160px -22px !important}.wf-flag-bt{background-position:-176px -22px !important}.wf-flag-bv{background-position:-0px -33px !important}.wf-flag-bw{background-position:-16px -33px !important}.wf-flag-by{background-position:-32px -33px !important}.wf-flag-bz{background-position:-48px -33px !important}.wf-flag-ca{background-position:-64px -33px !important}.wf-flag-cc{background-position:-80px -33px !important}.wf-flag-cd{background-position:-96px -33px !important}.wf-flag-cf{background-position:-112px -33px !important}.wf-flag-cg{background-position:-128px -33px !important}.wf-flag-ch{background-position:-144px -33px !important}.wf-flag-ci{background-position:-160px -33px !important}.wf-flag-ck{background-position:-176px -33px !important}.wf-flag-cl{background-position:-0px -44px !important}.wf-flag-cm{background-position:-16px -44px !important}.wf-flag-cn{background-position:-32px -44px !important}.wf-flag-co{background-position:-48px -44px !important}.wf-flag-cr{background-position:-64px -44px !important}.wf-flag-cs{background-position:-80px -44px !important}.wf-flag-cu{background-position:-96px -44px !important}.wf-flag-cv{background-position:-112px -44px !important}.wf-flag-cw{background-position:-128px -44px !important}.wf-flag-cx{background-position:-144px -44px !important}.wf-flag-cy{background-position:-160px -44px !important}.wf-flag-cz{background-position:-176px -44px !important}.wf-flag-de{background-position:-0px -55px !important}.wf-flag-dj{background-position:-16px -55px !important}.wf-flag-dk{background-position:-32px -55px !important}.wf-flag-dm{background-position:-48px -55px !important}.wf-flag-do{background-position:-64px -55px !important}.wf-flag-dz{background-position:-80px -55px !important}.wf-flag-ec{background-position:-96px -55px !important}.wf-flag-ee{background-position:-112px -55px !important}.wf-flag-eg{background-position:-128px -55px !important}.wf-flag-eh{background-position:-144px -55px !important}.wf-flag-england{background-position:-160px -55px !important}.wf-flag-er{background-position:-176px -55px !important}.wf-flag-es{background-position:-0px -66px !important}.wf-flag-et{background-position:-16px -66px !important}.wf-flag-eu{background-position:-32px -66px !important}.wf-flag-fam{background-position:-48px -66px !important}.wf-flag-fi{background-position:-64px -66px !important}.wf-flag-fj{background-position:-80px -66px !important}.wf-flag-fk{background-position:-96px -66px !important}.wf-flag-fm{background-position:-112px -66px !important}.wf-flag-fo{background-position:-128px -66px !important}.wf-flag-fr{background-position:-144px -66px !important}.wf-flag-ga{background-position:-160px -66px !important}.wf-flag-gb{background-position:-176px -66px !important}.wf-flag-gd{background-position:-0px -77px !important}.wf-flag-ge{background-position:-16px -77px !important}.wf-flag-gf{background-position:-32px -77px !important}.wf-flag-gg{background-position:-48px -77px !important}.wf-flag-gh{background-position:-64px -77px !important}.wf-flag-gi{background-position:-80px -77px !important}.wf-flag-gl{background-position:-96px -77px !important}.wf-flag-gm{background-position:-112px -77px !important}.wf-flag-gn{background-position:-128px -77px !important}.wf-flag-gp{background-position:-144px -77px !important}.wf-flag-gq{background-position:-160px -77px !important}.wf-flag-gr{background-position:-176px -77px !important}.wf-flag-gs{background-position:-0px -88px !important}.wf-flag-gt{background-position:-16px -88px !important}.wf-flag-gu{background-position:-32px -88px !important}.wf-flag-gw{background-position:-48px -88px !important}.wf-flag-gy{background-position:-64px -88px !important}.wf-flag-hk{background-position:-80px -88px !important}.wf-flag-hm{background-position:-96px -88px !important}.wf-flag-hn{background-position:-112px -88px !important}.wf-flag-hr{background-position:-128px -88px !important}.wf-flag-ht{background-position:-144px -88px !important}.wf-flag-hu{background-position:-160px -88px !important}.wf-flag-id{background-position:-176px -88px !important}.wf-flag-ie{background-position:-0px -99px !important}.wf-flag-il{background-position:-16px -99px !important}.wf-flag-im{background-position:-32px -99px !important}.wf-flag-in{background-position:-48px -99px !important}.wf-flag-io{background-position:-64px -99px !important}.wf-flag-iq{background-position:-80px -99px !important}.wf-flag-ir{background-position:-96px -99px !important}.wf-flag-is{background-position:-112px -99px !important}.wf-flag-it{background-position:-128px -99px !important}.wf-flag-je{background-position:-144px -99px !important}.wf-flag-jm{background-position:-160px -99px !important}.wf-flag-jo{background-position:-176px -99px !important}.wf-flag-jp{background-position:-0px -110px !important}.wf-flag-ke{background-position:-16px -110px !important}.wf-flag-kg{background-position:-32px -110px !important}.wf-flag-kh{background-position:-48px -110px !important}.wf-flag-ki{background-position:-64px -110px !important}.wf-flag-km{background-position:-80px -110px !important}.wf-flag-kn{background-position:-96px -110px !important}.wf-flag-kp{background-position:-112px -110px !important}.wf-flag-kr{background-position:-128px -110px !important}.wf-flag-kw{background-position:-144px -110px !important}.wf-flag-ky{background-position:-160px -110px !important}.wf-flag-kz{background-position:-176px -110px !important}.wf-flag-la{background-position:-0px -121px !important}.wf-flag-lb{background-position:-16px -121px !important}.wf-flag-lc{background-position:-32px -121px !important}.wf-flag-li{background-position:-48px -121px !important}.wf-flag-lk{background-position:-64px -121px !important}.wf-flag-lr{background-position:-80px -121px !important}.wf-flag-ls{background-position:-96px -121px !important}.wf-flag-lt{background-position:-112px -121px !important}.wf-flag-lu{background-position:-128px -121px !important}.wf-flag-lv{background-position:-144px -121px !important}.wf-flag-ly{background-position:-160px -121px !important}.wf-flag-ma{background-position:-176px -121px !important}.wf-flag-mc{background-position:-0px -132px !important}.wf-flag-md{background-position:-16px -132px !important}.wf-flag-me{background-position:-32px -132px !important}.wf-flag-mf{background-position:-48px -132px !important}.wf-flag-mg{background-position:-64px -132px !important}.wf-flag-mh{background-position:-80px -132px !important}.wf-flag-mk{background-position:-96px -132px !important}.wf-flag-ml{background-position:-112px -132px !important}.wf-flag-mm{background-position:-128px -132px !important}.wf-flag-mn{background-position:-144px -132px !important}.wf-flag-mo{background-position:-160px -132px !important}.wf-flag-mp{background-position:-176px -132px !important}.wf-flag-mq{background-position:-0px -143px !important}.wf-flag-mr{background-position:-16px -143px !important}.wf-flag-ms{background-position:-32px -143px !important}.wf-flag-mt{background-position:-48px -143px !important}.wf-flag-mu{background-position:-64px -143px !important}.wf-flag-mv{background-position:-80px -143px !important}.wf-flag-mw{background-position:-96px -143px !important}.wf-flag-mx{background-position:-112px -143px !important}.wf-flag-my{background-position:-128px -143px !important}.wf-flag-mz{background-position:-144px -143px !important}.wf-flag-na{background-position:-160px -143px !important}.wf-flag-nc{background-position:-176px -143px !important}.wf-flag-ne{background-position:-0px -154px !important}.wf-flag-nf{background-position:-16px -154px !important}.wf-flag-ng{background-position:-32px -154px !important}.wf-flag-ni{background-position:-48px -154px !important}.wf-flag-nl{background-position:-64px -154px !important}.wf-flag-no{background-position:-80px -154px !important}.wf-flag-np{background-position:-96px -154px !important}.wf-flag-nr{background-position:-112px -154px !important}.wf-flag-nu{background-position:-128px -154px !important}.wf-flag-nz{background-position:-144px -154px !important}.wf-flag-om{background-position:-160px -154px !important}.wf-flag-pa{background-position:-176px -154px !important}.wf-flag-pe{background-position:-0px -165px !important}.wf-flag-pf{background-position:-16px -165px !important}.wf-flag-pg{background-position:-32px -165px !important}.wf-flag-ph{background-position:-48px -165px !important}.wf-flag-pk{background-position:-64px -165px !important}.wf-flag-pl{background-position:-80px -165px !important}.wf-flag-pm{background-position:-96px -165px !important}.wf-flag-pn{background-position:-112px -165px !important}.wf-flag-pr{background-position:-128px -165px !important}.wf-flag-ps{background-position:-144px -165px !important}.wf-flag-pt{background-position:-160px -165px !important}.wf-flag-pw{background-position:-176px -165px !important}.wf-flag-py{background-position:-0px -176px !important}.wf-flag-qa{background-position:-16px -176px !important}.wf-flag-re{background-position:-32px -176px !important}.wf-flag-ro{background-position:-48px -176px !important}.wf-flag-rs{background-position:-64px -176px !important}.wf-flag-ru{background-position:-80px -176px !important}.wf-flag-rw{background-position:-96px -176px !important}.wf-flag-sa{background-position:-112px -176px !important}.wf-flag-sb{background-position:-128px -176px !important}.wf-flag-sc{background-position:-144px -176px !important}.wf-flag-scotland{background-position:-160px -176px !important}.wf-flag-sd{background-position:-176px -176px !important}.wf-flag-se{background-position:-0px -187px !important}.wf-flag-sg{background-position:-16px -187px !important}.wf-flag-sh{background-position:-32px -187px !important}.wf-flag-si{background-position:-48px -187px !important}.wf-flag-sj{background-position:-64px -187px !important}.wf-flag-sk{background-position:-80px -187px !important}.wf-flag-sl{background-position:-96px -187px !important}.wf-flag-sm{background-position:-112px -187px !important}.wf-flag-sn{background-position:-128px -187px !important}.wf-flag-so{background-position:-144px -187px !important}.wf-flag-sr{background-position:-160px -187px !important}.wf-flag-ss{background-position:-176px -187px !important}.wf-flag-st{background-position:-0px -198px !important}.wf-flag-sv{background-position:-16px -198px !important}.wf-flag-sx{background-position:-32px -198px !important}.wf-flag-sy{background-position:-48px -198px !important}.wf-flag-sz{background-position:-64px -198px !important}.wf-flag-tc{background-position:-80px -198px !important}.wf-flag-td{background-position:-96px -198px !important}.wf-flag-tf{background-position:-112px -198px !important}.wf-flag-tg{background-position:-128px -198px !important}.wf-flag-th{background-position:-144px -198px !important}.wf-flag-tj{background-position:-160px -198px !important}.wf-flag-tk{background-position:-176px -198px !important}.wf-flag-tl{background-position:-0px -209px !important}.wf-flag-tm{background-position:-16px -209px !important}.wf-flag-tn{background-position:-32px -209px !important}.wf-flag-to{background-position:-48px -209px !important}.wf-flag-tr{background-position:-64px -209px !important}.wf-flag-tt{background-position:-80px -209px !important}.wf-flag-tv{background-position:-96px -209px !important}.wf-flag-tw{background-position:-112px -209px !important}.wf-flag-tz{background-position:-128px -209px !important}.wf-flag-ua{background-position:-144px -209px !important}.wf-flag-ug{background-position:-160px -209px !important}.wf-flag-uk{background-position:-176px -209px !important}.wf-flag-um{background-position:-0px -220px !important}.wf-flag-un{background-position:-16px -220px !important}.wf-flag-us{background-position:-32px -220px !important}.wf-flag-uy{background-position:-48px -220px !important}.wf-flag-uz{background-position:-64px -220px !important}.wf-flag-va{background-position:-80px -220px !important}.wf-flag-vc{background-position:-96px -220px !important}.wf-flag-ve{background-position:-112px -220px !important}.wf-flag-vg{background-position:-128px -220px !important}.wf-flag-vi{background-position:-144px -220px !important}.wf-flag-vn{background-position:-160px -220px !important}.wf-flag-vu{background-position:-176px -220px !important}.wf-flag-wales{background-position:-0px -231px !important}.wf-flag-wf{background-position:-16px -231px !important}.wf-flag-ws{background-position:-32px -231px !important}.wf-flag-xk{background-position:-48px -231px !important}.wf-flag-ye{background-position:-64px -231px !important}.wf-flag-yt{background-position:-80px -231px !important}.wf-flag-za{background-position:-96px -231px !important}.wf-flag-zm{background-position:-112px -231px !important}.wf-flag-zw{background-position:-128px -231px !important}#wf-central-progress li{display:-webkit-flex;display:flex;-webkit-align-items:flex-start;align-items:flex-start;padding:8px 1.5rem}#wf-central-progress li .wf-central-progress-icon{display:-webkit-flex;display:flex;-webkit-flex-grow:0;flex-grow:0}#wf-central-progress li .wf-central-progress-content{display:-webkit-flex;display:flex;-webkit-flex-grow:1;flex-grow:1;margin:3px 20px 0px}#wf-central-progress li .wf-step-pending,#wf-central-progress li .wf-step-running,#wf-central-progress li .wf-step-complete-success,#wf-central-progress li .wf-step-complete-warning{display:none}#wf-central-progress li.pending{filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=40);opacity:.4}#wf-central-progress li.pending .wf-step-pending{display:block}#wf-central-progress li.running .wf-step-running{display:block}#wf-central-progress li.complete-success .wf-step-complete-success{display:block}#wf-central-progress li.complete-warning .wf-step-complete-warning{display:block}.wf-central-connected .wf-flex-row{align-items:stretch}.wf-central-connected .wf-flex-row .wf-flex-row-1{width:50%}.wf-central-connected .wf-flex-row .wf-flex-row-1:first-child{margin-right:5px}.wf-central-connected .wf-flex-row .wf-flex-row-1:last-child{margin-left:5px}@media (max-width: 768px){.wf-central-connected .wf-flex-row{-webkit-flex-direction:column !important;flex-direction:column !important}.wf-central-connected .wf-flex-row .wf-flex-row-1{width:100%;margin:0 0 10px !important}}#wf-extended-protection-notice{display:inline-block;line-height:1.4;padding:11px 15px;font-size:14px;text-align:left;margin:25px 20px 0 2px;background-color:#fff;border-left:4px solid #ffba00;box-shadow:0 1px 1px 0 rgba(0,0,0,0.1)}
css/{phpinfo.1603293147.css → phpinfo.1607007971.css} RENAMED
File without changes
css/{wf-adminbar.1603293147.css → wf-adminbar.1607007971.css} RENAMED
File without changes
css/{wf-colorbox.1603293147.css → wf-colorbox.1607007971.css} RENAMED
File without changes
css/{wf-font-awesome.1603293147.css → wf-font-awesome.1607007971.css} RENAMED
File without changes
css/{wf-global.1603293147.css → wf-global.1607007971.css} RENAMED
File without changes
css/{wf-ionicons.1603293147.css → wf-ionicons.1607007971.css} RENAMED
File without changes
css/{wf-onboarding.1603293147.css → wf-onboarding.1607007971.css} RENAMED
File without changes
css/{wf-roboto-font.1603293147.css → wf-roboto-font.1607007971.css} RENAMED
File without changes
css/{wfselect2.min.1603293147.css → wfselect2.min.1607007971.css} RENAMED
File without changes
css/{wordfenceBox.1603293147.css → wordfenceBox.1607007971.css} RENAMED
File without changes
js/{Chart.bundle.min.1603293147.js → Chart.bundle.min.1607007971.js} RENAMED
File without changes
js/{admin.1603293147.js → admin.1607007971.js} RENAMED
@@ -599,7 +599,7 @@
599
  .off('click.wfselect2-copy')
600
  .on('click.wfselect2-copy', function(e) {
601
  var opt = $(this).data('wfselect2-opt');
602
- opt.attr('selected', false);
603
  opt.parents('select').trigger('change');
604
  }).data('wfselect2-opt', $(value));
605
  list.append(li);
@@ -2008,7 +2008,7 @@
2008
  }
2009
  WFAD.colorboxModalHTML((WFAD.isSmallScreen ? '300px' : '400px'), "Download Backup File", 'Please make a backup of this file before proceeding. If you need to restore this backup file, you can copy it to the following path from your site\'s root:<p class="wf-padding-add-top-medium"><code>' + file + '</code></p>'
2010
  + '<a href="' + WFAD.makeDownloadFileLink(file) + '" onclick="jQuery(\'#wfRepairFileNextBtn\').prop(\'disabled\', false); return true;">Click here to download a backup copy of this file now</a><p class="wf-flex-horizontal">' +
2011
- '<input type="button" class="wf-btn wf-btn-primary" name="but1" id="wfRepairFileNextBtn" value="Repair File" disabled="disabled" onclick="WFAD.promptToRepairFileDone(' + parseInt(issueID, 10) + ', jQuery(\'#forceRepairFileCheckbox\').attr(\'checked\'));this.disabled=true;" />' +
2012
  '<label class="wf-padding-add-left"><input type="checkbox" id="forceRepairFileCheckbox" onclick="jQuery(\'#wfRepairFileNextBtn\').prop(\'disabled\', !this.checked); return true;"> Don\'t ask again</label>' +
2013
  '</p>' +
2014
  '<div class="wordfenceHelpLink"><a href="' + WordfenceAdminVars.supportURLs['scan-result-repair-modified-files'] + '" target="_blank" rel="noopener noreferrer" class="wfhelp"></a><a href="' + WordfenceAdminVars.supportURLs['scan-result-repair-modified-files'] + '" target="_blank" rel="noopener noreferrer">Learn more about repairing modified files.</a></div>'
599
  .off('click.wfselect2-copy')
600
  .on('click.wfselect2-copy', function(e) {
601
  var opt = $(this).data('wfselect2-opt');
602
+ opt.prop('selected', false);
603
  opt.parents('select').trigger('change');
604
  }).data('wfselect2-opt', $(value));
605
  list.append(li);
2008
  }
2009
  WFAD.colorboxModalHTML((WFAD.isSmallScreen ? '300px' : '400px'), "Download Backup File", 'Please make a backup of this file before proceeding. If you need to restore this backup file, you can copy it to the following path from your site\'s root:<p class="wf-padding-add-top-medium"><code>' + file + '</code></p>'
2010
  + '<a href="' + WFAD.makeDownloadFileLink(file) + '" onclick="jQuery(\'#wfRepairFileNextBtn\').prop(\'disabled\', false); return true;">Click here to download a backup copy of this file now</a><p class="wf-flex-horizontal">' +
2011
+ '<input type="button" class="wf-btn wf-btn-primary" name="but1" id="wfRepairFileNextBtn" value="Repair File" disabled="disabled" onclick="WFAD.promptToRepairFileDone(' + parseInt(issueID, 10) + ', jQuery(\'#forceRepairFileCheckbox\').prop(\'checked\'));this.disabled=true;" />' +
2012
  '<label class="wf-padding-add-left"><input type="checkbox" id="forceRepairFileCheckbox" onclick="jQuery(\'#wfRepairFileNextBtn\').prop(\'disabled\', !this.checked); return true;"> Don\'t ask again</label>' +
2013
  '</p>' +
2014
  '<div class="wordfenceHelpLink"><a href="' + WordfenceAdminVars.supportURLs['scan-result-repair-modified-files'] + '" target="_blank" rel="noopener noreferrer" class="wfhelp"></a><a href="' + WordfenceAdminVars.supportURLs['scan-result-repair-modified-files'] + '" target="_blank" rel="noopener noreferrer">Learn more about repairing modified files.</a></div>'
js/{admin.ajaxWatcher.1603293147.js → admin.ajaxWatcher.1607007971.js} RENAMED
@@ -39,7 +39,7 @@
39
  $.wordfenceBox({
40
  closeButton: false,
41
  width: '400px',
42
- html: "<h3>Background Request Blocked</h3><p>Wordfence Firewall blocked a background request to WordPress for the URL <code>" + requestURLEscaped + "</code>. If this occurred as a result of an intentional action, you may consider whitelisting the request to allow it in the future.</p><p class=\"wf-right\"><a href=\"https://www.wordfence.com/help/?query=ajax-blocked\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"wfboxhelp\"></a><a href=\"#\" class=\"button\" id=\"background-block-whitelist\">Whitelist this action</a> <a href=\"#\" class=\"button\" id=\"background-block-dismiss\">Dismiss</a></p>",
43
  onComplete: function() {
44
  $('#background-block-dismiss').click(function(event) {
45
  event.preventDefault();
@@ -51,18 +51,18 @@
51
  event.preventDefault();
52
  event.stopPropagation();
53
 
54
- if (confirm('Are you sure you want to whitelist this action?')) {
55
  $.ajax({
56
  method: 'POST',
57
  url: formAction,
58
  data: queryParams,
59
  global: false,
60
  success: function() {
61
- alert('The request has been whitelisted. Please try it again.');
62
  $.wordfenceBox.close();
63
  },
64
  error: function() {
65
- alert('An error occurred when adding the request to the whitelist.');
66
  $.wordfenceBox.close();
67
  }
68
  });
39
  $.wordfenceBox({
40
  closeButton: false,
41
  width: '400px',
42
+ html: "<h3>Background Request Blocked</h3><p>Wordfence Firewall blocked a background request to WordPress for the URL <code>" + requestURLEscaped + "</code>. If this occurred as a result of an intentional action, you may consider allowlisting the request to allow it in the future.</p><p class=\"wf-right\"><a href=\"https://www.wordfence.com/help/?query=ajax-blocked\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"wfboxhelp\"></a><a href=\"#\" class=\"button\" id=\"background-block-whitelist\">Add action to allowlist</a> <a href=\"#\" class=\"button\" id=\"background-block-dismiss\">Dismiss</a></p>",
43
  onComplete: function() {
44
  $('#background-block-dismiss').click(function(event) {
45
  event.preventDefault();
51
  event.preventDefault();
52
  event.stopPropagation();
53
 
54
+ if (confirm('Are you sure you want to allowlist this action?')) {
55
  $.ajax({
56
  method: 'POST',
57
  url: formAction,
58
  data: queryParams,
59
  global: false,
60
  success: function() {
61
+ alert('The request has been allowlisted. Please try it again.');
62
  $.wordfenceBox.close();
63
  },
64
  error: function() {
65
+ alert('An error occurred when adding the request to the allowlist.');
66
  $.wordfenceBox.close();
67
  }
68
  });
js/{admin.liveTraffic.1603293147.js → admin.liveTraffic.1607007971.js} RENAMED
@@ -452,7 +452,7 @@
452
  return 'blocked by firewall for ' + desc;
453
  }
454
  if (data.failedRules == 'blocked') {
455
- return 'blocked by real-time IP blacklist';
456
  }
457
  return 'blocked by firewall';
458
  }
452
  return 'blocked by firewall for ' + desc;
453
  }
454
  if (data.failedRules == 'blocked') {
455
+ return 'blocked by real-time IP blocklist';
456
  }
457
  return 'blocked by firewall';
458
  }
js/{date.1603293147.js → date.1607007971.js} RENAMED
File without changes
js/{jquery-ui-timepicker-addon.1603293147.js → jquery-ui-timepicker-addon.1607007971.js} RENAMED
File without changes
js/{jquery.colorbox-min.1603293147.js → jquery.colorbox-min.1607007971.js} RENAMED
File without changes
js/{jquery.colorbox.1603293147.js → jquery.colorbox.1607007971.js} RENAMED
File without changes
js/{jquery.dataTables.min.1603293147.js → jquery.dataTables.min.1607007971.js} RENAMED
File without changes
js/{jquery.qrcode.min.1603293147.js → jquery.qrcode.min.1607007971.js} RENAMED
File without changes
js/{jquery.tmpl.min.1603293147.js → jquery.tmpl.min.1607007971.js} RENAMED
File without changes
js/{jquery.tools.min.1603293147.js → jquery.tools.min.1607007971.js} RENAMED
File without changes
js/{knockout-3.3.0.1603293147.js → knockout-3.3.0.1607007971.js} RENAMED
File without changes
js/{wfdashboard.1603293147.js → wfdashboard.1607007971.js} RENAMED
File without changes
js/{wfdropdown.1603293147.js → wfdropdown.1607007971.js} RENAMED
File without changes
js/{wfglobal.1603293147.js → wfglobal.1607007971.js} RENAMED
File without changes
js/{wfpopover.1603293147.js → wfpopover.1607007971.js} RENAMED
File without changes
js/{wfselect2.min.1603293147.js → wfselect2.min.1607007971.js} RENAMED
File without changes
languages/wordfence.po CHANGED
@@ -78,7 +78,7 @@ msgid "If you think you have been blocked in error, contact the owner of this si
78
  msgstr ""
79
 
80
  #: 403-roadblock.php:366
81
- msgid "If you are an administrator and you are certain this is a false positive, you can automatically whitelist this request and repeat the same action."
82
  msgstr ""
83
 
84
  #: 403-roadblock.php:373
@@ -86,7 +86,7 @@ msgid "I am certain this is a false positive."
86
  msgstr ""
87
 
88
  #: 403-roadblock.php:375
89
- msgid "Whitelist This Action"
90
  msgstr ""
91
 
92
  #: 403-roadblock.php:378
@@ -94,7 +94,7 @@ msgid "All set! You can refresh the page to try this action again."
94
  msgstr ""
95
 
96
  #: 403-roadblock.php:379
97
- msgid "Something went wrong whitelisting this request. You can try setting the Firewall Status to Learning Mode under Web App Firewall in the Wordfence menu, and retry this same action."
98
  msgstr ""
99
 
100
  #: 403-roadblock.php:417
@@ -376,7 +376,7 @@ msgstr ""
376
  msgid ""
377
  "NOTE: You are using the free version of Wordfence. Upgrade today:\n"
378
  " - Receive real-time Firewall and Scan engine rule updates for protection as threats emerge\n"
379
- " - Real-time IP Blacklist blocks the most malicious IPs from accessing your site\n"
380
  " - Country blocking\n"
381
  " - IP reputation monitoring\n"
382
  " - Schedule scans to run more frequently and at optimal times\n"
@@ -560,7 +560,7 @@ msgid "Receive real-time Firewall and Scan engine rule updates for protection as
560
  msgstr ""
561
 
562
  #: lib/email_newIssues.php:121
563
- msgid "Real-time IP Blacklist blocks the most malicious IPs from accessing your site"
564
  msgstr ""
565
 
566
  #: lib/email_newIssues.php:122
@@ -1217,7 +1217,7 @@ msgstr ""
1217
 
1218
  #: lib/menu_firewall_waf.php:69
1219
  #: lib/menu_firewall_waf_options.php:175
1220
- msgid "Real-Time IP Blacklist: "
1221
  msgstr ""
1222
 
1223
  #: lib/menu_firewall_waf.php:69
@@ -1261,7 +1261,7 @@ msgid "Blocks requests from known malicious IPs"
1261
  msgstr ""
1262
 
1263
  #: lib/menu_firewall_waf.php:72
1264
- msgid "Manage Real-Time IP Blacklist"
1265
  msgstr ""
1266
 
1267
  #: lib/menu_firewall_waf.php:72
@@ -1271,7 +1271,7 @@ msgstr ""
1271
 
1272
  #: lib/menu_firewall_waf.php:74
1273
  #: lib/menu_firewall_waf_options.php:180
1274
- msgid "Blacklist Status"
1275
  msgstr ""
1276
 
1277
  #: lib/menu_firewall_waf.php:102
@@ -1355,11 +1355,11 @@ msgid "Set up the way you want the firewall to protect your site including the w
1355
  msgstr ""
1356
 
1357
  #: lib/menu_firewall_waf.php:349
1358
- msgid "All of the Firewall settings are now located here. This includes configuration options for the web application firewall, brute force protection, rate limiting, whitelisted URLs, and blocking."
1359
  msgstr ""
1360
 
1361
  #: lib/menu_firewall_waf_options.php:80
1362
- msgid "Are you sure you want to restore the default Firewall settings? This will undo any custom changes you have made to the options on this page. If you have manually disabled any rules or added any custom whitelisted URLs, those changes will not be overwritten."
1363
  msgstr ""
1364
 
1365
  #: lib/menu_options.php:24
@@ -1546,7 +1546,7 @@ msgstr ""
1546
 
1547
  #: lib/menu_options.php:106
1548
  #: views/waf/options-group-basic-firewall.php:464
1549
- msgid "Real-Time IP Blacklist"
1550
  msgstr ""
1551
 
1552
  #: lib/menu_options.php:107
@@ -1556,12 +1556,12 @@ msgstr ""
1556
 
1557
  #: lib/menu_options.php:108
1558
  #: views/waf/options-group-advanced-firewall.php:52
1559
- msgid "Whitelisted IP addresses that bypass all rules"
1560
  msgstr ""
1561
 
1562
  #: lib/menu_options.php:109
1563
  #: views/waf/options-group-advanced-firewall.php:88
1564
- msgid "Whitelisted services"
1565
  msgstr ""
1566
 
1567
  #: lib/menu_options.php:110
@@ -1698,11 +1698,11 @@ msgstr ""
1698
 
1699
  #: lib/menu_options.php:137
1700
  #: views/waf/options-group-rate-limiting.php:194
1701
- msgid "Whitelisted 404 URLs"
1702
  msgstr ""
1703
 
1704
  #: lib/menu_options.php:138
1705
- msgid "Web Application Firewall Whitelisted URLs"
1706
  msgstr ""
1707
 
1708
  #: lib/menu_options.php:139
@@ -1745,7 +1745,7 @@ msgstr ""
1745
 
1746
  #: lib/menu_options.php:148
1747
  #: views/scanner/options-group-general.php:32
1748
- msgid "Check if this website is on a domain blacklist"
1749
  msgstr ""
1750
 
1751
  #: lib/menu_options.php:149
@@ -1941,7 +1941,7 @@ msgid "Enable Separate Prompt for Two Factor Code"
1941
  msgstr ""
1942
 
1943
  #: lib/menu_options.php:200
1944
- msgid "Are you sure you want to restore the default settings? This will undo any custom changes you have made to the options on this page. If you have manually disabled any rules or added any custom whitelisted URLs, those changes will not be overwritten."
1945
  msgstr ""
1946
 
1947
  #: lib/menu_options.php:267
@@ -2013,7 +2013,7 @@ msgstr ""
2013
 
2014
  #: lib/menu_scanner.php:98
2015
  #: lib/menu_scanner_options.php:152
2016
- msgid "Check spam &amp; spamvertising blacklists"
2017
  msgstr ""
2018
 
2019
  #: lib/menu_scanner.php:100
@@ -2779,7 +2779,7 @@ msgstr ""
2779
 
2780
  #: lib/menu_tools_diagnostic.php:311
2781
  #: views/diagnostics/text.php:170
2782
- msgid "Whitelisted hosts"
2783
  msgstr ""
2784
 
2785
  #: lib/menu_tools_diagnostic.php:312
@@ -4812,7 +4812,7 @@ msgid "\"%s\" is not a valid regular expression."
4812
  msgstr ""
4813
 
4814
  #: lib/wfConfig.php:1204
4815
- msgid "Please make sure you separate your IP addresses with commas. The following whitelisted IP addresses are invalid: "
4816
  msgstr ""
4817
 
4818
  #: lib/wfConfig.php:1223
@@ -4857,7 +4857,7 @@ msgid "Brute Force"
4857
  msgstr ""
4858
 
4859
  #: lib/wfDashboard.php:194
4860
- msgid "Blacklist"
4861
  msgstr ""
4862
 
4863
  #: lib/wfDiagnostic.php:58
@@ -6264,7 +6264,7 @@ msgid "This file contains a URL that is a suspected phishing site that is curren
6264
  msgstr ""
6265
 
6266
  #: lib/wordfenceScanner.php:564
6267
- msgid "This file contains a URL that is currently listed on Wordfence's domain blacklist. The URL is: "
6268
  msgstr ""
6269
 
6270
  #: lib/wordfenceScanner.php:580
@@ -6312,7 +6312,7 @@ msgid "Invalid IP address."
6312
  msgstr ""
6313
 
6314
  #: models/block/wfBlock.php:180
6315
- msgid "This IP address is in a range of addresses that Wordfence does not block. The IP range may be internal or belong to a service that is always allowed. Whitelisting of external services can be disabled. <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">Learn More</a>"
6316
  msgstr ""
6317
 
6318
  #: models/block/wfBlock.php:183
@@ -6392,7 +6392,7 @@ msgstr ""
6392
 
6393
  #: models/firewall/wfFirewall.php:461
6394
  #: models/firewall/wfFirewall.php:470
6395
- msgid "Enable Real-Time IP Blacklist."
6396
  msgstr ""
6397
 
6398
  #: models/firewall/wfFirewall.php:569
@@ -6485,7 +6485,7 @@ msgid "Enable scan option to check if your website IP is generating spam."
6485
  msgstr ""
6486
 
6487
  #: models/scanner/wfScanner.php:822
6488
- msgid "Enable scan option to check if your website is on a domain blacklist."
6489
  msgstr ""
6490
 
6491
  #: models/scanner/wfScanner.php:926
@@ -8257,7 +8257,7 @@ msgid "Spam Check"
8257
  msgstr ""
8258
 
8259
  #: views/scanner/scan-progress.php:32
8260
- msgid "Blacklist Check"
8261
  msgstr ""
8262
 
8263
  #: views/scanner/scan-progress.php:39
@@ -8484,7 +8484,7 @@ msgid "Wordfence Scan Enabled"
8484
  msgstr ""
8485
 
8486
  #: views/scanner/scanner-status.php:54
8487
- msgid "As a free Wordfence user, you are currently using the Community version of the Threat Defense Feed. Premium users are protected by an additional %d firewall rules and malware signatures as well as the Wordfence real-time IP blacklist. Upgrade to Premium today to improve your protection."
8488
  msgstr ""
8489
 
8490
  #: views/scanner/scanner-status.php:60
@@ -8596,11 +8596,11 @@ msgid "We are excited to announce the release of a completely rebuilt two-factor
8596
  msgstr ""
8597
 
8598
  #: views/tours/login-security.php:44
8599
- msgid "Individual Whitelisting"
8600
  msgstr ""
8601
 
8602
  #: views/tours/login-security.php:45
8603
- msgid "Two-factor authentication now has its own IP whitelist. If necessary, you can allow specific IP addresses or ranges to skip 2FA when logging in."
8604
  msgstr ""
8605
 
8606
  #: views/tours/login-security.php:60
@@ -8664,7 +8664,7 @@ msgid "Manually Refresh Rules"
8664
  msgstr ""
8665
 
8666
  #: views/waf/option-whitelist.php:5
8667
- msgid "Add Whitelisted URL/Param"
8668
  msgstr ""
8669
 
8670
  #: views/waf/option-whitelist.php:5
@@ -8700,15 +8700,15 @@ msgid "Add"
8700
  msgstr ""
8701
 
8702
  #: views/waf/option-whitelist.php:53
8703
- msgid "Whitelist Entry Exists"
8704
  msgstr ""
8705
 
8706
  #: views/waf/option-whitelist.php:53
8707
- msgid "A whitelist entry for this URL and parameter already exists."
8708
  msgstr ""
8709
 
8710
  #: views/waf/option-whitelist.php:60
8711
- msgid "Whitelisted via Firewall Options page"
8712
  msgstr ""
8713
 
8714
  #: views/waf/option-whitelist.php:102
@@ -8750,7 +8750,7 @@ msgid "You are currently running the WAF from another WordPress installation. Th
8750
  msgstr ""
8751
 
8752
  #: views/waf/options-group-advanced-firewall.php:54
8753
- msgid "Whitelisted IPs must be separated by commas or placed on separate lines. You can specify ranges using the following formats: 127.0.0.1/24, 127.0.0.[1-100], or 127.0.0.1-127.0.1.100<br/>Wordfence automatically whitelists <a href=\"http://en.wikipedia.org/wiki/Private_network\" target=\"_blank\" rel=\"noopener noreferrer\">private networks</a> because these are not routable on the public Internet."
8754
  msgstr ""
8755
 
8756
  #: views/waf/options-group-advanced-firewall.php:101
@@ -8866,7 +8866,7 @@ msgstr ""
8866
 
8867
  #: views/waf/options-group-basic-firewall.php:466
8868
  #: views/waf/options-group-basic-firewall.php:471
8869
- msgid "This feature blocks all traffic from IPs with a high volume of recent malicious activity using Wordfence's real-time blacklist."
8870
  msgstr ""
8871
 
8872
  #: views/waf/options-group-brute-force.php:39
@@ -8955,7 +8955,7 @@ msgid "These URL patterns will be excluded from the throttling rules used to lim
8955
  msgstr ""
8956
 
8957
  #: views/waf/options-group-whitelisted.php:26
8958
- msgid "Whitelisted URLs"
8959
  msgstr ""
8960
 
8961
  #: views/waf/options-group-whitelisted.php:53
@@ -8989,7 +8989,7 @@ msgid "Toggle row ${idx}"
8989
  msgstr ""
8990
 
8991
  #: views/waf/options-group-whitelisted.php:157
8992
- msgid "No whitelisted URLs currently set."
8993
  msgstr ""
8994
 
8995
  #: views/waf/status-tooltip-learning-mode.php:6
78
  msgstr ""
79
 
80
  #: 403-roadblock.php:366
81
+ msgid "If you are an administrator and you are certain this is a false positive, you can automatically allowlist this request and repeat the same action."
82
  msgstr ""
83
 
84
  #: 403-roadblock.php:373
86
  msgstr ""
87
 
88
  #: 403-roadblock.php:375
89
+ msgid "Allowlist This Action"
90
  msgstr ""
91
 
92
  #: 403-roadblock.php:378
94
  msgstr ""
95
 
96
  #: 403-roadblock.php:379
97
+ msgid "Something went wrong allowlisting this request. You can try setting the Firewall Status to Learning Mode under Web App Firewall in the Wordfence menu, and retry this same action."
98
  msgstr ""
99
 
100
  #: 403-roadblock.php:417
376
  msgid ""
377
  "NOTE: You are using the free version of Wordfence. Upgrade today:\n"
378
  " - Receive real-time Firewall and Scan engine rule updates for protection as threats emerge\n"
379
+ " - Real-time IP Blocklist blocks the most malicious IPs from accessing your site\n"
380
  " - Country blocking\n"
381
  " - IP reputation monitoring\n"
382
  " - Schedule scans to run more frequently and at optimal times\n"
560
  msgstr ""
561
 
562
  #: lib/email_newIssues.php:121
563
+ msgid "Real-time IP Blocklist blocks the most malicious IPs from accessing your site"
564
  msgstr ""
565
 
566
  #: lib/email_newIssues.php:122
1217
 
1218
  #: lib/menu_firewall_waf.php:69
1219
  #: lib/menu_firewall_waf_options.php:175
1220
+ msgid "Real-Time IP Blocklist: "
1221
  msgstr ""
1222
 
1223
  #: lib/menu_firewall_waf.php:69
1261
  msgstr ""
1262
 
1263
  #: lib/menu_firewall_waf.php:72
1264
+ msgid "Manage Real-Time IP Blocklist"
1265
  msgstr ""
1266
 
1267
  #: lib/menu_firewall_waf.php:72
1271
 
1272
  #: lib/menu_firewall_waf.php:74
1273
  #: lib/menu_firewall_waf_options.php:180
1274
+ msgid "Blocklist Status"
1275
  msgstr ""
1276
 
1277
  #: lib/menu_firewall_waf.php:102
1355
  msgstr ""
1356
 
1357
  #: lib/menu_firewall_waf.php:349
1358
+ msgid "All of the Firewall settings are now located here. This includes configuration options for the web application firewall, brute force protection, rate limiting, allowlisted URLs, and blocking."
1359
  msgstr ""
1360
 
1361
  #: lib/menu_firewall_waf_options.php:80
1362
+ msgid "Are you sure you want to restore the default Firewall settings? This will undo any custom changes you have made to the options on this page. If you have manually disabled any rules or added any custom allowlisted URLs, those changes will not be overwritten."
1363
  msgstr ""
1364
 
1365
  #: lib/menu_options.php:24
1546
 
1547
  #: lib/menu_options.php:106
1548
  #: views/waf/options-group-basic-firewall.php:464
1549
+ msgid "Real-Time IP Blocklist"
1550
  msgstr ""
1551
 
1552
  #: lib/menu_options.php:107
1556
 
1557
  #: lib/menu_options.php:108
1558
  #: views/waf/options-group-advanced-firewall.php:52
1559
+ msgid "Allowlisted IP addresses that bypass all rules"
1560
  msgstr ""
1561
 
1562
  #: lib/menu_options.php:109
1563
  #: views/waf/options-group-advanced-firewall.php:88
1564
+ msgid "Allowlisted services"
1565
  msgstr ""
1566
 
1567
  #: lib/menu_options.php:110
1698
 
1699
  #: lib/menu_options.php:137
1700
  #: views/waf/options-group-rate-limiting.php:194
1701
+ msgid "Allowlisted 404 URLs"
1702
  msgstr ""
1703
 
1704
  #: lib/menu_options.php:138
1705
+ msgid "Web Application Firewall Allowlisted URLs"
1706
  msgstr ""
1707
 
1708
  #: lib/menu_options.php:139
1745
 
1746
  #: lib/menu_options.php:148
1747
  #: views/scanner/options-group-general.php:32
1748
+ msgid "Check if this website is on a domain blocklist"
1749
  msgstr ""
1750
 
1751
  #: lib/menu_options.php:149
1941
  msgstr ""
1942
 
1943
  #: lib/menu_options.php:200
1944
+ msgid "Are you sure you want to restore the default settings? This will undo any custom changes you have made to the options on this page. If you have manually disabled any rules or added any custom allowlisted URLs, those changes will not be overwritten."
1945
  msgstr ""
1946
 
1947
  #: lib/menu_options.php:267
2013
 
2014
  #: lib/menu_scanner.php:98
2015
  #: lib/menu_scanner_options.php:152
2016
+ msgid "Check spam &amp; spamvertising blocklists"
2017
  msgstr ""
2018
 
2019
  #: lib/menu_scanner.php:100
2779
 
2780
  #: lib/menu_tools_diagnostic.php:311
2781
  #: views/diagnostics/text.php:170
2782
+ msgid "Allowlisted hosts"
2783
  msgstr ""
2784
 
2785
  #: lib/menu_tools_diagnostic.php:312
4812
  msgstr ""
4813
 
4814
  #: lib/wfConfig.php:1204
4815
+ msgid "Please make sure you separate your IP addresses with commas. The following allowlisted IP addresses are invalid: "
4816
  msgstr ""
4817
 
4818
  #: lib/wfConfig.php:1223
4857
  msgstr ""
4858
 
4859
  #: lib/wfDashboard.php:194
4860
+ msgid "Blocklist"
4861
  msgstr ""
4862
 
4863
  #: lib/wfDiagnostic.php:58
6264
  msgstr ""
6265
 
6266
  #: lib/wordfenceScanner.php:564
6267
+ msgid "This file contains a URL that is currently listed on Wordfence's domain blocklist. The URL is: "
6268
  msgstr ""
6269
 
6270
  #: lib/wordfenceScanner.php:580
6312
  msgstr ""
6313
 
6314
  #: models/block/wfBlock.php:180
6315
+ msgid "This IP address is in a range of addresses that Wordfence does not block. The IP range may be internal or belong to a service that is always allowed. Allowlisting of external services can be disabled. <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">Learn More</a>"
6316
  msgstr ""
6317
 
6318
  #: models/block/wfBlock.php:183
6392
 
6393
  #: models/firewall/wfFirewall.php:461
6394
  #: models/firewall/wfFirewall.php:470
6395
+ msgid "Enable Real-Time IP Blocklist."
6396
  msgstr ""
6397
 
6398
  #: models/firewall/wfFirewall.php:569
6485
  msgstr ""
6486
 
6487
  #: models/scanner/wfScanner.php:822
6488
+ msgid "Enable scan option to check if your website is on a domain blocklist."
6489
  msgstr ""
6490
 
6491
  #: models/scanner/wfScanner.php:926
8257
  msgstr ""
8258
 
8259
  #: views/scanner/scan-progress.php:32
8260
+ msgid "Blocklist Check"
8261
  msgstr ""
8262
 
8263
  #: views/scanner/scan-progress.php:39
8484
  msgstr ""
8485
 
8486
  #: views/scanner/scanner-status.php:54
8487
+ msgid "As a free Wordfence user, you are currently using the Community version of the Threat Defense Feed. Premium users are protected by an additional %d firewall rules and malware signatures as well as the Wordfence real-time IP blocklist. Upgrade to Premium today to improve your protection."
8488
  msgstr ""
8489
 
8490
  #: views/scanner/scanner-status.php:60
8596
  msgstr ""
8597
 
8598
  #: views/tours/login-security.php:44
8599
+ msgid "Individual Allowlisting"
8600
  msgstr ""
8601
 
8602
  #: views/tours/login-security.php:45
8603
+ msgid "Two-factor authentication now has its own IP allowlist. If necessary, you can allow specific IP addresses or ranges to skip 2FA when logging in."
8604
  msgstr ""
8605
 
8606
  #: views/tours/login-security.php:60
8664
  msgstr ""
8665
 
8666
  #: views/waf/option-whitelist.php:5
8667
+ msgid "Add Allowlisted URL/Param"
8668
  msgstr ""
8669
 
8670
  #: views/waf/option-whitelist.php:5
8700
  msgstr ""
8701
 
8702
  #: views/waf/option-whitelist.php:53
8703
+ msgid "Allowlist Entry Exists"
8704
  msgstr ""
8705
 
8706
  #: views/waf/option-whitelist.php:53
8707
+ msgid "A allowlist entry for this URL and parameter already exists."
8708
  msgstr ""
8709
 
8710
  #: views/waf/option-whitelist.php:60
8711
+ msgid "Allowlisted via Firewall Options page"
8712
  msgstr ""
8713
 
8714
  #: views/waf/option-whitelist.php:102
8750
  msgstr ""
8751
 
8752
  #: views/waf/options-group-advanced-firewall.php:54
8753
+ msgid "Allowlisted IPs must be separated by commas or placed on separate lines. You can specify ranges using the following formats: 127.0.0.1/24, 127.0.0.[1-100], or 127.0.0.1-127.0.1.100<br/>Wordfence automatically whitelists <a href=\"http://en.wikipedia.org/wiki/Private_network\" target=\"_blank\" rel=\"noopener noreferrer\">private networks</a> because these are not routable on the public Internet."
8754
  msgstr ""
8755
 
8756
  #: views/waf/options-group-advanced-firewall.php:101
8866
 
8867
  #: views/waf/options-group-basic-firewall.php:466
8868
  #: views/waf/options-group-basic-firewall.php:471
8869
+ msgid "This feature blocks all traffic from IPs with a high volume of recent malicious activity using Wordfence's real-time blocklist."
8870
  msgstr ""
8871
 
8872
  #: views/waf/options-group-brute-force.php:39
8955
  msgstr ""
8956
 
8957
  #: views/waf/options-group-whitelisted.php:26
8958
+ msgid "Allowlisted URLs"
8959
  msgstr ""
8960
 
8961
  #: views/waf/options-group-whitelisted.php:53
8989
  msgstr ""
8990
 
8991
  #: views/waf/options-group-whitelisted.php:157
8992
+ msgid "No allowlisted URLs currently set."
8993
  msgstr ""
8994
 
8995
  #: views/waf/status-tooltip-learning-mode.php:6
lib/Diff/SequenceMatcher.php CHANGED
@@ -84,7 +84,7 @@ class Diff_SequenceMatcher
84
  * @param string|array $b A string or array containing the lines to compare.
85
  * @param string|array $junkCallback Either an array or string that references a callback function (if there is one) to determine 'junk' characters.
86
  */
87
- public function __construct($a, $b, $junkCallback=null, $options)
88
  {
89
  $this->a = null;
90
  $this->b = null;
84
  * @param string|array $b A string or array containing the lines to compare.
85
  * @param string|array $junkCallback Either an array or string that references a callback function (if there is one) to determine 'junk' characters.
86
  */
87
+ public function __construct($a, $b, $junkCallback=null, $options=array())
88
  {
89
  $this->a = null;
90
  $this->b = null;
lib/email_genericAlert.php CHANGED
@@ -9,7 +9,7 @@
9
  <?php if(! $isPaid){ ?>
10
  <?php _e('NOTE: You are using the free version of Wordfence. Upgrade today:
11
  - Receive real-time Firewall and Scan engine rule updates for protection as threats emerge
12
- - Real-time IP Blacklist blocks the most malicious IPs from accessing your site
13
  - Country blocking
14
  - IP reputation monitoring
15
  - Schedule scans to run more frequently and at optimal times
9
  <?php if(! $isPaid){ ?>
10
  <?php _e('NOTE: You are using the free version of Wordfence. Upgrade today:
11
  - Receive real-time Firewall and Scan engine rule updates for protection as threats emerge
12
+ - Real-time IP Blocklist blocks the most malicious IPs from accessing your site
13
  - Country blocking
14
  - IP reputation monitoring
15
  - Schedule scans to run more frequently and at optimal times
lib/email_newIssues.php CHANGED
@@ -118,7 +118,7 @@ if (count($sentences)) {
118
 
119
  <ul>
120
  <li><?php _e('Receive real-time Firewall and Scan engine rule updates for protection as threats emerge', 'wordfence'); ?></li>
121
- <li><?php _e('Real-time IP Blacklist blocks the most malicious IPs from accessing your site', 'wordfence'); ?></li>
122
  <li><?php _e('Country blocking', 'wordfence'); ?></li>
123
  <li><?php _e('IP reputation monitoring', 'wordfence'); ?></li>
124
  <li><?php _e('Schedule scans to run more frequently and at optimal times', 'wordfence'); ?></li>
118
 
119
  <ul>
120
  <li><?php _e('Receive real-time Firewall and Scan engine rule updates for protection as threats emerge', 'wordfence'); ?></li>
121
+ <li><?php _e('Real-time IP Blocklist blocks the most malicious IPs from accessing your site', 'wordfence'); ?></li>
122
  <li><?php _e('Country blocking', 'wordfence'); ?></li>
123
  <li><?php _e('IP reputation monitoring', 'wordfence'); ?></li>
124
  <li><?php _e('Schedule scans to run more frequently and at optimal times', 'wordfence'); ?></li>
lib/menu_firewall_waf.php CHANGED
@@ -66,12 +66,12 @@ $wafRemoveURL = network_admin_url('admin.php?page=WordfenceWAF&subpage=waf_optio
66
  echo wfView::create('common/status-detail', array(
67
  'id' => 'waf-blacklist',
68
  'percentage' => $firewall->blacklistStatus(),
69
- 'title' => __('Real-Time IP Blacklist: ', 'wordfence') . ($firewall->blacklistMode() == wfFirewall::BLACKLIST_MODE_ENABLED ? __('Enabled', 'wordfence') : __('Disabled', 'wordfence')),
70
  'subtitle' => __('Blocks requests from known malicious IPs', 'wordfence'),
71
  'link' => (($firewall->ruleMode() == wfFirewall::RULE_MODE_PREMIUM) ? network_admin_url('admin.php?page=WordfenceWAF&subpage=waf_options') : 'https://www.wordfence.com/gnl1wafUpgrade/wordfence-signup/'),
72
- 'linkLabel' => $firewall->firewallMode() == wfFirewall::FIREWALL_MODE_DISABLED ? null : ($firewall->ruleMode() == wfFirewall::RULE_MODE_PREMIUM ? ($firewall->blacklistMode() == wfFirewall::BLACKLIST_MODE_ENABLED ? __('Manage Real-Time IP Blacklist', 'wordfence') : ($firewall->isSubDirectoryInstallation() ? null : __('Enable', 'wordfence'))) : __('Upgrade to Premium', 'wordfence')),
73
  'linkNewWindow' => ($firewall->ruleMode() != wfFirewall::RULE_MODE_PREMIUM),
74
- 'statusTitle' => __('Blacklist Status', 'wordfence'),
75
  'statusList' => $firewall->wafStatusList('blacklist'),
76
  'helpLink' => __('https://www.wordfence.com/help/firewall/#firewall-status', 'wordfence'),
77
  ))->render();
@@ -346,7 +346,7 @@ $wafRemoveURL = network_admin_url('admin.php?page=WordfenceWAF&subpage=waf_optio
346
  <div>
347
  <h3><?php _e('Firewall Options', 'wordfence'); ?></h3>
348
  <p class="wf-center"><svg viewBox="0 0 100.11 100.11" class="wf-icon"><path d="M99.59,41.42a2.06,2.06,0,0,0-1.37-.82L86.3,38.78a39.34,39.34,0,0,0-2.67-6.39q1.17-1.63,3.52-4.6t3.32-4.33A2.52,2.52,0,0,0,91,22a2.1,2.1,0,0,0-.46-1.43Q88.18,17.2,79.78,9.45a2.52,2.52,0,0,0-1.63-.65,2.12,2.12,0,0,0-1.57.59l-9.25,7a40.09,40.09,0,0,0-5.87-2.41L59.64,2a1.92,1.92,0,0,0-.75-1.4A2.46,2.46,0,0,0,57.29,0H42.82a2.19,2.19,0,0,0-2.34,1.82,106,106,0,0,0-1.89,12.12,37.62,37.62,0,0,0-5.93,2.48l-9-7A2.78,2.78,0,0,0,22,8.8q-1.44,0-6.16,4.66a64.88,64.88,0,0,0-6.42,7A2.75,2.75,0,0,0,8.8,22a2.44,2.44,0,0,0,.65,1.56q4.37,5.28,7,9a32.38,32.38,0,0,0-2.54,6L1.76,40.34a2,2,0,0,0-1.24.85A2.5,2.5,0,0,0,0,42.69V57.16a2.44,2.44,0,0,0,.52,1.53,2,2,0,0,0,1.37.82l11.93,1.76a31.91,31.91,0,0,0,2.67,6.45Q15.31,69.35,13,72.31T9.65,76.65a2.54,2.54,0,0,0-.07,3q2.54,3.52,10.75,11a2.25,2.25,0,0,0,1.63.71,2.35,2.35,0,0,0,1.63-.59l9.19-7a40.54,40.54,0,0,0,5.87,2.41l1.82,12a1.92,1.92,0,0,0,.75,1.4,2.45,2.45,0,0,0,1.6.55H57.29a2.2,2.2,0,0,0,2.35-1.82,107.41,107.41,0,0,0,1.89-12.12,37.19,37.19,0,0,0,5.93-2.48l9,7a3.18,3.18,0,0,0,1.69.59q1.43,0,6.13-4.62a65.86,65.86,0,0,0,6.45-7,2.16,2.16,0,0,0,.59-1.5,2.51,2.51,0,0,0-.65-1.63q-4.69-5.74-7-9a41.57,41.57,0,0,0,2.54-5.93l12.06-1.82a2,2,0,0,0,1.3-.85,2.52,2.52,0,0,0,.52-1.5V43a2.46,2.46,0,0,0-.52-1.53ZM61.85,61.86a16.08,16.08,0,0,1-11.8,4.89A16.69,16.69,0,0,1,33.37,50.06,16.69,16.69,0,0,1,50.06,33.37,16.69,16.69,0,0,1,66.74,50.06a16.08,16.08,0,0,1-4.89,11.8Zm0,0"></path></svg></p>
349
- <p><?php _e('All of the Firewall settings are now located here. This includes configuration options for the web application firewall, brute force protection, rate limiting, whitelisted URLs, and blocking.', 'wordfence'); ?></p>
350
  <div class="wf-pointer-footer">
351
  <ul class="wf-tour-pagination">
352
  <li class="wf-active">&bullet;</li>
66
  echo wfView::create('common/status-detail', array(
67
  'id' => 'waf-blacklist',
68
  'percentage' => $firewall->blacklistStatus(),
69
+ 'title' => __('Real-Time IP Blocklist: ', 'wordfence') . ($firewall->blacklistMode() == wfFirewall::BLACKLIST_MODE_ENABLED ? __('Enabled', 'wordfence') : __('Disabled', 'wordfence')),
70
  'subtitle' => __('Blocks requests from known malicious IPs', 'wordfence'),
71
  'link' => (($firewall->ruleMode() == wfFirewall::RULE_MODE_PREMIUM) ? network_admin_url('admin.php?page=WordfenceWAF&subpage=waf_options') : 'https://www.wordfence.com/gnl1wafUpgrade/wordfence-signup/'),
72
+ 'linkLabel' => $firewall->firewallMode() == wfFirewall::FIREWALL_MODE_DISABLED ? null : ($firewall->ruleMode() == wfFirewall::RULE_MODE_PREMIUM ? ($firewall->blacklistMode() == wfFirewall::BLACKLIST_MODE_ENABLED ? __('Manage Real-Time IP Blocklist', 'wordfence') : ($firewall->isSubDirectoryInstallation() ? null : __('Enable', 'wordfence'))) : __('Upgrade to Premium', 'wordfence')),
73
  'linkNewWindow' => ($firewall->ruleMode() != wfFirewall::RULE_MODE_PREMIUM),
74
+ 'statusTitle' => __('Blocklist Status', 'wordfence'),
75
  'statusList' => $firewall->wafStatusList('blacklist'),
76
  'helpLink' => __('https://www.wordfence.com/help/firewall/#firewall-status', 'wordfence'),
77
  ))->render();
346
  <div>
347
  <h3><?php _e('Firewall Options', 'wordfence'); ?></h3>
348
  <p class="wf-center"><svg viewBox="0 0 100.11 100.11" class="wf-icon"><path d="M99.59,41.42a2.06,2.06,0,0,0-1.37-.82L86.3,38.78a39.34,39.34,0,0,0-2.67-6.39q1.17-1.63,3.52-4.6t3.32-4.33A2.52,2.52,0,0,0,91,22a2.1,2.1,0,0,0-.46-1.43Q88.18,17.2,79.78,9.45a2.52,2.52,0,0,0-1.63-.65,2.12,2.12,0,0,0-1.57.59l-9.25,7a40.09,40.09,0,0,0-5.87-2.41L59.64,2a1.92,1.92,0,0,0-.75-1.4A2.46,2.46,0,0,0,57.29,0H42.82a2.19,2.19,0,0,0-2.34,1.82,106,106,0,0,0-1.89,12.12,37.62,37.62,0,0,0-5.93,2.48l-9-7A2.78,2.78,0,0,0,22,8.8q-1.44,0-6.16,4.66a64.88,64.88,0,0,0-6.42,7A2.75,2.75,0,0,0,8.8,22a2.44,2.44,0,0,0,.65,1.56q4.37,5.28,7,9a32.38,32.38,0,0,0-2.54,6L1.76,40.34a2,2,0,0,0-1.24.85A2.5,2.5,0,0,0,0,42.69V57.16a2.44,2.44,0,0,0,.52,1.53,2,2,0,0,0,1.37.82l11.93,1.76a31.91,31.91,0,0,0,2.67,6.45Q15.31,69.35,13,72.31T9.65,76.65a2.54,2.54,0,0,0-.07,3q2.54,3.52,10.75,11a2.25,2.25,0,0,0,1.63.71,2.35,2.35,0,0,0,1.63-.59l9.19-7a40.54,40.54,0,0,0,5.87,2.41l1.82,12a1.92,1.92,0,0,0,.75,1.4,2.45,2.45,0,0,0,1.6.55H57.29a2.2,2.2,0,0,0,2.35-1.82,107.41,107.41,0,0,0,1.89-12.12,37.19,37.19,0,0,0,5.93-2.48l9,7a3.18,3.18,0,0,0,1.69.59q1.43,0,6.13-4.62a65.86,65.86,0,0,0,6.45-7,2.16,2.16,0,0,0,.59-1.5,2.51,2.51,0,0,0-.65-1.63q-4.69-5.74-7-9a41.57,41.57,0,0,0,2.54-5.93l12.06-1.82a2,2,0,0,0,1.3-.85,2.52,2.52,0,0,0,.52-1.5V43a2.46,2.46,0,0,0-.52-1.53ZM61.85,61.86a16.08,16.08,0,0,1-11.8,4.89A16.69,16.69,0,0,1,33.37,50.06,16.69,16.69,0,0,1,50.06,33.37,16.69,16.69,0,0,1,66.74,50.06a16.08,16.08,0,0,1-4.89,11.8Zm0,0"></path></svg></p>
349
+ <p><?php _e('All of the Firewall settings are now located here. This includes configuration options for the web application firewall, brute force protection, rate limiting, allowlisted URLs, and blocking.', 'wordfence'); ?></p>
350
  <div class="wf-pointer-footer">
351
  <ul class="wf-tour-pagination">
352
  <li class="wf-active">&bullet;</li>
lib/menu_firewall_waf_options.php CHANGED
@@ -77,7 +77,7 @@ if (isset($_GET['source']) && wfPage::isValidPage($_GET['source'])) {
77
  'backLink' => $backPage->url(),
78
  'backLabelHTML' => sprintf(__('<span class="wf-hidden-xs">Back to </span>%s', 'wordfence'), $backPage->label()),
79
  'restoreDefaultsSection' => wfConfig::OPTIONS_TYPE_FIREWALL,
80
- 'restoreDefaultsMessage' => __('Are you sure you want to restore the default Firewall settings? This will undo any custom changes you have made to the options on this page. If you have manually disabled any rules or added any custom whitelisted URLs, those changes will not be overwritten.', 'wordfence'),
81
  ))->render();
82
  ?>
83
  </div>
@@ -172,12 +172,12 @@ else if (wfConfig::get('touppPromptNeeded')) {
172
  echo wfView::create('common/status-detail', array(
173
  'id' => 'waf-blacklist',
174
  'percentage' => $firewall->blacklistStatus(),
175
- 'title' => __('Real-Time IP Blacklist: ', 'wordfence') . ($firewall->blacklistMode() == wfFirewall::BLACKLIST_MODE_ENABLED ? __('Enabled', 'wordfence') : __('Disabled', 'wordfence')),
176
  'subtitle' => __('Blocks requests from known malicious IPs', 'wordfence'),
177
  'link' => (($firewall->ruleMode() == wfFirewall::RULE_MODE_PREMIUM && $firewall->blacklistMode() == wfFirewall::BLACKLIST_MODE_DISABLED) ? network_admin_url('admin.php?page=WordfenceWAF&subpage=waf_options#waf-options-advanced') : 'https://www.wordfence.com/gnl1wafUpgrade/wordfence-signup/'),
178
  'linkLabel' => null,
179
  'linkNewWindow' => !($firewall->ruleMode() == wfFirewall::RULE_MODE_PREMIUM && $firewall->blacklistMode() == wfFirewall::BLACKLIST_MODE_DISABLED),
180
- 'statusTitle' => __('Blacklist Status', 'wordfence'),
181
  'statusList' => $firewall->wafStatusList('blacklist'),
182
  'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_WAF_STATUS_BLACKLIST),
183
  ))->render();
77
  'backLink' => $backPage->url(),
78
  'backLabelHTML' => sprintf(__('<span class="wf-hidden-xs">Back to </span>%s', 'wordfence'), $backPage->label()),
79
  'restoreDefaultsSection' => wfConfig::OPTIONS_TYPE_FIREWALL,
80
+ 'restoreDefaultsMessage' => __('Are you sure you want to restore the default Firewall settings? This will undo any custom changes you have made to the options on this page. If you have manually disabled any rules or added any custom allowlisted URLs, those changes will not be overwritten.', 'wordfence'),
81
  ))->render();
82
  ?>
83
  </div>
172
  echo wfView::create('common/status-detail', array(
173
  'id' => 'waf-blacklist',
174
  'percentage' => $firewall->blacklistStatus(),
175
+ 'title' => __('Real-Time IP Blocklist: ', 'wordfence') . ($firewall->blacklistMode() == wfFirewall::BLACKLIST_MODE_ENABLED ? __('Enabled', 'wordfence') : __('Disabled', 'wordfence')),
176
  'subtitle' => __('Blocks requests from known malicious IPs', 'wordfence'),
177
  'link' => (($firewall->ruleMode() == wfFirewall::RULE_MODE_PREMIUM && $firewall->blacklistMode() == wfFirewall::BLACKLIST_MODE_DISABLED) ? network_admin_url('admin.php?page=WordfenceWAF&subpage=waf_options#waf-options-advanced') : 'https://www.wordfence.com/gnl1wafUpgrade/wordfence-signup/'),
178
  'linkLabel' => null,
179
  'linkNewWindow' => !($firewall->ruleMode() == wfFirewall::RULE_MODE_PREMIUM && $firewall->blacklistMode() == wfFirewall::BLACKLIST_MODE_DISABLED),
180
+ 'statusTitle' => __('Blocklist Status', 'wordfence'),
181
  'statusList' => $firewall->wafStatusList('blacklist'),
182
  'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_WAF_STATUS_BLACKLIST),
183
  ))->render();
lib/menu_options.php CHANGED
@@ -103,10 +103,10 @@ if (isset($_GET['source']) && wfPage::isValidPage($_GET['source'])) {
103
  'wf-option-email-summary-dashboard-widget-enabled' => __('Enable activity report widget on the WordPress dashboard', 'wordfence'),
104
  'wf-option-wafStatus' => __('Web Application Firewall Status', 'wordfence'),
105
  'wf-option-protectionMode' => __('Web Application Firewall Protection Level', 'wordfence'),
106
- 'wf-option-disableWAFBlacklistBlocking' => __('Real-Time IP Blacklist', 'wordfence'),
107
  'wf-option-disableWAFIPBlocking' => __('Delay IP and Country blocking until after WordPress and plugins have loaded (only process firewall rules early)', 'wordfence'),
108
- 'wf-option-whitelisted' => __('Whitelisted IP addresses that bypass all rules', 'wordfence'),
109
- 'wf-option-whitelistedServices' => __('Whitelisted services', 'wordfence'),
110
  'wf-option-bannedURLs' => __('Immediately block IPs that access these URLs', 'wordfence'),
111
  'wf-option-wafAlertWhitelist' => __('Ignored IP addresses for Wordfence Web Application Firewall alerting', 'wordfence'),
112
  'wf-option-wafRules' => __('Web Application Firewall Rules', 'wordfence'),
@@ -122,6 +122,7 @@ if (isset($_GET['source']) && wfPage::isValidPage($_GET['source'])) {
122
  'wf-option-loginSec-maskLoginErrors' => __('Don\'t let WordPress reveal valid users in login errors', 'wordfence'),
123
  'wf-option-loginSec-blockAdminReg' => __('Prevent users registering "admin" username if it doesn\'t exist', 'wordfence'),
124
  'wf-option-loginSec-disableAuthorScan' => __('Prevent discovery of usernames through "/?author=N" scans, the oEmbed API, the WordPress REST API, and WordPress XML Sitemaps', 'wordfence'),
 
125
  'wf-option-other-blockBadPOST' => __('Block IPs who send POST requests with blank User-Agent and Referer', 'wordfence'),
126
  'wf-option-blockCustomText' => __('Custom text shown on block pages', 'wordfence'),
127
  'wf-option-other-pwStrengthOnUpdate' => __('Check password strength on profile update', 'wordfence'),
@@ -134,8 +135,8 @@ if (isset($_GET['source']) && wfPage::isValidPage($_GET['source'])) {
134
  'wf-option-maxRequestsHumans' => __('If a human\'s page views exceed', 'wordfence'),
135
  'wf-option-max404Humans' => __('If a human\'s pages not found (404s) exceed', 'wordfence'),
136
  'wf-option-blockedTime' => __('How long is an IP address blocked when it breaks a rule', 'wordfence'),
137
- 'wf-option-allowed404s' => __('Whitelisted 404 URLs', 'wordfence'),
138
- 'wf-option-wafWhitelist' => __('Web Application Firewall Whitelisted URLs', 'wordfence'),
139
  'wf-option-ajaxWatcherDisabled-front' => __('Monitor background requests from an administrator\'s web browser for false positives (Front-end Website)', 'wordfence'),
140
  'wf-option-ajaxWatcherDisabled-admin' => __('Monitor background requests from an administrator\'s web browser for false positives (Admin Panel)', 'wordfence'),
141
  'wf-option-cbl-action' => __('What to do when we block someone visiting from a blocked country', 'wordfence'),
@@ -145,7 +146,7 @@ if (isset($_GET['source']) && wfPage::isValidPage($_GET['source'])) {
145
  'wf-option-cbl-bypassViewURL' => __('If user who is allowed to access the site views the relative URL ____ then set a cookie that will bypass country blocking in future in case that user hits the site from a blocked country', 'wordfence'),
146
  'wf-option-scheduledScansEnabled' => __('Schedule Wordfence Scans', 'wordfence'),
147
  'wf-option-scanType' => __('Scan Type', 'wordfence'),
148
- 'wf-option-scansEnabled-checkGSB' => __('Check if this website is on a domain blacklist', 'wordfence'),
149
  'wf-option-spamvertizeCheck' => __('Check if this website is being &quot;Spamvertised&quot;', 'wordfence'),
150
  'wf-option-checkSpamIP' => __('Check if this website IP is generating spam', 'wordfence'),
151
  'wf-option-scansEnabled-checkHowGetIPs' => __('Scan for misconfigured How does Wordfence get IPs', 'wordfence'),
@@ -197,7 +198,7 @@ if (isset($_GET['source']) && wfPage::isValidPage($_GET['source'])) {
197
  'showIcon' => false,
198
  'indexOptions' => $indexOptions,
199
  'restoreDefaultsSection' => wfConfig::OPTIONS_TYPE_ALL,
200
- 'restoreDefaultsMessage' => __('Are you sure you want to restore the default settings? This will undo any custom changes you have made to the options on this page. If you have manually disabled any rules or added any custom whitelisted URLs, those changes will not be overwritten.', 'wordfence'),
201
  ))->render();
202
  ?>
203
  </div>
103
  'wf-option-email-summary-dashboard-widget-enabled' => __('Enable activity report widget on the WordPress dashboard', 'wordfence'),
104
  'wf-option-wafStatus' => __('Web Application Firewall Status', 'wordfence'),
105
  'wf-option-protectionMode' => __('Web Application Firewall Protection Level', 'wordfence'),
106
+ 'wf-option-disableWAFBlacklistBlocking' => __('Real-Time IP Blocklist', 'wordfence'),
107
  'wf-option-disableWAFIPBlocking' => __('Delay IP and Country blocking until after WordPress and plugins have loaded (only process firewall rules early)', 'wordfence'),
108
+ 'wf-option-whitelisted' => __('Allowlisted IP addresses that bypass all rules', 'wordfence'),
109
+ 'wf-option-whitelistedServices' => __('Allowlisted services', 'wordfence'),
110
  'wf-option-bannedURLs' => __('Immediately block IPs that access these URLs', 'wordfence'),
111
  'wf-option-wafAlertWhitelist' => __('Ignored IP addresses for Wordfence Web Application Firewall alerting', 'wordfence'),
112
  'wf-option-wafRules' => __('Web Application Firewall Rules', 'wordfence'),
122
  'wf-option-loginSec-maskLoginErrors' => __('Don\'t let WordPress reveal valid users in login errors', 'wordfence'),
123
  'wf-option-loginSec-blockAdminReg' => __('Prevent users registering "admin" username if it doesn\'t exist', 'wordfence'),
124
  'wf-option-loginSec-disableAuthorScan' => __('Prevent discovery of usernames through "/?author=N" scans, the oEmbed API, the WordPress REST API, and WordPress XML Sitemaps', 'wordfence'),
125
+ 'wf-option-loginSec-disableApplicationPasswords' => __('Disable WordPress application passwords', 'wordfence'),
126
  'wf-option-other-blockBadPOST' => __('Block IPs who send POST requests with blank User-Agent and Referer', 'wordfence'),
127
  'wf-option-blockCustomText' => __('Custom text shown on block pages', 'wordfence'),
128
  'wf-option-other-pwStrengthOnUpdate' => __('Check password strength on profile update', 'wordfence'),
135
  'wf-option-maxRequestsHumans' => __('If a human\'s page views exceed', 'wordfence'),
136
  'wf-option-max404Humans' => __('If a human\'s pages not found (404s) exceed', 'wordfence'),
137
  'wf-option-blockedTime' => __('How long is an IP address blocked when it breaks a rule', 'wordfence'),
138
+ 'wf-option-allowed404s' => __('Allowlisted 404 URLs', 'wordfence'),
139
+ 'wf-option-wafWhitelist' => __('Web Application Firewall Allowlisted URLs', 'wordfence'),
140
  'wf-option-ajaxWatcherDisabled-front' => __('Monitor background requests from an administrator\'s web browser for false positives (Front-end Website)', 'wordfence'),
141
  'wf-option-ajaxWatcherDisabled-admin' => __('Monitor background requests from an administrator\'s web browser for false positives (Admin Panel)', 'wordfence'),
142
  'wf-option-cbl-action' => __('What to do when we block someone visiting from a blocked country', 'wordfence'),
146
  'wf-option-cbl-bypassViewURL' => __('If user who is allowed to access the site views the relative URL ____ then set a cookie that will bypass country blocking in future in case that user hits the site from a blocked country', 'wordfence'),
147
  'wf-option-scheduledScansEnabled' => __('Schedule Wordfence Scans', 'wordfence'),
148
  'wf-option-scanType' => __('Scan Type', 'wordfence'),
149
+ 'wf-option-scansEnabled-checkGSB' => __('Check if this website is on a domain blocklist', 'wordfence'),
150
  'wf-option-spamvertizeCheck' => __('Check if this website is being &quot;Spamvertised&quot;', 'wordfence'),
151
  'wf-option-checkSpamIP' => __('Check if this website IP is generating spam', 'wordfence'),
152
  'wf-option-scansEnabled-checkHowGetIPs' => __('Scan for misconfigured How does Wordfence get IPs', 'wordfence'),
198
  'showIcon' => false,
199
  'indexOptions' => $indexOptions,
200
  'restoreDefaultsSection' => wfConfig::OPTIONS_TYPE_ALL,
201
+ 'restoreDefaultsMessage' => __('Are you sure you want to restore the default settings? This will undo any custom changes you have made to the options on this page. If you have manually disabled any rules or added any custom allowlisted URLs, those changes will not be overwritten.', 'wordfence'),
202
  ))->render();
203
  ?>
204
  </div>
lib/menu_scanner.php CHANGED
@@ -95,7 +95,7 @@ else if (wfConfig::get('touppPromptNeeded')) {
95
  'percentage' => $scanner->reputationStatus(),
96
  'activeColor' => (!$scanner->isEnabled() ? '#ececec' : null /* automatic */),
97
  'title' => __('Reputation Checks', 'wordfence'),
98
- 'subtitle' => __('Check spam &amp; spamvertising blacklists', 'wordfence'),
99
  'link' => $optionsURL . '#wf-scanner-options-general',
100
  'linkLabel' => __('Manage Options', 'wordfence'),
101
  'statusTitle' => __('Reputation Check Status', 'wordfence'),
95
  'percentage' => $scanner->reputationStatus(),
96
  'activeColor' => (!$scanner->isEnabled() ? '#ececec' : null /* automatic */),
97
  'title' => __('Reputation Checks', 'wordfence'),
98
+ 'subtitle' => __('Check spam &amp; spamvertising blocklists', 'wordfence'),
99
  'link' => $optionsURL . '#wf-scanner-options-general',
100
  'linkLabel' => __('Manage Options', 'wordfence'),
101
  'statusTitle' => __('Reputation Check Status', 'wordfence'),
lib/menu_scanner_options.php CHANGED
@@ -149,7 +149,7 @@ else if (wfConfig::get('touppPromptNeeded')) {
149
  'percentage' => $scanner->reputationStatus(),
150
  'activeColor' => (!$scanner->isEnabled() ? '#ececec' : null /* automatic */),
151
  'title' => __('Reputation Checks', 'wordfence'),
152
- 'subtitle' => __('Check spam &amp; spamvertising blacklists', 'wordfence'),
153
  'link' => $optionsURL . '#wf-scanner-options-general',
154
  'linkLabel' => null,
155
  'statusTitle' => __('Reputation Check Status', 'wordfence'),
149
  'percentage' => $scanner->reputationStatus(),
150
  'activeColor' => (!$scanner->isEnabled() ? '#ececec' : null /* automatic */),
151
  'title' => __('Reputation Checks', 'wordfence'),
152
+ 'subtitle' => __('Check spam &amp; spamvertising blocklists', 'wordfence'),
153
  'link' => $optionsURL . '#wf-scanner-options-general',
154
  'linkLabel' => null,
155
  'statusTitle' => __('Reputation Check Status', 'wordfence'),
lib/menu_tools_diagnostic.php CHANGED
@@ -308,7 +308,7 @@ if (!isset($sendingDiagnosticEmail)) {
308
  'IMAGE_EDIT_OVERWRITE' => array('description' => __('Overwrite image edits when restoring the original', 'wordfence'), 'value' => (defined('IMAGE_EDIT_OVERWRITE') && IMAGE_EDIT_OVERWRITE ? __('Yes', 'wordfence') : __('No', 'wordfence'))),
309
  'FORCE_SSL_ADMIN' => array('description' => __('Force SSL for administrative logins', 'wordfence'), 'value' => (defined('FORCE_SSL_ADMIN') && FORCE_SSL_ADMIN ? __('Yes', 'wordfence') : __('No', 'wordfence'))),
310
  'WP_HTTP_BLOCK_EXTERNAL' => array('description' => __('Block external URL requests', 'wordfence'), 'value' => (defined('WP_HTTP_BLOCK_EXTERNAL') && WP_HTTP_BLOCK_EXTERNAL ? __('Yes', 'wordfence') : __('No', 'wordfence'))),
311
- 'WP_ACCESSIBLE_HOSTS' => __('Whitelisted hosts', 'wordfence'),
312
  'WP_AUTO_UPDATE_CORE' => array('description' => __('Automatic WP Core updates', 'wordfence'), 'value' => defined('WP_AUTO_UPDATE_CORE') ? (is_bool(WP_AUTO_UPDATE_CORE) ? (WP_AUTO_UPDATE_CORE ? __('Everything', 'wordfence') : __('None', 'wordfence')) : WP_AUTO_UPDATE_CORE) : __('Default', 'wordfence')),
313
  'WP_PROXY_HOST' => array('description' => __('Hostname for a proxy server', 'wordfence'), 'value' => defined('WP_PROXY_HOST') ? WP_PROXY_HOST : __('(not set)', 'wordfence')),
314
  'WP_PROXY_PORT' => array('description' => __('Port for a proxy server', 'wordfence'), 'value' => defined('WP_PROXY_PORT') ? WP_PROXY_PORT : __('(not set)', 'wordfence')),
308
  'IMAGE_EDIT_OVERWRITE' => array('description' => __('Overwrite image edits when restoring the original', 'wordfence'), 'value' => (defined('IMAGE_EDIT_OVERWRITE') && IMAGE_EDIT_OVERWRITE ? __('Yes', 'wordfence') : __('No', 'wordfence'))),
309
  'FORCE_SSL_ADMIN' => array('description' => __('Force SSL for administrative logins', 'wordfence'), 'value' => (defined('FORCE_SSL_ADMIN') && FORCE_SSL_ADMIN ? __('Yes', 'wordfence') : __('No', 'wordfence'))),
310
  'WP_HTTP_BLOCK_EXTERNAL' => array('description' => __('Block external URL requests', 'wordfence'), 'value' => (defined('WP_HTTP_BLOCK_EXTERNAL') && WP_HTTP_BLOCK_EXTERNAL ? __('Yes', 'wordfence') : __('No', 'wordfence'))),
311
+ 'WP_ACCESSIBLE_HOSTS' => __('Allowlisted hosts', 'wordfence'),
312
  'WP_AUTO_UPDATE_CORE' => array('description' => __('Automatic WP Core updates', 'wordfence'), 'value' => defined('WP_AUTO_UPDATE_CORE') ? (is_bool(WP_AUTO_UPDATE_CORE) ? (WP_AUTO_UPDATE_CORE ? __('Everything', 'wordfence') : __('None', 'wordfence')) : WP_AUTO_UPDATE_CORE) : __('Default', 'wordfence')),
313
  'WP_PROXY_HOST' => array('description' => __('Hostname for a proxy server', 'wordfence'), 'value' => defined('WP_PROXY_HOST') ? WP_PROXY_HOST : __('(not set)', 'wordfence')),
314
  'WP_PROXY_PORT' => array('description' => __('Port for a proxy server', 'wordfence'), 'value' => defined('WP_PROXY_PORT') ? WP_PROXY_PORT : __('(not set)', 'wordfence')),
lib/menu_tools_livetraffic.php CHANGED
@@ -462,7 +462,7 @@ if (!wfConfig::liveTrafficEnabled($overridden)):
462
  <a class="wf-btn wf-btn-default wf-btn-sm"
463
  data-bind="click: function () { $root.whitelistWAFParamKey(actionData().path, actionData().paramKey, actionData().failedRules) }"
464
  title="If this is a false positive, you can exclude this parameter from being filtered by the firewall">
465
- Whitelist param from Firewall
466
  </a>
467
  <?php if (WFWAF_DEBUG): ?>
468
  <a class="wf-btn wf-btn-default wf-btn-sm"
462
  <a class="wf-btn wf-btn-default wf-btn-sm"
463
  data-bind="click: function () { $root.whitelistWAFParamKey(actionData().path, actionData().paramKey, actionData().failedRules) }"
464
  title="If this is a false positive, you can exclude this parameter from being filtered by the firewall">
465
+ Add Param to Firewall Allowlist
466
  </a>
467
  <?php if (WFWAF_DEBUG): ?>
468
  <a class="wf-btn wf-btn-default wf-btn-sm"
lib/wfActivityReport.php CHANGED
@@ -581,7 +581,7 @@ SQL
581
  }
582
 
583
  if (isset($actionData['failedRules']) && $actionData['failedRules'] == 'blocked') {
584
- $row->longDescription = "Blocked because the IP is blacklisted";
585
  }
586
  else {
587
  $row->longDescription = "Blocked for " . $row->actionDescription;
581
  }
582
 
583
  if (isset($actionData['failedRules']) && $actionData['failedRules'] == 'blocked') {
584
+ $row->longDescription = "Blocked because the IP is blocklisted";
585
  }
586
  else {
587
  $row->longDescription = "Blocked for " . $row->actionDescription;
lib/wfConfig.php CHANGED
@@ -88,6 +88,7 @@ class wfConfig {
88
  "loginSec_maskLoginErrors" => array('value' => true, 'autoload' => self::AUTOLOAD),
89
  "loginSec_blockAdminReg" => array('value' => true, 'autoload' => self::AUTOLOAD),
90
  "loginSec_disableAuthorScan" => array('value' => true, 'autoload' => self::AUTOLOAD),
 
91
  "loginSec_disableOEmbedAuthor" => array('value' => false, 'autoload' => self::AUTOLOAD),
92
  'loginSec_requireAdminTwoFactor' => array('value' => false, 'autoload' => self::AUTOLOAD),
93
  "notification_updatesNeeded" => array('value' => true, 'autoload' => self::AUTOLOAD),
@@ -1037,6 +1038,9 @@ php_flag engine 0
1037
  <IfModule mod_php7.c>
1038
  php_flag engine 0
1039
  </IfModule>
 
 
 
1040
 
1041
  AddHandler cgi-script .php .phtml .php3 .pl .py .jsp .asp .htm .shtml .sh .cgi
1042
  Options -ExecCGI
@@ -1200,7 +1204,7 @@ Options -ExecCGI
1200
  }
1201
  }
1202
  if (count($badWhiteIPs) > 0) {
1203
- $errors[] = array('option' => $key, 'error' => __('Please make sure you separate your IP addresses with commas. The following whitelisted IP addresses are invalid: ', 'wordfence') . esc_html(implode(', ', $badWhiteIPs), array()));
1204
  }
1205
 
1206
  $checked = true;
88
  "loginSec_maskLoginErrors" => array('value' => true, 'autoload' => self::AUTOLOAD),
89
  "loginSec_blockAdminReg" => array('value' => true, 'autoload' => self::AUTOLOAD),
90
  "loginSec_disableAuthorScan" => array('value' => true, 'autoload' => self::AUTOLOAD),
91
+ "loginSec_disableApplicationPasswords" => array('value' => true, 'autoload' => self::AUTOLOAD),
92
  "loginSec_disableOEmbedAuthor" => array('value' => false, 'autoload' => self::AUTOLOAD),
93
  'loginSec_requireAdminTwoFactor' => array('value' => false, 'autoload' => self::AUTOLOAD),
94
  "notification_updatesNeeded" => array('value' => true, 'autoload' => self::AUTOLOAD),
1038
  <IfModule mod_php7.c>
1039
  php_flag engine 0
1040
  </IfModule>
1041
+ <IfModule mod_php.c>
1042
+ php_flag engine 0
1043
+ </IfModule>
1044
 
1045
  AddHandler cgi-script .php .phtml .php3 .pl .py .jsp .asp .htm .shtml .sh .cgi
1046
  Options -ExecCGI
1204
  }
1205
  }
1206
  if (count($badWhiteIPs) > 0) {
1207
+ $errors[] = array('option' => $key, 'error' => __('Please make sure you separate your IP addresses with commas. The following allowlisted IP addresses are invalid: ', 'wordfence') . esc_html(implode(', ', $badWhiteIPs), array()));
1208
  }
1209
 
1210
  $checked = true;
lib/wfDashboard.php CHANGED
@@ -191,7 +191,7 @@ class wfDashboard {
191
  '7d' => (int) $activityReport->getBlockedCount(7, wfActivityReport::BLOCK_TYPE_BRUTE_FORCE),
192
  '30d' => (int) $activityReport->getBlockedCount(30, wfActivityReport::BLOCK_TYPE_BRUTE_FORCE),
193
  );
194
- $this->localBlocks[] = array('title' => __('Blacklist', 'wordfence'), 'type' => wfActivityReport::BLOCK_TYPE_BLACKLIST,
195
  '24h' => (int) $activityReport->getBlockedCount(1, wfActivityReport::BLOCK_TYPE_BLACKLIST),
196
  '7d' => (int) $activityReport->getBlockedCount(7, wfActivityReport::BLOCK_TYPE_BLACKLIST),
197
  '30d' => (int) $activityReport->getBlockedCount(30, wfActivityReport::BLOCK_TYPE_BLACKLIST),
191
  '7d' => (int) $activityReport->getBlockedCount(7, wfActivityReport::BLOCK_TYPE_BRUTE_FORCE),
192
  '30d' => (int) $activityReport->getBlockedCount(30, wfActivityReport::BLOCK_TYPE_BRUTE_FORCE),
193
  );
194
+ $this->localBlocks[] = array('title' => __('Blocklist', 'wordfence'), 'type' => wfActivityReport::BLOCK_TYPE_BLACKLIST,
195
  '24h' => (int) $activityReport->getBlockedCount(1, wfActivityReport::BLOCK_TYPE_BLACKLIST),
196
  '7d' => (int) $activityReport->getBlockedCount(7, wfActivityReport::BLOCK_TYPE_BLACKLIST),
197
  '30d' => (int) $activityReport->getBlockedCount(30, wfActivityReport::BLOCK_TYPE_BLACKLIST),
lib/wfScanEngine.php CHANGED
@@ -454,13 +454,13 @@ class wfScanEngine {
454
 
455
  private function scan_checkGSB_init() {
456
  if ($this->scanController->isPremiumScan()) {
457
- $this->statusIDX['checkGSB'] = wfIssues::statusStart("Checking if your site is on a domain blacklist");
458
  $this->scanController->startStage(wfScanner::STAGE_BLACKLIST_CHECK);
459
  $h = new wordfenceURLHoover($this->apiKey, $this->wp_version);
460
  $h->cleanup();
461
  }
462
  else {
463
- wfIssues::statusPaidOnly("Checking if your site is on a domain blacklist is for paid members only");
464
  sleep(2);
465
  }
466
  }
@@ -496,7 +496,7 @@ class wfScanEngine {
496
  $h = new wordfenceURLHoover($this->apiKey, $this->wp_version, false, true);
497
  $badURLs = $h->getBaddies();
498
  if ($h->errorMsg) {
499
- $this->status(4, 'info', "Error checking domain blacklists: " . $h->errorMsg);
500
  wfIssues::statusEnd($this->statusIDX['checkGSB'], wfIssues::STATUS_FAILED);
501
  $this->scanController->completeStage(wfScanner::STAGE_BLACKLIST_CHECK, wfIssues::STATUS_FAILED);
502
  return;
@@ -553,22 +553,22 @@ class wfScanEngine {
553
  }
554
  else if ($badList == 'wordfence-dbl') {
555
  if (is_multisite()) {
556
- $shortMsg = 'The multisite blog with ID ' . intval($id) . ' is listed on the Wordfence domain blacklist.';
557
  $data['multisite'] = intval($id);
558
  }
559
  else {
560
- $shortMsg = 'Your site is listed on the Wordfence domain blacklist.';
561
  }
562
- $longMsg = "The URL " . esc_html($url) . " is on the blacklist.";
563
  $data['gsb'] = $badList;
564
  }
565
  else {
566
  if (is_multisite()) {
567
- $shortMsg = 'The multisite blog with ID ' . intval($id) . ' is listed on a domain blacklist.';
568
  $data['multisite'] = intval($id);
569
  }
570
  else {
571
- $shortMsg = 'Your site is listed on a domain blacklist.';
572
  }
573
  $longMsg = "The URL is: " . esc_html($url);
574
  $data['gsb'] = 'unknown';
@@ -922,11 +922,11 @@ class wfScanEngine {
922
  }
923
 
924
  if ($options['scansEnabled_fileContentsGSB']) {
925
- $this->statusIDX['GSB'] = wfIssues::statusStart('Scanning file contents for URLs on a domain blacklist');
926
  //This stage is marked as started earlier in the hasher rather than here
927
  }
928
  else {
929
- wfIssues::statusDisabled("Skipping scan of file contents for URLs on a domain blacklist");
930
  }
931
 
932
  if ($options['scansEnabled_fileContents'] || $options['scansEnabled_fileContentsGSB']) {
@@ -1016,7 +1016,7 @@ class wfScanEngine {
1016
  }
1017
 
1018
  private function scan_posts_init() {
1019
- $this->statusIDX['posts'] = wfIssues::statusStart('Scanning posts for URLs on a domain blacklist');
1020
  $this->scanController->startStage(wfScanner::STAGE_CONTENT_SAFETY);
1021
  $blogsToScan = self::getBlogsToScan('posts');
1022
  $this->scanQueue = '';
@@ -1120,7 +1120,7 @@ class wfScanEngine {
1120
  }
1121
  else if ($result['badList'] == 'wordfence-dbl') {
1122
  $shortMsg = "{$uctype} contains a suspected malware URL: " . esc_html($title);
1123
- $longMsg = "This " . esc_html($type) . " contains a URL that is currently listed on Wordfence's domain blacklist. The URL is: " . esc_html($result['URL']);
1124
  }
1125
  else {
1126
  //A list type that may be new and the plugin has not been upgraded yet.
@@ -1159,7 +1159,7 @@ class wfScanEngine {
1159
  $this->scanQueue = '';
1160
  }
1161
  private function scan_comments_init(){
1162
- $this->statusIDX['comments'] = wfIssues::statusStart('Scanning comments for URLs on a domain blacklist');
1163
  $this->scanController->startStage(wfScanner::STAGE_CONTENT_SAFETY);
1164
  $this->scanData = array();
1165
  $this->scanQueue = '';
@@ -1242,7 +1242,7 @@ class wfScanEngine {
1242
  }
1243
  else if ($result['badList'] == 'wordfence-dbl') {
1244
  $shortMsg = "$uctype contains a suspected malware URL.";
1245
- $longMsg = "This " . esc_html($type) . " contains a URL that is currently listed on Wordfence's domain blacklist. The URL is: " . esc_html($result['URL']);
1246
  }
1247
 
1248
  if(is_multisite()){
@@ -1932,7 +1932,7 @@ class wfScanEngine {
1932
  }
1933
  else if ($result['badList'] == 'wordfence-dbl') {
1934
  $shortMsg = "Option contains a suspected malware URL: " . esc_html($optionKey);
1935
- $longMsg = "This option contains a URL that is currently listed on Wordfence's domain blacklist. It may indicate your site is infected with malware. The URL is: " . esc_html($result['URL']);
1936
  }
1937
  else {
1938
  //A list type that may be new and the plugin has not been upgraded yet.
454
 
455
  private function scan_checkGSB_init() {
456
  if ($this->scanController->isPremiumScan()) {
457
+ $this->statusIDX['checkGSB'] = wfIssues::statusStart("Checking if your site is on a domain blocklist");
458
  $this->scanController->startStage(wfScanner::STAGE_BLACKLIST_CHECK);
459
  $h = new wordfenceURLHoover($this->apiKey, $this->wp_version);
460
  $h->cleanup();
461
  }
462
  else {
463
+ wfIssues::statusPaidOnly("Checking if your site is on a domain blocklist is for paid members only");
464
  sleep(2);
465
  }
466
  }
496
  $h = new wordfenceURLHoover($this->apiKey, $this->wp_version, false, true);
497
  $badURLs = $h->getBaddies();
498
  if ($h->errorMsg) {
499
+ $this->status(4, 'info', "Error checking domain blocklists: " . $h->errorMsg);
500
  wfIssues::statusEnd($this->statusIDX['checkGSB'], wfIssues::STATUS_FAILED);
501
  $this->scanController->completeStage(wfScanner::STAGE_BLACKLIST_CHECK, wfIssues::STATUS_FAILED);
502
  return;
553
  }
554
  else if ($badList == 'wordfence-dbl') {
555
  if (is_multisite()) {
556
+ $shortMsg = 'The multisite blog with ID ' . intval($id) . ' is listed on the Wordfence domain blocklist.';
557
  $data['multisite'] = intval($id);
558
  }
559
  else {
560
+ $shortMsg = 'Your site is listed on the Wordfence domain blocklist.';
561
  }
562
+ $longMsg = "The URL " . esc_html($url) . " is on the blocklist.";
563
  $data['gsb'] = $badList;
564
  }
565
  else {
566
  if (is_multisite()) {
567
+ $shortMsg = 'The multisite blog with ID ' . intval($id) . ' is listed on a domain blocklist.';
568
  $data['multisite'] = intval($id);
569
  }
570
  else {
571
+ $shortMsg = 'Your site is listed on a domain blocklist.';
572
  }
573
  $longMsg = "The URL is: " . esc_html($url);
574
  $data['gsb'] = 'unknown';
922
  }
923
 
924
  if ($options['scansEnabled_fileContentsGSB']) {
925
+ $this->statusIDX['GSB'] = wfIssues::statusStart('Scanning file contents for URLs on a domain blocklist');
926
  //This stage is marked as started earlier in the hasher rather than here
927
  }
928
  else {
929
+ wfIssues::statusDisabled("Skipping scan of file contents for URLs on a domain blocklist");
930
  }
931
 
932
  if ($options['scansEnabled_fileContents'] || $options['scansEnabled_fileContentsGSB']) {
1016
  }
1017
 
1018
  private function scan_posts_init() {
1019
+ $this->statusIDX['posts'] = wfIssues::statusStart('Scanning posts for URLs on a domain blocklist');
1020
  $this->scanController->startStage(wfScanner::STAGE_CONTENT_SAFETY);
1021
  $blogsToScan = self::getBlogsToScan('posts');
1022
  $this->scanQueue = '';
1120
  }
1121
  else if ($result['badList'] == 'wordfence-dbl') {
1122
  $shortMsg = "{$uctype} contains a suspected malware URL: " . esc_html($title);
1123
+ $longMsg = "This " . esc_html($type) . " contains a URL that is currently listed on Wordfence's domain blocklist. The URL is: " . esc_html($result['URL']);
1124
  }
1125
  else {
1126
  //A list type that may be new and the plugin has not been upgraded yet.
1159
  $this->scanQueue = '';
1160
  }
1161
  private function scan_comments_init(){
1162
+ $this->statusIDX['comments'] = wfIssues::statusStart('Scanning comments for URLs on a domain blocklist');
1163
  $this->scanController->startStage(wfScanner::STAGE_CONTENT_SAFETY);
1164
  $this->scanData = array();
1165
  $this->scanQueue = '';
1242
  }
1243
  else if ($result['badList'] == 'wordfence-dbl') {
1244
  $shortMsg = "$uctype contains a suspected malware URL.";
1245
+ $longMsg = "This " . esc_html($type) . " contains a URL that is currently listed on Wordfence's domain blocklist. The URL is: " . esc_html($result['URL']);
1246
  }
1247
 
1248
  if(is_multisite()){
1932
  }
1933
  else if ($result['badList'] == 'wordfence-dbl') {
1934
  $shortMsg = "Option contains a suspected malware URL: " . esc_html($optionKey);
1935
+ $longMsg = "This option contains a URL that is currently listed on Wordfence's domain blocklist. It may indicate your site is infected with malware. The URL is: " . esc_html($result['URL']);
1936
  }
1937
  else {
1938
  //A list type that may be new and the plugin has not been upgraded yet.
lib/wfSupportController.php CHANGED
@@ -73,6 +73,7 @@ class wfSupportController {
73
  const ITEM_FIREWALL_WAF_OPTION_MASK_LOGIN_ERRORS = 'firewall-waf-option-mask-login-errors';
74
  const ITEM_FIREWALL_WAF_OPTION_PREVENT_ADMIN_REGISTRATION = 'firewall-waf-option-prevent-admin-registration';
75
  const ITEM_FIREWALL_WAF_OPTION_PREVENT_AUTHOR_SCAN = 'firewall-waf-option-prevent-author-scan';
 
76
  const ITEM_FIREWALL_WAF_OPTION_BLOCK_BAD_POST = 'firewall-waf-option-block-bad-post';
77
  const ITEM_FIREWALL_WAF_OPTION_CUSTOM_BLOCK_TEXT = 'firewall-waf-option-custom-block-text';
78
  const ITEM_FIREWALL_WAF_OPTION_CHECK_PASSWORD = 'firewall-waf-option-check-password';
@@ -254,6 +255,7 @@ class wfSupportController {
254
  case self::ITEM_FIREWALL_WAF_OPTION_MASK_LOGIN_ERRORS:
255
  case self::ITEM_FIREWALL_WAF_OPTION_PREVENT_ADMIN_REGISTRATION:
256
  case self::ITEM_FIREWALL_WAF_OPTION_PREVENT_AUTHOR_SCAN:
 
257
  case self::ITEM_FIREWALL_WAF_OPTION_BLOCK_BAD_POST:
258
  case self::ITEM_FIREWALL_WAF_OPTION_CUSTOM_BLOCK_TEXT:
259
  case self::ITEM_FIREWALL_WAF_OPTION_CHECK_PASSWORD:
73
  const ITEM_FIREWALL_WAF_OPTION_MASK_LOGIN_ERRORS = 'firewall-waf-option-mask-login-errors';
74
  const ITEM_FIREWALL_WAF_OPTION_PREVENT_ADMIN_REGISTRATION = 'firewall-waf-option-prevent-admin-registration';
75
  const ITEM_FIREWALL_WAF_OPTION_PREVENT_AUTHOR_SCAN = 'firewall-waf-option-prevent-author-scan';
76
+ const ITEM_FIREWALL_WAF_OPTION_DISABLE_APPLICATION_PASSWORDS = 'firewall-waf-option-disable-application-passwords';
77
  const ITEM_FIREWALL_WAF_OPTION_BLOCK_BAD_POST = 'firewall-waf-option-block-bad-post';
78
  const ITEM_FIREWALL_WAF_OPTION_CUSTOM_BLOCK_TEXT = 'firewall-waf-option-custom-block-text';
79
  const ITEM_FIREWALL_WAF_OPTION_CHECK_PASSWORD = 'firewall-waf-option-check-password';
255
  case self::ITEM_FIREWALL_WAF_OPTION_MASK_LOGIN_ERRORS:
256
  case self::ITEM_FIREWALL_WAF_OPTION_PREVENT_ADMIN_REGISTRATION:
257
  case self::ITEM_FIREWALL_WAF_OPTION_PREVENT_AUTHOR_SCAN:
258
+ case self::ITEM_FIREWALL_WAF_OPTION_DISABLE_APPLICATION_PASSWORDS:
259
  case self::ITEM_FIREWALL_WAF_OPTION_BLOCK_BAD_POST:
260
  case self::ITEM_FIREWALL_WAF_OPTION_CUSTOM_BLOCK_TEXT:
261
  case self::ITEM_FIREWALL_WAF_OPTION_CHECK_PASSWORD:
lib/wordfenceClass.php CHANGED
@@ -1251,6 +1251,22 @@ SQL
1251
  add_filter('wp_sitemaps_add_provider', 'wordfence::wpSitemapUserProviderFilter', 99, 2);
1252
  }
1253
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1254
  add_filter('rest_dispatch_request', 'wordfence::_filterCentralFromLiveTraffic', 99, 4);
1255
 
1256
  // Change GoDaddy's limit login mu-plugin since it can interfere with the two factor auth message.
@@ -4628,7 +4644,7 @@ HTACCESS;
4628
  }
4629
  $forcedWhitelistEntry = false;
4630
  if (wfBlock::isWhitelisted($IP, $forcedWhitelistEntry)) {
4631
- $message = "The IP address " . wp_kses($IP, array()) . " is whitelisted and can't be blocked. You can remove this IP from the whitelist on the Wordfence options page.";
4632
  if ($forcedWhitelistEntry) {
4633
  $message = "The IP address " . wp_kses($IP, array()) . " is in a range of IP addresses that Wordfence does not block. The IP range may be internal or belong to a service safe to allow access for.";
4634
  }
@@ -5119,7 +5135,7 @@ HTACCESS;
5119
  }
5120
 
5121
  $htaccess = ABSPATH . '/.htaccess';
5122
- $change = "<IfModule mod_php5.c>\n\tphp_value display_errors 0\n</IfModule>\n<IfModule mod_php7.c>\n\tphp_value display_errors 0\n</IfModule>";
5123
  $content = "";
5124
  if (file_exists($htaccess)) {
5125
  $content = file_get_contents($htaccess);
@@ -6196,7 +6212,15 @@ HTML;
6196
  wp_redirect($wafMenuURL);
6197
  exit;
6198
  }
6199
-
 
 
 
 
 
 
 
 
6200
  $notificationCount = count(wfNotification::notifications());
6201
  $updatingNotifications = get_site_transient('wordfence_updating_notifications');
6202
  $hidden = ($notificationCount == 0 || $updatingNotifications ? ' wf-hidden' : '');
@@ -7104,7 +7128,7 @@ to your httpd.conf if using Apache, or find documentation on how to disable dire
7104
  }
7105
  $data = array(
7106
  'timestamp' => time(),
7107
- 'description' => 'Whitelisted via Firewall Options page',
7108
  'ip' => wfUtils::getIP(),
7109
  'disabled' => empty($_POST['whitelistedEnabled']),
7110
  );
@@ -7391,7 +7415,7 @@ to your httpd.conf if using Apache, or find documentation on how to disable dire
7391
  if (isset($_POST['path']) && isset($_POST['paramKey']) && isset($_POST['failedRules'])) {
7392
  $data = array(
7393
  'timestamp' => time(),
7394
- 'description' => 'Whitelisted via Live Traffic',
7395
  'source' => 'live-traffic',
7396
  'ip' => wfUtils::getIP(),
7397
  );
@@ -7959,7 +7983,7 @@ ALERTMSG;
7959
  }
7960
 
7961
  if (isset($actionData['failedRules']) && $actionData['failedRules'] == 'blocked') {
7962
- $row->longDescription = "Blocked because the IP is blacklisted";
7963
  }
7964
  else {
7965
  $row->longDescription = "Blocked for " . $row->actionDescription;
@@ -8109,13 +8133,13 @@ ALERTMSG;
8109
  if (isset($whitelistedData['source'])) {
8110
  $source = $whitelistedData['source'];
8111
  }
8112
- else if ($whitelistedData['description'] == 'Whitelisted by via false positive dialog') {
8113
  $source = 'false-positive';
8114
  }
8115
- else if ($whitelistedData['description'] == 'Whitelisted via Live Traffic') {
8116
  $source = 'live-traffic';
8117
  }
8118
- else if ($whitelistedData['description'] == 'Whitelisted while in Learning Mode.') {
8119
  $source = 'learning-mode';
8120
  }
8121
  else { //A user-entered description or Whitelisted via Firewall Options page
@@ -8935,7 +8959,8 @@ class wfWAFAutoPrependHelper {
8935
  $wafBlock = $matches[0];
8936
  $hasPHP5 = preg_match('/<IfModule mod_php5\.c>\s*php_value auto_prepend_file \'.*?\'\s*<\/IfModule>/is', $wafBlock);
8937
  $hasPHP7 = preg_match('/<IfModule mod_php7\.c>\s*php_value auto_prepend_file \'.*?\'\s*<\/IfModule>/is', $wafBlock);
8938
- if ($hasPHP5 && !$hasPHP7) { //The only case we care about is having the PHP 5 block but not the 7 because downgrading is unlikely
 
8939
  return false;
8940
  }
8941
  }
@@ -8957,13 +8982,22 @@ class wfWAFAutoPrependHelper {
8957
  if (preg_match($regex, $htaccessContent, $matches, PREG_OFFSET_CAPTURE)) {
8958
  $wafBlock = $matches[0][0];
8959
  $hasPHP5 = preg_match('/<IfModule mod_php5\.c>\s*php_value auto_prepend_file \'(.*?)\'\s*<\/IfModule>/is', $wafBlock, $php5Matches, PREG_OFFSET_CAPTURE);
8960
- $hasPHP7 = preg_match('/<IfModule mod_php7\.c>\s*php_value auto_prepend_file \'.*?\'\s*<\/IfModule>/is', $wafBlock);
8961
- if ($hasPHP5 && !$hasPHP7) {
 
8962
  $beforeWAFBlock = substr($htaccessContent, 0, $matches[0][1]);
8963
  $afterWAFBlock = substr($htaccessContent, $matches[0][1] + strlen($wafBlock));
8964
  $beforeMod_php = substr($wafBlock, 0, $php5Matches[0][1]);
8965
  $afterMod_php = substr($wafBlock, $php5Matches[0][1] + strlen($php5Matches[0][0]));
8966
- $updatedHtaccessContent = $beforeWAFBlock . $beforeMod_php . $php5Matches[0][0] . "\n" . sprintf("<IfModule mod_php7.c>\n\tphp_value auto_prepend_file '%s'\n</IfModule>", $php5Matches[1][0] /* already escaped */) . $afterMod_php . $afterWAFBlock;
 
 
 
 
 
 
 
 
8967
  return file_put_contents($htaccessPath, $updatedHtaccessContent) !== false;
8968
  }
8969
  }
@@ -9080,14 +9114,17 @@ file because of file permissions. Please verify the permissions are correct and
9080
  case 'apache-mod_php':
9081
  $autoPrependDirective = sprintf("# Wordfence WAF
9082
  <IfModule mod_php5.c>
9083
- php_value auto_prepend_file '%s'
9084
  </IfModule>
9085
  <IfModule mod_php7.c>
9086
- php_value auto_prepend_file '%s'
 
 
 
9087
  </IfModule>
9088
  $userIniHtaccessDirectives
9089
  # END Wordfence WAF
9090
- ", addcslashes($bootstrapPath, "'"), addcslashes($bootstrapPath, "'"));
9091
  break;
9092
 
9093
  case 'litespeed':
1251
  add_filter('wp_sitemaps_add_provider', 'wordfence::wpSitemapUserProviderFilter', 99, 2);
1252
  }
1253
 
1254
+ if (wfConfig::get('loginSec_disableApplicationPasswords')) {
1255
+ add_filter('wp_is_application_passwords_available', '__return_false');
1256
+
1257
+ // Override the wp_die handler to let the user know app passwords were disabled by the Wordfence option.
1258
+ if (!empty($_SERVER['SCRIPT_FILENAME']) && $_SERVER['SCRIPT_FILENAME'] === ABSPATH . 'wp-admin/authorize-application.php') {
1259
+ add_filter('wp_die_handler', function ($handler = null) {
1260
+ return function ($message, $title, $args) {
1261
+ if ($message === 'Application passwords are not available.') {
1262
+ $message = __('Application passwords have been disabled by Wordfence.', 'wordfence');
1263
+ }
1264
+ _default_wp_die_handler($message, $title, $args);
1265
+ };
1266
+ }, 10, 1);
1267
+ }
1268
+ }
1269
+
1270
  add_filter('rest_dispatch_request', 'wordfence::_filterCentralFromLiveTraffic', 99, 4);
1271
 
1272
  // Change GoDaddy's limit login mu-plugin since it can interfere with the two factor auth message.
4644
  }
4645
  $forcedWhitelistEntry = false;
4646
  if (wfBlock::isWhitelisted($IP, $forcedWhitelistEntry)) {
4647
+ $message = "The IP address " . wp_kses($IP, array()) . " is allowlisted and can't be blocked. You can remove this IP from the allowlist on the Wordfence options page.";
4648
  if ($forcedWhitelistEntry) {
4649
  $message = "The IP address " . wp_kses($IP, array()) . " is in a range of IP addresses that Wordfence does not block. The IP range may be internal or belong to a service safe to allow access for.";
4650
  }
5135
  }
5136
 
5137
  $htaccess = ABSPATH . '/.htaccess';
5138
+ $change = "<IfModule mod_php5.c>\n\tphp_value display_errors 0\n</IfModule>\n<IfModule mod_php7.c>\n\tphp_value display_errors 0\n</IfModule>\n<IfModule mod_php.c>\n\tphp_value display_errors 0\n</IfModule>";
5139
  $content = "";
5140
  if (file_exists($htaccess)) {
5141
  $content = file_get_contents($htaccess);
6212
  wp_redirect($wafMenuURL);
6213
  exit;
6214
  }
6215
+
6216
+ if (version_compare(PHP_VERSION, '8.0', '>=') && !get_user_option('wordfence_php8_nag')) {
6217
+ wfAdminNoticeQueue::addAdminNotice(wfAdminNotice::SEVERITY_INFO, <<<HTML
6218
+ PHP 8 includes significant changes from PHP 7, which may cause unexpected bugs in plugins, themes, and WordPress itself. Wordfence is not yet officially supported on PHP 8, but will be supported in the near future. <a href="https://www.wordfence.com/blog/2020/11/php-8-what-wordpress-users-need-to-know/">Read More</a>
6219
+ HTML
6220
+ , 'php8', array(get_current_user_id()));
6221
+ update_user_option(get_current_user_id(), 'wordfence_php8_nag', 1);
6222
+ }
6223
+
6224
  $notificationCount = count(wfNotification::notifications());
6225
  $updatingNotifications = get_site_transient('wordfence_updating_notifications');
6226
  $hidden = ($notificationCount == 0 || $updatingNotifications ? ' wf-hidden' : '');
7128
  }
7129
  $data = array(
7130
  'timestamp' => time(),
7131
+ 'description' => 'Allowlisted via Firewall Options page',
7132
  'ip' => wfUtils::getIP(),
7133
  'disabled' => empty($_POST['whitelistedEnabled']),
7134
  );
7415
  if (isset($_POST['path']) && isset($_POST['paramKey']) && isset($_POST['failedRules'])) {
7416
  $data = array(
7417
  'timestamp' => time(),
7418
+ 'description' => 'Allowlisted via Live Traffic',
7419
  'source' => 'live-traffic',
7420
  'ip' => wfUtils::getIP(),
7421
  );
7983
  }
7984
 
7985
  if (isset($actionData['failedRules']) && $actionData['failedRules'] == 'blocked') {
7986
+ $row->longDescription = "Blocked because the IP is blocklisted";
7987
  }
7988
  else {
7989
  $row->longDescription = "Blocked for " . $row->actionDescription;
8133
  if (isset($whitelistedData['source'])) {
8134
  $source = $whitelistedData['source'];
8135
  }
8136
+ else if ($whitelistedData['description'] == 'Allowlisted by via false positive dialog') {
8137
  $source = 'false-positive';
8138
  }
8139
+ else if ($whitelistedData['description'] == 'Allowlisted via Live Traffic') {
8140
  $source = 'live-traffic';
8141
  }
8142
+ else if ($whitelistedData['description'] == 'Allowlisted while in Learning Mode.') {
8143
  $source = 'learning-mode';
8144
  }
8145
  else { //A user-entered description or Whitelisted via Firewall Options page
8959
  $wafBlock = $matches[0];
8960
  $hasPHP5 = preg_match('/<IfModule mod_php5\.c>\s*php_value auto_prepend_file \'.*?\'\s*<\/IfModule>/is', $wafBlock);
8961
  $hasPHP7 = preg_match('/<IfModule mod_php7\.c>\s*php_value auto_prepend_file \'.*?\'\s*<\/IfModule>/is', $wafBlock);
8962
+ $hasPHP8 = preg_match('/<IfModule mod_php\.c>\s*php_value auto_prepend_file \'.*?\'\s*<\/IfModule>/is', $wafBlock);
8963
+ if ($hasPHP5 && (!$hasPHP7 || !$hasPHP8)) { //Check if PHP 5 is configured, but not 7 or 8.
8964
  return false;
8965
  }
8966
  }
8982
  if (preg_match($regex, $htaccessContent, $matches, PREG_OFFSET_CAPTURE)) {
8983
  $wafBlock = $matches[0][0];
8984
  $hasPHP5 = preg_match('/<IfModule mod_php5\.c>\s*php_value auto_prepend_file \'(.*?)\'\s*<\/IfModule>/is', $wafBlock, $php5Matches, PREG_OFFSET_CAPTURE);
8985
+ $hasPHP7 = preg_match('/<IfModule mod_php7\.c>\s*php_value auto_prepend_file \'.*?\'\s*<\/IfModule>/is', $wafBlock, $php7Matches, PREG_OFFSET_CAPTURE);
8986
+ $hasPHP8 = preg_match('/<IfModule mod_php\.c>\s*php_value auto_prepend_file \'.*?\'\s*<\/IfModule>/is', $wafBlock);
8987
+ if ($hasPHP5 && !$hasPHP7) {
8988
  $beforeWAFBlock = substr($htaccessContent, 0, $matches[0][1]);
8989
  $afterWAFBlock = substr($htaccessContent, $matches[0][1] + strlen($wafBlock));
8990
  $beforeMod_php = substr($wafBlock, 0, $php5Matches[0][1]);
8991
  $afterMod_php = substr($wafBlock, $php5Matches[0][1] + strlen($php5Matches[0][0]));
8992
+ $updatedHtaccessContent = $beforeWAFBlock . $beforeMod_php . $php5Matches[0][0] . "\n" . sprintf("<IfModule mod_php7.c>\n\tphp_value auto_prepend_file '%1\$s'\n</IfModule>\n<IfModule mod_php.c>\n\tphp_value auto_prepend_file '%1\$s'\n</IfModule>", $php5Matches[1][0] /* already escaped */) . $afterMod_php . $afterWAFBlock;
8993
+ return file_put_contents($htaccessPath, $updatedHtaccessContent) !== false;
8994
+ }
8995
+ if ($hasPHP5 && $hasPHP7 && !$hasPHP8) {
8996
+ $beforeWAFBlock = substr($htaccessContent, 0, $matches[0][1]);
8997
+ $afterWAFBlock = substr($htaccessContent, $matches[0][1] + strlen($wafBlock));
8998
+ $beforeMod_php = substr($wafBlock, 0, $php5Matches[0][1]);
8999
+ $afterMod_php = substr($wafBlock, $php7Matches[0][1] + strlen($php7Matches[0][0]));
9000
+ $updatedHtaccessContent = $beforeWAFBlock . $beforeMod_php . $php5Matches[0][0] . "\n" . $php7Matches[0][0] . "\n" . sprintf("<IfModule mod_php.c>\n\tphp_value auto_prepend_file '%s'\n</IfModule>", $php5Matches[1][0] /* already escaped */) . $afterMod_php . $afterWAFBlock;
9001
  return file_put_contents($htaccessPath, $updatedHtaccessContent) !== false;
9002
  }
9003
  }
9114
  case 'apache-mod_php':
9115
  $autoPrependDirective = sprintf("# Wordfence WAF
9116
  <IfModule mod_php5.c>
9117
+ php_value auto_prepend_file '%1\$s'
9118
  </IfModule>
9119
  <IfModule mod_php7.c>
9120
+ php_value auto_prepend_file '%1\$s'
9121
+ </IfModule>
9122
+ <IfModule mod_php.c>
9123
+ php_value auto_prepend_file '%1\$s'
9124
  </IfModule>
9125
  $userIniHtaccessDirectives
9126
  # END Wordfence WAF
9127
+ ", addcslashes($bootstrapPath, "'"));
9128
  break;
9129
 
9130
  case 'litespeed':
lib/wordfenceScanner.php CHANGED
@@ -87,16 +87,6 @@ class wordfenceScanner {
87
  throw new Exception(__('Wordfence could not get the attack signature patterns from the scanning server.', 'wordfence'));
88
  }
89
 
90
- if (wfWAF::getInstance() && method_exists(wfWAF::getInstance(), 'setMalwareSignatures')) {
91
- try { wfWAF::getInstance()->setMalwareSignatures(array()); } catch (Exception $e) { /* Ignore */ }
92
- if (method_exists(wfWAF::getInstance(), 'setMalwareSignatureCommonStrings')) {
93
- try {
94
- wfWAF::getInstance()->setMalwareSignatureCommonStrings(array(), array());
95
- }
96
- catch (Exception $e) { /* Ignore */ }
97
- }
98
- }
99
-
100
  if (is_array($sigData['rules'])) {
101
  $wafPatterns = array();
102
  $wafCommonStringIndexes = array();
@@ -117,16 +107,6 @@ class wordfenceScanner {
117
  $wafCommonStringIndexes[] = $commonStringIndexes;
118
  }
119
  }
120
-
121
- if (wfWAF::getInstance() && method_exists(wfWAF::getInstance(), 'setMalwareSignatures')) {
122
- try { wfWAF::getInstance()->setMalwareSignatures($wafPatterns); } catch (Exception $e) { /* Ignore */ }
123
- if (method_exists(wfWAF::getInstance(), 'setMalwareSignatureCommonStrings') && isset($sigData['commonStrings']) && is_array($sigData['commonStrings'])) {
124
- try {
125
- wfWAF::getInstance()->setMalwareSignatureCommonStrings($sigData['commonStrings'], $wafCommonStringIndexes);
126
- }
127
- catch (Exception $e) { /* Ignore */ }
128
- }
129
- }
130
  }
131
 
132
  $userSignatures = wfScanner::shared()->userScanSignatures();
@@ -385,7 +365,6 @@ class wordfenceScanner {
385
  $type = (isset($rule[4]) && !empty($rule[4])) ? $rule[4] : 'server';
386
  $logOnly = (isset($rule[5]) && !empty($rule[5])) ? $rule[5] : false;
387
  $commonStringIndexes = (isset($rule[8]) && is_array($rule[8])) ? $rule[8] : array();
388
- $customMessage = isset($rule[9]) ? $rule[9] : __('This file appears to be installed or modified by a hacker to perform malicious activity. If you know about this file you can choose to ignore it to exclude it from future scans.', 'wordfence');
389
  if ($type == 'server' && !$treatAsBinary) { continue; }
390
  else if (($type == 'both' || $type == 'browser') && $isJS) { $extraMsg = ''; }
391
  else if (($type == 'both' || $type == 'browser') && !$treatAsBinary) { continue; }
@@ -412,6 +391,7 @@ class wordfenceScanner {
412
  }*/
413
 
414
  if (preg_match('/(' . $rule[2] . ')/iS', $data, $matches, PREG_OFFSET_CAPTURE)) {
 
415
  $matchString = $matches[1][0];
416
  $matchOffset = $matches[1][1];
417
  $beforeString = wfWAFUtils::substr($data, max(0, $matchOffset - 100), $matchOffset - max(0, $matchOffset - 100));
@@ -566,7 +546,7 @@ class wordfenceScanner {
566
  'ignoreP' => $this->path . $file,
567
  'ignoreC' => md5_file($this->path . $file),
568
  'shortMsg' => __('File contains suspected malware URL: ', 'wordfence') . esc_html($file),
569
- 'longMsg' => __('This file contains a URL that is currently listed on Wordfence\'s domain blacklist. The URL is: ', 'wordfence') . esc_html($result['URL']),
570
  'data' => array_merge(array(
571
  'file' => $file,
572
  'shac' => $record->SHAC,
87
  throw new Exception(__('Wordfence could not get the attack signature patterns from the scanning server.', 'wordfence'));
88
  }
89
 
 
 
 
 
 
 
 
 
 
 
90
  if (is_array($sigData['rules'])) {
91
  $wafPatterns = array();
92
  $wafCommonStringIndexes = array();
107
  $wafCommonStringIndexes[] = $commonStringIndexes;
108
  }
109
  }
 
 
 
 
 
 
 
 
 
 
110
  }
111
 
112
  $userSignatures = wfScanner::shared()->userScanSignatures();
365
  $type = (isset($rule[4]) && !empty($rule[4])) ? $rule[4] : 'server';
366
  $logOnly = (isset($rule[5]) && !empty($rule[5])) ? $rule[5] : false;
367
  $commonStringIndexes = (isset($rule[8]) && is_array($rule[8])) ? $rule[8] : array();
 
368
  if ($type == 'server' && !$treatAsBinary) { continue; }
369
  else if (($type == 'both' || $type == 'browser') && $isJS) { $extraMsg = ''; }
370
  else if (($type == 'both' || $type == 'browser') && !$treatAsBinary) { continue; }
391
  }*/
392
 
393
  if (preg_match('/(' . $rule[2] . ')/iS', $data, $matches, PREG_OFFSET_CAPTURE)) {
394
+ $customMessage = isset($rule[9]) ? $rule[9] : __('This file appears to be installed or modified by a hacker to perform malicious activity. If you know about this file you can choose to ignore it to exclude it from future scans.', 'wordfence');
395
  $matchString = $matches[1][0];
396
  $matchOffset = $matches[1][1];
397
  $beforeString = wfWAFUtils::substr($data, max(0, $matchOffset - 100), $matchOffset - max(0, $matchOffset - 100));
546
  'ignoreP' => $this->path . $file,
547
  'ignoreC' => md5_file($this->path . $file),
548
  'shortMsg' => __('File contains suspected malware URL: ', 'wordfence') . esc_html($file),
549
+ 'longMsg' => __('This file contains a URL that is currently listed on Wordfence\'s domain blocklist. The URL is: ', 'wordfence') . esc_html($result['URL']),
550
  'data' => array_merge(array(
551
  'file' => $file,
552
  'shac' => $record->SHAC,
models/block/wfBlock.php CHANGED
@@ -177,7 +177,7 @@ class wfBlock {
177
 
178
  if ($payload['type'] == 'ip-address') {
179
  if (!isset($payload['ip']) || !filter_var(trim($payload['ip']), FILTER_VALIDATE_IP) || @wfUtils::inet_pton(trim($payload['ip'])) === false) { return __('Invalid IP address.', 'wordfence'); }
180
- if (self::isWhitelisted(trim($payload['ip']))) { return sprintf(__('This IP address is in a range of addresses that Wordfence does not block. The IP range may be internal or belong to a service that is always allowed. Whitelisting of external services can be disabled. <a href="%s" target="_blank" rel="noopener noreferrer">Learn More</a>', 'wordfence'), wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_WAF_OPTION_WHITELISTED_SERVICES)); }
181
  }
182
  else if ($payload['type'] == 'country') {
183
  if (!isset($payload['blockLogin']) || !isset($payload['blockSite'])) { return __('Nothing selected to block.', 'wordfence'); }
177
 
178
  if ($payload['type'] == 'ip-address') {
179
  if (!isset($payload['ip']) || !filter_var(trim($payload['ip']), FILTER_VALIDATE_IP) || @wfUtils::inet_pton(trim($payload['ip'])) === false) { return __('Invalid IP address.', 'wordfence'); }
180
+ if (self::isWhitelisted(trim($payload['ip']))) { return sprintf(__('This IP address is in a range of addresses that Wordfence does not block. The IP range may be internal or belong to a service that is always allowed. Allowlisting of external services can be disabled. <a href="%s" target="_blank" rel="noopener noreferrer">Learn More</a>', 'wordfence'), wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_WAF_OPTION_WHITELISTED_SERVICES)); }
181
  }
182
  else if ($payload['type'] == 'country') {
183
  if (!isset($payload['blockLogin']) || !isset($payload['blockSite'])) { return __('Nothing selected to block.', 'wordfence'); }
models/firewall/wfFirewall.php CHANGED
@@ -458,7 +458,7 @@ class wfFirewall
458
  }
459
  return array(
460
  'percentage' => 1.0,
461
- 'title' => __('Enable Real-Time IP Blacklist.', 'wordfence'),
462
  );
463
  }
464
  catch (Exception $e) {
@@ -467,7 +467,7 @@ class wfFirewall
467
 
468
  return array(
469
  'percentage' => 1.0,
470
- 'title' => __('Enable Real-Time IP Blacklist.', 'wordfence'),
471
  );
472
  }
473
 
458
  }
459
  return array(
460
  'percentage' => 1.0,
461
+ 'title' => __('Enable Real-Time IP Blocklist.', 'wordfence'),
462
  );
463
  }
464
  catch (Exception $e) {
467
 
468
  return array(
469
  'percentage' => 1.0,
470
+ 'title' => __('Enable Real-Time IP Blocklist.', 'wordfence'),
471
  );
472
  }
473
 
models/scanner/wfScanner.php CHANGED
@@ -819,7 +819,7 @@ class wfScanner {
819
  $reputationChecks = array(
820
  'spamvertizeCheck' => __('Enable scan option to check if this website is being "Spamvertised".', 'wordfence'),
821
  'checkSpamIP' => __('Enable scan option to check if your website IP is generating spam.', 'wordfence'),
822
- 'scansEnabled_checkGSB' => __('Enable scan option to check if your website is on a domain blacklist.', 'wordfence'),
823
  );
824
 
825
  foreach ($reputationChecks as $option => $optionLabel) {
819
  $reputationChecks = array(
820
  'spamvertizeCheck' => __('Enable scan option to check if this website is being "Spamvertised".', 'wordfence'),
821
  'checkSpamIP' => __('Enable scan option to check if your website IP is generating spam.', 'wordfence'),
822
+ 'scansEnabled_checkGSB' => __('Enable scan option to check if your website is on a domain blocklist.', 'wordfence'),
823
  );
824
 
825
  foreach ($reputationChecks as $option => $optionLabel) {
modules/login-security/classes/controller/wordfencels.php CHANGED
@@ -73,7 +73,7 @@ class Controller_WordfenceLS {
73
  \wfModuleController::shared()->addOptionIndex('wfls-option-allow-remember', __('Login Security: Allow remembering device for 30 days', 'wordfence-2fa'));
74
  \wfModuleController::shared()->addOptionIndex('wfls-option-require-2fa-xml-rpc', __('Login Security: Require 2FA for XML-RPC call authentication', 'wordfence-2fa'));
75
  \wfModuleController::shared()->addOptionIndex('wfls-option-disable-xml-rpc', __('Login Security: Disable XML-RPC authentication', 'wordfence-2fa'));
76
- \wfModuleController::shared()->addOptionIndex('wfls-option-whitelist-2fa', __('Login Security: Whitelisted IP addresses that bypass 2FA', 'wordfence-2fa'));
77
  \wfModuleController::shared()->addOptionIndex('wfls-option-enable-captcha', __('Login Security: Enable reCAPTCHA on the login and user registration pages', 'wordfence-2fa'));
78
 
79
  $title = __('Login Security Options', 'wordfence-ls');
73
  \wfModuleController::shared()->addOptionIndex('wfls-option-allow-remember', __('Login Security: Allow remembering device for 30 days', 'wordfence-2fa'));
74
  \wfModuleController::shared()->addOptionIndex('wfls-option-require-2fa-xml-rpc', __('Login Security: Require 2FA for XML-RPC call authentication', 'wordfence-2fa'));
75
  \wfModuleController::shared()->addOptionIndex('wfls-option-disable-xml-rpc', __('Login Security: Disable XML-RPC authentication', 'wordfence-2fa'));
76
+ \wfModuleController::shared()->addOptionIndex('wfls-option-whitelist-2fa', __('Login Security: Allowlisted IP addresses that bypass 2FA', 'wordfence-2fa'));
77
  \wfModuleController::shared()->addOptionIndex('wfls-option-enable-captcha', __('Login Security: Enable reCAPTCHA on the login and user registration pages', 'wordfence-2fa'));
78
 
79
  $title = __('Login Security Options', 'wordfence-ls');
modules/login-security/css/{admin-global.1603293147.css → admin-global.1607007971.css} RENAMED
File without changes
modules/login-security/css/{admin.1603293147.css → admin.1607007971.css} RENAMED
File without changes
modules/login-security/css/{colorbox.1603293147.css → colorbox.1607007971.css} RENAMED
File without changes
modules/login-security/css/{font-awesome.1603293147.css → font-awesome.1607007971.css} RENAMED
File without changes
modules/login-security/css/{ionicons.1603293147.css → ionicons.1607007971.css} RENAMED
File without changes
modules/login-security/css/{jquery-ui-timepicker-addon.1603293147.css → jquery-ui-timepicker-addon.1607007971.css} RENAMED
File without changes
modules/login-security/css/{jquery-ui.min.1603293147.css → jquery-ui.min.1607007971.css} RENAMED
File without changes
modules/login-security/css/{jquery-ui.structure.min.1603293147.css → jquery-ui.structure.min.1607007971.css} RENAMED
File without changes
modules/login-security/css/{jquery-ui.theme.min.1603293147.css → jquery-ui.theme.min.1607007971.css} RENAMED
File without changes
modules/login-security/css/{login.1603293147.css → login.1607007971.css} RENAMED
File without changes
modules/login-security/js/{admin-global.1603293147.js → admin-global.1607007971.js} RENAMED
File without changes
modules/login-security/js/{admin.1603293147.js → admin.1607007971.js} RENAMED
File without changes
modules/login-security/js/{jquery-ui-timepicker-addon.1603293147.js → jquery-ui-timepicker-addon.1607007971.js} RENAMED
File without changes
modules/login-security/js/{jquery.colorbox.1603293147.js → jquery.colorbox.1607007971.js} RENAMED
File without changes
modules/login-security/js/{jquery.colorbox.min.1603293147.js → jquery.colorbox.min.1607007971.js} RENAMED
File without changes
modules/login-security/js/{jquery.qrcode.min.1603293147.js → jquery.qrcode.min.1607007971.js} RENAMED
File without changes
modules/login-security/js/{jquery.tmpl.min.1603293147.js → jquery.tmpl.min.1607007971.js} RENAMED
File without changes
modules/login-security/js/{login.1603293147.js → login.1607007971.js} RENAMED
File without changes
modules/login-security/views/options/option-ip-source.php CHANGED
@@ -116,7 +116,7 @@ $selectOptions = array(
116
  var option = optionElement.data('option');
117
  var originalValue = optionElement.data('originalValue');
118
 
119
- $(this).attr('checked', originalValue == $(this).attr('value'));
120
  });
121
 
122
  $('#wfls-ip-source-trusted-proxies textarea').each(function() {
116
  var option = optionElement.data('option');
117
  var originalValue = optionElement.data('originalValue');
118
 
119
+ $(this).prop('checked', originalValue == $(this).attr('value'));
120
  });
121
 
122
  $('#wfls-ip-source-trusted-proxies textarea').each(function() {
modules/login-security/views/page/manage.php CHANGED
@@ -110,5 +110,5 @@ else if (WORDFENCE_LS_FROM_CORE && $correctedTime != $time) {
110
  echo __('Corrected Time (WF):', 'wordfence-2fa') . ' ' . date('Y-m-d H:i:s', $correctedTime) . ' UTC (' . \WordfenceLS\Controller_Time::format_local_time('Y-m-d H:i:s', $correctedTime) . ' ' . $tz . ')<br>';
111
  }
112
  ?>
113
- <?php _e('Detected IP:', 'wordfence-2fa'); ?> <?php echo \WordfenceLS\Text\Model_HTML::esc_html(\WordfenceLS\Model_Request::current()->ip()); if (\WordfenceLS\Controller_Whitelist::shared()->is_whitelisted(\WordfenceLS\Model_Request::current()->ip())) { echo ' (' . __('whitelisted', 'wordfence-2fa') . ')'; } ?></p>
114
  <?php endif; ?>
110
  echo __('Corrected Time (WF):', 'wordfence-2fa') . ' ' . date('Y-m-d H:i:s', $correctedTime) . ' UTC (' . \WordfenceLS\Controller_Time::format_local_time('Y-m-d H:i:s', $correctedTime) . ' ' . $tz . ')<br>';
111
  }
112
  ?>
113
+ <?php _e('Detected IP:', 'wordfence-2fa'); ?> <?php echo \WordfenceLS\Text\Model_HTML::esc_html(\WordfenceLS\Model_Request::current()->ip()); if (\WordfenceLS\Controller_Whitelist::shared()->is_whitelisted(\WordfenceLS\Model_Request::current()->ip())) { echo ' (' . __('allowlisted', 'wordfence-2fa') . ')'; } ?></p>
114
  <?php endif; ?>
modules/login-security/views/settings/options.php CHANGED
@@ -99,9 +99,9 @@ if (!defined('WORDFENCE_LS_VERSION')) { exit; }
99
  echo \WordfenceLS\Model_View::create('options/option-textarea', array(
100
  'textOptionName' => \WordfenceLS\Controller_Settings::OPTION_2FA_WHITELISTED,
101
  'textValue' => implode("\n", \WordfenceLS\Controller_Settings::shared()->whitelisted_ips()),
102
- 'title' => new \WordfenceLS\Text\Model_HTML('<strong>' . __('Whitelisted IP addresses that bypass 2FA', 'wordfence-2fa') . '</strong>'),
103
  'alignTitle' => 'top',
104
- 'subtitle' => __('Whitelisted IPs must be placed on separate lines. You can specify ranges using the following formats: 127.0.0.1/24, 127.0.0.[1-100], or 127.0.0.1-127.0.1.100.', 'wordfence-2fa'),
105
  'subtitlePosition' => 'value',
106
  'noSpacer' => true,
107
  ))->render();
99
  echo \WordfenceLS\Model_View::create('options/option-textarea', array(
100
  'textOptionName' => \WordfenceLS\Controller_Settings::OPTION_2FA_WHITELISTED,
101
  'textValue' => implode("\n", \WordfenceLS\Controller_Settings::shared()->whitelisted_ips()),
102
+ 'title' => new \WordfenceLS\Text\Model_HTML('<strong>' . __('Allowlisted IP addresses that bypass 2FA', 'wordfence-2fa') . '</strong>'),
103
  'alignTitle' => 'top',
104
+ 'subtitle' => __('Allowlisted IPs must be placed on separate lines. You can specify ranges using the following formats: 127.0.0.1/24, 127.0.0.[1-100], or 127.0.0.1-127.0.1.100.', 'wordfence-2fa'),
105
  'subtitlePosition' => 'value',
106
  'noSpacer' => true,
107
  ))->render();
modules/login-security/wordfence-login-security.php CHANGED
@@ -27,7 +27,7 @@ else {
27
  define('WORDFENCE_LS_FROM_CORE', ($wfCoreActive && isset($wfCoreLoading) && $wfCoreLoading));
28
 
29
  define('WORDFENCE_LS_VERSION', '1.0.5');
30
- define('WORDFENCE_LS_BUILD_NUMBER', '1603293147');
31
 
32
  if (!defined('WORDFENCE_LS_EMAIL_VALIDITY_DURATION_MINUTES')) { define('WORDFENCE_LS_EMAIL_VALIDITY_DURATION_MINUTES', 15); }
33
 
27
  define('WORDFENCE_LS_FROM_CORE', ($wfCoreActive && isset($wfCoreLoading) && $wfCoreLoading));
28
 
29
  define('WORDFENCE_LS_VERSION', '1.0.5');
30
+ define('WORDFENCE_LS_BUILD_NUMBER', '1607007971');
31
 
32
  if (!defined('WORDFENCE_LS_EMAIL_VALIDITY_DURATION_MINUTES')) { define('WORDFENCE_LS_EMAIL_VALIDITY_DURATION_MINUTES', 15); }
33
 
readme.txt CHANGED
@@ -1,10 +1,10 @@
1
  === Wordfence Security - Firewall & Malware Scan ===
2
  Contributors: mmaunder, wfryan, wfmatt, wfmattr
3
- Tags: security, firewall, malware scanner, web application firewall, two factor authentication, block hackers, country blocking, clean hacked site, blacklist, waf, login security
4
  Requires at least: 3.9
5
  Requires PHP: 5.3
6
- Tested up to: 5.5
7
- Stable tag: 7.4.12
8
 
9
  Secure your website with the most comprehensive WordPress security plugin. Firewall, malware scan, blocking, live traffic, login security & more.
10
 
@@ -17,7 +17,7 @@ Wordfence includes an endpoint firewall and malware scanner that were built from
17
  #### WORDPRESS FIREWALL
18
  * Web Application Firewall identifies and blocks malicious traffic. Built and maintained by a large team focused 100% on WordPress security.
19
  * [Premium] Real-time firewall rule and malware signature updates via the Threat Defense Feed (free version is delayed by 30 days).
20
- * [Premium] Real-time IP Blacklist blocks all requests from the most malicious IPs, protecting your site while reducing load.
21
  * Protects your site at the endpoint, enabling deep integration with WordPress. Unlike cloud alternatives does not break encryption, cannot be bypassed and cannot leak data.
22
  * Integrated malware scanner blocks requests that include malicious code or content.
23
  * Protection from brute force attacks by limiting login attempts.
@@ -29,7 +29,7 @@ Wordfence includes an endpoint firewall and malware scanner that were built from
29
  * Repair files that have changed by overwriting them with a pristine, original version. Delete any files that don’t belong easily within the Wordfence interface.
30
  * Checks your site for known security vulnerabilities and alerts you to any issues. Also alerts you to potential security issues when a plugin has been closed or abandoned.
31
  * Checks your content safety by scanning file contents, posts and comments for dangerous URLs and suspicious content.
32
- * [Premium] Checks to see if your site or IP have been blacklisted for malicious activity, generating spam or other security issue.
33
 
34
  #### LOGIN SECURITY
35
  * Two-factor authentication (2FA), one of the most secure forms of remote system authentication available via any TOTP-based authenticator app or service.
@@ -82,7 +82,7 @@ The WordPress security plugin provides the best protection available for your we
82
 
83
  = What features does Wordfence Premium enable? =
84
 
85
- We offer a Premium API key that gives you real-time updates to the Threat Defense Feed which includes a real-time IP blacklist, firewall rules, and malware signatures. Premium support, country blocking, more frequent scans, and spam and spamvertising checks are also included. [Click here to sign-up for Wordfence Premium now](http://www.wordfence.com/) or simply install Wordfence free and start protecting your website.
86
 
87
  = How does the Wordfence WordPress Firewall protect websites? =
88
 
@@ -153,7 +153,7 @@ Yes. We fully support IPv6 with all security functions including country blockin
153
 
154
  = Does Wordfence Security support Multi-Site installations? =
155
 
156
- Yes. WordPress Multi-Site is fully supported. Using Wordfence you can scan every blog in your network for malware with one click. If one of your customers posts a page or post with a known malware URL that threatens your whole domain with being blacklisted by Google, we will alert you in the next scan.
157
 
158
  = What support options are available for Wordfence users? =
159
 
@@ -183,6 +183,16 @@ Secure your website with Wordfence.
183
 
184
  == Changelog ==
185
 
 
 
 
 
 
 
 
 
 
 
186
  = 7.4.12 - October 21, 2020 =
187
 
188
  * Improvement: Initial integration of i18n in Wordfence.
@@ -193,7 +203,7 @@ Secure your website with Wordfence.
193
  * Fix: Removed new scan issues when WordPress update occurs mid-scan.
194
  * Fix: Specified category when saving `whitelistedServiceIPs` to WAF storage engine.
195
  * Fix: Removed localhost IP for auto-update email alerts.
196
- * Fix: Fixed broken message in Live Traffic with MySQLi storage engine for blacklisted hits.
197
  * Fix: Removed optional parameter values for PHP 8 compatibility.
198
 
199
  = 7.4.11 - August 27, 2020 =
@@ -299,7 +309,7 @@ Secure your website with Wordfence.
299
 
300
  = 7.3.6 - July 31, 2019 =
301
  * Improvement: Multiple "php.ini file in core directory" issues are now consolidated into a single issue for clearer scan results.
302
- * Improvement: The AJAX error detection for false positive WAF blocks now better detects and processes the response for presenting the whitelisting prompt.
303
  * Improvement: Added overdue cron detection and highlighting to diagnostics to help identify issues.
304
  * Improvement: Added the necessary directives to exclude backwards compatibility code from creating warnings with phpcs for future compatibility with WP Tide.
305
  * Improvement: Normalized all PHP require/include calls to use full paths for better code quality.
@@ -318,7 +328,7 @@ Secure your website with Wordfence.
318
  * Improvement: Reworked the reCAPTCHA implementation to trigger the token check on login/registration form submission to avoid the token expiring.
319
  * Fix: Widened the reCAPTCHA key fields to allow the full keys to be visible.
320
  * Fix: Fixed encoding of the ellipsis character when reporting malware finds.
321
- * Fix: Disabling the IP blacklist once again correctly clears the block cache.
322
  * Fix: Addressed an issue when outbound UDP connections are blocked where the NTP check could log an error.
323
  * Fix: Added handling for reCAPTCHA's JavaScript failing to load, which previously blocked logging in.
324
  * Fix: Fixed the functionality of the button to send 2FA grace period notifications.
@@ -374,7 +384,7 @@ Secure your website with Wordfence.
374
 
375
  = 7.2.3 - February 28, 2019 =
376
  * Improvement: Country names are now shown instead of two letter codes where appropriate.
377
- * Improvement: Updated the service whitelist to reflect additions to the Facebook IP ranges.
378
  * Improvement: Added alerting for when the WAF is disabled for any reason.
379
  * Improvement: Additional alerting and troubleshooting steps for WAF configuration issues.
380
  * Change: Live Traffic human/bot status will additionally be based on the browscap record in security-only mode.
@@ -393,7 +403,7 @@ Secure your website with Wordfence.
393
  = 7.2.1 - February 5, 2019 =
394
  * Improvement: Integrated Wordfence with Wordfence Central, a new service allowing you to manage multiple Wordfence installations from a single interface.
395
  * Improvement: Added a help link to the mode display when a host disabling Live Traffic is active.
396
- * Improvement: Added an option for whitelisting ManageWP in "Whitelisted Services".
397
  * Fix: Enqueued fonts used in admin notices on all admin pages.
398
  * Fix: Change false positive user-reports link to use https.
399
  * Fix: Fix reference to non-existent function when registering menus.
@@ -404,7 +414,7 @@ Secure your website with Wordfence.
404
  = 7.1.19 - January 8, 2019 =
405
  * Improvement: Speed optimizations for WAF rule compilation.
406
  * Improvement: Added Kosovo to country blocking.
407
- * Improvement: Additional flexibility for whitelist rules.
408
  * Fix: Added compensation for really long file lists in the "Exclude files from scan" setting.
409
  * Fix: Fixed an issue where the GeoIP database update check would never get marked as completed.
410
  * Fix: Login credentials passed as arrays no longer trigger a PHP notice from our filters.
@@ -433,7 +443,7 @@ Secure your website with Wordfence.
433
  * Fix: PHP 7.3 syntax compatibility fixes.
434
 
435
  = 7.1.16 - October 16, 2018 =
436
- * Improvement: Service whitelisting can now be selectively toggled on or off per service.
437
  * Improvement: Updated bundled GeoIP database.
438
  * Change: Removed the "Disable Wordfence Cookies" option as we've removed all cookies it affected.
439
  * Change: Updates that refresh country statistics are more efficient and now only affect the most recent records.
@@ -454,7 +464,7 @@ Secure your website with Wordfence.
454
  * Fix: Wordfence crons will now automatically reschedule if missing for any reason.
455
  * Fix: Fixed an issue where the block counts and total IPs blocked values on the dashboard might not agree.
456
  * Fix: Corrected the message shown on Live Traffic when a country blocking bypass URL is used.
457
- * Fix: Removed extra spacing in the example ranges for "Whitelisted IP addresses that bypass all rules"
458
 
459
  = 7.1.12 - September 12, 2018 =
460
  * Improvement: Updated bundled GeoIP database.
@@ -528,7 +538,7 @@ Secure your website with Wordfence.
528
  * Improvement: The list of blocks now shows the most recently-added blocks at the top by default.
529
  * Improvement: Added better table status display to Diagnostics to help with debugging.
530
  * Improvement: Added deferred loading to Live Traffic avatars to improve performance with some plugins.
531
- * Improvement: The server's own IP is now automatically whitelisted for known safe requests.
532
  * Fix: Added a workaround to Live Traffic human/bot detection to compensate for other scripts that modify our event handlers.
533
  * Fix: Fixed an error with Live Traffic human/bot detection when plugins change the load order.
534
  * Fix: Fixed auto-enabling of some controls when pasting values.
@@ -570,7 +580,7 @@ Secure your website with Wordfence.
570
  * Improvement: readme.html and wp-config-sample.php are no longer scanned for changes due to differences between languages (malware signatures still run).
571
  * Improvement: When the license status changes, it now triggers a fresh pull of the WAF rules.
572
  * Improvement: Added dedicated messaging for leftover WordPress core files that were not fully removed during upgrade.
573
- * Improvement: Improved labeling in Live Traffic for hits blocked by the real-time IP blacklist.
574
  * Improvement: Added forced wrapping to the file paths in the activity report email to avoid scroll bar overlap making them unreadable.
575
  * Improvement: Updated the bundled GeoIP database.
576
  * Improvement: Updated the bundled browscap database.
@@ -605,7 +615,7 @@ Secure your website with Wordfence.
605
  * Improvement: Better messaging about the scan options that need to be enabled for free installations to achieve 100%.
606
  * Improvement: The country blocking selection drawer behavior has been changed to now allow saving directly from it.
607
  * Improvement: Increased the textarea size for the advanced firewall options to make editing easier.
608
- * Improvement: The URL blacklist check now includes additional variants in some checks to more accurately match.
609
  * Change: Adjusted messaging when blocks are loading.
610
  * Change: Wording change for the option "Maximum execution time for each stage".
611
  * Change: Permanent blocks now display "Permanent" rather than "Indefinite" for the expiration for consistency.
@@ -703,17 +713,17 @@ Secure your website with Wordfence.
703
  * Improvement: New scan stage includes a new check for TrafficTrade malware.
704
  * Improvement: Reduced net memory usage during forked scan stages by up to 50%.
705
  * Improvement: Reduced the number of queries executed for some configuration options.
706
- * Improvement: Modified the default whitelisting to include the new core AJAX action in WordPress 4.8.1.
707
  * Fix: Synchronized the scan option names between the main options page and smaller scan options page.
708
  * Fix: Fixed CSS positioning issue for dashboard metabox with IPv6.
709
  * Fix: Fixed a compatibility issue with determining the site's home_url when WPML is installed.
710
 
711
  = 6.3.15 - July 24, 2017 =
712
  * Improvement: Reduced memory usage on scan forking and during the known files scan stage.
713
- * Improvement: Added additional scan options to allow for disabling the blacklist checks while still allowing malware scanning to be enabled.
714
  * Improvement: Added a Wordfence Application Firewall code block for the lsapi variant of LiteSpeed.
715
  * Improvement: Updated the bundled GeoIP database.
716
- * Fix: Added a validation check to IP range whitelisting to avoid log warnings if they're malformed.
717
 
718
  = 6.3.14 - July 17, 2017 =
719
  * Improvement: Introduced smart scan distribution. Scan times are now distributed intelligently across servers to provide consistent server performance.
@@ -745,7 +755,7 @@ Secure your website with Wordfence.
745
  * Improvement: Added an anti-crawler feature to the lockout page to avoid crawlers erroneously following the unlock link.
746
  * Improvement: The live traffic "Group By" options now dynamically show the results in a more useful format depending on the option selected.
747
  * Improvement: Improved the unknown core files check to include all extra files in core locations regardless of whether or not the "Scan images, binary, and other files as if they were executable" option is on.
748
- * Improvement: Better wording for the whitelisting IP range error message.
749
  * Fix: Addressed a performance issue on databases with tens of thousands of tables when trying to load the diagnostics page.
750
  * Fix: All dashboard and activity report email times are now displayed in the time zone configured for the WordPress installation.
751
 
@@ -764,7 +774,7 @@ Secure your website with Wordfence.
764
  * Fix: Adjusted the changelog link in the scan results email to work for the new wordpress.org repository.
765
  * Fix: Fixed some broken links in the activity summary email.
766
  * Fix: Fixed a typo in the scan summary text.
767
- * Fix: The increased attack rate emails now correctly identify blacklist blocks.
768
  * Fix: Fixed an issue with the dashboard where it could show the last scan failed when one has never ran.
769
  * Fix: Brute force records are now coalesced when possible prior to sending.
770
 
@@ -780,7 +790,7 @@ Secure your website with Wordfence.
780
  * Change: Changed how administrator accounts are detected to compensate for managed WordPress sites that do not have the standard permissions.
781
  * Change: The table list on the diagnostics page is now limited in length to avoid being exceedingly large on big multisite installations.
782
  * Fix: Improved updating of WAF config values to minimize writing to disk.
783
- * Fix: The blacklist's blocked IP records are now correctly trimmed when expired.
784
  * Fix: Added error suppression to the WAF attack data functions to prevent corrupt records from breaking the no-cache headers.
785
  * Fix: Fixed some incorrect documentation links on the diagnostics page.
786
  * Fix: Fixed a typo in a constant on the diagnostics page.
@@ -789,13 +799,13 @@ Secure your website with Wordfence.
789
  * Fix: Addressed an issue that could cause scans to time out on sites with tens of thousands of potential URLs in files, comments, and posts.
790
 
791
  = 6.3.7 - April 25, 2017 =
792
- * Improvement: All URLs are now checked against the Wordfence Domain Blacklist in addition to Google's.
793
  * Improvement: Better page load performance for multisite installations with thousands of tables.
794
  * Improvement: Updated the bundled GeoIP database.
795
- * Improvement: Integrated blacklist blocking statistics into the dashboard for Premium users.
796
  * Fix: Added locking to the automatic update process to ensure non-standard crons don't break Wordfence.
797
  * Fix: Fixed an activation error on multisite installations on very old WordPress versions.
798
- * Fix: Adjusted the behavior of the blacklist toggle for Free users.
799
 
800
  = 6.3.6 - April 5, 2017 =
801
  * Improvement: Optimized the malware signature scan to reduce memory usage.
@@ -821,15 +831,15 @@ Secure your website with Wordfence.
821
  * Improvement: Changes to readme.txt and readme.md are now ignored by the scanner unless high sensitivity is on.
822
  * Fix: Addressed an issue with multisite installations where they would execute the upgrade handler for each subsite.
823
  * Fix: Added additional error handling to the blocked IP list to avoid outputting notices when another plugin resets the error handler.
824
- * Fix: Made the description in the summary email for blocks resulting from the blacklist more descriptive.
825
  * Fix: Updated the copyright date on several pages.
826
  * Fix: Fixed incorrect wrapping of the Group by field on the live traffic page.
827
 
828
  = 6.3.4 - March 13, 2017 =
829
- * Improvement: Added a path for people blocked by the IP blacklist (Premium Feature) to report false positives.
830
 
831
  = 6.3.3 - March 9, 2017 =
832
- * New: Malicious IPs are now preemptively blocked by a regularly-updated blacklist. [Premium Feature]
833
  * Improvement: Better layout and display for mobile screen sizes.
834
  * Improvement: Dashboard chart data is now updated more frequently.
835
  * Fix: Fixed database errors on notifications page on multisite installations.
@@ -905,7 +915,7 @@ Secure your website with Wordfence.
905
  * Improvement: Added additional contextual help links.
906
  * Improvement: Significant performance improvement for determining the connecting IP.
907
  * Improvement: Better messaging for two-factor recovery codes.
908
- * Fix: Adjusted message when trying to block an IP in the whitelist.
909
  * Fix: Error log download links now work on Windows servers.
910
  * Fix: Avoid running out of memory when viewing very large activity logs.
911
  * Fix: Fixed warning that could be logged when following an unlock email link.
@@ -939,14 +949,14 @@ Secure your website with Wordfence.
939
  * Improvement: Reworked blocking for IP ranges, country blocking, and direct IP blocking to minimize server impact when under attack.
940
  * Improvement: Live traffic better indicates the action taken by country blocking when it redirects a visitor.
941
  * Improvement: Added support for finding server logs to the Diagnostics page to help with troubleshooting.
942
- * Improvement: Whitelisted StatusCake IP addresses.
943
  * Improvement: Updated GeoIP database.
944
  * Improvement: Disabling Wordfence now sends an alert.
945
  * Improvement: Improved detection for uploaded PHP content in the firewall.
946
  * Fix: Eliminated memory-related errors resulting from the scan on sites with very large numbers of issues and low memory.
947
  * Fix: Fixed admin page layout for sites using RTL languages.
948
  * Fix: Reduced overhead of the dashboard widget.
949
- * Fix: Improved performance of checking for whitelisted IPs.
950
  * Fix: Changes to the default plugin hello.php are now detected correctly in scans.
951
  * Fix: Fixed IPv6 warning in the dashboard widget.
952
 
@@ -990,14 +1000,14 @@ Secure your website with Wordfence.
990
  * Improvement: Added Web Application Firewall activity to Wordfence summary email.
991
  * Fix: Now using 503 response code in the page displayed when an IP is locked out.
992
  * Fix: `wflogs` directory is now correctly removed on uninstall.
993
- * Fix: Fixed recently introduced bug which caused the Whitelisted 404 URLs feature to no longer work.
994
  * Fix: Added try/catch to uncaught exception thrown when pinging the API key.
995
  * Improvement: Improved performance of the Live Traffic page in Firefox.
996
  * Improvement: Updated GeoIP database.
997
 
998
  = 6.1.15 - August 25, 2016 =
999
  * Improvement: Removed file-based config caching, added support for caching via WordPress's object cache.
1000
- * Improvement: Whitelisted Uptime Robot's IP range.
1001
  * Fix: Notify users if suPHP_ConfigPath is in their WAF setup, and prompt to update Extended Protection.
1002
  * Fix: Fixed bug with allowing logins on admin accounts that are not fully activated with invalid 2FA codes when 2FA is required for all admins.
1003
  * Fix: Removed usage of `wp_get_sites()` which was deprecated in WordPress 4.6.
@@ -1021,7 +1031,7 @@ Secure your website with Wordfence.
1021
  * Fix: Fixed bug with specific Advanced Blocking user-agent patterns causing 500 errors.
1022
  * Improvement: Plugin updates are now only a critical issue if there is a security related fix, and a warning otherwise. A link to the changelog is included.
1023
  * Fix: Added group writable permissions to Firewall's configuration files.
1024
- * Improvement: Changed whitelist entry area to textbox on options page.
1025
  * Fix: Move flags and logo served from wordfence.com over to locally hosted files.
1026
  * Fix: Fixed issues with scan in WordPress 4.6 beta.
1027
  * Fix: Fixed bug where Firewall rules could be missing on some sites running IIS.
@@ -1043,7 +1053,7 @@ Secure your website with Wordfence.
1043
  * Improvement: Added a method to view which files are currently used for WAF and to remove without reinstalling Wordfence.
1044
  * Improvement: Changed rule compilation to use atomic writes.
1045
  * Improvement: Removed security levels from Options page.
1046
- * Improvement: Added option to disable ajaxwatcher (for whitelisting only for Admins) on the front end.
1047
 
1048
  = 6.1.8 - May 26, 2016 =
1049
  * Fix: Change wfConfig::set_ser to split large objects into multiple queries.
@@ -1070,7 +1080,7 @@ Secure your website with Wordfence.
1070
  * Fix: Fixed bug with 2FA not properly handling email address login.
1071
  * Fix: Show logins/logouts when Live Traffic is disabled.
1072
  * Fix: Fixed bug with PCRE versions < 7.0 (repeated subpattern is too long).
1073
- * Fix: Now able to delete whitelisted URL/params containing ampersands and non-UTF8 characters.
1074
  * Improvement: Reduced 2FA activation code to expire after 30 days.
1075
  * Improvement: Live Traffic now only shows verified Googlebot under Google Crawler filter for new visits.
1076
  * Improvement: Adjusted permissions on Firewall log/config files to be 0640.
@@ -1088,7 +1098,7 @@ Secure your website with Wordfence.
1088
 
1089
  = 6.1.4 - April 20, 2016 =
1090
  * Fix: Fixed potential bug with 'stored data not found after a fork. Got type: boolean'.
1091
- * Improvement: Added bulk actions and filters to WAF whitelist table.
1092
  * Improvement: Added a check while in learning mode to verify the response is not 404 before whitelising.
1093
  * Fix: Added index to attackLogTime. wfHits trimmed on runInstall now.
1094
  * Fix: Fixed attack data sync for hosts that cannot use wp-cron.
@@ -1112,7 +1122,7 @@ Secure your website with Wordfence.
1112
  * Fix: Fixed bug with multiple API calls to 'get_known_files'.
1113
 
1114
  = 6.1.2 - April 12, 2016 =
1115
- * Fix: Fixed fatal error when using a whitelisted IPv6 range and connecting with an IPv6 address.
1116
 
1117
  = 6.1.1 - April 12, 2016 =
1118
  * Enhancement: Added Web Application Firewall
1
  === Wordfence Security - Firewall & Malware Scan ===
2
  Contributors: mmaunder, wfryan, wfmatt, wfmattr
3
+ Tags: security, firewall, malware scanner, web application firewall, two factor authentication, block hackers, country blocking, clean hacked site, blocklist, waf, login security
4
  Requires at least: 3.9
5
  Requires PHP: 5.3
6
+ Tested up to: 5.7
7
+ Stable tag: 7.4.14
8
 
9
  Secure your website with the most comprehensive WordPress security plugin. Firewall, malware scan, blocking, live traffic, login security & more.
10
 
17
  #### WORDPRESS FIREWALL
18
  * Web Application Firewall identifies and blocks malicious traffic. Built and maintained by a large team focused 100% on WordPress security.
19
  * [Premium] Real-time firewall rule and malware signature updates via the Threat Defense Feed (free version is delayed by 30 days).
20
+ * [Premium] Real-time IP Blocklist blocks all requests from the most malicious IPs, protecting your site while reducing load.
21
  * Protects your site at the endpoint, enabling deep integration with WordPress. Unlike cloud alternatives does not break encryption, cannot be bypassed and cannot leak data.
22
  * Integrated malware scanner blocks requests that include malicious code or content.
23
  * Protection from brute force attacks by limiting login attempts.
29
  * Repair files that have changed by overwriting them with a pristine, original version. Delete any files that don’t belong easily within the Wordfence interface.
30
  * Checks your site for known security vulnerabilities and alerts you to any issues. Also alerts you to potential security issues when a plugin has been closed or abandoned.
31
  * Checks your content safety by scanning file contents, posts and comments for dangerous URLs and suspicious content.
32
+ * [Premium] Checks to see if your site or IP have been blocklisted for malicious activity, generating spam or other security issue.
33
 
34
  #### LOGIN SECURITY
35
  * Two-factor authentication (2FA), one of the most secure forms of remote system authentication available via any TOTP-based authenticator app or service.
82
 
83
  = What features does Wordfence Premium enable? =
84
 
85
+ We offer a Premium API key that gives you real-time updates to the Threat Defense Feed which includes a real-time IP blocklist, firewall rules, and malware signatures. Premium support, country blocking, more frequent scans, and spam and spamvertising checks are also included. [Click here to sign-up for Wordfence Premium now](http://www.wordfence.com/) or simply install Wordfence free and start protecting your website.
86
 
87
  = How does the Wordfence WordPress Firewall protect websites? =
88
 
153
 
154
  = Does Wordfence Security support Multi-Site installations? =
155
 
156
+ Yes. WordPress Multi-Site is fully supported. Using Wordfence you can scan every blog in your network for malware with one click. If one of your customers posts a page or post with a known malware URL that threatens your whole domain with being blocklisted by Google, we will alert you in the next scan.
157
 
158
  = What support options are available for Wordfence users? =
159
 
183
 
184
  == Changelog ==
185
 
186
+ = 7.4.14 - December 3, 2020 =
187
+
188
+ * Improvement: Added option to disable application passwords.
189
+ * Improvement: Updated site cleaning callout with 1-year guarantee.
190
+ * Improvement: Upgraded sodium_compat library to 1.13.0.
191
+ * Improvement: Replaced the terms whitelist and blacklist with allowlist and blocklist.
192
+ * Improvement: Made a number of WordPress 5.6 and jQuery 3.x compatibility improvements.
193
+ * Improvement: Made a number of PHP8 compatilibility improvements.
194
+ * Improvement: Added dismissable notice informing users of possible PHP8 compatibility issues.
195
+
196
  = 7.4.12 - October 21, 2020 =
197
 
198
  * Improvement: Initial integration of i18n in Wordfence.
203
  * Fix: Removed new scan issues when WordPress update occurs mid-scan.
204
  * Fix: Specified category when saving `whitelistedServiceIPs` to WAF storage engine.
205
  * Fix: Removed localhost IP for auto-update email alerts.
206
+ * Fix: Fixed broken message in Live Traffic with MySQLi storage engine for blocklisted hits.
207
  * Fix: Removed optional parameter values for PHP 8 compatibility.
208
 
209
  = 7.4.11 - August 27, 2020 =
309
 
310
  = 7.3.6 - July 31, 2019 =
311
  * Improvement: Multiple "php.ini file in core directory" issues are now consolidated into a single issue for clearer scan results.
312
+ * Improvement: The AJAX error detection for false positive WAF blocks now better detects and processes the response for presenting the allowlisting prompt.
313
  * Improvement: Added overdue cron detection and highlighting to diagnostics to help identify issues.
314
  * Improvement: Added the necessary directives to exclude backwards compatibility code from creating warnings with phpcs for future compatibility with WP Tide.
315
  * Improvement: Normalized all PHP require/include calls to use full paths for better code quality.
328
  * Improvement: Reworked the reCAPTCHA implementation to trigger the token check on login/registration form submission to avoid the token expiring.
329
  * Fix: Widened the reCAPTCHA key fields to allow the full keys to be visible.
330
  * Fix: Fixed encoding of the ellipsis character when reporting malware finds.
331
+ * Fix: Disabling the IP blocklist once again correctly clears the block cache.
332
  * Fix: Addressed an issue when outbound UDP connections are blocked where the NTP check could log an error.
333
  * Fix: Added handling for reCAPTCHA's JavaScript failing to load, which previously blocked logging in.
334
  * Fix: Fixed the functionality of the button to send 2FA grace period notifications.
384
 
385
  = 7.2.3 - February 28, 2019 =
386
  * Improvement: Country names are now shown instead of two letter codes where appropriate.
387
+ * Improvement: Updated the service allowlist to reflect additions to the Facebook IP ranges.
388
  * Improvement: Added alerting for when the WAF is disabled for any reason.
389
  * Improvement: Additional alerting and troubleshooting steps for WAF configuration issues.
390
  * Change: Live Traffic human/bot status will additionally be based on the browscap record in security-only mode.
403
  = 7.2.1 - February 5, 2019 =
404
  * Improvement: Integrated Wordfence with Wordfence Central, a new service allowing you to manage multiple Wordfence installations from a single interface.
405
  * Improvement: Added a help link to the mode display when a host disabling Live Traffic is active.
406
+ * Improvement: Added an option for allowlisting ManageWP in "Allowlisted Services".
407
  * Fix: Enqueued fonts used in admin notices on all admin pages.
408
  * Fix: Change false positive user-reports link to use https.
409
  * Fix: Fix reference to non-existent function when registering menus.
414
  = 7.1.19 - January 8, 2019 =
415
  * Improvement: Speed optimizations for WAF rule compilation.
416
  * Improvement: Added Kosovo to country blocking.
417
+ * Improvement: Additional flexibility for allowlist rules.
418
  * Fix: Added compensation for really long file lists in the "Exclude files from scan" setting.
419
  * Fix: Fixed an issue where the GeoIP database update check would never get marked as completed.
420
  * Fix: Login credentials passed as arrays no longer trigger a PHP notice from our filters.
443
  * Fix: PHP 7.3 syntax compatibility fixes.
444
 
445
  = 7.1.16 - October 16, 2018 =
446
+ * Improvement: Service allowlisting can now be selectively toggled on or off per service.
447
  * Improvement: Updated bundled GeoIP database.
448
  * Change: Removed the "Disable Wordfence Cookies" option as we've removed all cookies it affected.
449
  * Change: Updates that refresh country statistics are more efficient and now only affect the most recent records.
464
  * Fix: Wordfence crons will now automatically reschedule if missing for any reason.
465
  * Fix: Fixed an issue where the block counts and total IPs blocked values on the dashboard might not agree.
466
  * Fix: Corrected the message shown on Live Traffic when a country blocking bypass URL is used.
467
+ * Fix: Removed extra spacing in the example ranges for "Allowlisted IP addresses that bypass all rules"
468
 
469
  = 7.1.12 - September 12, 2018 =
470
  * Improvement: Updated bundled GeoIP database.
538
  * Improvement: The list of blocks now shows the most recently-added blocks at the top by default.
539
  * Improvement: Added better table status display to Diagnostics to help with debugging.
540
  * Improvement: Added deferred loading to Live Traffic avatars to improve performance with some plugins.
541
+ * Improvement: The server's own IP is now automatically allowlisted for known safe requests.
542
  * Fix: Added a workaround to Live Traffic human/bot detection to compensate for other scripts that modify our event handlers.
543
  * Fix: Fixed an error with Live Traffic human/bot detection when plugins change the load order.
544
  * Fix: Fixed auto-enabling of some controls when pasting values.
580
  * Improvement: readme.html and wp-config-sample.php are no longer scanned for changes due to differences between languages (malware signatures still run).
581
  * Improvement: When the license status changes, it now triggers a fresh pull of the WAF rules.
582
  * Improvement: Added dedicated messaging for leftover WordPress core files that were not fully removed during upgrade.
583
+ * Improvement: Improved labeling in Live Traffic for hits blocked by the real-time IP blocklist.
584
  * Improvement: Added forced wrapping to the file paths in the activity report email to avoid scroll bar overlap making them unreadable.
585
  * Improvement: Updated the bundled GeoIP database.
586
  * Improvement: Updated the bundled browscap database.
615
  * Improvement: Better messaging about the scan options that need to be enabled for free installations to achieve 100%.
616
  * Improvement: The country blocking selection drawer behavior has been changed to now allow saving directly from it.
617
  * Improvement: Increased the textarea size for the advanced firewall options to make editing easier.
618
+ * Improvement: The URL blocklist check now includes additional variants in some checks to more accurately match.
619
  * Change: Adjusted messaging when blocks are loading.
620
  * Change: Wording change for the option "Maximum execution time for each stage".
621
  * Change: Permanent blocks now display "Permanent" rather than "Indefinite" for the expiration for consistency.
713
  * Improvement: New scan stage includes a new check for TrafficTrade malware.
714
  * Improvement: Reduced net memory usage during forked scan stages by up to 50%.
715
  * Improvement: Reduced the number of queries executed for some configuration options.
716
+ * Improvement: Modified the default allowlisting to include the new core AJAX action in WordPress 4.8.1.
717
  * Fix: Synchronized the scan option names between the main options page and smaller scan options page.
718
  * Fix: Fixed CSS positioning issue for dashboard metabox with IPv6.
719
  * Fix: Fixed a compatibility issue with determining the site's home_url when WPML is installed.
720
 
721
  = 6.3.15 - July 24, 2017 =
722
  * Improvement: Reduced memory usage on scan forking and during the known files scan stage.
723
+ * Improvement: Added additional scan options to allow for disabling the blocklist checks while still allowing malware scanning to be enabled.
724
  * Improvement: Added a Wordfence Application Firewall code block for the lsapi variant of LiteSpeed.
725
  * Improvement: Updated the bundled GeoIP database.
726
+ * Fix: Added a validation check to IP range allowlisting to avoid log warnings if they're malformed.
727
 
728
  = 6.3.14 - July 17, 2017 =
729
  * Improvement: Introduced smart scan distribution. Scan times are now distributed intelligently across servers to provide consistent server performance.
755
  * Improvement: Added an anti-crawler feature to the lockout page to avoid crawlers erroneously following the unlock link.
756
  * Improvement: The live traffic "Group By" options now dynamically show the results in a more useful format depending on the option selected.
757
  * Improvement: Improved the unknown core files check to include all extra files in core locations regardless of whether or not the "Scan images, binary, and other files as if they were executable" option is on.
758
+ * Improvement: Better wording for the allowlisting IP range error message.
759
  * Fix: Addressed a performance issue on databases with tens of thousands of tables when trying to load the diagnostics page.
760
  * Fix: All dashboard and activity report email times are now displayed in the time zone configured for the WordPress installation.
761
 
774
  * Fix: Adjusted the changelog link in the scan results email to work for the new wordpress.org repository.
775
  * Fix: Fixed some broken links in the activity summary email.
776
  * Fix: Fixed a typo in the scan summary text.
777
+ * Fix: The increased attack rate emails now correctly identify blocklist blocks.
778
  * Fix: Fixed an issue with the dashboard where it could show the last scan failed when one has never ran.
779
  * Fix: Brute force records are now coalesced when possible prior to sending.
780
 
790
  * Change: Changed how administrator accounts are detected to compensate for managed WordPress sites that do not have the standard permissions.
791
  * Change: The table list on the diagnostics page is now limited in length to avoid being exceedingly large on big multisite installations.
792
  * Fix: Improved updating of WAF config values to minimize writing to disk.
793
+ * Fix: The blocklist's blocked IP records are now correctly trimmed when expired.
794
  * Fix: Added error suppression to the WAF attack data functions to prevent corrupt records from breaking the no-cache headers.
795
  * Fix: Fixed some incorrect documentation links on the diagnostics page.
796
  * Fix: Fixed a typo in a constant on the diagnostics page.
799
  * Fix: Addressed an issue that could cause scans to time out on sites with tens of thousands of potential URLs in files, comments, and posts.
800
 
801
  = 6.3.7 - April 25, 2017 =
802
+ * Improvement: All URLs are now checked against the Wordfence Domain Blocklist in addition to Google's.
803
  * Improvement: Better page load performance for multisite installations with thousands of tables.
804
  * Improvement: Updated the bundled GeoIP database.
805
+ * Improvement: Integrated blocklist blocking statistics into the dashboard for Premium users.
806
  * Fix: Added locking to the automatic update process to ensure non-standard crons don't break Wordfence.
807
  * Fix: Fixed an activation error on multisite installations on very old WordPress versions.
808
+ * Fix: Adjusted the behavior of the blocklist toggle for Free users.
809
 
810
  = 6.3.6 - April 5, 2017 =
811
  * Improvement: Optimized the malware signature scan to reduce memory usage.
831
  * Improvement: Changes to readme.txt and readme.md are now ignored by the scanner unless high sensitivity is on.
832
  * Fix: Addressed an issue with multisite installations where they would execute the upgrade handler for each subsite.
833
  * Fix: Added additional error handling to the blocked IP list to avoid outputting notices when another plugin resets the error handler.
834
+ * Fix: Made the description in the summary email for blocks resulting from the blocklist more descriptive.
835
  * Fix: Updated the copyright date on several pages.
836
  * Fix: Fixed incorrect wrapping of the Group by field on the live traffic page.
837
 
838
  = 6.3.4 - March 13, 2017 =
839
+ * Improvement: Added a path for people blocked by the IP blocklist (Premium Feature) to report false positives.
840
 
841
  = 6.3.3 - March 9, 2017 =
842
+ * New: Malicious IPs are now preemptively blocked by a regularly-updated blocklist. [Premium Feature]
843
  * Improvement: Better layout and display for mobile screen sizes.
844
  * Improvement: Dashboard chart data is now updated more frequently.
845
  * Fix: Fixed database errors on notifications page on multisite installations.
915
  * Improvement: Added additional contextual help links.
916
  * Improvement: Significant performance improvement for determining the connecting IP.
917
  * Improvement: Better messaging for two-factor recovery codes.
918
+ * Fix: Adjusted message when trying to block an IP in the allowlist.
919
  * Fix: Error log download links now work on Windows servers.
920
  * Fix: Avoid running out of memory when viewing very large activity logs.
921
  * Fix: Fixed warning that could be logged when following an unlock email link.
949
  * Improvement: Reworked blocking for IP ranges, country blocking, and direct IP blocking to minimize server impact when under attack.
950
  * Improvement: Live traffic better indicates the action taken by country blocking when it redirects a visitor.
951
  * Improvement: Added support for finding server logs to the Diagnostics page to help with troubleshooting.
952
+ * Improvement: Allowlisted StatusCake IP addresses.
953
  * Improvement: Updated GeoIP database.
954
  * Improvement: Disabling Wordfence now sends an alert.
955
  * Improvement: Improved detection for uploaded PHP content in the firewall.
956
  * Fix: Eliminated memory-related errors resulting from the scan on sites with very large numbers of issues and low memory.
957
  * Fix: Fixed admin page layout for sites using RTL languages.
958
  * Fix: Reduced overhead of the dashboard widget.
959
+ * Fix: Improved performance of checking for Allowlisted IPs.
960
  * Fix: Changes to the default plugin hello.php are now detected correctly in scans.
961
  * Fix: Fixed IPv6 warning in the dashboard widget.
962
 
1000
  * Improvement: Added Web Application Firewall activity to Wordfence summary email.
1001
  * Fix: Now using 503 response code in the page displayed when an IP is locked out.
1002
  * Fix: `wflogs` directory is now correctly removed on uninstall.
1003
+ * Fix: Fixed recently introduced bug which caused the Allowlisted 404 URLs feature to no longer work.
1004
  * Fix: Added try/catch to uncaught exception thrown when pinging the API key.
1005
  * Improvement: Improved performance of the Live Traffic page in Firefox.
1006
  * Improvement: Updated GeoIP database.
1007
 
1008
  = 6.1.15 - August 25, 2016 =
1009
  * Improvement: Removed file-based config caching, added support for caching via WordPress's object cache.
1010
+ * Improvement: Allowlisted Uptime Robot's IP range.
1011
  * Fix: Notify users if suPHP_ConfigPath is in their WAF setup, and prompt to update Extended Protection.
1012
  * Fix: Fixed bug with allowing logins on admin accounts that are not fully activated with invalid 2FA codes when 2FA is required for all admins.
1013
  * Fix: Removed usage of `wp_get_sites()` which was deprecated in WordPress 4.6.
1031
  * Fix: Fixed bug with specific Advanced Blocking user-agent patterns causing 500 errors.
1032
  * Improvement: Plugin updates are now only a critical issue if there is a security related fix, and a warning otherwise. A link to the changelog is included.
1033
  * Fix: Added group writable permissions to Firewall's configuration files.
1034
+ * Improvement: Changed allowlist entry area to textbox on options page.
1035
  * Fix: Move flags and logo served from wordfence.com over to locally hosted files.
1036
  * Fix: Fixed issues with scan in WordPress 4.6 beta.
1037
  * Fix: Fixed bug where Firewall rules could be missing on some sites running IIS.
1053
  * Improvement: Added a method to view which files are currently used for WAF and to remove without reinstalling Wordfence.
1054
  * Improvement: Changed rule compilation to use atomic writes.
1055
  * Improvement: Removed security levels from Options page.
1056
+ * Improvement: Added option to disable ajaxwatcher (for allowlisting only for Admins) on the front end.
1057
 
1058
  = 6.1.8 - May 26, 2016 =
1059
  * Fix: Change wfConfig::set_ser to split large objects into multiple queries.
1080
  * Fix: Fixed bug with 2FA not properly handling email address login.
1081
  * Fix: Show logins/logouts when Live Traffic is disabled.
1082
  * Fix: Fixed bug with PCRE versions < 7.0 (repeated subpattern is too long).
1083
+ * Fix: Now able to delete allowlisted URL/params containing ampersands and non-UTF8 characters.
1084
  * Improvement: Reduced 2FA activation code to expire after 30 days.
1085
  * Improvement: Live Traffic now only shows verified Googlebot under Google Crawler filter for new visits.
1086
  * Improvement: Adjusted permissions on Firewall log/config files to be 0640.
1098
 
1099
  = 6.1.4 - April 20, 2016 =
1100
  * Fix: Fixed potential bug with 'stored data not found after a fork. Got type: boolean'.
1101
+ * Improvement: Added bulk actions and filters to WAF allowlist table.
1102
  * Improvement: Added a check while in learning mode to verify the response is not 404 before whitelising.
1103
  * Fix: Added index to attackLogTime. wfHits trimmed on runInstall now.
1104
  * Fix: Fixed attack data sync for hosts that cannot use wp-cron.
1122
  * Fix: Fixed bug with multiple API calls to 'get_known_files'.
1123
 
1124
  = 6.1.2 - April 12, 2016 =
1125
+ * Fix: Fixed fatal error when using a allowlisted IPv6 range and connecting with an IPv6 address.
1126
 
1127
  = 6.1.1 - April 12, 2016 =
1128
  * Enhancement: Added Web Application Firewall
vendor/wordfence/wf-waf/src/lib/rules.php CHANGED
@@ -775,6 +775,9 @@ class wfWAFRuleComparison implements wfWAFRuleInterface {
775
 
776
  foreach ($files as $file) {
777
  if ($file['name'] == (string) $subject) {
 
 
 
778
  $fh = @fopen($file['tmp_name'], 'r');
779
  if (!$fh) {
780
  continue;
@@ -836,6 +839,9 @@ class wfWAFRuleComparison implements wfWAFRuleInterface {
836
 
837
  foreach ($files as $file) {
838
  if ($file['name'] == (string) $subject) {
 
 
 
839
  $fh = @fopen($file['tmp_name'], 'r');
840
  if (!$fh) {
841
  continue;
775
 
776
  foreach ($files as $file) {
777
  if ($file['name'] == (string) $subject) {
778
+ if (!is_file($file['tmp_name'])) {
779
+ continue;
780
+ }
781
  $fh = @fopen($file['tmp_name'], 'r');
782
  if (!$fh) {
783
  continue;
839
 
840
  foreach ($files as $file) {
841
  if ($file['name'] == (string) $subject) {
842
+ if (!is_file($file['tmp_name'])) {
843
+ continue;
844
+ }
845
  $fh = @fopen($file['tmp_name'], 'r');
846
  if (!$fh) {
847
  continue;
vendor/wordfence/wf-waf/src/lib/waf.php CHANGED
@@ -245,14 +245,14 @@ auEa+7b+FGTKs7dUo2BNGR7OVifK4GZ8w/ajS0TelhrSRi3BBQCGXLzUO/UURUAh
245
  if ($path && $paramKey && $ruleID) {
246
  $this->whitelistRuleForParam($path, $paramKey, $ruleID, array(
247
  'timestamp' => time(),
248
- 'description' => 'Whitelisted by via false positive dialog',
249
  'source' => 'false-positive',
250
  'ip' => $request->getIP(),
251
  ));
252
  $whitelistCount++;
253
  }
254
  }
255
- exit("Successfully whitelisted $whitelistCount params.");
256
  }
257
  }
258
 
@@ -1261,7 +1261,7 @@ HTML
1261
 
1262
  $data = array(
1263
  'timestamp' => time(),
1264
- 'description' => 'Whitelisted while in Learning Mode.',
1265
  'source' => 'learning-mode',
1266
  'ip' => $this->getRequest()->getIP(),
1267
  );
245
  if ($path && $paramKey && $ruleID) {
246
  $this->whitelistRuleForParam($path, $paramKey, $ruleID, array(
247
  'timestamp' => time(),
248
+ 'description' => 'Allowlisted by via false positive dialog',
249
  'source' => 'false-positive',
250
  'ip' => $request->getIP(),
251
  ));
252
  $whitelistCount++;
253
  }
254
  }
255
+ exit("Successfully allowlisted $whitelistCount params.");
256
  }
257
  }
258
 
1261
 
1262
  $data = array(
1263
  'timestamp' => time(),
1264
+ 'description' => 'Allowlisted while in Learning Mode.',
1265
  'source' => 'learning-mode',
1266
  'ip' => $this->getRequest()->getIP(),
1267
  );
vendor/wordfence/wf-waf/src/views/403-roadblock.php CHANGED
@@ -363,7 +363,7 @@ foreach ($waf->getFailedRules() as $paramKey => $categories) {
363
  <?php endif; ?>
364
  <?php if ($urlParamsToWhitelist): ?>
365
  <hr>
366
- <p><?php echo wfWAFI18n::__('If you are an administrator and you are certain this is a false positive, you can automatically whitelist this request and repeat the same action.') ?></p>
367
 
368
  <form id="whitelist-form" action="<?php echo htmlentities($waf->getRequest()->getPath(), ENT_QUOTES, 'utf-8') ?>" method="post">
369
  <input type="hidden" name="wfwaf-false-positive-params" value="<?php echo htmlentities(wfWAFUtils::json_encode($urlParamsToWhitelist), ENT_QUOTES, 'utf-8') ?>">
@@ -372,11 +372,11 @@ foreach ($waf->getFailedRules() as $paramKey => $categories) {
372
  <div id="whitelist-actions">
373
  <p><label><input id="verified-false-positive-checkbox" type="checkbox" name="wfwaf-false-positive-verified" value="1"> <em><?php echo wfWAFI18n::__('I am certain this is a false positive.') ?></em></label></p>
374
 
375
- <p><button id="whitelist-button" type="submit"><?php echo wfWAFI18n::__('Whitelist This Action') ?></button></p>
376
  </div>
377
 
378
  <p id="success" style="color: #35b13a; font-weight: bold; display: none"><em><?php echo wfWAFI18n::__('All set! You can refresh the page to try this action again.') ?></em></p>
379
- <p id="error" style="color: #dd422c; font-weight: bold; display: none"><em><?php echo wfWAFI18n::__('Something went wrong whitelisting this request. You can try setting the Firewall Status to Learning Mode under Web App Firewall in the Wordfence menu, and retry this same action.') ?></em></p>
380
  </form>
381
  <script>
382
  var whitelistButton = document.getElementById('whitelist-button');
@@ -391,7 +391,7 @@ foreach ($waf->getFailedRules() as $paramKey => $categories) {
391
  evt.preventDefault();
392
  var request = new XMLHttpRequest();
393
  request.addEventListener("load", function() {
394
- if (this.status === 200 && this.responseText.indexOf('Successfully whitelisted') > -1) {
395
  document.getElementById('whitelist-actions').style.display = 'none';
396
  document.getElementById('success').style.display = 'block';
397
  } else {
363
  <?php endif; ?>
364
  <?php if ($urlParamsToWhitelist): ?>
365
  <hr>
366
+ <p><?php echo wfWAFI18n::__('If you are an administrator and you are certain this is a false positive, you can automatically allowlist this request and repeat the same action.') ?></p>
367
 
368
  <form id="whitelist-form" action="<?php echo htmlentities($waf->getRequest()->getPath(), ENT_QUOTES, 'utf-8') ?>" method="post">
369
  <input type="hidden" name="wfwaf-false-positive-params" value="<?php echo htmlentities(wfWAFUtils::json_encode($urlParamsToWhitelist), ENT_QUOTES, 'utf-8') ?>">
372
  <div id="whitelist-actions">
373
  <p><label><input id="verified-false-positive-checkbox" type="checkbox" name="wfwaf-false-positive-verified" value="1"> <em><?php echo wfWAFI18n::__('I am certain this is a false positive.') ?></em></label></p>
374
 
375
+ <p><button id="whitelist-button" type="submit"><?php echo wfWAFI18n::__('Allowlist This Action') ?></button></p>
376
  </div>
377
 
378
  <p id="success" style="color: #35b13a; font-weight: bold; display: none"><em><?php echo wfWAFI18n::__('All set! You can refresh the page to try this action again.') ?></em></p>
379
+ <p id="error" style="color: #dd422c; font-weight: bold; display: none"><em><?php echo wfWAFI18n::__('Something went wrong allowlisting this request. You can try setting the Firewall Status to Learning Mode under Web App Firewall in the Wordfence menu, and retry this same action.') ?></em></p>
380
  </form>
381
  <script>
382
  var whitelistButton = document.getElementById('whitelist-button');
391
  evt.preventDefault();
392
  var request = new XMLHttpRequest();
393
  request.addEventListener("load", function() {
394
+ if (this.status === 200 && this.responseText.indexOf('Successfully allowlisted') > -1) {
395
  document.getElementById('whitelist-actions').style.display = 'none';
396
  document.getElementById('success').style.display = 'block';
397
  } else {
views/blocking/blocking-create.php CHANGED
@@ -260,7 +260,7 @@ $wfBlockRange = filter_input(INPUT_GET, 'wfBlockRange', FILTER_DEFAULT, FILTER_R
260
  .off('click.wfselect2-copy')
261
  .on('click.wfselect2-copy', function(e) {
262
  var opt = $(this).data('wfselect2-opt');
263
- opt.attr('selected', false);
264
  opt.parents('select').trigger('change');
265
  }).data('wfselect2-opt', $(value));
266
  list.append(li);
260
  .off('click.wfselect2-copy')
261
  .on('click.wfselect2-copy', function(e) {
262
  var opt = $(this).data('wfselect2-opt');
263
+ opt.prop('selected', false);
264
  opt.parents('select').trigger('change');
265
  }).data('wfselect2-opt', $(value));
266
  list.append(li);
views/dashboard/option-howgetips.php CHANGED
@@ -122,7 +122,7 @@ $selectOptions = array(
122
  var option = optionElement.data('option');
123
  var originalValue = optionElement.data('originalValue');
124
 
125
- $(this).attr('checked', originalValue == $(this).attr('value'));
126
  });
127
 
128
  $('#howGetIPs-trusted-proxies textarea').each(function() {
122
  var option = optionElement.data('option');
123
  var originalValue = optionElement.data('originalValue');
124
 
125
+ $(this).prop('checked', originalValue == $(this).attr('value'));
126
  });
127
 
128
  $('#howGetIPs-trusted-proxies textarea').each(function() {
views/diagnostics/text.php CHANGED
@@ -167,7 +167,7 @@ $wordPressValues = array(
167
  'IMAGE_EDIT_OVERWRITE' => array('description' => __('Overwrite image edits when restoring the original', 'wordfence'), 'value' => (defined('IMAGE_EDIT_OVERWRITE') && IMAGE_EDIT_OVERWRITE ? __('Yes', 'wordfence') : __('No', 'wordfence'))),
168
  'FORCE_SSL_ADMIN' => array('description' => __('Force SSL for administrative logins', 'wordfence'), 'value' => (defined('FORCE_SSL_ADMIN') && FORCE_SSL_ADMIN ? __('Yes', 'wordfence') : __('No', 'wordfence'))),
169
  'WP_HTTP_BLOCK_EXTERNAL' => array('description' => __('Block external URL requests', 'wordfence'), 'value' => (defined('WP_HTTP_BLOCK_EXTERNAL') && WP_HTTP_BLOCK_EXTERNAL ? __('Yes', 'wordfence') : __('No', 'wordfence'))),
170
- 'WP_ACCESSIBLE_HOSTS' => __('Whitelisted hosts', 'wordfence'),
171
  'WP_AUTO_UPDATE_CORE' => array('description' => __('Automatic WP Core updates', 'wordfence'), 'value' => defined('WP_AUTO_UPDATE_CORE') ? (is_bool(WP_AUTO_UPDATE_CORE) ? (WP_AUTO_UPDATE_CORE ? __('Everything', 'wordfence') : __('None', 'wordfence')) : WP_AUTO_UPDATE_CORE) : __('Default', 'wordfence')),
172
  'WP_PROXY_HOST' => array('description' => __('Hostname for a proxy server', 'wordfence'), 'value' => defined('WP_PROXY_HOST') ? WP_PROXY_HOST : __('(not set)', 'wordfence')),
173
  'WP_PROXY_PORT' => array('description' => __('Port for a proxy server', 'wordfence'), 'value' => defined('WP_PROXY_PORT') ? WP_PROXY_PORT : __('(not set)', 'wordfence')),
167
  'IMAGE_EDIT_OVERWRITE' => array('description' => __('Overwrite image edits when restoring the original', 'wordfence'), 'value' => (defined('IMAGE_EDIT_OVERWRITE') && IMAGE_EDIT_OVERWRITE ? __('Yes', 'wordfence') : __('No', 'wordfence'))),
168
  'FORCE_SSL_ADMIN' => array('description' => __('Force SSL for administrative logins', 'wordfence'), 'value' => (defined('FORCE_SSL_ADMIN') && FORCE_SSL_ADMIN ? __('Yes', 'wordfence') : __('No', 'wordfence'))),
169
  'WP_HTTP_BLOCK_EXTERNAL' => array('description' => __('Block external URL requests', 'wordfence'), 'value' => (defined('WP_HTTP_BLOCK_EXTERNAL') && WP_HTTP_BLOCK_EXTERNAL ? __('Yes', 'wordfence') : __('No', 'wordfence'))),
170
+ 'WP_ACCESSIBLE_HOSTS' => __('Allowlisted hosts', 'wordfence'),
171
  'WP_AUTO_UPDATE_CORE' => array('description' => __('Automatic WP Core updates', 'wordfence'), 'value' => defined('WP_AUTO_UPDATE_CORE') ? (is_bool(WP_AUTO_UPDATE_CORE) ? (WP_AUTO_UPDATE_CORE ? __('Everything', 'wordfence') : __('None', 'wordfence')) : WP_AUTO_UPDATE_CORE) : __('Default', 'wordfence')),
172
  'WP_PROXY_HOST' => array('description' => __('Hostname for a proxy server', 'wordfence'), 'value' => defined('WP_PROXY_HOST') ? WP_PROXY_HOST : __('(not set)', 'wordfence')),
173
  'WP_PROXY_PORT' => array('description' => __('Port for a proxy server', 'wordfence'), 'value' => defined('WP_PROXY_PORT') ? WP_PROXY_PORT : __('(not set)', 'wordfence')),
views/scanner/options-group-general.php CHANGED
@@ -29,7 +29,7 @@ if (!isset($collapseable)) {
29
  <ul class="wf-block-list">
30
  <?php
31
  $options = array(
32
- array('key' => 'scansEnabled_checkGSB', 'label' => __('Check if this website is on a domain blacklist', 'wordfence'), 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_SCAN_OPTION_CHECK_SITE_BLACKLISTED), 'premium' => true, 'subtitleHTML' => __('<em>Reputation check</em>', 'wordfence')),
33
  array('key' => 'spamvertizeCheck', 'label' => __('Check if this website is being "Spamvertised"', 'wordfence'), 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_SCAN_OPTION_CHECK_SITE_SPAMVERTIZED), 'premium' => true, 'subtitleHTML' => __('<em>Reputation check</em>', 'wordfence')),
34
  array('key' => 'checkSpamIP', 'label' => __('Check if this website IP is generating spam', 'wordfence'), 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_SCAN_OPTION_CHECK_IP_SPAMMING), 'premium' => true, 'subtitleHTML' => __('<em>Reputation check</em>', 'wordfence')),
35
  array('key' => 'scansEnabled_checkHowGetIPs', 'label' => __('Scan for misconfigured How does Wordfence get IPs', 'wordfence'), 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_SCAN_OPTION_CHECK_MISCONFIGURED_HOW_GET_IPS)),
29
  <ul class="wf-block-list">
30
  <?php
31
  $options = array(
32
+ array('key' => 'scansEnabled_checkGSB', 'label' => __('Check if this website is on a domain blocklist', 'wordfence'), 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_SCAN_OPTION_CHECK_SITE_BLACKLISTED), 'premium' => true, 'subtitleHTML' => __('<em>Reputation check</em>', 'wordfence')),
33
  array('key' => 'spamvertizeCheck', 'label' => __('Check if this website is being "Spamvertised"', 'wordfence'), 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_SCAN_OPTION_CHECK_SITE_SPAMVERTIZED), 'premium' => true, 'subtitleHTML' => __('<em>Reputation check</em>', 'wordfence')),
34
  array('key' => 'checkSpamIP', 'label' => __('Check if this website IP is generating spam', 'wordfence'), 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_SCAN_OPTION_CHECK_IP_SPAMMING), 'premium' => true, 'subtitleHTML' => __('<em>Reputation check</em>', 'wordfence')),
35
  array('key' => 'scansEnabled_checkHowGetIPs', 'label' => __('Scan for misconfigured How does Wordfence get IPs', 'wordfence'), 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_SCAN_OPTION_CHECK_MISCONFIGURED_HOW_GET_IPS)),
views/scanner/scan-progress.php CHANGED
@@ -29,7 +29,7 @@ $status = $scanner->stageStatus();
29
  echo wfView::create('scanner/scan-progress-element', array(
30
  'scanner' => $scanner,
31
  'id' => 'wf-scan-blacklist',
32
- 'title' => __('Blacklist Check', 'wordfence'),
33
  'status' => $status[wfScanner::STAGE_BLACKLIST_CHECK],
34
  ))->render();
35
 
29
  echo wfView::create('scanner/scan-progress-element', array(
30
  'scanner' => $scanner,
31
  'id' => 'wf-scan-blacklist',
32
+ 'title' => __('Blocklist Check', 'wordfence'),
33
  'status' => $status[wfScanner::STAGE_BLACKLIST_CHECK],
34
  ))->render();
35
 
views/scanner/scanner-status.php CHANGED
@@ -51,7 +51,7 @@ if (!defined('WORDFENCE_VERSION')) { exit; }
51
  <?php if ($scanner->signatureMode() == wfScanner::SIGNATURE_MODE_COMMUNITY): ?>
52
  <div>
53
  <p><h3><?php _e('Premium Protection Disabled', 'wordfence'); ?></h3></p>
54
- <p><?php printf(__('As a free Wordfence user, you are currently using the Community version of the Threat Defense Feed. Premium users are protected by an additional %d firewall rules and malware signatures as well as the Wordfence real-time IP blacklist. Upgrade to Premium today to improve your protection.', 'wordfence'), ($dashboard->tdfPremium - $dashboard->tdfCommunity)); ?></p>
55
  <p><a class="wf-btn wf-btn-primary wf-btn-callout-subtle" href="https://www.wordfence.com/gnl1scanUpgrade/wordfence-signup/#premium-order-form" target="_blank" rel="noopener noreferrer"><?php _e('Upgrade to Premium', 'wordfence'); ?></a>&nbsp;&nbsp;<a class="wf-btn wf-btn-callout-subtle wf-btn-default" href="https://www.wordfence.com/gnl1scanLearn/wordfence-signup/" target="_blank" rel="noopener noreferrer"><?php _e('Learn More', 'wordfence'); ?></a></p>
56
  </div>
57
  <?php else: ?>
51
  <?php if ($scanner->signatureMode() == wfScanner::SIGNATURE_MODE_COMMUNITY): ?>
52
  <div>
53
  <p><h3><?php _e('Premium Protection Disabled', 'wordfence'); ?></h3></p>
54
+ <p><?php printf(__('As a free Wordfence user, you are currently using the Community version of the Threat Defense Feed. Premium users are protected by an additional %d firewall rules and malware signatures as well as the Wordfence real-time IP blocklist. Upgrade to Premium today to improve your protection.', 'wordfence'), ($dashboard->tdfPremium - $dashboard->tdfCommunity)); ?></p>
55
  <p><a class="wf-btn wf-btn-primary wf-btn-callout-subtle" href="https://www.wordfence.com/gnl1scanUpgrade/wordfence-signup/#premium-order-form" target="_blank" rel="noopener noreferrer"><?php _e('Upgrade to Premium', 'wordfence'); ?></a>&nbsp;&nbsp;<a class="wf-btn wf-btn-callout-subtle wf-btn-default" href="https://www.wordfence.com/gnl1scanLearn/wordfence-signup/" target="_blank" rel="noopener noreferrer"><?php _e('Learn More', 'wordfence'); ?></a></p>
56
  </div>
57
  <?php else: ?>
views/scanner/site-cleaning-bottom.php CHANGED
@@ -9,8 +9,8 @@ if (!defined('WORDFENCE_VERSION')) { exit; }
9
  <ul class="wf-block-list">
10
  <li>
11
  <div class="wf-flex-vertical">
12
- <h3 class="wf-center"><?php _e('Need help from a web security expert?', 'wordfence'); ?></h3>
13
- <p class="wf-center wf-no-top"><?php _e('Whether you want to proactively lock your site down or it has already been hacked, we\'re here to help. All services include a detailed report and a 90-day guarantee for an affordable price. <strong class="wf-blue">Includes a 1-year Premium license.</strong>', 'wordfence'); ?></p>
14
  <p class="wf-center wf-add-bottom">
15
  <a class="wf-btn wf-btn-default wf-btn-callout-subtle" href="https://www.wordfence.com/gnl1scanLowerAd/site-security-audit/" target="_blank" rel="noopener noreferrer"><?php _e('Audit My Site Security', 'wordfence'); ?></a>
16
  &nbsp;&nbsp;&nbsp;
9
  <ul class="wf-block-list">
10
  <li>
11
  <div class="wf-flex-vertical">
12
+ <h3 class="wf-center"><?php _e('Need help from the WordPress security experts?', 'wordfence'); ?></h3>
13
+ <p class="wf-center wf-no-top"><?php _e('Wordfence security analysts can help you tighten site security or remove an active infection for good. All security services include a detailed report and a <strong class="wf-blue">Wordfence Premium license, with a 1-year clean site guarantee.</strong>', 'wordfence'); ?></p>
14
  <p class="wf-center wf-add-bottom">
15
  <a class="wf-btn wf-btn-default wf-btn-callout-subtle" href="https://www.wordfence.com/gnl1scanLowerAd/site-security-audit/" target="_blank" rel="noopener noreferrer"><?php _e('Audit My Site Security', 'wordfence'); ?></a>
16
  &nbsp;&nbsp;&nbsp;
views/tours/login-security.php CHANGED
@@ -41,8 +41,8 @@
41
  </script>
42
  <script type="text/x-jquery-template" id="wfNewTour2">
43
  <div>
44
- <h3><?php _e('Individual Whitelisting', 'wordfence'); ?></h3>
45
- <p><?php _e('Two-factor authentication now has its own IP whitelist. If necessary, you can allow specific IP addresses or ranges to skip 2FA when logging in.', 'wordfence'); ?></p>
46
  <div class="wf-pointer-footer">
47
  <ul class="wf-tour-pagination">
48
  <li>&bullet;</li>
41
  </script>
42
  <script type="text/x-jquery-template" id="wfNewTour2">
43
  <div>
44
+ <h3><?php _e('Individual Allowlisting', 'wordfence'); ?></h3>
45
+ <p><?php _e('Two-factor authentication now has its own IP allowlist. If necessary, you can allow specific IP addresses or ranges to skip 2FA when logging in.', 'wordfence'); ?></p>
46
  <div class="wf-pointer-footer">
47
  <ul class="wf-tour-pagination">
48
  <li>&bullet;</li>
views/waf/debug.php CHANGED
@@ -86,7 +86,7 @@ $failedRules = array();
86
  try {
87
  $waf->runRules();
88
  } catch (wfWAFAllowException $e) {
89
- $result = '<strong class="ok">Whitelisted</strong>';
90
  } catch (wfWAFBlockException $e) {
91
  $result = '<strong class="error">Blocked</strong>';
92
  $failedRules = $waf->getFailedRules();
86
  try {
87
  $waf->runRules();
88
  } catch (wfWAFAllowException $e) {
89
+ $result = '<strong class="ok">Allowlisted</strong>';
90
  } catch (wfWAFBlockException $e) {
91
  $result = '<strong class="error">Blocked</strong>';
92
  $failedRules = $waf->getFailedRules();
views/waf/option-whitelist.php CHANGED
@@ -2,7 +2,7 @@
2
  if (!defined('WORDFENCE_VERSION')) { exit; }
3
  ?>
4
  <ul id="wf-option-wafWhitelist" class="wf-option wf-flex-vertical wf-flex-full-width">
5
- <li><strong><?php _e('Add Whitelisted URL/Param', 'wordfence'); ?></strong> <a href="<?php echo wfSupportController::esc_supportURL(wfSupportController::ITEM_FIREWALL_WAF_WHITELIST); ?>" target="_blank" rel="noopener noreferrer" class="wf-inline-help"><i class="wf-fa wf-fa-question-circle-o" aria-hidden="true"></i></a> <?php _e('The URL/parameters in this table will not be tested by the firewall. They are typically added while the firewall is in Learning Mode or by an admin who identifies a particular action/request is a false positive.', 'wordfence'); ?></li>
6
  <li id="whitelist-form">
7
  <div class="wf-form-inline">
8
  <div class="wf-form-group">
@@ -50,14 +50,14 @@ if (!defined('WORDFENCE_VERSION')) { exit; }
50
  var key = pathKey + '|' + paramKey;
51
  var matches = $('#waf-whitelisted-urls-wrapper .whitelist-table > tbody > tr[data-key="' + key + '"]');
52
  if (matches.length > 0) {
53
- WFAD.colorboxModal((WFAD.isSmallScreen ? '300px' : '400px'), '<?php esc_attr_e('Whitelist Entry Exists', 'wordfence'); ?>', '<?php esc_attr_e('A whitelist entry for this URL and parameter already exists.', 'wordfence'); ?>');
54
  return;
55
  }
56
 
57
  //Generate entry and add to display data set
58
  var entry = {
59
  data: {
60
- description: "<?php esc_attr_e('Whitelisted via Firewall Options page', 'wordfence'); ?>",
61
  source: 'waf-options',
62
  disabled: false,
63
  ip: "<?php echo esc_attr(wfUtils::getIP()); ?>",
2
  if (!defined('WORDFENCE_VERSION')) { exit; }
3
  ?>
4
  <ul id="wf-option-wafWhitelist" class="wf-option wf-flex-vertical wf-flex-full-width">
5
+ <li><strong><?php _e('Add Allowlisted URL/Param', 'wordfence'); ?></strong> <a href="<?php echo wfSupportController::esc_supportURL(wfSupportController::ITEM_FIREWALL_WAF_WHITELIST); ?>" target="_blank" rel="noopener noreferrer" class="wf-inline-help"><i class="wf-fa wf-fa-question-circle-o" aria-hidden="true"></i></a> <?php _e('The URL/parameters in this table will not be tested by the firewall. They are typically added while the firewall is in Learning Mode or by an admin who identifies a particular action/request is a false positive.', 'wordfence'); ?></li>
6
  <li id="whitelist-form">
7
  <div class="wf-form-inline">
8
  <div class="wf-form-group">
50
  var key = pathKey + '|' + paramKey;
51
  var matches = $('#waf-whitelisted-urls-wrapper .whitelist-table > tbody > tr[data-key="' + key + '"]');
52
  if (matches.length > 0) {
53
+ WFAD.colorboxModal((WFAD.isSmallScreen ? '300px' : '400px'), '<?php esc_attr_e('Allowlist Entry Exists', 'wordfence'); ?>', '<?php esc_attr_e('An allowlist entry for this URL and parameter already exists.', 'wordfence'); ?>');
54
  return;
55
  }
56
 
57
  //Generate entry and add to display data set
58
  var entry = {
59
  data: {
60
+ description: "<?php esc_attr_e('Allowlisted via Firewall Options page', 'wordfence'); ?>",
61
  source: 'waf-options',
62
  disabled: false,
63
  ip: "<?php echo esc_attr(wfUtils::getIP()); ?>",
views/waf/options-group-advanced-firewall.php CHANGED
@@ -49,9 +49,9 @@ if (!isset($collapseable)) {
49
  echo wfView::create('options/option-textarea', array(
50
  'textOptionName' => 'whitelisted',
51
  'textValue' => wfUtils::cleanupOneEntryPerLine(wfConfig::get('whitelisted')),
52
- 'title' => __('Whitelisted IP addresses that bypass all rules', 'wordfence'),
53
  'alignTitle' => 'top',
54
- 'subtitleHTML' => __('Whitelisted IPs must be separated by commas or placed on separate lines. You can specify ranges using the following formats: 127.0.0.1/24, 127.0.0.[1-100], or 127.0.0.1-127.0.1.100<br/>Wordfence automatically whitelists <a href="http://en.wikipedia.org/wiki/Private_network" target="_blank" rel="noopener noreferrer">private networks</a> because these are not routable on the public Internet.', 'wordfence'),
55
  'subtitlePosition' => 'value',
56
  'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_WAF_OPTION_WHITELISTED_IPS),
57
  ))->render();
@@ -85,7 +85,7 @@ if (!isset($collapseable)) {
85
 
86
  echo wfView::create('options/option-toggled-multiple', array(
87
  'options' => $options,
88
- 'title' => __('Whitelisted services', 'wordfence'),
89
  'id' => 'wf-option-whitelistedServices',
90
  'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_WAF_OPTION_WHITELISTED_SERVICES),
91
  ))->render();
49
  echo wfView::create('options/option-textarea', array(
50
  'textOptionName' => 'whitelisted',
51
  'textValue' => wfUtils::cleanupOneEntryPerLine(wfConfig::get('whitelisted')),
52
+ 'title' => __('Allowlisted IP addresses that bypass all rules', 'wordfence'),
53
  'alignTitle' => 'top',
54
+ 'subtitleHTML' => __('Allowlisted IPs must be separated by commas or placed on separate lines. You can specify ranges using the following formats: 127.0.0.1/24, 127.0.0.[1-100], or 127.0.0.1-127.0.1.100<br/>Wordfence automatically allowlists <a href="http://en.wikipedia.org/wiki/Private_network" target="_blank" rel="noopener noreferrer">private networks</a> because these are not routable on the public Internet.', 'wordfence'),
55
  'subtitlePosition' => 'value',
56
  'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_WAF_OPTION_WHITELISTED_IPS),
57
  ))->render();
85
 
86
  echo wfView::create('options/option-toggled-multiple', array(
87
  'options' => $options,
88
+ 'title' => __('Allowlisted services', 'wordfence'),
89
  'id' => 'wf-option-whitelistedServices',
90
  'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_WAF_OPTION_WHITELISTED_SERVICES),
91
  ))->render();
views/waf/options-group-basic-firewall.php CHANGED
@@ -461,14 +461,14 @@ if (!isset($collapseable)) {
461
  </script>
462
  </li>
463
  <li id="wf-option-disableWAFBlacklistBlocking" class="wf-flex-vertical wf-flex-align-left">
464
- <h3><?php esc_html_e('Real-Time IP Blacklist', 'wordfence'); ?></h3>
465
  <?php if ($firewall->ruleMode() == wfFirewall::RULE_MODE_COMMUNITY): ?>
466
- <p class="wf-no-top"><strong><?php _e('Premium Feature:', 'wordfence'); ?></strong> <?php _e('This feature blocks all traffic from IPs with a high volume of recent malicious activity using Wordfence\'s real-time blacklist.', 'wordfence'); ?></p>
467
  <p><a class="wf-btn wf-btn-primary wf-btn-callout-subtle" href="https://www.wordfence.com/gnl1blacklistUpgrade/wordfence-signup/#premium-order-form" target="_blank" rel="noopener noreferrer"><?php _e('Upgrade to Premium', 'wordfence'); ?></a>&nbsp;&nbsp;<a class="wf-btn wf-btn-callout-subtle wf-btn-default" href="https://www.wordfence.com/gnl1blacklistLearn/wordfence-signup/" target="_blank" rel="noopener noreferrer"><?php _e('Learn More', 'wordfence'); ?></a></p>
468
  <?php elseif ($firewall->isSubDirectoryInstallation()): ?>
469
  <p class="wf-no-top"><?php printf(__('You are currently running the Wordfence Web Application Firewall from another WordPress installation. Please <a href="%s">click here</a> to configure the Firewall to run correctly on this site.', 'wordfence'), esc_attr(network_admin_url('admin.php?page=WordfenceWAF&subpage=waf_options#configureAutoPrepend'))); ?></p>
470
  <?php else: ?>
471
- <p class="wf-no-top"><?php _e('This feature blocks all traffic from IPs with a high volume of recent malicious activity using Wordfence\'s real-time blacklist.', 'wordfence'); ?></p>
472
  <div class="wf-option wf-option-switch wf-padding-add-bottom" data-option-name="disableWAFBlacklistBlocking" data-original-value="<?php try { echo $config->getConfig('disableWAFBlacklistBlocking') ? '1': '0'; } catch (Exception $e) { echo 0; } ?>">
473
  <ul class="wf-switch" role="radiogroup">
474
  <?php
461
  </script>
462
  </li>
463
  <li id="wf-option-disableWAFBlacklistBlocking" class="wf-flex-vertical wf-flex-align-left">
464
+ <h3><?php esc_html_e('Real-Time IP Blocklist', 'wordfence'); ?></h3>
465
  <?php if ($firewall->ruleMode() == wfFirewall::RULE_MODE_COMMUNITY): ?>
466
+ <p class="wf-no-top"><strong><?php _e('Premium Feature:', 'wordfence'); ?></strong> <?php _e('This feature blocks all traffic from IPs with a high volume of recent malicious activity using Wordfence\'s real-time blocklist.', 'wordfence'); ?></p>
467
  <p><a class="wf-btn wf-btn-primary wf-btn-callout-subtle" href="https://www.wordfence.com/gnl1blacklistUpgrade/wordfence-signup/#premium-order-form" target="_blank" rel="noopener noreferrer"><?php _e('Upgrade to Premium', 'wordfence'); ?></a>&nbsp;&nbsp;<a class="wf-btn wf-btn-callout-subtle wf-btn-default" href="https://www.wordfence.com/gnl1blacklistLearn/wordfence-signup/" target="_blank" rel="noopener noreferrer"><?php _e('Learn More', 'wordfence'); ?></a></p>
468
  <?php elseif ($firewall->isSubDirectoryInstallation()): ?>
469
  <p class="wf-no-top"><?php printf(__('You are currently running the Wordfence Web Application Firewall from another WordPress installation. Please <a href="%s">click here</a> to configure the Firewall to run correctly on this site.', 'wordfence'), esc_attr(network_admin_url('admin.php?page=WordfenceWAF&subpage=waf_options#configureAutoPrepend'))); ?></p>
470
  <?php else: ?>
471
+ <p class="wf-no-top"><?php _e('This feature blocks all traffic from IPs with a high volume of recent malicious activity using Wordfence\'s real-time blocklist.', 'wordfence'); ?></p>
472
  <div class="wf-option wf-option-switch wf-padding-add-bottom" data-option-name="disableWAFBlacklistBlocking" data-original-value="<?php try { echo $config->getConfig('disableWAFBlacklistBlocking') ? '1': '0'; } catch (Exception $e) { echo 0; } ?>">
473
  <ul class="wf-switch" role="radiogroup">
474
  <?php
views/waf/options-group-brute-force.php CHANGED
@@ -216,6 +216,18 @@ if (!isset($collapseable)) {
216
  ))->render();
217
  ?>
218
  </li>
 
 
 
 
 
 
 
 
 
 
 
 
219
  <li>
220
  <?php
221
  echo wfView::create('options/option-toggled', array(
216
  ))->render();
217
  ?>
218
  </li>
219
+ <li>
220
+ <?php
221
+ echo wfView::create('options/option-toggled', array(
222
+ 'optionName' => 'loginSec_disableApplicationPasswords',
223
+ 'enabledValue' => 1,
224
+ 'disabledValue' => 0,
225
+ 'value' => wfConfig::get('loginSec_disableApplicationPasswords') ? 1 : 0,
226
+ 'title' => __('Disable WordPress application passwords', 'wordfence'),
227
+ 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_WAF_OPTION_DISABLE_APPLICATION_PASSWORDS),
228
+ ))->render();
229
+ ?>
230
+ </li>
231
  <li>
232
  <?php
233
  echo wfView::create('options/option-toggled', array(
views/waf/options-group-rate-limiting.php CHANGED
@@ -191,7 +191,7 @@ if (!isset($collapseable)) {
191
  echo wfView::create('options/option-textarea', array(
192
  'textOptionName' => 'allowed404s',
193
  'textValue' => wfUtils::cleanupOneEntryPerLine(wfConfig::get('allowed404s')),
194
- 'title' => __('Whitelisted 404 URLs', 'wordfence'),
195
  'subtitle' => __('These URL patterns will be excluded from the throttling rules used to limit crawlers.', 'wordfence'),
196
  'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_WAF_OPTION_WHITELISTED_404),
197
  ))->render();
191
  echo wfView::create('options/option-textarea', array(
192
  'textOptionName' => 'allowed404s',
193
  'textValue' => wfUtils::cleanupOneEntryPerLine(wfConfig::get('allowed404s')),
194
+ 'title' => __('Allowlisted 404 URLs', 'wordfence'),
195
  'subtitle' => __('These URL patterns will be excluded from the throttling rules used to limit crawlers.', 'wordfence'),
196
  'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_WAF_OPTION_WHITELISTED_404),
197
  ))->render();
views/waf/options-group-whitelisted.php CHANGED
@@ -23,7 +23,7 @@ if (!isset($collapseable)) {
23
  <div class="wf-block-header">
24
  <div class="wf-block-header-content">
25
  <div class="wf-block-title">
26
- <strong><?php _e('Whitelisted URLs', 'wordfence'); ?></strong>
27
  </div>
28
  <?php if ($collapseable): ?><div class="wf-block-header-action"><div class="wf-block-header-action-disclosure" role="checkbox" aria-checked="<?php echo (wfPersistenceController::shared()->isActive($stateKey) ? 'true' : 'false'); ?>" tabindex="0"></div></div><?php endif; ?>
29
  </div>
@@ -154,7 +154,7 @@ if (!isset($collapseable)) {
154
  {{/each}}
155
  {{if (whitelistedURLParams.length == 0)}}
156
  <tr>
157
- <td colspan="8"><?php _e('No whitelisted URLs currently set.', 'wordfence'); ?></td>
158
  </tr>
159
  {{/if}}
160
  </tbody>
23
  <div class="wf-block-header">
24
  <div class="wf-block-header-content">
25
  <div class="wf-block-title">
26
+ <strong><?php _e('Allowlisted URLs', 'wordfence'); ?></strong>
27
  </div>
28
  <?php if ($collapseable): ?><div class="wf-block-header-action"><div class="wf-block-header-action-disclosure" role="checkbox" aria-checked="<?php echo (wfPersistenceController::shared()->isActive($stateKey) ? 'true' : 'false'); ?>" tabindex="0"></div></div><?php endif; ?>
29
  </div>
154
  {{/each}}
155
  {{if (whitelistedURLParams.length == 0)}}
156
  <tr>
157
+ <td colspan="8"><?php _e('No allowlisted URLs currently set.', 'wordfence'); ?></td>
158
  </tr>
159
  {{/if}}
160
  </tbody>
waf/bootstrap.php CHANGED
@@ -232,7 +232,7 @@ class wfWAFWordPressObserver extends wfWAFBaseObserver {
232
  }
233
  $whitelistPattern = '/^(?:' . wfWAFUtils::substr($whitelistPattern, 0, -1) . ')$/i';
234
 
235
- wfWAFRule::create(wfWAF::getInstance(), 0x8000000, 'rule', 'whitelist', 0, 'User Supplied Whitelisted URL', 'allow',
236
  new wfWAFRuleComparisonGroup(
237
  new wfWAFRuleComparison(wfWAF::getInstance(), 'match', $whitelistPattern, array(
238
  'request.uri',
@@ -250,7 +250,7 @@ class wfWAFWordPressObserver extends wfWAFBaseObserver {
250
  foreach ($whitelistedIPs as $whitelistedIP) {
251
  $ipRange = new wfWAFUserIPRange($whitelistedIP);
252
  if ($ipRange->isIPInRange(wfWAF::getInstance()->getRequest()->getIP())) {
253
- throw new wfWAFAllowException('Wordfence whitelisted IP.');
254
  }
255
  }
256
  }
232
  }
233
  $whitelistPattern = '/^(?:' . wfWAFUtils::substr($whitelistPattern, 0, -1) . ')$/i';
234
 
235
+ wfWAFRule::create(wfWAF::getInstance(), 0x8000000, 'rule', 'whitelist', 0, 'User Supplied Allowlisted URL', 'allow',
236
  new wfWAFRuleComparisonGroup(
237
  new wfWAFRuleComparison(wfWAF::getInstance(), 'match', $whitelistPattern, array(
238
  'request.uri',
250
  foreach ($whitelistedIPs as $whitelistedIP) {
251
  $ipRange = new wfWAFUserIPRange($whitelistedIP);
252
  if ($ipRange->isIPInRange(wfWAF::getInstance()->getRequest()->getIP())) {
253
+ throw new wfWAFAllowException('Wordfence allowlisted IP.');
254
  }
255
  }
256
  }
wordfence.php CHANGED
@@ -4,7 +4,7 @@ Plugin Name: Wordfence Security
4
  Plugin URI: http://www.wordfence.com/
5
  Description: Wordfence Security - Anti-virus, Firewall and Malware Scan
6
  Author: Wordfence
7
- Version: 7.4.12
8
  Author URI: http://www.wordfence.com/
9
  Text Domain: wordfence
10
  Domain Path: /languages
@@ -17,8 +17,8 @@ if(defined('WP_INSTALLING') && WP_INSTALLING){
17
  if (!defined('ABSPATH')) {
18
  exit;
19
  }
20
- define('WORDFENCE_VERSION', '7.4.12');
21
- define('WORDFENCE_BUILD_NUMBER', '1603293147');
22
  define('WORDFENCE_BASENAME', function_exists('plugin_basename') ? plugin_basename(__FILE__) :
23
  basename(dirname(__FILE__)) . '/' . basename(__FILE__));
24
 
4
  Plugin URI: http://www.wordfence.com/
5
  Description: Wordfence Security - Anti-virus, Firewall and Malware Scan
6
  Author: Wordfence
7
+ Version: 7.4.14
8
  Author URI: http://www.wordfence.com/
9
  Text Domain: wordfence
10
  Domain Path: /languages
17
  if (!defined('ABSPATH')) {
18
  exit;
19
  }
20
+ define('WORDFENCE_VERSION', '7.4.14');
21
+ define('WORDFENCE_BUILD_NUMBER', '1607007971');
22
  define('WORDFENCE_BASENAME', function_exists('plugin_basename') ? plugin_basename(__FILE__) :
23
  basename(dirname(__FILE__)) . '/' . basename(__FILE__));
24