katello 3.15.1 → 3.16.0.rc2.1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of katello might be problematic. Click here for more details.

Files changed (1103) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/katello/common/vendor.js +6 -5
  3. data/app/controllers/katello/api/registry/registry_proxies_controller.rb +2 -3
  4. data/app/controllers/katello/api/rhsm/candlepin_dynflow_proxy_controller.rb +1 -1
  5. data/app/controllers/katello/api/rhsm/candlepin_proxies_controller.rb +13 -9
  6. data/app/controllers/katello/api/v2/activation_keys_controller.rb +5 -8
  7. data/app/controllers/katello/api/v2/api_controller.rb +14 -0
  8. data/app/controllers/katello/api/v2/capsule_content_controller.rb +2 -2
  9. data/app/controllers/katello/api/v2/content_credentials_controller.rb +1 -1
  10. data/app/controllers/katello/api/v2/content_view_components_controller.rb +2 -2
  11. data/app/controllers/katello/api/v2/content_view_filter_rules_controller.rb +1 -1
  12. data/app/controllers/katello/api/v2/content_view_filters_controller.rb +1 -1
  13. data/app/controllers/katello/api/v2/content_view_puppet_modules_controller.rb +1 -1
  14. data/app/controllers/katello/api/v2/content_view_versions_controller.rb +3 -9
  15. data/app/controllers/katello/api/v2/content_views_controller.rb +3 -3
  16. data/app/controllers/katello/api/v2/environments_controller.rb +3 -3
  17. data/app/controllers/katello/api/v2/gpg_keys_controller.rb +1 -1
  18. data/app/controllers/katello/api/v2/host_collections_controller.rb +3 -4
  19. data/app/controllers/katello/api/v2/host_subscriptions_controller.rb +5 -22
  20. data/app/controllers/katello/api/v2/host_tracer_controller.rb +39 -2
  21. data/app/controllers/katello/api/v2/hosts_bulk_actions_controller.rb +7 -2
  22. data/app/controllers/katello/api/v2/organizations_controller.rb +7 -14
  23. data/app/controllers/katello/api/v2/packages_controller.rb +13 -13
  24. data/app/controllers/katello/api/v2/products_controller.rb +2 -1
  25. data/app/controllers/katello/api/v2/repositories_controller.rb +7 -11
  26. data/app/controllers/katello/api/v2/repository_sets_controller.rb +1 -1
  27. data/app/controllers/katello/api/v2/subscriptions_controller.rb +5 -31
  28. data/app/controllers/katello/application_controller.rb +1 -1
  29. data/app/controllers/katello/concerns/api/api_controller.rb +2 -1
  30. data/app/controllers/katello/concerns/api/v2/hostgroups_controller_extensions.rb +1 -1
  31. data/app/controllers/katello/concerns/api/v2/repository_content_controller.rb +6 -1
  32. data/app/controllers/katello/concerns/api/v2/smart_proxies_controller_extensions.rb +1 -1
  33. data/app/controllers/katello/remote_execution_controller.rb +9 -1
  34. data/app/controllers/katello/sync_management_controller.rb +1 -1
  35. data/app/helpers/katello/hosts_and_hostgroups_helper.rb +1 -1
  36. data/app/helpers/katello/katello_urls_helper.rb +1 -1
  37. data/app/helpers/katello/layout_helper.rb +1 -3
  38. data/app/helpers/katello/subscription_mailer_helper.rb +23 -0
  39. data/app/jobs/create_expired_manifest_notifications.rb +11 -0
  40. data/app/lib/actions/candlepin/consumer/remove_subscription.rb +1 -1
  41. data/app/lib/actions/katello/activation_key/update.rb +1 -1
  42. data/app/lib/actions/katello/applicability/host/generate.rb +28 -0
  43. data/app/lib/actions/katello/applicability/hosts/bulk_generate.rb +32 -0
  44. data/app/lib/actions/katello/applicability/repository/regenerate.rb +31 -0
  45. data/app/lib/actions/katello/capsule_content/sync.rb +0 -1
  46. data/app/lib/actions/katello/capsule_content/sync_capsule.rb +0 -2
  47. data/app/lib/actions/katello/content_view/destroy.rb +3 -1
  48. data/app/lib/actions/katello/content_view/promote_to_environment.rb +1 -1
  49. data/app/lib/actions/katello/content_view/publish.rb +2 -2
  50. data/app/lib/actions/katello/content_view/remove.rb +1 -1
  51. data/app/lib/actions/katello/content_view/update.rb +1 -1
  52. data/app/lib/actions/katello/content_view_version/incremental_update.rb +6 -0
  53. data/app/lib/actions/katello/gpg_key/update.rb +1 -1
  54. data/app/lib/actions/katello/host/erratum/applicable_errata_install.rb +12 -2
  55. data/app/lib/actions/katello/host/generate_applicability.rb +21 -10
  56. data/app/lib/actions/katello/host/hypervisors_update.rb +1 -1
  57. data/app/lib/actions/katello/host/recalculate_errata_status.rb +4 -6
  58. data/app/lib/actions/katello/host/upload_profiles.rb +36 -5
  59. data/app/lib/actions/katello/organization/manifest_delete.rb +2 -1
  60. data/app/lib/actions/katello/organization/manifest_import.rb +3 -1
  61. data/app/lib/actions/katello/organization/manifest_refresh.rb +3 -1
  62. data/app/lib/actions/katello/orphan_cleanup/remove_orphans.rb +0 -13
  63. data/app/lib/actions/katello/product/content_create.rb +3 -3
  64. data/app/lib/actions/katello/product/create.rb +1 -1
  65. data/app/lib/actions/katello/product/destroy.rb +1 -1
  66. data/app/lib/actions/katello/product/update.rb +1 -1
  67. data/app/lib/actions/katello/provider/update.rb +1 -1
  68. data/app/lib/actions/katello/repository/clone_contents.rb +1 -1
  69. data/app/lib/actions/katello/repository/clone_to_environment.rb +1 -1
  70. data/app/lib/actions/katello/repository/create.rb +2 -2
  71. data/app/lib/actions/katello/repository/filtered_index_content.rb +12 -3
  72. data/app/lib/actions/katello/repository/finish_upload.rb +5 -3
  73. data/app/lib/actions/katello/repository/import_upload.rb +2 -2
  74. data/app/lib/actions/katello/repository/sync.rb +28 -16
  75. data/app/lib/actions/katello/repository/update.rb +17 -6
  76. data/app/lib/actions/katello/repository/update_cv_repo_cert_guard.rb +17 -0
  77. data/app/lib/actions/katello/repository/update_redhat_repository.rb +2 -2
  78. data/app/lib/actions/katello/repository/upload_files.rb +8 -5
  79. data/app/lib/actions/katello/subscription/update.rb +1 -1
  80. data/app/lib/actions/pulp/abstract_async_task.rb +3 -5
  81. data/app/lib/actions/pulp/consumer.rb +1 -3
  82. data/app/lib/actions/pulp/consumer/content_install.rb +1 -1
  83. data/app/lib/actions/pulp/orchestration/repository/smart_proxy_sync.rb +0 -1
  84. data/app/lib/actions/pulp/orchestration/repository/upload_content.rb +2 -0
  85. data/app/lib/actions/pulp/repository/presenters/deb_presenter.rb +5 -11
  86. data/app/lib/actions/pulp/repository/presenters/docker_presenter.rb +1 -1
  87. data/app/lib/actions/pulp3/ContentGuard/refresh.rb +19 -0
  88. data/app/lib/actions/pulp3/abstract_async_task.rb +3 -5
  89. data/app/lib/actions/pulp3/orchestration/repository/copy_all_units.rb +8 -10
  90. data/app/lib/actions/pulp3/orchestration/repository/generate_metadata.rb +2 -2
  91. data/app/lib/actions/pulp3/orchestration/repository/import_upload.rb +22 -13
  92. data/app/lib/actions/pulp3/orchestration/repository/upload_content.rb +8 -6
  93. data/app/lib/actions/pulp3/orphan_cleanup/delete_orphaned_migrated_repositories.rb +15 -0
  94. data/app/lib/actions/pulp3/repository/commit_upload.rb +18 -0
  95. data/app/lib/actions/pulp3/repository/copy_content.rb +1 -0
  96. data/app/lib/actions/pulp3/repository/import_upload.rb +5 -2
  97. data/app/lib/actions/pulp3/repository/refresh_distribution.rb +1 -0
  98. data/app/lib/actions/pulp3/repository/save_distribution_references.rb +3 -1
  99. data/app/lib/actions/pulp3/repository/save_publication.rb +1 -1
  100. data/app/lib/actions/pulp3/repository/save_version.rb +4 -2
  101. data/app/lib/actions/pulp3/repository/update_cv_repository_cert_guard.rb +15 -0
  102. data/app/lib/katello/concerns/base_template_scope_extensions.rb +8 -3
  103. data/app/lib/katello/concerns/filter_sensitive_data.rb +18 -0
  104. data/app/lib/katello/foreman.rb +2 -1
  105. data/app/lib/katello/http_resource.rb +3 -5
  106. data/app/lib/katello/lazy_accessor.rb +4 -2
  107. data/app/lib/katello/messaging/connection.rb +15 -0
  108. data/app/lib/katello/messaging/received_message.rb +12 -0
  109. data/app/lib/katello/messaging/stomp_connection.rb +73 -0
  110. data/app/lib/katello/resources/candlepin/activation_key.rb +0 -1
  111. data/app/lib/katello/resources/candlepin/admin.rb +1 -1
  112. data/app/lib/katello/resources/candlepin/consumer.rb +6 -0
  113. data/app/lib/katello/resources/candlepin/content.rb +7 -1
  114. data/app/lib/katello/resources/candlepin/owner.rb +0 -9
  115. data/app/lib/katello/resources/cdn.rb +6 -1
  116. data/app/lib/katello/resources/registry.rb +1 -1
  117. data/app/lib/katello/util/cdn_var_substitutor.rb +1 -3
  118. data/app/lib/katello/util/errata.rb +13 -0
  119. data/app/lib/katello/util/pulpcore_content_filters.rb +32 -0
  120. data/app/mailers/katello/subscription_mailer.rb +35 -0
  121. data/app/models/katello/activation_key.rb +1 -0
  122. data/app/models/katello/ansible_collection.rb +1 -1
  123. data/app/models/katello/authorization/host_tracer.rb +14 -0
  124. data/app/models/katello/authorization/pool.rb +5 -1
  125. data/app/models/katello/authorization/subscription.rb +1 -3
  126. data/app/models/katello/concerns/host_managed_extensions.rb +33 -4
  127. data/app/models/katello/concerns/organization_extensions.rb +9 -0
  128. data/app/models/katello/concerns/pulp_database_unit.rb +62 -35
  129. data/app/models/katello/concerns/redhat_extensions.rb +2 -1
  130. data/app/models/katello/concerns/smart_proxy_extensions.rb +5 -2
  131. data/app/models/katello/concerns/subscription_facet_host_extensions.rb +1 -1
  132. data/app/models/katello/content.rb +2 -2
  133. data/app/models/katello/content_view.rb +3 -2
  134. data/app/models/katello/content_view_erratum_filter.rb +29 -0
  135. data/app/models/katello/content_view_package_filter.rb +16 -1
  136. data/app/models/katello/content_view_package_group_filter.rb +7 -0
  137. data/app/models/katello/content_view_version.rb +1 -0
  138. data/app/models/katello/erratum.rb +6 -1
  139. data/app/models/katello/erratum_cve.rb +4 -0
  140. data/app/models/katello/events/generate_host_applicability.rb +28 -0
  141. data/app/models/katello/glue/candlepin/activation_key.rb +1 -1
  142. data/app/models/katello/glue/candlepin/pool.rb +6 -8
  143. data/app/models/katello/glue/candlepin/product.rb +1 -1
  144. data/app/models/katello/glue/candlepin/subscription.rb +1 -1
  145. data/app/models/katello/glue/provider.rb +5 -3
  146. data/app/models/katello/glue/pulp/repo.rb +1 -1
  147. data/app/models/katello/host/content_facet.rb +27 -4
  148. data/app/models/katello/host/subscription_facet.rb +1 -1
  149. data/app/models/katello/host_queue_element.rb +4 -0
  150. data/app/models/katello/host_tracer.rb +8 -0
  151. data/app/models/katello/kt_environment.rb +1 -1
  152. data/app/models/katello/module_stream.rb +2 -0
  153. data/app/models/katello/module_stream_rpm.rb +6 -0
  154. data/app/models/katello/package_group.rb +2 -1
  155. data/app/models/katello/pool.rb +19 -3
  156. data/app/models/katello/product.rb +1 -1
  157. data/app/models/katello/provider.rb +2 -3
  158. data/app/models/katello/pulp3/content_guard.rb +14 -0
  159. data/app/models/katello/puppet_module.rb +1 -1
  160. data/app/models/katello/repository.rb +20 -7
  161. data/app/models/katello/root_repository.rb +11 -0
  162. data/app/models/katello/rpm.rb +2 -1
  163. data/app/models/katello/subscription.rb +4 -4
  164. data/app/models/katello/sync_plan.rb +2 -2
  165. data/app/models/katello/task_status.rb +1 -1
  166. data/app/models/katello/trace_status.rb +3 -3
  167. data/app/models/setting/content.rb +8 -2
  168. data/app/services/katello/applicability/applicable_content_helper.rb +135 -0
  169. data/app/services/katello/applicable_host_queue.rb +21 -0
  170. data/app/services/katello/candlepin/consumer.rb +1 -1
  171. data/app/services/katello/candlepin/message_handler.rb +2 -3
  172. data/app/services/katello/candlepin_event_listener.rb +39 -53
  173. data/app/services/katello/event_daemon.rb +18 -18
  174. data/app/services/katello/event_monitor/poller_thread.rb +15 -17
  175. data/app/services/katello/product_content_importer.rb +2 -2
  176. data/app/services/katello/pulp/consumer.rb +6 -10
  177. data/app/services/katello/pulp/docker_manifest.rb +1 -1
  178. data/app/services/katello/pulp/docker_manifest_list.rb +1 -1
  179. data/app/services/katello/pulp/erratum.rb +1 -1
  180. data/app/services/katello/pulp/file_unit.rb +1 -1
  181. data/app/services/katello/pulp/module_stream.rb +1 -1
  182. data/app/services/katello/pulp/ostree_branch.rb +1 -1
  183. data/app/services/katello/pulp/package_group.rb +1 -1
  184. data/app/services/katello/pulp/pulp_content_unit.rb +8 -0
  185. data/app/services/katello/pulp/puppet_module.rb +1 -1
  186. data/app/services/katello/pulp/repository/yum.rb +3 -3
  187. data/app/services/katello/pulp/yum_metadata_file.rb +1 -1
  188. data/app/services/katello/pulp3/ansible_collection.rb +1 -1
  189. data/app/services/katello/pulp3/api/ansible_collection.rb +4 -1
  190. data/app/services/katello/pulp3/api/content_guard.rb +45 -0
  191. data/app/services/katello/pulp3/api/core.rb +20 -12
  192. data/app/services/katello/pulp3/api/docker.rb +4 -1
  193. data/app/services/katello/pulp3/api/file.rb +4 -1
  194. data/app/services/katello/pulp3/api/yum.rb +28 -1
  195. data/app/services/katello/pulp3/content.rb +2 -2
  196. data/app/services/katello/pulp3/docker_manifest.rb +1 -1
  197. data/app/services/katello/pulp3/docker_manifest_list.rb +1 -1
  198. data/app/services/katello/pulp3/docker_tag.rb +1 -1
  199. data/app/services/katello/pulp3/erratum.rb +9 -1
  200. data/app/services/katello/pulp3/file_unit.rb +1 -1
  201. data/app/services/katello/pulp3/migration.rb +2 -1
  202. data/app/services/katello/pulp3/module_stream.rb +13 -3
  203. data/app/services/katello/pulp3/package_group.rb +1 -1
  204. data/app/services/katello/pulp3/pulp_content_unit.rb +19 -7
  205. data/app/services/katello/pulp3/repository.rb +37 -16
  206. data/app/services/katello/pulp3/repository/docker.rb +1 -1
  207. data/app/services/katello/pulp3/repository/yum.rb +106 -5
  208. data/app/services/katello/pulp3/repository_mirror.rb +4 -2
  209. data/app/services/katello/pulp3/rpm.rb +26 -39
  210. data/app/services/katello/pulp3/smart_proxy_mirror_repository.rb +1 -1
  211. data/app/services/katello/pulp3/smart_proxy_repository.rb +23 -3
  212. data/app/services/katello/pulp3/srpm.rb +8 -1
  213. data/app/services/katello/ui_notifications/subscriptions/expire_soon.rb +1 -1
  214. data/app/services/katello/ui_notifications/subscriptions/manifest_expired_warning.rb +63 -0
  215. data/app/views/katello/api/v2/activation_keys/product_content.json.rabl +1 -1
  216. data/app/views/katello/api/v2/content_facet/erratum.json.rabl +1 -1
  217. data/app/views/katello/api/v2/content_facet/show.json.rabl +4 -0
  218. data/app/views/katello/api/v2/content_view_histories/show.json.rabl +2 -6
  219. data/app/views/katello/api/v2/host_subscriptions/product_content.json.rabl +2 -1
  220. data/app/views/katello/api/v2/host_tracer/base.json.rabl +6 -4
  221. data/app/views/katello/api/v2/organizations/owner_details.rabl +5 -0
  222. data/app/views/katello/api/v2/organizations/show.json.rabl +6 -1
  223. data/app/views/katello/api/v2/organizations/upstream_consumer.rabl +1 -0
  224. data/app/views/katello/subscription_mailer/subscription_expiry.html.erb +47 -0
  225. data/app/views/katello/subscription_mailer/subscription_expiry.text.erb +19 -0
  226. data/app/views/users/_subscriptions_expiring_soon_query_builder.html.erb +16 -0
  227. data/config/initializers/monkeys.rb +2 -2
  228. data/config/katello.yaml.example +4 -0
  229. data/config/routes.rb +2 -2
  230. data/config/routes/api/rhsm.rb +1 -0
  231. data/config/routes/api/v2.rb +6 -1
  232. data/config/routes/overrides.rb +1 -1
  233. data/db/functions/empty_v01.sql +7 -0
  234. data/db/functions/evr_trigger_v01.sql +9 -0
  235. data/db/functions/isalpha_v01.sql +11 -0
  236. data/db/functions/isalphanum_v01.sql +12 -0
  237. data/db/functions/isdigit_v01.sql +10 -0
  238. data/db/functions/rpmver_array_v01.sql +60 -0
  239. data/db/migrate/20131016124255_add_foreign_keys_engine.rb +1 -1
  240. data/db/migrate/20140117160939_refactor_content_views.rb +1 -1
  241. data/db/migrate/20140626204657_add_unlimited_to_activation_keys.rb +3 -3
  242. data/db/migrate/20140626204902_add_unlimited_to_host_collection.rb +3 -3
  243. data/db/migrate/20140930170628_add_errata.rb +1 -1
  244. data/db/migrate/20150119153452_update_promote_errata_email_description.rb +2 -6
  245. data/db/migrate/20150606021722_create_puppet_modules.rb +1 -1
  246. data/db/migrate/20150813185339_create_subscriptions.rb +1 -1
  247. data/db/migrate/20150826170004_add_content_facet.rb +1 -1
  248. data/db/migrate/20150930183738_migrate_content_hosts.rb +6 -8
  249. data/db/migrate/20160908234510_add_rpm_nvra.rb +1 -1
  250. data/db/migrate/20160930150810_add_smart_proxy_download_policy.rb +1 -1
  251. data/db/migrate/20161014133811_move_content_view_version_description_to_histories.rb +1 -1
  252. data/db/migrate/20161026191118_fix_invalid_interfaces.rb +1 -1
  253. data/db/migrate/20180103230812_set_errata_updated_date.rb +1 -1
  254. data/db/migrate/20180410140909_add_organization_id_to_pool.rb +1 -1
  255. data/db/migrate/20180920214134_create_repository_root.rb +2 -3
  256. data/db/migrate/20190730183518_add_docker_tag_join_table.rb +1 -1
  257. data/db/migrate/20190730203334_add_docker_meta_tag_join_table.rb +1 -1
  258. data/db/migrate/20200204034123_add_pulp3_href_to_repository_erratum.rb +6 -0
  259. data/db/migrate/20200213184848_create_evr_type.rb +49 -0
  260. data/db/migrate/20200304201026_create_katello_module_stream_rpms.rb +15 -0
  261. data/db/migrate/20200407171926_create_content_guard.rb +10 -0
  262. data/db/migrate/20200506163345_add_applicability_indicesto_katello_host_available_module_streams.rb +12 -0
  263. data/db/migrate/20200511204005_create_katello_host_queue_elements.rb +12 -0
  264. data/db/migrate/20200526200422_encrypt_root_repository_upstream_password.rb +45 -0
  265. data/db/seeds.d/106-mail_notifications.rb +8 -0
  266. data/db/seeds.d/107-enable_dynflow.rb +1 -1
  267. data/db/seeds.d/109-katello-notification-blueprints.rb +6 -0
  268. data/db/seeds.d/111-upgrade_tasks.rb +2 -1
  269. data/db/seeds.d/75-job_templates.rb +2 -2
  270. data/db/triggers/evr_insert_trigger_katello_installed_packages_v01.sql +5 -0
  271. data/db/triggers/evr_insert_trigger_katello_rpms_v01.sql +5 -0
  272. data/db/triggers/evr_update_trigger_katello_installed_packages_v01.sql +10 -0
  273. data/db/triggers/evr_update_trigger_katello_rpms_v01.sql +10 -0
  274. data/engines/bastion/app/assets/javascripts/bastion/bastion.module.js +1 -1
  275. data/engines/bastion/app/assets/javascripts/bastion/routing.module.js +1 -1
  276. data/engines/bastion/vendor/assets/javascripts/bastion/angular-animate/angular-animate.js +465 -340
  277. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_af-na.js +19 -19
  278. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_af-za.js +19 -19
  279. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_af.js +19 -19
  280. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_agq-cm.js +2 -2
  281. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ak-gh.js +4 -4
  282. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ak.js +4 -4
  283. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_am-et.js +1 -1
  284. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_am.js +1 -1
  285. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ar-001.js +7 -7
  286. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ar-ae.js +4 -4
  287. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ar-bh.js +6 -6
  288. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ar-dj.js +6 -6
  289. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ar-eg.js +4 -4
  290. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ar-er.js +4 -4
  291. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ar-il.js +8 -8
  292. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ar-iq.js +6 -6
  293. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ar-jo.js +6 -6
  294. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ar-km.js +10 -10
  295. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ar-kw.js +6 -6
  296. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ar-lb.js +6 -6
  297. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ar-ly.js +2 -2
  298. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ar-ma.js +4 -4
  299. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ar-mr.js +6 -6
  300. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ar-om.js +6 -6
  301. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ar-ps.js +4 -4
  302. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ar-qa.js +4 -4
  303. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ar-sa.js +4 -4
  304. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ar-sd.js +4 -4
  305. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ar-so.js +6 -6
  306. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ar-ss.js +4 -4
  307. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ar-sy.js +6 -6
  308. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ar-td.js +6 -6
  309. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ar-tn.js +2 -2
  310. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ar-xb.js +125 -0
  311. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ar-ye.js +6 -6
  312. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ar.js +4 -4
  313. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_as-in.js +8 -8
  314. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_as.js +8 -8
  315. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_asa-tz.js +6 -6
  316. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_asa.js +4 -4
  317. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ast-es.js +7 -7
  318. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ast.js +7 -7
  319. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_az-cyrl-az.js +41 -41
  320. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_az-cyrl.js +41 -41
  321. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_az-latn-az.js +3 -3
  322. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_az-latn.js +3 -3
  323. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_az.js +3 -3
  324. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_bas-cm.js +2 -2
  325. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_be-by.js +17 -17
  326. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_be.js +17 -17
  327. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_bez-tz.js +6 -6
  328. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_bez.js +4 -4
  329. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_bg-bg.js +10 -10
  330. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_bg.js +10 -10
  331. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_bm-ml.js +31 -3
  332. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_bn-bd.js +4 -4
  333. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_bn-in.js +4 -4
  334. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_bn.js +4 -4
  335. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_bo-cn.js +24 -24
  336. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_bo-in.js +25 -25
  337. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_bo.js +24 -24
  338. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_br-fr.js +12 -12
  339. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_br.js +12 -12
  340. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_brx-in.js +2 -2
  341. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_brx.js +2 -2
  342. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_bs-latn-ba.js +12 -12
  343. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_bs-latn.js +12 -12
  344. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_bs.js +12 -12
  345. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ca-ad.js +12 -12
  346. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ca-es.js +12 -12
  347. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ca-fr.js +12 -12
  348. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ca-it.js +12 -12
  349. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ca.js +12 -12
  350. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ce-ru.js +143 -0
  351. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ce.js +143 -0
  352. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_cgg-ug.js +6 -6
  353. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_cgg.js +4 -4
  354. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_chr-us.js +4 -4
  355. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_chr.js +5 -5
  356. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ckb-arab-iq.js +5 -5
  357. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ckb-arab-ir.js +5 -5
  358. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ckb-arab.js +5 -5
  359. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ckb-iq.js +12 -12
  360. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ckb-ir.js +9 -9
  361. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ckb-latn-iq.js +5 -5
  362. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ckb-latn.js +5 -5
  363. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ckb.js +10 -10
  364. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_cs-cz.js +2 -2
  365. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_cs.js +2 -2
  366. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_cu-ru.js +143 -0
  367. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_cu.js +143 -0
  368. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_cy-gb.js +3 -3
  369. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_cy.js +3 -3
  370. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_da-dk.js +1 -1
  371. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_da-gl.js +5 -5
  372. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_da.js +1 -1
  373. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_dav-ke.js +5 -5
  374. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_dav.js +5 -5
  375. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_de-at.js +1 -1
  376. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_de-ch.js +1 -1
  377. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_de-it.js +143 -0
  378. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_de-li.js +1 -1
  379. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_dje-ne.js +2 -2
  380. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_dua-cm.js +2 -2
  381. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_dyo-sn.js +2 -2
  382. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ebu-ke.js +5 -5
  383. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ebu.js +5 -5
  384. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ee-tg.js +6 -6
  385. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-001.js +1 -1
  386. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-150.js +7 -7
  387. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-ai.js +4 -4
  388. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-at.js +143 -0
  389. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-au.js +22 -22
  390. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-be.js +4 -4
  391. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-bi.js +143 -0
  392. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-bw.js +4 -4
  393. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-cc.js +4 -4
  394. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-ch.js +143 -0
  395. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-ck.js +4 -4
  396. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-cm.js +6 -6
  397. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-cx.js +4 -4
  398. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-cy.js +143 -0
  399. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-de.js +143 -0
  400. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-dg.js +4 -4
  401. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-dk.js +143 -0
  402. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-fi.js +143 -0
  403. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-fk.js +4 -4
  404. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-gb.js +2 -2
  405. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-gg.js +4 -4
  406. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-gi.js +4 -4
  407. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-gy.js +2 -2
  408. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-ie.js +4 -4
  409. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-il.js +143 -0
  410. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-im.js +4 -4
  411. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-io.js +4 -4
  412. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-je.js +4 -4
  413. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-jm.js +2 -2
  414. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-ke.js +4 -4
  415. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-mg.js +6 -6
  416. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-ms.js +4 -4
  417. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-mt.js +4 -4
  418. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-mu.js +6 -6
  419. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-nf.js +4 -4
  420. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-nl.js +143 -0
  421. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-nr.js +4 -4
  422. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-nu.js +4 -4
  423. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-pk.js +2 -2
  424. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-pn.js +4 -4
  425. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-rw.js +6 -6
  426. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-sc.js +4 -4
  427. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-se.js +143 -0
  428. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-sh.js +4 -4
  429. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-si.js +143 -0
  430. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-sl.js +2 -2
  431. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-sx.js +4 -4
  432. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-tk.js +4 -4
  433. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-tv.js +4 -4
  434. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-tz.js +6 -6
  435. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-ug.js +6 -6
  436. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-us-posix.js +143 -0
  437. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-vu.js +2 -2
  438. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-xa.js +143 -0
  439. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-za.js +4 -4
  440. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-zw.js +4 -4
  441. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_es-419.js +19 -19
  442. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_es-ar.js +19 -19
  443. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_es-bo.js +18 -18
  444. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_es-br.js +125 -0
  445. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_es-bz.js +125 -0
  446. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_es-cl.js +19 -19
  447. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_es-co.js +17 -17
  448. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_es-cr.js +18 -18
  449. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_es-cu.js +19 -19
  450. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_es-do.js +14 -14
  451. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_es-ea.js +12 -12
  452. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_es-ec.js +17 -17
  453. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_es-es.js +12 -12
  454. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_es-gq.js +14 -14
  455. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_es-gt.js +17 -17
  456. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_es-hn.js +17 -17
  457. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_es-ic.js +12 -12
  458. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_es-mx.js +18 -18
  459. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_es-ni.js +17 -17
  460. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_es-pa.js +13 -13
  461. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_es-pe.js +4 -4
  462. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_es-ph.js +16 -16
  463. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_es-pr.js +13 -13
  464. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_es-py.js +19 -19
  465. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_es-sv.js +17 -17
  466. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_es-us.js +15 -15
  467. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_es-uy.js +4 -4
  468. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_es-ve.js +12 -12
  469. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_es.js +12 -12
  470. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_et-ee.js +8 -8
  471. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_et.js +8 -8
  472. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_eu-es.js +16 -16
  473. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_eu.js +16 -16
  474. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ewo-cm.js +2 -2
  475. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fa-af.js +25 -25
  476. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fa-ir.js +6 -6
  477. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fa.js +4 -4
  478. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ff-cm.js +2 -2
  479. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ff-gn.js +2 -2
  480. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ff-mr.js +6 -6
  481. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ff-sn.js +2 -2
  482. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fi-fi.js +12 -12
  483. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fi.js +12 -12
  484. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fo-dk.js +143 -0
  485. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fo-fo.js +32 -32
  486. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fo.js +32 -32
  487. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-be.js +13 -13
  488. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-bf.js +14 -14
  489. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-bi.js +14 -14
  490. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-bj.js +14 -14
  491. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-bl.js +12 -12
  492. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-ca.js +5 -5
  493. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-cd.js +12 -12
  494. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-cf.js +14 -14
  495. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-cg.js +14 -14
  496. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-ch.js +17 -17
  497. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-ci.js +14 -14
  498. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-cm.js +16 -16
  499. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-dj.js +18 -18
  500. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-dz.js +16 -16
  501. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-fr.js +12 -12
  502. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-ga.js +14 -14
  503. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-gf.js +12 -12
  504. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-gn.js +14 -14
  505. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-gp.js +12 -12
  506. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-gq.js +14 -14
  507. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-ht.js +12 -12
  508. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-km.js +14 -14
  509. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-lu.js +12 -12
  510. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-ma.js +19 -19
  511. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-mc.js +12 -12
  512. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-mf.js +12 -12
  513. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-mg.js +14 -14
  514. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-ml.js +14 -14
  515. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-mq.js +12 -12
  516. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-mr.js +18 -18
  517. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-mu.js +14 -14
  518. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-nc.js +14 -14
  519. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-ne.js +14 -14
  520. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-pf.js +14 -14
  521. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-pm.js +12 -12
  522. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-re.js +12 -12
  523. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-rw.js +14 -14
  524. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-sc.js +12 -12
  525. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-sn.js +14 -14
  526. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-sy.js +18 -18
  527. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-td.js +18 -18
  528. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-tg.js +14 -14
  529. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-tn.js +18 -18
  530. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-vu.js +18 -18
  531. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-wf.js +14 -14
  532. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-yt.js +12 -12
  533. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr.js +12 -12
  534. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fy-nl.js +36 -36
  535. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fy.js +36 -36
  536. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_gl-es.js +27 -27
  537. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_gl.js +27 -27
  538. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_gsw-ch.js +2 -2
  539. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_gsw-fr.js +2 -2
  540. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_gsw-li.js +2 -2
  541. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_gsw.js +2 -2
  542. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_gu-in.js +3 -3
  543. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_gu.js +3 -3
  544. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_guz-ke.js +7 -7
  545. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_guz.js +7 -7
  546. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_gv-im.js +8 -8
  547. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_gv.js +8 -8
  548. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ha-gh.js +143 -0
  549. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ha-ne.js +143 -0
  550. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ha-ng.js +143 -0
  551. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ha.js +7 -7
  552. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_he-il.js +2 -2
  553. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_he.js +2 -2
  554. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_hr-ba.js +5 -5
  555. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_hr-hr.js +5 -5
  556. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_hr.js +5 -5
  557. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_hy-am.js +22 -22
  558. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_hy.js +20 -20
  559. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_id-id.js +3 -3
  560. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_id.js +1 -1
  561. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ig-ng.js +4 -4
  562. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ig.js +4 -4
  563. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ii-cn.js +17 -17
  564. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ii.js +17 -17
  565. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_in.js +1 -1
  566. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_is-is.js +2 -2
  567. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_it-ch.js +19 -19
  568. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_it-it.js +16 -16
  569. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_it-sm.js +16 -16
  570. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_it-va.js +143 -0
  571. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_it.js +16 -16
  572. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_iw.js +2 -2
  573. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ja-jp.js +2 -2
  574. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_jgo-cm.js +4 -4
  575. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_jgo.js +2 -2
  576. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_jmc-tz.js +6 -6
  577. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_jmc.js +4 -4
  578. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ka-ge.js +2 -2
  579. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ka.js +2 -2
  580. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_kab-dz.js +7 -7
  581. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_kab.js +7 -7
  582. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_kam-ke.js +5 -5
  583. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_kam.js +5 -5
  584. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_kde-tz.js +6 -6
  585. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_kde.js +4 -4
  586. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_khq-ml.js +2 -2
  587. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ki-ke.js +5 -5
  588. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ki.js +5 -5
  589. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_kk-kz.js +125 -0
  590. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_kk.js +28 -28
  591. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_kkj-cm.js +2 -2
  592. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_kl-gl.js +14 -14
  593. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_kl.js +14 -14
  594. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_kln-ke.js +5 -5
  595. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_kln.js +5 -5
  596. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_km-kh.js +8 -8
  597. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_km.js +8 -8
  598. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_kn-in.js +2 -2
  599. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_kn.js +2 -2
  600. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ko-kp.js +4 -4
  601. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ko-kr.js +4 -4
  602. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ko.js +2 -2
  603. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_kok-in.js +8 -8
  604. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_kok.js +8 -8
  605. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ks-in.js +143 -0
  606. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ksb-tz.js +6 -6
  607. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ksb.js +4 -4
  608. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ksf-cm.js +2 -2
  609. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ksh-de.js +8 -8
  610. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ksh.js +8 -8
  611. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_kw-gb.js +6 -6
  612. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_kw.js +6 -6
  613. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ky-kg.js +125 -0
  614. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ky.js +7 -7
  615. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_lag-tz.js +6 -6
  616. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_lag.js +4 -4
  617. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_lg-ug.js +6 -6
  618. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_lg.js +4 -4
  619. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_lkt-us.js +9 -9
  620. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_lkt.js +9 -9
  621. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ln-cf.js +2 -2
  622. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ln-cg.js +2 -2
  623. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_lo-la.js +9 -9
  624. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_lo.js +7 -7
  625. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_lrc-iq.js +143 -0
  626. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_lrc-ir.js +143 -0
  627. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_lrc.js +143 -0
  628. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_luo-ke.js +5 -5
  629. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_luo.js +5 -5
  630. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_luy-ke.js +5 -5
  631. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_luy.js +5 -5
  632. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_lv-lv.js +25 -25
  633. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_lv.js +25 -25
  634. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_mas-ke.js +5 -5
  635. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_mas-tz.js +6 -6
  636. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_mas.js +5 -5
  637. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_mer-ke.js +5 -5
  638. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_mer.js +5 -5
  639. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_mfe-mu.js +2 -2
  640. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_mg-mg.js +8 -8
  641. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_mg.js +6 -6
  642. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_mgh-mz.js +5 -5
  643. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_mgh.js +5 -5
  644. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_mgo-cm.js +2 -2
  645. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_mk-mk.js +4 -4
  646. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_mk.js +4 -4
  647. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ml-in.js +4 -4
  648. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ml.js +4 -4
  649. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_mn-mn.js +125 -0
  650. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_mn.js +6 -6
  651. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_mo.js +143 -0
  652. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ms-bn.js +39 -13
  653. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ms-my.js +35 -9
  654. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ms-sg.js +125 -0
  655. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_mua-cm.js +2 -2
  656. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_my-mm.js +10 -10
  657. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_my.js +8 -8
  658. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_mzn-ir.js +143 -0
  659. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_mzn.js +143 -0
  660. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_nb-no.js +6 -6
  661. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_nb-sj.js +6 -6
  662. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_nb.js +6 -6
  663. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_nd-zw.js +4 -4
  664. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_nd.js +4 -4
  665. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_nds-de.js +143 -0
  666. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_nds-nl.js +143 -0
  667. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_nds.js +143 -0
  668. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ne-in.js +5 -5
  669. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ne-np.js +1 -1
  670. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ne.js +1 -1
  671. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_nl-aw.js +12 -12
  672. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_nl-be.js +12 -12
  673. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_nl-bq.js +12 -12
  674. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_nl-cw.js +12 -12
  675. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_nl-nl.js +12 -12
  676. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_nl-sr.js +12 -12
  677. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_nl-sx.js +12 -12
  678. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_nl.js +12 -12
  679. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_nmg-cm.js +2 -2
  680. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_nnh-cm.js +5 -5
  681. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_nnh.js +3 -3
  682. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_no-no.js +6 -6
  683. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_no.js +6 -6
  684. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_nus-ss.js +143 -0
  685. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_nus.js +1 -1
  686. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_nyn-ug.js +6 -6
  687. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_nyn.js +4 -4
  688. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_om-et.js +5 -5
  689. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_om-ke.js +8 -8
  690. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_om.js +5 -5
  691. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_os-ge.js +1 -1
  692. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_os-ru.js +2 -2
  693. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_os.js +1 -1
  694. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_pa-arab-pk.js +5 -5
  695. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_pa-arab.js +3 -3
  696. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_pa-guru-in.js +2 -2
  697. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_pa-guru.js +2 -2
  698. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_pa.js +2 -2
  699. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_pl-pl.js +4 -4
  700. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_pl.js +4 -4
  701. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_prg-001.js +143 -0
  702. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_prg.js +143 -0
  703. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ps-af.js +10 -10
  704. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ps.js +8 -8
  705. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_pt-ao.js +8 -8
  706. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_pt-br.js +5 -5
  707. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_pt-ch.js +125 -0
  708. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_pt-cv.js +8 -8
  709. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_pt-gq.js +125 -0
  710. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_pt-gw.js +10 -10
  711. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_pt-lu.js +125 -0
  712. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_pt-mo.js +12 -12
  713. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_pt-mz.js +8 -8
  714. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_pt-pt.js +8 -8
  715. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_pt-st.js +10 -10
  716. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_pt-tl.js +8 -8
  717. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_pt.js +5 -5
  718. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_qu-bo.js +7 -7
  719. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_qu-ec.js +7 -7
  720. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_qu-pe.js +6 -6
  721. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_qu.js +6 -6
  722. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_rm-ch.js +2 -2
  723. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_rm.js +2 -2
  724. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_rn-bi.js +2 -2
  725. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ro-md.js +12 -12
  726. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ro-ro.js +19 -19
  727. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ro.js +19 -19
  728. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_rof-tz.js +6 -6
  729. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_rof.js +4 -4
  730. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ru-by.js +10 -10
  731. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ru-kg.js +9 -9
  732. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ru-kz.js +9 -9
  733. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ru-md.js +9 -9
  734. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ru-ru.js +10 -10
  735. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ru-ua.js +8 -8
  736. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ru.js +10 -10
  737. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_rw-rw.js +5 -5
  738. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_rw.js +3 -3
  739. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_rwk-tz.js +6 -6
  740. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_rwk.js +4 -4
  741. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sah-ru.js +40 -40
  742. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sah.js +40 -40
  743. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_saq-ke.js +5 -5
  744. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_saq.js +5 -5
  745. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sbp-tz.js +6 -6
  746. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sbp.js +4 -4
  747. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_se-fi.js +19 -19
  748. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_seh-mz.js +1 -1
  749. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_seh.js +1 -1
  750. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ses-ml.js +2 -2
  751. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sg-cf.js +2 -2
  752. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sh.js +143 -0
  753. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_shi-latn-ma.js +3 -3
  754. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_shi-latn.js +3 -3
  755. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_shi-tfng-ma.js +3 -3
  756. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_shi-tfng.js +3 -3
  757. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_shi.js +3 -3
  758. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_si-lk.js +6 -6
  759. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_si.js +6 -6
  760. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sk-sk.js +4 -4
  761. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sk.js +4 -4
  762. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sl-si.js +3 -3
  763. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sl.js +3 -3
  764. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_smn-fi.js +51 -51
  765. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_smn.js +51 -51
  766. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sn-zw.js +14 -14
  767. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sn.js +14 -14
  768. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_so-dj.js +5 -5
  769. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_so-et.js +3 -3
  770. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_so-ke.js +7 -7
  771. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_so-so.js +4 -4
  772. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_so.js +2 -2
  773. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sq-al.js +24 -24
  774. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sq-mk.js +18 -18
  775. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sq-xk.js +18 -18
  776. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sq.js +22 -22
  777. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sr-cyrl-ba.js +21 -21
  778. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sr-cyrl-me.js +25 -25
  779. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sr-cyrl-rs.js +8 -8
  780. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sr-cyrl-xk.js +22 -22
  781. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sr-cyrl.js +6 -6
  782. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sr-latn-ba.js +21 -21
  783. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sr-latn-me.js +25 -25
  784. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sr-latn-rs.js +8 -8
  785. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sr-latn-xk.js +22 -22
  786. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sr-latn.js +6 -6
  787. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sr.js +6 -6
  788. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sv-ax.js +12 -12
  789. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sv-fi.js +12 -12
  790. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sv-se.js +12 -12
  791. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sv.js +12 -12
  792. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sw-cd.js +45 -45
  793. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sw-ke.js +6 -6
  794. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sw-tz.js +10 -10
  795. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sw-ug.js +10 -10
  796. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sw.js +8 -8
  797. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ta-in.js +14 -14
  798. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ta-lk.js +14 -14
  799. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ta-my.js +14 -14
  800. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ta-sg.js +14 -14
  801. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ta.js +14 -14
  802. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_te-in.js +2 -2
  803. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_te.js +2 -2
  804. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_teo-ke.js +5 -5
  805. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_teo-ug.js +6 -6
  806. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_teo.js +4 -4
  807. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ti-er.js +22 -22
  808. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ti-et.js +45 -45
  809. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ti.js +45 -45
  810. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_tk-tm.js +143 -0
  811. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_tk.js +143 -0
  812. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_to-to.js +2 -2
  813. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_to.js +2 -2
  814. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_tr-cy.js +9 -9
  815. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_tr-tr.js +6 -6
  816. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_tr.js +6 -6
  817. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_twq-ne.js +2 -2
  818. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_tzm-ma.js +143 -0
  819. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_tzm.js +4 -4
  820. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ug-cn.js +143 -0
  821. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ug.js +10 -10
  822. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_uk-ua.js +22 -22
  823. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_uk.js +22 -22
  824. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ur-in.js +6 -6
  825. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ur-pk.js +9 -9
  826. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ur.js +7 -7
  827. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_uz-arab-af.js +19 -19
  828. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_uz-arab.js +17 -17
  829. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_uz-cyrl-uz.js +49 -49
  830. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_uz-cyrl.js +47 -47
  831. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_uz-latn-uz.js +41 -41
  832. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_uz-latn.js +39 -39
  833. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_uz.js +39 -39
  834. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_vi-vn.js +12 -12
  835. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_vi.js +10 -10
  836. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_vo-001.js +22 -7
  837. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_vo.js +22 -7
  838. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_vun-tz.js +6 -6
  839. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_vun.js +4 -4
  840. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_xog-ug.js +6 -6
  841. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_xog.js +4 -4
  842. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_yav-cm.js +2 -2
  843. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_yi-001.js +3 -3
  844. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_yi.js +3 -3
  845. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_yo-bj.js +7 -7
  846. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_yo-ng.js +5 -5
  847. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_yo.js +5 -5
  848. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_yue-hk.js +143 -0
  849. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_yue.js +143 -0
  850. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_zgh-ma.js +3 -3
  851. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_zgh.js +3 -3
  852. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_zh-cn.js +4 -4
  853. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_zh-hans-cn.js +4 -4
  854. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_zh-hans.js +4 -4
  855. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_zh-hant-hk.js +4 -4
  856. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_zh-hant-mo.js +4 -4
  857. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_zh-hk.js +4 -4
  858. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_zh.js +4 -4
  859. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_zu-za.js +17 -17
  860. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_zu.js +17 -17
  861. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/ar-xb.js +2 -0
  862. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/ce-ru.js +2 -0
  863. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/ce.js +2 -0
  864. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/cu-ru.js +2 -0
  865. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/cu.js +2 -0
  866. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/de-it.js +2 -0
  867. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/en-at.js +2 -0
  868. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/en-bi.js +2 -0
  869. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/en-ch.js +2 -0
  870. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/en-cy.js +2 -0
  871. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/en-de.js +2 -0
  872. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/en-dk.js +2 -0
  873. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/en-fi.js +2 -0
  874. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/en-il.js +2 -0
  875. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/en-nl.js +2 -0
  876. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/en-se.js +2 -0
  877. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/en-si.js +2 -0
  878. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/en-us-posix.js +2 -0
  879. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/en-xa.js +2 -0
  880. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/es-br.js +2 -0
  881. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/es-bz.js +2 -0
  882. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/fo-dk.js +2 -0
  883. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/ha-gh.js +2 -0
  884. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/ha-ne.js +2 -0
  885. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/ha-ng.js +2 -0
  886. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/it-va.js +2 -0
  887. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/kk-kz.js +2 -0
  888. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/ks-in.js +2 -0
  889. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/ky-kg.js +2 -0
  890. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/lrc-iq.js +2 -0
  891. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/lrc-ir.js +2 -0
  892. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/lrc.js +2 -0
  893. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/mn-mn.js +2 -0
  894. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/mo.js +2 -0
  895. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/ms-sg.js +2 -0
  896. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/mzn-ir.js +2 -0
  897. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/mzn.js +2 -0
  898. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/nds-de.js +2 -0
  899. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/nds-nl.js +2 -0
  900. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/nds.js +2 -0
  901. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/nus-ss.js +2 -0
  902. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/prg-001.js +2 -0
  903. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/prg.js +2 -0
  904. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/pt-ch.js +2 -0
  905. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/pt-gq.js +2 -0
  906. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/pt-lu.js +2 -0
  907. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/sh.js +2 -0
  908. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/tk-tm.js +2 -0
  909. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/tk.js +2 -0
  910. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/tzm-ma.js +2 -0
  911. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/ug-cn.js +2 -0
  912. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/yue-hk.js +2 -0
  913. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/yue.js +2 -0
  914. data/engines/bastion/vendor/assets/javascripts/bastion/angular-resource/angular-resource.js +407 -264
  915. data/engines/bastion/vendor/assets/javascripts/bastion/angular-route/angular-route.js +397 -156
  916. data/engines/bastion/vendor/assets/javascripts/bastion/angular-sanitize/angular-sanitize.js +516 -320
  917. data/engines/bastion/vendor/assets/javascripts/bastion/angular-ui-router/angular-ui-router.js +10551 -4465
  918. data/engines/bastion/vendor/assets/javascripts/bastion/angular/angular.js +10455 -4892
  919. data/engines/bastion/vendor/assets/javascripts/bastion/ngUpload/ng-upload.js +2 -2
  920. data/engines/bastion_katello/README.md +1 -0
  921. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/activation-key.factory.js +2 -2
  922. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/activation-keys.routes.js +0 -1
  923. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/ansible-collections/ansible-collections.factory.js +3 -3
  924. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/common/api-error-handler.service.js +2 -0
  925. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-credentials/content-credentials.routes.js +0 -1
  926. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-credentials/details/views/content-credential-info.html +3 -3
  927. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-credentials/views/content-credentials.html +3 -3
  928. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/content-hosts-bulk-traces-modal.controller.js +65 -0
  929. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-traces-modal.html +79 -0
  930. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content-host-modal-helper.service.js +11 -0
  931. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content-hosts-helper.service.js +6 -0
  932. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content-hosts.controller.js +5 -0
  933. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-packages-actions.controller.js +8 -1
  934. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-traces.controller.js +10 -9
  935. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-errata.html +1 -0
  936. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-traces.html +14 -1
  937. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/content-host-details.controller.js +23 -10
  938. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-info.html +20 -0
  939. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/content-hosts.html +4 -0
  940. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/register-client.html +1 -1
  941. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-promotion.controller.js +1 -1
  942. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/deb.factory.js +3 -3
  943. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/docker-manifest-lists/docker-manifest-list.factory.js +3 -3
  944. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/docker-manifests/docker-manifest.factory.js +3 -3
  945. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/docker-tags/docker-tags.factory.js +2 -2
  946. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/docker-tags/docker-tags.routes.js +0 -1
  947. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/environments.routes.js +0 -1
  948. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/views/environments.html +1 -0
  949. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/errata.controller.js +15 -6
  950. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/errata.routes.js +3 -0
  951. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/erratum.factory.js +2 -2
  952. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/files/file.factory.js +3 -3
  953. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/host-collection.factory.js +2 -2
  954. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/host-collections.routes.js +0 -1
  955. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/hosts/host-bulk-action.factory.js +2 -1
  956. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/hosts/host-traces-resolve.factory.js +18 -0
  957. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/de.po +3869 -2260
  958. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/es.po +4155 -2272
  959. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/fr.po +4257 -2352
  960. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/it.po +3840 -2253
  961. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ja.po +3999 -2409
  962. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ko.po +3853 -2291
  963. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pt_BR.po +4388 -2554
  964. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ru.po +4121 -2427
  965. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh_CN.po +3936 -2241
  966. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh_TW.po +3824 -2189
  967. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/module-streams/module-stream.factory.js +3 -3
  968. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/package-groups/package-group.factory.js +3 -3
  969. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/packages/package.factory.js +2 -2
  970. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details.controller.js +1 -1
  971. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-advanced-sync-options.html +5 -5
  972. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-info.html +1 -1
  973. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/views/new-repository.html +1 -3
  974. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/product.factory.js +2 -2
  975. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/products.routes.js +0 -1
  976. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/sync-plans/sync-plans.routes.js +0 -1
  977. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/tasks/task-details.controller.js +3 -2
  978. data/lib/katello.rb +4 -1
  979. data/lib/katello/engine.rb +25 -3
  980. data/lib/katello/permissions/host_permissions.rb +3 -0
  981. data/lib/katello/permissions/organization_permissions.rb +1 -2
  982. data/lib/katello/plugin.rb +12 -3
  983. data/lib/katello/prevent_json_parsing.rb +1 -1
  984. data/lib/katello/scheduled_jobs.rb +1 -1
  985. data/lib/katello/tasks/clean_backend_objects.rake +1 -1
  986. data/lib/katello/tasks/common.rake +7 -0
  987. data/lib/katello/tasks/delete_orphaned_content.rake +3 -1
  988. data/lib/katello/tasks/import_applicability.rake +4 -6
  989. data/lib/katello/tasks/jenkins.rake +1 -1
  990. data/lib/katello/tasks/pulp3_content_switchover.rake +6 -8
  991. data/lib/katello/tasks/pulp3_migration.rake +2 -0
  992. data/lib/katello/tasks/pulp3_post_migration_check.rake +4 -0
  993. data/lib/katello/tasks/receptor/extract_orgs.rake +27 -0
  994. data/lib/katello/tasks/reimport.rake +15 -19
  995. data/lib/katello/tasks/repository.rake +7 -11
  996. data/lib/katello/tasks/reset.rake +12 -13
  997. data/lib/katello/tasks/update_content_default_http_proxy.rake +1 -1
  998. data/lib/katello/tasks/update_subscription_facet_backend_data.rake +14 -16
  999. data/lib/katello/tasks/upgrades/3.10/clear_invalid_repo_credentials.rake +1 -1
  1000. data/lib/katello/tasks/upgrades/3.10/update_gpg_key_urls.rake +1 -1
  1001. data/lib/katello/tasks/upgrades/3.11/update_puppet_repos.rake +9 -11
  1002. data/lib/katello/tasks/upgrades/3.15/set_sub_facet_dmi_uuid.rake +1 -1
  1003. data/lib/katello/tasks/upgrades/3.16/update_applicable_el8_hosts.rake +29 -0
  1004. data/lib/katello/tasks/upgrades/3.8/clear_checksum_type.rake +18 -22
  1005. data/lib/katello/version.rb +1 -1
  1006. data/lib/monkeys/ar_postgres_evr_t.rb +24 -0
  1007. data/lib/monkeys/fx_sqlite_skip.rb +13 -0
  1008. data/locale/action_names.rb +47 -39
  1009. data/locale/bn/katello.po +4004 -2559
  1010. data/locale/cs/katello.po +3744 -2221
  1011. data/locale/de/katello.po +4293 -3046
  1012. data/locale/en/katello.po +3125 -1558
  1013. data/locale/es/katello.po +4269 -3013
  1014. data/locale/fr/katello.po +4287 -3077
  1015. data/locale/gu/katello.po +4016 -2578
  1016. data/locale/hi/katello.po +4015 -2568
  1017. data/locale/it/katello.po +4279 -3040
  1018. data/locale/ja/katello.po +4326 -2856
  1019. data/locale/katello.pot +2618 -1464
  1020. data/locale/kn/katello.po +4023 -2587
  1021. data/locale/ko/katello.po +4311 -2818
  1022. data/locale/mr/katello.po +3962 -2509
  1023. data/locale/or/katello.po +4008 -2561
  1024. data/locale/pa/katello.po +3975 -2516
  1025. data/locale/pt/katello.po +3373 -1837
  1026. data/locale/pt_BR/katello.po +4248 -2967
  1027. data/locale/ru/katello.po +4295 -2901
  1028. data/locale/ta/katello.po +3998 -2560
  1029. data/locale/te/katello.po +4018 -2569
  1030. data/locale/zh_CN/katello.po +4335 -2806
  1031. data/locale/zh_TW/katello.po +4463 -2962
  1032. data/package.json +13 -39
  1033. data/webpack/__mocks__/foremanReact/components/{BreadcrumbBar.js → BreadcrumbBar/index.js} +0 -1
  1034. data/webpack/__mocks__/react-intl/index.js +3 -0
  1035. data/webpack/__mocks__/react-intl/locale-data/en.js +1 -0
  1036. data/webpack/containers/Application/config.js +5 -0
  1037. data/webpack/containers/Application/overrides.scss +8 -0
  1038. data/webpack/mockRequest.js +1 -0
  1039. data/webpack/move_to_foreman/common/helpers.js +2 -1
  1040. data/webpack/move_to_foreman/components/common/table/components/__snapshots__/Table.test.js.snap +1 -0
  1041. data/webpack/scenes/AnsibleCollections/Details/AnsibleCollectionDetailsActions.js +2 -2
  1042. data/webpack/scenes/AnsibleCollections/Details/__tests__/__snapshots__/AnsibleCollectionDetailsActions.test.js.snap +4 -0
  1043. data/webpack/scenes/ContentViews/ContentViewSelectors.js +13 -0
  1044. data/webpack/scenes/ContentViews/ContentViewsActions.js +18 -0
  1045. data/webpack/scenes/ContentViews/ContentViewsConstants.js +3 -0
  1046. data/webpack/scenes/ContentViews/ContentViewsPage.js +30 -0
  1047. data/webpack/scenes/ContentViews/Table/ContentViewsTable.js +104 -0
  1048. data/webpack/scenes/ContentViews/Table/TableWrapper.js +55 -0
  1049. data/webpack/scenes/ContentViews/Table/actionResolver.js +28 -0
  1050. data/webpack/scenes/ContentViews/Table/index.js +3 -0
  1051. data/webpack/scenes/ContentViews/Table/tableDataGenerator.js +133 -0
  1052. data/webpack/scenes/ContentViews/__tests__/contentViewList.fixtures.json +228 -0
  1053. data/webpack/scenes/ContentViews/__tests__/contentViewPage.test.js +99 -0
  1054. data/webpack/scenes/ContentViews/components/ContentViewName.js +33 -0
  1055. data/webpack/scenes/ContentViews/components/EmptyStateMessage.js +43 -0
  1056. data/webpack/scenes/ContentViews/components/IconWithCount.js +18 -0
  1057. data/webpack/scenes/ContentViews/components/IconWithCount.scss +3 -0
  1058. data/webpack/scenes/ContentViews/components/Loading.js +31 -0
  1059. data/webpack/scenes/ContentViews/components/contentViewName.scss +9 -0
  1060. data/webpack/scenes/ContentViews/details/ContentViewDetailActions.js +12 -0
  1061. data/webpack/scenes/ContentViews/details/ContentViewDetailSelectors.js +15 -0
  1062. data/webpack/scenes/ContentViews/details/DetailsContainer.js +35 -0
  1063. data/webpack/scenes/ContentViews/expansions/DetailsExpansion.js +11 -0
  1064. data/webpack/scenes/ContentViews/expansions/EnvironmentsExpansion.js +19 -0
  1065. data/webpack/scenes/ContentViews/expansions/RepositoriesExpansion.js +12 -0
  1066. data/webpack/scenes/ContentViews/expansions/VersionsExpansion.js +11 -0
  1067. data/webpack/scenes/ContentViews/index.js +4 -0
  1068. data/webpack/scenes/ModuleStreams/Details/ModuleStreamDetailsActions.js +2 -2
  1069. data/webpack/scenes/ModuleStreams/Details/__tests__/__snapshots__/ModuleStreamDetailsActions.test.js.snap +4 -0
  1070. data/webpack/scenes/RedHatRepositories/__tests__/__snapshots__/RedHatRepositoriesPage.test.js.snap +8 -0
  1071. data/webpack/scenes/Subscriptions/Manifest/__tests__/__snapshots__/ManageManifestModal.test.js.snap +3 -2
  1072. data/webpack/scenes/Subscriptions/SubscriptionActions.js +12 -14
  1073. data/webpack/scenes/Subscriptions/SubscriptionsPage.js +14 -4
  1074. data/webpack/scenes/Subscriptions/SubscriptionsSelectors.js +8 -0
  1075. data/webpack/scenes/Subscriptions/__tests__/SubscriptionsActions.test.js +11 -22
  1076. data/webpack/scenes/Subscriptions/__tests__/SubscriptionsPage.test.js +11 -6
  1077. data/webpack/scenes/Subscriptions/__tests__/__snapshots__/SubscriptionsActions.test.js.snap +21 -17
  1078. data/webpack/scenes/Subscriptions/__tests__/__snapshots__/SubscriptionsPage.test.js.snap +8 -0
  1079. data/webpack/scenes/Subscriptions/components/SubscriptionsTable/__tests__/SubscriptionsTable.test.js +0 -1
  1080. data/webpack/scenes/Subscriptions/components/SubscriptionsToolbar/__snapshots__/SubscriptionsToolbar.test.js.snap +10 -0
  1081. data/webpack/scenes/Subscriptions/index.js +5 -1
  1082. data/webpack/scenes/Tasks/TaskActions.js +2 -1
  1083. data/webpack/scenes/Tasks/__tests__/__snapshots__/TaskActions.test.js.snap +12 -8
  1084. data/webpack/test-utils/nockWrapper.js +17 -0
  1085. data/webpack/test-utils/react-testing-lib-wrapper.js +42 -0
  1086. data/webpack/test_setup.js +10 -0
  1087. metadata +269 -49
  1088. data/app/lib/actions/candlepin/owner/auto_attach.rb +0 -15
  1089. data/app/lib/actions/katello/organization/auto_attach_subscriptions.rb +0 -16
  1090. data/app/services/katello/candlepin_listening_service.rb +0 -94
  1091. data/config/initializers/multipart_json_fix.rb +0 -15
  1092. data/config/initializers/runcible.rb +0 -5
  1093. data/lib/monkeys/json_munging_patch.rb +0 -25
  1094. data/lib/monkeys/multi_json_empty_fix.rb +0 -14
  1095. data/webpack/__mocks__/foremanReact/common/I18n.js +0 -5
  1096. data/webpack/__mocks__/foremanReact/common/helpers.js +0 -21
  1097. data/webpack/__mocks__/foremanReact/common/keyCodes.js +0 -8
  1098. data/webpack/__mocks__/foremanReact/components/PermissionDenied/index.js +0 -2
  1099. data/webpack/__mocks__/foremanReact/components/common/ModalProgressBar.js +0 -8
  1100. data/webpack/__mocks__/foremanReact/components/common/table.js +0 -6
  1101. data/webpack/__mocks__/foremanReact/redux/API.js +0 -6
  1102. data/webpack/__mocks__/foremanReact/redux/middlewares/IntervalMiddleware/IntervalSelectors.js +0 -6
  1103. data/webpack/__mocks__/foremanReact/redux/middlewares/IntervalMiddleware/index.js +0 -11
