Yoast SEO - Version 11.1

Version Description

Download this release

Release Info

Developer Yoast
Plugin Icon 128x128 Yoast SEO
Version 11.1
Comparing to
See all releases

Code changes from version 11.0 to 11.1

Files changed (284) hide show
  1. admin/ajax.php +6 -6
  2. admin/ajax/class-recalculate-scores-ajax.php +7 -7
  3. admin/ajax/class-shortcode-filter.php +4 -4
  4. admin/ajax/class-yoast-dismissable-notice.php +4 -4
  5. admin/ajax/class-yoast-onpage-ajax.php +4 -4
  6. admin/ajax/class-yoast-plugin-conflict-ajax.php +7 -7
  7. admin/class-add-keyword-modal.php +1 -1
  8. admin/class-admin-asset-manager.php +8 -3
  9. admin/class-admin-init.php +14 -19
  10. admin/class-admin.php +16 -12
  11. admin/class-bulk-description-editor-list-table.php +3 -3
  12. admin/class-bulk-editor-list-table.php +21 -18
  13. admin/class-bulk-title-editor-list-table.php +4 -4
  14. admin/class-config.php +35 -7
  15. admin/class-customizer.php +11 -11
  16. admin/class-database-proxy.php +1 -1
  17. admin/class-export.php +5 -5
  18. admin/class-extensions.php +20 -20
  19. admin/class-gutenberg-compatibility.php +2 -2
  20. admin/class-help-center-item.php +1 -1
  21. admin/class-help-center.php +1 -1
  22. admin/class-keyword-synonyms-modal.php +1 -1
  23. admin/class-license-page-manager.php +1 -1
  24. admin/class-meta-columns.php +1 -1
  25. admin/class-meta-storage.php +1 -1
  26. admin/class-multiple-keywords-modal.php +1 -1
  27. admin/class-my-yoast-proxy.php +2 -2
  28. admin/class-option-tab.php +1 -1
  29. admin/class-option-tabs-formatter.php +1 -1
  30. admin/class-option-tabs.php +7 -7
  31. admin/class-paper-presenter.php +1 -1
  32. admin/class-plugin-compatibility.php +1 -1
  33. admin/class-plugin-conflict.php +1 -1
  34. admin/class-premium-popup.php +4 -4
  35. admin/class-primary-term-admin.php +6 -6
  36. admin/class-product-upsell-notice.php +2 -10
  37. admin/class-recalculate-scores.php +2 -2
  38. admin/class-social-admin.php +1 -1
  39. admin/class-yoast-alerts.php +14 -14
  40. admin/class-yoast-columns.php +1 -1
  41. admin/class-yoast-dashboard-widget.php +12 -5
  42. admin/class-yoast-form.php +10 -10
  43. admin/class-yoast-network-admin.php +1 -1
  44. admin/class-yoast-notification-center.php +61 -33
  45. admin/class-yoast-notification.php +16 -16
  46. admin/class-yoast-plugin-conflict.php +15 -15
  47. admin/config-ui/class-configuration-components.php +2 -2
  48. admin/config-ui/class-configuration-endpoint.php +3 -3
  49. admin/config-ui/class-configuration-options-adapter.php +10 -10
  50. admin/config-ui/class-configuration-service.php +10 -10
  51. admin/config-ui/class-configuration-storage.php +9 -9
  52. admin/config-ui/class-configuration-structure.php +1 -1
  53. admin/config-ui/class-configuration-translations.php +2 -2
  54. admin/config-ui/components/class-component-connect-google-search-console.php +5 -5
  55. admin/config-ui/components/class-component-mailchimp-signup.php +2 -2
  56. admin/config-ui/components/class-component-suggestions.php +1 -1
  57. admin/config-ui/components/interface-component.php +2 -2
  58. admin/config-ui/factories/class-factory-post-type.php +2 -2
  59. admin/config-ui/fields/class-field-choice-post-type.php +3 -3
  60. admin/config-ui/fields/class-field-choice.php +2 -2
  61. admin/config-ui/fields/class-field-company-logo.php +1 -1
  62. admin/config-ui/fields/class-field-company-name.php +1 -1
  63. admin/config-ui/fields/class-field-company-or-person.php +1 -1
  64. admin/config-ui/fields/class-field-connect-google-search-console.php +2 -2
  65. admin/config-ui/fields/class-field-environment.php +2 -2
  66. admin/config-ui/fields/class-field-google-search-console-intro.php +1 -1
  67. admin/config-ui/fields/class-field-mailchimp-signup.php +3 -3
  68. admin/config-ui/fields/class-field-multiple-authors.php +1 -1
  69. admin/config-ui/fields/class-field-person.php +1 -1
  70. admin/config-ui/fields/class-field-post-type-visibility.php +1 -1
  71. admin/config-ui/fields/class-field-profile-url-facebook.php +2 -2
  72. admin/config-ui/fields/class-field-profile-url-instagram.php +2 -2
  73. admin/config-ui/fields/class-field-profile-url-linkedin.php +2 -2
  74. admin/config-ui/fields/class-field-profile-url-myspace.php +2 -2
  75. admin/config-ui/fields/class-field-profile-url-pinterest.php +2 -2
  76. admin/config-ui/fields/class-field-profile-url-twitter.php +2 -2
  77. admin/config-ui/fields/class-field-profile-url-youtube.php +2 -2
  78. admin/config-ui/fields/class-field-separator.php +2 -2
  79. admin/config-ui/fields/class-field-site-name.php +2 -2
  80. admin/config-ui/fields/class-field-site-type.php +2 -2
  81. admin/config-ui/fields/class-field-success-message.php +1 -1
  82. admin/config-ui/fields/class-field-suggestions.php +2 -2
  83. admin/config-ui/fields/class-field-title-intro.php +1 -1
  84. admin/config-ui/fields/class-field-upsell-configuration-service.php +1 -1
  85. admin/config-ui/fields/class-field-upsell-site-review.php +1 -1
  86. admin/config-ui/fields/class-field.php +8 -8
  87. admin/filters/class-abstract-post-filter.php +2 -2
  88. admin/filters/class-cornerstone-filter.php +1 -1
  89. admin/formatter/class-metabox-formatter.php +4 -4
  90. admin/formatter/class-post-metabox-formatter.php +5 -5
  91. admin/formatter/class-term-metabox-formatter.php +5 -5
  92. admin/formatter/interface-metabox-formatter.php +1 -1
  93. admin/google_search_console/class-gsc-ajax.php +5 -5
  94. admin/google_search_console/class-gsc-bulk-action.php +7 -7
  95. admin/google_search_console/class-gsc-category-filters.php +17 -15
  96. admin/google_search_console/class-gsc-config.php +1 -1
  97. admin/google_search_console/class-gsc-count.php +8 -8
  98. admin/google_search_console/class-gsc-issue.php +4 -4
  99. admin/google_search_console/class-gsc-issues.php +8 -8
  100. admin/google_search_console/class-gsc-mapper.php +5 -5
  101. admin/google_search_console/class-gsc-marker.php +8 -8
  102. admin/google_search_console/class-gsc-platform-tabs.php +6 -6
  103. admin/google_search_console/class-gsc-service.php +10 -10
  104. admin/google_search_console/class-gsc-settings.php +9 -9
  105. admin/google_search_console/class-gsc-table.php +21 -21
  106. admin/google_search_console/class-gsc.php +6 -10
  107. admin/import/class-import-detector.php +1 -1
  108. admin/import/class-import-plugin.php +1 -1
  109. admin/import/class-import-settings.php +2 -2
  110. admin/import/class-import-status.php +1 -1
  111. admin/import/plugins/class-abstract-plugin-importer.php +1 -1
  112. admin/import/plugins/class-import-headspace.php +1 -1
  113. admin/import/plugins/class-import-jetpack.php +1 -1
  114. admin/import/plugins/class-import-seopressor.php +1 -1
  115. admin/import/plugins/class-import-wpseo.php +1 -1
  116. admin/import/plugins/class-importers.php +1 -1
  117. admin/links/class-link-column-count.php +1 -1
  118. admin/links/class-link-columns.php +1 -1
  119. admin/links/class-link-compatibility-notifier.php +1 -1
  120. admin/links/class-link-filter.php +2 -2
  121. admin/links/class-link-notifier.php +2 -2
  122. admin/links/class-link-reindex-dashboard.php +2 -2
  123. admin/links/class-link-reindex-post-endpoint.php +1 -1
  124. admin/links/class-link-reindex-post-service.php +1 -1
  125. admin/links/class-link-type-classifier.php +3 -3
  126. admin/metabox/class-metabox-analysis-readability.php +1 -1
  127. admin/metabox/class-metabox-analysis-seo.php +1 -1
  128. admin/metabox/class-metabox.php +6 -6
  129. admin/metabox/interface-metabox-analysis.php +1 -1
  130. admin/notifiers/class-post-type-archive-notification-handler.php +4 -4
  131. admin/onpage/class-onpage-option.php +4 -4
  132. admin/onpage/class-onpage-request.php +1 -1
  133. admin/recalculate/class-recalculate-posts.php +4 -4
  134. admin/recalculate/class-recalculate-terms.php +4 -4
  135. admin/recalculate/class-recalculate.php +5 -5
  136. admin/roles/class-abstract-role-manager.php +1 -1
  137. admin/services/class-indexable-post-provider.php +1 -1
  138. admin/statistics/class-statistics-integration.php +1 -1
  139. admin/statistics/class-statistics-service.php +4 -4
  140. admin/taxonomy/class-taxonomy-content-fields.php +2 -2
  141. admin/taxonomy/class-taxonomy-fields-presenter.php +6 -6
  142. admin/taxonomy/class-taxonomy-fields.php +5 -5
  143. admin/taxonomy/class-taxonomy-settings-fields.php +3 -3
  144. admin/taxonomy/class-taxonomy-social-fields.php +7 -7
  145. admin/tracking/class-tracking.php +2 -2
  146. admin/views/class-view-utils.php +1 -1
  147. admin/views/class-yoast-input-select.php +3 -3
  148. admin/views/licenses.php +48 -50
  149. admin/views/paper-collapsible.php +1 -1
  150. admin/views/partial-alerts-template.php +1 -1
  151. admin/views/tabs/dashboard/webmaster-tools.php +2 -2
  152. admin/views/tabs/metas/paper-content/general/knowledge-graph.php +2 -2
  153. admin/views/tabs/metas/paper-content/post-type-content.php +1 -1
  154. admin/views/tabs/metas/paper-content/taxonomy-content.php +1 -1
  155. admin/views/tool-import-export.php +2 -2
  156. admin/watchers/class-slug-change-watcher.php +1 -1
  157. css/dist/{admin-global-1100-rtl.min.css → admin-global-1110-rtl.min.css} +0 -0
  158. css/dist/{admin-global-1100.min.css → admin-global-1110.min.css} +0 -0
  159. css/dist/{adminbar-1100-rtl.min.css → adminbar-1110-rtl.min.css} +0 -0
  160. css/dist/{adminbar-1100.min.css → adminbar-1110.min.css} +0 -0
  161. css/dist/alerts-1100-rtl.min.css +0 -1
  162. css/dist/alerts-1100.min.css +0 -1
  163. css/dist/alerts-1110-rtl.min.css +1 -0
  164. css/dist/alerts-1110.min.css +1 -0
  165. css/dist/{dashboard-1100-rtl.min.css → dashboard-1110-rtl.min.css} +0 -0
  166. css/dist/{dashboard-1100.min.css → dashboard-1110.min.css} +0 -0
  167. css/dist/{edit-page-1100-rtl.min.css → edit-page-1110-rtl.min.css} +0 -0
  168. css/dist/{edit-page-1100.min.css → edit-page-1110.min.css} +0 -0
  169. css/dist/{featured-image-1100-rtl.min.css → featured-image-1110-rtl.min.css} +0 -0
  170. css/dist/{featured-image-1100.min.css → featured-image-1110.min.css} +0 -0
  171. css/dist/{filter-explanation-1100-rtl.min.css → filter-explanation-1110-rtl.min.css} +0 -0
  172. css/dist/{filter-explanation-1100.min.css → filter-explanation-1110.min.css} +0 -0
  173. css/dist/{inside-editor-1100-rtl.min.css → inside-editor-1110-rtl.min.css} +0 -0
  174. css/dist/{inside-editor-1100.min.css → inside-editor-1110.min.css} +0 -0
  175. css/dist/metabox-1100-rtl.min.css +0 -1
  176. css/dist/metabox-1100.min.css +0 -1
  177. css/dist/metabox-1110-rtl.min.css +1 -0
  178. css/dist/metabox-1110.min.css +1 -0
  179. css/dist/{metabox-primary-category-1100-rtl.min.css → metabox-primary-category-1110-rtl.min.css} +0 -0
  180. css/dist/{metabox-primary-category-1100.min.css → metabox-primary-category-1110.min.css} +0 -0
  181. css/dist/{search-appearance-1100-rtl.min.css → search-appearance-1110-rtl.min.css} +0 -0
  182. css/dist/{search-appearance-1100.min.css → search-appearance-1110.min.css} +0 -0
  183. css/dist/structured-data-blocks-1100-rtl.min.css +0 -1
  184. css/dist/structured-data-blocks-1100.min.css +0 -1
  185. css/dist/structured-data-blocks-1110-rtl.min.css +1 -0
  186. css/dist/structured-data-blocks-1110.min.css +1 -0
  187. css/dist/{toggle-switch-1100-rtl.min.css → toggle-switch-1110-rtl.min.css} +0 -0
  188. css/dist/{toggle-switch-1100.min.css → toggle-switch-1110.min.css} +0 -0
  189. css/dist/{wpseo-dismissible-1100-rtl.min.css → wpseo-dismissible-1110-rtl.min.css} +0 -0
  190. css/dist/{wpseo-dismissible-1100.min.css → wpseo-dismissible-1110.min.css} +0 -0
  191. css/dist/yoast-components-1100-rtl.min.css +0 -1
  192. css/dist/yoast-components-1100.min.css +0 -1
  193. css/dist/yoast-components-1110-rtl.min.css +1 -0
  194. css/dist/yoast-components-1110.min.css +1 -0
  195. css/dist/{yoast-extensions-1100-rtl.min.css → yoast-extensions-1110-rtl.min.css} +0 -0
  196. css/dist/{yoast-extensions-1100.min.css → yoast-extensions-1110.min.css} +0 -0
  197. css/dist/{yst_plugin_tools-1100-rtl.min.css → yst_plugin_tools-1110-rtl.min.css} +0 -0
  198. css/dist/{yst_plugin_tools-1100.min.css → yst_plugin_tools-1110.min.css} +0 -0
  199. css/dist/{yst_seo_score-1100-rtl.min.css → yst_seo_score-1110-rtl.min.css} +0 -0
  200. css/dist/{yst_seo_score-1100.min.css → yst_seo_score-1110.min.css} +0 -0
  201. deprecated/admin/config-ui/fields/class-field-profile-url-googleplus.php +1 -1
  202. deprecated/class-wpseo-option-permalinks.php +3 -3
  203. frontend/class-breadcrumbs.php +3 -3
  204. frontend/class-frontend.php +1 -1
  205. frontend/class-opengraph-image.php +4 -3
  206. frontend/class-opengraph-oembed.php +2 -2
  207. frontend/class-opengraph.php +2 -2
  208. frontend/class-remove-reply-to-com.php +1 -1
  209. frontend/class-twitter.php +35 -35
  210. frontend/class-woocommerce-shop-page.php +1 -1
  211. frontend/schema/class-schema-context.php +2 -2
  212. frontend/schema/class-schema-image.php +152 -0
  213. frontend/schema/class-schema-organization.php +2 -6
  214. frontend/schema/class-schema-person.php +6 -8
  215. frontend/schema/class-schema-webpage.php +4 -7
  216. images/brushstroke_background.svg +1 -0
  217. images/local_assistant.svg +1 -0
  218. inc/class-addon-manager.php +1 -1
  219. inc/class-my-yoast-api-request.php +3 -3
  220. inc/class-rewrite.php +4 -3
  221. inc/class-upgrade.php +29 -11
  222. inc/class-wpseo-admin-bar-menu.php +1 -1
  223. inc/class-wpseo-content-images.php +1 -1
  224. inc/class-wpseo-custom-fields.php +5 -3
  225. inc/class-wpseo-custom-taxonomies.php +4 -2
  226. inc/class-wpseo-endpoint-factory.php +22 -8
  227. inc/class-wpseo-image-utils.php +13 -12
  228. inc/class-wpseo-meta.php +86 -84
  229. inc/class-wpseo-primary-term.php +4 -4
  230. inc/class-wpseo-rank.php +9 -9
  231. inc/class-wpseo-replace-vars.php +30 -22
  232. inc/class-wpseo-replacement-variable.php +10 -4
  233. inc/class-wpseo-shortlinker.php +2 -1
  234. inc/class-wpseo-statistics.php +3 -3
  235. inc/class-wpseo-utils.php +35 -29
  236. inc/class-wpseo-validator.php +1 -1
  237. inc/endpoints/class-myyoast-connect.php +4 -4
  238. inc/exceptions/class-invalid-argument-exception.php +1 -1
  239. inc/exceptions/class-invalid-indexable-exception.php +1 -1
  240. inc/exceptions/class-myyoast-authentication-exception.php +1 -1
  241. inc/exceptions/class-myyoast-bad-request-exception.php +1 -1
  242. inc/exceptions/class-myyoast-invalid-json-exception.php +1 -1
  243. inc/exceptions/class-rest-request-exception.php +1 -1
  244. inc/indexables/class-indexable.php +10 -4
  245. inc/indexables/class-object-type.php +13 -5
  246. inc/indexables/class-post-indexable.php +5 -3
  247. inc/indexables/class-post-object-type.php +1 -1
  248. inc/indexables/class-term-indexable.php +5 -3
  249. inc/indexables/class-term-object-type.php +1 -1
  250. inc/indexables/validators/class-endpoint-validator.php +1 -1
  251. inc/indexables/validators/class-keyword-validator.php +1 -1
  252. inc/indexables/validators/class-link-validator.php +1 -1
  253. inc/indexables/validators/class-meta-values-validator.php +1 -1
  254. inc/indexables/validators/class-object-type-validator.php +1 -1
  255. inc/indexables/validators/class-opengraph-validator.php +1 -1
  256. inc/indexables/validators/class-robots-validator.php +4 -2
  257. inc/indexables/validators/class-twitter-validator.php +1 -1
  258. inc/interface-wpseo-wordpress-integration.php +2 -2
  259. inc/options/class-wpseo-option-ms.php +44 -32
  260. inc/options/class-wpseo-option-social.php +34 -23
  261. inc/options/class-wpseo-option-titles.php +47 -34
  262. inc/options/class-wpseo-option-wpseo.php +13 -12
  263. inc/options/class-wpseo-option.php +60 -54
  264. inc/options/class-wpseo-options.php +25 -25
  265. inc/options/class-wpseo-taxonomy-meta.php +49 -34
  266. inc/sitemaps/class-author-sitemap-provider.php +1 -1
  267. inc/sitemaps/class-post-type-sitemap-provider.php +8 -8
  268. inc/sitemaps/class-sitemap-cache-data.php +11 -8
  269. inc/sitemaps/class-sitemap-image-parser.php +7 -7
  270. inc/sitemaps/class-sitemap-timezone.php +9 -8
  271. inc/sitemaps/class-sitemaps-admin.php +6 -6
  272. inc/sitemaps/class-sitemaps-cache-validator.php +11 -12
  273. inc/sitemaps/class-sitemaps-cache.php +4 -4
  274. inc/sitemaps/class-sitemaps-renderer.php +6 -6
  275. inc/sitemaps/class-sitemaps-router.php +1 -1
  276. inc/sitemaps/class-sitemaps.php +5 -5
  277. inc/sitemaps/class-taxonomy-sitemap-provider.php +4 -4
  278. inc/sitemaps/interface-sitemap-cache-data.php +5 -5
  279. inc/sitemaps/interface-sitemap-provider.php +1 -1
  280. inc/structured-data-blocks/class-faq-block.php +3 -2
  281. inc/structured-data-blocks/class-how-to-block.php +3 -2
  282. inc/wpseo-functions.php +13 -10
  283. inc/wpseo-non-ajax-functions.php +3 -3
  284. js/dist/analysis-1100.min.js +0 -14
admin/ajax.php CHANGED
@@ -16,7 +16,7 @@ if ( ! defined( 'WPSEO_VERSION' ) ) {
16
  */
17
 
18
  /**
19
- * Convenience function to JSON encode and echo results and then die
20
  *
21
  * @param array $results Results array for encoding.
22
  */
@@ -87,7 +87,7 @@ function wpseo_dismiss_tagline_notice() {
87
  add_action( 'wp_ajax_wpseo_dismiss_tagline_notice', 'wpseo_dismiss_tagline_notice' );
88
 
89
  /**
90
- * Used in the editor to replace vars for the snippet preview
91
  */
92
  function wpseo_ajax_replace_vars() {
93
  global $post;
@@ -124,7 +124,7 @@ function wpseo_save_description() {
124
  add_action( 'wp_ajax_wpseo_save_metadesc', 'wpseo_save_description' );
125
 
126
  /**
127
- * Save titles & descriptions
128
  *
129
  * @param string $what Type of item to save (title, description).
130
  */
@@ -246,7 +246,7 @@ function wpseo_save_all_descriptions() {
246
  add_action( 'wp_ajax_wpseo_save_all_descriptions', 'wpseo_save_all_descriptions' );
247
 
248
  /**
249
- * Utility function to save values
250
  *
251
  * @param string $what Type of item so save.
252
  */
@@ -270,7 +270,7 @@ function wpseo_save_all( $what ) {
270
  }
271
 
272
  /**
273
- * Insert a new value
274
  *
275
  * @param string $what Item type (such as title).
276
  * @param int $post_id Post ID.
@@ -366,7 +366,7 @@ new Yoast_Dismissable_Notice_Ajax( 'recalculate', Yoast_Dismissable_Notice_Ajax:
366
  /* ********************* DEPRECATED FUNCTIONS ********************* */
367
 
368
  /**
369
- * Removes stopword from the sample permalink that is generated in an AJAX request
370
  *
371
  * @deprecated 6.3
372
  * @codeCoverageIgnore
16
  */
17
 
18
  /**
19
+ * Convenience function to JSON encode and echo results and then die.
20
  *
21
  * @param array $results Results array for encoding.
22
  */
87
  add_action( 'wp_ajax_wpseo_dismiss_tagline_notice', 'wpseo_dismiss_tagline_notice' );
88
 
89
  /**
90
+ * Used in the editor to replace vars for the snippet preview.
91
  */
92
  function wpseo_ajax_replace_vars() {
93
  global $post;
124
  add_action( 'wp_ajax_wpseo_save_metadesc', 'wpseo_save_description' );
125
 
126
  /**
127
+ * Save titles & descriptions.
128
  *
129
  * @param string $what Type of item to save (title, description).
130
  */
246
  add_action( 'wp_ajax_wpseo_save_all_descriptions', 'wpseo_save_all_descriptions' );
247
 
248
  /**
249
+ * Utility function to save values.
250
  *
251
  * @param string $what Type of item so save.
252
  */
270
  }
271
 
272
  /**
273
+ * Insert a new value.
274
  *
275
  * @param string $what Item type (such as title).
276
  * @param int $post_id Post ID.
366
  /* ********************* DEPRECATED FUNCTIONS ********************* */
367
 
368
  /**
369
+ * Removes stopword from the sample permalink that is generated in an AJAX request.
370
  *
371
  * @deprecated 6.3
372
  * @codeCoverageIgnore
admin/ajax/class-recalculate-scores-ajax.php CHANGED
@@ -6,14 +6,14 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Recalculate_Scores
10
  *
11
- * This class handles the SEO score recalculation for all posts with a filled focus keyword
12
  */
13
  class WPSEO_Recalculate_Scores_Ajax {
14
 
15
  /**
16
- * Initialize the AJAX hooks
17
  */
18
  public function __construct() {
19
  add_action( 'wp_ajax_wpseo_recalculate_scores', array( $this, 'recalculate_scores' ) );
@@ -38,7 +38,7 @@ class WPSEO_Recalculate_Scores_Ajax {
38
  }
39
 
40
  /**
41
- * Start recalculation
42
  */
43
  public function recalculate_scores() {
44
  check_ajax_referer( 'wpseo_recalculate', 'nonce' );
@@ -57,7 +57,7 @@ class WPSEO_Recalculate_Scores_Ajax {
57
  }
58
 
59
  /**
60
- * Saves the new linkdex score for given post
61
  */
62
  public function save_score() {
63
  check_ajax_referer( 'wpseo_recalculate', 'nonce' );
@@ -88,7 +88,7 @@ class WPSEO_Recalculate_Scores_Ajax {
88
  }
89
 
90
  /**
91
- * Gets the total number of posts
92
  *
93
  * @return int
94
  */
@@ -106,7 +106,7 @@ class WPSEO_Recalculate_Scores_Ajax {
106
  }
107
 
108
  /**
109
- * Get the total number of terms
110
  *
111
  * @return int
112
  */
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Recalculate_Scores.
10
  *
11
+ * This class handles the SEO score recalculation for all posts with a filled focus keyword.
12
  */
13
  class WPSEO_Recalculate_Scores_Ajax {
14
 
15
  /**
16
+ * Initialize the AJAX hooks.
17
  */
18
  public function __construct() {
19
  add_action( 'wp_ajax_wpseo_recalculate_scores', array( $this, 'recalculate_scores' ) );
38
  }
39
 
40
  /**
41
+ * Start recalculation.
42
  */
43
  public function recalculate_scores() {
44
  check_ajax_referer( 'wpseo_recalculate', 'nonce' );
57
  }
58
 
59
  /**
60
+ * Saves the new linkdex score for given post.
61
  */
62
  public function save_score() {
63
  check_ajax_referer( 'wpseo_recalculate', 'nonce' );
88
  }
89
 
90
  /**
91
+ * Gets the total number of posts.
92
  *
93
  * @return int
94
  */
106
  }
107
 
108
  /**
109
+ * Get the total number of terms.
110
  *
111
  * @return int
112
  */
admin/ajax/class-shortcode-filter.php CHANGED
@@ -6,21 +6,21 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Shortcode_Filter
10
  *
11
- * Used for parsing WP shortcodes with AJAX
12
  */
13
  class WPSEO_Shortcode_Filter {
14
 
15
  /**
16
- * Initialize the AJAX hooks
17
  */
18
  public function __construct() {
19
  add_action( 'wp_ajax_wpseo_filter_shortcodes', array( $this, 'do_filter' ) );
20
  }
21
 
22
  /**
23
- * Parse the shortcodes
24
  */
25
  public function do_filter() {
26
  check_ajax_referer( 'wpseo-filter-shortcodes', 'nonce' );
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Shortcode_Filter.
10
  *
11
+ * Used for parsing WP shortcodes with AJAX.
12
  */
13
  class WPSEO_Shortcode_Filter {
14
 
15
  /**
16
+ * Initialize the AJAX hooks.
17
  */
18
  public function __construct() {
19
  add_action( 'wp_ajax_wpseo_filter_shortcodes', array( $this, 'do_filter' ) );
20
  }
21
 
22
  /**
23
+ * Parse the shortcodes.
24
  */
25
  public function do_filter() {
26
  check_ajax_referer( 'wpseo-filter-shortcodes', 'nonce' );
admin/ajax/class-yoast-dismissable-notice.php CHANGED
@@ -6,8 +6,8 @@
6
  */
7
 
8
  /**
9
- * This class will catch the request to dismiss the target notice (set by notice_name) and will store the dismiss status as an user meta
10
- * in the database
11
  */
12
  class Yoast_Dismissable_Notice_Ajax {
13
 
@@ -48,7 +48,7 @@ class Yoast_Dismissable_Notice_Ajax {
48
  private $notice_type;
49
 
50
  /**
51
- * Initialize the hooks for the AJAX request
52
  *
53
  * @param string $notice_name The name for the hook to catch the notice.
54
  * @param string $notice_type The notice type.
@@ -61,7 +61,7 @@ class Yoast_Dismissable_Notice_Ajax {
61
  }
62
 
63
  /**
64
- * Handles the dismiss notice request
65
  */
66
  public function dismiss_notice() {
67
  check_ajax_referer( 'wpseo-dismiss-' . $this->notice_name );
6
  */
7
 
8
  /**
9
+ * This class will catch the request to dismiss the target notice (set by notice_name)
10
+ * and will store the dismiss status as an user meta in the database.
11
  */
12
  class Yoast_Dismissable_Notice_Ajax {
13
 
48
  private $notice_type;
49
 
50
  /**
51
+ * Initialize the hooks for the AJAX request.
52
  *
53
  * @param string $notice_name The name for the hook to catch the notice.
54
  * @param string $notice_type The notice type.
61
  }
62
 
63
  /**
64
+ * Handles the dismiss notice request.
65
  */
66
  public function dismiss_notice() {
67
  check_ajax_referer( 'wpseo-dismiss-' . $this->notice_name );
admin/ajax/class-yoast-onpage-ajax.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class Yoast_OnPage_Ajax
10
  *
11
  * This class will catch the request to dismiss the Ryte notice and will store
12
  * the dismiss status as an user meta in the database.
@@ -14,14 +14,14 @@
14
  class Yoast_OnPage_Ajax {
15
 
16
  /**
17
- * Initialize the hooks for the AJAX request
18
  */
19
  public function __construct() {
20
  add_action( 'wp_ajax_wpseo_dismiss_onpageorg', array( $this, 'dismiss_notice' ) );
21
  }
22
 
23
  /**
24
- * Handles the dismiss notice request
25
  */
26
  public function dismiss_notice() {
27
  check_ajax_referer( 'wpseo-dismiss-onpageorg' );
@@ -32,7 +32,7 @@ class Yoast_OnPage_Ajax {
32
  }
33
 
34
  /**
35
- * Storing the dismissed value as an user option in the database
36
  */
37
  private function save_dismissed() {
38
  update_user_meta( get_current_user_id(), WPSEO_OnPage::USER_META_KEY, 1 );
6
  */
7
 
8
  /**
9
+ * Class Yoast_OnPage_Ajax.
10
  *
11
  * This class will catch the request to dismiss the Ryte notice and will store
12
  * the dismiss status as an user meta in the database.
14
  class Yoast_OnPage_Ajax {
15
 
16
  /**
17
+ * Initialize the hooks for the AJAX request.
18
  */
19
  public function __construct() {
20
  add_action( 'wp_ajax_wpseo_dismiss_onpageorg', array( $this, 'dismiss_notice' ) );
21
  }
22
 
23
  /**
24
+ * Handles the dismiss notice request.
25
  */
26
  public function dismiss_notice() {
27
  check_ajax_referer( 'wpseo-dismiss-onpageorg' );
32
  }
33
 
34
  /**
35
+ * Storing the dismissed value as an user option in the database.
36
  */
37
  private function save_dismissed() {
38
  update_user_meta( get_current_user_id(), WPSEO_OnPage::USER_META_KEY, 1 );
admin/ajax/class-yoast-plugin-conflict-ajax.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class Yoast_Plugin_Conflict_Ajax
10
  */
11
  class Yoast_Plugin_Conflict_Ajax {
12
 
@@ -21,14 +21,14 @@ class Yoast_Plugin_Conflict_Ajax {
21
  private $dismissed_conflicts = array();
22
 
23
  /**
24
- * Initialize the hooks for the AJAX request
25
  */
26
  public function __construct() {
27
  add_action( 'wp_ajax_wpseo_dismiss_plugin_conflict', array( $this, 'dismiss_notice' ) );
28
  }
29
 
30
  /**
31
- * Handles the dismiss notice request
32
  */
33
  public function dismiss_notice() {
34
  check_ajax_referer( 'dismiss-plugin-conflict' );
@@ -45,7 +45,7 @@ class Yoast_Plugin_Conflict_Ajax {
45
  }
46
 
47
  /**
48
- * Getting the user option from the database
49
  *
50
  * @return bool|array
51
  */
@@ -71,7 +71,7 @@ class Yoast_Plugin_Conflict_Ajax {
71
  }
72
 
73
  /**
74
- * Storing the conflicting plugins as an user option in the database
75
  *
76
  * @param string $plugin_section Plugin conflict type (such as Open Graph or sitemap).
77
  */
@@ -84,7 +84,7 @@ class Yoast_Plugin_Conflict_Ajax {
84
  }
85
 
86
  /**
87
- * Loop through the plugins to compare them with the already stored dismissed plugin conflicts
88
  *
89
  * @param array $posted_plugins Plugin set to check.
90
  */
@@ -95,7 +95,7 @@ class Yoast_Plugin_Conflict_Ajax {
95
  }
96
 
97
  /**
98
- * Check if plugin is already dismissed, if not store it in the array that will be saved later
99
  *
100
  * @param string $posted_plugin Plugin to check against dismissed conflicts.
101
  */
6
  */
7
 
8
  /**
9
+ * Class Yoast_Plugin_Conflict_Ajax.
10
  */
11
  class Yoast_Plugin_Conflict_Ajax {
12
 
21
  private $dismissed_conflicts = array();
22
 
23
  /**
24
+ * Initialize the hooks for the AJAX request.
25
  */
26
  public function __construct() {
27
  add_action( 'wp_ajax_wpseo_dismiss_plugin_conflict', array( $this, 'dismiss_notice' ) );
28
  }
29
 
30
  /**
31
+ * Handles the dismiss notice request.
32
  */
33
  public function dismiss_notice() {
34
  check_ajax_referer( 'dismiss-plugin-conflict' );
45
  }
46
 
47
  /**
48
+ * Getting the user option from the database.
49
  *
50
  * @return bool|array
51
  */
71
  }
72
 
73
  /**
74
+ * Storing the conflicting plugins as an user option in the database.
75
  *
76
  * @param string $plugin_section Plugin conflict type (such as Open Graph or sitemap).
77
  */
84
  }
85
 
86
  /**
87
+ * Loop through the plugins to compare them with the already stored dismissed plugin conflicts.
88
  *
89
  * @param array $posted_plugins Plugin set to check.
90
  */
95
  }
96
 
97
  /**
98
+ * Check if plugin is already dismissed, if not store it in the array that will be saved later.
99
  *
100
  * @param string $posted_plugin Plugin to check against dismissed conflicts.
101
  */
admin/class-add-keyword-modal.php CHANGED
@@ -36,7 +36,7 @@ class WPSEO_Add_Keyword_Modal {
36
  __( 'Get %s', 'wordpress-seo' ),
37
  'Yoast SEO Premium'
38
  ),
39
- 'small' => __( '1 year free updates and upgrades included!', 'wordpress-seo' ),
40
  'a11yNotice.opensInNewTab' => __( '(Opens in a new browser tab)', 'wordpress-seo' ),
41
  );
42
  }
36
  __( 'Get %s', 'wordpress-seo' ),
37
  'Yoast SEO Premium'
38
  ),
39
+ 'small' => __( '1 year free support and updates included!', 'wordpress-seo' ),
40
  'a11yNotice.opensInNewTab' => __( '(Opens in a new browser tab)', 'wordpress-seo' ),
41
  );
42
  }
admin/class-admin-asset-manager.php CHANGED
@@ -6,7 +6,10 @@
6
  */
7
 
8
  /**
9
- * This class registers all the necessary styles and scripts. Also has methods for the enqueing of scripts and styles. It automatically adds a prefix to the handle.
 
 
 
10
  */
11
  class WPSEO_Admin_Asset_Manager {
12
 
@@ -140,7 +143,7 @@ class WPSEO_Admin_Asset_Manager {
140
  }
141
 
142
  /**
143
- * Flattens a version number for use in a filename
144
  *
145
  * @param string $version The original version number.
146
  *
@@ -515,6 +518,8 @@ class WPSEO_Admin_Asset_Manager {
515
  'wp-i18n',
516
  'wp-components',
517
  'wp-data',
 
 
518
  self::PREFIX . 'commons',
519
  ),
520
  ),
@@ -658,7 +663,7 @@ class WPSEO_Admin_Asset_Manager {
658
  *
659
  * @todo Data format is not self-documenting. Needs explanation inline. R.
660
  *
661
- * @return array styles that need to be registered.
662
  */
663
  protected function styles_to_be_registered() {
664
  $flat_version = $this->flatten_version( WPSEO_VERSION );
6
  */
7
 
8
  /**
9
+ * This class registers all the necessary styles and scripts.
10
+ *
11
+ * Also has methods for the enqueing of scripts and styles.
12
+ * It automatically adds a prefix to the handle.
13
  */
14
  class WPSEO_Admin_Asset_Manager {
15
 
143
  }
144
 
145
  /**
146
+ * Flattens a version number for use in a filename.
147
  *
148
  * @param string $version The original version number.
149
  *
518
  'wp-i18n',
519
  'wp-components',
520
  'wp-data',
521
+ self::PREFIX . 'analysis',
522
+ self::PREFIX . 'components',
523
  self::PREFIX . 'commons',
524
  ),
525
  ),
663
  *
664
  * @todo Data format is not self-documenting. Needs explanation inline. R.
665
  *
666
+ * @return array Styles that need to be registered.
667
  */
668
  protected function styles_to_be_registered() {
669
  $flat_version = $this->flatten_version( WPSEO_VERSION );
admin/class-admin-init.php CHANGED
@@ -25,7 +25,7 @@ class WPSEO_Admin_Init {
25
  private $asset_manager;
26
 
27
  /**
28
- * Class constructor
29
  */
30
  public function __construct() {
31
  $GLOBALS['wpseo_admin'] = new WPSEO_Admin();
@@ -93,7 +93,7 @@ class WPSEO_Admin_Init {
93
  }
94
 
95
  /**
96
- * Notify about the default tagline if the user hasn't changed it
97
  */
98
  public function tagline_notice() {
99
  $query_args = array(
@@ -117,16 +117,11 @@ class WPSEO_Admin_Init {
117
  $tagline_notification = new Yoast_Notification( $info_message, $notification_options );
118
 
119
  $notification_center = Yoast_Notification_Center::get();
120
- if ( $this->has_default_tagline() ) {
121
- $notification_center->add_notification( $tagline_notification );
122
- }
123
- else {
124
- $notification_center->remove_notification( $tagline_notification );
125
- }
126
  }
127
 
128
  /**
129
- * Add an alert if the blog is not publicly visible
130
  */
131
  public function blog_public_notice() {
132
 
@@ -157,7 +152,7 @@ class WPSEO_Admin_Init {
157
  }
158
 
159
  /**
160
- * Display notice to disable comment pagination
161
  */
162
  public function page_comments_notice() {
163
 
@@ -189,7 +184,7 @@ class WPSEO_Admin_Init {
189
  }
190
 
191
  /**
192
- * Returns whether or not the site has the default tagline
193
  *
194
  * @return bool
195
  */
@@ -205,7 +200,7 @@ class WPSEO_Admin_Init {
205
  }
206
 
207
  /**
208
- * Show alert when the permalink doesn't contain %postname%
209
  */
210
  public function permalink_notice() {
211
 
@@ -237,7 +232,7 @@ class WPSEO_Admin_Init {
237
  }
238
 
239
  /**
240
- * Are page comments enabled
241
  *
242
  * @return bool
243
  */
@@ -263,7 +258,7 @@ class WPSEO_Admin_Init {
263
  }
264
 
265
  /**
266
- * Build compatibility problem notification
267
  *
268
  * @return Yoast_Notification
269
  */
@@ -362,7 +357,7 @@ class WPSEO_Admin_Init {
362
  }
363
 
364
  /**
365
- * Build Yoast SEO compatibility problem notification
366
  *
367
  * @param string $name The plugin name to use for the unique ID.
368
  * @param array $plugin The plugin to retrieve the data from.
@@ -437,7 +432,7 @@ class WPSEO_Admin_Init {
437
  }
438
 
439
  /**
440
- * Check if the user has dismissed the given notice (by $notice_name)
441
  *
442
  * @param string $notice_name The name of the notice that might be dismissed.
443
  *
@@ -584,7 +579,7 @@ class WPSEO_Admin_Init {
584
  }
585
 
586
  /**
587
- * See if we should start our XML Sitemaps Admin class
588
  */
589
  private function load_xml_sitemaps_admin() {
590
  if ( WPSEO_Options::get( 'enable_xml_sitemap', false ) ) {
@@ -593,7 +588,7 @@ class WPSEO_Admin_Init {
593
  }
594
 
595
  /**
596
- * Check if the site is set to be publicly visible
597
  *
598
  * @return bool
599
  */
@@ -653,7 +648,7 @@ class WPSEO_Admin_Init {
653
  }
654
 
655
  /**
656
- * Check if the permalink uses %postname%
657
  *
658
  * @return bool
659
  */
25
  private $asset_manager;
26
 
27
  /**
28
+ * Class constructor.
29
  */
30
  public function __construct() {
31
  $GLOBALS['wpseo_admin'] = new WPSEO_Admin();
93
  }
94
 
95
  /**
96
+ * Notify about the default tagline if the user hasn't changed it.
97
  */
98
  public function tagline_notice() {
99
  $query_args = array(
117
  $tagline_notification = new Yoast_Notification( $info_message, $notification_options );
118
 
119
  $notification_center = Yoast_Notification_Center::get();
120
+ $notification_center->remove_notification( $tagline_notification );
 
 
 
 
 
121
  }
122
 
123
  /**
124
+ * Add an alert if the blog is not publicly visible.
125
  */
126
  public function blog_public_notice() {
127
 
152
  }
153
 
154
  /**
155
+ * Display notice to disable comment pagination.
156
  */
157
  public function page_comments_notice() {
158
 
184
  }
185
 
186
  /**
187
+ * Returns whether or not the site has the default tagline.
188
  *
189
  * @return bool
190
  */
200
  }
201
 
202
  /**
203
+ * Show alert when the permalink doesn't contain %postname%.
204
  */
205
  public function permalink_notice() {
206
 
232
  }
233
 
234
  /**
235
+ * Are page comments enabled.
236
  *
237
  * @return bool
238
  */
258
  }
259
 
260
  /**
261
+ * Build compatibility problem notification.
262
  *
263
  * @return Yoast_Notification
264
  */
357
  }
358
 
359
  /**
360
+ * Build Yoast SEO compatibility problem notification.
361
  *
362
  * @param string $name The plugin name to use for the unique ID.
363
  * @param array $plugin The plugin to retrieve the data from.
432
  }
433
 
434
  /**
435
+ * Check if the user has dismissed the given notice (by $notice_name).
436
  *
437
  * @param string $notice_name The name of the notice that might be dismissed.
438
  *
579
  }
580
 
581
  /**
582
+ * See if we should start our XML Sitemaps Admin class.
583
  */
584
  private function load_xml_sitemaps_admin() {
585
  if ( WPSEO_Options::get( 'enable_xml_sitemap', false ) ) {
588
  }
589
 
590
  /**
591
+ * Check if the site is set to be publicly visible.
592
  *
593
  * @return bool
594
  */
648
  }
649
 
650
  /**
651
+ * Check if the permalink uses %postname%.
652
  *
653
  * @return bool
654
  */
admin/class-admin.php CHANGED
@@ -49,16 +49,6 @@ class WPSEO_Admin {
49
  add_filter( 'wpseo_accessible_post_types', array( 'WPSEO_Post_Type', 'filter_attachment_post_type' ) );
50
  }
51
 
52
- $this->admin_features = array(
53
- // Google Search Console.
54
- 'google_search_console' => new WPSEO_GSC(),
55
- 'dashboard_widget' => new Yoast_Dashboard_Widget(),
56
- );
57
-
58
- if ( WPSEO_Metabox::is_post_overview( $pagenow ) || WPSEO_Metabox::is_post_edit( $pagenow ) ) {
59
- $this->admin_features['primary_category'] = new WPSEO_Primary_Term_Admin();
60
- }
61
-
62
  if ( filter_input( INPUT_GET, 'page' ) === 'wpseo_tools' && filter_input( INPUT_GET, 'tool' ) === null ) {
63
  new WPSEO_Recalculate_Scores();
64
  }
@@ -100,6 +90,15 @@ class WPSEO_Admin {
100
  $integrations[] = new Yoast_Network_Admin();
101
  }
102
 
 
 
 
 
 
 
 
 
 
103
  $integrations[] = new WPSEO_Yoast_Columns();
104
  $integrations[] = new WPSEO_License_Page_Manager();
105
  $integrations[] = new WPSEO_Statistic_Integration();
@@ -110,8 +109,13 @@ class WPSEO_Admin {
110
  $integrations[] = new WPSEO_MyYoast_Proxy();
111
  $integrations[] = new WPSEO_MyYoast_Route();
112
  $integrations[] = new WPSEO_Schema_Person_Upgrade_Notification();
113
- $integrations[] = $this->admin_features['google_search_console'];
114
- $integrations = array_merge( $integrations, $this->initialize_seo_links(), $this->initialize_cornerstone_content() );
 
 
 
 
 
115
 
116
  /** @var WPSEO_WordPress_Integration $integration */
117
  foreach ( $integrations as $integration ) {
49
  add_filter( 'wpseo_accessible_post_types', array( 'WPSEO_Post_Type', 'filter_attachment_post_type' ) );
50
  }
51
 
 
 
 
 
 
 
 
 
 
 
52
  if ( filter_input( INPUT_GET, 'page' ) === 'wpseo_tools' && filter_input( INPUT_GET, 'tool' ) === null ) {
53
  new WPSEO_Recalculate_Scores();
54
  }
90
  $integrations[] = new Yoast_Network_Admin();
91
  }
92
 
93
+ $this->admin_features = array(
94
+ 'google_search_console' => new WPSEO_GSC(),
95
+ 'dashboard_widget' => new Yoast_Dashboard_Widget(),
96
+ );
97
+
98
+ if ( WPSEO_Metabox::is_post_overview( $pagenow ) || WPSEO_Metabox::is_post_edit( $pagenow ) ) {
99
+ $this->admin_features['primary_category'] = new WPSEO_Primary_Term_Admin();
100
+ }
101
+
102
  $integrations[] = new WPSEO_Yoast_Columns();
103
  $integrations[] = new WPSEO_License_Page_Manager();
104
  $integrations[] = new WPSEO_Statistic_Integration();
109
  $integrations[] = new WPSEO_MyYoast_Proxy();
110
  $integrations[] = new WPSEO_MyYoast_Route();
111
  $integrations[] = new WPSEO_Schema_Person_Upgrade_Notification();
112
+
113
+ $integrations = array_merge(
114
+ $integrations,
115
+ $this->get_admin_features(),
116
+ $this->initialize_seo_links(),
117
+ $this->initialize_cornerstone_content()
118
+ );
119
 
120
  /** @var WPSEO_WordPress_Integration $integration */
121
  foreach ( $integrations as $integration ) {
admin/class-bulk-description-editor-list-table.php CHANGED
@@ -19,7 +19,7 @@ class WPSEO_Bulk_Description_List_Table extends WPSEO_Bulk_List_Table {
19
  protected $page_type = 'description';
20
 
21
  /**
22
- * Settings with are used in __construct
23
  *
24
  * @var array
25
  */
@@ -37,7 +37,7 @@ class WPSEO_Bulk_Description_List_Table extends WPSEO_Bulk_List_Table {
37
  protected $target_db_field = 'metadesc';
38
 
39
  /**
40
- * The columns shown on the table
41
  *
42
  * @return array
43
  */
@@ -51,7 +51,7 @@ class WPSEO_Bulk_Description_List_Table extends WPSEO_Bulk_List_Table {
51
  }
52
 
53
  /**
54
- * Parse the metadescription
55
  *
56
  * @param string $column_name Column name.
57
  * @param object $record Data object.
19
  protected $page_type = 'description';
20
 
21
  /**
22
+ * Settings with are used in __construct.
23
  *
24
  * @var array
25
  */
37
  protected $target_db_field = 'metadesc';
38
 
39
  /**
40
+ * The columns shown on the table.
41
  *
42
  * @return array
43
  */
51
  }
52
 
53
  /**
54
+ * Parse the metadescription.
55
  *
56
  * @param string $column_name Column name.
57
  * @param object $record Data object.
admin/class-bulk-editor-list-table.php CHANGED
@@ -12,7 +12,7 @@
12
  class WPSEO_Bulk_List_Table extends WP_List_Table {
13
 
14
  /**
15
- * The nonce that was passed with the request
16
  *
17
  * @var string
18
  */
@@ -40,35 +40,35 @@ class WPSEO_Bulk_List_Table extends WP_List_Table {
40
  protected $meta_data = array();
41
 
42
  /**
43
- * The current requested page_url
44
  *
45
  * @var string
46
  */
47
  private $request_url = '';
48
 
49
  /**
50
- * The current page (depending on $_GET['paged']) if current tab is for current page_type, else it will be 1
51
  *
52
  * @var integer
53
  */
54
  private $current_page;
55
 
56
  /**
57
- * The current post filter, if is used (depending on $_GET['post_type_filter'])
58
  *
59
  * @var string
60
  */
61
  private $current_filter;
62
 
63
  /**
64
- * The current post status, if is used (depending on $_GET['post_status'])
65
  *
66
  * @var string
67
  */
68
  private $current_status;
69
 
70
  /**
71
- * The current sorting, if used (depending on $_GET['order'] and $_GET['orderby'])
72
  *
73
  * @var string
74
  */
@@ -83,7 +83,7 @@ class WPSEO_Bulk_List_Table extends WP_List_Table {
83
 
84
  /**
85
  * Based on the page_type ($this->page_type) there will be constructed an url part, for subpages and
86
- * navigation
87
  *
88
  * @var string
89
  */
@@ -109,7 +109,7 @@ class WPSEO_Bulk_List_Table extends WP_List_Table {
109
  protected $input_fields = array();
110
 
111
  /**
112
- * Class constructor
113
  *
114
  * @param array $args The arguments.
115
  */
@@ -186,7 +186,7 @@ class WPSEO_Bulk_List_Table extends WP_List_Table {
186
  }
187
 
188
  /**
189
- * Will shown the navigation for the table like pagenavigation and pagefilter;
190
  *
191
  * @param string $which Table nav location (such as top).
192
  */
@@ -232,7 +232,8 @@ class WPSEO_Bulk_List_Table extends WP_List_Table {
232
  * This function takes into account the post types in which the current user can
233
  * edit all posts, and the ones the current user can only edit his/her own.
234
  *
235
- * @return string $subquery The subquery, which should always be used in $wpdb->prepare(), passing the current user_id in as the first parameter.
 
236
  */
237
  public function get_base_subquery() {
238
  global $wpdb;
@@ -428,7 +429,7 @@ class WPSEO_Bulk_List_Table extends WP_List_Table {
428
  }
429
 
430
  /**
431
- * Sets the correct pagenumber and pageurl for the navigation
432
  */
433
  public function prepare_page_navigation() {
434
 
@@ -472,7 +473,7 @@ class WPSEO_Bulk_List_Table extends WP_List_Table {
472
  }
473
 
474
  /**
475
- * Preparing the requested pagerows and setting the needed variables
476
  */
477
  public function prepare_items() {
478
 
@@ -496,7 +497,7 @@ class WPSEO_Bulk_List_Table extends WP_List_Table {
496
  }
497
 
498
  /**
499
- * Getting the columns for first row
500
  *
501
  * @return array
502
  */
@@ -505,7 +506,7 @@ class WPSEO_Bulk_List_Table extends WP_List_Table {
505
  }
506
 
507
  /**
508
- * Setting the column headers
509
  */
510
  protected function set_column_headers() {
511
  $columns = $this->get_columns();
@@ -515,7 +516,7 @@ class WPSEO_Bulk_List_Table extends WP_List_Table {
515
  }
516
 
517
  /**
518
- * Counting total items
519
  *
520
  * @param string $subquery SQL FROM part.
521
  * @param string $all_states SQL IN part.
@@ -537,7 +538,7 @@ class WPSEO_Bulk_List_Table extends WP_List_Table {
537
  }
538
 
539
  /**
540
- * Getting the post_type_clause filter
541
  *
542
  * @return string
543
  */
@@ -623,7 +624,8 @@ class WPSEO_Bulk_List_Table extends WP_List_Table {
623
  }
624
 
625
  /**
626
- * Heavily restricts the possible columns by which a user can order the table in the bulk editor, thereby preventing a possible CSRF vulnerability.
 
627
  *
628
  * @param string $orderby The column by which we want to order.
629
  *
@@ -644,7 +646,8 @@ class WPSEO_Bulk_List_Table extends WP_List_Table {
644
  }
645
 
646
  /**
647
- * Makes sure the order clause is always ASC or DESC for the bulk editor table, thereby preventing a possible CSRF vulnerability.
 
648
  *
649
  * @param string $order Whether we want to sort ascending or descending.
650
  *
12
  class WPSEO_Bulk_List_Table extends WP_List_Table {
13
 
14
  /**
15
+ * The nonce that was passed with the request.
16
  *
17
  * @var string
18
  */
40
  protected $meta_data = array();
41
 
42
  /**
43
+ * The current requested page_url.
44
  *
45
  * @var string
46
  */
47
  private $request_url = '';
48
 
49
  /**
50
+ * The current page (depending on $_GET['paged']) if current tab is for current page_type, else it will be 1.
51
  *
52
  * @var integer
53
  */
54
  private $current_page;
55
 
56
  /**
57
+ * The current post filter, if is used (depending on $_GET['post_type_filter']).
58
  *
59
  * @var string
60
  */
61
  private $current_filter;
62
 
63
  /**
64
+ * The current post status, if is used (depending on $_GET['post_status']).
65
  *
66
  * @var string
67
  */
68
  private $current_status;
69
 
70
  /**
71
+ * The current sorting, if used (depending on $_GET['order'] and $_GET['orderby']).
72
  *
73
  * @var string
74
  */
83
 
84
  /**
85
  * Based on the page_type ($this->page_type) there will be constructed an url part, for subpages and
86
+ * navigation.
87
  *
88
  * @var string
89
  */
109
  protected $input_fields = array();
110
 
111
  /**
112
+ * Class constructor.
113
  *
114
  * @param array $args The arguments.
115
  */
186
  }
187
 
188
  /**
189
+ * Will shown the navigation for the table like pagenavigation and pagefilter.
190
  *
191
  * @param string $which Table nav location (such as top).
192
  */
232
  * This function takes into account the post types in which the current user can
233
  * edit all posts, and the ones the current user can only edit his/her own.
234
  *
235
+ * @return string The subquery, which should always be used in $wpdb->prepare(),
236
+ * passing the current user_id in as the first parameter.
237
  */
238
  public function get_base_subquery() {
239
  global $wpdb;
429
  }
430
 
431
  /**
432
+ * Sets the correct pagenumber and pageurl for the navigation.
433
  */
434
  public function prepare_page_navigation() {
435
 
473
  }
474
 
475
  /**
476
+ * Preparing the requested pagerows and setting the needed variables.
477
  */
478
  public function prepare_items() {
479
 
497
  }
498
 
499
  /**
500
+ * Getting the columns for first row.
501
  *
502
  * @return array
503
  */
506
  }
507
 
508
  /**
509
+ * Setting the column headers.
510
  */
511
  protected function set_column_headers() {
512
  $columns = $this->get_columns();
516
  }
517
 
518
  /**
519
+ * Counting total items.
520
  *
521
  * @param string $subquery SQL FROM part.
522
  * @param string $all_states SQL IN part.
538
  }
539
 
540
  /**
541
+ * Getting the post_type_clause filter.
542
  *
543
  * @return string
544
  */
624
  }
625
 
626
  /**
627
+ * Heavily restricts the possible columns by which a user can order the table
628
+ * in the bulk editor, thereby preventing a possible CSRF vulnerability.
629
  *
630
  * @param string $orderby The column by which we want to order.
631
  *
646
  }
647
 
648
  /**
649
+ * Makes sure the order clause is always ASC or DESC for the bulk editor table,
650
+ * thereby preventing a possible CSRF vulnerability.
651
  *
652
  * @param string $order Whether we want to sort ascending or descending.
653
  *
admin/class-bulk-title-editor-list-table.php CHANGED
@@ -12,7 +12,7 @@
12
  class WPSEO_Bulk_Title_Editor_List_Table extends WPSEO_Bulk_List_Table {
13
 
14
  /**
15
- * Current type for this class will be title
16
  *
17
  * @var string
18
  */
@@ -20,7 +20,7 @@ class WPSEO_Bulk_Title_Editor_List_Table extends WPSEO_Bulk_List_Table {
20
 
21
 
22
  /**
23
- * Settings with are used in __construct
24
  *
25
  * @var array
26
  */
@@ -38,7 +38,7 @@ class WPSEO_Bulk_Title_Editor_List_Table extends WPSEO_Bulk_List_Table {
38
  protected $target_db_field = 'title';
39
 
40
  /**
41
- * The columns shown on the table
42
  *
43
  * @return array
44
  */
@@ -55,7 +55,7 @@ class WPSEO_Bulk_Title_Editor_List_Table extends WPSEO_Bulk_List_Table {
55
  }
56
 
57
  /**
58
- * Parse the title columns
59
  *
60
  * @param string $column_name Column name.
61
  * @param object $record Data object.
12
  class WPSEO_Bulk_Title_Editor_List_Table extends WPSEO_Bulk_List_Table {
13
 
14
  /**
15
+ * Current type for this class will be title.
16
  *
17
  * @var string
18
  */
20
 
21
 
22
  /**
23
+ * Settings with are used in __construct.
24
  *
25
  * @var array
26
  */
38
  protected $target_db_field = 'title';
39
 
40
  /**
41
+ * The columns shown on the table.
42
  *
43
  * @return array
44
  */
55
  }
56
 
57
  /**
58
+ * Parse the title columns.
59
  *
60
  * @param string $column_name Column name.
61
  * @param object $record Data object.
admin/class-config.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Admin_Pages
10
  *
11
  * Class with functionality for the Yoast SEO admin pages.
12
  */
@@ -27,7 +27,7 @@ class WPSEO_Admin_Pages {
27
  private $asset_manager;
28
 
29
  /**
30
- * Class constructor, which basically only hooks the init function on the init hook
31
  */
32
  public function __construct() {
33
  add_action( 'init', array( $this, 'init' ), 20 );
@@ -35,7 +35,7 @@ class WPSEO_Admin_Pages {
35
  }
36
 
37
  /**
38
- * Make sure the needed scripts are loaded for admin pages
39
  */
40
  public function init() {
41
  if ( filter_input( INPUT_GET, 'wpseo_reset_defaults' ) && wp_verify_nonce( filter_input( INPUT_GET, 'nonce' ), 'wpseo_reset_defaults' ) && current_user_can( 'manage_options' ) ) {
@@ -71,10 +71,7 @@ class WPSEO_Admin_Pages {
71
 
72
  if ( $page === 'wpseo_titles' ) {
73
  wp_localize_script( WPSEO_Admin_Asset_Manager::PREFIX . 'search-appearance', 'wpseoReplaceVarsL10n', $this->localize_replace_vars_script() );
74
- wp_localize_script( WPSEO_Admin_Asset_Manager::PREFIX . 'search-appearance', 'wpseoSearchAppearance', array(
75
- 'isRtl' => is_rtl(),
76
- 'userEditUrl' => add_query_arg( 'user_id', '{user_id}', admin_url( 'user-edit.php' ) ),
77
- ) );
78
  $this->asset_manager->enqueue_script( 'search-appearance' );
79
  $this->asset_manager->enqueue_style( 'search-appearance' );
80
  /**
@@ -134,6 +131,37 @@ class WPSEO_Admin_Pages {
134
  );
135
  }
136
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
137
  /**
138
  * Enqueues and handles all the tool dependencies.
139
  */
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Admin_Pages.
10
  *
11
  * Class with functionality for the Yoast SEO admin pages.
12
  */
27
  private $asset_manager;
28
 
29
  /**
30
+ * Class constructor, which basically only hooks the init function on the init hook.
31
  */
32
  public function __construct() {
33
  add_action( 'init', array( $this, 'init' ), 20 );
35
  }
36
 
37
  /**
38
+ * Make sure the needed scripts are loaded for admin pages.
39
  */
40
  public function init() {
41
  if ( filter_input( INPUT_GET, 'wpseo_reset_defaults' ) && wp_verify_nonce( filter_input( INPUT_GET, 'nonce' ), 'wpseo_reset_defaults' ) && current_user_can( 'manage_options' ) ) {
71
 
72
  if ( $page === 'wpseo_titles' ) {
73
  wp_localize_script( WPSEO_Admin_Asset_Manager::PREFIX . 'search-appearance', 'wpseoReplaceVarsL10n', $this->localize_replace_vars_script() );
74
+ wp_localize_script( WPSEO_Admin_Asset_Manager::PREFIX . 'search-appearance', 'wpseoSearchAppearance', $this->localize_search_appearance_script() );
 
 
 
75
  $this->asset_manager->enqueue_script( 'search-appearance' );
76
  $this->asset_manager->enqueue_style( 'search-appearance' );
77
  /**
131
  );
132
  }
133
 
134
+ /**
135
+ * Retrieves some variables that are needed for the search appearance in JS.
136
+ *
137
+ * @return array The search appearance variables.
138
+ */
139
+ public function localize_search_appearance_script() {
140
+ return array(
141
+ 'isRtl' => is_rtl(),
142
+ 'userEditUrl' => add_query_arg( 'user_id', '{user_id}', admin_url( 'user-edit.php' ) ),
143
+ 'brushstrokeBackgroundURL' => plugins_url( 'images/brushstroke_background.svg', WPSEO_FILE ),
144
+ 'showLocalSEOUpsell' => $this->should_show_local_seo_upsell(),
145
+ 'localSEOUpsellURL' => WPSEO_Shortlinker::get( 'https://yoa.st/3mp' ),
146
+ );
147
+ }
148
+
149
+ /**
150
+ * Determines whether the Local SEO upsell should be shown.
151
+ *
152
+ * The Local SEO upsell should:
153
+ * - Only be shown in Free, not when Premium is active.
154
+ * - Not be shown when Local SEO is active.
155
+ *
156
+ * @return bool Whether the Local SEO upsell should be shown.
157
+ */
158
+ private function should_show_local_seo_upsell() {
159
+ $addon_manager = new WPSEO_Addon_Manager();
160
+
161
+ return ! WPSEO_Utils::is_yoast_seo_premium() &&
162
+ ! $addon_manager->has_valid_subscription( WPSEO_Addon_Manager::LOCAL_SLUG );
163
+ }
164
+
165
  /**
166
  * Enqueues and handles all the tool dependencies.
167
  */
admin/class-customizer.php CHANGED
@@ -54,7 +54,7 @@ class WPSEO_Customizer {
54
  }
55
 
56
  /**
57
- * Function to support WordPress Customizer
58
  *
59
  * @param WP_Customize_Manager $wp_customize Manager class instance.
60
  */
@@ -76,7 +76,7 @@ class WPSEO_Customizer {
76
  }
77
 
78
  /**
79
- * Add the breadcrumbs section to the customizer
80
  */
81
  private function breadcrumbs_section() {
82
  $section_args = array(
@@ -90,7 +90,7 @@ class WPSEO_Customizer {
90
  }
91
 
92
  /**
93
- * Returns whether or not the breadcrumbs are active
94
  *
95
  * @return bool
96
  */
@@ -99,7 +99,7 @@ class WPSEO_Customizer {
99
  }
100
 
101
  /**
102
- * Adds the breadcrumbs remove blog checkbox
103
  */
104
  private function breadcrumbs_blog_remove_setting() {
105
  $index = 'breadcrumbs-display-blog-page';
@@ -113,7 +113,7 @@ class WPSEO_Customizer {
113
  }
114
 
115
  /**
116
- * Returns whether or not to show the breadcrumbs blog remove option
117
  *
118
  * @return bool
119
  */
@@ -122,7 +122,7 @@ class WPSEO_Customizer {
122
  }
123
 
124
  /**
125
- * Adds the breadcrumbs separator text field
126
  */
127
  private function breadcrumbs_separator_setting() {
128
  $index = 'breadcrumbs-sep';
@@ -135,7 +135,7 @@ class WPSEO_Customizer {
135
  }
136
 
137
  /**
138
- * Adds the breadcrumbs home anchor text field
139
  */
140
  private function breadcrumbs_home_setting() {
141
  $index = 'breadcrumbs-home';
@@ -147,7 +147,7 @@ class WPSEO_Customizer {
147
  }
148
 
149
  /**
150
- * Adds the breadcrumbs prefix text field
151
  */
152
  private function breadcrumbs_prefix_setting() {
153
  $index = 'breadcrumbs-prefix';
@@ -159,7 +159,7 @@ class WPSEO_Customizer {
159
  }
160
 
161
  /**
162
- * Adds the breadcrumbs archive prefix text field
163
  */
164
  private function breadcrumbs_archiveprefix_setting() {
165
  $index = 'breadcrumbs-archiveprefix';
@@ -171,7 +171,7 @@ class WPSEO_Customizer {
171
  }
172
 
173
  /**
174
- * Adds the breadcrumbs search prefix text field
175
  */
176
  private function breadcrumbs_searchprefix_setting() {
177
  $index = 'breadcrumbs-searchprefix';
@@ -183,7 +183,7 @@ class WPSEO_Customizer {
183
  }
184
 
185
  /**
186
- * Adds the breadcrumb 404 prefix text field
187
  */
188
  private function breadcrumbs_404_setting() {
189
  $index = 'breadcrumbs-404crumb';
54
  }
55
 
56
  /**
57
+ * Function to support WordPress Customizer.
58
  *
59
  * @param WP_Customize_Manager $wp_customize Manager class instance.
60
  */
76
  }
77
 
78
  /**
79
+ * Add the breadcrumbs section to the customizer.
80
  */
81
  private function breadcrumbs_section() {
82
  $section_args = array(
90
  }
91
 
92
  /**
93
+ * Returns whether or not the breadcrumbs are active.
94
  *
95
  * @return bool
96
  */
99
  }
100
 
101
  /**
102
+ * Adds the breadcrumbs remove blog checkbox.
103
  */
104
  private function breadcrumbs_blog_remove_setting() {
105
  $index = 'breadcrumbs-display-blog-page';
113
  }
114
 
115
  /**
116
+ * Returns whether or not to show the breadcrumbs blog remove option.
117
  *
118
  * @return bool
119
  */
122
  }
123
 
124
  /**
125
+ * Adds the breadcrumbs separator text field.
126
  */
127
  private function breadcrumbs_separator_setting() {
128
  $index = 'breadcrumbs-sep';
135
  }
136
 
137
  /**
138
+ * Adds the breadcrumbs home anchor text field.
139
  */
140
  private function breadcrumbs_home_setting() {
141
  $index = 'breadcrumbs-home';
147
  }
148
 
149
  /**
150
+ * Adds the breadcrumbs prefix text field.
151
  */
152
  private function breadcrumbs_prefix_setting() {
153
  $index = 'breadcrumbs-prefix';
159
  }
160
 
161
  /**
162
+ * Adds the breadcrumbs archive prefix text field.
163
  */
164
  private function breadcrumbs_archiveprefix_setting() {
165
  $index = 'breadcrumbs-archiveprefix';
171
  }
172
 
173
  /**
174
+ * Adds the breadcrumbs search prefix text field.
175
  */
176
  private function breadcrumbs_searchprefix_setting() {
177
  $index = 'breadcrumbs-searchprefix';
183
  }
184
 
185
  /**
186
+ * Adds the breadcrumb 404 prefix text field.
187
  */
188
  private function breadcrumbs_404_setting() {
189
  $index = 'breadcrumbs-404crumb';
admin/class-database-proxy.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Represents the proxy for communicating with the database
10
  */
11
  class WPSEO_Database_Proxy {
12
 
6
  */
7
 
8
  /**
9
+ * Represents the proxy for communicating with the database.
10
  */
11
  class WPSEO_Database_Proxy {
12
 
admin/class-export.php CHANGED
@@ -6,9 +6,9 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Export
10
  *
11
- * Class with functionality to export the WP SEO settings
12
  */
13
  class WPSEO_Export {
14
 
@@ -113,7 +113,7 @@ class WPSEO_Export {
113
  }
114
 
115
  /**
116
- * Writes a line to the export
117
  *
118
  * @param string $line Line string.
119
  * @param boolean $newline_first Boolean flag whether to prepend with new line.
@@ -126,7 +126,7 @@ class WPSEO_Export {
126
  }
127
 
128
  /**
129
- * Writes an entire option group to the export
130
  *
131
  * @param string $opt_group Option group name.
132
  */
@@ -154,7 +154,7 @@ class WPSEO_Export {
154
  }
155
 
156
  /**
157
- * Writes a settings line to the export
158
  *
159
  * @param string $key Key string.
160
  * @param string $val Value string.
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Export.
10
  *
11
+ * Class with functionality to export the WP SEO settings.
12
  */
13
  class WPSEO_Export {
14
 
113
  }
114
 
115
  /**
116
+ * Writes a line to the export.
117
  *
118
  * @param string $line Line string.
119
  * @param boolean $newline_first Boolean flag whether to prepend with new line.
126
  }
127
 
128
  /**
129
+ * Writes an entire option group to the export.
130
  *
131
  * @param string $opt_group Option group name.
132
  */
154
  }
155
 
156
  /**
157
+ * Writes a settings line to the export.
158
  *
159
  * @param string $key Key string.
160
  * @param string $val Value string.
admin/class-extensions.php CHANGED
@@ -17,34 +17,34 @@ class WPSEO_Extensions {
17
  */
18
  protected $extensions = array(
19
  'Yoast SEO Premium' => array(
20
- 'slug' => 'yoast-seo-premium',
21
- 'identifier' => 'wordpress-seo-premium',
22
- 'classname' => 'WPSEO_Premium',
23
- 'my-yoast-slug' => WPSEO_Addon_Manager::PREMIUM_SLUG,
24
  ),
25
  'News SEO' => array(
26
- 'slug' => 'news-seo',
27
- 'identifier' => 'wpseo-news',
28
- 'classname' => 'WPSEO_News',
29
- 'my-yoast-slug' => WPSEO_Addon_Manager::NEWS_SLUG,
30
  ),
31
  'Yoast WooCommerce SEO' => array(
32
- 'slug' => 'woocommerce-yoast-seo',
33
- 'identifier' => 'wpseo-woocommerce',
34
- 'classname' => 'Yoast_WooCommerce_SEO',
35
- 'my-yoast-slug' => WPSEO_Addon_Manager::WOOCOMMERCE_SLUG,
36
  ),
37
  'Video SEO' => array(
38
- 'slug' => 'video-seo-for-wordpress',
39
- 'identifier' => 'wpseo-video',
40
- 'classname' => 'WPSEO_Video_Sitemap',
41
- 'my-yoast-slug' => WPSEO_Addon_Manager::VIDEO_SLUG,
42
  ),
43
  'Local SEO' => array(
44
- 'slug' => 'local-seo-for-wordpress',
45
- 'identifier' => 'wpseo-local',
46
- 'classname' => 'WPSEO_Local_Core',
47
- 'my-yoast-slug' => WPSEO_Addon_Manager::LOCAL_SLUG,
48
  ),
49
  );
50
 
17
  */
18
  protected $extensions = array(
19
  'Yoast SEO Premium' => array(
20
+ 'slug' => 'yoast-seo-premium',
21
+ 'identifier' => 'wordpress-seo-premium',
22
+ 'classname' => 'WPSEO_Premium',
23
+ 'my-yoast-slug' => WPSEO_Addon_Manager::PREMIUM_SLUG,
24
  ),
25
  'News SEO' => array(
26
+ 'slug' => 'news-seo',
27
+ 'identifier' => 'wpseo-news',
28
+ 'classname' => 'WPSEO_News',
29
+ 'my-yoast-slug' => WPSEO_Addon_Manager::NEWS_SLUG,
30
  ),
31
  'Yoast WooCommerce SEO' => array(
32
+ 'slug' => 'woocommerce-yoast-seo',
33
+ 'identifier' => 'wpseo-woocommerce',
34
+ 'classname' => 'Yoast_WooCommerce_SEO',
35
+ 'my-yoast-slug' => WPSEO_Addon_Manager::WOOCOMMERCE_SLUG,
36
  ),
37
  'Video SEO' => array(
38
+ 'slug' => 'video-seo-for-wordpress',
39
+ 'identifier' => 'wpseo-video',
40
+ 'classname' => 'WPSEO_Video_Sitemap',
41
+ 'my-yoast-slug' => WPSEO_Addon_Manager::VIDEO_SLUG,
42
  ),
43
  'Local SEO' => array(
44
+ 'slug' => 'local-seo-for-wordpress',
45
+ 'identifier' => 'wpseo-local',
46
+ 'classname' => 'WPSEO_Local_Core',
47
+ 'my-yoast-slug' => WPSEO_Addon_Manager::LOCAL_SLUG,
48
  ),
49
  );
50
 
admin/class-gutenberg-compatibility.php CHANGED
@@ -15,14 +15,14 @@ class WPSEO_Gutenberg_Compatibility {
15
  *
16
  * @var string
17
  */
18
- const CURRENT_RELEASE = '5.4.0';
19
 
20
  /**
21
  * The minimally supported version of Gutenberg by the plugin.
22
  *
23
  * @var string
24
  */
25
- const MINIMUM_SUPPORTED = '5.4.0';
26
 
27
  /**
28
  * @var string
15
  *
16
  * @var string
17
  */
18
+ const CURRENT_RELEASE = '5.5.0';
19
 
20
  /**
21
  * The minimally supported version of Gutenberg by the plugin.
22
  *
23
  * @var string
24
  */
25
+ const MINIMUM_SUPPORTED = '5.5.0';
26
 
27
  /**
28
  * @var string
admin/class-help-center-item.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Help_Center_Item
10
  */
11
  class WPSEO_Help_Center_Item {
12
 
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Help_Center_Item.
10
  */
11
  class WPSEO_Help_Center_Item {
12
 
admin/class-help-center.php CHANGED
@@ -238,7 +238,7 @@ class WPSEO_Help_Center {
238
  *
239
  * %s is replaced with <code>%s</code> and replaced again in the javascript with the actual variable.
240
  *
241
- * @return array Translated text strings for the help center.
242
  */
243
  public static function get_translated_texts() {
244
  // Esc_html is not needed because React already handles HTML in the (translations of) these strings.
238
  *
239
  * %s is replaced with <code>%s</code> and replaced again in the javascript with the actual variable.
240
  *
241
+ * @return array Translated text strings for the help center.
242
  */
243
  public static function get_translated_texts() {
244
  // Esc_html is not needed because React already handles HTML in the (translations of) these strings.
admin/class-keyword-synonyms-modal.php CHANGED
@@ -36,7 +36,7 @@ class WPSEO_Keyword_Synonyms_Modal {
36
  __( 'Get %s', 'wordpress-seo' ),
37
  'Yoast SEO Premium'
38
  ),
39
- 'small' => __( '1 year free updates and upgrades included!', 'wordpress-seo' ),
40
  'a11yNotice.opensInNewTab' => __( '(Opens in a new browser tab)', 'wordpress-seo' ),
41
  );
42
  }
36
  __( 'Get %s', 'wordpress-seo' ),
37
  'Yoast SEO Premium'
38
  ),
39
+ 'small' => __( '1 year free support and updates included!', 'wordpress-seo' ),
40
  'a11yNotice.opensInNewTab' => __( '(Opens in a new browser tab)', 'wordpress-seo' ),
41
  );
42
  }
admin/class-license-page-manager.php CHANGED
@@ -187,7 +187,7 @@ class WPSEO_License_Page_Manager implements WPSEO_WordPress_Integration {
187
  }
188
 
189
  /**
190
- * Creates an instance of Yoast_Notification
191
  *
192
  * @param string $product_name The product to create the notification for.
193
  *
187
  }
188
 
189
  /**
190
+ * Creates an instance of Yoast_Notification.
191
  *
192
  * @param string $product_name The product to create the notification for.
193
  *
admin/class-meta-columns.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Meta_Columns
10
  */
11
  class WPSEO_Meta_Columns {
12
 
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Meta_Columns.
10
  */
11
  class WPSEO_Meta_Columns {
12
 
admin/class-meta-storage.php CHANGED
@@ -89,7 +89,7 @@ class WPSEO_Meta_Storage implements WPSEO_Installable {
89
  }
90
 
91
  /**
92
- * Updates the incoming link count
93
  *
94
  * @param array $post_ids The posts to update the incoming link count for.
95
  * @param WPSEO_Link_Storage $storage The link storage object.
89
  }
90
 
91
  /**
92
+ * Updates the incoming link count.
93
  *
94
  * @param array $post_ids The posts to update the incoming link count for.
95
  * @param WPSEO_Link_Storage $storage The link storage object.
admin/class-multiple-keywords-modal.php CHANGED
@@ -36,7 +36,7 @@ class WPSEO_Multiple_Keywords_Modal {
36
  __( 'Get %s', 'wordpress-seo' ),
37
  'Yoast SEO Premium'
38
  ),
39
- 'small' => __( '1 year free updates and upgrades included!', 'wordpress-seo' ),
40
  'a11yNotice.opensInNewTab' => __( '(Opens in a new browser tab)', 'wordpress-seo' ),
41
  );
42
  }
36
  __( 'Get %s', 'wordpress-seo' ),
37
  'Yoast SEO Premium'
38
  ),
39
+ 'small' => __( '1 year free support and updates included!', 'wordpress-seo' ),
40
  'a11yNotice.opensInNewTab' => __( '(Opens in a new browser tab)', 'wordpress-seo' ),
41
  );
42
  }
admin/class-my-yoast-proxy.php CHANGED
@@ -144,7 +144,7 @@ class WPSEO_MyYoast_Proxy implements WPSEO_WordPress_Integration {
144
  /**
145
  * Tries to load the given url.
146
  *
147
- * @see https://php.net/manual/en/function.readfile.php
148
  *
149
  * @codeCoverageIgnore
150
  *
@@ -185,7 +185,7 @@ class WPSEO_MyYoast_Proxy implements WPSEO_WordPress_Integration {
185
  *
186
  * @codeCoverageIgnore
187
  *
188
- * @see https://php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen
189
  *
190
  * @return bool True when the PHP configuration allows for url loading via readfile.
191
  */
144
  /**
145
  * Tries to load the given url.
146
  *
147
+ * @link https://php.net/manual/en/function.readfile.php
148
  *
149
  * @codeCoverageIgnore
150
  *
185
  *
186
  * @codeCoverageIgnore
187
  *
188
+ * @link https://php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen
189
  *
190
  * @return bool True when the PHP configuration allows for url loading via readfile.
191
  */
admin/class-option-tab.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Option_Tab
10
  */
11
  class WPSEO_Option_Tab {
12
 
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Option_Tab.
10
  */
11
  class WPSEO_Option_Tab {
12
 
admin/class-option-tabs-formatter.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Option_Tabs_Formatter
10
  */
11
  class WPSEO_Option_Tabs_Formatter {
12
 
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Option_Tabs_Formatter.
10
  */
11
  class WPSEO_Option_Tabs_Formatter {
12
 
admin/class-option-tabs.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Option_Tabs
10
  */
11
  class WPSEO_Option_Tabs {
12
 
@@ -47,7 +47,7 @@ class WPSEO_Option_Tabs {
47
  }
48
 
49
  /**
50
- * Get the base
51
  *
52
  * @return string
53
  */
@@ -56,7 +56,7 @@ class WPSEO_Option_Tabs {
56
  }
57
 
58
  /**
59
- * Add a tab
60
  *
61
  * @param WPSEO_Option_Tab $tab Tab to add.
62
  *
@@ -69,7 +69,7 @@ class WPSEO_Option_Tabs {
69
  }
70
 
71
  /**
72
- * Get active tab
73
  *
74
  * @return null|WPSEO_Option_Tab Get the active tab.
75
  */
@@ -90,7 +90,7 @@ class WPSEO_Option_Tabs {
90
  }
91
 
92
  /**
93
- * Is the tab the active tab
94
  *
95
  * @param WPSEO_Option_Tab $tab Tab to check for active tab.
96
  *
@@ -101,7 +101,7 @@ class WPSEO_Option_Tabs {
101
  }
102
 
103
  /**
104
- * Get all tabs
105
  *
106
  * @return WPSEO_Option_Tab[]
107
  */
@@ -110,7 +110,7 @@ class WPSEO_Option_Tabs {
110
  }
111
 
112
  /**
113
- * Display the tabs
114
  *
115
  * @param Yoast_Form $yform Yoast Form needed in the views.
116
  */
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Option_Tabs.
10
  */
11
  class WPSEO_Option_Tabs {
12
 
47
  }
48
 
49
  /**
50
+ * Get the base.
51
  *
52
  * @return string
53
  */
56
  }
57
 
58
  /**
59
+ * Add a tab.
60
  *
61
  * @param WPSEO_Option_Tab $tab Tab to add.
62
  *
69
  }
70
 
71
  /**
72
+ * Get active tab.
73
  *
74
  * @return null|WPSEO_Option_Tab Get the active tab.
75
  */
90
  }
91
 
92
  /**
93
+ * Is the tab the active tab.
94
  *
95
  * @param WPSEO_Option_Tab $tab Tab to check for active tab.
96
  *
101
  }
102
 
103
  /**
104
+ * Get all tabs.
105
  *
106
  * @return WPSEO_Option_Tab[]
107
  */
110
  }
111
 
112
  /**
113
+ * Display the tabs.
114
  *
115
  * @param Yoast_Form $yform Yoast Form needed in the views.
116
  */
admin/class-paper-presenter.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_presenter_paper
10
  */
11
  class WPSEO_Paper_Presenter {
12
 
6
  */
7
 
8
  /**
9
+ * Class WPSEO_presenter_paper.
10
  */
11
  class WPSEO_Paper_Presenter {
12
 
admin/class-plugin-compatibility.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Plugin_Compatibility
10
  */
11
  class WPSEO_Plugin_Compatibility {
12
 
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Plugin_Compatibility.
10
  */
11
  class WPSEO_Plugin_Compatibility {
12
 
admin/class-plugin-conflict.php CHANGED
@@ -106,7 +106,7 @@ class WPSEO_Plugin_Conflict extends Yoast_Plugin_Conflict {
106
  );
107
 
108
  /**
109
- * Overrides instance to set with this class as class
110
  *
111
  * @param string $class_name Optional class name.
112
  *
106
  );
107
 
108
  /**
109
+ * Overrides instance to set with this class as class.
110
  *
111
  * @param string $class_name Optional class name.
112
  *
admin/class-premium-popup.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Premium_popup
10
  */
11
  class WPSEO_Premium_Popup {
12
 
@@ -25,14 +25,14 @@ class WPSEO_Premium_Popup {
25
  private $heading_level = '';
26
 
27
  /**
28
- * The title of the popup
29
  *
30
  * @var String
31
  */
32
  private $title = '';
33
 
34
  /**
35
- * The content of the popup
36
  *
37
  * @var String
38
  */
@@ -85,7 +85,7 @@ class WPSEO_Premium_Popup {
85
  if ( $popup ) {
86
  $classes = ' hidden';
87
  }
88
- $micro_copy = __( '1 year free updates and upgrades included!', 'wordpress-seo' );
89
 
90
  $popup = <<<EO_POPUP
91
  <div id="wpseo-{$this->identifier}-popup" class="wpseo-premium-popup wp-clearfix$classes">
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Premium_popup.
10
  */
11
  class WPSEO_Premium_Popup {
12
 
25
  private $heading_level = '';
26
 
27
  /**
28
+ * The title of the popup.
29
  *
30
  * @var String
31
  */
32
  private $title = '';
33
 
34
  /**
35
+ * The content of the popup.
36
  *
37
  * @var String
38
  */
85
  if ( $popup ) {
86
  $classes = ' hidden';
87
  }
88
+ $micro_copy = __( '1 year free support and updates included!', 'wordpress-seo' );
89
 
90
  $popup = <<<EO_POPUP
91
  <div id="wpseo-{$this->identifier}-popup" class="wpseo-premium-popup wp-clearfix$classes">
admin/class-primary-term-admin.php CHANGED
@@ -8,12 +8,12 @@
8
  /**
9
  * Adds the UI to change the primary term for a post.
10
  */
11
- class WPSEO_Primary_Term_Admin {
12
 
13
  /**
14
  * Constructor.
15
  */
16
- public function __construct() {
17
  add_filter( 'wpseo_content_meta_section_content', array( $this, 'add_input_fields' ) );
18
 
19
  add_action( 'admin_footer', array( $this, 'wp_footer' ), 10 );
@@ -107,7 +107,7 @@ class WPSEO_Primary_Term_Admin {
107
  }
108
 
109
  /**
110
- * Enqueues all the assets needed for the primary term interface
111
  *
112
  * @return void
113
  */
@@ -138,7 +138,7 @@ class WPSEO_Primary_Term_Admin {
138
  }
139
 
140
  /**
141
- * Saves all selected primary terms
142
  *
143
  * @param int $post_id Post ID to save primary terms for.
144
  */
@@ -156,7 +156,7 @@ class WPSEO_Primary_Term_Admin {
156
  }
157
 
158
  /**
159
- * Gets the id of the primary term
160
  *
161
  * @param string $taxonomy_name Taxonomy name for the term.
162
  *
@@ -169,7 +169,7 @@ class WPSEO_Primary_Term_Admin {
169
  }
170
 
171
  /**
172
- * Returns all the taxonomies for which the primary term selection is enabled
173
  *
174
  * @param int $post_id Default current post ID.
175
  * @return array
8
  /**
9
  * Adds the UI to change the primary term for a post.
10
  */
11
+ class WPSEO_Primary_Term_Admin implements WPSEO_WordPress_Integration {
12
 
13
  /**
14
  * Constructor.
15
  */
16
+ public function register_hooks() {
17
  add_filter( 'wpseo_content_meta_section_content', array( $this, 'add_input_fields' ) );
18
 
19
  add_action( 'admin_footer', array( $this, 'wp_footer' ), 10 );
107
  }
108
 
109
  /**
110
+ * Enqueues all the assets needed for the primary term interface.
111
  *
112
  * @return void
113
  */
138
  }
139
 
140
  /**
141
+ * Saves all selected primary terms.
142
  *
143
  * @param int $post_id Post ID to save primary terms for.
144
  */
156
  }
157
 
158
  /**
159
+ * Gets the id of the primary term.
160
  *
161
  * @param string $taxonomy_name Taxonomy name for the term.
162
  *
169
  }
170
 
171
  /**
172
+ * Returns all the taxonomies for which the primary term selection is enabled.
173
  *
174
  * @param int $post_id Default current post ID.
175
  * @return array
admin/class-product-upsell-notice.php CHANGED
@@ -36,15 +36,7 @@ class WPSEO_Product_Upsell_Notice {
36
  * Checks if the notice should be added or removed.
37
  */
38
  public function initialize() {
39
- if ( $this->is_notice_dismissed() ) {
40
- $this->remove_notification();
41
-
42
- return;
43
- }
44
-
45
- if ( $this->should_add_notification() ) {
46
- $this->add_notification();
47
- }
48
  }
49
 
50
  /**
@@ -194,7 +186,7 @@ class WPSEO_Product_Upsell_Notice {
194
  }
195
 
196
  /**
197
- * Returns the set options
198
  *
199
  * @return mixed|void
200
  */
36
  * Checks if the notice should be added or removed.
37
  */
38
  public function initialize() {
39
+ $this->remove_notification();
 
 
 
 
 
 
 
 
40
  }
41
 
42
  /**
186
  }
187
 
188
  /**
189
+ * Returns the set options.
190
  *
191
  * @return mixed|void
192
  */
admin/class-recalculate-scores.php CHANGED
@@ -6,9 +6,9 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Recalculate_Scores
10
  *
11
- * This class handles the SEO score recalculation for all posts with a filled focus keyword
12
  */
13
  class WPSEO_Recalculate_Scores {
14
 
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Recalculate_Scores.
10
  *
11
+ * This class handles the SEO score recalculation for all posts with a filled focus keyword.
12
  */
13
  class WPSEO_Recalculate_Scores {
14
 
admin/class-social-admin.php CHANGED
@@ -194,7 +194,7 @@ class WPSEO_Social_Admin extends WPSEO_Metabox {
194
  *
195
  * @param array $field_defs Array of metaboxes to save.
196
  *
197
- * @return array
198
  */
199
  public function save_meta_boxes( $field_defs ) {
200
  if ( ! isset( $_POST['yoast_free_metabox_social_nonce'] ) || ! wp_verify_nonce( $_POST['yoast_free_metabox_social_nonce'], 'yoast_free_metabox_social' ) ) {
194
  *
195
  * @param array $field_defs Array of metaboxes to save.
196
  *
197
+ * @return array
198
  */
199
  public function save_meta_boxes( $field_defs ) {
200
  if ( ! isset( $_POST['yoast_free_metabox_social_nonce'] ) || ! wp_verify_nonce( $_POST['yoast_free_metabox_social_nonce'], 'yoast_free_metabox_social' ) ) {
admin/class-yoast-alerts.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class Yoast_Alerts
10
  */
11
  class Yoast_Alerts {
12
 
@@ -91,7 +91,7 @@ class Yoast_Alerts {
91
  }
92
 
93
  /**
94
- * Enqueue assets
95
  */
96
  public function enqueue_assets() {
97
 
@@ -100,7 +100,7 @@ class Yoast_Alerts {
100
  }
101
 
102
  /**
103
- * Handle ajax request to dismiss an alert
104
  */
105
  public function ajax_dismiss_alert() {
106
 
@@ -116,7 +116,7 @@ class Yoast_Alerts {
116
  }
117
 
118
  /**
119
- * Handle ajax request to restore an alert
120
  */
121
  public function ajax_restore_alert() {
122
 
@@ -132,7 +132,7 @@ class Yoast_Alerts {
132
  }
133
 
134
  /**
135
- * Create AJAX response data
136
  *
137
  * @param string $type Alert type.
138
  */
@@ -148,7 +148,7 @@ class Yoast_Alerts {
148
  }
149
 
150
  /**
151
- * Get the HTML to return in the AJAX request
152
  *
153
  * @param string $type Alert type.
154
  *
@@ -181,7 +181,7 @@ class Yoast_Alerts {
181
  }
182
 
183
  /**
184
- * Extract the Yoast Notification from the AJAX request
185
  *
186
  * @return null|Yoast_Notification
187
  */
@@ -194,7 +194,7 @@ class Yoast_Alerts {
194
  }
195
 
196
  /**
197
- * Show the alerts overview page
198
  */
199
  public static function show_overview_page() {
200
 
@@ -205,7 +205,7 @@ class Yoast_Alerts {
205
  }
206
 
207
  /**
208
- * Collect the alerts and group them together
209
  */
210
  public static function collect_alerts() {
211
 
@@ -224,7 +224,7 @@ class Yoast_Alerts {
224
  }
225
 
226
  /**
227
- * Get the variables needed in the views
228
  *
229
  * @return array
230
  */
@@ -249,7 +249,7 @@ class Yoast_Alerts {
249
  }
250
 
251
  /**
252
- * Get the number of active alerts
253
  *
254
  * @return int
255
  */
@@ -259,7 +259,7 @@ class Yoast_Alerts {
259
  }
260
 
261
  /**
262
- * Filter out any non-errors
263
  *
264
  * @param Yoast_Notification $notification Notification to test.
265
  *
@@ -271,7 +271,7 @@ class Yoast_Alerts {
271
  }
272
 
273
  /**
274
- * Filter out any non-warnings
275
  *
276
  * @param Yoast_Notification $notification Notification to test.
277
  *
@@ -283,7 +283,7 @@ class Yoast_Alerts {
283
  }
284
 
285
  /**
286
- * Filter out any dismissed notifications
287
  *
288
  * @param Yoast_Notification $notification Notification to test.
289
  *
6
  */
7
 
8
  /**
9
+ * Class Yoast_Alerts.
10
  */
11
  class Yoast_Alerts {
12
 
91
  }
92
 
93
  /**
94
+ * Enqueue assets.
95
  */
96
  public function enqueue_assets() {
97
 
100
  }
101
 
102
  /**
103
+ * Handle ajax request to dismiss an alert.
104
  */
105
  public function ajax_dismiss_alert() {
106
 
116
  }
117
 
118
  /**
119
+ * Handle ajax request to restore an alert.
120
  */
121
  public function ajax_restore_alert() {
122
 
132
  }
133
 
134
  /**
135
+ * Create AJAX response data.
136
  *
137
  * @param string $type Alert type.
138
  */
148
  }
149
 
150
  /**
151
+ * Get the HTML to return in the AJAX request.
152
  *
153
  * @param string $type Alert type.
154
  *
181
  }
182
 
183
  /**
184
+ * Extract the Yoast Notification from the AJAX request.
185
  *
186
  * @return null|Yoast_Notification
187
  */
194
  }
195
 
196
  /**
197
+ * Show the alerts overview page.
198
  */
199
  public static function show_overview_page() {
200
 
205
  }
206
 
207
  /**
208
+ * Collect the alerts and group them together.
209
  */
210
  public static function collect_alerts() {
211
 
224
  }
225
 
226
  /**
227
+ * Get the variables needed in the views.
228
  *
229
  * @return array
230
  */
249
  }
250
 
251
  /**
252
+ * Get the number of active alerts.
253
  *
254
  * @return int
255
  */
259
  }
260
 
261
  /**
262
+ * Filter out any non-errors.
263
  *
264
  * @param Yoast_Notification $notification Notification to test.
265
  *
271
  }
272
 
273
  /**
274
+ * Filter out any non-warnings.
275
  *
276
  * @param Yoast_Notification $notification Notification to test.
277
  *
283
  }
284
 
285
  /**
286
+ * Filter out any dismissed notifications.
287
  *
288
  * @param Yoast_Notification $notification Notification to test.
289
  *
admin/class-yoast-columns.php CHANGED
@@ -11,7 +11,7 @@
11
  class WPSEO_Yoast_Columns implements WPSEO_WordPress_Integration {
12
 
13
  /**
14
- * Registers all hooks to WordPress
15
  */
16
  public function register_hooks() {
17
  add_action( 'load-edit.php', array( $this, 'add_help_tab' ) );
11
  class WPSEO_Yoast_Columns implements WPSEO_WordPress_Integration {
12
 
13
  /**
14
+ * Registers all hooks to WordPress.
15
  */
16
  public function register_hooks() {
17
  add_action( 'load-edit.php', array( $this, 'add_help_tab' ) );
admin/class-yoast-dashboard-widget.php CHANGED
@@ -6,9 +6,9 @@
6
  */
7
 
8
  /**
9
- * Class to change or add WordPress dashboard widgets
10
  */
11
- class Yoast_Dashboard_Widget {
12
 
13
  /**
14
  * @var string
@@ -26,16 +26,23 @@ class Yoast_Dashboard_Widget {
26
  protected $statistics;
27
 
28
  /**
29
- * @param WPSEO_Statistics $statistics The statistics class to retrieve statistics from.
 
 
30
  */
31
  public function __construct( WPSEO_Statistics $statistics = null ) {
32
- if ( null === $statistics ) {
33
  $statistics = new WPSEO_Statistics();
34
  }
35
 
36
  $this->statistics = $statistics;
37
  $this->asset_manager = new WPSEO_Admin_Asset_Manager();
 
38
 
 
 
 
 
39
  add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_dashboard_assets' ) );
40
  add_action( 'admin_init', array( $this, 'queue_dashboard_widget' ) );
41
  }
@@ -52,7 +59,7 @@ class Yoast_Dashboard_Widget {
52
  }
53
 
54
  /**
55
- * Adds dashboard widget to WordPress
56
  */
57
  public function add_dashboard_widget() {
58
  add_filter( 'postbox_classes_dashboard_wpseo-dashboard-overview', array( $this, 'wpseo_dashboard_overview_class' ) );
6
  */
7
 
8
  /**
9
+ * Class to change or add WordPress dashboard widgets.
10
  */
11
+ class Yoast_Dashboard_Widget implements WPSEO_WordPress_Integration {
12
 
13
  /**
14
  * @var string
26
  protected $statistics;
27
 
28
  /**
29
+ * Yoast_Dashboard_Widget constructor.
30
+ *
31
+ * @param WPSEO_Statistics|null $statistics WPSEO_Statistics instance.
32
  */
33
  public function __construct( WPSEO_Statistics $statistics = null ) {
34
+ if ( $statistics === null ) {
35
  $statistics = new WPSEO_Statistics();
36
  }
37
 
38
  $this->statistics = $statistics;
39
  $this->asset_manager = new WPSEO_Admin_Asset_Manager();
40
+ }
41
 
42
+ /**
43
+ * Register WordPress hooks.
44
+ */
45
+ public function register_hooks() {
46
  add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_dashboard_assets' ) );
47
  add_action( 'admin_init', array( $this, 'queue_dashboard_widget' ) );
48
  }
59
  }
60
 
61
  /**
62
+ * Adds dashboard widget to WordPress.
63
  */
64
  public function add_dashboard_widget() {
65
  add_filter( 'postbox_classes_dashboard_wpseo-dashboard-overview', array( $this, 'wpseo_dashboard_overview_class' ) );
admin/class-yoast-form.php CHANGED
@@ -41,7 +41,7 @@ class Yoast_Form {
41
  protected $option_instance = null;
42
 
43
  /**
44
- * Get the singleton instance of this class
45
  *
46
  * @since 2.0
47
  *
@@ -56,7 +56,7 @@ class Yoast_Form {
56
  }
57
 
58
  /**
59
- * Generates the header for admin pages
60
  *
61
  * @since 2.0
62
  *
@@ -73,8 +73,8 @@ class Yoast_Form {
73
  <div class="wrap yoast wpseo-admin-page <?php echo esc_attr( 'page-' . $option ); ?>">
74
  <?php
75
  /**
76
- * Display the updated/error messages
77
- * Only needed as our settings page is not under options, otherwise it will automatically be included
78
  *
79
  * @see settings_errors()
80
  */
@@ -104,7 +104,7 @@ class Yoast_Form {
104
  }
105
 
106
  /**
107
- * Set the option used in output for form elements
108
  *
109
  * @since 2.0
110
  *
@@ -140,7 +140,7 @@ class Yoast_Form {
140
  }
141
 
142
  /**
143
- * Generates the footer for admin pages
144
  *
145
  * @since 2.0
146
  *
@@ -156,12 +156,12 @@ class Yoast_Form {
156
  }
157
 
158
  /**
159
- * Apply general admin_footer hooks
160
  */
161
  do_action( 'wpseo_admin_footer', $this );
162
 
163
  /**
164
- * Run possibly set actions to add for example an i18n box
165
  */
166
  do_action( 'wpseo_admin_promo_footer' );
167
 
@@ -196,7 +196,7 @@ class Yoast_Form {
196
  }
197
 
198
  /**
199
- * Output a label element
200
  *
201
  * @since 2.0
202
  *
@@ -511,7 +511,7 @@ class Yoast_Form {
511
  }
512
 
513
  /**
514
- * Media input
515
  *
516
  * @since 2.0
517
  *
41
  protected $option_instance = null;
42
 
43
  /**
44
+ * Get the singleton instance of this class.
45
  *
46
  * @since 2.0
47
  *
56
  }
57
 
58
  /**
59
+ * Generates the header for admin pages.
60
  *
61
  * @since 2.0
62
  *
73
  <div class="wrap yoast wpseo-admin-page <?php echo esc_attr( 'page-' . $option ); ?>">
74
  <?php
75
  /**
76
+ * Display the updated/error messages.
77
+ * Only needed as our settings page is not under options, otherwise it will automatically be included.
78
  *
79
  * @see settings_errors()
80
  */
104
  }
105
 
106
  /**
107
+ * Set the option used in output for form elements.
108
  *
109
  * @since 2.0
110
  *
140
  }
141
 
142
  /**
143
+ * Generates the footer for admin pages.
144
  *
145
  * @since 2.0
146
  *
156
  }
157
 
158
  /**
159
+ * Apply general admin_footer hooks.
160
  */
161
  do_action( 'wpseo_admin_footer', $this );
162
 
163
  /**
164
+ * Run possibly set actions to add for example an i18n box.
165
  */
166
  do_action( 'wpseo_admin_promo_footer' );
167
 
196
  }
197
 
198
  /**
199
+ * Output a label element.
200
  *
201
  * @since 2.0
202
  *
511
  }
512
 
513
  /**
514
+ * Media input.
515
  *
516
  * @since 2.0
517
  *
admin/class-yoast-network-admin.php CHANGED
@@ -116,7 +116,7 @@ class Yoast_Network_Admin implements WPSEO_WordPress_Integration, WPSEO_WordPres
116
  foreach ( $whitelist_options as $option_name ) {
117
  $value = null;
118
  if ( isset( $_POST[ $option_name ] ) ) { // WPCS: CSRF ok.
119
- // Adding sanitize_text_field around this will break the saving of settings because it expects a string: https://github.com/Yoast/wordpress-seo/issues/12440.
120
  $value = wp_unslash( $_POST[ $option_name ] ); // WPCS: CSRF ok.
121
  }
122
 
116
  foreach ( $whitelist_options as $option_name ) {
117
  $value = null;
118
  if ( isset( $_POST[ $option_name ] ) ) { // WPCS: CSRF ok.
119
+ // Adding sanitize_text_field around this will break the saving of settings because it expects a string: https://github.com/Yoast/wordpress-seo/issues/12440.
120
  $value = wp_unslash( $_POST[ $option_name ] ); // WPCS: CSRF ok.
121
  }
122
 
admin/class-yoast-notification-center.php CHANGED
@@ -58,7 +58,7 @@ class Yoast_Notification_Center {
58
  private $notifications_retrieved = false;
59
 
60
  /**
61
- * Construct
62
  */
63
  private function __construct() {
64
 
@@ -73,7 +73,7 @@ class Yoast_Notification_Center {
73
  }
74
 
75
  /**
76
- * Singleton getter
77
  *
78
  * @return Yoast_Notification_Center
79
  */
@@ -87,7 +87,7 @@ class Yoast_Notification_Center {
87
  }
88
 
89
  /**
90
- * Dismiss a notification
91
  */
92
  public static function ajax_dismiss_notification() {
93
 
@@ -117,7 +117,7 @@ class Yoast_Notification_Center {
117
  }
118
 
119
  /**
120
- * Check if the user has dismissed a notification
121
  *
122
  * @param Yoast_Notification $notification The notification to check for dismissal.
123
  * @param null|int $user_id User ID to check on.
@@ -143,7 +143,7 @@ class Yoast_Notification_Center {
143
  }
144
 
145
  /**
146
- * Check if the nofitication is being dismissed
147
  *
148
  * @param string|Yoast_Notification $notification Notification to check dismissal of.
149
  * @param string $meta_value Value to set the meta value to if dismissed.
@@ -224,7 +224,7 @@ class Yoast_Notification_Center {
224
  }
225
 
226
  /**
227
- * Clear dismissal information for the specified Notification
228
  *
229
  * When a cause is resolved, the next time it is present we want to show
230
  * the message again.
@@ -281,7 +281,7 @@ class Yoast_Notification_Center {
281
  }
282
 
283
  /**
284
- * Add notification to the cookie
285
  *
286
  * @param Yoast_Notification $notification Notification object instance.
287
  */
@@ -319,7 +319,7 @@ class Yoast_Notification_Center {
319
  }
320
 
321
  /**
322
- * Get the notification by ID
323
  *
324
  * @param string $notification_id The ID of the notification to search for.
325
  *
@@ -337,7 +337,7 @@ class Yoast_Notification_Center {
337
  }
338
 
339
  /**
340
- * Display the notifications
341
  *
342
  * @param bool $echo_as_json True when notifications should be printed directly.
343
  *
@@ -381,7 +381,7 @@ class Yoast_Notification_Center {
381
  }
382
 
383
  /**
384
- * Remove notification after it has been displayed
385
  *
386
  * @param Yoast_Notification $notification Notification to remove.
387
  * @param bool $resolve Resolve as fixed.
@@ -441,7 +441,7 @@ class Yoast_Notification_Center {
441
  }
442
 
443
  /**
444
- * Get the notification count
445
  *
446
  * @param bool $dismissed Count dismissed notifications.
447
  *
@@ -460,7 +460,7 @@ class Yoast_Notification_Center {
460
  }
461
 
462
  /**
463
- * Get the number of notifications resolved this execution
464
  *
465
  * These notifications have been resolved and should be counted when active again.
466
  *
@@ -472,7 +472,7 @@ class Yoast_Notification_Center {
472
  }
473
 
474
  /**
475
- * Return the notifications sorted on type and priority
476
  *
477
  * @return array|Yoast_Notification[] Sorted Notifications
478
  */
@@ -490,7 +490,7 @@ class Yoast_Notification_Center {
490
  }
491
 
492
  /**
493
- * AJAX display notifications
494
  */
495
  public function ajax_get_notifications() {
496
  $echo = filter_input( INPUT_POST, 'version' ) === '2';
@@ -503,7 +503,7 @@ class Yoast_Notification_Center {
503
  }
504
 
505
  /**
506
- * Remove storage when the plugin is deactivated
507
  */
508
  public function deactivate_hook() {
509
 
@@ -511,7 +511,7 @@ class Yoast_Notification_Center {
511
  }
512
 
513
  /**
514
- * Save persistent notifications to storage
515
  *
516
  * We need to be able to retrieve these so they can be dismissed at any time during the execution.
517
  *
@@ -530,7 +530,7 @@ class Yoast_Notification_Center {
530
  */
531
  $notifications = apply_filters( 'yoast_notifications_before_storage', $notifications );
532
 
533
- // No notifications to store, clear storage.
534
  if ( empty( $notifications ) ) {
535
  $this->remove_storage();
536
 
@@ -544,7 +544,7 @@ class Yoast_Notification_Center {
544
  }
545
 
546
  /**
547
- * Provide a way to verify present notifications
548
  *
549
  * @return array|Yoast_Notification[] Registered notifications.
550
  */
@@ -554,7 +554,7 @@ class Yoast_Notification_Center {
554
  }
555
 
556
  /**
557
- * Get newly added notifications
558
  *
559
  * @return array
560
  */
@@ -564,7 +564,7 @@ class Yoast_Notification_Center {
564
  }
565
 
566
  /**
567
- * Get information from the User input
568
  *
569
  * @param string $key Key to retrieve.
570
  *
@@ -611,7 +611,7 @@ class Yoast_Notification_Center {
611
  }
612
 
613
  /**
614
- * Sort on type then priority
615
  *
616
  * @param Yoast_Notification $a Compare with B.
617
  * @param Yoast_Notification $b Compare with A.
@@ -639,15 +639,7 @@ class Yoast_Notification_Center {
639
  }
640
 
641
  /**
642
- * Remove all notifications from storage
643
- */
644
- private function remove_storage() {
645
-
646
- delete_user_option( get_current_user_id(), self::STORAGE_KEY );
647
- }
648
-
649
- /**
650
- * Clear local stored notifications
651
  */
652
  private function clear_notifications() {
653
 
@@ -670,7 +662,7 @@ class Yoast_Notification_Center {
670
  }
671
 
672
  /**
673
- * Filter out dismissed notifications
674
  *
675
  * @param Yoast_Notification $notification Notification to check.
676
  *
@@ -682,7 +674,7 @@ class Yoast_Notification_Center {
682
  }
683
 
684
  /**
685
- * Convert Notification to array representation
686
  *
687
  * @param Yoast_Notification $notification Notification to convert.
688
  *
@@ -721,7 +713,7 @@ class Yoast_Notification_Center {
721
  }
722
 
723
  /**
724
- * Filter notifications that should not be displayed for the current user
725
  *
726
  * @param Yoast_Notification $notification Notification to test.
727
  *
@@ -769,4 +761,40 @@ class Yoast_Notification_Center {
769
  private function add_transaction_to_queue( $callback, $args ) {
770
  $this->queued_transactions[] = array( $callback, $args );
771
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
772
  }
58
  private $notifications_retrieved = false;
59
 
60
  /**
61
+ * Construct.
62
  */
63
  private function __construct() {
64
 
73
  }
74
 
75
  /**
76
+ * Singleton getter.
77
  *
78
  * @return Yoast_Notification_Center
79
  */
87
  }
88
 
89
  /**
90
+ * Dismiss a notification.
91
  */
92
  public static function ajax_dismiss_notification() {
93
 
117
  }
118
 
119
  /**
120
+ * Check if the user has dismissed a notification.
121
  *
122
  * @param Yoast_Notification $notification The notification to check for dismissal.
123
  * @param null|int $user_id User ID to check on.
143
  }
144
 
145
  /**
146
+ * Check if the nofitication is being dismissed.
147
  *
148
  * @param string|Yoast_Notification $notification Notification to check dismissal of.
149
  * @param string $meta_value Value to set the meta value to if dismissed.
224
  }
225
 
226
  /**
227
+ * Clear dismissal information for the specified Notification.
228
  *
229
  * When a cause is resolved, the next time it is present we want to show
230
  * the message again.
281
  }
282
 
283
  /**
284
+ * Add notification to the cookie.
285
  *
286
  * @param Yoast_Notification $notification Notification object instance.
287
  */
319
  }
320
 
321
  /**
322
+ * Get the notification by ID.
323
  *
324
  * @param string $notification_id The ID of the notification to search for.
325
  *
337
  }
338
 
339
  /**
340
+ * Display the notifications.
341
  *
342
  * @param bool $echo_as_json True when notifications should be printed directly.
343
  *
381
  }
382
 
383
  /**
384
+ * Remove notification after it has been displayed.
385
  *
386
  * @param Yoast_Notification $notification Notification to remove.
387
  * @param bool $resolve Resolve as fixed.
441
  }
442
 
443
  /**
444
+ * Get the notification count.
445
  *
446
  * @param bool $dismissed Count dismissed notifications.
447
  *
460
  }
461
 
462
  /**
463
+ * Get the number of notifications resolved this execution.
464
  *
465
  * These notifications have been resolved and should be counted when active again.
466
  *
472
  }
473
 
474
  /**
475
+ * Return the notifications sorted on type and priority.
476
  *
477
  * @return array|Yoast_Notification[] Sorted Notifications
478
  */
490
  }
491
 
492
  /**
493
+ * AJAX display notifications.
494
  */
495
  public function ajax_get_notifications() {
496
  $echo = filter_input( INPUT_POST, 'version' ) === '2';
503
  }
504
 
505
  /**
506
+ * Remove storage when the plugin is deactivated.
507
  */
508
  public function deactivate_hook() {
509
 
511
  }
512
 
513
  /**
514
+ * Save persistent notifications to storage.
515
  *
516
  * We need to be able to retrieve these so they can be dismissed at any time during the execution.
517
  *
530
  */
531
  $notifications = apply_filters( 'yoast_notifications_before_storage', $notifications );
532
 
533
+ // No notifications to store, clear storage if it was previously present.
534
  if ( empty( $notifications ) ) {
535
  $this->remove_storage();
536
 
544
  }
545
 
546
  /**
547
+ * Provide a way to verify present notifications.
548
  *
549
  * @return array|Yoast_Notification[] Registered notifications.
550
  */
554
  }
555
 
556
  /**
557
+ * Get newly added notifications.
558
  *
559
  * @return array
560
  */
564
  }
565
 
566
  /**
567
+ * Get information from the User input.
568
  *
569
  * @param string $key Key to retrieve.
570
  *
611
  }
612
 
613
  /**
614
+ * Sort on type then priority.
615
  *
616
  * @param Yoast_Notification $a Compare with B.
617
  * @param Yoast_Notification $b Compare with A.
639
  }
640
 
641
  /**
642
+ * Clear local stored notifications.
 
 
 
 
 
 
 
 
643
  */
644
  private function clear_notifications() {
645
 
662
  }
663
 
664
  /**
665
+ * Filter out dismissed notifications.
666
  *
667
  * @param Yoast_Notification $notification Notification to check.
668
  *
674
  }
675
 
676
  /**
677
+ * Convert Notification to array representation.
678
  *
679
  * @param Yoast_Notification $notification Notification to convert.
680
  *
713
  }
714
 
715
  /**
716
+ * Filter notifications that should not be displayed for the current user.
717
  *
718
  * @param Yoast_Notification $notification Notification to test.
719
  *
761
  private function add_transaction_to_queue( $callback, $args ) {
762
  $this->queued_transactions[] = array( $callback, $args );
763
  }
764
+
765
+ /**
766
+ * Removes all notifications from storage.
767
+ *
768
+ * @return bool True when notifications got removed.
769
+ */
770
+ protected function remove_storage() {
771
+ if ( ! $this->has_stored_notifications() ) {
772
+ return false;
773
+ }
774
+
775
+ delete_user_option( get_current_user_id(), self::STORAGE_KEY );
776
+ return true;
777
+ }
778
+
779
+ /**
780
+ * Checks if there are stored notifications.
781
+ *
782
+ * @return bool True when there are stored notifications.
783
+ */
784
+ protected function has_stored_notifications() {
785
+ $stored_notifications = $this->get_stored_notifications();
786
+
787
+ return ! empty( $stored_notifications );
788
+ }
789
+
790
+ /**
791
+ * Retrieves the stored notifications.
792
+ *
793
+ * @codeCoverageIgnore
794
+ *
795
+ * @return array|false Array with notifications or false when not set.
796
+ */
797
+ protected function get_stored_notifications() {
798
+ return get_user_option( self::STORAGE_KEY, get_current_user_id() );
799
+ }
800
  }
admin/class-yoast-notification.php CHANGED
@@ -122,7 +122,7 @@ class Yoast_Notification {
122
  }
123
 
124
  /**
125
- * Make sure the nonce is up to date
126
  */
127
  public function refresh_nonce() {
128
  if ( $this->options['id'] ) {
@@ -131,7 +131,7 @@ class Yoast_Notification {
131
  }
132
 
133
  /**
134
- * Get the type of the notification
135
  *
136
  * @return string
137
  */
@@ -140,7 +140,7 @@ class Yoast_Notification {
140
  }
141
 
142
  /**
143
- * Priority of the notification
144
  *
145
  * Relative to the type.
146
  *
@@ -151,7 +151,7 @@ class Yoast_Notification {
151
  }
152
 
153
  /**
154
- * Get the User Meta key to check for dismissal of notification
155
  *
156
  * @return string User Meta Option key that registers dismissal.
157
  */
@@ -164,7 +164,7 @@ class Yoast_Notification {
164
  }
165
 
166
  /**
167
- * Is this Notification persistent
168
  *
169
  * @return bool True if persistent, False if fire and forget.
170
  */
@@ -175,9 +175,9 @@ class Yoast_Notification {
175
  }
176
 
177
  /**
178
- * Check if the notification is relevant for the current user
179
  *
180
- * @return bool True if a user needs to see this Notification, False if not.
181
  */
182
  public function display_for_current_user() {
183
  // If the notification is for the current page only, always show.
@@ -190,7 +190,7 @@ class Yoast_Notification {
190
  }
191
 
192
  /**
193
- * Does the current user match required capabilities
194
  *
195
  * @return bool
196
  */
@@ -205,10 +205,10 @@ class Yoast_Notification {
205
  *
206
  * @since 3.2
207
  *
208
- * @param array $capabilities The capabilities that must be present for this Notification.
209
  * @param Yoast_Notification $notification The notification object.
210
  *
211
- * @return array of capabilities or empty for no restrictions.
212
  */
213
  $capabilities = apply_filters( 'wpseo_notification_capabilities', $this->options['capabilities'], $this );
214
 
@@ -249,7 +249,7 @@ class Yoast_Notification {
249
  }
250
 
251
  /**
252
- * Array filter function to find matched capabilities
253
  *
254
  * @param string $capability Capability to test.
255
  *
@@ -260,7 +260,7 @@ class Yoast_Notification {
260
  }
261
 
262
  /**
263
- * Return the object properties as an array
264
  *
265
  * @return array
266
  */
@@ -272,7 +272,7 @@ class Yoast_Notification {
272
  }
273
 
274
  /**
275
- * Adds string (view) behaviour to the Notification
276
  *
277
  * @return string
278
  */
@@ -341,7 +341,7 @@ class Yoast_Notification {
341
  }
342
 
343
  /**
344
- * Get the JSON if provided
345
  *
346
  * @return false|string
347
  */
@@ -354,7 +354,7 @@ class Yoast_Notification {
354
  }
355
 
356
  /**
357
- * Make sure we only have values that we can work with
358
  *
359
  * @param array $options Options to normalize.
360
  *
@@ -375,7 +375,7 @@ class Yoast_Notification {
375
  }
376
 
377
  /**
378
- * Format HTML element attributes
379
  *
380
  * @param string $value Attribute value.
381
  * @param string $key Attribute name.
122
  }
123
 
124
  /**
125
+ * Make sure the nonce is up to date.
126
  */
127
  public function refresh_nonce() {
128
  if ( $this->options['id'] ) {
131
  }
132
 
133
  /**
134
+ * Get the type of the notification.
135
  *
136
  * @return string
137
  */
140
  }
141
 
142
  /**
143
+ * Priority of the notification.
144
  *
145
  * Relative to the type.
146
  *
151
  }
152
 
153
  /**
154
+ * Get the User Meta key to check for dismissal of notification.
155
  *
156
  * @return string User Meta Option key that registers dismissal.
157
  */
164
  }
165
 
166
  /**
167
+ * Is this Notification persistent.
168
  *
169
  * @return bool True if persistent, False if fire and forget.
170
  */
175
  }
176
 
177
  /**
178
+ * Check if the notification is relevant for the current user.
179
  *
180
+ * @return bool True if a user needs to see this notification, false if not.
181
  */
182
  public function display_for_current_user() {
183
  // If the notification is for the current page only, always show.
190
  }
191
 
192
  /**
193
+ * Does the current user match required capabilities.
194
  *
195
  * @return bool
196
  */
205
  *
206
  * @since 3.2
207
  *
208
+ * @param array $capabilities The capabilities that must be present for this notification.
209
  * @param Yoast_Notification $notification The notification object.
210
  *
211
+ * @return Array of capabilities or empty for no restrictions.
212
  */
213
  $capabilities = apply_filters( 'wpseo_notification_capabilities', $this->options['capabilities'], $this );
214
 
249
  }
250
 
251
  /**
252
+ * Array filter function to find matched capabilities.
253
  *
254
  * @param string $capability Capability to test.
255
  *
260
  }
261
 
262
  /**
263
+ * Return the object properties as an array.
264
  *
265
  * @return array
266
  */
272
  }
273
 
274
  /**
275
+ * Adds string (view) behaviour to the notification.
276
  *
277
  * @return string
278
  */
341
  }
342
 
343
  /**
344
+ * Get the JSON if provided.
345
  *
346
  * @return false|string
347
  */
354
  }
355
 
356
  /**
357
+ * Make sure we only have values that we can work with.
358
  *
359
  * @param array $options Options to normalize.
360
  *
375
  }
376
 
377
  /**
378
+ * Format HTML element attributes.
379
  *
380
  * @param string $value Attribute value.
381
  * @param string $key Attribute name.
admin/class-yoast-plugin-conflict.php CHANGED
@@ -14,14 +14,14 @@ class Yoast_Plugin_Conflict {
14
  /**
15
  * The plugins must be grouped per section.
16
  *
17
- * It's possible to check for each section if there are conflicting plugin
18
  *
19
  * @var array
20
  */
21
  protected $plugins = array();
22
 
23
  /**
24
- * All the current active plugins will be stored in this private var
25
  *
26
  * @var array
27
  */
@@ -29,21 +29,21 @@ class Yoast_Plugin_Conflict {
29
 
30
  /**
31
  * After searching for active plugins that are in $this->plugins the active plugins will be stored in this
32
- * property
33
  *
34
  * @var array
35
  */
36
  protected $active_plugins = array();
37
 
38
  /**
39
- * Property for holding instance of itself
40
  *
41
  * @var Yoast_Plugin_Conflict
42
  */
43
  protected static $instance;
44
 
45
  /**
46
- * For the use of singleton pattern. Create instance of itself and return his instance
47
  *
48
  * @param string $class_name Give the classname to initialize. If classname is
49
  * false (empty) it will use it's own __CLASS__.
@@ -64,7 +64,7 @@ class Yoast_Plugin_Conflict {
64
  }
65
 
66
  /**
67
- * Setting instance, all active plugins and search for active plugins
68
  *
69
  * Protected constructor to prevent creating a new instance of the
70
  * *Singleton* via the `new` operator from outside of this class.
@@ -82,7 +82,7 @@ class Yoast_Plugin_Conflict {
82
  }
83
 
84
  /**
85
- * Check if there are conflicting plugins for given $plugin_section
86
  *
87
  * @param string $plugin_section Type of plugin conflict (such as Open Graph or sitemap).
88
  *
@@ -139,7 +139,7 @@ class Yoast_Plugin_Conflict {
139
  }
140
 
141
  /**
142
- * Checks for given $plugin_sections for conflicts
143
  *
144
  * @param array $plugin_sections Set of sections.
145
  */
@@ -184,7 +184,7 @@ class Yoast_Plugin_Conflict {
184
  }
185
 
186
  /**
187
- * Setting an error on the screen
188
  *
189
  * @param string $plugin_section Type of conflict group (such as Open Graph or sitemap).
190
  * @param string $readable_plugin_section This is the value for the translation.
@@ -221,7 +221,7 @@ class Yoast_Plugin_Conflict {
221
  }
222
 
223
  /**
224
- * Clear the notification for a plugin
225
  *
226
  * @param string $plugin_file Clear the optional notification for this plugin.
227
  */
@@ -244,7 +244,7 @@ class Yoast_Plugin_Conflict {
244
  }
245
 
246
  /**
247
- * Loop through plugins and check if each plugin is active
248
  *
249
  * @param array $plugins Set of plugins.
250
  * @param string $plugin_section Type of conflict group (such as Open Graph or sitemap).
@@ -258,7 +258,7 @@ class Yoast_Plugin_Conflict {
258
  }
259
 
260
  /**
261
- * Check if given plugin exists in array with all_active_plugins
262
  *
263
  * @param string $plugin Plugin basename string.
264
  *
@@ -289,9 +289,9 @@ class Yoast_Plugin_Conflict {
289
  }
290
 
291
  /**
292
- * Search in $this->plugins for the given $plugin
293
  *
294
- * If there is a result it will return the plugin category
295
  *
296
  * @param string $plugin Plugin basename string.
297
  *
@@ -319,7 +319,7 @@ class Yoast_Plugin_Conflict {
319
  }
320
 
321
  /**
322
- * Get the identifier from the plugin file
323
  *
324
  * @param string $plugin_file Plugin file to get Identifier from.
325
  *
14
  /**
15
  * The plugins must be grouped per section.
16
  *
17
+ * It's possible to check for each section if there are conflicting plugins.
18
  *
19
  * @var array
20
  */
21
  protected $plugins = array();
22
 
23
  /**
24
+ * All the current active plugins will be stored in this private var.
25
  *
26
  * @var array
27
  */
29
 
30
  /**
31
  * After searching for active plugins that are in $this->plugins the active plugins will be stored in this
32
+ * property.
33
  *
34
  * @var array
35
  */
36
  protected $active_plugins = array();
37
 
38
  /**
39
+ * Property for holding instance of itself.
40
  *
41
  * @var Yoast_Plugin_Conflict
42
  */
43
  protected static $instance;
44
 
45
  /**
46
+ * For the use of singleton pattern. Create instance of itself and return this instance.
47
  *
48
  * @param string $class_name Give the classname to initialize. If classname is
49
  * false (empty) it will use it's own __CLASS__.
64
  }
65
 
66
  /**
67
+ * Setting instance, all active plugins and search for active plugins.
68
  *
69
  * Protected constructor to prevent creating a new instance of the
70
  * *Singleton* via the `new` operator from outside of this class.
82
  }
83
 
84
  /**
85
+ * Check if there are conflicting plugins for given $plugin_section.
86
  *
87
  * @param string $plugin_section Type of plugin conflict (such as Open Graph or sitemap).
88
  *
139
  }
140
 
141
  /**
142
+ * Checks for given $plugin_sections for conflicts.
143
  *
144
  * @param array $plugin_sections Set of sections.
145
  */
184
  }
185
 
186
  /**
187
+ * Setting an error on the screen.
188
  *
189
  * @param string $plugin_section Type of conflict group (such as Open Graph or sitemap).
190
  * @param string $readable_plugin_section This is the value for the translation.
221
  }
222
 
223
  /**
224
+ * Clear the notification for a plugin.
225
  *
226
  * @param string $plugin_file Clear the optional notification for this plugin.
227
  */
244
  }
245
 
246
  /**
247
+ * Loop through plugins and check if each plugin is active.
248
  *
249
  * @param array $plugins Set of plugins.
250
  * @param string $plugin_section Type of conflict group (such as Open Graph or sitemap).
258
  }
259
 
260
  /**
261
+ * Check if given plugin exists in array with all_active_plugins.
262
  *
263
  * @param string $plugin Plugin basename string.
264
  *
289
  }
290
 
291
  /**
292
+ * Search in $this->plugins for the given $plugin.
293
  *
294
+ * If there is a result it will return the plugin category.
295
  *
296
  * @param string $plugin Plugin basename string.
297
  *
319
  }
320
 
321
  /**
322
+ * Get the identifier from the plugin file.
323
  *
324
  * @param string $plugin_file Plugin file to get Identifier from.
325
  *
admin/config-ui/class-configuration-components.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Configuration_Components
10
  */
11
  class WPSEO_Configuration_Components {
12
 
@@ -34,7 +34,7 @@ class WPSEO_Configuration_Components {
34
  }
35
 
36
  /**
37
- * Add a component
38
  *
39
  * @param WPSEO_Config_Component $component Component to add.
40
  */
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Configuration_Components.
10
  */
11
  class WPSEO_Configuration_Components {
12
 
34
  }
35
 
36
  /**
37
+ * Add a component.
38
  *
39
  * @param WPSEO_Config_Component $component Component to add.
40
  */
admin/config-ui/class-configuration-endpoint.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Configuration_Endpoint
10
  */
11
  class WPSEO_Configuration_Endpoint {
12
 
@@ -73,7 +73,7 @@ class WPSEO_Configuration_Endpoint {
73
  }
74
 
75
  /**
76
- * Permission callback implementation
77
  *
78
  * @return bool
79
  */
@@ -82,7 +82,7 @@ class WPSEO_Configuration_Endpoint {
82
  }
83
 
84
  /**
85
- * Permission callback implementation
86
  *
87
  * @return bool
88
  */
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Configuration_Endpoint.
10
  */
11
  class WPSEO_Configuration_Endpoint {
12
 
73
  }
74
 
75
  /**
76
+ * Permission callback implementation.
77
  *
78
  * @return bool
79
  */
82
  }
83
 
84
  /**
85
+ * Permission callback implementation.
86
  *
87
  * @return bool
88
  */
admin/config-ui/class-configuration-options-adapter.php CHANGED
@@ -6,9 +6,9 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Configuration_Options_Adapter
10
  *
11
- * Convert Configuration settings to WPSEO Options
12
  *
13
  * @since 3.6
14
  */
@@ -37,7 +37,7 @@ class WPSEO_Configuration_Options_Adapter {
37
  protected $lookup = array();
38
 
39
  /**
40
- * Add a lookup for a WordPress native option
41
  *
42
  * @param string $class_name Class to bind to an option.
43
  * @param string $option Option name to use.
@@ -54,7 +54,7 @@ class WPSEO_Configuration_Options_Adapter {
54
  }
55
 
56
  /**
57
- * Add a lookup for a Yoast option
58
  *
59
  * @param string $class_name Class to bind to the lookup.
60
  * @param string $key Key in the option group to bind to.
@@ -73,7 +73,7 @@ class WPSEO_Configuration_Options_Adapter {
73
  }
74
 
75
  /**
76
- * Add a lookup for a custom implementation
77
  *
78
  * @param string $class_name Class to bind to the lookup.
79
  * @param callable $callback_get Callback to retrieve data.
@@ -111,7 +111,7 @@ class WPSEO_Configuration_Options_Adapter {
111
  }
112
 
113
  /**
114
- * Get the data for the provided field
115
  *
116
  * @param WPSEO_Config_Field $field Field to get data for.
117
  *
@@ -139,7 +139,7 @@ class WPSEO_Configuration_Options_Adapter {
139
  }
140
 
141
  /**
142
- * Save data from a field
143
  *
144
  * @param WPSEO_Config_Field $field Field to use for lookup.
145
  * @param mixed $value Value to save to the lookup of the field.
@@ -168,7 +168,7 @@ class WPSEO_Configuration_Options_Adapter {
168
  }
169
 
170
  /**
171
- * Get the lookup type for a specific class
172
  *
173
  * @param string $class_name Class to get the type of.
174
  *
@@ -183,7 +183,7 @@ class WPSEO_Configuration_Options_Adapter {
183
  }
184
 
185
  /**
186
- * Get the option for a specific class
187
  *
188
  * @param string $class_name Class to get the option of.
189
  *
@@ -200,7 +200,7 @@ class WPSEO_Configuration_Options_Adapter {
200
  /* ********************* DEPRECATED METHODS ********************* */
201
 
202
  /**
203
- * Add a lookup for a Yoast option
204
  *
205
  * @deprecated 7.0
206
  * @codeCoverageIgnore
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Configuration_Options_Adapter.
10
  *
11
+ * Convert Configuration settings to WPSEO Options.
12
  *
13
  * @since 3.6
14
  */
37
  protected $lookup = array();
38
 
39
  /**
40
+ * Add a lookup for a WordPress native option.
41
  *
42
  * @param string $class_name Class to bind to an option.
43
  * @param string $option Option name to use.
54
  }
55
 
56
  /**
57
+ * Add a lookup for a Yoast option.
58
  *
59
  * @param string $class_name Class to bind to the lookup.
60
  * @param string $key Key in the option group to bind to.
73
  }
74
 
75
  /**
76
+ * Add a lookup for a custom implementation.
77
  *
78
  * @param string $class_name Class to bind to the lookup.
79
  * @param callable $callback_get Callback to retrieve data.
111
  }
112
 
113
  /**
114
+ * Get the data for the provided field.
115
  *
116
  * @param WPSEO_Config_Field $field Field to get data for.
117
  *
139
  }
140
 
141
  /**
142
+ * Save data from a field.
143
  *
144
  * @param WPSEO_Config_Field $field Field to use for lookup.
145
  * @param mixed $value Value to save to the lookup of the field.
168
  }
169
 
170
  /**
171
+ * Get the lookup type for a specific class.
172
  *
173
  * @param string $class_name Class to get the type of.
174
  *
183
  }
184
 
185
  /**
186
+ * Get the option for a specific class.
187
  *
188
  * @param string $class_name Class to get the option of.
189
  *
200
  /* ********************* DEPRECATED METHODS ********************* */
201
 
202
  /**
203
+ * Add a lookup for a Yoast option.
204
  *
205
  * @deprecated 7.0
206
  * @codeCoverageIgnore
admin/config-ui/class-configuration-service.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Configuration_Service
10
  */
11
  class WPSEO_Configuration_Service {
12
 
@@ -49,7 +49,7 @@ class WPSEO_Configuration_Service {
49
  }
50
 
51
  /**
52
- * Set default handlers
53
  */
54
  public function set_default_providers() {
55
  $this->set_storage( new WPSEO_Configuration_Storage() );
@@ -61,7 +61,7 @@ class WPSEO_Configuration_Service {
61
  }
62
 
63
  /**
64
- * Set storage handler
65
  *
66
  * @param WPSEO_Configuration_Storage $storage Storage handler to use.
67
  */
@@ -70,7 +70,7 @@ class WPSEO_Configuration_Service {
70
  }
71
 
72
  /**
73
- * Set endpoint handler
74
  *
75
  * @param WPSEO_Configuration_Endpoint $endpoint Endpoint implementation to use.
76
  */
@@ -80,7 +80,7 @@ class WPSEO_Configuration_Service {
80
  }
81
 
82
  /**
83
- * Set the options adapter
84
  *
85
  * @param WPSEO_Configuration_Options_Adapter $adapter Adapter to use.
86
  */
@@ -89,7 +89,7 @@ class WPSEO_Configuration_Service {
89
  }
90
 
91
  /**
92
- * Set components provider
93
  *
94
  * @param WPSEO_Configuration_Components $components Component provider to use.
95
  */
@@ -98,7 +98,7 @@ class WPSEO_Configuration_Service {
98
  }
99
 
100
  /**
101
- * Set structure provider
102
  *
103
  * @param WPSEO_Configuration_Structure $structure Structure provider to use.
104
  */
@@ -116,7 +116,7 @@ class WPSEO_Configuration_Service {
116
  }
117
 
118
  /**
119
- * Populate the configuration
120
  */
121
  protected function populate_configuration() {
122
  // Switch to the user locale with fallback to the site locale.
@@ -140,7 +140,7 @@ class WPSEO_Configuration_Service {
140
  }
141
 
142
  /**
143
- * Used by endpoint to retrieve configuration
144
  *
145
  * @return array List of settings.
146
  */
@@ -158,7 +158,7 @@ class WPSEO_Configuration_Service {
158
  }
159
 
160
  /**
161
- * Used by endpoint to store changes
162
  *
163
  * @param WP_REST_Request $request Request from the REST API.
164
  *
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Configuration_Service.
10
  */
11
  class WPSEO_Configuration_Service {
12
 
49
  }
50
 
51
  /**
52
+ * Set default handlers.
53
  */
54
  public function set_default_providers() {
55
  $this->set_storage( new WPSEO_Configuration_Storage() );
61
  }
62
 
63
  /**
64
+ * Set storage handler.
65
  *
66
  * @param WPSEO_Configuration_Storage $storage Storage handler to use.
67
  */
70
  }
71
 
72
  /**
73
+ * Set endpoint handler.
74
  *
75
  * @param WPSEO_Configuration_Endpoint $endpoint Endpoint implementation to use.
76
  */
80
  }
81
 
82
  /**
83
+ * Set the options adapter.
84
  *
85
  * @param WPSEO_Configuration_Options_Adapter $adapter Adapter to use.
86
  */
89
  }
90
 
91
  /**
92
+ * Set components provider.
93
  *
94
  * @param WPSEO_Configuration_Components $components Component provider to use.
95
  */
98
  }
99
 
100
  /**
101
+ * Set structure provider.
102
  *
103
  * @param WPSEO_Configuration_Structure $structure Structure provider to use.
104
  */
116
  }
117
 
118
  /**
119
+ * Populate the configuration.
120
  */
121
  protected function populate_configuration() {
122
  // Switch to the user locale with fallback to the site locale.
140
  }
141
 
142
  /**
143
+ * Used by endpoint to retrieve configuration.
144
  *
145
  * @return array List of settings.
146
  */
158
  }
159
 
160
  /**
161
+ * Used by endpoint to store changes.
162
  *
163
  * @param WP_REST_Request $request Request from the REST API.
164
  *
admin/config-ui/class-configuration-storage.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Configuration_Storage
10
  */
11
  class WPSEO_Configuration_Storage {
12
 
@@ -21,7 +21,7 @@ class WPSEO_Configuration_Storage {
21
  protected $fields = array();
22
 
23
  /**
24
- * Add default fields
25
  */
26
  public function add_default_fields() {
27
  $fields = array(
@@ -60,7 +60,7 @@ class WPSEO_Configuration_Storage {
60
  }
61
 
62
  /**
63
- * Allow for field injections
64
  *
65
  * @param WPSEO_Config_Field $field Field to add to the stack.
66
  */
@@ -73,7 +73,7 @@ class WPSEO_Configuration_Storage {
73
  }
74
 
75
  /**
76
- * Set the adapter to use
77
  *
78
  * @param WPSEO_Configuration_Options_Adapter $adapter Adapter to use.
79
  */
@@ -86,7 +86,7 @@ class WPSEO_Configuration_Storage {
86
  }
87
 
88
  /**
89
- * Retrieve the current adapter
90
  *
91
  * @return WPSEO_Configuration_Options_Adapter
92
  */
@@ -95,7 +95,7 @@ class WPSEO_Configuration_Storage {
95
  }
96
 
97
  /**
98
- * Retrieve the registered fields
99
  *
100
  * @returns array List of settings.
101
  */
@@ -119,7 +119,7 @@ class WPSEO_Configuration_Storage {
119
  }
120
 
121
  /**
122
- * Save the data
123
  *
124
  * @param array $data_to_store Data provided by the API which needs to be processed for saving.
125
  *
@@ -161,7 +161,7 @@ class WPSEO_Configuration_Storage {
161
  }
162
 
163
  /**
164
- * Filter out null input values
165
  *
166
  * @param mixed $input Input to test against.
167
  *
@@ -172,7 +172,7 @@ class WPSEO_Configuration_Storage {
172
  }
173
 
174
  /**
175
- * Get data from a specific field
176
  *
177
  * @param WPSEO_Config_Field $field Field to get data for.
178
  *
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Configuration_Storage.
10
  */
11
  class WPSEO_Configuration_Storage {
12
 
21
  protected $fields = array();
22
 
23
  /**
24
+ * Add default fields.
25
  */
26
  public function add_default_fields() {
27
  $fields = array(
60
  }
61
 
62
  /**
63
+ * Allow for field injections.
64
  *
65
  * @param WPSEO_Config_Field $field Field to add to the stack.
66
  */
73
  }
74
 
75
  /**
76
+ * Set the adapter to use.
77
  *
78
  * @param WPSEO_Configuration_Options_Adapter $adapter Adapter to use.
79
  */
86
  }
87
 
88
  /**
89
+ * Retrieve the current adapter.
90
  *
91
  * @return WPSEO_Configuration_Options_Adapter
92
  */
95
  }
96
 
97
  /**
98
+ * Retrieve the registered fields.
99
  *
100
  * @returns array List of settings.
101
  */
119
  }
120
 
121
  /**
122
+ * Save the data.
123
  *
124
  * @param array $data_to_store Data provided by the API which needs to be processed for saving.
125
  *
161
  }
162
 
163
  /**
164
+ * Filter out null input values.
165
  *
166
  * @param mixed $input Input to test against.
167
  *
172
  }
173
 
174
  /**
175
+ * Get data from a specific field.
176
  *
177
  * @param WPSEO_Config_Field $field Field to get data for.
178
  *
admin/config-ui/class-configuration-structure.php CHANGED
@@ -114,7 +114,7 @@ class WPSEO_Configuration_Structure {
114
  }
115
 
116
  /**
117
- * Retrieve the registered steps
118
  *
119
  * @return array
120
  */
114
  }
115
 
116
  /**
117
+ * Retrieve the registered steps.
118
  *
119
  * @return array
120
  */
admin/config-ui/class-configuration-translations.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Configuration_Structure
10
  */
11
  class WPSEO_Configuration_Translations {
12
 
@@ -35,7 +35,7 @@ class WPSEO_Configuration_Translations {
35
  }
36
 
37
  /**
38
- * Retrieve the translations
39
  *
40
  * @return array
41
  */
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Configuration_Structure.
10
  */
11
  class WPSEO_Configuration_Translations {
12
 
35
  }
36
 
37
  /**
38
+ * Retrieve the translations.
39
  *
40
  * @return array
41
  */
admin/config-ui/components/class-component-connect-google-search-console.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Config_Component_Connect_Google_Search_Console
10
  */
11
  class WPSEO_Config_Component_Connect_Google_Search_Console implements WPSEO_Config_Component {
12
 
@@ -78,7 +78,7 @@ class WPSEO_Config_Component_Connect_Google_Search_Console implements WPSEO_Conf
78
  }
79
 
80
  /**
81
- * Save data
82
  *
83
  * @param array $data Data containing changes.
84
  *
@@ -105,7 +105,7 @@ class WPSEO_Config_Component_Connect_Google_Search_Console implements WPSEO_Conf
105
  }
106
 
107
  /**
108
- * Remove issues when the profile has changed
109
  *
110
  * @param array $current_data Saved data before changes.
111
  * @param array $data Data after changes.
@@ -120,7 +120,7 @@ class WPSEO_Config_Component_Connect_Google_Search_Console implements WPSEO_Conf
120
  }
121
 
122
  /**
123
- * Get the current GSC profile
124
  *
125
  * @return string
126
  */
@@ -129,7 +129,7 @@ class WPSEO_Config_Component_Connect_Google_Search_Console implements WPSEO_Conf
129
  }
130
 
131
  /**
132
- * Reload GSC issues
133
  */
134
  protected function reload_issues() {
135
  WPSEO_GSC_Settings::reload_issues();
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Config_Component_Connect_Google_Search_Console.
10
  */
11
  class WPSEO_Config_Component_Connect_Google_Search_Console implements WPSEO_Config_Component {
12
 
78
  }
79
 
80
  /**
81
+ * Save data.
82
  *
83
  * @param array $data Data containing changes.
84
  *
105
  }
106
 
107
  /**
108
+ * Remove issues when the profile has changed.
109
  *
110
  * @param array $current_data Saved data before changes.
111
  * @param array $data Data after changes.
120
  }
121
 
122
  /**
123
+ * Get the current GSC profile.
124
  *
125
  * @return string
126
  */
129
  }
130
 
131
  /**
132
+ * Reload GSC issues.
133
  */
134
  protected function reload_issues() {
135
  WPSEO_GSC_Settings::reload_issues();
admin/config-ui/components/class-component-mailchimp-signup.php CHANGED
@@ -47,7 +47,7 @@ class WPSEO_Config_Component_Mailchimp_Signup implements WPSEO_Config_Component
47
  }
48
 
49
  /**
50
- * Save data
51
  *
52
  * @param array $data Data containing changes.
53
  *
@@ -72,7 +72,7 @@ class WPSEO_Config_Component_Mailchimp_Signup implements WPSEO_Config_Component
72
  }
73
 
74
  /**
75
- * Checks if the user has entered his email for mailchimp already.
76
  *
77
  * @return bool
78
  */
47
  }
48
 
49
  /**
50
+ * Save data.
51
  *
52
  * @param array $data Data containing changes.
53
  *
72
  }
73
 
74
  /**
75
+ * Checks if the user has entered their email for mailchimp already.
76
  *
77
  * @return bool
78
  */
admin/config-ui/components/class-component-suggestions.php CHANGED
@@ -127,7 +127,7 @@ class WPSEO_Config_Component_Suggestions implements WPSEO_Config_Component {
127
  }
128
 
129
  /**
130
- * Save data
131
  *
132
  * @param array $data Data containing changes.
133
  *
127
  }
128
 
129
  /**
130
+ * Save data.
131
  *
132
  * @param array $data Data containing changes.
133
  *
admin/config-ui/components/interface-component.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Config Component interface
10
  */
11
  interface WPSEO_Config_Component {
12
 
@@ -21,7 +21,7 @@ interface WPSEO_Config_Component {
21
  public function get_data();
22
 
23
  /**
24
- * Save changes
25
  *
26
  * @param array $data Data provided by the API.
27
  *
6
  */
7
 
8
  /**
9
+ * Config Component interface.
10
  */
11
  interface WPSEO_Config_Component {
12
 
21
  public function get_data();
22
 
23
  /**
24
+ * Save changes.
25
  *
26
  * @param array $data Data provided by the API.
27
  *
admin/config-ui/factories/class-factory-post-type.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Config_Factory_Post_Type
10
  */
11
  class WPSEO_Config_Factory_Post_Type {
12
 
@@ -47,7 +47,7 @@ class WPSEO_Config_Factory_Post_Type {
47
  }
48
 
49
  /**
50
- * Add custom properties for specific post types
51
  *
52
  * @param string $post_type Post type of field that is being added.
53
  * @param WPSEO_Config_Field $field Field that corresponds to the post type.
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Config_Factory_Post_Type.
10
  */
11
  class WPSEO_Config_Factory_Post_Type {
12
 
47
  }
48
 
49
  /**
50
+ * Add custom properties for specific post types.
51
  *
52
  * @param string $post_type Post type of field that is being added.
53
  * @param WPSEO_Config_Field $field Field that corresponds to the post type.
admin/config-ui/fields/class-field-choice-post-type.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Config_Field_Choice_Post_Type
10
  */
11
  class WPSEO_Config_Field_Choice_Post_Type extends WPSEO_Config_Field_Choice {
12
 
@@ -36,7 +36,7 @@ class WPSEO_Config_Field_Choice_Post_Type extends WPSEO_Config_Field_Choice {
36
  }
37
 
38
  /**
39
- * Set adapter
40
  *
41
  * @param WPSEO_Configuration_Options_Adapter $adapter Adapter to register lookup on.
42
  */
@@ -71,7 +71,7 @@ class WPSEO_Config_Field_Choice_Post_Type extends WPSEO_Config_Field_Choice {
71
  }
72
 
73
  /**
74
- * Set new data
75
  *
76
  * @param string $visible Visible (true) or hidden (false).
77
  *
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Config_Field_Choice_Post_Type.
10
  */
11
  class WPSEO_Config_Field_Choice_Post_Type extends WPSEO_Config_Field_Choice {
12
 
36
  }
37
 
38
  /**
39
+ * Set adapter.
40
  *
41
  * @param WPSEO_Configuration_Options_Adapter $adapter Adapter to register lookup on.
42
  */
71
  }
72
 
73
  /**
74
+ * Set new data.
75
  *
76
  * @param string $visible Visible (true) or hidden (false).
77
  *
admin/config-ui/fields/class-field-choice.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Config_Field_Choice
10
  */
11
  class WPSEO_Config_Field_Choice extends WPSEO_Config_Field {
12
 
@@ -22,7 +22,7 @@ class WPSEO_Config_Field_Choice extends WPSEO_Config_Field {
22
  }
23
 
24
  /**
25
- * Add a choice to the properties
26
  *
27
  * @param string $value Value op the option.
28
  * @param string $label Label to display for the value.
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Config_Field_Choice.
10
  */
11
  class WPSEO_Config_Field_Choice extends WPSEO_Config_Field {
12
 
22
  }
23
 
24
  /**
25
+ * Add a choice to the properties.
26
  *
27
  * @param string $value Value op the option.
28
  * @param string $label Label to display for the value.
admin/config-ui/fields/class-field-company-logo.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Config_Field_Company_Logo
10
  */
11
  class WPSEO_Config_Field_Company_Logo extends WPSEO_Config_Field {
12
 
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Config_Field_Company_Logo.
10
  */
11
  class WPSEO_Config_Field_Company_Logo extends WPSEO_Config_Field {
12
 
admin/config-ui/fields/class-field-company-name.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Config_Field_Company_Name
10
  */
11
  class WPSEO_Config_Field_Company_Name extends WPSEO_Config_Field {
12
 
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Config_Field_Company_Name.
10
  */
11
  class WPSEO_Config_Field_Company_Name extends WPSEO_Config_Field {
12
 
admin/config-ui/fields/class-field-company-or-person.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Config_Field_Company_Or_Person
10
  */
11
  class WPSEO_Config_Field_Company_Or_Person extends WPSEO_Config_Field_Choice {
12
 
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Config_Field_Company_Or_Person.
10
  */
11
  class WPSEO_Config_Field_Company_Or_Person extends WPSEO_Config_Field_Choice {
12
 
admin/config-ui/fields/class-field-connect-google-search-console.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Config_Field_Connect_Google_Search_Console
10
  */
11
  class WPSEO_Config_Field_Connect_Google_Search_Console extends WPSEO_Config_Field {
12
 
@@ -18,7 +18,7 @@ class WPSEO_Config_Field_Connect_Google_Search_Console extends WPSEO_Config_Fiel
18
  }
19
 
20
  /**
21
- * Get the data
22
  *
23
  * @return array
24
  */
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Config_Field_Connect_Google_Search_Console.
10
  */
11
  class WPSEO_Config_Field_Connect_Google_Search_Console extends WPSEO_Config_Field {
12
 
18
  }
19
 
20
  /**
21
+ * Get the data.
22
  *
23
  * @return array
24
  */
admin/config-ui/fields/class-field-environment.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Config_Field_Environment
10
  */
11
  class WPSEO_Config_Field_Environment extends WPSEO_Config_Field_Choice {
12
 
@@ -25,7 +25,7 @@ class WPSEO_Config_Field_Environment extends WPSEO_Config_Field_Choice {
25
  }
26
 
27
  /**
28
- * Set adapter
29
  *
30
  * @param WPSEO_Configuration_Options_Adapter $adapter Adapter to register lookup on.
31
  */
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Config_Field_Environment.
10
  */
11
  class WPSEO_Config_Field_Environment extends WPSEO_Config_Field_Choice {
12
 
25
  }
26
 
27
  /**
28
+ * Set adapter.
29
  *
30
  * @param WPSEO_Configuration_Options_Adapter $adapter Adapter to register lookup on.
31
  */
admin/config-ui/fields/class-field-google-search-console-intro.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Config_Field_Google_Search_Console_Intro
10
  */
11
  class WPSEO_Config_Field_Google_Search_Console_Intro extends WPSEO_Config_Field {
12
 
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Config_Field_Google_Search_Console_Intro.
10
  */
11
  class WPSEO_Config_Field_Google_Search_Console_Intro extends WPSEO_Config_Field {
12
 
admin/config-ui/fields/class-field-mailchimp-signup.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Config_Field_Mailchimp_Signup
10
  */
11
  class WPSEO_Config_Field_Mailchimp_Signup extends WPSEO_Config_Field {
12
 
@@ -43,7 +43,7 @@ class WPSEO_Config_Field_Mailchimp_Signup extends WPSEO_Config_Field {
43
  }
44
 
45
  /**
46
- * Get the data
47
  *
48
  * @return array
49
  */
@@ -54,7 +54,7 @@ class WPSEO_Config_Field_Mailchimp_Signup extends WPSEO_Config_Field {
54
  }
55
 
56
  /**
57
- * Checks if the user has entered his email for mailchimp already.
58
  *
59
  * @return bool
60
  */
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Config_Field_Mailchimp_Signup.
10
  */
11
  class WPSEO_Config_Field_Mailchimp_Signup extends WPSEO_Config_Field {
12
 
43
  }
44
 
45
  /**
46
+ * Get the data.
47
  *
48
  * @return array
49
  */
54
  }
55
 
56
  /**
57
+ * Checks if the user has entered their email for mailchimp already.
58
  *
59
  * @return bool
60
  */
admin/config-ui/fields/class-field-multiple-authors.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Config_Field_Multiple_Authors
10
  */
11
  class WPSEO_Config_Field_Multiple_Authors extends WPSEO_Config_Field_Choice {
12
 
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Config_Field_Multiple_Authors.
10
  */
11
  class WPSEO_Config_Field_Multiple_Authors extends WPSEO_Config_Field_Choice {
12
 
admin/config-ui/fields/class-field-person.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Config_Field_Person_Name
10
  */
11
  class WPSEO_Config_Field_Person extends WPSEO_Config_Field {
12
 
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Config_Field_Person_Name.
10
  */
11
  class WPSEO_Config_Field_Person extends WPSEO_Config_Field {
12
 
admin/config-ui/fields/class-field-post-type-visibility.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Config_Field_Post_Type_Visibility
10
  */
11
  class WPSEO_Config_Field_Post_Type_Visibility extends WPSEO_Config_Field {
12
 
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Config_Field_Post_Type_Visibility.
10
  */
11
  class WPSEO_Config_Field_Post_Type_Visibility extends WPSEO_Config_Field {
12
 
admin/config-ui/fields/class-field-profile-url-facebook.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Config_Field_Profile_URL_Facebook
10
  */
11
  class WPSEO_Config_Field_Profile_URL_Facebook extends WPSEO_Config_Field {
12
 
@@ -23,7 +23,7 @@ class WPSEO_Config_Field_Profile_URL_Facebook extends WPSEO_Config_Field {
23
  }
24
 
25
  /**
26
- * Set adapter
27
  *
28
  * @param WPSEO_Configuration_Options_Adapter $adapter Adapter to register lookup on.
29
  */
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Config_Field_Profile_URL_Facebook.
10
  */
11
  class WPSEO_Config_Field_Profile_URL_Facebook extends WPSEO_Config_Field {
12
 
23
  }
24
 
25
  /**
26
+ * Set adapter.
27
  *
28
  * @param WPSEO_Configuration_Options_Adapter $adapter Adapter to register lookup on.
29
  */
admin/config-ui/fields/class-field-profile-url-instagram.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Config_Field_Profile_URL_Instagram
10
  */
11
  class WPSEO_Config_Field_Profile_URL_Instagram extends WPSEO_Config_Field {
12
 
@@ -23,7 +23,7 @@ class WPSEO_Config_Field_Profile_URL_Instagram extends WPSEO_Config_Field {
23
  }
24
 
25
  /**
26
- * Set adapter
27
  *
28
  * @param WPSEO_Configuration_Options_Adapter $adapter Adapter to register lookup on.
29
  */
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Config_Field_Profile_URL_Instagram.
10
  */
11
  class WPSEO_Config_Field_Profile_URL_Instagram extends WPSEO_Config_Field {
12
 
23
  }
24
 
25
  /**
26
+ * Set adapter.
27
  *
28
  * @param WPSEO_Configuration_Options_Adapter $adapter Adapter to register lookup on.
29
  */
admin/config-ui/fields/class-field-profile-url-linkedin.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Config_Field_Profile_URL_LinkedIn
10
  */
11
  class WPSEO_Config_Field_Profile_URL_LinkedIn extends WPSEO_Config_Field {
12
 
@@ -23,7 +23,7 @@ class WPSEO_Config_Field_Profile_URL_LinkedIn extends WPSEO_Config_Field {
23
  }
24
 
25
  /**
26
- * Set adapter
27
  *
28
  * @param WPSEO_Configuration_Options_Adapter $adapter Adapter to register lookup on.
29
  */
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Config_Field_Profile_URL_LinkedIn.
10
  */
11
  class WPSEO_Config_Field_Profile_URL_LinkedIn extends WPSEO_Config_Field {
12
 
23
  }
24
 
25
  /**
26
+ * Set adapter.
27
  *
28
  * @param WPSEO_Configuration_Options_Adapter $adapter Adapter to register lookup on.
29
  */
admin/config-ui/fields/class-field-profile-url-myspace.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Config_Field_Profile_URL_MySpace
10
  */
11
  class WPSEO_Config_Field_Profile_URL_MySpace extends WPSEO_Config_Field {
12
 
@@ -23,7 +23,7 @@ class WPSEO_Config_Field_Profile_URL_MySpace extends WPSEO_Config_Field {
23
  }
24
 
25
  /**
26
- * Set adapter
27
  *
28
  * @param WPSEO_Configuration_Options_Adapter $adapter Adapter to register lookup on.
29
  */
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Config_Field_Profile_URL_MySpace.
10
  */
11
  class WPSEO_Config_Field_Profile_URL_MySpace extends WPSEO_Config_Field {
12
 
23
  }
24
 
25
  /**
26
+ * Set adapter.
27
  *
28
  * @param WPSEO_Configuration_Options_Adapter $adapter Adapter to register lookup on.
29
  */
admin/config-ui/fields/class-field-profile-url-pinterest.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Config_Field_Profile_URL_Pinterest
10
  */
11
  class WPSEO_Config_Field_Profile_URL_Pinterest extends WPSEO_Config_Field {
12
 
@@ -23,7 +23,7 @@ class WPSEO_Config_Field_Profile_URL_Pinterest extends WPSEO_Config_Field {
23
  }
24
 
25
  /**
26
- * Set adapter
27
  *
28
  * @param WPSEO_Configuration_Options_Adapter $adapter Adapter to register lookup on.
29
  */
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Config_Field_Profile_URL_Pinterest.
10
  */
11
  class WPSEO_Config_Field_Profile_URL_Pinterest extends WPSEO_Config_Field {
12
 
23
  }
24
 
25
  /**
26
+ * Set adapter.
27
  *
28
  * @param WPSEO_Configuration_Options_Adapter $adapter Adapter to register lookup on.
29
  */
admin/config-ui/fields/class-field-profile-url-twitter.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Config_Field_Profile_URL_Twitter
10
  */
11
  class WPSEO_Config_Field_Profile_URL_Twitter extends WPSEO_Config_Field {
12
 
@@ -22,7 +22,7 @@ class WPSEO_Config_Field_Profile_URL_Twitter extends WPSEO_Config_Field {
22
  }
23
 
24
  /**
25
- * Set adapter
26
  *
27
  * @param WPSEO_Configuration_Options_Adapter $adapter Adapter to register lookup on.
28
  */
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Config_Field_Profile_URL_Twitter.
10
  */
11
  class WPSEO_Config_Field_Profile_URL_Twitter extends WPSEO_Config_Field {
12
 
22
  }
23
 
24
  /**
25
+ * Set adapter.
26
  *
27
  * @param WPSEO_Configuration_Options_Adapter $adapter Adapter to register lookup on.
28
  */
admin/config-ui/fields/class-field-profile-url-youtube.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Config_Field_Profile_URL_YouTube
10
  */
11
  class WPSEO_Config_Field_Profile_URL_YouTube extends WPSEO_Config_Field {
12
 
@@ -23,7 +23,7 @@ class WPSEO_Config_Field_Profile_URL_YouTube extends WPSEO_Config_Field {
23
  }
24
 
25
  /**
26
- * Set adapter
27
  *
28
  * @param WPSEO_Configuration_Options_Adapter $adapter Adapter to register lookup on.
29
  */
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Config_Field_Profile_URL_YouTube.
10
  */
11
  class WPSEO_Config_Field_Profile_URL_YouTube extends WPSEO_Config_Field {
12
 
23
  }
24
 
25
  /**
26
+ * Set adapter.
27
  *
28
  * @param WPSEO_Configuration_Options_Adapter $adapter Adapter to register lookup on.
29
  */
admin/config-ui/fields/class-field-separator.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Config_Field_Separator
10
  */
11
  class WPSEO_Config_Field_Separator extends WPSEO_Config_Field_Choice {
12
 
@@ -33,7 +33,7 @@ class WPSEO_Config_Field_Separator extends WPSEO_Config_Field_Choice {
33
  }
34
 
35
  /**
36
- * Set adapter
37
  *
38
  * @param WPSEO_Configuration_Options_Adapter $adapter Adapter to register lookup on.
39
  */
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Config_Field_Separator.
10
  */
11
  class WPSEO_Config_Field_Separator extends WPSEO_Config_Field_Choice {
12
 
33
  }
34
 
35
  /**
36
+ * Set adapter.
37
  *
38
  * @param WPSEO_Configuration_Options_Adapter $adapter Adapter to register lookup on.
39
  */
admin/config-ui/fields/class-field-site-name.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Config_Field_Site_Name
10
  */
11
  class WPSEO_Config_Field_Site_Name extends WPSEO_Config_Field {
12
 
@@ -22,7 +22,7 @@ class WPSEO_Config_Field_Site_Name extends WPSEO_Config_Field {
22
  }
23
 
24
  /**
25
- * Set adapter
26
  *
27
  * @param WPSEO_Configuration_Options_Adapter $adapter Adapter to register lookup on.
28
  */
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Config_Field_Site_Name.
10
  */
11
  class WPSEO_Config_Field_Site_Name extends WPSEO_Config_Field {
12
 
22
  }
23
 
24
  /**
25
+ * Set adapter.
26
  *
27
  * @param WPSEO_Configuration_Options_Adapter $adapter Adapter to register lookup on.
28
  */
admin/config-ui/fields/class-field-site-type.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Config_Field_Site_Type
10
  */
11
  class WPSEO_Config_Field_Site_Type extends WPSEO_Config_Field_Choice {
12
 
@@ -29,7 +29,7 @@ class WPSEO_Config_Field_Site_Type extends WPSEO_Config_Field_Choice {
29
  }
30
 
31
  /**
32
- * Set adapter
33
  *
34
  * @param WPSEO_Configuration_Options_Adapter $adapter Adapter to register lookup on.
35
  */
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Config_Field_Site_Type.
10
  */
11
  class WPSEO_Config_Field_Site_Type extends WPSEO_Config_Field_Choice {
12
 
29
  }
30
 
31
  /**
32
+ * Set adapter.
33
  *
34
  * @param WPSEO_Configuration_Options_Adapter $adapter Adapter to register lookup on.
35
  */
admin/config-ui/fields/class-field-success-message.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Config_Field_Success_Message
10
  */
11
  class WPSEO_Config_Field_Success_Message extends WPSEO_Config_Field {
12
 
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Config_Field_Success_Message.
10
  */
11
  class WPSEO_Config_Field_Success_Message extends WPSEO_Config_Field {
12
 
admin/config-ui/fields/class-field-suggestions.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Holds the suggestions for the 'You might also like' page in the wizard
10
  */
11
  class WPSEO_Config_Field_Suggestions extends WPSEO_Config_Field {
12
 
@@ -20,7 +20,7 @@ class WPSEO_Config_Field_Suggestions extends WPSEO_Config_Field {
20
  }
21
 
22
  /**
23
- * Adds a suggestion to the properties
24
  *
25
  * @param string $title The title of the choice.
26
  * @param string $copy The text explaining the choice.
6
  */
7
 
8
  /**
9
+ * Holds the suggestions for the 'You might also like' page in the wizard.
10
  */
11
  class WPSEO_Config_Field_Suggestions extends WPSEO_Config_Field {
12
 
20
  }
21
 
22
  /**
23
+ * Adds a suggestion to the properties.
24
  *
25
  * @param string $title The title of the choice.
26
  * @param string $copy The text explaining the choice.
admin/config-ui/fields/class-field-title-intro.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Config_Field_Title_Intro
10
  */
11
  class WPSEO_Config_Field_Title_Intro extends WPSEO_Config_Field {
12
 
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Config_Field_Title_Intro.
10
  */
11
  class WPSEO_Config_Field_Title_Intro extends WPSEO_Config_Field {
12
 
admin/config-ui/fields/class-field-upsell-configuration-service.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Config_Field_Upsell_Configuration_Service
10
  */
11
  class WPSEO_Config_Field_Upsell_Configuration_Service extends WPSEO_Config_Field {
12
 
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Config_Field_Upsell_Configuration_Service.
10
  */
11
  class WPSEO_Config_Field_Upsell_Configuration_Service extends WPSEO_Config_Field {
12
 
admin/config-ui/fields/class-field-upsell-site-review.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Config_Field_Upsell_Site_Review
10
  */
11
  class WPSEO_Config_Field_Upsell_Site_Review extends WPSEO_Config_Field {
12
 
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Config_Field_Upsell_Site_Review.
10
  */
11
  class WPSEO_Config_Field_Upsell_Site_Review extends WPSEO_Config_Field {
12
 
admin/config-ui/fields/class-field.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Config_Field
10
  */
11
  class WPSEO_Config_Field {
12
 
@@ -57,7 +57,7 @@ class WPSEO_Config_Field {
57
  }
58
 
59
  /**
60
- * Get the identifier
61
  *
62
  * @return string
63
  */
@@ -66,7 +66,7 @@ class WPSEO_Config_Field {
66
  }
67
 
68
  /**
69
- * Get the component
70
  *
71
  * @return string
72
  */
@@ -75,7 +75,7 @@ class WPSEO_Config_Field {
75
  }
76
 
77
  /**
78
- * Set a property value
79
  *
80
  * @param string $name Property to set.
81
  * @param mixed $value Value to apply.
@@ -85,7 +85,7 @@ class WPSEO_Config_Field {
85
  }
86
 
87
  /**
88
- * Get all the properties
89
  *
90
  * @return array
91
  */
@@ -94,7 +94,7 @@ class WPSEO_Config_Field {
94
  }
95
 
96
  /**
97
- * Get the data
98
  *
99
  * @return mixed
100
  */
@@ -126,7 +126,7 @@ class WPSEO_Config_Field {
126
  }
127
 
128
  /**
129
- * Set the adapter to use
130
  *
131
  * @param WPSEO_Configuration_Options_Adapter $adapter Adapter to register lookup on.
132
  */
@@ -147,7 +147,7 @@ class WPSEO_Config_Field {
147
  }
148
 
149
  /**
150
- * Get the required field settings (if present)
151
  *
152
  * @return array
153
  */
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Config_Field.
10
  */
11
  class WPSEO_Config_Field {
12
 
57
  }
58
 
59
  /**
60
+ * Get the identifier.
61
  *
62
  * @return string
63
  */
66
  }
67
 
68
  /**
69
+ * Get the component.
70
  *
71
  * @return string
72
  */
75
  }
76
 
77
  /**
78
+ * Set a property value.
79
  *
80
  * @param string $name Property to set.
81
  * @param mixed $value Value to apply.
85
  }
86
 
87
  /**
88
+ * Get all the properties.
89
  *
90
  * @return array
91
  */
94
  }
95
 
96
  /**
97
+ * Get the data.
98
  *
99
  * @return mixed
100
  */
126
  }
127
 
128
  /**
129
+ * Set the adapter to use.
130
  *
131
  * @param WPSEO_Configuration_Options_Adapter $adapter Adapter to register lookup on.
132
  */
147
  }
148
 
149
  /**
150
+ * Get the required field settings (if present).
151
  *
152
  * @return array
153
  */
admin/filters/class-abstract-post-filter.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Abstract_Post_Filter
10
  */
11
  abstract class WPSEO_Abstract_Post_Filter implements WPSEO_WordPress_Integration {
12
 
@@ -16,7 +16,7 @@ abstract class WPSEO_Abstract_Post_Filter implements WPSEO_WordPress_Integration
16
  const FILTER_QUERY_ARG = 'yoast_filter';
17
 
18
  /**
19
- * Modify the query based on the FILTER_QUERY_ARG variable in $_GET
20
  *
21
  * @param string $where Query variables.
22
  *
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Abstract_Post_Filter.
10
  */
11
  abstract class WPSEO_Abstract_Post_Filter implements WPSEO_WordPress_Integration {
12
 
16
  const FILTER_QUERY_ARG = 'yoast_filter';
17
 
18
  /**
19
+ * Modify the query based on the FILTER_QUERY_ARG variable in $_GET.
20
  *
21
  * @param string $where Query variables.
22
  *
admin/filters/class-cornerstone-filter.php CHANGED
@@ -39,7 +39,7 @@ class WPSEO_Cornerstone_Filter extends WPSEO_Abstract_Post_Filter {
39
  }
40
 
41
  /**
42
- * Modify the query based on the seo_filter variable in $_GET
43
  *
44
  * @param string $where Query variables.
45
  *
39
  }
40
 
41
  /**
42
+ * Modify the query based on the seo_filter variable in $_GET.
43
  *
44
  * @param string $where Query variables.
45
  *
admin/formatter/class-metabox-formatter.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * This class forces needed methods for the metabox localization
10
  */
11
  class WPSEO_Metabox_Formatter {
12
 
@@ -27,7 +27,7 @@ class WPSEO_Metabox_Formatter {
27
  }
28
 
29
  /**
30
- * Returns the values
31
  *
32
  * @return array
33
  */
@@ -39,7 +39,7 @@ class WPSEO_Metabox_Formatter {
39
  }
40
 
41
  /**
42
- * Returns array with all the values always needed by a scraper object
43
  *
44
  * @return array Default settings for the metabox.
45
  */
@@ -203,7 +203,7 @@ class WPSEO_Metabox_Formatter {
203
  __( 'Get %s', 'wordpress-seo' ),
204
  'Yoast SEO Premium'
205
  ),
206
- 'small' => __( '1 year free updates and upgrades included!', 'wordpress-seo' ),
207
  'a11yNotice.opensInNewTab' => __( '(Opens in a new browser tab)', 'wordpress-seo' ),
208
  );
209
  }
6
  */
7
 
8
  /**
9
+ * This class forces needed methods for the metabox localization.
10
  */
11
  class WPSEO_Metabox_Formatter {
12
 
27
  }
28
 
29
  /**
30
+ * Returns the values.
31
  *
32
  * @return array
33
  */
39
  }
40
 
41
  /**
42
+ * Returns array with all the values always needed by a scraper object.
43
  *
44
  * @return array Default settings for the metabox.
45
  */
203
  __( 'Get %s', 'wordpress-seo' ),
204
  'Yoast SEO Premium'
205
  ),
206
+ 'small' => __( '1 year free support and updates included!', 'wordpress-seo' ),
207
  'a11yNotice.opensInNewTab' => __( '(Opens in a new browser tab)', 'wordpress-seo' ),
208
  );
209
  }
admin/formatter/class-post-metabox-formatter.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * This class provides data for the post metabox by return its values for localization
10
  */
11
  class WPSEO_Post_Metabox_Formatter implements WPSEO_Metabox_Formatter_Interface {
12
 
@@ -62,7 +62,7 @@ class WPSEO_Post_Metabox_Formatter implements WPSEO_Metabox_Formatter_Interface
62
  }
63
 
64
  /**
65
- * Returns the url to search for keyword for the post
66
  *
67
  * @return string
68
  */
@@ -71,7 +71,7 @@ class WPSEO_Post_Metabox_Formatter implements WPSEO_Metabox_Formatter_Interface
71
  }
72
 
73
  /**
74
- * Returns the url to edit the taxonomy
75
  *
76
  * @return string
77
  */
@@ -80,7 +80,7 @@ class WPSEO_Post_Metabox_Formatter implements WPSEO_Metabox_Formatter_Interface
80
  }
81
 
82
  /**
83
- * Returns a base URL for use in the JS, takes permalink structure into account
84
  *
85
  * @return string
86
  */
@@ -194,7 +194,7 @@ class WPSEO_Post_Metabox_Formatter implements WPSEO_Metabox_Formatter_Interface
194
  }
195
 
196
  /**
197
- * Determines the date to be displayed in the snippet preview
198
  *
199
  * @return string
200
  */
6
  */
7
 
8
  /**
9
+ * This class provides data for the post metabox by return its values for localization.
10
  */
11
  class WPSEO_Post_Metabox_Formatter implements WPSEO_Metabox_Formatter_Interface {
12
 
62
  }
63
 
64
  /**
65
+ * Returns the url to search for keyword for the post.
66
  *
67
  * @return string
68
  */
71
  }
72
 
73
  /**
74
+ * Returns the url to edit the taxonomy.
75
  *
76
  * @return string
77
  */
80
  }
81
 
82
  /**
83
+ * Returns a base URL for use in the JS, takes permalink structure into account.
84
  *
85
  * @return string
86
  */
194
  }
195
 
196
  /**
197
+ * Determines the date to be displayed in the snippet preview.
198
  *
199
  * @return string
200
  */
admin/formatter/class-term-metabox-formatter.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * This class provides data for the term metabox by return its values for localization
10
  */
11
  class WPSEO_Term_Metabox_Formatter implements WPSEO_Metabox_Formatter_Interface {
12
 
@@ -63,7 +63,7 @@ class WPSEO_Term_Metabox_Formatter implements WPSEO_Metabox_Formatter_Interface
63
  }
64
 
65
  /**
66
- * Returns the url to search for keyword for the taxonomy
67
  *
68
  * @return string
69
  */
@@ -72,7 +72,7 @@ class WPSEO_Term_Metabox_Formatter implements WPSEO_Metabox_Formatter_Interface
72
  }
73
 
74
  /**
75
- * Returns the url to edit the taxonomy
76
  *
77
  * @return string
78
  */
@@ -83,7 +83,7 @@ class WPSEO_Term_Metabox_Formatter implements WPSEO_Metabox_Formatter_Interface
83
  }
84
 
85
  /**
86
- * Returns a base URL for use in the JS, takes permalink structure into account
87
  *
88
  * @return string
89
  */
@@ -98,7 +98,7 @@ class WPSEO_Term_Metabox_Formatter implements WPSEO_Metabox_Formatter_Interface
98
  }
99
 
100
  /**
101
- * Counting the number of given keyword used for other term than given term_id
102
  *
103
  * @return array
104
  */
6
  */
7
 
8
  /**
9
+ * This class provides data for the term metabox by return its values for localization.
10
  */
11
  class WPSEO_Term_Metabox_Formatter implements WPSEO_Metabox_Formatter_Interface {
12
 
63
  }
64
 
65
  /**
66
+ * Returns the url to search for keyword for the taxonomy.
67
  *
68
  * @return string
69
  */
72
  }
73
 
74
  /**
75
+ * Returns the url to edit the taxonomy.
76
  *
77
  * @return string
78
  */
83
  }
84
 
85
  /**
86
+ * Returns a base URL for use in the JS, takes permalink structure into account.
87
  *
88
  * @return string
89
  */
98
  }
99
 
100
  /**
101
+ * Counting the number of given keyword used for other term than given term_id.
102
  *
103
  * @return array
104
  */
admin/formatter/interface-metabox-formatter.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Interface to force get_values
10
  */
11
  interface WPSEO_Metabox_Formatter_Interface {
12
 
6
  */
7
 
8
  /**
9
+ * Interface to force get_values.
10
  */
11
  interface WPSEO_Metabox_Formatter_Interface {
12
 
admin/google_search_console/class-gsc-ajax.php CHANGED
@@ -6,12 +6,12 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_GSC_Ajax
10
  */
11
  class WPSEO_GSC_Ajax {
12
 
13
  /**
14
- * Setting the AJAX hooks for GSC
15
  */
16
  public function __construct() {
17
  add_action( 'wp_ajax_wpseo_mark_fixed_crawl_issue', array( $this, 'ajax_mark_as_fixed' ) );
@@ -24,7 +24,7 @@ class WPSEO_GSC_Ajax {
24
  /**
25
  * This method will be access by an AJAX request and will mark an issue as fixed.
26
  *
27
- * First it will do a request to the Google API
28
  */
29
  public function ajax_mark_as_fixed() {
30
  if ( $this->valid_nonce() ) {
@@ -37,7 +37,7 @@ class WPSEO_GSC_Ajax {
37
  }
38
 
39
  /**
40
- * Handle the AJAX request and dismiss the GSC notice
41
  */
42
  public function dismiss_notice() {
43
  check_ajax_referer( 'dismiss-gsc-notice' );
@@ -82,7 +82,7 @@ class WPSEO_GSC_Ajax {
82
  }
83
 
84
  /**
85
- * Check if posted nonce is valid and return true if it is
86
  *
87
  * @return mixed
88
  */
6
  */
7
 
8
  /**
9
+ * Class WPSEO_GSC_Ajax.
10
  */
11
  class WPSEO_GSC_Ajax {
12
 
13
  /**
14
+ * Setting the AJAX hooks for GSC.
15
  */
16
  public function __construct() {
17
  add_action( 'wp_ajax_wpseo_mark_fixed_crawl_issue', array( $this, 'ajax_mark_as_fixed' ) );
24
  /**
25
  * This method will be access by an AJAX request and will mark an issue as fixed.
26
  *
27
+ * First it will do a request to the Google API.
28
  */
29
  public function ajax_mark_as_fixed() {
30
  if ( $this->valid_nonce() ) {
37
  }
38
 
39
  /**
40
+ * Handle the AJAX request and dismiss the GSC notice.
41
  */
42
  public function dismiss_notice() {
43
  check_ajax_referer( 'dismiss-gsc-notice' );
82
  }
83
 
84
  /**
85
+ * Check if posted nonce is valid and return true if it is.
86
  *
87
  * @return mixed
88
  */
admin/google_search_console/class-gsc-bulk-action.php CHANGED
@@ -6,12 +6,12 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_GSC_Bulk_Action
10
  */
11
  class WPSEO_GSC_Bulk_Action {
12
 
13
  /**
14
- * Setting the listener on the bulk action post
15
  */
16
  public function __construct() {
17
  if ( wp_verify_nonce( filter_input( INPUT_POST, 'wpseo_gsc_nonce' ), 'wpseo_gsc_nonce' ) ) {
@@ -20,7 +20,7 @@ class WPSEO_GSC_Bulk_Action {
20
  }
21
 
22
  /**
23
- * Handles the bulk action when there is an action posted
24
  */
25
  private function handle_bulk_action() {
26
  $bulk_action = $this->determine_bulk_action();
@@ -33,7 +33,7 @@ class WPSEO_GSC_Bulk_Action {
33
  }
34
 
35
  /**
36
- * Determine which bulk action is selected and return that value
37
  *
38
  * @return string|bool
39
  */
@@ -54,7 +54,7 @@ class WPSEO_GSC_Bulk_Action {
54
  }
55
 
56
  /**
57
- * Get the posted issues and return them
58
  *
59
  * @return array
60
  */
@@ -69,7 +69,7 @@ class WPSEO_GSC_Bulk_Action {
69
  }
70
 
71
  /**
72
- * Runs the bulk action
73
  *
74
  * @param string $bulk_action Action type.
75
  * @param array $issues Set of issues to apply to.
@@ -84,7 +84,7 @@ class WPSEO_GSC_Bulk_Action {
84
  }
85
 
86
  /**
87
- * Marks the issue as fixed
88
  *
89
  * @param string $issue Issue URL.
90
  *
6
  */
7
 
8
  /**
9
+ * Class WPSEO_GSC_Bulk_Action.
10
  */
11
  class WPSEO_GSC_Bulk_Action {
12
 
13
  /**
14
+ * Setting the listener on the bulk action post.
15
  */
16
  public function __construct() {
17
  if ( wp_verify_nonce( filter_input( INPUT_POST, 'wpseo_gsc_nonce' ), 'wpseo_gsc_nonce' ) ) {
20
  }
21
 
22
  /**
23
+ * Handles the bulk action when there is an action posted.
24
  */
25
  private function handle_bulk_action() {
26
  $bulk_action = $this->determine_bulk_action();
33
  }
34
 
35
  /**
36
+ * Determine which bulk action is selected and return that value.
37
  *
38
  * @return string|bool
39
  */
54
  }
55
 
56
  /**
57
+ * Get the posted issues and return them.
58
  *
59
  * @return array
60
  */
69
  }
70
 
71
  /**
72
+ * Runs the bulk action.
73
  *
74
  * @param string $bulk_action Action type.
75
  * @param array $issues Set of issues to apply to.
84
  }
85
 
86
  /**
87
+ * Marks the issue as fixed.
88
  *
89
  * @param string $issue Issue URL.
90
  *
admin/google_search_console/class-gsc-category-filters.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_GSC_Category_Filters
10
  *
11
  * This class will get all category counts from the options and will parse the filter links that are displayed above
12
  * the crawl issue tables.
@@ -14,30 +14,30 @@
14
  class WPSEO_GSC_Category_Filters {
15
 
16
  /**
17
- * The counts per category
18
  *
19
  * @var array
20
  */
21
  private $category_counts = array();
22
 
23
  /**
24
- * All the possible filters
25
  *
26
  * @var array
27
  */
28
  private $filter_values = array();
29
 
30
  /**
31
- * The current category
32
  *
33
  * @var string
34
  */
35
  private $category;
36
 
37
  /**
38
- * Constructing this object
39
  *
40
- * Setting the hook to create the issues categories as the links
41
  *
42
  * @param array $platform_counts Set of issue counts by platform.
43
  */
@@ -53,7 +53,7 @@ class WPSEO_GSC_Category_Filters {
53
  }
54
 
55
  /**
56
- * Returns the value of the current category
57
  *
58
  * @return mixed|string
59
  */
@@ -62,9 +62,9 @@ class WPSEO_GSC_Category_Filters {
62
  }
63
 
64
  /**
65
- * Returns the current filters as an array
66
  *
67
- * Only return categories with more than 0 issues
68
  *
69
  * @return array
70
  */
@@ -79,7 +79,7 @@ class WPSEO_GSC_Category_Filters {
79
  }
80
 
81
  /**
82
- * Getting the current view
83
  */
84
  private function get_current_category() {
85
  $current_category = filter_input( INPUT_GET, 'category' );
@@ -101,7 +101,7 @@ class WPSEO_GSC_Category_Filters {
101
  }
102
 
103
  /**
104
- * Setting the view counts based on the saved data. The info will be used to display the category filters
105
  *
106
  * @param array $platform_counts Set of counts by platform.
107
  */
@@ -110,7 +110,7 @@ class WPSEO_GSC_Category_Filters {
110
  }
111
 
112
  /**
113
- * Setting the values for the filter
114
  */
115
  private function set_filter_values() {
116
  $this->set_filter_value( 'access_denied', __( 'Access denied', 'wordpress-seo' ), __( 'Server requires authentication or is blocking Googlebot from accessing the site.', 'wordpress-seo' ), __( 'Show information about errors in category \'Access Denied\'', 'wordpress-seo' ) );
@@ -125,7 +125,7 @@ class WPSEO_GSC_Category_Filters {
125
  }
126
 
127
  /**
128
- * Add new filter value to the filter_values
129
  *
130
  * @param string $key Filter key.
131
  * @param string $value Filter value.
@@ -141,7 +141,7 @@ class WPSEO_GSC_Category_Filters {
141
  }
142
 
143
  /**
144
- * Creates a filter link
145
  *
146
  * @param string $category Issue type.
147
  * @param integer $count Count for the type.
@@ -186,7 +186,9 @@ class WPSEO_GSC_Category_Filters {
186
  }
187
 
188
  /**
189
- * Parsing the category counts. When there are 0 issues for a specific category, just remove that one from the array
 
 
190
  *
191
  * @param array $category_counts Set of counts for categories.
192
  *
6
  */
7
 
8
  /**
9
+ * Class WPSEO_GSC_Category_Filters.
10
  *
11
  * This class will get all category counts from the options and will parse the filter links that are displayed above
12
  * the crawl issue tables.
14
  class WPSEO_GSC_Category_Filters {
15
 
16
  /**
17
+ * The counts per category.
18
  *
19
  * @var array
20
  */
21
  private $category_counts = array();
22
 
23
  /**
24
+ * All the possible filters.
25
  *
26
  * @var array
27
  */
28
  private $filter_values = array();
29
 
30
  /**
31
+ * The current category.
32
  *
33
  * @var string
34
  */
35
  private $category;
36
 
37
  /**
38
+ * Constructing this object.
39
  *
40
+ * Setting the hook to create the issues categories as the links.
41
  *
42
  * @param array $platform_counts Set of issue counts by platform.
43
  */
53
  }
54
 
55
  /**
56
+ * Returns the value of the current category.
57
  *
58
  * @return mixed|string
59
  */
62
  }
63
 
64
  /**
65
+ * Returns the current filters as an array.
66
  *
67
+ * Only return categories with more than 0 issues.
68
  *
69
  * @return array
70
  */
79
  }
80
 
81
  /**
82
+ * Getting the current view.
83
  */
84
  private function get_current_category() {
85
  $current_category = filter_input( INPUT_GET, 'category' );
101
  }
102
 
103
  /**
104
+ * Setting the view counts based on the saved data. The info will be used to display the category filters.
105
  *
106
  * @param array $platform_counts Set of counts by platform.
107
  */
110
  }
111
 
112
  /**
113
+ * Setting the values for the filter.
114
  */
115
  private function set_filter_values() {
116
  $this->set_filter_value( 'access_denied', __( 'Access denied', 'wordpress-seo' ), __( 'Server requires authentication or is blocking Googlebot from accessing the site.', 'wordpress-seo' ), __( 'Show information about errors in category \'Access Denied\'', 'wordpress-seo' ) );
125
  }
126
 
127
  /**
128
+ * Add new filter value to the filter_values.
129
  *
130
  * @param string $key Filter key.
131
  * @param string $value Filter value.
141
  }
142
 
143
  /**
144
+ * Creates a filter link.
145
  *
146
  * @param string $category Issue type.
147
  * @param integer $count Count for the type.
186
  }
187
 
188
  /**
189
+ * Parsing the category counts.
190
+ *
191
+ * When there are 0 issues for a specific category, just remove that one from the array.
192
  *
193
  * @param array $category_counts Set of counts for categories.
194
  *
admin/google_search_console/class-gsc-config.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_GSC_Config
10
  */
11
  class WPSEO_GSC_Config {
12
 
6
  */
7
 
8
  /**
9
+ * Class WPSEO_GSC_Config.
10
  */
11
  class WPSEO_GSC_Config {
12
 
admin/google_search_console/class-gsc-count.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_GSC_Count
10
  */
11
  class WPSEO_GSC_Count {
12
 
@@ -30,7 +30,7 @@ class WPSEO_GSC_Count {
30
  private $service;
31
 
32
  /**
33
- * Holder for the fetched issues from GSC
34
  *
35
  * @var array
36
  */
@@ -46,7 +46,7 @@ class WPSEO_GSC_Count {
46
  }
47
 
48
  /**
49
- * Getting the counts for given platform and return them as an array
50
  *
51
  * @param string $platform Platform (desktop, mobile, feature phone).
52
  *
@@ -62,7 +62,7 @@ class WPSEO_GSC_Count {
62
  }
63
 
64
  /**
65
- * Return the fetched issues
66
  *
67
  * @return array
68
  */
@@ -71,7 +71,7 @@ class WPSEO_GSC_Count {
71
  }
72
 
73
  /**
74
- * Listing the issues an gives them back as fetched issues
75
  *
76
  * @param string $platform Platform (desktop, mobile, feature phone).
77
  * @param string $category Issue category.
@@ -106,7 +106,7 @@ class WPSEO_GSC_Count {
106
  }
107
 
108
  /**
109
- * Update the count of the issues
110
  *
111
  * @param string $platform Platform (desktop, mobile, feature phone).
112
  * @param string $category Issue type.
@@ -123,7 +123,7 @@ class WPSEO_GSC_Count {
123
  }
124
 
125
  /**
126
- * Fetching the counts from the GSC API
127
  */
128
  public function fetch_counts() {
129
  if ( WPSEO_GSC_Settings::get_profile() && $this->get_last_fetch() <= strtotime( '-12 hours' ) ) {
@@ -142,7 +142,7 @@ class WPSEO_GSC_Count {
142
  }
143
 
144
  /**
145
- * Parsing the received counts from the API and map the keys to plugin friendly values
146
  *
147
  * @param array $fetched_counts Set of retrieved counts.
148
  *
6
  */
7
 
8
  /**
9
+ * Class WPSEO_GSC_Count.
10
  */
11
  class WPSEO_GSC_Count {
12
 
30
  private $service;
31
 
32
  /**
33
+ * Holder for the fetched issues from GSC.
34
  *
35
  * @var array
36
  */
46
  }
47
 
48
  /**
49
+ * Getting the counts for given platform and return them as an array.
50
  *
51
  * @param string $platform Platform (desktop, mobile, feature phone).
52
  *
62
  }
63
 
64
  /**
65
+ * Return the fetched issues.
66
  *
67
  * @return array
68
  */
71
  }
72
 
73
  /**
74
+ * Listing the issues an gives them back as fetched issues.
75
  *
76
  * @param string $platform Platform (desktop, mobile, feature phone).
77
  * @param string $category Issue category.
106
  }
107
 
108
  /**
109
+ * Update the count of the issues.
110
  *
111
  * @param string $platform Platform (desktop, mobile, feature phone).
112
  * @param string $category Issue type.
123
  }
124
 
125
  /**
126
+ * Fetching the counts from the GSC API.
127
  */
128
  public function fetch_counts() {
129
  if ( WPSEO_GSC_Settings::get_profile() && $this->get_last_fetch() <= strtotime( '-12 hours' ) ) {
142
  }
143
 
144
  /**
145
+ * Parsing the received counts from the API and map the keys to plugin friendly values.
146
  *
147
  * @param array $fetched_counts Set of retrieved counts.
148
  *
admin/google_search_console/class-gsc-issue.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_GSC_Issue
10
  */
11
  class WPSEO_GSC_Issue {
12
 
@@ -46,7 +46,7 @@ class WPSEO_GSC_Issue {
46
  }
47
 
48
  /**
49
- * Put the class properties in array
50
  *
51
  * @return array
52
  */
@@ -62,7 +62,7 @@ class WPSEO_GSC_Issue {
62
  }
63
 
64
  /**
65
- * Converting the date to a date format
66
  *
67
  * @param DateTime $date_to_convert Date instance.
68
  * @param string $format Format string.
@@ -79,7 +79,7 @@ class WPSEO_GSC_Issue {
79
  }
80
 
81
  /**
82
- * Converting the date to a timestamp
83
  *
84
  * @param DateTime $date_to_convert Date object instance.
85
  *
6
  */
7
 
8
  /**
9
+ * Class WPSEO_GSC_Issue.
10
  */
11
  class WPSEO_GSC_Issue {
12
 
46
  }
47
 
48
  /**
49
+ * Put the class properties in array.
50
  *
51
  * @return array
52
  */
62
  }
63
 
64
  /**
65
+ * Converting the date to a date format.
66
  *
67
  * @param DateTime $date_to_convert Date instance.
68
  * @param string $format Format string.
79
  }
80
 
81
  /**
82
+ * Converting the date to a timestamp.
83
  *
84
  * @param DateTime $date_to_convert Date object instance.
85
  *
admin/google_search_console/class-gsc-issues.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_GSC_Issues
10
  */
11
  class WPSEO_GSC_Issues {
12
 
@@ -16,21 +16,21 @@ class WPSEO_GSC_Issues {
16
  private $option_name = '';
17
 
18
  /**
19
- * List of all current issues to compare with received issues
20
  *
21
  * @var array
22
  */
23
  private $current_issues = array();
24
 
25
  /**
26
- * Holder for all the issues
27
  *
28
  * @var array
29
  */
30
  private $issues = array();
31
 
32
  /**
33
- * Setting up the properties and fetching the current issues
34
  *
35
  * @param string $platform Platform type (desktop, mobile, feature phone).
36
  * @param string $category Issues category.
@@ -55,7 +55,7 @@ class WPSEO_GSC_Issues {
55
  }
56
 
57
  /**
58
- * Deleting the issue from the issues
59
  *
60
  * @param string $url URL to delete issues for.
61
  *
@@ -96,7 +96,7 @@ class WPSEO_GSC_Issues {
96
  }
97
 
98
  /**
99
- * Comparing the issue with the list of current existing issues
100
  *
101
  * @param array $crawl_issues Set of issues by reference.
102
  * @param stdClass $issue Issue object to check against the list.
@@ -114,7 +114,7 @@ class WPSEO_GSC_Issues {
114
 
115
  /**
116
  * The fetched issue from the API will be parsed as an WPSEO_Crawl_Issue object. After initializing the issue as an
117
- * object, the object will be returned
118
  *
119
  * @param stdClass $issue Issue data object.
120
  *
@@ -160,7 +160,7 @@ class WPSEO_GSC_Issues {
160
  }
161
 
162
  /**
163
- * Search in the issues for the given $url
164
  *
165
  * @param string $url Issue URL to search for.
166
  *
6
  */
7
 
8
  /**
9
+ * Class WPSEO_GSC_Issues.
10
  */
11
  class WPSEO_GSC_Issues {
12
 
16
  private $option_name = '';
17
 
18
  /**
19
+ * List of all current issues to compare with received issues.
20
  *
21
  * @var array
22
  */
23
  private $current_issues = array();
24
 
25
  /**
26
+ * Holder for all the issues.
27
  *
28
  * @var array
29
  */
30
  private $issues = array();
31
 
32
  /**
33
+ * Setting up the properties and fetching the current issues.
34
  *
35
  * @param string $platform Platform type (desktop, mobile, feature phone).
36
  * @param string $category Issues category.
55
  }
56
 
57
  /**
58
+ * Deleting the issue from the issues.
59
  *
60
  * @param string $url URL to delete issues for.
61
  *
96
  }
97
 
98
  /**
99
+ * Comparing the issue with the list of current existing issues.
100
  *
101
  * @param array $crawl_issues Set of issues by reference.
102
  * @param stdClass $issue Issue object to check against the list.
114
 
115
  /**
116
  * The fetched issue from the API will be parsed as an WPSEO_Crawl_Issue object. After initializing the issue as an
117
+ * object, the object will be returned.
118
  *
119
  * @param stdClass $issue Issue data object.
120
  *
160
  }
161
 
162
  /**
163
+ * Search in the issues for the given $url.
164
  *
165
  * @param string $url Issue URL to search for.
166
  *
admin/google_search_console/class-gsc-mapper.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_GSC_Mapper
10
  */
11
  class WPSEO_GSC_Mapper {
12
 
@@ -23,7 +23,7 @@ class WPSEO_GSC_Mapper {
23
  );
24
 
25
  /**
26
- * The categories which can be mapped
27
  *
28
  * @var array
29
  */
@@ -56,7 +56,7 @@ class WPSEO_GSC_Mapper {
56
  }
57
 
58
  /**
59
- * Mapping the platform
60
  *
61
  * @param string $platform Platform (desktop, mobile, feature phone).
62
  *
@@ -69,7 +69,7 @@ class WPSEO_GSC_Mapper {
69
  }
70
 
71
  /**
72
- * Mapping the given platform by value and return its key
73
  *
74
  * @param string $platform Platform (desktop, mobile, feature phone).
75
  *
@@ -102,7 +102,7 @@ class WPSEO_GSC_Mapper {
102
  }
103
 
104
  /**
105
- * Mapping the given category by value and return its key
106
  *
107
  * @param string $category Issue type.
108
  *
6
  */
7
 
8
  /**
9
+ * Class WPSEO_GSC_Mapper.
10
  */
11
  class WPSEO_GSC_Mapper {
12
 
23
  );
24
 
25
  /**
26
+ * The categories which can be mapped.
27
  *
28
  * @var array
29
  */
56
  }
57
 
58
  /**
59
+ * Mapping the platform.
60
  *
61
  * @param string $platform Platform (desktop, mobile, feature phone).
62
  *
69
  }
70
 
71
  /**
72
+ * Mapping the given platform by value and return its key.
73
  *
74
  * @param string $platform Platform (desktop, mobile, feature phone).
75
  *
102
  }
103
 
104
  /**
105
+ * Mapping the given category by value and return its key.
106
  *
107
  * @param string $category Issue type.
108
  *
admin/google_search_console/class-gsc-marker.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_GSC_Marker
10
  */
11
  class WPSEO_GSC_Marker {
12
 
@@ -36,9 +36,9 @@ class WPSEO_GSC_Marker {
36
  private $result;
37
 
38
  /**
39
- * Setting up the needed API libs and return the result
40
  *
41
- * If param URL is given, the request is performed by a bulk action
42
  *
43
  * @param string $url Optional URL.
44
  */
@@ -48,7 +48,7 @@ class WPSEO_GSC_Marker {
48
  }
49
 
50
  /**
51
- * Getting the response for the AJAX request
52
  *
53
  * @return string
54
  */
@@ -57,7 +57,7 @@ class WPSEO_GSC_Marker {
57
  }
58
 
59
  /**
60
- * Setting the result, this method will check if current
61
  *
62
  * @return string
63
  */
@@ -76,7 +76,7 @@ class WPSEO_GSC_Marker {
76
  }
77
 
78
  /**
79
- * Check if request is valid by verifying the posted nonce and return the URL if this one is set
80
  *
81
  * @return bool|string
82
  */
@@ -89,7 +89,7 @@ class WPSEO_GSC_Marker {
89
  }
90
 
91
  /**
92
- * Storing the data belonging to the current issue, this data is needed in the 'mark as fixed' flow
93
  *
94
  * @return bool
95
  */
@@ -117,7 +117,7 @@ class WPSEO_GSC_Marker {
117
  }
118
 
119
  /**
120
- * Delete the crawl issue from the database
121
  *
122
  * @return bool
123
  */
6
  */
7
 
8
  /**
9
+ * Class WPSEO_GSC_Marker.
10
  */
11
  class WPSEO_GSC_Marker {
12
 
36
  private $result;
37
 
38
  /**
39
+ * Setting up the needed API libs and return the result.
40
  *
41
+ * If param URL is given, the request is performed by a bulk action.
42
  *
43
  * @param string $url Optional URL.
44
  */
48
  }
49
 
50
  /**
51
+ * Getting the response for the AJAX request.
52
  *
53
  * @return string
54
  */
57
  }
58
 
59
  /**
60
+ * Setting the result, this method will check if current.
61
  *
62
  * @return string
63
  */
76
  }
77
 
78
  /**
79
+ * Check if request is valid by verifying the posted nonce and return the URL if this one is set.
80
  *
81
  * @return bool|string
82
  */
89
  }
90
 
91
  /**
92
+ * Storing the data belonging to the current issue, this data is needed in the 'mark as fixed' flow.
93
  *
94
  * @return bool
95
  */
117
  }
118
 
119
  /**
120
+ * Delete the crawl issue from the database.
121
  *
122
  * @return bool
123
  */
admin/google_search_console/class-gsc-platform-tabs.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_GSC_Platform_Tabs
10
  */
11
  class WPSEO_GSC_Platform_Tabs {
12
 
@@ -16,7 +16,7 @@ class WPSEO_GSC_Platform_Tabs {
16
  private $current_tab;
17
 
18
  /**
19
- * Return the tabs as a string
20
  *
21
  * @return string
22
  */
@@ -25,7 +25,7 @@ class WPSEO_GSC_Platform_Tabs {
25
  }
26
 
27
  /**
28
- * Getting the current_tab
29
  *
30
  * @return string
31
  */
@@ -34,7 +34,7 @@ class WPSEO_GSC_Platform_Tabs {
34
  }
35
 
36
  /**
37
- * Loops through the array with all the platforms and convert it into an array
38
  *
39
  * @return string
40
  */
@@ -65,7 +65,7 @@ class WPSEO_GSC_Platform_Tabs {
65
  }
66
 
67
  /**
68
- * Setting the current tab
69
  *
70
  * @param array $platforms Set of platforms (desktop, mobile, feature phone).
71
  */
@@ -78,7 +78,7 @@ class WPSEO_GSC_Platform_Tabs {
78
  }
79
 
80
  /**
81
- * Parses the tab
82
  *
83
  * @param string $platform_target Platform (desktop, mobile, feature phone).
84
  * @param string $platform_value Link anchor.
6
  */
7
 
8
  /**
9
+ * Class WPSEO_GSC_Platform_Tabs.
10
  */
11
  class WPSEO_GSC_Platform_Tabs {
12
 
16
  private $current_tab;
17
 
18
  /**
19
+ * Return the tabs as a string.
20
  *
21
  * @return string
22
  */
25
  }
26
 
27
  /**
28
+ * Getting the current_tab.
29
  *
30
  * @return string
31
  */
34
  }
35
 
36
  /**
37
+ * Loops through the array with all the platforms and convert it into an array.
38
  *
39
  * @return string
40
  */
65
  }
66
 
67
  /**
68
+ * Setting the current tab.
69
  *
70
  * @param array $platforms Set of platforms (desktop, mobile, feature phone).
71
  */
78
  }
79
 
80
  /**
81
+ * Parses the tab.
82
  *
83
  * @param string $platform_target Platform (desktop, mobile, feature phone).
84
  * @param string $platform_value Link anchor.
admin/google_search_console/class-gsc-service.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_GSC_Service
10
  */
11
  class WPSEO_GSC_Service {
12
 
@@ -32,7 +32,7 @@ class WPSEO_GSC_Service {
32
  }
33
 
34
  /**
35
- * Returns the client
36
  *
37
  * @return Yoast_Api_Google_Client
38
  */
@@ -41,7 +41,7 @@ class WPSEO_GSC_Service {
41
  }
42
 
43
  /**
44
- * Removes the option and calls the clients clear_data method to clear that one as well
45
  */
46
  public function clear_data() {
47
  // Clear client data.
@@ -49,7 +49,7 @@ class WPSEO_GSC_Service {
49
  }
50
 
51
  /**
52
- * Get all sites that are registered in the GSC panel
53
  *
54
  * @return array
55
  */
@@ -72,7 +72,7 @@ class WPSEO_GSC_Service {
72
  }
73
 
74
  /**
75
- * Get crawl issues
76
  *
77
  * @return array
78
  */
@@ -95,7 +95,7 @@ class WPSEO_GSC_Service {
95
  }
96
 
97
  /**
98
- * Sending request to mark issue as fixed
99
  *
100
  * @param string $url Issue URL.
101
  * @param string $platform Platform (desktop, mobile, feature phone).
@@ -109,7 +109,7 @@ class WPSEO_GSC_Service {
109
  }
110
 
111
  /**
112
- * Fetching the issues from the GSC API
113
  *
114
  * @param string $platform Platform (desktop, mobile, feature phone).
115
  * @param string $category Issue type.
@@ -128,7 +128,7 @@ class WPSEO_GSC_Service {
128
  }
129
 
130
  /**
131
- * Setting the GSC client
132
  */
133
  private function set_client() {
134
  try {
@@ -163,7 +163,7 @@ class WPSEO_GSC_Service {
163
  }
164
 
165
  /**
166
- * Adding notice that the api libs has the wrong version
167
  *
168
  * @param string $notice Message string.
169
  */
@@ -174,7 +174,7 @@ class WPSEO_GSC_Service {
174
  }
175
 
176
  /**
177
- * Getting the crawl error counts
178
  *
179
  * @param string $profile Profile name string.
180
  *
6
  */
7
 
8
  /**
9
+ * Class WPSEO_GSC_Service.
10
  */
11
  class WPSEO_GSC_Service {
12
 
32
  }
33
 
34
  /**
35
+ * Returns the client.
36
  *
37
  * @return Yoast_Api_Google_Client
38
  */
41
  }
42
 
43
  /**
44
+ * Removes the option and calls the clients clear_data method to clear that one as well.
45
  */
46
  public function clear_data() {
47
  // Clear client data.
49
  }
50
 
51
  /**
52
+ * Get all sites that are registered in the GSC panel.
53
  *
54
  * @return array
55
  */
72
  }
73
 
74
  /**
75
+ * Get crawl issues.
76
  *
77
  * @return array
78
  */
95
  }
96
 
97
  /**
98
+ * Sending request to mark issue as fixed.
99
  *
100
  * @param string $url Issue URL.
101
  * @param string $platform Platform (desktop, mobile, feature phone).
109
  }
110
 
111
  /**
112
+ * Fetching the issues from the GSC API.
113
  *
114
  * @param string $platform Platform (desktop, mobile, feature phone).
115
  * @param string $category Issue type.
128
  }
129
 
130
  /**
131
+ * Setting the GSC client.
132
  */
133
  private function set_client() {
134
  try {
163
  }
164
 
165
  /**
166
+ * Adding notice that the api libs has the wrong version.
167
  *
168
  * @param string $notice Message string.
169
  */
174
  }
175
 
176
  /**
177
+ * Getting the crawl error counts.
178
  *
179
  * @param string $profile Profile name string.
180
  *
admin/google_search_console/class-gsc-settings.php CHANGED
@@ -6,12 +6,12 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_GSC_Settings
10
  */
11
  class WPSEO_GSC_Settings {
12
 
13
  /**
14
- * Clear all data from the database
15
  *
16
  * @param WPSEO_GSC_Service $service Service class instance.
17
  */
@@ -27,7 +27,7 @@ class WPSEO_GSC_Settings {
27
  }
28
 
29
  /**
30
- * Reloading all the issues
31
  */
32
  public static function reload_issues() {
33
  // Remove issue and issue counts.
@@ -35,7 +35,7 @@ class WPSEO_GSC_Settings {
35
  }
36
 
37
  /**
38
- * When authorization is successful return true, otherwise false
39
  *
40
  * @param string $authorization_code Code to validate.
41
  * @param Yoast_Api_Google_Client $client Client object instance.
@@ -47,7 +47,7 @@ class WPSEO_GSC_Settings {
47
  }
48
 
49
  /**
50
- * Get the GSC profile
51
  *
52
  * @return string
53
  */
@@ -66,7 +66,7 @@ class WPSEO_GSC_Settings {
66
  }
67
 
68
  /**
69
- * Removes the issue counts and all the issues from the options
70
  */
71
  private static function remove() {
72
  // Remove the issue counts from the options.
@@ -77,7 +77,7 @@ class WPSEO_GSC_Settings {
77
  }
78
 
79
  /**
80
- * Remove the issue counts
81
  */
82
  private static function remove_issue_counts() {
83
  // Remove the options which are holding the counts.
@@ -86,7 +86,7 @@ class WPSEO_GSC_Settings {
86
  }
87
 
88
  /**
89
- * Delete the issues and their meta data from the database
90
  */
91
  private static function remove_issues() {
92
  global $wpdb;
@@ -96,7 +96,7 @@ class WPSEO_GSC_Settings {
96
  }
97
 
98
  /**
99
- * Removes the options for GSC
100
  */
101
  private static function remove_gsc_option() {
102
  delete_option( WPSEO_GSC::OPTION_WPSEO_GSC );
6
  */
7
 
8
  /**
9
+ * Class WPSEO_GSC_Settings.
10
  */
11
  class WPSEO_GSC_Settings {
12
 
13
  /**
14
+ * Clear all data from the database.
15
  *
16
  * @param WPSEO_GSC_Service $service Service class instance.
17
  */
27
  }
28
 
29
  /**
30
+ * Reloading all the issues.
31
  */
32
  public static function reload_issues() {
33
  // Remove issue and issue counts.
35
  }
36
 
37
  /**
38
+ * When authorization is successful return true, otherwise false.
39
  *
40
  * @param string $authorization_code Code to validate.
41
  * @param Yoast_Api_Google_Client $client Client object instance.
47
  }
48
 
49
  /**
50
+ * Get the GSC profile.
51
  *
52
  * @return string
53
  */
66
  }
67
 
68
  /**
69
+ * Removes the issue counts and all the issues from the options.
70
  */
71
  private static function remove() {
72
  // Remove the issue counts from the options.
77
  }
78
 
79
  /**
80
+ * Remove the issue counts.
81
  */
82
  private static function remove_issue_counts() {
83
  // Remove the options which are holding the counts.
86
  }
87
 
88
  /**
89
+ * Delete the issues and their meta data from the database.
90
  */
91
  private static function remove_issues() {
92
  global $wpdb;
96
  }
97
 
98
  /**
99
+ * Removes the options for GSC.
100
  */
101
  private static function remove_gsc_option() {
102
  delete_option( WPSEO_GSC::OPTION_WPSEO_GSC );
admin/google_search_console/class-gsc-table.php CHANGED
@@ -10,7 +10,7 @@ if ( ! class_exists( 'WP_List_Table' ) ) {
10
  }
11
 
12
  /**
13
- * Class WPSEO_GSC_Table
14
  */
15
  class WPSEO_GSC_Table extends WP_List_Table {
16
 
@@ -25,7 +25,7 @@ class WPSEO_GSC_Table extends WP_List_Table {
25
  private $search_string;
26
 
27
  /**
28
- * The category that is displayed
29
  *
30
  * @var mixed|string
31
  */
@@ -69,7 +69,7 @@ class WPSEO_GSC_Table extends WP_List_Table {
69
  }
70
 
71
  /**
72
- * Getting the screen id from this table
73
  *
74
  * @return string
75
  */
@@ -92,7 +92,7 @@ class WPSEO_GSC_Table extends WP_List_Table {
92
  }
93
 
94
  /**
95
- * Set the table columns
96
  *
97
  * @return array
98
  */
@@ -109,7 +109,7 @@ class WPSEO_GSC_Table extends WP_List_Table {
109
  }
110
 
111
  /**
112
- * Return the columns that are sortable
113
  *
114
  * @return array
115
  */
@@ -125,7 +125,7 @@ class WPSEO_GSC_Table extends WP_List_Table {
125
  }
126
 
127
  /**
128
- * Return available bulk actions
129
  *
130
  * @return array
131
  */
@@ -136,7 +136,7 @@ class WPSEO_GSC_Table extends WP_List_Table {
136
  }
137
 
138
  /**
139
- * Default method to display a column
140
  *
141
  * @param array $item Data array.
142
  * @param string $column_name Column name key.
@@ -148,7 +148,7 @@ class WPSEO_GSC_Table extends WP_List_Table {
148
  }
149
 
150
  /**
151
- * Checkbox column
152
  *
153
  * @param array $item Item data array.
154
  *
@@ -164,7 +164,7 @@ class WPSEO_GSC_Table extends WP_List_Table {
164
  }
165
 
166
  /**
167
- * Formatting the output of the column last crawled into a dateformat
168
  *
169
  * @param array $item Item data array.
170
  *
@@ -175,7 +175,7 @@ class WPSEO_GSC_Table extends WP_List_Table {
175
  }
176
 
177
  /**
178
- * Formatting the output of the column first detected into a dateformat
179
  *
180
  * @param array $item Item data array.
181
  *
@@ -186,7 +186,7 @@ class WPSEO_GSC_Table extends WP_List_Table {
186
  }
187
 
188
  /**
189
- * URL column
190
  *
191
  * @param array $item Item data array.
192
  *
@@ -212,7 +212,7 @@ class WPSEO_GSC_Table extends WP_List_Table {
212
  /**
213
  * Generates and display row actions links for the list table.
214
  *
215
- * We override the parent class method to avoid doubled buttons to be printed out.
216
  *
217
  * @param object $item The item being acted upon.
218
  * @param string $column_name Current column name.
@@ -224,14 +224,14 @@ class WPSEO_GSC_Table extends WP_List_Table {
224
  }
225
 
226
  /**
227
- * Running the setup of the columns
228
  */
229
  private function setup_columns() {
230
  $this->_column_headers = array( $this->get_columns(), array(), $this->get_sortable_columns() );
231
  }
232
 
233
  /**
234
- * Check if the current category allow creating redirects
235
  *
236
  * @return bool
237
  */
@@ -240,7 +240,7 @@ class WPSEO_GSC_Table extends WP_List_Table {
240
  }
241
 
242
  /**
243
- * Setting the table navigation
244
  *
245
  * @param int $total_items Total number of items.
246
  * @param int $posts_per_page Number of items per page.
@@ -256,7 +256,7 @@ class WPSEO_GSC_Table extends WP_List_Table {
256
  }
257
 
258
  /**
259
- * Setting the items
260
  */
261
  private function parse_items() {
262
  if ( is_array( $this->items ) && count( $this->items ) > 0 ) {
@@ -272,7 +272,7 @@ class WPSEO_GSC_Table extends WP_List_Table {
272
  }
273
 
274
  /**
275
- * Search through the items
276
  */
277
  private function do_search() {
278
  $results = array();
@@ -290,7 +290,7 @@ class WPSEO_GSC_Table extends WP_List_Table {
290
  }
291
 
292
  /**
293
- * Running the pagination
294
  */
295
  private function paginate_items() {
296
  /*
@@ -307,7 +307,7 @@ class WPSEO_GSC_Table extends WP_List_Table {
307
  }
308
 
309
  /**
310
- * Sort the items by callback
311
  */
312
  private function sort_items() {
313
  // Sort the results.
@@ -315,7 +315,7 @@ class WPSEO_GSC_Table extends WP_List_Table {
315
  }
316
 
317
  /**
318
- * Doing the sorting of the issues
319
  *
320
  * @param array $a First data set for comparison.
321
  * @param array $b Second data set for comparison.
@@ -393,7 +393,7 @@ class WPSEO_GSC_Table extends WP_List_Table {
393
  }
394
 
395
  /**
396
- * Showing the hidden fields used by the AJAX requests
397
  *
398
  * @param string $platform Platform (desktop, mobile, feature phone).
399
  */
10
  }
11
 
12
  /**
13
+ * Class WPSEO_GSC_Table.
14
  */
15
  class WPSEO_GSC_Table extends WP_List_Table {
16
 
25
  private $search_string;
26
 
27
  /**
28
+ * The category that is displayed.
29
  *
30
  * @var mixed|string
31
  */
69
  }
70
 
71
  /**
72
+ * Getting the screen id from this table.
73
  *
74
  * @return string
75
  */
92
  }
93
 
94
  /**
95
+ * Set the table columns.
96
  *
97
  * @return array
98
  */
109
  }
110
 
111
  /**
112
+ * Return the columns that are sortable.
113
  *
114
  * @return array
115
  */
125
  }
126
 
127
  /**
128
+ * Return available bulk actions.
129
  *
130
  * @return array
131
  */
136
  }
137
 
138
  /**
139
+ * Default method to display a column.
140
  *
141
  * @param array $item Data array.
142
  * @param string $column_name Column name key.
148
  }
149
 
150
  /**
151
+ * Checkbox column.
152
  *
153
  * @param array $item Item data array.
154
  *
164
  }
165
 
166
  /**
167
+ * Formatting the output of the column last crawled into a dateformat.
168
  *
169
  * @param array $item Item data array.
170
  *
175
  }
176
 
177
  /**
178
+ * Formatting the output of the column first detected into a dateformat.
179
  *
180
  * @param array $item Item data array.
181
  *
186
  }
187
 
188
  /**
189
+ * URL column.
190
  *
191
  * @param array $item Item data array.
192
  *
212
  /**
213
  * Generates and display row actions links for the list table.
214
  *
215
+ * We override the parent class method to avoid buttons to be printed out twice.
216
  *
217
  * @param object $item The item being acted upon.
218
  * @param string $column_name Current column name.
224
  }
225
 
226
  /**
227
+ * Running the setup of the columns.
228
  */
229
  private function setup_columns() {
230
  $this->_column_headers = array( $this->get_columns(), array(), $this->get_sortable_columns() );
231
  }
232
 
233
  /**
234
+ * Check if the current category allow creating redirects.
235
  *
236
  * @return bool
237
  */
240
  }
241
 
242
  /**
243
+ * Setting the table navigation.
244
  *
245
  * @param int $total_items Total number of items.
246
  * @param int $posts_per_page Number of items per page.
256
  }
257
 
258
  /**
259
+ * Setting the items.
260
  */
261
  private function parse_items() {
262
  if ( is_array( $this->items ) && count( $this->items ) > 0 ) {
272
  }
273
 
274
  /**
275
+ * Search through the items.
276
  */
277
  private function do_search() {
278
  $results = array();
290
  }
291
 
292
  /**
293
+ * Running the pagination.
294
  */
295
  private function paginate_items() {
296
  /*
307
  }
308
 
309
  /**
310
+ * Sort the items by callback.
311
  */
312
  private function sort_items() {
313
  // Sort the results.
315
  }
316
 
317
  /**
318
+ * Doing the sorting of the issues.
319
  *
320
  * @param array $a First data set for comparison.
321
  * @param array $b Second data set for comparison.
393
  }
394
 
395
  /**
396
+ * Showing the hidden fields used by the AJAX requests.
397
  *
398
  * @param string $platform Platform (desktop, mobile, feature phone).
399
  */
admin/google_search_console/class-gsc.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_GSC
10
  */
11
  class WPSEO_GSC implements WPSEO_WordPress_Integration {
12
 
@@ -72,21 +72,17 @@ class WPSEO_GSC implements WPSEO_WordPress_Integration {
72
  }
73
 
74
  /**
75
- * Handles the dashboard notification. If the Google Search Console has no credentials,
76
- * show a notification for the user to give him a heads up. This message is dismissable.
 
 
77
  *
78
  * @return void
79
  */
80
  public function register_gsc_notification() {
81
  $notification = $this->get_profile_notification();
82
  $notification_center = Yoast_Notification_Center::get();
83
-
84
- if ( $this->has_profile() ) {
85
- $notification_center->remove_notification( $notification );
86
-
87
- return;
88
- }
89
- $notification_center->add_notification( $notification );
90
  }
91
 
92
  /**
6
  */
7
 
8
  /**
9
+ * Class WPSEO_GSC.
10
  */
11
  class WPSEO_GSC implements WPSEO_WordPress_Integration {
12
 
72
  }
73
 
74
  /**
75
+ * Handles the dashboard notification.
76
+ *
77
+ * If the Google Search Console has no credentials, show a notification
78
+ * for the user to give them a heads up. This message is dismissable.
79
  *
80
  * @return void
81
  */
82
  public function register_gsc_notification() {
83
  $notification = $this->get_profile_notification();
84
  $notification_center = Yoast_Notification_Center::get();
85
+ $notification_center->remove_notification( $notification );
 
 
 
 
 
 
86
  }
87
 
88
  /**
admin/import/class-import-detector.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Import_Plugins_Detector
10
  *
11
  * Class with functionality to detect whether we should import from another SEO plugin.
12
  */
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Import_Plugins_Detector.
10
  *
11
  * Class with functionality to detect whether we should import from another SEO plugin.
12
  */
admin/import/class-import-plugin.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Import_Plugin
10
  *
11
  * Class with functionality to import Yoast SEO settings from other plugins.
12
  */
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Import_Plugin.
10
  *
11
  * Class with functionality to import Yoast SEO settings from other plugins.
12
  */
admin/import/class-import-settings.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Import_Settings
10
  *
11
  * Class with functionality to import the Yoast SEO settings.
12
  */
@@ -82,7 +82,7 @@ class WPSEO_Import_Settings {
82
  }
83
 
84
  /**
85
- * Parse the option group and import it
86
  *
87
  * @param string $name Name string.
88
  * @param array $option_group Option group data.
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Import_Settings.
10
  *
11
  * Class with functionality to import the Yoast SEO settings.
12
  */
82
  }
83
 
84
  /**
85
+ * Parse the option group and import it.
86
  *
87
  * @param string $name Name string.
88
  * @param array $option_group Option group data.
admin/import/class-import-status.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_ImportStatus
10
  *
11
  * Holds the status of and message about imports.
12
  */
6
  */
7
 
8
  /**
9
+ * Class WPSEO_ImportStatus.
10
  *
11
  * Holds the status of and message about imports.
12
  */
admin/import/plugins/class-abstract-plugin-importer.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Plugin_Importer
10
  *
11
  * Class with functionality to import meta data from other plugins.
12
  */
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Plugin_Importer.
10
  *
11
  * Class with functionality to import meta data from other plugins.
12
  */
admin/import/plugins/class-import-headspace.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Import_HeadSpace
10
  *
11
  * Class with functionality to import & clean HeadSpace SEO post metadata.
12
  */
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Import_HeadSpace.
10
  *
11
  * Class with functionality to import & clean HeadSpace SEO post metadata.
12
  */
admin/import/plugins/class-import-jetpack.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Import_Jetpack_SEO
10
  *
11
  * Class with functionality to import & clean Jetpack SEO post metadata.
12
  */
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Import_Jetpack_SEO.
10
  *
11
  * Class with functionality to import & clean Jetpack SEO post metadata.
12
  */
admin/import/plugins/class-import-seopressor.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Import_SEOPressor
10
  *
11
  * Class with functionality to import & clean SEOPressor post metadata.
12
  */
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Import_SEOPressor.
10
  *
11
  * Class with functionality to import & clean SEOPressor post metadata.
12
  */
admin/import/plugins/class-import-wpseo.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Import_WPSEO
10
  *
11
  * Class with functionality to import & clean wpSEO.de post metadata.
12
  */
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Import_WPSEO.
10
  *
11
  * Class with functionality to import & clean wpSEO.de post metadata.
12
  */
admin/import/plugins/class-importers.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Plugin_Importers
10
  *
11
  * Object which contains all importers.
12
  */
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Plugin_Importers.
10
  *
11
  * Object which contains all importers.
12
  */
admin/links/class-link-column-count.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Represents the link column count. This class contains the count for each post id on the current page .
10
  */
11
  class WPSEO_Link_Column_Count {
12
 
6
  */
7
 
8
  /**
9
+ * Represents the link column count. This class contains the count for each post id on the current page.
10
  */
11
  class WPSEO_Link_Column_Count {
12
 
admin/links/class-link-columns.php CHANGED
@@ -235,7 +235,7 @@ class WPSEO_Link_Columns {
235
  }
236
 
237
  /**
238
- * Displays the column content for the given column
239
  *
240
  * @param string $column_name Column to display the content for.
241
  * @param int $post_id Post to display the column content for.
235
  }
236
 
237
  /**
238
+ * Displays the column content for the given column.
239
  *
240
  * @param string $column_name Column to display the content for.
241
  * @param int $post_id Post to display the column content for.
admin/links/class-link-compatibility-notifier.php CHANGED
@@ -30,7 +30,7 @@ class WPSEO_Link_Compatibility_Notifier {
30
  }
31
 
32
  /**
33
- * Returns the notification when the version is incompatible
34
  *
35
  * @return Yoast_Notification The notification.
36
  */
30
  }
31
 
32
  /**
33
+ * Returns the notification when the version is incompatible.
34
  *
35
  * @return Yoast_Notification The notification.
36
  */
admin/links/class-link-filter.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Represents the filter for filtering links
10
  */
11
  class WPSEO_Link_Filter {
12
 
@@ -16,7 +16,7 @@ class WPSEO_Link_Filter {
16
  protected $current_page_path;
17
 
18
  /**
19
- * Sets the current page path
20
  *
21
  * @param string $current_page The current page.
22
  */
6
  */
7
 
8
  /**
9
+ * Represents the filter for filtering links.
10
  */
11
  class WPSEO_Link_Filter {
12
 
16
  protected $current_page_path;
17
 
18
  /**
19
+ * Sets the current page path.
20
  *
21
  * @param string $current_page The current page.
22
  */
admin/links/class-link-notifier.php CHANGED
@@ -16,7 +16,7 @@ class WPSEO_Link_Notifier {
16
  const NOTIFICATION_ID = 'wpseo-reindex-links';
17
 
18
  /**
19
- * Registers all hooks to WordPress
20
  */
21
  public function register_hooks() {
22
  if ( filter_input( INPUT_GET, 'page' ) === 'wpseo_dashboard' ) {
@@ -42,7 +42,7 @@ class WPSEO_Link_Notifier {
42
  }
43
 
44
  /**
45
- * Adds the notification when it isn't set already and the amount of unindexed items is greater than the set.
46
  * threshold.
47
  */
48
  public function manage_notification() {
16
  const NOTIFICATION_ID = 'wpseo-reindex-links';
17
 
18
  /**
19
+ * Registers all hooks to WordPress.
20
  */
21
  public function register_hooks() {
22
  if ( filter_input( INPUT_GET, 'page' ) === 'wpseo_dashboard' ) {
42
  }
43
 
44
  /**
45
+ * Adds the notification when it isn't set already and the amount of unindexed items is greater than the set
46
  * threshold.
47
  */
48
  public function manage_notification() {
admin/links/class-link-reindex-dashboard.php CHANGED
@@ -124,7 +124,7 @@ class WPSEO_Link_Reindex_Dashboard {
124
  }
125
 
126
  /**
127
- * Enqueues site wide analysis script
128
  *
129
  * @return void
130
  */
@@ -170,7 +170,7 @@ class WPSEO_Link_Reindex_Dashboard {
170
  }
171
 
172
  /**
173
- * Returns if there are unprocessed items
174
  *
175
  * @return bool True if there are unprocessed items.
176
  */
124
  }
125
 
126
  /**
127
+ * Enqueues site wide analysis script.
128
  *
129
  * @return void
130
  */
170
  }
171
 
172
  /**
173
+ * Returns if there are unprocessed items.
174
  *
175
  * @return bool True if there are unprocessed items.
176
  */
admin/links/class-link-reindex-post-endpoint.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Link_Reindex_Post_Endpoint
10
  */
11
  class WPSEO_Link_Reindex_Post_Endpoint {
12
 
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Link_Reindex_Post_Endpoint.
10
  */
11
  class WPSEO_Link_Reindex_Post_Endpoint {
12
 
admin/links/class-link-reindex-post-service.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Link_Reindex_Post_Service
10
  */
11
  class WPSEO_Link_Reindex_Post_Service {
12
 
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Link_Reindex_Post_Service.
10
  */
11
  class WPSEO_Link_Reindex_Post_Service {
12
 
admin/links/class-link-type-classifier.php CHANGED
@@ -21,7 +21,7 @@ class WPSEO_Link_Type_Classifier {
21
  protected $base_path = '';
22
 
23
  /**
24
- * Constructor setting the base url
25
  *
26
  * @param string $base_url The base url to set.
27
  */
@@ -58,11 +58,11 @@ class WPSEO_Link_Type_Classifier {
58
  }
59
 
60
  /**
61
- * Returns true when the link starts with https:// or http://
62
  *
63
  * @param array $url_parts The url parts to use.
64
  *
65
- * @return bool True if the url starts with a protocol.
66
  */
67
  protected function contains_protocol( array $url_parts ) {
68
  return isset( $url_parts['scheme'] ) && $url_parts['scheme'] !== null;
21
  protected $base_path = '';
22
 
23
  /**
24
+ * Constructor setting the base url.
25
  *
26
  * @param string $base_url The base url to set.
27
  */
58
  }
59
 
60
  /**
61
+ * Checks whether a link starts with an HTTP[S] protocol.
62
  *
63
  * @param array $url_parts The url parts to use.
64
  *
65
+ * @return bool True if the url starts with an https:// or http:// protocol.
66
  */
67
  protected function contains_protocol( array $url_parts ) {
68
  return isset( $url_parts['scheme'] ) && $url_parts['scheme'] !== null;
admin/metabox/class-metabox-analysis-readability.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Represents the readability analysis
10
  */
11
  class WPSEO_Metabox_Analysis_Readability implements WPSEO_Metabox_Analysis {
12
 
6
  */
7
 
8
  /**
9
+ * Represents the readability analysis.
10
  */
11
  class WPSEO_Metabox_Analysis_Readability implements WPSEO_Metabox_Analysis {
12
 
admin/metabox/class-metabox-analysis-seo.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Represents the SEO analysis
10
  */
11
  class WPSEO_Metabox_Analysis_SEO implements WPSEO_Metabox_Analysis {
12
 
6
  */
7
 
8
  /**
9
+ * Represents the SEO analysis.
10
  */
11
  class WPSEO_Metabox_Analysis_SEO implements WPSEO_Metabox_Analysis {
12
 
admin/metabox/class-metabox.php CHANGED
@@ -188,7 +188,7 @@ class WPSEO_Metabox extends WPSEO_Meta {
188
 
189
  $values = $post_formatter->get_values();
190
 
191
- /** This filter is documented in admin/filters/class-cornerstone-filter.php */
192
  $post_types = apply_filters( 'wpseo_cornerstone_post_types', WPSEO_Post_Type::get_accessible_post_types() );
193
  if ( $values['cornerstoneActive'] && ! in_array( $post->post_type, $post_types, true ) ) {
194
  $values['cornerstoneActive'] = false;
@@ -240,7 +240,7 @@ class WPSEO_Metabox extends WPSEO_Meta {
240
  /**
241
  * Pass some variables to js for the edit / post page overview, etc.
242
  *
243
- * @return array
244
  */
245
  public function localize_shortcode_plugin_script() {
246
  return array(
@@ -440,7 +440,7 @@ class WPSEO_Metabox extends WPSEO_Meta {
440
  * @param array $meta_field_def Contains the vars based on which output is generated.
441
  * @param string $key Internal key (without prefix).
442
  *
443
- * @return string
444
  */
445
  public function do_meta_box( $meta_field_def, $key = '' ) {
446
  $content = '';
@@ -623,7 +623,7 @@ class WPSEO_Metabox extends WPSEO_Meta {
623
  *
624
  * @param int $post_id Post ID.
625
  *
626
- * @return bool|void Boolean false if invalid save post request.
627
  */
628
  public function save_postdata( $post_id ) {
629
  // Bail if this is a multisite installation and the site has been switched.
@@ -810,7 +810,7 @@ class WPSEO_Metabox extends WPSEO_Meta {
810
  /**
811
  * Pass some variables to js for upload module.
812
  *
813
- * @return array
814
  */
815
  public function localize_media_script() {
816
  return array(
@@ -857,7 +857,7 @@ class WPSEO_Metabox extends WPSEO_Meta {
857
  /**
858
  * Prepares the replace vars for localization.
859
  *
860
- * @return array replace vars
861
  */
862
  private function get_replace_vars() {
863
  $post = $this->get_metabox_post();
188
 
189
  $values = $post_formatter->get_values();
190
 
191
+ /** This filter is documented in admin/filters/class-cornerstone-filter.php. */
192
  $post_types = apply_filters( 'wpseo_cornerstone_post_types', WPSEO_Post_Type::get_accessible_post_types() );
193
  if ( $values['cornerstoneActive'] && ! in_array( $post->post_type, $post_types, true ) ) {
194
  $values['cornerstoneActive'] = false;
240
  /**
241
  * Pass some variables to js for the edit / post page overview, etc.
242
  *
243
+ * @return array
244
  */
245
  public function localize_shortcode_plugin_script() {
246
  return array(
440
  * @param array $meta_field_def Contains the vars based on which output is generated.
441
  * @param string $key Internal key (without prefix).
442
  *
443
+ * @return string
444
  */
445
  public function do_meta_box( $meta_field_def, $key = '' ) {
446
  $content = '';
623
  *
624
  * @param int $post_id Post ID.
625
  *
626
+ * @return bool|void Boolean false if invalid save post request.
627
  */
628
  public function save_postdata( $post_id ) {
629
  // Bail if this is a multisite installation and the site has been switched.
810
  /**
811
  * Pass some variables to js for upload module.
812
  *
813
+ * @return array
814
  */
815
  public function localize_media_script() {
816
  return array(
857
  /**
858
  * Prepares the replace vars for localization.
859
  *
860
+ * @return array Replace vars.
861
  */
862
  private function get_replace_vars() {
863
  $post = $this->get_metabox_post();
admin/metabox/interface-metabox-analysis.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Describes an interface for an analysis that can either be enabled or disabled
10
  */
11
  interface WPSEO_Metabox_Analysis {
12
 
6
  */
7
 
8
  /**
9
+ * Describes an interface for an analysis that can either be enabled or disabled.
10
  */
11
  interface WPSEO_Metabox_Analysis {
12
 
admin/notifiers/class-post-type-archive-notification-handler.php CHANGED
@@ -93,7 +93,7 @@ class WPSEO_Post_Type_Archive_Notification_Handler extends WPSEO_Dismissible_Not
93
  /**
94
  * Checks if the first activation is done before the release of 7.9.
95
  *
96
- * @return bool True whether the install is 'new'.
97
  *
98
  * @codeCoverageIgnore
99
  */
@@ -146,7 +146,7 @@ class WPSEO_Post_Type_Archive_Notification_Handler extends WPSEO_Dismissible_Not
146
  *
147
  * @param string $post_type_name The post type's name.
148
  *
149
- * @return bool True whether the archive slug is overridden.
150
  *
151
  * @codeCoverageIgnore
152
  */
@@ -165,7 +165,7 @@ class WPSEO_Post_Type_Archive_Notification_Handler extends WPSEO_Dismissible_Not
165
  *
166
  * @param string $post_type_name The post type name.
167
  *
168
- * @return bool True whether the default templates are set.
169
  *
170
  * @codeCoverageIgnore
171
  */
@@ -181,7 +181,7 @@ class WPSEO_Post_Type_Archive_Notification_Handler extends WPSEO_Dismissible_Not
181
  *
182
  * @param string $option_name The option name to check.
183
  *
184
- * @return bool True whethere the option value is equal to the default value.
185
  *
186
  * @codeCoverageIgnore
187
  */
93
  /**
94
  * Checks if the first activation is done before the release of 7.9.
95
  *
96
+ * @return bool True when the install is 'new'.
97
  *
98
  * @codeCoverageIgnore
99
  */
146
  *
147
  * @param string $post_type_name The post type's name.
148
  *
149
+ * @return bool True when the archive slug is overridden.
150
  *
151
  * @codeCoverageIgnore
152
  */
165
  *
166
  * @param string $post_type_name The post type name.
167
  *
168
+ * @return bool True when the default templates are set.
169
  *
170
  * @codeCoverageIgnore
171
  */
181
  *
182
  * @param string $option_name The option name to check.
183
  *
184
+ * @return bool True when the option value is equal to the default value.
185
  *
186
  * @codeCoverageIgnore
187
  */
admin/onpage/class-onpage-option.php CHANGED
@@ -66,7 +66,7 @@ class WPSEO_OnPage_Option {
66
  private $onpage_option;
67
 
68
  /**
69
- * Setting the object by setting the properties
70
  */
71
  public function __construct() {
72
  $this->onpage_option = $this->get_option();
@@ -104,7 +104,7 @@ class WPSEO_OnPage_Option {
104
  }
105
 
106
  /**
107
- * Check if the last fetch is within the time of 60 minutes
108
  *
109
  * @return bool
110
  */
@@ -113,14 +113,14 @@ class WPSEO_OnPage_Option {
113
  }
114
 
115
  /**
116
- * Saving the option with the current data
117
  */
118
  public function save_option() {
119
  update_option( self::OPTION_NAME, $this->onpage_option );
120
  }
121
 
122
  /**
123
- * Returns the value of the onpage_enabled status
124
  *
125
  * @return bool
126
  */
66
  private $onpage_option;
67
 
68
  /**
69
+ * Setting the object by setting the properties.
70
  */
71
  public function __construct() {
72
  $this->onpage_option = $this->get_option();
104
  }
105
 
106
  /**
107
+ * Check if the last fetch is within the time of 60 minutes.
108
  *
109
  * @return bool
110
  */
113
  }
114
 
115
  /**
116
+ * Saving the option with the current data.
117
  */
118
  public function save_option() {
119
  update_option( self::OPTION_NAME, $this->onpage_option );
120
  }
121
 
122
  /**
123
+ * Returns the value of the onpage_enabled status.
124
  *
125
  * @return bool
126
  */
admin/onpage/class-onpage-request.php CHANGED
@@ -18,7 +18,7 @@ class WPSEO_OnPage_Request {
18
  private $onpage_endpoint = 'https://indexability.yoast.onpage.org/';
19
 
20
  /**
21
- * Doing the remote get and returns the body
22
  *
23
  * @param string $target_url The home url.
24
  * @param array $parameters Array of extra parameters to send to Ryte.
18
  private $onpage_endpoint = 'https://indexability.yoast.onpage.org/';
19
 
20
  /**
21
+ * Doing the remote get and returns the body.
22
  *
23
  * @param string $target_url The home url.
24
  * @param array $parameters Array of extra parameters to send to Ryte.
admin/recalculate/class-recalculate-posts.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * This class handles the calculation of the SEO score for all posts with a filled focus keyword
10
  */
11
  class WPSEO_Recalculate_Posts extends WPSEO_Recalculate {
12
 
@@ -52,7 +52,7 @@ class WPSEO_Recalculate_Posts extends WPSEO_Recalculate {
52
  }
53
 
54
  /**
55
- * Map the posts to a response array
56
  *
57
  * @param WP_Post $item The post for which to build the analyzer data.
58
  *
@@ -91,7 +91,7 @@ class WPSEO_Recalculate_Posts extends WPSEO_Recalculate {
91
  }
92
 
93
  /**
94
- * Get the title for given post
95
  *
96
  * @param integer $post_id The ID of the post for which to get the title.
97
  * @param string $post_type The post type.
@@ -113,7 +113,7 @@ class WPSEO_Recalculate_Posts extends WPSEO_Recalculate {
113
  }
114
 
115
  /**
116
- * Get the meta description for given post
117
  *
118
  * @param integer $post_id The ID of the post for which to get the meta description.
119
  * @param string $post_type The post type.
6
  */
7
 
8
  /**
9
+ * This class handles the calculation of the SEO score for all posts with a filled focus keyword.
10
  */
11
  class WPSEO_Recalculate_Posts extends WPSEO_Recalculate {
12
 
52
  }
53
 
54
  /**
55
+ * Map the posts to a response array.
56
  *
57
  * @param WP_Post $item The post for which to build the analyzer data.
58
  *
91
  }
92
 
93
  /**
94
+ * Get the title for given post.
95
  *
96
  * @param integer $post_id The ID of the post for which to get the title.
97
  * @param string $post_type The post type.
113
  }
114
 
115
  /**
116
+ * Get the meta description for given post.
117
  *
118
  * @param integer $post_id The ID of the post for which to get the meta description.
119
  * @param string $post_type The post type.
admin/recalculate/class-recalculate-terms.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * This class handles the calculation of the SEO score for all terms
10
  */
11
  class WPSEO_Recalculate_Terms extends WPSEO_Recalculate {
12
 
@@ -92,7 +92,7 @@ class WPSEO_Recalculate_Terms extends WPSEO_Recalculate {
92
  }
93
 
94
  /**
95
- * Gets the focus keyword for the term
96
  *
97
  * @param stdClass|WP_Term $term Term to determine the keyword for.
98
  *
@@ -108,7 +108,7 @@ class WPSEO_Recalculate_Terms extends WPSEO_Recalculate {
108
  }
109
 
110
  /**
111
- * Get the title for given term
112
  *
113
  * @param stdClass|WP_Term $term The term object.
114
  *
@@ -129,7 +129,7 @@ class WPSEO_Recalculate_Terms extends WPSEO_Recalculate {
129
  }
130
 
131
  /**
132
- * Get the meta description for given post
133
  *
134
  * @param stdClass|WP_Term $term The term object.
135
  *
6
  */
7
 
8
  /**
9
+ * This class handles the calculation of the SEO score for all terms.
10
  */
11
  class WPSEO_Recalculate_Terms extends WPSEO_Recalculate {
12
 
92
  }
93
 
94
  /**
95
+ * Gets the focus keyword for the term.
96
  *
97
  * @param stdClass|WP_Term $term Term to determine the keyword for.
98
  *
108
  }
109
 
110
  /**
111
+ * Get the title for given term.
112
  *
113
  * @param stdClass|WP_Term $term The term object.
114
  *
129
  }
130
 
131
  /**
132
+ * Get the meta description for given post.
133
  *
134
  * @param stdClass|WP_Term $term The term object.
135
  *
admin/recalculate/class-recalculate.php CHANGED
@@ -23,7 +23,7 @@ abstract class WPSEO_Recalculate {
23
  abstract public function save_scores( array $scores );
24
 
25
  /**
26
- * Gets the items and parses it to an response
27
  *
28
  * @param integer $paged The current page number.
29
  *
@@ -32,7 +32,7 @@ abstract class WPSEO_Recalculate {
32
  abstract protected function get_items( $paged );
33
 
34
  /**
35
- * Maps the items to an array for the response
36
  *
37
  * @param mixed $item Object with data to parse.
38
  *
@@ -41,7 +41,7 @@ abstract class WPSEO_Recalculate {
41
  abstract protected function item_to_response( $item );
42
 
43
  /**
44
- * Gets the items to recalculate
45
  *
46
  * @param int $paged The current page number.
47
  *
@@ -65,7 +65,7 @@ abstract class WPSEO_Recalculate {
65
  }
66
 
67
  /**
68
- * Parse the posts|terms with the value we need
69
  *
70
  * @param array $items The items to parse.
71
  *
@@ -84,7 +84,7 @@ abstract class WPSEO_Recalculate {
84
  }
85
 
86
  /**
87
- * Get default from the options for given field
88
  *
89
  * @param string $field The field for which to get the default options.
90
  * @param string $suffix The post type.
23
  abstract public function save_scores( array $scores );
24
 
25
  /**
26
+ * Gets the items and parses it to an response.
27
  *
28
  * @param integer $paged The current page number.
29
  *
32
  abstract protected function get_items( $paged );
33
 
34
  /**
35
+ * Maps the items to an array for the response.
36
  *
37
  * @param mixed $item Object with data to parse.
38
  *
41
  abstract protected function item_to_response( $item );
42
 
43
  /**
44
+ * Gets the items to recalculate.
45
  *
46
  * @param int $paged The current page number.
47
  *
65
  }
66
 
67
  /**
68
+ * Parse the posts|terms with the value we need.
69
  *
70
  * @param array $items The items to parse.
71
  *
84
  }
85
 
86
  /**
87
+ * Get default from the options for given field.
88
  *
89
  * @param string $field The field for which to get the default options.
90
  * @param string $suffix The post type.
admin/roles/class-abstract-role-manager.php CHANGED
@@ -140,7 +140,7 @@ abstract class WPSEO_Abstract_Role_Manager implements WPSEO_Role_Manager {
140
  abstract protected function add_role( $role, $display_name, array $capabilities = array() );
141
 
142
  /**
143
- * Removes a role from the system
144
  *
145
  * @param string $role Role to remove.
146
  *
140
  abstract protected function add_role( $role, $display_name, array $capabilities = array() );
141
 
142
  /**
143
+ * Removes a role from the system.
144
  *
145
  * @param string $role Role to remove.
146
  *
admin/services/class-indexable-post-provider.php CHANGED
@@ -168,7 +168,7 @@ class WPSEO_Indexable_Service_Post_Provider extends WPSEO_Indexable_Provider {
168
  /**
169
  * Converts the advanced meta settings to its database variant.
170
  *
171
- * @param array $indexable_data The indeaxable data to convert the advanced meta settings from.
172
  *
173
  * @return string The converted advanced meta settings.
174
  */
168
  /**
169
  * Converts the advanced meta settings to its database variant.
170
  *
171
+ * @param array $indexable_data The indexable data to convert the advanced meta settings from.
172
  *
173
  * @return string The converted advanced meta settings.
174
  */
admin/statistics/class-statistics-integration.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Statistic_Integration
10
  */
11
  class WPSEO_Statistic_Integration implements WPSEO_WordPress_Integration {
12
 
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Statistic_Integration.
10
  */
11
  class WPSEO_Statistic_Integration implements WPSEO_WordPress_Integration {
12
 
admin/statistics/class-statistics-service.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Statistics_Service
10
  */
11
  class WPSEO_Statistics_Service {
12
 
@@ -75,7 +75,7 @@ class WPSEO_Statistics_Service {
75
  }
76
 
77
  /**
78
- * An array representing items to be added to the At a Glance dashboard widget
79
  *
80
  * @return array The statistics for the current user.
81
  */
@@ -106,7 +106,7 @@ class WPSEO_Statistics_Service {
106
  }
107
 
108
  /**
109
- * Set the statistics transient cache for a specific user
110
  *
111
  * @param array $transient The current stored transient with the cached data.
112
  * @param int $user The user's ID to assign the retrieved values to.
@@ -195,7 +195,7 @@ class WPSEO_Statistics_Service {
195
  /**
196
  * Determines the labels for the various scoring ranks that are known within Yoast SEO.
197
  *
198
- * @return array Array containing the translateable labels.
199
  */
200
  private function labels() {
201
  return array(
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Statistics_Service.
10
  */
11
  class WPSEO_Statistics_Service {
12
 
75
  }
76
 
77
  /**
78
+ * An array representing items to be added to the At a Glance dashboard widget.
79
  *
80
  * @return array The statistics for the current user.
81
  */
106
  }
107
 
108
  /**
109
+ * Set the statistics transient cache for a specific user.
110
  *
111
  * @param array $transient The current stored transient with the cached data.
112
  * @param int $user The user's ID to assign the retrieved values to.
195
  /**
196
  * Determines the labels for the various scoring ranks that are known within Yoast SEO.
197
  *
198
+ * @return array Array containing the translatable labels.
199
  */
200
  private function labels() {
201
  return array(
admin/taxonomy/class-taxonomy-content-fields.php CHANGED
@@ -6,12 +6,12 @@
6
  */
7
 
8
  /**
9
- * This class parses all the values for the general tab in the Yoast SEO settings metabox
10
  */
11
  class WPSEO_Taxonomy_Content_Fields extends WPSEO_Taxonomy_Fields {
12
 
13
  /**
14
- * Returns array with the fields for the general tab
15
  *
16
  * @return array
17
  */
6
  */
7
 
8
  /**
9
+ * This class parses all the values for the general tab in the Yoast SEO settings metabox.
10
  */
11
  class WPSEO_Taxonomy_Content_Fields extends WPSEO_Taxonomy_Fields {
12
 
13
  /**
14
+ * Returns array with the fields for the general tab.
15
  *
16
  * @return array
17
  */
admin/taxonomy/class-taxonomy-fields-presenter.php CHANGED
@@ -6,12 +6,12 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Taxonomy_Presenter
10
  */
11
  class WPSEO_Taxonomy_Fields_Presenter {
12
 
13
  /**
14
- * The taxonomy meta data for the current term
15
  *
16
  * @var array
17
  */
@@ -25,7 +25,7 @@ class WPSEO_Taxonomy_Fields_Presenter {
25
  }
26
 
27
  /**
28
- * Displaying the form fields
29
  *
30
  * @param array $fields Array with the fields that will be displayed.
31
  */
@@ -149,7 +149,7 @@ class WPSEO_Taxonomy_Fields_Presenter {
149
  }
150
 
151
  /**
152
- * Getting the value for given field_name
153
  *
154
  * @param string $field_name The fieldname to get the value for.
155
  *
@@ -164,7 +164,7 @@ class WPSEO_Taxonomy_Fields_Presenter {
164
  }
165
 
166
  /**
167
- * Getting the class attributes if $options contains a class key
168
  *
169
  * @param array $options The array with field options.
170
  *
@@ -179,7 +179,7 @@ class WPSEO_Taxonomy_Fields_Presenter {
179
  }
180
 
181
  /**
182
- * Getting the label HTML
183
  *
184
  * @param string $label The label value.
185
  * @param string $field_name The target field.
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Taxonomy_Presenter.
10
  */
11
  class WPSEO_Taxonomy_Fields_Presenter {
12
 
13
  /**
14
+ * The taxonomy meta data for the current term.
15
  *
16
  * @var array
17
  */
25
  }
26
 
27
  /**
28
+ * Displaying the form fields.
29
  *
30
  * @param array $fields Array with the fields that will be displayed.
31
  */
149
  }
150
 
151
  /**
152
+ * Getting the value for given field_name.
153
  *
154
  * @param string $field_name The fieldname to get the value for.
155
  *
164
  }
165
 
166
  /**
167
+ * Getting the class attributes if $options contains a class key.
168
  *
169
  * @param array $options The array with field options.
170
  *
179
  }
180
 
181
  /**
182
+ * Getting the label HTML.
183
  *
184
  * @param string $label The label value.
185
  * @param string $field_name The target field.
admin/taxonomy/class-taxonomy-fields.php CHANGED
@@ -6,21 +6,21 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Taxonomy_Tab
10
  *
11
  * Contains the basics for each class extending this one.
12
  */
13
  abstract class WPSEO_Taxonomy_Fields {
14
 
15
  /**
16
- * The current term data
17
  *
18
  * @var stdClass
19
  */
20
  protected $term;
21
 
22
  /**
23
- * Setting the class properties
24
  *
25
  * @param stdClass $term The current term.
26
  */
@@ -29,14 +29,14 @@ abstract class WPSEO_Taxonomy_Fields {
29
  }
30
 
31
  /**
32
- * This method should return the fields
33
  *
34
  * @return array
35
  */
36
  abstract public function get();
37
 
38
  /**
39
- * Returns array with the field data
40
  *
41
  * @param string $label The label displayed before the field.
42
  * @param string $description Description which will explain the field.
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Taxonomy_Tab.
10
  *
11
  * Contains the basics for each class extending this one.
12
  */
13
  abstract class WPSEO_Taxonomy_Fields {
14
 
15
  /**
16
+ * The current term data.
17
  *
18
  * @var stdClass
19
  */
20
  protected $term;
21
 
22
  /**
23
+ * Setting the class properties.
24
  *
25
  * @param stdClass $term The current term.
26
  */
29
  }
30
 
31
  /**
32
+ * This method should return the fields.
33
  *
34
  * @return array
35
  */
36
  abstract public function get();
37
 
38
  /**
39
+ * Returns array with the field data.
40
  *
41
  * @param string $label The label displayed before the field.
42
  * @param string $description Description which will explain the field.
admin/taxonomy/class-taxonomy-settings-fields.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * This class parses all the values for the general tab in the Yoast SEO settings metabox
10
  */
11
  class WPSEO_Taxonomy_Settings_Fields extends WPSEO_Taxonomy_Fields {
12
 
@@ -57,7 +57,7 @@ class WPSEO_Taxonomy_Settings_Fields extends WPSEO_Taxonomy_Fields {
57
  }
58
 
59
  /**
60
- * Translate options text strings for use in the select fields
61
  *
62
  * {@internal IMPORTANT: if you want to add a new string (option) somewhere, make sure you add
63
  * that array key to the main options definition array in the class WPSEO_Taxonomy_Meta() as well!!!!}}
@@ -72,7 +72,7 @@ class WPSEO_Taxonomy_Settings_Fields extends WPSEO_Taxonomy_Fields {
72
  }
73
 
74
  /**
75
- * Getting the data for the noindex fields
76
  *
77
  * @return array Array containing the no_index options.
78
  */
6
  */
7
 
8
  /**
9
+ * This class parses all the values for the general tab in the Yoast SEO settings metabox.
10
  */
11
  class WPSEO_Taxonomy_Settings_Fields extends WPSEO_Taxonomy_Fields {
12
 
57
  }
58
 
59
  /**
60
+ * Translate options text strings for use in the select fields.
61
  *
62
  * {@internal IMPORTANT: if you want to add a new string (option) somewhere, make sure you add
63
  * that array key to the main options definition array in the class WPSEO_Taxonomy_Meta() as well!!!!}}
72
  }
73
 
74
  /**
75
+ * Getting the data for the noindex fields.
76
  *
77
  * @return array Array containing the no_index options.
78
  */
admin/taxonomy/class-taxonomy-social-fields.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * This class parses all the values for the social tab in the Yoast SEO settings metabox
10
  */
11
  class WPSEO_Taxonomy_Social_Fields extends WPSEO_Taxonomy_Fields {
12
 
@@ -18,7 +18,7 @@ class WPSEO_Taxonomy_Social_Fields extends WPSEO_Taxonomy_Fields {
18
  protected $networks;
19
 
20
  /**
21
- * Setting the class properties
22
  *
23
  * @param stdClass|WP_Term $term The current taxonomy.
24
  */
@@ -29,7 +29,7 @@ class WPSEO_Taxonomy_Social_Fields extends WPSEO_Taxonomy_Fields {
29
  }
30
 
31
  /**
32
- * When this method returns false, the social tab in the meta box will be hidden
33
  *
34
  * @return bool
35
  */
@@ -81,7 +81,7 @@ class WPSEO_Taxonomy_Social_Fields extends WPSEO_Taxonomy_Fields {
81
  }
82
 
83
  /**
84
- * Returning the fields for the social media tab
85
  *
86
  * @return array
87
  */
@@ -97,7 +97,7 @@ class WPSEO_Taxonomy_Social_Fields extends WPSEO_Taxonomy_Fields {
97
  }
98
 
99
  /**
100
- * Getting array with the social networks
101
  *
102
  * @return array
103
  */
@@ -126,7 +126,7 @@ class WPSEO_Taxonomy_Social_Fields extends WPSEO_Taxonomy_Fields {
126
  }
127
 
128
  /**
129
- * Returns array with the config fields for the social network
130
  *
131
  * @param string $network The name of the social network.
132
  * @param string $label The label for the social network.
@@ -143,7 +143,7 @@ class WPSEO_Taxonomy_Social_Fields extends WPSEO_Taxonomy_Fields {
143
  }
144
 
145
  /**
146
- * Filter the social networks which are disabled in the configuration
147
  *
148
  * @param array $social_networks Array with the social networks that have to be filtered.
149
  *
6
  */
7
 
8
  /**
9
+ * This class parses all the values for the social tab in the Yoast SEO settings metabox.
10
  */
11
  class WPSEO_Taxonomy_Social_Fields extends WPSEO_Taxonomy_Fields {
12
 
18
  protected $networks;
19
 
20
  /**
21
+ * Setting the class properties.
22
  *
23
  * @param stdClass|WP_Term $term The current taxonomy.
24
  */
29
  }
30
 
31
  /**
32
+ * When this method returns false, the social tab in the meta box will be hidden.
33
  *
34
  * @return bool
35
  */
81
  }
82
 
83
  /**
84
+ * Returning the fields for the social media tab.
85
  *
86
  * @return array
87
  */
97
  }
98
 
99
  /**
100
+ * Getting array with the social networks.
101
  *
102
  * @return array
103
  */
126
  }
127
 
128
  /**
129
+ * Returns array with the config fields for the social network.
130
  *
131
  * @param string $network The name of the social network.
132
  * @param string $label The label for the social network.
143
  }
144
 
145
  /**
146
+ * Filter the social networks which are disabled in the configuration.
147
  *
148
  * @param array $social_networks Array with the social networks that have to be filtered.
149
  *
admin/tracking/class-tracking.php CHANGED
@@ -26,7 +26,7 @@ class WPSEO_Tracking {
26
  protected $endpoint = '';
27
 
28
  /**
29
- * Constructor setting the treshhold..
30
  *
31
  * @param string $endpoint The endpoint to send the data to.
32
  * @param int $threshold The limit for the option.
@@ -37,7 +37,7 @@ class WPSEO_Tracking {
37
  }
38
 
39
  /**
40
- * Registers all hooks to WordPress
41
  */
42
  public function send() {
43
 
26
  protected $endpoint = '';
27
 
28
  /**
29
+ * Constructor setting the threshold.
30
  *
31
  * @param string $endpoint The endpoint to send the data to.
32
  * @param int $threshold The limit for the option.
37
  }
38
 
39
  /**
40
+ * Registers all hooks to WordPress.
41
  */
42
  public function send() {
43
 
admin/views/class-view-utils.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class Yoast_View_Utils
10
  */
11
  class Yoast_View_Utils {
12
 
6
  */
7
 
8
  /**
9
+ * Class Yoast_View_Utils.
10
  */
11
  class Yoast_View_Utils {
12
 
admin/views/class-yoast-input-select.php CHANGED
@@ -65,7 +65,7 @@ class Yoast_Input_Select {
65
  }
66
 
67
  /**
68
- * Return the rendered view
69
  *
70
  * @return string
71
  */
@@ -81,7 +81,7 @@ class Yoast_Input_Select {
81
  }
82
 
83
  /**
84
- * Add an attribute to the attributes property
85
  *
86
  * @param string $attribute The name of the attribute to add.
87
  * @param string $value The value of the attribute.
@@ -91,7 +91,7 @@ class Yoast_Input_Select {
91
  }
92
 
93
  /**
94
- * Return the set fields for the select
95
  *
96
  * @return array
97
  */
65
  }
66
 
67
  /**
68
+ * Return the rendered view.
69
  *
70
  * @return string
71
  */
81
  }
82
 
83
  /**
84
+ * Add an attribute to the attributes property.
85
  *
86
  * @param string $attribute The name of the attribute to add.
87
  * @param string $value The value of the attribute.
91
  }
92
 
93
  /**
94
+ * Return the set fields for the select.
95
  *
96
  * @return array
97
  */
admin/views/licenses.php CHANGED
@@ -81,27 +81,25 @@ $extensions = array(
81
 
82
  // Add Yoast WooCommerce SEO when WooCommerce is active.
83
  if ( WPSEO_Utils::is_woocommerce_active() ) {
84
- $extensions = array_merge( $extensions, array(
85
- WPSEO_Addon_Manager::WOOCOMMERCE_SLUG => new WPSEO_Extension(
86
- array(
87
- 'buyUrl' => WPSEO_Shortlinker::get( 'https://yoa.st/zr' ),
88
- 'infoUrl' => WPSEO_Shortlinker::get( 'https://yoa.st/zq' ),
89
- 'title' => 'Yoast WooCommerce SEO',
90
- 'display_title' => 'Make your products stand out in Google',
91
- /* translators: %1$s expands to Yoast SEO */
92
- 'desc' => sprintf( __( 'Seamlessly integrate WooCommerce with %1$s and get extra features!', 'wordpress-seo' ), 'Yoast SEO' ),
93
- 'image' => plugins_url( 'images/extensions-woo.png?v=' . WPSEO_VERSION, WPSEO_FILE ),
94
- 'benefits' => array(
95
- sprintf( __( 'Improve sharing on Facebook and Pinterest', 'wordpress-seo' ) ),
96
- /* translators: %1$s expands to Yoast, %2$s expands to WooCommerce */
97
- sprintf( __( 'Use %1$s breadcrumbs instead of %2$s ones', 'wordpress-seo' ), 'Yoast', 'WooCommerce' ),
98
- /* translators: %1$s expands to Yoast SEO, %2$s expands to WooCommerce */
99
- sprintf( __( 'A seamless integration between %1$s and %2$s', 'wordpress-seo' ), 'Yoast SEO', 'WooCommerce' ),
100
- ),
101
- 'buy_button' => 'WooCommerce SEO',
102
- )
103
- ),
104
- ) );
105
  }
106
 
107
  $addon_manager = new WPSEO_Addon_Manager();
@@ -122,7 +120,7 @@ $new_tab_message = '<span class="screen-reader-text">' . esc_html__( '(O
122
  <h2>
123
  <?php
124
  printf(
125
- /* translators: %1$s expands to Yoast SEO Premium */
126
  esc_html__( '%1$s, take your optimization to the next level!', 'wordpress-seo' ),
127
  '<span class="yoast-heading-highlight">' . $premium_extension->get_title() . '</span>'
128
  );
@@ -157,7 +155,7 @@ $new_tab_message = '<span class="screen-reader-text">' . esc_html__( '(O
157
  <?php if ( $has_valid_premium_subscription ) : ?>
158
  <div class="yoast-button yoast-button--noarrow yoast-button--extension yoast-button--extension-activated"><?php esc_html_e( 'Activated', 'wordpress-seo' ); ?></div>
159
  <a target="_blank" href="<?php WPSEO_Shortlinker::show( 'https://yoa.st/13k' ); ?>"
160
- class="yoast-link--license"><?php
161
  /* translators: %s expands to the extension title */
162
  printf( esc_html( 'Manage your %s subscription on MyYoast', 'wordpress-seo' ), $premium_extension->get_title() );
163
  echo $new_tab_message;
@@ -166,11 +164,11 @@ $new_tab_message = '<span class="screen-reader-text">' . esc_html__( '(O
166
  <?php else : ?>
167
  <div class="yoast-button yoast-button--noarrow yoast-button--extension yoast-button--extension-not-activated"><?php esc_html_e( 'Not activated', 'wordpress-seo' ); ?></div>
168
  <a target="_blank" href="<?php WPSEO_Shortlinker::show( 'https://yoa.st/13i' ); ?>"
169
- class="yoast-link--license">
170
  <?php
171
- /* translators: %s expands to the extension title */
172
- printf( esc_html( 'Activate %s for your site on MyYoast', 'wordpress-seo' ), $premium_extension->get_title() );
173
- echo $new_tab_message;
174
  ?>
175
  </a>
176
  <?php endif; ?>
@@ -178,21 +176,21 @@ $new_tab_message = '<span class="screen-reader-text">' . esc_html__( '(O
178
  <?php else : ?>
179
 
180
  <a target="_blank" href="<?php echo esc_url( $premium_extension->get_buy_url() ); ?>"
181
- class="yoast-button-upsell">
182
  <?php
183
- /* translators: $1$s expands to Yoast SEO Premium */
184
- printf( __( 'Buy %1$s', 'wordpress-seo' ), $premium_extension->get_title() );
185
- echo $new_tab_message;
186
- echo '<span aria-hidden="true" class="yoast-button-upsell__caret"></span>';
187
  ?>
188
  </a>
189
 
190
  <a target="_blank" href="<?php echo esc_url( $premium_extension->get_info_url() ); ?>"
191
- class="yoast-link--more-info">
192
  <?php
193
  printf(
194
  /* translators: Text between %1$s and %2$s will only be shown to screen readers. %3$s expands to the product name. */
195
- __( 'More information %1$sabout %3$s%2$s', 'wordpress-seo' ),
196
  '<span class="screen-reader-text">',
197
  '</span>',
198
  $premium_extension->get_title()
@@ -238,41 +236,41 @@ $new_tab_message = '<span class="screen-reader-text">' . esc_html__( '(O
238
  <?php if ( $addon_manager->has_valid_subscription( $slug ) ) : ?>
239
  <div class="yoast-button yoast-button--noarrow yoast-button--extension yoast-button--extension-activated"><?php esc_html_e( 'Activated', 'wordpress-seo' ); ?></div>
240
  <a target="_blank" href="<?php WPSEO_Shortlinker::show( 'https://yoa.st/13k' ); ?>"
241
- class="yoast-link--license">
242
  <?php
243
- /* translators: %s expands to the extension title */
244
- printf( esc_html( 'Manage your %s subscription on MyYoast', 'wordpress-seo' ), $extension->get_title() );
245
- echo $new_tab_message;
246
  ?>
247
  </a>
248
  <?php else : ?>
249
  <div class="yoast-button yoast-button--noarrow yoast-button--extension yoast-button--extension-not-activated"><?php esc_html_e( 'Not activated', 'wordpress-seo' ); ?></div>
250
  <a target="_blank" href="<?php WPSEO_Shortlinker::show( 'https://yoa.st/13i' ); ?>"
251
- class="yoast-link--license">
252
  <?php
253
- /* translators: %s expands to the extension title */
254
- printf( esc_html( 'Activate %s for your site on MyYoast', 'wordpress-seo' ), $extension->get_title() );
255
- echo $new_tab_message;
256
  ?>
257
  </a>
258
  <?php endif; ?>
259
  <?php else : ?>
260
  <a target="_blank" class="yoast-button-upsell"
261
- href="<?php echo esc_url( $extension->get_buy_url() ); ?>">
262
  <?php
263
- /* translators: %s expands to the product name */
264
- printf( __( 'Buy %s', 'wordpress-seo' ), $extension->get_buy_button() );
265
- echo $new_tab_message;
266
- echo '<span aria-hidden="true" class="yoast-button-upsell__caret"></span>';
267
  ?>
268
  </a>
269
 
270
  <a target="_blank" class="yoast-link--more-info"
271
- href="<?php echo esc_url( $extension->get_info_url() ); ?>">
272
  <?php
273
  printf(
274
- /* translators: Text between %1$s and %2$s will only be shown to screen readers. %3$s expands to the product name. */
275
- __( 'More information %1$sabout %3$s%2$s', 'wordpress-seo' ),
276
  '<span class="screen-reader-text">',
277
  '</span>',
278
  $extension->get_title()
81
 
82
  // Add Yoast WooCommerce SEO when WooCommerce is active.
83
  if ( WPSEO_Utils::is_woocommerce_active() ) {
84
+ $extensions[ WPSEO_Addon_Manager::WOOCOMMERCE_SLUG ] = new WPSEO_Extension(
85
+ array(
86
+ 'buyUrl' => WPSEO_Shortlinker::get( 'https://yoa.st/zr' ),
87
+ 'infoUrl' => WPSEO_Shortlinker::get( 'https://yoa.st/zq' ),
88
+ 'title' => 'Yoast WooCommerce SEO',
89
+ 'display_title' => 'Make your products stand out in Google',
90
+ /* translators: %1$s expands to Yoast SEO */
91
+ 'desc' => sprintf( __( 'Seamlessly integrate WooCommerce with %1$s and get extra features!', 'wordpress-seo' ), 'Yoast SEO' ),
92
+ 'image' => plugins_url( 'images/extensions-woo.png?v=' . WPSEO_VERSION, WPSEO_FILE ),
93
+ 'benefits' => array(
94
+ sprintf( __( 'Improve sharing on Facebook and Pinterest', 'wordpress-seo' ) ),
95
+ /* translators: %1$s expands to Yoast, %2$s expands to WooCommerce */
96
+ sprintf( __( 'Use %1$s breadcrumbs instead of %2$s ones', 'wordpress-seo' ), 'Yoast', 'WooCommerce' ),
97
+ /* translators: %1$s expands to Yoast SEO, %2$s expands to WooCommerce */
98
+ sprintf( __( 'A seamless integration between %1$s and %2$s', 'wordpress-seo' ), 'Yoast SEO', 'WooCommerce' ),
99
+ ),
100
+ 'buy_button' => 'WooCommerce SEO',
101
+ )
102
+ );
 
 
103
  }
104
 
105
  $addon_manager = new WPSEO_Addon_Manager();
120
  <h2>
121
  <?php
122
  printf(
123
+ /* translators: %1$s expands to Yoast SEO Premium */
124
  esc_html__( '%1$s, take your optimization to the next level!', 'wordpress-seo' ),
125
  '<span class="yoast-heading-highlight">' . $premium_extension->get_title() . '</span>'
126
  );
155
  <?php if ( $has_valid_premium_subscription ) : ?>
156
  <div class="yoast-button yoast-button--noarrow yoast-button--extension yoast-button--extension-activated"><?php esc_html_e( 'Activated', 'wordpress-seo' ); ?></div>
157
  <a target="_blank" href="<?php WPSEO_Shortlinker::show( 'https://yoa.st/13k' ); ?>"
158
+ class="yoast-link--license"><?php
159
  /* translators: %s expands to the extension title */
160
  printf( esc_html( 'Manage your %s subscription on MyYoast', 'wordpress-seo' ), $premium_extension->get_title() );
161
  echo $new_tab_message;
164
  <?php else : ?>
165
  <div class="yoast-button yoast-button--noarrow yoast-button--extension yoast-button--extension-not-activated"><?php esc_html_e( 'Not activated', 'wordpress-seo' ); ?></div>
166
  <a target="_blank" href="<?php WPSEO_Shortlinker::show( 'https://yoa.st/13i' ); ?>"
167
+ class="yoast-link--license">
168
  <?php
169
+ /* translators: %s expands to the extension title */
170
+ printf( esc_html( 'Activate %s for your site on MyYoast', 'wordpress-seo' ), $premium_extension->get_title() );
171
+ echo $new_tab_message;
172
  ?>
173
  </a>
174
  <?php endif; ?>
176
  <?php else : ?>
177
 
178
  <a target="_blank" href="<?php echo esc_url( $premium_extension->get_buy_url() ); ?>"
179
+ class="yoast-button-upsell">
180
  <?php
181
+ /* translators: $1$s expands to Yoast SEO Premium */
182
+ printf( esc_html__( 'Buy %1$s', 'wordpress-seo' ), $premium_extension->get_title() );
183
+ echo $new_tab_message;
184
+ echo '<span aria-hidden="true" class="yoast-button-upsell__caret"></span>';
185
  ?>
186
  </a>
187
 
188
  <a target="_blank" href="<?php echo esc_url( $premium_extension->get_info_url() ); ?>"
189
+ class="yoast-link--more-info">
190
  <?php
191
  printf(
192
  /* translators: Text between %1$s and %2$s will only be shown to screen readers. %3$s expands to the product name. */
193
+ esc_html__( 'More information %1$sabout %3$s%2$s', 'wordpress-seo' ),
194
  '<span class="screen-reader-text">',
195
  '</span>',
196
  $premium_extension->get_title()
236
  <?php if ( $addon_manager->has_valid_subscription( $slug ) ) : ?>
237
  <div class="yoast-button yoast-button--noarrow yoast-button--extension yoast-button--extension-activated"><?php esc_html_e( 'Activated', 'wordpress-seo' ); ?></div>
238
  <a target="_blank" href="<?php WPSEO_Shortlinker::show( 'https://yoa.st/13k' ); ?>"
239
+ class="yoast-link--license">
240
  <?php
241
+ /* translators: %s expands to the extension title */
242
+ printf( esc_html( 'Manage your %s subscription on MyYoast', 'wordpress-seo' ), $extension->get_title() );
243
+ echo $new_tab_message;
244
  ?>
245
  </a>
246
  <?php else : ?>
247
  <div class="yoast-button yoast-button--noarrow yoast-button--extension yoast-button--extension-not-activated"><?php esc_html_e( 'Not activated', 'wordpress-seo' ); ?></div>
248
  <a target="_blank" href="<?php WPSEO_Shortlinker::show( 'https://yoa.st/13i' ); ?>"
249
+ class="yoast-link--license">
250
  <?php
251
+ /* translators: %s expands to the extension title */
252
+ printf( esc_html( 'Activate %s for your site on MyYoast', 'wordpress-seo' ), $extension->get_title() );
253
+ echo $new_tab_message;
254
  ?>
255
  </a>
256
  <?php endif; ?>
257
  <?php else : ?>
258
  <a target="_blank" class="yoast-button-upsell"
259
+ href="<?php echo esc_url( $extension->get_buy_url() ); ?>">
260
  <?php
261
+ /* translators: %s expands to the product name */
262
+ printf( esc_html__( 'Buy %s', 'wordpress-seo' ), $extension->get_buy_button() );
263
+ echo $new_tab_message;
264
+ echo '<span aria-hidden="true" class="yoast-button-upsell__caret"></span>';
265
  ?>
266
  </a>
267
 
268
  <a target="_blank" class="yoast-link--more-info"
269
+ href="<?php echo esc_url( $extension->get_info_url() ); ?>">
270
  <?php
271
  printf(
272
+ /* translators: Text between %1$s and %2$s will only be shown to screen readers. %3$s expands to the product name. */
273
+ esc_html__( 'More information %1$sabout %3$s%2$s', 'wordpress-seo' ),
274
  '<span class="screen-reader-text">',
275
  '</span>',
276
  $extension->get_title()
admin/views/paper-collapsible.php CHANGED
@@ -4,7 +4,7 @@
4
  *
5
  * @package WPSEO\Admin\Views
6
  *
7
- * @uses string $paper_id The id of the paper.
8
  * @uses bool $collapsible Whether the collapsible should be rendered.
9
  * @uses array $collapsible_config Configuration for the collapsible.
10
  * @uses string $title The title.
4
  *
5
  * @package WPSEO\Admin\Views
6
  *
7
+ * @uses string $paper_id The ID of the paper.
8
  * @uses bool $collapsible Whether the collapsible should be rendered.
9
  * @uses array $collapsible_config Configuration for the collapsible.
10
  * @uses string $title The title.
admin/views/partial-alerts-template.php CHANGED
@@ -18,7 +18,7 @@
18
 
19
  if ( ! function_exists( '_yoast_display_alerts' ) ) {
20
  /**
21
- * Create the alert HTML with restore/dismiss button
22
  *
23
  * @param array $list List of alerts.
24
  * @param string $status Status of the alerts (active/dismissed).
18
 
19
  if ( ! function_exists( '_yoast_display_alerts' ) ) {
20
  /**
21
+ * Create the alert HTML with restore/dismiss button.
22
  *
23
  * @param array $list List of alerts.
24
  * @param string $status Status of the alerts (active/dismissed).
admin/views/tabs/dashboard/webmaster-tools.php CHANGED
@@ -41,8 +41,8 @@ printf(
41
  /* translators: %1$s expands to a link start tag to the Baidu Webmaster Tools site add page, %2$s is the link closing tag. */
42
  esc_html__( 'Get your Baidu verification code in %1$sBaidu Webmaster Tools%2$s.', 'wordpress-seo' ),
43
  /**
44
- * Get the Baidu Webmaster Tools site add link from this 3rd party article
45
- * http://www.dragonmetrics.com/how-to-optimize-your-site-with-baidu-webmaster-tools/.
46
  * We are unable to create a Baidu Webmaster Tools account due to the Chinese phone number verification.
47
  */
48
  '<a target="_blank" href="' . esc_url( 'https://ziyuan.baidu.com/site/siteadd' ) . '" rel="noopener noreferrer">',
41
  /* translators: %1$s expands to a link start tag to the Baidu Webmaster Tools site add page, %2$s is the link closing tag. */
42
  esc_html__( 'Get your Baidu verification code in %1$sBaidu Webmaster Tools%2$s.', 'wordpress-seo' ),
43
  /**
44
+ * Get the Baidu Webmaster Tools site add link from this 3rd party article.
45
+ * {@link http://www.dragonmetrics.com/how-to-optimize-your-site-with-baidu-webmaster-tools/}
46
  * We are unable to create a Baidu Webmaster Tools account due to the Chinese phone number verification.
47
  */
48
  '<a target="_blank" href="' . esc_url( 'https://ziyuan.baidu.com/site/siteadd' ) . '" rel="noopener noreferrer">',
admin/views/tabs/metas/paper-content/general/knowledge-graph.php CHANGED
@@ -38,7 +38,6 @@ $knowledge_graph_help = new WPSEO_Admin_Help_Panel(
38
  </p>
39
  <?php
40
  $yoast_free_kg_select_options = array(
41
- '' => __( 'Choose whether you\'re an organization or a person', 'wordpress-seo' ),
42
  'company' => __( 'Organization', 'wordpress-seo' ),
43
  'person' => __( 'Person', 'wordpress-seo' ),
44
  );
@@ -50,11 +49,12 @@ $knowledge_graph_help = new WPSEO_Admin_Help_Panel(
50
  $yform->textinput( 'company_name', __( 'Organization name', 'wordpress-seo' ), array( 'autocomplete' => 'organization' ) );
51
  $yform->media_input( 'company_logo', __( 'Organization logo', 'wordpress-seo' ) );
52
  ?>
 
53
  </div>
54
  <div id="knowledge-graph-person">
55
  <h3><?php esc_html_e( 'Personal info', 'wordpress-seo' ); ?></h3>
56
  <?php
57
- echo '<div id="person-selector"></div>';
58
  $yform->hidden( 'company_or_person_user_id', 'person_id' );
59
  ?>
60
  </div>
38
  </p>
39
  <?php
40
  $yoast_free_kg_select_options = array(
 
41
  'company' => __( 'Organization', 'wordpress-seo' ),
42
  'person' => __( 'Person', 'wordpress-seo' ),
43
  );
49
  $yform->textinput( 'company_name', __( 'Organization name', 'wordpress-seo' ), array( 'autocomplete' => 'organization' ) );
50
  $yform->media_input( 'company_logo', __( 'Organization logo', 'wordpress-seo' ) );
51
  ?>
52
+ <div id="wpseo-local-seo-upsell"></div>
53
  </div>
54
  <div id="knowledge-graph-person">
55
  <h3><?php esc_html_e( 'Personal info', 'wordpress-seo' ); ?></h3>
56
  <?php
57
+ echo '<div id="wpseo-person-selector"></div>';
58
  $yform->hidden( 'company_or_person_user_id', 'person_id' );
59
  ?>
60
  </div>
admin/views/tabs/metas/paper-content/post-type-content.php CHANGED
@@ -65,7 +65,7 @@ if ( WPSEO_Post_Type::has_archive( $wpseo_post_type ) ) {
65
  }
66
 
67
  /**
68
- * Allow adding a custom checkboxes to the admin meta page - Post Types tab
69
  *
70
  * @api WPSEO_Admin_Pages $yform The WPSEO_Admin_Pages object
71
  * @api String $name The post type name
65
  }
66
 
67
  /**
68
+ * Allow adding a custom checkboxes to the admin meta page - Post Types tab.
69
  *
70
  * @api WPSEO_Admin_Pages $yform The WPSEO_Admin_Pages object
71
  * @api String $name The post type name
admin/views/tabs/metas/paper-content/taxonomy-content.php CHANGED
@@ -53,7 +53,7 @@ if ( $wpseo_taxonomy->name !== 'post_format' ) {
53
  }
54
 
55
  /**
56
- * Allow adding custom checkboxes to the admin meta page - Taxonomies tab
57
  *
58
  * @api WPSEO_Admin_Pages $yform The WPSEO_Admin_Pages object
59
  * @api Object $tax The taxonomy
53
  }
54
 
55
  /**
56
+ * Allow adding custom checkboxes to the admin meta page - Taxonomies tab.
57
  *
58
  * @api WPSEO_Admin_Pages $yform The WPSEO_Admin_Pages object
59
  * @api Object $tax The taxonomy
admin/views/tool-import-export.php CHANGED
@@ -103,7 +103,7 @@ $tabs = array(
103
 
104
  <?php
105
  /**
106
- * Allow adding a custom import tab header
107
  */
108
  do_action( 'wpseo_import_tab_header' );
109
  ?>
@@ -138,6 +138,6 @@ foreach ( $tabs as $identifier => $tab ) {
138
  }
139
 
140
  /**
141
- * Allow adding a custom import tab
142
  */
143
  do_action( 'wpseo_import_tab_content' );
103
 
104
  <?php
105
  /**
106
+ * Allow adding a custom import tab header.
107
  */
108
  do_action( 'wpseo_import_tab_header' );
109
  ?>
138
  }
139
 
140
  /**
141
+ * Allow adding a custom import tab.
142
  */
143
  do_action( 'wpseo_import_tab_content' );
admin/watchers/class-slug-change-watcher.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Slug_Change_Watcher
10
  */
11
  class WPSEO_Slug_Change_Watcher implements WPSEO_WordPress_Integration {
12
 
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Slug_Change_Watcher.
10
  */
11
  class WPSEO_Slug_Change_Watcher implements WPSEO_WordPress_Integration {
12
 
css/dist/{admin-global-1100-rtl.min.css → admin-global-1110-rtl.min.css} RENAMED
File without changes
css/dist/{admin-global-1100.min.css → admin-global-1110.min.css} RENAMED
File without changes
css/dist/{adminbar-1100-rtl.min.css → adminbar-1110-rtl.min.css} RENAMED
File without changes
css/dist/{adminbar-1100.min.css → adminbar-1110.min.css} RENAMED
File without changes
css/dist/alerts-1100-rtl.min.css DELETED
@@ -1 +0,0 @@
1
- .screen-reader-text{position:absolute!important;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);width:1px;height:1px;border:0;padding:0;overflow:hidden;word-wrap:normal!important}body{margin:0;padding:0}.yoast-wizard-body{box-sizing:border-box;width:80%;max-width:60em;margin:1rem auto 4rem}@media screen and (max-width:768px){.yoast-wizard-body{width:auto;margin:0}}.yoast-wizard__logo{margin:0 auto;display:block}.yoast-wizard{text-align:right;min-height:20px;background:#fff;padding:2em;box-sizing:border-box;width:100%}@media screen and (max-width:768px){.yoast-wizard{padding:1em 1em 2em}}.yoast-wizard--header{text-align:center}.yoast-wizard--header--page-title{color:#a4286a;margin:0 0 -16px;font-size:1.25em;letter-spacing:.03em;line-height:2.5;font-weight:400;padding:0 8px}@media screen and (max-width:768px){.yoast-wizard--header--page-title{font-size:1.5em;line-height:1.25}}.yoast-wizard--navigation{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}.yoast-wizard--button{margin-top:1em;background:0 0;color:#0073aa;border:none;padding:0;font:inherit;border-bottom:1px solid #0073aa;cursor:pointer}.yoast-wizard--step__inactive div{pointer-events:none}@media screen and (max-width:768px){.yoast-wizard--step__active{width:38px;overflow:hidden}.yoast-wizard--step__active div{display:inline-block!important;vertical-align:middle}.yoast-wizard--step__active div>span>span{display:block!important;margin-right:-7px;padding-left:99px!important}.yoast-wizard--step__inactive{display:none!important}}.yoast-wizard--step--container:focus{outline:0}.yoast-wizard--step--container h1{color:#a4286a;margin:0;font-size:2.25em;letter-spacing:.03em;line-height:3.68rem;font-weight:100}@media screen and (max-width:768px){.yoast-wizard--step--container h1{font-size:2em;line-height:1.25}}.yoast-wizard--step--container h2{color:#a4286a;font-size:1.375em;font-weight:100}.yoast-wizard--stepper{width:100%;margin:auto}.yoast-wizard-overlay{z-index:10;opacity:.2;background-color:#000;position:absolute;top:0;right:0;height:100%;color:#fff;text-align:center;width:100%}.yoast-wizard-overlay-loader{position:relative}.yoast-wizard-container{border:1px solid #ccc;text-align:right;min-height:20px;position:relative;box-shadow:rgba(0,0,0,.15) 0 3px 10px,rgba(0,0,0,.2) 0 3px 10px}.yoast-wizard-container--no-navigation{margin-top:40px}.yoast-wizard-container--no-navigation .yoast-wizard{padding-top:3em}@media screen and (max-width:768px){.yoast-wizard-container{box-shadow:none}}.yoast-wizard-container fieldset{border:0;margin:1em 0}.yoast-wizard-text-input{font-size:14px;padding-bottom:.5em}.yoast-wizard-text-input-label{cursor:pointer;display:block;margin:.5em 0 0;font-weight:700;font-size:14px}.yoast-wizard-text-input [type=text]{width:100%;max-width:450px;box-sizing:border-box}.yoast-video-container-max-width,.yoast-wizard-content-container{max-width:560px}.yoast-wizard-field-description{font-weight:700}.yoast-wizard input{line-height:140%;font-size:14px;margin:.5em 0;padding:5px}.yoast-wizard label{cursor:pointer}.yoast-wizard input[type=radio]{margin:.3em 0 .3em .7em;vertical-align:middle}.yoast-wizard-input__explanation{color:#555;margin-top:0;font-style:italic}.yoast-wizard-input-radio{font-size:14px}.yoast-wizard-input-radio-option label{padding-top:2px}.yoast-wizard-input-radio-separator{padding:0}.yoast-wizard-input-radio-separator input{position:absolute;right:-9999em;width:1px;height:1px}.yoast-wizard-input-radio-separator input+label{float:right;width:30px!important;margin:0 0 .5em 5px!important;padding:9px 6px;border:1px solid #ccc;font-family:Arial,Helvetica,sans-serif!important;font-size:18px!important;line-height:24px;text-align:center;cursor:pointer}.yoast-wizard-input-radio-separator input:checked+label{border:3px solid #a4286a;background-color:#fff;padding:7px 4px}.yoast-wizard-input-radio-separator input:focus+label{outline:#5b9dd9 solid 2px}.yoast-video-container{position:relative;padding-bottom:56.25%;height:0;overflow:hidden}.yoast-video-container iframe{position:absolute;top:0;right:0;width:100%;height:100%}.yoast-wizard-notice__error{margin-bottom:15px;padding:12px;border-right:4px solid #dc3232;background:#fff;box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}.yoast-wizard-content-container.yoast-wizard-content-container__is-full-width{max-width:none}@keyframes heartbeat{0%{transform:scale(.7);opacity:.4}80%{opacity:1}100%{transform:scale(.95);opacity:1}}.yoast-loader{animation:heartbeat 1.15s infinite;animation-direction:alternate;animation-timing-function:cubic-bezier(.96,.02,.63,.86)}.yoast-svg-icon-loading-spinner{animation:rotator 1.4s linear infinite}@keyframes rotator{0%{transform:rotate(0)}100%{transform:rotate(-270deg)}}.path{stroke:#64a60a;stroke-dasharray:187;stroke-dashoffset:0;-ms-transform-origin:center;transform-origin:center;animation:dash 1.4s ease-in-out infinite}@keyframes dash{0%{stroke-dashoffset:187}50%{stroke-dashoffset:46.75;transform:rotate(-135deg)}100%{stroke-dashoffset:187;transform:rotate(-450deg)}}.yoast-alert{padding:0 12px;border-right:4px solid #fff;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.2)}.yoast-alerts .yoast-alert-holder{margin-bottom:.8em}.yoast-alerts .yoast-alert{width:100%}.yoast-container__alert .yoast-alert{border-right-color:#dc3232}#yoast-alerts-dismissed .yoast-alert{border-right-color:#d93f69}.yoast-container__warning .yoast-alert{border-right-color:#5d237a}#yoast-warnings-dismissed .yoast-alert{border-right-color:#0075b3}.yoast-container{position:relative;max-width:1280px;margin:20px 0 1px;padding:20px 20px 0;border:1px solid #e5e5e5;background-color:#fdfdfd;box-shadow:0 1px 1px rgba(0,0,0,.04)}.yoast-alerts>h2:first-child{margin:0;padding:9px 0 4px;font-size:23px;font-weight:400;line-height:29px}.yoast-alerts .yoast-container h3{margin:-20px -20px 0;padding:1em;border-bottom:1px solid #ccc;background-color:#fdfdfd;font-size:1.4em}h3 .dashicons-warning{color:#dc3232}.yoast-container .container{max-width:980px}.yoast-container .yoast-alert-holder{display:-ms-flexbox;display:flex}.dismiss .dashicons,.restore .dashicons{font-size:24px;width:24px;height:24px}.yoast-bottom-spacing{margin-bottom:20px}.yoast-alerts .button.dismiss,.yoast-alerts .button.restore{-ms-flex:0 0 45px;flex:0 0 45px;width:45px;height:45px;margin-right:10px;line-height:inherit;padding:0;outline:0;cursor:pointer}.yoast-alerts .button.dismiss:focus,.yoast-alerts .button.dismiss:hover,.yoast-alerts .button.restore:focus,.yoast-alerts .button.restore:hover{background:0 0}.yoast-container .separator{margin-top:1em;margin-bottom:1em;border-top:1px solid #ddd}.yoast-container .dashicons-yes{color:#77b227}.yoast-container__warning .dashicons-flag{color:#5d237a}.yoast-container-disabled{display:table-cell;position:absolute;top:0;left:0;bottom:0;right:0;border-radius:4px;background-color:rgba(232,232,232,.7)}.yoast-no-issues{padding:1em 16px 1em 1em;color:#666}.yoast-muted-title{overflow:hidden;font-weight:600;font-style:italic}.yoast-muted-title:after{content:"";display:inline-block;height:.5em;vertical-align:bottom;width:100%;margin-left:-100%;margin-right:10px;border-top:1px solid #ddd}.yoast-alerts .yoast-container__configuration-wizard{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;box-shadow:0 1px 2px rgba(0,0,0,.2);background-color:#fff;min-height:0;padding-bottom:20px;margin-bottom:15px}.yoast-alerts .yoast-container__configuration-wizard--content{-ms-flex:1 1 auto;flex:1 1 auto;margin:12px;padding:0}.yoast-alerts .yoast-container__configuration-wizard--content h3{border-bottom:0;font-size:1.4em;line-height:1;margin:0 0 4px;padding:0;background:0 0}.yoast-alerts .yoast-container__configuration-wizard--content p{margin:1em 0 0}.yoast-alerts .yoast-container__configuration-wizard--content p:last-child{margin:0}.yoast-alerts .yoast-container__configuration-wizard--dismiss{text-align:center}@media screen and (max-width:768px){.yoast-alerts .yoast-container__configuration-wizard img{display:none}.yoast-alerts .yoast-container__configuration-wizard--content{display:block;position:relative;padding:16px}.yoast-alerts .yoast-container__configuration-wizard--dismiss{width:40px;position:absolute;top:5px;left:5px;margin:0}}.yoast-alerts .yoast-container__configuration-wizard--dismiss .dashicons{text-decoration:none;margin-top:11px}
 
css/dist/alerts-1100.min.css DELETED
@@ -1 +0,0 @@
1
- .screen-reader-text{position:absolute!important;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);width:1px;height:1px;border:0;padding:0;overflow:hidden;word-wrap:normal!important}body{margin:0;padding:0}.yoast-wizard-body{box-sizing:border-box;width:80%;max-width:60em;margin:1rem auto 4rem}@media screen and (max-width:768px){.yoast-wizard-body{width:auto;margin:0}}.yoast-wizard__logo{margin:0 auto;display:block}.yoast-wizard{text-align:left;min-height:20px;background:#fff;padding:2em;box-sizing:border-box;width:100%}@media screen and (max-width:768px){.yoast-wizard{padding:1em 1em 2em}}.yoast-wizard--header{text-align:center}.yoast-wizard--header--page-title{color:#a4286a;margin:0 0 -16px;font-size:1.25em;letter-spacing:.03em;line-height:2.5;font-weight:400;padding:0 8px}@media screen and (max-width:768px){.yoast-wizard--header--page-title{font-size:1.5em;line-height:1.25}}.yoast-wizard--navigation{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}.yoast-wizard--button{margin-top:1em;background:0 0;color:#0073aa;border:none;padding:0;font:inherit;border-bottom:1px solid #0073aa;cursor:pointer}.yoast-wizard--step__inactive div{pointer-events:none}@media screen and (max-width:768px){.yoast-wizard--step__active{width:38px;overflow:hidden}.yoast-wizard--step__active div{display:inline-block!important;vertical-align:middle}.yoast-wizard--step__active div>span>span{display:block!important;margin-left:-7px;padding-right:99px!important}.yoast-wizard--step__inactive{display:none!important}}.yoast-wizard--step--container:focus{outline:0}.yoast-wizard--step--container h1{color:#a4286a;margin:0;font-size:2.25em;letter-spacing:.03em;line-height:3.68rem;font-weight:100}@media screen and (max-width:768px){.yoast-wizard--step--container h1{font-size:2em;line-height:1.25}}.yoast-wizard--step--container h2{color:#a4286a;font-size:1.375em;font-weight:100}.yoast-wizard--stepper{width:100%;margin:auto}.yoast-wizard-overlay{z-index:10;opacity:.2;background-color:#000;position:absolute;top:0;left:0;height:100%;color:#fff;text-align:center;width:100%}.yoast-wizard-overlay-loader{position:relative}.yoast-wizard-container{border:1px solid #ccc;text-align:left;min-height:20px;position:relative;box-shadow:rgba(0,0,0,.15) 0 3px 10px,rgba(0,0,0,.2) 0 3px 10px}.yoast-wizard-container--no-navigation{margin-top:40px}.yoast-wizard-container--no-navigation .yoast-wizard{padding-top:3em}@media screen and (max-width:768px){.yoast-wizard-container{box-shadow:none}}.yoast-wizard-container fieldset{border:0;margin:1em 0}.yoast-wizard-text-input{font-size:14px;padding-bottom:.5em}.yoast-wizard-text-input-label{cursor:pointer;display:block;margin:.5em 0 0;font-weight:700;font-size:14px}.yoast-wizard-text-input [type=text]{width:100%;max-width:450px;box-sizing:border-box}.yoast-video-container-max-width,.yoast-wizard-content-container{max-width:560px}.yoast-wizard-field-description{font-weight:700}.yoast-wizard input{line-height:140%;font-size:14px;margin:.5em 0;padding:5px}.yoast-wizard label{cursor:pointer}.yoast-wizard input[type=radio]{margin:.3em .7em .3em 0;vertical-align:middle}.yoast-wizard-input__explanation{color:#555;margin-top:0;font-style:italic}.yoast-wizard-input-radio{font-size:14px}.yoast-wizard-input-radio-option label{padding-top:2px}.yoast-wizard-input-radio-separator{padding:0}.yoast-wizard-input-radio-separator input{position:absolute;left:-9999em;width:1px;height:1px}.yoast-wizard-input-radio-separator input+label{float:left;width:30px!important;margin:0 5px .5em 0!important;padding:9px 6px;border:1px solid #ccc;font-family:Arial,Helvetica,sans-serif!important;font-size:18px!important;line-height:24px;text-align:center;cursor:pointer}.yoast-wizard-input-radio-separator input:checked+label{border:3px solid #a4286a;background-color:#fff;padding:7px 4px}.yoast-wizard-input-radio-separator input:focus+label{outline:#5b9dd9 solid 2px}.yoast-video-container{position:relative;padding-bottom:56.25%;height:0;overflow:hidden}.yoast-video-container iframe{position:absolute;top:0;left:0;width:100%;height:100%}.yoast-wizard-notice__error{margin-bottom:15px;padding:12px;border-left:4px solid #dc3232;background:#fff;box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}.yoast-wizard-content-container.yoast-wizard-content-container__is-full-width{max-width:none}@keyframes heartbeat{0%{transform:scale(.7);opacity:.4}80%{opacity:1}100%{transform:scale(.95);opacity:1}}.yoast-loader{animation:heartbeat 1.15s infinite;animation-direction:alternate;animation-timing-function:cubic-bezier(.96,.02,.63,.86)}.yoast-svg-icon-loading-spinner{animation:rotator 1.4s linear infinite}@keyframes rotator{0%{transform:rotate(0)}100%{transform:rotate(270deg)}}.path{stroke:#64a60a;stroke-dasharray:187;stroke-dashoffset:0;-ms-transform-origin:center;transform-origin:center;animation:dash 1.4s ease-in-out infinite}@keyframes dash{0%{stroke-dashoffset:187}50%{stroke-dashoffset:46.75;transform:rotate(135deg)}100%{stroke-dashoffset:187;transform:rotate(450deg)}}.yoast-alert{padding:0 12px;border-left:4px solid #fff;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.2)}.yoast-alerts .yoast-alert-holder{margin-bottom:.8em}.yoast-alerts .yoast-alert{width:100%}.yoast-container__alert .yoast-alert{border-left-color:#dc3232}#yoast-alerts-dismissed .yoast-alert{border-left-color:#d93f69}.yoast-container__warning .yoast-alert{border-left-color:#5d237a}#yoast-warnings-dismissed .yoast-alert{border-left-color:#0075b3}.yoast-container{position:relative;max-width:1280px;margin:20px 0 1px;padding:20px 20px 0;border:1px solid #e5e5e5;background-color:#fdfdfd;box-shadow:0 1px 1px rgba(0,0,0,.04)}.yoast-alerts>h2:first-child{margin:0;padding:9px 0 4px;font-size:23px;font-weight:400;line-height:29px}.yoast-alerts .yoast-container h3{margin:-20px -20px 0;padding:1em;border-bottom:1px solid #ccc;background-color:#fdfdfd;font-size:1.4em}h3 .dashicons-warning{color:#dc3232}.yoast-container .container{max-width:980px}.yoast-container .yoast-alert-holder{display:-ms-flexbox;display:flex}.dismiss .dashicons,.restore .dashicons{font-size:24px;width:24px;height:24px}.yoast-bottom-spacing{margin-bottom:20px}.yoast-alerts .button.dismiss,.yoast-alerts .button.restore{-ms-flex:0 0 45px;flex:0 0 45px;width:45px;height:45px;margin-left:10px;line-height:inherit;padding:0;outline:0;cursor:pointer}.yoast-alerts .button.dismiss:focus,.yoast-alerts .button.dismiss:hover,.yoast-alerts .button.restore:focus,.yoast-alerts .button.restore:hover{background:0 0}.yoast-container .separator{margin-top:1em;margin-bottom:1em;border-top:1px solid #ddd}.yoast-container .dashicons-yes{color:#77b227}.yoast-container__warning .dashicons-flag{color:#5d237a}.yoast-container-disabled{display:table-cell;position:absolute;top:0;right:0;bottom:0;left:0;border-radius:4px;background-color:rgba(232,232,232,.7)}.yoast-no-issues{padding:1em 1em 1em 16px;color:#666}.yoast-muted-title{overflow:hidden;font-weight:600;font-style:italic}.yoast-muted-title:after{content:"";display:inline-block;height:.5em;vertical-align:bottom;width:100%;margin-right:-100%;margin-left:10px;border-top:1px solid #ddd}.yoast-alerts .yoast-container__configuration-wizard{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;box-shadow:0 1px 2px rgba(0,0,0,.2);background-color:#fff;min-height:0;padding-bottom:20px;margin-bottom:15px}.yoast-alerts .yoast-container__configuration-wizard--content{-ms-flex:1 1 auto;flex:1 1 auto;margin:12px;padding:0}.yoast-alerts .yoast-container__configuration-wizard--content h3{border-bottom:0;font-size:1.4em;line-height:1;margin:0 0 4px;padding:0;background:0 0}.yoast-alerts .yoast-container__configuration-wizard--content p{margin:1em 0 0}.yoast-alerts .yoast-container__configuration-wizard--content p:last-child{margin:0}.yoast-alerts .yoast-container__configuration-wizard--dismiss{text-align:center}@media screen and (max-width:768px){.yoast-alerts .yoast-container__configuration-wizard img{display:none}.yoast-alerts .yoast-container__configuration-wizard--content{display:block;position:relative;padding:16px}.yoast-alerts .yoast-container__configuration-wizard--dismiss{width:40px;position:absolute;top:5px;right:5px;margin:0}}.yoast-alerts .yoast-container__configuration-wizard--dismiss .dashicons{text-decoration:none;margin-top:11px}
 
css/dist/alerts-1110-rtl.min.css ADDED
@@ -0,0 +1 @@
 
1
+ .screen-reader-text{position:absolute!important;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);width:1px;height:1px;border:0;padding:0;overflow:hidden;word-wrap:normal!important}.yoast-alert{padding:0 12px;border-right:4px solid #fff;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.2)}.yoast-alerts .yoast-alert-holder{margin-bottom:.8em}.yoast-alerts .yoast-alert{width:100%}.yoast-container__alert .yoast-alert{border-right-color:#dc3232}#yoast-alerts-dismissed .yoast-alert{border-right-color:#d93f69}.yoast-container__warning .yoast-alert{border-right-color:#5d237a}#yoast-warnings-dismissed .yoast-alert{border-right-color:#0075b3}.yoast-container{position:relative;max-width:1280px;margin:20px 0 1px;padding:20px 20px 0;border:1px solid #e5e5e5;background-color:#fdfdfd;box-shadow:0 1px 1px rgba(0,0,0,.04)}.yoast-alerts>h2:first-child{margin:0;padding:9px 0 4px;font-size:23px;font-weight:400;line-height:29px}.yoast-alerts .yoast-container h3{margin:-20px -20px 0;padding:1em;border-bottom:1px solid #ccc;background-color:#fdfdfd;font-size:1.4em}h3 .dashicons-warning{color:#dc3232}.yoast-container .container{max-width:980px}.yoast-container .yoast-alert-holder{display:-ms-flexbox;display:flex}.dismiss .dashicons,.restore .dashicons{font-size:24px;width:24px;height:24px}.yoast-bottom-spacing{margin-bottom:20px}.yoast-alerts .button.dismiss,.yoast-alerts .button.restore{-ms-flex:0 0 45px;flex:0 0 45px;width:45px;height:45px;margin-right:10px;line-height:inherit;padding:0;outline:0;cursor:pointer}.yoast-alerts .button.dismiss:focus,.yoast-alerts .button.dismiss:hover,.yoast-alerts .button.restore:focus,.yoast-alerts .button.restore:hover{background:0 0}.yoast-container .separator{margin-top:1em;margin-bottom:1em;border-top:1px solid #ddd}.yoast-container .dashicons-yes{color:#77b227}.yoast-container__warning .dashicons-flag{color:#5d237a}.yoast-container-disabled{display:table-cell;position:absolute;top:0;left:0;bottom:0;right:0;border-radius:4px;background-color:rgba(232,232,232,.7)}.yoast-no-issues{padding:1em 16px 1em 1em;color:#666}.yoast-muted-title{overflow:hidden;font-weight:600;font-style:italic}.yoast-muted-title:after{content:"";display:inline-block;height:.5em;vertical-align:bottom;width:100%;margin-left:-100%;margin-right:10px;border-top:1px solid #ddd}.yoast-alerts .yoast-container__configuration-wizard{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;box-shadow:0 1px 2px rgba(0,0,0,.2);background-color:#fff;min-height:0;padding-bottom:20px;margin-bottom:15px}.yoast-alerts .yoast-container__configuration-wizard--content{-ms-flex:1 1 auto;flex:1 1 auto;margin:12px;padding:0}.yoast-alerts .yoast-container__configuration-wizard--content h3{border-bottom:0;font-size:1.4em;line-height:1;margin:0 0 4px;padding:0;background:0 0}.yoast-alerts .yoast-container__configuration-wizard--content p{margin:1em 0 0}.yoast-alerts .yoast-container__configuration-wizard--content p:last-child{margin:0}.yoast-alerts .yoast-container__configuration-wizard--dismiss{text-align:center}@media screen and (max-width:768px){.yoast-alerts .yoast-container__configuration-wizard img{display:none}.yoast-alerts .yoast-container__configuration-wizard--content{display:block;position:relative;padding:16px}.yoast-alerts .yoast-container__configuration-wizard--dismiss{width:40px;position:absolute;top:5px;left:5px;margin:0}}.yoast-alerts .yoast-container__configuration-wizard--dismiss .dashicons{text-decoration:none;margin-top:11px}
css/dist/alerts-1110.min.css ADDED
@@ -0,0 +1 @@
 
1
+ .screen-reader-text{position:absolute!important;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);width:1px;height:1px;border:0;padding:0;overflow:hidden;word-wrap:normal!important}.yoast-alert{padding:0 12px;border-left:4px solid #fff;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.2)}.yoast-alerts .yoast-alert-holder{margin-bottom:.8em}.yoast-alerts .yoast-alert{width:100%}.yoast-container__alert .yoast-alert{border-left-color:#dc3232}#yoast-alerts-dismissed .yoast-alert{border-left-color:#d93f69}.yoast-container__warning .yoast-alert{border-left-color:#5d237a}#yoast-warnings-dismissed .yoast-alert{border-left-color:#0075b3}.yoast-container{position:relative;max-width:1280px;margin:20px 0 1px;padding:20px 20px 0;border:1px solid #e5e5e5;background-color:#fdfdfd;box-shadow:0 1px 1px rgba(0,0,0,.04)}.yoast-alerts>h2:first-child{margin:0;padding:9px 0 4px;font-size:23px;font-weight:400;line-height:29px}.yoast-alerts .yoast-container h3{margin:-20px -20px 0;padding:1em;border-bottom:1px solid #ccc;background-color:#fdfdfd;font-size:1.4em}h3 .dashicons-warning{color:#dc3232}.yoast-container .container{max-width:980px}.yoast-container .yoast-alert-holder{display:-ms-flexbox;display:flex}.dismiss .dashicons,.restore .dashicons{font-size:24px;width:24px;height:24px}.yoast-bottom-spacing{margin-bottom:20px}.yoast-alerts .button.dismiss,.yoast-alerts .button.restore{-ms-flex:0 0 45px;flex:0 0 45px;width:45px;height:45px;margin-left:10px;line-height:inherit;padding:0;outline:0;cursor:pointer}.yoast-alerts .button.dismiss:focus,.yoast-alerts .button.dismiss:hover,.yoast-alerts .button.restore:focus,.yoast-alerts .button.restore:hover{background:0 0}.yoast-container .separator{margin-top:1em;margin-bottom:1em;border-top:1px solid #ddd}.yoast-container .dashicons-yes{color:#77b227}.yoast-container__warning .dashicons-flag{color:#5d237a}.yoast-container-disabled{display:table-cell;position:absolute;top:0;right:0;bottom:0;left:0;border-radius:4px;background-color:rgba(232,232,232,.7)}.yoast-no-issues{padding:1em 1em 1em 16px;color:#666}.yoast-muted-title{overflow:hidden;font-weight:600;font-style:italic}.yoast-muted-title:after{content:"";display:inline-block;height:.5em;vertical-align:bottom;width:100%;margin-right:-100%;margin-left:10px;border-top:1px solid #ddd}.yoast-alerts .yoast-container__configuration-wizard{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;box-shadow:0 1px 2px rgba(0,0,0,.2);background-color:#fff;min-height:0;padding-bottom:20px;margin-bottom:15px}.yoast-alerts .yoast-container__configuration-wizard--content{-ms-flex:1 1 auto;flex:1 1 auto;margin:12px;padding:0}.yoast-alerts .yoast-container__configuration-wizard--content h3{border-bottom:0;font-size:1.4em;line-height:1;margin:0 0 4px;padding:0;background:0 0}.yoast-alerts .yoast-container__configuration-wizard--content p{margin:1em 0 0}.yoast-alerts .yoast-container__configuration-wizard--content p:last-child{margin:0}.yoast-alerts .yoast-container__configuration-wizard--dismiss{text-align:center}@media screen and (max-width:768px){.yoast-alerts .yoast-container__configuration-wizard img{display:none}.yoast-alerts .yoast-container__configuration-wizard--content{display:block;position:relative;padding:16px}.yoast-alerts .yoast-container__configuration-wizard--dismiss{width:40px;position:absolute;top:5px;right:5px;margin:0}}.yoast-alerts .yoast-container__configuration-wizard--dismiss .dashicons{text-decoration:none;margin-top:11px}
css/dist/{dashboard-1100-rtl.min.css → dashboard-1110-rtl.min.css} RENAMED
File without changes
css/dist/{dashboard-1100.min.css → dashboard-1110.min.css} RENAMED
File without changes
css/dist/{edit-page-1100-rtl.min.css → edit-page-1110-rtl.min.css} RENAMED
File without changes
css/dist/{edit-page-1100.min.css → edit-page-1110.min.css} RENAMED
File without changes
css/dist/{featured-image-1100-rtl.min.css → featured-image-1110-rtl.min.css} RENAMED
File without changes
css/dist/{featured-image-1100.min.css → featured-image-1110.min.css} RENAMED
File without changes
css/dist/{filter-explanation-1100-rtl.min.css → filter-explanation-1110-rtl.min.css} RENAMED
File without changes
css/dist/{filter-explanation-1100.min.css → filter-explanation-1110.min.css} RENAMED
File without changes
css/dist/{inside-editor-1100-rtl.min.css → inside-editor-1110-rtl.min.css} RENAMED
File without changes
css/dist/{inside-editor-1100.min.css → inside-editor-1110.min.css} RENAMED
File without changes
css/dist/metabox-1100-rtl.min.css DELETED
@@ -1 +0,0 @@
1
- .yoast-tooltip{position:relative}button.yoast-tooltip{overflow:visible}.yoast-tooltip::after{display:none;position:absolute;z-index:1000000;padding:6px 8px 5px;border-radius:3px;opacity:0;color:#fff;background:rgba(0,0,0,.8);text-shadow:none;font:normal normal 11px/1.45454545 Helvetica,arial,nimbussansl,liberationsans,freesans,clean,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";text-align:center;white-space:pre;text-decoration:none;letter-spacing:normal;text-transform:none;word-wrap:break-word;content:attr(aria-label);pointer-events:none;-webkit-font-smoothing:subpixel-antialiased}.yoast-tooltip-alt::after{content:attr(data-label)}.yoast-tooltip::before{display:none;position:absolute;z-index:1000001;width:0;height:0;border:5px solid transparent;opacity:0;color:rgba(0,0,0,.8);content:"\00a0";pointer-events:none}@keyframes yoast-tooltip-appear{from{opacity:0}to{opacity:1}}.yoast-tooltip:active::after,.yoast-tooltip:active::before,.yoast-tooltip:focus::after,.yoast-tooltip:focus::before,.yoast-tooltip:hover::after,.yoast-tooltip:hover::before{display:inline-block;text-decoration:none;animation-name:yoast-tooltip-appear;animation-duration:.1s;animation-timing-function:ease-in;animation-delay:.4s;animation-fill-mode:forwards}.yoast-tooltip-no-delay:active::after,.yoast-tooltip-no-delay:active::before,.yoast-tooltip-no-delay:focus::after,.yoast-tooltip-no-delay:focus::before,.yoast-tooltip-no-delay:hover::after,.yoast-tooltip-no-delay:hover::before{opacity:1;animation:none}.yoast-tooltip-multiline:active::after,.yoast-tooltip-multiline:focus::after,.yoast-tooltip-multiline:hover::after{display:table-cell}.yoast-tooltip-s::after,.yoast-tooltip-se::after,.yoast-tooltip-sw::after{top:100%;left:50%;margin-top:5px}.yoast-tooltip-s::before,.yoast-tooltip-se::before,.yoast-tooltip-sw::before{top:auto;left:50%;bottom:-5px;margin-left:-5px;border-bottom-color:rgba(0,0,0,.8)}.yoast-tooltip-se::after{left:auto;right:50%;margin-right:-15px}.yoast-tooltip-sw::after{margin-left:-15px}.yoast-tooltip-n::after,.yoast-tooltip-ne::after,.yoast-tooltip-nw::after{left:50%;bottom:100%;margin-bottom:5px}.yoast-tooltip-n::before,.yoast-tooltip-ne::before,.yoast-tooltip-nw::before{top:-5px;left:50%;bottom:auto;margin-left:-5px;border-top-color:rgba(0,0,0,.8)}.yoast-tooltip-ne::after{left:auto;right:50%;margin-right:-15px}.yoast-tooltip-nw::after{margin-left:-15px}.yoast-tooltip-n::after,.yoast-tooltip-s::after{-ms-transform:translateX(-50%);transform:translateX(-50%)}.yoast-tooltip-w::after{left:100%;bottom:50%;margin-left:5px;-ms-transform:translateY(50%);transform:translateY(50%)}.yoast-tooltip-w::before{top:50%;bottom:50%;right:-5px;margin-top:-5px;border-right-color:rgba(0,0,0,.8)}.yoast-tooltip-e::after{bottom:50%;right:100%;margin-right:5px;-ms-transform:translateY(50%);transform:translateY(50%)}.yoast-tooltip-e::before{top:50%;left:-5px;bottom:50%;margin-top:-5px;border-left-color:rgba(0,0,0,.8)}.yoast-tooltip-multiline::after{width:250px;width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:250px;border-collapse:separate;white-space:pre-line;word-wrap:normal;word-break:break-word}.yoast-tooltip-multiline.yoast-tooltip-n::after,.yoast-tooltip-multiline.yoast-tooltip-s::after{left:auto;right:50%;-ms-transform:translateX(50%);transform:translateX(50%)}.yoast-tooltip-multiline.yoast-tooltip-e::after,.yoast-tooltip-multiline.yoast-tooltip-w::after{left:100%}@media screen and (min-width:0\0){.yoast-tooltip-multiline::after{width:250px}}.yoast-tooltip-sticky::after,.yoast-tooltip-sticky::before{display:inline-block}.yoast-tooltip-sticky.yoast-tooltip-multiline::after{display:table-cell}@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min--moz-device-pixel-ratio:2),only screen and (-moz-min-device-pixel-ratio:2),only screen and (min-device-pixel-ratio:2),only screen and (min-resolution:192dpi),only screen and (min-resolution:2dppx){.yoast-tooltip-w::after{margin-left:4.5px}}.postbox .yoast-help-center__button{border:none;box-shadow:none;text-transform:none;text-decoration:underline;color:#0073aa;margin:0;min-height:0;font:inherit;padding:8px 0}.wpseotab label,.wpseotab legend{font-weight:600}.postbox .yoast-help-center__button svg{margin:0 13px}#edittag .yoast-video-tutorial__video-container{float:none;max-width:100%;margin:0 auto}#edittag .yoast-video-tutorial__descriptions{margin:0 auto;padding:0}@media screen and (max-width:1480px){#poststuff .yoast-video-tutorial__video-container{float:none;max-width:100%;margin:0 auto}#poststuff .yoast-video-tutorial__descriptions{margin:0 auto;padding:0}}.wpseo-metabox #yoast-help-center-container{margin:8px 0}.draftJsMentionPlugin__mention__29BEd,.draftJsMentionPlugin__mention__29BEd:visited{color:#575f67;cursor:pointer;display:inline-block;background:#e6f3ff;padding-right:2px;padding-left:2px;border-radius:2px;text-decoration:none}.draftJsMentionPlugin__mention__29BEd:focus,.draftJsMentionPlugin__mention__29BEd:hover{color:#677584;background:#edf5fd;outline:0}.draftJsMentionPlugin__mention__29BEd:active{color:#222;background:#455261}.draftJsMentionPlugin__mentionSuggestionsEntry__3mSwm{padding:7px 10px 3px;transition:background-color .4s cubic-bezier(.27,1.27,.48,.56)}.draftJsMentionPlugin__mentionSuggestionsEntry__3mSwm:active{background-color:#cce7ff}.draftJsMentionPlugin__mentionSuggestionsEntryFocused__3LcTd{background-color:#e6f3ff}.draftJsMentionPlugin__mentionSuggestionsEntryText__3Jobq{display:inline-block;margin-right:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:368px;font-size:.9em;margin-bottom:.2em}.draftJsMentionPlugin__mentionSuggestionsEntryAvatar__1xgA9{display:inline-block;width:24px;height:24px;border-radius:12px}.draftJsMentionPlugin__mentionSuggestions__2DWjA{border:1px solid #eee;margin-top:.4em;position:absolute;min-width:220px;max-width:440px;background:#fff;border-radius:2px;box-shadow:0 4px 30px 0 #dcdcdc;cursor:pointer;padding-top:8px;padding-bottom:8px;z-index:2;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;box-sizing:border-box;-ms-transform:scale(0);transform:scale(0)}.DraftEditor-root,.public-DraftEditor-block{position:relative}#edittag>#wp-description-wrap,.DraftEditorPlaceholder-hidden{display:none}.DraftEditor-editorContainer,.DraftEditor-root,.public-DraftEditor-content{height:inherit;text-align:initial}.public-DraftEditor-content[contenteditable=true]{-webkit-user-modify:read-write-plaintext-only}.DraftEditor-editorContainer{background-color:rgba(255,255,255,0);border-left:.1px solid transparent;position:relative;z-index:1}.DraftEditor-alignLeft .public-DraftStyleDefault-block{text-align:left}.DraftEditor-alignLeft .public-DraftEditorPlaceholder-root{left:0;text-align:left}.DraftEditor-alignCenter .public-DraftStyleDefault-block{text-align:center}.DraftEditor-alignCenter .public-DraftEditorPlaceholder-root{margin:0 auto;text-align:center;width:100%}.DraftEditor-alignRight .public-DraftStyleDefault-block{text-align:right}.DraftEditor-alignRight .public-DraftEditorPlaceholder-root{right:0;text-align:right}.public-DraftEditorPlaceholder-root{color:#9197a3;position:absolute;z-index:1}.public-DraftEditorPlaceholder-hasFocus{color:#bdc1c9}.public-DraftStyleDefault-block{position:relative;white-space:pre-wrap}.public-DraftStyleDefault-ltr{direction:ltr;text-align:left}.public-DraftStyleDefault-rtl{direction:rtl;text-align:right}.public-DraftStyleDefault-listLTR{direction:ltr}.public-DraftStyleDefault-listRTL{direction:rtl}.public-DraftStyleDefault-ol,.public-DraftStyleDefault-ul{margin:16px 0;padding:0}.public-DraftStyleDefault-depth0.public-DraftStyleDefault-listLTR{margin-left:1.5em}.public-DraftStyleDefault-depth0.public-DraftStyleDefault-listRTL{margin-right:1.5em}.public-DraftStyleDefault-depth1.public-DraftStyleDefault-listLTR{margin-left:3em}.public-DraftStyleDefault-depth1.public-DraftStyleDefault-listRTL{margin-right:3em}.public-DraftStyleDefault-depth2.public-DraftStyleDefault-listLTR{margin-left:4.5em}.public-DraftStyleDefault-depth2.public-DraftStyleDefault-listRTL{margin-right:4.5em}.public-DraftStyleDefault-depth3.public-DraftStyleDefault-listLTR{margin-left:6em}.public-DraftStyleDefault-depth3.public-DraftStyleDefault-listRTL{margin-right:6em}.public-DraftStyleDefault-depth4.public-DraftStyleDefault-listLTR{margin-left:7.5em}.public-DraftStyleDefault-depth4.public-DraftStyleDefault-listRTL{margin-right:7.5em}.public-DraftStyleDefault-unorderedListItem{list-style-type:square;position:relative}.public-DraftStyleDefault-unorderedListItem.public-DraftStyleDefault-depth0{list-style-type:disc}.public-DraftStyleDefault-unorderedListItem.public-DraftStyleDefault-depth1{list-style-type:circle}.public-DraftStyleDefault-orderedListItem{list-style-type:none;position:relative}.public-DraftStyleDefault-orderedListItem.public-DraftStyleDefault-listLTR:before{left:-36px;position:absolute;text-align:right;width:30px}.public-DraftStyleDefault-orderedListItem.public-DraftStyleDefault-listRTL:before{position:absolute;right:-36px;text-align:left;width:30px}.public-DraftStyleDefault-orderedListItem:before{content:counter(ol0) ". ";counter-increment:ol0}.public-DraftStyleDefault-orderedListItem.public-DraftStyleDefault-depth1:before{content:counter(ol1) ". ";counter-increment:ol1}.public-DraftStyleDefault-orderedListItem.public-DraftStyleDefault-depth2:before{content:counter(ol2) ". ";counter-increment:ol2}.public-DraftStyleDefault-orderedListItem.public-DraftStyleDefault-depth3:before{content:counter(ol3) ". ";counter-increment:ol3}.public-DraftStyleDefault-orderedListItem.public-DraftStyleDefault-depth4:before{content:counter(ol4) ". ";counter-increment:ol4}.public-DraftStyleDefault-depth0.public-DraftStyleDefault-reset{counter-reset:ol0}.public-DraftStyleDefault-depth1.public-DraftStyleDefault-reset{counter-reset:ol1}.public-DraftStyleDefault-depth2.public-DraftStyleDefault-reset{counter-reset:ol2}.public-DraftStyleDefault-depth3.public-DraftStyleDefault-reset{counter-reset:ol3}.public-DraftStyleDefault-depth4.public-DraftStyleDefault-reset{counter-reset:ol4}.yoast-svg-icon-loading-spinner{animation:rotator 1.4s linear infinite}@keyframes rotator{0%{transform:rotate(0)}100%{transform:rotate(-270deg)}}.path{stroke:#64a60a;stroke-dasharray:187;stroke-dashoffset:0;-ms-transform-origin:center;transform-origin:center;animation:dash 1.4s ease-in-out infinite}@keyframes dash{0%{stroke-dashoffset:187}50%{stroke-dashoffset:46.75;transform:rotate(-135deg)}100%{stroke-dashoffset:187;transform:rotate(-450deg)}}#wpseo_meta{box-sizing:border-box}#wpseo_meta *,#wpseo_meta :after,#wpseo_meta :before{box-sizing:inherit}#wp-description-wrap .wp-editor-area{border:0}.term-description-wrap td>textarea#description{min-height:530px}ul.wpseo-metabox-tabs{display:none;margin-top:6px;margin-bottom:0}ul.wpseo-metabox-tabs:after{content:"";display:table;clear:both}.wpseo-metabox-tabs-div{margin:0 5px 5px}.wpseo-metabox-tabs-div ul{list-style:none}#wpseo-meta-section-addons{padding:0 5px 5px}#wpseo-meta-section-addons .wpseo-metabox-tabs-div{margin:0}ul.wpseo-metabox-tabs li.active{background-color:#fdfdfd}.wpseo-meta-section,.wpseo-meta-section-react{display:none;width:100%;min-height:100%;height:auto;max-width:calc(100% - 50px);vertical-align:top}.wpseo-meta-section.active{display:inline-block;box-shadow:0 1px 2px rgba(0,0,0,.2)}.wpseo-meta-section-react.active{display:block;margin-bottom:10px;box-shadow:0 1px 2px rgba(0,0,0,.2)}.wpseo-metabox-content{display:-ms-flexbox;display:flex}.wpseo-metabox-sidebar{width:46px;padding:0;background-color:#fff}.wpseo-metabox-sidebar ul{margin:0 0 0 1px}.wpseo-metabox-sidebar ul li:nth-child(1){z-index:10}.wpseo-metabox-sidebar ul li:nth-child(2){z-index:9}.wpseo-metabox-sidebar ul li:nth-child(3){z-index:8}.wpseo-metabox-sidebar ul li:nth-child(4){z-index:7}.wpseo-metabox-sidebar ul li:nth-child(5){z-index:6}.wpseo-metabox-sidebar ul li:nth-child(6){z-index:5}.wpseo-metabox-sidebar ul li{box-shadow:0 1px 2px rgba(0,0,0,.2);display:block;margin-bottom:0;text-align:center;position:relative}.wpseo-metabox-sidebar ul li a{color:#000;padding:8px;background-color:#f8f8f8}.wpseo-metabox-sidebar ul li .yst-traffic-light{margin:0}.wpseo-metabox-sidebar ul li span.dashicons{width:100%}.wpseo-metabox-sidebar ul li span.wpseo-buy-premium{color:#a4286a}.wpseo-metabox-sidebar ul li span.wpseo-buy-premium:hover{color:#832055}.wpseo-metabox-sidebar ul li.active{z-index:50}.wpseo-metabox-sidebar ul li.active:after{display:block;float:left;position:absolute;top:0;left:-3px;width:3px;height:46px;background-color:#fff;content:" ";z-index:110}.wpseo-metabox-sidebar ul li.active a{color:#0073aa;background-color:#fff}.wpseo-metabox-sidebar ul li.active span.wpseo-buy-premium{color:#a4286a;border-color:#a4286a}.wpseo-metabox-sidebar ul li.active span.wpseo-buy-premium:hover{color:#832055;border-color:#832055}.wpseo-metabox-sidebar a{padding:5px;display:block;text-decoration:none;vertical-align:middle}ul.wpseo-metabox-tabs li{float:right;margin-left:5px;margin-bottom:-1px;padding:0;border:1px solid #dfdfdf;border-bottom:0 none}ul.wpseo-metabox-tabs li .wpseo-keyword{display:inline-block;vertical-align:top;max-width:8em;max-width:8rem;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.wpseotab{display:none;padding:16px;border:1px solid #ddd;background-color:#fdfdfd}.wpseotab .wpseo-cornerstone-checkbox{margin-left:.5em}.wpseotab.content{padding:20px 15px}.wpseotab.active{display:block}.wpseo-metabox-tabs .wpseo_tablink{display:inline-block;vertical-align:top;padding:5px 12px 6px;text-decoration:none}.wpseo-metabox-tabs .wpseo_content_tab a{padding-left:12px}.wpseo-metabox-tabs .wpseo-score-icon{margin-right:0}#wpseo-meta-section-social .wpseo-metabox-tabs .wpseo_tablink{padding:5px 7px}.wpseo-metabox-tabs .wpseo_tablink .dashicons{width:16px;height:16px;font-size:16px}.wpseo-metabox-sidebar .dashicons{width:30px;height:30px;font-size:30px}.wpseo-metabox-tabs-div div.wpseo-tabs-panel{overflow:auto;padding:.5em .9em;border:1px solid}#wpseo_meta .inside{margin:0}#wpseo_meta .inside::after{content:"";display:table;clear:both}#wpseo_meta .postbox .inside .wpseotab{font-size:13px!important}.wpseotab .select2-container,.wpseotab input,.wpseotab label,.wpseotab p.error-message,.wpseotab textarea,.yoast-metabox__description{max-width:600px}.wpseotab fieldset{padding-top:5px}.wpseotab label{display:block}.wpseotab input[type=radio]+label,.wpseotab input[type=checkbox]+label{display:inline-block;font-weight:400}.wpseotab fieldset,.wpseotab label{margin-top:2em;margin-bottom:.5em}.wpseotab input[type=checkbox],.wpseotab input[type=checkbox]+label{margin-top:2em;margin-bottom:0;font-size:1em}.wpseotab fieldset:first-child,.wpseotab input[type=checkbox]:first-child,.wpseotab input[type=checkbox]:first-child+label,.wpseotab label:first-child{margin-top:10px}.wpseotab input[type=radio]{margin-top:0}.wpseotab input[type=radio]+label{margin:0 0 0 1em}.wpseotab p.error-message,.yoast-metabox__description{margin:.5em 0}.wpseotab select[multiple]{margin-top:0}.wpseotab .wpseo_image_upload_button{margin-right:3px}.good,.warn,.wrong{font-weight:600}.good{color:green}.warn{color:maroon}.wrong{color:#dc3232}#current_seo_title span{padding:2px 5px;background-color:#ffffe0}#focuskwresults ul{margin:0}#focuskwresults li,#focuskwresults p{font-size:13px}#focuskwresults li{margin:0 20px 0 0;list-style-type:disc}.wpseo_hidden{display:none}.wpseo_msg{margin:5px 0 10px;padding:0 5px;border:1px solid #e6db55;background-color:#ffffe0}ul.wpseo-metabox-tabs li.wpseo-tab-add-keyword{border:1px dashed #dfdfdf;border-bottom:none}.wpseo-tab-add-keyword .wpseo-add-keyword.button{height:auto;padding:5px 10px 5px 12px;vertical-align:top;font-size:inherit;line-height:inherit;font-weight:700;box-shadow:none;background:0 0;text-decoration:none}.wpseo-tab-add-keyword .wpseo-add-keyword.button:focus{box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wpseo-tab-add-keyword .wpseo-add-keyword.button:active{-ms-transform:none;transform:none}.wpseo-add-keyword-plus{display:inline-block;vertical-align:top;margin:-1px 0 0 3px;font-size:20px}#wpseo-add-keyword-popup-title{margin:1em 0;font-size:1.3em}.snippet-editor__button.snippet-editor__edit-button:focus{border-color:#5b9dd9;outline:0;color:#23282d;background-color:#fafafa;box-shadow:0 0 3px rgba(0,115,170,.8)}.wpseo-admin-page .subsubsub li{display:inline;max-width:none}.yoast-seo-help-container{float:right;width:100%;max-width:none}.yoast-seo-help-container .yoast-help-panel{margin:.5em 0!important}.wpseo_content_wrapper p.search-box{margin:10px 0 5px}.wpseo-metabox-tabs .active a{color:#333}#wpseotab .ui-widget-content .ui-state-hover{border:1px solid #dfdfdf;color:#333;background:#f1f1f1}.yst-traffic-light-container{display:block;height:30px}.yst-traffic-light{width:19px;height:30px;margin:0 5px 0 0}.yst-traffic-light .traffic-light-color{display:none}.yst-traffic-light.bad .traffic-light-red,.yst-traffic-light.good .traffic-light-green,.yst-traffic-light.init .traffic-light-init,.yst-traffic-light.na .traffic-light-empty,.yst-traffic-light.ok .traffic-light-orange{display:inline}#wpseo-score{float:right;margin:0 -5px 0 5px}.yoast-seo-score .yoast-logo.svg{float:right;width:18px;margin-left:7px;height:18px;background:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%20role%3D%22img%22%20aria%2Dhidden%3D%22true%22%20focusable%3D%22false%22%3E%3Cpath%20fill%3D%22%23999%22%20d%3D%22M403%20218h691l%2D26%2072h%2D665q%2D110%200%2D188%2E5%2079t%2D78%2E5%20189v771q0%2095%2060%2E5%20169%2E5t153%2E5%2093%2E5q23%205%2098%205v72h%2D45q%2D140%200%2D239%2E5%2D100t%2D99%2E5%2D240v%2D771q0%2D140%2099%2E5%2D240t239%2E5%2D100zm851%2D218h247l%2D482%201294q%2D23%2061%2D40%2E5%20103%2E5t%2D45%2098%2D54%2093%2E5%2D64%2E5%2078%2E5%2D79%2E5%2065%2D95%2E5%2041%2D116%2018%2E5v%2D195q163%2D26%20220%2D182%2020%2D52%2020%2D105%200%2D54%2D20%2D106l%2D285%2D733h228l187%20585zm474%20558v1111h%2D795q37%2D55%2045%2D73h678v%2D1038q0%2D85%2D49%2E5%2D155t%2D129%2E5%2D99l25%2D67q101%2034%20163%2E5%20123%2E5t62%2E5%20197%2E5z%22%2F%3E%3C%2Fsvg%3E") no-repeat;background-size:18px}.yoast-seo-score .yoast-logo.svg.good{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%20role%3D%22img%22%20aria%2Dhidden%3D%22true%22%20focusable%3D%22false%22%3E%3Cpath%20fill%3D%22%237ad03a%22%20d%3D%22M403%20218h691l%2D26%2072h%2D665q%2D110%200%2D188%2E5%2079t%2D78%2E5%20189v771q0%2095%2060%2E5%20169%2E5t153%2E5%2093%2E5q23%205%2098%205v72h%2D45q%2D140%200%2D239%2E5%2D100t%2D99%2E5%2D240v%2D771q0%2D140%2099%2E5%2D240t239%2E5%2D100zm851%2D218h247l%2D482%201294q%2D23%2061%2D40%2E5%20103%2E5t%2D45%2098%2D54%2093%2E5%2D64%2E5%2078%2E5%2D79%2E5%2065%2D95%2E5%2041%2D116%2018%2E5v%2D195q163%2D26%20220%2D182%2020%2D52%2020%2D105%200%2D54%2D20%2D106l%2D285%2D733h228l187%20585zm474%20558v1111h%2D795q37%2D55%2045%2D73h678v%2D1038q0%2D85%2D49%2E5%2D155t%2D129%2E5%2D99l25%2D67q101%2034%20163%2E5%20123%2E5t62%2E5%20197%2E5z%22%2F%3E%3C%2Fsvg%3E")}.yoast-seo-score .yoast-logo.svg.ok{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%20role%3D%22img%22%20aria%2Dhidden%3D%22true%22%20focusable%3D%22false%22%3E%3Cpath%20fill%3D%22%23ee7c1b%22%20d%3D%22M403%20218h691l%2D26%2072h%2D665q%2D110%200%2D188%2E5%2079t%2D78%2E5%20189v771q0%2095%2060%2E5%20169%2E5t153%2E5%2093%2E5q23%205%2098%205v72h%2D45q%2D140%200%2D239%2E5%2D100t%2D99%2E5%2D240v%2D771q0%2D140%2099%2E5%2D240t239%2E5%2D100zm851%2D218h247l%2D482%201294q%2D23%2061%2D40%2E5%20103%2E5t%2D45%2098%2D54%2093%2E5%2D64%2E5%2078%2E5%2D79%2E5%2065%2D95%2E5%2041%2D116%2018%2E5v%2D195q163%2D26%20220%2D182%2020%2D52%2020%2D105%200%2D54%2D20%2D106l%2D285%2D733h228l187%20585zm474%20558v1111h%2D795q37%2D55%2045%2D73h678v%2D1038q0%2D85%2D49%2E5%2D155t%2D129%2E5%2D99l25%2D67q101%2034%20163%2E5%20123%2E5t62%2E5%20197%2E5z%22%2F%3E%3C%2Fsvg%3E")}.yoast-seo-score .yoast-logo.svg.bad{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%20role%3D%22img%22%20aria%2Dhidden%3D%22true%22%20focusable%3D%22false%22%3E%3Cpath%20fill%3D%22%23dc3232%22%20d%3D%22M403%20218h691l%2D26%2072h%2D665q%2D110%200%2D188%2E5%2079t%2D78%2E5%20189v771q0%2095%2060%2E5%20169%2E5t153%2E5%2093%2E5q23%205%2098%205v72h%2D45q%2D140%200%2D239%2E5%2D100t%2D99%2E5%2D240v%2D771q0%2D140%2099%2E5%2D240t239%2E5%2D100zm851%2D218h247l%2D482%201294q%2D23%2061%2D40%2E5%20103%2E5t%2D45%2098%2D54%2093%2E5%2D64%2E5%2078%2E5%2D79%2E5%2065%2D95%2E5%2041%2D116%2018%2E5v%2D195q163%2D26%20220%2D182%2020%2D52%2020%2D105%200%2D54%2D20%2D106l%2D285%2D733h228l187%20585zm474%20558v1111h%2D795q37%2D55%2045%2D73h678v%2D1038q0%2D85%2D49%2E5%2D155t%2D129%2E5%2D99l25%2D67q101%2034%20163%2E5%20123%2E5t62%2E5%20197%2E5z%22%2F%3E%3C%2Fsvg%3E")}.yoast-seo-score .yoast-logo.svg.na{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%20role%3D%22img%22%20aria%2Dhidden%3D%22true%22%20focusable%3D%22false%22%3E%3Cpath%20fill%3D%22%23999%22%20d%3D%22M403%20218h691l%2D26%2072h%2D665q%2D110%200%2D188%2E5%2079t%2D78%2E5%20189v771q0%2095%2060%2E5%20169%2E5t153%2E5%2093%2E5q23%205%2098%205v72h%2D45q%2D140%200%2D239%2E5%2D100t%2D99%2E5%2D240v%2D771q0%2D140%2099%2E5%2D240t239%2E5%2D100zm851%2D218h247l%2D482%201294q%2D23%2061%2D40%2E5%20103%2E5t%2D45%2098%2D54%2093%2E5%2D64%2E5%2078%2E5%2D79%2E5%2065%2D95%2E5%2041%2D116%2018%2E5v%2D195q163%2D26%20220%2D182%2020%2D52%2020%2D105%200%2D54%2D20%2D106l%2D285%2D733h228l187%20585zm474%20558v1111h%2D795q37%2D55%2045%2D73h678v%2D1038q0%2D85%2D49%2E5%2D155t%2D129%2E5%2D99l25%2D67q101%2034%20163%2E5%20123%2E5t62%2E5%20197%2E5z%22%2F%3E%3C%2Fsvg%3E")}.yoast-seo-score .yoast-logo.svg.noindex{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%20role%3D%22img%22%20aria%2Dhidden%3D%22true%22%20focusable%3D%22false%22%3E%3Cpath%20fill%3D%22%231e8cbe%22%20d%3D%22M403%20218h691l%2D26%2072h%2D665q%2D110%200%2D188%2E5%2079t%2D78%2E5%20189v771q0%2095%2060%2E5%20169%2E5t153%2E5%2093%2E5q23%205%2098%205v72h%2D45q%2D140%200%2D239%2E5%2D100t%2D99%2E5%2D240v%2D771q0%2D140%2099%2E5%2D240t239%2E5%2D100zm851%2D218h247l%2D482%201294q%2D23%2061%2D40%2E5%20103%2E5t%2D45%2098%2D54%2093%2E5%2D64%2E5%2078%2E5%2D79%2E5%2065%2D95%2E5%2041%2D116%2018%2E5v%2D195q163%2D26%20220%2D182%2020%2D52%2020%2D105%200%2D54%2D20%2D106l%2D285%2D733h228l187%20585zm474%20558v1111h%2D795q37%2D55%2045%2D73h678v%2D1038q0%2D85%2D49%2E5%2D155t%2D129%2E5%2D99l25%2D67q101%2034%20163%2E5%20123%2E5t62%2E5%20197%2E5z%22%2F%3E%3C%2Fsvg%3E")}.term-php .wpseo-taxonomy-metabox-postbox>h2{margin:0;padding:8px 12px;border-bottom:1px solid #eee;font-size:14px;line-height:1.4}.wpseo-buy-premium{color:#A4286A;margin-left:5px}.wpseo-metabox-go-to::after{content:" \00BB";position:static;top:auto;left:auto;width:auto;height:auto;border:none}#wpseo-buy-premium-popup-button.button-buy-premium{background:#A4286A;border-color:#A4286A;color:#fff}.wpseo-metabox-buy-premium{position:absolute;left:12px;top:0;padding:8px 0}.wpseo-metabox-buy-premium .dashicons{text-decoration:none}#TB_window #TB_ajaxContent p{padding:5px 0 0;margin:5px 0 0}#TB_window #TB_ajaxContent ul{margin:5px 0 10px}#TB_window #TB_ajaxContent li{list-style:none;margin:5px 0 0}#TB_window #TB_ajaxContent li::before{content:'+';margin:0 0 0 10px;font-weight:700}.yoast-section__heading-icon-list{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%20role%3D%22img%22%20aria%2Dhidden%3D%22true%22%20focusable%3D%22false%22%3E%3Cpath%20fill%3D%22%23555555%22%20d%3D%22M384%201408q0%2080%2D56%20136t%2D136%2056%2D136%2D56%2D56%2D136%2056%2D136%20136%2D56%20136%2056%2056%20136zm0%2D512q0%2080%2D56%20136t%2D136%2056%2D136%2D56%2D56%2D136%2056%2D136%20136%2D56%20136%2056%2056%20136zm1408%20416v192q0%2013%2D9%2E5%2022%2E5t%2D22%2E5%209%2E5h%2D1216q%2D13%200%2D22%2E5%2D9%2E5t%2D9%2E5%2D22%2E5v%2D192q0%2D13%209%2E5%2D22%2E5t22%2E5%2D9%2E5h1216q13%200%2022%2E5%209%2E5t9%2E5%2022%2E5zm%2D1408%2D928q0%2080%2D56%20136t%2D136%2056%2D136%2D56%2D56%2D136%2056%2D136%20136%2D56%20136%2056%2056%20136zm1408%20416v192q0%2013%2D9%2E5%2022%2E5t%2D22%2E5%209%2E5h%2D1216q%2D13%200%2D22%2E5%2D9%2E5t%2D9%2E5%2D22%2E5v%2D192q0%2D13%209%2E5%2D22%2E5t22%2E5%2D9%2E5h1216q13%200%2022%2E5%209%2E5t9%2E5%2022%2E5zm0%2D512v192q0%2013%2D9%2E5%2022%2E5t%2D22%2E5%209%2E5h%2D1216q%2D13%200%2D22%2E5%2D9%2E5t%2D9%2E5%2D22%2E5v%2D192q0%2D13%209%2E5%2D22%2E5t22%2E5%2D9%2E5h1216q13%200%2022%2E5%209%2E5t9%2E5%2022%2E5z%22%2F%3E%3C%2Fsvg%3E")}.yoast-section__heading-icon-key{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%20role%3D%22img%22%20aria%2Dhidden%3D%22true%22%20focusable%3D%22false%22%3E%3Cpath%20fill%3D%22%23555555%22%20d%3D%22M832%20512q0%2D80%2D56%2D136t%2D136%2D56%2D136%2056%2D56%20136q0%2042%2019%2083%2D41%2D19%2D83%2D19%2D80%200%2D136%2056t%2D56%20136%2056%20136%20136%2056%20136%2D56%2056%2D136q0%2D42%2D19%2D83%2041%2019%2083%2019%2080%200%20136%2D56t56%2D136zm851%20704q0%2017%2D49%2066t%2D66%2049q%2D9%200%2D28%2E5%2D16t%2D36%2E5%2D33%2D38%2E5%2D40%2D24%2E5%2D26l%2D96%2096%20220%20220q28%2028%2028%2068%200%2042%2D39%2081t%2D81%2039q%2D40%200%2D68%2D28l%2D671%2D671q%2D176%20131%2D365%20131%2D163%200%2D265%2E5%2D102%2E5t%2D102%2E5%2D265%2E5q0%2D160%2095%2D313t248%2D248%20313%2D95q163%200%20265%2E5%20102%2E5t102%2E5%20265%2E5q0%20189%2D131%20365l355%20355%2096%2D96q%2D3%2D3%2D26%2D24%2E5t%2D40%2D38%2E5%2D33%2D36%2E5%2D16%2D28%2E5q0%2D17%2049%2D66t66%2D49q13%200%2023%2010%206%206%2046%2044%2E5t82%2079%2E5%2086%2E5%2086%2073%2078%2028%2E5%2041z%22%2F%3E%3C%2Fsvg%3E")}.yoast-section__heading-icon-edit{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%20role%3D%22img%22%20aria%2Dhidden%3D%22true%22%20focusable%3D%22false%22%3E%3Cpath%20fill%3D%22%23555555%22%20d%3D%22M491%201536l91%2D91%2D235%2D235%2D91%2091v107h128v128h107zm523%2D928q0%2D22%2D22%2D22%2D10%200%2D17%207l%2D542%20542q%2D7%207%2D7%2017%200%2022%2022%2022%2010%200%2017%2D7l542%2D542q7%2D7%207%2D17zm%2D54%2D192l416%20416%2D832%20832h%2D416v%2D416zm683%2096q0%2053%2D37%2090l%2D166%20166%2D416%2D416%20166%2D165q36%2D38%2090%2D38%2053%200%2091%2038l235%20234q37%2039%2037%2091z%22%20%2F%3E%3C%2Fsvg%3E")}.yoast-section{box-shadow:0 1px 2px rgba(0,0,0,.2);position:relative;background-color:#fff;padding:0 20px 15px}.yoast-section__heading{padding:8px 20px;font-size:1rem;margin:0 -20px 15px;font-family:"Open Sans",sans-serif;font-weight:300;color:#555}.yoast-section__heading-icon{padding-right:44px;background-repeat:no-repeat;background-position:right 20px top .6em;background-size:16px}.yoast-section,.yoast-section *,.yoast-section :after,.yoast-section :before,.yoast-section:after,.yoast-section:before{box-sizing:border-box}.yoast-tooltip.yoast-tooltip-hidden::after,.yoast-tooltip.yoast-tooltip-hidden::before{display:none}.screen-reader-text.wpseo-generic-tab-textual-score,.screen-reader-text.wpseo-keyword-tab-textual-score{display:block}.yoast-notice-go-premium{border-right-color:#a4286a;background:#f1f1f1;margin:0}.editor-styles-wrapper mark.annotation-text-yoast{background-color:#e1bee7}@media screen and (max-width:782px){.wpseo-metabox-buy-premium .wpseo-buy-premium{display:inline-block;width:20px;height:20px;margin-left:5px;padding:0}.yoast-help-panel{max-width:none!important}#wpseo-crawl-issues-table-form .subsubsub{float:none;max-width:calc(100vw - 20px)}#wpseo-crawl-issues-table-form .yoast-help-button{margin-top:3px}.wpseotab select[multiple]{height:auto!important}}@media screen and (max-width:600px){.wpseotab.content{padding:16px 0}}
 
css/dist/metabox-1100.min.css DELETED
@@ -1 +0,0 @@
1
- .yoast-tooltip{position:relative}button.yoast-tooltip{overflow:visible}.yoast-tooltip::after{display:none;position:absolute;z-index:1000000;padding:6px 8px 5px;border-radius:3px;opacity:0;color:#fff;background:rgba(0,0,0,.8);text-shadow:none;font:normal normal 11px/1.45454545 Helvetica,arial,nimbussansl,liberationsans,freesans,clean,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";text-align:center;white-space:pre;text-decoration:none;letter-spacing:normal;text-transform:none;word-wrap:break-word;content:attr(aria-label);pointer-events:none;-webkit-font-smoothing:subpixel-antialiased}.yoast-tooltip-alt::after{content:attr(data-label)}.yoast-tooltip::before{display:none;position:absolute;z-index:1000001;width:0;height:0;border:5px solid transparent;opacity:0;color:rgba(0,0,0,.8);content:"\00a0";pointer-events:none}@keyframes yoast-tooltip-appear{from{opacity:0}to{opacity:1}}.yoast-tooltip:active::after,.yoast-tooltip:active::before,.yoast-tooltip:focus::after,.yoast-tooltip:focus::before,.yoast-tooltip:hover::after,.yoast-tooltip:hover::before{display:inline-block;text-decoration:none;animation-name:yoast-tooltip-appear;animation-duration:.1s;animation-timing-function:ease-in;animation-delay:.4s;animation-fill-mode:forwards}.yoast-tooltip-no-delay:active::after,.yoast-tooltip-no-delay:active::before,.yoast-tooltip-no-delay:focus::after,.yoast-tooltip-no-delay:focus::before,.yoast-tooltip-no-delay:hover::after,.yoast-tooltip-no-delay:hover::before{opacity:1;animation:none}.yoast-tooltip-multiline:active::after,.yoast-tooltip-multiline:focus::after,.yoast-tooltip-multiline:hover::after{display:table-cell}.yoast-tooltip-s::after,.yoast-tooltip-se::after,.yoast-tooltip-sw::after{top:100%;right:50%;margin-top:5px}.yoast-tooltip-s::before,.yoast-tooltip-se::before,.yoast-tooltip-sw::before{top:auto;right:50%;bottom:-5px;margin-right:-5px;border-bottom-color:rgba(0,0,0,.8)}.yoast-tooltip-se::after{right:auto;left:50%;margin-left:-15px}.yoast-tooltip-sw::after{margin-right:-15px}.yoast-tooltip-n::after,.yoast-tooltip-ne::after,.yoast-tooltip-nw::after{right:50%;bottom:100%;margin-bottom:5px}.yoast-tooltip-n::before,.yoast-tooltip-ne::before,.yoast-tooltip-nw::before{top:-5px;right:50%;bottom:auto;margin-right:-5px;border-top-color:rgba(0,0,0,.8)}.yoast-tooltip-ne::after{right:auto;left:50%;margin-left:-15px}.yoast-tooltip-nw::after{margin-right:-15px}.yoast-tooltip-n::after,.yoast-tooltip-s::after{-ms-transform:translateX(50%);transform:translateX(50%)}.yoast-tooltip-w::after{right:100%;bottom:50%;margin-right:5px;-ms-transform:translateY(50%);transform:translateY(50%)}.yoast-tooltip-w::before{top:50%;bottom:50%;left:-5px;margin-top:-5px;border-left-color:rgba(0,0,0,.8)}.yoast-tooltip-e::after{bottom:50%;left:100%;margin-left:5px;-ms-transform:translateY(50%);transform:translateY(50%)}.yoast-tooltip-e::before{top:50%;right:-5px;bottom:50%;margin-top:-5px;border-right-color:rgba(0,0,0,.8)}.yoast-tooltip-multiline::after{width:250px;width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:250px;border-collapse:separate;white-space:pre-line;word-wrap:normal;word-break:break-word}.yoast-tooltip-multiline.yoast-tooltip-n::after,.yoast-tooltip-multiline.yoast-tooltip-s::after{right:auto;left:50%;-ms-transform:translateX(-50%);transform:translateX(-50%)}.yoast-tooltip-multiline.yoast-tooltip-e::after,.yoast-tooltip-multiline.yoast-tooltip-w::after{right:100%}@media screen and (min-width:0\0){.yoast-tooltip-multiline::after{width:250px}}.yoast-tooltip-sticky::after,.yoast-tooltip-sticky::before{display:inline-block}.yoast-tooltip-sticky.yoast-tooltip-multiline::after{display:table-cell}@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min--moz-device-pixel-ratio:2),only screen and (-moz-min-device-pixel-ratio:2),only screen and (min-device-pixel-ratio:2),only screen and (min-resolution:192dpi),only screen and (min-resolution:2dppx){.yoast-tooltip-w::after{margin-right:4.5px}}.postbox .yoast-help-center__button{border:none;box-shadow:none;text-transform:none;text-decoration:underline;color:#0073aa;margin:0;min-height:0;font:inherit;padding:8px 0}.wpseotab label,.wpseotab legend{font-weight:600}.postbox .yoast-help-center__button svg{margin:0 13px}#edittag .yoast-video-tutorial__video-container{float:none;max-width:100%;margin:0 auto}#edittag .yoast-video-tutorial__descriptions{margin:0 auto;padding:0}@media screen and (max-width:1480px){#poststuff .yoast-video-tutorial__video-container{float:none;max-width:100%;margin:0 auto}#poststuff .yoast-video-tutorial__descriptions{margin:0 auto;padding:0}}.wpseo-metabox #yoast-help-center-container{margin:8px 0}.draftJsMentionPlugin__mention__29BEd,.draftJsMentionPlugin__mention__29BEd:visited{color:#575f67;cursor:pointer;display:inline-block;background:#e6f3ff;padding-left:2px;padding-right:2px;border-radius:2px;text-decoration:none}.draftJsMentionPlugin__mention__29BEd:focus,.draftJsMentionPlugin__mention__29BEd:hover{color:#677584;background:#edf5fd;outline:0}.draftJsMentionPlugin__mention__29BEd:active{color:#222;background:#455261}.draftJsMentionPlugin__mentionSuggestionsEntry__3mSwm{padding:7px 10px 3px;transition:background-color .4s cubic-bezier(.27,1.27,.48,.56)}.draftJsMentionPlugin__mentionSuggestionsEntry__3mSwm:active{background-color:#cce7ff}.draftJsMentionPlugin__mentionSuggestionsEntryFocused__3LcTd{background-color:#e6f3ff}.draftJsMentionPlugin__mentionSuggestionsEntryText__3Jobq{display:inline-block;margin-left:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:368px;font-size:.9em;margin-bottom:.2em}.draftJsMentionPlugin__mentionSuggestionsEntryAvatar__1xgA9{display:inline-block;width:24px;height:24px;border-radius:12px}.draftJsMentionPlugin__mentionSuggestions__2DWjA{border:1px solid #eee;margin-top:.4em;position:absolute;min-width:220px;max-width:440px;background:#fff;border-radius:2px;box-shadow:0 4px 30px 0 #dcdcdc;cursor:pointer;padding-top:8px;padding-bottom:8px;z-index:2;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;box-sizing:border-box;-ms-transform:scale(0);transform:scale(0)}.DraftEditor-root,.public-DraftEditor-block{position:relative}#edittag>#wp-description-wrap,.DraftEditorPlaceholder-hidden{display:none}.DraftEditor-editorContainer,.DraftEditor-root,.public-DraftEditor-content{height:inherit;text-align:initial}.public-DraftEditor-content[contenteditable=true]{-webkit-user-modify:read-write-plaintext-only}.DraftEditor-editorContainer{background-color:rgba(255,255,255,0);border-left:.1px solid transparent;position:relative;z-index:1}.DraftEditor-alignLeft .public-DraftStyleDefault-block{text-align:left}.DraftEditor-alignLeft .public-DraftEditorPlaceholder-root{left:0;text-align:left}.DraftEditor-alignCenter .public-DraftStyleDefault-block{text-align:center}.DraftEditor-alignCenter .public-DraftEditorPlaceholder-root{margin:0 auto;text-align:center;width:100%}.DraftEditor-alignRight .public-DraftStyleDefault-block{text-align:right}.DraftEditor-alignRight .public-DraftEditorPlaceholder-root{right:0;text-align:right}.public-DraftEditorPlaceholder-root{color:#9197a3;position:absolute;z-index:1}.public-DraftEditorPlaceholder-hasFocus{color:#bdc1c9}.public-DraftStyleDefault-block{position:relative;white-space:pre-wrap}.public-DraftStyleDefault-ltr{direction:ltr;text-align:left}.public-DraftStyleDefault-rtl{direction:rtl;text-align:right}.public-DraftStyleDefault-listLTR{direction:ltr}.public-DraftStyleDefault-listRTL{direction:rtl}.public-DraftStyleDefault-ol,.public-DraftStyleDefault-ul{margin:16px 0;padding:0}.public-DraftStyleDefault-depth0.public-DraftStyleDefault-listLTR{margin-left:1.5em}.public-DraftStyleDefault-depth0.public-DraftStyleDefault-listRTL{margin-right:1.5em}.public-DraftStyleDefault-depth1.public-DraftStyleDefault-listLTR{margin-left:3em}.public-DraftStyleDefault-depth1.public-DraftStyleDefault-listRTL{margin-right:3em}.public-DraftStyleDefault-depth2.public-DraftStyleDefault-listLTR{margin-left:4.5em}.public-DraftStyleDefault-depth2.public-DraftStyleDefault-listRTL{margin-right:4.5em}.public-DraftStyleDefault-depth3.public-DraftStyleDefault-listLTR{margin-left:6em}.public-DraftStyleDefault-depth3.public-DraftStyleDefault-listRTL{margin-right:6em}.public-DraftStyleDefault-depth4.public-DraftStyleDefault-listLTR{margin-left:7.5em}.public-DraftStyleDefault-depth4.public-DraftStyleDefault-listRTL{margin-right:7.5em}.public-DraftStyleDefault-unorderedListItem{list-style-type:square;position:relative}.public-DraftStyleDefault-unorderedListItem.public-DraftStyleDefault-depth0{list-style-type:disc}.public-DraftStyleDefault-unorderedListItem.public-DraftStyleDefault-depth1{list-style-type:circle}.public-DraftStyleDefault-orderedListItem{list-style-type:none;position:relative}.public-DraftStyleDefault-orderedListItem.public-DraftStyleDefault-listLTR:before{left:-36px;position:absolute;text-align:right;width:30px}.public-DraftStyleDefault-orderedListItem.public-DraftStyleDefault-listRTL:before{position:absolute;right:-36px;text-align:left;width:30px}.public-DraftStyleDefault-orderedListItem:before{content:counter(ol0) ". ";counter-increment:ol0}.public-DraftStyleDefault-orderedListItem.public-DraftStyleDefault-depth1:before{content:counter(ol1) ". ";counter-increment:ol1}.public-DraftStyleDefault-orderedListItem.public-DraftStyleDefault-depth2:before{content:counter(ol2) ". ";counter-increment:ol2}.public-DraftStyleDefault-orderedListItem.public-DraftStyleDefault-depth3:before{content:counter(ol3) ". ";counter-increment:ol3}.public-DraftStyleDefault-orderedListItem.public-DraftStyleDefault-depth4:before{content:counter(ol4) ". ";counter-increment:ol4}.public-DraftStyleDefault-depth0.public-DraftStyleDefault-reset{counter-reset:ol0}.public-DraftStyleDefault-depth1.public-DraftStyleDefault-reset{counter-reset:ol1}.public-DraftStyleDefault-depth2.public-DraftStyleDefault-reset{counter-reset:ol2}.public-DraftStyleDefault-depth3.public-DraftStyleDefault-reset{counter-reset:ol3}.public-DraftStyleDefault-depth4.public-DraftStyleDefault-reset{counter-reset:ol4}.yoast-svg-icon-loading-spinner{animation:rotator 1.4s linear infinite}@keyframes rotator{0%{transform:rotate(0)}100%{transform:rotate(270deg)}}.path{stroke:#64a60a;stroke-dasharray:187;stroke-dashoffset:0;-ms-transform-origin:center;transform-origin:center;animation:dash 1.4s ease-in-out infinite}@keyframes dash{0%{stroke-dashoffset:187}50%{stroke-dashoffset:46.75;transform:rotate(135deg)}100%{stroke-dashoffset:187;transform:rotate(450deg)}}#wpseo_meta{box-sizing:border-box}#wpseo_meta *,#wpseo_meta :after,#wpseo_meta :before{box-sizing:inherit}#wp-description-wrap .wp-editor-area{border:0}.term-description-wrap td>textarea#description{min-height:530px}ul.wpseo-metabox-tabs{display:none;margin-top:6px;margin-bottom:0}ul.wpseo-metabox-tabs:after{content:"";display:table;clear:both}.wpseo-metabox-tabs-div{margin:0 5px 5px}.wpseo-metabox-tabs-div ul{list-style:none}#wpseo-meta-section-addons{padding:0 5px 5px}#wpseo-meta-section-addons .wpseo-metabox-tabs-div{margin:0}ul.wpseo-metabox-tabs li.active{background-color:#fdfdfd}.wpseo-meta-section,.wpseo-meta-section-react{display:none;width:100%;min-height:100%;height:auto;max-width:calc(100% - 50px);vertical-align:top}.wpseo-meta-section.active{display:inline-block;box-shadow:0 1px 2px rgba(0,0,0,.2)}.wpseo-meta-section-react.active{display:block;margin-bottom:10px;box-shadow:0 1px 2px rgba(0,0,0,.2)}.wpseo-metabox-content{display:-ms-flexbox;display:flex}.wpseo-metabox-sidebar{width:46px;padding:0;background-color:#fff}.wpseo-metabox-sidebar ul{margin:0 1px 0 0}.wpseo-metabox-sidebar ul li:nth-child(1){z-index:10}.wpseo-metabox-sidebar ul li:nth-child(2){z-index:9}.wpseo-metabox-sidebar ul li:nth-child(3){z-index:8}.wpseo-metabox-sidebar ul li:nth-child(4){z-index:7}.wpseo-metabox-sidebar ul li:nth-child(5){z-index:6}.wpseo-metabox-sidebar ul li:nth-child(6){z-index:5}.wpseo-metabox-sidebar ul li{box-shadow:0 1px 2px rgba(0,0,0,.2);display:block;margin-bottom:0;text-align:center;position:relative}.wpseo-metabox-sidebar ul li a{color:#000;padding:8px;background-color:#f8f8f8}.wpseo-metabox-sidebar ul li .yst-traffic-light{margin:0}.wpseo-metabox-sidebar ul li span.dashicons{width:100%}.wpseo-metabox-sidebar ul li span.wpseo-buy-premium{color:#a4286a}.wpseo-metabox-sidebar ul li span.wpseo-buy-premium:hover{color:#832055}.wpseo-metabox-sidebar ul li.active{z-index:50}.wpseo-metabox-sidebar ul li.active:after{display:block;float:right;position:absolute;top:0;right:-3px;width:3px;height:46px;background-color:#fff;content:" ";z-index:110}.wpseo-metabox-sidebar ul li.active a{color:#0073aa;background-color:#fff}.wpseo-metabox-sidebar ul li.active span.wpseo-buy-premium{color:#a4286a;border-color:#a4286a}.wpseo-metabox-sidebar ul li.active span.wpseo-buy-premium:hover{color:#832055;border-color:#832055}.wpseo-metabox-sidebar a{padding:5px;display:block;text-decoration:none;vertical-align:middle}ul.wpseo-metabox-tabs li{float:left;margin-right:5px;margin-bottom:-1px;padding:0;border:1px solid #dfdfdf;border-bottom:0 none}ul.wpseo-metabox-tabs li .wpseo-keyword{display:inline-block;vertical-align:top;max-width:8em;max-width:8rem;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.wpseotab{display:none;padding:16px;border:1px solid #ddd;background-color:#fdfdfd}.wpseotab .wpseo-cornerstone-checkbox{margin-right:.5em}.wpseotab.content{padding:20px 15px}.wpseotab.active{display:block}.wpseo-metabox-tabs .wpseo_tablink{display:inline-block;vertical-align:top;padding:5px 12px 6px;text-decoration:none}.wpseo-metabox-tabs .wpseo_content_tab a{padding-right:12px}.wpseo-metabox-tabs .wpseo-score-icon{margin-left:0}#wpseo-meta-section-social .wpseo-metabox-tabs .wpseo_tablink{padding:5px 7px}.wpseo-metabox-tabs .wpseo_tablink .dashicons{width:16px;height:16px;font-size:16px}.wpseo-metabox-sidebar .dashicons{width:30px;height:30px;font-size:30px}.wpseo-metabox-tabs-div div.wpseo-tabs-panel{overflow:auto;padding:.5em .9em;border:1px solid}#wpseo_meta .inside{margin:0}#wpseo_meta .inside::after{content:"";display:table;clear:both}#wpseo_meta .postbox .inside .wpseotab{font-size:13px!important}.wpseotab .select2-container,.wpseotab input,.wpseotab label,.wpseotab p.error-message,.wpseotab textarea,.yoast-metabox__description{max-width:600px}.wpseotab fieldset{padding-top:5px}.wpseotab label{display:block}.wpseotab input[type=radio]+label,.wpseotab input[type=checkbox]+label{display:inline-block;font-weight:400}.wpseotab fieldset,.wpseotab label{margin-top:2em;margin-bottom:.5em}.wpseotab input[type=checkbox],.wpseotab input[type=checkbox]+label{margin-top:2em;margin-bottom:0;font-size:1em}.wpseotab fieldset:first-child,.wpseotab input[type=checkbox]:first-child,.wpseotab input[type=checkbox]:first-child+label,.wpseotab label:first-child{margin-top:10px}.wpseotab input[type=radio]{margin-top:0}.wpseotab input[type=radio]+label{margin:0 1em 0 0}.wpseotab p.error-message,.yoast-metabox__description{margin:.5em 0}.wpseotab select[multiple]{margin-top:0}.wpseotab .wpseo_image_upload_button{margin-left:3px}.good,.warn,.wrong{font-weight:600}.good{color:green}.warn{color:maroon}.wrong{color:#dc3232}#current_seo_title span{padding:2px 5px;background-color:#ffffe0}#focuskwresults ul{margin:0}#focuskwresults li,#focuskwresults p{font-size:13px}#focuskwresults li{margin:0 0 0 20px;list-style-type:disc}.wpseo_hidden{display:none}.wpseo_msg{margin:5px 0 10px;padding:0 5px;border:1px solid #e6db55;background-color:#ffffe0}ul.wpseo-metabox-tabs li.wpseo-tab-add-keyword{border:1px dashed #dfdfdf;border-bottom:none}.wpseo-tab-add-keyword .wpseo-add-keyword.button{height:auto;padding:5px 12px 5px 10px;vertical-align:top;font-size:inherit;line-height:inherit;font-weight:700;box-shadow:none;background:0 0;text-decoration:none}.wpseo-tab-add-keyword .wpseo-add-keyword.button:focus{box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wpseo-tab-add-keyword .wpseo-add-keyword.button:active{-ms-transform:none;transform:none}.wpseo-add-keyword-plus{display:inline-block;vertical-align:top;margin:-1px 3px 0 0;font-size:20px}#wpseo-add-keyword-popup-title{margin:1em 0;font-size:1.3em}.snippet-editor__button.snippet-editor__edit-button:focus{border-color:#5b9dd9;outline:0;color:#23282d;background-color:#fafafa;box-shadow:0 0 3px rgba(0,115,170,.8)}.wpseo-admin-page .subsubsub li{display:inline;max-width:none}.yoast-seo-help-container{float:left;width:100%;max-width:none}.yoast-seo-help-container .yoast-help-panel{margin:.5em 0!important}.wpseo_content_wrapper p.search-box{margin:10px 0 5px}.wpseo-metabox-tabs .active a{color:#333}#wpseotab .ui-widget-content .ui-state-hover{border:1px solid #dfdfdf;color:#333;background:#f1f1f1}.yst-traffic-light-container{display:block;height:30px}.yst-traffic-light{width:19px;height:30px;margin:0 0 0 5px}.yst-traffic-light .traffic-light-color{display:none}.yst-traffic-light.bad .traffic-light-red,.yst-traffic-light.good .traffic-light-green,.yst-traffic-light.init .traffic-light-init,.yst-traffic-light.na .traffic-light-empty,.yst-traffic-light.ok .traffic-light-orange{display:inline}#wpseo-score{float:left;margin:0 5px 0 -5px}.yoast-seo-score .yoast-logo.svg{float:left;width:18px;margin-right:7px;height:18px;background:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%20role%3D%22img%22%20aria%2Dhidden%3D%22true%22%20focusable%3D%22false%22%3E%3Cpath%20fill%3D%22%23999%22%20d%3D%22M403%20218h691l%2D26%2072h%2D665q%2D110%200%2D188%2E5%2079t%2D78%2E5%20189v771q0%2095%2060%2E5%20169%2E5t153%2E5%2093%2E5q23%205%2098%205v72h%2D45q%2D140%200%2D239%2E5%2D100t%2D99%2E5%2D240v%2D771q0%2D140%2099%2E5%2D240t239%2E5%2D100zm851%2D218h247l%2D482%201294q%2D23%2061%2D40%2E5%20103%2E5t%2D45%2098%2D54%2093%2E5%2D64%2E5%2078%2E5%2D79%2E5%2065%2D95%2E5%2041%2D116%2018%2E5v%2D195q163%2D26%20220%2D182%2020%2D52%2020%2D105%200%2D54%2D20%2D106l%2D285%2D733h228l187%20585zm474%20558v1111h%2D795q37%2D55%2045%2D73h678v%2D1038q0%2D85%2D49%2E5%2D155t%2D129%2E5%2D99l25%2D67q101%2034%20163%2E5%20123%2E5t62%2E5%20197%2E5z%22%2F%3E%3C%2Fsvg%3E") no-repeat;background-size:18px}.yoast-seo-score .yoast-logo.svg.good{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%20role%3D%22img%22%20aria%2Dhidden%3D%22true%22%20focusable%3D%22false%22%3E%3Cpath%20fill%3D%22%237ad03a%22%20d%3D%22M403%20218h691l%2D26%2072h%2D665q%2D110%200%2D188%2E5%2079t%2D78%2E5%20189v771q0%2095%2060%2E5%20169%2E5t153%2E5%2093%2E5q23%205%2098%205v72h%2D45q%2D140%200%2D239%2E5%2D100t%2D99%2E5%2D240v%2D771q0%2D140%2099%2E5%2D240t239%2E5%2D100zm851%2D218h247l%2D482%201294q%2D23%2061%2D40%2E5%20103%2E5t%2D45%2098%2D54%2093%2E5%2D64%2E5%2078%2E5%2D79%2E5%2065%2D95%2E5%2041%2D116%2018%2E5v%2D195q163%2D26%20220%2D182%2020%2D52%2020%2D105%200%2D54%2D20%2D106l%2D285%2D733h228l187%20585zm474%20558v1111h%2D795q37%2D55%2045%2D73h678v%2D1038q0%2D85%2D49%2E5%2D155t%2D129%2E5%2D99l25%2D67q101%2034%20163%2E5%20123%2E5t62%2E5%20197%2E5z%22%2F%3E%3C%2Fsvg%3E")}.yoast-seo-score .yoast-logo.svg.ok{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%20role%3D%22img%22%20aria%2Dhidden%3D%22true%22%20focusable%3D%22false%22%3E%3Cpath%20fill%3D%22%23ee7c1b%22%20d%3D%22M403%20218h691l%2D26%2072h%2D665q%2D110%200%2D188%2E5%2079t%2D78%2E5%20189v771q0%2095%2060%2E5%20169%2E5t153%2E5%2093%2E5q23%205%2098%205v72h%2D45q%2D140%200%2D239%2E5%2D100t%2D99%2E5%2D240v%2D771q0%2D140%2099%2E5%2D240t239%2E5%2D100zm851%2D218h247l%2D482%201294q%2D23%2061%2D40%2E5%20103%2E5t%2D45%2098%2D54%2093%2E5%2D64%2E5%2078%2E5%2D79%2E5%2065%2D95%2E5%2041%2D116%2018%2E5v%2D195q163%2D26%20220%2D182%2020%2D52%2020%2D105%200%2D54%2D20%2D106l%2D285%2D733h228l187%20585zm474%20558v1111h%2D795q37%2D55%2045%2D73h678v%2D1038q0%2D85%2D49%2E5%2D155t%2D129%2E5%2D99l25%2D67q101%2034%20163%2E5%20123%2E5t62%2E5%20197%2E5z%22%2F%3E%3C%2Fsvg%3E")}.yoast-seo-score .yoast-logo.svg.bad{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%20role%3D%22img%22%20aria%2Dhidden%3D%22true%22%20focusable%3D%22false%22%3E%3Cpath%20fill%3D%22%23dc3232%22%20d%3D%22M403%20218h691l%2D26%2072h%2D665q%2D110%200%2D188%2E5%2079t%2D78%2E5%20189v771q0%2095%2060%2E5%20169%2E5t153%2E5%2093%2E5q23%205%2098%205v72h%2D45q%2D140%200%2D239%2E5%2D100t%2D99%2E5%2D240v%2D771q0%2D140%2099%2E5%2D240t239%2E5%2D100zm851%2D218h247l%2D482%201294q%2D23%2061%2D40%2E5%20103%2E5t%2D45%2098%2D54%2093%2E5%2D64%2E5%2078%2E5%2D79%2E5%2065%2D95%2E5%2041%2D116%2018%2E5v%2D195q163%2D26%20220%2D182%2020%2D52%2020%2D105%200%2D54%2D20%2D106l%2D285%2D733h228l187%20585zm474%20558v1111h%2D795q37%2D55%2045%2D73h678v%2D1038q0%2D85%2D49%2E5%2D155t%2D129%2E5%2D99l25%2D67q101%2034%20163%2E5%20123%2E5t62%2E5%20197%2E5z%22%2F%3E%3C%2Fsvg%3E")}.yoast-seo-score .yoast-logo.svg.na{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%20role%3D%22img%22%20aria%2Dhidden%3D%22true%22%20focusable%3D%22false%22%3E%3Cpath%20fill%3D%22%23999%22%20d%3D%22M403%20218h691l%2D26%2072h%2D665q%2D110%200%2D188%2E5%2079t%2D78%2E5%20189v771q0%2095%2060%2E5%20169%2E5t153%2E5%2093%2E5q23%205%2098%205v72h%2D45q%2D140%200%2D239%2E5%2D100t%2D99%2E5%2D240v%2D771q0%2D140%2099%2E5%2D240t239%2E5%2D100zm851%2D218h247l%2D482%201294q%2D23%2061%2D40%2E5%20103%2E5t%2D45%2098%2D54%2093%2E5%2D64%2E5%2078%2E5%2D79%2E5%2065%2D95%2E5%2041%2D116%2018%2E5v%2D195q163%2D26%20220%2D182%2020%2D52%2020%2D105%200%2D54%2D20%2D106l%2D285%2D733h228l187%20585zm474%20558v1111h%2D795q37%2D55%2045%2D73h678v%2D1038q0%2D85%2D49%2E5%2D155t%2D129%2E5%2D99l25%2D67q101%2034%20163%2E5%20123%2E5t62%2E5%20197%2E5z%22%2F%3E%3C%2Fsvg%3E")}.yoast-seo-score .yoast-logo.svg.noindex{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%20role%3D%22img%22%20aria%2Dhidden%3D%22true%22%20focusable%3D%22false%22%3E%3Cpath%20fill%3D%22%231e8cbe%22%20d%3D%22M403%20218h691l%2D26%2072h%2D665q%2D110%200%2D188%2E5%2079t%2D78%2E5%20189v771q0%2095%2060%2E5%20169%2E5t153%2E5%2093%2E5q23%205%2098%205v72h%2D45q%2D140%200%2D239%2E5%2D100t%2D99%2E5%2D240v%2D771q0%2D140%2099%2E5%2D240t239%2E5%2D100zm851%2D218h247l%2D482%201294q%2D23%2061%2D40%2E5%20103%2E5t%2D45%2098%2D54%2093%2E5%2D64%2E5%2078%2E5%2D79%2E5%2065%2D95%2E5%2041%2D116%2018%2E5v%2D195q163%2D26%20220%2D182%2020%2D52%2020%2D105%200%2D54%2D20%2D106l%2D285%2D733h228l187%20585zm474%20558v1111h%2D795q37%2D55%2045%2D73h678v%2D1038q0%2D85%2D49%2E5%2D155t%2D129%2E5%2D99l25%2D67q101%2034%20163%2E5%20123%2E5t62%2E5%20197%2E5z%22%2F%3E%3C%2Fsvg%3E")}.term-php .wpseo-taxonomy-metabox-postbox>h2{margin:0;padding:8px 12px;border-bottom:1px solid #eee;font-size:14px;line-height:1.4}.wpseo-buy-premium{color:#A4286A;margin-right:5px}.wpseo-metabox-go-to::after{content:" \00BB";position:static;top:auto;right:auto;width:auto;height:auto;border:none}#wpseo-buy-premium-popup-button.button-buy-premium{background:#A4286A;border-color:#A4286A;color:#fff}.wpseo-metabox-buy-premium{position:absolute;right:12px;top:0;padding:8px 0}.wpseo-metabox-buy-premium .dashicons{text-decoration:none}#TB_window #TB_ajaxContent p{padding:5px 0 0;margin:5px 0 0}#TB_window #TB_ajaxContent ul{margin:5px 0 10px}#TB_window #TB_ajaxContent li{list-style:none;margin:5px 0 0}#TB_window #TB_ajaxContent li::before{content:'+';margin:0 10px 0 0;font-weight:700}.yoast-section__heading-icon-list{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%20role%3D%22img%22%20aria%2Dhidden%3D%22true%22%20focusable%3D%22false%22%3E%3Cpath%20fill%3D%22%23555555%22%20d%3D%22M384%201408q0%2080%2D56%20136t%2D136%2056%2D136%2D56%2D56%2D136%2056%2D136%20136%2D56%20136%2056%2056%20136zm0%2D512q0%2080%2D56%20136t%2D136%2056%2D136%2D56%2D56%2D136%2056%2D136%20136%2D56%20136%2056%2056%20136zm1408%20416v192q0%2013%2D9%2E5%2022%2E5t%2D22%2E5%209%2E5h%2D1216q%2D13%200%2D22%2E5%2D9%2E5t%2D9%2E5%2D22%2E5v%2D192q0%2D13%209%2E5%2D22%2E5t22%2E5%2D9%2E5h1216q13%200%2022%2E5%209%2E5t9%2E5%2022%2E5zm%2D1408%2D928q0%2080%2D56%20136t%2D136%2056%2D136%2D56%2D56%2D136%2056%2D136%20136%2D56%20136%2056%2056%20136zm1408%20416v192q0%2013%2D9%2E5%2022%2E5t%2D22%2E5%209%2E5h%2D1216q%2D13%200%2D22%2E5%2D9%2E5t%2D9%2E5%2D22%2E5v%2D192q0%2D13%209%2E5%2D22%2E5t22%2E5%2D9%2E5h1216q13%200%2022%2E5%209%2E5t9%2E5%2022%2E5zm0%2D512v192q0%2013%2D9%2E5%2022%2E5t%2D22%2E5%209%2E5h%2D1216q%2D13%200%2D22%2E5%2D9%2E5t%2D9%2E5%2D22%2E5v%2D192q0%2D13%209%2E5%2D22%2E5t22%2E5%2D9%2E5h1216q13%200%2022%2E5%209%2E5t9%2E5%2022%2E5z%22%2F%3E%3C%2Fsvg%3E")}.yoast-section__heading-icon-key{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%20role%3D%22img%22%20aria%2Dhidden%3D%22true%22%20focusable%3D%22false%22%3E%3Cpath%20fill%3D%22%23555555%22%20d%3D%22M832%20512q0%2D80%2D56%2D136t%2D136%2D56%2D136%2056%2D56%20136q0%2042%2019%2083%2D41%2D19%2D83%2D19%2D80%200%2D136%2056t%2D56%20136%2056%20136%20136%2056%20136%2D56%2056%2D136q0%2D42%2D19%2D83%2041%2019%2083%2019%2080%200%20136%2D56t56%2D136zm851%20704q0%2017%2D49%2066t%2D66%2049q%2D9%200%2D28%2E5%2D16t%2D36%2E5%2D33%2D38%2E5%2D40%2D24%2E5%2D26l%2D96%2096%20220%20220q28%2028%2028%2068%200%2042%2D39%2081t%2D81%2039q%2D40%200%2D68%2D28l%2D671%2D671q%2D176%20131%2D365%20131%2D163%200%2D265%2E5%2D102%2E5t%2D102%2E5%2D265%2E5q0%2D160%2095%2D313t248%2D248%20313%2D95q163%200%20265%2E5%20102%2E5t102%2E5%20265%2E5q0%20189%2D131%20365l355%20355%2096%2D96q%2D3%2D3%2D26%2D24%2E5t%2D40%2D38%2E5%2D33%2D36%2E5%2D16%2D28%2E5q0%2D17%2049%2D66t66%2D49q13%200%2023%2010%206%206%2046%2044%2E5t82%2079%2E5%2086%2E5%2086%2073%2078%2028%2E5%2041z%22%2F%3E%3C%2Fsvg%3E")}.yoast-section__heading-icon-edit{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%20role%3D%22img%22%20aria%2Dhidden%3D%22true%22%20focusable%3D%22false%22%3E%3Cpath%20fill%3D%22%23555555%22%20d%3D%22M491%201536l91%2D91%2D235%2D235%2D91%2091v107h128v128h107zm523%2D928q0%2D22%2D22%2D22%2D10%200%2D17%207l%2D542%20542q%2D7%207%2D7%2017%200%2022%2022%2022%2010%200%2017%2D7l542%2D542q7%2D7%207%2D17zm%2D54%2D192l416%20416%2D832%20832h%2D416v%2D416zm683%2096q0%2053%2D37%2090l%2D166%20166%2D416%2D416%20166%2D165q36%2D38%2090%2D38%2053%200%2091%2038l235%20234q37%2039%2037%2091z%22%20%2F%3E%3C%2Fsvg%3E")}.yoast-section{box-shadow:0 1px 2px rgba(0,0,0,.2);position:relative;background-color:#fff;padding:0 20px 15px}.yoast-section__heading{padding:8px 20px;font-size:1rem;margin:0 -20px 15px;font-family:"Open Sans",sans-serif;font-weight:300;color:#555}.yoast-section__heading-icon{padding-left:44px;background-repeat:no-repeat;background-position:left 20px top .6em;background-size:16px}.yoast-section,.yoast-section *,.yoast-section :after,.yoast-section :before,.yoast-section:after,.yoast-section:before{box-sizing:border-box}.yoast-tooltip.yoast-tooltip-hidden::after,.yoast-tooltip.yoast-tooltip-hidden::before{display:none}.screen-reader-text.wpseo-generic-tab-textual-score,.screen-reader-text.wpseo-keyword-tab-textual-score{display:block}.yoast-notice-go-premium{border-left-color:#a4286a;background:#f1f1f1;margin:0}.editor-styles-wrapper mark.annotation-text-yoast{background-color:#e1bee7}@media screen and (max-width:782px){.wpseo-metabox-buy-premium .wpseo-buy-premium{display:inline-block;width:20px;height:20px;margin-right:5px;padding:0}.yoast-help-panel{max-width:none!important}#wpseo-crawl-issues-table-form .subsubsub{float:none;max-width:calc(100vw - 20px)}#wpseo-crawl-issues-table-form .yoast-help-button{margin-top:3px}.wpseotab select[multiple]{height:auto!important}}@media screen and (max-width:600px){.wpseotab.content{padding:16px 0}}
 
css/dist/metabox-1110-rtl.min.css ADDED
@@ -0,0 +1 @@
 
1
+ .yoast-tooltip::after,.yoast-tooltip::before{opacity:0;pointer-events:none;position:absolute}.yoast-tooltip{position:relative}button.yoast-tooltip{overflow:visible}.yoast-tooltip::after{display:none;z-index:1000000;padding:6px 8px 5px;border-radius:3px;color:#fff;background:rgba(0,0,0,.8);text-shadow:none;font:normal normal 11px/1.45454545 Helvetica,arial,nimbussansl,liberationsans,freesans,clean,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";text-align:center;white-space:pre;text-decoration:none;letter-spacing:normal;text-transform:none;word-wrap:break-word;content:attr(aria-label);-webkit-font-smoothing:subpixel-antialiased}.yoast-tooltip-alt::after{content:attr(data-label)}.yoast-tooltip::before{display:none;z-index:1000001;width:0;height:0;border:5px solid transparent;color:rgba(0,0,0,.8);content:"\00a0"}@keyframes yoast-tooltip-appear{from{opacity:0}to{opacity:1}}.yoast-tooltip:active::after,.yoast-tooltip:active::before,.yoast-tooltip:focus::after,.yoast-tooltip:focus::before,.yoast-tooltip:hover::after,.yoast-tooltip:hover::before{display:inline-block;text-decoration:none;animation-name:yoast-tooltip-appear;animation-duration:.1s;animation-timing-function:ease-in;animation-delay:.4s;animation-fill-mode:forwards}.yoast-tooltip-no-delay:active::after,.yoast-tooltip-no-delay:active::before,.yoast-tooltip-no-delay:focus::after,.yoast-tooltip-no-delay:focus::before,.yoast-tooltip-no-delay:hover::after,.yoast-tooltip-no-delay:hover::before{opacity:1;animation:none}.yoast-tooltip-multiline:active::after,.yoast-tooltip-multiline:focus::after,.yoast-tooltip-multiline:hover::after{display:table-cell}.yoast-tooltip-s::after,.yoast-tooltip-se::after,.yoast-tooltip-sw::after{top:100%;left:50%;margin-top:5px}.yoast-tooltip-s::before,.yoast-tooltip-se::before,.yoast-tooltip-sw::before{top:auto;left:50%;bottom:-5px;margin-left:-5px;border-bottom-color:rgba(0,0,0,.8)}.yoast-tooltip-se::after{left:auto;right:50%;margin-right:-15px}.yoast-tooltip-sw::after{margin-left:-15px}.yoast-tooltip-n::after,.yoast-tooltip-ne::after,.yoast-tooltip-nw::after{left:50%;bottom:100%;margin-bottom:5px}.yoast-tooltip-n::before,.yoast-tooltip-ne::before,.yoast-tooltip-nw::before{top:-5px;left:50%;bottom:auto;margin-left:-5px;border-top-color:rgba(0,0,0,.8)}.yoast-tooltip-ne::after{left:auto;right:50%;margin-right:-15px}.yoast-tooltip-nw::after{margin-left:-15px}.yoast-tooltip-n::after,.yoast-tooltip-s::after{-ms-transform:translateX(-50%);transform:translateX(-50%)}.yoast-tooltip-w::after{left:100%;bottom:50%;margin-left:5px;-ms-transform:translateY(50%);transform:translateY(50%)}.yoast-tooltip-w::before{top:50%;bottom:50%;right:-5px;margin-top:-5px;border-right-color:rgba(0,0,0,.8)}.yoast-tooltip-e::after{bottom:50%;right:100%;margin-right:5px;-ms-transform:translateY(50%);transform:translateY(50%)}.yoast-tooltip-e::before{top:50%;left:-5px;bottom:50%;margin-top:-5px;border-left-color:rgba(0,0,0,.8)}.yoast-tooltip-multiline::after{width:250px;width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:250px;border-collapse:separate;white-space:pre-line;word-wrap:normal;word-break:break-word}.yoast-tooltip-multiline.yoast-tooltip-n::after,.yoast-tooltip-multiline.yoast-tooltip-s::after{left:auto;right:50%;-ms-transform:translateX(50%);transform:translateX(50%)}.yoast-tooltip-multiline.yoast-tooltip-e::after,.yoast-tooltip-multiline.yoast-tooltip-w::after{left:100%}@media screen and (min-width:0\0){.yoast-tooltip-multiline::after{width:250px}}.yoast-tooltip-sticky::after,.yoast-tooltip-sticky::before{display:inline-block}.yoast-tooltip-sticky.yoast-tooltip-multiline::after{display:table-cell}@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min--moz-device-pixel-ratio:2),only screen and (-moz-min-device-pixel-ratio:2),only screen and (min-device-pixel-ratio:2),only screen and (min-resolution:192dpi),only screen and (min-resolution:2dppx){.yoast-tooltip-w::after{margin-left:4.5px}}.postbox .yoast-help-center__button{border:none;box-shadow:none;text-transform:none;text-decoration:underline;color:#0073aa;margin:0;min-height:0;font:inherit;padding:8px 0}.wpseotab label,.wpseotab legend{font-weight:600}.postbox .yoast-help-center__button svg{margin:0 13px}#edittag .yoast-video-tutorial__video-container{float:none;max-width:100%;margin:0 auto}#edittag .yoast-video-tutorial__descriptions{margin:0 auto;padding:0}@media screen and (max-width:1480px){#poststuff .yoast-video-tutorial__video-container{float:none;max-width:100%;margin:0 auto}#poststuff .yoast-video-tutorial__descriptions{margin:0 auto;padding:0}}.wpseo-metabox #yoast-help-center-container{margin:8px 0}.draftJsMentionPlugin__mention__29BEd,.draftJsMentionPlugin__mention__29BEd:visited{color:#575f67;cursor:pointer;display:inline-block;background:#e6f3ff;padding-right:2px;padding-left:2px;border-radius:2px;text-decoration:none}.draftJsMentionPlugin__mention__29BEd:focus,.draftJsMentionPlugin__mention__29BEd:hover{color:#677584;background:#edf5fd;outline:0}.draftJsMentionPlugin__mention__29BEd:active{color:#222;background:#455261}.draftJsMentionPlugin__mentionSuggestionsEntry__3mSwm{padding:7px 10px 3px;transition:background-color .4s cubic-bezier(.27,1.27,.48,.56)}.draftJsMentionPlugin__mentionSuggestionsEntry__3mSwm:active{background-color:#cce7ff}.draftJsMentionPlugin__mentionSuggestionsEntryFocused__3LcTd{background-color:#e6f3ff}.draftJsMentionPlugin__mentionSuggestionsEntryText__3Jobq{display:inline-block;margin-right:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:368px;font-size:.9em;margin-bottom:.2em}.draftJsMentionPlugin__mentionSuggestionsEntryAvatar__1xgA9{display:inline-block;width:24px;height:24px;border-radius:12px}.draftJsMentionPlugin__mentionSuggestions__2DWjA{border:1px solid #eee;margin-top:.4em;position:absolute;min-width:220px;max-width:440px;background:#fff;border-radius:2px;box-shadow:0 4px 30px 0 #dcdcdc;cursor:pointer;padding-top:8px;padding-bottom:8px;z-index:2;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;box-sizing:border-box;-ms-transform:scale(0);transform:scale(0)}.DraftEditor-root,.public-DraftEditor-block{position:relative}#edittag>#wp-description-wrap,.DraftEditorPlaceholder-hidden{display:none}.DraftEditor-editorContainer,.DraftEditor-root,.public-DraftEditor-content{height:inherit;text-align:initial}.public-DraftEditor-content[contenteditable=true]{-webkit-user-modify:read-write-plaintext-only}.DraftEditor-editorContainer{background-color:rgba(255,255,255,0);border-left:.1px solid transparent;position:relative;z-index:1}.DraftEditor-alignLeft .public-DraftStyleDefault-block{text-align:left}.DraftEditor-alignLeft .public-DraftEditorPlaceholder-root{left:0;text-align:left}.DraftEditor-alignCenter .public-DraftStyleDefault-block{text-align:center}.DraftEditor-alignCenter .public-DraftEditorPlaceholder-root{margin:0 auto;text-align:center;width:100%}.DraftEditor-alignRight .public-DraftStyleDefault-block{text-align:right}.DraftEditor-alignRight .public-DraftEditorPlaceholder-root{right:0;text-align:right}.public-DraftEditorPlaceholder-root{color:#9197a3;position:absolute;z-index:1}.public-DraftEditorPlaceholder-hasFocus{color:#bdc1c9}.public-DraftStyleDefault-block{position:relative;white-space:pre-wrap}.public-DraftStyleDefault-ltr{direction:ltr;text-align:left}.public-DraftStyleDefault-rtl{direction:rtl;text-align:right}.public-DraftStyleDefault-listLTR{direction:ltr}.public-DraftStyleDefault-listRTL{direction:rtl}.public-DraftStyleDefault-ol,.public-DraftStyleDefault-ul{margin:16px 0;padding:0}.public-DraftStyleDefault-depth0.public-DraftStyleDefault-listLTR{margin-left:1.5em}.public-DraftStyleDefault-depth0.public-DraftStyleDefault-listRTL{margin-right:1.5em}.public-DraftStyleDefault-depth1.public-DraftStyleDefault-listLTR{margin-left:3em}.public-DraftStyleDefault-depth1.public-DraftStyleDefault-listRTL{margin-right:3em}.public-DraftStyleDefault-depth2.public-DraftStyleDefault-listLTR{margin-left:4.5em}.public-DraftStyleDefault-depth2.public-DraftStyleDefault-listRTL{margin-right:4.5em}.public-DraftStyleDefault-depth3.public-DraftStyleDefault-listLTR{margin-left:6em}.public-DraftStyleDefault-depth3.public-DraftStyleDefault-listRTL{margin-right:6em}.public-DraftStyleDefault-depth4.public-DraftStyleDefault-listLTR{margin-left:7.5em}.public-DraftStyleDefault-depth4.public-DraftStyleDefault-listRTL{margin-right:7.5em}.public-DraftStyleDefault-unorderedListItem{list-style-type:square;position:relative}.public-DraftStyleDefault-unorderedListItem.public-DraftStyleDefault-depth0{list-style-type:disc}.public-DraftStyleDefault-unorderedListItem.public-DraftStyleDefault-depth1{list-style-type:circle}.public-DraftStyleDefault-orderedListItem{list-style-type:none;position:relative}.public-DraftStyleDefault-orderedListItem.public-DraftStyleDefault-listLTR:before{left:-36px;position:absolute;text-align:right;width:30px}.public-DraftStyleDefault-orderedListItem.public-DraftStyleDefault-listRTL:before{position:absolute;right:-36px;text-align:left;width:30px}.public-DraftStyleDefault-orderedListItem:before{content:counter(ol0) ". ";counter-increment:ol0}.public-DraftStyleDefault-orderedListItem.public-DraftStyleDefault-depth1:before{content:counter(ol1) ". ";counter-increment:ol1}.public-DraftStyleDefault-orderedListItem.public-DraftStyleDefault-depth2:before{content:counter(ol2) ". ";counter-increment:ol2}.public-DraftStyleDefault-orderedListItem.public-DraftStyleDefault-depth3:before{content:counter(ol3) ". ";counter-increment:ol3}.public-DraftStyleDefault-orderedListItem.public-DraftStyleDefault-depth4:before{content:counter(ol4) ". ";counter-increment:ol4}.public-DraftStyleDefault-depth0.public-DraftStyleDefault-reset{counter-reset:ol0}.public-DraftStyleDefault-depth1.public-DraftStyleDefault-reset{counter-reset:ol1}.public-DraftStyleDefault-depth2.public-DraftStyleDefault-reset{counter-reset:ol2}.public-DraftStyleDefault-depth3.public-DraftStyleDefault-reset{counter-reset:ol3}.public-DraftStyleDefault-depth4.public-DraftStyleDefault-reset{counter-reset:ol4}#wpseo_meta{box-sizing:border-box}#wpseo_meta *,#wpseo_meta :after,#wpseo_meta :before{box-sizing:inherit}#wp-description-wrap .wp-editor-area{border:0}.term-description-wrap td>textarea#description{min-height:530px}ul.wpseo-metabox-tabs{display:none;margin-top:6px;margin-bottom:0}ul.wpseo-metabox-tabs:after{content:"";display:table;clear:both}.wpseo-metabox-tabs-div{margin:0 5px 5px}.wpseo-metabox-tabs-div ul{list-style:none}#wpseo-meta-section-addons{padding:0 5px 5px}#wpseo-meta-section-addons .wpseo-metabox-tabs-div{margin:0}ul.wpseo-metabox-tabs li.active{background-color:#fdfdfd}.wpseo-meta-section,.wpseo-meta-section-react{display:none;width:100%;min-height:100%;height:auto;max-width:calc(100% - 50px);vertical-align:top}.wpseo-meta-section.active{display:inline-block;box-shadow:0 1px 2px rgba(0,0,0,.2)}.wpseo-meta-section-react.active{display:block;margin-bottom:10px;box-shadow:0 1px 2px rgba(0,0,0,.2)}.wpseo-metabox-content{display:-ms-flexbox;display:flex}.wpseo-metabox-sidebar{width:46px;padding:0;background-color:#fff}.wpseo-metabox-sidebar ul{margin:0 0 0 1px}.wpseo-metabox-sidebar ul li:nth-child(1){z-index:10}.wpseo-metabox-sidebar ul li:nth-child(2){z-index:9}.wpseo-metabox-sidebar ul li:nth-child(3){z-index:8}.wpseo-metabox-sidebar ul li:nth-child(4){z-index:7}.wpseo-metabox-sidebar ul li:nth-child(5){z-index:6}.wpseo-metabox-sidebar ul li:nth-child(6){z-index:5}.wpseo-metabox-sidebar ul li{box-shadow:0 1px 2px rgba(0,0,0,.2);display:block;margin-bottom:0;text-align:center;position:relative}.wpseo-metabox-sidebar ul li a{color:#000;padding:8px;background-color:#f8f8f8}.wpseo-metabox-sidebar ul li .yst-traffic-light{margin:0}.wpseo-metabox-sidebar ul li span.dashicons{width:100%}.wpseo-metabox-sidebar ul li span.wpseo-buy-premium{color:#a4286a}.wpseo-metabox-sidebar ul li span.wpseo-buy-premium:hover{color:#832055}.wpseo-metabox-sidebar ul li.active{z-index:50}.wpseo-metabox-sidebar ul li.active:after{display:block;float:left;position:absolute;top:0;left:-3px;width:3px;height:46px;background-color:#fff;content:" ";z-index:110}.wpseo-metabox-sidebar ul li.active a{color:#0073aa;background-color:#fff}.wpseo-metabox-sidebar ul li.active span.wpseo-buy-premium{color:#a4286a;border-color:#a4286a}.wpseo-metabox-sidebar ul li.active span.wpseo-buy-premium:hover{color:#832055;border-color:#832055}.wpseo-metabox-sidebar a{padding:5px;display:block;text-decoration:none;vertical-align:middle}ul.wpseo-metabox-tabs li{float:right;margin-left:5px;margin-bottom:-1px;padding:0;border:1px solid #dfdfdf;border-bottom:0 none}ul.wpseo-metabox-tabs li .wpseo-keyword{display:inline-block;vertical-align:top;max-width:8em;max-width:8rem;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.wpseotab{display:none;padding:16px;border:1px solid #ddd;background-color:#fdfdfd}.wpseotab .wpseo-cornerstone-checkbox{margin-left:.5em}.wpseotab.content{padding:20px 15px}.wpseotab.active{display:block}.wpseo-metabox-tabs .wpseo_tablink{display:inline-block;vertical-align:top;padding:5px 12px 6px;text-decoration:none}.wpseo-metabox-tabs .wpseo_content_tab a{padding-left:12px}.wpseo-metabox-tabs .wpseo-score-icon{margin-right:0}#wpseo-meta-section-social .wpseo-metabox-tabs .wpseo_tablink{padding:5px 7px}.wpseo-metabox-tabs .wpseo_tablink .dashicons{width:16px;height:16px;font-size:16px}.wpseo-metabox-sidebar .dashicons{width:30px;height:30px;font-size:30px}.wpseo-metabox-tabs-div div.wpseo-tabs-panel{overflow:auto;padding:.5em .9em;border:1px solid}#wpseo_meta .inside{margin:0}#wpseo_meta .inside::after{content:"";display:table;clear:both}#wpseo_meta .postbox .inside .wpseotab{font-size:13px!important}.wpseotab .select2-container,.wpseotab input,.wpseotab label,.wpseotab p.error-message,.wpseotab textarea,.yoast-metabox__description{max-width:600px}.wpseotab fieldset{padding-top:5px}.wpseotab label{display:block}.wpseotab input[type=radio]+label,.wpseotab input[type=checkbox]+label{display:inline-block;font-weight:400}.wpseotab fieldset,.wpseotab label{margin-top:2em;margin-bottom:.5em}.wpseotab input[type=checkbox],.wpseotab input[type=checkbox]+label{margin-top:2em;margin-bottom:0;font-size:1em}.wpseotab fieldset:first-child,.wpseotab input[type=checkbox]:first-child,.wpseotab input[type=checkbox]:first-child+label,.wpseotab label:first-child{margin-top:10px}.wpseotab input[type=radio]{margin-top:0}.wpseotab input[type=radio]+label{margin:0 0 0 1em}.wpseotab p.error-message,.yoast-metabox__description{margin:.5em 0}.wpseotab select[multiple]{margin-top:0}.wpseotab .wpseo_image_upload_button{margin-right:3px}.good,.warn,.wrong{font-weight:600}.good{color:green}.warn{color:maroon}.wrong{color:#dc3232}#current_seo_title span{padding:2px 5px;background-color:#ffffe0}#focuskwresults ul{margin:0}#focuskwresults li,#focuskwresults p{font-size:13px}#focuskwresults li{margin:0 20px 0 0;list-style-type:disc}.wpseo_hidden{display:none}.wpseo_msg{margin:5px 0 10px;padding:0 5px;border:1px solid #e6db55;background-color:#ffffe0}ul.wpseo-metabox-tabs li.wpseo-tab-add-keyword{border:1px dashed #dfdfdf;border-bottom:none}.wpseo-tab-add-keyword .wpseo-add-keyword.button{height:auto;padding:5px 10px 5px 12px;vertical-align:top;font-size:inherit;line-height:inherit;font-weight:700;box-shadow:none;background:0 0;text-decoration:none}.wpseo-tab-add-keyword .wpseo-add-keyword.button:focus{box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wpseo-tab-add-keyword .wpseo-add-keyword.button:active{-ms-transform:none;transform:none}.wpseo-add-keyword-plus{display:inline-block;vertical-align:top;margin:-1px 0 0 3px;font-size:20px}#wpseo-add-keyword-popup-title{margin:1em 0;font-size:1.3em}.snippet-editor__button.snippet-editor__edit-button:focus{border-color:#5b9dd9;outline:0;color:#23282d;background-color:#fafafa;box-shadow:0 0 3px rgba(0,115,170,.8)}.wpseo-admin-page .subsubsub li{display:inline;max-width:none}.yoast-seo-help-container{float:right;width:100%;max-width:none}.yoast-seo-help-container .yoast-help-panel{margin:.5em 0!important}.wpseo_content_wrapper p.search-box{margin:10px 0 5px}.wpseo-metabox-tabs .active a{color:#333}#wpseotab .ui-widget-content .ui-state-hover{border:1px solid #dfdfdf;color:#333;background:#f1f1f1}.yst-traffic-light-container{display:block;height:30px}.yst-traffic-light{width:19px;height:30px;margin:0 5px 0 0}.yst-traffic-light .traffic-light-color{display:none}.yst-traffic-light.bad .traffic-light-red,.yst-traffic-light.good .traffic-light-green,.yst-traffic-light.init .traffic-light-init,.yst-traffic-light.na .traffic-light-empty,.yst-traffic-light.ok .traffic-light-orange{display:inline}#wpseo-score{float:right;margin:0 -5px 0 5px}.yoast-seo-score .yoast-logo.svg{float:right;width:18px;margin-left:7px;height:18px;background:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%20role%3D%22img%22%20aria%2Dhidden%3D%22true%22%20focusable%3D%22false%22%3E%3Cpath%20fill%3D%22%23999%22%20d%3D%22M403%20218h691l%2D26%2072h%2D665q%2D110%200%2D188%2E5%2079t%2D78%2E5%20189v771q0%2095%2060%2E5%20169%2E5t153%2E5%2093%2E5q23%205%2098%205v72h%2D45q%2D140%200%2D239%2E5%2D100t%2D99%2E5%2D240v%2D771q0%2D140%2099%2E5%2D240t239%2E5%2D100zm851%2D218h247l%2D482%201294q%2D23%2061%2D40%2E5%20103%2E5t%2D45%2098%2D54%2093%2E5%2D64%2E5%2078%2E5%2D79%2E5%2065%2D95%2E5%2041%2D116%2018%2E5v%2D195q163%2D26%20220%2D182%2020%2D52%2020%2D105%200%2D54%2D20%2D106l%2D285%2D733h228l187%20585zm474%20558v1111h%2D795q37%2D55%2045%2D73h678v%2D1038q0%2D85%2D49%2E5%2D155t%2D129%2E5%2D99l25%2D67q101%2034%20163%2E5%20123%2E5t62%2E5%20197%2E5z%22%2F%3E%3C%2Fsvg%3E") no-repeat;background-size:18px}.yoast-seo-score .yoast-logo.svg.good{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%20role%3D%22img%22%20aria%2Dhidden%3D%22true%22%20focusable%3D%22false%22%3E%3Cpath%20fill%3D%22%237ad03a%22%20d%3D%22M403%20218h691l%2D26%2072h%2D665q%2D110%200%2D188%2E5%2079t%2D78%2E5%20189v771q0%2095%2060%2E5%20169%2E5t153%2E5%2093%2E5q23%205%2098%205v72h%2D45q%2D140%200%2D239%2E5%2D100t%2D99%2E5%2D240v%2D771q0%2D140%2099%2E5%2D240t239%2E5%2D100zm851%2D218h247l%2D482%201294q%2D23%2061%2D40%2E5%20103%2E5t%2D45%2098%2D54%2093%2E5%2D64%2E5%2078%2E5%2D79%2E5%2065%2D95%2E5%2041%2D116%2018%2E5v%2D195q163%2D26%20220%2D182%2020%2D52%2020%2D105%200%2D54%2D20%2D106l%2D285%2D733h228l187%20585zm474%20558v1111h%2D795q37%2D55%2045%2D73h678v%2D1038q0%2D85%2D49%2E5%2D155t%2D129%2E5%2D99l25%2D67q101%2034%20163%2E5%20123%2E5t62%2E5%20197%2E5z%22%2F%3E%3C%2Fsvg%3E")}.yoast-seo-score .yoast-logo.svg.ok{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%20role%3D%22img%22%20aria%2Dhidden%3D%22true%22%20focusable%3D%22false%22%3E%3Cpath%20fill%3D%22%23ee7c1b%22%20d%3D%22M403%20218h691l%2D26%2072h%2D665q%2D110%200%2D188%2E5%2079t%2D78%2E5%20189v771q0%2095%2060%2E5%20169%2E5t153%2E5%2093%2E5q23%205%2098%205v72h%2D45q%2D140%200%2D239%2E5%2D100t%2D99%2E5%2D240v%2D771q0%2D140%2099%2E5%2D240t239%2E5%2D100zm851%2D218h247l%2D482%201294q%2D23%2061%2D40%2E5%20103%2E5t%2D45%2098%2D54%2093%2E5%2D64%2E5%2078%2E5%2D79%2E5%2065%2D95%2E5%2041%2D116%2018%2E5v%2D195q163%2D26%20220%2D182%2020%2D52%2020%2D105%200%2D54%2D20%2D106l%2D285%2D733h228l187%20585zm474%20558v1111h%2D795q37%2D55%2045%2D73h678v%2D1038q0%2D85%2D49%2E5%2D155t%2D129%2E5%2D99l25%2D67q101%2034%20163%2E5%20123%2E5t62%2E5%20197%2E5z%22%2F%3E%3C%2Fsvg%3E")}.yoast-seo-score .yoast-logo.svg.bad{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%20role%3D%22img%22%20aria%2Dhidden%3D%22true%22%20focusable%3D%22false%22%3E%3Cpath%20fill%3D%22%23dc3232%22%20d%3D%22M403%20218h691l%2D26%2072h%2D665q%2D110%200%2D188%2E5%2079t%2D78%2E5%20189v771q0%2095%2060%2E5%20169%2E5t153%2E5%2093%2E5q23%205%2098%205v72h%2D45q%2D140%200%2D239%2E5%2D100t%2D99%2E5%2D240v%2D771q0%2D140%2099%2E5%2D240t239%2E5%2D100zm851%2D218h247l%2D482%201294q%2D23%2061%2D40%2E5%20103%2E5t%2D45%2098%2D54%2093%2E5%2D64%2E5%2078%2E5%2D79%2E5%2065%2D95%2E5%2041%2D116%2018%2E5v%2D195q163%2D26%20220%2D182%2020%2D52%2020%2D105%200%2D54%2D20%2D106l%2D285%2D733h228l187%20585zm474%20558v1111h%2D795q37%2D55%2045%2D73h678v%2D1038q0%2D85%2D49%2E5%2D155t%2D129%2E5%2D99l25%2D67q101%2034%20163%2E5%20123%2E5t62%2E5%20197%2E5z%22%2F%3E%3C%2Fsvg%3E")}.yoast-seo-score .yoast-logo.svg.na{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%20role%3D%22img%22%20aria%2Dhidden%3D%22true%22%20focusable%3D%22false%22%3E%3Cpath%20fill%3D%22%23999%22%20d%3D%22M403%20218h691l%2D26%2072h%2D665q%2D110%200%2D188%2E5%2079t%2D78%2E5%20189v771q0%2095%2060%2E5%20169%2E5t153%2E5%2093%2E5q23%205%2098%205v72h%2D45q%2D140%200%2D239%2E5%2D100t%2D99%2E5%2D240v%2D771q0%2D140%2099%2E5%2D240t239%2E5%2D100zm851%2D218h247l%2D482%201294q%2D23%2061%2D40%2E5%20103%2E5t%2D45%2098%2D54%2093%2E5%2D64%2E5%2078%2E5%2D79%2E5%2065%2D95%2E5%2041%2D116%2018%2E5v%2D195q163%2D26%20220%2D182%2020%2D52%2020%2D105%200%2D54%2D20%2D106l%2D285%2D733h228l187%20585zm474%20558v1111h%2D795q37%2D55%2045%2D73h678v%2D1038q0%2D85%2D49%2E5%2D155t%2D129%2E5%2D99l25%2D67q101%2034%20163%2E5%20123%2E5t62%2E5%20197%2E5z%22%2F%3E%3C%2Fsvg%3E")}.yoast-seo-score .yoast-logo.svg.noindex{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%20role%3D%22img%22%20aria%2Dhidden%3D%22true%22%20focusable%3D%22false%22%3E%3Cpath%20fill%3D%22%231e8cbe%22%20d%3D%22M403%20218h691l%2D26%2072h%2D665q%2D110%200%2D188%2E5%2079t%2D78%2E5%20189v771q0%2095%2060%2E5%20169%2E5t153%2E5%2093%2E5q23%205%2098%205v72h%2D45q%2D140%200%2D239%2E5%2D100t%2D99%2E5%2D240v%2D771q0%2D140%2099%2E5%2D240t239%2E5%2D100zm851%2D218h247l%2D482%201294q%2D23%2061%2D40%2E5%20103%2E5t%2D45%2098%2D54%2093%2E5%2D64%2E5%2078%2E5%2D79%2E5%2065%2D95%2E5%2041%2D116%2018%2E5v%2D195q163%2D26%20220%2D182%2020%2D52%2020%2D105%200%2D54%2D20%2D106l%2D285%2D733h228l187%20585zm474%20558v1111h%2D795q37%2D55%2045%2D73h678v%2D1038q0%2D85%2D49%2E5%2D155t%2D129%2E5%2D99l25%2D67q101%2034%20163%2E5%20123%2E5t62%2E5%20197%2E5z%22%2F%3E%3C%2Fsvg%3E")}.term-php .wpseo-taxonomy-metabox-postbox>h2{margin:0;padding:8px 12px;border-bottom:1px solid #eee;font-size:14px;line-height:1.4}.wpseo-buy-premium{color:#A4286A;margin-left:5px}.wpseo-metabox-go-to::after{content:" \00BB";position:static;top:auto;left:auto;width:auto;height:auto;border:none}#wpseo-buy-premium-popup-button.button-buy-premium{background:#A4286A;border-color:#A4286A;color:#fff}.wpseo-metabox-buy-premium{position:absolute;left:12px;top:0;padding:8px 0}.wpseo-metabox-buy-premium .dashicons{text-decoration:none}#TB_window #TB_ajaxContent p{padding:5px 0 0;margin:5px 0 0}#TB_window #TB_ajaxContent ul{margin:5px 0 10px}#TB_window #TB_ajaxContent li{list-style:none;margin:5px 0 0}#TB_window #TB_ajaxContent li::before{content:'+';margin:0 0 0 10px;font-weight:700}.yoast-section__heading-icon-list{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%20role%3D%22img%22%20aria%2Dhidden%3D%22true%22%20focusable%3D%22false%22%3E%3Cpath%20fill%3D%22%23555555%22%20d%3D%22M384%201408q0%2080%2D56%20136t%2D136%2056%2D136%2D56%2D56%2D136%2056%2D136%20136%2D56%20136%2056%2056%20136zm0%2D512q0%2080%2D56%20136t%2D136%2056%2D136%2D56%2D56%2D136%2056%2D136%20136%2D56%20136%2056%2056%20136zm1408%20416v192q0%2013%2D9%2E5%2022%2E5t%2D22%2E5%209%2E5h%2D1216q%2D13%200%2D22%2E5%2D9%2E5t%2D9%2E5%2D22%2E5v%2D192q0%2D13%209%2E5%2D22%2E5t22%2E5%2D9%2E5h1216q13%200%2022%2E5%209%2E5t9%2E5%2022%2E5zm%2D1408%2D928q0%2080%2D56%20136t%2D136%2056%2D136%2D56%2D56%2D136%2056%2D136%20136%2D56%20136%2056%2056%20136zm1408%20416v192q0%2013%2D9%2E5%2022%2E5t%2D22%2E5%209%2E5h%2D1216q%2D13%200%2D22%2E5%2D9%2E5t%2D9%2E5%2D22%2E5v%2D192q0%2D13%209%2E5%2D22%2E5t22%2E5%2D9%2E5h1216q13%200%2022%2E5%209%2E5t9%2E5%2022%2E5zm0%2D512v192q0%2013%2D9%2E5%2022%2E5t%2D22%2E5%209%2E5h%2D1216q%2D13%200%2D22%2E5%2D9%2E5t%2D9%2E5%2D22%2E5v%2D192q0%2D13%209%2E5%2D22%2E5t22%2E5%2D9%2E5h1216q13%200%2022%2E5%209%2E5t9%2E5%2022%2E5z%22%2F%3E%3C%2Fsvg%3E")}.yoast-section__heading-icon-key{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%20role%3D%22img%22%20aria%2Dhidden%3D%22true%22%20focusable%3D%22false%22%3E%3Cpath%20fill%3D%22%23555555%22%20d%3D%22M832%20512q0%2D80%2D56%2D136t%2D136%2D56%2D136%2056%2D56%20136q0%2042%2019%2083%2D41%2D19%2D83%2D19%2D80%200%2D136%2056t%2D56%20136%2056%20136%20136%2056%20136%2D56%2056%2D136q0%2D42%2D19%2D83%2041%2019%2083%2019%2080%200%20136%2D56t56%2D136zm851%20704q0%2017%2D49%2066t%2D66%2049q%2D9%200%2D28%2E5%2D16t%2D36%2E5%2D33%2D38%2E5%2D40%2D24%2E5%2D26l%2D96%2096%20220%20220q28%2028%2028%2068%200%2042%2D39%2081t%2D81%2039q%2D40%200%2D68%2D28l%2D671%2D671q%2D176%20131%2D365%20131%2D163%200%2D265%2E5%2D102%2E5t%2D102%2E5%2D265%2E5q0%2D160%2095%2D313t248%2D248%20313%2D95q163%200%20265%2E5%20102%2E5t102%2E5%20265%2E5q0%20189%2D131%20365l355%20355%2096%2D96q%2D3%2D3%2D26%2D24%2E5t%2D40%2D38%2E5%2D33%2D36%2E5%2D16%2D28%2E5q0%2D17%2049%2D66t66%2D49q13%200%2023%2010%206%206%2046%2044%2E5t82%2079%2E5%2086%2E5%2086%2073%2078%2028%2E5%2041z%22%2F%3E%3C%2Fsvg%3E")}.yoast-section__heading-icon-edit{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%20role%3D%22img%22%20aria%2Dhidden%3D%22true%22%20focusable%3D%22false%22%3E%3Cpath%20fill%3D%22%23555555%22%20d%3D%22M491%201536l91%2D91%2D235%2D235%2D91%2091v107h128v128h107zm523%2D928q0%2D22%2D22%2D22%2D10%200%2D17%207l%2D542%20542q%2D7%207%2D7%2017%200%2022%2022%2022%2010%200%2017%2D7l542%2D542q7%2D7%207%2D17zm%2D54%2D192l416%20416%2D832%20832h%2D416v%2D416zm683%2096q0%2053%2D37%2090l%2D166%20166%2D416%2D416%20166%2D165q36%2D38%2090%2D38%2053%200%2091%2038l235%20234q37%2039%2037%2091z%22%20%2F%3E%3C%2Fsvg%3E")}.yoast-section{box-shadow:0 1px 2px rgba(0,0,0,.2);position:relative;background-color:#fff;padding:0 20px 15px}.yoast-section__heading{padding:8px 20px;font-size:1rem;margin:0 -20px 15px;font-family:"Open Sans",sans-serif;font-weight:300;color:#555}.yoast-section__heading-icon{padding-right:44px;background-repeat:no-repeat;background-position:right 20px top .6em;background-size:16px}.yoast-section,.yoast-section *,.yoast-section :after,.yoast-section :before,.yoast-section:after,.yoast-section:before{box-sizing:border-box}.yoast-tooltip.yoast-tooltip-hidden::after,.yoast-tooltip.yoast-tooltip-hidden::before{display:none}.screen-reader-text.wpseo-generic-tab-textual-score,.screen-reader-text.wpseo-keyword-tab-textual-score{display:block}.yoast-notice-go-premium{border-right-color:#a4286a;background:#f1f1f1;margin:0}.editor-styles-wrapper mark.annotation-text-yoast{background-color:#e1bee7}@media screen and (max-width:782px){.wpseo-metabox-buy-premium .wpseo-buy-premium{display:inline-block;width:20px;height:20px;margin-left:5px;padding:0}.yoast-help-panel{max-width:none!important}#wpseo-crawl-issues-table-form .subsubsub{float:none;max-width:calc(100vw - 20px)}#wpseo-crawl-issues-table-form .yoast-help-button{margin-top:3px}.wpseotab select[multiple]{height:auto!important}}@media screen and (max-width:600px){.wpseotab.content{padding:16px 0}}
css/dist/metabox-1110.min.css ADDED
@@ -0,0 +1 @@
 
1
+ .yoast-tooltip::after,.yoast-tooltip::before{opacity:0;pointer-events:none;position:absolute}.yoast-tooltip{position:relative}button.yoast-tooltip{overflow:visible}.yoast-tooltip::after{display:none;z-index:1000000;padding:6px 8px 5px;border-radius:3px;color:#fff;background:rgba(0,0,0,.8);text-shadow:none;font:normal normal 11px/1.45454545 Helvetica,arial,nimbussansl,liberationsans,freesans,clean,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";text-align:center;white-space:pre;text-decoration:none;letter-spacing:normal;text-transform:none;word-wrap:break-word;content:attr(aria-label);-webkit-font-smoothing:subpixel-antialiased}.yoast-tooltip-alt::after{content:attr(data-label)}.yoast-tooltip::before{display:none;z-index:1000001;width:0;height:0;border:5px solid transparent;color:rgba(0,0,0,.8);content:"\00a0"}@keyframes yoast-tooltip-appear{from{opacity:0}to{opacity:1}}.yoast-tooltip:active::after,.yoast-tooltip:active::before,.yoast-tooltip:focus::after,.yoast-tooltip:focus::before,.yoast-tooltip:hover::after,.yoast-tooltip:hover::before{display:inline-block;text-decoration:none;animation-name:yoast-tooltip-appear;animation-duration:.1s;animation-timing-function:ease-in;animation-delay:.4s;animation-fill-mode:forwards}.yoast-tooltip-no-delay:active::after,.yoast-tooltip-no-delay:active::before,.yoast-tooltip-no-delay:focus::after,.yoast-tooltip-no-delay:focus::before,.yoast-tooltip-no-delay:hover::after,.yoast-tooltip-no-delay:hover::before{opacity:1;animation:none}.yoast-tooltip-multiline:active::after,.yoast-tooltip-multiline:focus::after,.yoast-tooltip-multiline:hover::after{display:table-cell}.yoast-tooltip-s::after,.yoast-tooltip-se::after,.yoast-tooltip-sw::after{top:100%;right:50%;margin-top:5px}.yoast-tooltip-s::before,.yoast-tooltip-se::before,.yoast-tooltip-sw::before{top:auto;right:50%;bottom:-5px;margin-right:-5px;border-bottom-color:rgba(0,0,0,.8)}.yoast-tooltip-se::after{right:auto;left:50%;margin-left:-15px}.yoast-tooltip-sw::after{margin-right:-15px}.yoast-tooltip-n::after,.yoast-tooltip-ne::after,.yoast-tooltip-nw::after{right:50%;bottom:100%;margin-bottom:5px}.yoast-tooltip-n::before,.yoast-tooltip-ne::before,.yoast-tooltip-nw::before{top:-5px;right:50%;bottom:auto;margin-right:-5px;border-top-color:rgba(0,0,0,.8)}.yoast-tooltip-ne::after{right:auto;left:50%;margin-left:-15px}.yoast-tooltip-nw::after{margin-right:-15px}.yoast-tooltip-n::after,.yoast-tooltip-s::after{-ms-transform:translateX(50%);transform:translateX(50%)}.yoast-tooltip-w::after{right:100%;bottom:50%;margin-right:5px;-ms-transform:translateY(50%);transform:translateY(50%)}.yoast-tooltip-w::before{top:50%;bottom:50%;left:-5px;margin-top:-5px;border-left-color:rgba(0,0,0,.8)}.yoast-tooltip-e::after{bottom:50%;left:100%;margin-left:5px;-ms-transform:translateY(50%);transform:translateY(50%)}.yoast-tooltip-e::before{top:50%;right:-5px;bottom:50%;margin-top:-5px;border-right-color:rgba(0,0,0,.8)}.yoast-tooltip-multiline::after{width:250px;width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:250px;border-collapse:separate;white-space:pre-line;word-wrap:normal;word-break:break-word}.yoast-tooltip-multiline.yoast-tooltip-n::after,.yoast-tooltip-multiline.yoast-tooltip-s::after{right:auto;left:50%;-ms-transform:translateX(-50%);transform:translateX(-50%)}.yoast-tooltip-multiline.yoast-tooltip-e::after,.yoast-tooltip-multiline.yoast-tooltip-w::after{right:100%}@media screen and (min-width:0\0){.yoast-tooltip-multiline::after{width:250px}}.yoast-tooltip-sticky::after,.yoast-tooltip-sticky::before{display:inline-block}.yoast-tooltip-sticky.yoast-tooltip-multiline::after{display:table-cell}@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min--moz-device-pixel-ratio:2),only screen and (-moz-min-device-pixel-ratio:2),only screen and (min-device-pixel-ratio:2),only screen and (min-resolution:192dpi),only screen and (min-resolution:2dppx){.yoast-tooltip-w::after{margin-right:4.5px}}.postbox .yoast-help-center__button{border:none;box-shadow:none;text-transform:none;text-decoration:underline;color:#0073aa;margin:0;min-height:0;font:inherit;padding:8px 0}.wpseotab label,.wpseotab legend{font-weight:600}.postbox .yoast-help-center__button svg{margin:0 13px}#edittag .yoast-video-tutorial__video-container{float:none;max-width:100%;margin:0 auto}#edittag .yoast-video-tutorial__descriptions{margin:0 auto;padding:0}@media screen and (max-width:1480px){#poststuff .yoast-video-tutorial__video-container{float:none;max-width:100%;margin:0 auto}#poststuff .yoast-video-tutorial__descriptions{margin:0 auto;padding:0}}.wpseo-metabox #yoast-help-center-container{margin:8px 0}.draftJsMentionPlugin__mention__29BEd,.draftJsMentionPlugin__mention__29BEd:visited{color:#575f67;cursor:pointer;display:inline-block;background:#e6f3ff;padding-left:2px;padding-right:2px;border-radius:2px;text-decoration:none}.draftJsMentionPlugin__mention__29BEd:focus,.draftJsMentionPlugin__mention__29BEd:hover{color:#677584;background:#edf5fd;outline:0}.draftJsMentionPlugin__mention__29BEd:active{color:#222;background:#455261}.draftJsMentionPlugin__mentionSuggestionsEntry__3mSwm{padding:7px 10px 3px;transition:background-color .4s cubic-bezier(.27,1.27,.48,.56)}.draftJsMentionPlugin__mentionSuggestionsEntry__3mSwm:active{background-color:#cce7ff}.draftJsMentionPlugin__mentionSuggestionsEntryFocused__3LcTd{background-color:#e6f3ff}.draftJsMentionPlugin__mentionSuggestionsEntryText__3Jobq{display:inline-block;margin-left:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:368px;font-size:.9em;margin-bottom:.2em}.draftJsMentionPlugin__mentionSuggestionsEntryAvatar__1xgA9{display:inline-block;width:24px;height:24px;border-radius:12px}.draftJsMentionPlugin__mentionSuggestions__2DWjA{border:1px solid #eee;margin-top:.4em;position:absolute;min-width:220px;max-width:440px;background:#fff;border-radius:2px;box-shadow:0 4px 30px 0 #dcdcdc;cursor:pointer;padding-top:8px;padding-bottom:8px;z-index:2;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;box-sizing:border-box;-ms-transform:scale(0);transform:scale(0)}.DraftEditor-root,.public-DraftEditor-block{position:relative}#edittag>#wp-description-wrap,.DraftEditorPlaceholder-hidden{display:none}.DraftEditor-editorContainer,.DraftEditor-root,.public-DraftEditor-content{height:inherit;text-align:initial}.public-DraftEditor-content[contenteditable=true]{-webkit-user-modify:read-write-plaintext-only}.DraftEditor-editorContainer{background-color:rgba(255,255,255,0);border-left:.1px solid transparent;position:relative;z-index:1}.DraftEditor-alignLeft .public-DraftStyleDefault-block{text-align:left}.DraftEditor-alignLeft .public-DraftEditorPlaceholder-root{left:0;text-align:left}.DraftEditor-alignCenter .public-DraftStyleDefault-block{text-align:center}.DraftEditor-alignCenter .public-DraftEditorPlaceholder-root{margin:0 auto;text-align:center;width:100%}.DraftEditor-alignRight .public-DraftStyleDefault-block{text-align:right}.DraftEditor-alignRight .public-DraftEditorPlaceholder-root{right:0;text-align:right}.public-DraftEditorPlaceholder-root{color:#9197a3;position:absolute;z-index:1}.public-DraftEditorPlaceholder-hasFocus{color:#bdc1c9}.public-DraftStyleDefault-block{position:relative;white-space:pre-wrap}.public-DraftStyleDefault-ltr{direction:ltr;text-align:left}.public-DraftStyleDefault-rtl{direction:rtl;text-align:right}.public-DraftStyleDefault-listLTR{direction:ltr}.public-DraftStyleDefault-listRTL{direction:rtl}.public-DraftStyleDefault-ol,.public-DraftStyleDefault-ul{margin:16px 0;padding:0}.public-DraftStyleDefault-depth0.public-DraftStyleDefault-listLTR{margin-left:1.5em}.public-DraftStyleDefault-depth0.public-DraftStyleDefault-listRTL{margin-right:1.5em}.public-DraftStyleDefault-depth1.public-DraftStyleDefault-listLTR{margin-left:3em}.public-DraftStyleDefault-depth1.public-DraftStyleDefault-listRTL{margin-right:3em}.public-DraftStyleDefault-depth2.public-DraftStyleDefault-listLTR{margin-left:4.5em}.public-DraftStyleDefault-depth2.public-DraftStyleDefault-listRTL{margin-right:4.5em}.public-DraftStyleDefault-depth3.public-DraftStyleDefault-listLTR{margin-left:6em}.public-DraftStyleDefault-depth3.public-DraftStyleDefault-listRTL{margin-right:6em}.public-DraftStyleDefault-depth4.public-DraftStyleDefault-listLTR{margin-left:7.5em}.public-DraftStyleDefault-depth4.public-DraftStyleDefault-listRTL{margin-right:7.5em}.public-DraftStyleDefault-unorderedListItem{list-style-type:square;position:relative}.public-DraftStyleDefault-unorderedListItem.public-DraftStyleDefault-depth0{list-style-type:disc}.public-DraftStyleDefault-unorderedListItem.public-DraftStyleDefault-depth1{list-style-type:circle}.public-DraftStyleDefault-orderedListItem{list-style-type:none;position:relative}.public-DraftStyleDefault-orderedListItem.public-DraftStyleDefault-listLTR:before{left:-36px;position:absolute;text-align:right;width:30px}.public-DraftStyleDefault-orderedListItem.public-DraftStyleDefault-listRTL:before{position:absolute;right:-36px;text-align:left;width:30px}.public-DraftStyleDefault-orderedListItem:before{content:counter(ol0) ". ";counter-increment:ol0}.public-DraftStyleDefault-orderedListItem.public-DraftStyleDefault-depth1:before{content:counter(ol1) ". ";counter-increment:ol1}.public-DraftStyleDefault-orderedListItem.public-DraftStyleDefault-depth2:before{content:counter(ol2) ". ";counter-increment:ol2}.public-DraftStyleDefault-orderedListItem.public-DraftStyleDefault-depth3:before{content:counter(ol3) ". ";counter-increment:ol3}.public-DraftStyleDefault-orderedListItem.public-DraftStyleDefault-depth4:before{content:counter(ol4) ". ";counter-increment:ol4}.public-DraftStyleDefault-depth0.public-DraftStyleDefault-reset{counter-reset:ol0}.public-DraftStyleDefault-depth1.public-DraftStyleDefault-reset{counter-reset:ol1}.public-DraftStyleDefault-depth2.public-DraftStyleDefault-reset{counter-reset:ol2}.public-DraftStyleDefault-depth3.public-DraftStyleDefault-reset{counter-reset:ol3}.public-DraftStyleDefault-depth4.public-DraftStyleDefault-reset{counter-reset:ol4}#wpseo_meta{box-sizing:border-box}#wpseo_meta *,#wpseo_meta :after,#wpseo_meta :before{box-sizing:inherit}#wp-description-wrap .wp-editor-area{border:0}.term-description-wrap td>textarea#description{min-height:530px}ul.wpseo-metabox-tabs{display:none;margin-top:6px;margin-bottom:0}ul.wpseo-metabox-tabs:after{content:"";display:table;clear:both}.wpseo-metabox-tabs-div{margin:0 5px 5px}.wpseo-metabox-tabs-div ul{list-style:none}#wpseo-meta-section-addons{padding:0 5px 5px}#wpseo-meta-section-addons .wpseo-metabox-tabs-div{margin:0}ul.wpseo-metabox-tabs li.active{background-color:#fdfdfd}.wpseo-meta-section,.wpseo-meta-section-react{display:none;width:100%;min-height:100%;height:auto;max-width:calc(100% - 50px);vertical-align:top}.wpseo-meta-section.active{display:inline-block;box-shadow:0 1px 2px rgba(0,0,0,.2)}.wpseo-meta-section-react.active{display:block;margin-bottom:10px;box-shadow:0 1px 2px rgba(0,0,0,.2)}.wpseo-metabox-content{display:-ms-flexbox;display:flex}.wpseo-metabox-sidebar{width:46px;padding:0;background-color:#fff}.wpseo-metabox-sidebar ul{margin:0 1px 0 0}.wpseo-metabox-sidebar ul li:nth-child(1){z-index:10}.wpseo-metabox-sidebar ul li:nth-child(2){z-index:9}.wpseo-metabox-sidebar ul li:nth-child(3){z-index:8}.wpseo-metabox-sidebar ul li:nth-child(4){z-index:7}.wpseo-metabox-sidebar ul li:nth-child(5){z-index:6}.wpseo-metabox-sidebar ul li:nth-child(6){z-index:5}.wpseo-metabox-sidebar ul li{box-shadow:0 1px 2px rgba(0,0,0,.2);display:block;margin-bottom:0;text-align:center;position:relative}.wpseo-metabox-sidebar ul li a{color:#000;padding:8px;background-color:#f8f8f8}.wpseo-metabox-sidebar ul li .yst-traffic-light{margin:0}.wpseo-metabox-sidebar ul li span.dashicons{width:100%}.wpseo-metabox-sidebar ul li span.wpseo-buy-premium{color:#a4286a}.wpseo-metabox-sidebar ul li span.wpseo-buy-premium:hover{color:#832055}.wpseo-metabox-sidebar ul li.active{z-index:50}.wpseo-metabox-sidebar ul li.active:after{display:block;float:right;position:absolute;top:0;right:-3px;width:3px;height:46px;background-color:#fff;content:" ";z-index:110}.wpseo-metabox-sidebar ul li.active a{color:#0073aa;background-color:#fff}.wpseo-metabox-sidebar ul li.active span.wpseo-buy-premium{color:#a4286a;border-color:#a4286a}.wpseo-metabox-sidebar ul li.active span.wpseo-buy-premium:hover{color:#832055;border-color:#832055}.wpseo-metabox-sidebar a{padding:5px;display:block;text-decoration:none;vertical-align:middle}ul.wpseo-metabox-tabs li{float:left;margin-right:5px;margin-bottom:-1px;padding:0;border:1px solid #dfdfdf;border-bottom:0 none}ul.wpseo-metabox-tabs li .wpseo-keyword{display:inline-block;vertical-align:top;max-width:8em;max-width:8rem;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.wpseotab{display:none;padding:16px;border:1px solid #ddd;background-color:#fdfdfd}.wpseotab .wpseo-cornerstone-checkbox{margin-right:.5em}.wpseotab.content{padding:20px 15px}.wpseotab.active{display:block}.wpseo-metabox-tabs .wpseo_tablink{display:inline-block;vertical-align:top;padding:5px 12px 6px;text-decoration:none}.wpseo-metabox-tabs .wpseo_content_tab a{padding-right:12px}.wpseo-metabox-tabs .wpseo-score-icon{margin-left:0}#wpseo-meta-section-social .wpseo-metabox-tabs .wpseo_tablink{padding:5px 7px}.wpseo-metabox-tabs .wpseo_tablink .dashicons{width:16px;height:16px;font-size:16px}.wpseo-metabox-sidebar .dashicons{width:30px;height:30px;font-size:30px}.wpseo-metabox-tabs-div div.wpseo-tabs-panel{overflow:auto;padding:.5em .9em;border:1px solid}#wpseo_meta .inside{margin:0}#wpseo_meta .inside::after{content:"";display:table;clear:both}#wpseo_meta .postbox .inside .wpseotab{font-size:13px!important}.wpseotab .select2-container,.wpseotab input,.wpseotab label,.wpseotab p.error-message,.wpseotab textarea,.yoast-metabox__description{max-width:600px}.wpseotab fieldset{padding-top:5px}.wpseotab label{display:block}.wpseotab input[type=radio]+label,.wpseotab input[type=checkbox]+label{display:inline-block;font-weight:400}.wpseotab fieldset,.wpseotab label{margin-top:2em;margin-bottom:.5em}.wpseotab input[type=checkbox],.wpseotab input[type=checkbox]+label{margin-top:2em;margin-bottom:0;font-size:1em}.wpseotab fieldset:first-child,.wpseotab input[type=checkbox]:first-child,.wpseotab input[type=checkbox]:first-child+label,.wpseotab label:first-child{margin-top:10px}.wpseotab input[type=radio]{margin-top:0}.wpseotab input[type=radio]+label{margin:0 1em 0 0}.wpseotab p.error-message,.yoast-metabox__description{margin:.5em 0}.wpseotab select[multiple]{margin-top:0}.wpseotab .wpseo_image_upload_button{margin-left:3px}.good,.warn,.wrong{font-weight:600}.good{color:green}.warn{color:maroon}.wrong{color:#dc3232}#current_seo_title span{padding:2px 5px;background-color:#ffffe0}#focuskwresults ul{margin:0}#focuskwresults li,#focuskwresults p{font-size:13px}#focuskwresults li{margin:0 0 0 20px;list-style-type:disc}.wpseo_hidden{display:none}.wpseo_msg{margin:5px 0 10px;padding:0 5px;border:1px solid #e6db55;background-color:#ffffe0}ul.wpseo-metabox-tabs li.wpseo-tab-add-keyword{border:1px dashed #dfdfdf;border-bottom:none}.wpseo-tab-add-keyword .wpseo-add-keyword.button{height:auto;padding:5px 12px 5px 10px;vertical-align:top;font-size:inherit;line-height:inherit;font-weight:700;box-shadow:none;background:0 0;text-decoration:none}.wpseo-tab-add-keyword .wpseo-add-keyword.button:focus{box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wpseo-tab-add-keyword .wpseo-add-keyword.button:active{-ms-transform:none;transform:none}.wpseo-add-keyword-plus{display:inline-block;vertical-align:top;margin:-1px 3px 0 0;font-size:20px}#wpseo-add-keyword-popup-title{margin:1em 0;font-size:1.3em}.snippet-editor__button.snippet-editor__edit-button:focus{border-color:#5b9dd9;outline:0;color:#23282d;background-color:#fafafa;box-shadow:0 0 3px rgba(0,115,170,.8)}.wpseo-admin-page .subsubsub li{display:inline;max-width:none}.yoast-seo-help-container{float:left;width:100%;max-width:none}.yoast-seo-help-container .yoast-help-panel{margin:.5em 0!important}.wpseo_content_wrapper p.search-box{margin:10px 0 5px}.wpseo-metabox-tabs .active a{color:#333}#wpseotab .ui-widget-content .ui-state-hover{border:1px solid #dfdfdf;color:#333;background:#f1f1f1}.yst-traffic-light-container{display:block;height:30px}.yst-traffic-light{width:19px;height:30px;margin:0 0 0 5px}.yst-traffic-light .traffic-light-color{display:none}.yst-traffic-light.bad .traffic-light-red,.yst-traffic-light.good .traffic-light-green,.yst-traffic-light.init .traffic-light-init,.yst-traffic-light.na .traffic-light-empty,.yst-traffic-light.ok .traffic-light-orange{display:inline}#wpseo-score{float:left;margin:0 5px 0 -5px}.yoast-seo-score .yoast-logo.svg{float:left;width:18px;margin-right:7px;height:18px;background:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%20role%3D%22img%22%20aria%2Dhidden%3D%22true%22%20focusable%3D%22false%22%3E%3Cpath%20fill%3D%22%23999%22%20d%3D%22M403%20218h691l%2D26%2072h%2D665q%2D110%200%2D188%2E5%2079t%2D78%2E5%20189v771q0%2095%2060%2E5%20169%2E5t153%2E5%2093%2E5q23%205%2098%205v72h%2D45q%2D140%200%2D239%2E5%2D100t%2D99%2E5%2D240v%2D771q0%2D140%2099%2E5%2D240t239%2E5%2D100zm851%2D218h247l%2D482%201294q%2D23%2061%2D40%2E5%20103%2E5t%2D45%2098%2D54%2093%2E5%2D64%2E5%2078%2E5%2D79%2E5%2065%2D95%2E5%2041%2D116%2018%2E5v%2D195q163%2D26%20220%2D182%2020%2D52%2020%2D105%200%2D54%2D20%2D106l%2D285%2D733h228l187%20585zm474%20558v1111h%2D795q37%2D55%2045%2D73h678v%2D1038q0%2D85%2D49%2E5%2D155t%2D129%2E5%2D99l25%2D67q101%2034%20163%2E5%20123%2E5t62%2E5%20197%2E5z%22%2F%3E%3C%2Fsvg%3E") no-repeat;background-size:18px}.yoast-seo-score .yoast-logo.svg.good{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%20role%3D%22img%22%20aria%2Dhidden%3D%22true%22%20focusable%3D%22false%22%3E%3Cpath%20fill%3D%22%237ad03a%22%20d%3D%22M403%20218h691l%2D26%2072h%2D665q%2D110%200%2D188%2E5%2079t%2D78%2E5%20189v771q0%2095%2060%2E5%20169%2E5t153%2E5%2093%2E5q23%205%2098%205v72h%2D45q%2D140%200%2D239%2E5%2D100t%2D99%2E5%2D240v%2D771q0%2D140%2099%2E5%2D240t239%2E5%2D100zm851%2D218h247l%2D482%201294q%2D23%2061%2D40%2E5%20103%2E5t%2D45%2098%2D54%2093%2E5%2D64%2E5%2078%2E5%2D79%2E5%2065%2D95%2E5%2041%2D116%2018%2E5v%2D195q163%2D26%20220%2D182%2020%2D52%2020%2D105%200%2D54%2D20%2D106l%2D285%2D733h228l187%20585zm474%20558v1111h%2D795q37%2D55%2045%2D73h678v%2D1038q0%2D85%2D49%2E5%2D155t%2D129%2E5%2D99l25%2D67q101%2034%20163%2E5%20123%2E5t62%2E5%20197%2E5z%22%2F%3E%3C%2Fsvg%3E")}.yoast-seo-score .yoast-logo.svg.ok{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%20role%3D%22img%22%20aria%2Dhidden%3D%22true%22%20focusable%3D%22false%22%3E%3Cpath%20fill%3D%22%23ee7c1b%22%20d%3D%22M403%20218h691l%2D26%2072h%2D665q%2D110%200%2D188%2E5%2079t%2D78%2E5%20189v771q0%2095%2060%2E5%20169%2E5t153%2E5%2093%2E5q23%205%2098%205v72h%2D45q%2D140%200%2D239%2E5%2D100t%2D99%2E5%2D240v%2D771q0%2D140%2099%2E5%2D240t239%2E5%2D100zm851%2D218h247l%2D482%201294q%2D23%2061%2D40%2E5%20103%2E5t%2D45%2098%2D54%2093%2E5%2D64%2E5%2078%2E5%2D79%2E5%2065%2D95%2E5%2041%2D116%2018%2E5v%2D195q163%2D26%20220%2D182%2020%2D52%2020%2D105%200%2D54%2D20%2D106l%2D285%2D733h228l187%20585zm474%20558v1111h%2D795q37%2D55%2045%2D73h678v%2D1038q0%2D85%2D49%2E5%2D155t%2D129%2E5%2D99l25%2D67q101%2034%20163%2E5%20123%2E5t62%2E5%20197%2E5z%22%2F%3E%3C%2Fsvg%3E")}.yoast-seo-score .yoast-logo.svg.bad{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%20role%3D%22img%22%20aria%2Dhidden%3D%22true%22%20focusable%3D%22false%22%3E%3Cpath%20fill%3D%22%23dc3232%22%20d%3D%22M403%20218h691l%2D26%2072h%2D665q%2D110%200%2D188%2E5%2079t%2D78%2E5%20189v771q0%2095%2060%2E5%20169%2E5t153%2E5%2093%2E5q23%205%2098%205v72h%2D45q%2D140%200%2D239%2E5%2D100t%2D99%2E5%2D240v%2D771q0%2D140%2099%2E5%2D240t239%2E5%2D100zm851%2D218h247l%2D482%201294q%2D23%2061%2D40%2E5%20103%2E5t%2D45%2098%2D54%2093%2E5%2D64%2E5%2078%2E5%2D79%2E5%2065%2D95%2E5%2041%2D116%2018%2E5v%2D195q163%2D26%20220%2D182%2020%2D52%2020%2D105%200%2D54%2D20%2D106l%2D285%2D733h228l187%20585zm474%20558v1111h%2D795q37%2D55%2045%2D73h678v%2D1038q0%2D85%2D49%2E5%2D155t%2D129%2E5%2D99l25%2D67q101%2034%20163%2E5%20123%2E5t62%2E5%20197%2E5z%22%2F%3E%3C%2Fsvg%3E")}.yoast-seo-score .yoast-logo.svg.na{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%20role%3D%22img%22%20aria%2Dhidden%3D%22true%22%20focusable%3D%22false%22%3E%3Cpath%20fill%3D%22%23999%22%20d%3D%22M403%20218h691l%2D26%2072h%2D665q%2D110%200%2D188%2E5%2079t%2D78%2E5%20189v771q0%2095%2060%2E5%20169%2E5t153%2E5%2093%2E5q23%205%2098%205v72h%2D45q%2D140%200%2D239%2E5%2D100t%2D99%2E5%2D240v%2D771q0%2D140%2099%2E5%2D240t239%2E5%2D100zm851%2D218h247l%2D482%201294q%2D23%2061%2D40%2E5%20103%2E5t%2D45%2098%2D54%2093%2E5%2D64%2E5%2078%2E5%2D79%2E5%2065%2D95%2E5%2041%2D116%2018%2E5v%2D195q163%2D26%20220%2D182%2020%2D52%2020%2D105%200%2D54%2D20%2D106l%2D285%2D733h228l187%20585zm474%20558v1111h%2D795q37%2D55%2045%2D73h678v%2D1038q0%2D85%2D49%2E5%2D155t%2D129%2E5%2D99l25%2D67q101%2034%20163%2E5%20123%2E5t62%2E5%20197%2E5z%22%2F%3E%3C%2Fsvg%3E")}.yoast-seo-score .yoast-logo.svg.noindex{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%20role%3D%22img%22%20aria%2Dhidden%3D%22true%22%20focusable%3D%22false%22%3E%3Cpath%20fill%3D%22%231e8cbe%22%20d%3D%22M403%20218h691l%2D26%2072h%2D665q%2D110%200%2D188%2E5%2079t%2D78%2E5%20189v771q0%2095%2060%2E5%20169%2E5t153%2E5%2093%2E5q23%205%2098%205v72h%2D45q%2D140%200%2D239%2E5%2D100t%2D99%2E5%2D240v%2D771q0%2D140%2099%2E5%2D240t239%2E5%2D100zm851%2D218h247l%2D482%201294q%2D23%2061%2D40%2E5%20103%2E5t%2D45%2098%2D54%2093%2E5%2D64%2E5%2078%2E5%2D79%2E5%2065%2D95%2E5%2041%2D116%2018%2E5v%2D195q163%2D26%20220%2D182%2020%2D52%2020%2D105%200%2D54%2D20%2D106l%2D285%2D733h228l187%20585zm474%20558v1111h%2D795q37%2D55%2045%2D73h678v%2D1038q0%2D85%2D49%2E5%2D155t%2D129%2E5%2D99l25%2D67q101%2034%20163%2E5%20123%2E5t62%2E5%20197%2E5z%22%2F%3E%3C%2Fsvg%3E")}.term-php .wpseo-taxonomy-metabox-postbox>h2{margin:0;padding:8px 12px;border-bottom:1px solid #eee;font-size:14px;line-height:1.4}.wpseo-buy-premium{color:#A4286A;margin-right:5px}.wpseo-metabox-go-to::after{content:" \00BB";position:static;top:auto;right:auto;width:auto;height:auto;border:none}#wpseo-buy-premium-popup-button.button-buy-premium{background:#A4286A;border-color:#A4286A;color:#fff}.wpseo-metabox-buy-premium{position:absolute;right:12px;top:0;padding:8px 0}.wpseo-metabox-buy-premium .dashicons{text-decoration:none}#TB_window #TB_ajaxContent p{padding:5px 0 0;margin:5px 0 0}#TB_window #TB_ajaxContent ul{margin:5px 0 10px}#TB_window #TB_ajaxContent li{list-style:none;margin:5px 0 0}#TB_window #TB_ajaxContent li::before{content:'+';margin:0 10px 0 0;font-weight:700}.yoast-section__heading-icon-list{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%20role%3D%22img%22%20aria%2Dhidden%3D%22true%22%20focusable%3D%22false%22%3E%3Cpath%20fill%3D%22%23555555%22%20d%3D%22M384%201408q0%2080%2D56%20136t%2D136%2056%2D136%2D56%2D56%2D136%2056%2D136%20136%2D56%20136%2056%2056%20136zm0%2D512q0%2080%2D56%20136t%2D136%2056%2D136%2D56%2D56%2D136%2056%2D136%20136%2D56%20136%2056%2056%20136zm1408%20416v192q0%2013%2D9%2E5%2022%2E5t%2D22%2E5%209%2E5h%2D1216q%2D13%200%2D22%2E5%2D9%2E5t%2D9%2E5%2D22%2E5v%2D192q0%2D13%209%2E5%2D22%2E5t22%2E5%2D9%2E5h1216q13%200%2022%2E5%209%2E5t9%2E5%2022%2E5zm%2D1408%2D928q0%2080%2D56%20136t%2D136%2056%2D136%2D56%2D56%2D136%2056%2D136%20136%2D56%20136%2056%2056%20136zm1408%20416v192q0%2013%2D9%2E5%2022%2E5t%2D22%2E5%209%2E5h%2D1216q%2D13%200%2D22%2E5%2D9%2E5t%2D9%2E5%2D22%2E5v%2D192q0%2D13%209%2E5%2D22%2E5t22%2E5%2D9%2E5h1216q13%200%2022%2E5%209%2E5t9%2E5%2022%2E5zm0%2D512v192q0%2013%2D9%2E5%2022%2E5t%2D22%2E5%209%2E5h%2D1216q%2D13%200%2D22%2E5%2D9%2E5t%2D9%2E5%2D22%2E5v%2D192q0%2D13%209%2E5%2D22%2E5t22%2E5%2D9%2E5h1216q13%200%2022%2E5%209%2E5t9%2E5%2022%2E5z%22%2F%3E%3C%2Fsvg%3E")}.yoast-section__heading-icon-key{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%20role%3D%22img%22%20aria%2Dhidden%3D%22true%22%20focusable%3D%22false%22%3E%3Cpath%20fill%3D%22%23555555%22%20d%3D%22M832%20512q0%2D80%2D56%2D136t%2D136%2D56%2D136%2056%2D56%20136q0%2042%2019%2083%2D41%2D19%2D83%2D19%2D80%200%2D136%2056t%2D56%20136%2056%20136%20136%2056%20136%2D56%2056%2D136q0%2D42%2D19%2D83%2041%2019%2083%2019%2080%200%20136%2D56t56%2D136zm851%20704q0%2017%2D49%2066t%2D66%2049q%2D9%200%2D28%2E5%2D16t%2D36%2E5%2D33%2D38%2E5%2D40%2D24%2E5%2D26l%2D96%2096%20220%20220q28%2028%2028%2068%200%2042%2D39%2081t%2D81%2039q%2D40%200%2D68%2D28l%2D671%2D671q%2D176%20131%2D365%20131%2D163%200%2D265%2E5%2D102%2E5t%2D102%2E5%2D265%2E5q0%2D160%2095%2D313t248%2D248%20313%2D95q163%200%20265%2E5%20102%2E5t102%2E5%20265%2E5q0%20189%2D131%20365l355%20355%2096%2D96q%2D3%2D3%2D26%2D24%2E5t%2D40%2D38%2E5%2D33%2D36%2E5%2D16%2D28%2E5q0%2D17%2049%2D66t66%2D49q13%200%2023%2010%206%206%2046%2044%2E5t82%2079%2E5%2086%2E5%2086%2073%2078%2028%2E5%2041z%22%2F%3E%3C%2Fsvg%3E")}.yoast-section__heading-icon-edit{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20width%3D%221792%22%20height%3D%221792%22%20viewBox%3D%220%200%201792%201792%22%20xmlns%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%20role%3D%22img%22%20aria%2Dhidden%3D%22true%22%20focusable%3D%22false%22%3E%3Cpath%20fill%3D%22%23555555%22%20d%3D%22M491%201536l91%2D91%2D235%2D235%2D91%2091v107h128v128h107zm523%2D928q0%2D22%2D22%2D22%2D10%200%2D17%207l%2D542%20542q%2D7%207%2D7%2017%200%2022%2022%2022%2010%200%2017%2D7l542%2D542q7%2D7%207%2D17zm%2D54%2D192l416%20416%2D832%20832h%2D416v%2D416zm683%2096q0%2053%2D37%2090l%2D166%20166%2D416%2D416%20166%2D165q36%2D38%2090%2D38%2053%200%2091%2038l235%20234q37%2039%2037%2091z%22%20%2F%3E%3C%2Fsvg%3E")}.yoast-section{box-shadow:0 1px 2px rgba(0,0,0,.2);position:relative;background-color:#fff;padding:0 20px 15px}.yoast-section__heading{padding:8px 20px;font-size:1rem;margin:0 -20px 15px;font-family:"Open Sans",sans-serif;font-weight:300;color:#555}.yoast-section__heading-icon{padding-left:44px;background-repeat:no-repeat;background-position:left 20px top .6em;background-size:16px}.yoast-section,.yoast-section *,.yoast-section :after,.yoast-section :before,.yoast-section:after,.yoast-section:before{box-sizing:border-box}.yoast-tooltip.yoast-tooltip-hidden::after,.yoast-tooltip.yoast-tooltip-hidden::before{display:none}.screen-reader-text.wpseo-generic-tab-textual-score,.screen-reader-text.wpseo-keyword-tab-textual-score{display:block}.yoast-notice-go-premium{border-left-color:#a4286a;background:#f1f1f1;margin:0}.editor-styles-wrapper mark.annotation-text-yoast{background-color:#e1bee7}@media screen and (max-width:782px){.wpseo-metabox-buy-premium .wpseo-buy-premium{display:inline-block;width:20px;height:20px;margin-right:5px;padding:0}.yoast-help-panel{max-width:none!important}#wpseo-crawl-issues-table-form .subsubsub{float:none;max-width:calc(100vw - 20px)}#wpseo-crawl-issues-table-form .yoast-help-button{margin-top:3px}.wpseotab select[multiple]{height:auto!important}}@media screen and (max-width:600px){.wpseotab.content{padding:16px 0}}
css/dist/{metabox-primary-category-1100-rtl.min.css → metabox-primary-category-1110-rtl.min.css} RENAMED
File without changes
css/dist/{metabox-primary-category-1100.min.css → metabox-primary-category-1110.min.css} RENAMED
File without changes
css/dist/{search-appearance-1100-rtl.min.css → search-appearance-1110-rtl.min.css} RENAMED
File without changes
css/dist/{search-appearance-1100.min.css → search-appearance-1110.min.css} RENAMED
File without changes
css/dist/structured-data-blocks-1100-rtl.min.css DELETED
@@ -1 +0,0 @@
1
- .schema-faq-buttons button.components-icon-button:not(:disabled):not([aria-disabled=true]):not(.is-default):hover,.schema-faq-section-button-container button.components-icon-button:not(:disabled):not([aria-disabled=true]):not(.is-default):hover,.schema-how-to-buttons button.components-icon-button:not(:disabled):not([aria-disabled=true]):not(.is-default):hover,.schema-how-to-duration-button.components-icon-button:not(:disabled):not([aria-disabled=true]):not(.is-default):hover,.schema-how-to-step-button-container button.components-icon-button:not(:disabled):not([aria-disabled=true]):not(.is-default):hover{box-shadow:none;color:#007cba}.schema-faq-section,.schema-how-to-step{position:relative;padding:8px 32px 8px 4px;margin:4px 0;border:1px solid rgba(145,151,162,.25);list-style-type:none}.faq-section-add-media .dashicon,.how-to-step-add-media .dashicon,.schema-faq-add-question .dashicon,.schema-how-to-add-step .dashicon,.schema-how-to-duration-button .dashicon,legend.schema-how-to-duration-legend{margin-left:4px}.schema-faq-buttons,.schema-how-to-buttons{text-align:center}.schema-faq-section-mover,.schema-how-to-step-mover{display:inline-block}.schema-faq-section-mover .editor-block-mover__control,.schema-how-to-step-mover .editor-block-mover__control{display:-ms-inline-flexbox;display:inline-flex;width:36px;height:36px}.schema-faq-question,.schema-how-to-step-name{font-weight:600}.schema-faq-answer,.schema-faq-question,.schema-how-to-description,.schema-how-to-step-name,.schema-how-to-step-text{line-height:inherit}.schema-faq-section-button-container,.schema-how-to-step-button-container{display:inline-block;text-align:left}.schema-faq-section-controls-container,.schema-how-to-step-controls-container{text-align:left;margin-right:-28px}.schema-faq-section-controls-container .dashicons-arrow-up-alt2,.schema-how-to-step-controls-container .dashicons-arrow-up-alt2{position:relative;top:-1px}.schema-how-to{padding-top:4px}.schema-how-to-step-number{position:absolute;right:4px;width:24px;text-align:left}.schema-how-to-duration-flex-container{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.schema-how-to-duration-time-input{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-wrap:nowrap;flex-wrap:nowrap}#schema-how-to-duration-days{margin-left:8px}.schema-how-to-duration .schema-how-to-duration-input[type=number]{width:40px;margin:0 2px;padding:6px 4px;text-align:center;-moz-appearance:textfield}.schema-how-to-duration .schema-how-to-duration-input[type=number]::-webkit-inner-spin-button,.schema-how-to-duration .schema-how-to-duration-input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.schema-how-to-duration-button.components-icon-button{margin-right:-8px;vertical-align:top}.schema-how-to-description{margin:8px 0}
 
css/dist/structured-data-blocks-1100.min.css DELETED
@@ -1 +0,0 @@
1
- .schema-faq-buttons button.components-icon-button:not(:disabled):not([aria-disabled=true]):not(.is-default):hover,.schema-faq-section-button-container button.components-icon-button:not(:disabled):not([aria-disabled=true]):not(.is-default):hover,.schema-how-to-buttons button.components-icon-button:not(:disabled):not([aria-disabled=true]):not(.is-default):hover,.schema-how-to-duration-button.components-icon-button:not(:disabled):not([aria-disabled=true]):not(.is-default):hover,.schema-how-to-step-button-container button.components-icon-button:not(:disabled):not([aria-disabled=true]):not(.is-default):hover{box-shadow:none;color:#007cba}.schema-faq-section,.schema-how-to-step{position:relative;padding:8px 4px 8px 32px;margin:4px 0;border:1px solid rgba(145,151,162,.25);list-style-type:none}.faq-section-add-media .dashicon,.how-to-step-add-media .dashicon,.schema-faq-add-question .dashicon,.schema-how-to-add-step .dashicon,.schema-how-to-duration-button .dashicon,legend.schema-how-to-duration-legend{margin-right:4px}.schema-faq-buttons,.schema-how-to-buttons{text-align:center}.schema-faq-section-mover,.schema-how-to-step-mover{display:inline-block}.schema-faq-section-mover .editor-block-mover__control,.schema-how-to-step-mover .editor-block-mover__control{display:-ms-inline-flexbox;display:inline-flex;width:36px;height:36px}.schema-faq-question,.schema-how-to-step-name{font-weight:600}.schema-faq-answer,.schema-faq-question,.schema-how-to-description,.schema-how-to-step-name,.schema-how-to-step-text{line-height:inherit}.schema-faq-section-button-container,.schema-how-to-step-button-container{display:inline-block;text-align:right}.schema-faq-section-controls-container,.schema-how-to-step-controls-container{text-align:right;margin-left:-28px}.schema-faq-section-controls-container .dashicons-arrow-up-alt2,.schema-how-to-step-controls-container .dashicons-arrow-up-alt2{position:relative;top:-1px}.schema-how-to{padding-top:4px}.schema-how-to-step-number{position:absolute;left:4px;width:24px;text-align:right}.schema-how-to-duration-flex-container{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.schema-how-to-duration-time-input{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-wrap:nowrap;flex-wrap:nowrap}#schema-how-to-duration-days{margin-right:8px}.schema-how-to-duration .schema-how-to-duration-input[type=number]{width:40px;margin:0 2px;padding:6px 4px;text-align:center;-moz-appearance:textfield}.schema-how-to-duration .schema-how-to-duration-input[type=number]::-webkit-inner-spin-button,.schema-how-to-duration .schema-how-to-duration-input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.schema-how-to-duration-button.components-icon-button{margin-left:-8px;vertical-align:top}.schema-how-to-description{margin:8px 0}
 
css/dist/structured-data-blocks-1110-rtl.min.css ADDED
@@ -0,0 +1 @@
 
1
+ .schema-faq-buttons button.components-icon-button:not(:disabled):not([aria-disabled=true]):not(.is-default):hover,.schema-faq-section-button-container button.components-icon-button:not(:disabled):not([aria-disabled=true]):not(.is-default):hover,.schema-how-to-buttons button.components-icon-button:not(:disabled):not([aria-disabled=true]):not(.is-default):hover,.schema-how-to-duration-button.components-icon-button:not(:disabled):not([aria-disabled=true]):not(.is-default):hover,.schema-how-to-step-button-container button.components-icon-button:not(:disabled):not([aria-disabled=true]):not(.is-default):hover{box-shadow:none;color:#007cba}.schema-faq-section,.schema-how-to-step{position:relative;padding:8px 32px 8px 4px;margin:4px 0;border:1px solid rgba(145,151,162,.25);list-style-type:none}.faq-section-add-media .dashicon,.how-to-step-add-media .dashicon,.schema-faq-add-question .dashicon,.schema-how-to-add-step .dashicon,.schema-how-to-duration-button .dashicon,legend.schema-how-to-duration-legend{margin-left:4px}.schema-faq-buttons,.schema-how-to-buttons{display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center}.schema-faq-section-mover,.schema-how-to-step-mover{display:inline-block}.schema-faq-section-mover .editor-block-mover__control,.schema-how-to-step-mover .editor-block-mover__control{display:-ms-inline-flexbox;display:inline-flex;width:36px;height:36px}.schema-faq-question,.schema-how-to-step-name{font-weight:600}.schema-faq-answer,.schema-faq-question,.schema-how-to-description,.schema-how-to-step-name,.schema-how-to-step-text{line-height:inherit}.schema-faq-section-button-container,.schema-how-to-step-button-container{display:-ms-inline-flexbox;display:inline-flex;text-align:left}.schema-faq-section-controls-container,.schema-how-to-step-controls-container{text-align:left;margin-right:-28px}.schema-faq-section-controls-container .dashicons-arrow-up-alt2,.schema-how-to-step-controls-container .dashicons-arrow-up-alt2{position:relative;top:-1px}.schema-how-to{padding-top:4px}.schema-how-to-step-number{position:absolute;right:4px;width:24px;text-align:left}.schema-how-to-duration-flex-container{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.schema-how-to-duration-time-input{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-wrap:nowrap;flex-wrap:nowrap}#schema-how-to-duration-days{margin-left:8px}.schema-how-to-duration .schema-how-to-duration-input[type=number]{width:40px;margin:0 2px;padding:6px 4px;text-align:center;-moz-appearance:textfield}.schema-how-to-duration .schema-how-to-duration-input[type=number]::-webkit-inner-spin-button,.schema-how-to-duration .schema-how-to-duration-input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.schema-how-to-duration-button.components-icon-button{margin-right:-8px;vertical-align:top}.schema-how-to-description{margin:8px 0}
css/dist/structured-data-blocks-1110.min.css ADDED
@@ -0,0 +1 @@
 
1
+ .schema-faq-buttons button.components-icon-button:not(:disabled):not([aria-disabled=true]):not(.is-default):hover,.schema-faq-section-button-container button.components-icon-button:not(:disabled):not([aria-disabled=true]):not(.is-default):hover,.schema-how-to-buttons button.components-icon-button:not(:disabled):not([aria-disabled=true]):not(.is-default):hover,.schema-how-to-duration-button.components-icon-button:not(:disabled):not([aria-disabled=true]):not(.is-default):hover,.schema-how-to-step-button-container button.components-icon-button:not(:disabled):not([aria-disabled=true]):not(.is-default):hover{box-shadow:none;color:#007cba}.schema-faq-section,.schema-how-to-step{position:relative;padding:8px 4px 8px 32px;margin:4px 0;border:1px solid rgba(145,151,162,.25);list-style-type:none}.faq-section-add-media .dashicon,.how-to-step-add-media .dashicon,.schema-faq-add-question .dashicon,.schema-how-to-add-step .dashicon,.schema-how-to-duration-button .dashicon,legend.schema-how-to-duration-legend{margin-right:4px}.schema-faq-buttons,.schema-how-to-buttons{display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center}.schema-faq-section-mover,.schema-how-to-step-mover{display:inline-block}.schema-faq-section-mover .editor-block-mover__control,.schema-how-to-step-mover .editor-block-mover__control{display:-ms-inline-flexbox;display:inline-flex;width:36px;height:36px}.schema-faq-question,.schema-how-to-step-name{font-weight:600}.schema-faq-answer,.schema-faq-question,.schema-how-to-description,.schema-how-to-step-name,.schema-how-to-step-text{line-height:inherit}.schema-faq-section-button-container,.schema-how-to-step-button-container{display:-ms-inline-flexbox;display:inline-flex;text-align:right}.schema-faq-section-controls-container,.schema-how-to-step-controls-container{text-align:right;margin-left:-28px}.schema-faq-section-controls-container .dashicons-arrow-up-alt2,.schema-how-to-step-controls-container .dashicons-arrow-up-alt2{position:relative;top:-1px}.schema-how-to{padding-top:4px}.schema-how-to-step-number{position:absolute;left:4px;width:24px;text-align:right}.schema-how-to-duration-flex-container{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.schema-how-to-duration-time-input{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-wrap:nowrap;flex-wrap:nowrap}#schema-how-to-duration-days{margin-right:8px}.schema-how-to-duration .schema-how-to-duration-input[type=number]{width:40px;margin:0 2px;padding:6px 4px;text-align:center;-moz-appearance:textfield}.schema-how-to-duration .schema-how-to-duration-input[type=number]::-webkit-inner-spin-button,.schema-how-to-duration .schema-how-to-duration-input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.schema-how-to-duration-button.components-icon-button{margin-left:-8px;vertical-align:top}.schema-how-to-description{margin:8px 0}
css/dist/{toggle-switch-1100-rtl.min.css → toggle-switch-1110-rtl.min.css} RENAMED
File without changes
css/dist/{toggle-switch-1100.min.css → toggle-switch-1110.min.css} RENAMED
File without changes
css/dist/{wpseo-dismissible-1100-rtl.min.css → wpseo-dismissible-1110-rtl.min.css} RENAMED
File without changes
css/dist/{wpseo-dismissible-1100.min.css → wpseo-dismissible-1110.min.css} RENAMED
File without changes
css/dist/yoast-components-1100-rtl.min.css DELETED
@@ -1 +0,0 @@
1
- .yoast-wizard--step--container:focus,a{outline:0}body{background:#f1f1f1;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;line-height:1.375;margin:0;padding:0}a{color:#0073aa;transition-property:border,background,color;transition-duration:.05s;transition-timing-function:ease-in-out}a:active,a:hover{color:#00a0d2}a:focus{color:#124964;box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.screen-reader-text{position:absolute!important;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);width:1px;height:1px;border:0;padding:0;overflow:hidden;word-wrap:normal!important}.yoast-wizard-body{box-sizing:border-box;width:80%;margin:1rem auto 4rem}@media screen and (max-width:768px){.yoast-wizard-body{width:auto;margin:0}}.yoast-wizard__logo{margin:0 auto;display:block}.yoast-wizard{text-align:right;min-height:20px;background:#fff;padding:2em;box-sizing:border-box;width:100%}@media screen and (max-width:768px){.yoast-wizard{padding:1em 1em 2em}}.yoast-wizard--header{text-align:center}.yoast-wizard--header--page-title{color:#a4286a;margin:0 0 -16px;font-size:1.25em;letter-spacing:.03em;line-height:2.5;font-weight:400;padding:0 8px}@media screen and (max-width:768px){.yoast-wizard--header--page-title{font-size:1.5em;line-height:1.25}}.yoast-wizard--navigation{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}.yoast-wizard--button{margin-top:1em;background:0 0;color:#0073aa;border:none;padding:0;font:inherit;border-bottom:1px solid #0073aa;cursor:pointer}.yoast-wizard--step__inactive div{pointer-events:none}@media screen and (max-width:768px){.yoast-wizard--step__active{width:38px;overflow:hidden}.yoast-wizard--step__active div{display:inline-block!important;vertical-align:middle}.yoast-wizard--step__active div>span>span{display:block!important;margin-right:-7px;padding-left:99px!important}.yoast-wizard--step__inactive{display:none!important}}.yoast-wizard--step--container h1{color:#a4286a;margin:0;font-size:2.25em;letter-spacing:.03em;line-height:3.68rem;font-weight:100}@media screen and (max-width:768px){.yoast-wizard--step--container h1{font-size:2em;line-height:1.25}}.yoast-wizard--step--container h2{color:#a4286a;font-size:1.375em;font-weight:100}.yoast-wizard--emphasis,.yoast-wizard-field-description{font-weight:700}.yoast-wizard--stepper{width:100%;margin:auto}.yoast-wizard-overlay{z-index:10;opacity:.2;background-color:#000;position:absolute;top:0;right:0;height:100%;color:#fff;text-align:center;width:100%}.yoast-wizard-overlay-loader{position:relative}.yoast-wizard-container{border:1px solid #ccc;text-align:right;min-height:20px;position:relative;box-shadow:rgba(0,0,0,.15) 0 3px 10px,rgba(0,0,0,.2) 0 3px 10px}.yoast-wizard-container--no-navigation{margin-top:40px}.yoast-wizard-container--no-navigation .yoast-wizard{padding-top:3em}@media screen and (max-width:768px){.yoast-wizard-container{box-shadow:none}}.yoast-wizard-container fieldset{border:0;margin:1em 0}.yoast-wizard-text-input{font-size:14px;padding-bottom:.5em}.yoast-wizard-text-input-label{cursor:pointer;display:block;margin:.5em 0 0;font-weight:700;font-size:14px}.yoast-wizard-text-input [type=text]{width:100%;max-width:450px;box-sizing:border-box}.yoast-video-container-max-width,.yoast-wizard-content-container{max-width:560px}.yoast-wizard input{line-height:140%;font-size:14px;margin:.5em 0;padding:5px}.yoast-wizard label{cursor:pointer}.yoast-wizard input[type=radio]{margin:.3em 0 .3em .7em;vertical-align:middle}.yoast-wizard-input__explanation{color:#555;margin-top:0;font-style:italic}.yoast-wizard-input-radio{font-size:14px}.yoast-wizard-input-radio-option label{padding-top:2px}.yoast-wizard-input-radio-separator{padding:0}.yoast-wizard-input-radio-separator input{position:absolute;right:-9999em;width:1px;height:1px}.yoast-wizard-input-radio-separator input+label{float:right;width:30px!important;margin:0 0 .5em 5px!important;padding:9px 6px;border:1px solid #ccc;font-family:Arial,Helvetica,sans-serif!important;font-size:18px!important;line-height:24px;text-align:center;cursor:pointer}.yoast-wizard-input-radio-separator input:checked+label{border:3px solid #a4286a;background-color:#fff;padding:7px 4px}.yoast-wizard-input-radio-separator input:focus+label{outline:#5b9dd9 solid 2px}.yoast-video-container{position:relative;padding-bottom:56.25%;height:0;overflow:hidden}.yoast-video-container iframe{position:absolute;top:0;right:0;width:100%;height:100%}.yoast-wizard-notice__error{margin-bottom:15px;padding:12px;border-right:4px solid #dc3232;background:#fff;box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}.yoast-wizard-content-container.yoast-wizard-content-container__is-full-width{max-width:none}@keyframes heartbeat{0%{transform:scale(.7);opacity:.4}80%{opacity:1}100%{transform:scale(.95);opacity:1}}.yoast-loader{animation:heartbeat 1.15s infinite;animation-direction:alternate;animation-timing-function:cubic-bezier(.96,.02,.63,.86)}.yoast-svg-icon-loading-spinner{animation:rotator 1.4s linear infinite}@keyframes rotator{0%{transform:rotate(0)}100%{transform:rotate(-270deg)}}.path{stroke:#64a60a;stroke-dasharray:187;stroke-dashoffset:0;-ms-transform-origin:center;transform-origin:center;animation:dash 1.4s ease-in-out infinite}@keyframes dash{0%{stroke-dashoffset:187}50%{stroke-dashoffset:46.75;transform:rotate(-135deg)}100%{stroke-dashoffset:187;transform:rotate(-450deg)}}#wizard{overflow:hidden}.yoast-wizard{padding-top:2em}.yoast-wizard input[type=text],.yoast-wizard input[type=email]{min-width:250px}.yoast-wizard #gsc_authorization_code,.yoast-wizard input[type=text]+div,.yoast-wizard input[type=email]+div{margin-left:1em}.yoast-wizard-body{max-width:80em}.yoast-wizard-return-link-container{text-align:center}.wp-core-ui .yoast-wizard-return-link.button{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;height:36px;border-color:transparent;margin:0 0 1em;padding:0 10px 0 16px;border-radius:2px;background:#fff;color:#646d78;text-align:center;text-transform:uppercase;box-shadow:rgba(0,0,0,.12) 0 1px 6px,rgba(0,0,0,.12) 0 1px 4px;transition:all 450ms cubic-bezier(.23,1,.32,1) 0s}.wp-core-ui .yoast-wizard-return-link.button:hover{background:#ebebeb;border-color:transparent}.wp-core-ui .yoast-wizard-return-link.button:focus{outline:0;box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-core-ui .yoast-wizard-return-link.button:active{background:#ebebeb;box-shadow:rgba(0,0,0,.16) 0 3px 10px,rgba(0,0,0,.23) 0 3px 10px;-ms-transform:none;transform:none}.wp-core-ui .yoast-wizard-return-link.button .dashicons{margin-left:8px}.yoast-wizard-mailchimp-message-error{color:#dc3232}.yoast-wizard-mailchimp-message-success{color:#008a00}.yoast-wizard-input{padding-bottom:.5em}.yoast-wizard-input__select{margin:1em 0;font-size:14px}.yoast-wizard--columns>div,.yoast-wizard-image-upload-container-buttons__remove{margin-right:1em}.yoast-wizard-image-upload-container__image{max-width:151px}.yoast-wizard-image-upload-container-buttons{margin-top:1em}.yoast-wizard-image-upload-container-description{display:block}.yoast-wizard--navigation{margin-top:2em;padding-top:1em;border-top:1px solid #a4286a}.yoast-wizard--rows{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.yoast-wizard--columns{display:-ms-flexbox;display:flex}.yoast-wizard--columns .yoast-wizard-text-input-field{max-width:100%}.yoast-wizard--columns__even>div{-ms-flex-preferred-size:50%;flex-basis:50%}.yoast-wizard--columns>div:first-child{margin-right:0}.yoast-wizard--columns .yoast-wizard--heading{margin:0;color:#a4286a}.yoast-wizard--columns>.yoast-wizard--column__push_right{-ms-flex-order:2;order:2}.yoast-wizard--columns>.yoast-wizard--column__push_left{-ms-flex-order:1;order:1;margin-right:0;margin-left:1em}.yoast-wizard--choice>.yoast-wizard--rows{height:100%}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.yoast-wizard--choice>.yoast-wizard--rows{width:100%}}.yoast-wizard--choice div{-ms-flex-item-align:start;align-self:flex-start}.yoast-wizard--choice p{margin-top:.3em;height:100%}.yoast-wizard--box{border:1px solid #a4286a;padding:1em}.yoast-wizard--box>div:first-child{-ms-flex-preferred-size:100px;flex-basis:100px}.yoast-wizard-newsletter--header svg{fill:#a4286a;top:4px;position:relative;margin-left:6px}.yoast-wizard-newsletter--decoration{width:100%;max-width:490px}.yoast-wizard-newsletter--decoration img{width:490px;max-width:100%;margin-top:-3em}.yoast-wizard--video-frame iframe{border:none}@media screen and (max-width:80em) and (-ms-high-contrast:active){.yoast-wizard--columns>div{width:95.5%}}@media screen and (max-width:80em){.yoast-wizard--columns{display:block}.yoast-wizard--columns>div{margin-right:0}.yoast-wizard--columns>.yoast-wizard--column__push_left{margin-left:0;margin-top:2em}.yoast-wizard--box{display:-ms-flexbox;display:flex;margin-top:1em}.yoast-wizard--box:first-child{margin-top:0}.yoast-wizard--box>div{margin-right:1em}.yoast-wizard .hide-on-tablet{display:none}}.yoast-wizard--suggestion{border-top:1px solid #a4286a;padding-top:2em;margin-bottom:2em}.yoast-wizard--suggestion:first-child{border-top:none;padding-top:0}@media screen and (max-width:50rem){.yoast-wizard .hide-on-mobile{display:none}.yoast-wizard--box{display:block}.yoast-wizard--box>div{margin-right:0}.yoast-wizard--video-frame{position:relative;padding-bottom:56.25%;height:0}.yoast-wizard--video-frame iframe{position:absolute;top:0;right:0;width:100%;height:100%}}.ie9 .yoast-wizard--stepper{display:none}
 
css/dist/yoast-components-1100.min.css DELETED
@@ -1 +0,0 @@
1
- .yoast-wizard--step--container:focus,a{outline:0}body{background:#f1f1f1;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;line-height:1.375;margin:0;padding:0}a{color:#0073aa;transition-property:border,background,color;transition-duration:.05s;transition-timing-function:ease-in-out}a:active,a:hover{color:#00a0d2}a:focus{color:#124964;box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.screen-reader-text{position:absolute!important;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);width:1px;height:1px;border:0;padding:0;overflow:hidden;word-wrap:normal!important}.yoast-wizard-body{box-sizing:border-box;width:80%;margin:1rem auto 4rem}@media screen and (max-width:768px){.yoast-wizard-body{width:auto;margin:0}}.yoast-wizard__logo{margin:0 auto;display:block}.yoast-wizard{text-align:left;min-height:20px;background:#fff;padding:2em;box-sizing:border-box;width:100%}@media screen and (max-width:768px){.yoast-wizard{padding:1em 1em 2em}}.yoast-wizard--header{text-align:center}.yoast-wizard--header--page-title{color:#a4286a;margin:0 0 -16px;font-size:1.25em;letter-spacing:.03em;line-height:2.5;font-weight:400;padding:0 8px}@media screen and (max-width:768px){.yoast-wizard--header--page-title{font-size:1.5em;line-height:1.25}}.yoast-wizard--navigation{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}.yoast-wizard--button{margin-top:1em;background:0 0;color:#0073aa;border:none;padding:0;font:inherit;border-bottom:1px solid #0073aa;cursor:pointer}.yoast-wizard--step__inactive div{pointer-events:none}@media screen and (max-width:768px){.yoast-wizard--step__active{width:38px;overflow:hidden}.yoast-wizard--step__active div{display:inline-block!important;vertical-align:middle}.yoast-wizard--step__active div>span>span{display:block!important;margin-left:-7px;padding-right:99px!important}.yoast-wizard--step__inactive{display:none!important}}.yoast-wizard--step--container h1{color:#a4286a;margin:0;font-size:2.25em;letter-spacing:.03em;line-height:3.68rem;font-weight:100}@media screen and (max-width:768px){.yoast-wizard--step--container h1{font-size:2em;line-height:1.25}}.yoast-wizard--step--container h2{color:#a4286a;font-size:1.375em;font-weight:100}.yoast-wizard--emphasis,.yoast-wizard-field-description{font-weight:700}.yoast-wizard--stepper{width:100%;margin:auto}.yoast-wizard-overlay{z-index:10;opacity:.2;background-color:#000;position:absolute;top:0;left:0;height:100%;color:#fff;text-align:center;width:100%}.yoast-wizard-overlay-loader{position:relative}.yoast-wizard-container{border:1px solid #ccc;text-align:left;min-height:20px;position:relative;box-shadow:rgba(0,0,0,.15) 0 3px 10px,rgba(0,0,0,.2) 0 3px 10px}.yoast-wizard-container--no-navigation{margin-top:40px}.yoast-wizard-container--no-navigation .yoast-wizard{padding-top:3em}@media screen and (max-width:768px){.yoast-wizard-container{box-shadow:none}}.yoast-wizard-container fieldset{border:0;margin:1em 0}.yoast-wizard-text-input{font-size:14px;padding-bottom:.5em}.yoast-wizard-text-input-label{cursor:pointer;display:block;margin:.5em 0 0;font-weight:700;font-size:14px}.yoast-wizard-text-input [type=text]{width:100%;max-width:450px;box-sizing:border-box}.yoast-video-container-max-width,.yoast-wizard-content-container{max-width:560px}.yoast-wizard input{line-height:140%;font-size:14px;margin:.5em 0;padding:5px}.yoast-wizard label{cursor:pointer}.yoast-wizard input[type=radio]{margin:.3em .7em .3em 0;vertical-align:middle}.yoast-wizard-input__explanation{color:#555;margin-top:0;font-style:italic}.yoast-wizard-input-radio{font-size:14px}.yoast-wizard-input-radio-option label{padding-top:2px}.yoast-wizard-input-radio-separator{padding:0}.yoast-wizard-input-radio-separator input{position:absolute;left:-9999em;width:1px;height:1px}.yoast-wizard-input-radio-separator input+label{float:left;width:30px!important;margin:0 5px .5em 0!important;padding:9px 6px;border:1px solid #ccc;font-family:Arial,Helvetica,sans-serif!important;font-size:18px!important;line-height:24px;text-align:center;cursor:pointer}.yoast-wizard-input-radio-separator input:checked+label{border:3px solid #a4286a;background-color:#fff;padding:7px 4px}.yoast-wizard-input-radio-separator input:focus+label{outline:#5b9dd9 solid 2px}.yoast-video-container{position:relative;padding-bottom:56.25%;height:0;overflow:hidden}.yoast-video-container iframe{position:absolute;top:0;left:0;width:100%;height:100%}.yoast-wizard-notice__error{margin-bottom:15px;padding:12px;border-left:4px solid #dc3232;background:#fff;box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}.yoast-wizard-content-container.yoast-wizard-content-container__is-full-width{max-width:none}@keyframes heartbeat{0%{transform:scale(.7);opacity:.4}80%{opacity:1}100%{transform:scale(.95);opacity:1}}.yoast-loader{animation:heartbeat 1.15s infinite;animation-direction:alternate;animation-timing-function:cubic-bezier(.96,.02,.63,.86)}.yoast-svg-icon-loading-spinner{animation:rotator 1.4s linear infinite}@keyframes rotator{0%{transform:rotate(0)}100%{transform:rotate(270deg)}}.path{stroke:#64a60a;stroke-dasharray:187;stroke-dashoffset:0;-ms-transform-origin:center;transform-origin:center;animation:dash 1.4s ease-in-out infinite}@keyframes dash{0%{stroke-dashoffset:187}50%{stroke-dashoffset:46.75;transform:rotate(135deg)}100%{stroke-dashoffset:187;transform:rotate(450deg)}}#wizard{overflow:hidden}.yoast-wizard{padding-top:2em}.yoast-wizard input[type=text],.yoast-wizard input[type=email]{min-width:250px}.yoast-wizard #gsc_authorization_code,.yoast-wizard input[type=text]+div,.yoast-wizard input[type=email]+div{margin-right:1em}.yoast-wizard-body{max-width:80em}.yoast-wizard-return-link-container{text-align:center}.wp-core-ui .yoast-wizard-return-link.button{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;height:36px;border-color:transparent;margin:0 0 1em;padding:0 16px 0 10px;border-radius:2px;background:#fff;color:#646d78;text-align:center;text-transform:uppercase;box-shadow:rgba(0,0,0,.12) 0 1px 6px,rgba(0,0,0,.12) 0 1px 4px;transition:all 450ms cubic-bezier(.23,1,.32,1) 0s}.wp-core-ui .yoast-wizard-return-link.button:hover{background:#ebebeb;border-color:transparent}.wp-core-ui .yoast-wizard-return-link.button:focus{outline:0;box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-core-ui .yoast-wizard-return-link.button:active{background:#ebebeb;box-shadow:rgba(0,0,0,.16) 0 3px 10px,rgba(0,0,0,.23) 0 3px 10px;-ms-transform:none;transform:none}.wp-core-ui .yoast-wizard-return-link.button .dashicons{margin-right:8px}.yoast-wizard-mailchimp-message-error{color:#dc3232}.yoast-wizard-mailchimp-message-success{color:#008a00}.yoast-wizard-input{padding-bottom:.5em}.yoast-wizard-input__select{margin:1em 0;font-size:14px}.yoast-wizard--columns>div,.yoast-wizard-image-upload-container-buttons__remove{margin-left:1em}.yoast-wizard-image-upload-container__image{max-width:151px}.yoast-wizard-image-upload-container-buttons{margin-top:1em}.yoast-wizard-image-upload-container-description{display:block}.yoast-wizard--navigation{margin-top:2em;padding-top:1em;border-top:1px solid #a4286a}.yoast-wizard--rows{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.yoast-wizard--columns{display:-ms-flexbox;display:flex}.yoast-wizard--columns .yoast-wizard-text-input-field{max-width:100%}.yoast-wizard--columns__even>div{-ms-flex-preferred-size:50%;flex-basis:50%}.yoast-wizard--columns>div:first-child{margin-left:0}.yoast-wizard--columns .yoast-wizard--heading{margin:0;color:#a4286a}.yoast-wizard--columns>.yoast-wizard--column__push_right{-ms-flex-order:2;order:2}.yoast-wizard--columns>.yoast-wizard--column__push_left{-ms-flex-order:1;order:1;margin-left:0;margin-right:1em}.yoast-wizard--choice>.yoast-wizard--rows{height:100%}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.yoast-wizard--choice>.yoast-wizard--rows{width:100%}}.yoast-wizard--choice div{-ms-flex-item-align:start;align-self:flex-start}.yoast-wizard--choice p{margin-top:.3em;height:100%}.yoast-wizard--box{border:1px solid #a4286a;padding:1em}.yoast-wizard--box>div:first-child{-ms-flex-preferred-size:100px;flex-basis:100px}.yoast-wizard-newsletter--header svg{fill:#a4286a;top:4px;position:relative;margin-right:6px}.yoast-wizard-newsletter--decoration{width:100%;max-width:490px}.yoast-wizard-newsletter--decoration img{width:490px;max-width:100%;margin-top:-3em}.yoast-wizard--video-frame iframe{border:none}@media screen and (max-width:80em) and (-ms-high-contrast:active){.yoast-wizard--columns>div{width:95.5%}}@media screen and (max-width:80em){.yoast-wizard--columns{display:block}.yoast-wizard--columns>div{margin-left:0}.yoast-wizard--columns>.yoast-wizard--column__push_left{margin-right:0;margin-top:2em}.yoast-wizard--box{display:-ms-flexbox;display:flex;margin-top:1em}.yoast-wizard--box:first-child{margin-top:0}.yoast-wizard--box>div{margin-left:1em}.yoast-wizard .hide-on-tablet{display:none}}.yoast-wizard--suggestion{border-top:1px solid #a4286a;padding-top:2em;margin-bottom:2em}.yoast-wizard--suggestion:first-child{border-top:none;padding-top:0}@media screen and (max-width:50rem){.yoast-wizard .hide-on-mobile{display:none}.yoast-wizard--box{display:block}.yoast-wizard--box>div{margin-left:0}.yoast-wizard--video-frame{position:relative;padding-bottom:56.25%;height:0}.yoast-wizard--video-frame iframe{position:absolute;top:0;left:0;width:100%;height:100%}}.ie9 .yoast-wizard--stepper{display:none}
 
css/dist/yoast-components-1110-rtl.min.css ADDED
@@ -0,0 +1 @@
 
1
+ .yoast-wizard--step--container:focus,a{outline:0}.screen-reader-text{position:absolute!important;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);width:1px;height:1px;border:0;padding:0;overflow:hidden;word-wrap:normal!important}body{background:#f1f1f1;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;line-height:1.375;margin:0;padding:0}a{color:#0073aa;transition-property:border,background,color;transition-duration:.05s;transition-timing-function:ease-in-out}a:active,a:hover{color:#00a0d2}a:focus{color:#124964;box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.yoast-wizard-body{box-sizing:border-box;width:80%;margin:1rem auto 4rem}@media screen and (max-width:768px){.yoast-wizard-body{width:auto;margin:0}}.yoast-wizard__logo{margin:0 auto;display:block}.yoast-wizard{text-align:right;min-height:20px;background:#fff;padding:2em;box-sizing:border-box;width:100%}@media screen and (max-width:768px){.yoast-wizard{padding:1em 1em 2em}}.yoast-wizard--header{text-align:center}.yoast-wizard--header--page-title{color:#a4286a;margin:0 0 -16px;font-size:1.25em;letter-spacing:.03em;line-height:2.5;font-weight:400;padding:0 8px}@media screen and (max-width:768px){.yoast-wizard--header--page-title{font-size:1.5em;line-height:1.25}}.yoast-wizard--navigation{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}.yoast-wizard--button{margin-top:1em;background:0 0;color:#0073aa;border:none;padding:0;font:inherit;border-bottom:1px solid #0073aa;cursor:pointer}.yoast-wizard--step__inactive div{pointer-events:none}@media screen and (max-width:768px){.yoast-wizard--step__active{width:38px;overflow:hidden}.yoast-wizard--step__active div{display:inline-block!important;vertical-align:middle}.yoast-wizard--step__active div>span>span{display:block!important;margin-right:-7px;padding-left:99px!important}.yoast-wizard--step__inactive{display:none!important}}.yoast-wizard--step--container h1{color:#a4286a;margin:0;font-size:2.25em;letter-spacing:.03em;line-height:3.68rem;font-weight:100}@media screen and (max-width:768px){.yoast-wizard--step--container h1{font-size:2em;line-height:1.25}}.yoast-wizard--step--container h2{color:#a4286a;font-size:1.375em;font-weight:100}.yoast-wizard--emphasis,.yoast-wizard-field-description{font-weight:700}.yoast-wizard--stepper{width:100%;margin:auto}.yoast-wizard-overlay{z-index:10;opacity:.2;background-color:#000;position:absolute;top:0;right:0;height:100%;color:#fff;text-align:center;width:100%}.yoast-wizard-overlay-loader{position:relative}.yoast-wizard-container{border:1px solid #ccc;text-align:right;min-height:20px;position:relative;box-shadow:rgba(0,0,0,.15) 0 3px 10px,rgba(0,0,0,.2) 0 3px 10px}.yoast-wizard-container--no-navigation{margin-top:40px}.yoast-wizard-container--no-navigation .yoast-wizard{padding-top:3em}@media screen and (max-width:768px){.yoast-wizard-container{box-shadow:none}}.yoast-wizard-container fieldset{border:0;margin:1em 0}.yoast-wizard-text-input{font-size:14px;padding-bottom:.5em}.yoast-wizard-text-input-label{cursor:pointer;display:block;margin:.5em 0 0;font-weight:700;font-size:14px}.yoast-wizard-text-input [type=text]{width:100%;max-width:450px;box-sizing:border-box}.yoast-video-container-max-width,.yoast-wizard-content-container{max-width:560px}.yoast-wizard input{line-height:140%;font-size:14px;margin:.5em 0;padding:5px}.yoast-wizard label{cursor:pointer}.yoast-wizard input[type=radio]{margin:.3em 0 .3em .7em;vertical-align:middle}.yoast-wizard-input__explanation{color:#555;margin-top:0;font-style:italic}.yoast-wizard-input-radio{font-size:14px}.yoast-wizard-input-radio-option label{padding-top:2px}.yoast-wizard-input-radio-separator{padding:0}.yoast-wizard-input-radio-separator input{position:absolute;right:-9999em;width:1px;height:1px}.yoast-wizard-input-radio-separator input+label{float:right;width:30px!important;margin:0 0 .5em 5px!important;padding:9px 6px;border:1px solid #ccc;font-family:Arial,Helvetica,sans-serif!important;font-size:18px!important;line-height:24px;text-align:center;cursor:pointer}.yoast-wizard-input-radio-separator input:checked+label{border:3px solid #a4286a;background-color:#fff;padding:7px 4px}.yoast-wizard-input-radio-separator input:focus+label{outline:#5b9dd9 solid 2px}.yoast-video-container{position:relative;padding-bottom:56.25%;height:0;overflow:hidden}.yoast-video-container iframe{position:absolute;top:0;right:0;width:100%;height:100%}.yoast-wizard-notice__error{margin-bottom:15px;padding:12px;border-right:4px solid #dc3232;background:#fff;box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}.yoast-wizard-content-container.yoast-wizard-content-container__is-full-width{max-width:none}#wizard{overflow:hidden}.yoast-wizard{padding-top:2em}.yoast-wizard input[type=text],.yoast-wizard input[type=email]{min-width:250px}.yoast-wizard #gsc_authorization_code,.yoast-wizard input[type=text]+div,.yoast-wizard input[type=email]+div{margin-left:1em}.yoast-wizard-body{max-width:80em}.yoast-wizard-return-link-container{text-align:center}.wp-core-ui .yoast-wizard-return-link.button{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;height:36px;border-color:transparent;margin:0 0 1em;padding:0 10px 0 16px;border-radius:2px;background:#fff;color:#646d78;text-align:center;text-transform:uppercase;box-shadow:rgba(0,0,0,.12) 0 1px 6px,rgba(0,0,0,.12) 0 1px 4px;transition:all 450ms cubic-bezier(.23,1,.32,1) 0s}.wp-core-ui .yoast-wizard-return-link.button:hover{background:#ebebeb;border-color:transparent}.wp-core-ui .yoast-wizard-return-link.button:focus{outline:0;box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-core-ui .yoast-wizard-return-link.button:active{background:#ebebeb;box-shadow:rgba(0,0,0,.16) 0 3px 10px,rgba(0,0,0,.23) 0 3px 10px;-ms-transform:none;transform:none}.wp-core-ui .yoast-wizard-return-link.button .dashicons{margin-left:8px}.yoast-wizard-mailchimp-message-error{color:#dc3232}.yoast-wizard-mailchimp-message-success{color:#008a00}.yoast-wizard-input{padding-bottom:.5em}.yoast-wizard-input__select{margin:1em 0;font-size:14px}.yoast-wizard--columns>div,.yoast-wizard-image-upload-container-buttons__remove{margin-right:1em}.yoast-wizard-image-upload-container__image{max-width:151px}.yoast-wizard-image-upload-container-buttons{margin-top:1em}.yoast-wizard-image-upload-container-description{display:block}.yoast-wizard--navigation{margin-top:2em;padding-top:1em;border-top:1px solid #a4286a}.yoast-wizard--rows{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.yoast-wizard--columns{display:-ms-flexbox;display:flex}.yoast-wizard--columns .yoast-wizard-text-input-field{max-width:100%}.yoast-wizard--columns__even>div{-ms-flex-preferred-size:50%;flex-basis:50%}.yoast-wizard--columns>div:first-child{margin-right:0}.yoast-wizard--columns .yoast-wizard--heading{margin:0;color:#a4286a}.yoast-wizard--columns>.yoast-wizard--column__push_right{-ms-flex-order:2;order:2}.yoast-wizard--columns>.yoast-wizard--column__push_left{-ms-flex-order:1;order:1;margin-right:0;margin-left:1em}.yoast-wizard--choice>.yoast-wizard--rows{height:100%}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.yoast-wizard--choice>.yoast-wizard--rows{width:100%}}.yoast-wizard--choice div{-ms-flex-item-align:start;align-self:flex-start}.yoast-wizard--choice p{margin-top:.3em;height:100%}.yoast-wizard--box{border:1px solid #a4286a;padding:1em}.yoast-wizard--box>div:first-child{-ms-flex-preferred-size:100px;flex-basis:100px}.yoast-wizard-newsletter--header svg{fill:#a4286a;top:4px;position:relative;margin-left:6px}.yoast-wizard-newsletter--decoration{width:100%;max-width:490px}.yoast-wizard-newsletter--decoration img{width:490px;max-width:100%;margin-top:-3em}.yoast-wizard--video-frame iframe{border:none}@media screen and (max-width:80em) and (-ms-high-contrast:active){.yoast-wizard--columns>div{width:95.5%}}@media screen and (max-width:80em){.yoast-wizard--columns{display:block}.yoast-wizard--columns>div{margin-right:0}.yoast-wizard--columns>.yoast-wizard--column__push_left{margin-left:0;margin-top:2em}.yoast-wizard--box{display:-ms-flexbox;display:flex;margin-top:1em}.yoast-wizard--box:first-child{margin-top:0}.yoast-wizard--box>div{margin-right:1em}.yoast-wizard .hide-on-tablet{display:none}}.yoast-wizard--suggestion{border-top:1px solid #a4286a;padding-top:2em;margin-bottom:2em}.yoast-wizard--suggestion:first-child{border-top:none;padding-top:0}@media screen and (max-width:50rem){.yoast-wizard .hide-on-mobile{display:none}.yoast-wizard--box{display:block}.yoast-wizard--box>div{margin-right:0}.yoast-wizard--video-frame{position:relative;padding-bottom:56.25%;height:0}.yoast-wizard--video-frame iframe{position:absolute;top:0;right:0;width:100%;height:100%}}.ie9 .yoast-wizard--stepper{display:none}
css/dist/yoast-components-1110.min.css ADDED
@@ -0,0 +1 @@
 
1
+ .yoast-wizard--step--container:focus,a{outline:0}.screen-reader-text{position:absolute!important;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);width:1px;height:1px;border:0;padding:0;overflow:hidden;word-wrap:normal!important}body{background:#f1f1f1;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;line-height:1.375;margin:0;padding:0}a{color:#0073aa;transition-property:border,background,color;transition-duration:.05s;transition-timing-function:ease-in-out}a:active,a:hover{color:#00a0d2}a:focus{color:#124964;box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.yoast-wizard-body{box-sizing:border-box;width:80%;margin:1rem auto 4rem}@media screen and (max-width:768px){.yoast-wizard-body{width:auto;margin:0}}.yoast-wizard__logo{margin:0 auto;display:block}.yoast-wizard{text-align:left;min-height:20px;background:#fff;padding:2em;box-sizing:border-box;width:100%}@media screen and (max-width:768px){.yoast-wizard{padding:1em 1em 2em}}.yoast-wizard--header{text-align:center}.yoast-wizard--header--page-title{color:#a4286a;margin:0 0 -16px;font-size:1.25em;letter-spacing:.03em;line-height:2.5;font-weight:400;padding:0 8px}@media screen and (max-width:768px){.yoast-wizard--header--page-title{font-size:1.5em;line-height:1.25}}.yoast-wizard--navigation{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}.yoast-wizard--button{margin-top:1em;background:0 0;color:#0073aa;border:none;padding:0;font:inherit;border-bottom:1px solid #0073aa;cursor:pointer}.yoast-wizard--step__inactive div{pointer-events:none}@media screen and (max-width:768px){.yoast-wizard--step__active{width:38px;overflow:hidden}.yoast-wizard--step__active div{display:inline-block!important;vertical-align:middle}.yoast-wizard--step__active div>span>span{display:block!important;margin-left:-7px;padding-right:99px!important}.yoast-wizard--step__inactive{display:none!important}}.yoast-wizard--step--container h1{color:#a4286a;margin:0;font-size:2.25em;letter-spacing:.03em;line-height:3.68rem;font-weight:100}@media screen and (max-width:768px){.yoast-wizard--step--container h1{font-size:2em;line-height:1.25}}.yoast-wizard--step--container h2{color:#a4286a;font-size:1.375em;font-weight:100}.yoast-wizard--emphasis,.yoast-wizard-field-description{font-weight:700}.yoast-wizard--stepper{width:100%;margin:auto}.yoast-wizard-overlay{z-index:10;opacity:.2;background-color:#000;position:absolute;top:0;left:0;height:100%;color:#fff;text-align:center;width:100%}.yoast-wizard-overlay-loader{position:relative}.yoast-wizard-container{border:1px solid #ccc;text-align:left;min-height:20px;position:relative;box-shadow:rgba(0,0,0,.15) 0 3px 10px,rgba(0,0,0,.2) 0 3px 10px}.yoast-wizard-container--no-navigation{margin-top:40px}.yoast-wizard-container--no-navigation .yoast-wizard{padding-top:3em}@media screen and (max-width:768px){.yoast-wizard-container{box-shadow:none}}.yoast-wizard-container fieldset{border:0;margin:1em 0}.yoast-wizard-text-input{font-size:14px;padding-bottom:.5em}.yoast-wizard-text-input-label{cursor:pointer;display:block;margin:.5em 0 0;font-weight:700;font-size:14px}.yoast-wizard-text-input [type=text]{width:100%;max-width:450px;box-sizing:border-box}.yoast-video-container-max-width,.yoast-wizard-content-container{max-width:560px}.yoast-wizard input{line-height:140%;font-size:14px;margin:.5em 0;padding:5px}.yoast-wizard label{cursor:pointer}.yoast-wizard input[type=radio]{margin:.3em .7em .3em 0;vertical-align:middle}.yoast-wizard-input__explanation{color:#555;margin-top:0;font-style:italic}.yoast-wizard-input-radio{font-size:14px}.yoast-wizard-input-radio-option label{padding-top:2px}.yoast-wizard-input-radio-separator{padding:0}.yoast-wizard-input-radio-separator input{position:absolute;left:-9999em;width:1px;height:1px}.yoast-wizard-input-radio-separator input+label{float:left;width:30px!important;margin:0 5px .5em 0!important;padding:9px 6px;border:1px solid #ccc;font-family:Arial,Helvetica,sans-serif!important;font-size:18px!important;line-height:24px;text-align:center;cursor:pointer}.yoast-wizard-input-radio-separator input:checked+label{border:3px solid #a4286a;background-color:#fff;padding:7px 4px}.yoast-wizard-input-radio-separator input:focus+label{outline:#5b9dd9 solid 2px}.yoast-video-container{position:relative;padding-bottom:56.25%;height:0;overflow:hidden}.yoast-video-container iframe{position:absolute;top:0;left:0;width:100%;height:100%}.yoast-wizard-notice__error{margin-bottom:15px;padding:12px;border-left:4px solid #dc3232;background:#fff;box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}.yoast-wizard-content-container.yoast-wizard-content-container__is-full-width{max-width:none}#wizard{overflow:hidden}.yoast-wizard{padding-top:2em}.yoast-wizard input[type=text],.yoast-wizard input[type=email]{min-width:250px}.yoast-wizard #gsc_authorization_code,.yoast-wizard input[type=text]+div,.yoast-wizard input[type=email]+div{margin-right:1em}.yoast-wizard-body{max-width:80em}.yoast-wizard-return-link-container{text-align:center}.wp-core-ui .yoast-wizard-return-link.button{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;height:36px;border-color:transparent;margin:0 0 1em;padding:0 16px 0 10px;border-radius:2px;background:#fff;color:#646d78;text-align:center;text-transform:uppercase;box-shadow:rgba(0,0,0,.12) 0 1px 6px,rgba(0,0,0,.12) 0 1px 4px;transition:all 450ms cubic-bezier(.23,1,.32,1) 0s}.wp-core-ui .yoast-wizard-return-link.button:hover{background:#ebebeb;border-color:transparent}.wp-core-ui .yoast-wizard-return-link.button:focus{outline:0;box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-core-ui .yoast-wizard-return-link.button:active{background:#ebebeb;box-shadow:rgba(0,0,0,.16) 0 3px 10px,rgba(0,0,0,.23) 0 3px 10px;-ms-transform:none;transform:none}.wp-core-ui .yoast-wizard-return-link.button .dashicons{margin-right:8px}.yoast-wizard-mailchimp-message-error{color:#dc3232}.yoast-wizard-mailchimp-message-success{color:#008a00}.yoast-wizard-input{padding-bottom:.5em}.yoast-wizard-input__select{margin:1em 0;font-size:14px}.yoast-wizard--columns>div,.yoast-wizard-image-upload-container-buttons__remove{margin-left:1em}.yoast-wizard-image-upload-container__image{max-width:151px}.yoast-wizard-image-upload-container-buttons{margin-top:1em}.yoast-wizard-image-upload-container-description{display:block}.yoast-wizard--navigation{margin-top:2em;padding-top:1em;border-top:1px solid #a4286a}.yoast-wizard--rows{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.yoast-wizard--columns{display:-ms-flexbox;display:flex}.yoast-wizard--columns .yoast-wizard-text-input-field{max-width:100%}.yoast-wizard--columns__even>div{-ms-flex-preferred-size:50%;flex-basis:50%}.yoast-wizard--columns>div:first-child{margin-left:0}.yoast-wizard--columns .yoast-wizard--heading{margin:0;color:#a4286a}.yoast-wizard--columns>.yoast-wizard--column__push_right{-ms-flex-order:2;order:2}.yoast-wizard--columns>.yoast-wizard--column__push_left{-ms-flex-order:1;order:1;margin-left:0;margin-right:1em}.yoast-wizard--choice>.yoast-wizard--rows{height:100%}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.yoast-wizard--choice>.yoast-wizard--rows{width:100%}}.yoast-wizard--choice div{-ms-flex-item-align:start;align-self:flex-start}.yoast-wizard--choice p{margin-top:.3em;height:100%}.yoast-wizard--box{border:1px solid #a4286a;padding:1em}.yoast-wizard--box>div:first-child{-ms-flex-preferred-size:100px;flex-basis:100px}.yoast-wizard-newsletter--header svg{fill:#a4286a;top:4px;position:relative;margin-right:6px}.yoast-wizard-newsletter--decoration{width:100%;max-width:490px}.yoast-wizard-newsletter--decoration img{width:490px;max-width:100%;margin-top:-3em}.yoast-wizard--video-frame iframe{border:none}@media screen and (max-width:80em) and (-ms-high-contrast:active){.yoast-wizard--columns>div{width:95.5%}}@media screen and (max-width:80em){.yoast-wizard--columns{display:block}.yoast-wizard--columns>div{margin-left:0}.yoast-wizard--columns>.yoast-wizard--column__push_left{margin-right:0;margin-top:2em}.yoast-wizard--box{display:-ms-flexbox;display:flex;margin-top:1em}.yoast-wizard--box:first-child{margin-top:0}.yoast-wizard--box>div{margin-left:1em}.yoast-wizard .hide-on-tablet{display:none}}.yoast-wizard--suggestion{border-top:1px solid #a4286a;padding-top:2em;margin-bottom:2em}.yoast-wizard--suggestion:first-child{border-top:none;padding-top:0}@media screen and (max-width:50rem){.yoast-wizard .hide-on-mobile{display:none}.yoast-wizard--box{display:block}.yoast-wizard--box>div{margin-left:0}.yoast-wizard--video-frame{position:relative;padding-bottom:56.25%;height:0}.yoast-wizard--video-frame iframe{position:absolute;top:0;left:0;width:100%;height:100%}}.ie9 .yoast-wizard--stepper{display:none}
css/dist/{yoast-extensions-1100-rtl.min.css → yoast-extensions-1110-rtl.min.css} RENAMED
File without changes
css/dist/{yoast-extensions-1100.min.css → yoast-extensions-1110.min.css} RENAMED
File without changes
css/dist/{yst_plugin_tools-1100-rtl.min.css → yst_plugin_tools-1110-rtl.min.css} RENAMED
File without changes
css/dist/{yst_plugin_tools-1100.min.css → yst_plugin_tools-1110.min.css} RENAMED
File without changes
css/dist/{yst_seo_score-1100-rtl.min.css → yst_seo_score-1110-rtl.min.css} RENAMED
File without changes
css/dist/{yst_seo_score-1100.min.css → yst_seo_score-1110.min.css} RENAMED
File without changes
deprecated/admin/config-ui/fields/class-field-profile-url-googleplus.php CHANGED
@@ -8,7 +8,7 @@
8
  _deprecated_file( __FILE__, 'WPSEO 10.1' );
9
 
10
  /**
11
- * Class WPSEO_Config_Field_Profile_URL_GooglePlus
12
  *
13
  * @deprecated 10.1
14
  */
8
  _deprecated_file( __FILE__, 'WPSEO 10.1' );
9
 
10
  /**
11
+ * Class WPSEO_Config_Field_Profile_URL_GooglePlus.
12
  *
13
  * @deprecated 10.1
14
  */
deprecated/class-wpseo-option-permalinks.php CHANGED
@@ -33,7 +33,7 @@ class WPSEO_Option_Permalinks {
33
  }
34
 
35
  /**
36
- * Add the actions and filters for the option
37
  *
38
  * @deprecated 7.0
39
  *
@@ -44,7 +44,7 @@ class WPSEO_Option_Permalinks {
44
  }
45
 
46
  /**
47
- * Get the singleton instance of this class
48
  *
49
  * @deprecated 7.0
50
  *
@@ -55,7 +55,7 @@ class WPSEO_Option_Permalinks {
55
  }
56
 
57
  /**
58
- * Validate the option
59
  *
60
  * @deprecated 7.0
61
  *
33
  }
34
 
35
  /**
36
+ * Add the actions and filters for the option.
37
  *
38
  * @deprecated 7.0
39
  *
44
  }
45
 
46
  /**
47
+ * Get the singleton instance of this class.
48
  *
49
  * @deprecated 7.0
50
  *
55
  }
56
 
57
  /**
58
+ * Validate the option.
59
  *
60
  * @deprecated 7.0
61
  *
frontend/class-breadcrumbs.php CHANGED
@@ -251,7 +251,7 @@ class WPSEO_Breadcrumbs {
251
  *
252
  * @param object $term Term to get the parents for.
253
  *
254
- * @return array
255
  */
256
  private function get_term_parents( $term ) {
257
  $tax = $term->taxonomy;
@@ -784,11 +784,11 @@ class WPSEO_Breadcrumbs {
784
  }
785
 
786
  /**
787
- * Retrieve link url and text based on post id
788
  *
789
  * @param int $id Post ID.
790
  *
791
- * @return array Array of link text and url
792
  */
793
  private function get_link_info_for_id( $id ) {
794
  $link = array();
251
  *
252
  * @param object $term Term to get the parents for.
253
  *
254
+ * @return array
255
  */
256
  private function get_term_parents( $term ) {
257
  $tax = $term->taxonomy;
784
  }
785
 
786
  /**
787
+ * Retrieve link url and text based on post id.
788
  *
789
  * @param int $id Post ID.
790
  *
791
+ * @return array Array of link text and url.
792
  */
793
  private function get_link_info_for_id( $id ) {
794
  $link = array();
frontend/class-frontend.php CHANGED
@@ -791,7 +791,7 @@ class WPSEO_Frontend {
791
  * @param array $robots Robots data array.
792
  * @param int $post_id The post ID for which to determine the $robots values, defaults to current post.
793
  *
794
- * @return array
795
  */
796
  public function robots_for_single_post( $robots, $post_id = 0 ) {
797
  $noindex = $this->get_seo_meta_value( 'meta-robots-noindex', $post_id );
791
  * @param array $robots Robots data array.
792
  * @param int $post_id The post ID for which to determine the $robots values, defaults to current post.
793
  *
794
+ * @return array
795
  */
796
  public function robots_for_single_post( $robots, $post_id = 0 ) {
797
  $noindex = $this->get_seo_meta_value( 'meta-robots-noindex', $post_id );
frontend/class-opengraph-image.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_OpenGraph_Image
10
  */
11
  class WPSEO_OpenGraph_Image {
12
 
@@ -440,7 +440,8 @@ class WPSEO_OpenGraph_Image {
440
  *
441
  * @param string $url The given URL.
442
  *
443
- * @return null|number Returns the found attachment ID if it exists. Otherwise -1. If the URL is empty we return null.
 
444
  */
445
  public function add_image_by_url( $url ) {
446
  if ( empty( $url ) ) {
@@ -475,7 +476,7 @@ class WPSEO_OpenGraph_Image {
475
  *
476
  * Use the `wpseo_image_sizes` filter if you want to use our logic. That filter
477
  * can be used to add an image size that needs to be taken into consideration
478
- * within our own logic
479
  *
480
  * @api string $size Size string.
481
  */
6
  */
7
 
8
  /**
9
+ * Class WPSEO_OpenGraph_Image.
10
  */
11
  class WPSEO_OpenGraph_Image {
12
 
440
  *
441
  * @param string $url The given URL.
442
  *
443
+ * @return null|number Returns the found attachment ID if it exists. Otherwise -1.
444
+ * If the URL is empty we return null.
445
  */
446
  public function add_image_by_url( $url ) {
447
  if ( empty( $url ) ) {
476
  *
477
  * Use the `wpseo_image_sizes` filter if you want to use our logic. That filter
478
  * can be used to add an image size that needs to be taken into consideration
479
+ * within our own logic.
480
  *
481
  * @api string $size Size string.
482
  */
frontend/class-opengraph-oembed.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_OpenGraph_OEmbed
10
  */
11
  class WPSEO_OpenGraph_OEmbed implements WPSEO_WordPress_Integration {
12
 
@@ -29,7 +29,7 @@ class WPSEO_OpenGraph_OEmbed implements WPSEO_WordPress_Integration {
29
  * @param array $data The oEmbed data.
30
  * @param WP_Post $post The current Post object.
31
  *
32
- * @see https://developer.wordpress.org/reference/hooks/oembed_response_data/ for hook info
33
  *
34
  * @return array $filter_data - An array of oEmbed data with modified values where appropriate.
35
  */
6
  */
7
 
8
  /**
9
+ * Class WPSEO_OpenGraph_OEmbed.
10
  */
11
  class WPSEO_OpenGraph_OEmbed implements WPSEO_WordPress_Integration {
12
 
29
  * @param array $data The oEmbed data.
30
  * @param WP_Post $post The current Post object.
31
  *
32
+ * @link https://developer.wordpress.org/reference/hooks/oembed_response_data/ for hook info.
33
  *
34
  * @return array $filter_data - An array of oEmbed data with modified values where appropriate.
35
  */
frontend/class-opengraph.php CHANGED
@@ -295,9 +295,9 @@ class WPSEO_OpenGraph {
295
  /**
296
  * Output the locale, doing some conversions to make sure the proper Facebook locale is outputted.
297
  *
298
- * Last update/compare with FB list done on 2015-03-16 by Rarst
299
  *
300
- * @see http://www.facebook.com/translations/FacebookLocales.xml for the list of supported locales
301
  *
302
  * @link https://developers.facebook.com/docs/reference/opengraph/object-type/article/
303
  *
295
  /**
296
  * Output the locale, doing some conversions to make sure the proper Facebook locale is outputted.
297
  *
298
+ * Last update/compare with FB list done on 2015-03-16 by Rarst.
299
  *
300
+ * @link http://www.facebook.com/translations/FacebookLocales.xml for the list of supported locales.
301
  *
302
  * @link https://developers.facebook.com/docs/reference/opengraph/object-type/article/
303
  *
frontend/class-remove-reply-to-com.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Remove_Reply_To_Com
10
  *
11
  * @since 7.0
12
  */
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Remove_Reply_To_Com.
10
  *
11
  * @since 7.0
12
  */
frontend/class-twitter.php CHANGED
@@ -39,7 +39,7 @@ class WPSEO_Twitter {
39
  protected $frontend_page_type;
40
 
41
  /**
42
- * Will hold the Twitter card type being created
43
  *
44
  * @var string
45
  */
@@ -60,7 +60,7 @@ class WPSEO_Twitter {
60
  );
61
 
62
  /**
63
- * Class constructor
64
  */
65
  public function __construct() {
66
  // Class for determine the current page type.
@@ -75,7 +75,7 @@ class WPSEO_Twitter {
75
  public function twitter() {
76
 
77
  /**
78
- * Filter: 'wpseo_output_twitter_card' - Allow disabling of the Twitter card
79
  *
80
  * @api bool $enabled Enabled/disabled flag
81
  */
@@ -119,7 +119,7 @@ class WPSEO_Twitter {
119
  }
120
 
121
  /**
122
- * Determines the twitter card type for the current page
123
  */
124
  private function determine_card_type() {
125
  $this->type = WPSEO_Options::get( 'twitter_card_type' );
@@ -135,15 +135,15 @@ class WPSEO_Twitter {
135
  }
136
 
137
  /**
138
- * Filter: 'wpseo_twitter_card_type' - Allow changing the Twitter Card type as output in the Twitter card by Yoast SEO
139
  *
140
- * @api string $unsigned The type string
141
  */
142
  $this->type = apply_filters( 'wpseo_twitter_card_type', $this->type );
143
  }
144
 
145
  /**
146
- * Determines whether the card type is of a type currently allowed by Twitter
147
  *
148
  * @link https://dev.twitter.com/cards/types
149
  */
@@ -154,7 +154,7 @@ class WPSEO_Twitter {
154
  }
155
 
156
  /**
157
- * Output the metatag
158
  *
159
  * @param string $name Tag name string.
160
  * @param string $value Tag value string.
@@ -168,9 +168,9 @@ class WPSEO_Twitter {
168
  }
169
 
170
  /**
171
- * Filter: 'wpseo_twitter_metatag_key' - Make the Twitter metatag key filterable
172
  *
173
- * @api string $key The Twitter metatag key
174
  */
175
  $metatag_key = apply_filters( 'wpseo_twitter_metatag_key', 'name' );
176
 
@@ -197,9 +197,9 @@ class WPSEO_Twitter {
197
  $meta_desc = wpseo_replace_vars( $meta_desc, get_queried_object() );
198
 
199
  /**
200
- * Filter: 'wpseo_twitter_description' - Allow changing the Twitter description as output in the Twitter card by Yoast SEO
201
  *
202
- * @api string $twitter The description string
203
  */
204
  $meta_desc = apply_filters( 'wpseo_twitter_description', $meta_desc );
205
  if ( is_string( $meta_desc ) && $meta_desc !== '' ) {
@@ -208,7 +208,7 @@ class WPSEO_Twitter {
208
  }
209
 
210
  /**
211
- * Returns the description for a singular page
212
  *
213
  * @param int $post_id Post ID.
214
  *
@@ -230,7 +230,7 @@ class WPSEO_Twitter {
230
  }
231
 
232
  /**
233
- * Getting the description for the taxonomy
234
  *
235
  * @return bool|mixed|string
236
  */
@@ -249,7 +249,7 @@ class WPSEO_Twitter {
249
  }
250
 
251
  /**
252
- * Returns a fallback description
253
  *
254
  * @return string
255
  */
@@ -276,9 +276,9 @@ class WPSEO_Twitter {
276
  $title = wpseo_replace_vars( $title, get_queried_object() );
277
 
278
  /**
279
- * Filter: 'wpseo_twitter_title' - Allow changing the Twitter title as output in the Twitter card by Yoast SEO
280
  *
281
- * @api string $twitter The title string
282
  */
283
  $title = apply_filters( 'wpseo_twitter_title', $title );
284
  if ( is_string( $title ) && $title !== '' ) {
@@ -287,7 +287,7 @@ class WPSEO_Twitter {
287
  }
288
 
289
  /**
290
- * Returns the Twitter title for a single post
291
  *
292
  * @param int $post_id Post ID.
293
  *
@@ -303,7 +303,7 @@ class WPSEO_Twitter {
303
  }
304
 
305
  /**
306
- * Getting the title for the taxonomy
307
  *
308
  * @return bool|mixed|string
309
  */
@@ -318,7 +318,7 @@ class WPSEO_Twitter {
318
  }
319
 
320
  /**
321
- * Returns the Twitter title for any page
322
  *
323
  * @return string
324
  */
@@ -346,9 +346,9 @@ class WPSEO_Twitter {
346
  }
347
 
348
  /**
349
- * Filter: 'wpseo_twitter_site' - Allow changing the Twitter site account as output in the Twitter card by Yoast SEO
350
  *
351
- * @api string $unsigned Twitter site account string
352
  */
353
  $site = apply_filters( 'wpseo_twitter_site', $twitter );
354
  $site = $this->get_twitter_id( $site );
@@ -377,7 +377,7 @@ class WPSEO_Twitter {
377
  }
378
 
379
  /**
380
- * Displays the image for Twitter
381
  *
382
  * Only used when OpenGraph is inactive or Summary Large Image card is chosen.
383
  */
@@ -472,7 +472,7 @@ class WPSEO_Twitter {
472
  }
473
 
474
  /**
475
- * Show the front page image
476
  *
477
  * @return bool
478
  */
@@ -513,7 +513,7 @@ class WPSEO_Twitter {
513
  }
514
 
515
  /**
516
- * Outputs a Twitter image tag for a given image
517
  *
518
  * @param string $img The source URL to the image.
519
  *
@@ -522,9 +522,9 @@ class WPSEO_Twitter {
522
  protected function image_output( $img ) {
523
 
524
  /**
525
- * Filter: 'wpseo_twitter_image' - Allow changing the Twitter Card image
526
  *
527
- * @api string $img Image URL string
528
  */
529
  $img = apply_filters( 'wpseo_twitter_image', $img );
530
 
@@ -550,7 +550,7 @@ class WPSEO_Twitter {
550
  }
551
 
552
  /**
553
- * Retrieve images from the post meta values
554
  *
555
  * @param int $post_id Optional post ID to use.
556
  *
@@ -570,7 +570,7 @@ class WPSEO_Twitter {
570
  }
571
 
572
  /**
573
- * Retrieve an attachment page's attachment
574
  *
575
  * @param string $attachment_id The ID of the attachment for which to retrieve the image.
576
  *
@@ -592,7 +592,7 @@ class WPSEO_Twitter {
592
  }
593
 
594
  /**
595
- * Retrieve the featured image
596
  *
597
  * @param int $post_id Optional post ID to use.
598
  *
@@ -606,9 +606,9 @@ class WPSEO_Twitter {
606
 
607
  if ( function_exists( 'has_post_thumbnail' ) && has_post_thumbnail( $post_id ) ) {
608
  /**
609
- * Filter: 'wpseo_twitter_image_size' - Allow changing the Twitter Card image size
610
  *
611
- * @api string $featured_img Image size string
612
  */
613
  $featured_img = wp_get_attachment_image_src( get_post_thumbnail_id( $post_id ), apply_filters( 'wpseo_twitter_image_size', 'full' ) );
614
 
@@ -658,9 +658,9 @@ class WPSEO_Twitter {
658
  $twitter = ltrim( trim( get_the_author_meta( 'twitter', $post->post_author ) ), '@' );
659
  }
660
  /**
661
- * Filter: 'wpseo_twitter_creator_account' - Allow changing the Twitter account as output in the Twitter card by Yoast SEO
662
  *
663
- * @api string $twitter The twitter account name string
664
  */
665
  $twitter = apply_filters( 'wpseo_twitter_creator_account', $twitter );
666
  $twitter = $this->get_twitter_id( $twitter );
@@ -674,7 +674,7 @@ class WPSEO_Twitter {
674
  }
675
 
676
  /**
677
- * Get the singleton instance of this class
678
  *
679
  * @return object
680
  */
39
  protected $frontend_page_type;
40
 
41
  /**
42
+ * Will hold the Twitter card type being created.
43
  *
44
  * @var string
45
  */
60
  );
61
 
62
  /**
63
+ * Class constructor.
64
  */
65
  public function __construct() {
66
  // Class for determine the current page type.
75
  public function twitter() {
76
 
77
  /**
78
+ * Filter: 'wpseo_output_twitter_card' - Allow disabling of the Twitter card.
79
  *
80
  * @api bool $enabled Enabled/disabled flag
81
  */
119
  }
120
 
121
  /**
122
+ * Determines the twitter card type for the current page.
123
  */
124
  private function determine_card_type() {
125
  $this->type = WPSEO_Options::get( 'twitter_card_type' );
135
  }
136
 
137
  /**
138
+ * Filter: 'wpseo_twitter_card_type' - Allow changing the Twitter Card type as output in the Twitter card by Yoast SEO.
139
  *
140
+ * @api string $unsigned The type string.
141
  */
142
  $this->type = apply_filters( 'wpseo_twitter_card_type', $this->type );
143
  }
144
 
145
  /**
146
+ * Determines whether the card type is of a type currently allowed by Twitter.
147
  *
148
  * @link https://dev.twitter.com/cards/types
149
  */
154
  }
155
 
156
  /**
157
+ * Output the metatag.
158
  *
159
  * @param string $name Tag name string.
160
  * @param string $value Tag value string.
168
  }
169
 
170
  /**
171
+ * Filter: 'wpseo_twitter_metatag_key' - Make the Twitter metatag key filterable.
172
  *
173
+ * @api string $key The Twitter metatag key.
174
  */
175
  $metatag_key = apply_filters( 'wpseo_twitter_metatag_key', 'name' );
176
 
197
  $meta_desc = wpseo_replace_vars( $meta_desc, get_queried_object() );
198
 
199
  /**
200
+ * Filter: 'wpseo_twitter_description' - Allow changing the Twitter description as output in the Twitter card by Yoast SEO.
201
  *
202
+ * @api string $twitter The description string.
203
  */
204
  $meta_desc = apply_filters( 'wpseo_twitter_description', $meta_desc );
205
  if ( is_string( $meta_desc ) && $meta_desc !== '' ) {
208
  }
209
 
210
  /**
211
+ * Returns the description for a singular page.
212
  *
213
  * @param int $post_id Post ID.
214
  *
230
  }
231
 
232
  /**
233
+ * Getting the description for the taxonomy.
234
  *
235
  * @return bool|mixed|string
236
  */
249
  }
250
 
251
  /**
252
+ * Returns a fallback description.
253
  *
254
  * @return string
255
  */
276
  $title = wpseo_replace_vars( $title, get_queried_object() );
277
 
278
  /**
279
+ * Filter: 'wpseo_twitter_title' - Allow changing the Twitter title as output in the Twitter card by Yoast SEO.
280
  *
281
+ * @api string $twitter The title string.
282
  */
283
  $title = apply_filters( 'wpseo_twitter_title', $title );
284
  if ( is_string( $title ) && $title !== '' ) {
287
  }
288
 
289
  /**
290
+ * Returns the Twitter title for a single post.
291
  *
292
  * @param int $post_id Post ID.
293
  *
303
  }
304
 
305
  /**
306
+ * Getting the title for the taxonomy.
307
  *
308
  * @return bool|mixed|string
309
  */
318
  }
319
 
320
  /**
321
+ * Returns the Twitter title for any page.
322
  *
323
  * @return string
324
  */
346
  }
347
 
348
  /**
349
+ * Filter: 'wpseo_twitter_site' - Allow changing the Twitter site account as output in the Twitter card by Yoast SEO.
350
  *
351
+ * @api string $unsigned Twitter site account string.
352
  */
353
  $site = apply_filters( 'wpseo_twitter_site', $twitter );
354
  $site = $this->get_twitter_id( $site );
377
  }
378
 
379
  /**
380
+ * Displays the image for Twitter.
381
  *
382
  * Only used when OpenGraph is inactive or Summary Large Image card is chosen.
383
  */
472
  }
473
 
474
  /**
475
+ * Show the front page image.
476
  *
477
  * @return bool
478
  */
513
  }
514
 
515
  /**
516
+ * Outputs a Twitter image tag for a given image.
517
  *
518
  * @param string $img The source URL to the image.
519
  *
522
  protected function image_output( $img ) {
523
 
524
  /**
525
+ * Filter: 'wpseo_twitter_image' - Allow changing the Twitter Card image.
526
  *
527
+ * @api string $img Image URL string.
528
  */
529
  $img = apply_filters( 'wpseo_twitter_image', $img );
530
 
550
  }
551
 
552
  /**
553
+ * Retrieve images from the post meta values.
554
  *
555
  * @param int $post_id Optional post ID to use.
556
  *
570
  }
571
 
572
  /**
573
+ * Retrieve an attachment page's attachment.
574
  *
575
  * @param string $attachment_id The ID of the attachment for which to retrieve the image.
576
  *
592
  }
593
 
594
  /**
595
+ * Retrieve the featured image.
596
  *
597
  * @param int $post_id Optional post ID to use.
598
  *
606
 
607
  if ( function_exists( 'has_post_thumbnail' ) && has_post_thumbnail( $post_id ) ) {
608
  /**
609
+ * Filter: 'wpseo_twitter_image_size' - Allow changing the Twitter Card image size.
610
  *
611
+ * @api string $featured_img Image size string.
612
  */
613
  $featured_img = wp_get_attachment_image_src( get_post_thumbnail_id( $post_id ), apply_filters( 'wpseo_twitter_image_size', 'full' ) );
614
 
658
  $twitter = ltrim( trim( get_the_author_meta( 'twitter', $post->post_author ) ), '@' );
659
  }
660
  /**
661
+ * Filter: 'wpseo_twitter_creator_account' - Allow changing the Twitter account as output in the Twitter card by Yoast SEO.
662
  *
663
+ * @api string $twitter The twitter account name string.
664
  */
665
  $twitter = apply_filters( 'wpseo_twitter_creator_account', $twitter );
666
  $twitter = $this->get_twitter_id( $twitter );
674
  }
675
 
676
  /**
677
+ * Get the singleton instance of this class.
678
  *
679
  * @return object
680
  */
frontend/class-woocommerce-shop-page.php CHANGED
@@ -25,7 +25,7 @@ class WPSEO_WooCommerce_Shop_Page implements WPSEO_WordPress_Integration {
25
  protected static $is_shop_page;
26
 
27
  /**
28
- * Registers the hooks
29
  *
30
  * @return void
31
  */
25
  protected static $is_shop_page;
26
 
27
  /**
28
+ * Registers the hooks.
29
  *
30
  * @return void
31
  */
frontend/schema/class-schema-context.php CHANGED
@@ -163,11 +163,11 @@ class WPSEO_Schema_Context {
163
  $this->site_represents = WPSEO_Options::get( 'company_or_person', '' );
164
  $this->site_url = trailingslashit( WPSEO_Utils::home_url() );
165
 
166
- if ( $this->site_represents == 'company' ) {
167
  $this->company_name = WPSEO_Options::get( 'company_name' );
168
  }
169
 
170
- if ( $this->site_represents == 'person' ) {
171
  $this->site_user_id = WPSEO_Options::get( 'company_or_person_user_id', false );
172
  }
173
 
163
  $this->site_represents = WPSEO_Options::get( 'company_or_person', '' );
164
  $this->site_url = trailingslashit( WPSEO_Utils::home_url() );
165
 
166
+ if ( $this->site_represents === 'company' ) {
167
  $this->company_name = WPSEO_Options::get( 'company_name' );
168
  }
169
 
170
+ if ( $this->site_represents === 'person' ) {
171
  $this->site_user_id = WPSEO_Options::get( 'company_or_person_user_id', false );
172
  }
173
 
frontend/schema/class-schema-image.php ADDED
@@ -0,0 +1,152 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * WPSEO plugin file.
4
+ *
5
+ * @package WPSEO\Frontend\Schema
6
+ */
7
+
8
+ /**
9
+ * Returns schema image data.
10
+ *
11
+ * @since 11.1
12
+ *
13
+ * @property string $schema_id The `@id` to use for the returned image.
14
+ * @property array $data The ImageObject Schema array.
15
+ * @property int $attachment_id The ID of the attachment used to generate the object.
16
+ */
17
+ class WPSEO_Schema_Image {
18
+ /**
19
+ * The `@id` to use for the returned image.
20
+ *
21
+ * @var string
22
+ */
23
+ private $schema_id;
24
+
25
+ /**
26
+ * The ImageObject Schema array.
27
+ *
28
+ * @var array
29
+ */
30
+ private $data;
31
+
32
+ /**
33
+ * The ID of the attachment used to generate the object.
34
+ *
35
+ * @var int
36
+ */
37
+ private $attachment_id;
38
+
39
+ /**
40
+ * WPSEO_Schema_Breadcrumb constructor.
41
+ *
42
+ * @param string $schema_id The string to use in an image's `@id`.
43
+ */
44
+ public function __construct( $schema_id ) {
45
+ $this->schema_id = $schema_id;
46
+ $this->generate_object();
47
+ }
48
+
49
+ /**
50
+ * Find an image based on its URL and generate a Schema object for it.
51
+ *
52
+ * @param string $url The image URL to base our object on.
53
+ * @param string $caption An optional caption.
54
+ *
55
+ * @return array Schema ImageObject array.
56
+ */
57
+ public function generate_from_url( $url, $caption = '' ) {
58
+ $attachment_id = WPSEO_Image_Utils::get_attachment_by_url( $url );
59
+ if ( $attachment_id > 0 ) {
60
+ return $this->generate_from_attachment_id( $attachment_id, $caption );
61
+ }
62
+
63
+ return $this->simple_image_object( $url, $caption );
64
+ }
65
+
66
+ /**
67
+ * Retrieve data about an image from the database and use it to generate a Schema object.
68
+ *
69
+ * @param int $attachment_id The attachment to retrieve data from.
70
+ * @param string $caption The caption string, if there is one.
71
+ *
72
+ * @return array Schema ImageObject array.
73
+ */
74
+ public function generate_from_attachment_id( $attachment_id, $caption = '' ) {
75
+ $this->attachment_id = $attachment_id;
76
+ $this->data['url'] = wp_get_attachment_image_url( $this->attachment_id, 'full' );
77
+ $this->add_image_size();
78
+ $this->add_caption( $caption );
79
+
80
+ return $this->data;
81
+ }
82
+
83
+ /**
84
+ * If we can't find $url in our database, we output a simple ImageObject.
85
+ *
86
+ * @param string $url The image URL.
87
+ * @param string $caption A caption, if set.
88
+ *
89
+ * @return array $data Schema ImageObject array.
90
+ */
91
+ public function simple_image_object( $url, $caption = '' ) {
92
+ $this->data['url'] = $url;
93
+
94
+ if ( ! empty( $caption ) ) {
95
+ $this->data['caption'] = $caption;
96
+ }
97
+
98
+ return $this->data;
99
+ }
100
+
101
+ /**
102
+ * Retrieves an image's caption if set, or uses the alt tag if that's set.
103
+ *
104
+ * @param string $caption The caption string, if there is one.
105
+ *
106
+ * @return void
107
+ */
108
+ private function add_caption( $caption = '' ) {
109
+ if ( ! empty( $caption ) ) {
110
+ $this->data['caption'] = $caption;
111
+
112
+ return;
113
+ }
114
+
115
+ $caption = wp_get_attachment_caption();
116
+ if ( ! empty( $caption ) ) {
117
+ $this->data['caption'] = $caption;
118
+
119
+ return;
120
+ }
121
+
122
+ $caption = get_post_meta( $this->attachment_id, '_wp_attachment_image_alt', true );
123
+ if ( ! empty( $caption ) ) {
124
+ $this->data['caption'] = $caption;
125
+ }
126
+
127
+ return;
128
+ }
129
+
130
+ /**
131
+ * Generates our bare bone ImageObject.
132
+ *
133
+ * @return void
134
+ */
135
+ private function generate_object() {
136
+ $this->data = array(
137
+ '@type' => 'ImageObject',
138
+ '@id' => $this->schema_id,
139
+ );
140
+ }
141
+
142
+ /**
143
+ * Adds image's width and height.
144
+ *
145
+ * @return void
146
+ */
147
+ private function add_image_size() {
148
+ $image_meta = wp_get_attachment_metadata( $this->attachment_id );
149
+ $this->data['width'] = $image_meta['width'];
150
+ $this->data['height'] = $image_meta['height'];
151
+ }
152
+ }
frontend/schema/class-schema-organization.php CHANGED
@@ -67,12 +67,8 @@ class WPSEO_Schema_Organization implements WPSEO_Graph_Piece {
67
  return $data;
68
  }
69
  $id = $this->context->site_url . WPSEO_Schema_IDs::ORGANIZATION_LOGO_HASH;
70
- $data['logo'] = array(
71
- '@type' => 'ImageObject',
72
- '@id' => $id,
73
- 'url' => $logo,
74
- 'caption' => $this->context->company_name,
75
- );
76
  $data['image'] = array( '@id' => $id );
77
 
78
  return $data;
67
  return $data;
68
  }
69
  $id = $this->context->site_url . WPSEO_Schema_IDs::ORGANIZATION_LOGO_HASH;
70
+ $schema_image = new WPSEO_Schema_Image( $id );
71
+ $data['logo'] = $schema_image->generate_from_url( $logo, $this->context->company_name );
 
 
 
 
72
  $data['image'] = array( '@id' => $id );
73
 
74
  return $data;
frontend/schema/class-schema-person.php CHANGED
@@ -24,7 +24,7 @@ class WPSEO_Schema_Person implements WPSEO_Graph_Piece {
24
  * @param WPSEO_Schema_Context $context A value object with context variables.
25
  */
26
  public function __construct( WPSEO_Schema_Context $context ) {
27
- $this->context = $context;
28
  }
29
 
30
  /**
@@ -141,16 +141,14 @@ class WPSEO_Schema_Person implements WPSEO_Graph_Piece {
141
  * @return array $data The Person schema.
142
  */
143
  protected function add_image( $data, $user_data ) {
144
- if ( ! get_avatar_url( $user_data->user_email ) ) {
 
145
  return $data;
146
  }
147
 
148
- $data['image'] = array(
149
- '@type' => 'ImageObject',
150
- '@id' => $this->context->site_url . WPSEO_Schema_IDs::PERSON_LOGO_HASH,
151
- 'url' => get_avatar_url( $user_data->user_email ),
152
- 'caption' => $user_data->display_name,
153
- );
154
 
155
  return $data;
156
  }
24
  * @param WPSEO_Schema_Context $context A value object with context variables.
25
  */
26
  public function __construct( WPSEO_Schema_Context $context ) {
27
+ $this->context = $context;
28
  }
29
 
30
  /**
141
  * @return array $data The Person schema.
142
  */
143
  protected function add_image( $data, $user_data ) {
144
+ $url = get_avatar_url( $user_data->user_email );
145
+ if ( empty( $url ) ) {
146
  return $data;
147
  }
148
 
149
+ $id = $this->context->site_url . WPSEO_Schema_IDs::PERSON_LOGO_HASH;
150
+ $schema_image = new WPSEO_Schema_Image( $id );
151
+ $data['image'] = $schema_image->simple_image_object( $url, $user_data->display_name );
 
 
 
152
 
153
  return $data;
154
  }
frontend/schema/class-schema-webpage.php CHANGED
@@ -46,7 +46,7 @@ class WPSEO_Schema_WebPage implements WPSEO_Graph_Piece {
46
  * @return array WebPage schema data.
47
  */
48
  public function generate() {
49
- $data = array(
50
  '@type' => $this->determine_page_type(),
51
  '@id' => $this->context->canonical . WPSEO_Schema_IDs::WEBPAGE_HASH,
52
  'url' => $this->context->canonical,
@@ -62,6 +62,7 @@ class WPSEO_Schema_WebPage implements WPSEO_Graph_Piece {
62
  if ( $this->context->site_represents === 'person' ) {
63
  $about_id = WPSEO_Schema_IDs::PERSON_HASH;
64
  }
 
65
  $data['about'] = array(
66
  '@id' => $this->context->site_url . $about_id,
67
  );
@@ -146,12 +147,8 @@ class WPSEO_Schema_WebPage implements WPSEO_Graph_Piece {
146
  }
147
 
148
  $id = $this->context->canonical . WPSEO_Schema_IDs::PRIMARY_IMAGE_HASH;
149
- $data['image'] = array(
150
- '@type' => 'ImageObject',
151
- '@id' => $id,
152
- 'url' => get_the_post_thumbnail_url(),
153
- 'caption' => get_the_post_thumbnail_caption(),
154
- );
155
  $data['primaryImageOfPage'] = array(
156
  '@id' => $id,
157
  );
46
  * @return array WebPage schema data.
47
  */
48
  public function generate() {
49
+ $data = array(
50
  '@type' => $this->determine_page_type(),
51
  '@id' => $this->context->canonical . WPSEO_Schema_IDs::WEBPAGE_HASH,
52
  'url' => $this->context->canonical,
62
  if ( $this->context->site_represents === 'person' ) {
63
  $about_id = WPSEO_Schema_IDs::PERSON_HASH;
64
  }
65
+
66
  $data['about'] = array(
67
  '@id' => $this->context->site_url . $about_id,
68
  );
147
  }
148
 
149
  $id = $this->context->canonical . WPSEO_Schema_IDs::PRIMARY_IMAGE_HASH;
150
+ $schema_image = new WPSEO_Schema_Image( $id );
151
+ $data['image'] = $schema_image->generate_from_attachment_id( get_post_thumbnail_id() );
 
 
 
 
152
  $data['primaryImageOfPage'] = array(
153
  '@id' => $id,
154
  );
images/brushstroke_background.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg width="644" height="113" xmlns="http://www.w3.org/2000/svg"><path d="M640.4 45.197c.012-2.347-1.656-2.597-3.58-2.698-1.319-.07-2.713-1.159-1.733-1.681 4.01-2.136.277-4.135.136-6.321l4.897-2.504c-3.063-.567-5.636-1.196-8.257-1.484-2.498-.276-3.758-1.62-4.064-3.524-.377-2.34 2.003-2.272 3.68-2.752 1.024-.292-4.16-6.713-3.68-8.424-3.026-.987 6.822-2.043 6.513-6.397-.083-1.16-13.477-3.269-14.853-3.432-13.549-1.617-43.856-3.582-57.646-4.596-20.786-1.527-47.43 0-71.293 0-23.864 0-44.238.667-65.788 0-25.228-.781-55.512-.68-80.755 0-29.127.788-38.853-.116-67.989 0-37.862.153-71.036 1.181-108.879 0-21.277-.664-46.585 1.358-67.85 0-19.86-1.27-29.992.901-49.991 2.234-6.335.421-34.245-2.213-38.147 2.362-4.267 5.003-4.74 3.756-7.48 9.83C-.102 24.095 2.243 33.711.726 42.5c-1.252 7.245-.637 12.912 0 20.275.114 1.325.458 8.643 0 9.776-.62 1.538 2.704 23.31 2.915 24.976.471 3.715 3.532 11.176 7.48 12.856 4.533 1.93 8.625-1.966 12.923.319 5.048 2.682 13.871-.718 19.49 0 17.718 2.263 25.58-.222 43.466 0 8.954.11 23.058-.125 32 0 8.021.124 22.98 1.732 31 2.051 17.854.693 31.68-2.273 49.543-2.051 8.627.124 17.338-.208 25.958-.222 12.47-.028 24.961.194 37.442 0 15.063-.25 31.538-2.112 45.184-.943 26.701 2.288 48.593.014 71.498.846 15.957.568 29.13-.721 45.107-.485 13.972.208 27.948.097 41.924.596 5.634.208 11.38-.305 17.054-.111 23.101.735 46.226.277 69.33 1.442 13.234.665 26.51 1.635 39.793.928 9.894-.513 36.747-1.121 45.63-4.948 4.34-1.873-5.96-7.044-2.814-10.278 1.943-1.997 3.819-4.047 5.752-6.055 3.007-3.124 3.722-4.782.445-7.187-3.55-2.605-1.914-4.094-.202-6.198 1.054-1.296 2.548-2.513 1.285-4.354-1.038-1.515-1.63-3.53-4.466-2.953-2.191.447-2.712-.06-2.257-2.247.514-2.459-3.405-6.19-6.191-5.758-3.691.573 7.556-1.063 7.409-3.52-.111-1.836-.147-3.552-1.103-5.321-2.327-4.299-1.45-5.614 3.697-6.343 1.125-.158 2.251-.312 3.483-.483-.936-.976-3.109-.345-3.101-1.911z" fill="#EEEFFF" fill-rule="evenodd"/></svg>
images/local_assistant.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg role="img" aria-hidden="true" focusable="false" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 152 176"><path fill="#af7e48" d="M137.57 99.31c.61 0 7 5.83 7 5.83l.4 6c-1.49 1.68-3 1.2-5.43 4.22s-6.43-2.82-6.43-2.82l5.23-4.82z"/><path fill="#c69b65" d="M142.49 96.4c1.12-.91 6.14 1.1 7.35 2.91s1.81 6 1.81 6a62.1 62.1 0 0 0-3.62 5.43c-.8 1.61-2.82 1-4-1.2s.6-4.43.6-4.43l-4.83-2.21zM140 82.62c-1.41 0-4 4.22-6.24 4.82s-9.65 3.22-9.65 3.22l3 5.43 11.07-1s3.41-5.23 3.82-7.65-.61-4.82-2-4.82z"/><path fill="#af7e48" d="M58.79 34.92c2.15 3.14 3.37 6 4.94 5s2.89-5.73.74-8.87-5.18-4.83-6.74-3.76-1.1 4.48 1.06 7.63z"/><path fill="#181716" d="M48.41 15.34s2.76-1 3.27-.26 6.78 6.28 8 11-.25 5.27-.5 4.52-9-12.55-9-12.55z"/><path fill="#c6d8ee" d="M53.43 156.44c-1.25-.5-31.13.76-31.13-.25s-6-64.27-6-64.27c8.81-14.18 23.25-19.64 49.9-22.58l22.16 14 8.29 72.81z"/><path fill="#738498" d="M33.08 136.37s6.58-.11 6.62-.13c-1.13 1.48-2.72 2-3.76 3.75 2 1.39 6.58-.71 9 .13-1.84-.13-8.68 3.43-10.51 3.41.93 5.09 9.86 4.65 13 2.89-1.42 1.77-2.11 6.05-2.78 8.26-2.84-2.13-19.16-3.16-25.55-7.78 2.28-4.75 4.72-9.84 6.63-14.8 2-5.12 7-5.34 9.68-10.06.46-.8-.42-11.17-.54-11.5 1.76 3.5 3.29 8.79 3 12.71.55-1.52 3-2.48 4.48-3 .83 3.56.56-7.25-9.27 16.12z"/><path fill="#c6d8ee" d="M67.38 69c.5.5 17 2.17 22.63 4.53 11.46 4.82 5.73 22.92 17.16 27.13 3.8 1.41 19.58-2.51 19.58-2.51l3.77 15.85c-14.13 9.14-27.5 12.4-40.18 10.29L69.25 88.9z"/><path fill="#c69b65" d="M60.46 56.51c.51 2 8.29 29.63 8.29 29.63L51.68 96.69 29.83 80.62 26.57 62z"/><path fill="#af7e48" d="M28.93 67.13c-.79 2.68 7.27 6.66 9.47 7.53A61.27 61.27 0 0 0 49 77.93c3.07.59 7.26 1.17 10.05-.5 4.16-2.5 4.07-9.45 2.71-13.53-3.21 2.21-7.61 1.82-11.44 2.16-7.17.63-14-.25-21.11-.14.08.69-.17 1.5-.08 2.19-.24-.05-.44-.18-.2-.98z"/><path fill="#c6d8ee" d="M62.47 64.05s-2.76 8.53-3.26 12.8 4 16.07 3.77 15.32 9.79-5.28 9.79-5.28z"/><path fill="#c6d8ee" d="M27.82 68.56c-2.26.51-1.5 1.76-2 5.28s.45 10.39.45 10.39l23.15 20L72 92.92l-14.51-4s-2.59-5.77-5.6-8.28-7.5 1.25-12.53-.76c-10.03-4.29-10.53-7.8-11.54-11.32z"/><path fill="#738498" d="M57.5 88.9a93.54 93.54 0 0 1 26.78 6.21l-1.61 1.18c-4.78-2.16-14.19-4.15-23.48-6.43-.33-.08-10.52 16.74-15.14 23.33-.43.61 10.26 10.25 22.53 29.56-15.09-21.12-24.22-27.93-24.34-27.95C41.36 114.6 58 89 57.5 88.9z"/><path fill="#565377" d="M18.53 88.9l4.77-5a74.39 74.39 0 0 1 30.39 26.36s24.15-16.67 24.6-17.32c1.82-2.63-13.89-25.12-15.57-23.6l4.52-.76c8.09 7.08 14 13.79 15.82 19.84C93.4 109.13 98.29 132 98.63 156.69L50.92 160H36.11c11.46-7 16.56-20.78 10.55-46.45C41 101.8 31.83 93.41 18.53 88.9z"/><path fill="#c69b65" d="M48.66 13.08c.76.5 17.83 24.1 19.84 31.38s-5.78 23.6-7.5 25.36-7.28 2.76-10.55 3-18.38-.75-23-6-12.85-33.9-12.85-33.9l2.26-8.79z"/><path fill="#181716" d="M29.53 54c-.75 2.14-2.27 2.27-4.26 1.83l-5.81-5.57-3.2-.58c-4.19-4.33-5.7-11.51-5-21 0 0 12.56-11.3 14.31-7.78s-3 13.56-3.26 17.07-.25 7.28-.25 7.28c-.16 1.38 5.09 5.49 7.47 8.75z"/><path fill="#c6d8ee" d="M39.8 25c4.05-2.29 12.09-6.14 10.59-11.2C49.94 12.28 45 1.45 43.22.2S24.06 4 20 6.55 5.23 17.09 5.23 19.85 10.22 31.23 11 32s25.06-4.87 28.8-7z"/><path fill="#786857" d="M98.88 168L45.4 154.69s55.74-63.78 56.49-63.53 48 .5 48 .5l1 3.27-44.69 69.3c-2.2 2.13-5.2 2.98-7.32 3.77z"/><path fill="#614d41" d="M45.15 154.18s49.12 9.58 49.46 10.3c3.77.5 6.78-.25 8.79-2l46.95-71.06.5 3.52-45.19 71.56c-.65 2.78-6.38 4.36-11.55 2.68s-48-12.23-48-12.23z"/><path fill="#181716" d="M43.64 69.57s6.7 6.76 11.47 6 6.09-.76 7.85-4c2.72-5.06.65-6.12-1.41-11.46L61 64.52l-2.47-2.62-.8 4.43-2.21-2.42-1 3.82-2.62-1.81v3.62l-4.22-1.81 1.41 3z"/><path fill="#edb059" d="M141.63 95.18c0 7.28-11 12.52-23 11.43-11.16-1-19.3-4.1-19.3-11.38s9.42-15.65 20.63-15.65c.57 0 1.15 0 1.73.06.78 1.39 2.66 1.31 4.72.83 8.43 2.34 15.22 8.86 15.22 14.71z"/><path fill="#af7e48" d="M120.15 85.22c-3.75 1.64-6 6.68-8 10.13.39-3.76.7-7.91 3.81-11.23a19.75 19.75 0 0 0-10.69.72c1.56-1.31 5.41-3.39 13.06-2.87a9.21 9.21 0 0 1 3.35-2.32c.88.75 3.32 1 4.92.76a4.46 4.46 0 0 0-3.11 2.26c4.17.66 9.54 4.09 11.19 7.9-3.46-2.86-8.68-5.71-14.53-5.35z"/><path fill="#edb059" d="M125.54 116.56c0 8-12 13.68-25.19 12.48-12.19-1.1-21.08-4.47-21.08-12.42s10.29-17.11 22.53-17.11c.64 0 1.27 0 1.89.07.86 1.52 2.91 1.43 5.16.91 9.27 2.51 16.69 9.67 16.69 16.07z"/><path fill="#cf8c33" d="M79.21 116.62a13.2 13.2 0 0 1 2.38-7.92 23.41 23.41 0 0 1 6-5.91 25.34 25.34 0 0 1 7.72-3.51 24.67 24.67 0 0 1 8.47-.83h.61l.29.52a1.15 1.15 0 0 0 .51.49 2.37 2.37 0 0 0 .93.21 9.72 9.72 0 0 0 2.49-.27l.28-.06.24.07a30.79 30.79 0 0 1 5.88 2.41 26.89 26.89 0 0 1 5.14 3.71 18.73 18.73 0 0 1 4 4.94 11.22 11.22 0 0 1 1.5 6h-.13a11.48 11.48 0 0 0-1.85-5.75 20 20 0 0 0-4-4.58 28.62 28.62 0 0 0-10.77-5.63h.06a10.68 10.68 0 0 1-2.82.34 3.61 3.61 0 0 1-1.4-.31 2.41 2.41 0 0 1-1.08-1l.1.07a25 25 0 0 0-8.08.72 25.69 25.69 0 0 0-7.45 3.22 22.49 22.49 0 0 0-6 5.46 13.41 13.41 0 0 0-2.81 7.51z"/><path fill="#af7e48" d="M102.07 105.68c-4.09 1.79-6.58 7.3-8.72 11.06.43-4.1.77-8.63 4.16-12.27a21.71 21.71 0 0 0-11.68.79c1.71-1.43 5.92-3.7 14.27-3.14.56-.91 2.57-2.05 3.66-2.53 1 .82 3.63 1.1 5.37.83-1.85.59-2.62 1.11-3.39 2.47 4.56.72 10.43 4.47 12.23 8.64-3.81-3.13-9.49-6.24-15.9-5.85z"/><path fill="#edb059" d="M106.78 143.09c0 8.75-13.24 15-27.7 13.73-13.41-1.21-23.18-4.92-23.18-13.66s11.31-18.81 24.78-18.81c.69 0 1.38 0 2.07.08.94 1.66 3.2 1.57 5.67 1 10.2 2.8 18.36 10.63 18.36 17.66z"/><path fill="#cf8c33" d="M55.84 143.16a14.64 14.64 0 0 1 2.65-8.67A25.69 25.69 0 0 1 65.1 128a27.89 27.89 0 0 1 8.46-3.83 27.12 27.12 0 0 1 9.28-.91l.61.06.29.52a1.35 1.35 0 0 0 .61.57 2.68 2.68 0 0 0 1.07.25 10.48 10.48 0 0 0 2.76-.31l.28-.06.25.07a33.88 33.88 0 0 1 6.45 2.64 30.09 30.09 0 0 1 5.64 4.05 21 21 0 0 1 4.36 5.39 12.34 12.34 0 0 1 1.68 6.62h-.12a12.55 12.55 0 0 0-2-6.32 22.19 22.19 0 0 0-4.43-5 31.83 31.83 0 0 0-11.86-6.2h.06a11.89 11.89 0 0 1-3.09.38 3.92 3.92 0 0 1-1.54-.34 2.68 2.68 0 0 1-1.18-1.08l.1.06a27.44 27.44 0 0 0-8.89.8 28.7 28.7 0 0 0-8.2 3.54 24.88 24.88 0 0 0-6.6 6 14.84 14.84 0 0 0-3.09 8.26z"/><path fill="#af7e48" d="M81 131.13c-4.5 2-7.24 8-9.59 12.16.47-4.51.85-9.49 4.57-13.48-3.52-.89-9.46-.61-12.84.86 1.88-1.57 6.51-4.07 15.7-3.45.61-1 2.82-2.25 4-2.78 1 .9 4 1.21 5.91.91-2 .65-2.88 1.21-3.73 2.72 5 .79 11.46 4.91 13.44 9.49-4.19-3.44-10.46-6.86-17.46-6.43z"/><path fill="#c6d8ee" d="M50.5 153.36c-1.76-.76-19.41-6.71-19.41-6.71a4.65 4.65 0 0 0 .5-3.77c-.75-1.75-3.26-1-3.26-1s7.5-11.47 7-21-19.06-28.96-19.06-28.96S6 108 4.47 114.26s.55 11.53.25 15.57c-1.5 20.34-9.29 25.16.43 32.69 9 7 39.75 10 39.75 10z"/><path fill="#c6d8ee" d="M57.7 154.51l-11.55-4.34c-3.37.48-11.35 20.51-8.28 23.67.52.54 12.84 3.82 14.38 1.08 3.06-5.42 5.45-20.41 5.45-20.41z"/><path fill="#738498" d="M50.74 173.92c1.79-2.79 2.4-6.58 3.21-9.78.54-2.11 1.58-6.19.21-8.24-3.03 1.45-5.83 17.9-3.42 18.02z"/><path fill="#c69b65" d="M53.86 155.16a43.75 43.75 0 0 0 5.85 1.28c1.26 0 4-2.83 5.8-3.59a15.89 15.89 0 0 1 6.15-1.43c2.26 0 5 2.43 6.71 2.91s4.68-.88 7.2-1.4c4.16-.86 2 6-2.08 7a23.14 23.14 0 0 1-6.35.5s5.92 3 4.42 5l9 2.69c-4 2.51-3.51 3.84-6 4.59S79 170 79 170s-1 2.51-3 2.51-4.27-1.25-5.52-.75-1.26 2.51-3.27 2.51-5.52-2.51-5.52-2.51l-6-6-5-.25c-.59-2.94.87-7.24 3.17-10.35z"/><path fill="#fff" d="M58.22 53.16a.57.57 0 0 0-.13-.63.57.57 0 0 0-.63-.11l-15.61 7a.34.34 0 0 0 .14.65c3.33 0 11-.17 12.72-1.42 1.5-1.06 2.82-3.83 3.51-5.49zM40.83 41.59a4.77 4.77 0 0 0-6-2c-4 1.61-3 6.23-3 6.23 3.97-.27 7.31-1.3 9-4.23z"/><path fill="#181716" d="M40.8 41.61a6 6 0 0 0-2.91-1.67 4.86 4.86 0 0 0-3 .46 4.47 4.47 0 0 0-2.21 2.06 9 9 0 0 0-.83 3.34h-.08a6.89 6.89 0 0 1 .29-3.6 4.57 4.57 0 0 1 2.48-2.6 4.94 4.94 0 0 1 3.58-.32 5.15 5.15 0 0 1 2.78 2.27z"/><path fill="#fff" d="M51.27 38.22s-1.19-4.48 2.23-5.48 5.29 2.18 5.29 2.18c-2.33 1.65-5.11 3.51-7.52 3.3z"/><path fill="#181716" d="M51.23 38.23a5.1 5.1 0 0 1-.56-3.33 3.75 3.75 0 0 1 .77-1.72 3.82 3.82 0 0 1 1.61-1.09 4.43 4.43 0 0 1 5.77 2.8h-.07a5.3 5.3 0 0 0-2.36-2 4.2 4.2 0 0 0-3.06 0 3 3 0 0 0-1.29.82 3.37 3.37 0 0 0-.72 1.36 6.5 6.5 0 0 0 0 3.13zM36.26 31.37a1 1 0 0 1 .78 0 1 1 0 0 1 .55.56l.64 1.65a1 1 0 0 1 0 .78 1 1 0 0 1-.59.51 21.47 21.47 0 0 0-9.54 6.4.38.38 0 0 1-.3.11.34.34 0 0 1-.26-.17l-.62-1a1.12 1.12 0 0 1 0-1.17c1.84-2.98 4.89-5.53 9.34-7.67zM48 26.44a.75.75 0 0 0-.37.41.73.73 0 0 0 0 .56l.64 1.32a1.3 1.3 0 0 0 .82.68 1.32 1.32 0 0 0 1.06-.16 15.4 15.4 0 0 1 7.14-2.11.4.4 0 0 0 .35-.24.42.42 0 0 0-.05-.42l-.44-.58a2.31 2.31 0 0 0-1.46-.9A12.86 12.86 0 0 0 48 26.44z"/><circle cx="35.93" cy="42.52" r="1.81" fill="#181716"/><circle cx="53.63" cy="35.28" r="1.81" fill="#181716"/><circle cx="36.44" cy="41.52" r=".61" fill="#fff"/><circle cx="54.1" cy="34.31" r=".62" fill="#fff"/><path fill="#738498" d="M39.43 2.57c-.57 1.28-2.24 2-3.22 3.06A25.76 25.76 0 0 1 29 10.5a43.61 43.61 0 0 1-18.65 4.95 32.42 32.42 0 0 0 7-2.82c3-1.5 4.64-4.45 7.81-5.74 2.68-1.08 5.22.3 7.66-.55a25.48 25.48 0 0 0 6.61-3.77z"/><path fill="#af7e48" d="M46.06 49.83a2.21 2.21 0 0 0-.44 2.47c1.22 1.22 3.7-1 5.65-1.24.56-.07 6-.32 6.07-3.84.07-2.47-2.86-2.35-4.25-3.31-2.52-1.73-2.43-5.15-4.83-7.27 1.24 2.22 2.21 4.81 3.59 7 1.08 1.71 4 2.2 4 4.08s-3.71 2.89-5.93 2.16c-.84.95-4.38 2.5-3.86-.05z"/><path fill="#c69b65" d="M23.76 54.27c1.72 3.4 2.73 6.13.07 7.48S15.42 60 13.7 56.57s-.84-7.15 2.13-7.31c4.09-.26 6.17 1.6 7.93 5.01z"/><circle cx="60.49" cy="96.85" r="3.02" fill="#738498"/><circle cx="61.09" cy="96.16" r="2.34" fill="#c6d8ee"/></svg>
inc/class-addon-manager.php CHANGED
@@ -460,7 +460,7 @@ class WPSEO_Addon_Manager {
460
  /**
461
  * Filters the given array by its keys.
462
  *
463
- * This method is temporary. When WordPress has minimaal PHP 5.6 support we can change this to:
464
  *
465
  * array_filter( $array_to_filter, $filter, ARRAY_FILTER_USE_KEY )
466
  *
460
  /**
461
  * Filters the given array by its keys.
462
  *
463
+ * This method is temporary. When WordPress has minimal PHP 5.6 support we can change this to:
464
  *
465
  * array_filter( $array_to_filter, $filter, ARRAY_FILTER_USE_KEY )
466
  *
inc/class-my-yoast-api-request.php CHANGED
@@ -18,7 +18,7 @@ class WPSEO_MyYoast_Api_Request {
18
  protected $url;
19
 
20
  /**
21
- * The request paramaters.
22
  *
23
  * @var array
24
  */
@@ -53,7 +53,7 @@ class WPSEO_MyYoast_Api_Request {
53
  protected $client;
54
 
55
  /**
56
- * Constructor
57
  *
58
  * @codeCoverageIgnore
59
  *
@@ -66,7 +66,7 @@ class WPSEO_MyYoast_Api_Request {
66
  }
67
 
68
  /**
69
- * Fires the request
70
  *
71
  * @return bool True when request is successful.
72
  */
18
  protected $url;
19
 
20
  /**
21
+ * The request parameters.
22
  *
23
  * @var array
24
  */
53
  protected $client;
54
 
55
  /**
56
+ * Constructor.
57
  *
58
  * @codeCoverageIgnore
59
  *
66
  }
67
 
68
  /**
69
+ * Fires the request.
70
  *
71
  * @return bool True when request is successful.
72
  */
inc/class-rewrite.php CHANGED
@@ -11,7 +11,7 @@
11
  class WPSEO_Rewrite {
12
 
13
  /**
14
- * Class constructor
15
  */
16
  public function __construct() {
17
  add_filter( 'query_vars', array( $this, 'query_vars' ) );
@@ -39,6 +39,7 @@ class WPSEO_Rewrite {
39
  * If the flush option is set, flush the rewrite rules.
40
  *
41
  * @since 1.2.8
 
42
  * @return bool
43
  */
44
  public function flush() {
@@ -81,7 +82,7 @@ class WPSEO_Rewrite {
81
  }
82
 
83
  /**
84
- * Update the query vars with the redirect var when stripcategorybase is active
85
  *
86
  * @param array $query_vars Main query vars to filter.
87
  *
@@ -111,7 +112,7 @@ class WPSEO_Rewrite {
111
  }
112
 
113
  /**
114
- * This function taken and only slightly adapted from WP No Category Base plugin by Saurabh Gupta
115
  *
116
  * @return array
117
  */
11
  class WPSEO_Rewrite {
12
 
13
  /**
14
+ * Class constructor.
15
  */
16
  public function __construct() {
17
  add_filter( 'query_vars', array( $this, 'query_vars' ) );
39
  * If the flush option is set, flush the rewrite rules.
40
  *
41
  * @since 1.2.8
42
+ *
43
  * @return bool
44
  */
45
  public function flush() {
82
  }
83
 
84
  /**
85
+ * Update the query vars with the redirect var when stripcategorybase is active.
86
  *
87
  * @param array $query_vars Main query vars to filter.
88
  *
112
  }
113
 
114
  /**
115
+ * This function taken and only slightly adapted from WP No Category Base plugin by Saurabh Gupta.
116
  *
117
  * @return array
118
  */
inc/class-upgrade.php CHANGED
@@ -6,12 +6,12 @@
6
  */
7
 
8
  /**
9
- * This code handles the option upgrades
10
  */
11
  class WPSEO_Upgrade {
12
 
13
  /**
14
- * Class constructor
15
  */
16
  public function __construct() {
17
  $version = WPSEO_Options::get( 'version' );
@@ -128,12 +128,16 @@ class WPSEO_Upgrade {
128
  $this->upgrade_100();
129
  }
130
 
 
 
 
 
131
  // Since 3.7.
132
  $upsell_notice = new WPSEO_Product_Upsell_Notice();
133
  $upsell_notice->set_upgrade_notice();
134
 
135
  /**
136
- * Filter: 'wpseo_run_upgrade' - Runs the upgrade hook which are dependent on Yoast SEO
137
  *
138
  * @api string - The current version of Yoast SEO
139
  */
@@ -170,7 +174,7 @@ class WPSEO_Upgrade {
170
  }
171
 
172
  /**
173
- * Run the Yoast SEO 1.5 upgrade routine
174
  *
175
  * @param string $version Current plugin version.
176
  */
@@ -181,12 +185,12 @@ class WPSEO_Upgrade {
181
  }
182
 
183
  /**
184
- * Moves options that moved position in WPSEO 2.0
185
  */
186
  private function upgrade_20() {
187
  /**
188
  * Clean up stray wpseo_ms options from the options table, option should only exist in the sitemeta table.
189
- * This could have been caused in many version of Yoast SEO, so deleting it for everything below 2.0
190
  */
191
  delete_option( 'wpseo_ms' );
192
 
@@ -221,7 +225,7 @@ class WPSEO_Upgrade {
221
  }
222
 
223
  /**
224
- * Performs upgrade functions to Yoast SEO 2.2
225
  */
226
  private function upgrade_22() {
227
  // Unschedule our tracking.
@@ -231,7 +235,7 @@ class WPSEO_Upgrade {
231
  }
232
 
233
  /**
234
- * Schedules upgrade function to Yoast SEO 2.3
235
  */
236
  private function upgrade_23() {
237
  add_action( 'wp', array( $this, 'upgrade_23_query' ), 90 );
@@ -239,7 +243,7 @@ class WPSEO_Upgrade {
239
  }
240
 
241
  /**
242
- * Performs upgrade query to Yoast SEO 2.3
243
  */
244
  public function upgrade_23_query() {
245
  $wp_query = new WP_Query( 'post_type=any&meta_key=_yoast_wpseo_sitemap-include&meta_value=never&order=ASC' );
@@ -449,8 +453,8 @@ class WPSEO_Upgrade {
449
  }
450
 
451
  /**
452
- * Updates the links for the link count when there is a difference between the site and home url. We've used the
453
- * site url instead of the home url.
454
  *
455
  * @return void
456
  */
@@ -663,6 +667,20 @@ class WPSEO_Upgrade {
663
  delete_option( 'wpseo_recalibration_beta_mailinglist_subscription' );
664
  }
665
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
666
  /**
667
  * Removes all notifications saved in the database under 'wp_yoast_notifications'.
668
  *
6
  */
7
 
8
  /**
9
+ * This code handles the option upgrades.
10
  */
11
  class WPSEO_Upgrade {
12
 
13
  /**
14
+ * Class constructor.
15
  */
16
  public function __construct() {
17
  $version = WPSEO_Options::get( 'version' );
128
  $this->upgrade_100();
129
  }
130
 
131
+ if ( version_compare( $version, '11.1-RC0', '<' ) ) {
132
+ $this->upgrade_111();
133
+ }
134
+
135
  // Since 3.7.
136
  $upsell_notice = new WPSEO_Product_Upsell_Notice();
137
  $upsell_notice->set_upgrade_notice();
138
 
139
  /**
140
+ * Filter: 'wpseo_run_upgrade' - Runs the upgrade hook which are dependent on Yoast SEO.
141
  *
142
  * @api string - The current version of Yoast SEO
143
  */
174
  }
175
 
176
  /**
177
+ * Run the Yoast SEO 1.5 upgrade routine.
178
  *
179
  * @param string $version Current plugin version.
180
  */
185
  }
186
 
187
  /**
188
+ * Moves options that moved position in WPSEO 2.0.
189
  */
190
  private function upgrade_20() {
191
  /**
192
  * Clean up stray wpseo_ms options from the options table, option should only exist in the sitemeta table.
193
+ * This could have been caused in many version of Yoast SEO, so deleting it for everything below 2.0.
194
  */
195
  delete_option( 'wpseo_ms' );
196
 
225
  }
226
 
227
  /**
228
+ * Performs upgrade functions to Yoast SEO 2.2.
229
  */
230
  private function upgrade_22() {
231
  // Unschedule our tracking.
235
  }
236
 
237
  /**
238
+ * Schedules upgrade function to Yoast SEO 2.3.
239
  */
240
  private function upgrade_23() {
241
  add_action( 'wp', array( $this, 'upgrade_23_query' ), 90 );
243
  }
244
 
245
  /**
246
+ * Performs upgrade query to Yoast SEO 2.3.
247
  */
248
  public function upgrade_23_query() {
249
  $wp_query = new WP_Query( 'post_type=any&meta_key=_yoast_wpseo_sitemap-include&meta_value=never&order=ASC' );
453
  }
454
 
455
  /**
456
+ * Updates the links for the link count when there is a difference between the site and home url.
457
+ * We've used the site url instead of the home url.
458
  *
459
  * @return void
460
  */
667
  delete_option( 'wpseo_recalibration_beta_mailinglist_subscription' );
668
  }
669
 
670
+ /**
671
+ * Performs the 11.1 upgrade.
672
+ *
673
+ * @return void
674
+ */
675
+ private function upgrade_111() {
676
+ // Set company_or_person to company when it's an invalid value.
677
+ $company_or_person = WPSEO_Options::get( 'company_or_person', '' );
678
+
679
+ if ( ! in_array( $company_or_person, array( 'company', 'person' ), true ) ) {
680
+ WPSEO_Options::set( 'company_or_person', 'company' );
681
+ }
682
+ }
683
+
684
  /**
685
  * Removes all notifications saved in the database under 'wp_yoast_notifications'.
686
  *
inc/class-wpseo-admin-bar-menu.php CHANGED
@@ -492,7 +492,7 @@ class WPSEO_Admin_Bar_Menu implements WPSEO_WordPress_Integration {
492
  /**
493
  * Gets the focus keyword for a given post.
494
  *
495
- * @param WP_POST $post Post object to get its focus keyword.
496
  *
497
  * @return string Focus keyword, or empty string if none available.
498
  */
492
  /**
493
  * Gets the focus keyword for a given post.
494
  *
495
+ * @param WP_Post $post Post object to get its focus keyword.
496
  *
497
  * @return string Focus keyword, or empty string if none available.
498
  */
inc/class-wpseo-content-images.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * WPSEO_Content_Images
10
  */
11
  class WPSEO_Content_Images {
12
 
6
  */
7
 
8
  /**
9
+ * WPSEO_Content_Images.
10
  */
11
  class WPSEO_Content_Images {
12
 
inc/class-wpseo-custom-fields.php CHANGED
@@ -6,19 +6,21 @@
6
  */
7
 
8
  /**
9
- * WPSEO_Custom_Fields
10
  */
11
  class WPSEO_Custom_Fields {
12
 
13
  /**
14
- * @var array Cache the custom fields.
 
 
15
  */
16
  protected static $custom_fields = null;
17
 
18
  /**
19
  * Retrieves the custom field names as an array.
20
  *
21
- * @see WordPress core: wp-admin/includes/template.php. Reused query from it.
22
  *
23
  * @return array The custom fields.
24
  */
6
  */
7
 
8
  /**
9
+ * WPSEO_Custom_Fields.
10
  */
11
  class WPSEO_Custom_Fields {
12
 
13
  /**
14
+ * Custom fields cache.
15
+ *
16
+ * @var array
17
  */
18
  protected static $custom_fields = null;
19
 
20
  /**
21
  * Retrieves the custom field names as an array.
22
  *
23
+ * @link WordPress core: wp-admin/includes/template.php. Reused query from it.
24
  *
25
  * @return array The custom fields.
26
  */
inc/class-wpseo-custom-taxonomies.php CHANGED
@@ -6,12 +6,14 @@
6
  */
7
 
8
  /**
9
- * WPSEO_Custom_Taxonomies
10
  */
11
  class WPSEO_Custom_Taxonomies {
12
 
13
  /**
14
- * @var array Cache the custom taxonomies.
 
 
15
  */
16
  protected static $custom_taxonomies = null;
17
 
6
  */
7
 
8
  /**
9
+ * WPSEO_Custom_Taxonomies.
10
  */
11
  class WPSEO_Custom_Taxonomies {
12
 
13
  /**
14
+ * Custom taxonomies cache.
15
+ *
16
+ * @var array
17
  */
18
  protected static $custom_taxonomies = null;
19
 
inc/class-wpseo-endpoint-factory.php CHANGED
@@ -6,12 +6,14 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Endpoint_Factory
10
  */
11
  class WPSEO_Endpoint_Factory {
12
 
13
  /**
14
- * @var array The valid HTTP methods.
 
 
15
  */
16
  private $valid_http_methods = array(
17
  'GET',
@@ -22,32 +24,44 @@ class WPSEO_Endpoint_Factory {
22
  );
23
 
24
  /**
25
- * @var array The arguments.
 
 
26
  */
27
  protected $args = array();
28
 
29
  /**
30
- * @var string The namespace.
 
 
31
  */
32
  private $namespace;
33
 
34
  /**
35
- * @var string The endpoint URL.
 
 
36
  */
37
  private $endpoint;
38
 
39
  /**
40
- * @var callable The callback to execute if the endpoint is called.
 
 
41
  */
42
  private $callback;
43
 
44
  /**
45
- * @var callable The permission callback to execute to determine permissions.
 
 
46
  */
47
  private $permission_callback;
48
 
49
  /**
50
- * @var string The HTTP method to use.
 
 
51
  */
52
  private $method;
53
 
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Endpoint_Factory.
10
  */
11
  class WPSEO_Endpoint_Factory {
12
 
13
  /**
14
+ * The valid HTTP methods.
15
+ *
16
+ * @var array
17
  */
18
  private $valid_http_methods = array(
19
  'GET',
24
  );
25
 
26
  /**
27
+ * The arguments.
28
+ *
29
+ * @var array
30
  */
31
  protected $args = array();
32
 
33
  /**
34
+ * The namespace.
35
+ *
36
+ * @var string
37
  */
38
  private $namespace;
39
 
40
  /**
41
+ * The endpoint URL.
42
+ *
43
+ * @var string
44
  */
45
  private $endpoint;
46
 
47
  /**
48
+ * The callback to execute if the endpoint is called.
49
+ *
50
+ * @var callable
51
  */
52
  private $callback;
53
 
54
  /**
55
+ * The permission callback to execute to determine permissions.
56
+ *
57
+ * @var callable
58
  */
59
  private $permission_callback;
60
 
61
  /**
62
+ * The HTTP method to use.
63
+ *
64
+ * @var string
65
  */
66
  private $method;
67
 
inc/class-wpseo-image-utils.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * WPSEO_Image_Utils
10
  */
11
  class WPSEO_Image_Utils {
12
 
@@ -25,7 +25,7 @@ class WPSEO_Image_Utils {
25
  $url = preg_replace( '/(.*)-\d+x\d+\.(jpg|png|gif)$/', '$1.$2', $url );
26
 
27
  if ( function_exists( 'wpcom_vip_attachment_url_to_postid' ) ) {
28
- // @codeCoverageIgnoreStart -- we can't test this properly.
29
  return (int) wpcom_vip_attachment_url_to_postid( $url );
30
  // @codeCoverageIgnoreEnd -- The rest we _can_ test.
31
  }
@@ -43,7 +43,7 @@ class WPSEO_Image_Utils {
43
  protected static function attachment_url_to_postid( $url ) {
44
  $cache_key = sprintf( 'yoast_attachment_url_post_id_%s', md5( $url ) );
45
 
46
- // Set the ID based on the hashed url in the cache.
47
  $id = wp_cache_get( $cache_key );
48
 
49
  if ( $id === 'not_found' ) {
@@ -77,12 +77,13 @@ class WPSEO_Image_Utils {
77
  * @return false|array $image {
78
  * Array of image data
79
  *
80
- * @type string $alt Image's alt text.
81
- * @type string $alt Image's alt text.
82
- * @type int $width Width of image.
83
- * @type int $height Height of image.
84
- * @type string $type Image's MIME type.
85
- * @type string $url Image's URL.
 
86
  * }
87
  */
88
  public static function get_data( $image, $attachment_id ) {
@@ -104,7 +105,7 @@ class WPSEO_Image_Utils {
104
  }
105
 
106
  // Keep only the keys we need, and nothing else.
107
- return array_intersect_key( $image, array_flip( array( 'id', 'alt', 'path', 'width', 'height', 'pixels', 'type', 'size', 'url' ) ) );
108
  }
109
 
110
  /**
@@ -235,7 +236,7 @@ class WPSEO_Image_Utils {
235
  }
236
 
237
  // If the file size for the file is over our limit, we're going to go for a smaller version.
238
- // @todo save the filesize to the image metadata.
239
  // phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged -- If file size doesn't properly return, we'll not fail.
240
  return @filesize( self::get_absolute_path( $image['path'] ) );
241
  }
@@ -265,7 +266,7 @@ class WPSEO_Image_Utils {
265
  /**
266
  * Check original size of image. If original image is too small, return false, else return true.
267
  *
268
- * Filters a list of variations by a certain set of usable dimensions
269
  *
270
  * @param array $usable_dimensions {
271
  * The parameters to check against.
6
  */
7
 
8
  /**
9
+ * WPSEO_Image_Utils.
10
  */
11
  class WPSEO_Image_Utils {
12
 
25
  $url = preg_replace( '/(.*)-\d+x\d+\.(jpg|png|gif)$/', '$1.$2', $url );
26
 
27
  if ( function_exists( 'wpcom_vip_attachment_url_to_postid' ) ) {
28
+ // @codeCoverageIgnoreStart -- We can't test this properly.
29
  return (int) wpcom_vip_attachment_url_to_postid( $url );
30
  // @codeCoverageIgnoreEnd -- The rest we _can_ test.
31
  }
43
  protected static function attachment_url_to_postid( $url ) {
44
  $cache_key = sprintf( 'yoast_attachment_url_post_id_%s', md5( $url ) );
45
 
46
+ // Set the ID based on the hashed URL in the cache.
47
  $id = wp_cache_get( $cache_key );
48
 
49
  if ( $id === 'not_found' ) {
77
  * @return false|array $image {
78
  * Array of image data
79
  *
80
+ * @type string $alt Image's alt text.
81
+ * @type string $alt Image's alt text.
82
+ * @type int $width Width of image.
83
+ * @type int $height Height of image.
84
+ * @type string $type Image's MIME type.
85
+ * @type string $url Image's URL.
86
+ * @type int $filesize The file size in bytes, if already set.
87
  * }
88
  */
89
  public static function get_data( $image, $attachment_id ) {
105
  }
106
 
107
  // Keep only the keys we need, and nothing else.
108
+ return array_intersect_key( $image, array_flip( array( 'id', 'alt', 'path', 'width', 'height', 'pixels', 'type', 'size', 'url', 'filesize' ) ) );
109
  }
110
 
111
  /**
236
  }
237
 
238
  // If the file size for the file is over our limit, we're going to go for a smaller version.
239
+ // @todo Save the filesize to the image metadata.
240
  // phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged -- If file size doesn't properly return, we'll not fail.
241
  return @filesize( self::get_absolute_path( $image['path'] ) );
242
  }
266
  /**
267
  * Check original size of image. If original image is too small, return false, else return true.
268
  *
269
+ * Filters a list of variations by a certain set of usable dimensions.
270
  *
271
  * @param array $usable_dimensions {
272
  * The parameters to check against.
inc/class-wpseo-meta.php CHANGED
@@ -11,14 +11,14 @@
11
  *
12
  * Some guidelines:
13
  * - To update a meta value, you can just use update_post_meta() with the full (prefixed) meta key
14
- * or the convenience method WPSEO_Meta::set_value() with the internal key.
15
- * All updates will be automatically validated.
16
- * Meta values will only be saved to the database if they are *not* the same as the default to
17
- * keep database load low.
18
  * - To retrieve a WPSEO meta value, you **must** use WPSEO_Meta::get_value() which will always return a
19
- * string value, either the saved value or the default.
20
- * This method can also retrieve a complete set of WPSEO meta values for one specific post, see
21
- * the method documentation for the parameters.
22
  *
23
  * {@internal Unfortunately there isn't a filter available to hook into before returning the results
24
  * for get_post_meta(), get_post_custom() and the likes. That would have been the
@@ -198,7 +198,7 @@ class WPSEO_Meta {
198
  ),
199
  ),
200
  'social' => array(),
201
- /* Fields we should validate & save, but not show on any form */
202
  'non_form' => array(
203
  'linkdex' => array(
204
  'type' => null,
@@ -251,7 +251,7 @@ class WPSEO_Meta {
251
  );
252
 
253
  /**
254
- * Register our actions and filters
255
  *
256
  * @return void
257
  */
@@ -272,8 +272,8 @@ class WPSEO_Meta {
272
  unset( $option, $network, $box, $type );
273
 
274
  /**
275
- * Allow add-on plugins to register their meta fields for management by this class
276
- * add_filter() calls must be made before plugins_loaded prio 14
277
  */
278
  $extra_fields = apply_filters( 'add_extra_wpseo_meta_fields', array() );
279
  if ( is_array( $extra_fields ) ) {
@@ -315,10 +315,10 @@ class WPSEO_Meta {
315
  /**
316
  * Retrieve the meta box form field definitions for the given tab and post type.
317
  *
318
- * @param string $tab Tab for which to retrieve the field definitions.
319
- * @param string $post_type Post type of the current post.
320
  *
321
- * @return array Array containing the meta box field definitions
322
  */
323
  public static function get_meta_field_defs( $tab, $post_type = 'post' ) {
324
  if ( ! isset( self::$meta_fields[ $tab ] ) ) {
@@ -359,14 +359,14 @@ class WPSEO_Meta {
359
  $field_defs['meta-robots-noindex']['options']['0'] = sprintf( $field_defs['meta-robots-noindex']['options']['0'], ( ( WPSEO_Options::get( 'noindex-' . $post_type, false ) === true ) ? $field_defs['meta-robots-noindex']['options']['1'] : $field_defs['meta-robots-noindex']['options']['2'] ), $post_type_object->label );
360
  $field_defs['meta-robots-nofollow']['title'] = sprintf( $field_defs['meta-robots-nofollow']['title'], $post_type_object->labels->singular_name );
361
 
362
- /* Adjust the robots advanced 'site-wide default' text string based on those settings */
363
  $robots_adv = __( 'None', 'wordpress-seo' );
364
 
365
  $field_defs['meta-robots-adv']['options']['-'] = sprintf( $field_defs['meta-robots-adv']['options']['-'], $robots_adv );
366
  unset( $robots_adv );
367
 
368
 
369
- /* Don't show the breadcrumb title field if breadcrumbs aren't enabled */
370
  if ( WPSEO_Options::get( 'breadcrumbs-enable', false ) !== true && ! current_theme_supports( 'yoast-seo-breadcrumbs' ) ) {
371
  unset( $field_defs['bctitle'] );
372
  }
@@ -380,11 +380,11 @@ class WPSEO_Meta {
380
  }
381
 
382
  /**
383
- * Filter the WPSEO metabox form field definitions for a tab
384
- * {tab} can be 'general', 'advanced' or 'social'
385
  *
386
- * @param array $field_defs Metabox form field definitions.
387
- * @param string $post_type Post type of the post the metabox is for, defaults to 'post'.
388
  *
389
  * @return array
390
  */
@@ -392,12 +392,12 @@ class WPSEO_Meta {
392
  }
393
 
394
  /**
395
- * Validate the post meta values
396
  *
397
- * @param mixed $meta_value The new value.
398
- * @param string $meta_key The full meta key (including prefix).
399
  *
400
- * @return string Validated meta value
401
  */
402
  public static function sanitize_post_meta( $meta_value, $meta_key ) {
403
  $field_def = self::$meta_fields[ self::$fields_index[ $meta_key ]['subset'] ][ self::$fields_index[ $meta_key ]['key'] ];
@@ -465,7 +465,7 @@ class WPSEO_Meta {
465
  case ( $field_def['type'] === 'textarea' ):
466
  if ( is_string( $meta_value ) ) {
467
  // Remove line breaks and tabs.
468
- // @todo [JRF => Yoast] verify that line breaks and the likes aren't allowed/recommended in meta header fields.
469
  $meta_value = str_replace( array( "\n", "\r", "\t", ' ' ), ' ', $meta_value );
470
  $clean = WPSEO_Utils::sanitize_text_field( trim( $meta_value ) );
471
  }
@@ -491,13 +491,13 @@ class WPSEO_Meta {
491
  }
492
 
493
  /**
494
- * Validate a meta-robots-adv meta value
495
  *
496
- * @todo [JRF => Yoast] Verify that this logic for the prioritisation is correct
497
  *
498
- * @param array|string $meta_value The value to validate.
499
  *
500
- * @return string Clean value
501
  */
502
  public static function validate_meta_robots_adv( $meta_value ) {
503
  $clean = self::$meta_fields['advanced']['meta-robots-adv']['default_value'];
@@ -538,18 +538,18 @@ class WPSEO_Meta {
538
  }
539
 
540
  /**
541
- * Prevent saving of default values and remove potential old value from the database if replaced by a default
542
  *
543
- * @param bool $check The current status to allow updating metadata for the given type.
544
- * @param int $object_id ID of the current object for which the meta is being updated.
545
- * @param string $meta_key The full meta key (including prefix).
546
- * @param string $meta_value New meta value.
547
- * @param string $prev_value The old meta value.
548
  *
549
- * @return null|bool true = stop saving, null = continue saving
550
  */
551
  public static function remove_meta_if_default( $check, $object_id, $meta_key, $meta_value, $prev_value = '' ) {
552
- /* If it's one of our meta fields, check against default */
553
  if ( isset( self::$fields_index[ $meta_key ] ) && self::meta_value_is_default( $meta_key, $meta_value ) === true ) {
554
  if ( $prev_value !== '' ) {
555
  delete_post_meta( $object_id, $meta_key, $prev_value );
@@ -565,17 +565,17 @@ class WPSEO_Meta {
565
  }
566
 
567
  /**
568
- * Prevent adding of default values to the database
569
  *
570
- * @param bool $check The current status to allow adding metadata for the given type.
571
- * @param int $object_id ID of the current object for which the meta is being added.
572
- * @param string $meta_key The full meta key (including prefix).
573
- * @param string $meta_value New meta value.
574
  *
575
- * @return null|bool true = stop saving, null = continue saving
576
  */
577
  public static function dont_save_meta_if_default( $check, $object_id, $meta_key, $meta_value ) {
578
- /* If it's one of our meta fields, check against default */
579
  if ( isset( self::$fields_index[ $meta_key ] ) && self::meta_value_is_default( $meta_key, $meta_value ) === true ) {
580
  return true; // Stop saving the value.
581
  }
@@ -586,8 +586,8 @@ class WPSEO_Meta {
586
  /**
587
  * Is the given meta value the same as the default value ?
588
  *
589
- * @param string $meta_key The full meta key (including prefix).
590
- * @param mixed $meta_value The value to check.
591
  *
592
  * @return bool
593
  */
@@ -596,23 +596,24 @@ class WPSEO_Meta {
596
  }
597
 
598
  /**
599
- * Get a custom post meta value
600
- * Returns the default value if the meta value has not been set
 
601
  *
602
  * {@internal Unfortunately there isn't a filter available to hook into before returning
603
  * the results for get_post_meta(), get_post_custom() and the likes. That
604
  * would have been the preferred solution.}}
605
  *
606
- * @param string $key Internal key of the value to get (without prefix).
607
- * @param int $postid Post ID of the post to get the value for.
608
  *
609
- * @return string All 'normal' values returned from get_post_meta() are strings.
610
- * Objects and arrays are possible, but not used by this plugin
611
- * and therefore discarted (except when the special 'serialized' field def
612
- * value is set to true - only used by add-on plugins for now).
613
- * Will return the default value if no value was found..
614
- * Will return empty string if no default was found (not one of our keys) or
615
- * if the post does not exist.
616
  */
617
  public static function get_value( $key, $postid = 0 ) {
618
  global $post;
@@ -657,13 +658,13 @@ class WPSEO_Meta {
657
  }
658
 
659
  /**
660
- * Update a meta value for a post
661
  *
662
- * @param string $key The internal key of the meta value to change (without prefix).
663
- * @param mixed $meta_value The value to set the meta to.
664
- * @param int $post_id The ID of the post to change the meta for.
665
  *
666
- * @return bool whether the value was changed
667
  */
668
  public static function set_value( $key, $meta_value, $post_id ) {
669
  /*
@@ -676,12 +677,12 @@ class WPSEO_Meta {
676
  }
677
 
678
  /**
679
- * Deletes a meta value for a post
680
  *
681
  * @param string $key The internal key of the meta value to change (without prefix).
682
  * @param int $post_id The ID of the post to change the meta for.
683
  *
684
- * @return bool Whether the value was changed
685
  */
686
  public static function delete( $key, $post_id ) {
687
  return delete_post_meta( $post_id, self::$meta_prefix . $key );
@@ -692,9 +693,9 @@ class WPSEO_Meta {
692
  * where no WPSEO meta data has been set.
693
  * Optionally deletes the $old_metakey values.
694
  *
695
- * @param string $old_metakey The old key of the meta value.
696
- * @param string $new_metakey The new key, usually the WPSEO meta key (including prefix).
697
- * @param bool $delete_old Whether to delete the old meta key/value-sets.
698
  *
699
  * @return void
700
  */
@@ -740,9 +741,9 @@ class WPSEO_Meta {
740
  }
741
 
742
  /**
743
- * General clean-up of the saved meta values
744
- * - Remove potentially lingering old meta keys
745
- * - Remove all default and invalid values
746
  *
747
  * @return void
748
  */
@@ -750,14 +751,14 @@ class WPSEO_Meta {
750
  global $wpdb;
751
 
752
  /*
753
- * Clean up '_yoast_wpseo_meta-robots'
754
  *
755
- * Retrieve all '_yoast_wpseo_meta-robots' meta values and convert if no new values found
756
  *
757
  * {@internal Query is pretty well optimized this way.}}
758
  *
759
- * @todo [JRF => Yoast] find out all possible values which the old '_yoast_wpseo_meta-robots' could contain
760
- * to convert the data correctly
761
  */
762
  $query = $wpdb->prepare(
763
  "
@@ -799,8 +800,8 @@ class WPSEO_Meta {
799
 
800
 
801
  /*
802
- * Remove all default values and (most) invalid option values
803
- * Invalid option values for the multiselect (meta-robots-adv) field will be dealt with seperately
804
  *
805
  * {@internal Some of the defaults have changed in v1.5, but as the defaults will
806
  * be removed and new defaults will now automatically be passed when no
@@ -878,9 +879,9 @@ class WPSEO_Meta {
878
 
879
 
880
  /*
881
- * Deal with the multiselect (meta-robots-adv) field
882
  *
883
- * Removes invalid option combinations, such as 'none,noarchive'
884
  *
885
  * Default values have already been removed, so we should have a small result set and
886
  * (hopefully) even smaller set of invalid results.
@@ -958,7 +959,7 @@ class WPSEO_Meta {
958
  }
959
 
960
  /**
961
- * Counts the total of all the keywords being used for posts except the given one
962
  *
963
  * @param string $keyword The keyword to be counted.
964
  * @param integer $post_id The is of the post to which the keyword belongs.
@@ -1009,16 +1010,17 @@ class WPSEO_Meta {
1009
  /* ********************* DEPRECATED METHODS ********************* */
1010
 
1011
  /**
1012
- * Get a value from $_POST for a given key
1013
- * Returns the $_POST value if exists, returns an empty string if key does not exist
 
1014
  *
1015
  * @deprecated 9.6
1016
  * @codeCoverageIgnore
1017
  *
1018
- * @param string $key Key of the value to get from $_POST.
1019
  *
1020
- * @return string Returns $_POST value, which will be a string the majority of the time
1021
- * Will return empty string if key does not exists in $_POST
1022
  */
1023
  public static function get_post_value( $key ) {
1024
  _deprecated_function( __METHOD__, 'WPSEO 9.6' );
11
  *
12
  * Some guidelines:
13
  * - To update a meta value, you can just use update_post_meta() with the full (prefixed) meta key
14
+ * or the convenience method WPSEO_Meta::set_value() with the internal key.
15
+ * All updates will be automatically validated.
16
+ * Meta values will only be saved to the database if they are *not* the same as the default to
17
+ * keep database load low.
18
  * - To retrieve a WPSEO meta value, you **must** use WPSEO_Meta::get_value() which will always return a
19
+ * string value, either the saved value or the default.
20
+ * This method can also retrieve a complete set of WPSEO meta values for one specific post, see
21
+ * the method documentation for the parameters.
22
  *
23
  * {@internal Unfortunately there isn't a filter available to hook into before returning the results
24
  * for get_post_meta(), get_post_custom() and the likes. That would have been the
198
  ),
199
  ),
200
  'social' => array(),
201
+ /* Fields we should validate & save, but not show on any form. */
202
  'non_form' => array(
203
  'linkdex' => array(
204
  'type' => null,
251
  );
252
 
253
  /**
254
+ * Register our actions and filters.
255
  *
256
  * @return void
257
  */
272
  unset( $option, $network, $box, $type );
273
 
274
  /**
275
+ * Allow add-on plugins to register their meta fields for management by this class.
276
+ * Calls to add_filter() must be made before plugins_loaded prio 14.
277
  */
278
  $extra_fields = apply_filters( 'add_extra_wpseo_meta_fields', array() );
279
  if ( is_array( $extra_fields ) ) {
315
  /**
316
  * Retrieve the meta box form field definitions for the given tab and post type.
317
  *
318
+ * @param string $tab Tab for which to retrieve the field definitions.
319
+ * @param string $post_type Post type of the current post.
320
  *
321
+ * @return array Array containing the meta box field definitions.
322
  */
323
  public static function get_meta_field_defs( $tab, $post_type = 'post' ) {
324
  if ( ! isset( self::$meta_fields[ $tab ] ) ) {
359
  $field_defs['meta-robots-noindex']['options']['0'] = sprintf( $field_defs['meta-robots-noindex']['options']['0'], ( ( WPSEO_Options::get( 'noindex-' . $post_type, false ) === true ) ? $field_defs['meta-robots-noindex']['options']['1'] : $field_defs['meta-robots-noindex']['options']['2'] ), $post_type_object->label );
360
  $field_defs['meta-robots-nofollow']['title'] = sprintf( $field_defs['meta-robots-nofollow']['title'], $post_type_object->labels->singular_name );
361
 
362
+ /* Adjust the robots advanced 'site-wide default' text string based on those settings. */
363
  $robots_adv = __( 'None', 'wordpress-seo' );
364
 
365
  $field_defs['meta-robots-adv']['options']['-'] = sprintf( $field_defs['meta-robots-adv']['options']['-'], $robots_adv );
366
  unset( $robots_adv );
367
 
368
 
369
+ /* Don't show the breadcrumb title field if breadcrumbs aren't enabled. */
370
  if ( WPSEO_Options::get( 'breadcrumbs-enable', false ) !== true && ! current_theme_supports( 'yoast-seo-breadcrumbs' ) ) {
371
  unset( $field_defs['bctitle'] );
372
  }
380
  }
381
 
382
  /**
383
+ * Filter the WPSEO metabox form field definitions for a tab.
384
+ * {tab} can be 'general', 'advanced' or 'social'.
385
  *
386
+ * @param array $field_defs Metabox form field definitions.
387
+ * @param string $post_type Post type of the post the metabox is for, defaults to 'post'.
388
  *
389
  * @return array
390
  */
392
  }
393
 
394
  /**
395
+ * Validate the post meta values.
396
  *
397
+ * @param mixed $meta_value The new value.
398
+ * @param string $meta_key The full meta key (including prefix).
399
  *
400
+ * @return string Validated meta value.
401
  */
402
  public static function sanitize_post_meta( $meta_value, $meta_key ) {
403
  $field_def = self::$meta_fields[ self::$fields_index[ $meta_key ]['subset'] ][ self::$fields_index[ $meta_key ]['key'] ];
465
  case ( $field_def['type'] === 'textarea' ):
466
  if ( is_string( $meta_value ) ) {
467
  // Remove line breaks and tabs.
468
+ // @todo [JRF => Yoast] Verify that line breaks and the likes aren't allowed/recommended in meta header fields.
469
  $meta_value = str_replace( array( "\n", "\r", "\t", ' ' ), ' ', $meta_value );
470
  $clean = WPSEO_Utils::sanitize_text_field( trim( $meta_value ) );
471
  }
491
  }
492
 
493
  /**
494
+ * Validate a meta-robots-adv meta value.
495
  *
496
+ * @todo [JRF => Yoast] Verify that this logic for the prioritisation is correct.
497
  *
498
+ * @param array|string $meta_value The value to validate.
499
  *
500
+ * @return string Clean value.
501
  */
502
  public static function validate_meta_robots_adv( $meta_value ) {
503
  $clean = self::$meta_fields['advanced']['meta-robots-adv']['default_value'];
538
  }
539
 
540
  /**
541
+ * Prevent saving of default values and remove potential old value from the database if replaced by a default.
542
  *
543
+ * @param bool $check The current status to allow updating metadata for the given type.
544
+ * @param int $object_id ID of the current object for which the meta is being updated.
545
+ * @param string $meta_key The full meta key (including prefix).
546
+ * @param string $meta_value New meta value.
547
+ * @param string $prev_value The old meta value.
548
  *
549
+ * @return null|bool True = stop saving, null = continue saving.
550
  */
551
  public static function remove_meta_if_default( $check, $object_id, $meta_key, $meta_value, $prev_value = '' ) {
552
+ /* If it's one of our meta fields, check against default. */
553
  if ( isset( self::$fields_index[ $meta_key ] ) && self::meta_value_is_default( $meta_key, $meta_value ) === true ) {
554
  if ( $prev_value !== '' ) {
555
  delete_post_meta( $object_id, $meta_key, $prev_value );
565
  }
566
 
567
  /**
568
+ * Prevent adding of default values to the database.
569
  *
570
+ * @param bool $check The current status to allow adding metadata for the given type.
571
+ * @param int $object_id ID of the current object for which the meta is being added.
572
+ * @param string $meta_key The full meta key (including prefix).
573
+ * @param string $meta_value New meta value.
574
  *
575
+ * @return null|bool True = stop saving, null = continue saving.
576
  */
577
  public static function dont_save_meta_if_default( $check, $object_id, $meta_key, $meta_value ) {
578
+ /* If it's one of our meta fields, check against default. */
579
  if ( isset( self::$fields_index[ $meta_key ] ) && self::meta_value_is_default( $meta_key, $meta_value ) === true ) {
580
  return true; // Stop saving the value.
581
  }
586
  /**
587
  * Is the given meta value the same as the default value ?
588
  *
589
+ * @param string $meta_key The full meta key (including prefix).
590
+ * @param mixed $meta_value The value to check.
591
  *
592
  * @return bool
593
  */
596
  }
597
 
598
  /**
599
+ * Get a custom post meta value.
600
+ *
601
+ * Returns the default value if the meta value has not been set.
602
  *
603
  * {@internal Unfortunately there isn't a filter available to hook into before returning
604
  * the results for get_post_meta(), get_post_custom() and the likes. That
605
  * would have been the preferred solution.}}
606
  *
607
+ * @param string $key Internal key of the value to get (without prefix).
608
+ * @param int $postid Post ID of the post to get the value for.
609
  *
610
+ * @return string All 'normal' values returned from get_post_meta() are strings.
611
+ * Objects and arrays are possible, but not used by this plugin
612
+ * and therefore discarted (except when the special 'serialized' field def
613
+ * value is set to true - only used by add-on plugins for now).
614
+ * Will return the default value if no value was found.
615
+ * Will return empty string if no default was found (not one of our keys) or
616
+ * if the post does not exist.
617
  */
618
  public static function get_value( $key, $postid = 0 ) {
619
  global $post;
658
  }
659
 
660
  /**
661
+ * Update a meta value for a post.
662
  *
663
+ * @param string $key The internal key of the meta value to change (without prefix).
664
+ * @param mixed $meta_value The value to set the meta to.
665
+ * @param int $post_id The ID of the post to change the meta for.
666
  *
667
+ * @return bool Whether the value was changed.
668
  */
669
  public static function set_value( $key, $meta_value, $post_id ) {
670
  /*
677
  }
678
 
679
  /**
680
+ * Deletes a meta value for a post.
681
  *
682
  * @param string $key The internal key of the meta value to change (without prefix).
683
  * @param int $post_id The ID of the post to change the meta for.
684
  *
685
+ * @return bool Whether the value was changed.
686
  */
687
  public static function delete( $key, $post_id ) {
688
  return delete_post_meta( $post_id, self::$meta_prefix . $key );
693
  * where no WPSEO meta data has been set.
694
  * Optionally deletes the $old_metakey values.
695
  *
696
+ * @param string $old_metakey The old key of the meta value.
697
+ * @param string $new_metakey The new key, usually the WPSEO meta key (including prefix).
698
+ * @param bool $delete_old Whether to delete the old meta key/value-sets.
699
  *
700
  * @return void
701
  */
741
  }
742
 
743
  /**
744
+ * General clean-up of the saved meta values.
745
+ * - Remove potentially lingering old meta keys;
746
+ * - Remove all default and invalid values.
747
  *
748
  * @return void
749
  */
751
  global $wpdb;
752
 
753
  /*
754
+ * Clean up '_yoast_wpseo_meta-robots'.
755
  *
756
+ * Retrieve all '_yoast_wpseo_meta-robots' meta values and convert if no new values found.
757
  *
758
  * {@internal Query is pretty well optimized this way.}}
759
  *
760
+ * @todo [JRF => Yoast] Find out all possible values which the old '_yoast_wpseo_meta-robots' could contain
761
+ * to convert the data correctly.
762
  */
763
  $query = $wpdb->prepare(
764
  "
800
 
801
 
802
  /*
803
+ * Remove all default values and (most) invalid option values.
804
+ * Invalid option values for the multiselect (meta-robots-adv) field will be dealt with seperately.
805
  *
806
  * {@internal Some of the defaults have changed in v1.5, but as the defaults will
807
  * be removed and new defaults will now automatically be passed when no
879
 
880
 
881
  /*
882
+ * Deal with the multiselect (meta-robots-adv) field.
883
  *
884
+ * Removes invalid option combinations, such as 'none,noarchive'.
885
  *
886
  * Default values have already been removed, so we should have a small result set and
887
  * (hopefully) even smaller set of invalid results.
959
  }
960
 
961
  /**
962
+ * Counts the total of all the keywords being used for posts except the given one.
963
  *
964
  * @param string $keyword The keyword to be counted.
965
  * @param integer $post_id The is of the post to which the keyword belongs.
1010
  /* ********************* DEPRECATED METHODS ********************* */
1011
 
1012
  /**
1013
+ * Get a value from $_POST for a given key.
1014
+ *
1015
+ * Returns the $_POST value if exists, returns an empty string if key does not exist.
1016
  *
1017
  * @deprecated 9.6
1018
  * @codeCoverageIgnore
1019
  *
1020
+ * @param string $key Key of the value to get from $_POST.
1021
  *
1022
+ * @return string Returns $_POST value, which will be a string the majority of the time.
1023
+ * Will return empty string if key does not exists in $_POST.
1024
  */
1025
  public static function get_post_value( $key ) {
1026
  _deprecated_function( __METHOD__, 'WPSEO 9.6' );
inc/class-wpseo-primary-term.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Represents a post's primary term
10
  */
11
  class WPSEO_Primary_Term {
12
 
@@ -25,7 +25,7 @@ class WPSEO_Primary_Term {
25
  protected $post_ID;
26
 
27
  /**
28
- * The taxonomy this term is part of
29
  *
30
  * @param string $taxonomy_name Taxonomy name for the term.
31
  * @param int $post_id Post ID for the term.
@@ -36,7 +36,7 @@ class WPSEO_Primary_Term {
36
  }
37
 
38
  /**
39
- * Returns the primary term ID
40
  *
41
  * @return int|bool
42
  */
@@ -54,7 +54,7 @@ class WPSEO_Primary_Term {
54
  }
55
 
56
  /**
57
- * Sets the new primary term ID
58
  *
59
  * @param int $new_primary_term New primary term ID.
60
  */
6
  */
7
 
8
  /**
9
+ * Represents a post's primary term.
10
  */
11
  class WPSEO_Primary_Term {
12
 
25
  protected $post_ID;
26
 
27
  /**
28
+ * The taxonomy this term is part of.
29
  *
30
  * @param string $taxonomy_name Taxonomy name for the term.
31
  * @param int $post_id Post ID for the term.
36
  }
37
 
38
  /**
39
+ * Returns the primary term ID.
40
  *
41
  * @return int|bool
42
  */
54
  }
55
 
56
  /**
57
+ * Sets the new primary term ID.
58
  *
59
  * @param int $new_primary_term New primary term ID.
60
  */
inc/class-wpseo-rank.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Holder for SEO Rank information
10
  */
11
  class WPSEO_Rank {
12
 
@@ -49,7 +49,7 @@ class WPSEO_Rank {
49
  );
50
 
51
  /**
52
- * Holds the translation from seo score slug to actual score range
53
  *
54
  * @var array
55
  */
@@ -98,7 +98,7 @@ class WPSEO_Rank {
98
  }
99
 
100
  /**
101
- * Returns a CSS class for this rank
102
  *
103
  * @return string
104
  */
@@ -115,7 +115,7 @@ class WPSEO_Rank {
115
  }
116
 
117
  /**
118
- * Returns a label for this rank
119
  *
120
  * @return string
121
  */
@@ -132,7 +132,7 @@ class WPSEO_Rank {
132
  }
133
 
134
  /**
135
- * Returns a label for use in a drop down
136
  *
137
  * @return mixed
138
  */
@@ -188,7 +188,7 @@ class WPSEO_Rank {
188
  }
189
 
190
  /**
191
- * Returns a rank for a specific numeric score
192
  *
193
  * @param int $score The score to determine a rank for.
194
  *
@@ -209,7 +209,7 @@ class WPSEO_Rank {
209
  }
210
 
211
  /**
212
- * Returns a list of all possible SEO Ranks
213
  *
214
  * @return WPSEO_Rank[]
215
  */
@@ -218,7 +218,7 @@ class WPSEO_Rank {
218
  }
219
 
220
  /**
221
- * Returns a list of all possible Readability Ranks
222
  *
223
  * @return WPSEO_Rank[]
224
  */
@@ -227,7 +227,7 @@ class WPSEO_Rank {
227
  }
228
 
229
  /**
230
- * Converts a numeric rank into a WPSEO_Rank object, for use in functional array_* functions
231
  *
232
  * @param string $rank SEO Rank.
233
  *
6
  */
7
 
8
  /**
9
+ * Holder for SEO Rank information.
10
  */
11
  class WPSEO_Rank {
12
 
49
  );
50
 
51
  /**
52
+ * Holds the translation from seo score slug to actual score range.
53
  *
54
  * @var array
55
  */
98
  }
99
 
100
  /**
101
+ * Returns a CSS class for this rank.
102
  *
103
  * @return string
104
  */
115
  }
116
 
117
  /**
118
+ * Returns a label for this rank.
119
  *
120
  * @return string
121
  */
132
  }
133
 
134
  /**
135
+ * Returns a label for use in a drop down.
136
  *
137
  * @return mixed
138
  */
188
  }
189
 
190
  /**
191
+ * Returns a rank for a specific numeric score.
192
  *
193
  * @param int $score The score to determine a rank for.
194
  *
209
  }
210
 
211
  /**
212
+ * Returns a list of all possible SEO Ranks.
213
  *
214
  * @return WPSEO_Rank[]
215
  */
218
  }
219
 
220
  /**
221
+ * Returns a list of all possible Readability Ranks.
222
  *
223
  * @return WPSEO_Rank[]
224
  */
227
  }
228
 
229
  /**
230
+ * Converts a numeric rank into a WPSEO_Rank object, for use in functional array_* functions.
231
  *
232
  * @param string $rank SEO Rank.
233
  *
inc/class-wpseo-replace-vars.php CHANGED
@@ -22,7 +22,9 @@ if ( ! defined( 'WPSEO_VERSION' ) ) {
22
  class WPSEO_Replace_Vars {
23
 
24
  /**
25
- * @var array Default post/page/cpt information.
 
 
26
  */
27
  protected $defaults = array(
28
  'ID' => '',
@@ -39,17 +41,23 @@ class WPSEO_Replace_Vars {
39
  );
40
 
41
  /**
42
- * @var object Current post/page/cpt information.
 
 
43
  */
44
  protected $args;
45
 
46
  /**
47
- * @var array Help texts for use in WPSEO -> Search appearance tabs.
 
 
48
  */
49
  protected static $help_texts = array();
50
 
51
  /**
52
- * @var array Register of additional variable replacements registered by other plugins/themes.
 
 
53
  */
54
  protected static $external_replacements = array();
55
 
@@ -85,15 +93,15 @@ class WPSEO_Replace_Vars {
85
  *
86
  * @see wpseo_register_var_replacement() for a usage example.
87
  *
88
- * @param string $var The name of the variable to replace, i.e. '%%var%%'
89
- * - the surrounding %% are optional.
90
- * @param mixed $replace_function Function or method to call to retrieve the replacement value for the variable
91
- * Uses the same format as add_filter/add_action function parameter and
92
- * should *return* the replacement value. DON'T echo it.
93
- * @param string $type Type of variable: 'basic' or 'advanced', defaults to 'advanced'.
94
- * @param string $help_text Help text to be added to the help tab for this variable.
95
  *
96
- * @return bool Whether the replacement function was succesfully registered.
97
  */
98
  public static function register_replacement( $var, $replace_function, $type = 'advanced', $help_text = '' ) {
99
  $success = false;
@@ -169,8 +177,8 @@ class WPSEO_Replace_Vars {
169
  *
170
  * @api array $replacements The replacements.
171
  *
172
- * @param array $args The object some of the replacement values might come from,
173
- * could be a post, taxonomy or term.
174
  */
175
  $replacements = apply_filters( 'wpseo_replacements', $replacements, $this->args );
176
 
@@ -219,7 +227,7 @@ class WPSEO_Replace_Vars {
219
 
220
  $replacements = array();
221
 
222
- // @todo -> Figure out a way to deal with external functions starting with cf_/ct_.
223
  foreach ( $matches[1] as $k => $var ) {
224
 
225
  // Don't set up replacements which should be omitted.
@@ -1042,9 +1050,9 @@ class WPSEO_Replace_Vars {
1042
  /**
1043
  * Create a variable help text table.
1044
  *
1045
- * @param string $type Either 'basic' or 'advanced'.
1046
  *
1047
- * @return string Help text table.
1048
  */
1049
  private static function create_variable_help_table( $type ) {
1050
  if ( ! in_array( $type, array( 'basic', 'advanced' ), true ) ) {
@@ -1099,8 +1107,8 @@ class WPSEO_Replace_Vars {
1099
  /**
1100
  * Set the help text for a user/plugin/theme defined extra variable.
1101
  *
1102
- * @param string $type Type of variable: 'basic' or 'advanced'.
1103
- * @param WPSEO_Replacement_Variable $replacement_variable The replacement variable to register.
1104
  */
1105
  private static function register_help_text( $type, WPSEO_Replacement_Variable $replacement_variable ) {
1106
  $identifier = $replacement_variable->get_variable();
@@ -1239,7 +1247,7 @@ class WPSEO_Replace_Vars {
1239
  /**
1240
  * Retrieves the custom field names as an array.
1241
  *
1242
- * @see WordPress core: wp-admin/includes/template.php. Reused query from it.
1243
  *
1244
  * @return array The custom fields.
1245
  */
@@ -1375,7 +1383,7 @@ class WPSEO_Replace_Vars {
1375
  /**
1376
  * Remove the '%%' delimiters from a variable string.
1377
  *
1378
- * @param string $string Variable string to be cleaned.
1379
  *
1380
  * @return string
1381
  */
@@ -1386,7 +1394,7 @@ class WPSEO_Replace_Vars {
1386
  /**
1387
  * Add the '%%' delimiters to a variable string.
1388
  *
1389
- * @param string $string Variable string to be delimited.
1390
  *
1391
  * @return string
1392
  */
22
  class WPSEO_Replace_Vars {
23
 
24
  /**
25
+ * Default post/page/cpt information.
26
+ *
27
+ * @var array
28
  */
29
  protected $defaults = array(
30
  'ID' => '',
41
  );
42
 
43
  /**
44
+ * Current post/page/cpt information.
45
+ *
46
+ * @var object
47
  */
48
  protected $args;
49
 
50
  /**
51
+ * Help texts for use in WPSEO -> Search appearance tabs.
52
+ *
53
+ * @var array
54
  */
55
  protected static $help_texts = array();
56
 
57
  /**
58
+ * Register of additional variable replacements registered by other plugins/themes.
59
+ *
60
+ * @var array
61
  */
62
  protected static $external_replacements = array();
63
 
93
  *
94
  * @see wpseo_register_var_replacement() for a usage example.
95
  *
96
+ * @param string $var The name of the variable to replace, i.e. '%%var%%'.
97
+ * Note: the surrounding %% are optional.
98
+ * @param mixed $replace_function Function or method to call to retrieve the replacement value for the variable.
99
+ * Uses the same format as add_filter/add_action function parameter and
100
+ * should *return* the replacement value. DON'T echo it.
101
+ * @param string $type Type of variable: 'basic' or 'advanced', defaults to 'advanced'.
102
+ * @param string $help_text Help text to be added to the help tab for this variable.
103
  *
104
+ * @return bool Whether the replacement function was succesfully registered.
105
  */
106
  public static function register_replacement( $var, $replace_function, $type = 'advanced', $help_text = '' ) {
107
  $success = false;
177
  *
178
  * @api array $replacements The replacements.
179
  *
180
+ * @param array $args The object some of the replacement values might come from,
181
+ * could be a post, taxonomy or term.
182
  */
183
  $replacements = apply_filters( 'wpseo_replacements', $replacements, $this->args );
184
 
227
 
228
  $replacements = array();
229
 
230
+ // @todo Figure out a way to deal with external functions starting with cf_/ct_.
231
  foreach ( $matches[1] as $k => $var ) {
232
 
233
  // Don't set up replacements which should be omitted.
1050
  /**
1051
  * Create a variable help text table.
1052
  *
1053
+ * @param string $type Either 'basic' or 'advanced'.
1054
  *
1055
+ * @return string Help text table.
1056
  */
1057
  private static function create_variable_help_table( $type ) {
1058
  if ( ! in_array( $type, array( 'basic', 'advanced' ), true ) ) {
1107
  /**
1108
  * Set the help text for a user/plugin/theme defined extra variable.
1109
  *
1110
+ * @param string $type Type of variable: 'basic' or 'advanced'.
1111
+ * @param WPSEO_Replacement_Variable $replacement_variable The replacement variable to register.
1112
  */
1113
  private static function register_help_text( $type, WPSEO_Replacement_Variable $replacement_variable ) {
1114
  $identifier = $replacement_variable->get_variable();
1247
  /**
1248
  * Retrieves the custom field names as an array.
1249
  *
1250
+ * @link WordPress core: wp-admin/includes/template.php. Reused query from it.
1251
  *
1252
  * @return array The custom fields.
1253
  */
1383
  /**
1384
  * Remove the '%%' delimiters from a variable string.
1385
  *
1386
+ * @param string $string Variable string to be cleaned.
1387
  *
1388
  * @return string
1389
  */
1394
  /**
1395
  * Add the '%%' delimiters to a variable string.
1396
  *
1397
+ * @param string $string Variable string to be delimited.
1398
  *
1399
  * @return string
1400
  */
inc/class-wpseo-replacement-variable.php CHANGED
@@ -7,24 +7,30 @@
7
  */
8
 
9
  /**
10
- * Class WPSEO_Replacement_Variable
11
  *
12
  * This class stores the data of a single snippet variable.
13
  */
14
  class WPSEO_Replacement_Variable {
15
 
16
  /**
17
- * @var string The variable to use.
 
 
18
  */
19
  protected $variable;
20
 
21
  /**
22
- * @var string The label of the replacement variable.
 
 
23
  */
24
  protected $label;
25
 
26
  /**
27
- * @var string The description of the replacement variable.
 
 
28
  */
29
  protected $description;
30
 
7
  */
8
 
9
  /**
10
+ * Class WPSEO_Replacement_Variable.
11
  *
12
  * This class stores the data of a single snippet variable.
13
  */
14
  class WPSEO_Replacement_Variable {
15
 
16
  /**
17
+ * The variable to use.
18
+ *
19
+ * @var string
20
  */
21
  protected $variable;
22
 
23
  /**
24
+ * The label of the replacement variable.
25
+ *
26
+ * @var string
27
  */
28
  protected $label;
29
 
30
  /**
31
+ * The description of the replacement variable.
32
+ *
33
+ * @var string
34
  */
35
  protected $description;
36
 
inc/class-wpseo-shortlinker.php CHANGED
@@ -6,9 +6,10 @@
6
  */
7
 
8
  /**
9
- * Helps with creating shortlinks in the plugin
10
  */
11
  class WPSEO_Shortlinker {
 
12
  /**
13
  * Collects the additional data necessary for the shortlink.
14
  *
6
  */
7
 
8
  /**
9
+ * Helps with creating shortlinks in the plugin.
10
  */
11
  class WPSEO_Shortlinker {
12
+
13
  /**
14
  * Collects the additional data necessary for the shortlink.
15
  *
inc/class-wpseo-statistics.php CHANGED
@@ -6,14 +6,14 @@
6
  */
7
 
8
  /**
9
- * Class that generates interesting statistics about things
10
  */
11
  class WPSEO_Statistics {
12
 
13
  /**
14
- * Returns the post count for a certain SEO rank
15
  *
16
- * @todo Merge/DRY this with the logic virtually the same in WPSEO_Metabox::column_sort_orderby()
17
  *
18
  * @param WPSEO_Rank $rank The SEO rank to get the post count for.
19
  *
6
  */
7
 
8
  /**
9
+ * Class that generates interesting statistics about things.
10
  */
11
  class WPSEO_Statistics {
12
 
13
  /**
14
+ * Returns the post count for a certain SEO rank.
15
  *
16
+ * @todo Merge/DRY this with the logic virtually the same in WPSEO_Metabox::column_sort_orderby().
17
  *
18
  * @param WPSEO_Rank $rank The SEO rank to get the post count for.
19
  *
inc/class-wpseo-utils.php CHANGED
@@ -13,14 +13,20 @@
13
  class WPSEO_Utils {
14
 
15
  /**
16
- * @var bool $has_filters Whether the PHP filter extension is enabled.
 
17
  * @since 1.8.0
 
 
18
  */
19
  public static $has_filters;
20
 
21
  /**
22
- * @var array Notifications to be shown in the JavaScript console.
 
23
  * @since 3.3.2
 
 
24
  */
25
  protected static $console_notifications = array();
26
 
@@ -254,14 +260,14 @@ class WPSEO_Utils {
254
  /**
255
  * Emulate the WP native sanitize_text_field function in a %%variable%% safe way.
256
  *
257
- * @see https://core.trac.wordpress.org/browser/trunk/src/wp-includes/formatting.php for the original
258
  *
259
  * Sanitize a string from user input or from the db.
260
  *
261
- * - Check for invalid UTF-8,
262
- * - Convert single < characters to entity,
263
- * - Strip all tags,
264
- * - Remove line breaks, tabs and extra white space,
265
  * - Strip octets - BUT DO NOT REMOVE (part of) VARIABLES WHICH WILL BE REPLACED.
266
  *
267
  * @since 1.8.0
@@ -508,33 +514,33 @@ class WPSEO_Utils {
508
  /**
509
  * Do simple reliable math calculations without the risk of wrong results.
510
  *
511
- * @see http://floating-point-gui.de/
512
- * @see the big red warning on http://php.net/language.types.float.php
513
  *
514
  * In the rare case that the bcmath extension would not be loaded, it will return the normal calculation results.
515
  *
516
  * @since 1.5.0
517
  * @since 1.8.0 Moved from stand-alone function to this class.
518
  *
519
- * @param mixed $number1 Scalar (string/int/float/bool).
520
- * @param string $action Calculation action to execute. Valid input:
521
- * '+' or 'add' or 'addition',
522
- * '-' or 'sub' or 'subtract',
523
- * '*' or 'mul' or 'multiply',
524
- * '/' or 'div' or 'divide',
525
- * '%' or 'mod' or 'modulus'
526
- * '=' or 'comp' or 'compare'.
527
- * @param mixed $number2 Scalar (string/int/float/bool).
528
- * @param bool $round Whether or not to round the result. Defaults to false.
529
- * Will be disregarded for a compare operation.
530
- * @param int $decimals Decimals for rounding operation. Defaults to 0.
531
- * @param int $precision Calculation precision. Defaults to 10.
532
- *
533
- * @return mixed Calculation Result or false if either or the numbers isn't scalar or
534
- * an invalid operation was passed.
535
- * - for compare the result will always be an integer.
536
- * - for all other operations, the result will either be an integer (preferred)
537
- * or a float.
538
  */
539
  public static function calc( $number1, $action, $number2, $round = false, $decimals = 0, $precision = 10 ) {
540
  static $bc;
@@ -1122,7 +1128,7 @@ SVG;
1122
 
1123
  /**
1124
  * Returns the original URL instead of the language-enriched URL.
1125
- * This method gets automatically triggered by the wpml_get_home_url filter
1126
  *
1127
  * @codeCoverageIgnore
1128
  *
13
  class WPSEO_Utils {
14
 
15
  /**
16
+ * Whether the PHP filter extension is enabled.
17
+ *
18
  * @since 1.8.0
19
+ *
20
+ * @var bool $has_filters
21
  */
22
  public static $has_filters;
23
 
24
  /**
25
+ * Notifications to be shown in the JavaScript console.
26
+ *
27
  * @since 3.3.2
28
+ *
29
+ * @var array
30
  */
31
  protected static $console_notifications = array();
32
 
260
  /**
261
  * Emulate the WP native sanitize_text_field function in a %%variable%% safe way.
262
  *
263
+ * @link https://core.trac.wordpress.org/browser/trunk/src/wp-includes/formatting.php for the original.
264
  *
265
  * Sanitize a string from user input or from the db.
266
  *
267
+ * - Check for invalid UTF-8;
268
+ * - Convert single < characters to entity;
269
+ * - Strip all tags;
270
+ * - Remove line breaks, tabs and extra white space;
271
  * - Strip octets - BUT DO NOT REMOVE (part of) VARIABLES WHICH WILL BE REPLACED.
272
  *
273
  * @since 1.8.0
514
  /**
515
  * Do simple reliable math calculations without the risk of wrong results.
516
  *
517
+ * @link http://floating-point-gui.de/
518
+ * @link http://php.net/language.types.float.php See the big red warning.
519
  *
520
  * In the rare case that the bcmath extension would not be loaded, it will return the normal calculation results.
521
  *
522
  * @since 1.5.0
523
  * @since 1.8.0 Moved from stand-alone function to this class.
524
  *
525
+ * @param mixed $number1 Scalar (string/int/float/bool).
526
+ * @param string $action Calculation action to execute. Valid input:
527
+ * '+' or 'add' or 'addition',
528
+ * '-' or 'sub' or 'subtract',
529
+ * '*' or 'mul' or 'multiply',
530
+ * '/' or 'div' or 'divide',
531
+ * '%' or 'mod' or 'modulus'
532
+ * '=' or 'comp' or 'compare'.
533
+ * @param mixed $number2 Scalar (string/int/float/bool).
534
+ * @param bool $round Whether or not to round the result. Defaults to false.
535
+ * Will be disregarded for a compare operation.
536
+ * @param int $decimals Decimals for rounding operation. Defaults to 0.
537
+ * @param int $precision Calculation precision. Defaults to 10.
538
+ *
539
+ * @return mixed Calculation Result or false if either or the numbers isn't scalar or
540
+ * an invalid operation was passed.
541
+ * - For compare the result will always be an integer.
542
+ * - For all other operations, the result will either be an integer (preferred)
543
+ * or a float.
544
  */
545
  public static function calc( $number1, $action, $number2, $round = false, $decimals = 0, $precision = 10 ) {
546
  static $bc;
1128
 
1129
  /**
1130
  * Returns the original URL instead of the language-enriched URL.
1131
+ * This method gets automatically triggered by the wpml_get_home_url filter.
1132
  *
1133
  * @codeCoverageIgnore
1134
  *
inc/class-wpseo-validator.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Validator
10
  */
11
  class WPSEO_Validator {
12
 
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Validator.
10
  */
11
  class WPSEO_Validator {
12
 
inc/endpoints/class-myyoast-connect.php CHANGED
@@ -98,11 +98,11 @@ class WPSEO_Endpoint_MyYoast_Connect implements WPSEO_Endpoint {
98
  }
99
 
100
  /**
101
- * Retrieves the current client id.
102
  *
103
  * @codeCoverageIgnore
104
  *
105
- * @return array The client id.
106
  */
107
  protected function get_client_id() {
108
  $config = $this->get_client()->get_configuration();
@@ -128,11 +128,11 @@ class WPSEO_Endpoint_MyYoast_Connect implements WPSEO_Endpoint {
128
  }
129
 
130
  /**
131
- * Wraps the method for retrieving the home url.
132
  *
133
  * @codeCoverageIgnore
134
  *
135
- * @return string Home url.
136
  */
137
  protected function get_home_url() {
138
  return WPSEO_Utils::get_home_url();
98
  }
99
 
100
  /**
101
+ * Retrieves the current client ID.
102
  *
103
  * @codeCoverageIgnore
104
  *
105
+ * @return array The client ID.
106
  */
107
  protected function get_client_id() {
108
  $config = $this->get_client()->get_configuration();
128
  }
129
 
130
  /**
131
+ * Wraps the method for retrieving the home URL.
132
  *
133
  * @codeCoverageIgnore
134
  *
135
+ * @return string Home URL.
136
  */
137
  protected function get_home_url() {
138
  return WPSEO_Utils::get_home_url();
inc/exceptions/class-invalid-argument-exception.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Invalid_Argument_Exception
10
  */
11
  class WPSEO_Invalid_Argument_Exception extends InvalidArgumentException {
12
 
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Invalid_Argument_Exception.
10
  */
11
  class WPSEO_Invalid_Argument_Exception extends InvalidArgumentException {
12
 
inc/exceptions/class-invalid-indexable-exception.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Invalid_Indexable_Exception
10
  */
11
  class WPSEO_Invalid_Indexable_Exception extends InvalidArgumentException {
12
 
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Invalid_Indexable_Exception.
10
  */
11
  class WPSEO_Invalid_Indexable_Exception extends InvalidArgumentException {
12
 
inc/exceptions/class-myyoast-authentication-exception.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_MyYoast_Authentication_Exception
10
  */
11
  class WPSEO_MyYoast_Authentication_Exception extends WPSEO_MyYoast_Bad_Request_Exception {
12
 
6
  */
7
 
8
  /**
9
+ * Class WPSEO_MyYoast_Authentication_Exception.
10
  */
11
  class WPSEO_MyYoast_Authentication_Exception extends WPSEO_MyYoast_Bad_Request_Exception {
12
 
inc/exceptions/class-myyoast-bad-request-exception.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_MyYoast_Bad_Request_Exception
10
  */
11
  class WPSEO_MyYoast_Bad_Request_Exception extends Exception {
12
 
6
  */
7
 
8
  /**
9
+ * Class WPSEO_MyYoast_Bad_Request_Exception.
10
  */
11
  class WPSEO_MyYoast_Bad_Request_Exception extends Exception {
12
 
inc/exceptions/class-myyoast-invalid-json-exception.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_MyYoast_Invalid_JSON_Exception
10
  */
11
  class WPSEO_MyYoast_Invalid_JSON_Exception extends WPSEO_MyYoast_Bad_Request_Exception {
12
 
6
  */
7
 
8
  /**
9
+ * Class WPSEO_MyYoast_Invalid_JSON_Exception.
10
  */
11
  class WPSEO_MyYoast_Invalid_JSON_Exception extends WPSEO_MyYoast_Bad_Request_Exception {
12
 
inc/exceptions/class-rest-request-exception.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_REST_Request_Exception
10
  */
11
  class WPSEO_REST_Request_Exception extends Exception {
12
 
6
  */
7
 
8
  /**
9
+ * Class WPSEO_REST_Request_Exception.
10
  */
11
  class WPSEO_REST_Request_Exception extends Exception {
12
 
inc/indexables/class-indexable.php CHANGED
@@ -6,22 +6,28 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Indexable
10
  */
11
  abstract class WPSEO_Indexable {
12
 
13
  /**
14
- * @var array The updateable fields.
 
 
15
  */
16
  protected $updateable_fields = array();
17
 
18
  /**
19
- * @var array The indexable's data.
 
 
20
  */
21
  protected $data;
22
 
23
  /**
24
- * @var array The available validators to run.
 
 
25
  */
26
  protected $validators = array(
27
  'WPSEO_Object_Type_Validator',
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Indexable.
10
  */
11
  abstract class WPSEO_Indexable {
12
 
13
  /**
14
+ * The updateable fields.
15
+ *
16
+ * @var array
17
  */
18
  protected $updateable_fields = array();
19
 
20
  /**
21
+ * The indexable's data.
22
+ *
23
+ * @var array
24
  */
25
  protected $data;
26
 
27
  /**
28
+ * The available validators to run.
29
+ *
30
+ * @var array
31
  */
32
  protected $validators = array(
33
  'WPSEO_Object_Type_Validator',
inc/indexables/class-object-type.php CHANGED
@@ -6,27 +6,35 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Post_Indexable
10
  */
11
  abstract class WPSEO_Object_Type {
12
 
13
  /**
14
- * @var int The ID of the object.
 
 
15
  */
16
  protected $id;
17
 
18
  /**
19
- * @var string The type of the object.
 
 
20
  */
21
  protected $type;
22
 
23
  /**
24
- * @var string The subtype of the object.
 
 
25
  */
26
  protected $sub_type;
27
 
28
  /**
29
- * @var string The permalink of the object.
 
 
30
  */
31
  protected $permalink;
32
 
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Post_Indexable.
10
  */
11
  abstract class WPSEO_Object_Type {
12
 
13
  /**
14
+ * The ID of the object.
15
+ *
16
+ * @var int
17
  */
18
  protected $id;
19
 
20
  /**
21
+ * The type of the object.
22
+ *
23
+ * @var string
24
  */
25
  protected $type;
26
 
27
  /**
28
+ * The subtype of the object.
29
+ *
30
+ * @var string
31
  */
32
  protected $sub_type;
33
 
34
  /**
35
+ * The permalink of the object.
36
+ *
37
+ * @var string
38
  */
39
  protected $permalink;
40
 
inc/indexables/class-post-indexable.php CHANGED
@@ -6,12 +6,14 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Post_Indexable
10
  */
11
  class WPSEO_Post_Indexable extends WPSEO_Indexable {
12
 
13
  /**
14
- * @var array The updateable fields.
 
 
15
  */
16
  protected $updateable_fields = array(
17
  'canonical',
@@ -39,7 +41,7 @@ class WPSEO_Post_Indexable extends WPSEO_Indexable {
39
  /**
40
  * Creates a new Indexable from a passed object.
41
  *
42
- * @param int $object_id The object id to create the object for.
43
  *
44
  * @return WPSEO_Indexable The indexable.
45
  *
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Post_Indexable.
10
  */
11
  class WPSEO_Post_Indexable extends WPSEO_Indexable {
12
 
13
  /**
14
+ * The updateable fields.
15
+ *
16
+ * @var array
17
  */
18
  protected $updateable_fields = array(
19
  'canonical',
41
  /**
42
  * Creates a new Indexable from a passed object.
43
  *
44
+ * @param int $object_id The object ID to create the object for.
45
  *
46
  * @return WPSEO_Indexable The indexable.
47
  *
inc/indexables/class-post-object-type.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Post_Object_Type
10
  */
11
  class WPSEO_Post_Object_Type extends WPSEO_Object_Type {
12
 
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Post_Object_Type.
10
  */
11
  class WPSEO_Post_Object_Type extends WPSEO_Object_Type {
12
 
inc/indexables/class-term-indexable.php CHANGED
@@ -6,12 +6,14 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Term_Indexable
10
  */
11
  class WPSEO_Term_Indexable extends WPSEO_Indexable {
12
 
13
  /**
14
- * @var array The updateable fields.
 
 
15
  */
16
  protected $updateable_fields = array(
17
  'canonical',
@@ -34,7 +36,7 @@ class WPSEO_Term_Indexable extends WPSEO_Indexable {
34
  /**
35
  * Creates a new Indexable from a passed object.
36
  *
37
- * @param int $object_id The object id to create the object for.
38
  *
39
  * @return WPSEO_Indexable The indexable.
40
  *
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Term_Indexable.
10
  */
11
  class WPSEO_Term_Indexable extends WPSEO_Indexable {
12
 
13
  /**
14
+ * The updateable fields.
15
+ *
16
+ * @var array
17
  */
18
  protected $updateable_fields = array(
19
  'canonical',
36
  /**
37
  * Creates a new Indexable from a passed object.
38
  *
39
+ * @param int $object_id The object ID to create the object for.
40
  *
41
  * @return WPSEO_Indexable The indexable.
42
  *
inc/indexables/class-term-object-type.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Term_Object_Type
10
  */
11
  class WPSEO_Term_Object_Type extends WPSEO_Object_Type {
12
 
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Term_Object_Type.
10
  */
11
  class WPSEO_Term_Object_Type extends WPSEO_Object_Type {
12
 
inc/indexables/validators/class-endpoint-validator.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Interface WPSEO_Endpoint_Validator
10
  */
11
  interface WPSEO_Endpoint_Validator {
12
 
6
  */
7
 
8
  /**
9
+ * Interface WPSEO_Endpoint_Validator.
10
  */
11
  interface WPSEO_Endpoint_Validator {
12
 
inc/indexables/validators/class-keyword-validator.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Keyword_Validator
10
  */
11
  class WPSEO_Keyword_Validator implements WPSEO_Endpoint_Validator {
12
 
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Keyword_Validator.
10
  */
11
  class WPSEO_Keyword_Validator implements WPSEO_Endpoint_Validator {
12
 
inc/indexables/validators/class-link-validator.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Link_Validator
10
  */
11
  class WPSEO_Link_Validator implements WPSEO_Endpoint_Validator {
12
 
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Link_Validator.
10
  */
11
  class WPSEO_Link_Validator implements WPSEO_Endpoint_Validator {
12
 
inc/indexables/validators/class-meta-values-validator.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Meta_Values_Validator
10
  */
11
  class WPSEO_Meta_Values_Validator implements WPSEO_Endpoint_Validator {
12
 
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Meta_Values_Validator.
10
  */
11
  class WPSEO_Meta_Values_Validator implements WPSEO_Endpoint_Validator {
12
 
inc/indexables/validators/class-object-type-validator.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Object_Type_Validator
10
  */
11
  class WPSEO_Object_Type_Validator implements WPSEO_Endpoint_Validator {
12
 
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Object_Type_Validator.
10
  */
11
  class WPSEO_Object_Type_Validator implements WPSEO_Endpoint_Validator {
12
 
inc/indexables/validators/class-opengraph-validator.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_OpenGraph_Validator
10
  */
11
  class WPSEO_OpenGraph_Validator implements WPSEO_Endpoint_Validator {
12
 
6
  */
7
 
8
  /**
9
+ * Class WPSEO_OpenGraph_Validator.
10
  */
11
  class WPSEO_OpenGraph_Validator implements WPSEO_Endpoint_Validator {
12
 
inc/indexables/validators/class-robots-validator.php CHANGED
@@ -6,12 +6,14 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Robots_Validator
10
  */
11
  class WPSEO_Robots_Validator implements WPSEO_Endpoint_Validator {
12
 
13
  /**
14
- * @var array The robots keys to validate.
 
 
15
  */
16
  private $robots_to_validate = array(
17
  'is_robots_nofollow',
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Robots_Validator.
10
  */
11
  class WPSEO_Robots_Validator implements WPSEO_Endpoint_Validator {
12
 
13
  /**
14
+ * The robots keys to validate.
15
+ *
16
+ * @var array
17
  */
18
  private $robots_to_validate = array(
19
  'is_robots_nofollow',
inc/indexables/validators/class-twitter-validator.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Twitter_Validator
10
  */
11
  class WPSEO_Twitter_Validator implements WPSEO_Endpoint_Validator {
12
 
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Twitter_Validator.
10
  */
11
  class WPSEO_Twitter_Validator implements WPSEO_Endpoint_Validator {
12
 
inc/interface-wpseo-wordpress-integration.php CHANGED
@@ -7,12 +7,12 @@
7
 
8
  if ( ! interface_exists( 'WPSEO_WordPress_Integration' ) ) {
9
  /**
10
- * An interface for registering integrations with WordPress
11
  */
12
  interface WPSEO_WordPress_Integration {
13
 
14
  /**
15
- * Registers all hooks to WordPress
16
  *
17
  * @return void
18
  */
7
 
8
  if ( ! interface_exists( 'WPSEO_WordPress_Integration' ) ) {
9
  /**
10
+ * An interface for registering integrations with WordPress.
11
  */
12
  interface WPSEO_WordPress_Integration {
13
 
14
  /**
15
+ * Registers all hooks to WordPress.
16
  *
17
  * @return void
18
  */
inc/options/class-wpseo-option-ms.php CHANGED
@@ -14,38 +14,50 @@
14
  class WPSEO_Option_MS extends WPSEO_Option {
15
 
16
  /**
17
- * @var string option name
 
 
18
  */
19
  public $option_name = 'wpseo_ms';
20
 
21
  /**
22
- * @var string option group name for use in settings forms
 
 
23
  */
24
  public $group_name = 'yoast_wpseo_multisite_options';
25
 
26
  /**
27
- * @var bool whether to include the option in the return for WPSEO_Options::get_all()
 
 
28
  */
29
  public $include_in_all = false;
30
 
31
  /**
32
- * @var bool whether this option is only for when the install is multisite
 
 
33
  */
34
  public $multisite_only = true;
35
 
36
  /**
37
- * @var array Array of defaults for the option
38
- * Shouldn't be requested directly, use $this->get_defaults();
 
 
 
39
  */
40
  protected $defaults = array();
41
 
42
  /**
43
- * @var array $allowed_access_options Available options for the 'access' setting
44
- * Used for input validation
45
  *
46
  * {@internal Important: Make sure the options added to the array here are in line
47
  * with the keys for the options set for the select box in the
48
  * admin/pages/network.php file.}}
 
 
49
  */
50
  public static $allowed_access_options = array(
51
  'admin',
@@ -53,7 +65,7 @@ class WPSEO_Option_MS extends WPSEO_Option {
53
  );
54
 
55
  /**
56
- * Get the singleton instance of this class
57
  *
58
  * @return object
59
  */
@@ -91,7 +103,7 @@ class WPSEO_Option_MS extends WPSEO_Option {
91
  /**
92
  * Add filters to make sure that the option default is returned if the option is not set
93
  *
94
- * @return void
95
  */
96
  public function add_default_filters() {
97
  // Don't change, needs to check for false as could return prio 0 which would evaluate to false.
@@ -102,18 +114,18 @@ class WPSEO_Option_MS extends WPSEO_Option {
102
 
103
  /**
104
  * Remove the default filters.
105
- * Called from the validate() method to prevent failure to add new options
106
  *
107
- * @return void
108
  */
109
  public function remove_default_filters() {
110
  remove_filter( 'default_site_option_' . $this->option_name, array( $this, 'get_defaults' ) );
111
  }
112
 
113
  /**
114
- * Add filters to make sure that the option is merged with its defaults before being returned
115
  *
116
- * @return void
117
  */
118
  public function add_option_filters() {
119
  // Don't change, needs to check for false as could return prio 0 which would evaluate to false.
@@ -124,9 +136,9 @@ class WPSEO_Option_MS extends WPSEO_Option {
124
 
125
  /**
126
  * Remove the option filters.
127
- * Called from the clean_up methods to make sure we retrieve the original old option
128
  *
129
- * @return void
130
  */
131
  public function remove_option_filters() {
132
  remove_filter( 'site_option_' . $this->option_name, array( $this, 'get_option' ) );
@@ -135,13 +147,13 @@ class WPSEO_Option_MS extends WPSEO_Option {
135
  /* *********** METHODS influencing add_uption(), update_option() and saving from admin pages *********** */
136
 
137
  /**
138
- * Validate the option
139
  *
140
- * @param array $dirty New value for the option.
141
- * @param array $clean Clean value for the option, normally the defaults.
142
- * @param array $old Old value of the option.
143
  *
144
- * @return array Validated clean value for the option to be saved to the database
145
  */
146
  protected function validate_option( $dirty, $clean, $old ) {
147
 
@@ -154,7 +166,7 @@ class WPSEO_Option_MS extends WPSEO_Option {
154
  elseif ( function_exists( 'add_settings_error' ) ) {
155
  add_settings_error(
156
  $this->group_name, // Slug title of the setting.
157
- '_' . $key, // Suffix-id for the error message box.
158
  /* translators: %1$s expands to the option name and %2$sexpands to Yoast SEO */
159
  sprintf( __( '%1$s is not a valid choice for who should be allowed access to the %2$s settings. Value reset to the default.', 'wordpress-seo' ), esc_html( sanitize_text_field( $dirty[ $key ] ) ), 'Yoast SEO' ), // The error message.
160
  'error' // Error type, either 'error' or 'updated'.
@@ -175,7 +187,7 @@ class WPSEO_Option_MS extends WPSEO_Option {
175
  elseif ( function_exists( 'add_settings_error' ) ) {
176
  add_settings_error(
177
  $this->group_name, // Slug title of the setting.
178
- '_' . $key, // Suffix-id for the error message box.
179
  esc_html__( 'The default blog setting must be the numeric blog id of the blog you want to use as default.', 'wordpress-seo' )
180
  . '<br>'
181
  . sprintf(
@@ -191,7 +203,7 @@ class WPSEO_Option_MS extends WPSEO_Option {
191
  elseif ( function_exists( 'add_settings_error' ) ) {
192
  add_settings_error(
193
  $this->group_name, // Slug title of the setting.
194
- '_' . $key, // Suffix-id for the error message box.
195
  esc_html__( 'The default blog setting must be the numeric blog id of the blog you want to use as default.', 'wordpress-seo' ) . '<br>' . esc_html__( 'No numeric value was received.', 'wordpress-seo' ), // The error message.
196
  'error' // Error type, either 'error' or 'updated'.
197
  );
@@ -210,16 +222,16 @@ class WPSEO_Option_MS extends WPSEO_Option {
210
  }
211
 
212
  /**
213
- * Clean a given option value
214
  *
215
- * @param array $option_value Old (not merged with defaults or filtered) option value to
216
- * clean according to the rules for this option.
217
- * @param string $current_version (optional) Version from which to upgrade, if not set,
218
- * version specific upgrades will be disregarded.
219
- * @param array $all_old_option_values (optional) Only used when importing old options to have
220
- * access to the real old values, in contrast to the saved ones.
221
  *
222
- * @return array Cleaned option
223
  */
224
 
225
  /*
14
  class WPSEO_Option_MS extends WPSEO_Option {
15
 
16
  /**
17
+ * Option name.
18
+ *
19
+ * @var string
20
  */
21
  public $option_name = 'wpseo_ms';
22
 
23
  /**
24
+ * Option group name for use in settings forms.
25
+ *
26
+ * @var string
27
  */
28
  public $group_name = 'yoast_wpseo_multisite_options';
29
 
30
  /**
31
+ * Whether to include the option in the return for WPSEO_Options::get_all().
32
+ *
33
+ * @var bool
34
  */
35
  public $include_in_all = false;
36
 
37
  /**
38
+ * Whether this option is only for when the install is multisite.
39
+ *
40
+ * @var bool
41
  */
42
  public $multisite_only = true;
43
 
44
  /**
45
+ * Array of defaults for the option.
46
+ *
47
+ * Shouldn't be requested directly, use $this->get_defaults();
48
+ *
49
+ * @var array
50
  */
51
  protected $defaults = array();
52
 
53
  /**
54
+ * Available options for the 'access' setting. Used for input validation.
 
55
  *
56
  * {@internal Important: Make sure the options added to the array here are in line
57
  * with the keys for the options set for the select box in the
58
  * admin/pages/network.php file.}}
59
+ *
60
+ * @var array
61
  */
62
  public static $allowed_access_options = array(
63
  'admin',
65
  );
66
 
67
  /**
68
+ * Get the singleton instance of this class.
69
  *
70
  * @return object
71
  */
103
  /**
104
  * Add filters to make sure that the option default is returned if the option is not set
105
  *
106
+ * @return void
107
  */
108
  public function add_default_filters() {
109
  // Don't change, needs to check for false as could return prio 0 which would evaluate to false.
114
 
115
  /**
116
  * Remove the default filters.
117
+ * Called from the validate() method to prevent failure to add new options.
118
  *
119
+ * @return void
120
  */
121
  public function remove_default_filters() {
122
  remove_filter( 'default_site_option_' . $this->option_name, array( $this, 'get_defaults' ) );
123
  }
124
 
125
  /**
126
+ * Add filters to make sure that the option is merged with its defaults before being returned.
127
  *
128
+ * @return void
129
  */
130
  public function add_option_filters() {
131
  // Don't change, needs to check for false as could return prio 0 which would evaluate to false.
136
 
137
  /**
138
  * Remove the option filters.
139
+ * Called from the clean_up methods to make sure we retrieve the original old option.
140
  *
141
+ * @return void
142
  */
143
  public function remove_option_filters() {
144
  remove_filter( 'site_option_' . $this->option_name, array( $this, 'get_option' ) );
147
  /* *********** METHODS influencing add_uption(), update_option() and saving from admin pages *********** */
148
 
149
  /**
150
+ * Validate the option.
151
  *
152
+ * @param array $dirty New value for the option.
153
+ * @param array $clean Clean value for the option, normally the defaults.
154
+ * @param array $old Old value of the option.
155
  *
156
+ * @return array Validated clean value for the option to be saved to the database.
157
  */
158
  protected function validate_option( $dirty, $clean, $old ) {
159
 
166
  elseif ( function_exists( 'add_settings_error' ) ) {
167
  add_settings_error(
168
  $this->group_name, // Slug title of the setting.
169
+ '_' . $key, // Suffix-ID for the error message box.
170
  /* translators: %1$s expands to the option name and %2$sexpands to Yoast SEO */
171
  sprintf( __( '%1$s is not a valid choice for who should be allowed access to the %2$s settings. Value reset to the default.', 'wordpress-seo' ), esc_html( sanitize_text_field( $dirty[ $key ] ) ), 'Yoast SEO' ), // The error message.
172
  'error' // Error type, either 'error' or 'updated'.
187
  elseif ( function_exists( 'add_settings_error' ) ) {
188
  add_settings_error(
189
  $this->group_name, // Slug title of the setting.
190
+ '_' . $key, // Suffix-ID for the error message box.
191
  esc_html__( 'The default blog setting must be the numeric blog id of the blog you want to use as default.', 'wordpress-seo' )
192
  . '<br>'
193
  . sprintf(
203
  elseif ( function_exists( 'add_settings_error' ) ) {
204
  add_settings_error(
205
  $this->group_name, // Slug title of the setting.
206
+ '_' . $key, // Suffix-ID for the error message box.
207
  esc_html__( 'The default blog setting must be the numeric blog id of the blog you want to use as default.', 'wordpress-seo' ) . '<br>' . esc_html__( 'No numeric value was received.', 'wordpress-seo' ), // The error message.
208
  'error' // Error type, either 'error' or 'updated'.
209
  );
222
  }
223
 
224
  /**
225
+ * Clean a given option value.
226
  *
227
+ * @param array $option_value Old (not merged with defaults or filtered) option value to
228
+ * clean according to the rules for this option.
229
+ * @param string $current_version (optional) Version from which to upgrade, if not set,
230
+ * version specific upgrades will be disregarded.
231
+ * @param array $all_old_option_values (optional) Only used when importing old options to have
232
+ * access to the real old values, in contrast to the saved ones.
233
  *
234
+ * @return array Cleaned option.
235
  */
236
 
237
  /*
inc/options/class-wpseo-option-social.php CHANGED
@@ -11,13 +11,18 @@
11
  class WPSEO_Option_Social extends WPSEO_Option {
12
 
13
  /**
14
- * @var string Option name.
 
 
15
  */
16
  public $option_name = 'wpseo_social';
17
 
18
  /**
19
- * @var array Array of defaults for the option.
20
- * Shouldn't be requested directly, use $this->get_defaults();
 
 
 
21
  */
22
  protected $defaults = array(
23
  // Form fields.
@@ -44,7 +49,9 @@ class WPSEO_Option_Social extends WPSEO_Option {
44
  );
45
 
46
  /**
47
- * @var array Array of sub-options which should not be overloaded with multi-site defaults.
 
 
48
  */
49
  public $ms_exclude = array(
50
  /* Privacy. */
@@ -53,12 +60,15 @@ class WPSEO_Option_Social extends WPSEO_Option {
53
  );
54
 
55
  /**
56
- * @var array Array of allowed twitter card types.
57
- * While we only have the options summary and summary_large_image in the
58
- * interface now, we might change that at some point.
 
59
  *
60
  * {@internal Uncomment any of these to allow them in validation *and* automatically
61
  * add them as a choice in the options page.}}
 
 
62
  */
63
  public static $twitter_card_types = array(
64
  'summary' => '',
@@ -96,17 +106,17 @@ class WPSEO_Option_Social extends WPSEO_Option {
96
  /**
97
  * Validate the option.
98
  *
99
- * @param array $dirty New value for the option.
100
- * @param array $clean Clean value for the option, normally the defaults.
101
- * @param array $old Old value of the option.
102
  *
103
- * @return array Validated clean value for the option to be saved to the database.
104
  */
105
  protected function validate_option( $dirty, $clean, $old ) {
106
 
107
  foreach ( $clean as $key => $value ) {
108
  switch ( $key ) {
109
- /* text fields */
110
  case 'og_frontpage_desc':
111
  case 'og_frontpage_title':
112
  if ( isset( $dirty[ $key ] ) && $dirty[ $key ] !== '' ) {
@@ -142,11 +152,12 @@ class WPSEO_Option_Social extends WPSEO_Option {
142
  $this->validate_verification_string( $key, $dirty, $old, $clean );
143
  break;
144
 
145
- /* twitter user name */
146
  case 'twitter_site':
147
  if ( isset( $dirty[ $key ] ) && $dirty[ $key ] !== '' ) {
148
  $twitter_id = sanitize_text_field( ltrim( $dirty[ $key ], '@' ) );
149
- /**
 
150
  * From the Twitter documentation about twitter screen names:
151
  * Typically a maximum of 15 characters long, but some historical accounts
152
  * may exist with longer names.
@@ -172,7 +183,7 @@ class WPSEO_Option_Social extends WPSEO_Option {
172
  if ( function_exists( 'add_settings_error' ) ) {
173
  add_settings_error(
174
  $this->group_name, // Slug title of the setting.
175
- '_' . $key, // Suffix-id for the error message box.
176
  sprintf(
177
  /* translators: %s expands to a twitter user name. */
178
  __( '%s does not seem to be a valid Twitter user-id. Please correct.', 'wordpress-seo' ),
@@ -192,7 +203,7 @@ class WPSEO_Option_Social extends WPSEO_Option {
192
  }
193
  break;
194
 
195
- /* boolean fields */
196
  case 'opengraph':
197
  case 'twitter':
198
  $clean[ $key ] = ( isset( $dirty[ $key ] ) ? WPSEO_Utils::validate_bool( $dirty[ $key ] ) : false );
@@ -212,14 +223,14 @@ class WPSEO_Option_Social extends WPSEO_Option {
212
  /**
213
  * Clean a given option value.
214
  *
215
- * @param array $option_value Old (not merged with defaults or filtered) option value to
216
- * clean according to the rules for this option.
217
- * @param string $current_version Optional. Version from which to upgrade, if not set,
218
- * version specific upgrades will be disregarded.
219
- * @param array $all_old_option_values Optional. Only used when importing old options to have
220
- * access to the real old values, in contrast to the saved ones.
221
  *
222
- * @return array Cleaned option.
223
  */
224
  protected function clean_option( $option_value, $current_version = null, $all_old_option_values = null ) {
225
 
11
  class WPSEO_Option_Social extends WPSEO_Option {
12
 
13
  /**
14
+ * Option name.
15
+ *
16
+ * @var string
17
  */
18
  public $option_name = 'wpseo_social';
19
 
20
  /**
21
+ * Array of defaults for the option.
22
+ *
23
+ * Shouldn't be requested directly, use $this->get_defaults();
24
+ *
25
+ * @var array
26
  */
27
  protected $defaults = array(
28
  // Form fields.
49
  );
50
 
51
  /**
52
+ * Array of sub-options which should not be overloaded with multi-site defaults.
53
+ *
54
+ * @var array
55
  */
56
  public $ms_exclude = array(
57
  /* Privacy. */
60
  );
61
 
62
  /**
63
+ * Array of allowed twitter card types.
64
+ *
65
+ * While we only have the options summary and summary_large_image in the
66
+ * interface now, we might change that at some point.
67
  *
68
  * {@internal Uncomment any of these to allow them in validation *and* automatically
69
  * add them as a choice in the options page.}}
70
+ *
71
+ * @var array
72
  */
73
  public static $twitter_card_types = array(
74
  'summary' => '',
106
  /**
107
  * Validate the option.
108
  *
109
+ * @param array $dirty New value for the option.
110
+ * @param array $clean Clean value for the option, normally the defaults.
111
+ * @param array $old Old value of the option.
112
  *
113
+ * @return array Validated clean value for the option to be saved to the database.
114
  */
115
  protected function validate_option( $dirty, $clean, $old ) {
116
 
117
  foreach ( $clean as $key => $value ) {
118
  switch ( $key ) {
119
+ /* Text fields. */
120
  case 'og_frontpage_desc':
121
  case 'og_frontpage_title':
122
  if ( isset( $dirty[ $key ] ) && $dirty[ $key ] !== '' ) {
152
  $this->validate_verification_string( $key, $dirty, $old, $clean );
153
  break;
154
 
155
+ /* Twitter user name. */
156
  case 'twitter_site':
157
  if ( isset( $dirty[ $key ] ) && $dirty[ $key ] !== '' ) {
158
  $twitter_id = sanitize_text_field( ltrim( $dirty[ $key ], '@' ) );
159
+
160
+ /*
161
  * From the Twitter documentation about twitter screen names:
162
  * Typically a maximum of 15 characters long, but some historical accounts
163
  * may exist with longer names.
183
  if ( function_exists( 'add_settings_error' ) ) {
184
  add_settings_error(
185
  $this->group_name, // Slug title of the setting.
186
+ '_' . $key, // Suffix-ID for the error message box.
187
  sprintf(
188
  /* translators: %s expands to a twitter user name. */
189
  __( '%s does not seem to be a valid Twitter user-id. Please correct.', 'wordpress-seo' ),
203
  }
204
  break;
205
 
206
+ /* Boolean fields. */
207
  case 'opengraph':
208
  case 'twitter':
209
  $clean[ $key ] = ( isset( $dirty[ $key ] ) ? WPSEO_Utils::validate_bool( $dirty[ $key ] ) : false );
223
  /**
224
  * Clean a given option value.
225
  *
226
+ * @param array $option_value Old (not merged with defaults or filtered) option value to
227
+ * clean according to the rules for this option.
228
+ * @param string $current_version Optional. Version from which to upgrade, if not set,
229
+ * version specific upgrades will be disregarded.
230
+ * @param array $all_old_option_values Optional. Only used when importing old options to have
231
+ * access to the real old values, in contrast to the saved ones.
232
  *
233
+ * @return array Cleaned option.
234
  */
235
  protected function clean_option( $option_value, $current_version = null, $all_old_option_values = null ) {
236
 
inc/options/class-wpseo-option-titles.php CHANGED
@@ -11,15 +11,20 @@
11
  class WPSEO_Option_Titles extends WPSEO_Option {
12
 
13
  /**
14
- * @var string Option name.
 
 
15
  */
16
  public $option_name = 'wpseo_titles';
17
 
18
  /**
19
- * @var array Array of defaults for the option.
20
- * Shouldn't be requested directly, use $this->get_defaults();
 
21
  *
22
  * {@internal Note: Some of the default values are added via the translate_defaults() method.}}
 
 
23
  */
24
  protected $defaults = array(
25
  // Non-form fields, set via (ajax) function.
@@ -64,7 +69,7 @@ class WPSEO_Option_Titles extends WPSEO_Option {
64
  'alternate_website_name' => '',
65
  'company_logo' => '',
66
  'company_name' => '',
67
- 'company_or_person' => '',
68
  'company_or_person_user_id' => false,
69
 
70
  'stripcategorybase' => false,
@@ -90,7 +95,9 @@ class WPSEO_Option_Titles extends WPSEO_Option {
90
  );
91
 
92
  /**
93
- * @var array Array of variable option name patterns for the option.
 
 
94
  */
95
  protected $variable_array_key_patterns = array(
96
  'title-',
@@ -104,10 +111,12 @@ class WPSEO_Option_Titles extends WPSEO_Option {
104
  );
105
 
106
  /**
107
- * @var array Array of sub-options which should not be overloaded with multi-site defaults.
 
 
108
  */
109
  public $ms_exclude = array(
110
- /* theme dependent */
111
  'title_test',
112
  'forcerewritetitle',
113
  );
@@ -175,7 +184,7 @@ class WPSEO_Option_Titles extends WPSEO_Option {
175
  /**
176
  * Get the available separator options aria-labels.
177
  *
178
- * @return array $separator_options Array with the separator options aria-labels.
179
  */
180
  public function get_separator_options_for_display() {
181
  $separators = $this->get_separator_options();
@@ -287,8 +296,8 @@ class WPSEO_Option_Titles extends WPSEO_Option {
287
  * Invalidates enrich_defaults() cache.
288
  *
289
  * Called from actions:
290
- * (un)registered_post_type
291
- * (un)registered_taxonomy
292
  *
293
  * @return void
294
  */
@@ -299,11 +308,11 @@ class WPSEO_Option_Titles extends WPSEO_Option {
299
  /**
300
  * Validate the option.
301
  *
302
- * @param array $dirty New value for the option.
303
- * @param array $clean Clean value for the option, normally the defaults.
304
- * @param array $old Old value of the option.
305
  *
306
- * @return array Validated clean value for the option to be saved to the database.
307
  */
308
  protected function validate_option( $dirty, $clean, $old ) {
309
  $allowed_post_types = $this->get_allowed_post_types();
@@ -345,10 +354,14 @@ class WPSEO_Option_Titles extends WPSEO_Option {
345
  break;
346
 
347
  case 'company_or_person':
348
- if ( isset( $dirty[ $key ] ) && $dirty[ $key ] !== '' ) {
349
  if ( in_array( $dirty[ $key ], array( 'company', 'person' ), true ) ) {
350
  $clean[ $key ] = $dirty[ $key ];
351
  }
 
 
 
 
352
  }
353
  break;
354
 
@@ -405,7 +418,7 @@ class WPSEO_Option_Titles extends WPSEO_Option {
405
  $clean[ $key ] = sanitize_title_with_dashes( $old[ $key ] );
406
  }
407
  /**
408
- * @todo [JRF => whomever] maybe change the untranslated $pt name in the
409
  * error message to the nicely translated label ?
410
  */
411
  add_settings_error(
@@ -441,13 +454,13 @@ class WPSEO_Option_Titles extends WPSEO_Option {
441
  $clean[ $key ] = sanitize_key( $old[ $key ] );
442
  }
443
  /**
444
- * @todo [JRF =? whomever] maybe change the untranslated $tax name in the
445
  * error message to the nicely translated label ?
446
  */
447
  $tax = str_replace( array( 'taxonomy-', '-ptparent' ), '', $key );
448
  add_settings_error(
449
  $this->group_name, // Slug title of the setting.
450
- '_' . $tax, // Suffix-id for the error message box.
451
  /* translators: %s expands to a taxonomy slug. */
452
  sprintf( __( 'Please select a valid post type for taxonomy "%s"', 'wordpress-seo' ), $tax ), // The error message.
453
  'error' // Error type, either 'error' or 'updated'.
@@ -476,14 +489,14 @@ class WPSEO_Option_Titles extends WPSEO_Option {
476
  }
477
  break;
478
 
479
- /* Separator field - Radio */
480
  case 'separator':
481
  if ( isset( $dirty[ $key ] ) && $dirty[ $key ] !== '' ) {
482
 
483
  // Get separator fields.
484
  $separator_fields = $this->get_separator_options();
485
 
486
- // Check if the given separator is exists.
487
  if ( isset( $separator_fields[ $dirty[ $key ] ] ) ) {
488
  $clean[ $key ] = $dirty[ $key ];
489
  }
@@ -562,14 +575,14 @@ class WPSEO_Option_Titles extends WPSEO_Option {
562
  /**
563
  * Clean a given option value.
564
  *
565
- * @param array $option_value Old (not merged with defaults or filtered) option value to
566
- * clean according to the rules for this option.
567
- * @param string $current_version Optional. Version from which to upgrade, if not set,
568
- * version specific upgrades will be disregarded.
569
- * @param array $all_old_option_values Optional. Only used when importing old options to have
570
- * access to the real old values, in contrast to the saved ones.
571
  *
572
- * @return array Cleaned option.
573
  */
574
  protected function clean_option( $option_value, $current_version = null, $all_old_option_values = null ) {
575
  static $original = null;
@@ -588,7 +601,7 @@ class WPSEO_Option_Titles extends WPSEO_Option {
588
  * {@internal Don't rename to the 'current' names straight away as that would prevent
589
  * the rename/unset combi below from working.}}
590
  *
591
- * @todo [JRF] maybe figure out a smarter way to deal with this.
592
  */
593
  $old_option = null;
594
  if ( isset( $all_old_option_values ) ) {
@@ -714,7 +727,7 @@ class WPSEO_Option_Titles extends WPSEO_Option {
714
 
715
  // Similar to validation routine - any changes made there should be made here too.
716
  switch ( $switch_key ) {
717
- /* text fields */
718
  case 'title-':
719
  case 'metadesc-':
720
  case 'bctitle-ptarchive-':
@@ -756,12 +769,12 @@ class WPSEO_Option_Titles extends WPSEO_Option {
756
  * variable key does not get removed. IMPORTANT: keep this method in line with
757
  * the parent on which it is based!}}
758
  *
759
- * @param array $dirty Original option as retrieved from the database.
760
- * @param array $clean Filtered option where any options which shouldn't be in our option
761
- * have already been removed and any options which weren't set
762
- * have been set to their defaults.
763
  *
764
- * @return array
765
  */
766
  protected function retain_variable_keys( $dirty, $clean ) {
767
  if ( ( is_array( $this->variable_array_key_patterns ) && $this->variable_array_key_patterns !== array() ) && ( is_array( $dirty ) && $dirty !== array() ) ) {
11
  class WPSEO_Option_Titles extends WPSEO_Option {
12
 
13
  /**
14
+ * Option name.
15
+ *
16
+ * @var string
17
  */
18
  public $option_name = 'wpseo_titles';
19
 
20
  /**
21
+ * Array of defaults for the option.
22
+ *
23
+ * Shouldn't be requested directly, use $this->get_defaults();
24
  *
25
  * {@internal Note: Some of the default values are added via the translate_defaults() method.}}
26
+ *
27
+ * @var array
28
  */
29
  protected $defaults = array(
30
  // Non-form fields, set via (ajax) function.
69
  'alternate_website_name' => '',
70
  'company_logo' => '',
71
  'company_name' => '',
72
+ 'company_or_person' => 'company',
73
  'company_or_person_user_id' => false,
74
 
75
  'stripcategorybase' => false,
95
  );
96
 
97
  /**
98
+ * Array of variable option name patterns for the option.
99
+ *
100
+ * @var array
101
  */
102
  protected $variable_array_key_patterns = array(
103
  'title-',
111
  );
112
 
113
  /**
114
+ * Array of sub-options which should not be overloaded with multi-site defaults.
115
+ *
116
+ * @var array
117
  */
118
  public $ms_exclude = array(
119
+ /* Theme dependent. */
120
  'title_test',
121
  'forcerewritetitle',
122
  );
184
  /**
185
  * Get the available separator options aria-labels.
186
  *
187
+ * @return array Array with the separator options aria-labels.
188
  */
189
  public function get_separator_options_for_display() {
190
  $separators = $this->get_separator_options();
296
  * Invalidates enrich_defaults() cache.
297
  *
298
  * Called from actions:
299
+ * - (un)registered_post_type
300
+ * - (un)registered_taxonomy
301
  *
302
  * @return void
303
  */
308
  /**
309
  * Validate the option.
310
  *
311
+ * @param array $dirty New value for the option.
312
+ * @param array $clean Clean value for the option, normally the defaults.
313
+ * @param array $old Old value of the option.
314
  *
315
+ * @return array Validated clean value for the option to be saved to the database.
316
  */
317
  protected function validate_option( $dirty, $clean, $old ) {
318
  $allowed_post_types = $this->get_allowed_post_types();
354
  break;
355
 
356
  case 'company_or_person':
357
+ if ( isset( $dirty[ $key ] ) ) {
358
  if ( in_array( $dirty[ $key ], array( 'company', 'person' ), true ) ) {
359
  $clean[ $key ] = $dirty[ $key ];
360
  }
361
+ else {
362
+ $defaults = $this->get_defaults();
363
+ $clean[ $key ] = $defaults['company_or_person'];
364
+ }
365
  }
366
  break;
367
 
418
  $clean[ $key ] = sanitize_title_with_dashes( $old[ $key ] );
419
  }
420
  /**
421
+ * @todo [JRF => whomever] Maybe change the untranslated $pt name in the
422
  * error message to the nicely translated label ?
423
  */
424
  add_settings_error(
454
  $clean[ $key ] = sanitize_key( $old[ $key ] );
455
  }
456
  /**
457
+ * @todo [JRF =? whomever] Maybe change the untranslated $tax name in the
458
  * error message to the nicely translated label ?
459
  */
460
  $tax = str_replace( array( 'taxonomy-', '-ptparent' ), '', $key );
461
  add_settings_error(
462
  $this->group_name, // Slug title of the setting.
463
+ '_' . $tax, // Suffix-ID for the error message box.
464
  /* translators: %s expands to a taxonomy slug. */
465
  sprintf( __( 'Please select a valid post type for taxonomy "%s"', 'wordpress-seo' ), $tax ), // The error message.
466
  'error' // Error type, either 'error' or 'updated'.
489
  }
490
  break;
491
 
492
+ /* Separator field - Radio. */
493
  case 'separator':
494
  if ( isset( $dirty[ $key ] ) && $dirty[ $key ] !== '' ) {
495
 
496
  // Get separator fields.
497
  $separator_fields = $this->get_separator_options();
498
 
499
+ // Check if the given separator exists.
500
  if ( isset( $separator_fields[ $dirty[ $key ] ] ) ) {
501
  $clean[ $key ] = $dirty[ $key ];
502
  }
575
  /**
576
  * Clean a given option value.
577
  *
578
+ * @param array $option_value Old (not merged with defaults or filtered) option value to
579
+ * clean according to the rules for this option.
580
+ * @param string $current_version Optional. Version from which to upgrade, if not set,
581
+ * version specific upgrades will be disregarded.
582
+ * @param array $all_old_option_values Optional. Only used when importing old options to have
583
+ * access to the real old values, in contrast to the saved ones.
584
  *
585
+ * @return array Cleaned option.
586
  */
587
  protected function clean_option( $option_value, $current_version = null, $all_old_option_values = null ) {
588
  static $original = null;
601
  * {@internal Don't rename to the 'current' names straight away as that would prevent
602
  * the rename/unset combi below from working.}}
603
  *
604
+ * @todo [JRF] Maybe figure out a smarter way to deal with this.
605
  */
606
  $old_option = null;
607
  if ( isset( $all_old_option_values ) ) {
727
 
728
  // Similar to validation routine - any changes made there should be made here too.
729
  switch ( $switch_key ) {
730
+ /* Text fields. */
731
  case 'title-':
732
  case 'metadesc-':
733
  case 'bctitle-ptarchive-':
769
  * variable key does not get removed. IMPORTANT: keep this method in line with
770
  * the parent on which it is based!}}
771
  *
772
+ * @param array $dirty Original option as retrieved from the database.
773
+ * @param array $clean Filtered option where any options which shouldn't be in our option
774
+ * have already been removed and any options which weren't set
775
+ * have been set to their defaults.
776
  *
777
+ * @return array
778
  */
779
  protected function retain_variable_keys( $dirty, $clean ) {
780
  if ( ( is_array( $this->variable_array_key_patterns ) && $this->variable_array_key_patterns !== array() ) && ( is_array( $dirty ) && $dirty !== array() ) ) {
inc/options/class-wpseo-option-wpseo.php CHANGED
@@ -213,11 +213,11 @@ class WPSEO_Option_Wpseo extends WPSEO_Option {
213
  /**
214
  * Validate the option.
215
  *
216
- * @param array $dirty New value for the option.
217
- * @param array $clean Clean value for the option, normally the defaults.
218
- * @param array $old Old value of the option.
219
  *
220
- * @return array Validated clean value for the option to be saved to the database.
221
  */
222
  protected function validate_option( $dirty, $clean, $old ) {
223
 
@@ -344,7 +344,8 @@ class WPSEO_Option_Wpseo extends WPSEO_Option {
344
  }
345
 
346
  /**
347
- * Gets the filter hook name and callback for adjusting the retrieved option value against the network-allowed features.
 
348
  *
349
  * @return array Array where the first item is the hook name, the second is the hook callback,
350
  * and the third is the hook priority.
@@ -374,14 +375,14 @@ class WPSEO_Option_Wpseo extends WPSEO_Option {
374
  /**
375
  * Clean a given option value.
376
  *
377
- * @param array $option_value Old (not merged with defaults or filtered) option value to
378
- * clean according to the rules for this option.
379
- * @param string $current_version Optional. Version from which to upgrade, if not set,
380
- * version specific upgrades will be disregarded.
381
- * @param array $all_old_option_values Optional. Only used when importing old options to have
382
- * access to the real old values, in contrast to the saved ones.
383
  *
384
- * @return array Cleaned option.
385
  */
386
  protected function clean_option( $option_value, $current_version = null, $all_old_option_values = null ) {
387
  return $option_value;
213
  /**
214
  * Validate the option.
215
  *
216
+ * @param array $dirty New value for the option.
217
+ * @param array $clean Clean value for the option, normally the defaults.
218
+ * @param array $old Old value of the option.
219
  *
220
+ * @return array Validated clean value for the option to be saved to the database.
221
  */
222
  protected function validate_option( $dirty, $clean, $old ) {
223
 
344
  }
345
 
346
  /**
347
+ * Gets the filter hook name and callback for adjusting the retrieved option value
348
+ * against the network-allowed features.
349
  *
350
  * @return array Array where the first item is the hook name, the second is the hook callback,
351
  * and the third is the hook priority.
375
  /**
376
  * Clean a given option value.
377
  *
378
+ * @param array $option_value Old (not merged with defaults or filtered) option value to
379
+ * clean according to the rules for this option.
380
+ * @param string $current_version Optional. Version from which to upgrade, if not set,
381
+ * version specific upgrades will be disregarded.
382
+ * @param array $all_old_option_values Optional. Only used when importing old options to have
383
+ * access to the real old values, in contrast to the saved ones.
384
  *
385
+ * @return array Cleaned option.
386
  */
387
  protected function clean_option( $option_value, $current_version = null, $all_old_option_values = null ) {
388
  return $option_value;
inc/options/class-wpseo-option.php CHANGED
@@ -12,48 +12,48 @@
12
  * Some guidelines:
13
  * [Retrieving options]
14
  * - Use the normal get_option() to retrieve an option. You will receive a complete array for the option.
15
- * Any subkeys which were not set, will have their default values in place.
16
  * - In other words, you will normally not have to check whether a subkey isset() as they will *always* be set.
17
- * They will also *always* be of the correct variable type.
18
- * The only exception to this are the options with variable option names based on post_type or taxonomy
19
- * as those will not always be available before the taxonomy/post_type is registered.
20
- * (they will be available if a value was set, they won't be if it wasn't as the class won't know
21
- * that a default needs to be injected).
22
  *
23
  * [Updating/Adding options]
24
  * - For multisite site_options, please use the WPSEO_Options::update_site_option() method.
25
  * - For normal options, use the normal add/update_option() functions. As long a the classes here
26
  * are instantiated, validation for all options and their subkeys will be automatic.
27
  * - On (succesfull) update of a couple of options, certain related actions will be run automatically.
28
- * Some examples:
29
- * - on change of wpseo[yoast_tracking], the cron schedule will be adjusted accordingly
30
- * - on change of wpseo and wpseo_title, some caches will be cleared
31
  *
32
  *
33
  * [Important information about add/updating/changing these classes]
34
  * - Make sure that option array key names are unique across options. The WPSEO_Options::get_all()
35
- * method merges most options together. If any of them have non-unique names, even if they
36
- * are in a different option, they *will* overwrite each other.
37
  * - When you add a new array key in an option: make sure you add proper defaults and add the key
38
- * to the validation routine in the proper place or add a new validation case.
39
- * You don't need to do any upgrading as any option returned will always be merged with the
40
- * defaults, so new options will automatically be available.
41
- * If the default value is a string which need translating, add this to the concrete class
42
- * translate_defaults() method.
43
  * - When you remove an array key from an option: if it's important that the option is really removed,
44
- * add the WPSEO_Option::clean_up( $option_name ) method to the upgrade run.
45
- * This will re-save the option and automatically remove the array key no longer in existance.
46
  * - When you rename a sub-option: add it to the clean_option() routine and run that in the upgrade run.
47
  * - When you change the default for an option sub-key, make sure you verify that the validation routine will
48
- * still work the way it should.
49
- * Example: changing a default from '' (empty string) to 'text' with a validation routine with tests
50
- * for an empty string will prevent a user from saving an empty string as the real value. So the
51
- * test for '' with the validation routine would have to be removed in that case.
52
  * - If an option needs specific actions different from defined in this abstract class, you can just overrule
53
- * a method by defining it in the concrete class.
54
  *
55
- * @todo - [JRF => testers] Double check that validation will not cause errors when called
56
- * from upgrade routine (some of the WP functions may not yet be available).
57
  */
58
  abstract class WPSEO_Option {
59
 
@@ -204,7 +204,7 @@ abstract class WPSEO_Option {
204
  * Enrich defaults once custom post types and taxonomies have been registered
205
  * which is normally done on the init action.
206
  *
207
- * @todo - [JRF/testers] Verify that none of the options which are only available after
208
  * enrichment are used before the enriching.
209
  */
210
  if ( method_exists( $this, 'enrich_defaults' ) ) {
@@ -238,7 +238,7 @@ abstract class WPSEO_Option {
238
  /**
239
  * Add filters to make sure that the option default is returned if the option is not set.
240
  *
241
- * @return void
242
  */
243
  public function add_default_filters() {
244
  // Don't change, needs to check for false as could return prio 0 which would evaluate to false.
@@ -307,7 +307,7 @@ abstract class WPSEO_Option {
307
  if ( function_exists( 'add_settings_error' ) ) {
308
  add_settings_error(
309
  $this->group_name, // Slug title of the setting.
310
- '_' . $key, // Suffix-id for the error message box.
311
  /* translators: 1: Verification string from user input; 2: Service name. */
312
  sprintf( __( '%1$s does not seem to be a valid %2$s verification string. Please correct.', 'wordpress-seo' ), '<strong>' . esc_html( $meta ) . '</strong>', $service ), // The error message.
313
  'error' // Error type, either 'error' or 'updated'.
@@ -341,7 +341,7 @@ abstract class WPSEO_Option {
341
  $url = WPSEO_Utils::sanitize_url( $dirty[ $key ] );
342
  add_settings_error(
343
  $this->group_name, // Slug title of the setting.
344
- '_' . $key, // Suffix-id for the error message box.
345
  sprintf(
346
  /* translators: %s expands to an invalid URL. */
347
  __( '%s does not seem to be a valid url. Please correct.', 'wordpress-seo' ),
@@ -358,7 +358,7 @@ abstract class WPSEO_Option {
358
  * Remove the default filters.
359
  * Called from the validate() method to prevent failure to add new options.
360
  *
361
- * @return void
362
  */
363
  public function remove_default_filters() {
364
  remove_filter( 'default_option_' . $this->option_name, array( $this, 'get_defaults' ) );
@@ -372,7 +372,7 @@ abstract class WPSEO_Option {
372
  * {@internal The enrich_defaults method is used to set defaults for variable array keys
373
  * in an option, such as array keys depending on post_types and/or taxonomies.}}
374
  *
375
- * @return array
376
  */
377
  public function get_defaults() {
378
  if ( method_exists( $this, 'translate_defaults' ) ) {
@@ -389,7 +389,7 @@ abstract class WPSEO_Option {
389
  /**
390
  * Add filters to make sure that the option is merged with its defaults before being returned.
391
  *
392
- * @return void
393
  */
394
  public function add_option_filters() {
395
  // Don't change, needs to check for false as could return prio 0 which would evaluate to false.
@@ -402,7 +402,7 @@ abstract class WPSEO_Option {
402
  * Remove the option filters.
403
  * Called from the clean_up methods to make sure we retrieve the original old option.
404
  *
405
- * @return void
406
  */
407
  public function remove_option_filters() {
408
  remove_filter( 'option_' . $this->option_name, array( $this, 'get_option' ) );
@@ -413,9 +413,9 @@ abstract class WPSEO_Option {
413
  *
414
  * This method should *not* be called directly!!! It is only meant to filter the get_option() results.
415
  *
416
- * @param mixed $options Option value.
417
  *
418
- * @return mixed Option merged with the defaults for that option.
419
  */
420
  public function get_option( $options = null ) {
421
  $filtered = $this->array_filter_merge( $options );
@@ -461,9 +461,9 @@ abstract class WPSEO_Option {
461
  /**
462
  * Validate the option
463
  *
464
- * @param mixed $option_value The unvalidated new value for the option.
465
  *
466
- * @return array Validated new value for the option.
467
  */
468
  public function validate( $option_value ) {
469
  $clean = $this->get_defaults();
@@ -503,6 +503,7 @@ abstract class WPSEO_Option {
503
  * with 'allow_'.
504
  *
505
  * @param string $key Option key.
 
506
  * @return bool True if option key is disabled, false otherwise.
507
  */
508
  public function is_disabled( $key ) {
@@ -518,9 +519,9 @@ abstract class WPSEO_Option {
518
  * All concrete classes must contain a validate_option() method which validates all
519
  * values within the option.
520
  *
521
- * @param array $dirty New value for the option.
522
- * @param array $clean Clean value for the option, normally the defaults.
523
- * @param array $old Old value of the option.
524
  */
525
  abstract protected function validate_option( $dirty, $clean, $old );
526
 
@@ -601,7 +602,8 @@ abstract class WPSEO_Option {
601
  * @uses WPSEO_Option::get_original_option()
602
  * @uses WPSEO_Option::import()
603
  *
604
- * @param string $current_version Optional. Version from which to upgrade, if not set, version specific upgrades will be disregarded.
 
605
  *
606
  * @return void
607
  */
@@ -624,9 +626,12 @@ abstract class WPSEO_Option {
624
  * once the admin has dismissed the message (add ajax function)
625
  * Important: all validation routines which add_settings_errors would need to be changed for this to work
626
  *
627
- * @param array $option_value Option value to be imported.
628
- * @param string $current_version Optional. Version from which to upgrade, if not set, version specific upgrades will be disregarded.
629
- * @param array $all_old_option_values Optional. Only used when importing old options to have access to the real old values, in contrast to the saved ones.
 
 
 
630
  *
631
  * @return void
632
  */
@@ -673,9 +678,10 @@ abstract class WPSEO_Option {
673
  * @todo [JRF] - shouldn't this be a straight array merge ? at the end of the day, the validation
674
  * removes any invalid keys on save.
675
  *
676
- * @param array $options Optional. Current options. If not set, the option defaults for the $option_key will be returned.
 
677
  *
678
- * @return array Combined and filtered options array.
679
  */
680
  protected function array_filter_merge( $options = null ) {
681
 
@@ -755,12 +761,12 @@ abstract class WPSEO_Option {
755
  * {@internal The wpseo_titles concrete class overrules this method. Make sure that any
756
  * changes applied here, also get ported to that version.}}
757
  *
758
- * @param array $dirty Original option as retrieved from the database.
759
- * @param array $clean Filtered option where any options which shouldn't be in our option
760
- * have already been removed and any options which weren't set
761
- * have been set to their defaults.
762
  *
763
- * @return array
764
  */
765
  protected function retain_variable_keys( $dirty, $clean ) {
766
  if ( ( is_array( $this->variable_array_key_patterns ) && $this->variable_array_key_patterns !== array() ) && ( is_array( $dirty ) && $dirty !== array() ) ) {
@@ -789,10 +795,10 @@ abstract class WPSEO_Option {
789
  *
790
  * @usedby validate_option() methods for options with variable array keys.
791
  *
792
- * @param string $key Array key to check.
793
  *
794
- * @return string Pattern if it conforms, original array key if it doesn't or if the option
795
- * does not have variable array keys.
796
  */
797
  protected function get_switch_key( $key ) {
798
  if ( ! isset( $this->variable_array_key_patterns ) || ( ! is_array( $this->variable_array_key_patterns ) || $this->variable_array_key_patterns === array() ) ) {
12
  * Some guidelines:
13
  * [Retrieving options]
14
  * - Use the normal get_option() to retrieve an option. You will receive a complete array for the option.
15
+ * Any subkeys which were not set, will have their default values in place.
16
  * - In other words, you will normally not have to check whether a subkey isset() as they will *always* be set.
17
+ * They will also *always* be of the correct variable type.
18
+ * The only exception to this are the options with variable option names based on post_type or taxonomy
19
+ * as those will not always be available before the taxonomy/post_type is registered.
20
+ * (they will be available if a value was set, they won't be if it wasn't as the class won't know
21
+ * that a default needs to be injected).
22
  *
23
  * [Updating/Adding options]
24
  * - For multisite site_options, please use the WPSEO_Options::update_site_option() method.
25
  * - For normal options, use the normal add/update_option() functions. As long a the classes here
26
  * are instantiated, validation for all options and their subkeys will be automatic.
27
  * - On (succesfull) update of a couple of options, certain related actions will be run automatically.
28
+ * Some examples:
29
+ * - on change of wpseo[yoast_tracking], the cron schedule will be adjusted accordingly
30
+ * - on change of wpseo and wpseo_title, some caches will be cleared
31
  *
32
  *
33
  * [Important information about add/updating/changing these classes]
34
  * - Make sure that option array key names are unique across options. The WPSEO_Options::get_all()
35
+ * method merges most options together. If any of them have non-unique names, even if they
36
+ * are in a different option, they *will* overwrite each other.
37
  * - When you add a new array key in an option: make sure you add proper defaults and add the key
38
+ * to the validation routine in the proper place or add a new validation case.
39
+ * You don't need to do any upgrading as any option returned will always be merged with the
40
+ * defaults, so new options will automatically be available.
41
+ * If the default value is a string which need translating, add this to the concrete class
42
+ * translate_defaults() method.
43
  * - When you remove an array key from an option: if it's important that the option is really removed,
44
+ * add the WPSEO_Option::clean_up( $option_name ) method to the upgrade run.
45
+ * This will re-save the option and automatically remove the array key no longer in existance.
46
  * - When you rename a sub-option: add it to the clean_option() routine and run that in the upgrade run.
47
  * - When you change the default for an option sub-key, make sure you verify that the validation routine will
48
+ * still work the way it should.
49
+ * Example: changing a default from '' (empty string) to 'text' with a validation routine with tests
50
+ * for an empty string will prevent a user from saving an empty string as the real value. So the
51
+ * test for '' with the validation routine would have to be removed in that case.
52
  * - If an option needs specific actions different from defined in this abstract class, you can just overrule
53
+ * a method by defining it in the concrete class.
54
  *
55
+ * @todo [JRF => testers] Double check that validation will not cause errors when called
56
+ * from upgrade routine (some of the WP functions may not yet be available).
57
  */
58
  abstract class WPSEO_Option {
59
 
204
  * Enrich defaults once custom post types and taxonomies have been registered
205
  * which is normally done on the init action.
206
  *
207
+ * @todo [JRF/testers] Verify that none of the options which are only available after
208
  * enrichment are used before the enriching.
209
  */
210
  if ( method_exists( $this, 'enrich_defaults' ) ) {
238
  /**
239
  * Add filters to make sure that the option default is returned if the option is not set.
240
  *
241
+ * @return void
242
  */
243
  public function add_default_filters() {
244
  // Don't change, needs to check for false as could return prio 0 which would evaluate to false.
307
  if ( function_exists( 'add_settings_error' ) ) {
308
  add_settings_error(
309
  $this->group_name, // Slug title of the setting.
310
+ '_' . $key, // Suffix-ID for the error message box.
311
  /* translators: 1: Verification string from user input; 2: Service name. */
312
  sprintf( __( '%1$s does not seem to be a valid %2$s verification string. Please correct.', 'wordpress-seo' ), '<strong>' . esc_html( $meta ) . '</strong>', $service ), // The error message.
313
  'error' // Error type, either 'error' or 'updated'.
341
  $url = WPSEO_Utils::sanitize_url( $dirty[ $key ] );
342
  add_settings_error(
343
  $this->group_name, // Slug title of the setting.
344
+ '_' . $key, // Suffix-ID for the error message box.
345
  sprintf(
346
  /* translators: %s expands to an invalid URL. */
347
  __( '%s does not seem to be a valid url. Please correct.', 'wordpress-seo' ),
358
  * Remove the default filters.
359
  * Called from the validate() method to prevent failure to add new options.
360
  *
361
+ * @return void
362
  */
363
  public function remove_default_filters() {
364
  remove_filter( 'default_option_' . $this->option_name, array( $this, 'get_defaults' ) );
372
  * {@internal The enrich_defaults method is used to set defaults for variable array keys
373
  * in an option, such as array keys depending on post_types and/or taxonomies.}}
374
  *
375
+ * @return array
376
  */
377
  public function get_defaults() {
378
  if ( method_exists( $this, 'translate_defaults' ) ) {
389
  /**
390
  * Add filters to make sure that the option is merged with its defaults before being returned.
391
  *
392
+ * @return void
393
  */
394
  public function add_option_filters() {
395
  // Don't change, needs to check for false as could return prio 0 which would evaluate to false.
402
  * Remove the option filters.
403
  * Called from the clean_up methods to make sure we retrieve the original old option.
404
  *
405
+ * @return void
406
  */
407
  public function remove_option_filters() {
408
  remove_filter( 'option_' . $this->option_name, array( $this, 'get_option' ) );
413
  *
414
  * This method should *not* be called directly!!! It is only meant to filter the get_option() results.
415
  *
416
+ * @param mixed $options Option value.
417
  *
418
+ * @return mixed Option merged with the defaults for that option.
419
  */
420
  public function get_option( $options = null ) {
421
  $filtered = $this->array_filter_merge( $options );
461
  /**
462
  * Validate the option
463
  *
464
+ * @param mixed $option_value The unvalidated new value for the option.
465
  *
466
+ * @return array Validated new value for the option.
467
  */
468
  public function validate( $option_value ) {
469
  $clean = $this->get_defaults();
503
  * with 'allow_'.
504
  *
505
  * @param string $key Option key.
506
+ *
507
  * @return bool True if option key is disabled, false otherwise.
508
  */
509
  public function is_disabled( $key ) {
519
  * All concrete classes must contain a validate_option() method which validates all
520
  * values within the option.
521
  *
522
+ * @param array $dirty New value for the option.
523
+ * @param array $clean Clean value for the option, normally the defaults.
524
+ * @param array $old Old value of the option.
525
  */
526
  abstract protected function validate_option( $dirty, $clean, $old );
527
 
602
  * @uses WPSEO_Option::get_original_option()
603
  * @uses WPSEO_Option::import()
604
  *
605
+ * @param string $current_version Optional. Version from which to upgrade, if not set,
606
+ * version specific upgrades will be disregarded.
607
  *
608
  * @return void
609
  */
626
  * once the admin has dismissed the message (add ajax function)
627
  * Important: all validation routines which add_settings_errors would need to be changed for this to work
628
  *
629
+ * @param array $option_value Option value to be imported.
630
+ * @param string $current_version Optional. Version from which to upgrade, if not set,
631
+ * version specific upgrades will be disregarded.
632
+ * @param array $all_old_option_values Optional. Only used when importing old options to
633
+ * have access to the real old values, in contrast to
634
+ * the saved ones.
635
  *
636
  * @return void
637
  */
678
  * @todo [JRF] - shouldn't this be a straight array merge ? at the end of the day, the validation
679
  * removes any invalid keys on save.
680
  *
681
+ * @param array $options Optional. Current options. If not set, the option defaults
682
+ * for the $option_key will be returned.
683
  *
684
+ * @return array Combined and filtered options array.
685
  */
686
  protected function array_filter_merge( $options = null ) {
687
 
761
  * {@internal The wpseo_titles concrete class overrules this method. Make sure that any
762
  * changes applied here, also get ported to that version.}}
763
  *
764
+ * @param array $dirty Original option as retrieved from the database.
765
+ * @param array $clean Filtered option where any options which shouldn't be in our option
766
+ * have already been removed and any options which weren't set
767
+ * have been set to their defaults.
768
  *
769
+ * @return array
770
  */
771
  protected function retain_variable_keys( $dirty, $clean ) {
772
  if ( ( is_array( $this->variable_array_key_patterns ) && $this->variable_array_key_patterns !== array() ) && ( is_array( $dirty ) && $dirty !== array() ) ) {
795
  *
796
  * @usedby validate_option() methods for options with variable array keys.
797
  *
798
+ * @param string $key Array key to check.
799
  *
800
+ * @return string Pattern if it conforms, original array key if it doesn't or if the option
801
+ * does not have variable array keys.
802
  */
803
  protected function get_switch_key( $key ) {
804
  if ( ! isset( $this->variable_array_key_patterns ) || ( ! is_array( $this->variable_array_key_patterns ) || $this->variable_array_key_patterns === array() ) ) {
inc/options/class-wpseo-options.php CHANGED
@@ -84,9 +84,9 @@ class WPSEO_Options {
84
  /**
85
  * Get the group name of an option for use in the settings form.
86
  *
87
- * @param string $option_name The option for which you want to retrieve the option group name.
88
  *
89
- * @return string|bool
90
  */
91
  public static function get_group_name( $option_name ) {
92
  if ( isset( self::$option_instances[ $option_name ] ) ) {
@@ -99,10 +99,10 @@ class WPSEO_Options {
99
  /**
100
  * Get a specific default value for an option.
101
  *
102
- * @param string $option_name The option for which you want to retrieve a default.
103
- * @param string $key The key within the option who's default you want.
104
  *
105
- * @return mixed
106
  */
107
  public static function get_default( $option_name, $key ) {
108
  if ( isset( self::$option_instances[ $option_name ] ) ) {
@@ -118,8 +118,8 @@ class WPSEO_Options {
118
  /**
119
  * Update a site_option.
120
  *
121
- * @param string $option_name The option name of the option to save.
122
- * @param mixed $value The new value for the option.
123
  *
124
  * @return bool
125
  */
@@ -134,9 +134,9 @@ class WPSEO_Options {
134
  /**
135
  * Get the instantiated option instance.
136
  *
137
- * @param string $option_name The option for which you want to retrieve the instance.
138
  *
139
- * @return object|bool
140
  */
141
  public static function get_option_instance( $option_name ) {
142
  if ( isset( self::$option_instances[ $option_name ] ) ) {
@@ -149,7 +149,7 @@ class WPSEO_Options {
149
  /**
150
  * Retrieve an array of the options which should be included in get_all() and reset().
151
  *
152
- * @return array Array of option names
153
  */
154
  public static function get_option_names() {
155
  static $option_names = array();
@@ -169,10 +169,10 @@ class WPSEO_Options {
169
  /**
170
  * Retrieve all the options for the SEO plugin in one go.
171
  *
172
- * @todo [JRF] see if we can get some extra efficiency for this one, though probably not as options may
173
- * well change between calls (enriched defaults and such)
174
  *
175
- * @return array Array combining the values of all the options
176
  */
177
  public static function get_all() {
178
  return self::get_options( self::get_option_names() );
@@ -183,7 +183,7 @@ class WPSEO_Options {
183
  *
184
  * @param array $option_names An array of option names of the options you want to get.
185
  *
186
- * @return array Array combining the values of the requested options
187
  */
188
  public static function get_options( array $option_names ) {
189
  $options = array();
@@ -289,13 +289,13 @@ class WPSEO_Options {
289
  /**
290
  * Run the clean up routine for one or all options.
291
  *
292
- * @param array|string $option_name Optional. the option you want to clean or an array of
293
- * option names for the options you want to clean.
294
- * If not set, all options will be cleaned.
295
- * @param string $current_version Optional. Version from which to upgrade, if not set,
296
- * version specific upgrades will be disregarded.
297
  *
298
- * @return void
299
  */
300
  public static function clean_up( $option_name = null, $current_version = null ) {
301
  if ( isset( $option_name ) && is_string( $option_name ) && $option_name !== '' ) {
@@ -325,7 +325,7 @@ class WPSEO_Options {
325
  /**
326
  * Check that all options exist in the database and add any which don't.
327
  *
328
- * @return void
329
  */
330
  public static function ensure_options_exist() {
331
  foreach ( self::$option_instances as $instance ) {
@@ -372,7 +372,7 @@ class WPSEO_Options {
372
  /**
373
  * Initialize default values for a new multisite blog.
374
  *
375
- * @param bool $force_init Whether to always do the initialization routine (title/desc test).
376
  *
377
  * @return void
378
  */
@@ -394,9 +394,9 @@ class WPSEO_Options {
394
  * Reset all options for a specific multisite blog to their default values based upon a
395
  * specified default blog if one was chosen on the network page or the plugin defaults if it was not.
396
  *
397
- * @param int|string $blog_id Blog id of the blog for which to reset the options.
398
  *
399
- * @return void
400
  */
401
  public static function reset_ms_blog( $blog_id ) {
402
  if ( is_multisite() ) {
@@ -436,7 +436,7 @@ class WPSEO_Options {
436
  *
437
  * @param string $wpseo_options_group_name The name for the wpseo option group in the database.
438
  * @param string $option_name The name for the option to set.
439
- * @param * $option_value The value for the option.
440
  *
441
  * @return boolean Returns true if the option is successfully saved in the database.
442
  */
84
  /**
85
  * Get the group name of an option for use in the settings form.
86
  *
87
+ * @param string $option_name The option for which you want to retrieve the option group name.
88
  *
89
+ * @return string|bool
90
  */
91
  public static function get_group_name( $option_name ) {
92
  if ( isset( self::$option_instances[ $option_name ] ) ) {
99
  /**
100
  * Get a specific default value for an option.
101
  *
102
+ * @param string $option_name The option for which you want to retrieve a default.
103
+ * @param string $key The key within the option who's default you want.
104
  *
105
+ * @return mixed
106
  */
107
  public static function get_default( $option_name, $key ) {
108
  if ( isset( self::$option_instances[ $option_name ] ) ) {
118
  /**
119
  * Update a site_option.
120
  *
121
+ * @param string $option_name The option name of the option to save.
122
+ * @param mixed $value The new value for the option.
123
  *
124
  * @return bool
125
  */
134
  /**
135
  * Get the instantiated option instance.
136
  *
137
+ * @param string $option_name The option for which you want to retrieve the instance.
138
  *
139
+ * @return object|bool
140
  */
141
  public static function get_option_instance( $option_name ) {
142
  if ( isset( self::$option_instances[ $option_name ] ) ) {
149
  /**
150
  * Retrieve an array of the options which should be included in get_all() and reset().
151
  *
152
+ * @return array Array of option names.
153
  */
154
  public static function get_option_names() {
155
  static $option_names = array();
169
  /**
170
  * Retrieve all the options for the SEO plugin in one go.
171
  *
172
+ * @todo [JRF] See if we can get some extra efficiency for this one, though probably not as options may
173
+ * well change between calls (enriched defaults and such).
174
  *
175
+ * @return array Array combining the values of all the options.
176
  */
177
  public static function get_all() {
178
  return self::get_options( self::get_option_names() );
183
  *
184
  * @param array $option_names An array of option names of the options you want to get.
185
  *
186
+ * @return array Array combining the values of the requested options.
187
  */
188
  public static function get_options( array $option_names ) {
189
  $options = array();
289
  /**
290
  * Run the clean up routine for one or all options.
291
  *
292
+ * @param array|string $option_name Optional. the option you want to clean or an array of
293
+ * option names for the options you want to clean.
294
+ * If not set, all options will be cleaned.
295
+ * @param string $current_version Optional. Version from which to upgrade, if not set,
296
+ * version specific upgrades will be disregarded.
297
  *
298
+ * @return void
299
  */
300
  public static function clean_up( $option_name = null, $current_version = null ) {
301
  if ( isset( $option_name ) && is_string( $option_name ) && $option_name !== '' ) {
325
  /**
326
  * Check that all options exist in the database and add any which don't.
327
  *
328
+ * @return void
329
  */
330
  public static function ensure_options_exist() {
331
  foreach ( self::$option_instances as $instance ) {
372
  /**
373
  * Initialize default values for a new multisite blog.
374
  *
375
+ * @param bool $force_init Whether to always do the initialization routine (title/desc test).
376
  *
377
  * @return void
378
  */
394
  * Reset all options for a specific multisite blog to their default values based upon a
395
  * specified default blog if one was chosen on the network page or the plugin defaults if it was not.
396
  *
397
+ * @param int|string $blog_id Blog id of the blog for which to reset the options.
398
  *
399
+ * @return void
400
  */
401
  public static function reset_ms_blog( $blog_id ) {
402
  if ( is_multisite() ) {
436
  *
437
  * @param string $wpseo_options_group_name The name for the wpseo option group in the database.
438
  * @param string $option_name The name for the option to set.
439
+ * @param mixed $option_value The value for the option.
440
  *
441
  * @return boolean Returns true if the option is successfully saved in the database.
442
  */
inc/options/class-wpseo-taxonomy-meta.php CHANGED
@@ -11,33 +11,44 @@
11
  class WPSEO_Taxonomy_Meta extends WPSEO_Option {
12
 
13
  /**
14
- * @var string Option name.
 
 
15
  */
16
  public $option_name = 'wpseo_taxonomy_meta';
17
 
18
  /**
19
- * @var bool Whether to include the option in the return for WPSEO_Options::get_all().
 
 
20
  */
21
  public $include_in_all = false;
22
 
23
  /**
24
- * @var array Array of defaults for the option.
25
- * Shouldn't be requested directly, use $this->get_defaults();
 
26
  *
27
  * {@internal Important: in contrast to most defaults, the below array format is
28
  * very bare. The real option is in the format [taxonomy_name][term_id][...]
29
  * where [...] is any of the $defaults_per_term options shown below.
30
  * This is of course taken into account in the below methods.}}
 
 
31
  */
32
  protected $defaults = array();
33
 
34
  /**
35
- * @var string Option name - same as $option_name property, but now also available to static methods.
 
 
36
  */
37
  public static $name;
38
 
39
  /**
40
- * @var array Array of defaults for individual taxonomy meta entries.
 
 
41
  */
42
  public static $defaults_per_term = array(
43
  'wpseo_title' => '',
@@ -63,10 +74,13 @@ class WPSEO_Taxonomy_Meta extends WPSEO_Option {
63
  );
64
 
65
  /**
66
- * @var array Available index options.
67
- * Used for form generation and input validation.
 
68
  *
69
  * {@internal Labels (translation) added on admin_init via WPSEO_Taxonomy::translate_meta_options().}}
 
 
70
  */
71
  public static $no_index_options = array(
72
  'default' => '',
@@ -121,10 +135,11 @@ class WPSEO_Taxonomy_Meta extends WPSEO_Option {
121
  * Helper method - Combines a fixed array of default values with an options array
122
  * while filtering out any keys which are not in the defaults array.
123
  *
124
- * @param string $option_key Option name of the option we're doing the merge for.
125
- * @param array $options Optional. Current options. If not set, the option defaults for the $option_key will be returned.
 
126
  *
127
- * @return array Combined and filtered options array.
128
  */
129
 
130
  /*
@@ -173,11 +188,11 @@ class WPSEO_Taxonomy_Meta extends WPSEO_Option {
173
  /**
174
  * Validate the option.
175
  *
176
- * @param array $dirty New value for the option.
177
- * @param array $clean Clean value for the option, normally the defaults.
178
- * @param array $old Old value of the option.
179
  *
180
- * @return array Validated clean value for the option to be saved to the database.
181
  */
182
  protected function validate_option( $dirty, $clean, $old ) {
183
  /*
@@ -226,10 +241,10 @@ class WPSEO_Taxonomy_Meta extends WPSEO_Option {
226
  /**
227
  * Validate the meta data for one individual term and removes default values (no need to save those).
228
  *
229
- * @param array $meta_data New values.
230
- * @param array $old_meta The original values.
231
  *
232
- * @return array Validated and filtered value.
233
  */
234
  public static function validate_term_meta_data( $meta_data, $old_meta ) {
235
 
@@ -346,14 +361,14 @@ class WPSEO_Taxonomy_Meta extends WPSEO_Option {
346
  * - Convert old option values to new
347
  * - Fixes strings which were escaped (should have been sanitized - escaping is for output)
348
  *
349
- * @param array $option_value Old (not merged with defaults or filtered) option value to
350
- * clean according to the rules for this option.
351
- * @param string $current_version Optional. Version from which to upgrade, if not set,
352
- * version specific upgrades will be disregarded.
353
- * @param array $all_old_option_values Optional. Only used when importing old options to have
354
- * access to the real old values, in contrast to the saved ones.
355
  *
356
- * @return array Cleaned option.
357
  */
358
  protected function clean_option( $option_value, $current_version = null, $all_old_option_values = null ) {
359
 
@@ -385,7 +400,7 @@ class WPSEO_Taxonomy_Meta extends WPSEO_Option {
385
  case 'wpseo_title':
386
  case 'wpseo_desc':
387
  case 'wpseo_linkdex':
388
- // @todo [JRF => whomever] needs checking, I don't have example data [JRF].
389
  if ( $value !== '' ) {
390
  // Fix incorrectly saved (encoded) canonical urls and texts.
391
  $option_value[ $taxonomy ][ $term_id ][ $key ] = wp_specialchars_decode( stripslashes( $value ), ENT_QUOTES );
@@ -393,7 +408,7 @@ class WPSEO_Taxonomy_Meta extends WPSEO_Option {
393
  break;
394
 
395
  default:
396
- // @todo [JRF => whomever] needs checking, I don't have example data [JRF].
397
  if ( $value !== '' ) {
398
  // Fix incorrectly saved (escaped) text strings.
399
  $option_value[ $taxonomy ][ $term_id ][ $key ] = wp_specialchars_decode( $value, ENT_QUOTES );
@@ -417,14 +432,14 @@ class WPSEO_Taxonomy_Meta extends WPSEO_Option {
417
  /**
418
  * Retrieve a taxonomy term's meta value(s).
419
  *
420
- * @param mixed $term Term to get the meta value for
421
- * either (string) term name, (int) term id or (object) term.
422
- * @param string $taxonomy Name of the taxonomy to which the term is attached.
423
- * @param string $meta Optional. Meta value to get (without prefix).
424
  *
425
- * @return mixed|bool Value for the $meta if one is given, might be the default.
426
- * If no meta is given, an array of all the meta data for the term.
427
- * False if the term does not exist or the $meta provided is invalid.
428
  */
429
  public static function get_term_meta( $term, $taxonomy, $meta = null ) {
430
  /* Figure out the term id. */
11
  class WPSEO_Taxonomy_Meta extends WPSEO_Option {
12
 
13
  /**
14
+ * Option name.
15
+ *
16
+ * @var string
17
  */
18
  public $option_name = 'wpseo_taxonomy_meta';
19
 
20
  /**
21
+ * Whether to include the option in the return for WPSEO_Options::get_all().
22
+ *
23
+ * @var bool
24
  */
25
  public $include_in_all = false;
26
 
27
  /**
28
+ * Array of defaults for the option.
29
+ *
30
+ * Shouldn't be requested directly, use $this->get_defaults();
31
  *
32
  * {@internal Important: in contrast to most defaults, the below array format is
33
  * very bare. The real option is in the format [taxonomy_name][term_id][...]
34
  * where [...] is any of the $defaults_per_term options shown below.
35
  * This is of course taken into account in the below methods.}}
36
+ *
37
+ * @var array
38
  */
39
  protected $defaults = array();
40
 
41
  /**
42
+ * Option name - same as $option_name property, but now also available to static methods.
43
+ *
44
+ * @var string
45
  */
46
  public static $name;
47
 
48
  /**
49
+ * Array of defaults for individual taxonomy meta entries.
50
+ *
51
+ * @var array
52
  */
53
  public static $defaults_per_term = array(
54
  'wpseo_title' => '',
74
  );
75
 
76
  /**
77
+ * Available index options.
78
+ *
79
+ * Used for form generation and input validation.
80
  *
81
  * {@internal Labels (translation) added on admin_init via WPSEO_Taxonomy::translate_meta_options().}}
82
+ *
83
+ * @var array
84
  */
85
  public static $no_index_options = array(
86
  'default' => '',
135
  * Helper method - Combines a fixed array of default values with an options array
136
  * while filtering out any keys which are not in the defaults array.
137
  *
138
+ * @param string $option_key Option name of the option we're doing the merge for.
139
+ * @param array $options Optional. Current options. If not set, the option defaults
140
+ * for the $option_key will be returned.
141
  *
142
+ * @return array Combined and filtered options array.
143
  */
144
 
145
  /*
188
  /**
189
  * Validate the option.
190
  *
191
+ * @param array $dirty New value for the option.
192
+ * @param array $clean Clean value for the option, normally the defaults.
193
+ * @param array $old Old value of the option.
194
  *
195
+ * @return array Validated clean value for the option to be saved to the database.
196
  */
197
  protected function validate_option( $dirty, $clean, $old ) {
198
  /*
241
  /**
242
  * Validate the meta data for one individual term and removes default values (no need to save those).
243
  *
244
+ * @param array $meta_data New values.
245
+ * @param array $old_meta The original values.
246
  *
247
+ * @return array Validated and filtered value.
248
  */
249
  public static function validate_term_meta_data( $meta_data, $old_meta ) {
250
 
361
  * - Convert old option values to new
362
  * - Fixes strings which were escaped (should have been sanitized - escaping is for output)
363
  *
364
+ * @param array $option_value Old (not merged with defaults or filtered) option value to
365
+ * clean according to the rules for this option.
366
+ * @param string $current_version Optional. Version from which to upgrade, if not set,
367
+ * version specific upgrades will be disregarded.
368
+ * @param array $all_old_option_values Optional. Only used when importing old options to have
369
+ * access to the real old values, in contrast to the saved ones.
370
  *
371
+ * @return array Cleaned option.
372
  */
373
  protected function clean_option( $option_value, $current_version = null, $all_old_option_values = null ) {
374
 
400
  case 'wpseo_title':
401
  case 'wpseo_desc':
402
  case 'wpseo_linkdex':
403
+ // @todo [JRF => whomever] Needs checking, I don't have example data [JRF].
404
  if ( $value !== '' ) {
405
  // Fix incorrectly saved (encoded) canonical urls and texts.
406
  $option_value[ $taxonomy ][ $term_id ][ $key ] = wp_specialchars_decode( stripslashes( $value ), ENT_QUOTES );
408
  break;
409
 
410
  default:
411
+ // @todo [JRF => whomever] Needs checking, I don't have example data [JRF].
412
  if ( $value !== '' ) {
413
  // Fix incorrectly saved (escaped) text strings.
414
  $option_value[ $taxonomy ][ $term_id ][ $key ] = wp_specialchars_decode( $value, ENT_QUOTES );
432
  /**
433
  * Retrieve a taxonomy term's meta value(s).
434
  *
435
+ * @param mixed $term Term to get the meta value for
436
+ * either (string) term name, (int) term id or (object) term.
437
+ * @param string $taxonomy Name of the taxonomy to which the term is attached.
438
+ * @param string $meta Optional. Meta value to get (without prefix).
439
  *
440
+ * @return mixed|bool Value for the $meta if one is given, might be the default.
441
+ * If no meta is given, an array of all the meta data for the term.
442
+ * False if the term does not exist or the $meta provided is invalid.
443
  */
444
  public static function get_term_meta( $term, $taxonomy, $meta = null ) {
445
  /* Figure out the term id. */
inc/sitemaps/class-author-sitemap-provider.php CHANGED
@@ -91,7 +91,7 @@ class WPSEO_Author_Sitemap_Provider implements WPSEO_Sitemap_Provider {
91
 
92
  $defaults = array(
93
  // @todo Re-enable after plugin requirements raised to WP 4.6 with the fix.
94
- // 'who' => 'authors', Breaks meta keys, see https://core.trac.wordpress.org/ticket/36724#ticket R.
95
  'meta_key' => '_yoast_wpseo_profile_updated',
96
  'orderby' => 'meta_value_num',
97
  'order' => 'DESC',
91
 
92
  $defaults = array(
93
  // @todo Re-enable after plugin requirements raised to WP 4.6 with the fix.
94
+ // 'who' => 'authors', Breaks meta keys, {@link https://core.trac.wordpress.org/ticket/36724#ticket} R.
95
  'meta_key' => '_yoast_wpseo_profile_updated',
96
  'orderby' => 'meta_value_num',
97
  'order' => 'DESC',
inc/sitemaps/class-post-type-sitemap-provider.php CHANGED
@@ -53,7 +53,7 @@ class WPSEO_Post_Type_Sitemap_Provider implements WPSEO_Sitemap_Provider {
53
  }
54
 
55
  /**
56
- * Get front page ID
57
  *
58
  * @return int
59
  */
@@ -66,7 +66,7 @@ class WPSEO_Post_Type_Sitemap_Provider implements WPSEO_Sitemap_Provider {
66
  }
67
 
68
  /**
69
- * Get page for posts ID
70
  *
71
  * @return int
72
  */
@@ -79,7 +79,7 @@ class WPSEO_Post_Type_Sitemap_Provider implements WPSEO_Sitemap_Provider {
79
  }
80
 
81
  /**
82
- * Get the Image Parser
83
  *
84
  * @return WPSEO_Sitemap_Image_Parser
85
  */
@@ -92,7 +92,7 @@ class WPSEO_Post_Type_Sitemap_Provider implements WPSEO_Sitemap_Provider {
92
  }
93
 
94
  /**
95
- * Get the Classifier for a link
96
  *
97
  * @return WPSEO_Link_Type_Classifier
98
  */
@@ -105,7 +105,7 @@ class WPSEO_Post_Type_Sitemap_Provider implements WPSEO_Sitemap_Provider {
105
  }
106
 
107
  /**
108
- * Get Home URL
109
  *
110
  * This has been moved from the constructor because wp_rewrite is not available on plugins_loaded in multisite.
111
  * It will now be requested on need and not on initialization.
@@ -524,7 +524,7 @@ class WPSEO_Post_Type_Sitemap_Provider implements WPSEO_Sitemap_Provider {
524
  'join' => apply_filters( 'wpseo_posts_join', false, $post_type ),
525
 
526
  /**
527
- * Filter Where query part for the post type.
528
  *
529
  * @param string $where SQL part, defaults to false.
530
  * @param string $post_type Post type name.
@@ -627,7 +627,7 @@ class WPSEO_Post_Type_Sitemap_Provider implements WPSEO_Sitemap_Provider {
627
  /*
628
  * Do not include external URLs.
629
  *
630
- * @see https://wordpress.org/plugins/page-links-to/ can rewrite permalinks to external URLs.
631
  */
632
  if ( $this->get_classifier()->classify( $url['loc'] ) === WPSEO_Link::TYPE_EXTERNAL ) {
633
  return false;
@@ -662,7 +662,7 @@ class WPSEO_Post_Type_Sitemap_Provider implements WPSEO_Sitemap_Provider {
662
  /* ********************* DEPRECATED METHODS ********************* */
663
 
664
  /**
665
- * Get all the options
666
  *
667
  * @deprecated 7.0
668
  * @codeCoverageIgnore
53
  }
54
 
55
  /**
56
+ * Get front page ID.
57
  *
58
  * @return int
59
  */
66
  }
67
 
68
  /**
69
+ * Get page for posts ID.
70
  *
71
  * @return int
72
  */
79
  }
80
 
81
  /**
82
+ * Get the Image Parser.
83
  *
84
  * @return WPSEO_Sitemap_Image_Parser
85
  */
92
  }
93
 
94
  /**
95
+ * Get the Classifier for a link.
96
  *
97
  * @return WPSEO_Link_Type_Classifier
98
  */
105
  }
106
 
107
  /**
108
+ * Get Home URL.
109
  *
110
  * This has been moved from the constructor because wp_rewrite is not available on plugins_loaded in multisite.
111
  * It will now be requested on need and not on initialization.
524
  'join' => apply_filters( 'wpseo_posts_join', false, $post_type ),
525
 
526
  /**
527
+ * Filter WHERE query part for the post type.
528
  *
529
  * @param string $where SQL part, defaults to false.
530
  * @param string $post_type Post type name.
627
  /*
628
  * Do not include external URLs.
629
  *
630
+ * {@link https://wordpress.org/plugins/page-links-to/} can rewrite permalinks to external URLs.
631
  */
632
  if ( $this->get_classifier()->classify( $url['loc'] ) === WPSEO_Link::TYPE_EXTERNAL ) {
633
  return false;
662
  /* ********************* DEPRECATED METHODS ********************* */
663
 
664
  /**
665
+ * Get all the options.
666
  *
667
  * @deprecated 7.0
668
  * @codeCoverageIgnore
inc/sitemaps/class-sitemap-cache-data.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Sitemap Cache Data object, manages sitemap data stored in cache
10
  */
11
  class WPSEO_Sitemap_Cache_Data implements WPSEO_Sitemap_Cache_Data_Interface, Serializable {
12
 
@@ -96,7 +96,7 @@ class WPSEO_Sitemap_Cache_Data implements WPSEO_Sitemap_Cache_Data_Interface, Se
96
  /**
97
  * Get the status of the sitemap.
98
  *
99
- * @return string Status of the sitemap, 'ok'/'error'/'unknown'
100
  */
101
  public function get_status() {
102
 
@@ -104,11 +104,13 @@ class WPSEO_Sitemap_Cache_Data implements WPSEO_Sitemap_Cache_Data_Interface, Se
104
  }
105
 
106
  /**
107
- * String representation of object
 
 
108
  *
109
- * @link http://php.net/manual/en/serializable.serialize.php
110
- * @return string the string representation of the object or null
111
  * @since 5.1.0
 
 
112
  */
113
  public function serialize() {
114
 
@@ -121,14 +123,15 @@ class WPSEO_Sitemap_Cache_Data implements WPSEO_Sitemap_Cache_Data_Interface, Se
121
  }
122
 
123
  /**
124
- * Constructs the object
125
  *
126
- * @link http://php.net/manual/en/serializable.unserialize.php
 
 
127
  *
128
  * @param string $serialized The string representation of the object.
129
  *
130
  * @return void
131
- * @since 5.1.0
132
  */
133
  public function unserialize( $serialized ) {
134
 
6
  */
7
 
8
  /**
9
+ * Sitemap Cache Data object, manages sitemap data stored in cache.
10
  */
11
  class WPSEO_Sitemap_Cache_Data implements WPSEO_Sitemap_Cache_Data_Interface, Serializable {
12
 
96
  /**
97
  * Get the status of the sitemap.
98
  *
99
+ * @return string Status of the sitemap, 'ok'/'error'/'unknown'.
100
  */
101
  public function get_status() {
102
 
104
  }
105
 
106
  /**
107
+ * String representation of object.
108
+ *
109
+ * @link http://php.net/manual/en/serializable.serialize.php
110
  *
 
 
111
  * @since 5.1.0
112
+ *
113
+ * @return string The string representation of the object or null.
114
  */
115
  public function serialize() {
116
 
123
  }
124
 
125
  /**
126
+ * Constructs the object.
127
  *
128
+ * @link http://php.net/manual/en/serializable.unserialize.php
129
+ *
130
+ * @since 5.1.0
131
  *
132
  * @param string $serialized The string representation of the object.
133
  *
134
  * @return void
 
135
  */
136
  public function unserialize( $serialized ) {
137
 
inc/sitemaps/class-sitemap-image-parser.php CHANGED
@@ -230,7 +230,7 @@ class WPSEO_Sitemap_Image_Parser {
230
  * Parse gallery shortcodes in a given content.
231
  *
232
  * @param string $content Content string.
233
- * @param int $post_id Optional ID of post being parsed.
234
  *
235
  * @return array Set of attachment objects.
236
  */
@@ -413,7 +413,7 @@ class WPSEO_Sitemap_Image_Parser {
413
  }
414
 
415
  if ( strpos( $src, 'http' ) !== 0 ) {
416
- // Protocol relative url, we add the scheme as the standard requires a protocol.
417
  return $this->scheme . ':' . $src;
418
  }
419
 
@@ -423,7 +423,7 @@ class WPSEO_Sitemap_Image_Parser {
423
  /**
424
  * Returns the attachments for a gallery.
425
  *
426
- * @param int $id The post id.
427
  * @param array $gallery The gallery config.
428
  *
429
  * @return array The selected attachments.
@@ -444,9 +444,9 @@ class WPSEO_Sitemap_Image_Parser {
444
  }
445
 
446
  /**
447
- * Returns the attachments for the given id.
448
  *
449
- * @param int $id The post id.
450
  * @param array $gallery The gallery config.
451
  *
452
  * @return array The selected attachments.
@@ -466,9 +466,9 @@ class WPSEO_Sitemap_Image_Parser {
466
  }
467
 
468
  /**
469
- * Returns an array with attachments for the post ids that will be included.
470
  *
471
- * @param array $include Array with ids to include.
472
  *
473
  * @return array The found attachments.
474
  */
230
  * Parse gallery shortcodes in a given content.
231
  *
232
  * @param string $content Content string.
233
+ * @param int $post_id Optional. ID of post being parsed.
234
  *
235
  * @return array Set of attachment objects.
236
  */
413
  }
414
 
415
  if ( strpos( $src, 'http' ) !== 0 ) {
416
+ // Protocol relative URL, we add the scheme as the standard requires a protocol.
417
  return $this->scheme . ':' . $src;
418
  }
419
 
423
  /**
424
  * Returns the attachments for a gallery.
425
  *
426
+ * @param int $id The post ID.
427
  * @param array $gallery The gallery config.
428
  *
429
  * @return array The selected attachments.
444
  }
445
 
446
  /**
447
+ * Returns the attachments for the given ID.
448
  *
449
+ * @param int $id The post ID.
450
  * @param array $gallery The gallery config.
451
  *
452
  * @return array The selected attachments.
466
  }
467
 
468
  /**
469
+ * Returns an array with attachments for the post IDs that will be included.
470
  *
471
+ * @param array $include Array with IDs to include.
472
  *
473
  * @return array The found attachments.
474
  */
inc/sitemaps/class-sitemap-timezone.php CHANGED
@@ -6,12 +6,12 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Sitemap_Timezone
10
  */
11
  class WPSEO_Sitemap_Timezone {
12
 
13
  /**
14
- * Holds the timezone string value to reuse for performance
15
  *
16
  * @var string $timezone_string
17
  */
@@ -39,9 +39,10 @@ class WPSEO_Sitemap_Timezone {
39
  /**
40
  * Get the datetime object, in site's time zone, if the datetime string was valid
41
  *
42
- * @param string $datetime_string The datetime string in UTC time zone, that needs to be converted to a DateTime object.
 
43
  *
44
- * @return DateTime|null in site's time zone
45
  */
46
  public function get_datetime_with_timezone( $datetime_string ) {
47
 
@@ -63,11 +64,11 @@ class WPSEO_Sitemap_Timezone {
63
  }
64
 
65
  /**
66
- * Returns the timezone string for a site, even if it's set to a UTC offset
67
  *
68
- * Adapted from http://www.php.net/manual/en/function.timezone-name-from-abbr.php#89155
69
  *
70
- * @return string valid PHP timezone string
71
  */
72
  private function determine_timezone_string() {
73
 
@@ -108,7 +109,7 @@ class WPSEO_Sitemap_Timezone {
108
  }
109
 
110
  /**
111
- * Returns the correct timezone string
112
  *
113
  * @return string
114
  */
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Sitemap_Timezone.
10
  */
11
  class WPSEO_Sitemap_Timezone {
12
 
13
  /**
14
+ * Holds the timezone string value to reuse for performance.
15
  *
16
  * @var string $timezone_string
17
  */
39
  /**
40
  * Get the datetime object, in site's time zone, if the datetime string was valid
41
  *
42
+ * @param string $datetime_string The datetime string in UTC time zone, that needs
43
+ * to be converted to a DateTime object.
44
  *
45
+ * @return DateTime|null DateTime object in site's time zone.
46
  */
47
  public function get_datetime_with_timezone( $datetime_string ) {
48
 
64
  }
65
 
66
  /**
67
+ * Returns the timezone string for a site, even if it's set to a UTC offset.
68
  *
69
+ * Adapted from {@link http://www.php.net/manual/en/function.timezone-name-from-abbr.php#89155}.
70
  *
71
+ * @return string Valid PHP timezone string.
72
  */
73
  private function determine_timezone_string() {
74
 
109
  }
110
 
111
  /**
112
+ * Returns the correct timezone string.
113
  *
114
  * @return string
115
  */
inc/sitemaps/class-sitemaps-admin.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class that handles the Admin side of XML sitemaps
10
  */
11
  class WPSEO_Sitemaps_Admin {
12
 
@@ -18,7 +18,7 @@ class WPSEO_Sitemaps_Admin {
18
  private $importing_post_types = array();
19
 
20
  /**
21
- * Class constructor
22
  */
23
  public function __construct() {
24
  add_action( 'transition_post_status', array( $this, 'status_transition' ), 10, 3 );
@@ -52,7 +52,7 @@ class WPSEO_Sitemaps_Admin {
52
 
53
  wp_cache_delete( 'lastpostmodified:gmt:' . $post_type, 'timeinfo' ); // #17455.
54
 
55
- // None of our interest..
56
  if ( 'nav_menu_item' === $post_type ) {
57
  return;
58
  }
@@ -63,7 +63,7 @@ class WPSEO_Sitemaps_Admin {
63
  }
64
 
65
  /**
66
- * Filter: 'wpseo_allow_xml_sitemap_ping' - Check if pinging is not allowed (allowed by default)
67
  *
68
  * @api boolean $allow_ping The boolean that is set to true by default.
69
  */
@@ -80,10 +80,10 @@ class WPSEO_Sitemaps_Admin {
80
  }
81
 
82
  /**
83
- * While bulk importing, just save unique post_types
84
  *
85
  * When importing is done, if we have a post_type that is saved in the sitemap
86
- * try to ping the search engines
87
  *
88
  * @param string $new_status New post status.
89
  * @param string $old_status Old post status.
6
  */
7
 
8
  /**
9
+ * Class that handles the Admin side of XML sitemaps.
10
  */
11
  class WPSEO_Sitemaps_Admin {
12
 
18
  private $importing_post_types = array();
19
 
20
  /**
21
+ * Class constructor.
22
  */
23
  public function __construct() {
24
  add_action( 'transition_post_status', array( $this, 'status_transition' ), 10, 3 );
52
 
53
  wp_cache_delete( 'lastpostmodified:gmt:' . $post_type, 'timeinfo' ); // #17455.
54
 
55
+ // Not something we're interested in.
56
  if ( 'nav_menu_item' === $post_type ) {
57
  return;
58
  }
63
  }
64
 
65
  /**
66
+ * Filter: 'wpseo_allow_xml_sitemap_ping' - Check if pinging is not allowed (allowed by default).
67
  *
68
  * @api boolean $allow_ping The boolean that is set to true by default.
69
  */
80
  }
81
 
82
  /**
83
+ * While bulk importing, just save unique post_types.
84
  *
85
  * When importing is done, if we have a post_type that is saved in the sitemap
86
+ * try to ping the search engines.
87
  *
88
  * @param string $new_status New post status.
89
  * @param string $old_status Old post status.
inc/sitemaps/class-sitemaps-cache-validator.php CHANGED
@@ -34,11 +34,11 @@ class WPSEO_Sitemaps_Cache_Validator {
34
  const VALIDATION_TYPE_KEY_FORMAT = 'wpseo_sitemap_%s_cache_validator';
35
 
36
  /**
37
- * Get the cache key for a certain type and page
38
  *
39
  * A type of cache would be something like 'page', 'post' or 'video'.
40
  *
41
- * Example key format for sitemap type "post", page 1: wpseo_sitemap_post_1:akfw3e_23azBa
42
  *
43
  * @since 3.2
44
  *
@@ -72,7 +72,7 @@ class WPSEO_Sitemaps_Cache_Validator {
72
  }
73
 
74
  /**
75
- * If the type is over length make sure we compact it so we don't have any database problems
76
  *
77
  * When there are more 'extremely long' post types, changes are they have variations in either the start or ending.
78
  * Because of this, we cut out the excess in the middle which should result in less chance of collision.
@@ -104,7 +104,7 @@ class WPSEO_Sitemaps_Cache_Validator {
104
  /*
105
  * If this happens the most likely cause is a page number that is too high.
106
  *
107
- * So this would not happen unintentionally..
108
  * Either by trying to cause a high server load, finding backdoors or misconfiguration.
109
  */
110
  throw new OutOfRangeException(
@@ -127,7 +127,7 @@ class WPSEO_Sitemaps_Cache_Validator {
127
  }
128
 
129
  /**
130
- * Invalidate sitemap cache
131
  *
132
  * @since 3.2
133
  *
@@ -157,7 +157,7 @@ class WPSEO_Sitemaps_Cache_Validator {
157
  }
158
 
159
  /**
160
- * Cleanup invalidated database cache
161
  *
162
  * @since 3.2
163
  *
@@ -196,13 +196,12 @@ class WPSEO_Sitemaps_Cache_Validator {
196
  }
197
 
198
  /**
199
- * Get the current cache validator
200
  *
201
  * Without the type the global validator is returned.
202
- * This can invalidate -all- keys in cache at once
203
  *
204
- * With the type parameter the validator for that specific
205
- * type can be invalidated
206
  *
207
  * @since 3.2
208
  *
@@ -227,7 +226,7 @@ class WPSEO_Sitemaps_Cache_Validator {
227
  }
228
 
229
  /**
230
- * Get the cache validator option key for the specified type
231
  *
232
  * @since 3.2
233
  *
@@ -245,7 +244,7 @@ class WPSEO_Sitemaps_Cache_Validator {
245
  }
246
 
247
  /**
248
- * Refresh the cache validator value
249
  *
250
  * @since 3.2
251
  *
34
  const VALIDATION_TYPE_KEY_FORMAT = 'wpseo_sitemap_%s_cache_validator';
35
 
36
  /**
37
+ * Get the cache key for a certain type and page.
38
  *
39
  * A type of cache would be something like 'page', 'post' or 'video'.
40
  *
41
+ * Example key format for sitemap type "post", page 1: wpseo_sitemap_post_1:akfw3e_23azBa .
42
  *
43
  * @since 3.2
44
  *
72
  }
73
 
74
  /**
75
+ * If the type is over length make sure we compact it so we don't have any database problems.
76
  *
77
  * When there are more 'extremely long' post types, changes are they have variations in either the start or ending.
78
  * Because of this, we cut out the excess in the middle which should result in less chance of collision.
104
  /*
105
  * If this happens the most likely cause is a page number that is too high.
106
  *
107
+ * So this would not happen unintentionally.
108
  * Either by trying to cause a high server load, finding backdoors or misconfiguration.
109
  */
110
  throw new OutOfRangeException(
127
  }
128
 
129
  /**
130
+ * Invalidate sitemap cache.
131
  *
132
  * @since 3.2
133
  *
157
  }
158
 
159
  /**
160
+ * Cleanup invalidated database cache.
161
  *
162
  * @since 3.2
163
  *
196
  }
197
 
198
  /**
199
+ * Get the current cache validator.
200
  *
201
  * Without the type the global validator is returned.
202
+ * This can invalidate -all- keys in cache at once.
203
  *
204
+ * With the type parameter the validator for that specific type can be invalidated.
 
205
  *
206
  * @since 3.2
207
  *
226
  }
227
 
228
  /**
229
+ * Get the cache validator option key for the specified type.
230
  *
231
  * @since 3.2
232
  *
244
  }
245
 
246
  /**
247
+ * Refresh the cache validator value.
248
  *
249
  * @since 3.2
250
  *
inc/sitemaps/class-sitemaps-cache.php CHANGED
@@ -81,7 +81,7 @@ class WPSEO_Sitemaps_Cache {
81
  /**
82
  * Filter if XML sitemap transient cache is enabled.
83
  *
84
- * @param bool $unsigned Enable cache or not, defaults to true
85
  */
86
  return apply_filters( 'wpseo_enable_xml_sitemap_transient_caching', false );
87
  }
@@ -107,7 +107,7 @@ class WPSEO_Sitemaps_Cache {
107
  }
108
 
109
  /**
110
- * Get the sitemap that is cached
111
  *
112
  * @param string $type Sitemap type.
113
  * @param int $page Page number to retrieve.
@@ -308,7 +308,7 @@ class WPSEO_Sitemaps_Cache {
308
  }
309
 
310
  /**
311
- * Adds a hook that when given option is updated, the cache is cleared
312
  *
313
  * @since 3.2
314
  *
@@ -321,7 +321,7 @@ class WPSEO_Sitemaps_Cache {
321
  }
322
 
323
  /**
324
- * Clears the transient cache when a given option is updated, if that option has been registered before
325
  *
326
  * @since 3.2
327
  *
81
  /**
82
  * Filter if XML sitemap transient cache is enabled.
83
  *
84
+ * @param bool $unsigned Enable cache or not, defaults to true.
85
  */
86
  return apply_filters( 'wpseo_enable_xml_sitemap_transient_caching', false );
87
  }
107
  }
108
 
109
  /**
110
+ * Get the sitemap that is cached.
111
  *
112
  * @param string $type Sitemap type.
113
  * @param int $page Page number to retrieve.
308
  }
309
 
310
  /**
311
+ * Adds a hook that when given option is updated, the cache is cleared.
312
  *
313
  * @since 3.2
314
  *
321
  }
322
 
323
  /**
324
+ * Clears the transient cache when a given option is updated, if that option has been registered before.
325
  *
326
  * @since 3.2
327
  *
inc/sitemaps/class-sitemaps-renderer.php CHANGED
@@ -134,8 +134,8 @@ class WPSEO_Sitemaps_Renderer {
134
  /**
135
  * Produce final XML output with debug information.
136
  *
137
- * @param string $sitemap Sitemap XML.
138
- * @param boolean $transient Transient cache flag.
139
  *
140
  * @return string
141
  */
@@ -187,7 +187,7 @@ class WPSEO_Sitemaps_Renderer {
187
  /**
188
  * Set a custom stylesheet for this sitemap. Set to empty to just remove the default stylesheet.
189
  *
190
- * @param string $stylesheet Full xml-stylesheet declaration.
191
  */
192
  public function set_stylesheet( $stylesheet ) {
193
  $this->stylesheet = $stylesheet;
@@ -287,11 +287,11 @@ class WPSEO_Sitemaps_Renderer {
287
  $output .= "\t</url>\n";
288
 
289
  /**
290
- * Filters the output for the sitemap url tag.
291
  *
292
  * @api string $output The output for the sitemap url tag.
293
  *
294
- * @param array $url The sitemap url array on which the output is based.
295
  */
296
  return apply_filters( 'wpseo_sitemap_url', $output, $url );
297
  }
@@ -319,7 +319,7 @@ class WPSEO_Sitemaps_Renderer {
319
 
320
  $encoded_path = array_map( 'rawurlencode', $encoded_path );
321
  $encoded_path = implode( '/', $encoded_path );
322
- $encoded_path = str_replace( '%7E', '~', $encoded_path ); // PHP <5.3.
323
 
324
  $url = str_replace( $path, $encoded_path, $url );
325
  }
134
  /**
135
  * Produce final XML output with debug information.
136
  *
137
+ * @param string $sitemap Sitemap XML.
138
+ * @param boolean $transient Transient cache flag.
139
  *
140
  * @return string
141
  */
187
  /**
188
  * Set a custom stylesheet for this sitemap. Set to empty to just remove the default stylesheet.
189
  *
190
+ * @param string $stylesheet Full XML-stylesheet declaration.
191
  */
192
  public function set_stylesheet( $stylesheet ) {
193
  $this->stylesheet = $stylesheet;
287
  $output .= "\t</url>\n";
288
 
289
  /**
290
+ * Filters the output for the sitemap URL tag.
291
  *
292
  * @api string $output The output for the sitemap url tag.
293
  *
294
+ * @param array $url The sitemap URL array on which the output is based.
295
  */
296
  return apply_filters( 'wpseo_sitemap_url', $output, $url );
297
  }
319
 
320
  $encoded_path = array_map( 'rawurlencode', $encoded_path );
321
  $encoded_path = implode( '/', $encoded_path );
322
+ $encoded_path = str_replace( '%7E', '~', $encoded_path ); // PHP < 5.3.
323
 
324
  $url = str_replace( $path, $encoded_path, $url );
325
  }
inc/sitemaps/class-sitemaps-router.php CHANGED
@@ -113,7 +113,7 @@ class WPSEO_Sitemaps_Router {
113
  $base = $wp_rewrite->using_index_permalinks() ? 'index.php/' : '/';
114
 
115
  /**
116
- * Filter the base URL of the sitemaps
117
  *
118
  * @param string $base The string that should be added to home_url() to make the full base URL.
119
  */
113
  $base = $wp_rewrite->using_index_permalinks() ? 'index.php/' : '/';
114
 
115
  /**
116
+ * Filter the base URL of the sitemaps.
117
  *
118
  * @param string $base The string that should be added to home_url() to make the full base URL.
119
  */
inc/sitemaps/class-sitemaps.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_Sitemaps
10
  *
11
  * @todo This class could use a general description with some explanation on sitemaps. OR.
12
  */
@@ -90,7 +90,7 @@ class WPSEO_Sitemaps {
90
  public $providers;
91
 
92
  /**
93
- * Class constructor
94
  */
95
  public function __construct() {
96
 
@@ -133,7 +133,7 @@ class WPSEO_Sitemaps {
133
  }
134
 
135
  /**
136
- * Check the current request URI, if we can determine it's probably an XML sitemap, kill loading the widgets
137
  */
138
  public function reduce_query_load() {
139
 
@@ -180,7 +180,7 @@ class WPSEO_Sitemaps {
180
  }
181
 
182
  /**
183
- * Set the sitemap current page to allow creating partial sitemaps with wp-cli
184
  * in a one-off process.
185
  *
186
  * @param integer $current_page The part that should be generated.
@@ -270,7 +270,7 @@ class WPSEO_Sitemaps {
270
  }
271
 
272
  /**
273
- * Try to get the sitemap from cache
274
  *
275
  * @param string $type Sitemap type.
276
  * @param int $page_number The page number to retrieve.
6
  */
7
 
8
  /**
9
+ * Class WPSEO_Sitemaps.
10
  *
11
  * @todo This class could use a general description with some explanation on sitemaps. OR.
12
  */
90
  public $providers;
91
 
92
  /**
93
+ * Class constructor.
94
  */
95
  public function __construct() {
96
 
133
  }
134
 
135
  /**
136
+ * Check the current request URI, if we can determine it's probably an XML sitemap, kill loading the widgets.
137
  */
138
  public function reduce_query_load() {
139
 
180
  }
181
 
182
  /**
183
+ * Set the sitemap current page to allow creating partial sitemaps with WP-CLI
184
  * in a one-off process.
185
  *
186
  * @param integer $current_page The part that should be generated.
270
  }
271
 
272
  /**
273
+ * Try to get the sitemap from cache.
274
  *
275
  * @param string $type Sitemap type.
276
  * @param int $page_number The page number to retrieve.
inc/sitemaps/class-taxonomy-sitemap-provider.php CHANGED
@@ -240,8 +240,8 @@ class WPSEO_Taxonomy_Sitemap_Provider implements WPSEO_Sitemap_Provider {
240
  /**
241
  * Filter to exclude the taxonomy from the XML sitemap.
242
  *
243
- * @param boolean $exclude Defaults to false.
244
- * @param string $taxonomy_name Name of the taxonomy to exclude..
245
  */
246
  if ( apply_filters( 'wpseo_sitemap_exclude_taxonomy', false, $taxonomy_name ) ) {
247
  return false;
@@ -251,7 +251,7 @@ class WPSEO_Taxonomy_Sitemap_Provider implements WPSEO_Sitemap_Provider {
251
  }
252
 
253
  /**
254
- * Get the Image Parser
255
  *
256
  * @return WPSEO_Sitemap_Image_Parser
257
  */
@@ -266,7 +266,7 @@ class WPSEO_Taxonomy_Sitemap_Provider implements WPSEO_Sitemap_Provider {
266
  /* ********************* DEPRECATED METHODS ********************* */
267
 
268
  /**
269
- * Get all the options
270
  *
271
  * @deprecated 7.0
272
  * @codeCoverageIgnore
240
  /**
241
  * Filter to exclude the taxonomy from the XML sitemap.
242
  *
243
+ * @param boolean $exclude Defaults to false.
244
+ * @param string $taxonomy_name Name of the taxonomy to exclude..
245
  */
246
  if ( apply_filters( 'wpseo_sitemap_exclude_taxonomy', false, $taxonomy_name ) ) {
247
  return false;
251
  }
252
 
253
  /**
254
+ * Get the Image Parser.
255
  *
256
  * @return WPSEO_Sitemap_Image_Parser
257
  */
266
  /* ********************* DEPRECATED METHODS ********************* */
267
 
268
  /**
269
+ * Get all the options.
270
  *
271
  * @deprecated 7.0
272
  * @codeCoverageIgnore
inc/sitemaps/interface-sitemap-cache-data.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Cache Data interface
10
  */
11
  interface WPSEO_Sitemap_Cache_Data_Interface {
12
 
@@ -32,7 +32,7 @@ interface WPSEO_Sitemap_Cache_Data_Interface {
32
  const UNKNOWN = 'unknown';
33
 
34
  /**
35
- * Set the content of the sitemap
36
  *
37
  * @param string $sitemap The XML content of the sitemap.
38
  *
@@ -41,7 +41,7 @@ interface WPSEO_Sitemap_Cache_Data_Interface {
41
  public function set_sitemap( $sitemap );
42
 
43
  /**
44
- * Set the status of the sitemap
45
  *
46
  * @param bool|string $usable True/False or 'ok'/'error' for status.
47
  *
@@ -55,14 +55,14 @@ interface WPSEO_Sitemap_Cache_Data_Interface {
55
  public function get_sitemap();
56
 
57
  /**
58
- * Get the status of this sitemap
59
  *
60
  * @return string Status 'ok', 'error' or 'unknown'.
61
  */
62
  public function get_status();
63
 
64
  /**
65
- * Is the sitemap content usable
66
  *
67
  * @return bool True if the sitemap is usable, False if not.
68
  */
6
  */
7
 
8
  /**
9
+ * Cache Data interface.
10
  */
11
  interface WPSEO_Sitemap_Cache_Data_Interface {
12
 
32
  const UNKNOWN = 'unknown';
33
 
34
  /**
35
+ * Set the content of the sitemap.
36
  *
37
  * @param string $sitemap The XML content of the sitemap.
38
  *
41
  public function set_sitemap( $sitemap );
42
 
43
  /**
44
+ * Set the status of the sitemap.
45
  *
46
  * @param bool|string $usable True/False or 'ok'/'error' for status.
47
  *
55
  public function get_sitemap();
56
 
57
  /**
58
+ * Get the status of this sitemap.
59
  *
60
  * @return string Status 'ok', 'error' or 'unknown'.
61
  */
62
  public function get_status();
63
 
64
  /**
65
+ * Is the sitemap content usable ?
66
  *
67
  * @return bool True if the sitemap is usable, False if not.
68
  */
inc/sitemaps/interface-sitemap-provider.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Sitemap Provider interface
10
  */
11
  interface WPSEO_Sitemap_Provider {
12
 
6
  */
7
 
8
  /**
9
+ * Sitemap Provider interface.
10
  */
11
  interface WPSEO_Sitemap_Provider {
12
 
inc/structured-data-blocks/class-faq-block.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_FAQ_Block
10
  */
11
  class WPSEO_FAQ_Block implements WPSEO_WordPress_Integration {
12
 
@@ -29,7 +29,8 @@ class WPSEO_FAQ_Block implements WPSEO_WordPress_Integration {
29
  /**
30
  * Renders the block.
31
  *
32
- * Because we can't save script tags in Gutenberg without sufficient user permissions, we render these server-side.
 
33
  *
34
  * @param array $attributes The attributes of the block.
35
  * @param string $content The HTML content of the block.
6
  */
7
 
8
  /**
9
+ * Class WPSEO_FAQ_Block.
10
  */
11
  class WPSEO_FAQ_Block implements WPSEO_WordPress_Integration {
12
 
29
  /**
30
  * Renders the block.
31
  *
32
+ * Because we can't save script tags in Gutenberg without sufficient user permissions,
33
+ * we render these server-side.
34
  *
35
  * @param array $attributes The attributes of the block.
36
  * @param string $content The HTML content of the block.
inc/structured-data-blocks/class-how-to-block.php CHANGED
@@ -6,7 +6,7 @@
6
  */
7
 
8
  /**
9
- * Class WPSEO_How_To_Block
10
  */
11
  class WPSEO_How_To_Block implements WPSEO_WordPress_Integration {
12
 
@@ -29,7 +29,8 @@ class WPSEO_How_To_Block implements WPSEO_WordPress_Integration {
29
  /**
30
  * Renders the block.
31
  *
32
- * Because we can't save script tags in Gutenberg without sufficient user permissions, we render these server-side.
 
33
  *
34
  * @param array $attributes The attributes of the block.
35
  * @param string $content The HTML content of the block.
6
  */
7
 
8
  /**
9
+ * Class WPSEO_How_To_Block.
10
  */
11
  class WPSEO_How_To_Block implements WPSEO_WordPress_Integration {
12
 
29
  /**
30
  * Renders the block.
31
  *
32
+ * Because we can't save script tags in Gutenberg without sufficient user permissions,
33
+ * we render these server-side.
34
  *
35
  * @param array $attributes The attributes of the block.
36
  * @param string $content The HTML content of the block.
inc/wpseo-functions.php CHANGED
@@ -84,7 +84,8 @@ if ( ! function_exists( 'yoast_get_primary_term' ) ) {
84
  * Replace `%%variable_placeholders%%` with their real value based on the current requested page/post/cpt.
85
  *
86
  * @param string $string The string to replace the variables in.
87
- * @param object $args The object some of the replacement values might come from, could be a post, taxonomy or term.
 
88
  * @param array $omit Variables that should not be replaced by this function.
89
  *
90
  * @return string
@@ -128,15 +129,15 @@ function wpseo_replace_vars( $string, $args, $omit = array() ) {
128
  *
129
  * @since 1.5.4
130
  *
131
- * @param string $var The name of the variable to replace, i.e. '%%var%%'
132
- * - the surrounding %% are optional, name can only contain [A-Za-z0-9_-].
133
- * @param mixed $replace_function Function or method to call to retrieve the replacement value for the variable
134
- * Uses the same format as add_filter/add_action function parameter and
135
- * should *return* the replacement value. DON'T echo it.
136
- * @param string $type Type of variable: 'basic' or 'advanced', defaults to 'advanced'.
137
- * @param string $help_text Help text to be added to the help tab for this variable.
138
  *
139
- * @return bool Whether the replacement function was succesfully registered.
140
  */
141
  function wpseo_register_var_replacement( $var, $replace_function, $type = 'advanced', $help_text = '' ) {
142
  return WPSEO_Replace_Vars::register_replacement( $var, $replace_function, $type, $help_text );
@@ -144,7 +145,9 @@ function wpseo_register_var_replacement( $var, $replace_function, $type = 'advan
144
 
145
  /**
146
  * WPML plugin support: Set titles for custom types / taxonomies as translatable.
147
- * It adds new keys to a wpml-config.xml file for a custom post type title, metadesc, title-ptarchive and metadesc-ptarchive fields translation.
 
 
148
  * Documentation: http://wpml.org/documentation/support/language-configuration-files/
149
  *
150
  * @global $sitepress
84
  * Replace `%%variable_placeholders%%` with their real value based on the current requested page/post/cpt.
85
  *
86
  * @param string $string The string to replace the variables in.
87
+ * @param object $args The object some of the replacement values might come from,
88
+ * could be a post, taxonomy or term.
89
  * @param array $omit Variables that should not be replaced by this function.
90
  *
91
  * @return string
129
  *
130
  * @since 1.5.4
131
  *
132
+ * @param string $var The name of the variable to replace, i.e. '%%var%%'.
133
+ * Note: the surrounding %% are optional, name can only contain [A-Za-z0-9_-].
134
+ * @param mixed $replace_function Function or method to call to retrieve the replacement value for the variable.
135
+ * Uses the same format as add_filter/add_action function parameter and
136
+ * should *return* the replacement value. DON'T echo it.
137
+ * @param string $type Type of variable: 'basic' or 'advanced', defaults to 'advanced'.
138
+ * @param string $help_text Help text to be added to the help tab for this variable.
139
  *
140
+ * @return bool Whether the replacement function was successfully registered.
141
  */
142
  function wpseo_register_var_replacement( $var, $replace_function, $type = 'advanced', $help_text = '' ) {
143
  return WPSEO_Replace_Vars::register_replacement( $var, $replace_function, $type, $help_text );
145
 
146
  /**
147
  * WPML plugin support: Set titles for custom types / taxonomies as translatable.
148
+ *
149
+ * It adds new keys to a wpml-config.xml file for a custom post type title, metadesc,
150
+ * title-ptarchive and metadesc-ptarchive fields translation.
151
  * Documentation: http://wpml.org/documentation/support/language-configuration-files/
152
  *
153
  * @global $sitepress
inc/wpseo-non-ajax-functions.php CHANGED
@@ -61,9 +61,9 @@ add_filter( 'user_has_cap', 'allow_custom_field_edits', 0, 3 );
61
  /**
62
  * Adds an SEO admin bar menu to the site admin, with several options.
63
  *
64
- * If the current user is an admin he can also go straight to several settings menu's from here.
65
  *
66
- * @deprecated 7.9 Use WPSEO_Admin_Bar_Menu::add_menu() instead
67
  * @codeCoverageIgnore
68
  *
69
  * @return void
@@ -184,7 +184,7 @@ function wpseo_adminbar_score( $score ) {
184
  /**
185
  * Enqueue CSS to format the Yoast SEO adminbar item.
186
  *
187
- * @deprecated 7.9 Use WPSEO_Admin_Bar_Menu::enqueue_assets() instead
188
  * @codeCoverageIgnore
189
  */
190
  function wpseo_admin_bar_style() {
61
  /**
62
  * Adds an SEO admin bar menu to the site admin, with several options.
63
  *
64
+ * If the current user is an admin they can also go straight to several settings menus from here.
65
  *
66
+ * @deprecated 7.9 Use WPSEO_Admin_Bar_Menu::add_menu() instead.
67
  * @codeCoverageIgnore
68
  *
69
  * @return void
184
  /**
185
  * Enqueue CSS to format the Yoast SEO adminbar item.
186
  *
187
+ * @deprecated 7.9 Use WPSEO_Admin_Bar_Menu::enqueue_assets() instead.
188
  * @codeCoverageIgnore
189
  */
190
  function wpseo_admin_bar_style() {
js/dist/analysis-1100.min.js DELETED
@@ -1,21 +0,0 @@
1
- (window.yoastWebpackJsonp=window.yoastWebpackJsonp||[]).push([[28],[,,function(a,e,t){"use strict";t.r(e);var i=t(11),n=i.a.Symbol,o=Object.prototype,r=o.hasOwnProperty,s=o.toString,d=n?n.toStringTag:void 0;var l=function(a){var e=r.call(a,d),t=a[d];try{a[d]=void 0;var i=!0}catch(a){}var n=s.call(a);return i&&(e?a[d]=t:delete a[d]),n},c=Object.prototype.toString;var u=function(a){return c.call(a)},p="[object Null]",z="[object Undefined]",g=n?n.toStringTag:void 0;var m=function(a){return null==a?void 0===a?z:p:g&&g in Object(a)?l(a):u(a)};var f=function(a){return null!=a&&"object"==typeof a},y="[object Symbol]";var w=function(a){return"symbol"==typeof a||f(a)&&m(a)==y},b=NaN;var h=function(a){return"number"==typeof a?a:w(a)?b:+a};var v=function(a,e){for(var t=-1,i=null==a?0:a.length,n=Array(i);++t<i;)n[t]=e(a[t],t,a);return n},k=Array.isArray,j=1/0,_=n?n.prototype:void 0,x=_?_.toString:void 0;var q=function a(e){if("string"==typeof e)return e;if(k(e))return v(e,a)+"";if(w(e))return x?x.call(e):"";var t=e+"";return"0"==t&&1/e==-j?"-0":t};var E=function(a,e){return function(t,i){var n;if(void 0===t&&void 0===i)return e;if(void 0!==t&&(n=t),void 0!==i){if(void 0===n)return i;"string"==typeof t||"string"==typeof i?(t=q(t),i=q(i)):(t=h(t),i=h(i)),n=a(t,i)}return n}},A=E(function(a,e){return a+e},0);var T=function(a){var e=typeof a;return null!=a&&("object"==e||"function"==e)},O=NaN,S=/^\s+|\s+$/g,P=/^[-+]0x[0-9a-f]+$/i,M=/^0b[01]+$/i,C=/^0o[0-7]+$/i,R=parseInt;var D=function(a){if("number"==typeof a)return a;if(w(a))return O;if(T(a)){var e="function"==typeof a.valueOf?a.valueOf():a;a=T(e)?e+"":e}if("string"!=typeof a)return 0===a?a:+a;a=a.replace(S,"");var t=M.test(a);return t||C.test(a)?R(a.slice(2),t?2:8):P.test(a)?O:+a},F=1/0,B=1.7976931348623157e308;var $=function(a){return a?(a=D(a))===F||a===-F?(a<0?-1:1)*B:a==a?a:0:0===a?a:0};var L=function(a){var e=$(a),t=e%1;return e==e?t?e-t:e:0},I="Expected a function";var W=function(a,e){if("function"!=typeof e)throw new TypeError(I);return a=L(a),function(){if(--a<1)return e.apply(this,arguments)}};var U=function(a){return a},N="[object AsyncFunction]",K="[object Function]",H="[object GeneratorFunction]",V="[object Proxy]";var Y=function(a){if(!T(a))return!1;var e=m(a);return e==K||e==H||e==N||e==V},G=i.a["__core-js_shared__"],Z=function(){var a=/[^.]+$/.exec(G&&G.keys&&G.keys.IE_PROTO||"");return a?"Symbol(src)_1."+a:""}();var J=function(a){return!!Z&&Z in a},Q=Function.prototype.toString;var X=function(a){if(null!=a){try{return Q.call(a)}catch(a){}try{return a+""}catch(a){}}return""},aa=/^\[object .+?Constructor\]$/,ea=Function.prototype,ta=Object.prototype,ia=ea.toString,na=ta.hasOwnProperty,oa=RegExp("^"+ia.call(na).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");var ra=function(a){return!(!T(a)||J(a))&&(Y(a)?oa:aa).test(X(a))};var sa=function(a,e){return null==a?void 0:a[e]};var da=function(a,e){var t=sa(a,e);return ra(t)?t:void 0},la=da(i.a,"WeakMap"),ca=la&&new la,ua=ca?function(a,e){return ca.set(a,e),a}:U,pa=Object.create,za=function(){function a(){}return function(e){if(!T(e))return{};if(pa)return pa(e);a.prototype=e;var t=new a;return a.prototype=void 0,t}}();var ga=function(a){return function(){var e=arguments;switch(e.length){case 0:return new a;case 1:return new a(e[0]);case 2:return new a(e[0],e[1]);case 3:return new a(e[0],e[1],e[2]);case 4:return new a(e[0],e[1],e[2],e[3]);case 5:return new a(e[0],e[1],e[2],e[3],e[4]);case 6:return new a(e[0],e[1],e[2],e[3],e[4],e[5]);case 7:return new a(e[0],e[1],e[2],e[3],e[4],e[5],e[6])}var t=za(a.prototype),i=a.apply(t,e);return T(i)?i:t}},ma=1;var fa=function(a,e,t){var n=e&ma,o=ga(a);return function e(){return(this&&this!==i.a&&this instanceof e?o:a).apply(n?t:this,arguments)}};var ya=function(a,e,t){switch(t.length){case 0:return a.call(e);case 1:return a.call(e,t[0]);case 2:return a.call(e,t[0],t[1]);case 3:return a.call(e,t[0],t[1],t[2])}return a.apply(e,t)},wa=Math.max;var ba=function(a,e,t,i){for(var n=-1,o=a.length,r=t.length,s=-1,d=e.length,l=wa(o-r,0),c=Array(d+l),u=!i;++s<d;)c[s]=e[s];for(;++n<r;)(u||n<o)&&(c[t[n]]=a[n]);for(;l--;)c[s++]=a[n++];return c},ha=Math.max;var va=function(a,e,t,i){for(var n=-1,o=a.length,r=-1,s=t.length,d=-1,l=e.length,c=ha(o-s,0),u=Array(c+l),p=!i;++n<c;)u[n]=a[n];for(var z=n;++d<l;)u[z+d]=e[d];for(;++r<s;)(p||n<o)&&(u[z+t[r]]=a[n++]);return u};var ka=function(a,e){for(var t=a.length,i=0;t--;)a[t]===e&&++i;return i};var ja=function(){},_a=4294967295;function xa(a){this.__wrapped__=a,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=_a,this.__views__=[]}xa.prototype=za(ja.prototype),xa.prototype.constructor=xa;var qa=xa;var Ea=function(){},Aa=ca?function(a){return ca.get(a)}:Ea,Ta={},Oa=Object.prototype.hasOwnProperty;var Sa=function(a){for(var e=a.name+"",t=Ta[e],i=Oa.call(Ta,e)?t.length:0;i--;){var n=t[i],o=n.func;if(null==o||o==a)return n.name}return e};function Pa(a,e){this.__wrapped__=a,this.__actions__=[],this.__chain__=!!e,this.__index__=0,this.__values__=void 0}Pa.prototype=za(ja.prototype),Pa.prototype.constructor=Pa;var Ma=Pa;var Ca=function(a,e){var t=-1,i=a.length;for(e||(e=Array(i));++t<i;)e[t]=a[t];return e};var Ra=function(a){if(a instanceof qa)return a.clone();var e=new Ma(a.__wrapped__,a.__chain__);return e.__actions__=Ca(a.__actions__),e.__index__=a.__index__,e.__values__=a.__values__,e},Da=Object.prototype.hasOwnProperty;function Fa(a){if(f(a)&&!k(a)&&!(a instanceof qa)){if(a instanceof Ma)return a;if(Da.call(a,"__wrapped__"))return Ra(a)}return new Ma(a)}Fa.prototype=ja.prototype,Fa.prototype.constructor=Fa;var Ba=Fa;var $a=function(a){var e=Sa(a),t=Ba[e];if("function"!=typeof t||!(e in qa.prototype))return!1;if(a===t)return!0;var i=Aa(t);return!!i&&a===i[0]},La=800,Ia=16,Wa=Date.now;var Ua=function(a){var e=0,t=0;return function(){var i=Wa(),n=Ia-(i-t);if(t=i,n>0){if(++e>=La)return arguments[0]}else e=0;return a.apply(void 0,arguments)}},Na=Ua(ua),Ka=/\{\n\/\* \[wrapped with (.+)\] \*/,Ha=/,? & /;var Va=function(a){var e=a.match(Ka);return e?e[1].split(Ha):[]},Ya=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;var Ga=function(a,e){var t=e.length;if(!t)return a;var i=t-1;return e[i]=(t>1?"& ":"")+e[i],e=e.join(t>2?", ":" "),a.replace(Ya,"{\n/* [wrapped with "+e+"] */\n")};var Za=function(a){return function(){return a}},Ja=function(){try{var a=da(Object,"defineProperty");return a({},"",{}),a}catch(a){}}(),Qa=Ua(Ja?function(a,e){return Ja(a,"toString",{configurable:!0,enumerable:!1,value:Za(e),writable:!0})}:U);var Xa=function(a,e){for(var t=-1,i=null==a?0:a.length;++t<i&&!1!==e(a[t],t,a););return a};var ae=function(a,e,t,i){for(var n=a.length,o=t+(i?1:-1);i?o--:++o<n;)if(e(a[o],o,a))return o;return-1};var ee=function(a){return a!=a};var te=function(a,e,t){for(var i=t-1,n=a.length;++i<n;)if(a[i]===e)return i;return-1};var ie=function(a,e,t){return e==e?te(a,e,t):ae(a,ee,t)};var ne=function(a,e){return!(null==a||!a.length)&&ie(a,e,0)>-1},oe=[["ary",128],["bind",1],["bindKey",2],["curry",8],["curryRight",16],["flip",512],["partial",32],["partialRight",64],["rearg",256]];var re=function(a,e){return Xa(oe,function(t){var i="_."+t[0];e&t[1]&&!ne(a,i)&&a.push(i)}),a.sort()};var se=function(a,e,t){var i=e+"";return Qa(a,Ga(i,re(Va(i),t)))},de=1,le=2,ce=4,ue=8,pe=32,ze=64;var ge=function(a,e,t,i,n,o,r,s,d,l){var c=e&ue;e|=c?pe:ze,(e&=~(c?ze:pe))&ce||(e&=~(de|le));var u=[a,e,n,c?o:void 0,c?r:void 0,c?void 0:o,c?void 0:r,s,d,l],p=t.apply(void 0,u);return $a(a)&&Na(p,u),p.placeholder=i,se(p,a,e)};var me=function(a){return a.placeholder},fe=9007199254740991,ye=/^(?:0|[1-9]\d*)$/;var we=function(a,e){var t=typeof a;return!!(e=null==e?fe:e)&&("number"==t||"symbol"!=t&&ye.test(a))&&a>-1&&a%1==0&&a<e},be=Math.min;var he=function(a,e){for(var t=a.length,i=be(e.length,t),n=Ca(a);i--;){var o=e[i];a[i]=we(o,t)?n[o]:void 0}return a},ve="__lodash_placeholder__";var ke=function(a,e){for(var t=-1,i=a.length,n=0,o=[];++t<i;){var r=a[t];r!==e&&r!==ve||(a[t]=ve,o[n++]=t)}return o},je=1,_e=2,xe=8,qe=16,Ee=128,Ae=512;var Te=function a(e,t,n,o,r,s,d,l,c,u){var p=t&Ee,z=t&je,g=t&_e,m=t&(xe|qe),f=t&Ae,y=g?void 0:ga(e);return function w(){for(var b=arguments.length,h=Array(b),v=b;v--;)h[v]=arguments[v];if(m)var k=me(w),j=ka(h,k);if(o&&(h=ba(h,o,r,m)),s&&(h=va(h,s,d,m)),b-=j,m&&b<u){var _=ke(h,k);return ge(e,t,a,w.placeholder,n,h,_,l,c,u-b)}var x=z?n:this,q=g?x[e]:e;return b=h.length,l?h=he(h,l):f&&b>1&&h.reverse(),p&&c<b&&(h.length=c),this&&this!==i.a&&this instanceof w&&(q=y||ga(q)),q.apply(x,h)}};var Oe=function(a,e,t){var n=ga(a);return function o(){for(var r=arguments.length,s=Array(r),d=r,l=me(o);d--;)s[d]=arguments[d];var c=r<3&&s[0]!==l&&s[r-1]!==l?[]:ke(s,l);if((r-=c.length)<t)return ge(a,e,Te,o.placeholder,void 0,s,c,void 0,void 0,t-r);var u=this&&this!==i.a&&this instanceof o?n:a;return ya(u,this,s)}},Se=1;var Pe=function(a,e,t,n){var o=e&Se,r=ga(a);return function e(){for(var s=-1,d=arguments.length,l=-1,c=n.length,u=Array(c+d),p=this&&this!==i.a&&this instanceof e?r:a;++l<c;)u[l]=n[l];for(;d--;)u[l++]=arguments[++s];return ya(p,o?t:this,u)}},Me="__lodash_placeholder__",Ce=1,Re=2,De=4,Fe=8,Be=128,$e=256,Le=Math.min;var Ie=function(a,e){var t=a[1],i=e[1],n=t|i,o=n<(Ce|Re|Be),r=i==Be&&t==Fe||i==Be&&t==$e&&a[7].length<=e[8]||i==(Be|$e)&&e[7].length<=e[8]&&t==Fe;if(!o&&!r)return a;i&Ce&&(a[2]=e[2],n|=t&Ce?0:De);var s=e[3];if(s){var d=a[3];a[3]=d?ba(d,s,e[4]):s,a[4]=d?ke(a[3],Me):e[4]}return(s=e[5])&&(d=a[5],a[5]=d?va(d,s,e[6]):s,a[6]=d?ke(a[5],Me):e[6]),(s=e[7])&&(a[7]=s),i&Be&&(a[8]=null==a[8]?e[8]:Le(a[8],e[8])),null==a[9]&&(a[9]=e[9]),a[0]=e[0],a[1]=n,a},We="Expected a function",Ue=1,Ne=2,Ke=8,He=16,Ve=32,Ye=64,Ge=Math.max;var Ze=function(a,e,t,i,n,o,r,s){var d=e&Ne;if(!d&&"function"!=typeof a)throw new TypeError(We);var l=i?i.length:0;if(l||(e&=~(Ve|Ye),i=n=void 0),r=void 0===r?r:Ge(L(r),0),s=void 0===s?s:L(s),l-=n?n.length:0,e&Ye){var c=i,u=n;i=n=void 0}var p=d?void 0:Aa(a),z=[a,e,t,i,n,c,u,o,r,s];if(p&&Ie(z,p),a=z[0],e=z[1],t=z[2],i=z[3],n=z[4],!(s=z[9]=void 0===z[9]?d?0:a.length:Ge(z[9]-l,0))&&e&(Ke|He)&&(e&=~(Ke|He)),e&&e!=Ue)g=e==Ke||e==He?Oe(a,e,s):e!=Ve&&e!=(Ue|Ve)||n.length?Te.apply(void 0,z):Pe(a,e,t,i);else var g=fa(a,e,t);return se((p?ua:Na)(g,z),a,e)},Je=128;var Qe=function(a,e,t){return e=t?void 0:e,e=a&&null==e?a.length:e,Ze(a,Je,void 0,void 0,void 0,void 0,e)};var Xe=function(a,e,t){"__proto__"==e&&Ja?Ja(a,e,{configurable:!0,enumerable:!0,value:t,writable:!0}):a[e]=t};var at=function(a,e){return a===e||a!=a&&e!=e},et=Object.prototype.hasOwnProperty;var tt=function(a,e,t){var i=a[e];et.call(a,e)&&at(i,t)&&(void 0!==t||e in a)||Xe(a,e,t)};var it=function(a,e,t,i){var n=!t;t||(t={});for(var o=-1,r=e.length;++o<r;){var s=e[o],d=i?i(t[s],a[s],s,t,a):void 0;void 0===d&&(d=a[s]),n?Xe(t,s,d):tt(t,s,d)}return t},nt=Math.max;var ot=function(a,e,t){return e=nt(void 0===e?a.length-1:e,0),function(){for(var i=arguments,n=-1,o=nt(i.length-e,0),r=Array(o);++n<o;)r[n]=i[e+n];n=-1;for(var s=Array(e+1);++n<e;)s[n]=i[n];return s[e]=t(r),ya(a,this,s)}};var rt=function(a,e){return Qa(ot(a,e,U),a+"")},st=9007199254740991;var dt=function(a){return"number"==typeof a&&a>-1&&a%1==0&&a<=st};var lt=function(a){return null!=a&&dt(a.length)&&!Y(a)};var ct=function(a,e,t){if(!T(t))return!1;var i=typeof e;return!!("number"==i?lt(t)&&we(e,t.length):"string"==i&&e in t)&&at(t[e],a)};var ut=function(a){return rt(function(e,t){var i=-1,n=t.length,o=n>1?t[n-1]:void 0,r=n>2?t[2]:void 0;for(o=a.length>3&&"function"==typeof o?(n--,o):void 0,r&&ct(t[0],t[1],r)&&(o=n<3?void 0:o,n=1),e=Object(e);++i<n;){var s=t[i];s&&a(e,s,i,o)}return e})},pt=Object.prototype;var zt=function(a){var e=a&&a.constructor;return a===("function"==typeof e&&e.prototype||pt)};var gt=function(a,e){for(var t=-1,i=Array(a);++t<a;)i[t]=e(t);return i},mt="[object Arguments]";var ft=function(a){return f(a)&&m(a)==mt},yt=Object.prototype,wt=yt.hasOwnProperty,bt=yt.propertyIsEnumerable,ht=ft(function(){return arguments}())?ft:function(a){return f(a)&&wt.call(a,"callee")&&!bt.call(a,"callee")},vt=t(36),kt={};kt["[object Float32Array]"]=kt["[object Float64Array]"]=kt["[object Int8Array]"]=kt["[object Int16Array]"]=kt["[object Int32Array]"]=kt["[object Uint8Array]"]=kt["[object Uint8ClampedArray]"]=kt["[object Uint16Array]"]=kt["[object Uint32Array]"]=!0,kt["[object Arguments]"]=kt["[object Array]"]=kt["[object ArrayBuffer]"]=kt["[object Boolean]"]=kt["[object DataView]"]=kt["[object Date]"]=kt["[object Error]"]=kt["[object Function]"]=kt["[object Map]"]=kt["[object Number]"]=kt["[object Object]"]=kt["[object RegExp]"]=kt["[object Set]"]=kt["[object String]"]=kt["[object WeakMap]"]=!1;var jt=function(a){return f(a)&&dt(a.length)&&!!kt[m(a)]};var _t=function(a){return function(e){return a(e)}},xt=t(33),qt=xt.a&&xt.a.isTypedArray,Et=qt?_t(qt):jt,At=Object.prototype.hasOwnProperty;var Tt=function(a,e){var t=k(a),i=!t&&ht(a),n=!t&&!i&&Object(vt.a)(a),o=!t&&!i&&!n&&Et(a),r=t||i||n||o,s=r?gt(a.length,String):[],d=s.length;for(var l in a)!e&&!At.call(a,l)||r&&("length"==l||n&&("offset"==l||"parent"==l)||o&&("buffer"==l||"byteLength"==l||"byteOffset"==l)||we(l,d))||s.push(l);return s};var Ot=function(a,e){return function(t){return a(e(t))}},St=Ot(Object.keys,Object),Pt=Object.prototype.hasOwnProperty;var Mt=function(a){if(!zt(a))return St(a);var e=[];for(var t in Object(a))Pt.call(a,t)&&"constructor"!=t&&e.push(t);return e};var Ct=function(a){return lt(a)?Tt(a):Mt(a)},Rt=Object.prototype.hasOwnProperty,Dt=ut(function(a,e){if(zt(e)||lt(e))it(e,Ct(e),a);else for(var t in e)Rt.call(e,t)&&tt(a,t,e[t])});var Ft=function(a){var e=[];if(null!=a)for(var t in Object(a))e.push(t);return e},Bt=Object.prototype.hasOwnProperty;var $t=function(a){if(!T(a))return Ft(a);var e=zt(a),t=[];for(var i in a)("constructor"!=i||!e&&Bt.call(a,i))&&t.push(i);return t};var Lt=function(a){return lt(a)?Tt(a,!0):$t(a)},It=ut(function(a,e){it(e,Lt(e),a)}),Wt=ut(function(a,e,t,i){it(e,Lt(e),a,i)}),Ut=ut(function(a,e,t,i){it(e,Ct(e),a,i)}),Nt=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Kt=/^\w*$/;var Ht=function(a,e){if(k(a))return!1;var t=typeof a;return!("number"!=t&&"symbol"!=t&&"boolean"!=t&&null!=a&&!w(a))||Kt.test(a)||!Nt.test(a)||null!=e&&a in Object(e)},Vt=da(Object,"create");var Yt=function(){this.__data__=Vt?Vt(null):{},this.size=0};var Gt=function(a){var e=this.has(a)&&delete this.__data__[a];return this.size-=e?1:0,e},Zt="__lodash_hash_undefined__",Jt=Object.prototype.hasOwnProperty;var Qt=function(a){var e=this.__data__;if(Vt){var t=e[a];return t===Zt?void 0:t}return Jt.call(e,a)?e[a]:void 0},Xt=Object.prototype.hasOwnProperty;var ai=function(a){var e=this.__data__;return Vt?void 0!==e[a]:Xt.call(e,a)},ei="__lodash_hash_undefined__";var ti=function(a,e){var t=this.__data__;return this.size+=this.has(a)?0:1,t[a]=Vt&&void 0===e?ei:e,this};function ii(a){var e=-1,t=null==a?0:a.length;for(this.clear();++e<t;){var i=a[e];this.set(i[0],i[1])}}ii.prototype.clear=Yt,ii.prototype.delete=Gt,ii.prototype.get=Qt,ii.prototype.has=ai,ii.prototype.set=ti;var ni=ii;var oi=function(){this.__data__=[],this.size=0};var ri=function(a,e){for(var t=a.length;t--;)if(at(a[t][0],e))return t;return-1},si=Array.prototype.splice;var di=function(a){var e=this.__data__,t=ri(e,a);return!(t<0||(t==e.length-1?e.pop():si.call(e,t,1),--this.size,0))};var li=function(a){var e=this.__data__,t=ri(e,a);return t<0?void 0:e[t][1]};var ci=function(a){return ri(this.__data__,a)>-1};var ui=function(a,e){var t=this.__data__,i=ri(t,a);return i<0?(++this.size,t.push([a,e])):t[i][1]=e,this};function pi(a){var e=-1,t=null==a?0:a.length;for(this.clear();++e<t;){var i=a[e];this.set(i[0],i[1])}}pi.prototype.clear=oi,pi.prototype.delete=di,pi.prototype.get=li,pi.prototype.has=ci,pi.prototype.set=ui;var zi=pi,gi=da(i.a,"Map");var mi=function(){this.size=0,this.__data__={hash:new ni,map:new(gi||zi),string:new ni}};var fi=function(a){var e=typeof a;return"string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==a:null===a};var yi=function(a,e){var t=a.__data__;return fi(e)?t["string"==typeof e?"string":"hash"]:t.map};var wi=function(a){var e=yi(this,a).delete(a);return this.size-=e?1:0,e};var bi=function(a){return yi(this,a).get(a)};var hi=function(a){return yi(this,a).has(a)};var vi=function(a,e){var t=yi(this,a),i=t.size;return t.set(a,e),this.size+=t.size==i?0:1,this};function ki(a){var e=-1,t=null==a?0:a.length;for(this.clear();++e<t;){var i=a[e];this.set(i[0],i[1])}}ki.prototype.clear=mi,ki.prototype.delete=wi,ki.prototype.get=bi,ki.prototype.has=hi,ki.prototype.set=vi;var ji=ki,_i="Expected a function";function xi(a,e){if("function"!=typeof a||null!=e&&"function"!=typeof e)throw new TypeError(_i);var t=function(){var i=arguments,n=e?e.apply(this,i):i[0],o=t.cache;if(o.has(n))return o.get(n);var r=a.apply(this,i);return t.cache=o.set(n,r)||o,r};return t.cache=new(xi.Cache||ji),t}xi.Cache=ji;var qi=xi,Ei=500;var Ai=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Ti=/\\(\\)?/g,Oi=function(a){var e=qi(a,function(a){return t.size===Ei&&t.clear(),a}),t=e.cache;return e}(function(a){var e=[];return 46===a.charCodeAt(0)&&e.push(""),a.replace(Ai,function(a,t,i,n){e.push(i?n.replace(Ti,"$1"):t||a)}),e});var Si=function(a){return null==a?"":q(a)};var Pi=function(a,e){return k(a)?a:Ht(a,e)?[a]:Oi(Si(a))},Mi=1/0;var Ci=function(a){if("string"==typeof a||w(a))return a;var e=a+"";return"0"==e&&1/a==-Mi?"-0":e};var Ri=function(a,e){for(var t=0,i=(e=Pi(e,a)).length;null!=a&&t<i;)a=a[Ci(e[t++])];return t&&t==i?a:void 0};var Di=function(a,e,t){var i=null==a?void 0:Ri(a,e);return void 0===i?t:i};var Fi=function(a,e){for(var t=-1,i=e.length,n=Array(i),o=null==a;++t<i;)n[t]=o?void 0:Di(a,e[t]);return n};var Bi=function(a,e){for(var t=-1,i=e.length,n=a.length;++t<i;)a[n+t]=e[t];return a},$i=n?n.isConcatSpreadable:void 0;var Li=function(a){return k(a)||ht(a)||!!($i&&a&&a[$i])};var Ii=function a(e,t,i,n,o){var r=-1,s=e.length;for(i||(i=Li),o||(o=[]);++r<s;){var d=e[r];t>0&&i(d)?t>1?a(d,t-1,i,n,o):Bi(o,d):n||(o[o.length]=d)}return o};var Wi=function(a){return null!=a&&a.length?Ii(a,1):[]};var Ui=function(a){return Qa(ot(a,void 0,Wi),a+"")},Ni=Ui(Fi),Ki=Ot(Object.getPrototypeOf,Object),Hi="[object Object]",Vi=Function.prototype,Yi=Object.prototype,Gi=Vi.toString,Zi=Yi.hasOwnProperty,Ji=Gi.call(Object);var Qi=function(a){if(!f(a)||m(a)!=Hi)return!1;var e=Ki(a);if(null===e)return!0;var t=Zi.call(e,"constructor")&&e.constructor;return"function"==typeof t&&t instanceof t&&Gi.call(t)==Ji},Xi="[object DOMException]",an="[object Error]";var en=function(a){if(!f(a))return!1;var e=m(a);return e==an||e==Xi||"string"==typeof a.message&&"string"==typeof a.name&&!Qi(a)},tn=rt(function(a,e){try{return ya(a,void 0,e)}catch(a){return en(a)?a:new Error(a)}}),nn="Expected a function";var on=function(a,e){var t;if("function"!=typeof e)throw new TypeError(nn);return a=L(a),function(){return--a>0&&(t=e.apply(this,arguments)),a<=1&&(e=void 0),t}},rn=rt(function(a,e,t){var i=1;if(t.length){var n=ke(t,me(rn));i|=32}return Ze(a,i,e,t,n)});rn.placeholder={};var sn=rn,dn=Ui(function(a,e){return Xa(e,function(e){e=Ci(e),Xe(a,e,sn(a[e],a))}),a}),ln=rt(function(a,e,t){var i=3;if(t.length){var n=ke(t,me(ln));i|=32}return Ze(e,i,a,t,n)});ln.placeholder={};var cn=ln;var un=function(a,e,t){var i=-1,n=a.length;e<0&&(e=-e>n?0:n+e),(t=t>n?n:t)<0&&(t+=n),n=e>t?0:t-e>>>0,e>>>=0;for(var o=Array(n);++i<n;)o[i]=a[i+e];return o};var pn=function(a,e,t){var i=a.length;return t=void 0===t?i:t,!e&&t>=i?a:un(a,e,t)},zn=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");var gn=function(a){return zn.test(a)};var mn=function(a){return a.split("")},fn="[\\ud800-\\udfff]",yn="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",wn="\\ud83c[\\udffb-\\udfff]",bn="[^\\ud800-\\udfff]",hn="(?:\\ud83c[\\udde6-\\uddff]){2}",vn="[\\ud800-\\udbff][\\udc00-\\udfff]",kn="(?:"+yn+"|"+wn+")"+"?",jn="[\\ufe0e\\ufe0f]?"+kn+("(?:\\u200d(?:"+[bn,hn,vn].join("|")+")[\\ufe0e\\ufe0f]?"+kn+")*"),_n="(?:"+[bn+yn+"?",yn,hn,vn,fn].join("|")+")",xn=RegExp(wn+"(?="+wn+")|"+_n+jn,"g");var qn=function(a){return a.match(xn)||[]};var En=function(a){return gn(a)?qn(a):mn(a)};var An=function(a){return function(e){e=Si(e);var t=gn(e)?En(e):void 0,i=t?t[0]:e.charAt(0),n=t?pn(t,1).join(""):e.slice(1);return i[a]()+n}},Tn=An("toUpperCase");var On=function(a){return Tn(Si(a).toLowerCase())};var Sn=function(a,e,t,i){var n=-1,o=null==a?0:a.length;for(i&&o&&(t=a[++n]);++n<o;)t=e(t,a[n],n,a);return t};var Pn=function(a){return function(e){return null==a?void 0:a[e]}},Mn=Pn({"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss","Ā":"A","Ă":"A","Ą":"A","ā":"a","ă":"a","ą":"a","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","ć":"c","ĉ":"c","ċ":"c","č":"c","Ď":"D","Đ":"D","ď":"d","đ":"d","Ē":"E","Ĕ":"E","Ė":"E","Ę":"E","Ě":"E","ē":"e","ĕ":"e","ė":"e","ę":"e","ě":"e","Ĝ":"G","Ğ":"G","Ġ":"G","Ģ":"G","ĝ":"g","ğ":"g","ġ":"g","ģ":"g","Ĥ":"H","Ħ":"H","ĥ":"h","ħ":"h","Ĩ":"I","Ī":"I","Ĭ":"I","Į":"I","İ":"I","ĩ":"i","ī":"i","ĭ":"i","į":"i","ı":"i","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","ĸ":"k","Ĺ":"L","Ļ":"L","Ľ":"L","Ŀ":"L","Ł":"L","ĺ":"l","ļ":"l","ľ":"l","ŀ":"l","ł":"l","Ń":"N","Ņ":"N","Ň":"N","Ŋ":"N","ń":"n","ņ":"n","ň":"n","ŋ":"n","Ō":"O","Ŏ":"O","Ő":"O","ō":"o","ŏ":"o","ő":"o","Ŕ":"R","Ŗ":"R","Ř":"R","ŕ":"r","ŗ":"r","ř":"r","Ś":"S","Ŝ":"S","Ş":"S","Š":"S","ś":"s","ŝ":"s","ş":"s","š":"s","Ţ":"T","Ť":"T","Ŧ":"T","ţ":"t","ť":"t","ŧ":"t","Ũ":"U","Ū":"U","Ŭ":"U","Ů":"U","Ű":"U","Ų":"U","ũ":"u","ū":"u","ŭ":"u","ů":"u","ű":"u","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","Ż":"Z","Ž":"Z","ź":"z","ż":"z","ž":"z","IJ":"IJ","ij":"ij","Œ":"Oe","œ":"oe","ʼn":"'n","ſ":"s"}),Cn=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,Rn=RegExp("[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]","g");var Dn=function(a){return(a=Si(a))&&a.replace(Cn,Mn).replace(Rn,"")},Fn=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;var Bn=function(a){return a.match(Fn)||[]},$n=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;var Ln=function(a){return $n.test(a)},In="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",Wn="["+In+"]",Un="\\d+",Nn="[\\u2700-\\u27bf]",Kn="[a-z\\xdf-\\xf6\\xf8-\\xff]",Hn="[^\\ud800-\\udfff"+In+Un+"\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",Vn="(?:\\ud83c[\\udde6-\\uddff]){2}",Yn="[\\ud800-\\udbff][\\udc00-\\udfff]",Gn="[A-Z\\xc0-\\xd6\\xd8-\\xde]",Zn="(?:"+Kn+"|"+Hn+")",Jn="(?:"+Gn+"|"+Hn+")",Qn="(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?",Xn="[\\ufe0e\\ufe0f]?"+Qn+("(?:\\u200d(?:"+["[^\\ud800-\\udfff]",Vn,Yn].join("|")+")[\\ufe0e\\ufe0f]?"+Qn+")*"),ao="(?:"+[Nn,Vn,Yn].join("|")+")"+Xn,eo=RegExp([Gn+"?"+Kn+"+(?:['’](?:d|ll|m|re|s|t|ve))?(?="+[Wn,Gn,"$"].join("|")+")",Jn+"+(?:['’](?:D|LL|M|RE|S|T|VE))?(?="+[Wn,Gn+Zn,"$"].join("|")+")",Gn+"?"+Zn+"+(?:['’](?:d|ll|m|re|s|t|ve))?",Gn+"+(?:['’](?:D|LL|M|RE|S|T|VE))?","\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",Un,ao].join("|"),"g");var to=function(a){return a.match(eo)||[]};var io=function(a,e,t){return a=Si(a),void 0===(e=t?void 0:e)?Ln(a)?to(a):Bn(a):a.match(e)||[]},no=RegExp("['’]","g");var oo=function(a){return function(e){return Sn(io(Dn(e).replace(no,"")),a,"")}},ro=oo(function(a,e,t){return e=e.toLowerCase(),a+(t?On(e):e)});var so=function(){if(!arguments.length)return[];var a=arguments[0];return k(a)?a:[a]},lo=Math.min;var co=function(a){var e=Math[a];return function(a,t){if(a=D(a),t=null==t?0:lo(L(t),292)){var i=(Si(a)+"e").split("e"),n=e(i[0]+"e"+(+i[1]+t));return+((i=(Si(n)+"e").split("e"))[0]+"e"+(+i[1]-t))}return e(a)}},uo=co("ceil");var po=function(a){var e=Ba(a);return e.__chain__=!0,e},zo=Math.ceil,go=Math.max;var mo=function(a,e,t){e=(t?ct(a,e,t):void 0===e)?1:go(L(e),0);var i=null==a?0:a.length;if(!i||e<1)return[];for(var n=0,o=0,r=Array(zo(i/e));n<i;)r[o++]=un(a,n,n+=e);return r};var fo=function(a,e,t){return a==a&&(void 0!==t&&(a=a<=t?a:t),void 0!==e&&(a=a>=e?a:e)),a};var yo=function(a,e,t){return void 0===t&&(t=e,e=void 0),void 0!==t&&(t=(t=D(t))==t?t:0),void 0!==e&&(e=(e=D(e))==e?e:0),fo(D(a),e,t)};var wo=function(){this.__data__=new zi,this.size=0};var bo=function(a){var e=this.__data__,t=e.delete(a);return this.size=e.size,t};var ho=function(a){return this.__data__.get(a)};var vo=function(a){return this.__data__.has(a)},ko=200;var jo=function(a,e){var t=this.__data__;if(t instanceof zi){var i=t.__data__;if(!gi||i.length<ko-1)return i.push([a,e]),this.size=++t.size,this;t=this.__data__=new ji(i)}return t.set(a,e),this.size=t.size,this};function _o(a){var e=this.__data__=new zi(a);this.size=e.size}_o.prototype.clear=wo,_o.prototype.delete=bo,_o.prototype.get=ho,_o.prototype.has=vo,_o.prototype.set=jo;var xo=_o;var qo=function(a,e){return a&&it(e,Ct(e),a)};var Eo=function(a,e){return a&&it(e,Lt(e),a)},Ao=t(297);var To=function(a,e){for(var t=-1,i=null==a?0:a.length,n=0,o=[];++t<i;){var r=a[t];e(r,t,a)&&(o[n++]=r)}return o};var Oo=function(){return[]},So=Object.prototype.propertyIsEnumerable,Po=Object.getOwnPropertySymbols,Mo=Po?function(a){return null==a?[]:(a=Object(a),To(Po(a),function(e){return So.call(a,e)}))}:Oo;var Co=function(a,e){return it(a,Mo(a),e)},Ro=Object.getOwnPropertySymbols?function(a){for(var e=[];a;)Bi(e,Mo(a)),a=Ki(a);return e}:Oo;var Do=function(a,e){return it(a,Ro(a),e)};var Fo=function(a,e,t){var i=e(a);return k(a)?i:Bi(i,t(a))};var Bo=function(a){return Fo(a,Ct,Mo)};var $o=function(a){return Fo(a,Lt,Ro)},Lo=da(i.a,"DataView"),Io=da(i.a,"Promise"),Wo=da(i.a,"Set"),Uo=X(Lo),No=X(gi),Ko=X(Io),Ho=X(Wo),Vo=X(la),Yo=m;(Lo&&"[object DataView]"!=Yo(new Lo(new ArrayBuffer(1)))||gi&&"[object Map]"!=Yo(new gi)||Io&&"[object Promise]"!=Yo(Io.resolve())||Wo&&"[object Set]"!=Yo(new Wo)||la&&"[object WeakMap]"!=Yo(new la))&&(Yo=function(a){var e=m(a),t="[object Object]"==e?a.constructor:void 0,i=t?X(t):"";if(i)switch(i){case Uo:return"[object DataView]";case No:return"[object Map]";case Ko:return"[object Promise]";case Ho:return"[object Set]";case Vo:return"[object WeakMap]"}return e});var Go=Yo,Zo=Object.prototype.hasOwnProperty;var Jo=function(a){var e=a.length,t=new a.constructor(e);return e&&"string"==typeof a[0]&&Zo.call(a,"index")&&(t.index=a.index,t.input=a.input),t},Qo=i.a.Uint8Array;var Xo=function(a){var e=new a.constructor(a.byteLength);return new Qo(e).set(new Qo(a)),e};var ar=function(a,e){var t=e?Xo(a.buffer):a.buffer;return new a.constructor(t,a.byteOffset,a.byteLength)},er=/\w*$/;var tr=function(a){var e=new a.constructor(a.source,er.exec(a));return e.lastIndex=a.lastIndex,e},ir=n?n.prototype:void 0,nr=ir?ir.valueOf:void 0;var or=function(a){return nr?Object(nr.call(a)):{}};var rr=function(a,e){var t=e?Xo(a.buffer):a.buffer;return new a.constructor(t,a.byteOffset,a.length)},sr="[object Boolean]",dr="[object Date]",lr="[object Map]",cr="[object Number]",ur="[object RegExp]",pr="[object Set]",zr="[object String]",gr="[object Symbol]",mr="[object ArrayBuffer]",fr="[object DataView]",yr="[object Float32Array]",wr="[object Float64Array]",br="[object Int8Array]",hr="[object Int16Array]",vr="[object Int32Array]",kr="[object Uint8Array]",jr="[object Uint8ClampedArray]",_r="[object Uint16Array]",xr="[object Uint32Array]";var qr=function(a,e,t){var i=a.constructor;switch(e){case mr:return Xo(a);case sr:case dr:return new i(+a);case fr:return ar(a,t);case yr:case wr:case br:case hr:case vr:case kr:case jr:case _r:case xr:return rr(a,t);case lr:return new i;case cr:case zr:return new i(a);case ur:return tr(a);case pr:return new i;case gr:return or(a)}};var Er=function(a){return"function"!=typeof a.constructor||zt(a)?{}:za(Ki(a))},Ar="[object Map]";var Tr=function(a){return f(a)&&Go(a)==Ar},Or=xt.a&&xt.a.isMap,Sr=Or?_t(Or):Tr,Pr="[object Set]";var Mr=function(a){return f(a)&&Go(a)==Pr},Cr=xt.a&&xt.a.isSet,Rr=Cr?_t(Cr):Mr,Dr=1,Fr=2,Br=4,$r="[object Arguments]",Lr="[object Function]",Ir="[object GeneratorFunction]",Wr="[object Object]",Ur={};Ur[$r]=Ur["[object Array]"]=Ur["[object ArrayBuffer]"]=Ur["[object DataView]"]=Ur["[object Boolean]"]=Ur["[object Date]"]=Ur["[object Float32Array]"]=Ur["[object Float64Array]"]=Ur["[object Int8Array]"]=Ur["[object Int16Array]"]=Ur["[object Int32Array]"]=Ur["[object Map]"]=Ur["[object Number]"]=Ur[Wr]=Ur["[object RegExp]"]=Ur["[object Set]"]=Ur["[object String]"]=Ur["[object Symbol]"]=Ur["[object Uint8Array]"]=Ur["[object Uint8ClampedArray]"]=Ur["[object Uint16Array]"]=Ur["[object Uint32Array]"]=!0,Ur["[object Error]"]=Ur[Lr]=Ur["[object WeakMap]"]=!1;var Nr=function a(e,t,i,n,o,r){var s,d=t&Dr,l=t&Fr,c=t&Br;if(i&&(s=o?i(e,n,o,r):i(e)),void 0!==s)return s;if(!T(e))return e;var u=k(e);if(u){if(s=Jo(e),!d)return Ca(e,s)}else{var p=Go(e),z=p==Lr||p==Ir;if(Object(vt.a)(e))return Object(Ao.a)(e,d);if(p==Wr||p==$r||z&&!o){if(s=l||z?{}:Er(e),!d)return l?Do(e,Eo(s,e)):Co(e,qo(s,e))}else{if(!Ur[p])return o?e:{};s=qr(e,p,d)}}r||(r=new xo);var g=r.get(e);if(g)return g;if(r.set(e,s),Rr(e))return e.forEach(function(n){s.add(a(n,t,i,n,e,r))}),s;if(Sr(e))return e.forEach(function(n,o){s.set(o,a(n,t,i,o,e,r))}),s;var m=c?l?$o:Bo:l?keysIn:Ct,f=u?void 0:m(e);return Xa(f||e,function(n,o){f&&(n=e[o=n]),tt(s,o,a(n,t,i,o,e,r))}),s},Kr=4;var Hr=function(a){return Nr(a,Kr)},Vr=1,Yr=4;var Gr=function(a){return Nr(a,Vr|Yr)},Zr=1,Jr=4;var Qr=function(a,e){return Nr(a,Zr|Jr,e="function"==typeof e?e:void 0)},Xr=4;var as=function(a,e){return Nr(a,Xr,e="function"==typeof e?e:void 0)};var es=function(){return new Ma(this.value(),this.__chain__)};var ts=function(a){for(var e=-1,t=null==a?0:a.length,i=0,n=[];++e<t;){var o=a[e];o&&(n[i++]=o)}return n};var is=function(){var a=arguments.length;if(!a)return[];for(var e=Array(a-1),t=arguments[0],i=a;i--;)e[i-1]=arguments[i];return Bi(k(t)?Ca(t):[t],Ii(e,1))},ns="__lodash_hash_undefined__";var os=function(a){return this.__data__.set(a,ns),this};var rs=function(a){return this.__data__.has(a)};function ss(a){var e=-1,t=null==a?0:a.length;for(this.__data__=new ji;++e<t;)this.add(a[e])}ss.prototype.add=ss.prototype.push=os,ss.prototype.has=rs;var ds=ss;var ls=function(a,e){for(var t=-1,i=null==a?0:a.length;++t<i;)if(e(a[t],t,a))return!0;return!1};var cs=function(a,e){return a.has(e)},us=1,ps=2;var zs=function(a,e,t,i,n,o){var r=t&us,s=a.length,d=e.length;if(s!=d&&!(r&&d>s))return!1;var l=o.get(a);if(l&&o.get(e))return l==e;var c=-1,u=!0,p=t&ps?new ds:void 0;for(o.set(a,e),o.set(e,a);++c<s;){var z=a[c],g=e[c];if(i)var m=r?i(g,z,c,e,a,o):i(z,g,c,a,e,o);if(void 0!==m){if(m)continue;u=!1;break}if(p){if(!ls(e,function(a,e){if(!cs(p,e)&&(z===a||n(z,a,t,i,o)))return p.push(e)})){u=!1;break}}else if(z!==g&&!n(z,g,t,i,o)){u=!1;break}}return o.delete(a),o.delete(e),u};var gs=function(a){var e=-1,t=Array(a.size);return a.forEach(function(a,i){t[++e]=[i,a]}),t};var ms=function(a){var e=-1,t=Array(a.size);return a.forEach(function(a){t[++e]=a}),t},fs=1,ys=2,ws="[object Boolean]",bs="[object Date]",hs="[object Error]",vs="[object Map]",ks="[object Number]",js="[object RegExp]",_s="[object Set]",xs="[object String]",qs="[object Symbol]",Es="[object ArrayBuffer]",As="[object DataView]",Ts=n?n.prototype:void 0,Os=Ts?Ts.valueOf:void 0;var Ss=function(a,e,t,i,n,o,r){switch(t){case As:if(a.byteLength!=e.byteLength||a.byteOffset!=e.byteOffset)return!1;a=a.buffer,e=e.buffer;case Es:return!(a.byteLength!=e.byteLength||!o(new Qo(a),new Qo(e)));case ws:case bs:case ks:return at(+a,+e);case hs:return a.name==e.name&&a.message==e.message;case js:case xs:return a==e+"";case vs:var s=gs;case _s:var d=i&fs;if(s||(s=ms),a.size!=e.size&&!d)return!1;var l=r.get(a);if(l)return l==e;i|=ys,r.set(a,e);var c=zs(s(a),s(e),i,n,o,r);return r.delete(a),c;case qs:if(Os)return Os.call(a)==Os.call(e)}return!1},Ps=1,Ms=Object.prototype.hasOwnProperty;var Cs=function(a,e,t,i,n,o){var r=t&Ps,s=Bo(a),d=s.length;if(d!=Bo(e).length&&!r)return!1;for(var l=d;l--;){var c=s[l];if(!(r?c in e:Ms.call(e,c)))return!1}var u=o.get(a);if(u&&o.get(e))return u==e;var p=!0;o.set(a,e),o.set(e,a);for(var z=r;++l<d;){var g=a[c=s[l]],m=e[c];if(i)var f=r?i(m,g,c,e,a,o):i(g,m,c,a,e,o);if(!(void 0===f?g===m||n(g,m,t,i,o):f)){p=!1;break}z||(z="constructor"==c)}if(p&&!z){var y=a.constructor,w=e.constructor;y!=w&&"constructor"in a&&"constructor"in e&&!("function"==typeof y&&y instanceof y&&"function"==typeof w&&w instanceof w)&&(p=!1)}return o.delete(a),o.delete(e),p},Rs=1,Ds="[object Arguments]",Fs="[object Array]",Bs="[object Object]",$s=Object.prototype.hasOwnProperty;var Ls=function(a,e,t,i,n,o){var r=k(a),s=k(e),d=r?Fs:Go(a),l=s?Fs:Go(e),c=(d=d==Ds?Bs:d)==Bs,u=(l=l==Ds?Bs:l)==Bs,p=d==l;if(p&&Object(vt.a)(a)){if(!Object(vt.a)(e))return!1;r=!0,c=!1}if(p&&!c)return o||(o=new xo),r||Et(a)?zs(a,e,t,i,n,o):Ss(a,e,d,t,i,n,o);if(!(t&Rs)){var z=c&&$s.call(a,"__wrapped__"),g=u&&$s.call(e,"__wrapped__");if(z||g){var m=z?a.value():a,f=g?e.value():e;return o||(o=new xo),n(m,f,t,i,o)}}return!!p&&(o||(o=new xo),Cs(a,e,t,i,n,o))};var Is=function a(e,t,i,n,o){return e===t||(null==e||null==t||!f(e)&&!f(t)?e!=e&&t!=t:Ls(e,t,i,n,a,o))},Ws=1,Us=2;var Ns=function(a,e,t,i){var n=t.length,o=n,r=!i;if(null==a)return!o;for(a=Object(a);n--;){var s=t[n];if(r&&s[2]?s[1]!==a[s[0]]:!(s[0]in a))return!1}for(;++n<o;){var d=(s=t[n])[0],l=a[d],c=s[1];if(r&&s[2]){if(void 0===l&&!(d in a))return!1}else{var u=new xo;if(i)var p=i(l,c,d,a,e,u);if(!(void 0===p?Is(c,l,Ws|Us,i,u):p))return!1}}return!0};var Ks=function(a){return a==a&&!T(a)};var Hs=function(a){for(var e=Ct(a),t=e.length;t--;){var i=e[t],n=a[i];e[t]=[i,n,Ks(n)]}return e};var Vs=function(a,e){return function(t){return null!=t&&t[a]===e&&(void 0!==e||a in Object(t))}};var Ys=function(a){var e=Hs(a);return 1==e.length&&e[0][2]?Vs(e[0][0],e[0][1]):function(t){return t===a||Ns(t,a,e)}};var Gs=function(a,e){return null!=a&&e in Object(a)};var Zs=function(a,e,t){for(var i=-1,n=(e=Pi(e,a)).length,o=!1;++i<n;){var r=Ci(e[i]);if(!(o=null!=a&&t(a,r)))break;a=a[r]}return o||++i!=n?o:!!(n=null==a?0:a.length)&&dt(n)&&we(r,n)&&(k(a)||ht(a))};var Js=function(a,e){return null!=a&&Zs(a,e,Gs)},Qs=1,Xs=2;var ad=function(a,e){return Ht(a)&&Ks(e)?Vs(Ci(a),e):function(t){var i=Di(t,a);return void 0===i&&i===e?Js(t,a):Is(e,i,Qs|Xs)}};var ed=function(a){return function(e){return null==e?void 0:e[a]}};var td=function(a){return function(e){return Ri(e,a)}};var id=function(a){return Ht(a)?ed(Ci(a)):td(a)};var nd=function(a){return"function"==typeof a?a:null==a?U:"object"==typeof a?k(a)?ad(a[0],a[1]):Ys(a):id(a)},od="Expected a function";var rd=function(a){var e=null==a?0:a.length,t=nd;return a=e?v(a,function(a){if("function"!=typeof a[1])throw new TypeError(od);return[t(a[0]),a[1]]}):[],rt(function(t){for(var i=-1;++i<e;){var n=a[i];if(ya(n[0],this,t))return ya(n[1],this,t)}})};var sd=function(a,e,t){var i=t.length;if(null==a)return!i;for(a=Object(a);i--;){var n=t[i],o=e[n],r=a[n];if(void 0===r&&!(n in a)||!o(r))return!1}return!0};var dd=function(a){var e=Ct(a);return function(t){return sd(t,a,e)}},ld=1;var cd=function(a){return dd(Nr(a,ld))};var ud=function(a,e){return null==e||sd(a,e,Ct(e))};var pd=function(a,e,t,i){for(var n=-1,o=null==a?0:a.length;++n<o;){var r=a[n];e(i,r,t(r),a)}return i};var zd=function(a){return function(e,t,i){for(var n=-1,o=Object(e),r=i(e),s=r.length;s--;){var d=r[a?s:++n];if(!1===t(o[d],d,o))break}return e}},gd=zd();var md=function(a,e){return a&&gd(a,e,Ct)};var fd=function(a,e){return function(t,i){if(null==t)return t;if(!lt(t))return a(t,i);for(var n=t.length,o=e?n:-1,r=Object(t);(e?o--:++o<n)&&!1!==i(r[o],o,r););return t}},yd=fd(md);var wd=function(a,e,t,i){return yd(a,function(a,n,o){e(i,a,t(a),o)}),i};var bd=function(a,e){return function(t,i){var n=k(t)?pd:wd,o=e?e():{};return n(t,a,nd(i,2),o)}},hd=Object.prototype.hasOwnProperty,vd=bd(function(a,e,t){hd.call(a,t)?++a[t]:Xe(a,t,1)});var kd=function(a,e){var t=za(a);return null==e?t:qo(t,e)},jd=8;function _d(a,e,t){var i=Ze(a,jd,void 0,void 0,void 0,void 0,void 0,e=t?void 0:e);return i.placeholder=_d.placeholder,i}_d.placeholder={};var xd=_d,qd=16;function Ed(a,e,t){var i=Ze(a,qd,void 0,void 0,void 0,void 0,void 0,e=t?void 0:e);return i.placeholder=Ed.placeholder,i}Ed.placeholder={};var Ad=Ed,Td=function(){return i.a.Date.now()},Od="Expected a function",Sd=Math.max,Pd=Math.min;var Md=function(a,e,t){var i,n,o,r,s,d,l=0,c=!1,u=!1,p=!0;if("function"!=typeof a)throw new TypeError(Od);function z(e){var t=i,o=n;return i=n=void 0,l=e,r=a.apply(o,t)}function g(a){var t=a-d;return void 0===d||t>=e||t<0||u&&a-l>=o}function m(){var a=Td();if(g(a))return f(a);s=setTimeout(m,function(a){var t=e-(a-d);return u?Pd(t,o-(a-l)):t}(a))}function f(a){return s=void 0,p&&i?z(a):(i=n=void 0,r)}function y(){var a=Td(),t=g(a);if(i=arguments,n=this,d=a,t){if(void 0===s)return function(a){return l=a,s=setTimeout(m,e),c?z(a):r}(d);if(u)return s=setTimeout(m,e),z(d)}return void 0===s&&(s=setTimeout(m,e)),r}return e=D(e)||0,T(t)&&(c=!!t.leading,o=(u="maxWait"in t)?Sd(D(t.maxWait)||0,e):o,p="trailing"in t?!!t.trailing:p),y.cancel=function(){void 0!==s&&clearTimeout(s),l=0,i=d=n=s=void 0},y.flush=function(){return void 0===s?r:f(Td())},y};var Cd=function(a,e){return null==a||a!=a?e:a},Rd=Object.prototype,Dd=Rd.hasOwnProperty,Fd=rt(function(a,e){a=Object(a);var t=-1,i=e.length,n=i>2?e[2]:void 0;for(n&&ct(e[0],e[1],n)&&(i=1);++t<i;)for(var o=e[t],r=Lt(o),s=-1,d=r.length;++s<d;){var l=r[s],c=a[l];(void 0===c||at(c,Rd[l])&&!Dd.call(a,l))&&(a[l]=o[l])}return a});var Bd=function(a,e,t){(void 0===t||at(a[e],t))&&(void 0!==t||e in a)||Xe(a,e,t)};var $d=function(a){return f(a)&&lt(a)};var Ld=function(a,e){if("__proto__"!=e)return a[e]};var Id=function(a){return it(a,Lt(a))};var Wd=function(a,e,t,i,n,o,r){var s=Ld(a,t),d=Ld(e,t),l=r.get(d);if(l)Bd(a,t,l);else{var c=o?o(s,d,t+"",a,e,r):void 0,u=void 0===c;if(u){var p=k(d),z=!p&&Object(vt.a)(d),g=!p&&!z&&Et(d);c=d,p||z||g?k(s)?c=s:$d(s)?c=Ca(s):z?(u=!1,c=Object(Ao.a)(d,!0)):g?(u=!1,c=rr(d,!0)):c=[]:Qi(d)||ht(d)?(c=s,ht(s)?c=Id(s):T(s)&&!Y(s)||(c=Er(d))):u=!1}u&&(r.set(d,c),n(c,d,i,o,r),r.delete(d)),Bd(a,t,c)}};var Ud=function a(e,t,i,n,o){e!==t&&gd(t,function(r,s){if(T(r))o||(o=new xo),Wd(e,t,s,i,a,n,o);else{var d=n?n(Ld(e,s),r,s+"",e,t,o):void 0;void 0===d&&(d=r),Bd(e,s,d)}},Lt)};var Nd=function a(e,t,i,n,o,r){return T(e)&&T(t)&&(r.set(t,e),Ud(e,t,void 0,a,r),r.delete(t)),e},Kd=ut(function(a,e,t,i){Ud(a,e,t,i)}),Hd=rt(function(a){return a.push(void 0,Nd),ya(Kd,void 0,a)}),Vd="Expected a function";var Yd=function(a,e,t){if("function"!=typeof a)throw new TypeError(Vd);return setTimeout(function(){a.apply(void 0,t)},e)},Gd=rt(function(a,e){return Yd(a,1,e)}),Zd=rt(function(a,e,t){return Yd(a,D(e)||0,t)});var Jd=function(a,e,t){for(var i=-1,n=null==a?0:a.length;++i<n;)if(t(e,a[i]))return!0;return!1},Qd=200;var Xd=function(a,e,t,i){var n=-1,o=ne,r=!0,s=a.length,d=[],l=e.length;if(!s)return d;t&&(e=v(e,_t(t))),i?(o=Jd,r=!1):e.length>=Qd&&(o=cs,r=!1,e=new ds(e));a:for(;++n<s;){var c=a[n],u=null==t?c:t(c);if(c=i||0!==c?c:0,r&&u==u){for(var p=l;p--;)if(e[p]===u)continue a;d.push(c)}else o(e,u,i)||d.push(c)}return d},al=rt(function(a,e){return $d(a)?Xd(a,Ii(e,1,$d,!0)):[]});var el=function(a){var e=null==a?0:a.length;return e?a[e-1]:void 0},tl=rt(function(a,e){var t=el(e);return $d(t)&&(t=void 0),$d(a)?Xd(a,Ii(e,1,$d,!0),nd(t,2)):[]}),il=rt(function(a,e){var t=el(e);return $d(t)&&(t=void 0),$d(a)?Xd(a,Ii(e,1,$d,!0),void 0,t):[]}),nl=E(function(a,e){return a/e},1);var ol=function(a,e,t){var i=null==a?0:a.length;return i?(e=t||void 0===e?1:L(e),un(a,e<0?0:e,i)):[]};var rl=function(a,e,t){var i=null==a?0:a.length;return i?(e=t||void 0===e?1:L(e),un(a,0,(e=i-e)<0?0:e)):[]};var sl=function(a,e,t,i){for(var n=a.length,o=i?n:-1;(i?o--:++o<n)&&e(a[o],o,a););return t?un(a,i?0:o,i?o+1:n):un(a,i?o+1:0,i?n:o)};var dl=function(a,e){return a&&a.length?sl(a,nd(e,3),!0,!0):[]};var ll=function(a,e){return a&&a.length?sl(a,nd(e,3),!0):[]};var cl=function(a){return"function"==typeof a?a:U};var ul=function(a,e){return(k(a)?Xa:yd)(a,cl(e))};var pl=function(a,e){for(var t=null==a?0:a.length;t--&&!1!==e(a[t],t,a););return a},zl=zd(!0);var gl=function(a,e){return a&&zl(a,e,Ct)},ml=fd(gl,!0);var fl=function(a,e){return(k(a)?pl:ml)(a,cl(e))};var yl=function(a,e,t){a=Si(a),e=q(e);var i=a.length,n=t=void 0===t?i:fo(L(t),0,i);return(t-=e.length)>=0&&a.slice(t,n)==e};var wl=function(a,e){return v(e,function(e){return[e,a[e]]})};var bl=function(a){var e=-1,t=Array(a.size);return a.forEach(function(a){t[++e]=[a,a]}),t},hl="[object Map]",vl="[object Set]";var kl=function(a){return function(e){var t=Go(e);return t==hl?gs(e):t==vl?bl(e):wl(e,a(e))}},jl=kl(Ct),_l=kl(Lt),xl=Pn({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"}),ql=/[&<>"']/g,El=RegExp(ql.source);var Al=function(a){return(a=Si(a))&&El.test(a)?a.replace(ql,xl):a},Tl=/[\\^$.*+?()[\]{}|]/g,Ol=RegExp(Tl.source);var Sl=function(a){return(a=Si(a))&&Ol.test(a)?a.replace(Tl,"\\$&"):a};var Pl=function(a,e){for(var t=-1,i=null==a?0:a.length;++t<i;)if(!e(a[t],t,a))return!1;return!0};var Ml=function(a,e){var t=!0;return yd(a,function(a,i,n){return t=!!e(a,i,n)}),t};var Cl=function(a,e,t){var i=k(a)?Pl:Ml;return t&&ct(a,e,t)&&(e=void 0),i(a,nd(e,3))},Rl=4294967295;var Dl=function(a){return a?fo(L(a),0,Rl):0};var Fl=function(a,e,t,i){var n=a.length;for((t=L(t))<0&&(t=-t>n?0:n+t),(i=void 0===i||i>n?n:L(i))<0&&(i+=n),i=t>i?0:Dl(i);t<i;)a[t++]=e;return a};var Bl=function(a,e,t,i){var n=null==a?0:a.length;return n?(t&&"number"!=typeof t&&ct(a,e,t)&&(t=0,i=n),Fl(a,e,t,i)):[]};var $l=function(a,e){var t=[];return yd(a,function(a,i,n){e(a,i,n)&&t.push(a)}),t};var Ll=function(a,e){return(k(a)?To:$l)(a,nd(e,3))};var Il=function(a){return function(e,t,i){var n=Object(e);if(!lt(e)){var o=nd(t,3);e=Ct(e),t=function(a){return o(n[a],a,n)}}var r=a(e,t,i);return r>-1?n[o?e[r]:r]:void 0}},Wl=Math.max;var Ul=function(a,e,t){var i=null==a?0:a.length;if(!i)return-1;var n=null==t?0:L(t);return n<0&&(n=Wl(i+n,0)),ae(a,nd(e,3),n)},Nl=Il(Ul);var Kl=function(a,e,t){var i;return t(a,function(a,t,n){if(e(a,t,n))return i=t,!1}),i};var Hl=function(a,e){return Kl(a,nd(e,3),md)},Vl=Math.max,Yl=Math.min;var Gl=function(a,e,t){var i=null==a?0:a.length;if(!i)return-1;var n=i-1;return void 0!==t&&(n=L(t),n=t<0?Vl(i+n,0):Yl(n,i-1)),ae(a,nd(e,3),n,!0)},Zl=Il(Gl);var Jl=function(a,e){return Kl(a,nd(e,3),gl)};var Ql=function(a){return a&&a.length?a[0]:void 0};var Xl=function(a,e){var t=-1,i=lt(a)?Array(a.length):[];return yd(a,function(a,n,o){i[++t]=e(a,n,o)}),i};var ac=function(a,e){return(k(a)?v:Xl)(a,nd(e,3))};var ec=function(a,e){return Ii(ac(a,e),1)},tc=1/0;var ic=function(a,e){return Ii(ac(a,e),tc)};var nc=function(a,e,t){return t=void 0===t?1:L(t),Ii(ac(a,e),t)},oc=1/0;var rc=function(a){return null!=a&&a.length?Ii(a,oc):[]};var sc=function(a,e){return null!=a&&a.length?(e=void 0===e?1:L(e),Ii(a,e)):[]},dc=512;var lc=function(a){return Ze(a,dc)},cc=co("floor"),uc="Expected a function",pc=8,zc=32,gc=128,mc=256;var fc=function(a){return Ui(function(e){var t=e.length,i=t,n=Ma.prototype.thru;for(a&&e.reverse();i--;){var o=e[i];if("function"!=typeof o)throw new TypeError(uc);if(n&&!r&&"wrapper"==Sa(o))var r=new Ma([],!0)}for(i=r?i:t;++i<t;){o=e[i];var s=Sa(o),d="wrapper"==s?Aa(o):void 0;r=d&&$a(d[0])&&d[1]==(gc|pc|zc|mc)&&!d[4].length&&1==d[9]?r[Sa(d[0])].apply(r,d[3]):1==o.length&&$a(o)?r[s]():r.thru(o)}return function(){var a=arguments,i=a[0];if(r&&1==a.length&&k(i))return r.plant(i).value();for(var n=0,o=t?e[n].apply(this,a):i;++n<t;)o=e[n].call(this,o);return o}})},yc=fc(),wc=fc(!0);var bc=function(a,e){return null==a?a:gd(a,cl(e),Lt)};var hc=function(a,e){return null==a?a:zl(a,cl(e),Lt)};var vc=function(a,e){return a&&md(a,cl(e))};var kc=function(a,e){return a&&gl(a,cl(e))};var jc=function(a){for(var e=-1,t=null==a?0:a.length,i={};++e<t;){var n=a[e];i[n[0]]=n[1]}return i};var _c=function(a,e){return To(e,function(e){return Y(a[e])})};var xc=function(a){return null==a?[]:_c(a,Ct(a))};var qc=function(a){return null==a?[]:_c(a,Lt(a))},Ec=Object.prototype.hasOwnProperty,Ac=bd(function(a,e,t){Ec.call(a,t)?a[t].push(e):Xe(a,t,[e])});var Tc=function(a,e){return a>e};var Oc=function(a){return function(e,t){return"string"==typeof e&&"string"==typeof t||(e=D(e),t=D(t)),a(e,t)}},Sc=Oc(Tc),Pc=Oc(function(a,e){return a>=e}),Mc=Object.prototype.hasOwnProperty;var Cc=function(a,e){return null!=a&&Mc.call(a,e)};var Rc=function(a,e){return null!=a&&Zs(a,e,Cc)},Dc=Math.max,Fc=Math.min;var Bc=function(a,e,t){return a>=Fc(e,t)&&a<Dc(e,t)};var $c=function(a,e,t){return e=$(e),void 0===t?(t=e,e=0):t=$(t),a=D(a),Bc(a,e,t)},Lc="[object String]";var Ic=function(a){return"string"==typeof a||!k(a)&&f(a)&&m(a)==Lc};var Wc=function(a,e){return v(e,function(e){return a[e]})};var Uc=function(a){return null==a?[]:Wc(a,Ct(a))},Nc=Math.max;var Kc=function(a,e,t,i){a=lt(a)?a:Uc(a),t=t&&!i?L(t):0;var n=a.length;return t<0&&(t=Nc(n+t,0)),Ic(a)?t<=n&&a.indexOf(e,t)>-1:!!n&&ie(a,e,t)>-1},Hc=Math.max;var Vc=function(a,e,t){var i=null==a?0:a.length;if(!i)return-1;var n=null==t?0:L(t);return n<0&&(n=Hc(i+n,0)),ie(a,e,n)};var Yc=function(a){return null!=a&&a.length?un(a,0,-1):[]},Gc=Math.min;var Zc=function(a,e,t){for(var i=t?Jd:ne,n=a[0].length,o=a.length,r=o,s=Array(o),d=1/0,l=[];r--;){var c=a[r];r&&e&&(c=v(c,_t(e))),d=Gc(c.length,d),s[r]=!t&&(e||n>=120&&c.length>=120)?new ds(r&&c):void 0}c=a[0];var u=-1,p=s[0];a:for(;++u<n&&l.length<d;){var z=c[u],g=e?e(z):z;if(z=t||0!==z?z:0,!(p?cs(p,g):i(l,g,t))){for(r=o;--r;){var m=s[r];if(!(m?cs(m,g):i(a[r],g,t)))continue a}p&&p.push(g),l.push(z)}}return l};var Jc=function(a){return $d(a)?a:[]},Qc=rt(function(a){var e=v(a,Jc);return e.length&&e[0]===a[0]?Zc(e):[]}),Xc=rt(function(a){var e=el(a),t=v(a,Jc);return e===el(t)?e=void 0:t.pop(),t.length&&t[0]===a[0]?Zc(t,nd(e,2)):[]}),au=rt(function(a){var e=el(a),t=v(a,Jc);return(e="function"==typeof e?e:void 0)&&t.pop(),t.length&&t[0]===a[0]?Zc(t,void 0,e):[]});var eu=function(a,e,t,i){return md(a,function(a,n,o){e(i,t(a),n,o)}),i};var tu=function(a,e){return function(t,i){return eu(t,a,e(i),{})}},iu=Object.prototype.toString,nu=tu(function(a,e,t){null!=e&&"function"!=typeof e.toString&&(e=iu.call(e)),a[e]=t},Za(U)),ou=Object.prototype,ru=ou.hasOwnProperty,su=ou.toString,du=tu(function(a,e,t){null!=e&&"function"!=typeof e.toString&&(e=su.call(e)),ru.call(a,e)?a[e].push(t):a[e]=[t]},nd);var lu=function(a,e){return e.length<2?a:Ri(a,un(e,0,-1))};var cu=function(a,e,t){e=Pi(e,a);var i=null==(a=lu(a,e))?a:a[Ci(el(e))];return null==i?void 0:ya(i,a,t)},uu=rt(cu),pu=rt(function(a,e,t){var i=-1,n="function"==typeof e,o=lt(a)?Array(a.length):[];return yd(a,function(a){o[++i]=n?ya(e,a,t):cu(a,e,t)}),o}),zu="[object ArrayBuffer]";var gu=function(a){return f(a)&&m(a)==zu},mu=xt.a&&xt.a.isArrayBuffer,fu=mu?_t(mu):gu,yu="[object Boolean]";var wu=function(a){return!0===a||!1===a||f(a)&&m(a)==yu},bu="[object Date]";var hu=function(a){return f(a)&&m(a)==bu},vu=xt.a&&xt.a.isDate,ku=vu?_t(vu):hu;var ju=function(a){return f(a)&&1===a.nodeType&&!Qi(a)},_u="[object Map]",xu="[object Set]",qu=Object.prototype.hasOwnProperty;var Eu=function(a){if(null==a)return!0;if(lt(a)&&(k(a)||"string"==typeof a||"function"==typeof a.splice||Object(vt.a)(a)||Et(a)||ht(a)))return!a.length;var e=Go(a);if(e==_u||e==xu)return!a.size;if(zt(a))return!Mt(a).length;for(var t in a)if(qu.call(a,t))return!1;return!0};var Au=function(a,e){return Is(a,e)};var Tu=function(a,e,t){var i=(t="function"==typeof t?t:void 0)?t(a,e):void 0;return void 0===i?Is(a,e,void 0,t):!!i},Ou=i.a.isFinite;var Su=function(a){return"number"==typeof a&&Ou(a)};var Pu=function(a){return"number"==typeof a&&a==L(a)};var Mu=function(a,e){return a===e||Ns(a,e,Hs(e))};var Cu=function(a,e,t){return t="function"==typeof t?t:void 0,Ns(a,e,Hs(e),t)},Ru="[object Number]";var Du=function(a){return"number"==typeof a||f(a)&&m(a)==Ru};var Fu=function(a){return Du(a)&&a!=+a},Bu=t(138),$u=G?Y:Bu.a,Lu="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.";var Iu=function(a){if($u(a))throw new Error(Lu);return ra(a)};var Wu=function(a){return null==a};var Uu=function(a){return null===a},Nu="[object RegExp]";var Ku=function(a){return f(a)&&m(a)==Nu},Hu=xt.a&&xt.a.isRegExp,Vu=Hu?_t(Hu):Ku,Yu=9007199254740991;var Gu=function(a){return Pu(a)&&a>=-Yu&&a<=Yu};var Zu=function(a){return void 0===a},Ju="[object WeakMap]";var Qu=function(a){return f(a)&&Go(a)==Ju},Xu="[object WeakSet]";var ap=function(a){return f(a)&&m(a)==Xu},ep=1;var tp=function(a){return nd("function"==typeof a?a:Nr(a,ep))},ip=Array.prototype.join;var np=function(a,e){return null==a?"":ip.call(a,e)},op=oo(function(a,e,t){return a+(t?"-":"")+e.toLowerCase()}),rp=bd(function(a,e,t){Xe(a,t,e)});var sp=function(a,e,t){for(var i=t+1;i--;)if(a[i]===e)return i;return i},dp=Math.max,lp=Math.min;var cp=function(a,e,t){var i=null==a?0:a.length;if(!i)return-1;var n=i;return void 0!==t&&(n=(n=L(t))<0?dp(i+n,0):lp(n,i-1)),e==e?sp(a,e,n):ae(a,ee,n,!0)},up=oo(function(a,e,t){return a+(t?" ":"")+e.toLowerCase()}),pp=An("toLowerCase");var zp=function(a,e){return a<e},gp=Oc(zp),mp=Oc(function(a,e){return a<=e});var fp=function(a,e){var t={};return e=nd(e,3),md(a,function(a,i,n){Xe(t,e(a,i,n),a)}),t};var yp=function(a,e){var t={};return e=nd(e,3),md(a,function(a,i,n){Xe(t,i,e(a,i,n))}),t},wp=1;var bp=function(a){return Ys(Nr(a,wp))},hp=1;var vp=function(a,e){return ad(a,Nr(e,hp))};var kp=function(a,e,t){for(var i=-1,n=a.length;++i<n;){var o=a[i],r=e(o);if(null!=r&&(void 0===s?r==r&&!w(r):t(r,s)))var s=r,d=o}return d};var jp=function(a){return a&&a.length?kp(a,U,Tc):void 0};var _p=function(a,e){return a&&a.length?kp(a,nd(e,2),Tc):void 0};var xp=function(a,e){for(var t,i=-1,n=a.length;++i<n;){var o=e(a[i]);void 0!==o&&(t=void 0===t?o:t+o)}return t},qp=NaN;var Ep=function(a,e){var t=null==a?0:a.length;return t?xp(a,e)/t:qp};var Ap=function(a){return Ep(a,U)};var Tp=function(a,e){return Ep(a,nd(e,2))},Op=ut(function(a,e,t){Ud(a,e,t)}),Sp=rt(function(a,e){return function(t){return cu(t,a,e)}}),Pp=rt(function(a,e){return function(t){return cu(a,t,e)}});var Mp=function(a){return a&&a.length?kp(a,U,zp):void 0};var Cp=function(a,e){return a&&a.length?kp(a,nd(e,2),zp):void 0};var Rp=function(a,e,t){var i=Ct(e),n=_c(e,i),o=!(T(t)&&"chain"in t&&!t.chain),r=Y(a);return Xa(n,function(t){var i=e[t];a[t]=i,r&&(a.prototype[t]=function(){var e=this.__chain__;if(o||e){var t=a(this.__wrapped__);return(t.__actions__=Ca(this.__actions__)).push({func:i,args:arguments,thisArg:a}),t.__chain__=e,t}return i.apply(a,Bi([this.value()],arguments))})}),a},Dp=E(function(a,e){return a*e},1),Fp="Expected a function";var Bp=function(a){if("function"!=typeof a)throw new TypeError(Fp);return function(){var e=arguments;switch(e.length){case 0:return!a.call(this);case 1:return!a.call(this,e[0]);case 2:return!a.call(this,e[0],e[1]);case 3:return!a.call(this,e[0],e[1],e[2])}return!a.apply(this,e)}};var $p=function(a){for(var e,t=[];!(e=a.next()).done;)t.push(e.value);return t},Lp="[object Map]",Ip="[object Set]",Wp=n?n.iterator:void 0;var Up=function(a){if(!a)return[];if(lt(a))return Ic(a)?En(a):Ca(a);if(Wp&&a[Wp])return $p(a[Wp]());var e=Go(a);return(e==Lp?gs:e==Ip?ms:Uc)(a)};var Np=function(){void 0===this.__values__&&(this.__values__=Up(this.value()));var a=this.__index__>=this.__values__.length;return{done:a,value:a?void 0:this.__values__[this.__index__++]}};var Kp=function(a,e){var t=a.length;if(t)return we(e+=e<0?t:0,t)?a[e]:void 0};var Hp=function(a,e){return a&&a.length?Kp(a,L(e)):void 0};var Vp=function(a){return a=L(a),rt(function(e){return Kp(e,a)})};var Yp=function(a,e){return e=Pi(e,a),null==(a=lu(a,e))||delete a[Ci(el(e))]};var Gp=function(a){return Qi(a)?void 0:a},Zp=Ui(function(a,e){var t={};if(null==a)return t;var i=!1;e=v(e,function(e){return e=Pi(e,a),i||(i=e.length>1),e}),it(a,$o(a),t),i&&(t=Nr(t,7,Gp));for(var n=e.length;n--;)Yp(t,e[n]);return t});var Jp=function(a,e,t,i){if(!T(a))return a;for(var n=-1,o=(e=Pi(e,a)).length,r=o-1,s=a;null!=s&&++n<o;){var d=Ci(e[n]),l=t;if(n!=r){var c=s[d];void 0===(l=i?i(c,d,s):void 0)&&(l=T(c)?c:we(e[n+1])?[]:{})}tt(s,d,l),s=s[d]}return a};var Qp=function(a,e,t){for(var i=-1,n=e.length,o={};++i<n;){var r=e[i],s=Ri(a,r);t(s,r)&&Jp(o,Pi(r,a),s)}return o};var Xp=function(a,e){if(null==a)return{};var t=v($o(a),function(a){return[a]});return e=nd(e),Qp(a,t,function(a,t){return e(a,t[0])})};var az=function(a,e){return Xp(a,Bp(nd(e)))};var ez=function(a){return on(2,a)};var tz=function(a,e){var t=a.length;for(a.sort(e);t--;)a[t]=a[t].value;return a};var iz=function(a,e){if(a!==e){var t=void 0!==a,i=null===a,n=a==a,o=w(a),r=void 0!==e,s=null===e,d=e==e,l=w(e);if(!s&&!l&&!o&&a>e||o&&r&&d&&!s&&!l||i&&r&&d||!t&&d||!n)return 1;if(!i&&!o&&!l&&a<e||l&&t&&n&&!i&&!o||s&&t&&n||!r&&n||!d)return-1}return 0};var nz=function(a,e,t){for(var i=-1,n=a.criteria,o=e.criteria,r=n.length,s=t.length;++i<r;){var d=iz(n[i],o[i]);if(d)return i>=s?d:d*("desc"==t[i]?-1:1)}return a.index-e.index};var oz=function(a,e,t){var i=-1;e=v(e.length?e:[U],_t(nd));var n=Xl(a,function(a,t,n){return{criteria:v(e,function(e){return e(a)}),index:++i,value:a}});return tz(n,function(a,e){return nz(a,e,t)})};var rz=function(a,e,t,i){return null==a?[]:(k(e)||(e=null==e?[]:[e]),k(t=i?void 0:t)||(t=null==t?[]:[t]),oz(a,e,t))};var sz=function(a){return Ui(function(e){return e=v(e,_t(nd)),rt(function(t){var i=this;return a(e,function(a){return ya(a,i,t)})})})},dz=sz(v),lz=rt,cz=Math.min,uz=lz(function(a,e){var t=(e=1==e.length&&k(e[0])?v(e[0],_t(nd)):v(Ii(e,1),_t(nd))).length;return rt(function(i){for(var n=-1,o=cz(i.length,t);++n<o;)i[n]=e[n].call(this,i[n]);return ya(a,this,i)})}),pz=sz(Pl),zz=sz(ls),gz=9007199254740991,mz=Math.floor;var fz=function(a,e){var t="";if(!a||e<1||e>gz)return t;do{e%2&&(t+=a),(e=mz(e/2))&&(a+=a)}while(e);return t},yz=ed("length"),wz="[\\ud800-\\udfff]",bz="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",hz="[^\\ud800-\\udfff]",vz="(?:\\ud83c[\\udde6-\\uddff]){2}",kz="[\\ud800-\\udbff][\\udc00-\\udfff]",jz="(?:"+bz+"|\\ud83c[\\udffb-\\udfff])"+"?",_z="[\\ufe0e\\ufe0f]?"+jz+("(?:\\u200d(?:"+[hz,vz,kz].join("|")+")[\\ufe0e\\ufe0f]?"+jz+")*"),xz="(?:"+[hz+bz+"?",bz,vz,kz,wz].join("|")+")",qz=RegExp("\\ud83c[\\udffb-\\udfff](?=\\ud83c[\\udffb-\\udfff])|"+xz+_z,"g");var Ez=function(a){for(var e=qz.lastIndex=0;qz.test(a);)++e;return e};var Az=function(a){return gn(a)?Ez(a):yz(a)},Tz=Math.ceil;var Oz=function(a,e){var t=(e=void 0===e?" ":q(e)).length;if(t<2)return t?fz(e,a):e;var i=fz(e,Tz(a/Az(e)));return gn(e)?pn(En(i),0,a).join(""):i.slice(0,a)},Sz=Math.ceil,Pz=Math.floor;var Mz=function(a,e,t){a=Si(a);var i=(e=L(e))?Az(a):0;if(!e||i>=e)return a;var n=(e-i)/2;return Oz(Pz(n),t)+a+Oz(Sz(n),t)};var Cz=function(a,e,t){a=Si(a);var i=(e=L(e))?Az(a):0;return e&&i<e?a+Oz(e-i,t):a};var Rz=function(a,e,t){a=Si(a);var i=(e=L(e))?Az(a):0;return e&&i<e?Oz(e-i,t)+a:a},Dz=/^\s+/,Fz=i.a.parseInt;var Bz=function(a,e,t){return t||null==e?e=0:e&&(e=+e),Fz(Si(a).replace(Dz,""),e||0)},$z=rt(function(a,e){var t=ke(e,me($z));return Ze(a,32,void 0,e,t)});$z.placeholder={};var Lz=$z,Iz=rt(function(a,e){var t=ke(e,me(Iz));return Ze(a,64,void 0,e,t)});Iz.placeholder={};var Wz=Iz,Uz=bd(function(a,e,t){a[t?0:1].push(e)},function(){return[[],[]]});var Nz=function(a,e){return Qp(a,e,function(e,t){return Js(a,t)})},Kz=Ui(function(a,e){return null==a?{}:Nz(a,e)});var Hz=function(a){for(var e,t=this;t instanceof ja;){var i=Ra(t);i.__index__=0,i.__values__=void 0,e?n.__wrapped__=i:e=i;var n=i;t=t.__wrapped__}return n.__wrapped__=a,e};var Vz=function(a){return function(e){return null==a?void 0:Ri(a,e)}};var Yz=function(a,e,t,i){for(var n=t-1,o=a.length;++n<o;)if(i(a[n],e))return n;return-1},Gz=Array.prototype.splice;var Zz=function(a,e,t,i){var n=i?Yz:ie,o=-1,r=e.length,s=a;for(a===e&&(e=Ca(e)),t&&(s=v(a,_t(t)));++o<r;)for(var d=0,l=e[o],c=t?t(l):l;(d=n(s,c,d,i))>-1;)s!==a&&Gz.call(s,d,1),Gz.call(a,d,1);return a};var Jz=function(a,e){return a&&a.length&&e&&e.length?Zz(a,e):a},Qz=rt(Jz);var Xz=function(a,e,t){return a&&a.length&&e&&e.length?Zz(a,e,nd(t,2)):a};var ag=function(a,e,t){return a&&a.length&&e&&e.length?Zz(a,e,void 0,t):a},eg=Array.prototype.splice;var tg=function(a,e){for(var t=a?e.length:0,i=t-1;t--;){var n=e[t];if(t==i||n!==o){var o=n;we(n)?eg.call(a,n,1):Yp(a,n)}}return a},ig=Ui(function(a,e){var t=null==a?0:a.length,i=Fi(a,e);return tg(a,v(e,function(a){return we(a,t)?+a:a}).sort(iz)),i}),ng=Math.floor,og=Math.random;var rg=function(a,e){return a+ng(og()*(e-a+1))},sg=parseFloat,dg=Math.min,lg=Math.random;var cg=function(a,e,t){if(t&&"boolean"!=typeof t&&ct(a,e,t)&&(e=t=void 0),void 0===t&&("boolean"==typeof e?(t=e,e=void 0):"boolean"==typeof a&&(t=a,a=void 0)),void 0===a&&void 0===e?(a=0,e=1):(a=$(a),void 0===e?(e=a,a=0):e=$(e)),a>e){var i=a;a=e,e=i}if(t||a%1||e%1){var n=lg();return dg(a+n*(e-a+sg("1e-"+((n+"").length-1))),e)}return rg(a,e)},ug=Math.ceil,pg=Math.max;var zg=function(a,e,t,i){for(var n=-1,o=pg(ug((e-a)/(t||1)),0),r=Array(o);o--;)r[i?o:++n]=a,a+=t;return r};var gg=function(a){return function(e,t,i){return i&&"number"!=typeof i&&ct(e,t,i)&&(t=i=void 0),e=$(e),void 0===t?(t=e,e=0):t=$(t),i=void 0===i?e<t?1:-1:$(i),zg(e,t,i,a)}},mg=gg(),fg=gg(!0),yg=Ui(function(a,e){return Ze(a,256,void 0,void 0,void 0,e)});var wg=function(a,e,t,i,n){return n(a,function(a,n,o){t=i?(i=!1,a):e(t,a,n,o)}),t};var bg=function(a,e,t){var i=k(a)?Sn:wg,n=arguments.length<3;return i(a,nd(e,4),t,n,yd)};var hg=function(a,e,t,i){var n=null==a?0:a.length;for(i&&n&&(t=a[--n]);n--;)t=e(t,a[n],n,a);return t};var vg=function(a,e,t){var i=k(a)?hg:wg,n=arguments.length<3;return i(a,nd(e,4),t,n,ml)};var kg=function(a,e){return(k(a)?To:$l)(a,Bp(nd(e,3)))};var jg=function(a,e){var t=[];if(!a||!a.length)return t;var i=-1,n=[],o=a.length;for(e=nd(e,3);++i<o;){var r=a[i];e(r,i,a)&&(t.push(r),n.push(i))}return tg(a,n),t};var _g=function(a,e,t){return e=(t?ct(a,e,t):void 0===e)?1:L(e),fz(Si(a),e)};var xg=function(){var a=arguments,e=Si(a[0]);return a.length<3?e:e.replace(a[1],a[2])},qg="Expected a function";var Eg=function(a,e){if("function"!=typeof a)throw new TypeError(qg);return e=void 0===e?e:L(e),rt(a,e)};var Ag=function(a,e,t){var i=-1,n=(e=Pi(e,a)).length;for(n||(n=1,a=void 0);++i<n;){var o=null==a?void 0:a[Ci(e[i])];void 0===o&&(i=n,o=t),a=Y(o)?o.call(a):o}return a},Tg=Array.prototype.reverse;var Og=function(a){return null==a?a:Tg.call(a)},Sg=co("round");var Pg=function(a){var e=a.length;return e?a[rg(0,e-1)]:void 0};var Mg=function(a){return Pg(Uc(a))};var Cg=function(a){return(k(a)?Pg:Mg)(a)};var Rg=function(a,e){var t=-1,i=a.length,n=i-1;for(e=void 0===e?i:e;++t<e;){var o=rg(t,n),r=a[o];a[o]=a[t],a[t]=r}return a.length=e,a};var Dg=function(a,e){return Rg(Ca(a),fo(e,0,a.length))};var Fg=function(a,e){var t=Uc(a);return Rg(t,fo(e,0,t.length))};var Bg=function(a,e,t){return e=(t?ct(a,e,t):void 0===e)?1:L(e),(k(a)?Dg:Fg)(a,e)};var $g=function(a,e,t){return null==a?a:Jp(a,e,t)};var Lg=function(a,e,t,i){return i="function"==typeof i?i:void 0,null==a?a:Jp(a,e,t,i)};var Ig=function(a){return Rg(Ca(a))};var Wg=function(a){return Rg(Uc(a))};var Ug=function(a){return(k(a)?Ig:Wg)(a)},Ng="[object Map]",Kg="[object Set]";var Hg=function(a){if(null==a)return 0;if(lt(a))return Ic(a)?Az(a):a.length;var e=Go(a);return e==Ng||e==Kg?a.size:Mt(a).length};var Vg=function(a,e,t){var i=null==a?0:a.length;return i?(t&&"number"!=typeof t&&ct(a,e,t)?(e=0,t=i):(e=null==e?0:L(e),t=void 0===t?i:L(t)),un(a,e,t)):[]},Yg=oo(function(a,e,t){return a+(t?"_":"")+e.toLowerCase()});var Gg=function(a,e){var t;return yd(a,function(a,i,n){return!(t=e(a,i,n))}),!!t};var Zg=function(a,e,t){var i=k(a)?ls:Gg;return t&&ct(a,e,t)&&(e=void 0),i(a,nd(e,3))},Jg=rt(function(a,e){if(null==a)return[];var t=e.length;return t>1&&ct(a,e[0],e[1])?e=[]:t>2&&ct(e[0],e[1],e[2])&&(e=[e[0]]),oz(a,Ii(e,1),[])}),Qg=4294967294,Xg=Math.floor,am=Math.min;var em=function(a,e,t,i){e=t(e);for(var n=0,o=null==a?0:a.length,r=e!=e,s=null===e,d=w(e),l=void 0===e;n<o;){var c=Xg((n+o)/2),u=t(a[c]),p=void 0!==u,z=null===u,g=u==u,m=w(u);if(r)var f=i||g;else f=l?g&&(i||p):s?g&&p&&(i||!z):d?g&&p&&!z&&(i||!m):!z&&!m&&(i?u<=e:u<e);f?n=c+1:o=c}return am(o,Qg)},tm=2147483647;var im=function(a,e,t){var i=0,n=null==a?i:a.length;if("number"==typeof e&&e==e&&n<=tm){for(;i<n;){var o=i+n>>>1,r=a[o];null!==r&&!w(r)&&(t?r<=e:r<e)?i=o+1:n=o}return n}return em(a,e,U,t)};var nm=function(a,e){return im(a,e)};var om=function(a,e,t){return em(a,e,nd(t,2))};var rm=function(a,e){var t=null==a?0:a.length;if(t){var i=im(a,e);if(i<t&&at(a[i],e))return i}return-1};var sm=function(a,e){return im(a,e,!0)};var dm=function(a,e,t){return em(a,e,nd(t,2),!0)};var lm=function(a,e){if(null!=a&&a.length){var t=im(a,e,!0)-1;if(at(a[t],e))return t}return-1};var cm=function(a,e){for(var t=-1,i=a.length,n=0,o=[];++t<i;){var r=a[t],s=e?e(r):r;if(!t||!at(s,d)){var d=s;o[n++]=0===r?0:r}}return o};var um=function(a){return a&&a.length?cm(a):[]};var pm=function(a,e){return a&&a.length?cm(a,nd(e,2)):[]},zm=4294967295;var gm=function(a,e,t){return t&&"number"!=typeof t&&ct(a,e,t)&&(e=t=void 0),(t=void 0===t?zm:t>>>0)?(a=Si(a))&&("string"==typeof e||null!=e&&!Vu(e))&&!(e=q(e))&&gn(a)?pn(En(a),0,t):a.split(e,t):[]},mm="Expected a function",fm=Math.max;var ym=function(a,e){if("function"!=typeof a)throw new TypeError(mm);return e=null==e?0:fm(L(e),0),rt(function(t){var i=t[e],n=pn(t,0,e);return i&&Bi(n,i),ya(a,this,n)})},wm=oo(function(a,e,t){return a+(t?" ":"")+Tn(e)});var bm=function(a,e,t){return a=Si(a),t=null==t?0:fo(L(t),0,a.length),e=q(e),a.slice(t,t+e.length)==e};var hm=function(){return{}};var vm=function(){return""};var km=function(){return!0},jm=E(function(a,e){return a-e},0);var _m=function(a){return a&&a.length?xp(a,U):0};var xm=function(a,e){return a&&a.length?xp(a,nd(e,2)):0};var qm=function(a){var e=null==a?0:a.length;return e?un(a,1,e):[]};var Em=function(a,e,t){return a&&a.length?(e=t||void 0===e?1:L(e),un(a,0,e<0?0:e)):[]};var Am=function(a,e,t){var i=null==a?0:a.length;return i?(e=t||void 0===e?1:L(e),un(a,(e=i-e)<0?0:e,i)):[]};var Tm=function(a,e){return a&&a.length?sl(a,nd(e,3),!1,!0):[]};var Om=function(a,e){return a&&a.length?sl(a,nd(e,3)):[]};var Sm=function(a,e){return e(a),a},Pm=Object.prototype,Mm=Pm.hasOwnProperty;var Cm=function(a,e,t,i){return void 0===a||at(a,Pm[t])&&!Mm.call(i,t)?e:a},Rm={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"};var Dm=function(a){return"\\"+Rm[a]},Fm=/<%=([\s\S]+?)%>/g,Bm={escape:/<%-([\s\S]+?)%>/g,evaluate:/<%([\s\S]+?)%>/g,interpolate:Fm,variable:"",imports:{_:{escape:Al}}},$m=/\b__p \+= '';/g,Lm=/\b(__p \+=) '' \+/g,Im=/(__e\(.*?\)|\b__t\)) \+\n'';/g,Wm=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,Um=/($^)/,Nm=/['\n\r\u2028\u2029\\]/g;var Km=function(a,e,t){var i=Bm.imports._.templateSettings||Bm;t&&ct(a,e,t)&&(e=void 0),a=Si(a),e=Wt({},e,i,Cm);var n,o,r=Wt({},e.imports,i.imports,Cm),s=Ct(r),d=Wc(r,s),l=0,c=e.interpolate||Um,u="__p += '",p=RegExp((e.escape||Um).source+"|"+c.source+"|"+(c===Fm?Wm:Um).source+"|"+(e.evaluate||Um).source+"|$","g"),z="sourceURL"in e?"//# sourceURL="+e.sourceURL+"\n":"";a.replace(p,function(e,t,i,r,s,d){return i||(i=r),u+=a.slice(l,d).replace(Nm,Dm),t&&(n=!0,u+="' +\n__e("+t+") +\n'"),s&&(o=!0,u+="';\n"+s+";\n__p += '"),i&&(u+="' +\n((__t = ("+i+")) == null ? '' : __t) +\n'"),l=d+e.length,e}),u+="';\n";var g=e.variable;g||(u="with (obj) {\n"+u+"\n}\n"),u=(o?u.replace($m,""):u).replace(Lm,"$1").replace(Im,"$1;"),u="function("+(g||"obj")+") {\n"+(g?"":"obj || (obj = {});\n")+"var __t, __p = ''"+(n?", __e = _.escape":"")+(o?", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n":";\n")+u+"return __p\n}";var m=tn(function(){return Function(s,z+"return "+u).apply(void 0,d)});if(m.source=u,en(m))throw m;return m},Hm="Expected a function";var Vm=function(a,e,t){var i=!0,n=!0;if("function"!=typeof a)throw new TypeError(Hm);return T(t)&&(i="leading"in t?!!t.leading:i,n="trailing"in t?!!t.trailing:n),Md(a,e,{leading:i,maxWait:e,trailing:n})};var Ym=function(a,e){return e(a)},Gm=9007199254740991,Zm=4294967295,Jm=Math.min;var Qm=function(a,e){if((a=L(a))<1||a>Gm)return[];var t=Zm,i=Jm(a,Zm);e=cl(e),a-=Zm;for(var n=gt(i,e);++t<a;)e(t);return n};var Xm=function(){return this};var af=function(a,e){var t=a;return t instanceof qa&&(t=t.value()),Sn(e,function(a,e){return e.func.apply(e.thisArg,Bi([a],e.args))},t)};var ef=function(){return af(this.__wrapped__,this.__actions__)};var tf=function(a){return Si(a).toLowerCase()};var nf=function(a){return k(a)?v(a,Ci):w(a)?[a]:Ca(Oi(Si(a)))},of=9007199254740991;var rf=function(a){return a?fo(L(a),-of,of):0===a?a:0};var sf=function(a){return Si(a).toUpperCase()};var df=function(a,e,t){var i=k(a),n=i||Object(vt.a)(a)||Et(a);if(e=nd(e,4),null==t){var o=a&&a.constructor;t=n?i?new o:[]:T(a)&&Y(o)?za(Ki(a)):{}}return(n?Xa:md)(a,function(a,i,n){return e(t,a,i,n)}),t};var lf=function(a,e){for(var t=a.length;t--&&ie(e,a[t],0)>-1;);return t};var cf=function(a,e){for(var t=-1,i=a.length;++t<i&&ie(e,a[t],0)>-1;);return t},uf=/^\s+|\s+$/g;var pf=function(a,e,t){if((a=Si(a))&&(t||void 0===e))return a.replace(uf,"");if(!a||!(e=q(e)))return a;var i=En(a),n=En(e),o=cf(i,n),r=lf(i,n)+1;return pn(i,o,r).join("")},zf=/\s+$/;var gf=function(a,e,t){if((a=Si(a))&&(t||void 0===e))return a.replace(zf,"");if(!a||!(e=q(e)))return a;var i=En(a),n=lf(i,En(e))+1;return pn(i,0,n).join("")},mf=/^\s+/;var ff=function(a,e,t){if((a=Si(a))&&(t||void 0===e))return a.replace(mf,"");if(!a||!(e=q(e)))return a;var i=En(a),n=cf(i,En(e));return pn(i,n).join("")},yf=30,wf="...",bf=/\w*$/;var hf=function(a,e){var t=yf,i=wf;if(T(e)){var n="separator"in e?e.separator:n;t="length"in e?L(e.length):t,i="omission"in e?q(e.omission):i}var o=(a=Si(a)).length;if(gn(a)){var r=En(a);o=r.length}if(t>=o)return a;var s=t-Az(i);if(s<1)return i;var d=r?pn(r,0,s).join(""):a.slice(0,s);if(void 0===n)return d+i;if(r&&(s+=d.length-s),Vu(n)){if(a.slice(s).search(n)){var l,c=d;for(n.global||(n=RegExp(n.source,Si(bf.exec(n))+"g")),n.lastIndex=0;l=n.exec(c);)var u=l.index;d=d.slice(0,void 0===u?s:u)}}else if(a.indexOf(q(n),s)!=s){var p=d.lastIndexOf(n);p>-1&&(d=d.slice(0,p))}return d+i};var vf=function(a){return Qe(a,1)},kf=Pn({"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"',"&#39;":"'"}),jf=/&(?:amp|lt|gt|quot|#39);/g,_f=RegExp(jf.source);var xf=function(a){return(a=Si(a))&&_f.test(a)?a.replace(jf,kf):a},qf=Wo&&1/ms(new Wo([,-0]))[1]==1/0?function(a){return new Wo(a)}:Ea,Ef=200;var Af=function(a,e,t){var i=-1,n=ne,o=a.length,r=!0,s=[],d=s;if(t)r=!1,n=Jd;else if(o>=Ef){var l=e?null:qf(a);if(l)return ms(l);r=!1,n=cs,d=new ds}else d=e?[]:s;a:for(;++i<o;){var c=a[i],u=e?e(c):c;if(c=t||0!==c?c:0,r&&u==u){for(var p=d.length;p--;)if(d[p]===u)continue a;e&&d.push(u),s.push(c)}else n(d,u,t)||(d!==s&&d.push(u),s.push(c))}return s},Tf=rt(function(a){return Af(Ii(a,1,$d,!0))}),Of=rt(function(a){var e=el(a);return $d(e)&&(e=void 0),Af(Ii(a,1,$d,!0),nd(e,2))}),Sf=rt(function(a){var e=el(a);return e="function"==typeof e?e:void 0,Af(Ii(a,1,$d,!0),void 0,e)});var Pf=function(a){return a&&a.length?Af(a):[]};var Mf=function(a,e){return a&&a.length?Af(a,nd(e,2)):[]};var Cf=function(a,e){return e="function"==typeof e?e:void 0,a&&a.length?Af(a,void 0,e):[]},Rf=0;var Df=function(a){var e=++Rf;return Si(a)+e};var Ff=function(a,e){return null==a||Yp(a,e)},Bf=Math.max;var $f=function(a){if(!a||!a.length)return[];var e=0;return a=To(a,function(a){if($d(a))return e=Bf(a.length,e),!0}),gt(e,function(e){return v(a,ed(e))})};var Lf=function(a,e){if(!a||!a.length)return[];var t=$f(a);return null==e?t:v(t,function(a){return ya(e,void 0,a)})};var If=function(a,e,t,i){return Jp(a,e,t(Ri(a,e)),i)};var Wf=function(a,e,t){return null==a?a:If(a,e,cl(t))};var Uf=function(a,e,t,i){return i="function"==typeof i?i:void 0,null==a?a:If(a,e,cl(t),i)},Nf=oo(function(a,e,t){return a+(t?" ":"")+e.toUpperCase()});var Kf=function(a){return null==a?[]:Wc(a,Lt(a))},Hf=rt(function(a,e){return $d(a)?Xd(a,e):[]});var Vf=function(a,e){return Lz(cl(e),a)},Yf=Ui(function(a){var e=a.length,t=e?a[0]:0,i=this.__wrapped__,n=function(e){return Fi(e,a)};return!(e>1||this.__actions__.length)&&i instanceof qa&&we(t)?((i=i.slice(t,+t+(e?1:0))).__actions__.push({func:Ym,args:[n],thisArg:void 0}),new Ma(i,this.__chain__).thru(function(a){return e&&!a.length&&a.push(void 0),a})):this.thru(n)});var Gf=function(){return po(this)};var Zf=function(){var a=this.__wrapped__;if(a instanceof qa){var e=a;return this.__actions__.length&&(e=new qa(this)),(e=e.reverse()).__actions__.push({func:Ym,args:[Og],thisArg:void 0}),new Ma(e,this.__chain__)}return this.thru(Og)};var Jf=function(a,e,t){var i=a.length;if(i<2)return i?Af(a[0]):[];for(var n=-1,o=Array(i);++n<i;)for(var r=a[n],s=-1;++s<i;)s!=n&&(o[n]=Xd(o[n]||r,a[s],e,t));return Af(Ii(o,1),e,t)},Qf=rt(function(a){return Jf(To(a,$d))}),Xf=rt(function(a){var e=el(a);return $d(e)&&(e=void 0),Jf(To(a,$d),nd(e,2))}),ay=rt(function(a){var e=el(a);return e="function"==typeof e?e:void 0,Jf(To(a,$d),void 0,e)}),ey=rt($f);var ty=function(a,e,t){for(var i=-1,n=a.length,o=e.length,r={};++i<n;){var s=i<o?e[i]:void 0;t(r,a[i],s)}return r};var iy=function(a,e){return ty(a||[],e||[],tt)};var ny=function(a,e){return ty(a||[],e||[],Jp)},oy=rt(function(a){var e=a.length,t=e>1?a[e-1]:void 0;return t="function"==typeof t?(a.pop(),t):void 0,Lf(a,t)}),ry={chunk:mo,compact:ts,concat:is,difference:al,differenceBy:tl,differenceWith:il,drop:ol,dropRight:rl,dropRightWhile:dl,dropWhile:ll,fill:Bl,findIndex:Ul,findLastIndex:Gl,first:Ql,flatten:Wi,flattenDeep:rc,flattenDepth:sc,fromPairs:jc,head:Ql,indexOf:Vc,initial:Yc,intersection:Qc,intersectionBy:Xc,intersectionWith:au,join:np,last:el,lastIndexOf:cp,nth:Hp,pull:Qz,pullAll:Jz,pullAllBy:Xz,pullAllWith:ag,pullAt:ig,remove:jg,reverse:Og,slice:Vg,sortedIndex:nm,sortedIndexBy:om,sortedIndexOf:rm,sortedLastIndex:sm,sortedLastIndexBy:dm,sortedLastIndexOf:lm,sortedUniq:um,sortedUniqBy:pm,tail:qm,take:Em,takeRight:Am,takeRightWhile:Tm,takeWhile:Om,union:Tf,unionBy:Of,unionWith:Sf,uniq:Pf,uniqBy:Mf,uniqWith:Cf,unzip:$f,unzipWith:Lf,without:Hf,xor:Qf,xorBy:Xf,xorWith:ay,zip:ey,zipObject:iy,zipObjectDeep:ny,zipWith:oy},sy={countBy:vd,each:ul,eachRight:fl,every:Cl,filter:Ll,find:Nl,findLast:Zl,flatMap:ec,flatMapDeep:ic,flatMapDepth:nc,forEach:ul,forEachRight:fl,groupBy:Ac,includes:Kc,invokeMap:pu,keyBy:rp,map:ac,orderBy:rz,partition:Uz,reduce:bg,reduceRight:vg,reject:kg,sample:Cg,sampleSize:Bg,shuffle:Ug,size:Hg,some:Zg,sortBy:Jg},dy={now:Td},ly={after:W,ary:Qe,before:on,bind:sn,bindKey:cn,curry:xd,curryRight:Ad,debounce:Md,defer:Gd,delay:Zd,flip:lc,memoize:qi,negate:Bp,once:ez,overArgs:uz,partial:Lz,partialRight:Wz,rearg:yg,rest:Eg,spread:ym,throttle:Vm,unary:vf,wrap:Vf},cy={castArray:so,clone:Hr,cloneDeep:Gr,cloneDeepWith:Qr,cloneWith:as,conformsTo:ud,eq:at,gt:Sc,gte:Pc,isArguments:ht,isArray:k,isArrayBuffer:fu,isArrayLike:lt,isArrayLikeObject:$d,isBoolean:wu,isBuffer:vt.a,isDate:ku,isElement:ju,isEmpty:Eu,isEqual:Au,isEqualWith:Tu,isError:en,isFinite:Su,isFunction:Y,isInteger:Pu,isLength:dt,isMap:Sr,isMatch:Mu,isMatchWith:Cu,isNaN:Fu,isNative:Iu,isNil:Wu,isNull:Uu,isNumber:Du,isObject:T,isObjectLike:f,isPlainObject:Qi,isRegExp:Vu,isSafeInteger:Gu,isSet:Rr,isString:Ic,isSymbol:w,isTypedArray:Et,isUndefined:Zu,isWeakMap:Qu,isWeakSet:ap,lt:gp,lte:mp,toArray:Up,toFinite:$,toInteger:L,toLength:Dl,toNumber:D,toPlainObject:Id,toSafeInteger:rf,toString:Si},uy={add:A,ceil:uo,divide:nl,floor:cc,max:jp,maxBy:_p,mean:Ap,meanBy:Tp,min:Mp,minBy:Cp,multiply:Dp,round:Sg,subtract:jm,sum:_m,sumBy:xm},py={clamp:yo,inRange:$c,random:cg},zy={assign:Dt,assignIn:It,assignInWith:Wt,assignWith:Ut,at:Ni,create:kd,defaults:Fd,defaultsDeep:Hd,entries:jl,entriesIn:_l,extend:It,extendWith:Wt,findKey:Hl,findLastKey:Jl,forIn:bc,forInRight:hc,forOwn:vc,forOwnRight:kc,functions:xc,functionsIn:qc,get:Di,has:Rc,hasIn:Js,invert:nu,invertBy:du,invoke:uu,keys:Ct,keysIn:Lt,mapKeys:fp,mapValues:yp,merge:Op,mergeWith:Kd,omit:Zp,omitBy:az,pick:Kz,pickBy:Xp,result:Ag,set:$g,setWith:Lg,toPairs:jl,toPairsIn:_l,transform:df,unset:Ff,update:Wf,updateWith:Uf,values:Uc,valuesIn:Kf},gy={at:Yf,chain:po,commit:es,lodash:Ba,next:Np,plant:Hz,reverse:Zf,tap:Sm,thru:Ym,toIterator:Xm,toJSON:ef,value:ef,valueOf:ef,wrapperChain:Gf},my={camelCase:ro,capitalize:On,deburr:Dn,endsWith:yl,escape:Al,escapeRegExp:Sl,kebabCase:op,lowerCase:up,lowerFirst:pp,pad:Mz,padEnd:Cz,padStart:Rz,parseInt:Bz,repeat:_g,replace:xg,snakeCase:Yg,split:gm,startCase:wm,startsWith:bm,template:Km,templateSettings:Bm,toLower:tf,toUpper:sf,trim:pf,trimEnd:gf,trimStart:ff,truncate:hf,unescape:xf,upperCase:Nf,upperFirst:Tn,words:io},fy={attempt:tn,bindAll:dn,cond:rd,conforms:cd,constant:Za,defaultTo:Cd,flow:yc,flowRight:wc,identity:U,iteratee:tp,matches:bp,matchesProperty:vp,method:Sp,methodOf:Pp,mixin:Rp,noop:Ea,nthArg:Vp,over:dz,overEvery:pz,overSome:zz,property:id,propertyOf:Vz,range:mg,rangeRight:fg,stubArray:Oo,stubFalse:Bu.a,stubObject:hm,stubString:vm,stubTrue:km,times:Qm,toPath:nf,uniqueId:Df};var yy=function(){var a=new qa(this.__wrapped__);return a.__actions__=Ca(this.__actions__),a.__dir__=this.__dir__,a.__filtered__=this.__filtered__,a.__iteratees__=Ca(this.__iteratees__),a.__takeCount__=this.__takeCount__,a.__views__=Ca(this.__views__),a};var wy=function(){if(this.__filtered__){var a=new qa(this);a.__dir__=-1,a.__filtered__=!0}else(a=this.clone()).__dir__*=-1;return a},by=Math.max,hy=Math.min;var vy=function(a,e,t){for(var i=-1,n=t.length;++i<n;){var o=t[i],r=o.size;switch(o.type){case"drop":a+=r;break;case"dropRight":e-=r;break;case"take":e=hy(e,a+r);break;case"takeRight":a=by(a,e-r)}}return{start:a,end:e}},ky=1,jy=2,_y=Math.min;var xy=function(){var a=this.__wrapped__.value(),e=this.__dir__,t=k(a),i=e<0,n=t?a.length:0,o=vy(0,n,this.__views__),r=o.start,s=o.end,d=s-r,l=i?s:r-1,c=this.__iteratees__,u=c.length,p=0,z=_y(d,this.__takeCount__);if(!t||!i&&n==d&&z==d)return af(a,this.__actions__);var g=[];a:for(;d--&&p<z;){for(var m=-1,f=a[l+=e];++m<u;){var y=c[m],w=y.iteratee,b=y.type,h=w(f);if(b==jy)f=h;else if(!h){if(b==ky)continue a;break a}}g[p++]=f}return g},qy=Array.prototype,Ey=Object.prototype.hasOwnProperty,Ay=n?n.iterator:void 0,Ty=Math.max,Oy=Math.min,Sy=function(a){return function(e,t,i){if(null==i){var n=T(t),o=n&&Ct(t),r=o&&o.length&&_c(t,o);(r?r.length:n)||(i=t,t=e,e=this)}return a(e,t,i)}}(Rp);
2
- /**
3
- * @license
4
- * Lodash (Custom Build) <https://lodash.com/>
5
- * Build: `lodash modularize exports="es" -o ./`
6
- * Copyright JS Foundation and other contributors <https://js.foundation/>
7
- * Released under MIT license <https://lodash.com/license>
8
- * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
9
- * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
10
- */Ba.after=ly.after,Ba.ary=ly.ary,Ba.assign=zy.assign,Ba.assignIn=zy.assignIn,Ba.assignInWith=zy.assignInWith,Ba.assignWith=zy.assignWith,Ba.at=zy.at,Ba.before=ly.before,Ba.bind=ly.bind,Ba.bindAll=fy.bindAll,Ba.bindKey=ly.bindKey,Ba.castArray=cy.castArray,Ba.chain=gy.chain,Ba.chunk=ry.chunk,Ba.compact=ry.compact,Ba.concat=ry.concat,Ba.cond=fy.cond,Ba.conforms=fy.conforms,Ba.constant=fy.constant,Ba.countBy=sy.countBy,Ba.create=zy.create,Ba.curry=ly.curry,Ba.curryRight=ly.curryRight,Ba.debounce=ly.debounce,Ba.defaults=zy.defaults,Ba.defaultsDeep=zy.defaultsDeep,Ba.defer=ly.defer,Ba.delay=ly.delay,Ba.difference=ry.difference,Ba.differenceBy=ry.differenceBy,Ba.differenceWith=ry.differenceWith,Ba.drop=ry.drop,Ba.dropRight=ry.dropRight,Ba.dropRightWhile=ry.dropRightWhile,Ba.dropWhile=ry.dropWhile,Ba.fill=ry.fill,Ba.filter=sy.filter,Ba.flatMap=sy.flatMap,Ba.flatMapDeep=sy.flatMapDeep,Ba.flatMapDepth=sy.flatMapDepth,Ba.flatten=ry.flatten,Ba.flattenDeep=ry.flattenDeep,Ba.flattenDepth=ry.flattenDepth,Ba.flip=ly.flip,Ba.flow=fy.flow,Ba.flowRight=fy.flowRight,Ba.fromPairs=ry.fromPairs,Ba.functions=zy.functions,Ba.functionsIn=zy.functionsIn,Ba.groupBy=sy.groupBy,Ba.initial=ry.initial,Ba.intersection=ry.intersection,Ba.intersectionBy=ry.intersectionBy,Ba.intersectionWith=ry.intersectionWith,Ba.invert=zy.invert,Ba.invertBy=zy.invertBy,Ba.invokeMap=sy.invokeMap,Ba.iteratee=fy.iteratee,Ba.keyBy=sy.keyBy,Ba.keys=Ct,Ba.keysIn=zy.keysIn,Ba.map=sy.map,Ba.mapKeys=zy.mapKeys,Ba.mapValues=zy.mapValues,Ba.matches=fy.matches,Ba.matchesProperty=fy.matchesProperty,Ba.memoize=ly.memoize,Ba.merge=zy.merge,Ba.mergeWith=zy.mergeWith,Ba.method=fy.method,Ba.methodOf=fy.methodOf,Ba.mixin=Sy,Ba.negate=Bp,Ba.nthArg=fy.nthArg,Ba.omit=zy.omit,Ba.omitBy=zy.omitBy,Ba.once=ly.once,Ba.orderBy=sy.orderBy,Ba.over=fy.over,Ba.overArgs=ly.overArgs,Ba.overEvery=fy.overEvery,Ba.overSome=fy.overSome,Ba.partial=ly.partial,Ba.partialRight=ly.partialRight,Ba.partition=sy.partition,Ba.pick=zy.pick,Ba.pickBy=zy.pickBy,Ba.property=fy.property,Ba.propertyOf=fy.propertyOf,Ba.pull=ry.pull,Ba.pullAll=ry.pullAll,Ba.pullAllBy=ry.pullAllBy,Ba.pullAllWith=ry.pullAllWith,Ba.pullAt=ry.pullAt,Ba.range=fy.range,Ba.rangeRight=fy.rangeRight,Ba.rearg=ly.rearg,Ba.reject=sy.reject,Ba.remove=ry.remove,Ba.rest=ly.rest,Ba.reverse=ry.reverse,Ba.sampleSize=sy.sampleSize,Ba.set=zy.set,Ba.setWith=zy.setWith,Ba.shuffle=sy.shuffle,Ba.slice=ry.slice,Ba.sortBy=sy.sortBy,Ba.sortedUniq=ry.sortedUniq,Ba.sortedUniqBy=ry.sortedUniqBy,Ba.split=my.split,Ba.spread=ly.spread,Ba.tail=ry.tail,Ba.take=ry.take,Ba.takeRight=ry.takeRight,Ba.takeRightWhile=ry.takeRightWhile,Ba.takeWhile=ry.takeWhile,Ba.tap=gy.tap,Ba.throttle=ly.throttle,Ba.thru=Ym,Ba.toArray=cy.toArray,Ba.toPairs=zy.toPairs,Ba.toPairsIn=zy.toPairsIn,Ba.toPath=fy.toPath,Ba.toPlainObject=cy.toPlainObject,Ba.transform=zy.transform,Ba.unary=ly.unary,Ba.union=ry.union,Ba.unionBy=ry.unionBy,Ba.unionWith=ry.unionWith,Ba.uniq=ry.uniq,Ba.uniqBy=ry.uniqBy,Ba.uniqWith=ry.uniqWith,Ba.unset=zy.unset,Ba.unzip=ry.unzip,Ba.unzipWith=ry.unzipWith,Ba.update=zy.update,Ba.updateWith=zy.updateWith,Ba.values=zy.values,Ba.valuesIn=zy.valuesIn,Ba.without=ry.without,Ba.words=my.words,Ba.wrap=ly.wrap,Ba.xor=ry.xor,Ba.xorBy=ry.xorBy,Ba.xorWith=ry.xorWith,Ba.zip=ry.zip,Ba.zipObject=ry.zipObject,Ba.zipObjectDeep=ry.zipObjectDeep,Ba.zipWith=ry.zipWith,Ba.entries=zy.toPairs,Ba.entriesIn=zy.toPairsIn,Ba.extend=zy.assignIn,Ba.extendWith=zy.assignInWith,Sy(Ba,Ba),Ba.add=uy.add,Ba.attempt=fy.attempt,Ba.camelCase=my.camelCase,Ba.capitalize=my.capitalize,Ba.ceil=uy.ceil,Ba.clamp=py.clamp,Ba.clone=cy.clone,Ba.cloneDeep=cy.cloneDeep,Ba.cloneDeepWith=cy.cloneDeepWith,Ba.cloneWith=cy.cloneWith,Ba.conformsTo=cy.conformsTo,Ba.deburr=my.deburr,Ba.defaultTo=fy.defaultTo,Ba.divide=uy.divide,Ba.endsWith=my.endsWith,Ba.eq=cy.eq,Ba.escape=my.escape,Ba.escapeRegExp=my.escapeRegExp,Ba.every=sy.every,Ba.find=sy.find,Ba.findIndex=ry.findIndex,Ba.findKey=zy.findKey,Ba.findLast=sy.findLast,Ba.findLastIndex=ry.findLastIndex,Ba.findLastKey=zy.findLastKey,Ba.floor=uy.floor,Ba.forEach=sy.forEach,Ba.forEachRight=sy.forEachRight,Ba.forIn=zy.forIn,Ba.forInRight=zy.forInRight,Ba.forOwn=zy.forOwn,Ba.forOwnRight=zy.forOwnRight,Ba.get=zy.get,Ba.gt=cy.gt,Ba.gte=cy.gte,Ba.has=zy.has,Ba.hasIn=zy.hasIn,Ba.head=ry.head,Ba.identity=U,Ba.includes=sy.includes,Ba.indexOf=ry.indexOf,Ba.inRange=py.inRange,Ba.invoke=zy.invoke,Ba.isArguments=cy.isArguments,Ba.isArray=k,Ba.isArrayBuffer=cy.isArrayBuffer,Ba.isArrayLike=cy.isArrayLike,Ba.isArrayLikeObject=cy.isArrayLikeObject,Ba.isBoolean=cy.isBoolean,Ba.isBuffer=cy.isBuffer,Ba.isDate=cy.isDate,Ba.isElement=cy.isElement,Ba.isEmpty=cy.isEmpty,Ba.isEqual=cy.isEqual,Ba.isEqualWith=cy.isEqualWith,Ba.isError=cy.isError,Ba.isFinite=cy.isFinite,Ba.isFunction=cy.isFunction,Ba.isInteger=cy.isInteger,Ba.isLength=cy.isLength,Ba.isMap=cy.isMap,Ba.isMatch=cy.isMatch,Ba.isMatchWith=cy.isMatchWith,Ba.isNaN=cy.isNaN,Ba.isNative=cy.isNative,Ba.isNil=cy.isNil,Ba.isNull=cy.isNull,Ba.isNumber=cy.isNumber,Ba.isObject=T,Ba.isObjectLike=cy.isObjectLike,Ba.isPlainObject=cy.isPlainObject,Ba.isRegExp=cy.isRegExp,Ba.isSafeInteger=cy.isSafeInteger,Ba.isSet=cy.isSet,Ba.isString=cy.isString,Ba.isSymbol=cy.isSymbol,Ba.isTypedArray=cy.isTypedArray,Ba.isUndefined=cy.isUndefined,Ba.isWeakMap=cy.isWeakMap,Ba.isWeakSet=cy.isWeakSet,Ba.join=ry.join,Ba.kebabCase=my.kebabCase,Ba.last=el,Ba.lastIndexOf=ry.lastIndexOf,Ba.lowerCase=my.lowerCase,Ba.lowerFirst=my.lowerFirst,Ba.lt=cy.lt,Ba.lte=cy.lte,Ba.max=uy.max,Ba.maxBy=uy.maxBy,Ba.mean=uy.mean,Ba.meanBy=uy.meanBy,Ba.min=uy.min,Ba.minBy=uy.minBy,Ba.stubArray=fy.stubArray,Ba.stubFalse=fy.stubFalse,Ba.stubObject=fy.stubObject,Ba.stubString=fy.stubString,Ba.stubTrue=fy.stubTrue,Ba.multiply=uy.multiply,Ba.nth=ry.nth,Ba.noop=fy.noop,Ba.now=dy.now,Ba.pad=my.pad,Ba.padEnd=my.padEnd,Ba.padStart=my.padStart,Ba.parseInt=my.parseInt,Ba.random=py.random,Ba.reduce=sy.reduce,Ba.reduceRight=sy.reduceRight,Ba.repeat=my.repeat,Ba.replace=my.replace,Ba.result=zy.result,Ba.round=uy.round,Ba.sample=sy.sample,Ba.size=sy.size,Ba.snakeCase=my.snakeCase,Ba.some=sy.some,Ba.sortedIndex=ry.sortedIndex,Ba.sortedIndexBy=ry.sortedIndexBy,Ba.sortedIndexOf=ry.sortedIndexOf,Ba.sortedLastIndex=ry.sortedLastIndex,Ba.sortedLastIndexBy=ry.sortedLastIndexBy,Ba.sortedLastIndexOf=ry.sortedLastIndexOf,Ba.startCase=my.startCase,Ba.startsWith=my.startsWith,Ba.subtract=uy.subtract,Ba.sum=uy.sum,Ba.sumBy=uy.sumBy,Ba.template=my.template,Ba.times=fy.times,Ba.toFinite=cy.toFinite,Ba.toInteger=L,Ba.toLength=cy.toLength,Ba.toLower=my.toLower,Ba.toNumber=cy.toNumber,Ba.toSafeInteger=cy.toSafeInteger,Ba.toString=cy.toString,Ba.toUpper=my.toUpper,Ba.trim=my.trim,Ba.trimEnd=my.trimEnd,Ba.trimStart=my.trimStart,Ba.truncate=my.truncate,Ba.unescape=my.unescape,Ba.uniqueId=fy.uniqueId,Ba.upperCase=my.upperCase,Ba.upperFirst=my.upperFirst,Ba.each=sy.forEach,Ba.eachRight=sy.forEachRight,Ba.first=ry.head,Sy(Ba,function(){var a={};return md(Ba,function(e,t){Ey.call(Ba.prototype,t)||(a[t]=e)}),a}(),{chain:!1}),Ba.VERSION="4.17.11",(Ba.templateSettings=my.templateSettings).imports._=Ba,Xa(["bind","bindKey","curry","curryRight","partial","partialRight"],function(a){Ba[a].placeholder=Ba}),Xa(["drop","take"],function(a,e){qa.prototype[a]=function(t){t=void 0===t?1:Ty(L(t),0);var i=this.__filtered__&&!e?new qa(this):this.clone();return i.__filtered__?i.__takeCount__=Oy(t,i.__takeCount__):i.__views__.push({size:Oy(t,4294967295),type:a+(i.__dir__<0?"Right":"")}),i},qa.prototype[a+"Right"]=function(e){return this.reverse()[a](e).reverse()}}),Xa(["filter","map","takeWhile"],function(a,e){var t=e+1,i=1==t||3==t;qa.prototype[a]=function(a){var e=this.clone();return e.__iteratees__.push({iteratee:nd(a,3),type:t}),e.__filtered__=e.__filtered__||i,e}}),Xa(["head","last"],function(a,e){var t="take"+(e?"Right":"");qa.prototype[a]=function(){return this[t](1).value()[0]}}),Xa(["initial","tail"],function(a,e){var t="drop"+(e?"":"Right");qa.prototype[a]=function(){return this.__filtered__?new qa(this):this[t](1)}}),qa.prototype.compact=function(){return this.filter(U)},qa.prototype.find=function(a){return this.filter(a).head()},qa.prototype.findLast=function(a){return this.reverse().find(a)},qa.prototype.invokeMap=rt(function(a,e){return"function"==typeof a?new qa(this):this.map(function(t){return cu(t,a,e)})}),qa.prototype.reject=function(a){return this.filter(Bp(nd(a)))},qa.prototype.slice=function(a,e){a=L(a);var t=this;return t.__filtered__&&(a>0||e<0)?new qa(t):(a<0?t=t.takeRight(-a):a&&(t=t.drop(a)),void 0!==e&&(t=(e=L(e))<0?t.dropRight(-e):t.take(e-a)),t)},qa.prototype.takeRightWhile=function(a){return this.reverse().takeWhile(a).reverse()},qa.prototype.toArray=function(){return this.take(4294967295)},md(qa.prototype,function(a,e){var t=/^(?:filter|find|map|reject)|While$/.test(e),i=/^(?:head|last)$/.test(e),n=Ba[i?"take"+("last"==e?"Right":""):e],o=i||/^find/.test(e);n&&(Ba.prototype[e]=function(){var e=this.__wrapped__,r=i?[1]:arguments,s=e instanceof qa,d=r[0],l=s||k(e),c=function(a){var e=n.apply(Ba,Bi([a],r));return i&&u?e[0]:e};l&&t&&"function"==typeof d&&1!=d.length&&(s=l=!1);var u=this.__chain__,p=!!this.__actions__.length,z=o&&!u,g=s&&!p;if(!o&&l){e=g?e:new qa(this);var m=a.apply(e,r);return m.__actions__.push({func:Ym,args:[c],thisArg:void 0}),new Ma(m,u)}return z&&g?a.apply(this,r):(m=this.thru(c),z?i?m.value()[0]:m.value():m)})}),Xa(["pop","push","shift","sort","splice","unshift"],function(a){var e=qy[a],t=/^(?:push|sort|unshift)$/.test(a)?"tap":"thru",i=/^(?:pop|shift)$/.test(a);Ba.prototype[a]=function(){var a=arguments;if(i&&!this.__chain__){var n=this.value();return e.apply(k(n)?n:[],a)}return this[t](function(t){return e.apply(k(t)?t:[],a)})}}),md(qa.prototype,function(a,e){var t=Ba[e];if(t){var i=t.name+"";(Ta[i]||(Ta[i]=[])).push({name:e,func:t})}}),Ta[Te(void 0,2).name]=[{name:"wrapper",func:void 0}],qa.prototype.clone=yy,qa.prototype.reverse=wy,qa.prototype.value=xy,Ba.prototype.at=gy.at,Ba.prototype.chain=gy.wrapperChain,Ba.prototype.commit=gy.commit,Ba.prototype.next=gy.next,Ba.prototype.plant=gy.plant,Ba.prototype.reverse=gy.reverse,Ba.prototype.toJSON=Ba.prototype.valueOf=Ba.prototype.value=gy.value,Ba.prototype.first=Ba.prototype.head,Ay&&(Ba.prototype[Ay]=gy.toIterator);var Py=Ba;t.d(e,"add",function(){return A}),t.d(e,"after",function(){return W}),t.d(e,"ary",function(){return Qe}),t.d(e,"assign",function(){return Dt}),t.d(e,"assignIn",function(){return It}),t.d(e,"assignInWith",function(){return Wt}),t.d(e,"assignWith",function(){return Ut}),t.d(e,"at",function(){return Ni}),t.d(e,"attempt",function(){return tn}),t.d(e,"before",function(){return on}),t.d(e,"bind",function(){return sn}),t.d(e,"bindAll",function(){return dn}),t.d(e,"bindKey",function(){return cn}),t.d(e,"camelCase",function(){return ro}),t.d(e,"capitalize",function(){return On}),t.d(e,"castArray",function(){return so}),t.d(e,"ceil",function(){return uo}),t.d(e,"chain",function(){return po}),t.d(e,"chunk",function(){return mo}),t.d(e,"clamp",function(){return yo}),t.d(e,"clone",function(){return Hr}),t.d(e,"cloneDeep",function(){return Gr}),t.d(e,"cloneDeepWith",function(){return Qr}),t.d(e,"cloneWith",function(){return as}),t.d(e,"commit",function(){return es}),t.d(e,"compact",function(){return ts}),t.d(e,"concat",function(){return is}),t.d(e,"cond",function(){return rd}),t.d(e,"conforms",function(){return cd}),t.d(e,"conformsTo",function(){return ud}),t.d(e,"constant",function(){return Za}),t.d(e,"countBy",function(){return vd}),t.d(e,"create",function(){return kd}),t.d(e,"curry",function(){return xd}),t.d(e,"curryRight",function(){return Ad}),t.d(e,"debounce",function(){return Md}),t.d(e,"deburr",function(){return Dn}),t.d(e,"defaultTo",function(){return Cd}),t.d(e,"defaults",function(){return Fd}),t.d(e,"defaultsDeep",function(){return Hd}),t.d(e,"defer",function(){return Gd}),t.d(e,"delay",function(){return Zd}),t.d(e,"difference",function(){return al}),t.d(e,"differenceBy",function(){return tl}),t.d(e,"differenceWith",function(){return il}),t.d(e,"divide",function(){return nl}),t.d(e,"drop",function(){return ol}),t.d(e,"dropRight",function(){return rl}),t.d(e,"dropRightWhile",function(){return dl}),t.d(e,"dropWhile",function(){return ll}),t.d(e,"each",function(){return ul}),t.d(e,"eachRight",function(){return fl}),t.d(e,"endsWith",function(){return yl}),t.d(e,"entries",function(){return jl}),t.d(e,"entriesIn",function(){return _l}),t.d(e,"eq",function(){return at}),t.d(e,"escape",function(){return Al}),t.d(e,"escapeRegExp",function(){return Sl}),t.d(e,"every",function(){return Cl}),t.d(e,"extend",function(){return It}),t.d(e,"extendWith",function(){return Wt}),t.d(e,"fill",function(){return Bl}),t.d(e,"filter",function(){return Ll}),t.d(e,"find",function(){return Nl}),t.d(e,"findIndex",function(){return Ul}),t.d(e,"findKey",function(){return Hl}),t.d(e,"findLast",function(){return Zl}),t.d(e,"findLastIndex",function(){return Gl}),t.d(e,"findLastKey",function(){return Jl}),t.d(e,"first",function(){return Ql}),t.d(e,"flatMap",function(){return ec}),t.d(e,"flatMapDeep",function(){return ic}),t.d(e,"flatMapDepth",function(){return nc}),t.d(e,"flatten",function(){return Wi}),t.d(e,"flattenDeep",function(){return rc}),t.d(e,"flattenDepth",function(){return sc}),t.d(e,"flip",function(){return lc}),t.d(e,"floor",function(){return cc}),t.d(e,"flow",function(){return yc}),t.d(e,"flowRight",function(){return wc}),t.d(e,"forEach",function(){return ul}),t.d(e,"forEachRight",function(){return fl}),t.d(e,"forIn",function(){return bc}),t.d(e,"forInRight",function(){return hc}),t.d(e,"forOwn",function(){return vc}),t.d(e,"forOwnRight",function(){return kc}),t.d(e,"fromPairs",function(){return jc}),t.d(e,"functions",function(){return xc}),t.d(e,"functionsIn",function(){return qc}),t.d(e,"get",function(){return Di}),t.d(e,"groupBy",function(){return Ac}),t.d(e,"gt",function(){return Sc}),t.d(e,"gte",function(){return Pc}),t.d(e,"has",function(){return Rc}),t.d(e,"hasIn",function(){return Js}),t.d(e,"head",function(){return Ql}),t.d(e,"identity",function(){return U}),t.d(e,"inRange",function(){return $c}),t.d(e,"includes",function(){return Kc}),t.d(e,"indexOf",function(){return Vc}),t.d(e,"initial",function(){return Yc}),t.d(e,"intersection",function(){return Qc}),t.d(e,"intersectionBy",function(){return Xc}),t.d(e,"intersectionWith",function(){return au}),t.d(e,"invert",function(){return nu}),t.d(e,"invertBy",function(){return du}),t.d(e,"invoke",function(){return uu}),t.d(e,"invokeMap",function(){return pu}),t.d(e,"isArguments",function(){return ht}),t.d(e,"isArray",function(){return k}),t.d(e,"isArrayBuffer",function(){return fu}),t.d(e,"isArrayLike",function(){return lt}),t.d(e,"isArrayLikeObject",function(){return $d}),t.d(e,"isBoolean",function(){return wu}),t.d(e,"isBuffer",function(){return vt.a}),t.d(e,"isDate",function(){return ku}),t.d(e,"isElement",function(){return ju}),t.d(e,"isEmpty",function(){return Eu}),t.d(e,"isEqual",function(){return Au}),t.d(e,"isEqualWith",function(){return Tu}),t.d(e,"isError",function(){return en}),t.d(e,"isFinite",function(){return Su}),t.d(e,"isFunction",function(){return Y}),t.d(e,"isInteger",function(){return Pu}),t.d(e,"isLength",function(){return dt}),t.d(e,"isMap",function(){return Sr}),t.d(e,"isMatch",function(){return Mu}),t.d(e,"isMatchWith",function(){return Cu}),t.d(e,"isNaN",function(){return Fu}),t.d(e,"isNative",function(){return Iu}),t.d(e,"isNil",function(){return Wu}),t.d(e,"isNull",function(){return Uu}),t.d(e,"isNumber",function(){return Du}),t.d(e,"isObject",function(){return T}),t.d(e,"isObjectLike",function(){return f}),t.d(e,"isPlainObject",function(){return Qi}),t.d(e,"isRegExp",function(){return Vu}),t.d(e,"isSafeInteger",function(){return Gu}),t.d(e,"isSet",function(){return Rr}),t.d(e,"isString",function(){return Ic}),t.d(e,"isSymbol",function(){return w}),t.d(e,"isTypedArray",function(){return Et}),t.d(e,"isUndefined",function(){return Zu}),t.d(e,"isWeakMap",function(){return Qu}),t.d(e,"isWeakSet",function(){return ap}),t.d(e,"iteratee",function(){return tp}),t.d(e,"join",function(){return np}),t.d(e,"kebabCase",function(){return op}),t.d(e,"keyBy",function(){return rp}),t.d(e,"keys",function(){return Ct}),t.d(e,"keysIn",function(){return Lt}),t.d(e,"last",function(){return el}),t.d(e,"lastIndexOf",function(){return cp}),t.d(e,"lodash",function(){return Ba}),t.d(e,"lowerCase",function(){return up}),t.d(e,"lowerFirst",function(){return pp}),t.d(e,"lt",function(){return gp}),t.d(e,"lte",function(){return mp}),t.d(e,"map",function(){return ac}),t.d(e,"mapKeys",function(){return fp}),t.d(e,"mapValues",function(){return yp}),t.d(e,"matches",function(){return bp}),t.d(e,"matchesProperty",function(){return vp}),t.d(e,"max",function(){return jp}),t.d(e,"maxBy",function(){return _p}),t.d(e,"mean",function(){return Ap}),t.d(e,"meanBy",function(){return Tp}),t.d(e,"memoize",function(){return qi}),t.d(e,"merge",function(){return Op}),t.d(e,"mergeWith",function(){return Kd}),t.d(e,"method",function(){return Sp}),t.d(e,"methodOf",function(){return Pp}),t.d(e,"min",function(){return Mp}),t.d(e,"minBy",function(){return Cp}),t.d(e,"mixin",function(){return Rp}),t.d(e,"multiply",function(){return Dp}),t.d(e,"negate",function(){return Bp}),t.d(e,"next",function(){return Np}),t.d(e,"noop",function(){return Ea}),t.d(e,"now",function(){return Td}),t.d(e,"nth",function(){return Hp}),t.d(e,"nthArg",function(){return Vp}),t.d(e,"omit",function(){return Zp}),t.d(e,"omitBy",function(){return az}),t.d(e,"once",function(){return ez}),t.d(e,"orderBy",function(){return rz}),t.d(e,"over",function(){return dz}),t.d(e,"overArgs",function(){return uz}),t.d(e,"overEvery",function(){return pz}),t.d(e,"overSome",function(){return zz}),t.d(e,"pad",function(){return Mz}),t.d(e,"padEnd",function(){return Cz}),t.d(e,"padStart",function(){return Rz}),t.d(e,"parseInt",function(){return Bz}),t.d(e,"partial",function(){return Lz}),t.d(e,"partialRight",function(){return Wz}),t.d(e,"partition",function(){return Uz}),t.d(e,"pick",function(){return Kz}),t.d(e,"pickBy",function(){return Xp}),t.d(e,"plant",function(){return Hz}),t.d(e,"property",function(){return id}),t.d(e,"propertyOf",function(){return Vz}),t.d(e,"pull",function(){return Qz}),t.d(e,"pullAll",function(){return Jz}),t.d(e,"pullAllBy",function(){return Xz}),t.d(e,"pullAllWith",function(){return ag}),t.d(e,"pullAt",function(){return ig}),t.d(e,"random",function(){return cg}),t.d(e,"range",function(){return mg}),t.d(e,"rangeRight",function(){return fg}),t.d(e,"rearg",function(){return yg}),t.d(e,"reduce",function(){return bg}),t.d(e,"reduceRight",function(){return vg}),t.d(e,"reject",function(){return kg}),t.d(e,"remove",function(){return jg}),t.d(e,"repeat",function(){return _g}),t.d(e,"replace",function(){return xg}),t.d(e,"rest",function(){return Eg}),t.d(e,"result",function(){return Ag}),t.d(e,"reverse",function(){return Og}),t.d(e,"round",function(){return Sg}),t.d(e,"sample",function(){return Cg}),t.d(e,"sampleSize",function(){return Bg}),t.d(e,"set",function(){return $g}),t.d(e,"setWith",function(){return Lg}),t.d(e,"shuffle",function(){return Ug}),t.d(e,"size",function(){return Hg}),t.d(e,"slice",function(){return Vg}),t.d(e,"snakeCase",function(){return Yg}),t.d(e,"some",function(){return Zg}),t.d(e,"sortBy",function(){return Jg}),t.d(e,"sortedIndex",function(){return nm}),t.d(e,"sortedIndexBy",function(){return om}),t.d(e,"sortedIndexOf",function(){return rm}),t.d(e,"sortedLastIndex",function(){return sm}),t.d(e,"sortedLastIndexBy",function(){return dm}),t.d(e,"sortedLastIndexOf",function(){return lm}),t.d(e,"sortedUniq",function(){return um}),t.d(e,"sortedUniqBy",function(){return pm}),t.d(e,"split",function(){return gm}),t.d(e,"spread",function(){return ym}),t.d(e,"startCase",function(){return wm}),t.d(e,"startsWith",function(){return bm}),t.d(e,"stubArray",function(){return Oo}),t.d(e,"stubFalse",function(){return Bu.a}),t.d(e,"stubObject",function(){return hm}),t.d(e,"stubString",function(){return vm}),t.d(e,"stubTrue",function(){return km}),t.d(e,"subtract",function(){return jm}),t.d(e,"sum",function(){return _m}),t.d(e,"sumBy",function(){return xm}),t.d(e,"tail",function(){return qm}),t.d(e,"take",function(){return Em}),t.d(e,"takeRight",function(){return Am}),t.d(e,"takeRightWhile",function(){return Tm}),t.d(e,"takeWhile",function(){return Om}),t.d(e,"tap",function(){return Sm}),t.d(e,"template",function(){return Km}),t.d(e,"templateSettings",function(){return Bm}),t.d(e,"throttle",function(){return Vm}),t.d(e,"thru",function(){return Ym}),t.d(e,"times",function(){return Qm}),t.d(e,"toArray",function(){return Up}),t.d(e,"toFinite",function(){return $}),t.d(e,"toInteger",function(){return L}),t.d(e,"toIterator",function(){return Xm}),t.d(e,"toJSON",function(){return ef}),t.d(e,"toLength",function(){return Dl}),t.d(e,"toLower",function(){return tf}),t.d(e,"toNumber",function(){return D}),t.d(e,"toPairs",function(){return jl}),t.d(e,"toPairsIn",function(){return _l}),t.d(e,"toPath",function(){return nf}),t.d(e,"toPlainObject",function(){return Id}),t.d(e,"toSafeInteger",function(){return rf}),t.d(e,"toString",function(){return Si}),t.d(e,"toUpper",function(){return sf}),t.d(e,"transform",function(){return df}),t.d(e,"trim",function(){return pf}),t.d(e,"trimEnd",function(){return gf}),t.d(e,"trimStart",function(){return ff}),t.d(e,"truncate",function(){return hf}),t.d(e,"unary",function(){return vf}),t.d(e,"unescape",function(){return xf}),t.d(e,"union",function(){return Tf}),t.d(e,"unionBy",function(){return Of}),t.d(e,"unionWith",function(){return Sf}),t.d(e,"uniq",function(){return Pf}),t.d(e,"uniqBy",function(){return Mf}),t.d(e,"uniqWith",function(){return Cf}),t.d(e,"uniqueId",function(){return Df}),t.d(e,"unset",function(){return Ff}),t.d(e,"unzip",function(){return $f}),t.d(e,"unzipWith",function(){return Lf}),t.d(e,"update",function(){return Wf}),t.d(e,"updateWith",function(){return Uf}),t.d(e,"upperCase",function(){return Nf}),t.d(e,"upperFirst",function(){return Tn}),t.d(e,"value",function(){return ef}),t.d(e,"valueOf",function(){return ef}),t.d(e,"values",function(){return Uc}),t.d(e,"valuesIn",function(){return Kf}),t.d(e,"without",function(){return Hf}),t.d(e,"words",function(){return io}),t.d(e,"wrap",function(){return Vf}),t.d(e,"wrapperAt",function(){return Yf}),t.d(e,"wrapperChain",function(){return Gf}),t.d(e,"wrapperCommit",function(){return es}),t.d(e,"wrapperLodash",function(){return Ba}),t.d(e,"wrapperNext",function(){return Np}),t.d(e,"wrapperPlant",function(){return Hz}),t.d(e,"wrapperReverse",function(){return Zf}),t.d(e,"wrapperToIterator",function(){return Xm}),t.d(e,"wrapperValue",function(){return ef}),t.d(e,"xor",function(){return Qf}),t.d(e,"xorBy",function(){return Xf}),t.d(e,"xorWith",function(){return ay}),t.d(e,"zip",function(){return ey}),t.d(e,"zipObject",function(){return iy}),t.d(e,"zipObjectDeep",function(){return ny}),t.d(e,"zipWith",function(){return oy}),t.d(e,"default",function(){return Py})},function(a,e){var t=Array.isArray;a.exports=t},,function(a,e,t){var i=t(45),n="object"==typeof self&&self&&self.Object===Object&&self,o=i||n||Function("return this")();a.exports=o},,,function(a,e){a.exports=function(a){var e=typeof a;return null!=a&&("object"==e||"function"==e)}},function(a,e){a.exports=function(a){return null!=a&&"object"==typeof a}},,function(a,e,t){"use strict";var i=t(296),n="object"==typeof self&&self&&self.Object===Object&&self,o=i.a||n||Function("return this")();e.a=o},function(a,e,t){var i=t(14),n=t(74),o=t(75),r="[object Null]",s="[object Undefined]",d=i?i.toStringTag:void 0;a.exports=function(a){return null==a?void 0===a?s:r:d&&d in Object(a)?n(a):o(a)}},function(a,e,t){var i=t(89),n=t(92);a.exports=function(a,e){var t=n(a,e);return i(t)?t:void 0}},function(a,e,t){var i=t(5).Symbol;a.exports=i},function(a,e){var t;t=function(){return this}();try{t=t||Function("return this")()||(0,eval)("this")}catch(a){"object"==typeof window&&(t=window)}a.exports=t},function(a,e,t){var i=t(13)(Object,"create");a.exports=i},function(a,e,t){var i=t(26);a.exports=function(a,e){for(var t=a.length;t--;)if(i(a[t][0],e))return t;return-1}},function(a,e,t){var i=t(103);a.exports=function(a,e){var t=a.__data__;return i(e)?t["string"==typeof e?"string":"hash"]:t.map}},function(a,e,t){var i=t(12),n=t(9),o="[object Symbol]";a.exports=function(a){return"symbol"==typeof a||n(a)&&i(a)==o}},function(a,e,t){var i=t(19),n=1/0;a.exports=function(a){if("string"==typeof a||i(a))return a;var e=a+"";return"0"==e&&1/a==-n?"-0":e}},function(a,e,t){var i=t(39);a.exports=function(a,e,t){var n=null==a?void 0:i(a,e);return void 0===n?t:n}},function(a,e,t){var i=t(97),n=t(98),o=t(99),r=t(100),s=t(101);function d(a){var e=-1,t=null==a?0:a.length;for(this.clear();++e<t;){var i=a[e];this.set(i[0],i[1])}}d.prototype.clear=i,d.prototype.delete=n,d.prototype.get=o,d.prototype.has=r,d.prototype.set=s,a.exports=d},function(a,e,t){var i=t(25),n=t(62);a.exports=function(a){return null!=a&&n(a.length)&&!i(a)}},function(a,e,t){var i=t(3),n=t(40),o=t(84),r=t(64);a.exports=function(a,e){return i(a)?a:n(a,e)?[a]:o(r(a))}},function(a,e,t){var i=t(12),n=t(8),o="[object AsyncFunction]",r="[object Function]",s="[object GeneratorFunction]",d="[object Proxy]";a.exports=function(a){if(!n(a))return!1;var e=i(a);return e==r||e==s||e==o||e==d}},function(a,e){a.exports=function(a,e){return a===e||a!=a&&e!=e}},function(a,e,t){var i=t(112),n=t(130),o=t(23);a.exports=function(a){return o(a)?i(a):n(a)}},,,function(a,e){a.exports=function(a,e){for(var t=-1,i=null==a?0:a.length,n=Array(i);++t<i;)n[t]=e(a[t],t,a);return n}},,,function(a,e,t){"use strict";(function(a){var i=t(296),n="object"==typeof exports&&exports&&!exports.nodeType&&exports,o=n&&"object"==typeof a&&a&&!a.nodeType&&a,r=o&&o.exports===n&&i.a.process,s=function(){try{var a=o&&o.require&&o.require("util").types;return a||r&&r.binding&&r.binding("util")}catch(a){}}();e.a=s}).call(this,t(293)(a))},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=t(2),n=function(a){return a&&a.__esModule?a:{default:a}}(t(242));var o=function(){return[]},r=function(a){this._hasScore=!1,this._identifier="",this._hasMarks=!1,this._marker=o,this.score=0,this.text="",this.marks=[],(0,i.isUndefined)(a)&&(a={}),(0,i.isUndefined)(a.score)||this.setScore(a.score),(0,i.isUndefined)(a.text)||this.setText(a.text),(0,i.isUndefined)(a.marks)||this.setMarks(a.marks)};r.prototype.hasScore=function(){return this._hasScore},r.prototype.getScore=function(){return this.score},r.prototype.setScore=function(a){(0,i.isNumber)(a)&&(this.score=a,this._hasScore=!0)},r.prototype.hasText=function(){return""!==this.text},r.prototype.getText=function(){return this.text},r.prototype.setText=function(a){(0,i.isUndefined)(a)&&(a=""),this.text=a},r.prototype.getMarks=function(){return this.marks},r.prototype.setMarks=function(a){(0,i.isArray)(a)&&(this.marks=a,this._hasMarks=a.length>0)},r.prototype.setIdentifier=function(a){this._identifier=a},r.prototype.getIdentifier=function(){return this._identifier},r.prototype.setMarker=function(a){this._marker=a},r.prototype.hasMarker=function(){return this._hasMarks&&this._marker!==this.emptyMarker},r.prototype.getMarker=function(){return this._marker},r.prototype.setHasMarks=function(a){this._hasMarks=a},r.prototype.hasMarks=function(){return this._hasMarks},r.prototype.serialize=function(){return{_parseClass:"AssessmentResult",identifier:this._identifier,score:this.score,text:this.text,marks:this.marks.map(function(a){return a.serialize()})}},r.parse=function(a){var e=new r({text:a.text,score:a.score,marks:a.marks.map(function(a){return n.default.parse(a)})});return e.setIdentifier(a.identifier),e},e.default=r},function(a,e,t){var i=t(13)(t(5),"Map");a.exports=i},function(a,e,t){"use strict";(function(a){var i=t(11),n=t(138),o="object"==typeof exports&&exports&&!exports.nodeType&&exports,r=o&&"object"==typeof a&&a&&!a.nodeType&&a,s=r&&r.exports===o?i.a.Buffer:void 0,d=(s?s.isBuffer:void 0)||n.a;e.a=d}).call(this,t(293)(a))},function(a,e,t){var i=t(86),n=t(102),o=t(104),r=t(105),s=t(106);function d(a){var e=-1,t=null==a?0:a.length;for(this.clear();++e<t;){var i=a[e];this.set(i[0],i[1])}}d.prototype.clear=i,d.prototype.delete=n,d.prototype.get=o,d.prototype.has=r,d.prototype.set=s,a.exports=d},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=t(1031);Object.keys(i).forEach(function(a){"default"!==a&&"__esModule"!==a&&Object.defineProperty(e,a,{enumerable:!0,get:function(){return i[a]}})})},function(a,e,t){var i=t(24),n=t(20);a.exports=function(a,e){for(var t=0,o=(e=i(e,a)).length;null!=a&&t<o;)a=a[n(e[t++])];return t&&t==o?a:void 0}},function(a,e,t){var i=t(3),n=t(19),o=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,r=/^\w*$/;a.exports=function(a,e){if(i(a))return!1;var t=typeof a;return!("number"!=t&&"symbol"!=t&&"boolean"!=t&&null!=a&&!n(a))||r.test(a)||!o.test(a)||null!=e&&a in Object(e)}},function(a,e){a.exports=function(a){return a.webpackPolyfill||(a.deprecate=function(){},a.paths=[],a.children||(a.children=[]),Object.defineProperty(a,"loaded",{enumerable:!0,get:function(){return a.l}}),Object.defineProperty(a,"id",{enumerable:!0,get:function(){return a.i}}),a.webpackPolyfill=1),a}},,function(a,e,t){var i=t(185),n=t(35),o=t(186),r=t(151),s=t(152),d=t(12),l=t(56),c=l(i),u=l(n),p=l(o),z=l(r),g=l(s),m=d;(i&&"[object DataView]"!=m(new i(new ArrayBuffer(1)))||n&&"[object Map]"!=m(new n)||o&&"[object Promise]"!=m(o.resolve())||r&&"[object Set]"!=m(new r)||s&&"[object WeakMap]"!=m(new s))&&(m=function(a){var e=d(a),t="[object Object]"==e?a.constructor:void 0,i=t?l(t):"";if(i)switch(i){case c:return"[object DataView]";case u:return"[object Map]";case p:return"[object Promise]";case z:return"[object Set]";case g:return"[object WeakMap]"}return e}),a.exports=m},,function(a,e,t){(function(e){var t="object"==typeof e&&e&&e.Object===Object&&e;a.exports=t}).call(this,t(15))},function(a,e,t){var i=t(175),n=t(9),o=Object.prototype,r=o.hasOwnProperty,s=o.propertyIsEnumerable,d=i(function(){return arguments}())?i:function(a){return n(a)&&r.call(a,"callee")&&!s.call(a,"callee")};a.exports=d},function(a,e,t){(function(a){var i=t(5),n=t(176),o="object"==typeof e&&e&&!e.nodeType&&e,r=o&&"object"==typeof a&&a&&!a.nodeType&&a,s=r&&r.exports===o?i.Buffer:void 0,d=(s?s.isBuffer:void 0)||n;a.exports=d}).call(this,t(41)(a))},,,,,,,function(a,e){var t=Object.prototype;a.exports=function(a){var e=a&&a.constructor;return a===("function"==typeof e&&e.prototype||t)}},,function(a,e){var t=Function.prototype.toString;a.exports=function(a){if(null!=a){try{return t.call(a)}catch(a){}try{return a+""}catch(a){}}return""}},function(a,e){a.exports=function(a){return a}},,,,,function(a,e){var t=9007199254740991;a.exports=function(a){return"number"==typeof a&&a>-1&&a%1==0&&a<=t}},function(a,e){a.exports=function(a){return function(e){return a(e)}}},function(a,e,t){var i=t(76);a.exports=function(a){return null==a?"":i(a)}},function(a,e){var t=9007199254740991,i=/^(?:0|[1-9]\d*)$/;a.exports=function(a,e){var n=typeof a;return!!(e=null==e?t:e)&&("number"==n||"symbol"!=n&&i.test(a))&&a>-1&&a%1==0&&a<e}},function(a,e,t){var i=t(177),n=t(63),o=t(72),r=o&&o.isTypedArray,s=r?n(r):i;a.exports=s},function(a,e,t){var i=t(22),n=t(180),o=t(181),r=t(182),s=t(183),d=t(184);function l(a){var e=this.__data__=new i(a);this.size=e.size}l.prototype.clear=n,l.prototype.delete=o,l.prototype.get=r,l.prototype.has=s,l.prototype.set=d,a.exports=l},,,,,function(a,e,t){(function(a){var i=t(45),n="object"==typeof e&&e&&!e.nodeType&&e,o=n&&"object"==typeof a&&a&&!a.nodeType&&a,r=o&&o.exports===n&&i.process,s=function(){try{var a=o&&o.require&&o.require("util").types;return a||r&&r.binding&&r.binding("util")}catch(a){}}();a.exports=s}).call(this,t(41)(a))},function(a,e,t){(function(a,i){var n=/%[sdj%]/g;e.format=function(a){if(!y(a)){for(var e=[],t=0;t<arguments.length;t++)e.push(s(arguments[t]));return e.join(" ")}t=1;for(var i=arguments,o=i.length,r=String(a).replace(n,function(a){if("%%"===a)return"%";if(t>=o)return a;switch(a){case"%s":return String(i[t++]);case"%d":return Number(i[t++]);case"%j":try{return JSON.stringify(i[t++])}catch(a){return"[Circular]"}default:return a}}),d=i[t];t<o;d=i[++t])m(d)||!h(d)?r+=" "+d:r+=" "+s(d);return r},e.deprecate=function(t,n){if(w(a.process))return function(){return e.deprecate(t,n).apply(this,arguments)};if(!0===i.noDeprecation)return t;var o=!1;return function(){if(!o){if(i.throwDeprecation)throw new Error(n);i.traceDeprecation?console.trace(n):console.error(n),o=!0}return t.apply(this,arguments)}};var o,r={};function s(a,t){var i={seen:[],stylize:l};return arguments.length>=3&&(i.depth=arguments[2]),arguments.length>=4&&(i.colors=arguments[3]),g(t)?i.showHidden=t:t&&e._extend(i,t),w(i.showHidden)&&(i.showHidden=!1),w(i.depth)&&(i.depth=2),w(i.colors)&&(i.colors=!1),w(i.customInspect)&&(i.customInspect=!0),i.colors&&(i.stylize=d),c(i,a,i.depth)}function d(a,e){var t=s.styles[e];return t?"["+s.colors[t][0]+"m"+a+"["+s.colors[t][1]+"m":a}function l(a,e){return a}function c(a,t,i){if(a.customInspect&&t&&j(t.inspect)&&t.inspect!==e.inspect&&(!t.constructor||t.constructor.prototype!==t)){var n=t.inspect(i,a);return y(n)||(n=c(a,n,i)),n}var o=function(a,e){if(w(e))return a.stylize("undefined","undefined");if(y(e)){var t="'"+JSON.stringify(e).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return a.stylize(t,"string")}if(f(e))return a.stylize(""+e,"number");if(g(e))return a.stylize(""+e,"boolean");if(m(e))return a.stylize("null","null")}(a,t);if(o)return o;var r=Object.keys(t),s=function(a){var e={};return a.forEach(function(a,t){e[a]=!0}),e}(r);if(a.showHidden&&(r=Object.getOwnPropertyNames(t)),k(t)&&(r.indexOf("message")>=0||r.indexOf("description")>=0))return u(t);if(0===r.length){if(j(t)){var d=t.name?": "+t.name:"";return a.stylize("[Function"+d+"]","special")}if(b(t))return a.stylize(RegExp.prototype.toString.call(t),"regexp");if(v(t))return a.stylize(Date.prototype.toString.call(t),"date");if(k(t))return u(t)}var l,h="",_=!1,x=["{","}"];(z(t)&&(_=!0,x=["[","]"]),j(t))&&(h=" [Function"+(t.name?": "+t.name:"")+"]");return b(t)&&(h=" "+RegExp.prototype.toString.call(t)),v(t)&&(h=" "+Date.prototype.toUTCString.call(t)),k(t)&&(h=" "+u(t)),0!==r.length||_&&0!=t.length?i<0?b(t)?a.stylize(RegExp.prototype.toString.call(t),"regexp"):a.stylize("[Object]","special"):(a.seen.push(t),l=_?function(a,e,t,i,n){for(var o=[],r=0,s=e.length;r<s;++r)E(e,String(r))?o.push(p(a,e,t,i,String(r),!0)):o.push("");return n.forEach(function(n){n.match(/^\d+$/)||o.push(p(a,e,t,i,n,!0))}),o}(a,t,i,s,r):r.map(function(e){return p(a,t,i,s,e,_)}),a.seen.pop(),function(a,e,t){if(a.reduce(function(a,e){return 0,e.indexOf("\n")>=0&&0,a+e.replace(/\u001b\[\d\d?m/g,"").length+1},0)>60)return t[0]+(""===e?"":e+"\n ")+" "+a.join(",\n ")+" "+t[1];return t[0]+e+" "+a.join(", ")+" "+t[1]}(l,h,x)):x[0]+h+x[1]}function u(a){return"["+Error.prototype.toString.call(a)+"]"}function p(a,e,t,i,n,o){var r,s,d;if((d=Object.getOwnPropertyDescriptor(e,n)||{value:e[n]}).get?s=d.set?a.stylize("[Getter/Setter]","special"):a.stylize("[Getter]","special"):d.set&&(s=a.stylize("[Setter]","special")),E(i,n)||(r="["+n+"]"),s||(a.seen.indexOf(d.value)<0?(s=m(t)?c(a,d.value,null):c(a,d.value,t-1)).indexOf("\n")>-1&&(s=o?s.split("\n").map(function(a){return" "+a}).join("\n").substr(2):"\n"+s.split("\n").map(function(a){return" "+a}).join("\n")):s=a.stylize("[Circular]","special")),w(r)){if(o&&n.match(/^\d+$/))return s;(r=JSON.stringify(""+n)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(r=r.substr(1,r.length-2),r=a.stylize(r,"name")):(r=r.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),r=a.stylize(r,"string"))}return r+": "+s}function z(a){return Array.isArray(a)}function g(a){return"boolean"==typeof a}function m(a){return null===a}function f(a){return"number"==typeof a}function y(a){return"string"==typeof a}function w(a){return void 0===a}function b(a){return h(a)&&"[object RegExp]"===_(a)}function h(a){return"object"==typeof a&&null!==a}function v(a){return h(a)&&"[object Date]"===_(a)}function k(a){return h(a)&&("[object Error]"===_(a)||a instanceof Error)}function j(a){return"function"==typeof a}function _(a){return Object.prototype.toString.call(a)}function x(a){return a<10?"0"+a.toString(10):a.toString(10)}e.debuglog=function(a){if(w(o)&&(o=i.env.NODE_DEBUG||""),a=a.toUpperCase(),!r[a])if(new RegExp("\\b"+a+"\\b","i").test(o)){var t=i.pid;r[a]=function(){var i=e.format.apply(e,arguments);console.error("%s %d: %s",a,t,i)}}else r[a]=function(){};return r[a]},e.inspect=s,s.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},s.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},e.isArray=z,e.isBoolean=g,e.isNull=m,e.isNullOrUndefined=function(a){return null==a},e.isNumber=f,e.isString=y,e.isSymbol=function(a){return"symbol"==typeof a},e.isUndefined=w,e.isRegExp=b,e.isObject=h,e.isDate=v,e.isError=k,e.isFunction=j,e.isPrimitive=function(a){return null===a||"boolean"==typeof a||"number"==typeof a||"string"==typeof a||"symbol"==typeof a||void 0===a},e.isBuffer=t(1071);var q=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function E(a,e){return Object.prototype.hasOwnProperty.call(a,e)}e.log=function(){console.log("%s - %s",function(){var a=new Date,e=[x(a.getHours()),x(a.getMinutes()),x(a.getSeconds())].join(":");return[a.getDate(),q[a.getMonth()],e].join(" ")}(),e.format.apply(e,arguments))},e.inherits=t(244),e._extend=function(a,e){if(!e||!h(e))return a;for(var t=Object.keys(e),i=t.length;i--;)a[t[i]]=e[t[i]];return a}}).call(this,t(15),t(198))},function(a,e,t){var i=t(14),n=Object.prototype,o=n.hasOwnProperty,r=n.toString,s=i?i.toStringTag:void 0;a.exports=function(a){var e=o.call(a,s),t=a[s];try{a[s]=void 0;var i=!0}catch(a){}var n=r.call(a);return i&&(e?a[s]=t:delete a[s]),n}},function(a,e){var t=Object.prototype.toString;a.exports=function(a){return t.call(a)}},function(a,e,t){var i=t(14),n=t(30),o=t(3),r=t(19),s=1/0,d=i?i.prototype:void 0,l=d?d.toString:void 0;a.exports=function a(e){if("string"==typeof e)return e;if(o(e))return n(e,a)+"";if(r(e))return l?l.call(e):"";var t=e+"";return"0"==t&&1/e==-s?"-0":t}},function(a,e){a.exports=function(a,e){for(var t=-1,i=e.length,n=a.length;++t<i;)a[n+t]=e[t];return a}},function(a,e,t){var i=t(141),n=t(120),o=Object.prototype.propertyIsEnumerable,r=Object.getOwnPropertySymbols,s=r?function(a){return null==a?[]:(a=Object(a),i(r(a),function(e){return o.call(a,e)}))}:n;a.exports=s},,,function(a,e,t){var i=t(37),n="Expected a function";function o(a,e){if("function"!=typeof a||null!=e&&"function"!=typeof e)throw new TypeError(n);var t=function(){var i=arguments,n=e?e.apply(this,i):i[0],o=t.cache;if(o.has(n))return o.get(n);var r=a.apply(this,i);return t.cache=o.set(n,r)||o,r};return t.cache=new(o.Cache||i),t}o.Cache=i,a.exports=o},,function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=function(){function a(a,e){for(var t=0;t<e.length;t++){var i=e[t];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(a,i.key,i)}}return function(e,t,i){return t&&a(e.prototype,t),i&&a(e,i),e}}();var n=function(){function a(){!function(a,e){if(!(a instanceof e))throw new TypeError("Cannot call a class as a function")}(this,a)}return i(a,[{key:"getResult",value:function(a,e,t){throw"The method getResult is not implemented"}},{key:"isApplicable",value:function(a){return!0}}]),a}();e.default=n},function(a,e,t){var i=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,n=/\\(\\)?/g,o=t(85)(function(a){var e=[];return 46===a.charCodeAt(0)&&e.push(""),a.replace(i,function(a,t,i,o){e.push(i?o.replace(n,"$1"):t||a)}),e});a.exports=o},function(a,e,t){var i=t(81),n=500;a.exports=function(a){var e=i(a,function(a){return t.size===n&&t.clear(),a}),t=e.cache;return e}},function(a,e,t){var i=t(87),n=t(22),o=t(35);a.exports=function(){this.size=0,this.__data__={hash:new i,map:new(o||n),string:new i}}},function(a,e,t){var i=t(88),n=t(93),o=t(94),r=t(95),s=t(96);function d(a){var e=-1,t=null==a?0:a.length;for(this.clear();++e<t;){var i=a[e];this.set(i[0],i[1])}}d.prototype.clear=i,d.prototype.delete=n,d.prototype.get=o,d.prototype.has=r,d.prototype.set=s,a.exports=d},function(a,e,t){var i=t(16);a.exports=function(){this.__data__=i?i(null):{},this.size=0}},function(a,e,t){var i=t(25),n=t(90),o=t(8),r=t(56),s=/^\[object .+?Constructor\]$/,d=Function.prototype,l=Object.prototype,c=d.toString,u=l.hasOwnProperty,p=RegExp("^"+c.call(u).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");a.exports=function(a){return!(!o(a)||n(a))&&(i(a)?p:s).test(r(a))}},function(a,e,t){var i=t(91),n=function(){var a=/[^.]+$/.exec(i&&i.keys&&i.keys.IE_PROTO||"");return a?"Symbol(src)_1."+a:""}();a.exports=function(a){return!!n&&n in a}},function(a,e,t){var i=t(5)["__core-js_shared__"];a.exports=i},function(a,e){a.exports=function(a,e){return null==a?void 0:a[e]}},function(a,e){a.exports=function(a){var e=this.has(a)&&delete this.__data__[a];return this.size-=e?1:0,e}},function(a,e,t){var i=t(16),n="__lodash_hash_undefined__",o=Object.prototype.hasOwnProperty;a.exports=function(a){var e=this.__data__;if(i){var t=e[a];return t===n?void 0:t}return o.call(e,a)?e[a]:void 0}},function(a,e,t){var i=t(16),n=Object.prototype.hasOwnProperty;a.exports=function(a){var e=this.__data__;return i?void 0!==e[a]:n.call(e,a)}},function(a,e,t){var i=t(16),n="__lodash_hash_undefined__";a.exports=function(a,e){var t=this.__data__;return this.size+=this.has(a)?0:1,t[a]=i&&void 0===e?n:e,this}},function(a,e){a.exports=function(){this.__data__=[],this.size=0}},function(a,e,t){var i=t(17),n=Array.prototype.splice;a.exports=function(a){var e=this.__data__,t=i(e,a);return!(t<0||(t==e.length-1?e.pop():n.call(e,t,1),--this.size,0))}},function(a,e,t){var i=t(17);a.exports=function(a){var e=this.__data__,t=i(e,a);return t<0?void 0:e[t][1]}},function(a,e,t){var i=t(17);a.exports=function(a){return i(this.__data__,a)>-1}},function(a,e,t){var i=t(17);a.exports=function(a,e){var t=this.__data__,n=i(t,a);return n<0?(++this.size,t.push([a,e])):t[n][1]=e,this}},function(a,e,t){var i=t(18);a.exports=function(a){var e=i(this,a).delete(a);return this.size-=e?1:0,e}},function(a,e){a.exports=function(a){var e=typeof a;return"string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==a:null===a}},function(a,e,t){var i=t(18);a.exports=function(a){return i(this,a).get(a)}},function(a,e,t){var i=t(18);a.exports=function(a){return i(this,a).has(a)}},function(a,e,t){var i=t(18);a.exports=function(a,e){var t=i(this,a),n=t.size;return t.set(a,e),this.size+=t.size==n?0:1,this}},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(a){return a.split("_")[0]}},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(a){return a=(a=(a=a.replace(/\s{2,}/g," ")).replace(/\s\./g,".")).replace(/^\s+|\s+$/g,"")}},,,,function(a,e,t){var i=t(174),n=t(46),o=t(3),r=t(47),s=t(65),d=t(66),l=Object.prototype.hasOwnProperty;a.exports=function(a,e){var t=o(a),c=!t&&n(a),u=!t&&!c&&r(a),p=!t&&!c&&!u&&d(a),z=t||c||u||p,g=z?i(a.length,String):[],m=g.length;for(var f in a)!e&&!l.call(a,f)||z&&("length"==f||u&&("offset"==f||"parent"==f)||p&&("buffer"==f||"byteLength"==f||"byteOffset"==f)||s(f,m))||g.push(f);return g}},function(a,e,t){var i=t(215),n=t(9);a.exports=function a(e,t,o,r,s){return e===t||(null==e||null==t||!n(e)&&!n(t)?e!=e&&t!=t:i(e,t,o,r,a,s))}},,,,,function(a,e){a.exports=function(a,e){return function(t){return a(e(t))}}},function(a,e,t){var i=t(77),n=t(3);a.exports=function(a,e,t){var o=e(a);return n(a)?o:i(o,t(a))}},function(a,e){a.exports=function(){return[]}},,,,,,,,,function(a,e,t){var i=t(208),n=t(210)(i);a.exports=n},function(a,e,t){var i=t(54),n=t(178),o=Object.prototype.hasOwnProperty;a.exports=function(a){if(!i(a))return n(a);var e=[];for(var t in Object(a))o.call(a,t)&&"constructor"!=t&&e.push(t);return e}},function(a,e,t){var i=t(148),n=t(218),o=t(149),r=1,s=2;a.exports=function(a,e,t,d,l,c){var u=t&r,p=a.length,z=e.length;if(p!=z&&!(u&&z>p))return!1;var g=c.get(a);if(g&&c.get(e))return g==e;var m=-1,f=!0,y=t&s?new i:void 0;for(c.set(a,e),c.set(e,a);++m<p;){var w=a[m],b=e[m];if(d)var h=u?d(b,w,m,e,a,c):d(w,b,m,a,e,c);if(void 0!==h){if(h)continue;f=!1;break}if(y){if(!n(e,function(a,e){if(!o(y,e)&&(w===a||l(w,a,t,d,c)))return y.push(e)})){f=!1;break}}else if(w!==b&&!l(w,b,t,d,c)){f=!1;break}}return c.delete(a),c.delete(e),f}},function(a,e,t){var i=t(5).Uint8Array;a.exports=i},function(a,e,t){var i=t(119),n=t(78),o=t(27);a.exports=function(a){return i(a,o,n)}},function(a,e,t){var i=t(8);a.exports=function(a){return a==a&&!i(a)}},function(a,e){a.exports=function(a,e){return function(t){return null!=t&&t[a]===e&&(void 0!==e||a in Object(t))}}},,,function(a,e,t){"use strict";e.a=function(){return!1}},,function(a,e,t){var i=t(213),n=t(223),o=t(57),r=t(3),s=t(226);a.exports=function(a){return"function"==typeof a?a:null==a?o:"object"==typeof a?r(a)?n(a[0],a[1]):i(a):s(a)}},function(a,e){a.exports=function(a,e){for(var t=-1,i=null==a?0:a.length,n=0,o=[];++t<i;){var r=a[t];e(r,t,a)&&(o[n++]=r)}return o}},,,,,,,function(a,e,t){var i=t(37),n=t(216),o=t(217);function r(a){var e=-1,t=null==a?0:a.length;for(this.__data__=new i;++e<t;)this.add(a[e])}r.prototype.add=r.prototype.push=n,r.prototype.has=o,a.exports=r},function(a,e){a.exports=function(a,e){return a.has(e)}},function(a,e){a.exports=function(a){var e=-1,t=Array(a.size);return a.forEach(function(a){t[++e]=a}),t}},function(a,e,t){var i=t(13)(t(5),"Set");a.exports=i},function(a,e,t){var i=t(13)(t(5),"WeakMap");a.exports=i},,function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.stripBlockTagsAtStartEnd=e.stripIncompleteTags=e.stripFullTags=void 0;var i=function(a){return a&&a.__esModule?a:{default:a}}(t(108)),n=t(379);var o=new RegExp("^<("+n.blockElements.join("|")+")[^>]*?>","i"),r=new RegExp("</("+n.blockElements.join("|")+")[^>]*?>$","i"),s=function(a){return a=(a=a.replace(/^(<\/([^>]+)>)+/i,"")).replace(/(<([^/>]+)>)+$/i,"")},d=function(a){return a=(a=a.replace(o,"")).replace(r,"")},l=function(a){return a=a.replace(/(<([^>]+)>)/gi," "),a=(0,i.default)(a)};e.stripFullTags=l,e.stripIncompleteTags=s,e.stripBlockTagsAtStartEnd=d,e.default={stripFullTags:l,stripIncompleteTags:s,stripBlockTagsAtStartEnd:d}},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(a){if(""===(a=(0,n.default)((0,i.stripFullTags)(a))))return[];var e=a.split(/\s/g);return e=(0,r.map)(e,function(a){return(0,o.default)(a)}),(0,r.filter)(e,function(a){return""!==a.trim()})};var i=t(154),n=s(t(108)),o=s(t(737)),r=t(2);function s(a){return a&&a.__esModule?a:{default:a}}},,,,,,,,,,function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(a){a=(0,o.unifyNonBreakingSpace)(a);var e=(0,n.getBlocks)(a);e=(0,i.flatMap)(e,function(a){return a.split(s)});var t=(0,i.flatMap)(e,d);return(0,i.filter)(t,(0,i.negate)(i.isEmpty))};var i=t(2),n=t(379),o=t(801),r=function(a){return a&&a.__esModule?a:{default:a}}(t(1036));var s=new RegExp("\n\r|\n|\r");var d=(0,i.memoize)(function(a){var e=new r.default,t=e.createTokenizer(),i=t.tokenizer,n=t.tokens;return e.tokenize(i,a),0===n.length?[]:e.getSentencesFromTokens(n)})},,,,,,,,function(a,e,t){var i=t(209)();a.exports=i},function(a,e){a.exports=function(a,e){for(var t=-1,i=Array(a);++t<a;)i[t]=e(t);return i}},function(a,e,t){var i=t(12),n=t(9),o="[object Arguments]";a.exports=function(a){return n(a)&&i(a)==o}},function(a,e){a.exports=function(){return!1}},function(a,e,t){var i=t(12),n=t(62),o=t(9),r={};r["[object Float32Array]"]=r["[object Float64Array]"]=r["[object Int8Array]"]=r["[object Int16Array]"]=r["[object Int32Array]"]=r["[object Uint8Array]"]=r["[object Uint8ClampedArray]"]=r["[object Uint16Array]"]=r["[object Uint32Array]"]=!0,r["[object Arguments]"]=r["[object Array]"]=r["[object ArrayBuffer]"]=r["[object Boolean]"]=r["[object DataView]"]=r["[object Date]"]=r["[object Error]"]=r["[object Function]"]=r["[object Map]"]=r["[object Number]"]=r["[object Object]"]=r["[object RegExp]"]=r["[object Set]"]=r["[object String]"]=r["[object WeakMap]"]=!1,a.exports=function(a){return o(a)&&n(a.length)&&!!r[i(a)]}},function(a,e,t){var i=t(118)(Object.keys,Object);a.exports=i},function(a,e,t){var i=t(199),n=t(211),o=t(212);a.exports=function(a,e,t){return e==e?o(a,e,t):i(a,n,t)}},function(a,e,t){var i=t(22);a.exports=function(){this.__data__=new i,this.size=0}},function(a,e){a.exports=function(a){var e=this.__data__,t=e.delete(a);return this.size=e.size,t}},function(a,e){a.exports=function(a){return this.__data__.get(a)}},function(a,e){a.exports=function(a){return this.__data__.has(a)}},function(a,e,t){var i=t(22),n=t(35),o=t(37),r=200;a.exports=function(a,e){var t=this.__data__;if(t instanceof i){var s=t.__data__;if(!n||s.length<r-1)return s.push([a,e]),this.size=++t.size,this;t=this.__data__=new o(s)}return t.set(a,e),this.size=t.size,this}},function(a,e,t){var i=t(13)(t(5),"DataView");a.exports=i},function(a,e,t){var i=t(13)(t(5),"Promise");a.exports=i},function(a,e,t){var i=t(24),n=t(46),o=t(3),r=t(65),s=t(62),d=t(20);a.exports=function(a,e,t){for(var l=-1,c=(e=i(e,a)).length,u=!1;++l<c;){var p=d(e[l]);if(!(u=null!=a&&t(a,p)))break;a=a[p]}return u||++l!=c?u:!!(c=null==a?0:a.length)&&s(c)&&r(p,c)&&(o(a)||n(a))}},,,,,,,,,,,function(a,e){var t,i,n=a.exports={};function o(){throw new Error("setTimeout has not been defined")}function r(){throw new Error("clearTimeout has not been defined")}function s(a){if(t===setTimeout)return setTimeout(a,0);if((t===o||!t)&&setTimeout)return t=setTimeout,setTimeout(a,0);try{return t(a,0)}catch(e){try{return t.call(null,a,0)}catch(e){return t.call(this,a,0)}}}!function(){try{t="function"==typeof setTimeout?setTimeout:o}catch(a){t=o}try{i="function"==typeof clearTimeout?clearTimeout:r}catch(a){i=r}}();var d,l=[],c=!1,u=-1;function p(){c&&d&&(c=!1,d.length?l=d.concat(l):u=-1,l.length&&z())}function z(){if(!c){var a=s(p);c=!0;for(var e=l.length;e;){for(d=l,l=[];++u<e;)d&&d[u].run();u=-1,e=l.length}d=null,c=!1,function(a){if(i===clearTimeout)return clearTimeout(a);if((i===r||!i)&&clearTimeout)return i=clearTimeout,clearTimeout(a);try{i(a)}catch(e){try{return i.call(null,a)}catch(e){return i.call(this,a)}}}(a)}}function g(a,e){this.fun=a,this.array=e}function m(){}n.nextTick=function(a){var e=new Array(arguments.length-1);if(arguments.length>1)for(var t=1;t<arguments.length;t++)e[t-1]=arguments[t];l.push(new g(a,e)),1!==l.length||c||s(z)},g.prototype.run=function(){this.fun.apply(null,this.array)},n.title="browser",n.browser=!0,n.env={},n.argv=[],n.version="",n.versions={},n.on=m,n.addListener=m,n.once=m,n.off=m,n.removeListener=m,n.removeAllListeners=m,n.emit=m,n.prependListener=m,n.prependOnceListener=m,n.listeners=function(a){return[]},n.binding=function(a){throw new Error("process.binding is not supported")},n.cwd=function(){return"/"},n.chdir=function(a){throw new Error("process.chdir is not supported")},n.umask=function(){return 0}},function(a,e){a.exports=function(a,e,t,i){for(var n=a.length,o=t+(i?1:-1);i?o--:++o<n;)if(e(a[o],o,a))return o;return-1}},function(a,e,t){var i=t(8),n=t(19),o=NaN,r=/^\s+|\s+$/g,s=/^[-+]0x[0-9a-f]+$/i,d=/^0b[01]+$/i,l=/^0o[0-7]+$/i,c=parseInt;a.exports=function(a){if("number"==typeof a)return a;if(n(a))return o;if(i(a)){var e="function"==typeof a.valueOf?a.valueOf():a;a=i(e)?e+"":e}if("string"!=typeof a)return 0===a?a:+a;a=a.replace(r,"");var t=d.test(a);return t||l.test(a)?c(a.slice(2),t?2:8):s.test(a)?o:+a}},function(a,e){a.exports=function(a){return function(e){return null==e?void 0:e[a]}}},,,,,,,function(a,e,t){var i=t(173),n=t(27);a.exports=function(a,e){return a&&i(a,e,n)}},function(a,e){a.exports=function(a){return function(e,t,i){for(var n=-1,o=Object(e),r=i(e),s=r.length;s--;){var d=r[a?s:++n];if(!1===t(o[d],d,o))break}return e}}},function(a,e,t){var i=t(23);a.exports=function(a,e){return function(t,n){if(null==t)return t;if(!i(t))return a(t,n);for(var o=t.length,r=e?o:-1,s=Object(t);(e?r--:++r<o)&&!1!==n(s[r],r,s););return t}}},function(a,e){a.exports=function(a){return a!=a}},function(a,e){a.exports=function(a,e,t){for(var i=t-1,n=a.length;++i<n;)if(a[i]===e)return i;return-1}},function(a,e,t){var i=t(214),n=t(222),o=t(135);a.exports=function(a){var e=n(a);return 1==e.length&&e[0][2]?o(e[0][0],e[0][1]):function(t){return t===a||i(t,a,e)}}},function(a,e,t){var i=t(67),n=t(113),o=1,r=2;a.exports=function(a,e,t,s){var d=t.length,l=d,c=!s;if(null==a)return!l;for(a=Object(a);d--;){var u=t[d];if(c&&u[2]?u[1]!==a[u[0]]:!(u[0]in a))return!1}for(;++d<l;){var p=(u=t[d])[0],z=a[p],g=u[1];if(c&&u[2]){if(void 0===z&&!(p in a))return!1}else{var m=new i;if(s)var f=s(z,g,p,a,e,m);if(!(void 0===f?n(g,z,o|r,s,m):f))return!1}}return!0}},function(a,e,t){var i=t(67),n=t(131),o=t(219),r=t(221),s=t(43),d=t(3),l=t(47),c=t(66),u=1,p="[object Arguments]",z="[object Array]",g="[object Object]",m=Object.prototype.hasOwnProperty;a.exports=function(a,e,t,f,y,w){var b=d(a),h=d(e),v=b?z:s(a),k=h?z:s(e),j=(v=v==p?g:v)==g,_=(k=k==p?g:k)==g,x=v==k;if(x&&l(a)){if(!l(e))return!1;b=!0,j=!1}if(x&&!j)return w||(w=new i),b||c(a)?n(a,e,t,f,y,w):o(a,e,v,t,f,y,w);if(!(t&u)){var q=j&&m.call(a,"__wrapped__"),E=_&&m.call(e,"__wrapped__");if(q||E){var A=q?a.value():a,T=E?e.value():e;return w||(w=new i),y(A,T,t,f,w)}}return!!x&&(w||(w=new i),r(a,e,t,f,y,w))}},function(a,e){var t="__lodash_hash_undefined__";a.exports=function(a){return this.__data__.set(a,t),this}},function(a,e){a.exports=function(a){return this.__data__.has(a)}},function(a,e){a.exports=function(a,e){for(var t=-1,i=null==a?0:a.length;++t<i;)if(e(a[t],t,a))return!0;return!1}},function(a,e,t){var i=t(14),n=t(132),o=t(26),r=t(131),s=t(220),d=t(150),l=1,c=2,u="[object Boolean]",p="[object Date]",z="[object Error]",g="[object Map]",m="[object Number]",f="[object RegExp]",y="[object Set]",w="[object String]",b="[object Symbol]",h="[object ArrayBuffer]",v="[object DataView]",k=i?i.prototype:void 0,j=k?k.valueOf:void 0;a.exports=function(a,e,t,i,k,_,x){switch(t){case v:if(a.byteLength!=e.byteLength||a.byteOffset!=e.byteOffset)return!1;a=a.buffer,e=e.buffer;case h:return!(a.byteLength!=e.byteLength||!_(new n(a),new n(e)));case u:case p:case m:return o(+a,+e);case z:return a.name==e.name&&a.message==e.message;case f:case w:return a==e+"";case g:var q=s;case y:var E=i&l;if(q||(q=d),a.size!=e.size&&!E)return!1;var A=x.get(a);if(A)return A==e;i|=c,x.set(a,e);var T=r(q(a),q(e),i,k,_,x);return x.delete(a),T;case b:if(j)return j.call(a)==j.call(e)}return!1}},function(a,e){a.exports=function(a){var e=-1,t=Array(a.size);return a.forEach(function(a,i){t[++e]=[i,a]}),t}},function(a,e,t){var i=t(133),n=1,o=Object.prototype.hasOwnProperty;a.exports=function(a,e,t,r,s,d){var l=t&n,c=i(a),u=c.length;if(u!=i(e).length&&!l)return!1;for(var p=u;p--;){var z=c[p];if(!(l?z in e:o.call(e,z)))return!1}var g=d.get(a);if(g&&d.get(e))return g==e;var m=!0;d.set(a,e),d.set(e,a);for(var f=l;++p<u;){var y=a[z=c[p]],w=e[z];if(r)var b=l?r(w,y,z,e,a,d):r(y,w,z,a,e,d);if(!(void 0===b?y===w||s(y,w,t,r,d):b)){m=!1;break}f||(f="constructor"==z)}if(m&&!f){var h=a.constructor,v=e.constructor;h!=v&&"constructor"in a&&"constructor"in e&&!("function"==typeof h&&h instanceof h&&"function"==typeof v&&v instanceof v)&&(m=!1)}return d.delete(a),d.delete(e),m}},function(a,e,t){var i=t(134),n=t(27);a.exports=function(a){for(var e=n(a),t=e.length;t--;){var o=e[t],r=a[o];e[t]=[o,r,i(r)]}return e}},function(a,e,t){var i=t(113),n=t(21),o=t(224),r=t(40),s=t(134),d=t(135),l=t(20),c=1,u=2;a.exports=function(a,e){return r(a)&&s(e)?d(l(a),e):function(t){var r=n(t,a);return void 0===r&&r===e?o(t,a):i(e,r,c|u)}}},function(a,e,t){var i=t(225),n=t(187);a.exports=function(a,e){return null!=a&&n(a,e,i)}},function(a,e){a.exports=function(a,e){return null!=a&&e in Object(a)}},function(a,e,t){var i=t(201),n=t(227),o=t(40),r=t(20);a.exports=function(a){return o(a)?i(r(a)):n(a)}},function(a,e,t){var i=t(39);a.exports=function(a){return function(e){return i(e,a)}}},,,,,,,,,,,,,,,function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=Object.assign||function(a){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(a[i]=t[i])}return a},n=t(2);function o(a){(0,n.defaults)(a,{original:"",marked:""}),this._properties=a}o.prototype.getOriginal=function(){return this._properties.original},o.prototype.getMarked=function(){return this._properties.marked},o.prototype.applyWithReplace=function(a){return a.split(this._properties.original).join(this._properties.marked)},o.prototype.serialize=function(){return i({_parseClass:"Mark"},this._properties)},o.parse=function(a){return delete a._parseClass,new o(a)},e.default=o},function(a,e,t){"use strict";function i(a,e,t){return a>e&&a<=t}function n(a,e,t){return a>=e&&a<t}function o(a,e,t){return a>=e&&a<=t}Object.defineProperty(e,"__esModule",{value:!0}),e.inRange=i,e.inRangeStartInclusive=n,e.inRangeEndInclusive=i,e.inRangeStartEndInclusive=o,e.default={inRange:i,inRangeStartInclusive:n,inRangeEndInclusive:i,inRangeStartEndInclusive:o}},function(a,e){"function"==typeof Object.create?a.exports=function(a,e){a.super_=e,a.prototype=Object.create(e.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}})}:a.exports=function(a,e){a.super_=e;var t=function(){};t.prototype=e.prototype,a.prototype=new t,a.prototype.constructor=a}},,,,,function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=l(t(520)),n=l(t(517)),o=l(t(1213)),r=l(t(34)),s=t(1214),d=t(2);function l(a){return a&&a.__esModule?a:{default:a}}var c=function(a,e){this.type="Assessor",this.setI18n(a),this._assessments=[],this._options=e||{},(0,d.isUndefined)(this._options.researcher)||(this._researcher=this._options.researcher)};c.prototype.setI18n=function(a){if((0,d.isUndefined)(a))throw new n.default("The assessor requires an i18n object.");this.i18n=a},c.prototype.getAvailableAssessments=function(){return this._assessments},c.prototype.isApplicable=function(a,e,t){return!a.hasOwnProperty("isApplicable")&&"function"!=typeof a.isApplicable||a.isApplicable(e,t)},c.prototype.hasMarker=function(a){return(0,d.isFunction)(this._options.marker)&&(a.hasOwnProperty("getMarks")||"function"==typeof a.getMarks)},c.prototype.getSpecificMarker=function(){return this._options.marker},c.prototype.getPaper=function(){return this._lastPaper},c.prototype.getMarker=function(a,e,t){var i=this._options.marker;return function(){var n=a.getMarks(e,t);n=(0,o.default)(n),i(e,n)}},c.prototype.assess=function(a){(0,d.isUndefined)(this._researcher)?this._researcher=new i.default(a):this._researcher.setPaper(a);var e=this.getAvailableAssessments();this.results=[],e=(0,d.filter)(e,function(e){return this.isApplicable(e,a,this._researcher)}.bind(this)),this.setHasMarkers(!1),this.results=(0,d.map)(e,this.executeAssessment.bind(this,a,this._researcher)),this._lastPaper=a},c.prototype.setHasMarkers=function(a){this._hasMarkers=a},c.prototype.hasMarkers=function(){return this._hasMarkers},c.prototype.executeAssessment=function(a,e,t){var i;try{(i=t.getResult(a,e,this.i18n)).setIdentifier(t.identifier),i.hasMarks()&&(i.marks=t.getMarks(a,e),i.marks=(0,o.default)(i.marks)),i.hasMarks()&&this.hasMarker(t)&&(this.setHasMarkers(!0),i.setMarker(this.getMarker(t,a,e)))}catch(a){(0,s.showTrace)(a),(i=new r.default).setScore(-1),i.setText(this.i18n.sprintf(this.i18n.dgettext("js-text-analysis","An error occurred in the '%1$s' assessment"),t.identifier,a))}return i},c.prototype.getValidResults=function(){return(0,d.filter)(this.results,function(a){return this.isValidResult(a)}.bind(this))},c.prototype.isValidResult=function(a){return a.hasScore()&&a.hasText()},c.prototype.calculateOverallScore=function(){var a=this.getValidResults(),e=0;return(0,d.forEach)(a,function(a){e+=a.getScore()}),Math.round(e/(9*a.length)*100)||0},c.prototype.addAssessment=function(a,e){return e.hasOwnProperty("identifier")||(e.identifier=a),this._assessments.push(e),!0},c.prototype.removeAssessment=function(a){var e=(0,d.findIndex)(this._assessments,function(e){return e.hasOwnProperty("identifier")&&a===e.identifier});-1!==e&&this._assessments.splice(e,1)},c.prototype.getAssessment=function(a){return(0,d.find)(this._assessments,function(e){return e.hasOwnProperty("identifier")&&a===e.identifier})},c.prototype.getApplicableAssessments=function(){var a=this.getAvailableAssessments();return(0,d.filter)(a,function(a){return this.isApplicable(a,this.getPaper())}.bind(this))},e.default=c},,,,,,function(a,e,t){var i=t(12),n=t(3),o=t(9),r="[object String]";a.exports=function(a){return"string"==typeof a||!n(a)&&o(a)&&i(a)==r}},function(a,e,t){var i=t(340);a.exports=function(a){var e=i(a),t=e%1;return e==e?t?e-t:e:0}},function(a,e,t){var i=t(258),n=t(27);a.exports=function(a){return null==a?[]:i(a,n(a))}},function(a,e,t){var i=t(30);a.exports=function(a,e){return i(e,function(e){return a[e]})}},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(a,e){a.exports=function(a){if(!a.webpackPolyfill){var e=Object.create(a);e.children||(e.children=[]),Object.defineProperty(e,"loaded",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,"id",{enumerable:!0,get:function(){return e.i}}),Object.defineProperty(e,"exports",{enumerable:!0}),e.webpackPolyfill=1}return e}},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(a){return(0,i.default)(a).length};var i=function(a){return a&&a.__esModule?a:{default:a}}(t(155))},,function(a,e,t){"use strict";(function(a){var t="object"==typeof a&&a&&a.Object===Object&&a;e.a=t}).call(this,t(15))},function(a,e,t){"use strict";(function(a){var i=t(11),n="object"==typeof exports&&exports&&!exports.nodeType&&exports,o=n&&"object"==typeof a&&a&&!a.nodeType&&a,r=o&&o.exports===n?i.a.Buffer:void 0,s=r?r.allocUnsafe:void 0;e.a=function(a,e){if(e)return a.slice();var t=a.length,i=s?s(t):new a.constructor(t);return a.copy(i),i}}).call(this,t(293)(a))},,,,,,function(a,e,t){
11
- /**
12
- * @preserve jed.js https://github.com/SlexAxton/Jed
13
- */
14
- !function(t,i){var n=Array.prototype,o=Object.prototype,r=n.slice,s=o.hasOwnProperty,d=n.forEach,l={},c={forEach:function(a,e,t){var i,n,o;if(null!==a)if(d&&a.forEach===d)a.forEach(e,t);else if(a.length===+a.length){for(i=0,n=a.length;i<n;i++)if(i in a&&e.call(t,a[i],i,a)===l)return}else for(o in a)if(s.call(a,o)&&e.call(t,a[o],o,a)===l)return},extend:function(a){return this.forEach(r.call(arguments,1),function(e){for(var t in e)a[t]=e[t]}),a}},u=function(a){if(this.defaults={locale_data:{messages:{"":{domain:"messages",lang:"en",plural_forms:"nplurals=2; plural=(n != 1);"}}},domain:"messages",debug:!1},this.options=c.extend({},this.defaults,a),this.textdomain(this.options.domain),a.domain&&!this.options.locale_data[this.options.domain])throw new Error("Text domain set to non-existent domain: `"+a.domain+"`")};function p(a){return u.PF.compile(a||"nplurals=2; plural=(n != 1);")}function z(a,e){this._key=a,this._i18n=e}u.context_delimiter=String.fromCharCode(4),c.extend(z.prototype,{onDomain:function(a){return this._domain=a,this},withContext:function(a){return this._context=a,this},ifPlural:function(a,e){return this._val=a,this._pkey=e,this},fetch:function(a){return"[object Array]"!={}.toString.call(a)&&(a=[].slice.call(arguments,0)),(a&&a.length?u.sprintf:function(a){return a})(this._i18n.dcnpgettext(this._domain,this._context,this._key,this._pkey,this._val),a)}}),c.extend(u.prototype,{translate:function(a){return new z(a,this)},textdomain:function(a){if(!a)return this._textdomain;this._textdomain=a},gettext:function(a){return this.dcnpgettext.call(this,void 0,void 0,a)},dgettext:function(a,e){return this.dcnpgettext.call(this,a,void 0,e)},dcgettext:function(a,e){return this.dcnpgettext.call(this,a,void 0,e)},ngettext:function(a,e,t){return this.dcnpgettext.call(this,void 0,void 0,a,e,t)},dngettext:function(a,e,t,i){return this.dcnpgettext.call(this,a,void 0,e,t,i)},dcngettext:function(a,e,t,i){return this.dcnpgettext.call(this,a,void 0,e,t,i)},pgettext:function(a,e){return this.dcnpgettext.call(this,void 0,a,e)},dpgettext:function(a,e,t){return this.dcnpgettext.call(this,a,e,t)},dcpgettext:function(a,e,t){return this.dcnpgettext.call(this,a,e,t)},npgettext:function(a,e,t,i){return this.dcnpgettext.call(this,void 0,a,e,t,i)},dnpgettext:function(a,e,t,i,n){return this.dcnpgettext.call(this,a,e,t,i,n)},dcnpgettext:function(a,e,t,i,n){var o;if(i=i||t,a=a||this._textdomain,!this.options)return(o=new u).dcnpgettext.call(o,void 0,void 0,t,i,n);if(!this.options.locale_data)throw new Error("No locale data provided.");if(!this.options.locale_data[a])throw new Error("Domain `"+a+"` was not found.");if(!this.options.locale_data[a][""])throw new Error("No locale meta information provided.");if(!t)throw new Error("No translation key found.");var r,s,d,l=e?e+u.context_delimiter+t:t,c=this.options.locale_data,z=c[a],g=(c.messages||this.defaults.locale_data.messages)[""],m=z[""].plural_forms||z[""]["Plural-Forms"]||z[""]["plural-forms"]||g.plural_forms||g["Plural-Forms"]||g["plural-forms"];if(void 0===n)d=0;else{if("number"!=typeof n&&(n=parseInt(n,10),isNaN(n)))throw new Error("The number that was passed in is not a number.");d=p(m)(n)}if(!z)throw new Error("No domain named `"+a+"` could be found.");return!(r=z[l])||d>r.length?(this.options.missing_key_callback&&this.options.missing_key_callback(l,a),s=[t,i],!0===this.options.debug&&console.log(s[p(m)(n)]),s[p()(n)]):(s=r[d])||(s=[t,i])[p()(n)]}});var g=function(){function a(a){return Object.prototype.toString.call(a).slice(8,-1).toLowerCase()}function e(a,e){for(var t=[];e>0;t[--e]=a);return t.join("")}var t=function(){return t.cache.hasOwnProperty(arguments[0])||(t.cache[arguments[0]]=t.parse(arguments[0])),t.format.call(null,t.cache[arguments[0]],arguments)};return t.format=function(t,i){var n,o,r,s,d,l,c,u=1,p=t.length,z="",m=[];for(o=0;o<p;o++)if("string"===(z=a(t[o])))m.push(t[o]);else if("array"===z){if((s=t[o])[2])for(n=i[u],r=0;r<s[2].length;r++){if(!n.hasOwnProperty(s[2][r]))throw g('[sprintf] property "%s" does not exist',s[2][r]);n=n[s[2][r]]}else n=s[1]?i[s[1]]:i[u++];if(/[^s]/.test(s[8])&&"number"!=a(n))throw g("[sprintf] expecting number but found %s",a(n));switch(void 0!==n&&null!==n||(n=""),s[8]){case"b":n=n.toString(2);break;case"c":n=String.fromCharCode(n);break;case"d":n=parseInt(n,10);break;case"e":n=s[7]?n.toExponential(s[7]):n.toExponential();break;case"f":n=s[7]?parseFloat(n).toFixed(s[7]):parseFloat(n);break;case"o":n=n.toString(8);break;case"s":n=(n=String(n))&&s[7]?n.substring(0,s[7]):n;break;case"u":n=Math.abs(n);break;case"x":n=n.toString(16);break;case"X":n=n.toString(16).toUpperCase()}n=/[def]/.test(s[8])&&s[3]&&n>=0?"+"+n:n,l=s[4]?"0"==s[4]?"0":s[4].charAt(1):" ",c=s[6]-String(n).length,d=s[6]?e(l,c):"",m.push(s[5]?n+d:d+n)}return m.join("")},t.cache={},t.parse=function(a){for(var e=a,t=[],i=[],n=0;e;){if(null!==(t=/^[^\x25]+/.exec(e)))i.push(t[0]);else if(null!==(t=/^\x25{2}/.exec(e)))i.push("%");else{if(null===(t=/^\x25(?:([1-9]\d*)\$|\(([^\)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-fosuxX])/.exec(e)))throw"[sprintf] huh?";if(t[2]){n|=1;var o=[],r=t[2],s=[];if(null===(s=/^([a-z_][a-z_\d]*)/i.exec(r)))throw"[sprintf] huh?";for(o.push(s[1]);""!==(r=r.substring(s[0].length));)if(null!==(s=/^\.([a-z_][a-z_\d]*)/i.exec(r)))o.push(s[1]);else{if(null===(s=/^\[(\d+)\]/.exec(r)))throw"[sprintf] huh?";o.push(s[1])}t[2]=o}else n|=2;if(3===n)throw"[sprintf] mixing positional and named placeholders is not (yet) supported";i.push(t)}e=e.substring(t[0].length)}return i},t}();u.parse_plural=function(a,e){return a=a.replace(/n/g,e),u.parse_expression(a)},u.sprintf=function(a,e){return"[object Array]"=={}.toString.call(e)?function(a,e){return e.unshift(a),g.apply(null,e)}(a,[].slice.call(e)):g.apply(this,[].slice.call(arguments))},u.prototype.sprintf=function(){return u.sprintf.apply(this,arguments)},u.PF={},u.PF.parse=function(a){var e=u.PF.extractPluralExpr(a);return u.PF.parser.parse.call(u.PF.parser,e)},u.PF.compile=function(a){var e=u.PF.parse(a);return function(a){return function(a){return!0===a?1:a||0}(u.PF.interpreter(e)(a))}},u.PF.interpreter=function(a){return function(e){switch(a.type){case"GROUP":return u.PF.interpreter(a.expr)(e);case"TERNARY":return u.PF.interpreter(a.expr)(e)?u.PF.interpreter(a.truthy)(e):u.PF.interpreter(a.falsey)(e);case"OR":return u.PF.interpreter(a.left)(e)||u.PF.interpreter(a.right)(e);case"AND":return u.PF.interpreter(a.left)(e)&&u.PF.interpreter(a.right)(e);case"LT":return u.PF.interpreter(a.left)(e)<u.PF.interpreter(a.right)(e);case"GT":return u.PF.interpreter(a.left)(e)>u.PF.interpreter(a.right)(e);case"LTE":return u.PF.interpreter(a.left)(e)<=u.PF.interpreter(a.right)(e);case"GTE":return u.PF.interpreter(a.left)(e)>=u.PF.interpreter(a.right)(e);case"EQ":return u.PF.interpreter(a.left)(e)==u.PF.interpreter(a.right)(e);case"NEQ":return u.PF.interpreter(a.left)(e)!=u.PF.interpreter(a.right)(e);case"MOD":return u.PF.interpreter(a.left)(e)%u.PF.interpreter(a.right)(e);case"VAR":return e;case"NUM":return a.val;default:throw new Error("Invalid Token found.")}}},u.PF.extractPluralExpr=function(a){a=a.replace(/^\s\s*/,"").replace(/\s\s*$/,""),/;\s*$/.test(a)||(a=a.concat(";"));var e,t=/nplurals\=(\d+);/,i=a.match(t);if(!(i.length>1))throw new Error("nplurals not found in plural_forms string: "+a);if(i[1],!((e=(a=a.replace(t,"")).match(/plural\=(.*);/))&&e.length>1))throw new Error("`plural` expression not found: "+a);return e[1]},u.PF.parser=function(){var a={trace:function(){},yy:{},symbols_:{error:2,expressions:3,e:4,EOF:5,"?":6,":":7,"||":8,"&&":9,"<":10,"<=":11,">":12,">=":13,"!=":14,"==":15,"%":16,"(":17,")":18,n:19,NUMBER:20,$accept:0,$end:1},terminals_:{2:"error",5:"EOF",6:"?",7:":",8:"||",9:"&&",10:"<",11:"<=",12:">",13:">=",14:"!=",15:"==",16:"%",17:"(",18:")",19:"n",20:"NUMBER"},productions_:[0,[3,2],[4,5],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,1],[4,1]],performAction:function(a,e,t,i,n,o,r){var s=o.length-1;switch(n){case 1:return{type:"GROUP",expr:o[s-1]};case 2:this.$={type:"TERNARY",expr:o[s-4],truthy:o[s-2],falsey:o[s]};break;case 3:this.$={type:"OR",left:o[s-2],right:o[s]};break;case 4:this.$={type:"AND",left:o[s-2],right:o[s]};break;case 5:this.$={type:"LT",left:o[s-2],right:o[s]};break;case 6:this.$={type:"LTE",left:o[s-2],right:o[s]};break;case 7:this.$={type:"GT",left:o[s-2],right:o[s]};break;case 8:this.$={type:"GTE",left:o[s-2],right:o[s]};break;case 9:this.$={type:"NEQ",left:o[s-2],right:o[s]};break;case 10:this.$={type:"EQ",left:o[s-2],right:o[s]};break;case 11:this.$={type:"MOD",left:o[s-2],right:o[s]};break;case 12:this.$={type:"GROUP",expr:o[s-1]};break;case 13:this.$={type:"VAR"};break;case 14:this.$={type:"NUM",val:Number(a)}}},table:[{3:1,4:2,17:[1,3],19:[1,4],20:[1,5]},{1:[3]},{5:[1,6],6:[1,7],8:[1,8],9:[1,9],10:[1,10],11:[1,11],12:[1,12],13:[1,13],14:[1,14],15:[1,15],16:[1,16]},{4:17,17:[1,3],19:[1,4],20:[1,5]},{5:[2,13],6:[2,13],7:[2,13],8:[2,13],9:[2,13],10:[2,13],11:[2,13],12:[2,13],13:[2,13],14:[2,13],15:[2,13],16:[2,13],18:[2,13]},{5:[2,14],6:[2,14],7:[2,14],8:[2,14],9:[2,14],10:[2,14],11:[2,14],12:[2,14],13:[2,14],14:[2,14],15:[2,14],16:[2,14],18:[2,14]},{1:[2,1]},{4:18,17:[1,3],19:[1,4],20:[1,5]},{4:19,17:[1,3],19:[1,4],20:[1,5]},{4:20,17:[1,3],19:[1,4],20:[1,5]},{4:21,17:[1,3],19:[1,4],20:[1,5]},{4:22,17:[1,3],19:[1,4],20:[1,5]},{4:23,17:[1,3],19:[1,4],20:[1,5]},{4:24,17:[1,3],19:[1,4],20:[1,5]},{4:25,17:[1,3],19:[1,4],20:[1,5]},{4:26,17:[1,3],19:[1,4],20:[1,5]},{4:27,17:[1,3],19:[1,4],20:[1,5]},{6:[1,7],8:[1,8],9:[1,9],10:[1,10],11:[1,11],12:[1,12],13:[1,13],14:[1,14],15:[1,15],16:[1,16],18:[1,28]},{6:[1,7],7:[1,29],8:[1,8],9:[1,9],10:[1,10],11:[1,11],12:[1,12],13:[1,13],14:[1,14],15:[1,15],16:[1,16]},{5:[2,3],6:[2,3],7:[2,3],8:[2,3],9:[1,9],10:[1,10],11:[1,11],12:[1,12],13:[1,13],14:[1,14],15:[1,15],16:[1,16],18:[2,3]},{5:[2,4],6:[2,4],7:[2,4],8:[2,4],9:[2,4],10:[1,10],11:[1,11],12:[1,12],13:[1,13],14:[1,14],15:[1,15],16:[1,16],18:[2,4]},{5:[2,5],6:[2,5],7:[2,5],8:[2,5],9:[2,5],10:[2,5],11:[2,5],12:[2,5],13:[2,5],14:[2,5],15:[2,5],16:[1,16],18:[2,5]},{5:[2,6],6:[2,6],7:[2,6],8:[2,6],9:[2,6],10:[2,6],11:[2,6],12:[2,6],13:[2,6],14:[2,6],15:[2,6],16:[1,16],18:[2,6]},{5:[2,7],6:[2,7],7:[2,7],8:[2,7],9:[2,7],10:[2,7],11:[2,7],12:[2,7],13:[2,7],14:[2,7],15:[2,7],16:[1,16],18:[2,7]},{5:[2,8],6:[2,8],7:[2,8],8:[2,8],9:[2,8],10:[2,8],11:[2,8],12:[2,8],13:[2,8],14:[2,8],15:[2,8],16:[1,16],18:[2,8]},{5:[2,9],6:[2,9],7:[2,9],8:[2,9],9:[2,9],10:[2,9],11:[2,9],12:[2,9],13:[2,9],14:[2,9],15:[2,9],16:[1,16],18:[2,9]},{5:[2,10],6:[2,10],7:[2,10],8:[2,10],9:[2,10],10:[2,10],11:[2,10],12:[2,10],13:[2,10],14:[2,10],15:[2,10],16:[1,16],18:[2,10]},{5:[2,11],6:[2,11],7:[2,11],8:[2,11],9:[2,11],10:[2,11],11:[2,11],12:[2,11],13:[2,11],14:[2,11],15:[2,11],16:[2,11],18:[2,11]},{5:[2,12],6:[2,12],7:[2,12],8:[2,12],9:[2,12],10:[2,12],11:[2,12],12:[2,12],13:[2,12],14:[2,12],15:[2,12],16:[2,12],18:[2,12]},{4:30,17:[1,3],19:[1,4],20:[1,5]},{5:[2,2],6:[1,7],7:[2,2],8:[1,8],9:[1,9],10:[1,10],11:[1,11],12:[1,12],13:[1,13],14:[1,14],15:[1,15],16:[1,16],18:[2,2]}],defaultActions:{6:[2,1]},parseError:function(a,e){throw new Error(a)},parse:function(a){var e=this,t=[0],i=[null],n=[],o=this.table,r="",s=0,d=0,l=0;this.lexer.setInput(a),this.lexer.yy=this.yy,this.yy.lexer=this.lexer,void 0===this.lexer.yylloc&&(this.lexer.yylloc={});var c=this.lexer.yylloc;function u(a){t.length=t.length-2*a,i.length=i.length-a,n.length=n.length-a}function p(){var a;return"number"!=typeof(a=e.lexer.lex()||1)&&(a=e.symbols_[a]||a),a}n.push(c),"function"==typeof this.yy.parseError&&(this.parseError=this.yy.parseError);for(var z,g,m,f,y,w,b,h,v,k={};;){if(m=t[t.length-1],this.defaultActions[m]?f=this.defaultActions[m]:(null==z&&(z=p()),f=o[m]&&o[m][z]),void 0===f||!f.length||!f[0]){if(!l){for(w in v=[],o[m])this.terminals_[w]&&w>2&&v.push("'"+this.terminals_[w]+"'");var j="";j=this.lexer.showPosition?"Parse error on line "+(s+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+v.join(", ")+", got '"+this.terminals_[z]+"'":"Parse error on line "+(s+1)+": Unexpected "+(1==z?"end of input":"'"+(this.terminals_[z]||z)+"'"),this.parseError(j,{text:this.lexer.match,token:this.terminals_[z]||z,line:this.lexer.yylineno,loc:c,expected:v})}if(3==l){if(1==z)throw new Error(j||"Parsing halted.");d=this.lexer.yyleng,r=this.lexer.yytext,s=this.lexer.yylineno,c=this.lexer.yylloc,z=p()}for(;!(2..toString()in o[m]);){if(0==m)throw new Error(j||"Parsing halted.");u(1),m=t[t.length-1]}g=z,z=2,f=o[m=t[t.length-1]]&&o[m][2],l=3}if(f[0]instanceof Array&&f.length>1)throw new Error("Parse Error: multiple actions possible at state: "+m+", token: "+z);switch(f[0]){case 1:t.push(z),i.push(this.lexer.yytext),n.push(this.lexer.yylloc),t.push(f[1]),z=null,g?(z=g,g=null):(d=this.lexer.yyleng,r=this.lexer.yytext,s=this.lexer.yylineno,c=this.lexer.yylloc,l>0&&l--);break;case 2:if(b=this.productions_[f[1]][1],k.$=i[i.length-b],k._$={first_line:n[n.length-(b||1)].first_line,last_line:n[n.length-1].last_line,first_column:n[n.length-(b||1)].first_column,last_column:n[n.length-1].last_column},void 0!==(y=this.performAction.call(k,r,d,s,this.yy,f[1],i,n)))return y;b&&(t=t.slice(0,-1*b*2),i=i.slice(0,-1*b),n=n.slice(0,-1*b)),t.push(this.productions_[f[1]][0]),i.push(k.$),n.push(k._$),h=o[t[t.length-2]][t[t.length-1]],t.push(h);break;case 3:return!0}}return!0}},e=function(){var a={EOF:1,parseError:function(a,e){if(!this.yy.parseError)throw new Error(a);this.yy.parseError(a,e)},setInput:function(a){return this._input=a,this._more=this._less=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this},input:function(){var a=this._input[0];return this.yytext+=a,this.yyleng++,this.match+=a,this.matched+=a,a.match(/\n/)&&this.yylineno++,this._input=this._input.slice(1),a},unput:function(a){return this._input=a+this._input,this},more:function(){return this._more=!0,this},pastInput:function(){var a=this.matched.substr(0,this.matched.length-this.match.length);return(a.length>20?"...":"")+a.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var a=this.match;return a.length<20&&(a+=this._input.substr(0,20-a.length)),(a.substr(0,20)+(a.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var a=this.pastInput(),e=new Array(a.length+1).join("-");return a+this.upcomingInput()+"\n"+e+"^"},next:function(){if(this.done)return this.EOF;var a,e;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var t=this._currentRules(),i=0;i<t.length;i++)if(a=this._input.match(this.rules[t[i]]))return(e=a[0].match(/\n.*/g))&&(this.yylineno+=e.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:e?e[e.length-1].length-1:this.yylloc.last_column+a[0].length},this.yytext+=a[0],this.match+=a[0],this.matches=a,this.yyleng=this.yytext.length,this._more=!1,this._input=this._input.slice(a[0].length),this.matched+=a[0],this.performAction.call(this,this.yy,this,t[i],this.conditionStack[this.conditionStack.length-1])||void 0;if(""===this._input)return this.EOF;this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var a=this.next();return void 0!==a?a:this.lex()},begin:function(a){this.conditionStack.push(a)},popState:function(){return this.conditionStack.pop()},_currentRules:function(){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules},topState:function(){return this.conditionStack[this.conditionStack.length-2]},pushState:function(a){this.begin(a)},performAction:function(a,e,t,i){switch(t){case 0:break;case 1:return 20;case 2:return 19;case 3:return 8;case 4:return 9;case 5:return 6;case 6:return 7;case 7:return 11;case 8:return 13;case 9:return 10;case 10:return 12;case 11:return 14;case 12:return 15;case 13:return 16;case 14:return 17;case 15:return 18;case 16:return 5;case 17:return"INVALID"}},rules:[/^\s+/,/^[0-9]+(\.[0-9]+)?\b/,/^n\b/,/^\|\|/,/^&&/,/^\?/,/^:/,/^<=/,/^>=/,/^</,/^>/,/^!=/,/^==/,/^%/,/^\(/,/^\)/,/^$/,/^./],conditions:{INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17],inclusive:!0}}};return a}();return a.lexer=e,a}(),void 0!==a&&a.exports&&(e=a.exports=u),e.Jed=u}()},,function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(a){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",s=arguments.length>3&&void 0!==arguments[3]&&arguments[3],d="("+(a=(0,i.map)(a,function(a){return s&&(a=(0,o.default)(a)),a=(0,r.default)(a),e?a:(0,n.default)(a,!0,t)})).join(")|(")+")";return new RegExp(d,"ig")};var i=t(2),n=s(t(365)),o=s(t(366)),r=s(t(510));function s(a){return a&&a.__esModule?a:{default:a}}},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.findTopicFormsInString=e.findWordFormsInString=void 0;var i=function(a){return a&&a.__esModule?a:{default:a}}(t(485)),n=t(2);var o=function(a,e,t){for(var o=a.length,r=Array(o),s=0;s<o;s++){var d=(0,i.default)(e,a[s],t).count>0;r[s]=d?1:0}var l=(0,n.sum)(r),c={countWordMatches:l,percentWordMatches:0};return o>0&&(c.percentWordMatches=Math.round(l/o*100)),c};e.findWordFormsInString=o,e.findTopicFormsInString=function(a,e,t,i){var r=o(a.keyphraseForms,e,i);if(r.keyphraseOrSynonym="keyphrase",100===r.percentWordMatches||!1===t||(0,n.isEmpty)(a.synonymsForms))return r;for(var s=[],d=0;d<a.synonymsForms.length;d++){var l=a.synonymsForms[d];s[d]=o(l,e,i)}var c=s.map(function(a){return a.percentWordMatches}),u=c.indexOf(Math.max.apply(Math,function(a){if(Array.isArray(a)){for(var e=0,t=Array(a.length);e<a.length;e++)t[e]=a[e];return t}return Array.from(a)}(c)));return r.percentWordMatches>=s[u].percentWordMatches?r:((r=s[u]).keyphraseOrSynonym="synonym",r)}},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=t(2),n=t(1160),o={auxiliaries:[],type:"",language:""},r=function(a,e,t){this.setParticiple(a),this.setSentencePart(e),this._determinesSentencePartIsPassive=!1,t=t||{},(0,i.defaults)(t,o),function(a){(0,i.forEach)(a,function(a,e){var t=(0,n.getType)(o[e]);if(!1===(0,n.isSameType)(a,t))throw Error("Attribute "+e+" has invalid type. Expected "+t+", got "+(0,n.getType)(a)+".")})}(t),this._attributes=t};r.prototype.setParticiple=function(a){if(""===a)throw Error("The participle should not be empty.");if(!(0,i.isString)(a))throw Error("The participle should be a string.");this._participle=a},r.prototype.getParticiple=function(){return this._participle},r.prototype.setSentencePart=function(a){if(""===a)throw Error("The sentence part should not be empty.");this._sentencePart=a},r.prototype.getSentencePart=function(){return this._sentencePart},r.prototype.getType=function(){return this._attributes.type},r.prototype.getAuxiliaries=function(){return this._attributes.auxiliaries},r.prototype.getLanguage=function(){return this._attributes.language},r.prototype.determinesSentencePartIsPassive=function(){return this._determinesSentencePartIsPassive},r.prototype.setSentencePartPassiveness=function(a){if(!(0,n.isSameType)(a,"boolean"))throw Error("Passiveness had invalid type. Expected boolean, got "+(0,n.getType)(a)+".");this._determinesSentencePartIsPassive=a},r.prototype.serialize=function(){return{_parseClass:"Participle",attributes:this._attributes,participle:this._participle,sentencePart:this._sentencePart,determinesSentencePartIsPassive:this._determinesSentencePartIsPassive}},r.parse=function(a){var e=new r(a.participle,a.sentencePart,a.attributes);return e.setSentencePartPassiveness(a.determinesSentencePartIsPassive),e},e.default=r},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=function(a,e,t){this._sentencePartText=a,this._auxiliaries=e,this._locale=t,this._isPassive=!1};i.prototype.getSentencePartText=function(){return this._sentencePartText},i.prototype.isPassive=function(){return this._isPassive},i.prototype.getAuxiliaries=function(){return this._auxiliaries},i.prototype.getLocale=function(){return this._locale},i.prototype.setPassive=function(a){this._isPassive=a},i.prototype.serialize=function(){return{_parseClass:"SentencePart",sentencePartText:this._sentencePartText,auxiliaries:this._auxiliaries,locale:this._locale,isPassive:this._isPassive}},i.parse=function(a){var e=new i(a.sentencePartText,a.auxiliaries,a.locale);return e.setPassive(a.isPassive),e},e.default=i},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(a,e,t){var i=t(200),n=1/0,o=1.7976931348623157e308;a.exports=function(a){return a?(a=i(a))===n||a===-n?(a<0?-1:1)*o:a==a?a:0:0===a?a:0}},,,,,,,,,,,,,,,,,,,function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(a){return"<yoastmark class='yoast-text-mark'>"+a+"</yoastmark>"}},function(a,e,t){"use strict";var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a};Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function a(a,e){for(var t=0;t<e.length;t++){var i=e[t];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(a,i.key,i)}}return function(e,t,i){return t&&a(e.prototype,t),i&&a(e,i),e}}(),o=t(2),r=l(t(83)),s=t(38),d=l(t(34));function l(a){return a&&a.__esModule?a:{default:a}}var c=function(a){function e(){var a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};!function(a,e){if(!(a instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var t=function(a,e){if(!a)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!==(void 0===e?"undefined":i(e))&&"function"!=typeof e?a:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this)),n={scores:{onlyFunctionWords:0},urlTitle:(0,s.createAnchorOpeningTag)("https://yoa.st/functionwordskeyphrase-1"),urlCallToAction:(0,s.createAnchorOpeningTag)("https://yoa.st/functionwordskeyphrase-2")};return t.identifier="functionWordsInKeyphrase",t._config=(0,o.merge)(n,a),t}return function(a,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+(void 0===e?"undefined":i(e)));a.prototype=Object.create(e&&e.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(a,e):a.__proto__=e)}(e,r.default),n(e,[{key:"getResult",value:function(a,e,t){this._functionWordsInKeyphrase=e.getResearch("functionWordsInKeyphrase"),this._keyword=(0,o.escape)(a.getKeyword());var i=new d.default;return this._functionWordsInKeyphrase&&(i.setScore(this._config.scores.onlyFunctionWords),i.setText(t.sprintf(t.dgettext("js-text-analysis",'%1$sFunction words in keyphrase%3$s: Your keyphrase "%4$s" contains function words only. %2$sLearn more about what makes a good keyphrase.%3$s'),this._config.urlTitle,this._config.urlCallToAction,"</a>",this._keyword))),i}},{key:"isApplicable",value:function(a){return a.hasKeyword()}}]),e}();e.default=c},function(a,e,t){"use strict";var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a};Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function a(a,e){for(var t=0;t<e.length;t++){var i=e[t];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(a,i.key,i)}}return function(e,t,i){return t&&a(e.prototype,t),i&&a(e,i),e}}(),o=t(2),r=l(t(83)),s=t(38),d=l(t(34));function l(a){return a&&a.__esModule?a:{default:a}}var c=function(a){function e(){var a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};!function(a,e){if(!(a instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var t=function(a,e){if(!a)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!==(void 0===e?"undefined":i(e))&&"function"!=typeof e?a:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this)),n={scores:{good:9,okay:6,bad:3},urlTitle:(0,s.createAnchorOpeningTag)("https://yoa.st/33e"),urlCallToAction:(0,s.createAnchorOpeningTag)("https://yoa.st/33f")};return t.identifier="introductionKeyword",t._config=(0,o.merge)(n,a),t}return function(a,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+(void 0===e?"undefined":i(e)));a.prototype=Object.create(e&&e.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(a,e):a.__proto__=e)}(e,r.default),n(e,[{key:"getResult",value:function(a,e,t){var i=new d.default;this._firstParagraphMatches=e.getResearch("firstParagraph");var n=this.calculateResult(t);return i.setScore(n.score),i.setText(n.resultText),i}},{key:"isApplicable",value:function(a){return a.hasKeyword()&&a.hasText()}},{key:"calculateResult",value:function(a){return this._firstParagraphMatches.foundInOneSentence?{score:this._config.scores.good,resultText:a.sprintf(a.dgettext("js-text-analysis","%1$sKeyphrase in introduction%2$s: Well done!"),this._config.urlTitle,"</a>")}:this._firstParagraphMatches.foundInParagraph?{score:this._config.scores.okay,resultText:a.sprintf(a.dgettext("js-text-analysis","%1$sKeyphrase in introduction%3$s:Your keyphrase or its synonyms appear in the first paragraph of the copy, but not within one sentence. %2$sFix that%3$s!"),this._config.urlTitle,this._config.urlCallToAction,"</a>")}:{score:this._config.scores.bad,resultText:a.sprintf(a.dgettext("js-text-analysis","%1$sKeyphrase in introduction%3$s: Your keyphrase or its synonyms do not appear in the first paragraph. %2$sMake sure the topic is clear immediately%3$s."),this._config.urlTitle,this._config.urlCallToAction,"</a>")}}}]),e}();e.default=c},function(a,e,t){"use strict";function i(a){return a.replace(/[‘’‛`]/g,"'")}function n(a){return a.replace(/[“”〝〞〟‟„]/g,'"')}function o(a){return n(i(a))}Object.defineProperty(e,"__esModule",{value:!0}),e.normalizeSingle=i,e.normalizeDouble=n,e.normalize=o,e.default={normalizeSingle:i,normalizeDouble:n,normalize:o}},function(a,e,t){"use strict";var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a};Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function a(a,e){for(var t=0;t<e.length;t++){var i=e[t];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(a,i.key,i)}}return function(e,t,i){return t&&a(e.prototype,t),i&&a(e,i),e}}(),o=t(2),r=u(t(83)),s=u(t(802)),d=u(t(107)),l=t(38),c=u(t(34));function u(a){return a&&a.__esModule?a:{default:a}}var p=function(a){function e(){var a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};!function(a,e){if(!(a instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var t=function(a,e){if(!a)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!==(void 0===e?"undefined":i(e))&&"function"!=typeof e?a:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this)),n={parameters:{recommendedMinimum:1,recommendedMaximum:4,acceptableMaximum:8},parametersNoFunctionWordSupport:{recommendedMaximum:6,acceptableMaximum:9},scores:{veryBad:-999,bad:3,okay:6,good:9},urlTitle:(0,l.createAnchorOpeningTag)("https://yoa.st/33i"),urlCallToAction:(0,l.createAnchorOpeningTag)("https://yoa.st/33j"),isRelatedKeyphrase:!1};return t.identifier="keyphraseLength",t._config=(0,o.merge)(n,a),t}return function(a,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+(void 0===e?"undefined":i(e)));a.prototype=Object.create(e&&e.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(a,e):a.__proto__=e)}(e,r.default),n(e,[{key:"getResult",value:function(a,e,t){this._keyphraseLength=e.getResearch("keyphraseLength");var i=new c.default;this._boundaries=this._config.parameters,!1===(0,s.default)().includes((0,d.default)(a.getLocale()))&&(this._boundaries=(0,o.merge)({},this._config.parameters,this._config.parametersNoFunctionWordSupport));var n=this.calculateResult(t);return(0,o.isUndefined)(n)||(i.setScore(n.score),i.setText(n.resultText)),i}},{key:"calculateResult",value:function(a){return this._keyphraseLength<this._boundaries.recommendedMinimum?this._config.isRelatedKeyphrase?{score:this._config.scores.veryBad,resultText:a.sprintf(a.dgettext("js-text-analysis","%1$sKeyphrase length%3$s: %2$sSet a keyphrase in order to calculate your SEO score%3$s."),this._config.urlTitle,this._config.urlCallToAction,"</a>")}:{score:this._config.scores.veryBad,resultText:a.sprintf(a.dgettext("js-text-analysis","%1$sKeyphrase length%3$s: No focus keyphrase was set for this page. %2$sSet a keyphrase in order to calculate your SEO score%3$s."),this._config.urlTitle,this._config.urlCallToAction,"</a>")}:(0,o.inRange)(this._keyphraseLength,this._boundaries.recommendedMinimum,this._boundaries.recommendedMaximum+1)?{score:this._config.scores.good,resultText:a.sprintf(a.dgettext("js-text-analysis","%1$sKeyphrase length%2$s: Good job!"),this._config.urlTitle,"</a>")}:(0,o.inRange)(this._keyphraseLength,this._boundaries.recommendedMaximum+1,this._boundaries.acceptableMaximum+1)?{score:this._config.scores.okay,resultText:a.sprintf(a.dgettext("js-text-analysis","%3$sKeyphrase length%5$s: The keyphrase is %1$d words long. That's more than the recommended maximum of %2$d words. %4$sMake it shorter%5$s!"),this._keyphraseLength,this._boundaries.recommendedMaximum,this._config.urlTitle,this._config.urlCallToAction,"</a>")}:{score:this._config.scores.bad,resultText:a.sprintf(a.dgettext("js-text-analysis","%3$sKeyphrase length%5$s: The keyphrase is %1$d words long. That's way more than the recommended maximum of %2$d words. %4$sMake it shorter%5$s!"),this._keyphraseLength,this._boundaries.recommendedMaximum,this._config.urlTitle,this._config.urlCallToAction,"</a>")}}}]),e}();e.default=p},function(a,e,t){"use strict";var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a};Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function a(a,e){for(var t=0;t<e.length;t++){var i=e[t];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(a,i.key,i)}}return function(e,t,i){return t&&a(e.prototype,t),i&&a(e,i),e}}(),o=t(2),r=m(t(1041)),s=m(t(83)),d=m(t(107)),l=m(t(816)),c=m(t(34)),u=t(243),p=t(38),z=m(t(815)),g=m(t(294));function m(a){return a&&a.__esModule?a:{default:a}}var f=function(a){function e(){var a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};!function(a,e){if(!(a instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var t=function(a,e){if(!a)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!==(void 0===e?"undefined":i(e))&&"function"!=typeof e?a:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this)),n={parameters:{noWordForms:{overMaximum:4,maximum:3,minimum:.5},multipleWordForms:{overMaximum:4,maximum:3.5,minimum:.5}},scores:{wayOverMaximum:-50,overMaximum:-10,correctDensity:9,underMinimum:4},urlTitle:(0,p.createAnchorOpeningTag)("https://yoa.st/33v"),urlCallToAction:(0,p.createAnchorOpeningTag)("https://yoa.st/33w")};return t.identifier="keywordDensity",t._config=(0,o.merge)(n,a),t}return function(a,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+(void 0===e?"undefined":i(e)));a.prototype=Object.create(e&&e.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(a,e):a.__proto__=e)}(e,s.default),n(e,[{key:"setBoundaries",value:function(a,e){this._hasMorphologicalForms?this._boundaries=this._config.parameters.multipleWordForms:this._boundaries=this._config.parameters.noWordForms,this._minRecommendedKeywordCount=(0,r.default)(a,e,this._boundaries.minimum,"min"),this._maxRecommendedKeywordCount=(0,r.default)(a,e,this._boundaries.maximum,"max")}},{key:"getResult",value:function(a,e,t){this._hasMorphologicalForms=!1!==e.getData("morphology")&&(0,l.default)().includes((0,d.default)(a.getLocale())),this._keywordCount=e.getResearch("keywordCount");var i=this._keywordCount.length;this.setBoundaries(a.getText(),i);var n=new c.default;this._keywordDensity=e.getResearch("getKeywordDensity"),this._keywordDensity=this._keywordDensity*(0,z.default)(i);var o=this.calculateResult(t);return n.setScore(o.score),n.setText(o.resultText),n.setHasMarks(this._keywordCount.count>0),n}},{key:"hasNoMatches",value:function(){return 0===this._keywordCount.count}},{key:"hasTooFewMatches",value:function(){return(0,u.inRangeStartInclusive)(this._keywordDensity,0,this._boundaries.minimum)||1===this._keywordCount.count}},{key:"hasGoodNumberOfMatches",value:function(){return(0,u.inRangeStartEndInclusive)(this._keywordDensity,this._boundaries.minimum,this._boundaries.maximum)||2===this._keywordCount.count&&this._minRecommendedKeywordCount<=2}},{key:"hasTooManyMatches",value:function(){return(0,u.inRangeEndInclusive)(this._keywordDensity,this._boundaries.maximum,this._boundaries.overMaximum)}},{key:"calculateResult",value:function(a){return this.hasNoMatches()?{score:this._config.scores.underMinimum,resultText:a.sprintf(a.dgettext("js-text-analysis","%1$sKeyphrase density%2$s: The focus keyphrase was found 0 times. That's less than the recommended minimum of %3$d times for a text of this length. %4$sFocus on your keyphrase%2$s!"),this._config.urlTitle,"</a>",this._minRecommendedKeywordCount,this._config.urlCallToAction)}:this.hasTooFewMatches()?{score:this._config.scores.underMinimum,resultText:a.sprintf(a.dngettext("js-text-analysis","%1$sKeyphrase density%2$s: The focus keyphrase was found %5$d time. That's less than the recommended minimum of %3$d times for a text of this length. %4$sFocus on your keyphrase%2$s!","%1$sKeyphrase density%2$s: The focus keyphrase was found %5$d times. That's less than the recommended minimum of %3$d times for a text of this length. %4$sFocus on your keyphrase%2$s!",this._keywordCount.count),this._config.urlTitle,"</a>",this._minRecommendedKeywordCount,this._config.urlCallToAction,this._keywordCount.count)}:this.hasGoodNumberOfMatches()?{score:this._config.scores.correctDensity,resultText:a.sprintf(a.dngettext("js-text-analysis","%1$sKeyphrase density%2$s: The focus keyphrase was found %3$d time. This is great!","%1$sKeyphrase density%2$s: The focus keyphrase was found %3$d times. This is great!",this._keywordCount.count),this._config.urlTitle,"</a>",this._keywordCount.count)}:this.hasTooManyMatches()?{score:this._config.scores.overMaximum,resultText:a.sprintf(a.dngettext("js-text-analysis","%1$sKeyphrase density%2$s: The focus keyphrase was found %5$d time. That's more than the recommended maximum of %3$d times for a text of this length. %4$sDon't overoptimize%2$s!","%1$sKeyphrase density%2$s: The focus keyphrase was found %5$d times. That's more than the recommended maximum of %3$d times for a text of this length. %4$sDon't overoptimize%2$s!",this._keywordCount.count),this._config.urlTitle,"</a>",this._maxRecommendedKeywordCount,this._config.urlCallToAction,this._keywordCount.count)}:{score:this._config.scores.wayOverMaximum,resultText:a.sprintf(a.dngettext("js-text-analysis","%1$sKeyphrase density%2$s: The focus keyphrase was found %5$d time. That's way more than the recommended maximum of %3$d times for a text of this length. %4$sDon't overoptimize%2$s!","%1$sKeyphrase density%2$s: The focus keyphrase was found %5$d times. That's way more than the recommended maximum of %3$d times for a text of this length. %4$sDon't overoptimize%2$s!",this._keywordCount.count),this._config.urlTitle,"</a>",this._maxRecommendedKeywordCount,this._config.urlCallToAction,this._keywordCount.count)}}},{key:"getMarks",value:function(){return this._keywordCount.markings}},{key:"isApplicable",value:function(a){return a.hasText()&&a.hasKeyword()&&(0,g.default)(a.getText())>=100}}]),e}();e.default=f},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(a){var e,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return"(^|"+(e='[ \\u00a0 \\n\\r\\t.,()”“〝〞〟‟„"+\\-;!¡?¿:/»«‹›'+(arguments.length>2&&void 0!==arguments[2]?arguments[2]:"")+"<>")+"'‘’‛`])"+a+(t?"($|((?="+e+"]))|((['‘’‛`])("+e+"])))":"($|("+e+"])|((['‘’‛`])("+e+"])))")}},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(a){for(var e=(0,i.default)(),t=0;t<e.length;t++)a=a.replace(e[t].letters,e[t].base);return a};var i=function(a){return a&&a.__esModule?a:{default:a}}(t(748))},function(a,e,t){"use strict";var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a};Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function a(a,e){for(var t=0;t<e.length;t++){var i=e[t];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(a,i.key,i)}}return function(e,t,i){return t&&a(e.prototype,t),i&&a(e,i),e}}(),o=t(2),r=l(t(83)),s=t(38),d=l(t(34));function l(a){return a&&a.__esModule?a:{default:a}}var c=function(a){function e(){var a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};!function(a,e){if(!(a instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var t=function(a,e){if(!a)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!==(void 0===e?"undefined":i(e))&&"function"!=typeof e?a:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this)),n={parameters:{recommendedMinimum:1},scores:{good:9,ok:6,bad:3},urlTitle:(0,s.createAnchorOpeningTag)("https://yoa.st/33k"),urlCallToAction:(0,s.createAnchorOpeningTag)("https://yoa.st/33l")};return t.identifier="metaDescriptionKeyword",t._config=(0,o.merge)(n,a),t}return function(a,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+(void 0===e?"undefined":i(e)));a.prototype=Object.create(e&&e.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(a,e):a.__proto__=e)}(e,r.default),n(e,[{key:"getResult",value:function(a,e,t){this._keyphraseCounts=e.getResearch("metaDescriptionKeyword");var i=new d.default,n=this.calculateResult(t);return i.setScore(n.score),i.setText(n.resultText),i}},{key:"calculateResult",value:function(a){return 1===this._keyphraseCounts||2===this._keyphraseCounts?{score:this._config.scores.good,resultText:a.sprintf(a.dgettext("js-text-analysis","%1$sKeyphrase in meta description%2$s: Keyphrase or synonym appear in the meta description. Well done!"),this._config.urlTitle,"</a>")}:this._keyphraseCounts>=3?{score:this._config.scores.bad,resultText:a.sprintf(a.dgettext("js-text-analysis","%1$sKeyphrase in meta description%2$s: The meta description contains the keyphrase %3$s times, which is over the advised maximum of 2 times. %4$sLimit that%5$s!"),this._config.urlTitle,"</a>",this._keyphraseCounts,this._config.urlCallToAction,"</a>")}:{score:this._config.scores.bad,resultText:a.sprintf(a.dgettext("js-text-analysis","%1$sKeyphrase in meta description%2$s: The meta description has been specified, but it does not contain the keyphrase. %3$sFix that%4$s!"),this._config.urlTitle,"</a>",this._config.urlCallToAction,"</a>")}}},{key:"isApplicable",value:function(a){return a.hasKeyword()&&a.hasDescription()}}]),e}();e.default=c},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(a,e,t){var o=(0,n.default)(a),p=[];return(0,i.forEach)(o,function(i){var n="";if(0!==g(i,t).length&&(n="regular"),0!==m(i,t).length&&(n="irregular"),""!==n)switch(t){case"fr":p.push(new s.default(i,a,{auxiliaries:e,type:n,language:t}));break;case"es":p.push(new d.default(i,a,{auxiliaries:e,type:n,language:t}));break;case"it":p.push(new l.default(i,a,{auxiliaries:e,type:n,language:t}));break;case"nl":p.push(new c.default(i,a,{auxiliaries:e,type:n,language:t}));break;case"pl":p.push(new u.default(i,a,{auxiliaries:e,type:n,language:t}));break;case"en":default:p.push(new r.default(i,a,{auxiliaries:e,type:n,language:t}))}}),p};var i=t(2),n=p(t(155)),o=p(t(1152)),r=p(t(1159)),s=p(t(1162)),d=p(t(1164)),l=p(t(1165)),c=p(t(1166)),u=p(t(1168));function p(a){return a&&a.__esModule?a:{default:a}}var z=(0,o.default)(),g=z.regularParticiples,m=z.irregularParticiples},,,,,,,,,,function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(a,e){var t=(0,n.default)(a);return(0,i.indexOf)(e,t)>-1};var i=t(2),n=function(a){return a&&a.__esModule?a:{default:a}}(t(107))},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getBlocks=e.isInlineElement=e.isBlockElement=e.inlineElements=e.blockElements=void 0;var i=function(a){return a&&a.__esModule?a:{default:a}}(t(507)),n=t(2);var o,r=["address","article","aside","blockquote","canvas","dd","div","dl","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","hr","li","main","nav","noscript","ol","output","p","pre","section","table","tfoot","ul","video"],s=["b","big","i","small","tt","abbr","acronym","cite","code","dfn","em","kbd","strong","samp","time","var","a","bdo","br","img","map","object","q","script","span","sub","sup","button","input","label","select","textarea"],d=new RegExp("^("+r.join("|")+")$","i"),l=new RegExp("^("+s.join("|")+")$","i"),c=new RegExp("^<("+r.join("|")+")[^>]*?>$","i"),u=new RegExp("^</("+r.join("|")+")[^>]*?>$","i"),p=new RegExp("^<("+s.join("|")+")[^>]*>$","i"),z=new RegExp("^</("+s.join("|")+")[^>]*>$","i"),g=/^<([^>\s/]+)[^>]*>$/,m=/^<\/([^>\s]+)[^>]*>$/,f=/^[^<]+$/,y=/^<[^><]*$/,w=/<!--(.|[\r\n])*?-->/g,b=[];function h(a){return d.test(a)}function v(a){return l.test(a)}var k=(0,n.memoize)(function(a){var e=[],t=0,r="",s="",d="";return a=a.replace(w,""),b=[],(o=(0,i.default)(function(a){b.push(a)})).addRule(f,"content"),o.addRule(y,"greater-than-sign-content"),o.addRule(c,"block-start"),o.addRule(u,"block-end"),o.addRule(p,"inline-start"),o.addRule(z,"inline-end"),o.addRule(g,"other-element-start"),o.addRule(m,"other-element-end"),o.onText(a),o.end(),(0,n.forEach)(b,function(a,i){var n=b[i+1];switch(a.type){case"content":case"greater-than-sign-content":case"inline-start":case"inline-end":case"other-tag":case"other-element-start":case"other-element-end":case"greater than sign":n&&(0!==t||"block-start"!==n.type&&"block-end"!==n.type)?s+=a.src:(s+=a.src,e.push(s),r="",s="",d="");break;case"block-start":0!==t&&(""!==s.trim()&&e.push(s),s="",d=""),t++,r=a.src;break;case"block-end":t--,d=a.src,""!==r&&""!==d?e.push(r+s+d):""!==s.trim()&&e.push(s),r="",s="",d=""}t<0&&(t=0)}),e});e.blockElements=r,e.inlineElements=s,e.isBlockElement=h,e.isInlineElement=v,e.getBlocks=k,e.default={blockElements:r,inlineElements:s,isBlockElement:h,isInlineElement:v,getBlocks:k}},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(a){return Math.round(a)===a?Math.round(a):Math.round(10*a)/10}},function(a,e){a.exports={Text:"text",Directive:"directive",Comment:"comment",Script:"script",Style:"style",Tag:"tag",CDATA:"cdata",Doctype:"doctype",isTag:function(a){return"tag"===a.type||"script"===a.type||"style"===a.type}}},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(){(0,i.isEmpty)(this.getParticiple())?this.setSentencePartPassiveness(!1):this.setSentencePartPassiveness(this.isPassive())};var i=t(2)},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(a,e,t){var n=(0,c.default)(a).map(function(a){return a.toLowerCase()}),o=n.indexOf(e.toLowerCase());if(o<1)return!1;var r=n[o-1],s=(0,i.get)(p,t,[]);return(0,i.includes)(s,r)};var i=t(2),n=u(t(806)),o=u(t(741)),r=u(t(744)),s=u(t(743)),d=u(t(745)),l=u(t(742)),c=u(t(155));function u(a){return a&&a.__esModule?a:{default:a}}var p={nl:(0,n.default)().cannotDirectlyPrecedePassiveParticiple,en:(0,o.default)().cannotDirectlyPrecedePassiveParticiple,fr:(0,r.default)().cannotDirectlyPrecedePassiveParticiple,it:(0,s.default)().cannotDirectlyPrecedePassiveParticiple,pl:(0,d.default)().cannotDirectlyPrecedePassiveParticiple,es:(0,l.default)().cannotDirectlyPrecedePassiveParticiple}},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(a,e,t){var i=t(179),n=t(23),o=t(255),r=t(256),s=t(257),d=Math.max;a.exports=function(a,e,t,l){a=n(a)?a:s(a),t=t&&!l?r(t):0;var c=a.length;return t<0&&(t=d(c+t,0)),o(a)?t<=c&&a.indexOf(e,t)>-1:!!c&&i(a,e,t)>-1}},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(a,e,t){var i=t(141),n=t(475),o=t(140),r=t(3);a.exports=function(a,e){return(r(a)?i:n)(a,o(e,3))}},function(a,e,t){var i=t(129);a.exports=function(a,e){var t=[];return i(a,function(a,i,n){e(a,i,n)&&t.push(a)}),t}},,,,,function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(){return{en:m,de:g,nl:f,fr:b,es:y,it:w,pt:h,ru:v,pl:k,sv:j}};var i=z(t(1037)),n=z(t(741)),o=z(t(806)),r=z(t(742)),s=z(t(743)),d=z(t(744)),l=z(t(1038)),c=z(t(1039)),u=z(t(745)),p=z(t(1040));function z(a){return a&&a.__esModule?a:{default:a}}var g=(0,i.default)(),m=(0,n.default)(),f=(0,o.default)(),y=(0,r.default)(),w=(0,s.default)(),b=(0,d.default)(),h=(0,l.default)(),v=(0,c.default)(),k=(0,u.default)(),j=(0,p.default)()},function(a,e,t){"use strict";var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a};Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function a(a,e){for(var t=0;t<e.length;t++){var i=e[t];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(a,i.key,i)}}return function(e,t,i){return t&&a(e.prototype,t),i&&a(e,i),e}}(),o=t(2),r=l(t(83)),s=t(38),d=l(t(34));function l(a){return a&&a.__esModule?a:{default:a}}var c=function(a){function e(){var a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};!function(a,e){if(!(a instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var t=function(a,e){if(!a)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!==(void 0===e?"undefined":i(e))&&"function"!=typeof e?a:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this)),n={parameters:{recommendedMaximum:0},scores:{bad:2},urlTitle:(0,s.createAnchorOpeningTag)("https://yoa.st/34l"),urlCallToAction:(0,s.createAnchorOpeningTag)("https://yoa.st/34m")};return t.identifier="textCompetingLinks",t._config=(0,o.merge)(n,a),t}return function(a,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+(void 0===e?"undefined":i(e)));a.prototype=Object.create(e&&e.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(a,e):a.__proto__=e)}(e,r.default),n(e,[{key:"getResult",value:function(a,e,t){var i=new d.default;this.linkCount=e.getResearch("getLinkStatistics");var n=this.calculateResult(t);return(0,o.isUndefined)(n)?i:(i.setScore(n.score),i.setText(n.resultText),i.setHasMarks(!1),i)}},{key:"isApplicable",value:function(a){return a.hasText()&&a.hasKeyword()}},{key:"calculateResult",value:function(a){if(this.linkCount.keyword.totalKeyword>this._config.parameters.recommendedMaximum)return{score:this._config.scores.bad,resultText:a.sprintf(a.dgettext("js-text-analysis","%1$sLink keyphrase%3$s: You're linking to another page with the words you want this page to rank for. %2$sDon't do that%3$s!"),this._config.urlTitle,this._config.urlCallToAction,"</a>")}}}]),e}();e.default=c},function(a,e,t){"use strict";var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a};Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function a(a,e){for(var t=0;t<e.length;t++){var i=e[t];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(a,i.key,i)}}return function(e,t,i){return t&&a(e.prototype,t),i&&a(e,i),e}}(),o=t(2),r=c(t(83)),s=t(243),d=t(38),l=c(t(34));function c(a){return a&&a.__esModule?a:{default:a}}var u=function(a){function e(){var a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};!function(a,e){if(!(a instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var t=function(a,e){if(!a)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!==(void 0===e?"undefined":i(e))&&"function"!=typeof e?a:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this)),n={parameters:{lowerBoundary:.3,upperBoundary:.75},scores:{noImages:3,withAltGoodNumberOfKeywordMatches:9,withAltTooFewKeywordMatches:6,withAltTooManyKeywordMatches:6,withAltNonKeyword:6,withAlt:6,noAlt:6},urlTitle:(0,d.createAnchorOpeningTag)("https://yoa.st/33c"),urlCallToAction:(0,d.createAnchorOpeningTag)("https://yoa.st/33d")};return t.identifier="textImages",t._config=(0,o.merge)(n,a),t}return function(a,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+(void 0===e?"undefined":i(e)));a.prototype=Object.create(e&&e.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(a,e):a.__proto__=e)}(e,r.default),n(e,[{key:"getResult",value:function(a,e,t){this.imageCount=e.getResearch("imageCount"),this.altProperties=e.getResearch("altTagCount"),this._minNumberOfKeywordMatches=Math.ceil(this.imageCount*this._config.parameters.lowerBoundary),this._maxNumberOfKeywordMatches=Math.floor(this.imageCount*this._config.parameters.upperBoundary);var i=this.calculateResult(t),n=new l.default;return n.setScore(i.score),n.setText(i.resultText),n}},{key:"isApplicable",value:function(a){return a.hasText()}},{key:"hasTooFewMatches",value:function(){return this.imageCount>4&&this.altProperties.withAltKeyword>0&&this.altProperties.withAltKeyword<this._minNumberOfKeywordMatches}},{key:"hasGoodNumberOfMatches",value:function(){return this.imageCount<5&&this.altProperties.withAltKeyword>0||5===this.imageCount&&(0,s.inRangeStartEndInclusive)(this.altProperties.withAltKeyword,2,4)||this.imageCount>4&&(0,s.inRangeStartEndInclusive)(this.altProperties.withAltKeyword,this._minNumberOfKeywordMatches,this._maxNumberOfKeywordMatches)}},{key:"hasTooManyMatches",value:function(){return this.imageCount>4&&this.altProperties.withAltKeyword>this._maxNumberOfKeywordMatches}},{key:"calculateResult",value:function(a){return 0===this.imageCount?{score:this._config.scores.noImages,resultText:a.sprintf(a.dgettext("js-text-analysis","%1$sImage alt attributes%3$s: No images appear on this page. %2$sAdd some%3$s!"),this._config.urlTitle,this._config.urlCallToAction,"</a>")}:this.altProperties.withAlt>0?{score:this._config.scores.withAlt,resultText:a.sprintf(a.dgettext("js-text-analysis","%1$sImage alt attributes%3$s: Images on this page have alt attributes, but you have not set your keyphrase. %2$sFix that%3$s!"),this._config.urlTitle,this._config.urlCallToAction,"</a>")}:this.altProperties.withAltNonKeyword>0&&0===this.altProperties.withAltKeyword?{score:this._config.scores.withAltNonKeyword,resultText:a.sprintf(a.dgettext("js-text-analysis","%1$sImage alt attributes%3$s: Images on this page do not have alt attributes that reflect the topic of your text. %2$sAdd your keyphrase or synonyms to the alt tags of relevant images%3$s!"),this._config.urlTitle,this._config.urlCallToAction,"</a>")}:this.hasTooFewMatches()?{score:this._config.scores.withAltTooFewKeywordMatches,resultText:a.sprintf(a.dngettext("js-text-analysis","%3$sImage alt attributes%5$s: Out of %2$d images on this page, only %1$d has an alt attribute that reflects the topic of your text. %4$sAdd your keyphrase or synonyms to the alt tags of more relevant images%5$s!","%3$sImage alt attributes%5$s: Out of %2$d images on this page, only %1$d have alt attributes that reflect the topic of your text. %4$sAdd your keyphrase or synonyms to the alt tags of more relevant images%5$s!",this.altProperties.withAltKeyword),this.altProperties.withAltKeyword,this.imageCount,this._config.urlTitle,this._config.urlCallToAction,"</a>")}:this.hasGoodNumberOfMatches()?{score:this._config.scores.withAltGoodNumberOfKeywordMatches,resultText:a.sprintf(a.dgettext("js-text-analysis","%1$sImage alt attributes%2$s: Good job!"),this._config.urlTitle,"</a>")}:this.hasTooManyMatches()?{score:this._config.scores.withAltTooManyKeywordMatches,resultText:a.sprintf(a.dgettext("js-text-analysis","%3$sImage alt attributes%5$s: Out of %2$d images on this page, %1$d have alt attributes with words from your keyphrase or synonyms. That's a bit much. %4$sOnly include the keyphrase or its synonyms when it really fits the image%5$s."),this.altProperties.withAltKeyword,this.imageCount,this._config.urlTitle,this._config.urlCallToAction,"</a>")}:{score:this._config.scores.noAlt,resultText:a.sprintf(a.dgettext("js-text-analysis","%1$sImage alt attributes%3$s: Images on this page do not have alt attributes that reflect the topic of your text. %2$sAdd your keyphrase or synonyms to the alt tags of relevant images%3$s!"),this._config.urlTitle,this._config.urlCallToAction,"</a>")}}}]),e}();e.default=u},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(a,e){for(var t=(0,i.default)(e),n=0;n<t.length;n++)a=a.replace(t[n].letter,t[n].alternative);return a};var i=function(a){return a&&a.__esModule?a:{default:a}}(t(752))},function(a,e,t){var i=t(830),n=t(834);function o(e,t){return delete a.exports[e],a.exports[e]=t,t}a.exports={Parser:i,Tokenizer:t(831),ElementType:t(381),DomHandler:n,get FeedHandler(){return o("FeedHandler",t(1075))},get Stream(){return o("Stream",t(1086))},get WritableStream(){return o("WritableStream",t(837))},get ProxyHandler(){return o("ProxyHandler",t(1093))},get DomUtils(){return o("DomUtils",t(836))},get CollectingHandler(){return o("CollectingHandler",t(1094))},DefaultHandler:n,get RssHandler(){return o("RssHandler",this.FeedHandler)},parseDOM:function(a,e){var t=new n(e);return new i(t,e).end(a),t.dom},parseFeed:function(e,t){var n=new a.exports.FeedHandler(t);return new i(n,t).end(e),n.dom},createDomStream:function(a,e,t){var o=new n(a,e,t);return new i(o,e)},EVENTS:{attribute:2,cdatastart:0,cdataend:0,text:1,processinginstruction:2,comment:1,commentend:0,closetag:1,opentag:2,opentagname:1,error:1,end:0}}},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(a,e){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"en_EN",d=0,l=[];return e=e.map(r.normalize),(0,s.uniq)(e).forEach(function(e){var i=(0,o.default)(a,e,t);d+=i.count,l=l.concat(i.matches)}),null===l&&(l=[]),l=l.map(function(a){return(0,i.default)((0,n.default)(a))}),{count:d,matches:l}};var i=d(t(108)),n=d(t(737)),o=d(t(844)),r=t(362),s=t(2);function d(a){return a&&a.__esModule?a:{default:a}}},,,,,,,,,,,,,,,,,,,,,,function(a,e){var t=function(a,e){var t;for(t=0;t<a.length;t++)if(a[t].regex.test(e))return a[t]},i=function(a,e){var i,n,o;for(i=0;i<e.length;i++)if(n=t(a,e.substring(0,i+1)))o=n;else if(o)return{max_index:i,rule:o};return o?{max_index:e.length,rule:o}:void 0};a.exports=function(a){var e="",n=[],o=1,r=1,s=function(e,t){a({type:t,src:e,line:o,col:r});var i=e.split("\n");o+=i.length-1,r=(i.length>1?1:r)+i[i.length-1].length};return{addRule:function(a,e){n.push({regex:a,type:e})},onText:function(a){for(var t=e+a,o=i(n,t);o&&o.max_index!==t.length;)s(t.substring(0,o.max_index),o.rule.type),t=t.substring(o.max_index),o=i(n,t);e=t},end:function(){if(0!==e.length){var a=t(n,e);if(!a){var i=new Error("unable to tokenize");throw i.tokenizer2={buffer:e,line:o,col:r},i}s(e,a.type)}}}}},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(){return{participleLike:i,otherAuxiliaries:n.concat(o),filteredAuxiliaries:i.concat(n),infinitiveAuxiliaries:o,allAuxiliaries:i.concat(n,o)}};var i=["bekommst","bekommt","bekamst","bekommest","bekommet","bekämest","bekämst","bekämet","bekämt","gekriegt","gehörst","gehört","gehörtest","gehörtet","gehörest","gehöret","erhältst","erhält","erhaltet","erhielt","erhieltest","erhieltst","erhieltet","erhaltest"],n=["werde","wirst","wird","werden","werdet","wurde","ward","wurdest","wardst","wurden","wurdet","worden","werdest","würde","würdest","würden","würdet","bekomme","bekommen","bekam","bekamen","bekäme","bekämen","kriege","kriegst","kriegt","kriegen","kriegte","kriegtest","kriegten","kriegtet","kriegest","krieget","gehöre","gehören","gehörte","gehörten","erhalte","erhalten","erhielten","erhielte"],o=["werden","bekommen","kriegen","gehören","erhalten"]},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(a){return a.map(function(a){return 2===a.length?{reg:new RegExp(a[0],"i"),repl:a[1]}:3===a.length?{reg:new RegExp(a[0],"i"),repl1:a[1],repl2:a[2]}:void 0})}},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(a){return a=(0,i.stripFullTags)(a),a=(0,n.default)(a)};var i=t(154),n=function(a){return a&&a.__esModule?a:{default:a}}(t(108))},function(a,e,t){"use strict";var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a};Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function a(a,e){for(var t=0;t<e.length;t++){var i=e[t];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(a,i.key,i)}}return function(e,t,i){return t&&a(e.prototype,t),i&&a(e,i),e}}(),o=t(2),r=c(t(83)),s=c(t(749)),d=t(38),l=c(t(34));function c(a){return a&&a.__esModule?a:{default:a}}var u=s.default.maxMeta,p=function(a){function e(){var a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};!function(a,e){if(!(a instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var t=function(a,e){if(!a)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!==(void 0===e?"undefined":i(e))&&"function"!=typeof e?a:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this)),n={recommendedMaximumLength:120,maximumLength:u,scores:{noMetaDescription:1,tooLong:6,tooShort:6,correctLength:9},urlTitle:(0,d.createAnchorOpeningTag)("https://yoa.st/34d"),urlCallToAction:(0,d.createAnchorOpeningTag)("https://yoa.st/34e")};return t.identifier="metaDescriptionLength",t._config=(0,o.merge)(n,a),t}return function(a,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+(void 0===e?"undefined":i(e)));a.prototype=Object.create(e&&e.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(a,e):a.__proto__=e)}(e,r.default),n(e,[{key:"getMaximumLength",value:function(){return this._config.maximumLength}},{key:"getResult",value:function(a,e,t){var i=e.getResearch("metaDescriptionLength"),n=new l.default;return n.setScore(this.calculateScore(i)),n.setText(this.translateScore(i,t)),n.max=this._config.maximumLength,n.actual=i,n}},{key:"calculateScore",value:function(a){return 0===a?this._config.scores.noMetaDescription:a<=this._config.recommendedMaximumLength?this._config.scores.tooShort:a>this._config.maximumLength?this._config.scores.tooLong:a>=this._config.recommendedMaximumLength&&a<=this._config.maximumLength?this._config.scores.correctLength:0}},{key:"translateScore",value:function(a,e){return 0===a?e.sprintf(e.dgettext("js-text-analysis","%1$sMeta description length%3$s: No meta description has been specified. Search engines will display copy from the page instead. %2$sMake sure to write one%3$s!"),this._config.urlTitle,this._config.urlCallToAction,"</a>"):a<=this._config.recommendedMaximumLength?e.sprintf(e.dgettext("js-text-analysis","%1$sMeta description length%3$s: The meta description is too short (under %4$d characters). Up to %5$d characters are available. %2$sUse the space%3$s!"),this._config.urlTitle,this._config.urlCallToAction,"</a>",this._config.recommendedMaximumLength,this._config.maximumLength):a>this._config.maximumLength?e.sprintf(e.dgettext("js-text-analysis","%1$sMeta description length%3$s: The meta description is over %4$d characters. To ensure the entire description will be visible, %2$syou should reduce the length%3$s!"),this._config.urlTitle,this._config.urlCallToAction,"</a>",this._config.maximumLength):a>=this._config.recommendedMaximumLength&&a<=this._config.maximumLength?e.sprintf(e.dgettext("js-text-analysis","%1$sMeta description length%2$s: Well done!"),this._config.urlTitle,"</a>"):void 0}}]),e}();e.default=p},function(a,e,t){"use strict";var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a};Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function a(a,e){for(var t=0;t<e.length;t++){var i=e[t];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(a,i.key,i)}}return function(e,t,i){return t&&a(e.prototype,t),i&&a(e,i),e}}(),o=t(2),r=c(t(83)),s=t(243),d=t(38),l=c(t(34));function c(a){return a&&a.__esModule?a:{default:a}}var u=600,p=function(a){function e(){var a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};!function(a,e){if(!(a instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var t=function(a,e){if(!a)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!==(void 0===e?"undefined":i(e))&&"function"!=typeof e?a:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this)),n={minLength:400,maxLength:u,scores:{noTitle:1,widthTooShort:6,widthTooLong:3,widthCorrect:9},urlTitle:(0,d.createAnchorOpeningTag)("https://yoa.st/34h"),urlCallToAction:(0,d.createAnchorOpeningTag)("https://yoa.st/34i")};return t.identifier="titleWidth",t._config=(0,o.merge)(n,a),t}return function(a,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+(void 0===e?"undefined":i(e)));a.prototype=Object.create(e&&e.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(a,e):a.__proto__=e)}(e,r.default),n(e,[{key:"getMaximumLength",value:function(){return u}},{key:"getResult",value:function(a,e,t){var i=e.getResearch("pageTitleWidth"),n=new l.default;return n.setScore(this.calculateScore(i)),n.setText(this.translateScore(i,t)),n.max=this._config.maxLength,n.actual=i,n}},{key:"calculateScore",value:function(a){return(0,s.inRangeEndInclusive)(a,1,400)?this._config.scores.widthTooShort:(0,s.inRangeEndInclusive)(a,this._config.minLength,this._config.maxLength)?this._config.scores.widthCorrect:a>this._config.maxLength?this._config.scores.widthTooLong:this._config.scores.noTitle}},{key:"translateScore",value:function(a,e){return(0,s.inRangeEndInclusive)(a,1,400)?e.sprintf(e.dgettext("js-text-analysis","%1$sSEO title width%3$s: The SEO title is too short. %2$sUse the space to add keyphrase variations or create compelling call-to-action copy%3$s."),this._config.urlTitle,this._config.urlCallToAction,"</a>"):(0,s.inRangeEndInclusive)(a,this._config.minLength,this._config.maxLength)?e.sprintf(e.dgettext("js-text-analysis","%1$sSEO title width%2$s: Good job!"),this._config.urlTitle,"</a>"):a>this._config.maxLength?e.sprintf(e.dgettext("js-text-analysis","%1$sSEO title width%3$s: The SEO title is wider than the viewable limit. %2$sTry to make it shorter%3$s."),this._config.urlTitle,this._config.urlCallToAction,"</a>"):e.sprintf(e.dgettext("js-text-analysis","%1$sSEO title width%3$s: %2$sPlease create an SEO title%3$s."),this._config.urlTitle,this._config.urlCallToAction,"</a>")}}]),e}();e.default=p},function(a,e,t){"use strict";var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a};Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function a(a,e){for(var t=0;t<e.length;t++){var i=e[t];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(a,i.key,i)}}return function(e,t,i){return t&&a(e.prototype,t),i&&a(e,i),e}}(),o=t(2),r=u(t(83)),s=t(38),d=u(t(359)),l=u(t(34)),c=u(t(242));function u(a){return a&&a.__esModule?a:{default:a}}var p=function(a){function e(){var a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};!function(a,e){if(!(a instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var t=function(a,e){if(!a)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!==(void 0===e?"undefined":i(e))&&"function"!=typeof e?a:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this)),n={scores:{textContainsSuperfluousH1:1},urlTitle:(0,s.createAnchorOpeningTag)("https://yoa.st/3a6"),urlCallToAction:(0,s.createAnchorOpeningTag)("https://yoa.st/3a7")};return t.identifier="singleH1",t._config=(0,o.merge)(n,a),t}return function(a,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+(void 0===e?"undefined":i(e)));a.prototype=Object.create(e&&e.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(a,e):a.__proto__=e)}(e,r.default),n(e,[{key:"getResult",value:function(a,e,t){this._h1s=e.getResearch("h1s");var i=new l.default,n=this.calculateResult(t);return(0,o.isUndefined)(n)||(i.setScore(n.score),i.setText(n.resultText),i.setHasMarks(!0)),i}},{key:"firstH1AtBeginning",value:function(){return 0===this._h1s[0].position}},{key:"calculateResult",value:function(a){if(0!==this._h1s.length&&(1!==this._h1s.length||!this.firstH1AtBeginning()))return{score:this._config.scores.textContainsSuperfluousH1,resultText:a.sprintf(a.dgettext("js-text-analysis","%1$sSingle title%3$s: H1s should only be used as your main title. Find all H1s in your text that aren't your main title and %2$schange them to a lower heading level%3$s!"),this._config.urlTitle,this._config.urlCallToAction,"</a>")}}},{key:"getMarks",value:function(){var a=this._h1s;return this.firstH1AtBeginning()&&a.shift(),(0,o.map)(a,function(a){return new c.default({original:"<h1>"+a.content+"</h1>",marked:"<h1>"+(0,d.default)(a.content)+"</h1>"})})}},{key:"isApplicable",value:function(a){return a.hasText()}}]),e}();e.default=p},function(a,e,t){"use strict";var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a};Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function a(a,e){for(var t=0;t<e.length;t++){var i=e[t];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(a,i.key,i)}}return function(e,t,i){return t&&a(e.prototype,t),i&&a(e,i),e}}(),o=t(2),r=l(t(83)),s=t(38),d=l(t(34));function l(a){return a&&a.__esModule?a:{default:a}}var c=function(a){function e(){var a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};!function(a,e){if(!(a instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var t=function(a,e){if(!a)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!==(void 0===e?"undefined":i(e))&&"function"!=typeof e?a:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this)),n={recommendedMinimum:300,slightlyBelowMinimum:250,belowMinimum:200,veryFarBelowMinimum:100,scores:{recommendedMinimum:9,slightlyBelowMinimum:6,belowMinimum:3,farBelowMinimum:-10,veryFarBelowMinimum:-20},urlTitle:(0,s.createAnchorOpeningTag)("https://yoa.st/34n"),urlCallToAction:(0,s.createAnchorOpeningTag)("https://yoa.st/34o"),cornerstoneContent:!1};return t.identifier="textLength",t._config=(0,o.merge)(n,a),t}return function(a,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+(void 0===e?"undefined":i(e)));a.prototype=Object.create(e&&e.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(a,e):a.__proto__=e)}(e,r.default),n(e,[{key:"getResult",value:function(a,e,t){var i=e.getResearch("wordCountInText"),n=new d.default,o=this.calculateResult(i,t);return n.setScore(o.score),n.setText(o.resultText),n}},{key:"calculateResult",value:function(a,e){if(a>=this._config.recommendedMinimum)return{score:this._config.scores.recommendedMinimum,resultText:e.sprintf(e.dngettext("js-text-analysis","%2$sText length%3$s: The text contains %1$d word. Good job!","%2$sText length%3$s: The text contains %1$d words. Good job!",a),a,this._config.urlTitle,"</a>")};if((0,o.inRange)(a,0,this._config.belowMinimum)){var t=this._config.scores.farBelowMinimum;return(0,o.inRange)(a,0,this._config.veryFarBelowMinimum)&&(t=this._config.scores.veryFarBelowMinimum),{score:t,resultText:e.sprintf(e.dngettext("js-text-analysis","%2$sText length%4$s: The text contains %1$d word.","%2$sText length%4$s: The text contains %1$d words.",a)+" "+e.dngettext("js-text-analysis","This is far below the recommended minimum of %5$d word. %3$sAdd more content%4$s.","This is far below the recommended minimum of %5$d words. %3$sAdd more content%4$s.",this._config.recommendedMinimum),a,this._config.urlTitle,this._config.urlCallToAction,"</a>",this._config.recommendedMinimum)}}return(0,o.inRange)(a,this._config.slightlyBelowMinimum,this._config.recommendedMinimum)?!1===this._config.cornerstoneContent?{score:this._config.scores.slightlyBelowMinimum,resultText:e.sprintf(e.dngettext("js-text-analysis","%2$sText length%4$s: The text contains %1$d word.","%2$sText length%4$s: The text contains %1$d words.",a)+" "+e.dngettext("js-text-analysis","This is slightly below the recommended minimum of %5$d word. %3$sAdd a bit more copy%4$s.","This is slightly below the recommended minimum of %5$d words. %3$sAdd a bit more copy%4$s.",this._config.recommendedMinimum),a,this._config.urlTitle,this._config.urlCallToAction,"</a>",this._config.recommendedMinimum)}:{score:this._config.scores.slightlyBelowMinimum,resultText:e.sprintf(e.dngettext("js-text-analysis","%2$sText length%4$s: The text contains %1$d word.","%2$sText length%4$s: The text contains %1$d words.",a)+" "+e.dngettext("js-text-analysis","This is below the recommended minimum of %5$d word. %3$sAdd more content%4$s.","This is below the recommended minimum of %5$d words. %3$sAdd more content%4$s.",this._config.recommendedMinimum),a,this._config.urlTitle,this._config.urlCallToAction,"</a>",this._config.recommendedMinimum)}:{score:this._config.scores.belowMinimum,resultText:e.sprintf(e.dngettext("js-text-analysis","%2$sText length%4$s: The text contains %1$d word.","%2$sText length%4$s: The text contains %1$d words.",a)+" "+e.dngettext("js-text-analysis","This is below the recommended minimum of %5$d word. %3$sAdd more content%4$s.","This is below the recommended minimum of %5$d words. %3$sAdd more content%4$s.",this._config.recommendedMinimum),a,this._config.urlTitle,this._config.urlCallToAction,"</a>",this._config.recommendedMinimum)}}}]),e}();e.default=c},function(a,e,t){"use strict";var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a};Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function a(a,e){for(var t=0;t<e.length;t++){var i=e[t];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(a,i.key,i)}}return function(e,t,i){return t&&a(e.prototype,t),i&&a(e,i),e}}(),o=t(2),r=l(t(83)),s=t(38),d=l(t(34));function l(a){return a&&a.__esModule?a:{default:a}}var c=function(a){function e(){var a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};!function(a,e){if(!(a instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var t=function(a,e){if(!a)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!==(void 0===e?"undefined":i(e))&&"function"!=typeof e?a:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this)),n={parameters:{recommendedPosition:0},scores:{good:9,okay:6,bad:2},urlTitle:(0,s.createAnchorOpeningTag)("https://yoa.st/33g"),urlCallToAction:(0,s.createAnchorOpeningTag)("https://yoa.st/33h")};return t.identifier="titleKeyword",t._config=(0,o.merge)(n,a),t}return function(a,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+(void 0===e?"undefined":i(e)));a.prototype=Object.create(e&&e.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(a,e):a.__proto__=e)}(e,r.default),n(e,[{key:"getResult",value:function(a,e,t){this._keywordMatches=e.getResearch("findKeywordInPageTitle"),this._keyword=(0,o.escape)(a.getKeyword());var i=new d.default,n=this.calculateResult(t,this._keyword);return i.setScore(n.score),i.setText(n.resultText),i}},{key:"isApplicable",value:function(a){return a.hasKeyword()&&a.hasTitle()}},{key:"calculateResult",value:function(a,e){var t=this._keywordMatches.exactMatchFound,i=this._keywordMatches.position,n=this._keywordMatches.allWordsFound,o=this._keywordMatches.exactMatchKeyphrase;return!0===t?0===i?{score:this._config.scores.good,resultText:a.sprintf(a.dgettext("js-text-analysis","%1$sKeyphrase in title%2$s: The exact match of the keyphrase appears at the beginning of the SEO title. Good job!"),this._config.urlTitle,"</a>")}:{score:this._config.scores.okay,resultText:a.sprintf(a.dgettext("js-text-analysis","%1$sKeyphrase in title%3$s: The exact match of the keyphrase appears in the SEO title, but not at the beginning. %2$sTry to move it to the beginning%3$s."),this._config.urlTitle,this._config.urlCallToAction,"</a>")}:n?{score:this._config.scores.okay,resultText:a.sprintf(a.dgettext("js-text-analysis","%1$sKeyphrase in title%3$s: Does not contain the exact match. %2$sTry to write the exact match of your keyphrase in the SEO title%3$s."),this._config.urlTitle,this._config.urlCallToAction,"</a>")}:o?{score:this._config.scores.bad,resultText:a.sprintf(a.dgettext("js-text-analysis","%1$sKeyphrase in title%3$s: Does not contain the exact match. %2$sTry to write the exact match of your keyphrase in the SEO title%3$s."),this._config.urlTitle,this._config.urlCallToAction,"</a>",e)}:{score:this._config.scores.bad,resultText:a.sprintf(a.dgettext("js-text-analysis",'%1$sKeyphrase in title%3$s: Not all the words from your keyphrase "%4$s" appear in the SEO title. %2$sTry to use the exact match of your keyphrase in the SEO title%3$s.'),this._config.urlTitle,this._config.urlCallToAction,"</a>",e)}}}]),e}();e.default=c},function(a,e,t){"use strict";var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a};Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function a(a,e){for(var t=0;t<e.length;t++){var i=e[t];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(a,i.key,i)}}return function(e,t,i){return t&&a(e.prototype,t),i&&a(e,i),e}}(),o=t(2),r=l(t(83)),s=t(38),d=l(t(34));function l(a){return a&&a.__esModule?a:{default:a}}var c=function(a){function e(){var a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};!function(a,e){if(!(a instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var t=function(a,e){if(!a)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!==(void 0===e?"undefined":i(e))&&"function"!=typeof e?a:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this)),n={scores:{okay:6,good:9},urlTitle:(0,s.createAnchorOpeningTag)("https://yoa.st/33o"),urlCallToAction:(0,s.createAnchorOpeningTag)("https://yoa.st/33p")};return t.identifier="urlKeyword",t._config=(0,o.merge)(n,a),t}return function(a,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+(void 0===e?"undefined":i(e)));a.prototype=Object.create(e&&e.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(a,e):a.__proto__=e)}(e,r.default),n(e,[{key:"getResult",value:function(a,e,t){this._keywordInURL=e.getResearch("keywordCountInUrl");var i=new d.default,n=this.calculateResult(t);return i.setScore(n.score),i.setText(n.resultText),i}},{key:"isApplicable",value:function(a){return a.hasKeyword()&&a.hasUrl()}},{key:"calculateResult",value:function(a){return this._keywordInURL.keyphraseLength<3?100===this._keywordInURL.percentWordMatches?{score:this._config.scores.good,resultText:a.sprintf(a.dgettext("js-text-analysis","%1$sKeyphrase in slug%2$s: Great work!"),this._config.urlTitle,"</a>")}:{score:this._config.scores.okay,resultText:a.sprintf(a.dgettext("js-text-analysis","%1$sKeyphrase in slug%3$s: (Part of) your keyphrase does not appear in the slug. %2$sChange that%3$s!"),this._config.urlTitle,this._config.urlCallToAction,"</a>")}:this._keywordInURL.percentWordMatches>50?{score:this._config.scores.good,resultText:a.sprintf(a.dgettext("js-text-analysis","%1$sKeyphrase in slug%2$s: More than half of your keyphrase appears in the slug. That's great!"),this._config.urlTitle,"</a>")}:{score:this._config.scores.okay,resultText:a.sprintf(a.dgettext("js-text-analysis","%1$sKeyphrase in slug%3$s: (Part of) your keyphrase does not appear in the slug. %2$sChange that%3$s!"),this._config.urlTitle,this._config.urlCallToAction,"</a>")}}}]),e}();e.default=c},function(a,e,t){"use strict";function i(a){Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name,this.message=a}Object.defineProperty(e,"__esModule",{value:!0}),function(a){return a&&a.__esModule?a:{default:a}}(t(73)).default.inherits(i,Error),e.default=i},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default=function(a){return-1===a?"error":0===a?"feedback":a<=4?"bad":a>4&&a<=7?"ok":a>7?"good":""}},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(a){return(0,i.default)(a,"<img(?:[^>]+)?>")};var i=function(a){return a&&a.__esModule?a:{default:a}}(t(753))},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=U(t(1095)),n=t(2),o=U(t(758)),r=U(t(517)),s=U(t(843)),d=U(t(1096)),l=U(t(1106)),c=U(t(847)),u=U(t(1107)),p=U(t(1108)),z=U(t(1109)),g=U(t(1110)),m=U(t(1111)),f=U(t(1113)),y=U(t(1115)),w=U(t(1116)),b=U(t(1119)),h=U(t(851)),v=U(t(1120)),k=U(t(1122)),j=U(t(1123)),_=U(t(1124)),x=U(t(1125)),q=U(t(1127)),E=U(t(1128)),A=U(t(1129)),T=U(t(1130)),O=U(t(1131)),S=U(t(1132)),P=U(t(1134)),M=U(t(1149)),C=U(t(1196)),R=U(t(1207)),D=U(t(1208)),F=U(t(1209)),B=U(t(860)),$=t(1210),L=t(846),I=U(t(1211)),W=U(t(1212));function U(a){return a&&a.__esModule?a:{default:a}}var N=$.keyphraseDistributionResearcher,K=function(a){this.setPaper(a),this.defaultResearches={urlLength:u.default,wordCountInText:s.default,findKeywordInPageTitle:p.default,calculateFleschReading:w.default,getLinkStatistics:d.default,getLinks:c.default,linkCount:l.default,imageCount:h.default,altTagCount:v.default,matchKeywordInSubheadings:z.default,keywordCount:m.default,getKeywordDensity:g.default,stopWordsInKeyword:f.default,stopWordsInUrl:y.default,metaDescriptionLength:b.default,keyphraseLength:k.default,keywordCountInUrl:_.default,firstParagraph:x.default,metaDescriptionKeyword:j.default,pageTitleWidth:q.default,wordComplexity:E.default,getParagraphLength:A.default,countSentencesFromText:T.default,countSentencesFromDescription:O.default,getSubheadingTextLengths:S.default,findTransitionWords:P.default,passiveVoice:M.default,getSentenceBeginnings:C.default,relevantWords:R.default,readingTime:D.default,getTopicDensity:F.default,topicCount:B.default,sentences:i.default,keyphraseDistribution:N,morphology:L.research,functionWordsInKeyphrase:I.default,h1s:W.default},this._data={},this.customResearches={}};K.prototype.setPaper=function(a){this.paper=a},K.prototype.addResearch=function(a,e){if((0,n.isUndefined)(a)||(0,n.isEmpty)(a))throw new r.default("Research name cannot be empty");if(!(e instanceof Function))throw new o.default("The research requires a Function callback.");this.customResearches[a]=e},K.prototype.hasResearch=function(a){return Object.keys(this.getAvailableResearches()).filter(function(e){return e===a}).length>0},K.prototype.getAvailableResearches=function(){return(0,n.merge)(this.defaultResearches,this.customResearches)},K.prototype.getResearch=function(a){if((0,n.isUndefined)(a)||(0,n.isEmpty)(a))throw new r.default("Research name cannot be empty");return!!this.hasResearch(a)&&this.getAvailableResearches()[a](this.paper,this)},K.prototype.addResearchData=function(a,e){this._data[a]=e},K.prototype.getData=function(a){return!!this._data.hasOwnProperty(a)&&this._data[a]},e.default=K},function(a,e,t){"use strict";e.decode=e.parse=t(764),e.encode=e.stringify=t(522)},function(a,e,t){"use strict";var i=function(a){switch(typeof a){case"string":return a;case"boolean":return a?"true":"false";case"number":return isFinite(a)?a:"";default:return""}};a.exports=function(a,e,t,s){return e=e||"&",t=t||"=",null===a&&(a=void 0),"object"==typeof a?o(r(a),function(r){var s=encodeURIComponent(i(r))+t;return n(a[r])?o(a[r],function(a){return s+encodeURIComponent(i(a))}).join(e):s+encodeURIComponent(i(a[r]))}).join(e):s?encodeURIComponent(i(s))+t+encodeURIComponent(i(a)):""};var n=Array.isArray||function(a){return"[object Array]"===Object.prototype.toString.call(a)};function o(a,e){if(a.map)return a.map(e);for(var t=[],i=0;i<a.length;i++)t.push(e(a[i],i));return t}var r=Object.keys||function(a){var e=[];for(var t in a)Object.prototype.hasOwnProperty.call(a,t)&&e.push(t);return e}},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(a,e,t){var n=(0,d.default)(a).map(function(a){return a.toLowerCase()}),o=n.indexOf(e.toLowerCase());if(o<1)return!1;for(var r=(0,i.get)(c,t,[]),s=0;s<o;s++)if((0,i.includes)(r,n[s]))return!0;return!1};var i=t(2),n=l(t(741)),o=l(t(744)),r=l(t(743)),s=l(t(742)),d=l(t(155));function l(a){return a&&a.__esModule?a:{default:a}}var c={en:(0,n.default)().cannotBeBetweenPassiveAuxiliaryAndParticiple,fr:(0,o.default)().cannotBeBetweenPassiveAuxiliaryAndParticiple,it:(0,r.default)().cannotBeBetweenPassiveAuxiliaryAndParticiple,es:(0,s.default)().cannotBeBetweenPassiveAuxiliaryAndParticiple}},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=t(73),n=v(t(361)),o=v(t(363)),r=v(t(364)),s=v(t(367)),d=v(t(481)),l=v(t(740)),c=v(t(515)),u=v(t(516)),p=v(t(249)),z=v(t(511)),g=v(t(751)),m=v(t(482)),f=v(t(514)),y=v(t(750)),w=v(t(512)),b=v(t(360)),h=v(t(513));function v(a){return a&&a.__esModule?a:{default:a}}var k=function(a,e){p.default.call(this,a,e),this.type="SEOAssessor",this._assessments=[new n.default,new o.default,new r.default,new s.default,new z.default,new g.default,new d.default,new m.default,new f.default,new y.default,new c.default,new l.default,new w.default,new u.default,new b.default,new h.default]};(0,i.inherits)(k,p.default),e.default=k},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=m(t(249)),n=m(t(729)),o=m(t(730)),r=m(t(734)),s=m(t(735)),d=m(t(739)),l=m(t(732)),c=m(t(733)),u=m(t(738)),p=m(t(861)),z=m(t(518)),g=t(2);function m(a){return a&&a.__esModule?a:{default:a}}var f=function(a){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};i.default.call(this,a,e),this.type="ContentAssessor";var t=e.hasOwnProperty("locale")?e.locale:"en_US";this._assessments=[new n.default((0,p.default)(t).fleschReading),new s.default,o.default,new r.default((0,p.default)(t).sentenceLength),d.default,l.default,u.default,c.default]};t(73).inherits(f,i.default),f.prototype.calculatePenaltyPointsFullSupport=function(a){switch(a){case"bad":return 3;case"ok":return 2;default:case"good":return 0}},f.prototype.calculatePenaltyPointsPartialSupport=function(a){switch(a){case"bad":return 4;case"ok":return 2;default:case"good":return 0}},f.prototype._allAssessmentsSupported=function(){return 8===this.getApplicableAssessments().length},f.prototype.calculatePenaltyPoints=function(){var a=this.getValidResults(),e=(0,g.map)(a,function(a){var e=(0,z.default)(a.getScore());return this._allAssessmentsSupported()?this.calculatePenaltyPointsFullSupport(e):this.calculatePenaltyPointsPartialSupport(e)}.bind(this));return(0,g.sum)(e)},f.prototype._ratePenaltyPoints=function(a){if(1===this.getValidResults().length)return 30;if(this._allAssessmentsSupported()){if(a>6)return 30;if(a>4)return 60}else{if(a>4)return 30;if(a>2)return 60}return 90},f.prototype.calculateOverallScore=function(){if(0===this.getValidResults().length)return 30;var a=this.calculatePenaltyPoints();return this._ratePenaltyPoints(a)},e.default=f},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=Object.assign||function(a){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(a[i]=t[i])}return a},n=t(2);var o={keyword:"",synonyms:"",description:"",title:"",titleWidth:0,url:"",locale:"en_US",permalink:""},r=function(a,e){this._text=a||"",e=e||{},(0,n.defaults)(e,o),""===e.locale&&(e.locale=o.locale);var t=e.keyword.replace(/[‘’“”"'.?!:;,¿¡«»&*@#±^%|~`[\](){}⟨⟩<>/\\–\-\u2014\u00d7\u002b\u0026\s]/g,"");(0,n.isEmpty)(t)&&(e.keyword=o.keyword),this._attributes=e};r.prototype.hasKeyword=function(){return""!==this._attributes.keyword},r.prototype.getKeyword=function(){return this._attributes.keyword},r.prototype.hasSynonyms=function(){return""!==this._attributes.synonyms},r.prototype.getSynonyms=function(){return this._attributes.synonyms},r.prototype.hasText=function(){return""!==this._text},r.prototype.getText=function(){return this._text},r.prototype.hasDescription=function(){return""!==this._attributes.description},r.prototype.getDescription=function(){return this._attributes.description},r.prototype.hasTitle=function(){return""!==this._attributes.title},r.prototype.getTitle=function(){return this._attributes.title},r.prototype.hasTitleWidth=function(){return 0!==this._attributes.titleWidth},r.prototype.getTitleWidth=function(){return this._attributes.titleWidth},r.prototype.hasUrl=function(){return""!==this._attributes.url},r.prototype.getUrl=function(){return this._attributes.url},r.prototype.hasLocale=function(){return""!==this._attributes.locale},r.prototype.getLocale=function(){return this._attributes.locale},r.prototype.hasPermalink=function(){return""!==this._attributes.permalink},r.prototype.getPermalink=function(){return this._attributes.permalink},r.prototype.serialize=function(){return i({_parseClass:"Paper",text:this._text},this._attributes)},r.prototype.equals=function(a){return this._text===a.getText()&&(0,n.isEqual)(this._attributes,a._attributes)},r.parse=function(a){var e=a.text,t=(a._parseClass,function(a,e){var t={};for(var i in a)e.indexOf(i)>=0||Object.prototype.hasOwnProperty.call(a,i)&&(t[i]=a[i]);return t}(a,["text","_parseClass"]));return new r(e,t)},e.default=r},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(a,e,t){"use strict";var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a};Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function a(a,e){for(var t=0;t<e.length;t++){var i=e[t];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(a,i.key,i)}}return function(e,t,i){return t&&a(e.prototype,t),i&&a(e,i),e}}(),o=t(2),r=c(t(83)),s=c(t(378)),d=t(38),l=c(t(34));function c(a){return a&&a.__esModule?a:{default:a}}var u=["en","nl","de","it","ru","fr","es"],p=function(a){function e(a){!function(a,e){if(!(a instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var t=function(a,e){if(!a)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!==(void 0===e?"undefined":i(e))&&"function"!=typeof e?a:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this)),n={urlTitle:(0,d.createAnchorOpeningTag)("https://yoa.st/34r"),urlCallToAction:(0,d.createAnchorOpeningTag)("https://yoa.st/34s")};return t.identifier="fleschReadingEase",t._config=(0,o.merge)(n,a),t}return function(a,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+(void 0===e?"undefined":i(e)));a.prototype=Object.create(e&&e.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(a,e):a.__proto__=e)}(e,r.default),n(e,[{key:"getResult",value:function(a,e,t){if(this.fleschReadingResult=e.getResearch("calculateFleschReading"),this.isApplicable(a)){var i=new l.default(t),n=this.calculateResult(t);return i.setScore(n.score),i.setText(n.resultText),i}return null}},{key:"calculateResult",value:function(a){this.fleschReadingResult<0&&(this.fleschReadingResult=0),this.fleschReadingResult>100&&(this.fleschReadingResult=100);var e=0,t="",i=a.dgettext("js-text-analysis","Good job!");return this.fleschReadingResult>=this._config.borders.veryEasy?(e=this._config.scores.veryEasy,t=a.dgettext("js-text-analysis","very easy")):(0,o.inRange)(this.fleschReadingResult,this._config.borders.easy,this._config.borders.veryEasy)?(e=this._config.scores.easy,t=a.dgettext("js-text-analysis","easy")):(0,o.inRange)(this.fleschReadingResult,this._config.borders.fairlyEasy,this._config.borders.easy)?(e=this._config.scores.fairlyEasy,t=a.dgettext("js-text-analysis","fairly easy")):(0,o.inRange)(this.fleschReadingResult,this._config.borders.okay,this._config.borders.fairlyEasy)?(e=this._config.scores.okay,t=a.dgettext("js-text-analysis","ok")):(0,o.inRange)(this.fleschReadingResult,this._config.borders.fairlyDifficult,this._config.borders.okay)?(e=this._config.scores.fairlyDifficult,t=a.dgettext("js-text-analysis","fairly difficult"),i=a.dgettext("js-text-analysis","Try to make shorter sentences to improve readability")):(0,o.inRange)(this.fleschReadingResult,this._config.borders.difficult,this._config.borders.fairlyDifficult)?(e=this._config.scores.difficult,t=a.dgettext("js-text-analysis","difficult"),i=a.dgettext("js-text-analysis","Try to make shorter sentences, using less difficult words to improve readability")):(e=this._config.scores.veryDifficult,t=a.dgettext("js-text-analysis","very difficult"),i=a.dgettext("js-text-analysis","Try to make shorter sentences, using less difficult words to improve readability")),e>=this._config.scores.okay?{score:e,resultText:a.sprintf(a.dgettext("js-text-analysis","%1$sFlesch Reading Ease%2$s: The copy scores %3$s in the test, which is considered %4$s to read. %5$s"),this._config.urlTitle,"</a>",this.fleschReadingResult,t,i)}:{score:e,resultText:a.sprintf(a.dgettext("js-text-analysis","%1$sFlesch Reading Ease%2$s: The copy scores %3$s in the test, which is considered %4$s to read. %5$s%6$s%7$s"),this._config.urlTitle,"</a>",this.fleschReadingResult,t,this._config.urlCallToAction,i,"</a>.")}}},{key:"isApplicable",value:function(a){return(0,s.default)(a.getLocale(),u)&&a.hasText()}}]),e}();e.default=p},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=t(2),n=t(243),o=u(t(731)),r=u(t(359)),s=t(38),d=t(154),l=u(t(34)),c=u(t(242));function u(a){return a&&a.__esModule?a:{default:a}}var p=function(a){return(0,i.filter)(a,function(a){return(0,o.default)(150,a.wordCount)})};e.default={identifier:"textParagraphTooLong",getResult:function(a,e,t){var i=e.getResearch("getParagraphLength"),o=function(a,e,t){var i=void 0,o=(0,s.createAnchorOpeningTag)("https://yoa.st/35d"),r=(0,s.createAnchorOpeningTag)("https://yoa.st/35e");if(0===a.length)return{};var d=a[0].wordCount;return d<=150&&(i=9),(0,n.inRangeEndInclusive)(d,150,200)&&(i=6),d>200&&(i=3),i>=7?{score:i,hasMarks:!1,text:t.sprintf(t.dgettext("js-text-analysis","%1$sParagraph length%2$s: None of the paragraphs are too long. Great job!"),o,"</a>")}:{score:i,hasMarks:!0,text:t.sprintf(t.dngettext("js-text-analysis","%1$sParagraph length%2$s: %3$d of the paragraphs contains more than the recommended maximum of %4$d words. %5$sShorten your paragraphs%2$s!","%1$sParagraph length%2$s: %3$d of the paragraphs contain more than the recommended maximum of %4$d words. %5$sShorten your paragraphs%2$s!",e.length),o,"</a>",e.length,150,r)}}(i=function(a){return a.sort(function(a,e){return e.wordCount-a.wordCount})}(i),p(i),t),r=new l.default;return r.setScore(o.score),r.setText(o.text),r.setHasMarks(o.hasMarks),r},isApplicable:function(a){return a.hasText()},getMarks:function(a,e){var t=e.getResearch("getParagraphLength"),n=p(t);return(0,i.map)(n,function(a){var e=(0,d.stripBlockTagsAtStartEnd)(a.text),t=(0,r.default)(e);return new c.default({original:e,marked:t})})}}},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(a,e){return e>a}},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=t(2),n=p(t(380)),o=p(t(378)),r=t(243),s=p(t(359)),d=t(38),l=t(154),c=p(t(34)),u=p(t(242));function p(a){return a&&a.__esModule?a:{default:a}}var z=["en","de","fr","es","ru","it","nl","pl","sv"];e.default={identifier:"passiveVoice",getResult:function(a,e,t){var i=function(a,e){var t=void 0,i=0,o=(0,d.createAnchorOpeningTag)("https://yoa.st/34t"),s=(0,d.createAnchorOpeningTag)("https://yoa.st/34u");0!==a.total&&(i=(0,n.default)(a.passives.length/a.total*100));var l=i>0;return i<=10&&(t=9),(0,r.inRangeEndInclusive)(i,10,15)&&(t=6),i>15&&(t=3),t>=7?{score:t,hasMarks:l,text:e.sprintf(e.dgettext("js-text-analysis","%1$sPassive voice%2$s: You're using enough active voice. That's great!"),o,"</a>")}:{score:t,hasMarks:l,text:e.sprintf(e.dgettext("js-text-analysis","%1$sPassive voice%2$s: %3$s of the sentences contain passive voice, which is more than the recommended maximum of %4$s. %5$sTry to use their active counterparts%2$s."),o,"</a>",i+"%","10%",s)}}(e.getResearch("passiveVoice"),t),o=new c.default;return o.setScore(i.score),o.setText(i.text),o.setHasMarks(i.hasMarks),o},isApplicable:function(a){return(0,o.default)(a.getLocale(),z)&&a.hasText()},getMarks:function(a,e){var t=e.getResearch("passiveVoice");return(0,i.map)(t.passives,function(a){a=(0,l.stripIncompleteTags)(a);var e=(0,s.default)(a);return new u.default({original:a,marked:e})})}}},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=t(2),n=c(t(359)),o=t(38),r=t(154),s=c(t(34)),d=c(t(242)),l=c(t(378));function c(a){return a&&a.__esModule?a:{default:a}}var u=["en","de","es","fr","nl","it","ru","pl","sv"];e.default={identifier:"sentenceBeginnings",getResult:function(a,e,t){var n=function(a,e){var t=(0,o.createAnchorOpeningTag)("https://yoa.st/35f"),i=(0,o.createAnchorOpeningTag)("https://yoa.st/35g");return a.total>0?{score:3,hasMarks:!0,text:e.sprintf(e.dngettext("js-text-analysis","%1$sConsecutive sentences%2$s: The text contains %3$d consecutive sentences starting with the same word. %5$sTry to mix things up%2$s!","%1$sConsecutive sentences%2$s: The text contains %4$d instances where %3$d or more consecutive sentences start with the same word. %5$sTry to mix things up%2$s!",a.total),t,"</a>",a.lowestCount,a.total,i)}:{score:9,hasMarks:!1,text:e.sprintf(e.dgettext("js-text-analysis","%1$sConsecutive sentences%2$s: There is enough variety in your sentences. That's great!"),t,"</a>")}}(function(a){var e=(0,i.partition)(a,function(a){return a.count>2});if(0===e[0].length)return{total:0};var t=(0,i.sortBy)(e[0],function(a){return a.count});return{total:e[0].length,lowestCount:t[0].count}}(e.getResearch("getSentenceBeginnings")),t),r=new s.default;return r.setScore(n.score),r.setText(n.text),r.setHasMarks(n.hasMarks),r},isApplicable:function(a){return(0,l.default)(a.getLocale(),u)&&a.hasText()},getMarks:function(a,e){var t=e.getResearch("getSentenceBeginnings");t=(0,i.filter)(t,function(a){return a.count>2});var o=(0,i.map)(t,function(a){return a.sentences});return(0,i.map)((0,i.flatten)(o),function(a){a=(0,r.stripIncompleteTags)(a);var e=(0,n.default)(a);return new d.default({original:a,marked:e})})}}},function(a,e,t){"use strict";var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a};Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function a(a,e){for(var t=0;t<e.length;t++){var i=e[t];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(a,i.key,i)}}return function(e,t,i){return t&&a(e.prototype,t),i&&a(e,i),e}}(),o=t(2),r=m(t(83)),s=m(t(799)),d=m(t(380)),l=t(243),c=m(t(359)),u=t(38),p=t(154),z=m(t(34)),g=m(t(242));function m(a){return a&&a.__esModule?a:{default:a}}var f=function(a){function e(){var a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};!function(a,e){if(!(a instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var t=function(a,e){if(!a)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!==(void 0===e?"undefined":i(e))&&"function"!=typeof e?a:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return t.identifier="textSentenceLength",t._config=(0,o.merge)({recommendedWordCount:20,slightlyTooMany:25,farTooMany:30},a),t}return function(a,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+(void 0===e?"undefined":i(e)));a.prototype=Object.create(e&&e.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(a,e):a.__proto__=e)}(e,r.default),n(e,[{key:"getResult",value:function(a,e,t){var i=e.getResearch("countSentencesFromText"),n=this.calculatePercentage(i),o=this.calculateScore(n),r=new z.default;return r.setScore(o),r.setText(this.translateScore(o,n,t)),r.setHasMarks(n>0),r}},{key:"isApplicable",value:function(a){return a.hasText()}},{key:"getMarks",value:function(a,e){var t=e.getResearch("countSentencesFromText"),i=this.getTooLongSentences(t);return(0,o.map)(i,function(a){var e=(0,p.stripIncompleteTags)(a.sentence);return new g.default({original:e,marked:(0,c.default)(e)})})}},{key:"translateScore",value:function(a,e,t){var i=(0,u.createAnchorOpeningTag)("https://yoa.st/34v"),n=(0,u.createAnchorOpeningTag)("https://yoa.st/34w");return a>=7?t.sprintf(t.dgettext("js-text-analysis","%1$sSentence length%2$s: Great!"),i,"</a>"):t.sprintf(t.dgettext("js-text-analysis","%1$sSentence length%2$s: %3$s of the sentences contain more than %4$s words, which is more than the recommended maximum of %5$s. %6$sTry to shorten the sentences%2$s."),i,"</a>",e+"%",this._config.recommendedWordCount,this._config.slightlyTooMany+"%",n)}},{key:"calculatePercentage",value:function(a){var e=0;if(0!==a.length){var t=this.countTooLongSentences(a);e=(0,d.default)(t/a.length*100)}return e}},{key:"calculateScore",value:function(a){var e=void 0;return a<=this._config.slightlyTooMany&&(e=9),(0,l.inRangeEndInclusive)(a,this._config.slightlyTooMany,this._config.farTooMany)&&(e=6),a>this._config.farTooMany&&(e=3),e}},{key:"getTooLongSentences",value:function(a){return(0,s.default)(a,this._config.recommendedWordCount)}},{key:"countTooLongSentences",value:function(a){return this.getTooLongSentences(a).length}}]),e}();e.default=f},function(a,e,t){"use strict";var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a};Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function a(a,e){for(var t=0;t<e.length;t++){var i=e[t];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(a,i.key,i)}}return function(e,t,i){return t&&a(e.prototype,t),i&&a(e,i),e}}(),o=t(2),r=z(t(83)),s=t(243),d=z(t(731)),l=t(38),c=t(736),u=z(t(155)),p=z(t(34));function z(a){return a&&a.__esModule?a:{default:a}}var g=function(a){function e(){var a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};!function(a,e){if(!(a instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var t=function(a,e){if(!a)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!==(void 0===e?"undefined":i(e))&&"function"!=typeof e?a:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this)),n={parameters:{recommendedMaximumWordCount:300,slightlyTooMany:300,farTooMany:350},urlTitle:(0,l.createAnchorOpeningTag)("https://yoa.st/34x"),urlCallToAction:(0,l.createAnchorOpeningTag)("https://yoa.st/34y"),scores:{goodShortTextNoSubheadings:9,goodSubheadings:9,okSubheadings:6,badSubheadings:3,badLongTextNoSubheadings:2}};return t.identifier="subheadingsTooLong",t._config=(0,o.merge)(n,a),t}return function(a,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+(void 0===e?"undefined":i(e)));a.prototype=Object.create(e&&e.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(a,e):a.__proto__=e)}(e,r.default),n(e,[{key:"getResult",value:function(a,e,t){this._subheadingTextsLength=e.getResearch("getSubheadingTextLengths"),this._subheadingTextsLength=this._subheadingTextsLength.sort(function(a,e){return e.wordCount-a.wordCount}),this._tooLongTextsNumber=this.getTooLongSubheadingTexts().length;var i=new p.default;i.setIdentifier(this.identifier),this._hasSubheadings=this.hasSubheadings(a),this._textLength=(0,u.default)(a.getText()).length;var n=this.calculateResult(t);return n.resultTextPlural=n.resultTextPlural||"",i.setScore(n.score),i.setText(n.resultText),i}},{key:"isApplicable",value:function(a){return a.hasText()}},{key:"hasSubheadings",value:function(a){return(0,c.getSubheadings)(a.getText()).length>0}},{key:"getTooLongSubheadingTexts",value:function(){return(0,o.filter)(this._subheadingTextsLength,function(a){return(0,d.default)(this._config.parameters.recommendedMaximumWordCount,a.wordCount)}.bind(this))}},{key:"calculateResult",value:function(a){if(this._textLength>300){if(this._hasSubheadings){var e=this._subheadingTextsLength[0].wordCount;return e<=this._config.parameters.slightlyTooMany?{score:this._config.scores.goodSubheadings,resultText:a.sprintf(a.dgettext("js-text-analysis","%1$sSubheading distribution%2$s: Great job!"),this._config.urlTitle,"</a>")}:(0,s.inRangeEndInclusive)(e,this._config.parameters.slightlyTooMany,this._config.parameters.farTooMany)?{score:this._config.scores.okSubheadings,resultText:a.sprintf(a.dngettext("js-text-analysis","%1$sSubheading distribution%2$s: %3$d section of your text is longer than %4$d words and is not separated by any subheadings. %5$sAdd subheadings to improve readability%2$s.","%1$sSubheading distribution%2$s: %3$d sections of your text are longer than %4$d words and are not separated by any subheadings. %5$sAdd subheadings to improve readability%2$s.",this._tooLongTextsNumber),this._config.urlTitle,"</a>",this._tooLongTextsNumber,this._config.parameters.recommendedMaximumWordCount,this._config.urlCallToAction)}:{score:this._config.scores.badSubheadings,resultText:a.sprintf(a.dngettext("js-text-analysis","%1$sSubheading distribution%2$s: %3$d section of your text is longer than %4$d words and is not separated by any subheadings. %5$sAdd subheadings to improve readability%2$s.","%1$sSubheading distribution%2$s: %3$d sections of your text are longer than %4$d words and are not separated by any subheadings. %5$sAdd subheadings to improve readability%2$s.",this._tooLongTextsNumber),this._config.urlTitle,"</a>",this._tooLongTextsNumber,this._config.parameters.recommendedMaximumWordCount,this._config.urlCallToAction)}}return{score:this._config.scores.badLongTextNoSubheadings,resultText:a.sprintf(a.dgettext("js-text-analysis","%1$sSubheading distribution%2$s: You are not using any subheadings, although your text is rather long. %3$sTry and add some subheadings%2$s."),this._config.urlTitle,"</a>",this._config.urlCallToAction)}}return this._hasSubheadings?{score:this._config.scores.goodSubheadings,resultText:a.sprintf(a.dgettext("js-text-analysis","%1$sSubheading distribution%2$s: Great job!"),this._config.urlTitle,"</a>")}:{score:this._config.scores.goodShortTextNoSubheadings,resultText:a.sprintf(a.dgettext("js-text-analysis","%1$sSubheading distribution%2$s: You are not using any subheadings, but your text is short enough and probably doesn't need them."),this._config.urlTitle,"</a>")}}}]),e}();e.default=g},function(a,e,t){"use strict";function i(a){for(var e=[],t=/<h([1-6])(?:[^>]+)?>(.*?)<\/h\1>/gi,i=void 0;null!==(i=t.exec(a));)e.push(i);return e}function n(a){for(var e=[],t=/<h([2-3])(?:[^>]+)?>(.*?)<\/h\1>/gi,i=void 0;null!==(i=t.exec(a));)e.push(i);return e}function o(a){return i(a).map(function(a){return a[0]})}function r(a){return n(a).map(function(a){return a[0]})}Object.defineProperty(e,"__esModule",{value:!0}),e.getSubheadings=i,e.getSubheadingsTopLevel=n,e.getSubheadingContents=o,e.getSubheadingContentsTopLevel=r,e.default={getSubheadings:i,getSubheadingsTopLevel:n,getSubheadingContents:o,getSubheadingContentsTopLevel:r}},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(a){return a=(a=a.replace(i,"")).replace(n,"")};var i=new RegExp("^[\\–\\-\\(\\)_\\[\\]’“”\"'.?!:;,¿¡«»‹›—×+&<>]+"),n=new RegExp("[\\–\\-\\(\\)_\\[\\]’“”\"'.?!:;,¿¡«»‹›—×+&<>]+$")},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=t(38),n=t(154),o=function(a){return a&&a.__esModule?a:{default:a}}(t(34));e.default={identifier:"textPresence",getResult:function(a,e,t){var r=(0,n.stripFullTags)(a.getText()),s=(0,i.createAnchorOpeningTag)("https://yoa.st/35h"),d=(0,i.createAnchorOpeningTag)("https://yoa.st/35i");if(r.length<50){var l=new o.default;return l.setText(t.sprintf(t.dgettext("js-text-analysis","%1$sNot enough content%2$s: %3$sPlease add some content to enable a good analysis%2$s."),s,"</a>",d)),l.setScore(3),l}return new o.default}}},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=t(2),n=p(t(380)),o=t(243),r=t(38),s=t(154),d=p(t(34)),l=p(t(242)),c=p(t(359)),u=p(t(378));function p(a){return a&&a.__esModule?a:{default:a}}var z=["en","de","es","fr","nl","it","pt","ru","ca","pl","sv"],g=function(a,e){var t=function(a){return 0===a.transitionWordSentences||0===a.totalSentences?0:(0,n.default)(a.transitionWordSentences/a.totalSentences*100)}(a),i=function(a){return a<20?3:(0,o.inRangeStartInclusive)(a,20,30)?6:a>=30?9:void 0}(t),s=t>0,d=(0,r.createAnchorOpeningTag)("https://yoa.st/34z"),l=(0,r.createAnchorOpeningTag)("https://yoa.st/35a");return i<7&&0===t?{score:(0,n.default)(i),hasMarks:s,text:e.sprintf(e.dgettext("js-text-analysis","%1$sTransition words%2$s: None of the sentences contain transition words. %3$sUse some%2$s."),d,"</a>",l)}:i<7?{score:(0,n.default)(i),hasMarks:s,text:e.sprintf(e.dgettext("js-text-analysis","%1$sTransition words%2$s: Only %3$s of the sentences contain transition words, which is not enough. %4$sUse more of them%2$s."),d,"</a>",t+"%",l)}:{score:(0,n.default)(i),hasMarks:s,text:e.sprintf(e.dgettext("js-text-analysis","%1$sTransition words%2$s: Well done!"),d,"</a>")}};e.default={identifier:"textTransitionWords",getResult:function(a,e,t){var i=e.getResearch("findTransitionWords"),n=g(i,t),o=new d.default;return o.setScore(n.score),o.setText(n.text),o.setHasMarks(n.hasMarks),o},isApplicable:function(a){return(0,u.default)(a.getLocale(),z)&&a.hasText()},getMarks:function(a,e){var t=e.getResearch("findTransitionWords");return(0,i.map)(t.sentenceResults,function(a){var e=a.sentence;return e=(0,s.stripIncompleteTags)(e),new l.default({original:e,marked:(0,c.default)(e)})})}}},function(a,e,t){"use strict";var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a};Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function a(a,e){for(var t=0;t<e.length;t++){var i=e[t];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(a,i.key,i)}}return function(e,t,i){return t&&a(e.prototype,t),i&&a(e,i),e}}(),o=t(2),r=l(t(83)),s=t(38),d=l(t(34));function l(a){return a&&a.__esModule?a:{default:a}}var c=function(a){function e(){var a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};!function(a,e){if(!(a instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var t=function(a,e){if(!a)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!==(void 0===e?"undefined":i(e))&&"function"!=typeof e?a:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this)),n={parameters:{recommendedMinimum:1},scores:{allInternalFollow:9,someInternalFollow:8,noneInternalFollow:7,noInternal:3},urlTitle:(0,s.createAnchorOpeningTag)("https://yoa.st/33z"),urlCallToAction:(0,s.createAnchorOpeningTag)("https://yoa.st/34a")};return t.identifier="internalLinks",t._config=(0,o.merge)(n,a),t}return function(a,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+(void 0===e?"undefined":i(e)));a.prototype=Object.create(e&&e.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(a,e):a.__proto__=e)}(e,r.default),n(e,[{key:"getResult",value:function(a,e,t){this.linkStatistics=e.getResearch("getLinkStatistics");var i=new d.default,n=this.calculateResult(t);return i.setScore(n.score),i.setText(n.resultText),i}},{key:"isApplicable",value:function(a){return a.hasText()}},{key:"calculateResult",value:function(a){return 0===this.linkStatistics.internalTotal?{score:this._config.scores.noInternal,resultText:a.sprintf(a.dgettext("js-text-analysis","%1$sInternal links%3$s: No internal links appear in this page, %2$smake sure to add some%3$s!"),this._config.urlTitle,this._config.urlCallToAction,"</a>")}:this.linkStatistics.internalNofollow===this.linkStatistics.internalTotal?{score:this._config.scores.noneInternalFollow,resultText:a.sprintf(a.dgettext("js-text-analysis","%1$sInternal links%3$s: The internal links in this page are all nofollowed. %2$sAdd some good internal links%3$s."),this._config.urlTitle,this._config.urlCallToAction,"</a>")}:this.linkStatistics.internalDofollow===this.linkStatistics.internalTotal?{score:this._config.scores.allInternalFollow,resultText:a.sprintf(a.dgettext("js-text-analysis","%1$sInternal links%2$s: You have enough internal links. Good job!"),this._config.urlTitle,"</a>")}:{score:this._config.scores.someInternalFollow,resultText:a.sprintf(a.dgettext("js-text-analysis","%1$sInternal links%2$s: There are both nofollowed and normal internal links on this page. Good job!"),this._config.urlTitle,"</a>")}}}]),e}();e.default=c},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(){return{filteredAtEnding:[].concat(u,A,B),filteredAtBeginningAndEnding:[].concat(l,T,S,g,D,f,m),filteredAnywhere:[].concat(d,x,p,z,y,$,c,r,q,E,C,F,w,P,M,h,v,k,_,U,O,j,L,I,W),cannotDirectlyPrecedePassiveParticiple:[].concat(l,T,g,m,u,A,f),cannotBeBetweenPassiveAuxiliaryAndParticiple:[].concat(q,E,C,F),all:[].concat(l,c,u,g,m,y,p,z,f,w,A,b,h,v,k,j,_,x,O,r,s,q,E,T,S,P,M,C,d,R,D,F,$,B,L,W,U,N,K)}};var i=o(t(804)),n=o(t(805));function o(a){return a&&a.__esModule?a:{default:a}}var r=(0,i.default)().filteredAuxiliaries,s=(0,i.default)().notFilteredAuxiliaries,d=(0,n.default)().singleWords,l=["the","an","a"],c=["one","two","three","four","five","six","seven","eight","nine","ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen","twenty","hundred","hundreds","thousand","thousands","million","millions","billion","billions"],u=["first","second","third","fourth","fifth","sixth","seventh","eighth","ninth","tenth","eleventh","twelfth","thirteenth","fourteenth","fifteenth","sixteenth","seventeenth","eighteenth","nineteenth","twentieth"],p=["i","you","he","she","it","we","they"],z=["me","him","us","them"],g=["this","that","these","those"],m=["my","your","his","her","its","their","our","mine","yours","hers","theirs","ours"],f=["all","some","many","lot","lots","ton","tons","bit","no","every","enough","little","much","more","most","plenty","several","few","fewer","kind","kinds"],y=["myself","yourself","himself","herself","itself","oneself","ourselves","yourselves","themselves"],w=["none","nobody","everyone","everybody","someone","somebody","anyone","anybody","nothing","everything","something","anything","each","other","whatever","whichever","whoever","whomever","whomsoever","whosoever","others","neither","both","either","any","such"],b=["one's","nobody's","everyone's","everybody's","someone's","somebody's","anyone's","anybody's","nothing's","everything's","something's","anything's","whoever's","others'","other's","another's","neither's","either's"],h=["which","what","whose"],v=["who","whom"],k=["where","how","why","whether","wherever","whyever","wheresoever","whensoever","howsoever","whysoever","whatsoever","whereso","whomso","whenso","howso","whyso","whoso","whatso"],j=["therefor","therein","hereby","hereto","wherein","therewith","herewith","wherewith","thereby"],_=["there","here","whither","thither","hither","whence","thence"],x=["always","once","twice","thrice"],q=["can","cannot","can't","could","couldn't","could've","dare","dares","dared","do","don't","does","doesn't","did","didn't","done","have","haven't","had","hadn't","has","hasn't","i've","you've","we've","they've","i'd","you'd","he'd","she'd","it'd","we'd","they'd","would","wouldn't","would've","may","might","must","need","needn't","needs","ought","shall","shalln't","shan't","should","shouldn't","will","won't","i'll","you'll","he'll","she'll","it'll","we'll","they'll","there's","there're","there'll","here's","here're","there'll"],E=["appear","appears","appeared","become","becomes","became","come","comes","came","keep","keeps","kept","remain","remains","remained","stay","stays","stayed","turn","turns","turned"],A=["doing","daring","having","appearing","becoming","coming","keeping","remaining","staying","saying","asking","stating","seeming","letting","making","setting","showing","putting","adding","going","using","trying","containing"],T=["in","from","with","under","throughout","atop","for","on","of","to","aboard","about","above","abreast","absent","across","adjacent","after","against","along","alongside","amid","mid","among","apropos","apud","around","as","astride","at","ontop","afore","tofore","behind","ahind","below","ablow","beneath","neath","beside","between","atween","beyond","ayond","by","chez","circa","spite","down","except","into","less","like","minus","near","nearer","nearest","anear","notwithstanding","off","onto","opposite","out","outen","over","past","per","pre","qua","sans","sauf","sithence","through","thru","truout","toward","underneath","up","upon","upside","versus","via","vis-à-vis","without","ago","apart","aside","aslant","away","withal","towards","amidst","amongst","midst","whilst"],O=["back","within","forward","backward","ahead"],S=["and","or","and/or","yet"],P=["sooner","just","only"],M=["if","even"],C=["say","says","said","claimed","ask","asks","asked","stated","explain","explains","explained","think","thinks","talks","talked","announces","announced","tells","told","discusses","discussed","suggests","suggested","understands","understood"],R=["again","definitely","eternally","expressively","instead","expressly","immediately","including","instantly","namely","naturally","next","notably","now","nowadays","ordinarily","positively","truly","ultimately","uniquely","usually","almost","maybe","probably","granted","initially","too","actually","already","e.g","i.e","often","regularly","simply","optionally","perhaps","sometimes","likely","never","ever","else","inasmuch","provided","currently","incidentally","elsewhere","particular","recently","relatively","f.i","clearly","apparently"],D=["highly","very","really","extremely","absolutely","completely","totally","utterly","quite","somewhat","seriously","fairly","fully","amazingly"],F=["seem","seems","seemed","let","let's","lets","make","makes","made","want","showed","shown","go","goes","went","gone","take","takes","took","taken","put","puts","use","used","try","tries","tried","mean","means","meant","called","based","add","adds","added","contain","contains","contained","consist","consists","consisted","ensure","ensures","ensured"],B=["new","newer","newest","old","older","oldest","previous","good","well","better","best","big","bigger","biggest","easy","easier","easiest","fast","faster","fastest","far","hard","harder","hardest","least","own","large","larger","largest","long","longer","longest","low","lower","lowest","high","higher","highest","regular","simple","simpler","simplest","small","smaller","smallest","tiny","tinier","tiniest","short","shorter","shortest","main","actual","nice","nicer","nicest","real","same","able","certain","usual","so-called","mainly","mostly","recent","anymore","complete","lately","possible","commonly","constantly","continually","directly","easily","nearly","slightly","somewhere","estimated","latest","different","similar","widely","bad","worse","worst","great","specific","available","average","awful","awesome","basic","beautiful","busy","current","entire","everywhere","important","major","multiple","normal","necessary","obvious","partly","special","last","early","earlier","earliest","young","younger","youngest",""],$=["oh","wow","tut-tut","tsk-tsk","ugh","whew","phew","yeah","yea","shh","oops","ouch","aha","yikes"],L=["tbs","tbsp","spk","lb","qt","pk","bu","oz","pt","mod","doz","hr","f.g","ml","dl","cl","l","mg","g","kg","quart"],I=["seconds","minute","minutes","hour","hours","day","days","week","weeks","month","months","year","years","today","tomorrow","yesterday"],W=["thing","things","way","ways","matter","case","likelihood","ones","piece","pieces","stuff","times","part","parts","percent","instance","instances","aspect","aspects","item","items","idea","theme","person","instance","instances","detail","details","factor","factors","difference","differences"],U=["not","yes","sure","top","bottom","ok","okay","amen","aka","etc","etcetera","sorry","please"],N=["ms","mss","mrs","mr","dr","prof"],K=["jr","sr"]},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(){return{filteredAtBeginning:R,filteredAtEnding:[].concat(r,h,j,_,C),filteredAtBeginningAndEnding:[].concat(n,x,E,u,P,z,p),filteredAnywhere:[].concat(i,s,d,l,c,D,o,b,v,k,O,M,g,A,T,m,f,y,w,L,q,F,B,$),cannotDirectlyPrecedePassiveParticiple:[].concat(n,x,d,p,g,y,o,r,M,C,O,m,f,c,l,q),cannotBeBetweenPassiveAuxiliaryAndParticiple:[].concat(v,j),all:[].concat(n,o,r,u,p,s,c,l,d,z,g,m,f,y,w,q,b,h,v,k,j,_,x,E,A,T,O,i,S,P,M,C,D,R,F,$,L,I,W)}};var i=(0,function(a){return a&&a.__esModule?a:{default:a}}(t(808)).default)().singleWords,n=["el","la","los","las","un","una","unos","unas"],o=["dos","tres","cuatro","cinco","seis","siete","ocho","nueve","diez","once","doce","trece","catorce","quince","dieciseis","diecisiete","dieciocho","diecinueve","veinte","cien","centena","mil","millon","millones"],r=["primera","segunda","tercera","cuarto","cuarta","quinto","quinta","sexto","sexta","septimo","septima","octavo","octava","noveno","novena","décimo","décima","vigésimo","vigésima","primeros","primeras","segundos","segundas","terceros","terceras","cuartos","cuartas","quintos","quintas","sextos","sextas","septimos","septimas","octavos","octavas","novenos","novenas","décimos","décimas","vigésimos","vigésimas"],s=["yo","tú","él","ella","ello","nosotros","nosotras","vosotros","vosotras","ustedes","ellos","ellas"],d=["me","te","lo","se","nos","os","les"],l=["mí","ti","ud","uds","usted","sí"],c=["conmigo","contigo","consigo"],u=["este","ese","aquel","esta","esa","aquella","estos","esos","aquellos","estas","esas","aquellas","esto","eso","aquello"],p=["mi","mis","mío","míos","mía","mías","nuestro","nuestros","nuestra","nuestras","tuyo","tuyos","tuya","tuyas","tu","tus","vuestro","vuestros","vuestra","vuestras","suyo","suyos","suya","suyas","su","sus"],z=["bastante","bastantes","mucho","muchas","mucha","muchos","demasiado","demasiada","demasiados","demasiadas","poco","poca","pocos","pocas","demás","otros","otras","todo","toda","todos","todas"],g=["alguien","algo","algún","alguno","alguna","algunos","algunas","nadie","nada","ningún","ninguno","ninguna","ningunos","ningunas","tanto","tantos","tanta","tantas"],m=["cuyas","cual"],f=["cuyo"],y=["comoquiera","cualesquiera","cualquier","cuanta","cuantas","cuanto","cuantos","cuál","cuáles","cuánta","cuántas","cuánto","cuántos","cómo","dondequiera","dónde","quien","quienes","quienquiera","quién","quiénes","qué"],w=["allí","ahí","allá","aquí","acá","adónde","delante","detrás","debajo","adelante","atrás","adentro","afuera"],b=["he","has","ha","hay","hemos","habéis","han","hube","hubiste","hubo","hubimos","hubisteis","hubieron","había","habías","habíamos","habíais","habían","habría","habrías","habríais","habrían","habré","habrás","habrá","habremos","habréis","habrán","haya","hayas","hayamos","hayáis","hayan","hubiera","hubieras","hubiéramos","hubierais","hubieran","hubiese","hubieses","hubiésemos","hubieseis","hubiesen","hubiere","hubieres","hubiéremos","hubiereis","hubieren","habed","habido","debo","debes","debe","debemos","debéis","deben","debí","debiste","debió","debimos","debisteis","debieron","debía","debías","debíamos","debíais","debían","debería","deberías","deberíamos","deberíais","deberían","deberé","deberás","deberá","deberemos","deberéis","deberán","deba","debas","debamos","debáis","deban","debiera","debieras","debiéramos","debierais","debieran","debiese","debieses","debiésemos","debieseis","debiesen","debiere","debieres","debiéremos","debiereis","debieren","debed","debido","empiezo","empiezas","empieza","empezáis","empiezan","empecé","empezaste","empezó","empezamos","empezasteis","empezaron","empezaba","empezabas","empezábamos","empezabais","empezaban","empezaría","empezarías","empezaríamos","empezaríais","empezarían","empezaré","empezarás","empezará","empezaremos","empezaréis","empezarán","empiece","empieces","empecemos","empecéis","empiecen","empezara","empezaras","empezáramos","empezarais","empezaran","empezase","empezases","empezásemos","empezaseis","empezasen","empezare","empezares","empezáremos","empezareis","empezaren","empezad","empezado","comienzo","comienzas","comienza","comenzamos","comenzáis","comienzan","comencé","comenzaste","comenzó","comenzasteis","comenzaron","comenzaba","comenzabas","comenzábamos","comenzabais","comenzaban","comenzaría","comenzarías","comenzaríamos","comenzaríais","comenzarían","comenzaré","comenzarás","comenzará","comenzaremos","comenzaréis","comenzarán","comience","comiences","comencemos","comencéis","comiencen","comenzara","comenzaras","comenzáramos","comenzarais","comenzaran","comenzase","comenzases","comenzásemos","comenzaseis","comenzasen","comenzare","comenzares","comenzáremos","comenzareis","comenzaren","comenzad","comenzado","sigo","sigues","sigue","seguimos","seguis","siguen","seguí","seguiste","siguió","seguisteis","siguieron","seguía","seguías","seguíamos","seguíais","seguían","seguiría","seguirías","seguiríamos","seguiríais","seguirían","seguiré","seguirás","seguirá","seguiremos","seguiréis","seguirán","siga","sigas","sigamos","sigáis","sigan","siguiera","siguieras","siguiéramos","siguierais","siguieran","siguiese","siguieses","siguiésemos","siguieseis","siguiesen","siguiere","siguieres","siguiéremos","siguiereis","siguieren","seguid","seguido","tengo","tienes","tiene","tenemos","tenéis","tienen","tuve","tuviste","tuvo","tuvimos","tuvisteis","tuvieron","tenía","tenías","teníamos","teníais","tenían","tendría","tendrías","tendríamos","tendríais","tendrían","tendré","tendrás","tendrá","tendremos","tendréis","tendrán","tenga","tengas","tengamos","tengáis","tengan","tuviera","tuvieras","tuviéramos","tuvierais","tuvieran","tuviese","tuvieses","tuviésemos","tuvieseis","tuviesen","tuviere","tuvieres","tuviéremos","tuviereis","tuvieren","ten","tened","tenido","ando","andas","andamos","andáis","andan","anduve","anduviste","anduvo","anduvimos","anduvisteis","anduvieron","andaba","andabas","andábamos","andabais","andaban","andaría","andarías","andaríamos","andaríais","andarían","andaré","andarás","andará","andaremos","andaréis","andarán","ande","andes","andemos","andéis","anden","anduviera","anduvieras","anduviéramos","anduvierais","anduvieran","anduviese","anduvieses","anduviésemos","anduvieseis","anduviesen","anduviere","anduvieres","anduviéremos","anduviereis","anduvieren","andad","andado","quedo","quedas","queda","quedamos","quedáis","quedan","quedé","quedasteis","quedaron","quedaba","quedabas","quedábamos","quedabais","quedaban","quedaría","quedarías","quedaríamos","quedaríais","quedarían","quedaré","quedarás","quedará","quedaremos","quedaréis","quedarán","quede","quedes","quedemos","quedéis","queden","quedara","quedaras","quedáramos","quedarais","quedaran","quedase","quedases","quedásemos","quedaseis","quedasen","quedare","quedares","quedáremos","quedareis","quedaren","quedad","quedado","hallo","hallas","halla","hallamos","halláis","hallan","hallé","hallaste","halló","hallasteis","hallaron","hallaba","hallabas","hallábamos","hallabais","hallaban","hallaría","hallarías","hallaríamos","hallaríais","hallarían","hallaré","hallarás","hallará","hallaremos","hallaréis","hallarán","halle","halles","hallemos","halléis","hallen","hallara","hallaras","halláramos","hallarais","hallaran","hallase","hallases","hallásemos","hallaseis","hallasen","hallare","hallares","halláremos","hallareis","hallaren","hallad","hallado","vengo","vienes","viene","venimos","venis","vienen","vine","viniste","vino","vinimos","vinisteis","vinieron","venía","vanías","verníamos","veníais","venían","vendría","vendrías","vendríamos","vendíais","vendrían","vendré","vendrás","vendrá","vendremos","vendréis","vendrán","venga","vengas","vengamos","vengáis","vengan","viniera","vinieras","viniéramos","vinierais","vinieran","viniese","vinieses","viniésemos","vinieseis","viniesen","viniere","vinieres","viniéremos","viniereis","vinieren","ven","venid","venido","abro","abres","abre","abrismos","abrís","abren","abrí","abriste","abrió","abristeis","abrieron","abría","abrías","abríais","abrían","abriría","abrirías","abriríamos","abriríais","abrirían","abriré","abrirás","abrirá","abriremos","abriréis","abrirán","abra","abras","abramos","abráis","abran","abriera","abrieras","abriéramos","abrierais","abrieran","abriese","abrieses","abriésemos","abrieseis","abriesen","abriere","abrieres","abriéremos","abriereis","abrieren","abrid","abierto","voy","vas","va","vamos","vais","van","iba","ibas","íbamos","ibais","iban","iría","irías","iríamos","iríais","irían","iré","irás","irá","iremos","iréis","irán","vaya","vayas","vayamos","vayáis","vayan","ve","id","ido","acabo","acabas","acaba","acabamos","acabáis","acaban","acabé","acabaste","acabó","acabasteis","acabaron","acababa","acababas","acabábamos","acababais","acababan","acabaría","acabarías","acabaríamos","acabaríais","acabarían","acabaré","acabarás","acabará","acabaremos","acabaréis","acabarán","acabe","acabes","acabemos","acabéis","acaben","acabara","acabaras","acabáramos","acabarais","acabaran","acabase","acabases","acabásemos","acabaseis","acabasen","acabare","acabares","acabáremos","acabareis","acabaren","acabad","acabado","llevo","llevas","lleva","llevamos","lleváis","llevan","llevé","llevaste","llevó","llevasteis","llevaron","llevaba","llevabas","llevábamos","llevabais","llevaban","llevaría","llevarías","llevaríamos","llevaríais","llevarían","llevaré","llevarás","llevará","llevaremos","llevaréis","llevarán","lleve","lleves","llevemos","llevéis","lleven","llevara","llevaras","lleváramos","llevarais","llevaran","llevase","llevases","llevásemos","llevaseis","llevasen","llevare","llevares","lleváremos","llevareis","llevaren","llevad","llevado","alcanzo","alcanzas","alcanza","alcanzamos","alcanzáis","alcanzan","alcancé","alcanzaste","alcanzó","alcanzasteis","alcanzaron","alcanzaba","alcanzabas","alcanzábamos","alcanzabais","alcanzaban","alcanzaría","alcanzarías","alcanzaríamos","alcanzaríais","alcanzarían","alcanzaré","alcanzarás","alcanzará","alcanzaremos","alcanzaréis","alcanzarán","alcance","alcances","alcancemos","alcancéis","alcancen","alcanzara","alcanzaras","alcanzáramos","alcanzarais","alcanzaran","alcanzase","alcanzases","alcanzásemos","alcanzaseis","alcanzasen","alcanzare","alcanzares","alcanzáremos","alcanzareis","alcanzaren","alcanzad","alcanzado","digo","dices","dice","decimos","decís","dicen","dije","dijiste","dijo","dijimos","dijisteis","dijeron","decía","decías","decíamos","decíais","decían","diría","dirías","diríamos","diríais","dirían","diré","dirás","dirá","diremos","diréis","dirán","diga","digas","digamos","digáis","digan","dijera","dijeras","dijéramos","dijerais","dijeran","dijese","dijeses","dijésemos","dijeseis","dijesen","dijere","dijeres","dijéremos","dijereis","dijeren","di","decid","dicho","continúo","continúas","continúa","continuamos","continuáis","continúan","continué","continuaste","continuó","continuasteis","continuaron","continuaba","continuabas","continuábamos","continuabais","continuaban","continuaría","continuarías","continuaríamos","continuaríais","continuarían","continuaré","continuarás","continuará","continuaremos","continuaréis","continuarán","continúe","continúes","continuemos","continuéis","continúen","continuara","continuaras","continuáramos","continuarais","continuaran","continuase","continuases","continuásemos","continuaseis","continuasen","continuare","continuares","continuáremos","continuareis","continuaren","continuad","continuado","resulto","resultas","resulta","resultamos","resultáis","resultan","resulté","resultaste","resultó","resultasteis","resultaron","resultaba","resultabas","resultábamos","resultabais","resultaban","resultaría","resultarías","resultaríamos","resultaríais","resultarían","resultaré","resultarás","resultará","resultaremos","resultaréis","resultarán","resulte","resultes","resultemos","resultéis","resulten","resultara","resultaras","resultáramos","resultarais","resultaran","resultase","resultases","resultásemos","resultaseis","resultasen","resultare","resultares","resultáremos","resultareis","resultaren","resultad","resultado","puedo","puedes","puede","podemos","podéis","pueden","pude","pudiste","pudo","pudimos","pudisteis","pudieron","podía","podías","podíamos","podíais","podían","podría","podrías","podríamos","podríais","podrían","podré","podrás","podrá","podremos","podréis","podrán","pueda","puedas","podamos","podáis","puedan","pudiera","pudieras","pudiéramos","pudierais","pudieran","pudiese","pudieses","pudiésemos","pudieseis","pudiesen","pudiere","pudieres","pudiéremos","pudiereis","pudieren","poded","podido","quiero","quieres","quiere","queremos","queréis","quieren","quise","quisiste","quiso","quisimos","quisisteis","quisieron","quería","querías","queríamos","queríais","querían","querría","querrías","querríamos","querríais","querrían","querré","querrás","querrá","querremos","querréis","querrán","quiera","quieras","queramos","queráis","quieran","quisiera","quisieras","quisiéramos","quisierais","quisieran","quisiese","quisieses","quisiésemos","quisieseis","quisiesen","quisiere","quisieres","quisiéremos","quisiereis","quisieren","quered","querido","sabes","sabe","sabemos","sabéis","saben","supe","supiste","supo","supimos","supisteis","supieron","sabía","sabías","sabíamos","sabíais","sabían","sabría","sabrías","sabríamos","sabríais","sabrían","sabré","sabrás","sabrá","sabremos","sabréis","sabrán","sepa","sepas","sepamos","sepáis","sepan","supiera","supieras","supiéramos","supierais","supieran","supiese","supieses","supiésemos","supieseis","supiesen","supiere","supieres","supiéremos","supiereis","supieren","sabed","sabido","suelo","sueles","suele","solemos","soléis","suelen","solí","soliste","solió","solimos","solisteis","solieron","solía","solías","solíamos","solíais","solían","solería","solerías","soleríamos","soleríais","solerían","soleré","solerás","solerá","soleremos","soleréis","solerán","suela","suelas","solamos","soláis","suelan","soliera","solieras","soliéramos","solierais","solieran","soliese","solieses","soliésemos","solieseis","soliesen","soliere","solieres","soliéremos","soliereis","solieren","soled","solido","necesito","necesitas","necesitamos","necesitáis","necesitan","necesité","necesitaste","necesitó","necesitasteis","necesitaron","necesitaba","necesitabas","necesitábamos","necesitabais","necesitaban","necesitaría","necesitarías","necesitaríamos","necesitaríais","necesitarían","necesitaré","necesitarás","necesitará","necesitaremos","necesitaréis","necesitarán","necesite","necesites","necesitemos","necesitéis","necesiten","necesitara","necesitaras","necesitáramos","necesitarais","necesitaran","necesitase","necesitases","necesitásemos","necesitaseis","necesitasen","necesitare","necesitares","necesitáremos","necesitareis","necesitaren","necesita","necesitad","necesitado"],h=["haber","deber","empezar","comenzar","seguir","tener","andar","quedar","hallar","venir","abrir","ir","acabar","llevar","alcanzar","decir","continuar","resultar","poder","querer","saber","soler","necesitar"],v=["estoy","estás","está","estamos","estáis","están","estuve","estuviste","estuvo","estuvimos","estuvisteis","estuvieron","estuba","estabas","estábamos","estabais","estaban","estraría","estarías","estaríamos","estaríais","estarían","estaré","estarás","estará","estaremos","estaréis","estarán","esté","estés","estemos","estéis","estén","estuviera","estuviese","estuvieras","estuviéramos","estuvierais","estuvieran","estuvieses","estuviésemos","estuvieseis","estuviesen","estuviere","estuvieres","estuviéremos","estuviereis","estuvieren","estad","estado"],k=["soy","eres","es","somos","sois","son","fui","fuiste","fuimos","fuisteis","fueron","era","eras","éramos","erais","eran","sería","serías","seríamos","seríais","serían","seré","serás","seremos","seréis","serán","sea","seas","seamos","seáis","sean","fueras","fuéramos","fuerais","fueran","fuese","fueses","fuésemos","fueseis","fuesen","fuere","fueres","fuéremos","fuereis","fueren","sé","sed","sido"],j=["estar"],_=["ser"],x=["a","ante","abajo","adonde","al","allende","alrededor","amén","antes","arriba","aun","bajo","cabe","cabo","con","contigo","contra","de","dejante","del","dentro","desde","donde","durante","en","encima","entre","excepto","fuera","hacia","hasta","incluso","mediante","más","opuesto","par","para","próximo","salvo","según","sin","so","sobre","tras","versus","vía"],q=["cerca"],E=["o","y","entonces","e","u","ni","bien","ora"],A=["igual"],T=["apenas","segun","que"],O=["apunto","apunta","confieso","confiesa","confesaba","revelado","revelo","revela","revelaba","declarado","declaro","declara","declaba","señalo","señala","señalaba","declaraba","comento","comenta"],S=["básicamente","esencialmente","primeramente","siempre","nunca","ahora","quizá","acaso","inclusive","probablemente","verdaderamente","seguramente","jamás","obviamente","indiscutiblement","inmediatamente","previamente"],P=["muy","tan","completamente","suficiente","tal","tales"],M=["hago","haces","hace","hacemos","hacéis","hacen","hice","hiciste","hizo","hicimos","hicisteis","hicieron","hacía","hacías","hacíamos","hacíais","hacían","haría,","harías","haríamos","haríais","harían","haré","harás","hará","haremos","haréis","harán","haga","hagas","hagamos","hagáis","hagan","hiciera","hicieras","hiciéramos","hicierais","hicieran","hiciese","hicieses","hiciésemos","hicieseis","hiciesen","hiciere","hicieres","hiciéremos","hiciereis","hicieren","haz","haced","hecho","parezco","pareces","parece","parecemos","parecéis","parecen","parecí","pareciste","pareció","parecimos","parecisteis","parecieron","parecía","parecías","parecíamos","parecíais","parecían","parecería","parecerías","pareceríamos","pareceríais","parecerían","pareceré","parecerás","parecerá","pareceremos","pareceréis","parecerán","parezca","parezcas","parezcamos","parezcáis","parezcan","pareciera","parecieras","pareciéramos","parecierais","parecieran","pareciese","parecieses","pareciésemos","parecieseis","pareciesen","pareciere","parecieres","pareciéremos","pareciereis","parecieren","pareced","parecido"],C=["hacer","parecer"],R=["enfrente","mejor","peor","menos","claro","bueno","nuevo","nueva","nuevos","nuevas","viejo","viejos","vieja","viejas","anterior","grande","gran","grandes","mayores","fácil","fáciles","rápido","rápida","rápidos","rápidas","lejos","lejas","difícil","difíciles","propio","propios","propia","propias","largo","larga","largos","largas","bajos","baja","bajas","alto","alta","altos","altas","regular","regulares","normal","pequeño","pequeña","pequeños","pequeñas","diminuta","diminuto","diminutas","diminutos","chiquitito","chiquititos","chiquitita","chiquititas","corta","corto","cortas","cortos","principal","principales","mismo","mismos","misma","mismas","capaz","capaces","cierta","cierto","ciertas","ciertos","llamado","llamada","llamados","llamadas","mayormente","reciente","recientes","completa","completo","completas","completos","absoluta","absoluto","absolutas","absolutos","últimamente","posible","común","comúnes","comúnmente","constantemente","continuamente","directamente","fácilmente","casi","ligeramente","estima","estimada","estimado","aproximada","aproximadamente","última","últimas","último","últimos","diferente","diferentes","similar","mal","malo","malos","mala","malas","perfectamente","excelente","final","general"],D=["ah","eh","ejem","ele","achís","adiós","agur","ajá","ajajá","ala","alá","albricias","aleluya","alerta","alirón","aló","amalaya","ar","aro","arrarray","arre","arsa","atatay","aúpa","ax","ay","ayayay","bah","banzai","barajo","bla","bravo","buf","bum","ca","caguendiós","canastos","caracho","caracoles","carajo","caramba","carape","caray","cáscaras","cáspita","cataplum","ce","chao","chau","che","chis","chist","chitón","cho","chucho","chus","cielos","clo","coche","cochi","cojones","concho","coño","córcholis","cuchí","cuidado","cuz","demonio","demontre","despacio","diablo","diantre","dios","ea","epa","equilicuá","estúpido","eureka","evohé","exacto","fantástico","firmes","fo","forte","gua","gualá","guarte","guay","hala","hale","he","hi","hin","hola","hopo","huesque","huiche","huichó","huifa","hurra","huy","ja","jajajá","jajay","jaque","jau","jo","jobar","joder","jolín","jopo","leñe","listo","malhayas","mamola","mecachis","miéchica","mondo","moste","mutis","nanay","narices","oh","ojalá","ojo","okay","ole","olé","órdiga","oste","ostras","ox","oxte","paf","pardiez","paso","pucha","puf","puff","pumba","puñeta","quia","quiúbole","recórcholis","rediez","rediós","salve","sanseacabó","sniff","socorro","ta","tararira","tate","tururú","uf","uh","ui","upa","uste","uy","victoria","vítor","viva","za","zambomba","zapateta","zape","zas"],F=["kg","mg","gr","g","km","m","l","ml","cl"],B=["minuto","minutos","hora","horas","día","días","semana","semanas","mes","meses","año","años","hoy","mañana","ayer"],$=["cosa","cosas","manera","maneras","caso","casos","pieza","piezas","vez","veces","parte","partes","porcentaje","instancia","aspecto","aspectos","punto","puntos","objeto","objectos","persona","personas"],L=["no","euros"],I=["sra","sras","srta","sr","sres","dra","dr","profa","prof"],W=["jr","sr"]},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(){return{filteredAtBeginning:R,filteredAtEnding:[].concat(r,O,h,k,_,C,D),filteredAtBeginningAndEnding:[].concat(n,x,q,c,P,p,u),filteredAnywhere:[].concat(i,s,d,l,F,o,b,v,j,T,M,z,E,A,g,m,f,w,I,y,B,$,L),cannotDirectlyPrecedePassiveParticiple:[].concat(n,x,d,u,z,o,r,M,C,T,g,m,l,f),cannotBeBetweenPassiveAuxiliaryAndParticiple:[].concat(v,k),all:[].concat(n,o,r,c,u,s,d,l,p,z,m,f,g,y,w,b,h,v,k,j,_,x,q,E,A,T,O,i,S,P,M,C,F,R,D,B,L,I,$,W)}};var i=(0,function(a){return a&&a.__esModule?a:{default:a}}(t(809)).default)().singleWords,n=["il","i","la","le","lo","gli","un","uno","una"],o=["due","tre","quattro","cinque","sette","otto","nove","dieci","undici","dodici","tredici","quattordici","quindici","sedici","diciassette","diciotto","diciannove","venti","cento","mille","mila","duemila","tremila","quattromila","cinquemila","seimila","settemila","ottomila","novemila","diecimila","milione","milioni","miliardo","miliardi"],r=["prima","primi","prime","secondo","seconda","secondi","seconde","terzo","terza","terzi","terze","quarto","quarta","quarti","quarte","quinto","quinta","quinti","quinte","sesto","sesta","sesti","seste","settimo","settima","settimi","settime","ottavo","ottava","ottavi","ottave","nono","nona","noni","none","decimo","decima","decimi","decime","undicesimo","undicesima","undicesimi","undicesime","dodicesimo","dodicesima","dodicesimi","dodicesime","tredicesimo","tredicesima","tredicesimi","tredicesime","quattordicesimo","quattordicesima","quattordicesimi","quattordicesime","quindicesimo","quindicesima","quindicesimi","quindicesime","sedicesimo","sedicesima","sedicesimi","sedicesime","diciassettesimo","diciassettesima","diciassettesimi","diciassettesime","diciannovesimo","diciannovesima","diciannovesimi","diciannovesime","ventesimo","ventesima","ventesimi","ventesime"],s=["io","tu","egli","esso","lui","ella","essa","lei","noi","voi","essi","esse","loro"],d=["mi","ti","si","ci","vi","li","me","te","se","glie","glielo","gliela","glieli","gliele","gliene","ce","ve"],l=["sé"],c=["ciò","codesto","codesta","codesti","codeste","colei","colui","coloro","costei","costui","costoro","medesimo","medesima","medesimi","medesime","questo","questa","questi","queste","quello","quella","quelli","quelle","quel","quei","quegli"],u=["mio","mia","miei","mie","tuo","tua","tuoi","tue","suo","sua","suoi","sue","nostro","nostra","nostri","nostre","vostro","vostra","vostri","vostre"],p=["affatto","alcun","alcuna","alcune","alcuni","alcuno","bastantemente","grandemente","massimamente","meno","minimamente","molta","molte","molti","moltissimo","molto","nessun","nessuna","nessuno","niente","nulla","ogni","più","po'","poca","poche","pochi","poco","pochissime","pochissimi","qualche","qualsiasi","qualunque","quintali","rara","rarissima","rarissimo","raro","spesso","spessissimo","sufficientemente","taluno","taluna","taluni","talune","tanta","tante","tanti","tantissime","tantissimi","tanto","tonnellate","troppa","troppe","troppi","troppo","tutta","tutte","tutti","tutto"],z=["alcunché","alcunchè","altro","altra","altri","altre","certa","certi","certe","checché","checchè","chicchessia","chiunque","ciascuno","ciascuna","ciascun","diverso","diversa","diversi","diverse","parecchio","parecchia","parecchi","parecchie","qualcosa","qualcuno","qualcuna","vario","varia","vari","varie"],g=["che","cosa","cui","qual","quale","quali"],m=["chi","quanta","quante","quanti","quanto"],f=["com'è","com'era","com'erano","donde","d'onde","dove","dov'è","dov'era","dov'erano","dovunque"],y=["ne"],w=["accanto","altrove","attorno","dappertutto","giù","là","laggiù","lassù","lì","ovunque","qua","quaggiù","quassù","qui"],b=["vengano","vengo","vengono","veniamo","veniate","venimmo","venisse","venissero","venissi","venissimo","veniste","venisti","venite","veniva","venivamo","venivano","venivate","venivi","venivo","venne","vennero","venni","verrà","verrai","verranno","verrebbe","verrebbero","verrei","verremmo","verremo","verreste","verresti","verrete","verrò","viene","vieni"],h=["venire","venir"],v=["abbi","abbia","abbiamo","abbiano","abbiate","abbiente","avemmo","avendo","avente","avesse","avessero","avessi","avessimo","aveste","avesti","avete","aveva","avevamo","avevano","avevate","avevi","avevo","avrà","avrai","avranno","avrebbe","avrebbero","avrei","avremmo","avremo","avreste","avresti","avrete","avrò","avuto","ebbe","ebbero","ebbi","ha","hai","hanno","ho","l'abbi","l'abbia","l'abbiamo","l'abbiano","l'abbiate","l'abbiente","l'avemmo","l'avendo","l'avente","l'avesse","l'avessero","l'avessi","l'avessimo","l'aveste","l'avesti","l'avete","l'aveva","l'avevamo","l'avevano","l'avevate","l'avevi","l'avevo","l'avrà","l'avrai","l'avranno","l'avrebbe","l'avrebbero","l'avrei","l'avremmo","l'avremo","l'avreste","l'avresti","l'avrete","l'avrò","l'avuto","l'ebbe","l'ebbero","l'ebbi","l'ha","l'hai","l'hanno","l'ho","possa","possano","possiamo","possiate","posso","possono","poté","potei","potemmo","potendo","potente","poterono","potesse","potessero","potessi","potessimo","poteste","potesti","potete","potette","potettero","potetti","poteva","potevamo","potevano","potevate","potevi","potevo","potrà","potrai","potranno","potrebbe","potrebbero","potrei","potremmo","potremo","potreste","potresti","potrete","potrò","potuto","può","puoi","voglia","vogliamo","vogliano","vogliate","voglio","vogliono","volemmo","volendo","volente","volesse","volessero","volessi","volessimo","voleste","volesti","volete","voleva","volevamo","volevano","volevate","volevi","volevo","volle","vollero","volli","voluto","vorrà","vorrai","vorranno","vorrebbe","vorrebbero","vorrei","vorremmo","vorremo","vorreste","vorresti","vorrete","vorrò","vuoi","vuole","debba","debbano","debbono","deva","deve","devi","devo","devono","dobbiamo","dobbiate","dové","dovei","dovemmo","dovendo","doverono","dovesse","dovessero","dovessi","dovessimo","doveste","dovesti","dovete","dovette","dovettero","dovetti","doveva","dovevamo","dovevano","dovevate","dovevi","dovevo","dovrà","dovrai","dovranno","dovrebbe","dovrebbero","dovrei","dovremmo","dovremo","dovreste","dovresti","dovrete","dovrò","dovuto","sa","sai","sanno","sapemmo","sapendo","sapesse","sapessero","sapessi","sapessimo","sapeste","sapesti","sapete","sapeva","sapevamo","sapevano","sapevate","sapevi","sapevo","sappi","sappia","sappiamo","sappiano","sappiate","saprà","saprai","sapranno","saprebbe","saprebbero","saprei","sapremmo","sapremo","sapreste","sapresti","saprete","saprò","saputo","seppe","seppero","seppi","so","soglia","sogliamo","sogliano","sogliate","soglio","sogliono","solesse","solessero","solessi","solessimo","soleste","solete","soleva","solevamo","solevano","solevate","solevi","solevo","suoli","sta","stai","stando","stanno","stante","starà","starai","staranno","staremo","starete","starò","stava","stavamo","stavano","stavate","stavi","stavo","stemmo","stessero","stessimo","steste","stesti","stette","stettero","stetti","stia","stiamo","stiano","stiate","sto"],k=["avere","l'avere","aver","l'aver","potere","poter","volere","voler","dovere","dover","sapere","saper","solere","stare","star"],j=["è","e'","era","erano","eravamo","eravate","eri","ero","essendo","essente","fosse","fossero","fossi","fossimo","foste","fosti","fu","fui","fummo","furono","sarà","sarai","saranno","sarebbe","sarebbero","sarei","saremmo","saremo","sareste","saresti","sarete","sarò","sei","sia","siamo","siano","siate","siete","sii","sono","stata","state","stati","stato"],_=["essere","esser"],x=["di","del","dello","della","dei","degli","delle","a","ad","al","allo","alla","ai","agli","alle","da","dal","dallo","dalla","dai","dagli","dalle","in","nel","nello","nella","nei","negli","nelle","con","col","collo","colla","coi","cogli","colle","su","sul","sullo","sulla","sui","sugli","sulle","per","pel","pello","pella","pei","pegli","tra","fra","attraverso","circa","contro","davanti","dentro","dietro","entro","escluso","fuori","insieme","intorno","lontano","lungo","mediante","oltre","presso","rasente","riguardo","senza","sopra","sotto","tramite","vicino"],q=["e","ed","o","oppure"],E=["tale","l'uno","l'altro","tali","dall'altra"],A=["anziché","anzichè","fuorché","fuorchè","giacché","giacchè","laddove","modo","ove","qualora","quantunque","volta"],T=["dice","dicono","diceva","dicevano","disse","dissero","detto","domanda","domandano","domandava","domandavano","domandò","domandarono","domandato","afferma","affermato","aggiunge","aggiunto","ammette","ammesso","annuncia","annunciato","assicura","assicurato","chiede","chiesto","commentato","conclude","concluso","continua","continuato","denuncia","denunciato","dichiara","dichiarato","esordisce","esordito","inizia","iniziato","precisato","prosegue","proseguito","racconta","raccontato","recita","recitato","replica","replicato","risponde","risposto","rimarca","rimarcato","rivela","rivelato","scandisce","scandito","scrive","scritto","segnala","segnalato","sottolinea","sottolineato","spiega","spiegato"],O=["affermare","aggiungere","ammettere","annunciare","assicurare","chiedere","commentare","concludere","continuare","denunciare","dichiarare","esordire","iniziare","precisare","proseguire","raccontare","recitare","replicare","rispondere","rimarcare","rivelare","scandire","scrivere","segnalare","sottolineare","spiegare"],S=["eventualmente","forse","mai","probabilmente"],P=["addirittura","assolutamente","ben","estremamente","mica","nemmeno","quasi"],M=["fa","fa'","faccia","facciamo","facciano","facciate","faccio","facemmo","facendo","facente","facesse","facessero","facessi","facessimo","faceste","facesti","faceva","facevamo","facevano","facevate","facevi","facevo","fai","fanno","farà","farai","faranno","farebbe","farebbero","farei","faremmo","faremo","fareste","faresti","farete","farò","fate","fatto","fece","fecero","feci","fo"],C=["fare"],R=["anteriore","anteriori","precedente","precedenti","facile","facili","facilissimo","facilissima","facilissimi","facilissime","semplice","semplici","semplicissima","semplicissimo","semplicissimi","semplicissime","semplicemente","rapido","rapida","rapidi","rapide","veloce","veloci","differente","difficile","difficili","difficilissimo","difficilissima","difficilissimi","difficilissime","basso","bassa","bassi","basse","alto","alta","alti","alte","normale","normali","normalmente","corto","corta","corti","corte","breve","brevi","recente","recenti","totale","totali","completo","completa","completi","complete","possibile","possibili","ultimo","ultima","ultimi","ultime","differenti","simile","simili","prossimo","prossima","prossimi","prossime","giusto","giusta","giusti","giuste","giustamente","cosiddetto","bene","meglio","benissimo","male","peggio","malissimo","comunemente","constantemente","direttamente","esattamente","facilmente","generalmente","leggermente","personalmente","recentemente","sinceramente","solamente","avanti","indietro"],D=["nuovo","nuova","nuovi","nuove","vecchio","vecchia","vecchi","vecchie","bello","bella","belli","belle","bellissimo","bellissima","bellissimi","bellissime","buono","buona","buoni","buone","buonissimo","buonissima","buonissimi","buonissime","grande","grandi","grandissimo","grandissima","grandissimi","grandissime","lunga","lunghi","lunghe","piccolo","piccola","piccoli","piccole","piccolissimo","piccolissima","piccolissimi","piccolissime","proprio","propria","propri","proprie","solito","solita","soliti","solite","stesso","stessa","stessi","stesse"],F=["accidenti","acciderba","ah","aah","ahi","ahia","ahimé","bah","beh","boh","ca","caspita","chissà","de'","diamine","ecco","eh","ehi","eeh","ehilà","ehm","gna","ih","magari","macché","macchè","mah","mhm","nca","neh","oibò","oh","ohe","ohé","ohilá","ohibò","ohimé","okay","ok","olà","poh","pota","puah","sorbole","to'","toh","ts","uff","uffa","uh","uhi"],B=["cc","g","hg","hl","kg","l","prs","pz","q.b.","qb","ta","tz"],$=["minuto","minuti","ora","ore","giorno","giorni","giornata","giornate","settimana","settimane","mese","mesi","anno","anni","oggi","domani","ieri","stamattina","stanotte","stasera","tardi"],L=["aspetto","aspetti","caso","casi","cose","idea","idee","istanza","maniera","oggetto","oggetti","parte","parti","persona","persone","pezzo","pezzi","punto","punti","sorta","sorte","tema","temi","volte"],I=["sì","no","non","€","euro","euros","ecc","eccetera"],W=["sig.na","sig.ra","sig","sigg","dr","dr.ssa","dott","dott.ssa","prof","prof.ssa","gent","gent.mo","gent.mi","gent.ma","gent.me","egr","egr.i","egr.ia","egr.ie","preg.mo","preg.mo","preg.ma","preg.me","ill","ill.mo","ill.mi","ill.ma","ill.me","cav","on","spett"]},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(){return{filteredAtEnding:[].concat(r,v,M,j,T,R),filteredAtBeginning:C,filteredAtBeginningAndEnding:[].concat(n,_,x,c,S,p,u),filteredAnywhere:[].concat(i,s,l,d,z,D,o,k,A,h,P,g,q,E,y,m,b,L,w,F,B,$),cannotDirectlyPrecedePassiveParticiple:[].concat(n,_,d,l,u,z,g,f,y,o,r,P,A,M),cannotBeBetweenPassiveAuxiliaryAndParticiple:[].concat(h,v),all:[].concat(n,o,r,c,u,z,s,l,m,p,g,f,w,b,h,v,y,k,j,_,x,q,E,A,T,i,O,S,P,M,D,C,R,F,$,L,B,I,W,d)}};var i=(0,function(a){return a&&a.__esModule?a:{default:a}}(t(810)).default)().singleWords,n=["le","la","les","un","une","des","aux","du","au","d'un","d'une","l'un","l'une"],o=["deux","trois","quatre","cinq","six","sept","huit","neuf","dix","onze","douze","treize","quatorze","quinze","seize","dix-sept","dix-huit","dix-neuf","vingt","trente","quarante","cinquante","soixante","soixante-dix","quatre-vingt","quatre-vingt-dix","septante","huitante","octante","nonante","cent","mille","million","milliard"],r=["second","secondes","deuxième","deuxièmes","troisième","troisièmes","quatrième","quatrièmes","cinquième","cinquièmes","sixième","sixièmes","septième","septièmes","huitième","huitièmes","neuvième","neuvièmes","dixième","dixièmes","onzième","onzièmes","douzième","douzièmes","treizième","treizièmes","quatorzième","quatorzièmes","quinzième","quinzièmes","seizième","seizièmes","dix-septième","dix-septièmes","dix-huitième","dix-huitièmes","dix-neuvième","dix-neuvièmes","vingtième","vingtièmes"],s=["je","tu","il","elle","on","nous","vous","ils","elles","qu'il","qu'elle","qu'ils","qu'elles","qu'on","d'elle","d'elles"],d=["moi","toi","lui","soi","eux","d'eux","qu'eux"],l=["me","te"],c=["celui","celle","ceux","celles","ce","celui-ci","celui-là","celle-ci","celle-là","ceux-ci","ceux-là","celles-ci","celles-là","ceci","cela","ça","cette","cet","ces"],u=["mon","ton","son","ma","ta","sa","mes","tes","ses","notre","votre","leur","nos","vos","leurs"],p=["beaucoup","peu","quelque","quelques","tous","tout","toute","toutes","plusieurs","plein","chaque","suffisant","suffisante","suffisantes","suffisants","faible","moins","tant","plus","divers","diverse","diverses"],z=["se"],g=["aucun","aucune","autre","autres","d'autres","certain","certaine","certaines","certains","chacun","chacune","même","mêmes","quelqu'un","quelqu'une","quelques'uns","quelques'unes","autrui","nul","personne","quiconque","rien","d'aucunes","d'aucuns","nuls","nules","l'autre","tel","telle","tels","telles"],m=["qui","que","lequel","laquelle","auquel","auxquels","auxquelles","duquel","desquels","desquelles","dont","où","quoi"],f=["combien","comment","pourquoi","d'où"],y=["quel","quels","quelle"],w=["y","n'y"],b=["là","ici","d'ici","voici"],h=["a","a-t-elle","a-t-il","a-t-on","ai","ai-je","aie","as","as-tu","aura","aurai","auraient","aurais","aurait","auras","aurez","auriez","aurons","auront","avaient","avais","avait","avez","avez-vous","aviez","avions","avons","avons-nous","ayez","ayons","eu","eûmes","eurent","eus","eut","eûtes","j'ai","j'aurai","j'avais","j'eus","ont","ont-elles","ont-ils","vais","vas","va","allons","allez","vont","vais-je","vas-tu","va-t-il","va-t-elle","va-t-on","allons-nous","allez-vous","vont-elles","vont-ils","allé","allés","j'allai","allai","allas","alla","allâmes","allâtes","allèrent","j'allais","allais","allait","allions","alliez","allaient","j'irai","iras","ira","irons","irez","iront","j'aille","aille","ailles","aillent","j'allasse","allasse","allasses","allât","allassions","allassiez","allassent","j'irais","irais","irait","irions","iriez","iraient","allant","viens","vient","venons","venez","viennent","viens-je","viens-de","vient-il","vient-elle","vient-on","venons-nous","venez-vous","viennent-elles","viennent-ils","vins","vint","vînmes","vîntes","vinrent","venu","venus","venais","venait","venions","veniez","venaient","viendrai","viendras","viendra","viendrons","viendrez","viendront","vienne","viennes","vinsse","vinsses","vînt","vinssions","vinssiez","vinssent","viendrais","viendrait","viendrions","viendriez","viendraient","venant","dois","doit","devons","devez","doivent","dois-je","dois-tu","doit-il","doit-elle","doit-on","devons-nous","devez-vous","doivent-elles","doivent-ils","dus","dut","dûmes","dûtes","durent","dû","devais","devait","devions","deviez","devaient","devrai","devras","devra","devrons","devrez","devront","doive","doives","dusse","dusses","dût","dussions","dussiez","dussent","devrais","devrait","devrions","devriez","devraient","peux","peut","pouvons","pouvez","peuvent","peux-je","peux-tu","peut-il","peut-elle","peut-on","pouvons-nous","pouvez-vous","peuvent-ils","peuvent-elles","pus","put","pûmes","pûtes","purent","pu","pouvais","pouvait","pouvions","pouviez","pouvaient","pourrai","pourras","pourra","pourrons","pourrez","pourront","puisse","puisses","puissions","puissiez","puissent","pusse","pusses","pût","pussions","pussiez","pussent","pourrais","pourrait","pourrions","pourriez","pourraient","pouvant","semble","sembles","semblons","semblez","semblent","semble-je","sembles-il","sembles-elle","sembles-on","semblons-nous","semblez-vous","semblent-ils","semblent-elles","semblai","semblas","sembla","semblâmes","semblâtes","semblèrent","semblais","semblait","semblions","sembliez","semblaient","semblerai","sembleras","semblera","semblerons","semblerez","sembleront","semblé","semblasse","semblasses","semblât","semblassions","semblassiez","semblassent","semblerais","semblerait","semblerions","sembleriez","sembleraient","parais","paraît","ait","paraissons","paraissez","paraissent","parais-je","parais-tu","paraît-il","paraît-elle","paraît-on","ait-il","ait-elle","ait-on","paraissons-nous","paraissez-vous","paraissent-ils","paraissent-elles","parus","parut","parûmes","parûtes","parurent","paraissais","paraissait","paraissions","paraissiez","paraissaient","paraîtrai","paraîtras","paraîtra","paraîtrons","paraîtrez","paraîtront","paru","paraisse","paraisses","parusse","parusses","parût","parussions","parussiez","parussent","paraîtrais","paraîtrait","paraîtrions","paraîtriez","paraîtraient","paraitrais","paraitrait","paraitrions","paraitriez","paraitraient","paraissant","mets","met","mettons","mettez","mettent","mets-je","mets-tu","met-il","met-elle","met-on","mettons-nous","mettez-vous","mettent-ils","mettent-elles","mis","mit","mîmes","mîtes","mirent","mettais","mettait","mettions","mettiez","mettaient","mettrai","mettras","mettra","mettrons","mettrez","mettront","mette","mettes","misse","misses","mît","missions","missiez","missent","mettrais","mettrait","mettrions","mettriez","mettraient","mettant","finis","finit","finissons","finissez","finissent","finis-je","finis-tu","finit-il","finit-elle","finit-on","finissons-nous","finissez-vous","finissent-ils","finissent-elles","finîmes","finîtes","finirent","finissais","finissait","finissions","finissiez","finissaient","finirai","finiras","finira","finirons","finirez","finiront","fini","finisse","finisses","finît","finirais","finirait","finirions","finiriez","finiraient","finissant","n'a","n'ai","n'aie","n'as","n'aura","n'aurai","n'auraient","n'aurais","n'aurait","n'auras","n'aurez","n'auriez","n'aurons","n'auront","n'avaient","n'avais","n'avait","n'avez","n'avez-vous","n'aviez","n'avions","n'avons","n'avons-nous","n'ayez","n'ayons","n'ont","n'ont-elles","n'ont-ils","n'allons","n'allez","n'allais","n'allait","n'allions","n'alliez","n'allaient","n'iras","n'ira","n'irons","n'irez","n'iront","qu'a"],v=["avoir","aller","venir","devoir","pouvoir","sembler","paraître","paraitre","mettre","finir","d'avoir","d'aller","n'avoir","l'avoir"],k=["suis","es","est","est-ce","n'est","sommes","êtes","sont","suis-je","es-tu","est-il","est-elle","est-on","sommes-nous","êtes-vous","sont-ils","sont-elles","étais","était","étions","étiez","étaient","serai","seras","sera","serons","serez","seront","serais","serait","serions","seriez","seraient","sois","soit","soyons","soyez","soient","été","n'es","n'est-ce","n'êtes","n'était","n'étais","n'étions","n'étiez","n'étaient","qu'est"],j=["être","d'être"],_=["à","après","d'après","au-delà","au-dessous","au-dessus","avant","avec","concernant","chez","contre","dans","de","depuis","derrière","dès","devant","durant","en","entre","envers","environ","hormis","hors","jusque","jusqu'à","jusqu'au","jusqu'aux","loin","moyennant","outre","par","parmi","pendant","pour","près","quant","sans","sous","sur","travers","vers","voilà"],x=["et","ni","or","ou"],q=["non","pas","seulement","sitôt","aussitôt","d'autre"],E=["afin","autant","comme","d'autant","d'ici","quand","lors","parce","si","tandis"],A=["dit","disent","dit-il","dit-elle","disent-ils","disent-elles","disait","disait-il","disait-elle","disaient-ils","disaient-elles","dirent","demande","demandent","demande-t-il","demande-t-elle","demandent-ils","demandent-elles","demandait","demandaient","demandait-il","demandait-elle","demandaient-ils","demandaient-elles","demanda","demanda-t-il","demanda-t-elle","demandé","pense","pensent","pense-t-il","pense-t-elle","pensent-ils","pensent-elles","pensait","pensaient","pensait-il","pensait-elle","pensaient-ils","pensaient-elles","pensa","pensa-t-il","pensa-t-elle","pensé","affirme","affirme-t-il","affirme-t-elle","affirmé","avoue","avoue-t-il","avoue-t-elle","avoué","concède","concède-t-il","concède-t-elle","concédé","confie","confie-t-il","confie-t-elle","confié","continue","continue-t-il","continue-t-elle","continué","déclame","déclame-t-il","déclame-t-elle","déclamé","déclare","déclare-t-il","déclare-t-elle","déclaré","déplore","déplore-t-il","déplore-t-elle","déploré","explique","explique-t-il","explique-t-elle","expliqué","lance","lance-t-il","lance-t-elle","lancé","narre","narre-t-il","narre-t-elle","narré","raconte","raconte-t-il","raconte-t-elle","raconté","rappelle","rappelle-t-il","rappelle-t-elle","rappelé","réagit","réagit-il","réagit-elle","réagi","répond","répond-il","répond-elle","répondu","rétorque","rétorque-t-il","rétorque-t-elle","rétorqué","souligne","souligne-t-il","souligne-t-elle","souligné","affirme-t-il","affirme-t-elle","ajoute-t-il","ajoute-t-elle","analyse-t-il","analyse-t-elle","avance-t-il","avance-t-elle","écrit-il","écrit-elle","indique-t-il","indique-t-elle","poursuit-il","poursuit-elle","précise-t-il","précise-t-elle","résume-t-il","résume-t-elle","souvient-il","souvient-elle","témoigne-t-il","témoigne-t-elle"],T=["dire","penser","demander","concéder","continuer","confier","déclamer","déclarer","déplorer","expliquer","lancer","narrer","raconter","rappeler","réagir","répondre","rétorquer","souligner","affirmer","ajouter","analyser","avancer","écrire","indiquer","poursuivre","préciser","résumer","témoigner"],O=["encore","éternellement","immédiatement","compris","comprenant","inclus","naturellement","particulièrement","notablement","actuellement","maintenant","ordinairement","généralement","habituellement","d'habitude","vraiment","finalement","uniquement","peut-être","initialement","déjà","c.-à-d","souvent","fréquemment","régulièrement","simplement","éventuellement","quelquefois","parfois","probable","plausible","jamais","toujours","incidemment","accidentellement","récemment","dernièrement","relativement","clairement","évidemment","apparemment","pourvu"],S=["assez","trop","tellement","presque","très","absolument","extrêmement","quasi","quasiment","fort"],P=["fais","fait","faisons","faites","font","fais-je","fait-il","fait-elle","fait-on","faisons-nous","faites-vous","font-ils","font-elles","fis","fit","fîmes","fîtes","firent","faisais","faisait","faisions","faisiez","faisaient","ferai","feras","fera","ferons","ferez","feront","veux","veut","voulons","voulez","veulent","voulus","voulut","voulûmes","voulûtes","voulurent","voulais","voulait","voulions","vouliez","voulaient","voudrai","voudras","voudra","voudrons","voudrez","voudront","voulu","veux-je","veux-tu","veut-il","veut-elle","veut-on","voulons-nous","voulez-vous","veulent-ils","veulent-elles","voudrais","voudrait","voudrions","voudriez","voudraient","voulant"],M=["faire","vouloir"],C=["antérieur","antérieures","antérieurs","antérieure","précédent","précédents","précédente","précédentes","facile","faciles","simple","simples","vite","vites","vitesse","vitesses","difficile","difficiles","propre","propres","long","longe","longs","longes","longue","longues","bas","basse","basses","ordinaire","ordinaires","bref","brefs","brève","brèves","sûr","sûrs","sûre","sûres","sure","sures","surs","habituel","habituels","habituelle","habituelles","soi-disant","surtout","récent","récents","récente","récentes","total","totaux","totale","totales","complet","complets","complète","complètes","possible","possibles","communément","constamment","facilement","continuellement","directement","légèrement","dernier","derniers","dernière","dernières","différent","différents","différente","différentes","similaire","similaires","pareil","pareils","pareille","pareilles","largement","mal","super","bien","pire","pires","suivants","suivante","suivantes","prochain","prochaine","prochains","prochaines","proche","proches","fur"],R=["nouveau","nouvel","nouvelle","nouveaux","nouvelles","vieux","vieil","vieille","vieilles","beau","bel","belle","belles","bon","bons","bonne","bonnes","grand","grande","grands","grandes","haut","hauts","haute","hautes","petit","petite","petits","petites","meilleur","meilleurs","meilleure","meilleures","joli","jolis","jolie","jolies","gros","grosse","grosses","mauvais","mauvaise","mauvaises","dernier","derniers","dernière","dernières"],D=["ah","ha","oh","ho","bis","plouf","vlan","ciel","pouf","paf","crac","hurrah","allo","stop","bravo","ô","eh","hé","aïe","oef","ahi","fi","zest","hem","holà","chut"],F=["mg","g","kg","ml","dl","cl","l","grammes","gram","once","onces","oz","lbs","càc","cc","càd","càs","càt","cd","cs","ct"],B=["minute","minutes","heure","heures","journée","journées","semaine","semaines","mois","année","années","aujourd'hui","demain","hier","après-demain","avant-hier"],$=["chose","choses","façon","façons","pièce","pièces","truc","trucs","fois","cas","aspect","aspects","objet","objets","idée","idées","thème","thèmes","sujet","sujets","personnes","manière","manières","sorte","sortes"],L=["ne","oui","d'accord","amen","euro","euros","etc"],I=["mme","mmes","mlle","mlles","mm","dr","pr"],W=["jr","sr"]},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(){return{filteredAtEnding:[].concat(o,D,F,M,q,x),filteredAtBeginningAndEnding:[].concat(E,T,h,v,R,z,g,m),filteredAnywhere:[].concat(i,S,n,r,s,d,l,c,u,p,f,y,w,b,k,A,O,P,C,B,$,L,I,W,U,j),cannotDirectlyPrecedePassiveParticiple:[].concat(E,u,z,n,o,P,M,C,w,f,y),cannotBeBetweenPassiveAuxiliaryAndParticiple:[].concat(j,q,g),all:[].concat(i,S,n,r,s,d,l,c,u,p,f,y,w,b,k,j,A,O,P,C,B,$,L,I,W,U,_,E,T,h,v,R,z,g,m,o,D,F,M,q,x)}};var i=(0,function(a){return a&&a.__esModule?a:{default:a}}(t(813)).default)().singleWords,n=["czterech","czterem","czterema","czternaście","czternastce","czternastek","czternastka","czternastką","czternastkach","czternastkami","czternastkę","czternastki","czternastko","czternastkom","czternastoma","czternastu","cztery","czwórce","czwórek","czwórka","czwórką","czwórkach","czwórkami","czwórkę","czwórki","czwórko","czwórkom","czworo","dwa","dwadzieścia","dwanaście","dwie","dwiema","dwóch","dwójce","dwoje","dwójek","dwójka","dwójką","dwójkach","dwójkami","dwójki","dwójko","dwójkom","dwóm","dwoma","dwudziestce","dwudziestek","dwudziestka","dwudziestką","dwudziestkach","dwudziestkami","dwudziestkę","dwudziestki","dwudziestkom","dwudziestoma","dwudziestu","dwunastce","dwunastek","dwunastka","dwunastką","dwunastkach","dwunastkami","dwunastkę","dwunastki","dwunastko","dwunastkom","dwunastoma","dwunastu","dziesiątce","dziesiątek","dziesiątka","dziesiątką","dziesiątkach","dziesiątkami","dziesiątkę","dziesiątki","dziesiątko","dziesiątkom","dziesięć","dziesięcioma","dziesięciu","dziewiątce","dziewiątek","dziewiątka","dziewiątką","dziewiątkach","dziewiątkami","dziewiątkę","dziewiątki","dziewiątko","dziewiątkom","dziewięć","dziewięcioma","dziewięciorga","dziewięciorgiem","dziewięciorgu","dziewięcioro","dziewięciu","dziewiętnaście","dziewiętnastce","dziewiętnastek","dziewiętnastka","dziewiętnastką","dziewiętnastkach","dziewiętnastkami","dziewiętnastkę","dziewiętnastki","dziewiętnastkom","dziewiętnastoma","dziewiętnastu","jeden","jedenaście","jedenastce","jedenastek","jedenastka","jedenastką","jedenastkach","jedenastkami","jedenastkę","jedenastki","jedenastko","jedenastkom","jedenastoma","jedenastu","jedna","jedną","jednego","jednej","jednemu","jedno","jednym","jedynce","jedynek","jedynka","jedynką","jedynkach","jedynkami","jedynkę","jedynki","jedynko","jedynkom","miliard","miliarda","miliardach","miliardami","miliardem","miliardom","miliardów","miliardowi","miliardy","miliardzie","milion","miliona","milionach","milionami","milionem","milionie","milionom","milionów","milionowi","miliony","ósemce","ósemek","ósemka","ósemką","ósemkach","ósemkami","ósemkę","ósemki","ósemko","ósemkom","osiem","osiemnaście","osiemnastce","osiemnastek","osiemnastka","osiemnastką","osiemnastkach","osiemnastkam","osiemnastkę","osiemnastki","osiemnastko","osiemnastkom","osiemnastoma","osiemnastu","ośmioma","ośmiorga","ośmiorgiem","ośmiorgu","ośmioro","ośmiu","piątce","piątek","piątka","piątką","piątkach","piątkami","piątkę","piątki","piątko","piątkom","pięć","pięcioma","pięciorga","pięciorgiem","pięciorgu","pięcioro","pięciu","piętnaście","piętnastce","piętnastek","piętnastka","piętnastką","piętnastkach","piętnastkami","piętnastkę","piętnastki","piętnastko","piętnastkom","piętnastoma","piętnastu","raz","setce","setek","setka","setkach","setkami","setkę","setki","setkom","siedem","siedemnaście","siedemnastce","siedemnastek","siedemnastka","siedemnastką","siedemnastkach","siedemnastkami","siedemnastkę","siedemnastki","siedemnastko","siedemnastkom","siedemnastoma","siedemnastu","siedmioma","siedmiorga","siedmiorgiem","siedmiorgu","siedmioro","siedmiu","siódemce","siódemek","siódemka","siódemką","siódemkach","siódemkami","siódemkę","siódemki","siódemko","siódemkom","sto","stoma","stu","sześć","sześcioma","sześciorga","sześciorgiem","sześciorgu","sześcioro","sześciu","szesnaście","szesnastce","szesnastek","szesnastka","szesnastką","szesnastkach","szesnastkami","szesnastkę","szesnastki","szesnastko","szesnastkom","szesnastoma","szesnastu","szóstce","szóstek","szóstka","szóstką","szóstkach","szóstkami","szóstkę","szóstki","szóstko","szóstkom","trójce","troje","trójek","trójka","trójką","trójkach","trójkami","trójki","trójko","trójkom","trzech","trzem","trzema","trzy","trzynaście","trzynastce","trzynastek","trzynastka","trzynastką","trzynastkach","trzynastkami","trzynastkę","trzynastki","trzynastko","trzynastkom","trzynastoma","trzynastu","tysiąc","tysiąca","tysiącach","tysiącami","tysiące","tysiącem","tysiącom","tysiącowi","tysiącu","tysięcy"],o=["czternaści","czternasta","czternastą","czternaste","czternastego","czternastej","czternastemu","czternasty","czternastych","czternastym","czternastymi","czwarci","czwarta","czwartą","czwarte","czwartego","czwartej","czwartemu","czwarty","czwartych","czwartym","czwartymi","drudzy","druga","drugą","drugi","drugich","drugie","drugiego","drugiej","drugiemu","drugim","drugimi","dwudzieści","dwudziesta","dwudziestą","dwudzieste","dwudziestego","dwudziestej","dwudziestemu","dwudziesty","dwudziestych","dwudziestym","dwudziestymi","dwunaści","dwunasta","dwunastą","dwunaste","dwunastego","dwunastej","dwunastemu","dwunasty","dwunastych","dwunastym","dwunastymi","dziesiąci","dziesiąta","dziesiątą","dziesiąte","dziesiątego","dziesiątej","dziesiątemu","dziesiąty","dziesiątych","dziesiątym","dziesiątymi","dziewiąci","dziewiąta","dziewiątą","dziewiąte","dziewiątego","dziewiątej","dziewiątemu","dziewiąty","dziewiątych","dziewiątym","dziewiątymi","dziewiętnaści","dziewiętnasta","dziewiętnastą","dziewiętnaste","dziewiętnastego","dziewiętnastej","dziewiętnastemu","dziewiętnasty","dziewiętnastych","dziewiętnastym","dziewiętnastymi","jedenaści","jedenasta","jedenastą","jedenaste","jedenastego","jedenastej","jedenastemu","jedenasty","jedenastych","jedenastym","jedenastymi","osiemnaści","osiemnasta","osiemnastą","osiemnaste","osiemnastego","osiemnastej","osiemnastemu","osiemnasty","osiemnastych","osiemnastym","osiemnastymi","ósma","ósmą","ósme","ósmego","ósmej","ósmemu","óśmi","ósmy","ósmych","ósmym","ósmymi","piąci","piąta","piątą","piąte","piątego","piątej","piątemu","piąty","piątych","piątym","piątymi","pierwsi","pierwsza","pierwszą","pierwsze","pierwszego","pierwszej","pierwszemu","pierwszy","pierwszych","pierwszym","pierwszymi","piętnaści","piętnasta","piętnastą","piętnaste","piętnastego","piętnastej","piętnastemu","piętnasty","piętnastych","piętnastym","piętnastymi","siedemnaści","siedemnasta","siedemnastą","siedemnaste","siedemnastego","siedemnastej","siedemnastemu","siedemnasty","siedemnastych","siedemnastym","siedemnastymi","siódma","siódmą","siódme","siódmego","siódmej","siódmemu","siódmi","siódmy","siódmych","siódmym","siódmymi","szesnaści","szesnasta","szesnastą","szesnaste","szesnastego","szesnastej","szesnastemu","szesnasty","szesnastych","szesnastymi","szóści","szósta","szóstą","szóste","szóstego","szóstej","szóstemu","szósty","szóstych","szóstym","szóstymi","trzeci","trzecia","trzecią","trzecich","trzecie","trzeciego","trzeciej","trzeciemu","trzecim","trzecimi","trzynaści","trzynasta","trzynastą","trzynaste","trzynastego","trzynastej","trzynastemu","trzynasty","trzynastych","trzynastym","trzynastymi"],r=["ja","my","on","ona","one","oni","ono","ty","wy"],s=["cię","ciebie","go","ich","ją","je","jego","mnie","nas","nią","nich","nie","niego","was"],d=["jej","niej"],l=["mi","ci","im","jemu","mu","nam","niemu","nim","tobie","wam"],c=["mną","nami","nią","nim","nimi","tobą","wami"],u=["myśmy","wyście","żeście","żeśmy"],p=["doń","nań","zeń"],z=["ich","jego","jej","ma","mą","me","mego","mej","memu","moi","moich","moim","moimi","mój","moja","moją","moje","mojego","mojej","mojemu","mych","mym","mymi","nasi","nasz","nasza","naszą","nasze","naszego","naszej","naszemu","naszych","naszym","naszymi","swa","swą","swe","swego","swej","swemu","swoi","swoich","swoim","swoimi","swój","swoja","swoją","swoje","swojego","swojej","swojemu","swych","swym","swymi","twa","twą","twe","twego","twej","twemu","twoi","twoich","twoim","twoimi","twój","twoja","twoją","twoje","twojego","twojej","twojemu","twych","twym","twymi","wasi","wasz","wasza","waszą","wasze","waszego","waszej","waszemu","waszych","waszym","waszymi"],g=["się"],m=["siebie","sobą"],f=["czyi","czyich","czyim","czyimi","czyj","czyja","czyją","czyje","czyjego","czyjej","czyjemu","kim","kogo","komu","kto"],y=["czy","czyś","czyśbyś","dlaczego","dokąd","dokądże","dokądżeś","gdzie","gdzież","gdzieżeś","ile","ileż","jak","jakbyś","jakże","jakżebyś","jakżeś","kiedy","którędy","którędyż","skąd","skądże","skądżeś"],w=["co","czego","czemu","czym","jacy","jaka","jaką","jaki","jakich","jakie","jakiego","jakiej","jakiemu","jakim","jakimi","która","którą","które","którego","której","któremu","który","których","którym","którymi","którzy"],b=["coś","czegoś","czemuś","czyichkolwiek","czyichś","czyikolwiek","czyimikolwiek","czyimiś","czyimkolwiek","czyimkolwiem","czyimś","czyiś","czyjakolwiek","czyjąkolwiek","czyjaś","czyjąś","czyjegokolwiek","czyjegoś","czyjejkolwiek","czyjejś","czyjekolwiek","czyjemukolwiek","czyjemuś","czyjeś","czyjkolwiek","czymś","dlaczegoś","dokądkolwiek","dokądś","gdziekolwiek","gdzieś","ilekolwiek","ileś","jacykolwiek","jacyś","jakakolwiek","jakąkolwiek","jakaś","jakąś","jakichkolwiek","jakichś","jakiegokolwiek","jakiegoś","jakiejkolwiek","jakiejś","jakiekolwiek","jakiemukolwiek","jakiemuś","jakieś","jakikolwiek","jakimikolwiek","jakimkolwiek","jakimś","jakiś","jakkolwiek","jakoś","każda","każdą","każde","każdego","każdej","każdemu","każdy","każdym","kiedykolwiek","kiedyś","kimkolwiek","kimś","kogokolwiek","kogoś","komukolwiek","komuś","ktokolwiek","którakolwiek","którąkolwiek","któraś","którąś","którędykolwiek","którędyś","któregokolwiek","któregoś","którejkolwiek","którejś","którekolwiek","któremukolwiek","któremuś","któreś","którychkolwiek","którychś","którykolwiek","którymikolwiek","którymiś","którymkolwiek","którymś","któryś","którzykolwiek","którzyś","ktoś","nawzajem","nic","niczego","niczemu","niczyi","niczyich","niczyim","niczyimi","niczyj","niczyja","niczyją","niczyjego","niczyjej","niczyjemu","niczym","nikim","nikogo","nikogokolwiek","nikomu","nikt","skądkolwiek","skądś","wszyscy","wszyskiego","wszystkich","wszystkie","wszystkiemu","wszystkim","wszystkimi","wszystko","żaden","żadna","żadną","żadne","żadnego","żadnej","żadnemu","żadni","żadnych","żadnym","żadnymi"],h=["ci","dlatego","ów","owa","ową","owe","owego","owej","owemu","owi","owo","owych","owym","stąd","stamtąd","ta","tacy","tak","taka","taką","taki","takich","takie","takiego","takiej","takiemu","takim","takimi","tam","tamci","tamta","tamtą","tamte","tamtego","tamtej","tamtemu","tamten","tamto","tamtych","tamtym","tamtymi","tą","te","tę","tędy","tego","tegoż","tej","temu","ten","to","tu","tutaj","tych","tyle","tyloma","tylu","tym","tymi","wtedy"],v=["ciut","część","części","częścią","częściach","częściami","częściom","dość","dosyć","dużo","kilka","kilkadziesiąt","kilkanaście","kilkaset","kilknasty","kilkoma","kilku","kilkudziesiąte","kilkudziesiątego","kilkudziesiątej","kilkudziesiąty","kilkudziesiątych","kilkudziesiątym","kilkudziesiątymi","kilkudziesięcioma","kilkudziesięciu","kilkunasta","kilkunastą","kilkunaste","kilkunastego","kilkunastej","kilkunastemu","kilkunastoma","kilkunastu","kilkunastym","kilkuset","kilkustoma","kiludziesiąta","mało","malutko","mniej","mnóstwa","mnóstwem","mnóstwie","mnóstwo","mnóstwu","multum","nadto","najmniej","najwięcej","nieco","niedużo","niejednokroć","niektóre","niektórzy","niektórych","niektórym","niektórymi","niemało","niewiele","niewieloma","niewielu","oba","obaj","obie","oboje","obojga","obojgiem","obojgu","obóm","oboma","obu","obydwa","obydwaj","obydwie","obydwiema","obydwóch","obydwoje","obydwojgiem","obydwojgu","obydwóm","obydwoma","obydwu","odrobiną","odrobince","odrobinę","odrobinie","odrobinką","odrobinkę","odrobinki","odrobiny","parę","parędziesiąt","parędziesięcioma","parędziesięciu","paręnaście","paręnastoma","paręnastu","parokroć","paroma","paru","parze","pełno","pół","półczwarta","połowa","połową","połowie","połowy","półtora","półtorej","sporo","trochę","trochu","troszeczkę","troszkę","wcale","więcej","większość","większości","większością","większościach","większościami","większościom","wiele","wielokrotnie","wieloma","wielu"],k=["czasem","często","nigdy","rzadko","zawsze"],j=["chcą","chcąc","chcąca","chcące","chcący","chce","chcę","chcecie","chcemy","chcesz","chciał","chciała","chciałaby","chciałabym","chciałabyś","chciałam","chciałaś","chciałby","chciałbym","chciałbyś","chciałem","chciałeś","chciały","chciałyby","chciałybyście","chciałybyśmy","chciałyście","chciałyśmy","chcieli","chcieliby","chcielibyście","chcieliście","chcieliśmy","chcono","ma","macie","mają","mając","mam","mamy","masz","miał","miała","miałaby","miałabym","miałabyś","miałam","miałaś","miałby","miałbym","miałbyś","miałem","miałeś","miało","miałoby","miały","miałyby","miałybyście","miałybyśmy","miałyście","miałyśmy","miano","miej","miejąca","miejące","miejący","miejcie","miejmy","mieli","mieliby","mielibyście","mielibyśmy","mieliście","mieliśmy","mogą","mogąc","mogąca","mogące","mogący","mogę","mógł","mogła","mogłaby","mogłabym","mogłabyś","mogłam","mogłaś","mógłby","mógłbym","mógłbyś","mogłem","mogłeś","mogli","mogliby","moglibyście","moglibyśmy","mogliście","mogliśmy","mogły","mogłyby","mogłybyście","mogłybyśmy","mogłyście","mogłyśmy","może","możecie","możemy","możesz","można","możnaby","musi","musiał","musiała","musiałaby","musiałabym","musiałabyś","musiałam","musiałaś","musiałby","musiałbym","musiałbyś","musiałem","musiałeś","musiało","musiałoby","musiały","musiałyby","musiałybyście","musiałybyśmy","musiałyście","musiałyśmy","musiano","musicie","musieli","musieliby","musielibyście","musielibyśmy","musieliście","musieliśmy","musimy","musisz","muszą","musząc","musząca","muszące","muszący","muszę","należy","niech","potrafi","potrafią","potrafiąc","potrafiąca","potrafiące","potrafiący","potraficie","potrafię","potrafiłaby","potrafiłabym","potrafiłabyś","potrafiłam","potrafiłaś","potrafiłbym","potrafiłbyś","potrafiłem","potrafiłeś","potrafili","potrafiliby","potrafilibyście","potrafilibyśmy","potrafiliście","potrafiliśmy","potrafiło","potrafiłoby","potrafiłyby","potrafiłybyście","potrafiłybyśmy","potrafiłyście","potrafiłyśmy","potrafimy","potrafiono","potrafisz","powinien","powinienem","powinieneś","powinna","powinnam","powinnaś","powinne","powinni","powinniście","powinniśmy","powinnyście","powinnyśmy","pozostaje","stają","stając","stająca","stające","stający","staje","staję","stajecie","stajemy","stajesz","stał","stała","stałaby","stałabym","stałabyś","stałam","stałaś","stałby","stałbym","stałbyś","stałem","stałeś","stali","staliby","stalibyście","stalibyśmy","staliście","staliśmy","stało","stały","stałyby","stałybyście","stałybyśmy","stałyście","stałyśmy","stanie","stano","stawać","stawając","stawająca","stawające","stawający","stawał","stawała","stawałaby","stawałabym","stawałabyś","stawałabyście","stawałam","stawałaś","stawałby","stawałbym","stawałbyś","stawałem","stawałeś","stawali","stawaliby","stawalibyście","stawalibyśmy","stawaliście","stawaliśmy","stawały","stawałyby","stawałybyśmy","stawałyście","stawałyśmy","stawano","stawawszy","stawszy","trzeba","warto","wystarczy"],_=["bądź","bądźcie","bądźmy","będą","będąc","będę","będzie","będziecie","będziemy","będziesz","by","był","była","byłaby","byłabym","byłabyś","byłam","byłaś","byłby","byłbym","byłbyś","byłem","byłeś","byli","byliby","bylibyście","bylibyśmy","byliście","byliśmy","było","byłoby","były","byłyby","byłybyście","byłybyśmy","byłyście","byłyśmy","bym","byś","byście","byśmy","byto","bywało","jest","jestem","jesteś","jesteście","jesteśmy","są","zostają","zostając","zostająca","zostające","zostający","zostaje","zostaję","zostajecie","zostajemy","zostajesz","został","została","zostałaby","zostałabym","zostałabyś","zostałam","zostałaś","zostałby","zostałbym","zostałbyś","zostałem","zostałeś","zostali","zostaliby","zostalibyście","zostalibyśmy","zostaliście","zostaliśmy","zostało","zostaloby","zostały","zostałyby","zostałybyście","zostałybyśmy","zostałyście","zostałyśmy","zostań","zostaną","zostańcie","zostanę","zostanie","zostaniecie","zostaniemy","zostaniesz","zostańmy","zostawało","zostawano","zostawszy"],x=["być","zostać"],q=["chcieć","mieć","móc","musieć","potrafić","stać"],E=["bez","beze","blisko","daleko","dla","do","dole","dookoła","górze","jako","koło","ku","między","mimo","na","nad","nade","naokoło","naprzeciwko","niedaleko","nieopodal","niż","o","obok","od","ode","około","oprócz","po","pod","podczas","pode","pomiędzy","ponad","poniżej","poprzek","poprzez","pośród","powyżej","poza","przeciw","przeciwko","przed","przede","przez","przeze","przy","spodem","spośród","spoza","u","w","wbrew","we","wedle","wewnątrz","wpół","wraz","wśród","wzdłuż","z","za","ze","zza"],A=["bliska","daleka","przodu","tyłu"],T=["albo","ani","bądź","i","lub","oraz","tylko"],O=["aż","by","czy","gdyby","jak","jeśli","jeżeli","że"],S=["ano","ciągu","coraz","dzięki","chyba","jakby","jednocześnie","jeszcze","już","nadal","nagle","znowu","prawdopodobnie","niestety","dziś","dzisiaj","oczywiście","względem","m.in.","właśnie","zaraz"],P=["bierz","bierzcie","bierzecie","bierzemy","bierzesz","bierzmy","biorą","biorąc","biorąca","biorące","biorący","biorę","brał","brała","brałaby","brałabym","brałabyś","brałam","brałaś","brałby","brałbym","brałbyś","brałem","brałeś","brali","braliby","bralibyście","bralibyśmy","braliście","braliśmy","brało","brałoby","brały","brałyby","brałybyście","brałybyśmy","brałyście","brałyśmy","brany","da","dacie","dadzą","daj","dają","dając","dająca","dające","dający","dajcie","daje","daję","dajecie","dajemy","dajesz","dajmy","dał","dała","dałaby","dałabym","dałabyś","dałam","dałaś","dałby","dałbym","dałbyś","dałem","dałeś","dali","daliby","dalibyście","dalibyśmy","daliście","daliśmy","dało","dałoby","dały","dałyby","dałybyście","dałybyśmy","dałyście","dałyśmy","dam","damy","dana","dano","dany","dasz","dawaj","dawajcie","dawajmy","dawał","dawała","dawałaby","dawałabym","dawałabyś","dawałam","dawałaś","dawałby","dawałbym","dawałbyś","dawałem","dawałeś","dawali","dawaliby","dawalibyście","dawalibyśmy","dawaliście","dawaliśmy","dawało","dawały","dawałyby","dawałybyście","dawałybyśmy","dawałyście","dawałyśmy","dawana","dawane","dawano","dawany","idą","idąc","idąca","idące","idący","idę","idź","idźcie","idzie","idziecie","idziemy","idziesz","idźmy","rób","róbcie","robi","robią","robiąc","robiąca","robiące","robiący","robicie","robię","robił","robiła","robiłaby","robiłabym","robiłabyś","robiłam","robiłaś","robiłby","robiłbym","robiłbyś","robiłem","robiłeś","robili","robilibiście","robiliby","robilibyśmy","robiliście","robiliśmy","robiło","robiły","robiłyby","robiłybyście","robiłybyśmy","robiłyście","robiłyśmy","robimy","robiono","robiony","robisz","róbmy","stanowi","stanowią","stanowiły","stanowili","stoi","stoicie","stoimy","stoisz","stój","stoją","stojąc","stojąca","stojące","stojący","stójcie","stoję","stójmy","świadczy","szedł","szedłby","szedłbym","szedłbyś","szedłem","szedłeś","szła","szłaby","szłabym","szłabyś","szłam","szłaś","szli","szliby","szlibyście","szlibyśmy","szliście","szliśmy","szło","szłoby","szły","szłyby","szłybyście","szłybyśmy","szłyście","uprawia","uprawiacie","uprawiają","uprawiając","uprawiająca","uprawiające","uprawiający","uprawiał","uprawiała","uprawiałaby","uprawiałabym","uprawiałabyś","uprawiałam","uprawiałaś","uprawiałby","uprawiałbym","uprawiałbyś","uprawiałem","uprawiałeś","uprawiali","uprawialiby","uprawialibyście","uprawialibyśmy","uprawialiście","uprawialiśmy","uprawiało","uprawiałoby","uprawiały","uprawiałyby","uprawiałybyście","uprawiałybyśmy","uprawiałyście","uprawiałyśmy","uprawiam","uprawiamy","uprawiana","uprawiane","uprawiano","uprawiany","uprawiasz","weź","weźcie","wezmą","wezmę","weźmie","weźmiecie","weźmiemy","weźmiesz","weźmy","wykonuj","wykonują","wykonując","wykonująca","wykonujące","wykonujący","wykonujcie","wykonuje","wykonuję","wykonujecie","wykonujemy","wykonujesz","wykonujmy","wykonywał","wykonywała","wykonywałaby","wykonywałabym","wykonywałabyś","wykonywałam","wykonywałaś","wykonywałby","wykonywałbym","wykonywałbyś","wykonywałem","wykonywałeś","wykonywali","wykonywaliby","wykonywalibyście","wykonywalibyśmy","wykonywaliście","wykonywaliśmy","wykonywało","wykonywałoby","wykonywały","wykonywałyby","wykonywałybyście","wykonywałybyśmy","wykonywałyście","wykonywałyśmy","wykonywana","wykonywane","wykonywany","wziął","wziąłby","wziąłbym","wziąłbyś","wziąłem","wziąłeś","wziąwszy","wzięła","wzięłaby","wzięłabym","wzięłabyś","wzięłam","wzięłaś","wzięli","wzięliby","wzięlibyście","wzięlibyśmy","wzięliście","wzięliśmy","wzięło","wzięłoby","wzięły","wzięłyby","wzięłybyście","wzięłybyśmy","wzięłyście","wzięłyśmy","zrób","zróbcie","zrobi","zrobią","zrobiąc","zrobiąca","zrobiące","zrobiący","zrobicie","zrobię","zrobił","zrobiła","zrobiłaby","zrobiłabym","zrobiłabyś","zrobiłam","zrobiłaś","zrobiłby","zrobiłbym","zrobiłbyś","zrobiłem","zrobiłeś","zrobili","zrobilibiście","zrobiliby","zrobilibyśmy","zrobiliście","zrobiliśmy","zrobiło","zrobiły","zrobiłyby","zrobiłybyście","zrobiłybyśmy","zrobiłyście","zrobiłyśmy","zrobimy","zrobiono","zrobiony","zrobisz","zróbmy"],M=["brać","dać","dawać","iść","robić","stanowić","uprawiać","wykonywać","wziąć","zrobić"],C=["informowali","informowały","informują","informuje","informuję","mówi","mówią","mówię","mówił","mówiła","mówili","mówiły","odpowiada","odpowiadają","odpowiadam","odpowiedział","odpowiedziała","odpowiedziałam","odpowiedziały","odpowiedzieli","odwiedziałam","poinformowałam","poinformowali","poinformowały","powiedział","powiedziała","powiedziałam","powiedziały","powiedzieli","pyta","pytać","pytał","pytała","pytałam","pytali","pytały","pytam","sądzą","sądzę","sądzi","sądzić","sądziłam","sądzili","sądziły","spytał","spytała","spytałam","spytali","spytały","stwierdziały","stwierdzieli","stwierdził","stwierdziła","stwierdziłam","twierdzą","twierdzę","twierdzi","twierdziały","twierdzić","twierdzieli","twierdził","twierdziła","twierdziłam","uważa","uważają","uważał","uważała","uważali","uważały","uważam","wyjaśnia","wyjaśniać","wyjaśniają","wyjaśniam","wyjaśnił","wyjaśniła","wyjaśnili","wyjaśniły","zapytał","zapytała","zapytałam","zapytali","zapytały","zaznacza","zaznaczają","zaznaczam","zaznaczył","zaznaczyła","zaznaczyłam","zaznaczyli","zaznaczyły"],R=["bardziej","bardzo","całkiem","całkowicie","doskonale","dość","dosyć","kompletnie","najbardziej","naprawdę","nawet","nieco","niezbyt","niezmiernie","niezwykle","ogromnie","strasznie","świetnie","wielce","wyjątkowo","zbyt","znacznie","zupełnie"],D=["cała","całą","całe","całego","całej","całemu","cali","cały","całych","całym","całymi","ciekawa","ciekawą","ciekawe","ciekawego","ciekawej","ciekawemu","ciekawi","ciekawy","ciekawych","ciekawym","ciekawymi","dłudzy","długa","długą","długi","długich","długie","długiego","długiej","długiemu","długim","długimi","dłużsi","dłuższa","dłuższą","dłuższe","dłuższego","dłuższej","dłuższemu","dłuższy","dłuższych","dłuższym","dłuższymi","dobra","dobrą","dobre","dobrego","dobrej","dobremu","dobry","dobrych","dobrym","dobrymi","dobrzy","fajna","fajną","fajne","fajnego","fajnej","fajnemu","fajni","fajny","fajnych","fajnym","fajnymi","główna","główną","główne","głównego","głównej","głównemu","główni","główny","głównych","głównym","głównymi","inna","inną","inne","innego","innej","innemu","inni","inny","innych","innym","innymi","krótcy","krótka","krótką","krótki","krótkich","krótkie","krótkiego","krótkiej","krótkiemu","krótkim","krótkimi","krótsi","krótsza","krótszą","krótsze","krótszego","krótszej","krótszemu","krótszych","krótszym","krótszymi","łatwe","łatwego","łatwiejsze","łatwym","lepsi","lepsza","lepszą","lepsze","lepszego","lepszej","lepszemu","lepszy","lepszych","lepszym","lepszymi","mała","małą","małe","małego","małej","małemu","mali","mały","małych","małym","małymi","mniejsi","mniejsza","mniejszą","mniejsze","mniejszego","mniejszej","mniejszemu","mniejszy","mniejszych","mniejszym","mniejszymi","najdłużsi","najdłuższa","najdłuższą","najdłuższe","najdłuższego","najdłuższej","najdłuższemu","najdłuższy","najdłuższych","najdłuższym","najdłuższymi","najkrótsi","najkrótsza","najkrótszą","najkrótsze","najkrótszego","najkrótszej","najkrótszemu","najkrótszych","najkrótszym","najkrótszymi","najłatwiejsze","najlepsi","najlepsza","najlepszą","najlepsze","najlepszego","najlepszej","najlepszemu","najlepszych","najlepszym","najlepszymi","najmniejsi","najmniejsza","najmniejszą","najmniejsze","najmniejszego","najmniejszej","najmniejszemu","najmniejszy","najmniejszych","najmniejszym","najmniejszymi","najniżsi","najniższa","najniższą","najniższe","najniższego","najniższej","najniższemu","najniższy","najniższych","najniższym","najniższymi","najtrudniejsze","najwięksi","największa","największą","największe","największego","największej","największemu","największych","największym","największymi","najwyżsi","najwyższa","najwyższą","najwyższe","najwyższego","najwyższej","najwyższemu","najwyższy","najwyższych","najwyższym","najwyższymi","następna","następną","następne","następnego","następnej","następni","następny","następnych","następnym","następnymi","niewłaściwa","niewłaściwą","niewłaściwe","niewłaściwego","niewłaściwej","niewłaściwemu","niewłaściwi","niewłaściwy","niewłaściwych","niewłaściwym","niewłaściwymi","niscy","niska","niską","niski","niskich","niskie","niskiego","niskiej","niskiemu","niskim","niskimi","niżsi","niższa","niższą","niższe","niższego","niższej","niższemu","niższy","niższych","niższym","niższymi","ostatni","ostatnia","ostatnią","ostatnich","ostatnie","ostatniego","ostatniej","ostatniemu","ostatnim","ostatnimi","poprzedni","poprzednia","poprzednią","poprzednich","poprzednie","poprzedniego","poprzedniej","poprzedniemu","poprzednim","poprzednimi","sam","sama","samą","same","samego","samej","samemu","sami","samo","samych","samym","samymi","trudne","trudnego","trudniejsze","trudnym","więksi","większa","większą","większe","większego","większej","większemu","większych","większym","większymi","wielcy","wielka","wielką","wielki","wielkich","wielkie","wielkiego","wielkiej","wielkiemu","wielkim","wielkimi","właściwa","właściwą","właściwe","właściwego","właściwej","właściwemu","właściwi","właściwy","właściwych","właściwym","właściwymi","wysocy","wysoka","wysoką","wysoki","wysokich","wysokie","wysokiego","wysokiej","wysokiemu","wysokim","wysokimi","wyżsi","wyższa","wyższą","wyższe","wyższego","wyższej","wyższemu","wyższy","wyższych","wyższym","wyższymi"],F=["blisko","bliżej","ciągle","ciężko","czasami","czasem","częściej","często","dalej","daleko","dawniej","dawno","dobrze","dopiero","fajnie","fajniej","gorzej","inaczej","ładnie","łatwiej","łatwo","lepiej","najbliżej","najczęściej","najdalej","najdawniej","najfajniej","najgorzej","najłatwiej","najlepiej","najniżej","najpóźniej","najprościej","najszybciej","najtrudniej","najwcześniej","najwyżej","naprawdę","niedaleko","niedawno","nisko","niżej","ostatnio","pewno","póżniej","późno","prawie","prościej","prosto","prostu","szybciej","szybko","trochę","trudniej","trudno","wcześnie","wcześniej","wolno","wszędzie","wysoko","wyżej","zazwyczaj","źle"],B=["dni","dnia","dniach","dniami","dnie","dzień","dzisiaj","godzin","godzina","godzinach","godzinami","godzinę","godziny","jutro","lata","latach","latami","miesiąc","miesiąca","miesiącach","miesiącami","miesiące","miesiącem","miesiącu","miesięcy","minut","minuta","minutach","minutę","minuty","pojutrze","przedwczoraj","rok","rokiem","roku","sekund","sekunda","sekundach","sekundę","sekundy","tydzień","tygodni","tygodnia","tygodniach","tygodniami","tygodnie","tygodniu","wczoraj"],$=["chwila","chwilą","chwilach","chwilami","chwile","chwilę","chwili","chwilom","część","części","częścią","częściach","częściami","częściom","momencie","moment","ogóle","osób","osoba","osobą","osobach","osobami","osobę","osobie","osobom","osoby","powód","powodach","powodami","powodem","powodom","powodów","powodowi","powodu","powody","powodzie","przypadkiem","przypadku","raz","razach","razami","razem","razie","razom","razów","razowi","razu","razy","rodzaj","rodzajach","rodzajami","rodzajem","rodzajom","rodzajów","rodzajowi","rodzaju","rzecz","rzeczą","rzeczach","rzeczami","rzeczom","rzeczy","sposób","sposobem","sprawa","sprawą","sprawach","sprawami","sprawę","sprawie","sprawom","sprawy","temacie","temat","tematach","tematami","tematem","tematom","tematów","tematowi","tematu","tematy"],L=["dr","dyr","mgr","p","pan","pani","panie","panowie","prof"],I=["a","ach","aha","aj","akurat","ał","aua","auć","ba","brawo","e","ech","ehe","ehm","ej","ejże","ekhm","ekstra","jej","jejku","łał","och","oh","oho","oj","ojej","ojejku","phi","precz","super","uwaga","wow"],W=["°C","°F","ar","ary","arów","arach","c","cl","cm","cm²","cm³","dag","deka","dl","f","ft","g","gram","gramów","gramy","ha","hektar","hektary","hektarów","hektarach","in","kg","kilo","km","km²","cm³","l","litr","litrów","litry","łyżeczka","łyżeczkę","łyżeczki","łyżka","łyżkę","łyżki","m","m²","m³","mg","ml","mm","mm²","mm³","szczypta","szczyptę","szczypty","szklanka","szklankę","szklanki","tuzin"],U=["nie","no","oto","tak","sobie","ok","okej"]},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.buildOneFormFromRegex=function(a,e){for(var t=0;t<e.length;t++)if(!0===e[t].reg.test(a))return a.replace(e[t].reg,e[t].repl)},e.buildTwoFormsFromRegex=function(a,e){for(var t=0;t<e.length;t++)if(!0===e[t].reg.test(a))return[a.replace(e[t].reg,e[t].repl1),a.replace(e[t].reg,e[t].repl2)]}},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=d(t(1046)),n=d(t(155)),o=t(2),r=d(t(1054)),s=d(t(1056));function d(a){return a&&a.__esModule?a:{default:a}}var l=(0,o.memoize)(function(a){var e=[],t=a.deviations;return(0,o.isUndefined)(t.words)||(0,o.isUndefined)(t.words.fragments)||(e=(0,o.flatMap)(t.words.fragments,function(a,e){return(0,o.map)(a,function(a){return a.location=e,new s.default(a)})})),e}),c=function(a,e){var t=0;return t+=function(a,e){var t=0,n=new RegExp("[^"+(0,i.default)(e).vowels+"]","ig"),r=a.split(n);return t+=(0,o.filter)(r,function(a){return""!==a}).length}(a,e),t+=function(a,e){return new r.default((0,i.default)(e)).countSyllables(a)}(a,e)},u=function(a,e){var t=0,n=function(a,e){var t=(0,i.default)(e).deviations.words.full,n=(0,o.find)(t,function(e){return e.word===a});return(0,o.isUndefined)(n)?0:n.syllables}(a,e);if(0!==n)return n;var r=function(a,e){var t=l((0,i.default)(e)),n=a,r=0;return(0,o.forEach)(t,function(a){a.occursIn(n)&&(n=a.removeFrom(n),r+=a.getSyllables())}),{word:n,syllableCount:r}}(a,e);return a=r.word,t+=r.syllableCount,t+=c(a,e)};e.default=function(a,e){a=a.toLocaleLowerCase();var t=(0,n.default)(a),i=(0,o.map)(t,function(a){return u(a,e)});return(0,o.sum)(i)}},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(){return[{base:"a",letters:/[\u0061\u24D0\uFF41\u1E9A\u00E0\u00E1\u00E2\u1EA7\u1EA5\u1EAB\u1EA9\u00E3\u0101\u0103\u1EB1\u1EAF\u1EB5\u1EB3\u0227\u01E1\u00E4\u01DF\u1EA3\u00E5\u01FB\u01CE\u0201\u0203\u1EA1\u1EAD\u1EB7\u1E01\u0105\u2C65\u0250]/g},{base:"aa",letters:/[\uA733]/g},{base:"ae",letters:/[\u00E6\u01FD\u01E3]/g},{base:"ao",letters:/[\uA735]/g},{base:"au",letters:/[\uA737]/g},{base:"av",letters:/[\uA739\uA73B]/g},{base:"ay",letters:/[\uA73D]/g},{base:"b",letters:/[\u0062\u24D1\uFF42\u1E03\u1E05\u1E07\u0180\u0183\u0253]/g},{base:"c",letters:/[\u0063\u24D2\uFF43\u0107\u0109\u010B\u010D\u00E7\u1E09\u0188\u023C\uA73F\u2184]/g},{base:"d",letters:/[\u0064\u24D3\uFF44\u1E0B\u010F\u1E0D\u1E11\u1E13\u1E0F\u0111\u018C\u0256\u0257\uA77A]/g},{base:"dz",letters:/[\u01F3\u01C6]/g},{base:"e",letters:/[\u0065\u24D4\uFF45\u00E8\u00E9\u00EA\u1EC1\u1EBF\u1EC5\u1EC3\u1EBD\u0113\u1E15\u1E17\u0115\u0117\u00EB\u1EBB\u011B\u0205\u0207\u1EB9\u1EC7\u0229\u1E1D\u0119\u1E19\u1E1B\u0247\u025B\u01DD]/g},{base:"f",letters:/[\u0066\u24D5\uFF46\u1E1F\u0192\uA77C]/g},{base:"g",letters:/[\u0067\u24D6\uFF47\u01F5\u011D\u1E21\u011F\u0121\u01E7\u0123\u01E5\u0260\uA7A1\u1D79\uA77F]/g},{base:"h",letters:/[\u0068\u24D7\uFF48\u0125\u1E23\u1E27\u021F\u1E25\u1E29\u1E2B\u1E96\u0127\u2C68\u2C76\u0265]/g},{base:"hv",letters:/[\u0195]/g},{base:"i",letters:/[\u0069\u24D8\uFF49\u00EC\u00ED\u00EE\u0129\u012B\u012D\u00EF\u1E2F\u1EC9\u01D0\u0209\u020B\u1ECB\u012F\u1E2D\u0268\u0131]/g},{base:"j",letters:/[\u006A\u24D9\uFF4A\u0135\u01F0\u0249]/g},{base:"k",letters:/[\u006B\u24DA\uFF4B\u1E31\u01E9\u1E33\u0137\u1E35\u0199\u2C6A\uA741\uA743\uA745\uA7A3]/g},{base:"l",letters:/[\u006C\u24DB\uFF4C\u0140\u013A\u013E\u1E37\u1E39\u013C\u1E3D\u1E3B\u017F\u0142\u019A\u026B\u2C61\uA749\uA781\uA747]/g},{base:"lj",letters:/[\u01C9]/g},{base:"m",letters:/[\u006D\u24DC\uFF4D\u1E3F\u1E41\u1E43\u0271\u026F]/g},{base:"n",letters:/[\u006E\u24DD\uFF4E\u01F9\u0144\u00F1\u1E45\u0148\u1E47\u0146\u1E4B\u1E49\u019E\u0272\u0149\uA791\uA7A5]/g},{base:"nj",letters:/[\u01CC]/g},{base:"o",letters:/[\u006F\u24DE\uFF4F\u00F2\u00F3\u00F4\u1ED3\u1ED1\u1ED7\u1ED5\u00F5\u1E4D\u022D\u1E4F\u014D\u1E51\u1E53\u014F\u022F\u0231\u00F6\u022B\u1ECF\u0151\u01D2\u020D\u020F\u01A1\u1EDD\u1EDB\u1EE1\u1EDF\u1EE3\u1ECD\u1ED9\u01EB\u01ED\u00F8\u01FF\u0254\uA74B\uA74D\u0275]/g},{base:"oi",letters:/[\u01A3]/g},{base:"ou",letters:/[\u0223]/g},{base:"oo",letters:/[\uA74F]/g},{base:"p",letters:/[\u0070\u24DF\uFF50\u1E55\u1E57\u01A5\u1D7D\uA751\uA753\uA755]/g},{base:"q",letters:/[\u0071\u24E0\uFF51\u024B\uA757\uA759]/g},{base:"r",letters:/[\u0072\u24E1\uFF52\u0155\u1E59\u0159\u0211\u0213\u1E5B\u1E5D\u0157\u1E5F\u024D\u027D\uA75B\uA7A7\uA783]/g},{base:"s",letters:/[\u0073\u24E2\uFF53\u00DF\u015B\u1E65\u015D\u1E61\u0161\u1E67\u1E63\u1E69\u0219\u015F\u023F\uA7A9\uA785\u1E9B]/g},{base:"t",letters:/[\u0074\u24E3\uFF54\u1E6B\u1E97\u0165\u1E6D\u021B\u0163\u1E71\u1E6F\u0167\u01AD\u0288\u2C66\uA787]/g},{base:"tz",letters:/[\uA729]/g},{base:"u",letters:/[\u0075\u24E4\uFF55\u00F9\u00FA\u00FB\u0169\u1E79\u016B\u1E7B\u016D\u00FC\u01DC\u01D8\u01D6\u01DA\u1EE7\u016F\u0171\u01D4\u0215\u0217\u01B0\u1EEB\u1EE9\u1EEF\u1EED\u1EF1\u1EE5\u1E73\u0173\u1E77\u1E75\u0289]/g},{base:"v",letters:/[\u0076\u24E5\uFF56\u1E7D\u1E7F\u028B\uA75F\u028C]/g},{base:"vy",letters:/[\uA761]/g},{base:"w",letters:/[\u0077\u24E6\uFF57\u1E81\u1E83\u0175\u1E87\u1E85\u1E98\u1E89\u2C73]/g},{base:"x",letters:/[\u0078\u24E7\uFF58\u1E8B\u1E8D]/g},{base:"y",letters:/[\u0079\u24E8\uFF59\u1EF3\u00FD\u0177\u1EF9\u0233\u1E8F\u00FF\u1EF7\u1E99\u1EF5\u01B4\u024F\u1EFF]/g},{base:"z",letters:/[\u007A\u24E9\uFF5A\u017A\u1E91\u017C\u017E\u1E93\u1E95\u01B6\u0225\u0240\u2C6C\uA763]/g}]}},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default={queue:["wordCount","keywordDensity","subHeadings","stopwords","fleschReading","linkCount","imageCount","urlKeyword","urlLength","metaDescriptionLength","metaDescriptionKeyword","pageTitleKeyword","pageTitleLength","firstParagraph","urlStopwords","keywordDoubles","keyphraseSizeCheck"],stopWords:["a","about","above","after","again","against","all","am","an","and","any","are","as","at","be","because","been","before","being","below","between","both","but","by","could","did","do","does","doing","down","during","each","few","for","from","further","had","has","have","having","he","he'd","he'll","he's","her","here","here's","hers","herself","him","himself","his","how","how's","i","i'd","i'll","i'm","i've","if","in","into","is","it","it's","its","itself","let's","me","more","most","my","myself","nor","of","on","once","only","or","other","ought","our","ours","ourselves","out","over","own","same","she","she'd","she'll","she's","should","so","some","such","than","that","that's","the","their","theirs","them","themselves","then","there","there's","these","they","they'd","they'll","they're","they've","this","those","through","to","too","under","until","up","very","was","we","we'd","we'll","we're","we've","were","what","what's","when","when's","where","where's","which","while","who","who's","whom","why","why's","with","would","you","you'd","you'll","you're","you've","your","yours","yourself","yourselves"],wordsToRemove:[" a"," in"," an"," on"," for"," the"," and"],maxSlugLength:20,maxUrlLength:40,maxMeta:156}},function(a,e,t){"use strict";var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a};Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function a(a,e){for(var t=0;t<e.length;t++){var i=e[t];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(a,i.key,i)}}return function(e,t,i){return t&&a(e.prototype,t),i&&a(e,i),e}}(),o=t(2),r=l(t(83)),s=t(38),d=l(t(34));function l(a){return a&&a.__esModule?a:{default:a}}var c=function(a){function e(){var a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};!function(a,e){if(!(a instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var t=function(a,e){if(!a)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!==(void 0===e?"undefined":i(e))&&"function"!=typeof e?a:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this)),n={scores:{noLinks:3,allNofollowed:7,someNoFollowed:8,allFollowed:9},urlTitle:(0,s.createAnchorOpeningTag)("https://yoa.st/34f"),urlCallToAction:(0,s.createAnchorOpeningTag)("https://yoa.st/34g")};return t.identifier="externalLinks",t._config=(0,o.merge)(n,a),t}return function(a,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+(void 0===e?"undefined":i(e)));a.prototype=Object.create(e&&e.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(a,e):a.__proto__=e)}(e,r.default),n(e,[{key:"getResult",value:function(a,e,t){var i=e.getResearch("getLinkStatistics"),n=new d.default;return(0,o.isEmpty)(i)||(n.setScore(this.calculateScore(i)),n.setText(this.translateScore(i,t))),n}},{key:"isApplicable",value:function(a){return a.hasText()}},{key:"calculateScore",value:function(a){return 0===a.externalTotal?this._config.scores.noLinks:a.externalNofollow===a.externalTotal?this._config.scores.allNofollowed:a.externalDofollow<a.externalTotal?this._config.scores.someNoFollowed:a.externalDofollow===a.externalTotal?this._config.scores.allFollowed:null}},{key:"translateScore",value:function(a,e){return 0===a.externalTotal?e.sprintf(e.dgettext("js-text-analysis","%1$sOutbound links%3$s: No outbound links appear in this page. %2$sAdd some%3$s!"),this._config.urlTitle,this._config.urlCallToAction,"</a>"):a.externalNofollow===a.externalTotal?e.sprintf(e.dgettext("js-text-analysis","%1$sOutbound links%3$s: All outbound links on this page are nofollowed. %2$sAdd some normal links%3$s."),this._config.urlTitle,this._config.urlCallToAction,"</a>"):a.externalDofollow===a.externalTotal?e.sprintf(e.dgettext("js-text-analysis","%1$sOutbound links%2$s: Good job!"),this._config.urlTitle,"</a>"):a.externalDofollow<a.externalTotal?e.sprintf(e.dgettext("js-text-analysis","%1$sOutbound links%2$s: There are both nofollowed and normal outbound links on this page. Good job!"),this._config.urlTitle,"</a>"):""}}]),e}();e.default=c},function(a,e,t){"use strict";var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a};Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function a(a,e){for(var t=0;t<e.length;t++){var i=e[t];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(a,i.key,i)}}return function(e,t,i){return t&&a(e.prototype,t),i&&a(e,i),e}}(),o=t(2),r=u(t(83)),s=t(38),d=t(243),l=t(736),c=u(t(34));function u(a){return a&&a.__esModule?a:{default:a}}var p=function(a){function e(){var a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};!function(a,e){if(!(a instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var t=function(a,e){if(!a)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!==(void 0===e?"undefined":i(e))&&"function"!=typeof e?a:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this)),n={parameters:{lowerBoundary:.3,upperBoundary:.75},scores:{noMatches:3,tooFewMatches:3,goodNumberOfMatches:9,tooManyMatches:3},urlTitle:(0,s.createAnchorOpeningTag)("https://yoa.st/33m"),urlCallToAction:(0,s.createAnchorOpeningTag)("https://yoa.st/33n")};return t.identifier="subheadingsKeyword",t._config=(0,o.merge)(n,a),t}return function(a,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+(void 0===e?"undefined":i(e)));a.prototype=Object.create(e&&e.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(a,e):a.__proto__=e)}(e,r.default),n(e,[{key:"getResult",value:function(a,e,t){this._subHeadings=e.getResearch("matchKeywordInSubheadings");var i=new c.default;this._minNumberOfSubheadings=Math.ceil(this._subHeadings.count*this._config.parameters.lowerBoundary),this._maxNumberOfSubheadings=Math.floor(this._subHeadings.count*this._config.parameters.upperBoundary);var n=this.calculateResult(t);return i.setScore(n.score),i.setText(n.resultText),i}},{key:"hasSubheadings",value:function(a){return(0,l.getSubheadingsTopLevel)(a.getText()).length>0}},{key:"isApplicable",value:function(a){return a.hasText()&&a.hasKeyword()&&this.hasSubheadings(a)}},{key:"hasTooFewMatches",value:function(){return this._subHeadings.matches>0&&this._subHeadings.matches<this._minNumberOfSubheadings}},{key:"hasTooManyMatches",value:function(){return this._subHeadings.count>1&&this._subHeadings.matches>this._maxNumberOfSubheadings}},{key:"isOneOfOne",value:function(){return 1===this._subHeadings.count&&1===this._subHeadings.matches}},{key:"hasGoodNumberOfMatches",value:function(){return(0,d.inRangeStartEndInclusive)(this._subHeadings.matches,this._minNumberOfSubheadings,this._maxNumberOfSubheadings)}},{key:"calculateResult",value:function(a){return this.hasTooFewMatches()?{score:this._config.scores.tooFewMatches,resultText:a.sprintf(a.dgettext("js-text-analysis","%1$sKeyphrase in subheading%3$s: %2$sUse more keyphrases or synonyms in your higher-level subheadings%3$s!"),this._config.urlTitle,this._config.urlCallToAction,"</a>")}:this.hasTooManyMatches()?{score:this._config.scores.tooManyMatches,resultText:a.sprintf(a.dgettext("js-text-analysis","%1$sKeyphrase in subheading%3$s: More than 75%% of your higher-level subheadings reflect the topic of your copy. That's too much. %2$sDon't over-optimize%3$s!"),this._config.urlTitle,this._config.urlCallToAction,"</a>")}:this.isOneOfOne()?{score:this._config.scores.goodNumberOfMatches,resultText:a.sprintf(a.dgettext("js-text-analysis","%1$sKeyphrase in subheading%2$s: Your higher-level subheading reflects the topic of your copy. Good job!",this._subHeadings.matches),this._config.urlTitle,"</a>")}:this.hasGoodNumberOfMatches()?{score:this._config.scores.goodNumberOfMatches,resultText:a.sprintf(a.dngettext("js-text-analysis","%1$sKeyphrase in subheading%2$s: %3$s of your higher-level subheadings reflects the topic of your copy. Good job!","%1$sKeyphrase in subheading%2$s: %3$s of your higher-level subheadings reflect the topic of your copy. Good job!",this._subHeadings.matches),this._config.urlTitle,"</a>",this._subHeadings.matches)}:{score:this._config.scores.noMatches,resultText:a.sprintf(a.dgettext("js-text-analysis","%1$sKeyphrase in subheading%3$s: %2$sUse more keyphrases or synonyms in your higher-level subheadings%3$s!"),this._config.urlTitle,this._config.urlCallToAction,"</a>")}}}]),e}();e.default=p},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(a){if((0,n.isUndefined)(a))return[];switch((0,i.default)(a)){case"es":return o.es;case"pl":return o.pl;case"de":return o.de;case"nb":case"nn":return o.nbnn;case"sv":return o.sv;case"fi":return o.fi;case"da":return o.da;case"tr":return o.tr;case"lv":return o.lv;case"is":return o.is;case"fa":return o.fa;case"cs":return o.cs;case"ru":return o.ru;case"eo":return o.eo;case"af":return o.af;case"bal":case"ca":return o.ca;case"ast":return o.ast;case"an":return o.an;case"ay":return o.ay;case"en":return o.en;case"fr":return o.fr;case"it":return o.it;case"nl":return o.nl;case"bm":return o.bm;case"uk":return o.uk;case"br":return o.br;case"ch":return o.ch;case"csb":return o.csb;case"cy":return o.cy;case"ee":return o.ee;case"et":return o.et;case"eu":return o.eu;case"fuc":return o.fuc;case"fj":return o.fj;case"frp":return o.frp;case"fur":return o.fur;case"fy":return o.fy;case"ga":return o.ga;case"gd":return o.gd;case"gl":return o.gl;case"gn":return o.gn;case"gsw":return o.gsw;case"hat":return o.hat;case"haw":return o.haw;case"hr":return o.hr;case"ka":return o.ka;case"kal":return o.kal;case"kin":return o.kin;case"lb":return o.lb;case"li":return o.li;case"lin":return o.lin;case"lt":return o.lt;case"mg":return o.mg;case"mk":return o.mk;case"mri":return o.mri;case"mwl":return o.mwl;case"oci":return o.oci;case"orm":return o.orm;case"pt":return o.pt;case"roh":return o.roh;case"rup":return o.rup;case"ro":return o.ro;case"tlh":return o.tlh;case"sk":return o.sk;case"sl":return o.sl;case"sq":return o.sq;case"hu":return o.hu;case"srd":return o.srd;case"szl":return o.szl;case"tah":return o.tah;case"vec":return o.vec;case"wa":return o.wa;case"yor":return o.yor;default:return[]}};var i=function(a){return a&&a.__esModule?a:{default:a}}(t(107)),n=t(2);var o={es:[{letter:/[\u00F1]/g,alternative:"n"},{letter:/[\u00D1]/g,alternative:"N"},{letter:/[\u00E1]/g,alternative:"a"},{letter:/[\u00C1]/g,alternative:"A"},{letter:/[\u00E9]/g,alternative:"e"},{letter:/[\u00C9]/g,alternative:"E"},{letter:/[\u00ED]/g,alternative:"i"},{letter:/[\u00CD]/g,alternative:"I"},{letter:/[\u00F3]/g,alternative:"o"},{letter:/[\u00D3]/g,alternative:"O"},{letter:/[\u00FA\u00FC]/g,alternative:"u"},{letter:/[\u00DA\u00DC]/g,alternative:"U"}],pl:[{letter:/[\u0105]/g,alternative:"a"},{letter:/[\u0104]/g,alternative:"A"},{letter:/[\u0107]/g,alternative:"c"},{letter:/[\u0106]/g,alternative:"C"},{letter:/[\u0119]/g,alternative:"e"},{letter:/[\u0118]/g,alternative:"E"},{letter:/[\u0142]/g,alternative:"l"},{letter:/[\u0141]/g,alternative:"L"},{letter:/[\u0144]/g,alternative:"n"},{letter:/[\u0143]/g,alternative:"N"},{letter:/[\u00F3]/g,alternative:"o"},{letter:/[\u00D3]/g,alternative:"O"},{letter:/[\u015B]/g,alternative:"s"},{letter:/[\u015A]/g,alternative:"S"},{letter:/[\u017A\u017C]/g,alternative:"z"},{letter:/[\u0179\u017B]/g,alternative:"Z"}],de:[{letter:/[\u00E4]/g,alternative:"ae"},{letter:/[\u00C4]/g,alternative:"Ae"},{letter:/[\u00FC]/g,alternative:"ue"},{letter:/[\u00DC]/g,alternative:"Ue"},{letter:/[\u00F6]/g,alternative:"oe"},{letter:/[\u00D6]/g,alternative:"Oe"},{letter:/[\u00DF]/g,alternative:"ss"},{letter:/[\u1E9E]/g,alternative:"SS"}],nbnn:[{letter:/[\u00E6\u04D5]/g,alternative:"ae"},{letter:/[\u00C6\u04D4]/g,alternative:"Ae"},{letter:/[\u00E5]/g,alternative:"aa"},{letter:/[\u00C5]/g,alternative:"Aa"},{letter:/[\u00F8]/g,alternative:"oe"},{letter:/[\u00D8]/g,alternative:"Oe"},{letter:/[\u00E9\u00E8\u00EA]/g,alternative:"e"},{letter:/[\u00C9\u00C8\u00CA]/g,alternative:"E"},{letter:/[\u00F3\u00F2\u00F4]/g,alternative:"o"},{letter:/[\u00D3\u00D2\u00D4]/g,alternative:"O"}],sv:[{letter:/[\u00E5]/g,alternative:"aa"},{letter:/[\u00C5]/g,alternative:"Aa"},{letter:/[\u00E4]/g,alternative:"ae"},{letter:/[\u00C4]/g,alternative:"Ae"},{letter:/[\u00F6]/g,alternative:"oe"},{letter:/[\u00D6]/g,alternative:"Oe"},{letter:/[\u00E9]/g,alternative:"e"},{letter:/[\u00C9]/g,alternative:"E"},{letter:/[\u00E0]/g,alternative:"a"},{letter:/[\u00C0]/g,alternative:"A"}],fi:[{letter:/[\u00E5]/g,alternative:"aa"},{letter:/[\u00C5]/g,alternative:"Aa"},{letter:/[\u00E4]/g,alternative:"a"},{letter:/[\u00C4]/g,alternative:"A"},{letter:/[\u00F6]/g,alternative:"o"},{letter:/[\u00D6]/g,alternative:"O"},{letter:/[\u017E]/g,alternative:"zh"},{letter:/[\u017D]/g,alternative:"Zh"},{letter:/[\u0161]/g,alternative:"sh"},{letter:/[\u0160]/g,alternative:"Sh"}],da:[{letter:/[\u00E5]/g,alternative:"aa"},{letter:/[\u00C5]/g,alternative:"Aa"},{letter:/[\u00E6\u04D5]/g,alternative:"ae"},{letter:/[\u00C6\u04D4]/g,alternative:"Ae"},{letter:/[\u00C4]/g,alternative:"Ae"},{letter:/[\u00F8]/g,alternative:"oe"},{letter:/[\u00D8]/g,alternative:"Oe"},{letter:/[\u00E9]/g,alternative:"e"},{letter:/[\u00C9]/g,alternative:"E"}],tr:[{letter:/[\u00E7]/g,alternative:"c"},{letter:/[\u00C7]/g,alternative:"C"},{letter:/[\u011F]/g,alternative:"g"},{letter:/[\u011E]/g,alternative:"G"},{letter:/[\u00F6]/g,alternative:"o"},{letter:/[\u00D6]/g,alternative:"O"},{letter:/[\u015F]/g,alternative:"s"},{letter:/[\u015E]/g,alternative:"S"},{letter:/[\u00E2]/g,alternative:"a"},{letter:/[\u00C2]/g,alternative:"A"},{letter:/[\u0131\u00EE]/g,alternative:"i"},{letter:/[\u0130\u00CE]/g,alternative:"I"},{letter:/[\u00FC\u00FB]/g,alternative:"u"},{letter:/[\u00DC\u00DB]/g,alternative:"U"}],lv:[{letter:/[\u0101]/g,alternative:"a"},{letter:/[\u0100]/g,alternative:"A"},{letter:/[\u010D]/g,alternative:"c"},{letter:/[\u010C]/g,alternative:"C"},{letter:/[\u0113]/g,alternative:"e"},{letter:/[\u0112]/g,alternative:"E"},{letter:/[\u0123]/g,alternative:"g"},{letter:/[\u0122]/g,alternative:"G"},{letter:/[\u012B]/g,alternative:"i"},{letter:/[\u012A]/g,alternative:"I"},{letter:/[\u0137]/g,alternative:"k"},{letter:/[\u0136]/g,alternative:"K"},{letter:/[\u013C]/g,alternative:"l"},{letter:/[\u013B]/g,alternative:"L"},{letter:/[\u0146]/g,alternative:"n"},{letter:/[\u0145]/g,alternative:"N"},{letter:/[\u0161]/g,alternative:"s"},{letter:/[\u0160]/g,alternative:"S"},{letter:/[\u016B]/g,alternative:"u"},{letter:/[\u016A]/g,alternative:"U"},{letter:/[\u017E]/g,alternative:"z"},{letter:/[\u017D]/g,alternative:"Z"}],is:[{letter:/[\u00E1]/g,alternative:"a"},{letter:/[\u00C1]/g,alternative:"A"},{letter:/[\u00F0]/g,alternative:"d"},{letter:/[\u00D0]/g,alternative:"D"},{letter:/[\u00E9]/g,alternative:"e"},{letter:/[\u00C9]/g,alternative:"E"},{letter:/[\u00ED]/g,alternative:"i"},{letter:/[\u00CD]/g,alternative:"I"},{letter:/[\u00F3\u00F6]/g,alternative:"o"},{letter:/[\u00D3\u00D6]/g,alternative:"O"},{letter:/[\u00FA]/g,alternative:"u"},{letter:/[\u00DA]/g,alternative:"U"},{letter:/[\u00FD]/g,alternative:"y"},{letter:/[\u00DD]/g,alternative:"Y"},{letter:/[\u00FE]/g,alternative:"th"},{letter:/[\u00DE]/g,alternative:"Th"},{letter:/[\u00E6\u04D5]/g,alternative:"ae"},{letter:/[\u00C6\u04D4]/g,alternative:"Ae"}],fa:[{letter:/[\u00E1]/g,alternative:"a"},{letter:/[\u00C1]/g,alternative:"A"},{letter:/[\u00F0]/g,alternative:"d"},{letter:/[\u00D0]/g,alternative:"D"},{letter:/[\u00ED]/g,alternative:"i"},{letter:/[\u00CD]/g,alternative:"I"},{letter:/[\u00FD]/g,alternative:"y"},{letter:/[\u00DD]/g,alternative:"Y"},{letter:/[\u00FA]/g,alternative:"u"},{letter:/[\u00DA]/g,alternative:"U"},{letter:/[\u00F3\u00F8]/g,alternative:"o"},{letter:/[\u00D3\u00D8]/g,alternative:"O"},{letter:/[\u00E6\u04D5]/g,alternative:"ae"},{letter:/[\u00C6\u04D4]/g,alternative:"Ae"}],cs:[{letter:/[\u00E1]/g,alternative:"a"},{letter:/[\u00C1]/g,alternative:"A"},{letter:/[\u010D]/g,alternative:"c"},{letter:/[\u010C]/g,alternative:"C"},{letter:/[\u010F]/g,alternative:"d"},{letter:/[\u010E]/g,alternative:"D"},{letter:/[\u00ED]/g,alternative:"i"},{letter:/[\u00CD]/g,alternative:"I"},{letter:/[\u0148]/g,alternative:"n"},{letter:/[\u0147]/g,alternative:"N"},{letter:/[\u00F3]/g,alternative:"o"},{letter:/[\u00D3]/g,alternative:"O"},{letter:/[\u0159]/g,alternative:"r"},{letter:/[\u0158]/g,alternative:"R"},{letter:/[\u0161]/g,alternative:"s"},{letter:/[\u0160]/g,alternative:"S"},{letter:/[\u0165]/g,alternative:"t"},{letter:/[\u0164]/g,alternative:"T"},{letter:/[\u00FD]/g,alternative:"y"},{letter:/[\u00DD]/g,alternative:"Y"},{letter:/[\u017E]/g,alternative:"z"},{letter:/[\u017D]/g,alternative:"Z"},{letter:/[\u00E9\u011B]/g,alternative:"e"},{letter:/[\u00C9\u011A]/g,alternative:"E"},{letter:/[\u00FA\u016F]/g,alternative:"u"},{letter:/[\u00DA\u016E]/g,alternative:"U"}],ru:[{letter:/[\u0430]/g,alternative:"a"},{letter:/[\u0410]/g,alternative:"A"},{letter:/[\u0431]/g,alternative:"b"},{letter:/[\u0411]/g,alternative:"B"},{letter:/[\u0432]/g,alternative:"v"},{letter:/[\u0412]/g,alternative:"V"},{letter:/[\u0433]/g,alternative:"g"},{letter:/[\u0413]/g,alternative:"G"},{letter:/[\u0434]/g,alternative:"d"},{letter:/[\u0414]/g,alternative:"D"},{letter:/[\u0435]/g,alternative:"e"},{letter:/[\u0415]/g,alternative:"E"},{letter:/[\u0436]/g,alternative:"zh"},{letter:/[\u0416]/g,alternative:"Zh"},{letter:/[\u0437]/g,alternative:"z"},{letter:/[\u0417]/g,alternative:"Z"},{letter:/[\u0456\u0438\u0439]/g,alternative:"i"},{letter:/[\u0406\u0418\u0419]/g,alternative:"I"},{letter:/[\u043A]/g,alternative:"k"},{letter:/[\u041A]/g,alternative:"K"},{letter:/[\u043B]/g,alternative:"l"},{letter:/[\u041B]/g,alternative:"L"},{letter:/[\u043C]/g,alternative:"m"},{letter:/[\u041C]/g,alternative:"M"},{letter:/[\u043D]/g,alternative:"n"},{letter:/[\u041D]/g,alternative:"N"},{letter:/[\u0440]/g,alternative:"r"},{letter:/[\u0420]/g,alternative:"R"},{letter:/[\u043E]/g,alternative:"o"},{letter:/[\u041E]/g,alternative:"O"},{letter:/[\u043F]/g,alternative:"p"},{letter:/[\u041F]/g,alternative:"P"},{letter:/[\u0441]/g,alternative:"s"},{letter:/[\u0421]/g,alternative:"S"},{letter:/[\u0442]/g,alternative:"t"},{letter:/[\u0422]/g,alternative:"T"},{letter:/[\u0443]/g,alternative:"u"},{letter:/[\u0423]/g,alternative:"U"},{letter:/[\u0444]/g,alternative:"f"},{letter:/[\u0424]/g,alternative:"F"},{letter:/[\u0445]/g,alternative:"kh"},{letter:/[\u0425]/g,alternative:"Kh"},{letter:/[\u0446]/g,alternative:"ts"},{letter:/[\u0426]/g,alternative:"Ts"},{letter:/[\u0447]/g,alternative:"ch"},{letter:/[\u0427]/g,alternative:"Ch"},{letter:/[\u0448]/g,alternative:"sh"},{letter:/[\u0428]/g,alternative:"Sh"},{letter:/[\u0449]/g,alternative:"shch"},{letter:/[\u0429]/g,alternative:"Shch"},{letter:/[\u044A]/g,alternative:"ie"},{letter:/[\u042A]/g,alternative:"Ie"},{letter:/[\u044B]/g,alternative:"y"},{letter:/[\u042B]/g,alternative:"Y"},{letter:/[\u044C]/g,alternative:""},{letter:/[\u042C]/g,alternative:""},{letter:/[\u0451\u044D]/g,alternative:"e"},{letter:/[\u0401\u042D]/g,alternative:"E"},{letter:/[\u044E]/g,alternative:"iu"},{letter:/[\u042E]/g,alternative:"Iu"},{letter:/[\u044F]/g,alternative:"ia"},{letter:/[\u042F]/g,alternative:"Ia"}],eo:[{letter:/[\u0109]/g,alternative:"ch"},{letter:/[\u0108]/g,alternative:"Ch"},{letter:/[\u011d]/g,alternative:"gh"},{letter:/[\u011c]/g,alternative:"Gh"},{letter:/[\u0125]/g,alternative:"hx"},{letter:/[\u0124]/g,alternative:"Hx"},{letter:/[\u0135]/g,alternative:"jx"},{letter:/[\u0134]/g,alternative:"Jx"},{letter:/[\u015d]/g,alternative:"sx"},{letter:/[\u015c]/g,alternative:"Sx"},{letter:/[\u016d]/g,alternative:"ux"},{letter:/[\u016c]/g,alternative:"Ux"}],af:[{letter:/[\u00E8\u00EA\u00EB]/g,alternative:"e"},{letter:/[\u00CB\u00C8\u00CA]/g,alternative:"E"},{letter:/[\u00EE\u00EF]/g,alternative:"i"},{letter:/[\u00CE\u00CF]/g,alternative:"I"},{letter:/[\u00F4\u00F6]/g,alternative:"o"},{letter:/[\u00D4\u00D6]/g,alternative:"O"},{letter:/[\u00FB\u00FC]/g,alternative:"u"},{letter:/[\u00DB\u00DC]/g,alternative:"U"}],ca:[{letter:/[\u00E0]/g,alternative:"a"},{letter:/[\u00C0]/g,alternative:"A"},{letter:/[\u00E9|\u00E8]/g,alternative:"e"},{letter:/[\u00C9|\u00C8]/g,alternative:"E"},{letter:/[\u00ED|\u00EF]/g,alternative:"i"},{letter:/[\u00CD|\u00CF]/g,alternative:"I"},{letter:/[\u00F3|\u00F2]/g,alternative:"o"},{letter:/[\u00D3|\u00D2]/g,alternative:"O"},{letter:/[\u00FA|\u00FC]/g,alternative:"u"},{letter:/[\u00DA|\u00DC]/g,alternative:"U"},{letter:/[\u00E7]/g,alternative:"c"},{letter:/[\u00C7]/g,alternative:"C"}],ast:[{letter:/[\u00F1]/g,alternative:"n"},{letter:/[\u00D1]/g,alternative:"N"}],an:[{letter:/[\u00FC]/g,alternative:"u"},{letter:/[\u00F1]/g,alternative:"ny"},{letter:/[\u00E7]/g,alternative:"c"},{letter:/[\u00ED]/g,alternative:"i"},{letter:/[\u00F3]/g,alternative:"o"},{letter:/[\u00E1]/g,alternative:"a"},{letter:/[\u00DC]/g,alternative:"U"},{letter:/[\u00D1]/g,alternative:"Ny"},{letter:/[\u00C7]/g,alternative:"C"},{letter:/[\u00CD]/g,alternative:"I"},{letter:/[\u00D3]/g,alternative:"O"},{letter:/[\u00C1]/g,alternative:"A"}],ay:[{letter:/(([\u00EF])|([\u00ED]))/g,alternative:"i"},{letter:/(([\u00CF])|([\u00CD]))/g,alternative:"I"},{letter:/[\u00E4]/g,alternative:"a"},{letter:/[\u00C4]/g,alternative:"A"},{letter:/[\u00FC]/g,alternative:"u"},{letter:/[\u00DC]/g,alternative:"U"},{letter:/[\u0027]/g,alternative:""},{letter:/[\u00F1]/g,alternative:"n"},{letter:/[\u00D1]/g,alternative:"N"}],en:[{letter:/[\u00E6\u04D5]/g,alternative:"ae"},{letter:/[\u00C6\u04D4]/g,alternative:"Ae"},{letter:/[\u0153]/g,alternative:"oe"},{letter:/[\u0152]/g,alternative:"Oe"},{letter:/[\u00EB\u00E9]/g,alternative:"e"},{letter:/[\u00C9\u00CB]/g,alternative:"E"},{letter:/[\u00F4\u00F6]/g,alternative:"o"},{letter:/[\u00D4\u00D6]/g,alternative:"O"},{letter:/[\u00EF]/g,alternative:"i"},{letter:/[\u00CF]/g,alternative:"I"},{letter:/[\u00E7]/g,alternative:"c"},{letter:/[\u00C7]/g,alternative:"C"},{letter:/[\u00F1]/g,alternative:"n"},{letter:/[\u00D1]/g,alternative:"N"},{letter:/[\u00FC]/g,alternative:"u"},{letter:/[\u00DC]/g,alternative:"U"},{letter:/[\u00E4]/g,alternative:"a"},{letter:/[\u00C4]/g,alternative:"A"}],fr:[{letter:/[\u00E6\u04D5]/g,alternative:"ae"},{letter:/[\u00C6\u04D4]/g,alternative:"Ae"},{letter:/[\u0153]/g,alternative:"oe"},{letter:/[\u0152]/g,alternative:"Oe"},{letter:/[\u00E9\u00E8\u00EB\u00EA]/g,alternative:"e"},{letter:/[\u00C9\u00C8\u00CB\u00CA]/g,alternative:"E"},{letter:/[\u00E0\u00E2]/g,alternative:"a"},{letter:/[\u00C0\u00C2]/g,alternative:"A"},{letter:/[\u00EF\u00EE]/g,alternative:"i"},{letter:/[\u00CF\u00CE]/g,alternative:"I"},{letter:/[\u00F9\u00FB\u00FC]/g,alternative:"u"},{letter:/[\u00D9\u00DB\u00DC]/g,alternative:"U"},{letter:/[\u00F4]/g,alternative:"o"},{letter:/[\u00D4]/g,alternative:"O"},{letter:/[\u00FF]/g,alternative:"y"},{letter:/[\u0178]/g,alternative:"Y"},{letter:/[\u00E7]/g,alternative:"c"},{letter:/[\u00C7]/g,alternative:"C"},{letter:/[\u00F1]/g,alternative:"n"},{letter:/[\u00D1]/g,alternative:"N"}],it:[{letter:/[\u00E0]/g,alternative:"a"},{letter:/[\u00C0]/g,alternative:"A"},{letter:/[\u00E9\u00E8]/g,alternative:"e"},{letter:/[\u00C9\u00C8]/g,alternative:"E"},{letter:/[\u00EC\u00ED\u00EE]/g,alternative:"i"},{letter:/[\u00CC\u00CD\u00CE]/g,alternative:"I"},{letter:/[\u00F3\u00F2]/g,alternative:"o"},{letter:/[\u00D3\u00D2]/g,alternative:"O"},{letter:/[\u00F9\u00FA]/g,alternative:"u"},{letter:/[\u00D9\u00DA]/g,alternative:"U"}],nl:[{letter:/[\u00E7]/g,alternative:"c"},{letter:/[\u00C7]/g,alternative:"C"},{letter:/[\u00F1]/g,alternative:"n"},{letter:/[\u00D1]/g,alternative:"N"},{letter:/[\u00E9\u00E8\u00EA\u00EB]/g,alternative:"e"},{letter:/[\u00C9\u00C8\u00CA\u00CB]/g,alternative:"E"},{letter:/[\u00F4\u00F6]/g,alternative:"o"},{letter:/[\u00D4\u00D6]/g,alternative:"O"},{letter:/[\u00EF]/g,alternative:"i"},{letter:/[\u00CF]/g,alternative:"I"},{letter:/[\u00FC]/g,alternative:"u"},{letter:/[\u00DC]/g,alternative:"U"},{letter:/[\u00E4]/g,alternative:"a"},{letter:/[\u00C4]/g,alternative:"A"}],bm:[{letter:/[\u025B]/g,alternative:"e"},{letter:/[\u0190]/g,alternative:"E"},{letter:/[\u0272]/g,alternative:"ny"},{letter:/[\u019D]/g,alternative:"Ny"},{letter:/[\u014B]/g,alternative:"ng"},{letter:/[\u014A]/g,alternative:"Ng"},{letter:/[\u0254]/g,alternative:"o"},{letter:/[\u0186]/g,alternative:"O"}],uk:[{letter:/[\u0431]/g,alternative:"b"},{letter:/[\u0411]/g,alternative:"B"},{letter:/[\u0432]/g,alternative:"v"},{letter:/[\u0412]/g,alternative:"V"},{letter:/[\u0433]/g,alternative:"h"},{letter:/[\u0413]/g,alternative:"H"},{letter:/[\u0491]/g,alternative:"g"},{letter:/[\u0490]/g,alternative:"G"},{letter:/[\u0434]/g,alternative:"d"},{letter:/[\u0414]/g,alternative:"D"},{letter:/[\u043A]/g,alternative:"k"},{letter:/[\u041A]/g,alternative:"K"},{letter:/[\u043B]/g,alternative:"l"},{letter:/[\u041B]/g,alternative:"L"},{letter:/[\u043C]/g,alternative:"m"},{letter:/[\u041C]/g,alternative:"M"},{letter:/[\u0070]/g,alternative:"r"},{letter:/[\u0050]/g,alternative:"R"},{letter:/[\u043F]/g,alternative:"p"},{letter:/[\u041F]/g,alternative:"P"},{letter:/[\u0441]/g,alternative:"s"},{letter:/[\u0421]/g,alternative:"S"},{letter:/[\u0442]/g,alternative:"t"},{letter:/[\u0422]/g,alternative:"T"},{letter:/[\u0443]/g,alternative:"u"},{letter:/[\u0423]/g,alternative:"U"},{letter:/[\u0444]/g,alternative:"f"},{letter:/[\u0424]/g,alternative:"F"},{letter:/[\u0445]/g,alternative:"kh"},{letter:/[\u0425]/g,alternative:"Kh"},{letter:/[\u0446]/g,alternative:"ts"},{letter:/[\u0426]/g,alternative:"Ts"},{letter:/[\u0447]/g,alternative:"ch"},{letter:/[\u0427]/g,alternative:"Ch"},{letter:/[\u0448]/g,alternative:"sh"},{letter:/[\u0428]/g,alternative:"Sh"},{letter:/[\u0449]/g,alternative:"shch"},{letter:/[\u0429]/g,alternative:"Shch"},{letter:/[\u044C\u042C]/g,alternative:""},{letter:/[\u0436]/g,alternative:"zh"},{letter:/[\u0416]/g,alternative:"Zh"},{letter:/[\u0437]/g,alternative:"z"},{letter:/[\u0417]/g,alternative:"Z"},{letter:/[\u0438]/g,alternative:"y"},{letter:/[\u0418]/g,alternative:"Y"},{letter:/^[\u0454]/g,alternative:"ye"},{letter:/[\s][\u0454]/g,alternative:" ye"},{letter:/[\u0454]/g,alternative:"ie"},{letter:/^[\u0404]/g,alternative:"Ye"},{letter:/[\s][\u0404]/g,alternative:" Ye"},{letter:/[\u0404]/g,alternative:"IE"},{letter:/^[\u0457]/g,alternative:"yi"},{letter:/[\s][\u0457]/g,alternative:" yi"},{letter:/[\u0457]/g,alternative:"i"},{letter:/^[\u0407]/g,alternative:"Yi"},{letter:/[\s][\u0407]/g,alternative:" Yi"},{letter:/[\u0407]/g,alternative:"I"},{letter:/^[\u0439]/g,alternative:"y"},{letter:/[\s][\u0439]/g,alternative:" y"},{letter:/[\u0439]/g,alternative:"i"},{letter:/^[\u0419]/g,alternative:"Y"},{letter:/[\s][\u0419]/g,alternative:" Y"},{letter:/[\u0419]/g,alternative:"I"},{letter:/^[\u044E]/g,alternative:"yu"},{letter:/[\s][\u044E]/g,alternative:" yu"},{letter:/[\u044E]/g,alternative:"iu"},{letter:/^[\u042E]/g,alternative:"Yu"},{letter:/[\s][\u042E]/g,alternative:" Yu"},{letter:/[\u042E]/g,alternative:"IU"},{letter:/^[\u044F]/g,alternative:"ya"},{letter:/[\s][\u044F]/g,alternative:" ya"},{letter:/[\u044F]/g,alternative:"ia"},{letter:/^[\u042F]/g,alternative:"Ya"},{letter:/[\s][\u042F]/g,alternative:" Ya"},{letter:/[\u042F]/g,alternative:"IA"}],br:[{letter:/\u0063\u0027\u0068/g,alternative:"ch"},{letter:/\u0043\u0027\u0048/g,alternative:"CH"},{letter:/[\u00e2]/g,alternative:"a"},{letter:/[\u00c2]/g,alternative:"A"},{letter:/[\u00ea]/g,alternative:"e"},{letter:/[\u00ca]/g,alternative:"E"},{letter:/[\u00ee]/g,alternative:"i"},{letter:/[\u00ce]/g,alternative:"I"},{letter:/[\u00f4]/g,alternative:"o"},{letter:/[\u00d4]/g,alternative:"O"},{letter:/[\u00fb\u00f9\u00fc]/g,alternative:"u"},{letter:/[\u00db\u00d9\u00dc]/g,alternative:"U"},{letter:/[\u00f1]/g,alternative:"n"},{letter:/[\u00d1]/g,alternative:"N"}],ch:[{letter:/[\u0027]/g,alternative:""},{letter:/[\u00e5]/g,alternative:"a"},{letter:/[\u00c5]/g,alternative:"A"},{letter:/[\u00f1]/g,alternative:"n"},{letter:/[\u00d1]/g,alternative:"N"}],co:[{letter:/[\u00e2\u00e0]/g,alternative:"a"},{letter:/[\u00c2\u00c0]/g,alternative:"A"},{letter:/[\u00e6\u04d5]/g,alternative:"ae"},{letter:/[\u00c6\u04d4]/g,alternative:"Ae"},{letter:/[\u00e7]/g,alternative:"c"},{letter:/[\u00c7]/g,alternative:"C"},{letter:/[\u00e9\u00ea\u00e8\u00eb]/g,alternative:"e"},{letter:/[\u00c9\u00ca\u00c8\u00cb]/g,alternative:"E"},{letter:/[\u00ec\u00ee\u00ef]/g,alternative:"i"},{letter:/[\u00cc\u00ce\u00cf]/g,alternative:"I"},{letter:/[\u00f1]/g,alternative:"n"},{letter:/[\u00d1]/g,alternative:"N"},{letter:/[\u00f4\u00f2]/g,alternative:"o"},{letter:/[\u00d4\u00d2]/g,alternative:"O"},{letter:/[\u0153]/g,alternative:"oe"},{letter:/[\u0152]]/g,alternative:"Oe"},{letter:/[\u00f9\u00fc]/g,alternative:"u"},{letter:/[\u00d9\u00dc]/g,alternative:"U"},{letter:/[\u00ff]/g,alternative:"y"},{letter:/[\u0178]/g,alternative:"Y"}],csb:[{letter:/[\u0105\u00e3]/g,alternative:"a"},{letter:/[\u0104\u00c3]/g,alternative:"A"},{letter:/[\u00e9\u00eb]/g,alternative:"e"},{letter:/[\u00c9\u00cb]/g,alternative:"E"},{letter:/[\u0142]/g,alternative:"l"},{letter:/[\u0141]/g,alternative:"L"},{letter:/[\u0144]/g,alternative:"n"},{letter:/[\u0143]/g,alternative:"N"},{letter:/[\u00f2\u00f3\u00f4]/g,alternative:"o"},{letter:/[\u00d2\u00d3\u00d4]/g,alternative:"O"},{letter:/[\u00f9]/g,alternative:"u"},{letter:/[\u00d9]/g,alternative:"U"},{letter:/[\u017c]/g,alternative:"z"},{letter:/[\u017b]/g,alternative:"Z"}],cy:[{letter:/[\u00e2]/g,alternative:"a"},{letter:/[\u00c2]/g,alternative:"A"},{letter:/[\u00ea]/g,alternative:"e"},{letter:/[\u00ca]/g,alternative:"E"},{letter:/[\u00ee]/g,alternative:"i"},{letter:/[\u00ce]/g,alternative:"I"},{letter:/[\u00f4]/g,alternative:"o"},{letter:/[\u00d4]/g,alternative:"O"},{letter:/[\u00fb]/g,alternative:"u"},{letter:/[\u00db]/g,alternative:"U"},{letter:/[\u0175]/g,alternative:"w"},{letter:/[\u0174]/g,alternative:"W"},{letter:/[\u0177]/g,alternative:"y"},{letter:/[\u0176]/g,alternative:"Y"}],ee:[{letter:/[\u0256]/g,alternative:"d"},{letter:/[\u0189]/g,alternative:"D"},{letter:/[\u025b]/g,alternative:"e"},{letter:/[\u0190]/g,alternative:"E"},{letter:/[\u0192]/g,alternative:"f"},{letter:/[\u0191]/g,alternative:"F"},{letter:/[\u0263]/g,alternative:"g"},{letter:/[\u0194]/g,alternative:"G"},{letter:/[\u014b]/g,alternative:"ng"},{letter:/[\u014a]/g,alternative:"Ng"},{letter:/[\u0254]/g,alternative:"o"},{letter:/[\u0186]/g,alternative:"O"},{letter:/[\u028b]/g,alternative:"w"},{letter:/[\u01b2]/g,alternative:"W"},{letter:/\u0061\u0303/g,alternative:"a"},{letter:/[\u00e1\u00e0\u01ce\u00e2\u00e3]/g,alternative:"a"},{letter:/\u0041\u0303/g,alternative:"A"},{letter:/[\u00c1\u00c0\u01cd\u00c2\u00c3]/g,alternative:"A"},{letter:/[\u00e9\u00e8\u011b\u00ea]/g,alternative:"e"},{letter:/[\u00c9\u00c8\u011a\u00ca]/g,alternative:"E"},{letter:/[\u00f3\u00f2\u01d2\u00f4]/g,alternative:"o"},{letter:/[\u00d3\u00d2\u01d1\u00d4]/g,alternative:"O"},{letter:/[\u00fa\u00f9\u01d4\u00fb]/g,alternative:"u"},{letter:/[\u00da\u00d9\u01d3\u00db]/g,alternative:"U"},{letter:/[\u00ed\u00ec\u01d0\u00ee]/g,alternative:"i"},{letter:/[\u00cd\u00cc\u01cf\u00ce]/g,alternative:"I"}],et:[{letter:/[\u0161]/g,alternative:"sh"},{letter:/[\u0160]/g,alternative:"Sh"},{letter:/[\u017e]/g,alternative:"zh"},{letter:/[\u017d]/g,alternative:"Zh"},{letter:/[\u00f5\u00f6]/g,alternative:"o"},{letter:/[\u00d6\u00d5]/g,alternative:"O"},{letter:/[\u00e4]/g,alternative:"a"},{letter:/[\u00c4]/g,alternative:"A"},{letter:/[\u00fc]/g,alternative:"u"},{letter:/[\u00dc]/g,alternative:"U"}],eu:[{letter:/[\u00f1]/g,alternative:"n"},{letter:/[\u00d1]/g,alternative:"N"},{letter:/[\u00e7]/g,alternative:"c"},{letter:/[\u00c7]/g,alternative:"C"},{letter:/[\u00fc]/g,alternative:"u"},{letter:/[\u00dc]/g,alternative:"U"}],fuc:[{letter:/[\u0253]/g,alternative:"b"},{letter:/[\u0181]/g,alternative:"B"},{letter:/[\u0257]/g,alternative:"d"},{letter:/[\u018a]/g,alternative:"D"},{letter:/[\u014b]/g,alternative:"ng"},{letter:/[\u014a]/g,alternative:"Ng"},{letter:/[\u0272\u00f1]/g,alternative:"ny"},{letter:/[\u019d\u00d1]/g,alternative:"Ny"},{letter:/[\u01b4]/g,alternative:"y"},{letter:/[\u01b3]/g,alternative:"Y"},{letter:/[\u0260]/g,alternative:"g"},{letter:/[\u0193]/g,alternative:"G"}],fj:[{letter:/[\u0101]/g,alternative:"a"},{letter:/[\u0100]/g,alternative:"A"},{letter:/[\u0113]/g,alternative:"e"},{letter:/[\u0112]/g,alternative:"E"},{letter:/[\u012b]/g,alternative:"i"},{letter:/[\u012a]/g,alternative:"I"},{letter:/[\u016b]/g,alternative:"u"},{letter:/[\u016a]/g,alternative:"U"},{letter:/[\u014d]/g,alternative:"o"},{letter:/[\u014c]/g,alternative:"O"}],frp:[{letter:/[\u00e2]/g,alternative:"a"},{letter:/[\u00c2]/g,alternative:"A"},{letter:/[\u00ea\u00e8\u00e9]/g,alternative:"e"},{letter:/[\u00ca\u00c8\u00c9]/g,alternative:"E"},{letter:/[\u00ee]/g,alternative:"i"},{letter:/[\u00ce]/g,alternative:"I"},{letter:/[\u00fb\u00fc]/g,alternative:"u"},{letter:/[\u00db\u00dc]/g,alternative:"U"},{letter:/[\u00f4]/g,alternative:"o"},{letter:/[\u00d4]/g,alternative:"O"}],fur:[{letter:/[\u00E7]/g,alternative:"c"},{letter:/[\u00C7]/g,alternative:"C"},{letter:/[\u00e0\u00e2]/g,alternative:"a"},{letter:/[\u00c0\u00c2]/g,alternative:"A"},{letter:/[\u00e8\u00ea]/g,alternative:"e"},{letter:/[\u00c8\u00ca]/g,alternative:"E"},{letter:/[\u00ec\u00ee]/g,alternative:"i"},{letter:/[\u00cc\u00ce]/g,alternative:"I"},{letter:/[\u00f2\u00f4]/g,alternative:"o"},{letter:/[\u00d2\u00d4]/g,alternative:"O"},{letter:/[\u00f9\u00fb]/g,alternative:"u"},{letter:/[\u00d9\u00db]/g,alternative:"U"},{letter:/[\u010d]/g,alternative:"c"},{letter:/[\u010c]/g,alternative:"C"},{letter:/[\u011f]/g,alternative:"g"},{letter:/[\u011e]/g,alternative:"G"},{letter:/[\u0161]/g,alternative:"s"},{letter:/[\u0160]/g,alternative:"S"}],fy:[{letter:/[\u00e2\u0101\u00e4\u00e5]/g,alternative:"a"},{letter:/[\u00c2\u0100\u00c4\u00c5]/g,alternative:"A"},{letter:/[\u00ea\u00e9\u0113]/g,alternative:"e"},{letter:/[\u00ca\u00c9\u0112]/g,alternative:"E"},{letter:/[\u00f4\u00f6]/g,alternative:"o"},{letter:/[\u00d4\u00d6]/g,alternative:"O"},{letter:/[\u00fa\u00fb\u00fc]/g,alternative:"u"},{letter:/[\u00da\u00db\u00dc]/g,alternative:"U"},{letter:/[\u00ed]/g,alternative:"i"},{letter:/[\u00cd]/g,alternative:"I"},{letter:/[\u0111\u00f0]/g,alternative:"d"},{letter:/[\u0110\u00d0]/g,alternative:"D"}],ga:[{letter:/[\u00e1]/g,alternative:"a"},{letter:/[\u00c1]/g,alternative:"A"},{letter:/[\u00e9]/g,alternative:"e"},{letter:/[\u00c9]/g,alternative:"E"},{letter:/[\u00f3]/g,alternative:"o"},{letter:/[\u00d3]/g,alternative:"O"},{letter:/[\u00fa]/g,alternative:"u"},{letter:/[\u00da]/g,alternative:"U"},{letter:/[\u00ed]/g,alternative:"i"},{letter:/[\u00cd]/g,alternative:"I"}],gd:[{letter:/[\u00e0]/g,alternative:"a"},{letter:/[\u00c0]/g,alternative:"A"},{letter:/[\u00e8]/g,alternative:"e"},{letter:/[\u00c8]/g,alternative:"E"},{letter:/[\u00f2]/g,alternative:"o"},{letter:/[\u00d2]/g,alternative:"O"},{letter:/[\u00f9]/g,alternative:"u"},{letter:/[\u00d9]/g,alternative:"U"},{letter:/[\u00ec]/g,alternative:"i"},{letter:/[\u00cc]/g,alternative:"I"}],gl:[{letter:/[\u00e1\u00e0]/g,alternative:"a"},{letter:/[\u00c1\u00c0]/g,alternative:"A"},{letter:/[\u00e9\u00ea]/g,alternative:"e"},{letter:/[\u00c9\u00ca]/g,alternative:"E"},{letter:/[\u00ed\u00ef]/g,alternative:"i"},{letter:/[\u00cd\u00cf]/g,alternative:"I"},{letter:/[\u00f3]/g,alternative:"o"},{letter:/[\u00d3]/g,alternative:"O"},{letter:/[\u00fa\u00fc]/g,alternative:"u"},{letter:/[\u00da\u00dc]/g,alternative:"U"},{letter:/[\u00e7]/g,alternative:"c"},{letter:/[\u00c7]/g,alternative:"C"},{letter:/[\u00f1]/g,alternative:"n"},{letter:/[\u00d1]/g,alternative:"N"}],gn:[{letter:/[\u2019]/g,alternative:""},{letter:/\u0067\u0303/g,alternative:"g"},{letter:/\u0047\u0303/g,alternative:"G"},{letter:/[\u00e3]/g,alternative:"a"},{letter:/[\u00c3]/g,alternative:"A"},{letter:/[\u1ebd]/g,alternative:"e"},{letter:/[\u1ebc]/g,alternative:"E"},{letter:/[\u0129]/g,alternative:"i"},{letter:/[\u0128]/g,alternative:"I"},{letter:/[\u00f5]/g,alternative:"o"},{letter:/[\u00d5]/g,alternative:"O"},{letter:/[\u00f1]/g,alternative:"n"},{letter:/[\u00d1]/g,alternative:"N"},{letter:/[\u0169]/g,alternative:"u"},{letter:/[\u0168]/g,alternative:"U"},{letter:/[\u1ef9]/g,alternative:"y"},{letter:/[\u1ef8]/g,alternative:"Y"}],gsw:[{letter:/[\u00e4]/g,alternative:"a"},{letter:/[\u00c4]/g,alternative:"A"},{letter:/[\u00f6]/g,alternative:"o"},{letter:/[\u00d6]/g,alternative:"O"},{letter:/[\u00fc]/g,alternative:"u"},{letter:/[\u00dc]/g,alternative:"U"}],hat:[{letter:/[\u00e8]/g,alternative:"e"},{letter:/[\u00c8]/g,alternative:"E"},{letter:/[\u00f2]/g,alternative:"o"},{letter:/[\u00d2]/g,alternative:"O"}],haw:[{letter:/[\u02bb\u0027\u2019]/g,alternative:""},{letter:/[\u0101]/g,alternative:"a"},{letter:/[\u0113]/g,alternative:"e"},{letter:/[\u012b]/g,alternative:"i"},{letter:/[\u014d]/g,alternative:"o"},{letter:/[\u016b]/g,alternative:"u"},{letter:/[\u0100]/g,alternative:"A"},{letter:/[\u0112]/g,alternative:"E"},{letter:/[\u012a]/g,alternative:"I"},{letter:/[\u014c]/g,alternative:"O"},{letter:/[\u016a]/g,alternative:"U"}],hr:[{letter:/[\u010d\u0107]/g,alternative:"c"},{letter:/[\u010c\u0106]/g,alternative:"C"},{letter:/[\u0111]/g,alternative:"dj"},{letter:/[\u0110]/g,alternative:"Dj"},{letter:/[\u0161]/g,alternative:"s"},{letter:/[\u0160]/g,alternative:"S"},{letter:/[\u017e]/g,alternative:"z"},{letter:/[\u017d]/g,alternative:"Z"},{letter:/[\u01c4]/g,alternative:"DZ"},{letter:/[\u01c5]/g,alternative:"Dz"},{letter:/[\u01c6]/g,alternative:"dz"}],ka:[{letter:/[\u10d0]/g,alternative:"a"},{letter:/[\u10d1]/g,alternative:"b"},{letter:/[\u10d2]/g,alternative:"g"},{letter:/[\u10d3]/g,alternative:"d"},{letter:/[\u10d4]/g,alternative:"e"},{letter:/[\u10d5]/g,alternative:"v"},{letter:/[\u10d6]/g,alternative:"z"},{letter:/[\u10d7]/g,alternative:"t"},{letter:/[\u10d8]/g,alternative:"i"},{letter:/[\u10d9]/g,alternative:"k"},{letter:/[\u10da]/g,alternative:"l"},{letter:/[\u10db]/g,alternative:"m"},{letter:/[\u10dc]/g,alternative:"n"},{letter:/[\u10dd]/g,alternative:"o"},{letter:/[\u10de]/g,alternative:"p"},{letter:/[\u10df]/g,alternative:"zh"},{letter:/[\u10e0]/g,alternative:"r"},{letter:/[\u10e1]/g,alternative:"s"},{letter:/[\u10e2]/g,alternative:"t"},{letter:/[\u10e3]/g,alternative:"u"},{letter:/[\u10e4]/g,alternative:"p"},{letter:/[\u10e5]/g,alternative:"k"},{letter:/[\u10e6]/g,alternative:"gh"},{letter:/[\u10e7]/g,alternative:"q"},{letter:/[\u10e8]/g,alternative:"sh"},{letter:/[\u10e9]/g,alternative:"ch"},{letter:/[\u10ea]/g,alternative:"ts"},{letter:/[\u10eb]/g,alternative:"dz"},{letter:/[\u10ec]/g,alternative:"ts"},{letter:/[\u10ed]/g,alternative:"ch"},{letter:/[\u10ee]/g,alternative:"kh"},{letter:/[\u10ef]/g,alternative:"j"},{letter:/[\u10f0]/g,alternative:"h"}],kal:[{letter:/[\u00E5]/g,alternative:"aa"},{letter:/[\u00C5]/g,alternative:"Aa"},{letter:/[\u00E6\u04D5]/g,alternative:"ae"},{letter:/[\u00C6\u04D4]/g,alternative:"Ae"},{letter:/[\u00C4]/g,alternative:"Ae"},{letter:/[\u00F8]/g,alternative:"oe"},{letter:/[\u00D8]/g,alternative:"Oe"}],kin:[{letter:/[\u2019\u0027]/g,alternative:""}],lb:[{letter:/[\u00e4]/g,alternative:"a"},{letter:/[\u00c4]/g,alternative:"A"},{letter:/[\u00eb\u00e9]/g,alternative:"e"},{letter:/[\u00cb\u00c9]/g,alternative:"E"}],li:[{letter:/[\u00e1\u00e2\u00e0\u00e4]/g,alternative:"a"},{letter:/[\u00c1\u00c2\u00c0\u00c4]/g,alternative:"A"},{letter:/[\u00eb\u00e8\u00ea]/g,alternative:"e"},{letter:/[\u00cb\u00c8\u00ca]/g,alternative:"E"},{letter:/[\u00f6\u00f3]/g,alternative:"o"},{letter:/[\u00d6\u00d3]/g,alternative:"O"}],lin:[{letter:/[\u00e1\u00e2\u01ce]/g,alternative:"a"},{letter:/[\u00c1\u00c2\u01cd]/g,alternative:"A"},{letter:/\u025b\u0301/g,alternative:"e"},{letter:/\u025b\u0302/g,alternative:"e"},{letter:/\u025b\u030c/g,alternative:"e"},{letter:/[\u00e9\u00ea\u011b\u025b]/g,alternative:"e"},{letter:/\u0190\u0301/g,alternative:"E"},{letter:/\u0190\u0302/g,alternative:"E"},{letter:/\u0190\u030c/g,alternative:"E"},{letter:/[\u00c9\u00ca\u011a\u0190]/g,alternative:"E"},{letter:/[\u00ed\u00ee\u01d0]/g,alternative:"i"},{letter:/[\u00cd\u00ce\u01cf]/g,alternative:"I"},{letter:/\u0254\u0301/g,alternative:"o"},{letter:/\u0254\u0302/g,alternative:"o"},{letter:/\u0254\u030c/g,alternative:"o"},{letter:/[\u00f3\u00f4\u01d2\u0254]/g,alternative:"o"},{letter:/\u0186\u0301/g,alternative:"O"},{letter:/\u0186\u0302/g,alternative:"O"},{letter:/\u0186\u030c/g,alternative:"O"},{letter:/[\u00d3\u00d4\u01d1\u0186]/g,alternative:"O"},{letter:/[\u00fa]/g,alternative:"u"},{letter:/[\u00da]/g,alternative:"U"}],lt:[{letter:/[\u0105]/g,alternative:"a"},{letter:/[\u0104]/g,alternative:"A"},{letter:/[\u010d]/g,alternative:"c"},{letter:/[\u010c]/g,alternative:"C"},{letter:/[\u0119\u0117]/g,alternative:"e"},{letter:/[\u0118\u0116]/g,alternative:"E"},{letter:/[\u012f]/g,alternative:"i"},{letter:/[\u012e]/g,alternative:"I"},{letter:/[\u0161]/g,alternative:"s"},{letter:/[\u0160]/g,alternative:"S"},{letter:/[\u0173\u016b]/g,alternative:"u"},{letter:/[\u0172\u016a]/g,alternative:"U"},{letter:/[\u017e]/g,alternative:"z"},{letter:/[\u017d]/g,alternative:"Z"}],mg:[{letter:/[\u00f4]/g,alternative:"ao"},{letter:/[\u00d4]/g,alternative:"Ao"}],mk:[{letter:/[\u0430]/g,alternative:"a"},{letter:/[\u0410]/g,alternative:"A"},{letter:/[\u0431]/g,alternative:"b"},{letter:/[\u0411]/g,alternative:"B"},{letter:/[\u0432]/g,alternative:"v"},{letter:/[\u0412]/g,alternative:"V"},{letter:/[\u0433]/g,alternative:"g"},{letter:/[\u0413]/g,alternative:"G"},{letter:/[\u0434]/g,alternative:"d"},{letter:/[\u0414]/g,alternative:"D"},{letter:/[\u0453]/g,alternative:"gj"},{letter:/[\u0403]/g,alternative:"Gj"},{letter:/[\u0435]/g,alternative:"e"},{letter:/[\u0415]/g,alternative:"E"},{letter:/[\u0436]/g,alternative:"zh"},{letter:/[\u0416]/g,alternative:"Zh"},{letter:/[\u0437]/g,alternative:"z"},{letter:/[\u0417]/g,alternative:"Z"},{letter:/[\u0455]/g,alternative:"dz"},{letter:/[\u0405]/g,alternative:"Dz"},{letter:/[\u0438]/g,alternative:"i"},{letter:/[\u0418]/g,alternative:"I"},{letter:/[\u0458]/g,alternative:"j"},{letter:/[\u0408]/g,alternative:"J"},{letter:/[\u043A]/g,alternative:"k"},{letter:/[\u041A]/g,alternative:"K"},{letter:/[\u043B]/g,alternative:"l"},{letter:/[\u041B]/g,alternative:"L"},{letter:/[\u0459]/g,alternative:"lj"},{letter:/[\u0409]/g,alternative:"Lj"},{letter:/[\u043C]/g,alternative:"m"},{letter:/[\u041C]/g,alternative:"M"},{letter:/[\u043D]/g,alternative:"n"},{letter:/[\u041D]/g,alternative:"N"},{letter:/[\u045A]/g,alternative:"nj"},{letter:/[\u040A]/g,alternative:"Nj"},{letter:/[\u043E]/g,alternative:"o"},{letter:/[\u041E]/g,alternative:"O"},{letter:/[\u0440]/g,alternative:"r"},{letter:/[\u0420]/g,alternative:"R"},{letter:/[\u043F]/g,alternative:"p"},{letter:/[\u041F]/g,alternative:"P"},{letter:/[\u0441]/g,alternative:"s"},{letter:/[\u0421]/g,alternative:"S"},{letter:/[\u0442]/g,alternative:"t"},{letter:/[\u0422]/g,alternative:"T"},{letter:/[\u045C]/g,alternative:"kj"},{letter:/[\u040C]/g,alternative:"Kj"},{letter:/[\u0443]/g,alternative:"u"},{letter:/[\u0423]/g,alternative:"U"},{letter:/[\u0444]/g,alternative:"f"},{letter:/[\u0424]/g,alternative:"F"},{letter:/[\u0445]/g,alternative:"h"},{letter:/[\u0425]/g,alternative:"H"},{letter:/[\u0446]/g,alternative:"c"},{letter:/[\u0426]/g,alternative:"C"},{letter:/[\u0447]/g,alternative:"ch"},{letter:/[\u0427]/g,alternative:"Ch"},{letter:/[\u045F]/g,alternative:"dj"},{letter:/[\u040F]/g,alternative:"Dj"},{letter:/[\u0448]/g,alternative:"sh"},{letter:/[\u0428]/g,alternative:"Sh"}],mri:[{letter:/[\u0101]/g,alternative:"aa"},{letter:/[\u0100]/g,alternative:"Aa"},{letter:/[\u0113]/g,alternative:"ee"},{letter:/[\u0112]/g,alternative:"Ee"},{letter:/[\u012b]/g,alternative:"ii"},{letter:/[\u012a]/g,alternative:"Ii"},{letter:/[\u014d]/g,alternative:"oo"},{letter:/[\u014c]/g,alternative:"Oo"},{letter:/[\u016b]/g,alternative:"uu"},{letter:/[\u016a]/g,alternative:"Uu"}],mwl:[{letter:/[\u00e7]/g,alternative:"c"},{letter:/[\u00c7]/g,alternative:"C"},{letter:/[\u00e1]/g,alternative:"a"},{letter:/[\u00c1]/g,alternative:"A"},{letter:/[\u00e9\u00ea]/g,alternative:"e"},{letter:/[\u00c9\u00ca]/g,alternative:"E"},{letter:/[\u00ed]/g,alternative:"i"},{letter:/[\u00cd]/g,alternative:"I"},{letter:/[\u00f3\u00f4]/g,alternative:"o"},{letter:/[\u00d3\u00d4]/g,alternative:"O"},{letter:/[\u00fa\u0169]/g,alternative:"u"},{letter:/[\u00da\u0168]/g,alternative:"U"}],oci:[{letter:/[\u00e7]/g,alternative:"c"},{letter:/[\u00c7]/g,alternative:"C"},{letter:/[\u00e0\u00e1]/g,alternative:"a"},{letter:/[\u00c0\u00c1]/g,alternative:"A"},{letter:/[\u00e8\u00e9]/g,alternative:"e"},{letter:/[\u00c8\u00c9]/g,alternative:"E"},{letter:/[\u00ed\u00ef]/g,alternative:"i"},{letter:/[\u00cd\u00cf]/g,alternative:"I"},{letter:/[\u00f2\u00f3]/g,alternative:"o"},{letter:/[\u00d2\u00d3]/g,alternative:"O"},{letter:/[\u00fa\u00fc]/g,alternative:"u"},{letter:/[\u00da\u00dc]/g,alternative:"U"},{letter:/[\u00b7]/g,alternative:""}],orm:[{letter:/[\u0027]/g,alternative:""}],pt:[{letter:/[\u00e7]/g,alternative:"c"},{letter:/[\u00c7]/g,alternative:"C"},{letter:/[\u00e1\u00e2\u00e3\u00e0]/g,alternative:"a"},{letter:/[\u00c1\u00c2\u00c3\u00c0]/g,alternative:"A"},{letter:/[\u00e9\u00ea]/g,alternative:"e"},{letter:/[\u00c9\u00ca]/g,alternative:"E"},{letter:/[\u00ed]/g,alternative:"i"},{letter:/[\u00cd]/g,alternative:"I"},{letter:/[\u00f3\u00f4\u00f5]/g,alternative:"o"},{letter:/[\u00d3\u00d4\u00d5]/g,alternative:"O"},{letter:/[\u00fa]/g,alternative:"u"},{letter:/[\u00da]/g,alternative:"U"}],roh:[{letter:/[\u00e9\u00e8\u00ea]/g,alternative:"e"},{letter:/[\u00c9\u00c8\u00ca]/g,alternative:"E"},{letter:/[\u00ef]/g,alternative:"i"},{letter:/[\u00cf]/g,alternative:"I"},{letter:/[\u00f6]/g,alternative:"oe"},{letter:/[\u00d6]/g,alternative:"Oe"},{letter:/[\u00fc]/g,alternative:"ue"},{letter:/[\u00dc]/g,alternative:"Ue"},{letter:/[\u00e4]/g,alternative:"ae"},{letter:/[\u00c4]/g,alternative:"Ae"}],rup:[{letter:/[\u00e3]/g,alternative:"a"},{letter:/[\u00c3]/g,alternative:"A"}],ro:[{letter:/[\u0103\u00e2]/g,alternative:"a"},{letter:/[\u0102\u00c2]/g,alternative:"A"},{letter:/[\u00ee]/g,alternative:"i"},{letter:/[\u00ce]/g,alternative:"I"},{letter:/[\u0219\u015f]/g,alternative:"s"},{letter:/[\u0218\u015e]/g,alternative:"S"},{letter:/[\u021b\u0163]/g,alternative:"t"},{letter:/[\u021a\u0162]/g,alternative:"T"}],tlh:[{letter:/[\u2019\u0027]/g,alternative:""}],sk:[{letter:/[\u01c4]/g,alternative:"DZ"},{letter:/[\u01c5]/g,alternative:"Dz"},{letter:/[\u01c6]/g,alternative:"dz"},{letter:/[\u00e1\u00e4]/g,alternative:"a"},{letter:/[\u00c1\u00c4]/g,alternative:"A"},{letter:/[\u010d]/g,alternative:"c"},{letter:/[\u010c]/g,alternative:"C"},{letter:/[\u010f]/g,alternative:"d"},{letter:/[\u010e]/g,alternative:"D"},{letter:/[\u00e9]/g,alternative:"e"},{letter:/[\u00c9]/g,alternative:"E"},{letter:/[\u00ed]/g,alternative:"i"},{letter:/[\u00cd]/g,alternative:"I"},{letter:/[\u013e\u013a]/g,alternative:"l"},{letter:/[\u013d\u0139]/g,alternative:"L"},{letter:/[\u0148]/g,alternative:"n"},{letter:/[\u0147]/g,alternative:"N"},{letter:/[\u00f3\u00f4]/g,alternative:"o"},{letter:/[\u00d3\u00d4]/g,alternative:"O"},{letter:/[\u0155]/g,alternative:"r"},{letter:/[\u0154]/g,alternative:"R"},{letter:/[\u0161]/g,alternative:"s"},{letter:/[\u0160]/g,alternative:"S"},{letter:/[\u0165]/g,alternative:"t"},{letter:/[\u0164]/g,alternative:"T"},{letter:/[\u00fa]/g,alternative:"u"},{letter:/[\u00da]/g,alternative:"U"},{letter:/[\u00fd]/g,alternative:"y"},{letter:/[\u00dd]/g,alternative:"Y"},{letter:/[\u017e]/g,alternative:"z"},{letter:/[\u017d]/g,alternative:"Z"}],sl:[{letter:/[\u010d\u0107]/g,alternative:"c"},{letter:/[\u010c\u0106]/g,alternative:"C"},{letter:/[\u0111]/g,alternative:"d"},{letter:/[\u0110]/g,alternative:"D"},{letter:/[\u0161]/g,alternative:"s"},{letter:/[\u0160]/g,alternative:"S"},{letter:/[\u017e]/g,alternative:"z"},{letter:/[\u017d]/g,alternative:"Z"},{letter:/[\u00e0\u00e1\u0203\u0201]/g,alternative:"a"},{letter:/[\u00c0\u00c1\u0202\u0200]/g,alternative:"A"},{letter:/[\u00e8\u00e9\u0207\u0205]/g,alternative:"e"},{letter:/\u01dd\u0300/g,alternative:"e"},{letter:/\u01dd\u030f/g,alternative:"e"},{letter:/\u1eb9\u0301/g,alternative:"e"},{letter:/\u1eb9\u0311/g,alternative:"e"},{letter:/[\u00c8\u00c9\u0206\u0204]/g,alternative:"E"},{letter:/\u018e\u030f/g,alternative:"E"},{letter:/\u018e\u0300/g,alternative:"E"},{letter:/\u1eb8\u0311/g,alternative:"E"},{letter:/\u1eb8\u0301/g,alternative:"E"},{letter:/[\u00ec\u00ed\u020b\u0209]/g,alternative:"i"},{letter:/[\u00cc\u00cd\u020a\u0208]/g,alternative:"I"},{letter:/[\u00f2\u00f3\u020f\u020d]/g,alternative:"o"},{letter:/\u1ecd\u0311/g,alternative:"o"},{letter:/\u1ecd\u0301/g,alternative:"o"},{letter:/\u1ecc\u0311/g,alternative:"O"},{letter:/\u1ecc\u0301/g,alternative:"O"},{letter:/[\u00d2\u00d3\u020e\u020c]/g,alternative:"O"},{letter:/[\u00f9\u00fa\u0217\u0215]/g,alternative:"u"},{letter:/[\u00d9\u00da\u0216\u0214]/g,alternative:"U"},{letter:/[\u0155\u0213]/g,alternative:"r"},{letter:/[\u0154\u0212]/g,alternative:"R"}],sq:[{letter:/[\u00e7]/g,alternative:"c"},{letter:/[\u00c7]/g,alternative:"C"},{letter:/[\u00eb]/g,alternative:"e"},{letter:/[\u00cb]/g,alternative:"E"}],hu:[{letter:/[\u00e1]/g,alternative:"a"},{letter:/[\u00c1]/g,alternative:"A"},{letter:/[\u00e9]/g,alternative:"e"},{letter:/[\u00c9]/g,alternative:"E"},{letter:/[\u00ed]/g,alternative:"i"},{letter:/[\u00cd]/g,alternative:"I"},{letter:/[\u00f3\u00f6\u0151]/g,alternative:"o"},{letter:/[\u00d3\u00d6\u0150]/g,alternative:"O"},{letter:/[\u00fa\u00fc\u0171]/g,alternative:"u"},{letter:/[\u00da\u00dc\u0170]/g,alternative:"U"}],srd:[{letter:/[\u00e7]/g,alternative:"c"},{letter:/[\u00c7]/g,alternative:"C"},{letter:/[\u00e0\u00e1]/g,alternative:"a"},{letter:/[\u00c0\u00c1]/g,alternative:"A"},{letter:/[\u00e8\u00e9]/g,alternative:"e"},{letter:/[\u00c8\u00c9]/g,alternative:"E"},{letter:/[\u00ed\u00ef]/g,alternative:"i"},{letter:/[\u00cd\u00cf]/g,alternative:"I"},{letter:/[\u00f2\u00f3]/g,alternative:"o"},{letter:/[\u00d2\u00d3]/g,alternative:"O"},{letter:/[\u00fa\u00f9]/g,alternative:"u"},{letter:/[\u00da\u00d9]/g,alternative:"U"}],szl:[{letter:/[\u0107]/g,alternative:"c"},{letter:/[\u0106]/g,alternative:"C"},{letter:/[\u00e3]/g,alternative:"a"},{letter:/[\u00c3]/g,alternative:"A"},{letter:/[\u0142]/g,alternative:"u"},{letter:/[\u0141]/g,alternative:"U"},{letter:/[\u006e]/g,alternative:"n"},{letter:/[\u004e]/g,alternative:"N"},{letter:/[\u014f\u014d\u00f4\u00f5]/g,alternative:"o"},{letter:/[\u014e\u014c\u00d4\u00d5]/g,alternative:"O"},{letter:/[\u015b]/g,alternative:"s"},{letter:/[\u015a]/g,alternative:"S"},{letter:/[\u017a\u017c\u017e]/g,alternative:"z"},{letter:/[\u0179\u017b\u017d]/g,alternative:"Z"},{letter:/[\u016f]/g,alternative:"u"},{letter:/[\u016e]/g,alternative:"U"},{letter:/[\u010d]/g,alternative:"cz"},{letter:/[\u010c]/g,alternative:"Cz"},{letter:/[\u0159]/g,alternative:"rz"},{letter:/[\u0158]/g,alternative:"Rz"},{letter:/[\u0161]/g,alternative:"sz"},{letter:/[\u0160]/g,alternative:"Sz"}],tah:[{letter:/[\u0101\u00e2\u00e0]/g,alternative:"a"},{letter:/[\u0100\u00c2\u00c0]/g,alternative:"A"},{letter:/[\u00ef\u00ee\u00ec]/g,alternative:"i"},{letter:/[\u00cf\u00ce\u00cc]/g,alternative:"I"},{letter:/[\u0113\u00ea\u00e9]/g,alternative:"e"},{letter:/[\u0112\u00ca\u00c9]/g,alternative:"E"},{letter:/[\u016b\u00fb\u00fa]/g,alternative:"u"},{letter:/[\u016a\u00db\u00da]/g,alternative:"U"},{letter:/[\u00e7]/g,alternative:"c"},{letter:/[\u00c7]/g,alternative:"C"},{letter:/[\u00f2\u00f4\u014d]/g,alternative:"o"},{letter:/[\u00d2\u00d4\u014c]/g,alternative:"O"},{letter:/[\u2019\u0027\u2018]/g,alternative:""}],vec:[{letter:/\u0073\u002d\u0063/g,alternative:"sc"},{letter:/\u0053\u002d\u0043/g,alternative:"SC"},{letter:/\u0073\u0027\u0063/g,alternative:"sc"},{letter:/\u0053\u0027\u0043/g,alternative:"SC"},{letter:/\u0073\u2019\u0063/g,alternative:"sc"},{letter:/\u0053\u2019\u0043/g,alternative:"SC"},{letter:/\u0073\u2018\u0063/g,alternative:"sc"},{letter:/\u0053\u2018\u0043/g,alternative:"SC"},{letter:/\u0053\u002d\u0063/g,alternative:"Sc"},{letter:/\u0053\u0027\u0063/g,alternative:"Sc"},{letter:/\u0053\u2019\u0063/g,alternative:"Sc"},{letter:/\u0053\u2018\u0063/g,alternative:"Sc"},{letter:/\u0063\u2019/g,alternative:"c"},{letter:/\u0043\u2019/g,alternative:"C"},{letter:/\u0063\u2018/g,alternative:"c"},{letter:/\u0043\u2018/g,alternative:"C"},{letter:/\u0063\u0027/g,alternative:"c"},{letter:/\u0043\u0027/g,alternative:"C"},{letter:/[\u00e0\u00e1\u00e2]/g,alternative:"a"},{letter:/[\u00c0\u00c1\u00c2]/g,alternative:"A"},{letter:/[\u00e8\u00e9]/g,alternative:"e"},{letter:/[\u00c8\u00c9]/g,alternative:"E"},{letter:/[\u00f2\u00f3]/g,alternative:"o"},{letter:/[\u00d2\u00d3]/g,alternative:"O"},{letter:/[\u00f9\u00fa]/g,alternative:"u"},{letter:/[\u00d9\u00da]/g,alternative:"U"},{letter:/[\u00e7\u010d\u010b]/g,alternative:"c"},{letter:/[\u00c7\u010c\u010a]/g,alternative:"C"},{letter:/[\u0142]/g,alternative:"l"},{letter:/[\u00a3\u0141]/g,alternative:"L"},{letter:/\ud835\udeff/g,alternative:"dh"},{letter:/[\u0111\u03b4]/g,alternative:"dh"},{letter:/[\u0110\u0394]/g,alternative:"Dh"}],wa:[{letter:/[\u00e2\u00e5]/g,alternative:"a"},{letter:/[\u00c2\u00c5]/g,alternative:"A"},{letter:/[\u00e7]/g,alternative:"c"},{letter:/[\u00c7]/g,alternative:"C"},{letter:/\u0065\u030a/g,alternative:"e"},{letter:/\u0045\u030a/g,alternative:"E"},{letter:/[\u00eb\u00ea\u00e8\u00e9]/g,alternative:"e"},{letter:/[\u00c9\u00c8\u00ca\u00cb]/g,alternative:"E"},{letter:/[\u00ee]/g,alternative:"i"},{letter:/[\u00ce]/g,alternative:"I"},{letter:/[\u00f4\u00f6]/g,alternative:"o"},{letter:/[\u00d6\u00d4]/g,alternative:"O"},{letter:/[\u00fb]/g,alternative:"u"},{letter:/[\u00db]/g,alternative:"U"}],yor:[{letter:/[\u00e1\u00e0]/g,alternative:"a"},{letter:/[\u00c1\u00c0]/g,alternative:"A"},{letter:/[\u00ec\u00ed]/g,alternative:"i"},{letter:/[\u00cc\u00cd]/g,alternative:"I"},{letter:/\u1ecd\u0301/g,alternative:"o"},{letter:/\u1ecc\u0301/g,alternative:"O"},{letter:/\u1ecd\u0300/g,alternative:"o"},{letter:/\u1ecc\u0300/g,alternative:"O"},{letter:/[\u00f3\u00f2\u1ecd]/g,alternative:"o"},{letter:/[\u00d3\u00d2\u1ecc]/g,alternative:"O"},{letter:/[\u00fa\u00f9]/g,alternative:"u"},{letter:/[\u00da\u00d9]/g,alternative:"U"},{letter:/\u1eb9\u0301/g,alternative:"e"},{letter:/\u1eb8\u0301/g,alternative:"E"},{letter:/\u1eb9\u0300/g,alternative:"e"},{letter:/\u1eb8\u0300/g,alternative:"E"},{letter:/[\u00e9\u00e8\u1eb9]/g,alternative:"e"},{letter:/[\u00c9\u00c8\u1eb8]/g,alternative:"E"},{letter:/[\u1e63]/g,alternative:"s"},{letter:/[\u1e62]/g,alternative:"S"}]}},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(a,e){var t=new RegExp(e,"ig"),i=a.match(t);return null===i&&(i=[]),i}},function(a){a.exports={Aacute:"Á",aacute:"á",Abreve:"Ă",abreve:"ă",ac:"∾",acd:"∿",acE:"∾̳",Acirc:"Â",acirc:"â",acute:"´",Acy:"А",acy:"а",AElig:"Æ",aelig:"æ",af:"⁡",Afr:"𝔄",afr:"𝔞",Agrave:"À",agrave:"à",alefsym:"ℵ",aleph:"ℵ",Alpha:"Α",alpha:"α",Amacr:"Ā",amacr:"ā",amalg:"⨿",amp:"&",AMP:"&",andand:"⩕",And:"⩓",and:"∧",andd:"⩜",andslope:"⩘",andv:"⩚",ang:"∠",ange:"⦤",angle:"∠",angmsdaa:"⦨",angmsdab:"⦩",angmsdac:"⦪",angmsdad:"⦫",angmsdae:"⦬",angmsdaf:"⦭",angmsdag:"⦮",angmsdah:"⦯",angmsd:"∡",angrt:"∟",angrtvb:"⊾",angrtvbd:"⦝",angsph:"∢",angst:"Å",angzarr:"⍼",Aogon:"Ą",aogon:"ą",Aopf:"𝔸",aopf:"𝕒",apacir:"⩯",ap:"≈",apE:"⩰",ape:"≊",apid:"≋",apos:"'",ApplyFunction:"⁡",approx:"≈",approxeq:"≊",Aring:"Å",aring:"å",Ascr:"𝒜",ascr:"𝒶",Assign:"≔",ast:"*",asymp:"≈",asympeq:"≍",Atilde:"Ã",atilde:"ã",Auml:"Ä",auml:"ä",awconint:"∳",awint:"⨑",backcong:"≌",backepsilon:"϶",backprime:"‵",backsim:"∽",backsimeq:"⋍",Backslash:"∖",Barv:"⫧",barvee:"⊽",barwed:"⌅",Barwed:"⌆",barwedge:"⌅",bbrk:"⎵",bbrktbrk:"⎶",bcong:"≌",Bcy:"Б",bcy:"б",bdquo:"„",becaus:"∵",because:"∵",Because:"∵",bemptyv:"⦰",bepsi:"϶",bernou:"ℬ",Bernoullis:"ℬ",Beta:"Β",beta:"β",beth:"ℶ",between:"≬",Bfr:"𝔅",bfr:"𝔟",bigcap:"⋂",bigcirc:"◯",bigcup:"⋃",bigodot:"⨀",bigoplus:"⨁",bigotimes:"⨂",bigsqcup:"⨆",bigstar:"★",bigtriangledown:"▽",bigtriangleup:"△",biguplus:"⨄",bigvee:"⋁",bigwedge:"⋀",bkarow:"⤍",blacklozenge:"⧫",blacksquare:"▪",blacktriangle:"▴",blacktriangledown:"▾",blacktriangleleft:"◂",blacktriangleright:"▸",blank:"␣",blk12:"▒",blk14:"░",blk34:"▓",block:"█",bne:"=⃥",bnequiv:"≡⃥",bNot:"⫭",bnot:"⌐",Bopf:"𝔹",bopf:"𝕓",bot:"⊥",bottom:"⊥",bowtie:"⋈",boxbox:"⧉",boxdl:"┐",boxdL:"╕",boxDl:"╖",boxDL:"╗",boxdr:"┌",boxdR:"╒",boxDr:"╓",boxDR:"╔",boxh:"─",boxH:"═",boxhd:"┬",boxHd:"╤",boxhD:"╥",boxHD:"╦",boxhu:"┴",boxHu:"╧",boxhU:"╨",boxHU:"╩",boxminus:"⊟",boxplus:"⊞",boxtimes:"⊠",boxul:"┘",boxuL:"╛",boxUl:"╜",boxUL:"╝",boxur:"└",boxuR:"╘",boxUr:"╙",boxUR:"╚",boxv:"│",boxV:"║",boxvh:"┼",boxvH:"╪",boxVh:"╫",boxVH:"╬",boxvl:"┤",boxvL:"╡",boxVl:"╢",boxVL:"╣",boxvr:"├",boxvR:"╞",boxVr:"╟",boxVR:"╠",bprime:"‵",breve:"˘",Breve:"˘",brvbar:"¦",bscr:"𝒷",Bscr:"ℬ",bsemi:"⁏",bsim:"∽",bsime:"⋍",bsolb:"⧅",bsol:"\\",bsolhsub:"⟈",bull:"•",bullet:"•",bump:"≎",bumpE:"⪮",bumpe:"≏",Bumpeq:"≎",bumpeq:"≏",Cacute:"Ć",cacute:"ć",capand:"⩄",capbrcup:"⩉",capcap:"⩋",cap:"∩",Cap:"⋒",capcup:"⩇",capdot:"⩀",CapitalDifferentialD:"ⅅ",caps:"∩︀",caret:"⁁",caron:"ˇ",Cayleys:"ℭ",ccaps:"⩍",Ccaron:"Č",ccaron:"č",Ccedil:"Ç",ccedil:"ç",Ccirc:"Ĉ",ccirc:"ĉ",Cconint:"∰",ccups:"⩌",ccupssm:"⩐",Cdot:"Ċ",cdot:"ċ",cedil:"¸",Cedilla:"¸",cemptyv:"⦲",cent:"¢",centerdot:"·",CenterDot:"·",cfr:"𝔠",Cfr:"ℭ",CHcy:"Ч",chcy:"ч",check:"✓",checkmark:"✓",Chi:"Χ",chi:"χ",circ:"ˆ",circeq:"≗",circlearrowleft:"↺",circlearrowright:"↻",circledast:"⊛",circledcirc:"⊚",circleddash:"⊝",CircleDot:"⊙",circledR:"®",circledS:"Ⓢ",CircleMinus:"⊖",CirclePlus:"⊕",CircleTimes:"⊗",cir:"○",cirE:"⧃",cire:"≗",cirfnint:"⨐",cirmid:"⫯",cirscir:"⧂",ClockwiseContourIntegral:"∲",CloseCurlyDoubleQuote:"”",CloseCurlyQuote:"’",clubs:"♣",clubsuit:"♣",colon:":",Colon:"∷",Colone:"⩴",colone:"≔",coloneq:"≔",comma:",",commat:"@",comp:"∁",compfn:"∘",complement:"∁",complexes:"ℂ",cong:"≅",congdot:"⩭",Congruent:"≡",conint:"∮",Conint:"∯",ContourIntegral:"∮",copf:"𝕔",Copf:"ℂ",coprod:"∐",Coproduct:"∐",copy:"©",COPY:"©",copysr:"℗",CounterClockwiseContourIntegral:"∳",crarr:"↵",cross:"✗",Cross:"⨯",Cscr:"𝒞",cscr:"𝒸",csub:"⫏",csube:"⫑",csup:"⫐",csupe:"⫒",ctdot:"⋯",cudarrl:"⤸",cudarrr:"⤵",cuepr:"⋞",cuesc:"⋟",cularr:"↶",cularrp:"⤽",cupbrcap:"⩈",cupcap:"⩆",CupCap:"≍",cup:"∪",Cup:"⋓",cupcup:"⩊",cupdot:"⊍",cupor:"⩅",cups:"∪︀",curarr:"↷",curarrm:"⤼",curlyeqprec:"⋞",curlyeqsucc:"⋟",curlyvee:"⋎",curlywedge:"⋏",curren:"¤",curvearrowleft:"↶",curvearrowright:"↷",cuvee:"⋎",cuwed:"⋏",cwconint:"∲",cwint:"∱",cylcty:"⌭",dagger:"†",Dagger:"‡",daleth:"ℸ",darr:"↓",Darr:"↡",dArr:"⇓",dash:"‐",Dashv:"⫤",dashv:"⊣",dbkarow:"⤏",dblac:"˝",Dcaron:"Ď",dcaron:"ď",Dcy:"Д",dcy:"д",ddagger:"‡",ddarr:"⇊",DD:"ⅅ",dd:"ⅆ",DDotrahd:"⤑",ddotseq:"⩷",deg:"°",Del:"∇",Delta:"Δ",delta:"δ",demptyv:"⦱",dfisht:"⥿",Dfr:"𝔇",dfr:"𝔡",dHar:"⥥",dharl:"⇃",dharr:"⇂",DiacriticalAcute:"´",DiacriticalDot:"˙",DiacriticalDoubleAcute:"˝",DiacriticalGrave:"`",DiacriticalTilde:"˜",diam:"⋄",diamond:"⋄",Diamond:"⋄",diamondsuit:"♦",diams:"♦",die:"¨",DifferentialD:"ⅆ",digamma:"ϝ",disin:"⋲",div:"÷",divide:"÷",divideontimes:"⋇",divonx:"⋇",DJcy:"Ђ",djcy:"ђ",dlcorn:"⌞",dlcrop:"⌍",dollar:"$",Dopf:"𝔻",dopf:"𝕕",Dot:"¨",dot:"˙",DotDot:"⃜",doteq:"≐",doteqdot:"≑",DotEqual:"≐",dotminus:"∸",dotplus:"∔",dotsquare:"⊡",doublebarwedge:"⌆",DoubleContourIntegral:"∯",DoubleDot:"¨",DoubleDownArrow:"⇓",DoubleLeftArrow:"⇐",DoubleLeftRightArrow:"⇔",DoubleLeftTee:"⫤",DoubleLongLeftArrow:"⟸",DoubleLongLeftRightArrow:"⟺",DoubleLongRightArrow:"⟹",DoubleRightArrow:"⇒",DoubleRightTee:"⊨",DoubleUpArrow:"⇑",DoubleUpDownArrow:"⇕",DoubleVerticalBar:"∥",DownArrowBar:"⤓",downarrow:"↓",DownArrow:"↓",Downarrow:"⇓",DownArrowUpArrow:"⇵",DownBreve:"̑",downdownarrows:"⇊",downharpoonleft:"⇃",downharpoonright:"⇂",DownLeftRightVector:"⥐",DownLeftTeeVector:"⥞",DownLeftVectorBar:"⥖",DownLeftVector:"↽",DownRightTeeVector:"⥟",DownRightVectorBar:"⥗",DownRightVector:"⇁",DownTeeArrow:"↧",DownTee:"⊤",drbkarow:"⤐",drcorn:"⌟",drcrop:"⌌",Dscr:"𝒟",dscr:"𝒹",DScy:"Ѕ",dscy:"ѕ",dsol:"⧶",Dstrok:"Đ",dstrok:"đ",dtdot:"⋱",dtri:"▿",dtrif:"▾",duarr:"⇵",duhar:"⥯",dwangle:"⦦",DZcy:"Џ",dzcy:"џ",dzigrarr:"⟿",Eacute:"É",eacute:"é",easter:"⩮",Ecaron:"Ě",ecaron:"ě",Ecirc:"Ê",ecirc:"ê",ecir:"≖",ecolon:"≕",Ecy:"Э",ecy:"э",eDDot:"⩷",Edot:"Ė",edot:"ė",eDot:"≑",ee:"ⅇ",efDot:"≒",Efr:"𝔈",efr:"𝔢",eg:"⪚",Egrave:"È",egrave:"è",egs:"⪖",egsdot:"⪘",el:"⪙",Element:"∈",elinters:"⏧",ell:"ℓ",els:"⪕",elsdot:"⪗",Emacr:"Ē",emacr:"ē",empty:"∅",emptyset:"∅",EmptySmallSquare:"◻",emptyv:"∅",EmptyVerySmallSquare:"▫",emsp13:" ",emsp14:" ",emsp:" ",ENG:"Ŋ",eng:"ŋ",ensp:" ",Eogon:"Ę",eogon:"ę",Eopf:"𝔼",eopf:"𝕖",epar:"⋕",eparsl:"⧣",eplus:"⩱",epsi:"ε",Epsilon:"Ε",epsilon:"ε",epsiv:"ϵ",eqcirc:"≖",eqcolon:"≕",eqsim:"≂",eqslantgtr:"⪖",eqslantless:"⪕",Equal:"⩵",equals:"=",EqualTilde:"≂",equest:"≟",Equilibrium:"⇌",equiv:"≡",equivDD:"⩸",eqvparsl:"⧥",erarr:"⥱",erDot:"≓",escr:"ℯ",Escr:"ℰ",esdot:"≐",Esim:"⩳",esim:"≂",Eta:"Η",eta:"η",ETH:"Ð",eth:"ð",Euml:"Ë",euml:"ë",euro:"€",excl:"!",exist:"∃",Exists:"∃",expectation:"ℰ",exponentiale:"ⅇ",ExponentialE:"ⅇ",fallingdotseq:"≒",Fcy:"Ф",fcy:"ф",female:"♀",ffilig:"ffi",fflig:"ff",ffllig:"ffl",Ffr:"𝔉",ffr:"𝔣",filig:"fi",FilledSmallSquare:"◼",FilledVerySmallSquare:"▪",fjlig:"fj",flat:"♭",fllig:"fl",fltns:"▱",fnof:"ƒ",Fopf:"𝔽",fopf:"𝕗",forall:"∀",ForAll:"∀",fork:"⋔",forkv:"⫙",Fouriertrf:"ℱ",fpartint:"⨍",frac12:"½",frac13:"⅓",frac14:"¼",frac15:"⅕",frac16:"⅙",frac18:"⅛",frac23:"⅔",frac25:"⅖",frac34:"¾",frac35:"⅗",frac38:"⅜",frac45:"⅘",frac56:"⅚",frac58:"⅝",frac78:"⅞",frasl:"⁄",frown:"⌢",fscr:"𝒻",Fscr:"ℱ",gacute:"ǵ",Gamma:"Γ",gamma:"γ",Gammad:"Ϝ",gammad:"ϝ",gap:"⪆",Gbreve:"Ğ",gbreve:"ğ",Gcedil:"Ģ",Gcirc:"Ĝ",gcirc:"ĝ",Gcy:"Г",gcy:"г",Gdot:"Ġ",gdot:"ġ",ge:"≥",gE:"≧",gEl:"⪌",gel:"⋛",geq:"≥",geqq:"≧",geqslant:"⩾",gescc:"⪩",ges:"⩾",gesdot:"⪀",gesdoto:"⪂",gesdotol:"⪄",gesl:"⋛︀",gesles:"⪔",Gfr:"𝔊",gfr:"𝔤",gg:"≫",Gg:"⋙",ggg:"⋙",gimel:"ℷ",GJcy:"Ѓ",gjcy:"ѓ",gla:"⪥",gl:"≷",glE:"⪒",glj:"⪤",gnap:"⪊",gnapprox:"⪊",gne:"⪈",gnE:"≩",gneq:"⪈",gneqq:"≩",gnsim:"⋧",Gopf:"𝔾",gopf:"𝕘",grave:"`",GreaterEqual:"≥",GreaterEqualLess:"⋛",GreaterFullEqual:"≧",GreaterGreater:"⪢",GreaterLess:"≷",GreaterSlantEqual:"⩾",GreaterTilde:"≳",Gscr:"𝒢",gscr:"ℊ",gsim:"≳",gsime:"⪎",gsiml:"⪐",gtcc:"⪧",gtcir:"⩺",gt:">",GT:">",Gt:"≫",gtdot:"⋗",gtlPar:"⦕",gtquest:"⩼",gtrapprox:"⪆",gtrarr:"⥸",gtrdot:"⋗",gtreqless:"⋛",gtreqqless:"⪌",gtrless:"≷",gtrsim:"≳",gvertneqq:"≩︀",gvnE:"≩︀",Hacek:"ˇ",hairsp:" ",half:"½",hamilt:"ℋ",HARDcy:"Ъ",hardcy:"ъ",harrcir:"⥈",harr:"↔",hArr:"⇔",harrw:"↭",Hat:"^",hbar:"ℏ",Hcirc:"Ĥ",hcirc:"ĥ",hearts:"♥",heartsuit:"♥",hellip:"…",hercon:"⊹",hfr:"𝔥",Hfr:"ℌ",HilbertSpace:"ℋ",hksearow:"⤥",hkswarow:"⤦",hoarr:"⇿",homtht:"∻",hookleftarrow:"↩",hookrightarrow:"↪",hopf:"𝕙",Hopf:"ℍ",horbar:"―",HorizontalLine:"─",hscr:"𝒽",Hscr:"ℋ",hslash:"ℏ",Hstrok:"Ħ",hstrok:"ħ",HumpDownHump:"≎",HumpEqual:"≏",hybull:"⁃",hyphen:"‐",Iacute:"Í",iacute:"í",ic:"⁣",Icirc:"Î",icirc:"î",Icy:"И",icy:"и",Idot:"İ",IEcy:"Е",iecy:"е",iexcl:"¡",iff:"⇔",ifr:"𝔦",Ifr:"ℑ",Igrave:"Ì",igrave:"ì",ii:"ⅈ",iiiint:"⨌",iiint:"∭",iinfin:"⧜",iiota:"℩",IJlig:"IJ",ijlig:"ij",Imacr:"Ī",imacr:"ī",image:"ℑ",ImaginaryI:"ⅈ",imagline:"ℐ",imagpart:"ℑ",imath:"ı",Im:"ℑ",imof:"⊷",imped:"Ƶ",Implies:"⇒",incare:"℅",in:"∈",infin:"∞",infintie:"⧝",inodot:"ı",intcal:"⊺",int:"∫",Int:"∬",integers:"ℤ",Integral:"∫",intercal:"⊺",Intersection:"⋂",intlarhk:"⨗",intprod:"⨼",InvisibleComma:"⁣",InvisibleTimes:"⁢",IOcy:"Ё",iocy:"ё",Iogon:"Į",iogon:"į",Iopf:"𝕀",iopf:"𝕚",Iota:"Ι",iota:"ι",iprod:"⨼",iquest:"¿",iscr:"𝒾",Iscr:"ℐ",isin:"∈",isindot:"⋵",isinE:"⋹",isins:"⋴",isinsv:"⋳",isinv:"∈",it:"⁢",Itilde:"Ĩ",itilde:"ĩ",Iukcy:"І",iukcy:"і",Iuml:"Ï",iuml:"ï",Jcirc:"Ĵ",jcirc:"ĵ",Jcy:"Й",jcy:"й",Jfr:"𝔍",jfr:"𝔧",jmath:"ȷ",Jopf:"𝕁",jopf:"𝕛",Jscr:"𝒥",jscr:"𝒿",Jsercy:"Ј",jsercy:"ј",Jukcy:"Є",jukcy:"є",Kappa:"Κ",kappa:"κ",kappav:"ϰ",Kcedil:"Ķ",kcedil:"ķ",Kcy:"К",kcy:"к",Kfr:"𝔎",kfr:"𝔨",kgreen:"ĸ",KHcy:"Х",khcy:"х",KJcy:"Ќ",kjcy:"ќ",Kopf:"𝕂",kopf:"𝕜",Kscr:"𝒦",kscr:"𝓀",lAarr:"⇚",Lacute:"Ĺ",lacute:"ĺ",laemptyv:"⦴",lagran:"ℒ",Lambda:"Λ",lambda:"λ",lang:"⟨",Lang:"⟪",langd:"⦑",langle:"⟨",lap:"⪅",Laplacetrf:"ℒ",laquo:"«",larrb:"⇤",larrbfs:"⤟",larr:"←",Larr:"↞",lArr:"⇐",larrfs:"⤝",larrhk:"↩",larrlp:"↫",larrpl:"⤹",larrsim:"⥳",larrtl:"↢",latail:"⤙",lAtail:"⤛",lat:"⪫",late:"⪭",lates:"⪭︀",lbarr:"⤌",lBarr:"⤎",lbbrk:"❲",lbrace:"{",lbrack:"[",lbrke:"⦋",lbrksld:"⦏",lbrkslu:"⦍",Lcaron:"Ľ",lcaron:"ľ",Lcedil:"Ļ",lcedil:"ļ",lceil:"⌈",lcub:"{",Lcy:"Л",lcy:"л",ldca:"⤶",ldquo:"“",ldquor:"„",ldrdhar:"⥧",ldrushar:"⥋",ldsh:"↲",le:"≤",lE:"≦",LeftAngleBracket:"⟨",LeftArrowBar:"⇤",leftarrow:"←",LeftArrow:"←",Leftarrow:"⇐",LeftArrowRightArrow:"⇆",leftarrowtail:"↢",LeftCeiling:"⌈",LeftDoubleBracket:"⟦",LeftDownTeeVector:"⥡",LeftDownVectorBar:"⥙",LeftDownVector:"⇃",LeftFloor:"⌊",leftharpoondown:"↽",leftharpoonup:"↼",leftleftarrows:"⇇",leftrightarrow:"↔",LeftRightArrow:"↔",Leftrightarrow:"⇔",leftrightarrows:"⇆",leftrightharpoons:"⇋",leftrightsquigarrow:"↭",LeftRightVector:"⥎",LeftTeeArrow:"↤",LeftTee:"⊣",LeftTeeVector:"⥚",leftthreetimes:"⋋",LeftTriangleBar:"⧏",LeftTriangle:"⊲",LeftTriangleEqual:"⊴",LeftUpDownVector:"⥑",LeftUpTeeVector:"⥠",LeftUpVectorBar:"⥘",LeftUpVector:"↿",LeftVectorBar:"⥒",LeftVector:"↼",lEg:"⪋",leg:"⋚",leq:"≤",leqq:"≦",leqslant:"⩽",lescc:"⪨",les:"⩽",lesdot:"⩿",lesdoto:"⪁",lesdotor:"⪃",lesg:"⋚︀",lesges:"⪓",lessapprox:"⪅",lessdot:"⋖",lesseqgtr:"⋚",lesseqqgtr:"⪋",LessEqualGreater:"⋚",LessFullEqual:"≦",LessGreater:"≶",lessgtr:"≶",LessLess:"⪡",lesssim:"≲",LessSlantEqual:"⩽",LessTilde:"≲",lfisht:"⥼",lfloor:"⌊",Lfr:"𝔏",lfr:"𝔩",lg:"≶",lgE:"⪑",lHar:"⥢",lhard:"↽",lharu:"↼",lharul:"⥪",lhblk:"▄",LJcy:"Љ",ljcy:"љ",llarr:"⇇",ll:"≪",Ll:"⋘",llcorner:"⌞",Lleftarrow:"⇚",llhard:"⥫",lltri:"◺",Lmidot:"Ŀ",lmidot:"ŀ",lmoustache:"⎰",lmoust:"⎰",lnap:"⪉",lnapprox:"⪉",lne:"⪇",lnE:"≨",lneq:"⪇",lneqq:"≨",lnsim:"⋦",loang:"⟬",loarr:"⇽",lobrk:"⟦",longleftarrow:"⟵",LongLeftArrow:"⟵",Longleftarrow:"⟸",longleftrightarrow:"⟷",LongLeftRightArrow:"⟷",Longleftrightarrow:"⟺",longmapsto:"⟼",longrightarrow:"⟶",LongRightArrow:"⟶",Longrightarrow:"⟹",looparrowleft:"↫",looparrowright:"↬",lopar:"⦅",Lopf:"𝕃",lopf:"𝕝",loplus:"⨭",lotimes:"⨴",lowast:"∗",lowbar:"_",LowerLeftArrow:"↙",LowerRightArrow:"↘",loz:"◊",lozenge:"◊",lozf:"⧫",lpar:"(",lparlt:"⦓",lrarr:"⇆",lrcorner:"⌟",lrhar:"⇋",lrhard:"⥭",lrm:"‎",lrtri:"⊿",lsaquo:"‹",lscr:"𝓁",Lscr:"ℒ",lsh:"↰",Lsh:"↰",lsim:"≲",lsime:"⪍",lsimg:"⪏",lsqb:"[",lsquo:"‘",lsquor:"‚",Lstrok:"Ł",lstrok:"ł",ltcc:"⪦",ltcir:"⩹",lt:"<",LT:"<",Lt:"≪",ltdot:"⋖",lthree:"⋋",ltimes:"⋉",ltlarr:"⥶",ltquest:"⩻",ltri:"◃",ltrie:"⊴",ltrif:"◂",ltrPar:"⦖",lurdshar:"⥊",luruhar:"⥦",lvertneqq:"≨︀",lvnE:"≨︀",macr:"¯",male:"♂",malt:"✠",maltese:"✠",Map:"⤅",map:"↦",mapsto:"↦",mapstodown:"↧",mapstoleft:"↤",mapstoup:"↥",marker:"▮",mcomma:"⨩",Mcy:"М",mcy:"м",mdash:"—",mDDot:"∺",measuredangle:"∡",MediumSpace:" ",Mellintrf:"ℳ",Mfr:"𝔐",mfr:"𝔪",mho:"℧",micro:"µ",midast:"*",midcir:"⫰",mid:"∣",middot:"·",minusb:"⊟",minus:"−",minusd:"∸",minusdu:"⨪",MinusPlus:"∓",mlcp:"⫛",mldr:"…",mnplus:"∓",models:"⊧",Mopf:"𝕄",mopf:"𝕞",mp:"∓",mscr:"𝓂",Mscr:"ℳ",mstpos:"∾",Mu:"Μ",mu:"μ",multimap:"⊸",mumap:"⊸",nabla:"∇",Nacute:"Ń",nacute:"ń",nang:"∠⃒",nap:"≉",napE:"⩰̸",napid:"≋̸",napos:"ʼn",napprox:"≉",natural:"♮",naturals:"ℕ",natur:"♮",nbsp:" ",nbump:"≎̸",nbumpe:"≏̸",ncap:"⩃",Ncaron:"Ň",ncaron:"ň",Ncedil:"Ņ",ncedil:"ņ",ncong:"≇",ncongdot:"⩭̸",ncup:"⩂",Ncy:"Н",ncy:"н",ndash:"–",nearhk:"⤤",nearr:"↗",neArr:"⇗",nearrow:"↗",ne:"≠",nedot:"≐̸",NegativeMediumSpace:"​",NegativeThickSpace:"​",NegativeThinSpace:"​",NegativeVeryThinSpace:"​",nequiv:"≢",nesear:"⤨",nesim:"≂̸",NestedGreaterGreater:"≫",NestedLessLess:"≪",NewLine:"\n",nexist:"∄",nexists:"∄",Nfr:"𝔑",nfr:"𝔫",ngE:"≧̸",nge:"≱",ngeq:"≱",ngeqq:"≧̸",ngeqslant:"⩾̸",nges:"⩾̸",nGg:"⋙̸",ngsim:"≵",nGt:"≫⃒",ngt:"≯",ngtr:"≯",nGtv:"≫̸",nharr:"↮",nhArr:"⇎",nhpar:"⫲",ni:"∋",nis:"⋼",nisd:"⋺",niv:"∋",NJcy:"Њ",njcy:"њ",nlarr:"↚",nlArr:"⇍",nldr:"‥",nlE:"≦̸",nle:"≰",nleftarrow:"↚",nLeftarrow:"⇍",nleftrightarrow:"↮",nLeftrightarrow:"⇎",nleq:"≰",nleqq:"≦̸",nleqslant:"⩽̸",nles:"⩽̸",nless:"≮",nLl:"⋘̸",nlsim:"≴",nLt:"≪⃒",nlt:"≮",nltri:"⋪",nltrie:"⋬",nLtv:"≪̸",nmid:"∤",NoBreak:"⁠",NonBreakingSpace:" ",nopf:"𝕟",Nopf:"ℕ",Not:"⫬",not:"¬",NotCongruent:"≢",NotCupCap:"≭",NotDoubleVerticalBar:"∦",NotElement:"∉",NotEqual:"≠",NotEqualTilde:"≂̸",NotExists:"∄",NotGreater:"≯",NotGreaterEqual:"≱",NotGreaterFullEqual:"≧̸",NotGreaterGreater:"≫̸",NotGreaterLess:"≹",NotGreaterSlantEqual:"⩾̸",NotGreaterTilde:"≵",NotHumpDownHump:"≎̸",NotHumpEqual:"≏̸",notin:"∉",notindot:"⋵̸",notinE:"⋹̸",notinva:"∉",notinvb:"⋷",notinvc:"⋶",NotLeftTriangleBar:"⧏̸",NotLeftTriangle:"⋪",NotLeftTriangleEqual:"⋬",NotLess:"≮",NotLessEqual:"≰",NotLessGreater:"≸",NotLessLess:"≪̸",NotLessSlantEqual:"⩽̸",NotLessTilde:"≴",NotNestedGreaterGreater:"⪢̸",NotNestedLessLess:"⪡̸",notni:"∌",notniva:"∌",notnivb:"⋾",notnivc:"⋽",NotPrecedes:"⊀",NotPrecedesEqual:"⪯̸",NotPrecedesSlantEqual:"⋠",NotReverseElement:"∌",NotRightTriangleBar:"⧐̸",NotRightTriangle:"⋫",NotRightTriangleEqual:"⋭",NotSquareSubset:"⊏̸",NotSquareSubsetEqual:"⋢",NotSquareSuperset:"⊐̸",NotSquareSupersetEqual:"⋣",NotSubset:"⊂⃒",NotSubsetEqual:"⊈",NotSucceeds:"⊁",NotSucceedsEqual:"⪰̸",NotSucceedsSlantEqual:"⋡",NotSucceedsTilde:"≿̸",NotSuperset:"⊃⃒",NotSupersetEqual:"⊉",NotTilde:"≁",NotTildeEqual:"≄",NotTildeFullEqual:"≇",NotTildeTilde:"≉",NotVerticalBar:"∤",nparallel:"∦",npar:"∦",nparsl:"⫽⃥",npart:"∂̸",npolint:"⨔",npr:"⊀",nprcue:"⋠",nprec:"⊀",npreceq:"⪯̸",npre:"⪯̸",nrarrc:"⤳̸",nrarr:"↛",nrArr:"⇏",nrarrw:"↝̸",nrightarrow:"↛",nRightarrow:"⇏",nrtri:"⋫",nrtrie:"⋭",nsc:"⊁",nsccue:"⋡",nsce:"⪰̸",Nscr:"𝒩",nscr:"𝓃",nshortmid:"∤",nshortparallel:"∦",nsim:"≁",nsime:"≄",nsimeq:"≄",nsmid:"∤",nspar:"∦",nsqsube:"⋢",nsqsupe:"⋣",nsub:"⊄",nsubE:"⫅̸",nsube:"⊈",nsubset:"⊂⃒",nsubseteq:"⊈",nsubseteqq:"⫅̸",nsucc:"⊁",nsucceq:"⪰̸",nsup:"⊅",nsupE:"⫆̸",nsupe:"⊉",nsupset:"⊃⃒",nsupseteq:"⊉",nsupseteqq:"⫆̸",ntgl:"≹",Ntilde:"Ñ",ntilde:"ñ",ntlg:"≸",ntriangleleft:"⋪",ntrianglelefteq:"⋬",ntriangleright:"⋫",ntrianglerighteq:"⋭",Nu:"Ν",nu:"ν",num:"#",numero:"№",numsp:" ",nvap:"≍⃒",nvdash:"⊬",nvDash:"⊭",nVdash:"⊮",nVDash:"⊯",nvge:"≥⃒",nvgt:">⃒",nvHarr:"⤄",nvinfin:"⧞",nvlArr:"⤂",nvle:"≤⃒",nvlt:"<⃒",nvltrie:"⊴⃒",nvrArr:"⤃",nvrtrie:"⊵⃒",nvsim:"∼⃒",nwarhk:"⤣",nwarr:"↖",nwArr:"⇖",nwarrow:"↖",nwnear:"⤧",Oacute:"Ó",oacute:"ó",oast:"⊛",Ocirc:"Ô",ocirc:"ô",ocir:"⊚",Ocy:"О",ocy:"о",odash:"⊝",Odblac:"Ő",odblac:"ő",odiv:"⨸",odot:"⊙",odsold:"⦼",OElig:"Œ",oelig:"œ",ofcir:"⦿",Ofr:"𝔒",ofr:"𝔬",ogon:"˛",Ograve:"Ò",ograve:"ò",ogt:"⧁",ohbar:"⦵",ohm:"Ω",oint:"∮",olarr:"↺",olcir:"⦾",olcross:"⦻",oline:"‾",olt:"⧀",Omacr:"Ō",omacr:"ō",Omega:"Ω",omega:"ω",Omicron:"Ο",omicron:"ο",omid:"⦶",ominus:"⊖",Oopf:"𝕆",oopf:"𝕠",opar:"⦷",OpenCurlyDoubleQuote:"“",OpenCurlyQuote:"‘",operp:"⦹",oplus:"⊕",orarr:"↻",Or:"⩔",or:"∨",ord:"⩝",order:"ℴ",orderof:"ℴ",ordf:"ª",ordm:"º",origof:"⊶",oror:"⩖",orslope:"⩗",orv:"⩛",oS:"Ⓢ",Oscr:"𝒪",oscr:"ℴ",Oslash:"Ø",oslash:"ø",osol:"⊘",Otilde:"Õ",otilde:"õ",otimesas:"⨶",Otimes:"⨷",otimes:"⊗",Ouml:"Ö",ouml:"ö",ovbar:"⌽",OverBar:"‾",OverBrace:"⏞",OverBracket:"⎴",OverParenthesis:"⏜",para:"¶",parallel:"∥",par:"∥",parsim:"⫳",parsl:"⫽",part:"∂",PartialD:"∂",Pcy:"П",pcy:"п",percnt:"%",period:".",permil:"‰",perp:"⊥",pertenk:"‱",Pfr:"𝔓",pfr:"𝔭",Phi:"Φ",phi:"φ",phiv:"ϕ",phmmat:"ℳ",phone:"☎",Pi:"Π",pi:"π",pitchfork:"⋔",piv:"ϖ",planck:"ℏ",planckh:"ℎ",plankv:"ℏ",plusacir:"⨣",plusb:"⊞",pluscir:"⨢",plus:"+",plusdo:"∔",plusdu:"⨥",pluse:"⩲",PlusMinus:"±",plusmn:"±",plussim:"⨦",plustwo:"⨧",pm:"±",Poincareplane:"ℌ",pointint:"⨕",popf:"𝕡",Popf:"ℙ",pound:"£",prap:"⪷",Pr:"⪻",pr:"≺",prcue:"≼",precapprox:"⪷",prec:"≺",preccurlyeq:"≼",Precedes:"≺",PrecedesEqual:"⪯",PrecedesSlantEqual:"≼",PrecedesTilde:"≾",preceq:"⪯",precnapprox:"⪹",precneqq:"⪵",precnsim:"⋨",pre:"⪯",prE:"⪳",precsim:"≾",prime:"′",Prime:"″",primes:"ℙ",prnap:"⪹",prnE:"⪵",prnsim:"⋨",prod:"∏",Product:"∏",profalar:"⌮",profline:"⌒",profsurf:"⌓",prop:"∝",Proportional:"∝",Proportion:"∷",propto:"∝",prsim:"≾",prurel:"⊰",Pscr:"𝒫",pscr:"𝓅",Psi:"Ψ",psi:"ψ",puncsp:" ",Qfr:"𝔔",qfr:"𝔮",qint:"⨌",qopf:"𝕢",Qopf:"ℚ",qprime:"⁗",Qscr:"𝒬",qscr:"𝓆",quaternions:"ℍ",quatint:"⨖",quest:"?",questeq:"≟",quot:'"',QUOT:'"',rAarr:"⇛",race:"∽̱",Racute:"Ŕ",racute:"ŕ",radic:"√",raemptyv:"⦳",rang:"⟩",Rang:"⟫",rangd:"⦒",range:"⦥",rangle:"⟩",raquo:"»",rarrap:"⥵",rarrb:"⇥",rarrbfs:"⤠",rarrc:"⤳",rarr:"→",Rarr:"↠",rArr:"⇒",rarrfs:"⤞",rarrhk:"↪",rarrlp:"↬",rarrpl:"⥅",rarrsim:"⥴",Rarrtl:"⤖",rarrtl:"↣",rarrw:"↝",ratail:"⤚",rAtail:"⤜",ratio:"∶",rationals:"ℚ",rbarr:"⤍",rBarr:"⤏",RBarr:"⤐",rbbrk:"❳",rbrace:"}",rbrack:"]",rbrke:"⦌",rbrksld:"⦎",rbrkslu:"⦐",Rcaron:"Ř",rcaron:"ř",Rcedil:"Ŗ",rcedil:"ŗ",rceil:"⌉",rcub:"}",Rcy:"Р",rcy:"р",rdca:"⤷",rdldhar:"⥩",rdquo:"”",rdquor:"”",rdsh:"↳",real:"ℜ",realine:"ℛ",realpart:"ℜ",reals:"ℝ",Re:"ℜ",rect:"▭",reg:"®",REG:"®",ReverseElement:"∋",ReverseEquilibrium:"⇋",ReverseUpEquilibrium:"⥯",rfisht:"⥽",rfloor:"⌋",rfr:"𝔯",Rfr:"ℜ",rHar:"⥤",rhard:"⇁",rharu:"⇀",rharul:"⥬",Rho:"Ρ",rho:"ρ",rhov:"ϱ",RightAngleBracket:"⟩",RightArrowBar:"⇥",rightarrow:"→",RightArrow:"→",Rightarrow:"⇒",RightArrowLeftArrow:"⇄",rightarrowtail:"↣",RightCeiling:"⌉",RightDoubleBracket:"⟧",RightDownTeeVector:"⥝",RightDownVectorBar:"⥕",RightDownVector:"⇂",RightFloor:"⌋",rightharpoondown:"⇁",rightharpoonup:"⇀",rightleftarrows:"⇄",rightleftharpoons:"⇌",rightrightarrows:"⇉",rightsquigarrow:"↝",RightTeeArrow:"↦",RightTee:"⊢",RightTeeVector:"⥛",rightthreetimes:"⋌",RightTriangleBar:"⧐",RightTriangle:"⊳",RightTriangleEqual:"⊵",RightUpDownVector:"⥏",RightUpTeeVector:"⥜",RightUpVectorBar:"⥔",RightUpVector:"↾",RightVectorBar:"⥓",RightVector:"⇀",ring:"˚",risingdotseq:"≓",rlarr:"⇄",rlhar:"⇌",rlm:"‏",rmoustache:"⎱",rmoust:"⎱",rnmid:"⫮",roang:"⟭",roarr:"⇾",robrk:"⟧",ropar:"⦆",ropf:"𝕣",Ropf:"ℝ",roplus:"⨮",rotimes:"⨵",RoundImplies:"⥰",rpar:")",rpargt:"⦔",rppolint:"⨒",rrarr:"⇉",Rrightarrow:"⇛",rsaquo:"›",rscr:"𝓇",Rscr:"ℛ",rsh:"↱",Rsh:"↱",rsqb:"]",rsquo:"’",rsquor:"’",rthree:"⋌",rtimes:"⋊",rtri:"▹",rtrie:"⊵",rtrif:"▸",rtriltri:"⧎",RuleDelayed:"⧴",ruluhar:"⥨",rx:"℞",Sacute:"Ś",sacute:"ś",sbquo:"‚",scap:"⪸",Scaron:"Š",scaron:"š",Sc:"⪼",sc:"≻",sccue:"≽",sce:"⪰",scE:"⪴",Scedil:"Ş",scedil:"ş",Scirc:"Ŝ",scirc:"ŝ",scnap:"⪺",scnE:"⪶",scnsim:"⋩",scpolint:"⨓",scsim:"≿",Scy:"С",scy:"с",sdotb:"⊡",sdot:"⋅",sdote:"⩦",searhk:"⤥",searr:"↘",seArr:"⇘",searrow:"↘",sect:"§",semi:";",seswar:"⤩",setminus:"∖",setmn:"∖",sext:"✶",Sfr:"𝔖",sfr:"𝔰",sfrown:"⌢",sharp:"♯",SHCHcy:"Щ",shchcy:"щ",SHcy:"Ш",shcy:"ш",ShortDownArrow:"↓",ShortLeftArrow:"←",shortmid:"∣",shortparallel:"∥",ShortRightArrow:"→",ShortUpArrow:"↑",shy:"­",Sigma:"Σ",sigma:"σ",sigmaf:"ς",sigmav:"ς",sim:"∼",simdot:"⩪",sime:"≃",simeq:"≃",simg:"⪞",simgE:"⪠",siml:"⪝",simlE:"⪟",simne:"≆",simplus:"⨤",simrarr:"⥲",slarr:"←",SmallCircle:"∘",smallsetminus:"∖",smashp:"⨳",smeparsl:"⧤",smid:"∣",smile:"⌣",smt:"⪪",smte:"⪬",smtes:"⪬︀",SOFTcy:"Ь",softcy:"ь",solbar:"⌿",solb:"⧄",sol:"/",Sopf:"𝕊",sopf:"𝕤",spades:"♠",spadesuit:"♠",spar:"∥",sqcap:"⊓",sqcaps:"⊓︀",sqcup:"⊔",sqcups:"⊔︀",Sqrt:"√",sqsub:"⊏",sqsube:"⊑",sqsubset:"⊏",sqsubseteq:"⊑",sqsup:"⊐",sqsupe:"⊒",sqsupset:"⊐",sqsupseteq:"⊒",square:"□",Square:"□",SquareIntersection:"⊓",SquareSubset:"⊏",SquareSubsetEqual:"⊑",SquareSuperset:"⊐",SquareSupersetEqual:"⊒",SquareUnion:"⊔",squarf:"▪",squ:"□",squf:"▪",srarr:"→",Sscr:"𝒮",sscr:"𝓈",ssetmn:"∖",ssmile:"⌣",sstarf:"⋆",Star:"⋆",star:"☆",starf:"★",straightepsilon:"ϵ",straightphi:"ϕ",strns:"¯",sub:"⊂",Sub:"⋐",subdot:"⪽",subE:"⫅",sube:"⊆",subedot:"⫃",submult:"⫁",subnE:"⫋",subne:"⊊",subplus:"⪿",subrarr:"⥹",subset:"⊂",Subset:"⋐",subseteq:"⊆",subseteqq:"⫅",SubsetEqual:"⊆",subsetneq:"⊊",subsetneqq:"⫋",subsim:"⫇",subsub:"⫕",subsup:"⫓",succapprox:"⪸",succ:"≻",succcurlyeq:"≽",Succeeds:"≻",SucceedsEqual:"⪰",SucceedsSlantEqual:"≽",SucceedsTilde:"≿",succeq:"⪰",succnapprox:"⪺",succneqq:"⪶",succnsim:"⋩",succsim:"≿",SuchThat:"∋",sum:"∑",Sum:"∑",sung:"♪",sup1:"¹",sup2:"²",sup3:"³",sup:"⊃",Sup:"⋑",supdot:"⪾",supdsub:"⫘",supE:"⫆",supe:"⊇",supedot:"⫄",Superset:"⊃",SupersetEqual:"⊇",suphsol:"⟉",suphsub:"⫗",suplarr:"⥻",supmult:"⫂",supnE:"⫌",supne:"⊋",supplus:"⫀",supset:"⊃",Supset:"⋑",supseteq:"⊇",supseteqq:"⫆",supsetneq:"⊋",supsetneqq:"⫌",supsim:"⫈",supsub:"⫔",supsup:"⫖",swarhk:"⤦",swarr:"↙",swArr:"⇙",swarrow:"↙",swnwar:"⤪",szlig:"ß",Tab:"\t",target:"⌖",Tau:"Τ",tau:"τ",tbrk:"⎴",Tcaron:"Ť",tcaron:"ť",Tcedil:"Ţ",tcedil:"ţ",Tcy:"Т",tcy:"т",tdot:"⃛",telrec:"⌕",Tfr:"𝔗",tfr:"𝔱",there4:"∴",therefore:"∴",Therefore:"∴",Theta:"Θ",theta:"θ",thetasym:"ϑ",thetav:"ϑ",thickapprox:"≈",thicksim:"∼",ThickSpace:"  ",ThinSpace:" ",thinsp:" ",thkap:"≈",thksim:"∼",THORN:"Þ",thorn:"þ",tilde:"˜",Tilde:"∼",TildeEqual:"≃",TildeFullEqual:"≅",TildeTilde:"≈",timesbar:"⨱",timesb:"⊠",times:"×",timesd:"⨰",tint:"∭",toea:"⤨",topbot:"⌶",topcir:"⫱",top:"⊤",Topf:"𝕋",topf:"𝕥",topfork:"⫚",tosa:"⤩",tprime:"‴",trade:"™",TRADE:"™",triangle:"▵",triangledown:"▿",triangleleft:"◃",trianglelefteq:"⊴",triangleq:"≜",triangleright:"▹",trianglerighteq:"⊵",tridot:"◬",trie:"≜",triminus:"⨺",TripleDot:"⃛",triplus:"⨹",trisb:"⧍",tritime:"⨻",trpezium:"⏢",Tscr:"𝒯",tscr:"𝓉",TScy:"Ц",tscy:"ц",TSHcy:"Ћ",tshcy:"ћ",Tstrok:"Ŧ",tstrok:"ŧ",twixt:"≬",twoheadleftarrow:"↞",twoheadrightarrow:"↠",Uacute:"Ú",uacute:"ú",uarr:"↑",Uarr:"↟",uArr:"⇑",Uarrocir:"⥉",Ubrcy:"Ў",ubrcy:"ў",Ubreve:"Ŭ",ubreve:"ŭ",Ucirc:"Û",ucirc:"û",Ucy:"У",ucy:"у",udarr:"⇅",Udblac:"Ű",udblac:"ű",udhar:"⥮",ufisht:"⥾",Ufr:"𝔘",ufr:"𝔲",Ugrave:"Ù",ugrave:"ù",uHar:"⥣",uharl:"↿",uharr:"↾",uhblk:"▀",ulcorn:"⌜",ulcorner:"⌜",ulcrop:"⌏",ultri:"◸",Umacr:"Ū",umacr:"ū",uml:"¨",UnderBar:"_",UnderBrace:"⏟",UnderBracket:"⎵",UnderParenthesis:"⏝",Union:"⋃",UnionPlus:"⊎",Uogon:"Ų",uogon:"ų",Uopf:"𝕌",uopf:"𝕦",UpArrowBar:"⤒",uparrow:"↑",UpArrow:"↑",Uparrow:"⇑",UpArrowDownArrow:"⇅",updownarrow:"↕",UpDownArrow:"↕",Updownarrow:"⇕",UpEquilibrium:"⥮",upharpoonleft:"↿",upharpoonright:"↾",uplus:"⊎",UpperLeftArrow:"↖",UpperRightArrow:"↗",upsi:"υ",Upsi:"ϒ",upsih:"ϒ",Upsilon:"Υ",upsilon:"υ",UpTeeArrow:"↥",UpTee:"⊥",upuparrows:"⇈",urcorn:"⌝",urcorner:"⌝",urcrop:"⌎",Uring:"Ů",uring:"ů",urtri:"◹",Uscr:"𝒰",uscr:"𝓊",utdot:"⋰",Utilde:"Ũ",utilde:"ũ",utri:"▵",utrif:"▴",uuarr:"⇈",Uuml:"Ü",uuml:"ü",uwangle:"⦧",vangrt:"⦜",varepsilon:"ϵ",varkappa:"ϰ",varnothing:"∅",varphi:"ϕ",varpi:"ϖ",varpropto:"∝",varr:"↕",vArr:"⇕",varrho:"ϱ",varsigma:"ς",varsubsetneq:"⊊︀",varsubsetneqq:"⫋︀",varsupsetneq:"⊋︀",varsupsetneqq:"⫌︀",vartheta:"ϑ",vartriangleleft:"⊲",vartriangleright:"⊳",vBar:"⫨",Vbar:"⫫",vBarv:"⫩",Vcy:"В",vcy:"в",vdash:"⊢",vDash:"⊨",Vdash:"⊩",VDash:"⊫",Vdashl:"⫦",veebar:"⊻",vee:"∨",Vee:"⋁",veeeq:"≚",vellip:"⋮",verbar:"|",Verbar:"‖",vert:"|",Vert:"‖",VerticalBar:"∣",VerticalLine:"|",VerticalSeparator:"❘",VerticalTilde:"≀",VeryThinSpace:" ",Vfr:"𝔙",vfr:"𝔳",vltri:"⊲",vnsub:"⊂⃒",vnsup:"⊃⃒",Vopf:"𝕍",vopf:"𝕧",vprop:"∝",vrtri:"⊳",Vscr:"𝒱",vscr:"𝓋",vsubnE:"⫋︀",vsubne:"⊊︀",vsupnE:"⫌︀",vsupne:"⊋︀",Vvdash:"⊪",vzigzag:"⦚",Wcirc:"Ŵ",wcirc:"ŵ",wedbar:"⩟",wedge:"∧",Wedge:"⋀",wedgeq:"≙",weierp:"℘",Wfr:"𝔚",wfr:"𝔴",Wopf:"𝕎",wopf:"𝕨",wp:"℘",wr:"≀",wreath:"≀",Wscr:"𝒲",wscr:"𝓌",xcap:"⋂",xcirc:"◯",xcup:"⋃",xdtri:"▽",Xfr:"𝔛",xfr:"𝔵",xharr:"⟷",xhArr:"⟺",Xi:"Ξ",xi:"ξ",xlarr:"⟵",xlArr:"⟸",xmap:"⟼",xnis:"⋻",xodot:"⨀",Xopf:"𝕏",xopf:"𝕩",xoplus:"⨁",xotime:"⨂",xrarr:"⟶",xrArr:"⟹",Xscr:"𝒳",xscr:"𝓍",xsqcup:"⨆",xuplus:"⨄",xutri:"△",xvee:"⋁",xwedge:"⋀",Yacute:"Ý",yacute:"ý",YAcy:"Я",yacy:"я",Ycirc:"Ŷ",ycirc:"ŷ",Ycy:"Ы",ycy:"ы",yen:"¥",Yfr:"𝔜",yfr:"𝔶",YIcy:"Ї",yicy:"ї",Yopf:"𝕐",yopf:"𝕪",Yscr:"𝒴",yscr:"𝓎",YUcy:"Ю",yucy:"ю",yuml:"ÿ",Yuml:"Ÿ",Zacute:"Ź",zacute:"ź",Zcaron:"Ž",zcaron:"ž",Zcy:"З",zcy:"з",Zdot:"Ż",zdot:"ż",zeetrf:"ℨ",ZeroWidthSpace:"​",Zeta:"Ζ",zeta:"ζ",zfr:"𝔷",Zfr:"ℨ",ZHcy:"Ж",zhcy:"ж",zigrarr:"⇝",zopf:"𝕫",Zopf:"ℤ",Zscr:"𝒵",zscr:"𝓏",zwj:"‍",zwnj:"‌"}},function(a){a.exports={amp:"&",apos:"'",gt:">",lt:"<",quot:'"'}},function(a,e){function t(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function i(a){return"function"==typeof a}function n(a){return"object"==typeof a&&null!==a}function o(a){return void 0===a}a.exports=t,t.EventEmitter=t,t.prototype._events=void 0,t.prototype._maxListeners=void 0,t.defaultMaxListeners=10,t.prototype.setMaxListeners=function(a){if(!function(a){return"number"==typeof a}(a)||a<0||isNaN(a))throw TypeError("n must be a positive number");return this._maxListeners=a,this},t.prototype.emit=function(a){var e,t,r,s,d,l;if(this._events||(this._events={}),"error"===a&&(!this._events.error||n(this._events.error)&&!this._events.error.length)){if((e=arguments[1])instanceof Error)throw e;var c=new Error('Uncaught, unspecified "error" event. ('+e+")");throw c.context=e,c}if(o(t=this._events[a]))return!1;if(i(t))switch(arguments.length){case 1:t.call(this);break;case 2:t.call(this,arguments[1]);break;case 3:t.call(this,arguments[1],arguments[2]);break;default:s=Array.prototype.slice.call(arguments,1),t.apply(this,s)}else if(n(t))for(s=Array.prototype.slice.call(arguments,1),r=(l=t.slice()).length,d=0;d<r;d++)l[d].apply(this,s);return!0},t.prototype.addListener=function(a,e){var r;if(!i(e))throw TypeError("listener must be a function");return this._events||(this._events={}),this._events.newListener&&this.emit("newListener",a,i(e.listener)?e.listener:e),this._events[a]?n(this._events[a])?this._events[a].push(e):this._events[a]=[this._events[a],e]:this._events[a]=e,n(this._events[a])&&!this._events[a].warned&&(r=o(this._maxListeners)?t.defaultMaxListeners:this._maxListeners)&&r>0&&this._events[a].length>r&&(this._events[a].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[a].length),"function"==typeof console.trace&&console.trace()),this},t.prototype.on=t.prototype.addListener,t.prototype.once=function(a,e){if(!i(e))throw TypeError("listener must be a function");var t=!1;function n(){this.removeListener(a,n),t||(t=!0,e.apply(this,arguments))}return n.listener=e,this.on(a,n),this},t.prototype.removeListener=function(a,e){var t,o,r,s;if(!i(e))throw TypeError("listener must be a function");if(!this._events||!this._events[a])return this;if(r=(t=this._events[a]).length,o=-1,t===e||i(t.listener)&&t.listener===e)delete this._events[a],this._events.removeListener&&this.emit("removeListener",a,e);else if(n(t)){for(s=r;s-- >0;)if(t[s]===e||t[s].listener&&t[s].listener===e){o=s;break}if(o<0)return this;1===t.length?(t.length=0,delete this._events[a]):t.splice(o,1),this._events.removeListener&&this.emit("removeListener",a,e)}return this},t.prototype.removeAllListeners=function(a){var e,t;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[a]&&delete this._events[a],this;if(0===arguments.length){for(e in this._events)"removeListener"!==e&&this.removeAllListeners(e);return this.removeAllListeners("removeListener"),this._events={},this}if(i(t=this._events[a]))this.removeListener(a,t);else if(t)for(;t.length;)this.removeListener(a,t[t.length-1]);return delete this._events[a],this},t.prototype.listeners=function(a){return this._events&&this._events[a]?i(this._events[a])?[this._events[a]]:this._events[a].slice():[]},t.prototype.listenerCount=function(a){if(this._events){var e=this._events[a];if(i(e))return 1;if(e)return e.length}return 0},t.listenerCount=function(a,e){return a.listenerCount(e)}},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=t(2),n=s(t(366)),o=s(t(365)),r=s(t(510));function s(a){return a&&a.__esModule?a:{default:a}}e.default=(0,i.memoize)(function(a,e,t){return(0,i.isUndefined)(e)&&(e=""),((0,i.isUndefined)(t)||!0===t)&&(a=(0,n.default)(a)),a=(0,r.default)(a),a=(0,i.escapeRegExp)(a),a=(0,o.default)(a,!1,e),new RegExp(a,"ig")})},function(a,e,t){"use strict";function i(a){Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name,this.message=a}Object.defineProperty(e,"__esModule",{value:!0}),function(a){return a&&a.__esModule?a:{default:a}}(t(73)).default.inherits(i,Error),e.default=i},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(a){var e;return null===(e=a.match(/<a(?:[^>]+)?>(.*?)<\/a>/gi))&&(e=[]),e}},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=function(a){return a&&a.__esModule?a:{default:a}}(t(761));var n=/href=(["'])([^"']+)\1/i;function o(a){return a.split("#")[0]}function r(a){return a.split("?")[0]}function s(a){return a.replace(/\/$/,"")}function d(a){return s(a)+"/"}e.default={removeHash:o,removeQueryArgs:r,removeTrailingSlash:s,addTrailingSlash:d,getFromAnchorTag:function(a){var e=n.exec(a);return null===e?"":e[2]},areEqual:function(a,e){return a=r(o(a)),e=r(o(e)),d(a)===d(e)},getHostname:function(a){return(a=i.default.parse(a)).hostname},getProtocol:function(a){return i.default.parse(a).protocol},isInternalLink:function(a,e){var t=i.default.parse(a,!1,!0);return-1===a.indexOf("//")&&0===a.indexOf("/")||0!==a.indexOf("#")&&(!t.host||t.host===e)},protocolIsHttpScheme:function(a){return!!a&&("http:"===a||"https:"===a)},isRelativeFragmentURL:function(a){return 0===a.indexOf("#")}}},function(a,e,t){"use strict";var i=t(762),n=t(763);function o(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}e.parse=b,e.resolve=function(a,e){return b(a,!1,!0).resolve(e)},e.resolveObject=function(a,e){return a?b(a,!1,!0).resolveObject(e):e},e.format=function(a){n.isString(a)&&(a=b(a));return a instanceof o?a.format():o.prototype.format.call(a)},e.Url=o;var r=/^([a-z0-9.+-]+:)/i,s=/:[0-9]*$/,d=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,l=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),c=["'"].concat(l),u=["%","/","?",";","#"].concat(c),p=["/","?","#"],z=/^[+a-z0-9A-Z_-]{0,63}$/,g=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,m={javascript:!0,"javascript:":!0},f={javascript:!0,"javascript:":!0},y={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},w=t(521);function b(a,e,t){if(a&&n.isObject(a)&&a instanceof o)return a;var i=new o;return i.parse(a,e,t),i}o.prototype.parse=function(a,e,t){if(!n.isString(a))throw new TypeError("Parameter 'url' must be a string, not "+typeof a);var o=a.indexOf("?"),s=-1!==o&&o<a.indexOf("#")?"?":"#",l=a.split(s);l[0]=l[0].replace(/\\/g,"/");var b=a=l.join(s);if(b=b.trim(),!t&&1===a.split("#").length){var h=d.exec(b);if(h)return this.path=b,this.href=b,this.pathname=h[1],h[2]?(this.search=h[2],this.query=e?w.parse(this.search.substr(1)):this.search.substr(1)):e&&(this.search="",this.query={}),this}var v=r.exec(b);if(v){var k=(v=v[0]).toLowerCase();this.protocol=k,b=b.substr(v.length)}if(t||v||b.match(/^\/\/[^@\/]+@[^@\/]+/)){var j="//"===b.substr(0,2);!j||v&&f[v]||(b=b.substr(2),this.slashes=!0)}if(!f[v]&&(j||v&&!y[v])){for(var _,x,q=-1,E=0;E<p.length;E++){-1!==(A=b.indexOf(p[E]))&&(-1===q||A<q)&&(q=A)}-1!==(x=-1===q?b.lastIndexOf("@"):b.lastIndexOf("@",q))&&(_=b.slice(0,x),b=b.slice(x+1),this.auth=decodeURIComponent(_)),q=-1;for(E=0;E<u.length;E++){var A;-1!==(A=b.indexOf(u[E]))&&(-1===q||A<q)&&(q=A)}-1===q&&(q=b.length),this.host=b.slice(0,q),b=b.slice(q),this.parseHost(),this.hostname=this.hostname||"";var T="["===this.hostname[0]&&"]"===this.hostname[this.hostname.length-1];if(!T)for(var O=this.hostname.split(/\./),S=(E=0,O.length);E<S;E++){var P=O[E];if(P&&!P.match(z)){for(var M="",C=0,R=P.length;C<R;C++)P.charCodeAt(C)>127?M+="x":M+=P[C];if(!M.match(z)){var D=O.slice(0,E),F=O.slice(E+1),B=P.match(g);B&&(D.push(B[1]),F.unshift(B[2])),F.length&&(b="/"+F.join(".")+b),this.hostname=D.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),T||(this.hostname=i.toASCII(this.hostname));var $=this.port?":"+this.port:"",L=this.hostname||"";this.host=L+$,this.href+=this.host,T&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==b[0]&&(b="/"+b))}if(!m[k])for(E=0,S=c.length;E<S;E++){var I=c[E];if(-1!==b.indexOf(I)){var W=encodeURIComponent(I);W===I&&(W=escape(I)),b=b.split(I).join(W)}}var U=b.indexOf("#");-1!==U&&(this.hash=b.substr(U),b=b.slice(0,U));var N=b.indexOf("?");if(-1!==N?(this.search=b.substr(N),this.query=b.substr(N+1),e&&(this.query=w.parse(this.query)),b=b.slice(0,N)):e&&(this.search="",this.query={}),b&&(this.pathname=b),y[k]&&this.hostname&&!this.pathname&&(this.pathname="/"),this.pathname||this.search){$=this.pathname||"";var K=this.search||"";this.path=$+K}return this.href=this.format(),this},o.prototype.format=function(){var a=this.auth||"";a&&(a=(a=encodeURIComponent(a)).replace(/%3A/i,":"),a+="@");var e=this.protocol||"",t=this.pathname||"",i=this.hash||"",o=!1,r="";this.host?o=a+this.host:this.hostname&&(o=a+(-1===this.hostname.indexOf(":")?this.hostname:"["+this.hostname+"]"),this.port&&(o+=":"+this.port)),this.query&&n.isObject(this.query)&&Object.keys(this.query).length&&(r=w.stringify(this.query));var s=this.search||r&&"?"+r||"";return e&&":"!==e.substr(-1)&&(e+=":"),this.slashes||(!e||y[e])&&!1!==o?(o="//"+(o||""),t&&"/"!==t.charAt(0)&&(t="/"+t)):o||(o=""),i&&"#"!==i.charAt(0)&&(i="#"+i),s&&"?"!==s.charAt(0)&&(s="?"+s),e+o+(t=t.replace(/[?#]/g,function(a){return encodeURIComponent(a)}))+(s=s.replace("#","%23"))+i},o.prototype.resolve=function(a){return this.resolveObject(b(a,!1,!0)).format()},o.prototype.resolveObject=function(a){if(n.isString(a)){var e=new o;e.parse(a,!1,!0),a=e}for(var t=new o,i=Object.keys(this),r=0;r<i.length;r++){var s=i[r];t[s]=this[s]}if(t.hash=a.hash,""===a.href)return t.href=t.format(),t;if(a.slashes&&!a.protocol){for(var d=Object.keys(a),l=0;l<d.length;l++){var c=d[l];"protocol"!==c&&(t[c]=a[c])}return y[t.protocol]&&t.hostname&&!t.pathname&&(t.path=t.pathname="/"),t.href=t.format(),t}if(a.protocol&&a.protocol!==t.protocol){if(!y[a.protocol]){for(var u=Object.keys(a),p=0;p<u.length;p++){var z=u[p];t[z]=a[z]}return t.href=t.format(),t}if(t.protocol=a.protocol,a.host||f[a.protocol])t.pathname=a.pathname;else{for(var g=(a.pathname||"").split("/");g.length&&!(a.host=g.shift()););a.host||(a.host=""),a.hostname||(a.hostname=""),""!==g[0]&&g.unshift(""),g.length<2&&g.unshift(""),t.pathname=g.join("/")}if(t.search=a.search,t.query=a.query,t.host=a.host||"",t.auth=a.auth,t.hostname=a.hostname||a.host,t.port=a.port,t.pathname||t.search){var m=t.pathname||"",w=t.search||"";t.path=m+w}return t.slashes=t.slashes||a.slashes,t.href=t.format(),t}var b=t.pathname&&"/"===t.pathname.charAt(0),h=a.host||a.pathname&&"/"===a.pathname.charAt(0),v=h||b||t.host&&a.pathname,k=v,j=t.pathname&&t.pathname.split("/")||[],_=(g=a.pathname&&a.pathname.split("/")||[],t.protocol&&!y[t.protocol]);if(_&&(t.hostname="",t.port=null,t.host&&(""===j[0]?j[0]=t.host:j.unshift(t.host)),t.host="",a.protocol&&(a.hostname=null,a.port=null,a.host&&(""===g[0]?g[0]=a.host:g.unshift(a.host)),a.host=null),v=v&&(""===g[0]||""===j[0])),h)t.host=a.host||""===a.host?a.host:t.host,t.hostname=a.hostname||""===a.hostname?a.hostname:t.hostname,t.search=a.search,t.query=a.query,j=g;else if(g.length)j||(j=[]),j.pop(),j=j.concat(g),t.search=a.search,t.query=a.query;else if(!n.isNullOrUndefined(a.search)){if(_)t.hostname=t.host=j.shift(),(T=!!(t.host&&t.host.indexOf("@")>0)&&t.host.split("@"))&&(t.auth=T.shift(),t.host=t.hostname=T.shift());return t.search=a.search,t.query=a.query,n.isNull(t.pathname)&&n.isNull(t.search)||(t.path=(t.pathname?t.pathname:"")+(t.search?t.search:"")),t.href=t.format(),t}if(!j.length)return t.pathname=null,t.search?t.path="/"+t.search:t.path=null,t.href=t.format(),t;for(var x=j.slice(-1)[0],q=(t.host||a.host||j.length>1)&&("."===x||".."===x)||""===x,E=0,A=j.length;A>=0;A--)"."===(x=j[A])?j.splice(A,1):".."===x?(j.splice(A,1),E++):E&&(j.splice(A,1),E--);if(!v&&!k)for(;E--;E)j.unshift("..");!v||""===j[0]||j[0]&&"/"===j[0].charAt(0)||j.unshift(""),q&&"/"!==j.join("/").substr(-1)&&j.push("");var T,O=""===j[0]||j[0]&&"/"===j[0].charAt(0);_&&(t.hostname=t.host=O?"":j.length?j.shift():"",(T=!!(t.host&&t.host.indexOf("@")>0)&&t.host.split("@"))&&(t.auth=T.shift(),t.host=t.hostname=T.shift()));return(v=v||t.host&&j.length)&&!O&&j.unshift(""),j.length?t.pathname=j.join("/"):(t.pathname=null,t.path=null),n.isNull(t.pathname)&&n.isNull(t.search)||(t.path=(t.pathname?t.pathname:"")+(t.search?t.search:"")),t.auth=a.auth||t.auth,t.slashes=t.slashes||a.slashes,t.href=t.format(),t},o.prototype.parseHost=function(){var a=this.host,e=s.exec(a);e&&(":"!==(e=e[0])&&(this.port=e.substr(1)),a=a.substr(0,a.length-e.length)),a&&(this.hostname=a)}},function(a,e,t){(function(a,i){var n;/*! https://mths.be/punycode v1.4.1 by @mathias */!function(o){"object"==typeof e&&e&&e.nodeType,"object"==typeof a&&a&&a.nodeType;var r="object"==typeof i&&i;r.global!==r&&r.window!==r&&r.self;var s,d=2147483647,l=36,c=1,u=26,p=38,z=700,g=72,m=128,f="-",y=/^xn--/,w=/[^\x20-\x7E]/,b=/[\x2E\u3002\uFF0E\uFF61]/g,h={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},v=l-c,k=Math.floor,j=String.fromCharCode;function _(a){throw new RangeError(h[a])}function x(a,e){for(var t=a.length,i=[];t--;)i[t]=e(a[t]);return i}function q(a,e){var t=a.split("@"),i="";return t.length>1&&(i=t[0]+"@",a=t[1]),i+x((a=a.replace(b,".")).split("."),e).join(".")}function E(a){for(var e,t,i=[],n=0,o=a.length;n<o;)(e=a.charCodeAt(n++))>=55296&&e<=56319&&n<o?56320==(64512&(t=a.charCodeAt(n++)))?i.push(((1023&e)<<10)+(1023&t)+65536):(i.push(e),n--):i.push(e);return i}function A(a){return x(a,function(a){var e="";return a>65535&&(e+=j((a-=65536)>>>10&1023|55296),a=56320|1023&a),e+=j(a)}).join("")}function T(a){return a-48<10?a-22:a-65<26?a-65:a-97<26?a-97:l}function O(a,e){return a+22+75*(a<26)-((0!=e)<<5)}function S(a,e,t){var i=0;for(a=t?k(a/z):a>>1,a+=k(a/e);a>v*u>>1;i+=l)a=k(a/v);return k(i+(v+1)*a/(a+p))}function P(a){var e,t,i,n,o,r,s,p,z,y,w=[],b=a.length,h=0,v=m,j=g;for((t=a.lastIndexOf(f))<0&&(t=0),i=0;i<t;++i)a.charCodeAt(i)>=128&&_("not-basic"),w.push(a.charCodeAt(i));for(n=t>0?t+1:0;n<b;){for(o=h,r=1,s=l;n>=b&&_("invalid-input"),((p=T(a.charCodeAt(n++)))>=l||p>k((d-h)/r))&&_("overflow"),h+=p*r,!(p<(z=s<=j?c:s>=j+u?u:s-j));s+=l)r>k(d/(y=l-z))&&_("overflow"),r*=y;j=S(h-o,e=w.length+1,0==o),k(h/e)>d-v&&_("overflow"),v+=k(h/e),h%=e,w.splice(h++,0,v)}return A(w)}function M(a){var e,t,i,n,o,r,s,p,z,y,w,b,h,v,x,q=[];for(b=(a=E(a)).length,e=m,t=0,o=g,r=0;r<b;++r)(w=a[r])<128&&q.push(j(w));for(i=n=q.length,n&&q.push(f);i<b;){for(s=d,r=0;r<b;++r)(w=a[r])>=e&&w<s&&(s=w);for(s-e>k((d-t)/(h=i+1))&&_("overflow"),t+=(s-e)*h,e=s,r=0;r<b;++r)if((w=a[r])<e&&++t>d&&_("overflow"),w==e){for(p=t,z=l;!(p<(y=z<=o?c:z>=o+u?u:z-o));z+=l)x=p-y,v=l-y,q.push(j(O(y+x%v,0))),p=k(x/v);q.push(j(O(p,0))),o=S(t,h,i==n),t=0,++i}++t,++e}return q.join("")}s={version:"1.4.1",ucs2:{decode:E,encode:A},decode:P,encode:M,toASCII:function(a){return q(a,function(a){return w.test(a)?"xn--"+M(a):a})},toUnicode:function(a){return q(a,function(a){return y.test(a)?P(a.slice(4).toLowerCase()):a})}},void 0===(n=function(){return s}.call(e,t,e,a))||(a.exports=n)}()}).call(this,t(41)(a),t(15))},function(a,e,t){"use strict";a.exports={isString:function(a){return"string"==typeof a},isObject:function(a){return"object"==typeof a&&null!==a},isNull:function(a){return null===a},isNullOrUndefined:function(a){return null==a}}},function(a,e,t){"use strict";function i(a,e){return Object.prototype.hasOwnProperty.call(a,e)}a.exports=function(a,e,t,o){e=e||"&",t=t||"=";var r={};if("string"!=typeof a||0===a.length)return r;var s=/\+/g;a=a.split(e);var d=1e3;o&&"number"==typeof o.maxKeys&&(d=o.maxKeys);var l=a.length;d>0&&l>d&&(l=d);for(var c=0;c<l;++c){var u,p,z,g,m=a[c].replace(s,"%20"),f=m.indexOf(t);f>=0?(u=m.substr(0,f),p=m.substr(f+1)):(u=m,p=""),z=decodeURIComponent(u),g=decodeURIComponent(p),i(r,z)?n(r[z])?r[z].push(g):r[z]=[r[z],g]:r[z]=g}return r};var n=Array.isArray||function(a){return"[object Array]"===Object.prototype.toString.call(a)}},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(a){var e=a.split(",");return e=e.map(function(a){return(0,n.default)((0,i.default)(a))}).filter(function(a){return a})};var i=o(t(108)),n=o(t(1104));function o(a){return a&&a.__esModule?a:{default:a}}},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getIndicesByWordListSorted=e.sortIndices=e.filterIndices=e.getIndicesByWordList=e.getIndicesByWord=void 0;var i=t(2),n=function(a){return a&&a.__esModule?a:{default:a}}(t(108)),o=t(854);function r(a,e){for(var t,i=0,n=a.length,r=[];(t=e.indexOf(a,i))>-1;){var s=(0,o.characterInBoundary)(e[t-1])||0===t,d=(0,o.characterInBoundary)(e[t+n])||e.length===t+n;s&&d&&r.push({index:t,match:a}),i=t+n}return r}var s=function(a,e){var t=[];return(0,i.forEach)(a,function(a){a=(0,n.default)(a),(0,o.isWordInSentence)(a,e)&&(t=t.concat(r(a,e)))}),t},d=function(a){return a.sort(function(a,e){return a.index>e.index})},l=function(a){a=d(a);for(var e=[],t=0;t<a.length;t++)!(0,i.isUndefined)(a[t+1])&&a[t+1].index<a[t].index+a[t].match.length?(e.push(a[t]),t++):e.push(a[t]);return e},c=function(a,e){var t=[];return(0,i.forEach)(a,function(a){if(a=(0,n.default)(a),!(0,o.isWordInSentence)(a,e))return t;t=t.concat(r(a,e))}),t=t.sort(function(a,e){return a.index<e.index?-1:a.index>e.index?1:0})};e.getIndicesByWord=r,e.getIndicesByWordList=s,e.filterIndices=l,e.sortIndices=d,e.getIndicesByWordListSorted=c,e.default={getIndicesByWord:r,getIndicesByWordList:s,filterIndices:l,sortIndices:d,getIndicesByWordListSorted:c}},function(a,e,t){"use strict";var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a};Object.defineProperty(e,"__esModule",{value:!0});var n="function"==typeof Symbol&&"symbol"===i(Symbol.iterator)?function(a){return void 0===a?"undefined":i(a)}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":void 0===a?"undefined":i(a)},o=t(2),r=function(a){return a&&a.__esModule?a:{default:a}}(t(758));var s=function(a){this.app=a,this.loaded=!1,this.preloadThreshold=3e3,this.plugins={},this.modifications={},this.customTests=[],setTimeout(this._pollLoadingPlugins.bind(this),1500)};s.prototype._registerPlugin=function(a,e){return"string"!=typeof a?(console.error("Failed to register plugin. Expected parameter `pluginName` to be a string."),!1):(0,o.isUndefined)(e)||"object"===(void 0===e?"undefined":n(e))?!1===this._validateUniqueness(a)?(console.error("Failed to register plugin. Plugin with name "+a+" already exists"),!1):(this.plugins[a]=e,!0):(console.error("Failed to register plugin "+a+". Expected parameters `options` to be a object."),!1)},s.prototype._ready=function(a){return"string"!=typeof a?(console.error("Failed to modify status for plugin "+a+". Expected parameter `pluginName` to be a string."),!1):(0,o.isUndefined)(this.plugins[a])?(console.error("Failed to modify status for plugin "+a+". The plugin was not properly registered."),!1):(this.plugins[a].status="ready",!0)},s.prototype._reloaded=function(a){return"string"!=typeof a?(console.error("Failed to reload Content Analysis for "+a+". Expected parameter `pluginName` to be a string."),!1):(0,o.isUndefined)(this.plugins[a])?(console.error("Failed to reload Content Analysis for plugin "+a+". The plugin was not properly registered."),!1):(this.app.refresh(),!0)},s.prototype._registerModification=function(a,e,t,i){if("string"!=typeof a)return console.error("Failed to register modification for plugin "+t+". Expected parameter `modification` to be a string."),!1;if("function"!=typeof e)return console.error("Failed to register modification for plugin "+t+". Expected parameter `callable` to be a function."),!1;if("string"!=typeof t)return console.error("Failed to register modification for plugin "+t+". Expected parameter `pluginName` to be a string."),!1;if(!1===this._validateOrigin(t))return console.error("Failed to register modification for plugin "+t+". The integration has not finished loading yet."),!1;var n={callable:e,origin:t,priority:"number"==typeof i?i:10};return(0,o.isUndefined)(this.modifications[a])&&(this.modifications[a]=[]),this.modifications[a].push(n),!0},s.prototype._registerTest=function(){console.error("This function is deprecated, please use _registerAssessment")},s.prototype._registerAssessment=function(a,e,t,i){if(!(0,o.isString)(e))throw new r.default("Failed to register test for plugin "+i+". Expected parameter `name` to be a string.");if(!(0,o.isObject)(t))throw new r.default("Failed to register assessment for plugin "+i+". Expected parameter `assessment` to be a function.");if(!(0,o.isString)(i))throw new r.default("Failed to register assessment for plugin "+i+". Expected parameter `pluginName` to be a string.");return e=i+"-"+e,a.addAssessment(e,t),!0},s.prototype._pollLoadingPlugins=function(a){a=(0,o.isUndefined)(a)?0:a,!0===this._allReady()?(this.loaded=!0,this.app.pluginsLoaded()):a>=this.preloadThreshold?this._pollTimeExceeded():(a+=50,setTimeout(this._pollLoadingPlugins.bind(this,a),50))},s.prototype._allReady=function(){return(0,o.reduce)(this.plugins,function(a,e){return a&&"ready"===e.status},!0)},s.prototype._pollTimeExceeded=function(){(0,o.forEach)(this.plugins,function(a,e){(0,o.isUndefined)(a.options)||"ready"===a.options.status||(console.error("Error: Plugin "+e+". did not finish loading in time."),delete this.plugins[e])}),this.loaded=!0,this.app.pluginsLoaded()},s.prototype._applyModifications=function(a,e,t){var i=this.modifications[a];return i instanceof Array&&i.length>0&&((i=this._stripIllegalModifications(i)).sort(function(a,e){return a.priority-e.priority}),(0,o.forEach)(i,function(i){var o=(0,i.callable)(e,t);(void 0===o?"undefined":n(o))===(void 0===e?"undefined":n(e))?e=o:console.error("Modification with name "+a+" performed by plugin with name "+i.origin+" was ignored because the data that was returned by it was of a different type than the data we had passed it.")})),e},s.prototype._addPluginTests=function(a){this.customTests.map(function(e){this._addPluginTest(a,e)},this)},s.prototype._addPluginTest=function(a,e){a.addAnalysis({name:e.name,callable:e.analysis}),a.analyzeScorer.addScoring({name:e.name,scoring:e.scoring})},s.prototype._stripIllegalModifications=function(a){return(0,o.forEach)(a,function(e,t){!1===this._validateOrigin(e.origin)&&delete a[t]}.bind(this)),a},s.prototype._validateOrigin=function(a){return"ready"===this.plugins[a].status},s.prototype._validateUniqueness=function(a){return!!(0,o.isUndefined)(this.plugins[a])},e.default=s},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=t(2),n=z(t(757)),o=t(154),r=z(t(108)),s=z(t(366)),d=z(t(483)),l=z(t(863)),c=z(t(1221)),u=z(t(864)),p=z(t(749));function z(a){return a&&a.__esModule?a:{default:a}}var g=l.default.snippetEditor,m=l.default.hiddenSpan,f={data:{title:"",metaDesc:"",urlPath:"",titleWidth:0,metaHeight:0},placeholder:{title:"This is an example title - edit by clicking here",metaDesc:"Modify your meta description by editing it right here",urlPath:"example-post/"},defaultValue:{title:"",metaDesc:""},baseURL:"http://example.com/",callbacks:{saveSnippetData:function(){}},addTrailingSlash:!0,metaDescriptionDate:"",previewMode:"desktop"},y=p.default.maxMeta,w=[{preview:"title_container",inputField:"title"},{preview:"url_container",inputField:"urlPath"},{preview:"meta_container",inputField:"metaDesc"}];function b(a){return this.data[a]}function h(a,e){this.element.input[a].value=e,this.data[a]=e}function v(a,e,t,i){var n;a.value=e,u.default.removeClasses(a,["snippet-editor__progress--bad","snippet-editor__progress--ok","snippet-editor__progress--good"]),u.default.addClass(a,"snippet-editor__progress--"+i),this.hasProgressSupport||(n=e/t*100,a.getElementsByClassName("snippet-editor__progress-bar")[0].style.width=n+"%")}var k=function(a){if((0,i.defaultsDeep)(a,f),this.data=a.data,(0,i.isUndefined)(a.analyzerApp)||(this.refObj=a.analyzerApp,this.i18n=this.refObj.i18n,this.data={title:this.refObj.rawData.snippetTitle||"",urlPath:this.refObj.rawData.snippetCite||"",metaDesc:this.refObj.rawData.snippetMeta||""},(0,i.isEmpty)(this.refObj.rawData.metaTitle)||(a.placeholder.title=this.refObj.rawData.metaTitle)),(0,i.isUndefined)(a.i18n)||(this.i18n=a.i18n),!(0,i.isElement)(a.targetElement))throw new Error("The snippet preview requires a valid target element");this.opts=a,this._currentFocus=null,this._currentHover=null,this.unformattedText={},Object.defineProperty(this.unformattedText,"snippet_cite",{get:b.bind(this,"urlPath"),set:h.bind(this,"urlPath")}),Object.defineProperty(this.unformattedText,"snippet_meta",{get:b.bind(this,"metaDesc"),set:h.bind(this,"metaDesc")}),Object.defineProperty(this.unformattedText,"snippet_title",{get:b.bind(this,"title"),set:h.bind(this,"title")})};function j(){var a=this.data.title;return(0,i.isEmpty)(a)&&(a=this.opts.defaultValue.title),this.hasPluggable()&&(a=this.refObj.pluggable._applyModifications("data_page_title",a)),(0,r.default)(a)}k.prototype.renderTemplate=function(){var a=this.opts.targetElement;a.innerHTML=g({raw:{title:this.data.title,snippetCite:this.data.urlPath,meta:this.data.metaDesc},rendered:{title:this.formatTitle(),baseUrl:this.formatUrl(),snippetCite:this.formatCite(),meta:this.formatMeta()},metaDescriptionDate:this.opts.metaDescriptionDate,placeholder:this.opts.placeholder,i18n:{edit:this.i18n.dgettext("js-text-analysis","Edit snippet"),title:this.i18n.dgettext("js-text-analysis","SEO title"),slug:this.i18n.dgettext("js-text-analysis","Slug"),metaDescription:this.i18n.dgettext("js-text-analysis","Meta description"),save:this.i18n.dgettext("js-text-analysis","Close snippet editor"),snippetPreview:this.i18n.dgettext("js-text-analysis","Snippet preview"),titleLabel:this.i18n.dgettext("js-text-analysis","SEO title preview:"),slugLabel:this.i18n.dgettext("js-text-analysis","Slug preview:"),metaDescriptionLabel:this.i18n.dgettext("js-text-analysis","Meta description preview:"),snippetPreviewDescription:this.i18n.dgettext("js-text-analysis","You can click on each element in the preview to jump to the Snippet Editor."),desktopPreviewMode:this.i18n.dgettext("js-text-analysis","Desktop preview"),mobilePreviewMode:this.i18n.dgettext("js-text-analysis","Mobile preview"),isScrollableHint:this.i18n.dgettext("js-text-analysis","Scroll to see the preview content.")}}),this.element={measurers:{metaHeight:null},rendered:{title:document.getElementById("snippet_title"),urlBase:document.getElementById("snippet_citeBase"),urlPath:document.getElementById("snippet_cite"),metaDesc:document.getElementById("snippet_meta")},input:{title:a.getElementsByClassName("js-snippet-editor-title")[0],urlPath:a.getElementsByClassName("js-snippet-editor-slug")[0],metaDesc:a.getElementsByClassName("js-snippet-editor-meta-description")[0]},progress:{title:a.getElementsByClassName("snippet-editor__progress-title")[0],metaDesc:a.getElementsByClassName("snippet-editor__progress-meta-description")[0]},container:document.getElementById("snippet_preview"),formContainer:a.getElementsByClassName("snippet-editor__form")[0],editToggle:a.getElementsByClassName("snippet-editor__edit-button")[0],closeEditor:a.getElementsByClassName("snippet-editor__submit")[0],formFields:a.getElementsByClassName("snippet-editor__form-field")},this.element.label={title:this.element.input.title.parentNode,urlPath:this.element.input.urlPath.parentNode,metaDesc:this.element.input.metaDesc.parentNode},this.element.preview={title:this.element.rendered.title.parentNode,urlPath:this.element.rendered.urlPath.parentNode,metaDesc:this.element.rendered.metaDesc.parentNode},this.hasProgressSupport=function(){var a=document.createElement("progress");return!(0,i.isUndefined)(a.max)}(),this.hasProgressSupport?(this.element.progress.title.max=600,this.element.progress.metaDesc.max=y):(0,i.forEach)(this.element.progress,function(a){u.default.addClass(a,"snippet-editor__progress--fallback")}),this.initPreviewToggler(),this.setInitialView(),this.opened=!1,this.createMeasurementElements(),this.updateProgressBars()},k.prototype.initPreviewToggler=function(){this.snippetPreviewToggle=new c.default(this.opts.previewMode,this.opts.targetElement.getElementsByClassName("snippet-editor__view-icon")),this.snippetPreviewToggle.initialize(),this.snippetPreviewToggle.bindEvents()},k.prototype.refresh=function(){this.output=this.htmlOutput(),this.renderOutput(),this.renderSnippetStyle(),this.measureTitle(),this.measureMetaDescription(),this.updateProgressBars()};var _=function(){var a=this.data.metaDesc;return(0,i.isEmpty)(a)&&(a=this.opts.defaultValue.metaDesc),this.hasPluggable()&&(a=this.refObj.pluggable._applyModifications("data_meta_desc",a)),(0,i.isEmpty)(this.opts.metaDescriptionDate)||(0,i.isEmpty)(a)||(a=this.opts.metaDescriptionDate+" - "+this.data.metaDesc),(0,r.default)(a)};k.prototype.getAnalyzerData=function(){return{title:j.call(this),url:this.data.urlPath,metaDesc:_.call(this)}},k.prototype.callRegisteredEventBinder=function(){this.hasApp()&&this.refObj.callbacks.bindElementEvents(this.refObj)},k.prototype.init=function(){this.hasApp()&&null!==this.refObj.rawData.metaTitle&&null!==this.refObj.rawData.cite&&this.refresh()},k.prototype.htmlOutput=function(){var a={};return a.title=this.formatTitle(),a.cite=this.formatCite(),a.meta=this.formatMeta(),a.url=this.formatUrl(),a},k.prototype.formatTitle=function(){var a=this.data.title;return(0,i.isEmpty)(a)&&(a=this.opts.defaultValue.title),(0,i.isEmpty)(a)&&(a=this.opts.placeholder.title),this.hasPluggable()&&this.refObj.pluggable.loaded&&(a=this.refObj.pluggable._applyModifications("data_page_title",a)),a=(0,o.stripFullTags)(a),(0,i.isEmpty)(a)&&(a=this.i18n.dgettext("js-text-analysis","Please provide an SEO title by editing the snippet below.")),a},k.prototype.formatUrl=function(){return function(){var a=this.opts.baseURL;return this.hasApp()&&!(0,i.isEmpty)(this.refObj.rawData.baseUrl)&&this.opts.baseURL===f.baseURL&&(a=this.refObj.rawData.baseUrl),a}.call(this).replace(/http:\/\//gi,"")},k.prototype.formatCite=function(){var a=this.data.urlPath;return a=(0,s.default)((0,o.stripFullTags)(a)),(0,i.isEmpty)(a)&&(a=this.opts.placeholder.urlPath),this.hasApp()&&!(0,i.isEmpty)(this.refObj.rawData.keyword)&&(a=this.formatKeywordUrl(a)),this.opts.addTrailingSlash&&!function(a){return a.indexOf("/")===a.length-1}(a)&&(a+="/"),a=(a=a.replace(/\s/g,"-")).replace(/\?|#/g,"")},k.prototype.formatMeta=function(){var a=this.data.metaDesc;return(0,i.isEmpty)(a)&&(a=this.getMetaText()),this.hasPluggable()&&this.refObj.pluggable.loaded&&(a=this.refObj.pluggable._applyModifications("data_meta_desc",a)),a=(a=(0,o.stripFullTags)(a)).substring(0,y),this.hasApp()&&!(0,i.isEmpty)(this.refObj.rawData.keyword)&&(a=this.formatKeyword(a)),(0,i.isEmpty)(a)&&(a=this.i18n.dgettext("js-text-analysis","Please provide a meta description by editing the snippet below.")),a},k.prototype.getMetaText=function(){var a=this.opts.defaultValue.metaDesc;return this.hasApp()&&!(0,i.isUndefined)(this.refObj.rawData.excerpt)&&(0,i.isEmpty)(a)&&(a=this.refObj.rawData.excerpt),this.hasApp()&&!(0,i.isUndefined)(this.refObj.rawData.text)&&(0,i.isEmpty)(a)&&(a=this.refObj.rawData.text,this.hasPluggable()&&this.refObj.pluggable.loaded&&(a=this.refObj.pluggable._applyModifications("content",a))),(a=(0,o.stripFullTags)(a)).substring(0,y)},k.prototype.getIndexMatches=function(){for(var a=[],e=0,t=this.refObj.rawData.text.indexOf(this.refObj.rawData.keyword,e);t>-1;)a.push(t),e=t+this.refObj.rawData.keyword.length,t=this.refObj.rawData.text.indexOf(this.refObj.rawData.keyword,e);return a},k.prototype.getPeriodMatches=function(){for(var a,e=[0],t=0;(a=this.refObj.rawData.text.indexOf(".",t))>-1;)e.push(a),t=a+1;return e},k.prototype.formatKeyword=function(a){var e=this.refObj.rawData.keyword,t=(0,n.default)(e,"",!1);a=a.replace(t,function(a){return"<strong>"+a+"</strong>"});var i=(0,d.default)(e,this.refObj.rawData.locale);return i!==e&&(t=(0,n.default)(i,"",!1),a=a.replace(t,function(a){return"<strong>"+a+"</strong>"})),a},k.prototype.formatKeywordUrl=function(a){var e=this.refObj.rawData.keyword,t=(e=(e=(0,d.default)(e,this.refObj.rawData.locale)).replace(/'/,"")).replace(/\s/g,"-"),i=(0,n.default)(t,"\\-");return a.replace(i,function(a){return"<strong>"+a+"</strong>"})},k.prototype.renderOutput=function(){this.element.rendered.title.innerHTML=this.output.title,this.element.rendered.urlPath.innerHTML=this.output.cite,this.element.rendered.urlBase.innerHTML=this.output.url,this.element.rendered.metaDesc.innerHTML=this.output.meta},k.prototype.renderSnippetStyle=function(){var a=this.element.rendered.metaDesc,e=_.call(this);(0,i.isEmpty)(e)?(u.default.addClass(a,"desc-render"),u.default.removeClass(a,"desc-default")):(u.default.addClass(a,"desc-default"),u.default.removeClass(a,"desc-render"))},k.prototype.reRender=function(){this.init()},k.prototype.checkTextLength=function(a){var e=a.currentTarget.textContent;switch(a.currentTarget.id){case"snippet_meta":a.currentTarget.className="desc",e.length>y&&(YoastSEO.app.snippetPreview.unformattedText.snippet_meta=a.currentTarget.textContent,a.currentTarget.textContent=e.substring(0,y));break;case"snippet_title":a.currentTarget.className="title",e.length>600&&(YoastSEO.app.snippetPreview.unformattedText.snippet_title=a.currentTarget.textContent,a.currentTarget.textContent=e.substring(0,600))}},k.prototype.getUnformattedText=function(a){var e=a.currentTarget.id;void 0!==this.unformattedText[e]&&(a.currentTarget.textContent=this.unformattedText[e])},k.prototype.setUnformattedText=function(a){var e=a.currentTarget.id;this.unformattedText[e]=document.getElementById(e).textContent},k.prototype.validateFields=function(){var a=_.call(this),e=j.call(this);a.length>y?u.default.addClass(this.element.input.metaDesc,"snippet-editor__field--invalid"):u.default.removeClass(this.element.input.metaDesc,"snippet-editor__field--invalid"),e.length>600?u.default.addClass(this.element.input.title,"snippet-editor__field--invalid"):u.default.removeClass(this.element.input.title,"snippet-editor__field--invalid")},k.prototype.updateProgressBars=function(){var a,e,t;t=_.call(this),e=function(a){var e;switch(!0){case a>0&&a<=399:case a>600:e="ok";break;case a>=400&&a<=600:e="good";break;default:e="bad"}return e}(this.data.titleWidth),a=function(a){var e;switch(!0){case a>0&&a<120:case a>y:e="ok";break;case a>=120&&a<=y:e="good";break;default:e="bad"}return e}(t.length),v.call(this,this.element.progress.title,this.data.titleWidth,600,e),v.call(this,this.element.progress.metaDesc,t.length,y,a)},k.prototype.setInitialView=function(){var a=document.getElementById("snippet_preview").getBoundingClientRect().width;this.snippetPreviewToggle.setVisibility(a)},k.prototype.handleWindowResizing=(0,i.debounce)(function(){var a=document.getElementById("snippet_preview").getBoundingClientRect().width;this.snippetPreviewToggle.setScrollHintVisibility(a)},25),k.prototype.bindEvents=function(){var a;(0,i.forEach)(["title","slug","meta-description"],function(e){(a=document.getElementsByClassName("js-snippet-editor-"+e)[0]).addEventListener("keydown",this.changedInput.bind(this)),a.addEventListener("keyup",this.changedInput.bind(this)),a.addEventListener("input",this.changedInput.bind(this)),a.addEventListener("focus",this.changedInput.bind(this)),a.addEventListener("blur",this.changedInput.bind(this))}.bind(this)),this.element.editToggle.addEventListener("click",this.toggleEditor.bind(this)),this.element.closeEditor.addEventListener("click",this.closeEditor.bind(this)),window.addEventListener("resize",this.handleWindowResizing.bind(this)),(0,i.forEach)(w,function(a){var e=document.getElementById(a.preview),t=this.element.input[a.inputField];e.addEventListener("click",function(){this.openEditor(),t.focus()}.bind(this)),t.addEventListener("focus",function(){this._currentFocus=a.inputField,this._updateFocusCarets()}.bind(this)),t.addEventListener("blur",function(){this._currentFocus=null,this._updateFocusCarets()}.bind(this)),e.addEventListener("mouseover",function(){this._currentHover=a.inputField,this._updateHoverCarets()}.bind(this)),e.addEventListener("mouseout",function(){this._currentHover=null,this._updateHoverCarets()}.bind(this))}.bind(this))},k.prototype.changedInput=(0,i.debounce)(function(){this.updateDataFromDOM(),this.validateFields(),this.updateProgressBars(),this.refresh(),this.hasApp()&&this.refObj.refresh()},25),k.prototype.updateDataFromDOM=function(){this.data.title=this.element.input.title.value,this.data.urlPath=this.element.input.urlPath.value,this.data.metaDesc=this.element.input.metaDesc.value,this.opts.callbacks.saveSnippetData((0,i.clone)(this.data))},k.prototype.openEditor=function(){this.element.editToggle.setAttribute("aria-expanded","true"),u.default.removeClass(this.element.formContainer,"snippet-editor--hidden"),this.opened=!0},k.prototype.closeEditor=function(){u.default.addClass(this.element.formContainer,"snippet-editor--hidden"),this.element.editToggle.setAttribute("aria-expanded","false"),this.element.editToggle.focus(),this.opened=!1},k.prototype.toggleEditor=function(){this.opened?this.closeEditor():this.openEditor()},k.prototype._updateFocusCarets=function(){var a,e;(0,i.forEach)(this.element.label,function(a){u.default.removeClass(a,"snippet-editor__label--focus")}),(0,i.forEach)(this.element.preview,function(a){u.default.removeClass(a,"snippet-editor__container--focus")}),null!==this._currentFocus&&(a=this.element.label[this._currentFocus],e=this.element.preview[this._currentFocus],u.default.addClass(a,"snippet-editor__label--focus"),u.default.addClass(e,"snippet-editor__container--focus"))},k.prototype._updateHoverCarets=function(){var a;(0,i.forEach)(this.element.label,function(a){u.default.removeClass(a,"snippet-editor__label--hover")}),null!==this._currentHover&&(a=this.element.label[this._currentHover],u.default.addClass(a,"snippet-editor__label--hover"))},k.prototype.setTitle=function(a){this.element.input.title.value=a,this.changedInput()},k.prototype.setUrlPath=function(a){this.element.input.urlPath.value=a,this.changedInput()},k.prototype.setMetaDescription=function(a){this.element.input.metaDesc.value=a,this.changedInput()},k.prototype.createMeasurementElements=function(){var a,e;a=m({width:document.getElementById("meta_container").offsetWidth+"px",whiteSpace:""}),(e=document.createElement("div")).className="yoast-measurement-elements-holder",e.innerHTML=a,document.body.appendChild(e),this.element.measurers.metaHeight=e.childNodes[0]},k.prototype.measureTitle=function(){0===this.element.rendered.title.offsetWidth&&""!==this.element.rendered.title.textContent||(this.data.titleWidth=this.element.rendered.title.offsetWidth)},k.prototype.measureMetaDescription=function(){var a=this.element.measurers.metaHeight;a.innerHTML=this.element.rendered.metaDesc.innerHTML,this.data.metaHeight=a.offsetHeight},k.prototype.getTitleWidth=function(){return this.data.titleWidth},k.prototype.setTitleWidth=function(a){this.data.titleWidth=a},k.prototype.hasApp=function(){return!(0,i.isUndefined)(this.refObj)},k.prototype.hasPluggable=function(){return!(0,i.isUndefined)(this.refObj)&&!(0,i.isUndefined)(this.refObj.pluggable)},k.prototype.disableEnter=function(a){},k.prototype.textFeedback=function(a){},k.prototype.showEditIcon=function(a){},k.prototype.hideEditIcon=function(){},k.prototype.setFocus=function(a){},e.default=k},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.seo=e.readability=void 0;var i=C(t(729)),n=C(t(730)),o=C(t(732)),r=C(t(733)),s=C(t(1033)),d=C(t(734)),l=C(t(735)),c=C(t(738)),u=C(t(739)),p=C(t(1034)),z=C(t(360)),g=C(t(740)),m=C(t(361)),f=C(t(800)),y=C(t(363)),w=C(t(364)),b=C(t(1066)),h=C(t(367)),v=C(t(511)),k=C(t(750)),j=C(t(512)),_=C(t(513)),x=C(t(751)),q=C(t(1067)),E=C(t(481)),A=C(t(482)),T=C(t(514)),O=C(t(515)),S=C(t(516)),P=C(t(1068)),M=C(t(1069));function C(a){return a&&a.__esModule?a:{default:a}}var R={FleschReadingEaseAssessment:i.default,ParagraphTooLongAssessment:n.default,PassiveVoiceAssessment:o.default,SentenceBeginningsAssessment:r.default,SentenceLengthInDescriptionAssessment:s.default,SentenceLengthInTextAssessment:d.default,SubheadingDistributionTooLongAssessment:l.default,TextPresenceAssessment:c.default,TransitionWordsAssessment:u.default,WordComplexityAssessment:p.default},D={FunctionWordsInKeyphraseAssessment:z.default,InternalLinksAssessment:g.default,IntroductionKeywordAssessment:m.default,KeyphraseLengthAssessment:y.default,KeywordDensityAssessment:w.default,KeywordStopWordsAssessment:b.default,KeyphraseDistributionAssessment:f.default,MetaDescriptionKeywordAssessment:h.default,MetaDescriptionLengthAssessment:v.default,OutboundLinksAssessment:k.default,PageTitleWidthAssessment:j.default,SingleH1Assessment:_.default,SubheadingsKeywordAssessment:x.default,TaxonomyTextLengthAssessment:q.default,TextCompetingLinksAssessment:E.default,TextImagesAssessment:A.default,TextLengthAssessment:T.default,TitleKeywordAssessment:O.default,UrlKeywordAssessment:S.default,UrlLengthAssessment:P.default,UrlStopWordsAssessment:M.default};e.readability=R,e.seo=D},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(a,e){return(0,i.filter)(a,function(a){return(0,n.default)(e,a.sentenceLength)})};var i=t(2),n=function(a){return a&&a.__esModule?a:{default:a}}(t(731))},function(a,e,t){"use strict";var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a};Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function a(a,e){for(var t=0;t<e.length;t++){var i=e[t];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(a,i.key,i)}}return function(e,t,i){return t&&a(e.prototype,t),i&&a(e,i),e}}(),o=t(2),r=c(t(83)),s=t(38),d=c(t(165)),l=c(t(34));function c(a){return a&&a.__esModule?a:{default:a}}var u=function(a){function e(){var a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};!function(a,e){if(!(a instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var t=function(a,e){if(!a)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!==(void 0===e?"undefined":i(e))&&"function"!=typeof e?a:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this)),n={parameters:{goodDistributionScore:30,acceptableDistributionScore:50},scores:{good:9,okay:6,bad:1,consideration:0},urlTitle:(0,s.createAnchorOpeningTag)("https://yoa.st/33q"),urlCallToAction:(0,s.createAnchorOpeningTag)("https://yoa.st/33u")};return t.identifier="keyphraseDistribution",t._config=(0,o.merge)(n,a),t}return function(a,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+(void 0===e?"undefined":i(e)));a.prototype=Object.create(e&&e.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(a,e):a.__proto__=e)}(e,r.default),n(e,[{key:"getResult",value:function(a,e,t){this._keyphraseDistribution=e.getResearch("keyphraseDistribution");var i=new l.default,n=this.calculateResult(t);return i.setScore(n.score),i.setText(n.resultText),i.setHasMarks(this._keyphraseDistribution.sentencesToHighlight.length>0),i}},{key:"calculateResult",value:function(a){var e=this._keyphraseDistribution.keyphraseDistributionScore;return 100===e?{score:this._config.scores.consideration,resultText:a.sprintf(a.dgettext("js-text-analysis","%1$sKeyphrase distribution%3$s: %2$sInclude your keyphrase or its synonyms in the text so that we can check keyphrase distribution%3$s."),this._config.urlTitle,this._config.urlCallToAction,"</a>")}:e>this._config.parameters.acceptableDistributionScore?{score:this._config.scores.bad,resultText:a.sprintf(a.dgettext("js-text-analysis","%1$sKeyphrase distribution%3$s: Very uneven. Large parts of your text do not contain the keyphrase or its synonyms. %2$sDistribute them more evenly%3$s."),this._config.urlTitle,this._config.urlCallToAction,"</a>")}:e>this._config.parameters.goodDistributionScore&&e<=this._config.parameters.acceptableDistributionScore?{score:this._config.scores.okay,resultText:a.sprintf(a.dgettext("js-text-analysis","%1$sKeyphrase distribution%3$s: Uneven. Some parts of your text do not contain the keyphrase or its synonyms. %2$sDistribute them more evenly%3$s."),this._config.urlTitle,this._config.urlCallToAction,"</a>")}:{score:this._config.scores.good,resultText:a.sprintf(a.dgettext("js-text-analysis","%1$sKeyphrase distribution%2$s: Good job!"),this._config.urlTitle,"</a>")}}},{key:"getMarks",value:function(){return this._keyphraseDistribution.sentencesToHighlight}},{key:"isApplicable",value:function(a){return a.hasText()&&a.hasKeyword()&&(0,d.default)(a.getText()).length>=15}}]),e}();e.default=u},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=function(a){return a.replace(/&nbsp;/g," ")},n=function(a){return a.replace(/\s/g," ")},o=function(a){return a=i(a),n(a)};e.unifyNonBreakingSpace=i,e.unifyWhiteSpace=n,e.unifyAllSpaces=o,e.default={unifyNonBreakingSpace:i,unifyWhiteSpace:n,unifyAllSpaces:o}},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(){var a=(0,i.default)();return Object.keys(a)};var i=function(a){return a&&a.__esModule?a:{default:a}}(t(480))},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(){return{singleWords:i,multipleWords:n,allWords:i.concat(n)}};var i=["aber","abschließend","abschliessend","alldieweil","allerdings","also","anderenteils","andererseits","andernteils","anfaenglich","anfänglich","anfangs","angenommen","anschliessend","anschließend","aufgrund","ausgenommen","ausserdem","außerdem","beispielsweise","bevor","beziehungsweise","bspw","bzw","d.h","da","dabei","dadurch","dafuer","dafür","dagegen","daher","dahingegen","danach","dann","darauf","darum","dass","davor","dazu","dementgegen","dementsprechend","demgegenüber","demgegenueber","demgemaess","demgemäß","demzufolge","denn","dennoch","dergestalt","desto","deshalb","desungeachtet","deswegen","doch","dort","drittens","ebenfalls","ebenso","endlich","ehe","einerseits","einesteils","entsprechend","entweder","erst","erstens","falls","ferner","folgerichtig","folglich","fürderhin","fuerderhin","genauso","hierdurch","hierzu","hingegen","immerhin","indem","indes","indessen","infolge","infolgedessen","insofern","insoweit","inzwischen","jedenfalls","jedoch","kurzum","m.a.w","mitnichten","mitunter","möglicherweise","moeglicherweise","nachdem","nebenher","nichtsdestotrotz","nichtsdestoweniger","ob","obenrein","obgleich","obschon","obwohl","obzwar","ohnehin","richtigerweise","schliesslich","schließlich","seit","seitdem","sobald","sodass","so dass","sofern","sogar","solang","solange","somit","sondern","sooft","soviel","soweit","sowie","sowohl","statt","stattdessen","trotz","trotzdem","überdies","übrigens","ueberdies","uebrigens","ungeachtet","vielmehr","vorausgesetzt","vorher","waehrend","während","währenddessen","waehrenddessen","weder","wegen","weil","weiter","weiterhin","wenn","wenngleich","wennschon","wennzwar","weshalb","widrigenfalls","wiewohl","wobei","wohingegen","z.b","zudem","zuerst","zufolge","zuletzt","zumal","zuvor","zwar","zweitens"],n=["abgesehen von","abgesehen davon","als dass","als wenn","anders ausgedrückt","anders ausgedrueckt","anders formuliert","anders gefasst","anders gefragt","anders gesagt","anders gesprochen","anstatt dass","auch wenn","auf grund","auf jeden fall","aus diesem grund","ausser dass","außer dass","ausser wenn","außer wenn","besser ausgedrückt","besser ausgedrueckt","besser formuliert","besser gesagt","besser gesprochen","bloss dass","bloß dass","darüber hinaus","das heisst","das heißt","des weiteren","dessen ungeachtet","ebenso wie","genauso wie","geschweige denn","im fall","im falle","im folgenden","im gegensatz dazu","im grunde genommen","in diesem sinne","je nachdem","kurz gesagt","mit anderen worten","ohne dass","so dass","umso mehr als","umso weniger als","umso mehr, als","umso weniger, als","unbeschadet dessen","und zwar","ungeachtet dessen","unter dem strich","zum beispiel"]},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(){return{filteredAuxiliaries:i,notFilteredAuxiliaries:n,all:i.concat(n)}};var i=["am","is","are","was","were","been","get","gets","got","gotten","be","she's","he's","it's","i'm","we're","they're","you're","isn't","weren't","wasn't","that's","aren't"],n=["being","getting","having","what's"]},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(){return{singleWords:i,multipleWords:n,allWords:i.concat(n)}};var i=["accordingly","additionally","afterward","afterwards","albeit","also","although","altogether","another","basically","because","before","besides","but","certainly","chiefly","comparatively","concurrently","consequently","contrarily","conversely","correspondingly","despite","doubtedly","during","e.g.","earlier","emphatically","equally","especially","eventually","evidently","explicitly","finally","firstly","following","formerly","forthwith","fourthly","further","furthermore","generally","hence","henceforth","however","i.e.","identically","indeed","instead","last","lastly","later","lest","likewise","markedly","meanwhile","moreover","nevertheless","nonetheless","nor","notwithstanding","obviously","occasionally","otherwise","overall","particularly","presently","previously","rather","regardless","secondly","shortly","significantly","similarly","simultaneously","since","so","soon","specifically","still","straightaway","subsequently","surely","surprisingly","than","then","thereafter","therefore","thereupon","thirdly","though","thus","till","undeniably","undoubtedly","unless","unlike","unquestionably","until","when","whenever","whereas","while"],n=["above all","after all","after that","all in all","all of a sudden","all things considered","analogous to","although this may be true","analogous to","another key point","as a matter of fact","as a result","as an illustration","as can be seen","as has been noted","as I have noted","as I have said","as I have shown","as long as","as much as","as shown above","as soon as","as well as","at any rate","at first","at last","at least","at length","at the present time","at the same time","at this instant","at this point","at this time","balanced against","being that","by all means","by and large","by comparison","by the same token","by the time","compared to","be that as it may","coupled with","different from","due to","equally important","even if","even more","even so","even though","first thing to remember","for example","for fear that","for instance","for one thing","for that reason","for the most part","for the purpose of","for the same reason","for this purpose","for this reason","from time to time","given that","given these points","important to realize","in a word","in addition","in another case","in any case","in any event","in brief","in case","in conclusion","in contrast","in detail","in due time","in effect","in either case","in essence","in fact","in general","in light of","in like fashion","in like manner","in order that","in order to","in other words","in particular","in reality","in short","in similar fashion","in spite of","in sum","in summary","in that case","in the event that","in the final analysis","in the first place","in the fourth place","in the hope that","in the light of","in the long run","in the meantime","in the same fashion","in the same way","in the second place","in the third place","in this case","in this situation","in time","in truth","in view of","inasmuch as","most compelling evidence","most important","must be remembered","not to mention","now that","of course","on account of","on balance","on condition that","on one hand","on the condition that","on the contrary","on the negative side","on the other hand","on the positive side","on the whole","on this occasion","once","once in a while","only if","owing to","point often overlooked","prior to","provided that","seeing that","so as to","so far","so long as","so that","sooner or later","such as","summing up","take the case of","that is","that is to say","then again","this time","to be sure","to begin with","to clarify","to conclude","to demonstrate","to emphasize","to enumerate","to explain","to illustrate","to list","to point out","to put it another way","to put it differently","to repeat","to rephrase it","to say nothing of","to sum up","to summarize","to that end","to the end that","to this end","together with","under those circumstances","until now","up against","up to the present time","vis a vis","what's more","while it may be true","while this may be true","with attention to","with the result that","with this in mind","with this intention","with this purpose in mind","without a doubt","without delay","without doubt","without reservation"]},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(){return{filteredAtBeginning:[].concat(v,j,x,R),filteredAtEnding:[].concat(r,D),filteredAtBeginningAndEnding:[].concat(n,q,A,l,M,u),filteredAnywhere:[].concat(i,s,d,p,F,o,h,k,_,S,C,g,T,O,y,f,b,I,E,w,B,$,L,z,c),cannotDirectlyPrecedePassiveParticiple:[].concat(n,y,o,c,p,m,_,x,q),all:[].concat(n,o,r,l,c,p,z,s,d,u,g,m,f,y,w,b,E,h,v,k,j,_,x,q,A,T,O,S,i,P,M,C,R,F,D,B,L,I,W,U)}};var i=(0,function(a){return a&&a.__esModule?a:{default:a}}(t(807)).default)().singleWords,n=["de","het","een","der","des","den"],o=["eén","één","twee","drie","vier","vijf","zes","zeven","acht","negen","tien","elf","twaalf","dertien","veertien","vijftien","zestien","zeventien","achttien","negentien","twintig","honderd","honderden","duizend","duizenden","miljoen","miljoenen","biljoen","biljoenen"],r=["eerste","tweede","derde","vierde","vijfde","zesde","zevende","achtste","negende","tiende","elfde","twaalfde","dertiende","veertiende","vijftiende","zestiende","zeventiende","achttiende","negentiende","twinstigste"],s=["ik","je","jij","hij","ze","we","wij","jullie","zij","u","ge","gij","men"],d=["mij","jou","hem","haar","hen","hun","uw"],l=["dit","dat","deze","die","zelf"],c=["mijn","mijne","jouw","jouwe","zijne","hare","ons","onze","hunne","uwe","elkaars","elkanders"],u=["alle","sommige","sommigen","weinig","weinige","weinigen","veel","vele","velen","geen","beetje","elke","elk","genoeg","meer","meest","meeste","meesten","paar","zoveel","enkele","enkelen","zoveelste","hoeveelste","laatste","laatsten","iedere","allemaal","zekere","ander","andere","gene","enig","enige","verscheidene","verschillende","voldoende","allerlei","allerhande","enerlei","enerhande","beiderlei","beiderhande","tweeërlei","tweeërhande","drieërlei","drieërhande","velerlei","velerhande","menigerlei","menigerhande","enigerlei","enigerhande","generlei","generhande"],p=["mezelf","mijzelf","jezelf","jouzelf","zichzelf","haarzelf","hemzelf","onszelf","julliezelf","henzelf","hunzelf","uzelf","zich"],z=["mekaar","elkaar","elkander","mekander"],g=["iedereen","ieder","eenieder","alleman","allen","alles","iemand","niemand","iets","niets","menigeen"],m=["ieders","aller","iedereens","eenieders"],f=["welke","welk","wat","wie","wiens","wier"],y=["hoe","waarom","waar","hoezo","hoeveel"],w=["daaraan","daarachter","daaraf","daarbij","daarbinnen","daarboven","daarbuiten","daardoorheen","daarheen","daarin","daarjegens","daarmede","daarnaar","daarnaartoe","daaromtrent","daaronder","daarop","daarover","daaroverheen","daarrond","daartegen","daartussen","daartussenuit","daaruit","daarvan","daarvandaan","eraan","erachter","erachteraan","eraf","erbij","erbinnen","erboven","erbuiten","erdoor","erdoorheen","erheen","erin","erjegens","ermede","ermee","erna","ernaar","ernaartoe","ernaast","erom","eromtrent","eronder","eronderdoor","erop","eropaf","eropuit","erover","eroverheen","errond","ertegen","ertegenaan","ertoe","ertussen","ertussenuit","eruit","ervan","ervandaan","ervandoor","ervoor","hieraan","hierachter","hieraf","hierbij","hierbinnen","hierboven","hierbuiten","hierdoor","hierdoorheen","hierheen","hierin","hierjegens","hierlangs","hiermede","hiermee","hierna","hiernaar","hiernaartoe","hiernaast","hieromheen","hieromtrent","hieronder","hierop","hierover","hieroverheen","hierrond","hiertegen","hiertoe","hiertussen","hiertussenuit","hieruit","hiervan","hiervandaan","hiervoor","vandaan","waaraan","waarachter","waaraf","waarbij","waarboven","waarbuiten","waardoorheen","waarheen","waarin","waarjegens","waarmede","waarna","waarnaar","waarnaartoe","waarnaast","waarop","waarover","waaroverheen","waarrond","waartegen","waartegenin","waartoe","waartussen","waartussenuit","waaruit","waarvan","waarvandaan","waarvoor"],b=["daar","hier","ginder","daarginds","ginds","ver","veraf","ergens","nergens","overal","dichtbij","kortbij"],h=["word","wordt","werd","werden","ben","bent","is","was","waren"],v=["worden","zijn"],k=["heb","hebt","heeft","hadden","had","kun","kan","kunt","kon","konden","mag","mocht","mochten","dien","dient","diende","dienden","moet","moest","moesten","ga","gaat","ging","gingen"],j=["hebben","kunnen","mogen","dienen","moeten","gaan"],_=["blijkt","blijk","bleek","bleken","gebleken","dunkt","dunk","dunkte","dunkten","gedunkt","heet","heette","heetten","geheten","lijkt","lijk","geleken","leek","leken","schijn","schijnt","scheen","schenen","toescheen","toeschijnt","toeschijn","toeschenen"],x=["blijken","dunken","heten","lijken","schijnen","toeschijnen"],q=["à","aan","aangaande","achter","behalve","behoudens","beneden","benevens","benoorden","benoordoosten","benoordwesten","beoosten","betreffende","bewesten","bezijden","bezuiden","bezuidoosten","bezuidwesten","bij","binnen","blijkens","boven","bovenaan","buiten","circa","conform","contra","cum","dankzij","door","gedurende","gezien","in","ingevolge","inzake","jegens","krachtens","langs","luidens","met","middels","na","naar","naast","nabij","namens","nevens","niettegenstaande","nopens","om","omstreeks","omtrent","onder","onderaan","ongeacht","onverminderd","op","over","overeenkomstig","per","plus","post","richting","rond","rondom","spijts","staande","te","tegen","tegenover","ten","ter","tijdens","tot","tussen","uit","van","vanaf","vanuit","versus","via","vis-à-vis","volgens","voor","voorbij","wegens","zijdens","zonder"],E=["af","heen","mee","toe","achterop","onderin","voorin","bovenop","buitenop","achteraan","onderop","binnenin","tevoren"],A=["en","alsmede","of","ofwel","en/of"],T=["zowel","evenmin","zomin","hetzij"],O=["vermits","dewijl","dorodien","naardien","nademaal","overmits","wijl","eer","eerdat","aleer","vooraleer","alvorens","totdat","zolang","sinds","sedert","ingeval","tenware","alhoewel","hoezeer","uitgezonderd","zoverre","zover","naargelang","naarmate","alsof"],S=["zegt","zei","vraagt","vroeg","denkt","dacht","stelt","pleit","pleitte"],P=["absoluut","zeker","ongetwijfeld","sowieso","onmiddelijk","meteen","inclusief","direct","ogenblikkelijk","terstond","natuurlijk","vanzelfsprekend","gewoonlijk","normaliter","doorgaans","werkelijk","daadwerkelijk","inderdaad","waarachtig","oprecht","bijna","meestal","misschien","waarschijnlijk","wellicht","mogelijk","vermoedelijk","allicht","aannemelijk","oorspronkelijk","aanvankelijk","initieel","eigenlijk","feitelijk","wezenlijk","juist","reeds","alvast","bijv.","vaak","dikwijls","veelal","geregeld","menigmaal","regelmatig","veelvuldig","eenvoudigweg","simpelweg","louter","kortweg","stomweg","domweg","zomaar","eventueel","mogelijkerwijs","eens","weleens","nooit","ooit","anders","momenteel","thans","incidenteel","trouwens","elders","volgend","recent","onlangs","recentelijk","laatst","zojuist","relatief","duidelijk","overduidelijk","klaarblijkelijk","nadrukkelijk","ogenschijnlijk","kennelijk","schijnbaar","alweer","continu","herhaaldelijk","nog","steeds","nu"],M=["zeer","erg","redelijk","flink","tikkeltje","bijzonder","ernstig","enigszins","zo","tamelijk","nogal","behoorlijk","zwaar","heel","hele","reuze","buitengewoon","ontzettend","vreselijk"],C=["laat","liet","lieten","kom","komt","kwam","kwamen","maakt","maak","maakte","maakten","doe","doet","deed","deden","vindt","vind","vond","vonden"],R=["laten","komen","maken","doen","vinden"],D=["nieuw","nieuwe","nieuwer","nieuwere","nieuwst","nieuwste","oud","oude","ouder","oudere","oudst","oudste","vorig","vorige","goed","goede","beter","betere","best","beste","groot","grote","groter","grotere","grootst","grootste","makkelijk","makkelijke","makkelijker","makkelijkere","makkelijkst","makkelijste","gemakkelijk","gemakkelijke","gemakkelijker","gemakkelijkere","gemakkelijkst","gemakkelijste","simpel","simpele","simpeler","simpelere","simpelst","simpelste","snel","snelle","sneller","snellere","snelst","snelste","verre","verder","verdere","verst","verste","lang","lange","langer","langere","langst","langste","hard","harde","harder","hardere","hardst","hardste","minder","mindere","minst","minste","eigen","laag","lage","lager","lagere","laagst","laagste","hoog","hoge","hoger","hogere","hoogst","hoogste","klein","kleine","kleiner","kleinere","kleinst","kleinste","kort","korte","korter","kortere","kortst","kortste","herhaaldelijke","directe","ongeveer","slecht","slechte","slechter","slechtere","slechtst","slechtste","zulke","zulk","zo'n","zulks","er","extreem","extreme","bijbehorende","bijbehorend","niet"],F=["oh","wauw","hèhè","hè","hé","au","ai","jaja","welja","jawel","ssst","heremijntijd","hemeltjelief","aha","foei","hmm","nou","nee","tja","nja","okido","ho","halt","komaan","komop","verrek","nietwaar","brr","oef","ach","och","bah","enfin","afijn","haha","hihi","hatsjie","hatsjoe","hm","tring","vroem","boem","hopla"],B=["ml","cl","dl","l","tl","el","mg","g","gr","kg","ca","theel","min","sec","uur"],$=["seconde","secondes","seconden","minuut","minuten","uur","uren","dag","dagen","week","weken","maand","maanden","jaar","jaren","vandaag","morgen","overmorgen","gisteren","eergisteren","'s","morgens","avonds","middags","nachts"],L=["ding","dingen","manier","manieren","item","items","keer","maal","procent","geval","aspect","persoon","personen","deel"],I=["wel","ja","neen","oké","oke","okee","ok","zoiets","€","euro"],W=["mevr","dhr","mr","dr","prof"],U=["jr","sr"]},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(){return{singleWords:i,multipleWords:n,allWords:i.concat(n)}};var i=["aangezien","al","aldus","allereerst","als","alsook","anderzijds","bijgevolg","bijvoorbeeld","bovendien","concluderend","daardoor","daarentegen","daarmee","daarna","daarnaast","daarom","daartoe","daarvoor","dadelijk","dan","desondanks","dienovereenkomstig","dientegevolge","doch","doordat","dus","echter","eerst","evenals","eveneens","evenzeer","hierom","hoewel","immers","indien","integendeel","intussen","kortom","later","maar","mits","nadat","namelijk","net als","niettemin","noch","ofschoon","omdat","ondanks","ondertussen","ook","opdat","resumerend","samengevat","samenvattend","tegenwoordig","teneinde","tenzij","terwijl","tevens","toch","toen","uiteindelijk","vanwege","vervolgens","voorafgaand","vooralsnog","voordat","voorts","vroeger","waardoor","waarmee","waaronder","wanneer","want","zoals","zodat","zodoende","zodra"],n=["aan de andere kant","aan de ene kant","aangenomen dat","al met al","alles afwegend","alles bij elkaar","alles in aanmerking nemend","als gevolg van","anders gezegd","daar staat tegenover","daarbij komt","daaruit volgt","dat betekent","dat blijkt uit","de oorzaak daarvan is","de oorzaak hiervan is","door middel van","een voorbeeld hiervan","een voorbeeld van","gesteld dat","hetzelfde als","hieruit kunnen we afleiden","hieruit volgt","hoe het ook zij","in de derde plaats","in de eerste plaats","in de tweede plaats","in één woord","in het bijzonder","in het geval dat","in plaats van","in tegenstelling tot","in vergelijking met","maar ook","met als doel","met andere woorden","met behulp van","met de bedoeling","neem nou","net als","om kort te gaan","onder andere","op dezelfde wijze","stel dat","te danken aan","te wijten aan","ten derde","ten eerste","ten gevolge van","ten slotte","ten tweede","ter conclusie","ter illustratie","ter verduidelijking","tot nog toe","tot slot","vandaar dat","vergeleken met","voor het geval dat"]},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(){return{singleWords:i,multipleWords:n,allWords:i.concat(n)}};var i=["además","adicional","así","asimismo","aún","aunque","ciertamente","como","concluyendo","conque","contrariamente","cuando","decididamente","decisivamente","después","diferentemente","efectivamente","entonces","especialmente","específicamente","eventualmente","evidentemente","finalmente","frecuentemente","generalmente","igualmente","lógicamente","luego","mas","mientras","pero","por","porque","posteriormente","primero","principalmente","pronto","próximamente","pues","raramente","realmente","seguidamente","segundo","semejantemente","si","siguiente","sino","súbitamente","supongamos","también","tampoco","tercero","verbigracia","vice-versa","ya"],n=["a causa de","a continuación","a diferencia de","a fin de cuentas","a la inversa","a la misma vez","a más de","a más de esto","a menos que","a no ser que","a pesar de","a pesar de eso","a pesar de todo","a peser de","a propósito","a saber","a todo esto","ahora bien","al contrario","al fin y al cabo","al final","al inicio","al mismo tiempo","al principio","ante todo","antes bien","antes de","antes de nada","antes que nada","aparte de","as así como","así como","así mismo","así pues","así que","así y todo","aún así","claro está que","claro que","claro que sí","como caso típico","como decíamos","como era de esperar","como es de esperar","como muestra","como resultado","como se ha notado","como sigue","comparado con","con el objeto de","con el propósito de","con que","con relación a","con tal de que","con todo","dado que","de ahí","de cierta manera","de cualquier manera","de cualquier modo","de ello resulta que","de este modo","de golpe","de hecho","de igual manera","de igual modo","de igualmanera","de la manera siguiente","de la misma forma","de la misma manera","de manera semejante","del mismo modo","de modo que","de nuevo","de otra manera","de otro modo","de pronto","de qualquier manera","de repente","de suerte que","de tal modo","de todas formas","de todas maneras","de todos modos","de veras","debido a","debido a que","del mismo modo","dentro de poco","desde entonces","después de","después de todo","ejemplo de esto","el caso es que","en aquel tiempo","en cambio","en cierto modo","en comparación con","en conclusión","en concreto","en conformidad con","en consecuencia","en consiguiente","en contraste con","en cualquier caso","en cuanto","en cuanto a","en definitiva","en efecto","en el caso de que","en este sentido","en fin","en fin de cuentas","en general","en lugar de","en otras palabras","en otro orden","en otros términos","en particular","en primer lugar","en primer término","en primera instancia","en realidad","en relación a","en relación con","en representación de","en resumen","en resumidas cuentas","en segundo lugar","en seguida","en síntesis","en suma","en todo caso","en último término","en verdad","en vez de","en virtud de","entre ellas figura","entre ellos figura","es cierto que","es decir","es evidente que","es incuestionable","es indudable","es más","está claro que","esto indica","excepto si","generalmente por ejemplo","gracias a","hasta aquí","hasta cierto punto","hasta el momento","hay que añadir","igual que","la mayor parte del tiempo","la mayoría del tiempo","lo que es peor","más tarde","mejor dicho","mientras tanto","mirándolo todo","nadie puede ignorar","no faltaría más","no obstante","o sea","otra vez","otro aspecto","par ilustrar","para concluir","para conclusión","para continuar","para empezar","para finalizar","para mencionar una cosa","para que","para resumir","para terminar","pongamos por caso","por añadidura","por cierto","por consiguiente","por ejemplo","por el consiguiente","por el contrario","por el hecho que","por eso","por esta razón","por esto","por fin","por la mayor parte","por lo general","por lo que","por lo tanto","por otro lado","por otra parte","por otro lado","por supuesto","por tanto","por último","por un lado","por una parte","primero que nada","primero que todo","pues bien","puesto que","rara vez","resulta que","sea como sea","seguidamente entre tanto","si bien","siempre que","siempre y cuando","sigue que","sin duda","sin embargo","sin ir más lejos","sobre todo","supuesto que","tal como","tales como","tan pronto como","tanto como","una vez","ya que"]},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(){return{singleWords:i,multipleWords:n,allWords:i.concat(n)}};var i=["abbastanza","acciocché","acciocchè","adesso","affinché","affinchè","allora","almeno","alquanto","altrettanto","altrimenti","analogamente","anche","ancora","antecedentemente","anzi","anzitutto","apertamente","appena","assai","attualmente","benché","benchè","beninteso","bensì","brevemente","bruscamente","casomai","celermente","certamente","certo","chiaramente","ciononostante","cioé","cioè","comparabilmente","come","complessivamente","completamente","comunque","concisamente","concludendo","conformemente","congiuntamente","conseguentemente","considerando","considerato","considerevolmente","contemporaneamente","continuamente","contrariamente","controbilanciato","così","cosicché","cosicchè","dapprima","dato","davvero","definitivamente","dettagliatamente","differentemente","diversamente","dopo","dopodiché","dopodichè","durante","dunque","eccetto","eccome","effettivamente","egualmente","elencando","enfaticamente","eppure","esaurientemente","esplicitamente","espressamente","estesamente","evidentemente","finalmente","finché","finchè","fino","finora","fintanto","fintanto che","fintantoché","fintantochè","fondamentalmente","frattanto","frequentemente","generalmente","già","gradualmente","illustrando","immantinente","immediatamente","importantissimo","incontestabilmente","incredibilmente","indipendentemente","indiscutibilmente","indubbiamente","infatti","infine","innanzitutto","innegabilmente","inoltre","insomma","intanto","interamente","istantaneamente","invece","logicamente","lentamente","ma","malgrado","marcatamente","memorabile","mentre","motivatamente","naturalmente","né","nè","neanche","neppure","nonché","nonchè","nondimeno","nonostante","notevolmente","occasionalmente","oltretutto","onde","onestamente","ossia","ostinatamente","ovvero","ovviamente","parimenti","particolarmente","peraltro","perché","perchè","perciò","perlomeno","però","pertanto","pesantemente","piuttosto","poi","poiché","poichè","praticamente","precedentemente","preferibilmente","precisamente","prematuramente","presto","prima","primariamente","primo","principalmente","prontamente","proporzionalmente","pure","purché","purchè","quando","quanto","quantomeno","quindi","raramente","realmente","relativamente","riassumendo","riformulando","ripetutamente","saltuariamente","schiettamente","sebbene","secondariamente","secondo","sempre","sennò","seguente","sensibilmente","seppure","seriamente","siccome","sicuramente","significativamente","similmente","simultaneamente","singolarmente","sinteticamente","solitamente","solo","soltanto","soprattutto","sopravvalutato","sorprendentemente","sostanzialmente","sottolineando","sottovalutato","specialmente","specificamente","specificatamente","subitamente","subito","successivamente","successivo","talmente","terzo","totalmente","tranne","tuttavia","ugualmente","ulteriormente","ultimamente","veramente","verosimilmente","visto"],n=["a breve","a causa","a causa di","a condizione che","a conseguenza","a conti fatti","a differenza di","a differenza del","a differenza della","a differenza dei","a differenza degli","a differenza delle","a dire il vero","a dire la verità","a dirla tutta","a dispetto di","a lungo","a lungo termine","a maggior ragione","a meno che non","a parte","a patto che","a prescindere","a prima vista","a proposito","a qualunque costo","a quanto","a quel proposito","a quel tempo","a quell'epoca","a questo fine","a questo proposito","a questo punto","a questo riguardo","a questo scopo","a riguardo","a seguire","a seguito","a sottolineare","a tal fine","a tal proposito","a tempo debito","a tutti gli effetti","a tutti i costi","a una prima occhiata","ad eccezione di","ad esempio","ad essere maliziosi","ad essere sinceri","ad ogni buon conto","ad ogni costo","ad ogni modo","ad una prima occhiata","adesso che","al che","al contrario","al contrario di","al fine di","al fine di fare","al giorno d'oggi","al momento","al momento giusto","al momento opportuno","al più presto","al posto di","al suo posto","al termine","all'epoca","all'infuori di","all'inizio","all'opposto","all'ultimo","alla fine","alla fine della fiera","alla luce","alla luce di","alla lunga","alla moda","alla stessa maniera","allo scopo di","allo stesso modo","allo stesso tempo","anch'esso","anch'io","anche se","ancora più","ancora di più","assumendo che","bisogna chiarire che","bisogna considerare che","causato da","ciò nondimeno","ciò nonostante","col tempo","con il tempo","come a dire","come abbiamo dimostrato","come è stato notato","come è stato detto","come è stato dimostrato","come hanno detto","come ho detto","come ho dimostrato","come ho notato","come potete notare","come potete vedere","come puoi notare","come puoi vedere","come si è dimostrato","come si può vedere","come si può notare","come sopra indicato","comunque sia","con attenzione","con enfasi","con il risultato che","con l'obiettivo di","con ostinazione","con questa intenzione","con questa idea","con queste idee","con questo in testa","con questo scopo","così che","così da","d'altra parte","d'altro canto","d'altro lato","d'altronde","d'ora in avanti","d'ora in poi","da allora","da quando","da quanto","da quel momento","da quella volta","da questo momento in poi","da questo momento","da qui","da ultimo","da un certo punto di vista","da un lato","da una parte","dall'altro lato","dall'epoca","dal che","dato che","dato per assunto che","davanti a","del tutto","dell'epoca","detto questo","di certo","di colpo","di conseguenza","di fatto","di fronte","di fronte a","di lì a poco","di punto in bianco","di quando in quando","di quanto non sia","di quel tempo","di qui a","di rado","di seguito","di si","di sicuro","di solito","di tanto in tanto","di tutt'altra pasta","di quando in quando","differente da","diversamente da","diverso da","dopotutto","dovuto a","e anche","e inoltre","entro breve","fermo restando che","faccia a faccia","fin da","fin dall'inizio","fin quando","finché non","finchè non","fin dal primo momento","fin dall'inizio","fino a","fino a questo momento","fino ad oggi","fino ai giorni nostri","fino adesso","fino a un certo punto","fino adesso","fra quanto","il prima possibile","in aggiunta","in altre parole","in altri termini","in ambo i casi","in breve","in caso di","in conclusione","in conformità","in confronto","in confronto a","in conseguenza","in considerazione","in considerazione di","in definitiva","in dettaglio","importante rendersi conto","in effetti","in entrambi i casi","in fin dei conti","in generale","in genere","in linea di massima","in poche parole","il più possibile","in maggior parte","in maniera analoga","in maniera convincente","in maniera esauriente","in maniera esaustiva","in maniera esplicita","in maniera evidente","in maniera incontestabile","in maniera indiscutibile","in maniera innegabile","in maniera significativa","in maniera simile","in modo allusivo","in modo analogo","in modo che","in modo convincente","in modo da","in modo identico","in modo notevole","in modo significativo","in modo significativo","in modo simile","in ogni caso","in ogni modo","in ogni momento","in parte considerevole","in parti uguali","in particolare","in particolare per","in particolare","in più","in pratica","in precedenza","in prima battuta","in prima istanza","in primo luogo","in rapporto","in qualche modo","in qualsiasi modo","in qualsiasi momento","in qualunque modo","in qualunque momento","in quarta battuta","in quarta istanza","in quarto luogo","in quel caso","in quelle circostanze","in questa occasione","in questa situazione","in questo caso","in questo caso particolare","in questo istante","in questo momento","in rare occasioni","in realtà","in seconda battuta","in seconda istanza","in secondo luogo","in seguito","in sintesi","in sostanza","in tempo","in terza battuta","in terza istanza","in terzo luogo","in totale","in tutto","in ugual maniera","in ugual misura","in ugual modo","in ultima analisi","in ultima istanza","in un altro caso","in una parola","in verità","insieme a","insieme con","invece che","invece di","la prima cosa da considerare","la prima cosa da tenere a mente","lo stesso","mentre potrebbe essere vero","motivo per cui","motivo per il quale","ne consegue che","ne deriva che","nei dettagli","nel caso","nel caso che","nel caso in cui","nel complesso","nel corso del","nel corso di","nel frattempo","nel lungo periodo","nel mentre","nell'eventualità che","nella misura in cui","nella speranza che","nella stessa maniera","nella stessa misura","nello specifico","nello stesso modo","nello stesso momento","nello stesso stile","non appena","non per essere maliziosi","non più da","nonostante ciò","nonostante tutto","ogni qualvolta","ogni tanto","ogni volta","oltre a","oltre a ciò","ora che","passo dopo passo","per causa di","per certo","per chiarezza","per chiarire","per come","per concludere","per conto di","per contro","per cui","per davvero","per di più","per dirla in altro modo","per dirla meglio","per dirla tutta","per es.","per esempio","per essere sinceri","per far vedere","per farla breve","per finire","per l'avvenire","per l'ultima volta","per la maggior parte","per la stessa ragione","per la verità","per lo più","per mettere in luce","per metterla in altro modo","per non dire di","per non parlare di","per ora","per ovvi motivi","per paura di","per paura dei","per paura delle","per paura degli","per prima cosa","per quanto","per questa ragione","per questo motivo","per riassumere","per sottolineare","per timore","per trarre le conclusioni","per ultima","per ultime","per ultimi","per ultimo","per via di","perché si","perchè si","perfino se","piano piano","più di ogni altra cosa","più di tutto","più facilmente","più importante","più tardi","poco a poco","poco dopo","prendiamo il caso di","presto o tardi","prima che","prima di","prima di ogni cosa","prima di tutto","prima o dopo","prima o poi","questo è probabilmente vero","questo potrebbe essere vero","restando inteso che","riassumendo","quanto prima","questa volta","se confrontato con","se e solo se","se no","seduta stante","sempreché","semprechè","sempre che","senz'altro","senza alcun riguardo","senza dubbio","senz'ombra di dubbio","senza ombra di dubbio","senza riguardo per","senza tregua","senza ulteriore ritardo","sia quel che sia","solo se","sotto questa luce","sperando che","sta volta","su tutto","subito dopo","sul serio","tanto per cominciare","tanto quanto","tra breve","tra l'altro","tra poco","tra quanto","tutte le volte","tutti insieme","tutto a un tratto","tutto ad un tratto","tutto d'un tratto","tutto considerato","tutto sommato","un passo alla volta","un tempo","una volta","una volta ogni tanto","unito a","va chiarito che","va considerato che","vada come vada","vale a dire","visto che"]},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(){return{singleWords:i,multipleWords:n,allWords:i.concat(n)}};var i=["ainsi","alors","aussi","car","cependant","certainement","certes","conséquemment","d'abord","d'ailleurs","d'après","davantage","désormais","deuxièmement","donc","dorénavant","effectivement","également","enfin","ensuite","entre-temps","essentiellement","excepté","finalement","globalement","jusqu'ici","là-dessus","lorsque","mais","malgré","néanmoins","notamment","partant","plutôt","pourtant","précédemment","premièrement","probablement","puis","puisque","quoique","sauf","selon","semblablement","sinon","suivant","toutefois","troisièmement"],n=["à cause de","à ce jour","à ce propos","à ce sujet","à cet égard","à cette fin","à compter de","à condition que","à défaut de","à force de","à juste titre","à la lumière de","à la suite de","à l'aide de","à l'appui de","à l'encontre de","à l'époque actuelle","à l'exception de","à l'exclusion de","à l'heure actuelle","à l'image de","à l'instar de","à l'inverse","à l'inverse de","à l'opposé","à la condition que","à mesure que","à moins que","à nouveau","à partir de","à première vue","à savoir","à seule fin que","à supposer que","à tel point que","à tout prendre","à vrai dire","afin de","afin d'attirer l'attention sur","afin que","ainsi donc","ainsi que","alors que","antérieurement","après cela","après quoi","après que","après réflexion","après tout","attendu que","au cas où","au contraire","au fond","au fur et à mesure","au lieu de","au même temps","au moment où","au moyen de","au point que","au risque de","au surplus","au total","aussi bien que","aussitôt que","autant que","autrement dit","avant que","avant tout","ayant fini","bien que","c'est à dire que","c'est ainsi que","c'est dans ce but que","c'est dire","c'est le cas de","c'est pour cela que","c'est la raison pour laquelle","c'est pourquoi","c'est qu'en effet","c'est-à-dire","ça confirme que","ça montre que","ça prouve que","cela étant","cela dit","cependant que","compte tenu","comme l'illustre","comme le souligne","comme on pouvait s'y attendre","comme quoi","comme si","commençons par examiner","comparativement à","conformément à","contrairement à","considérons par exemple","d'autant plus","d'autant que","d'autre part","d'ici là","d'où","d'un autre côté","d'un côté","d'une façon générale","dans ce cas","dans ces conditions","dans cet esprit","dans l'ensemble","dans l'état actuel des choses","dans l'éventualité où","dans l'hypothèse où","dans la mesure où","dans le but de","dans le cadre de","dans le cas où","dans les circonstances actuelles","dans les grandes lignes","dans un autre ordre d'idée","dans un délai de","de ce fait","de cette façon","de crainte que","de façon à","de façon à ce que","de façon que","de fait","de l'autre côté","de la même manière","de la même façon que","de manière que","de même","de même qu'à","de même que","de nos jours","de peur que","de prime abord","de sorte que","de surcroît","de telle manière que","de telle sorte que","de toute évidence","de toute façon","de toute manière","depuis que","dès lors que","dès maintenant","dès qua","dès que","du fait que","du moins","du moment que","du point de vue de","du reste","d'ici là","d'ores et déjà","en admettant que","en attendant que","en bref","en cas de","en cas que","en ce cas","en ce domaine","en ce moment","en ce qui a trait à","en ce qui concerne","en ce sens","en cela","en comparaison de","en conclusion","en conformité avec","en conséquence","en d'autres termes","en définitive","en dépit de","en dernier lieu","en deuxième lieu","en effet","en face de","en fait","en fin de compte","en général","en guise de conclusion","en matière de","en même temps que","en outre","en particulier","en plus","en premier lieu","en principe","en raison de","en réalité","en règle générale","en résumé","en revanche","en second lieu","en somme","en sorte que","en supposant que","en tant que","en terminant","en théorie","en tout cas","en tout premier lieu","en troisième lieu","en un mot","en vérité","en vue que","encore que","encore une fois","entre autres","et même","et puis","étant donné qu'à","étant donné que","face à","grâce à","il est à noter que","il est indéniable que","il est question de","il est vrai que","il faut dire aussi que","il faut reconnaître que","il faut souligner que","il ne faut pas oublier que","il s'ensuit que","il suffit de prendre pour exemple","jusqu'ici","il y a aussi","jusqu'à ce que","jusqu'à ce jour","jusqu'à maintenant","jusqu'à présent","jusqu'au moment où","jusqu'ici","l'aspect le plus important de","l'exemple le plus significatif","jusqu'au moment où","la preuve c'est que","loin que","mais en réalité","malgré cela","malgré tout","même si","mentionnons que","mis à part le fait que","notons que","nul doute que","ou bien","outre cela","où que","par ailleurs","par conséquent","par contre","par exception","par exemple","par la suite","par l'entremise de","par l'intermédiaire de","par rapport à","par suite","par suite de","par surcroît","parce que","pareillement","partant de ce fait","pas du tout","pendant que","plus précisément","plus tard","pour ainsi dire","pour autant que","pour ce qui est de","pour ces motifs","pour ces raisons","pour cette raison","pour commencer","pour conclure","pour le moment","pour marquer la causalité","pour l'instant","pour peu que","pour prendre un autre exemple","pour que","pour résumé","pour terminer","pour tout dire","pour toutes ces raisons","pourvu que","prenons le cas de","quand bien même que","quand même","quant à","quel que soit","qui plus est","qui que","quitte à","quoi qu'il en soit","quoi que","quoiqu'il en soit","sans délai","sans doute","sans parler de","sans préjuger","sans tarder","sauf si","selon que","si bien que","si ce n'est que","si l'on songe que","sitôt que","somme toute","sous cette réserve","sous prétexte que","sous réserve de","sous réserve que","suivant que","supposé que","sur le plan de","tandis que","tant et si bien que","tant que","tel que","tellement que","touchant à","tout à fait","tout bien pesé","tout compte fait","tout d'abord","tout d'abord examinons","tout d'abord il faut dire que","tout de même","tout en reconnaissant que","une fois de plus","vu que"]},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(){return{singleWords:i,multipleWords:n,allWords:i.concat(n)}};var i=["ademais","afinal","aliás","analogamente","anteriormente","assim","certamente","conforme","conquanto","contudo","decerto","embora","enfim","enquanto","então","entretanto","eventualmente","igualmente","inegavelmente","inesperadamente","mas","outrossim","pois","porquanto","porque","portanto","posteriormente","precipuamente","primeiramente","primordialmente","principalmente","salvo","semelhantemente","similarmente","sobretudo","surpreendentemente","todavia"],n=["a fim de","a fim de que","a menos que","a princípio","a saber","acima de tudo","ainda assim","ainda mais","ainda que","além disso","antes de mais nada","antes de tudo","antes que","ao mesmo tempo","ao passo que","ao propósito","apesar de","às vezes","assim como","assim que","assim sendo","assim também","bem como","com a finalidade de","com efeito","com o fim de","com o intuito de","com o propósito de","com toda a certeza","como resultado","como se","da mesma forma","de acordo com","de conformidade com","de fato","de maneira idêntica","de tal forma que","de tal sorte que","depois que","desde que","dessa forma","dessa maneira","desse modo","do mesmo modo","é provável","em conclusão","em contrapartida","em contraste com","em outras palavras","em primeiro lugar","em princípio","em resumo","em seguida","em segundo lugar","em síntese","em suma","em terceiro lugar","em virtude de","finalmente agora atualmente","isto é","já que","logo após","logo depois","logo que","mesmo que","não apenas","nesse hiato","nesse ínterim","nesse meio tempo","nesse sentido","no entanto","no momento em que","ou por outra","ou seja","para que","pelo contrário","por analogia","por causa de","por certo","por conseguinte","por conseqüência","por exemplo","por fim","por isso","por mais que","por menos que","por outro lado","posto que","se acaso","se bem que","seja como for","sem dúvida","só para exemplificar","só para ilustrar","só que","sob o mesmo ponto de vista","talvez provavelmente","tanto quanto","uma vez que","visto que"]},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(){return{singleWords:i,multipleWords:n,allWords:i.concat(n)}};var i=["безусловно","бесспорно","вероятно","вестимо","вдобавок","видимо","вишь","во-вторых","во-первых","вообще-то","впрочем","дабы","едва","ежели","если","затем ","зачем","ибо","итак","кабы","кажется","кажись","коли","кстати","лишь","лучше","наверно","наверное","например","небось","нежели","несомненно","но","однако","особенно","оттого","отчего","поди","пожалуй","позволь","позвольте","покамест","покуда","поскольку","потому","притом","причем","только","хотя","чтоб","чтобы","чуть","якобы"],n=["а вдобавок","а вот","а именно","а не то","а не","а потом","а также","без всякого сомнения","без того чтобы не","без того, чтобы не","благодаря тому","более того","будто бы","будь то","буквально","в итоге","в конце концов","в общей сложности","в общем-то","в общем","в отношении того что","в отношении того, что","в принципе","в противовес тому что","в противовес тому, что","в противоположность тому","в результате","в самом деле","в свою очередь","в связи с тем что","в связи с тем","в силу того что","в силу того","в силу чего","в случа","в сравнении с тем","в сущности говоря","в сущности","в таком случае","в то время как","в то время, как","в том случае","в частности","в-третьих","ввиду того","вернее говоря","вероятнее всего","видите ли","видишь ли","вместе с тем","вместо того","вне всякого сомнения","вне сомнения","во всяком случае","воля ваша","воля твоя","вообще говоря","вопреки тому","вплоть до того","вроде того как","вроде того что","вроде того","вроде того","вследствие того что","вследствие чего","грубо говоря","да еще","да и то","дай бог память","даром что","для того чтобы","для того, чтобы","до тех пор пока","до тех пор, пока","до того как","до того, как","едва лишь","едва только","ежели бы","если угодно","жалко, что","жаль, что","за счет того что","за счет того, что","знамо дело","и вот еще","из-за того что","из-за того, что","иначе говоря","исходя из того","к вашему сведению","к несчастью","к огорчению","к примеру сказать","к примеру","к прискорбию","к радости","к слову сказать","к сожалению","к стыду своему","к стыду","к счастью","к твоему сведению","к тому же","к удивлению","к ужасу","к чести","как будто","как бы там ни было","как бы то ни было","как бы","как вам известно","как вдруг","как видите","как видишь","как видно","как водится","как выяснилось","как выясняется","как говорилось","как говорится","как если бы","как знать","как известно","как на заказ","как назло","как нарочно","как ни говори","как ни говорите","как ни странно","как оказалось","как оказывается","как полагается","как положено","как правило","как принято говорить","как принято","как сказано","как скоро","как следствие","как словно","как только","как хотите","как это ни странно","ко всему прочему","коль скоро","коль уж","коротко говоря","короче говоря","кроме всего прочего","кстати говоря","кстати сказать","лишь бы","лишь только","мало сказать","мало того","между нами говоря","между прочим","между тем как","может статься","можно подумать","мягко выражаясь","мягко говоря","на беду","на ваш взгляд","на мой взгляд","на несчастье","на основании того что","на основании того, что","на первый взгляд","на самом деле","на случай","на твой взгляд","на худой конец","надо полагать","наряду с тем что","наряду с тем","насчет того что","насчет того, что","не в пример тому как","не в пример тому, как","не то чтобы","невзирая на то","независимо от того","несмотря на то","ничего не скажешь","но вообще-то","но кроме того","однако же","откровенно сказать","относительно того что","относительно того, что","перед тем","по вашему мнению","по видимости","по всей вероятности","по всей видимости","по данным","по замыслу","по идее","по крайней мере","по мере того как","по мере того, как","по мнению","по моему мнению","по обыкновению","по обычаю","по определению","по поводу того","по правде говоря","по правде сказать","по правде","по преданию","по причине того","по прогнозам","по сведениям","по своему обыкновению","по слухам","по совести говоря","по совести сказать","по совести","по сообщению","по сообщениям","по справедливости говоря","по справедливости","по сравнению","по статистике","по сути говоря","по сути дела","по сути","по существу говоря","по существу","по счастью","по твоему мнению","по чести говоря","по чести признаться","по чести сказать","по-вашему","по-видимому","по-ихнему","по-моему","по-нашему","по-твоему","под видом того что","под видом того, что","под предлогом","подобно тому","подумать только","помимо всего прочего","помимо всего","помимо того","помимо того","помимо этого","понятное дело","попросту говоря","попросту сказать","после того","потому как","потому что","правду говоря","правду сказать","правильнее говоря","прежде всего","прежде нежели","прежде чем","при всем том","при условии что","при условии, что","против обыкновения","проще говоря","проще сказать","прямо-таки как","пускай бы","равно как","ради того чтобы","разве что","разумеется","с вашего позволения","с вашего разрешения","с другой стороны","с моей точки зрения","с одной стороны","с позволения сказать","с твоего позволения","с твоего разрешения","с тем чтобы","с тех пор как","с той целью чтобы","с точки зрения","само собой разумеется","сверх того что","сверх того","сказать по правде","сказать по совести","сказать по чести","скорее всего","смотря по тому","со своей стороны","собственно говоря","совсем как","стало быть","стоит отметить","строго говоря","судя по всему","судя по тому","так или иначе","так как","так что","так чтобы","тем более что","тем не менее","тем паче что","то бишь","то есть","тогда как","только бы","только лишь","только чуть","точнее говоря","точнее сказать","точно так же","что и говорить","что ни говори","что ни говорите","чуть лишь","чуть только","шутка ли сказать","шутка ли","шутка сказать","это значит, что"]},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(){return{singleWords:i,multipleWords:n,allWords:i.concat(n)}};var i=["aby","abym","abyśmy","abyś","abyście","acz","aczkolwiek","albowiem","ale","aliści","bo","bowiem","bynajmniej","choć","chociaż","chociażby","czyli","dlatego","dodatkowo","dopóki","dotychczas","faktycznie","gdy","gdyż","jakkolwiek","iż","jednak","jednakże","jeśli","kiedy","lecz","mianowicie","mimo","np","najpierw","następnie","natomiast","ni","niemniej","niż","notabene","oczywiście","ogółem","ostatecznie","owszem","podobnie","podsumowując","pokrótce","pomimo","ponadto","ponieważ","poprzednio","potem","później","przecież","przeto","przynajmniej","raczej","również","rzeczywiście","skoro","także","też","toteż","tudzież","tymczasem","wedle","według","więc","właściwie","wobec","wpierw","wprawdzie","wreszcie","wskutek","wstępnie","wszakże","wszelako","zamiast","zanim","zarówno","zaś","zatem","zresztą","zwłaszcza","żeby","żebym","żebyś","żebyście","żebyśmy"],n=["a konkretnie","a propos","aby wrocić do rzeczy","analogicznie do","bacząc na to że","bądź co bądź","bez wątpienia","bez względu","biorąc pod uwagę","choćby","chodzi o to","chyba że","co do","co gorsza","co prawda","co się tyczy","co ważniejsze","co więcej","dzięki czemu","dzięki któremu","dzięki której","dzięki którym","dzięki temu","faktem jest że","inaczej mówiąc","innymi słowy","jak dotąd","jak już mówiłam","jak już mówiłem","jak już wspomniano","jak widać","jako przykład","jednym słowem","jeśli chodzi o","jeżeli chodzi o","konkretnie to","krótko mówiąc","łącznie z","mając to na uwadzę","mam na myśli","mamy na myśli","mówiąc w skrócie","na celu","na dłuższą metę","na dodatek","na koniec","na końcu","na przykład","na skutek","na wstęp","na wypadek gdyby","na zakończenie","nade wszystko","należy pamiętać","nawiasem mówiąc","nie mówiąc już","nie mówiąc o tym","nie pomijając","nie schodząc z tematu","nie wspominając już","nie wspominając o","nie wspominając to","nie wspominając że","nie zważając na","o ile","o tyle","od czasu do czasu","od momentu","odnośnie do","ogólnie mówiąc","ogólnie rzecz biorąc","oprócz tego","oznacza to że","po czwarte","po drugie","po piąte","po pierwsze","po to","po trzecie","pod warunkiem","podczas gdy","podczas kiedy","podobnym sposobem","ponad wszystko","poza tym","prawdę mówiąc","prawdę powiedziawszy","prędzej czy później","przechodząc do","przede wszystkim","przez co","przez tą","przez tego","przez to","przy tym","przypuściwszy że","raz na jakiś czas","rzecz jasna","ściśle biorąc","ściśle mówiąc","skutkiem tego","tak czy inaczej","tak czy owak","tak naprawdę","takich jak","takie jak","to znaczy","tym samym","w celu","w ciągu","w dodatku","w efekcie","w innych słowach","w istocie","w każdym razie","w końcu","w konsekwencji","w kwestii","w międzyczasie","w nadziei że","w obawie że","w odróżnieniu","w podobny sposób","w podsumowaniu","w przeciwieństwie do","w przeciwnym razie","w przypadku","w rezultacie","w rozumieniu że","w rzeczy samej","w rzeczywistości","w skrócie","w szczególności","w takim razie","w ten sposób","w tych okolicznościach","w tym przypadku","w wyniku","w wyniku tego","w związku z tym","wbrew pozorom","włącznie z","wracając do rzeczy","wracając do tematu","wręcz przeciwnie","z drugiej strony","z drugiej zaś strony","z jednej strony","z mocy że","z obawy że","z pewnością","z powodu","z przyczyny","z tą intencją","z tego powodu","z uwagi że","zacznijmy od","zakładając że","ze względu na","ze względu że","zważywszy na to","zważywszy że"]},function(a,e,t){"use strict";var i=["alltså","ändå","annars","ännu","även","avslutningsvis","bl.a.","d.v.s.","då","därav","därefter","däremot","därför","därmed","därpå","dessutom","dock","efteråt","eftersom","emellertid","enligt","exempelvis","fastän","följaktligen","förrän","först","förutom","huvudsakligen","ifall","inledningsvis","innan","jämförelsevis","likadant","likaså","liksom","medan","men","nämligen","när","oavsett","också","omvänt","säkerligen","således","sålunda","sammanfattningsvis","sammantaget","samt","samtidigt","särskilt","såsom","sist","slutligen","speciellt","t.ex.","tidigare","tillika","tills","trots","tvärtemot","tvärtom","tydligen","varpå","vidare","uppenbarligen","ytterligare"],n=["å andra sidan","å ena sidan","allt som allt","anledningen är","anledningen blir","annorlunda än","av den orsaken","av detta skäl","beroende på","bland annat","därtill kommer","det beror på att","det vill säga","det visar","detta beror på","detta går ut på att","detta innebär att","detta leder till","detta medför att","effekten blir","efter ett tag","ej heller","en effekt av detta","en förklaring till detta","ett exempel på detta","ett liknande exempel","exakt som","följden blir","för att avrunda","för all del","för att förklara","för att inte säga","för att inte tala om","för att klargöra","för att poängtera","för att säga det på ett annat sätt","för att sammanfatta","för att understryka","för att visa","för det andra","för det första","för det tredje","förr eller senare","för närvarande","framför allt","fram till nu","har att göra med","härav följer","i båda fallen","i det fallet","i det hela","i det här fallet","i det långa loppet","i enlighet med","i förhållande till","i fråga om","i jämförelse med","i kontrast till","i likhet med","i ljuset av","i motsats till","i och med","i relation till","i samband med","i sin tur","i själva verket","i slutändan","i stället för","i syfte att","i synnerhet","i verkligheten","icke desto mindre","ihop med","inte desto mindre","jämfört med","kan sammanfattas","kort sagt","konsekvensen av detta","lika viktigt är","målet är att","med andra ord","med anledning av","med det i åtanke","med det i tankarna","med ett ord","med hänsyn till","med härledning av","mot bakgrund av","mot den bakgrunden","när allt kommer omkring","när det gäller","närmare bestämt","nu när","orsaken är","på det sättet","på grund av","på liknande sätt","på så sätt","på samma sätt","resultatet blir","så länge som","så småningom","så snart som","sist men inte minst","slutsatsen blir","som antytt","som en följd av","som en konsekvens av","som ett exempel på","som ett resultat","som jag tidigare antytt","som konklusion kan","som man kan se","som nämnt","som tidigare nämnts","summa summarum","tack vare","till att börja med","till dess","till exempel","till en början","till följd av","till sist","till skillnad från","till slut","till största delen","tillsammans med","tvärt om","under de omständigheterna","under omständigheterna","under tiden","vad mera är","viktigt att inse","vilket innebär"];a.exports=function(){return{singleWords:i,multipleWords:n,allWords:i.concat(n)}}},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(a){return.7+a/3}},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(){return Object.keys((0,i.default)())};var i=function(a){return a&&a.__esModule?a:{default:a}}(t(817))},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(){return{en:i.getForms,de:n.getForms}};var i=t(1042),n=t(1057)},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getSuffixesComparative=o,e.getSuffixesSuperlative=r,e.addRegularSuffixes=function(a,e){var t=a.regularSuffixes.slice();return(0,i.uniq)(t.map(function(a){return e.concat(a)}))},e.addComparativeSuffixes=function(a,e){return o(a,e).map(function(a){return e.concat(a)})},e.addSuperlativeSuffixes=function(a,e){return r(a,e).map(function(a){return e.concat(a)})},e.addAllAdjectiveSuffixes=function(a,e){var t=a.regularSuffixes.slice(),s=o(a,e),d=r(a,e),l=[].concat(n(t),n(s),n(d));return(0,i.uniq)(l.map(function(a){return e.concat(a)}))};var i=t(2);function n(a){if(Array.isArray(a)){for(var e=0,t=Array(a.length);e<a.length;e++)t[e]=a[e];return t}return Array.from(a)}function o(a,e){return a.takesComparativeREnding.slice().some(function(a){return e.endsWith(a)})?a.comparativeSuffixesR:a.comparativeSuffixesEr}function r(a,e){return a.takesSuperlativeEstEnding.slice().some(function(a){return e.endsWith(a)})?a.superlativeSuffixesEst:a.superlativeSuffixesSt}},function(a,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(){return["geht","gämsbart","gemsbart","geäst","gebarungsbericht","geähnelt","geartet","gebäudetrakt","gebet","gebiet","gebietsrepräsentant","gebildbrot","gebirgsart","gebirgsgrat","gebirgskurort","gebirgsluft","gebirgsschlucht","geblüt","geblütsrecht","gebohntkraut","gebot","gebrauchsgut","gebrauchstext","gebrauchsverlust","gebrauchtgerät","gebrauchtwagengeschäft","gebrauchtwagenmarkt","geburt","geburtsakt","geburtsgeschwulst","geburtsgewicht","geburtsort","geburtsrecht","geburtsstadt","geburtstagsfest","geckenart","gedächtniskonzert","gedächtniskunst","gedächtnisverlust","gedankenarmut","gedankenexperiment","gedankenflucht","gedankengut","gedankenschritt","gedankenwelt","gedenkkonzert","gedicht","geest","gefahrengebiet","gefahrenmoment","gefahrenpunkt","gefahrgut","gefahrguttransport","gefährt","gefälligkeitsakzept","gefallsucht","gefangenenanstalt","gefangenentransport","gefängnisarzt","gefängniskluft","gefäßnaht","gefecht","gefechtsabschnitt","gefechtsbereit","gefechtsgebiet","gefechtsgewicht","gefechtshut","gefechtsmast","gefechtsmast","geflecht","geflügelaufzucht","geflügelleberwurst","geflügelmarkt","geflügelmast","geflügelpest","geflügelsalat","geflügelwurst","geflügelzucht","gefolgsleute","gefrett","gefriergerät","gefriergut","gefrierobst","gefrierpunkt","gefrierschnitt","gefühlsarmut","gefühlswelt","gegenangebot","gegenansicht","gegenargument","gegengeschäft","gegengewalt","gegengewicht","gegenkandidat","gegenkompliment","gegenkonzept","gegenlicht","gegenmacht","gegenpapst","gegenpart","gegensatzwort","gegenstandpunkt","gegenstandsgebiet","gegenwart","gegenwartskunst","gegenwelt","gegenwort","gehaart","gehandicapt","gehandikapt","geheimagent","geheimbericht","geheimdokument","geheimfavorit","geheimkontakt","geheimkult","geheimnisverrat","geheimpolizist","geheimrat","geheimrezept","geheimtext","gehirnakrobat","gehirngeschwulst","gehirnhaut","gehirnsandgeschwulst","gehirntot","gehirntrust","gehöft","gehörlosensport","geigenkonzert","geißbart","geißblatt","geißhirte","geißhirt","geist","geisterfahrt","geisterstadt","geisterwelt","geistesarmut","geistesart","geistesfürst","geistesgegenwart","geistesgestört","geistesprodukt","geistestat","geistesverwandt","geisteswelt","geklüft","geländefahrt","geländeritt","geländesport","gelangweilt","gelaut","geläut","gelblicht","gelbrost","gelbsucht","gelbwurst","gelcoat","geldausgabeautomat","geldautomat","geldgeschäft","geldheirat","geldinstitut","geldmarkt","geldsurrogat","geldtransport","geldverlust","gelehrtenstreit","gelehrtenwelt","geleit","geleitboot","geleitwort","gelenkgicht","gelenkwassersucht","geleucht","geltungssucht","gelüst","gemächt","gemeindeamt","gemeindebürgerrecht","gemeindegut","gemeindekirchenrat","gemeindepräsident","gemeinderat","gemeingeist","gemeingut","gemeinschaftsgeist","gemeinschaftsprojekt","gemeinschaftsunterkunft","gemengesaat","gemüseart","gemüsebeet","gemüsegeschäft","gemüsemarkt","gemüsesaft","gemüsesalat","gemüsezucht","gemüt","gemütsarmut","gemütsart","gemütsathlet","gemütskalt","genausogut","genausooft","genausoweit","gendefekt","generalagent","generalarzt","generalat","generalbassinstrument","generalbaßinstrument","generalbundesanwalt","generalgouvernement","generalintendant","generalist","generalkonsulat","generalleutnant","generaloberst","generalresident","generalsekretariat","generalstaaten","generalstaatsanwalt","generalsuperintendent","generalüberholt","generalvikariat","generalvollmacht","generationenkonflikt","generativist","genist","genitivattribut","genitivobjekt","genmanipuliert","gennesaret","genotzüchtigt","gent","genuasamt","genussgift","genußgift","genusssucht","genuss-sucht","genußsucht","genverändert","geobiont","geodät","geografieunterricht","geographieunterricht","geokrat","geophyt","gepäckfracht","geradeausfahrt","geradesogut","gefälligst","gerant","gerät","gerätewart","geräuschlaut","gerbextrakt","gericht","gerichtsarzt","gerichtsort","gerichtspräsident","germanisiert","germanist","germanistikstudent","gerodelt","geröllschicht","geröllschutt","geront","gerontokrat","gerstenbrot","gerstensaft","gerstenschrot","gerücht","gerüst","gesamtansicht","gesamtaspekt","gesamtdurchschnitt","gesamtgewicht","gesamtgut","gesamt","gesamtklassement","gesamtunterricht","gesandtschaftsrat","gesangskunst","gesangspart","gesangssolist","gesangsunterricht","gesangunterricht","geschäft","geschäftsaufsicht","geschäftsbericht","geschäftsgeist","geschäftswelt","geschenkpaket","geschichtsunterricht","geschicklichkeitstest","geschicklichkeitstest","geschlecht","geschlechtsakt","geschlechtslust","geschlechtsprodukt","geschlechtswort","geschmackstest","geschwindigkeitslimit","geschworenengericht","geschwulst","gesellschaftsfahrt","gesellschaftsschicht","gesetzblatt","gesetzespaket","gesetzestext","gesicht","gesichtshaut","gesichtspunkt","gesichtsschnitt","gesichtsverlust","gespenst","gespensterfurcht","gespinst","gespött","gesprächstherapeut","gestalt","gestaltungselement","gesteinsart","gesteinschutt","gesteinsschicht","gestüt","gestüthengst","verantwortungsbewusst","verantwortungsbewußt","getast","getränkeabholmarkt","getränkeautomat","getränkemarkt","getreideart","getreideaussaat","getreideexport","getreideimport","getreideprodukt","getreideschnitt","getreidevorrat","gewährfrist","gewalt","gewaltakt","gewaltbereit","gewalttat","gesprächsbereit","gewaltverbot","gewaltverzicht","gewässerbett","gewässerwart","gewebeschicht","gewebsrest","gewicht","gewichtsprozent","gewichtsverlust","gewerbeamt","gewerbearzt","gewerbeaufsicht","gewerbeaufsichtsamt","gewerbegebiet","gewerberecht","gewerbsunzucht","gewerkschaft","gewerkschaftsjournalist","gewindestift","gewinnsucht","gewinst","gewissensangst","gewissenskonflikt","gewitterfront","gewitterluft","gewohnheitsrecht","gewürzextrakt","gewürzkraut","gezücht","erbbaurecht","erbfolgerecht","erbfolgestreit","erbgut","erbhofrecht","erblast","erbpacht","erbrecht","erbschaftsstreit","erbsenkraut","erbbedingt","erbberechtigt","erblasst","erblaßt","erbswurst","erbverzicht","erbwort","erbzinsgut","erdbebengebiet","erdbeerjogurt","erdbeerjoghurt","erdbeeryoghurt","erdbeerkompott","erdbeerrot","erdbeersaft","erdbeersekt","erdengut","erdenlust","erdfrucht","erdgeist","erdkundeunterricht","erdlicht","erdmittelpunkt","erdnussfett","erdölprodukt","erdölproduzent","erdsatellit","erdschicht","erdsicht","erdtrabant","erdverhaftet","eremit","erfahrungsbericht","erfahrungshorizont","erfahrungswelt","erfindergeist","erfolgsaussicht","erfolgsorientiert","erfolgsrezept","erfolgsverwöhnt","erfüllungsort","erfurt","ergänzungsheft","ergänzungssport","ergänzungstest","ergostat","ergotherapeut","erholungsgebiet","erholungsort","erkundungsfahrt","erlaucht","erläuterungstext","erlebnisbericht","erlebnisorientiert","erlebniswelt","ernährungsamt","ernst","ernstgemeint","ernteaussicht","erntedankfest","erntefest","erntemonat","ernteresultat","eroberungsabsicht","eroberungsgeist","eroberungslust","eroberungssucht","eröffnungskonzert","ersatzgeschwächt","ersatzgut","ersatzkandidat","ersatzobjekt","ersatzpräparat","ersatzreservist","ersatztorwart","erscheinungsfest","erscheinungsort","erscheinungswelt","erschließungsgebiet","erst","erstbundesligist","erstfahrt","erstgebot","erstgeburt","erstgeburtsrecht","erstklassbillett","erstklaßbillett","erstkommunikant","erstkonsument","erstligist","erstplatziert","erstplaciert","erstplaziert","erstrecht","ertragsaussicht","erwartungsangst","erwartungshorizont","erwerbseinkünfte","erythrit","erythroblast","erythrozyt","erzählertalent","erzählgut","erzählkunst","erzähltalent","erzamt","erzdemokrat","erzeugungsschlacht","erzfaschist","erziehungsanstalt","erziehungsberechtigt","erziehungsinstitut","erzkommunist","erzprotestant","veranlassungswort","veranschaulicht","veranschlagt","verantwortungsbewusst","verantwortungsbewußt","veräußerungsverbot","verbalist","verbalkontrakt","verbändestaat","verbannungsort","verbildlicht","verbindungspunkt","verbindungsstudent","verbraucherkredit","verbrauchermarkt","verbrauchsgut","verbrechernest","verbrechersyndikat","verbrecherwelt","verbreitungsgebiet","verbrennungsprodukt","verdachtsmoment","verdampfungsgerät","verdauungstrakt","verdikt","veredelungsprodukt","verehrerpost","vereinspräsident","vereinsrecht","vereinssport","verfahrensrecht","verfassungsfahrt","verfassungsgericht","verfassungsrecht","verfassungsstaat","verfolgungsrecht","verfremdungseffekt","verfügungsgewalt","verfügungsrecht","verfügungsberechtigt","verführungskunst","vergegenständlicht","vergegenwärtigt","vergeltungsakt","vergenossenschaftlicht","vergissmeinnicht","vergißmeinnicht","vergleichsmonat","vergleichsobjekt","vergleichspunkt","vergnügungsetablissement","vergnügungsfahrt","vergnügungssucht","vergrößerungsgerät","verhaltensgestört","verhältniswahlrecht","verhältniswort","verhandlungsangebot","verhandlungsbereit","versandbereit","verteidigungsbereit","verhandlungsmandat","verhandlungsort","verhandlungspunkt","verhöramt","verist","verjährungsfrist","verkaufsagent","verkaufsangebot","verkaufsargument","verkaufsautomat","verkaufsfront","verkaufshit","verkaufsobjekt","verkaufsorientiert","verkaufspunkt","verkehrsamt","verkehrsdelikt","verkehrsinfarkt","verkehrsknotenpunkt","verkehrslicht","verkehrsnachricht","verkehrspolizist","verkehrsrecht","verkehrsunterricht","verkehrsverbot","verklarungsbericht","verknüpfungspunkt","verkündungsblatt","verlagsanstalt","verlagsprospekt","verlagsrecht","verlagsrepräsentant","verlagssignet","verlust","verlustgeschäft","verlust","verlustgeschäft","verlustpunkt","vermessungsamt","vermittlungsamt","vermögensrecht","vermont","vermummungsverbot","verneinungswort","vernichtungswut","vernunft","vernunftheirat","verordnungsblatt","verpackungsflut","verpflichtungsgeschäft","verrat","versammlungsort","versammlungsrecht","versandgeschäft","versandgut","versart","verschlusslaut","verschnitt","verschwendungssucht","versehrtensport","versicherungsagent","versicherungsanstalt","versicherungsrecht","verskunst","versöhnungsfest","versorgungsamt","versorgungsberechtigt","versorgungsgebiet","versorgungsgut","versorgungsstaat","verstakt","verständigungsbereit","verstellungskunst","verstürznaht","versuchsanstalt","versuchsobjekt","versuchsprojekt","vertebrat","verteidigungsbudget","verteidigungsetat","verteidigungspakt","verteilungskonflikt","verteilungszahlwort","vertikalschnitt","vertikutiergerät","vertragsgerecht","vertragspunkt","vertragsrecht","vertragsstaat","vertragstext","vertragswerkstatt","vertrauensanwalt","vertrauensarzt","vertrauensverlust","vertriebsrecht","vervielfältigungsrecht","vervielfältigungszahlwort","verwaltungsakt","verwaltungsgericht","verwaltungsrat","verwaltungsrecht","verwundetentransport","verzicht","verzweiflungsakt","verzweiflungstat","entbindungsanstalt","entdeckungsfahrt","entenbrust","entenfett","entertainment","enthusiast","entlastungsmoment","entlüftungsschacht","entnazifizierungsgericht","entoblast","entoparasit","entrechat","entrefilet","entrepot","entscheidungsfurcht","entscheidungsgewalt","entscheidungsrecht","entscheidungsschlacht","entstehungsort","entsteht","entwässerungsschacht","entwicklungsabschnitt","entwicklungsinstitut","entwicklungsprojekt","entwicklungsschritt","entziehungsanstalt","zerat","zerebrallaut","zerfallsprodukt","zergliederungskunst","zerit","zermatt","zersetzungsprodukt","zerstörungslust","zerstörungswut","zertifikat","zerussit","zervelat","zervelatwurst","beamtenrecht","beamtenschicht","beamtenstaat","beat","beatmungsgerät","beaufort","becherfrucht","beckengurt","becquereleffekt","bedarfsgut","bedenkfrist","bedienungselement","bedienungsgerät","bedienungskomfort","bedingtgut","bedürfnisanstalt","beeinflusst","beeinflußt","beerdigungsanstalt","beerdigungsinstitut","beerenfrucht","beerenobst","beerensaft","beet","befasst","befaßt","befehlsgewalt","beförderungsentgelt","beförderungsrecht","begabungstest","begegnungsort","begleitinstrument","begleittext","begleitwort","begnadigungsrecht","begräbt","begrenzungslicht","begriffswelt","begriffswort","begrüßungswort","behaviorist","behebungsfrist","behelfsausfahrt","behelfsunterkunft","behindertengerecht","behindertensport","behindertentransport","behmlot","beiblatt","beiboot","beignet","beiheft","beikost","beilast","beileidswort","beinamputiert","beinhaut","beirat","beirut","beistandskredit","beistandspakt","beitritt","beitrittsabsicht","beitrittsgebiet","beiwacht","beiwort","beizgerät","bekehrungswut","bekennergeist","bekennermut","bekleidungsamt","bekommen","belegarzt","belegbett","belegfrist","belehrungssucht","belemnit","belesprit","beleuchtungseffekt","beleuchtungsgerät","belfast","belkantist","belcantist","belletrist","bellizist","belt","benedikt","benediktenkraut","benefiziant","benefiziat","benefizkonzert","beneluxstaat","bentonit","benzindunst","beratungspunkt","bereit","bereicherungsabsicht","bereitschaftsarzt","bergamt","bergeslast","bergfahrt","bergfest","berggeist","berggrat","bergluft","bergpredigt","bergsport","berg-und-Tal-Fahrt","bergwacht","bergwelt","bericht","berichtsmonat","beritt","bermudashort","bernbiet","berserkerwut","berufsaussicht","berufssoldat","berufssport","berufsstart","berufstracht","berufsverbot","berufungsfrist","berufungsgericht","berufungsrecht","berührungsangst","berührungspunkt","besanmast","besatzungsgebiet","besatzungsmacht","besatzungsrecht","besatzungssoldat","besatzungsstatut","beschaffungsamt","beschäftigungstherapeut","beschlächt","beschlussrecht","beschlußrecht","beschmet","beschneidungsfest","beschlächt","beschlussrecht","beschlußrecht","beschmet","beschneidungsfest","beschwerdefrist","beschwerderecht","beschwörungskunst","beseitigungsanstalt","besetzungsgebiet","besetzungsmacht","besetzungsstatut","besichtigungsfahrt","besitzrecht","besoldungsrecht","besprechungspunkt","besserungsanstalt","bestattungsinstitut","bestimmungsort","bestimmungswort","bestinformiert","bestqualifiziert","bestrahlungsgerät","bestrenommiert","bestsituiert","bestverkauft","besucherrat","besuchsrecht","betpult","betracht","betreibungsamt","betriebsarzt","betriebsfest","betriebsrat","betriebswirt","bett","bettelmusikant","bettelvogt","bettstatt","bettwurst","beulenpest","beutegut","beutekunst","beuterecht","bevölkerungsschicht","bewahranstalt","bewährungsfrist","bewegungsarmut","beweislast","bewußt","bewusst","beziehungsgeflecht","bezirksamt","bezirksarzt","bezirksgericht","bezirkskabinett","bezirksschulrat","bezirksstadt","bezugspunkt","bezugsrecht","heraklit","herat","herbalist","herbst","herbstmonat","herbstpunkt","herdbuchzucht","herdeninstinkt","herfahrt","heringsfilet","heringssalat","herkuleskraut","herkunft","herkunftsort","hermaphrodit","heroenkult","heroinsucht","heroldsamt","heroldskunst","herostrat","herrenabfahrt","herrenbrot","herrendienst","herrenfest","herrenhut","herrenrecht","herrenschnitt","herrenwelt","herrgott","herrnhut","herrschaftsgebiet","herrschaftsgewalt","herrschaftsinstrument","herrschergeschlecht","herrscherkult","herrschsucht","herstellungsart","herzacht","herzangst","herzblatt","herzblut","herzensangst","herzensgut","herzenslust","herzenstrost","herzgeliebt","herzinfarkt","herzinnenhaut","herzklappendefekt","herzogshut","herzlichst","herzpatient","herzpunkt","herzspezialist","überbackt","ueberbackt","überbacktet","ueberbacktet","überbietet","ueberbietet","überbot","ueberbot","überbotet","ueberbotet","überbindet","ueberbindet","überbandet","ueberbandet","überbläst","ueberblaest","überbliest","ueberbliest","überbrät","ueberbraet","überbratet","ueberbratet","überbriet","ueberbriet","überbrietet","ueberbrietet","überbringt","ueberbringt","überbrachtet","ueberbrachtet","überbrücktet","ueberbruecktet","überbrühtet","ueberbrühtet","überbrülltet","ueberbruelltet","überbuchtet","ueberbuchtet","überbürdetet","ueberbuerdetet","überdecktet","ueberdecktet","überdehntet","ueberdehntet","überdenkt","ueberdenkt","überdachtet","ueberdachtet","überdosiertet","ueberdosiertet","überdrehtet","ueberdrehtet","überdrucktet","ueberdrucktet","überdüngtet","ueberdüngtet","übereignetet","uebereignetet","übereiltet","uebereiltet","übererfülltet","uebererfuelltet","überißt","ueberisst","ueberißt","überisst","überesst","ueberesst","übereßt","uebereßt","überaßt","ueberaßt","überesset","ueberesset","überäßet","ueberaesset","überfährt","ueberfaehrt","überfahrt","ueberfahrt","überfuhrt","ueberfuhrt","überfällt","ueberfaellt","überfallet","ueberfallet","überfielt","ueberfielt","überfielet","ueberfielet","überfängt","ueberfaengt","überfingt","ueberfingt","überfinget","ueberfinget","überfärbet","ueberfaerbet","überfettetet","ueberfettetet","überfirnisset","ueberfirnisset","überfirnißtet","ueberfirnisstet","überfischet","ueberfischet","überfischtet","ueberfischtet","überflanktet","ueberflanktet","überflanktet","ueberflanktet","überfliegt","ueberfliegt","überflieget","ueberflieget","überflöget","ueberflöget","überflösset","ueberfloesset","überflosst","ueberflosst","überfloßt","ueberflosst","überfließt","ueberfliesst","überflutetet","ueberflutetet","überformet","ueberformet","überformtet","ueberformtet","überfrachtetet","ueberfrachtetet","überfracht","ueberfracht","überfraget","ueberfraget","überfragtet","ueberfragtet","überfremdetet","ueberfremdetet","überfrisst","ueberfrisst","überfrißt","ueberfrißt","überfresst","ueberfresst","überfreßt","ueberfreßt","überfresset","ueberfresset","überfraßt","ueberfraßt","ueberfrasst","überfräßet","ueberfraesset","überfriert","ueberfriert","überfrieret","ueberfrieret","überfrort","ueberfrort","überfröret","ueberfroeret","überfrört","ueberfroert","überführet","ueberfuehret","überführtet","ueberfuehrtet","überfüllet","ueberfuellet","übergibt","uebergibt","übergebt","uebergebt","übergebet","uebergebet","übergabt","uebergabt","übergäbet","uebergaebet","übergäbt","uebergaebt","übergeht","uebergeht","übergehet","uebergehet","übergingt","uebergingt","übergewichtetet","uebergewichtetet","übergießet","uebergiesset","übergießt","uebergiesst","übergösset","uebergoesset","übergosst","uebergosst","uebergoßt","übergipset","uebergipset","übergipstet","uebergipstet","übergipset","uebergipset","übergipstet","uebergipstet","überglänzet","ueberglaenzet","überglänztet","ueberglaenztet","überglaset","ueberglaset","überglastet","ueberglastet","überglühet","uebergluehet","überglühtet","uebergluehtet","übergoldetet","uebergoldetet","übergraset","uebergraset","übergrastet","uebergrastet","übergrätschet","uebergraetschet","übergrätschtet","uebergraetschtet","übergreift","uebergreift","übergreifet","uebergreifet","übergrifft","uebergrifft","übergriffet","uebergriffet","übergreift","uebergreift","übergreifet","uebergreifet","übergriffet","uebergriffet","übergrifft","uebergrifft","übergrünet","uebergruenet","übergrüntet","uebergruentet","überhat","ueberhat","überhabt","ueberhabt","überhabet","ueberhabet","überhattet","ueberhattet","überhättet","ueberhaettet","überhält","ueberhaelt","überhaltet","ueberhaltet","überhielt","ueberhielt","überhieltet","ueberhieltet","überhändiget","ueberhaendiget","überhändigtet","ueberhaendigtet","überhängt","ueberhaengt","überhänget","ueberhaenget","überhingt","ueberhingt","überhinget","ueberhinget","überhängt","ueberhaengt","überhänget","ueberhaenget","überhängtet","ueberhaengtet","überhänget","ueberhaenget","überhängtet","ueberhaengtet","überhängt","ueberhaengt","überhänget","ueberhaenget","überhingt","ueberhingt","überhinget","ueberhinget","überhastetet","ueberhastetet","überhäufet","ueberhaeufet","überhäuftet","ueberhaeuftet","überhebt","ueberhebt","überhebet","ueberhebet","überhobt","ueberhobt","überhöbet","ueberhoebet","überhebt","ueberhebt","überhebet","ueberhebet","überhobt","ueberhobt","überheiztet","ueberheiztet","überheizet","ueberheizet","überhöhet","ueberhoehet","überhöhtet","ueberhoehtet","überhitzet","ueberhitzet","überhitztet","ueberhitztet","überholet","ueberholet","überholtet","ueberholtet","überhöret","ueberhoeret","überhörtet","ueberhoertet","überinterpretieret","ueberinterpretieret","überinterpretiertet","ueberinterpretiertet","überinterpretieret","ueberinterpretieret","überinterpretiertet","ueberinterpretiertet","überklebet","ueberklebet","überklebtet","ueberklebtet","überkleidetet","ueberkleidetet","überkochet","ueberkochet","überkochtet","ueberkochtet","überkommet","ueberkommet","überkamt","ueberkamt","überkämet","ueberkaemet","überkämt","ueberkaemt","überkompensieret","ueberkompensieret","überkompensiertet","ueberkompensiertet","überkreuzet","ueberkreuzet","überkreuztet","ueberkreuztet","überkronet","ueberkronet","überkrontet","ueberkrontet","überkrustetet","ueberkrustetet","überladet","ueberladet","überludet","ueberludet","überlüdet","ueberluedet","überlappet","ueberlappet","überlapptet","ueberlapptet","überlasset","ueberlasset","überlaßt","ueberlaßt","ueberlasst","ueberlasst","überlässt","ueberlaesst","überließt","ueberließt","ueberliesst","überließet","ueberließet","ueberliesset","überlastet","ueberlastet","überlastetet","ueberlastetet","überläuft","ueberlaeuft","überlaufet","ueberlaufet","überlieft","ueberlieft","überliefet","ueberliefet","überlebet","ueberlebet","überlebtet","ueberlebtet","überleget","ueberleget","überlegtet","ueberlegtet","überlegt","ueberlegt","überleget","ueberleget","überlegtet","ueberlegtet","überleitet","ueberleitet","überleitetet","ueberleitetet","überleset","ueberleset","überlast","ueberlast","überläset","ueberlaeset","überliegt","ueberliegt","überlieget","ueberlieget","überlagt","ueberlagt","überläget","ueberlaeget","überlägt","ueberlaegt","überlistetet","ueberlistetet","übermachet","uebermachet","übermachtet","uebermachtet","übermalet","uebermalet","übermaltet","uebermaltet","übermalet","uebermalet","übermaltet","uebermaltet","übermannet","uebermannet","überman