@@ -1,6 +1,6 @@
1
1
  /**
2
- * @license AngularJS v1.5.5
3
- * (c) 2010-2016 Google, Inc. http://angularjs.org
2
+ * @license AngularJS v1.7.9
3
+ * (c) 2010-2018 Google, Inc. http://angularjs.org
4
4
  * License: MIT
5
5
  */
6
6
  (function(window, angular) {'use strict';
@@ -17,19 +17,24 @@
17
17
  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
18
18
 
19
19
  var $sanitizeMinErr = angular.$$minErr('$sanitize');
20
+ var bind;
21
+ var extend;
22
+ var forEach;
23
+ var isArray;
24
+ var isDefined;
25
+ var lowercase;
26
+ var noop;
27
+ var nodeContains;
28
+ var htmlParser;
29
+ var htmlSanitizeWriter;
20
30
 
21
31
  /**
22
32
  * @ngdoc module
23
33
  * @name ngSanitize
24
34
  * @description
25
35
  *
26
- * # ngSanitize
27
- *
28
36
  * The `ngSanitize` module provides functionality to sanitize HTML.
29
37
  *
30
- *
31
- * <div doc-module-components="ngSanitize"></div>
32
- *
33
38
  * See {@link ngSanitize.$sanitize `$sanitize`} for usage.
34
39
  */
35
40
 
@@ -42,12 +47,11 @@ var $sanitizeMinErr = angular.$$minErr('$sanitize');
42
47
  * Sanitizes an html string by stripping all potentially dangerous tokens.
43
48
  *
44
49
  * The input is sanitized by parsing the HTML into tokens. All safe tokens (from a whitelist) are
45
- * then serialized back to properly escaped html string. This means that no unsafe input can make
50
+ * then serialized back to a properly escaped HTML string. This means that no unsafe input can make
46
51
  * it into the returned string.
47
52
  *
48
53
  * The whitelist for URL sanitization of attribute values is configured using the functions
49
- * `aHrefSanitizationWhitelist` and `imgSrcSanitizationWhitelist` of {@link ng.$compileProvider
50
- * `$compileProvider`}.
54
+ * `aHrefSanitizationWhitelist` and `imgSrcSanitizationWhitelist` of {@link $compileProvider}.
51
55
  *
52
56
  * The input may also contain SVG markup if this is enabled via {@link $sanitizeProvider}.
53
57
  *
@@ -55,7 +59,7 @@ var $sanitizeMinErr = angular.$$minErr('$sanitize');
55
59
  * @returns {string} Sanitized HTML.
56
60
  *
57
61
  * @example
58
- <example module="sanitizeExample" deps="angular-sanitize.js">
62
+ <example module="sanitizeExample" deps="angular-sanitize.js" name="sanitize-service">
59
63
  <file name="index.html">
60
64
  <script>
61
65
  angular.module('sanitizeExample', ['ngSanitize'])
@@ -104,19 +108,19 @@ var $sanitizeMinErr = angular.$$minErr('$sanitize');
104
108
  </file>
105
109
  <file name="protractor.js" type="protractor">
106
110
  it('should sanitize the html snippet by default', function() {
107
- expect(element(by.css('#bind-html-with-sanitize div')).getInnerHtml()).
111
+ expect(element(by.css('#bind-html-with-sanitize div')).getAttribute('innerHTML')).
108
112
  toBe('<p>an html\n<em>click here</em>\nsnippet</p>');
109
113
  });
110
114
 
111
115
  it('should inline raw snippet if bound to a trusted value', function() {
112
- expect(element(by.css('#bind-html-with-trust div')).getInnerHtml()).
116
+ expect(element(by.css('#bind-html-with-trust div')).getAttribute('innerHTML')).
113
117
  toBe("<p style=\"color:blue\">an html\n" +
114
118
  "<em onmouseover=\"this.textContent='PWN3D!'\">click here</em>\n" +
115
119
  "snippet</p>");
116
120
  });
117
121
 
118
122
  it('should escape snippet without any filter', function() {
119
- expect(element(by.css('#bind-default div')).getInnerHtml()).
123
+ expect(element(by.css('#bind-default div')).getAttribute('innerHTML')).
120
124
  toBe("&lt;p style=\"color:blue\"&gt;an html\n" +
121
125
  "&lt;em onmouseover=\"this.textContent='PWN3D!'\"&gt;click here&lt;/em&gt;\n" +
122
126
  "snippet&lt;/p&gt;");
@@ -125,11 +129,11 @@ var $sanitizeMinErr = angular.$$minErr('$sanitize');
125
129
  it('should update', function() {
126
130
  element(by.model('snippet')).clear();
127
131
  element(by.model('snippet')).sendKeys('new <b onclick="alert(1)">text</b>');
128
- expect(element(by.css('#bind-html-with-sanitize div')).getInnerHtml()).
132
+ expect(element(by.css('#bind-html-with-sanitize div')).getAttribute('innerHTML')).
129
133
  toBe('new <b>text</b>');
130
- expect(element(by.css('#bind-html-with-trust div')).getInnerHtml()).toBe(
134
+ expect(element(by.css('#bind-html-with-trust div')).getAttribute('innerHTML')).toBe(
131
135
  'new <b onclick="alert(1)">text</b>');
132
- expect(element(by.css('#bind-default div')).getInnerHtml()).toBe(
136
+ expect(element(by.css('#bind-default div')).getAttribute('innerHTML')).toBe(
133
137
  "new &lt;b onclick=\"alert(1)\"&gt;text&lt;/b&gt;");
134
138
  });
135
139
  </file>
@@ -140,16 +144,19 @@ var $sanitizeMinErr = angular.$$minErr('$sanitize');
140
144
  /**
141
145
  * @ngdoc provider
142
146
  * @name $sanitizeProvider
147
+ * @this
143
148
  *
144
149
  * @description
145
150
  * Creates and configures {@link $sanitize} instance.
146
151
  */
147
152
  function $SanitizeProvider() {
153
+ var hasBeenInstantiated = false;
148
154
  var svgEnabled = false;
149
155
 
150
156
  this.$get = ['$$sanitizeUri', function($$sanitizeUri) {
157
+ hasBeenInstantiated = true;
151
158
  if (svgEnabled) {
152
- angular.extend(validElements, svgElements);
159
+ extend(validElements, svgElements);
153
160
  }
154
161
  return function(html) {
155
162
  var buf = [];
@@ -187,338 +194,524 @@ function $SanitizeProvider() {
187
194
  * </code></pre>
188
195
  * </div>
189
196
  *
190
- * @param {boolean=} regexp New regexp to whitelist urls with.
191
- * @returns {boolean|ng.$sanitizeProvider} Returns the currently configured value if called
197
+ * @param {boolean=} flag Enable or disable SVG support in the sanitizer.
198
+ * @returns {boolean|$sanitizeProvider} Returns the currently configured value if called
192
199
  * without an argument or self for chaining otherwise.
193
200
  */
194
201
  this.enableSvg = function(enableSvg) {
195
- if (angular.isDefined(enableSvg)) {
202
+ if (isDefined(enableSvg)) {
196
203
  svgEnabled = enableSvg;
197
204
  return this;
198
205
  } else {
199
206
  return svgEnabled;
200
207
  }
201
208
  };
202
- }
203
209
 
204
- function sanitizeText(chars) {
205
- var buf = [];
206
- var writer = htmlSanitizeWriter(buf, angular.noop);
207
- writer.chars(chars);
208
- return buf.join('');
209
- }
210
210
 
211
+ /**
212
+ * @ngdoc method
213
+ * @name $sanitizeProvider#addValidElements
214
+ * @kind function
215
+ *
216
+ * @description
217
+ * Extends the built-in lists of valid HTML/SVG elements, i.e. elements that are considered safe
218
+ * and are not stripped off during sanitization. You can extend the following lists of elements:
219
+ *
220
+ * - `htmlElements`: A list of elements (tag names) to extend the current list of safe HTML
221
+ * elements. HTML elements considered safe will not be removed during sanitization. All other
222
+ * elements will be stripped off.
223
+ *
224
+ * - `htmlVoidElements`: This is similar to `htmlElements`, but marks the elements as
225
+ * "void elements" (similar to HTML
226
+ * [void elements](https://rawgit.com/w3c/html/html5.1-2/single-page.html#void-elements)). These
227
+ * elements have no end tag and cannot have content.
228
+ *
229
+ * - `svgElements`: This is similar to `htmlElements`, but for SVG elements. This list is only
230
+ * taken into account if SVG is {@link ngSanitize.$sanitizeProvider#enableSvg enabled} for
231
+ * `$sanitize`.
232
+ *
233
+ * <div class="alert alert-info">
234
+ * This method must be called during the {@link angular.Module#config config} phase. Once the
235
+ * `$sanitize` service has been instantiated, this method has no effect.
236
+ * </div>
237
+ *
238
+ * <div class="alert alert-warning">
239
+ * Keep in mind that extending the built-in lists of elements may expose your app to XSS or
240
+ * other vulnerabilities. Be very mindful of the elements you add.
241
+ * </div>
242
+ *
243
+ * @param {Array<String>|Object} elements - A list of valid HTML elements or an object with one or
244
+ * more of the following properties:
245
+ * - **htmlElements** - `{Array<String>}` - A list of elements to extend the current list of
246
+ * HTML elements.
247
+ * - **htmlVoidElements** - `{Array<String>}` - A list of elements to extend the current list of
248
+ * void HTML elements; i.e. elements that do not have an end tag.
249
+ * - **svgElements** - `{Array<String>}` - A list of elements to extend the current list of SVG
250
+ * elements. The list of SVG elements is only taken into account if SVG is
251
+ * {@link ngSanitize.$sanitizeProvider#enableSvg enabled} for `$sanitize`.
252
+ *
253
+ * Passing an array (`[...]`) is equivalent to passing `{htmlElements: [...]}`.
254
+ *
255
+ * @return {$sanitizeProvider} Returns self for chaining.
256
+ */
257
+ this.addValidElements = function(elements) {
258
+ if (!hasBeenInstantiated) {
259
+ if (isArray(elements)) {
260
+ elements = {htmlElements: elements};
261
+ }
262
+
263
+ addElementsTo(svgElements, elements.svgElements);
264
+ addElementsTo(voidElements, elements.htmlVoidElements);
265
+ addElementsTo(validElements, elements.htmlVoidElements);
266
+ addElementsTo(validElements, elements.htmlElements);
267
+ }
211
268
 
212
- // Regular Expressions for parsing tags and attributes
213
- var SURROGATE_PAIR_REGEXP = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g,
214
- // Match everything outside of normal chars and " (quote character)
215
- NON_ALPHANUMERIC_REGEXP = /([^\#-~ |!])/g;
216
-
217
-
218
- // Good source of info about elements and attributes
219
- // http://dev.w3.org/html5/spec/Overview.html#semantics
220
- // http://simon.html5.org/html-elements
221
-
222
- // Safe Void Elements - HTML5
223
- // http://dev.w3.org/html5/spec/Overview.html#void-elements
224
- var voidElements = toMap("area,br,col,hr,img,wbr");
225
-
226
- // Elements that you can, intentionally, leave open (and which close themselves)
227
- // http://dev.w3.org/html5/spec/Overview.html#optional-tags
228
- var optionalEndTagBlockElements = toMap("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"),
229
- optionalEndTagInlineElements = toMap("rp,rt"),
230
- optionalEndTagElements = angular.extend({},
231
- optionalEndTagInlineElements,
232
- optionalEndTagBlockElements);
233
-
234
- // Safe Block Elements - HTML5
235
- var blockElements = angular.extend({}, optionalEndTagBlockElements, toMap("address,article," +
236
- "aside,blockquote,caption,center,del,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5," +
237
- "h6,header,hgroup,hr,ins,map,menu,nav,ol,pre,section,table,ul"));
238
-
239
- // Inline Elements - HTML5
240
- var inlineElements = angular.extend({}, optionalEndTagInlineElements, toMap("a,abbr,acronym,b," +
241
- "bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,q,ruby,rp,rt,s," +
242
- "samp,small,span,strike,strong,sub,sup,time,tt,u,var"));
243
-
244
- // SVG Elements
245
- // https://wiki.whatwg.org/wiki/Sanitization_rules#svg_Elements
246
- // Note: the elements animate,animateColor,animateMotion,animateTransform,set are intentionally omitted.
247
- // They can potentially allow for arbitrary javascript to be executed. See #11290
248
- var svgElements = toMap("circle,defs,desc,ellipse,font-face,font-face-name,font-face-src,g,glyph," +
249
- "hkern,image,linearGradient,line,marker,metadata,missing-glyph,mpath,path,polygon,polyline," +
250
- "radialGradient,rect,stop,svg,switch,text,title,tspan");
251
-
252
- // Blocked Elements (will be stripped)
253
- var blockedElements = toMap("script,style");
254
-
255
- var validElements = angular.extend({},
256
- voidElements,
257
- blockElements,
258
- inlineElements,
259
- optionalEndTagElements);
260
-
261
- //Attributes that have href and hence need to be sanitized
262
- var uriAttrs = toMap("background,cite,href,longdesc,src,xlink:href");
263
-
264
- var htmlAttrs = toMap('abbr,align,alt,axis,bgcolor,border,cellpadding,cellspacing,class,clear,' +
265
- 'color,cols,colspan,compact,coords,dir,face,headers,height,hreflang,hspace,' +
266
- 'ismap,lang,language,nohref,nowrap,rel,rev,rows,rowspan,rules,' +
267
- 'scope,scrolling,shape,size,span,start,summary,tabindex,target,title,type,' +
268
- 'valign,value,vspace,width');
269
-
270
- // SVG attributes (without "id" and "name" attributes)
271
- // https://wiki.whatwg.org/wiki/Sanitization_rules#svg_Attributes
272
- var svgAttrs = toMap('accent-height,accumulate,additive,alphabetic,arabic-form,ascent,' +
273
- 'baseProfile,bbox,begin,by,calcMode,cap-height,class,color,color-rendering,content,' +
274
- 'cx,cy,d,dx,dy,descent,display,dur,end,fill,fill-rule,font-family,font-size,font-stretch,' +
275
- 'font-style,font-variant,font-weight,from,fx,fy,g1,g2,glyph-name,gradientUnits,hanging,' +
276
- 'height,horiz-adv-x,horiz-origin-x,ideographic,k,keyPoints,keySplines,keyTimes,lang,' +
277
- 'marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mathematical,' +
278
- 'max,min,offset,opacity,orient,origin,overline-position,overline-thickness,panose-1,' +
279
- 'path,pathLength,points,preserveAspectRatio,r,refX,refY,repeatCount,repeatDur,' +
280
- 'requiredExtensions,requiredFeatures,restart,rotate,rx,ry,slope,stemh,stemv,stop-color,' +
281
- 'stop-opacity,strikethrough-position,strikethrough-thickness,stroke,stroke-dasharray,' +
282
- 'stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,' +
283
- 'stroke-width,systemLanguage,target,text-anchor,to,transform,type,u1,u2,underline-position,' +
284
- 'underline-thickness,unicode,unicode-range,units-per-em,values,version,viewBox,visibility,' +
285
- 'width,widths,x,x-height,x1,x2,xlink:actuate,xlink:arcrole,xlink:role,xlink:show,xlink:title,' +
286
- 'xlink:type,xml:base,xml:lang,xml:space,xmlns,xmlns:xlink,y,y1,y2,zoomAndPan', true);
287
-
288
- var validAttrs = angular.extend({},
289
- uriAttrs,
290
- svgAttrs,
291
- htmlAttrs);
292
-
293
- function toMap(str, lowercaseKeys) {
294
- var obj = {}, items = str.split(','), i;
295
- for (i = 0; i < items.length; i++) {
296
- obj[lowercaseKeys ? angular.lowercase(items[i]) : items[i]] = true;
297
- }
298
- return obj;
299
- }
269
+ return this;
270
+ };
300
271
 
301
- var inertBodyElement;
302
- (function(window) {
303
- var doc;
304
- if (window.document && window.document.implementation) {
305
- doc = window.document.implementation.createHTMLDocument("inert");
306
- } else {
307
- throw $sanitizeMinErr('noinert', "Can't create an inert html document");
272
+
273
+ /**
274
+ * @ngdoc method
275
+ * @name $sanitizeProvider#addValidAttrs
276
+ * @kind function
277
+ *
278
+ * @description
279
+ * Extends the built-in list of valid attributes, i.e. attributes that are considered safe and are
280
+ * not stripped off during sanitization.
281
+ *
282
+ * **Note**:
283
+ * The new attributes will not be treated as URI attributes, which means their values will not be
284
+ * sanitized as URIs using `$compileProvider`'s
285
+ * {@link ng.$compileProvider#aHrefSanitizationWhitelist aHrefSanitizationWhitelist} and
286
+ * {@link ng.$compileProvider#imgSrcSanitizationWhitelist imgSrcSanitizationWhitelist}.
287
+ *
288
+ * <div class="alert alert-info">
289
+ * This method must be called during the {@link angular.Module#config config} phase. Once the
290
+ * `$sanitize` service has been instantiated, this method has no effect.
291
+ * </div>
292
+ *
293
+ * <div class="alert alert-warning">
294
+ * Keep in mind that extending the built-in list of attributes may expose your app to XSS or
295
+ * other vulnerabilities. Be very mindful of the attributes you add.
296
+ * </div>
297
+ *
298
+ * @param {Array<String>} attrs - A list of valid attributes.
299
+ *
300
+ * @returns {$sanitizeProvider} Returns self for chaining.
301
+ */
302
+ this.addValidAttrs = function(attrs) {
303
+ if (!hasBeenInstantiated) {
304
+ extend(validAttrs, arrayToMap(attrs, true));
305
+ }
306
+ return this;
307
+ };
308
+
309
+ //////////////////////////////////////////////////////////////////////////////////////////////////
310
+ // Private stuff
311
+ //////////////////////////////////////////////////////////////////////////////////////////////////
312
+
313
+ bind = angular.bind;
314
+ extend = angular.extend;
315
+ forEach = angular.forEach;
316
+ isArray = angular.isArray;
317
+ isDefined = angular.isDefined;
318
+ lowercase = angular.$$lowercase;
319
+ noop = angular.noop;
320
+
321
+ htmlParser = htmlParserImpl;
322
+ htmlSanitizeWriter = htmlSanitizeWriterImpl;
323
+
324
+ nodeContains = window.Node.prototype.contains || /** @this */ function(arg) {
325
+ // eslint-disable-next-line no-bitwise
326
+ return !!(this.compareDocumentPosition(arg) & 16);
327
+ };
328
+
329
+ // Regular Expressions for parsing tags and attributes
330
+ var SURROGATE_PAIR_REGEXP = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g,
331
+ // Match everything outside of normal chars and " (quote character)
332
+ NON_ALPHANUMERIC_REGEXP = /([^#-~ |!])/g;
333
+
334
+
335
+ // Good source of info about elements and attributes
336
+ // http://dev.w3.org/html5/spec/Overview.html#semantics
337
+ // http://simon.html5.org/html-elements
338
+
339
+ // Safe Void Elements - HTML5
340
+ // http://dev.w3.org/html5/spec/Overview.html#void-elements
341
+ var voidElements = stringToMap('area,br,col,hr,img,wbr');
342
+
343
+ // Elements that you can, intentionally, leave open (and which close themselves)
344
+ // http://dev.w3.org/html5/spec/Overview.html#optional-tags
345
+ var optionalEndTagBlockElements = stringToMap('colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr'),
346
+ optionalEndTagInlineElements = stringToMap('rp,rt'),
347
+ optionalEndTagElements = extend({},
348
+ optionalEndTagInlineElements,
349
+ optionalEndTagBlockElements);
350
+
351
+ // Safe Block Elements - HTML5
352
+ var blockElements = extend({}, optionalEndTagBlockElements, stringToMap('address,article,' +
353
+ 'aside,blockquote,caption,center,del,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,' +
354
+ 'h6,header,hgroup,hr,ins,map,menu,nav,ol,pre,section,table,ul'));
355
+
356
+ // Inline Elements - HTML5
357
+ var inlineElements = extend({}, optionalEndTagInlineElements, stringToMap('a,abbr,acronym,b,' +
358
+ 'bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,q,ruby,rp,rt,s,' +
359
+ 'samp,small,span,strike,strong,sub,sup,time,tt,u,var'));
360
+
361
+ // SVG Elements
362
+ // https://wiki.whatwg.org/wiki/Sanitization_rules#svg_Elements
363
+ // Note: the elements animate,animateColor,animateMotion,animateTransform,set are intentionally omitted.
364
+ // They can potentially allow for arbitrary javascript to be executed. See #11290
365
+ var svgElements = stringToMap('circle,defs,desc,ellipse,font-face,font-face-name,font-face-src,g,glyph,' +
366
+ 'hkern,image,linearGradient,line,marker,metadata,missing-glyph,mpath,path,polygon,polyline,' +
367
+ 'radialGradient,rect,stop,svg,switch,text,title,tspan');
368
+
369
+ // Blocked Elements (will be stripped)
370
+ var blockedElements = stringToMap('script,style');
371
+
372
+ var validElements = extend({},
373
+ voidElements,
374
+ blockElements,
375
+ inlineElements,
376
+ optionalEndTagElements);
377
+
378
+ //Attributes that have href and hence need to be sanitized
379
+ var uriAttrs = stringToMap('background,cite,href,longdesc,src,xlink:href,xml:base');
380
+
381
+ var htmlAttrs = stringToMap('abbr,align,alt,axis,bgcolor,border,cellpadding,cellspacing,class,clear,' +
382
+ 'color,cols,colspan,compact,coords,dir,face,headers,height,hreflang,hspace,' +
383
+ 'ismap,lang,language,nohref,nowrap,rel,rev,rows,rowspan,rules,' +
384
+ 'scope,scrolling,shape,size,span,start,summary,tabindex,target,title,type,' +
385
+ 'valign,value,vspace,width');
386
+
387
+ // SVG attributes (without "id" and "name" attributes)
388
+ // https://wiki.whatwg.org/wiki/Sanitization_rules#svg_Attributes
389
+ var svgAttrs = stringToMap('accent-height,accumulate,additive,alphabetic,arabic-form,ascent,' +
390
+ 'baseProfile,bbox,begin,by,calcMode,cap-height,class,color,color-rendering,content,' +
391
+ 'cx,cy,d,dx,dy,descent,display,dur,end,fill,fill-rule,font-family,font-size,font-stretch,' +
392
+ 'font-style,font-variant,font-weight,from,fx,fy,g1,g2,glyph-name,gradientUnits,hanging,' +
393
+ 'height,horiz-adv-x,horiz-origin-x,ideographic,k,keyPoints,keySplines,keyTimes,lang,' +
394
+ 'marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mathematical,' +
395
+ 'max,min,offset,opacity,orient,origin,overline-position,overline-thickness,panose-1,' +
396
+ 'path,pathLength,points,preserveAspectRatio,r,refX,refY,repeatCount,repeatDur,' +
397
+ 'requiredExtensions,requiredFeatures,restart,rotate,rx,ry,slope,stemh,stemv,stop-color,' +
398
+ 'stop-opacity,strikethrough-position,strikethrough-thickness,stroke,stroke-dasharray,' +
399
+ 'stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,' +
400
+ 'stroke-width,systemLanguage,target,text-anchor,to,transform,type,u1,u2,underline-position,' +
401
+ 'underline-thickness,unicode,unicode-range,units-per-em,values,version,viewBox,visibility,' +
402
+ 'width,widths,x,x-height,x1,x2,xlink:actuate,xlink:arcrole,xlink:role,xlink:show,xlink:title,' +
403
+ 'xlink:type,xml:base,xml:lang,xml:space,xmlns,xmlns:xlink,y,y1,y2,zoomAndPan', true);
404
+
405
+ var validAttrs = extend({},
406
+ uriAttrs,
407
+ svgAttrs,
408
+ htmlAttrs);
409
+
410
+ function stringToMap(str, lowercaseKeys) {
411
+ return arrayToMap(str.split(','), lowercaseKeys);
308
412
  }
309
- var docElement = doc.documentElement || doc.getDocumentElement();
310
- var bodyElements = docElement.getElementsByTagName('body');
311
-
312
- // usually there should be only one body element in the document, but IE doesn't have any, so we need to create one
313
- if (bodyElements.length === 1) {
314
- inertBodyElement = bodyElements[0];
315
- } else {
316
- var html = doc.createElement('html');
317
- inertBodyElement = doc.createElement('body');
318
- html.appendChild(inertBodyElement);
319
- doc.appendChild(html);
413
+
414
+ function arrayToMap(items, lowercaseKeys) {
415
+ var obj = {}, i;
416
+ for (i = 0; i < items.length; i++) {
417
+ obj[lowercaseKeys ? lowercase(items[i]) : items[i]] = true;
418
+ }
419
+ return obj;
320
420
  }
321
- })(window);
322
421
 
323
- /**
324
- * @example
325
- * htmlParser(htmlString, {
326
- * start: function(tag, attrs) {},
327
- * end: function(tag) {},
328
- * chars: function(text) {},
329
- * comment: function(text) {}
330
- * });
331
- *
332
- * @param {string} html string
333
- * @param {object} handler
334
- */
335
- function htmlParser(html, handler) {
336
- if (html === null || html === undefined) {
337
- html = '';
338
- } else if (typeof html !== 'string') {
339
- html = '' + html;
422
+ function addElementsTo(elementsMap, newElements) {
423
+ if (newElements && newElements.length) {
424
+ extend(elementsMap, arrayToMap(newElements));
425
+ }
340
426
  }
341
- inertBodyElement.innerHTML = html;
342
427
 
343
- //mXSS protection
344
- var mXSSAttempts = 5;
345
- do {
346
- if (mXSSAttempts === 0) {
347
- throw $sanitizeMinErr('uinput', "Failed to sanitize html because the input is unstable");
428
+ /**
429
+ * Create an inert document that contains the dirty HTML that needs sanitizing
430
+ * Depending upon browser support we use one of three strategies for doing this.
431
+ * Support: Safari 10.x -> XHR strategy
432
+ * Support: Firefox -> DomParser strategy
433
+ */
434
+ var getInertBodyElement /* function(html: string): HTMLBodyElement */ = (function(window, document) {
435
+ var inertDocument;
436
+ if (document && document.implementation) {
437
+ inertDocument = document.implementation.createHTMLDocument('inert');
438
+ } else {
439
+ throw $sanitizeMinErr('noinert', 'Can\'t create an inert html document');
348
440
  }
349
- mXSSAttempts--;
441
+ var inertBodyElement = (inertDocument.documentElement || inertDocument.getDocumentElement()).querySelector('body');
350
442
 
351
- // strip custom-namespaced attributes on IE<=11
352
- if (window.document.documentMode) {
353
- stripCustomNsAttrs(inertBodyElement);
443
+ // Check for the Safari 10.1 bug - which allows JS to run inside the SVG G element
444
+ inertBodyElement.innerHTML = '<svg><g onload="this.parentNode.remove()"></g></svg>';
445
+ if (!inertBodyElement.querySelector('svg')) {
446
+ return getInertBodyElement_XHR;
447
+ } else {
448
+ // Check for the Firefox bug - which prevents the inner img JS from being sanitized
449
+ inertBodyElement.innerHTML = '<svg><p><style><img src="</style><img src=x onerror=alert(1)//">';
450
+ if (inertBodyElement.querySelector('svg img')) {
451
+ return getInertBodyElement_DOMParser;
452
+ } else {
453
+ return getInertBodyElement_InertDocument;
454
+ }
354
455
  }
355
- html = inertBodyElement.innerHTML; //trigger mXSS
356
- inertBodyElement.innerHTML = html;
357
- } while (html !== inertBodyElement.innerHTML);
358
-
359
- var node = inertBodyElement.firstChild;
360
- while (node) {
361
- switch (node.nodeType) {
362
- case 1: // ELEMENT_NODE
363
- handler.start(node.nodeName.toLowerCase(), attrToMap(node.attributes));
364
- break;
365
- case 3: // TEXT NODE
366
- handler.chars(node.textContent);
367
- break;
456
+
457
+ function getInertBodyElement_XHR(html) {
458
+ // We add this dummy element to ensure that the rest of the content is parsed as expected
459
+ // e.g. leading whitespace is maintained and tags like `<meta>` do not get hoisted to the `<head>` tag.
460
+ html = '<remove></remove>' + html;
461
+ try {
462
+ html = encodeURI(html);
463
+ } catch (e) {
464
+ return undefined;
465
+ }
466
+ var xhr = new window.XMLHttpRequest();
467
+ xhr.responseType = 'document';
468
+ xhr.open('GET', 'data:text/html;charset=utf-8,' + html, false);
469
+ xhr.send(null);
470
+ var body = xhr.response.body;
471
+ body.firstChild.remove();
472
+ return body;
368
473
  }
369
474
 
370
- var nextNode;
371
- if (!(nextNode = node.firstChild)) {
372
- if (node.nodeType == 1) {
373
- handler.end(node.nodeName.toLowerCase());
475
+ function getInertBodyElement_DOMParser(html) {
476
+ // We add this dummy element to ensure that the rest of the content is parsed as expected
477
+ // e.g. leading whitespace is maintained and tags like `<meta>` do not get hoisted to the `<head>` tag.
478
+ html = '<remove></remove>' + html;
479
+ try {
480
+ var body = new window.DOMParser().parseFromString(html, 'text/html').body;
481
+ body.firstChild.remove();
482
+ return body;
483
+ } catch (e) {
484
+ return undefined;
374
485
  }
375
- nextNode = node.nextSibling;
376
- if (!nextNode) {
377
- while (nextNode == null) {
378
- node = node.parentNode;
379
- if (node === inertBodyElement) break;
380
- nextNode = node.nextSibling;
381
- if (node.nodeType == 1) {
382
- handler.end(node.nodeName.toLowerCase());
486
+ }
487
+
488
+ function getInertBodyElement_InertDocument(html) {
489
+ inertBodyElement.innerHTML = html;
490
+
491
+ // Support: IE 9-11 only
492
+ // strip custom-namespaced attributes on IE<=11
493
+ if (document.documentMode) {
494
+ stripCustomNsAttrs(inertBodyElement);
495
+ }
496
+
497
+ return inertBodyElement;
498
+ }
499
+ })(window, window.document);
500
+
501
+ /**
502
+ * @example
503
+ * htmlParser(htmlString, {
504
+ * start: function(tag, attrs) {},
505
+ * end: function(tag) {},
506
+ * chars: function(text) {},
507
+ * comment: function(text) {}
508
+ * });
509
+ *
510
+ * @param {string} html string
511
+ * @param {object} handler
512
+ */
513
+ function htmlParserImpl(html, handler) {
514
+ if (html === null || html === undefined) {
515
+ html = '';
516
+ } else if (typeof html !== 'string') {
517
+ html = '' + html;
518
+ }
519
+
520
+ var inertBodyElement = getInertBodyElement(html);
521
+ if (!inertBodyElement) return '';
522
+
523
+ //mXSS protection
524
+ var mXSSAttempts = 5;
525
+ do {
526
+ if (mXSSAttempts === 0) {
527
+ throw $sanitizeMinErr('uinput', 'Failed to sanitize html because the input is unstable');
528
+ }
529
+ mXSSAttempts--;
530
+
531
+ // trigger mXSS if it is going to happen by reading and writing the innerHTML
532
+ html = inertBodyElement.innerHTML;
533
+ inertBodyElement = getInertBodyElement(html);
534
+ } while (html !== inertBodyElement.innerHTML);
535
+
536
+ var node = inertBodyElement.firstChild;
537
+ while (node) {
538
+ switch (node.nodeType) {
539
+ case 1: // ELEMENT_NODE
540
+ handler.start(node.nodeName.toLowerCase(), attrToMap(node.attributes));
541
+ break;
542
+ case 3: // TEXT NODE
543
+ handler.chars(node.textContent);
544
+ break;
545
+ }
546
+
547
+ var nextNode;
548
+ if (!(nextNode = node.firstChild)) {
549
+ if (node.nodeType === 1) {
550
+ handler.end(node.nodeName.toLowerCase());
551
+ }
552
+ nextNode = getNonDescendant('nextSibling', node);
553
+ if (!nextNode) {
554
+ while (nextNode == null) {
555
+ node = getNonDescendant('parentNode', node);
556
+ if (node === inertBodyElement) break;
557
+ nextNode = getNonDescendant('nextSibling', node);
558
+ if (node.nodeType === 1) {
559
+ handler.end(node.nodeName.toLowerCase());
560
+ }
383
561
  }
384
562
  }
385
563
  }
564
+ node = nextNode;
386
565
  }
387
- node = nextNode;
388
- }
389
566
 
390
- while (node = inertBodyElement.firstChild) {
391
- inertBodyElement.removeChild(node);
567
+ while ((node = inertBodyElement.firstChild)) {
568
+ inertBodyElement.removeChild(node);
569
+ }
392
570
  }
393
- }
394
571
 
395
- function attrToMap(attrs) {
396
- var map = {};
397
- for (var i = 0, ii = attrs.length; i < ii; i++) {
398
- var attr = attrs[i];
399
- map[attr.name] = attr.value;
572
+ function attrToMap(attrs) {
573
+ var map = {};
574
+ for (var i = 0, ii = attrs.length; i < ii; i++) {
575
+ var attr = attrs[i];
576
+ map[attr.name] = attr.value;
577
+ }
578
+ return map;
400
579
  }
401
- return map;
402
- }
403
580
 
404
581
 
405
- /**
406
- * Escapes all potentially dangerous characters, so that the
407
- * resulting string can be safely inserted into attribute or
408
- * element text.
409
- * @param value
410
- * @returns {string} escaped text
411
- */
412
- function encodeEntities(value) {
413
- return value.
414
- replace(/&/g, '&amp;').
415
- replace(SURROGATE_PAIR_REGEXP, function(value) {
416
- var hi = value.charCodeAt(0);
417
- var low = value.charCodeAt(1);
418
- return '&#' + (((hi - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000) + ';';
419
- }).
420
- replace(NON_ALPHANUMERIC_REGEXP, function(value) {
421
- return '&#' + value.charCodeAt(0) + ';';
422
- }).
423
- replace(/</g, '&lt;').
424
- replace(/>/g, '&gt;');
425
- }
582
+ /**
583
+ * Escapes all potentially dangerous characters, so that the
584
+ * resulting string can be safely inserted into attribute or
585
+ * element text.
586
+ * @param value
587
+ * @returns {string} escaped text
588
+ */
589
+ function encodeEntities(value) {
590
+ return value.
591
+ replace(/&/g, '&amp;').
592
+ replace(SURROGATE_PAIR_REGEXP, function(value) {
593
+ var hi = value.charCodeAt(0);
594
+ var low = value.charCodeAt(1);
595
+ return '&#' + (((hi - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000) + ';';
596
+ }).
597
+ replace(NON_ALPHANUMERIC_REGEXP, function(value) {
598
+ return '&#' + value.charCodeAt(0) + ';';
599
+ }).
600
+ replace(/</g, '&lt;').
601
+ replace(/>/g, '&gt;');
602
+ }
426
603
 
427
- /**
428
- * create an HTML/XML writer which writes to buffer
429
- * @param {Array} buf use buf.join('') to get out sanitized html string
430
- * @returns {object} in the form of {
431
- * start: function(tag, attrs) {},
432
- * end: function(tag) {},
433
- * chars: function(text) {},
434
- * comment: function(text) {}
435
- * }
436
- */
437
- function htmlSanitizeWriter(buf, uriValidator) {
438
- var ignoreCurrentElement = false;
439
- var out = angular.bind(buf, buf.push);
440
- return {
441
- start: function(tag, attrs) {
442
- tag = angular.lowercase(tag);
443
- if (!ignoreCurrentElement && blockedElements[tag]) {
444
- ignoreCurrentElement = tag;
604
+ /**
605
+ * create an HTML/XML writer which writes to buffer
606
+ * @param {Array} buf use buf.join('') to get out sanitized html string
607
+ * @returns {object} in the form of {
608
+ * start: function(tag, attrs) {},
609
+ * end: function(tag) {},
610
+ * chars: function(text) {},
611
+ * comment: function(text) {}
612
+ * }
613
+ */
614
+ function htmlSanitizeWriterImpl(buf, uriValidator) {
615
+ var ignoreCurrentElement = false;
616
+ var out = bind(buf, buf.push);
617
+ return {
618
+ start: function(tag, attrs) {
619
+ tag = lowercase(tag);
620
+ if (!ignoreCurrentElement && blockedElements[tag]) {
621
+ ignoreCurrentElement = tag;
622
+ }
623
+ if (!ignoreCurrentElement && validElements[tag] === true) {
624
+ out('<');
625
+ out(tag);
626
+ forEach(attrs, function(value, key) {
627
+ var lkey = lowercase(key);
628
+ var isImage = (tag === 'img' && lkey === 'src') || (lkey === 'background');
629
+ if (validAttrs[lkey] === true &&
630
+ (uriAttrs[lkey] !== true || uriValidator(value, isImage))) {
631
+ out(' ');
632
+ out(key);
633
+ out('="');
634
+ out(encodeEntities(value));
635
+ out('"');
636
+ }
637
+ });
638
+ out('>');
639
+ }
640
+ },
641
+ end: function(tag) {
642
+ tag = lowercase(tag);
643
+ if (!ignoreCurrentElement && validElements[tag] === true && voidElements[tag] !== true) {
644
+ out('</');
645
+ out(tag);
646
+ out('>');
647
+ }
648
+ // eslint-disable-next-line eqeqeq
649
+ if (tag == ignoreCurrentElement) {
650
+ ignoreCurrentElement = false;
651
+ }
652
+ },
653
+ chars: function(chars) {
654
+ if (!ignoreCurrentElement) {
655
+ out(encodeEntities(chars));
656
+ }
445
657
  }
446
- if (!ignoreCurrentElement && validElements[tag] === true) {
447
- out('<');
448
- out(tag);
449
- angular.forEach(attrs, function(value, key) {
450
- var lkey=angular.lowercase(key);
451
- var isImage = (tag === 'img' && lkey === 'src') || (lkey === 'background');
452
- if (validAttrs[lkey] === true &&
453
- (uriAttrs[lkey] !== true || uriValidator(value, isImage))) {
454
- out(' ');
455
- out(key);
456
- out('="');
457
- out(encodeEntities(value));
458
- out('"');
658
+ };
659
+ }
660
+
661
+
662
+ /**
663
+ * When IE9-11 comes across an unknown namespaced attribute e.g. 'xlink:foo' it adds 'xmlns:ns1' attribute to declare
664
+ * ns1 namespace and prefixes the attribute with 'ns1' (e.g. 'ns1:xlink:foo'). This is undesirable since we don't want
665
+ * to allow any of these custom attributes. This method strips them all.
666
+ *
667
+ * @param node Root element to process
668
+ */
669
+ function stripCustomNsAttrs(node) {
670
+ while (node) {
671
+ if (node.nodeType === window.Node.ELEMENT_NODE) {
672
+ var attrs = node.attributes;
673
+ for (var i = 0, l = attrs.length; i < l; i++) {
674
+ var attrNode = attrs[i];
675
+ var attrName = attrNode.name.toLowerCase();
676
+ if (attrName === 'xmlns:ns1' || attrName.lastIndexOf('ns1:', 0) === 0) {
677
+ node.removeAttributeNode(attrNode);
678
+ i--;
679
+ l--;
459
680
  }
460
- });
461
- out('>');
462
- }
463
- },
464
- end: function(tag) {
465
- tag = angular.lowercase(tag);
466
- if (!ignoreCurrentElement && validElements[tag] === true && voidElements[tag] !== true) {
467
- out('</');
468
- out(tag);
469
- out('>');
470
- }
471
- if (tag == ignoreCurrentElement) {
472
- ignoreCurrentElement = false;
473
- }
474
- },
475
- chars: function(chars) {
476
- if (!ignoreCurrentElement) {
477
- out(encodeEntities(chars));
681
+ }
478
682
  }
479
- }
480
- };
481
- }
482
-
483
683
 
484
- /**
485
- * When IE9-11 comes across an unknown namespaced attribute e.g. 'xlink:foo' it adds 'xmlns:ns1' attribute to declare
486
- * ns1 namespace and prefixes the attribute with 'ns1' (e.g. 'ns1:xlink:foo'). This is undesirable since we don't want
487
- * to allow any of these custom attributes. This method strips them all.
488
- *
489
- * @param node Root element to process
490
- */
491
- function stripCustomNsAttrs(node) {
492
- if (node.nodeType === window.Node.ELEMENT_NODE) {
493
- var attrs = node.attributes;
494
- for (var i = 0, l = attrs.length; i < l; i++) {
495
- var attrNode = attrs[i];
496
- var attrName = attrNode.name.toLowerCase();
497
- if (attrName === 'xmlns:ns1' || attrName.indexOf('ns1:') === 0) {
498
- node.removeAttributeNode(attrNode);
499
- i--;
500
- l--;
684
+ var nextNode = node.firstChild;
685
+ if (nextNode) {
686
+ stripCustomNsAttrs(nextNode);
501
687
  }
502
- }
503
- }
504
688
 
505
- var nextNode = node.firstChild;
506
- if (nextNode) {
507
- stripCustomNsAttrs(nextNode);
689
+ node = getNonDescendant('nextSibling', node);
690
+ }
508
691
  }
509
692
 
510
- nextNode = node.nextSibling;
511
- if (nextNode) {
512
- stripCustomNsAttrs(nextNode);
693
+ function getNonDescendant(propName, node) {
694
+ // An element is clobbered if its `propName` property points to one of its descendants
695
+ var nextNode = node[propName];
696
+ if (nextNode && nodeContains.call(node, nextNode)) {
697
+ throw $sanitizeMinErr('elclob', 'Failed to sanitize html because the element is clobbered: {0}', node.outerHTML || node.outerText);
698
+ }
699
+ return nextNode;
513
700
  }
514
701
  }
515
702
 
703
+ function sanitizeText(chars) {
704
+ var buf = [];
705
+ var writer = htmlSanitizeWriter(buf, noop);
706
+ writer.chars(chars);
707
+ return buf.join('');
708
+ }
516
709
 
517
710
 
518
711
  // define ngSanitize module and register $sanitize service
519
- angular.module('ngSanitize', []).provider('$sanitize', $SanitizeProvider);
520
-
521
- /* global sanitizeText: false */
712
+ angular.module('ngSanitize', [])
713
+ .provider('$sanitize', $SanitizeProvider)
714
+ .info({ angularVersion: '1.7.9' });
522
715
 
523
716
  /**
524
717
  * @ngdoc filter
@@ -526,13 +719,13 @@ angular.module('ngSanitize', []).provider('$sanitize', $SanitizeProvider);
526
719
  * @kind function
527
720
  *
528
721
  * @description
529
- * Finds links in text input and turns them into html links. Supports `http/https/ftp/mailto` and
722
+ * Finds links in text input and turns them into html links. Supports `http/https/ftp/sftp/mailto` and
530
723
  * plain email address links.
531
724
  *
532
725
  * Requires the {@link ngSanitize `ngSanitize`} module to be installed.
533
726
  *
534
727
  * @param {string} text Input text.
535
- * @param {string} target Window (`_blank|_self|_parent|_top`) or named frame to open links in.
728
+ * @param {string} [target] Window (`_blank|_self|_parent|_top`) or named frame to open links in.
536
729
  * @param {object|function(url)} [attributes] Add custom attributes to the link element.
537
730
  *
538
731
  * Can be one of:
@@ -550,7 +743,7 @@ angular.module('ngSanitize', []).provider('$sanitize', $SanitizeProvider);
550
743
  <span ng-bind-html="linky_expression | linky"></span>
551
744
  *
552
745
  * @example
553
- <example module="linkyExample" deps="angular-sanitize.js">
746
+ <example module="linkyExample" deps="angular-sanitize.js" name="linky-filter">
554
747
  <file name="index.html">
555
748
  <div ng-controller="ExampleController">
556
749
  Snippet: <textarea ng-model="snippet" cols="60" rows="3"></textarea>
@@ -598,10 +791,10 @@ angular.module('ngSanitize', []).provider('$sanitize', $SanitizeProvider);
598
791
  angular.module('linkyExample', ['ngSanitize'])
599
792
  .controller('ExampleController', ['$scope', function($scope) {
600
793
  $scope.snippet =
601
- 'Pretty text with some links:\n'+
602
- 'http://angularjs.org/,\n'+
603
- 'mailto:us@somewhere.org,\n'+
604
- 'another@somewhere.org,\n'+
794
+ 'Pretty text with some links:\n' +
795
+ 'http://angularjs.org/,\n' +
796
+ 'mailto:us@somewhere.org,\n' +
797
+ 'another@somewhere.org,\n' +
605
798
  'and one more: ftp://127.0.0.1/.';
606
799
  $scope.snippetWithSingleURL = 'http://angularjs.org/';
607
800
  }]);
@@ -649,16 +842,24 @@ angular.module('ngSanitize', []).provider('$sanitize', $SanitizeProvider);
649
842
  */
650
843
  angular.module('ngSanitize').filter('linky', ['$sanitize', function($sanitize) {
651
844
  var LINKY_URL_REGEXP =
652
- /((ftp|https?):\/\/|(www\.)|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s.;,(){}<>"\u201d\u2019]/i,
845
+ /((s?ftp|https?):\/\/|(www\.)|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s.;,(){}<>"\u201d\u2019]/i,
653
846
  MAILTO_REGEXP = /^mailto:/i;
654
847
 
655
848
  var linkyMinErr = angular.$$minErr('linky');
849
+ var isDefined = angular.isDefined;
850
+ var isFunction = angular.isFunction;
851
+ var isObject = angular.isObject;
656
852
  var isString = angular.isString;
657
853
 
658
854
  return function(text, target, attributes) {
659
855
  if (text == null || text === '') return text;
660
856
  if (!isString(text)) throw linkyMinErr('notstring', 'Expected string but received: {0}', text);
661
857
 
858
+ var attributesFn =
859
+ isFunction(attributes) ? attributes :
860
+ isObject(attributes) ? function getAttributesObject() {return attributes;} :
861
+ function getEmptyAttributesObject() {return {};};
862
+
662
863
  var match;
663
864
  var raw = text;
664
865
  var html = [];
@@ -687,19 +888,14 @@ angular.module('ngSanitize').filter('linky', ['$sanitize', function($sanitize) {
687
888
  }
688
889
 
689
890
  function addLink(url, text) {
690
- var key;
891
+ var key, linkAttributes = attributesFn(url);
691
892
  html.push('<a ');
692
- if (angular.isFunction(attributes)) {
693
- attributes = attributes(url);
694
- }
695
- if (angular.isObject(attributes)) {
696
- for (key in attributes) {
697
- html.push(key + '="' + attributes[key] + '" ');
698
- }
699
- } else {
700
- attributes = {};
893
+
894
+ for (key in linkAttributes) {
895
+ html.push(key + '="' + linkAttributes[key] + '" ');
701
896
  }
702
- if (angular.isDefined(target) && !('target' in attributes)) {
897
+
898
+ if (isDefined(target) && !('target' in linkAttributes)) {
703
899
  html.push('target="',
704
900
  target,
705
901
  '" ');