simplecov 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (196) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +165 -57
  3. data/exe/simplecov +0 -3
  4. data/lib/minitest/simplecov_plugin.rb +12 -9
  5. data/lib/simplecov/atomic_file.rb +16 -19
  6. data/lib/simplecov/autostart.rb +5 -7
  7. data/lib/simplecov/baseline/parser.rb +58 -0
  8. data/lib/simplecov/baseline.rb +170 -0
  9. data/lib/simplecov/cli/affected/changed_files.rb +57 -0
  10. data/lib/simplecov/cli/affected/selection.rb +117 -0
  11. data/lib/simplecov/cli/affected.rb +148 -0
  12. data/lib/simplecov/cli/badge/svg.rb +70 -0
  13. data/lib/simplecov/cli/badge.rb +62 -0
  14. data/lib/simplecov/cli/clean.rb +23 -24
  15. data/lib/simplecov/cli/command_helpers.rb +55 -19
  16. data/lib/simplecov/cli/completions/scripts.rb +114 -0
  17. data/lib/simplecov/cli/completions.rb +83 -0
  18. data/lib/simplecov/cli/coverage.rb +25 -28
  19. data/lib/simplecov/cli/coverage_file.rb +58 -14
  20. data/lib/simplecov/cli/dead_code/output.rb +100 -0
  21. data/lib/simplecov/cli/dead_code.rb +139 -0
  22. data/lib/simplecov/cli/diff/output.rb +45 -0
  23. data/lib/simplecov/cli/diff.rb +35 -67
  24. data/lib/simplecov/cli/dotfile.rb +83 -38
  25. data/lib/simplecov/cli/git.rb +41 -0
  26. data/lib/simplecov/cli/history/output.rb +135 -0
  27. data/lib/simplecov/cli/history.rb +67 -0
  28. data/lib/simplecov/cli/merge.rb +34 -39
  29. data/lib/simplecov/cli/open.rb +12 -15
  30. data/lib/simplecov/cli/patch/changed_lines.rb +149 -0
  31. data/lib/simplecov/cli/patch/output.rb +135 -0
  32. data/lib/simplecov/cli/patch.rb +169 -0
  33. data/lib/simplecov/cli/ratchet/output.rb +44 -0
  34. data/lib/simplecov/cli/ratchet.rb +83 -0
  35. data/lib/simplecov/cli/report.rb +18 -24
  36. data/lib/simplecov/cli/run.rb +8 -9
  37. data/lib/simplecov/cli/serve/report_preparer.rb +7 -6
  38. data/lib/simplecov/cli/serve/static_file_handler.rb +62 -56
  39. data/lib/simplecov/cli/serve.rb +27 -24
  40. data/lib/simplecov/cli/show/annotator.rb +87 -0
  41. data/lib/simplecov/cli/show/sweep.rb +36 -0
  42. data/lib/simplecov/cli/show.rb +133 -0
  43. data/lib/simplecov/cli/status/facts.rb +87 -0
  44. data/lib/simplecov/cli/status.rb +93 -0
  45. data/lib/simplecov/cli/tests/redundancy.rb +78 -0
  46. data/lib/simplecov/cli/tests.rb +148 -0
  47. data/lib/simplecov/cli/uncovered/misses.rb +37 -0
  48. data/lib/simplecov/cli/uncovered.rb +70 -32
  49. data/lib/simplecov/cli/usage.rb +152 -0
  50. data/lib/simplecov/cli/watch/live_report.rb +73 -0
  51. data/lib/simplecov/cli/watch/narrator.rb +55 -0
  52. data/lib/simplecov/cli/watch/poller.rb +45 -0
  53. data/lib/simplecov/cli/watch/session.rb +134 -0
  54. data/lib/simplecov/cli/watch/test_plan.rb +43 -0
  55. data/lib/simplecov/cli/watch.rb +85 -0
  56. data/lib/simplecov/cli.rb +43 -92
  57. data/lib/simplecov/color.rb +21 -35
  58. data/lib/simplecov/combine/branches_combiner.rb +7 -31
  59. data/lib/simplecov/combine/coverage_accumulator.rb +49 -142
  60. data/lib/simplecov/combine/identity_interner.rb +10 -13
  61. data/lib/simplecov/combine/interned_counts.rb +7 -9
  62. data/lib/simplecov/combine/lines_combiner.rb +20 -44
  63. data/lib/simplecov/combine/methods_combiner.rb +9 -35
  64. data/lib/simplecov/combine/results_combiner.rb +4 -21
  65. data/lib/simplecov/combine.rb +0 -6
  66. data/lib/simplecov/command_guesser.rb +20 -34
  67. data/lib/simplecov/configuration/baseline.rb +31 -0
  68. data/lib/simplecov/configuration/coverage.rb +91 -79
  69. data/lib/simplecov/configuration/coverage_criteria.rb +43 -54
  70. data/lib/simplecov/configuration/deprecations.rb +21 -0
  71. data/lib/simplecov/configuration/eval_coverage.rb +6 -10
  72. data/lib/simplecov/configuration/filters.rb +40 -73
  73. data/lib/simplecov/configuration/formatting.rb +74 -83
  74. data/lib/simplecov/configuration/groups.rb +19 -13
  75. data/lib/simplecov/configuration/history.rb +44 -0
  76. data/lib/simplecov/configuration/ignored_entries.rb +31 -22
  77. data/lib/simplecov/configuration/merging.rb +94 -62
  78. data/lib/simplecov/configuration/missed_caps.rb +51 -0
  79. data/lib/simplecov/configuration/production.rb +23 -0
  80. data/lib/simplecov/configuration/test_tracking.rb +48 -0
  81. data/lib/simplecov/configuration/thresholds.rb +33 -62
  82. data/lib/simplecov/configuration/view_coverage.rb +38 -0
  83. data/lib/simplecov/configuration.rb +70 -76
  84. data/lib/simplecov/configuration_error.rb +5 -0
  85. data/lib/simplecov/context_map/union.rb +81 -0
  86. data/lib/simplecov/context_map.rb +187 -0
  87. data/lib/simplecov/coverage_json.rb +2 -5
  88. data/lib/simplecov/coverage_statistics.rb +14 -24
  89. data/lib/simplecov/coverage_violations.rb +157 -64
  90. data/lib/simplecov/current_run.rb +61 -0
  91. data/lib/simplecov/defaults.rb +4 -23
  92. data/lib/simplecov/deprecation.rb +45 -27
  93. data/lib/simplecov/directive.rb +46 -62
  94. data/lib/simplecov/exit_codes/baseline_check.rb +46 -0
  95. data/lib/simplecov/exit_codes/check.rb +17 -11
  96. data/lib/simplecov/exit_codes/exit_code_handling.rb +21 -8
  97. data/lib/simplecov/exit_codes/maximum_coverage_drop_check.rb +7 -10
  98. data/lib/simplecov/exit_codes/maximum_missed_check.rb +26 -0
  99. data/lib/simplecov/exit_codes/maximum_missed_per_file_check.rb +34 -0
  100. data/lib/simplecov/exit_codes/maximum_overall_coverage_check.rb +7 -12
  101. data/lib/simplecov/exit_codes/minimum_coverage_by_file_check.rb +11 -10
  102. data/lib/simplecov/exit_codes/minimum_coverage_by_group_check.rb +7 -9
  103. data/lib/simplecov/exit_codes/minimum_overall_coverage_check.rb +16 -17
  104. data/lib/simplecov/exit_codes.rb +17 -7
  105. data/lib/simplecov/exit_handling.rb +94 -59
  106. data/lib/simplecov/file_list.rb +20 -51
  107. data/lib/simplecov/filter.rb +43 -66
  108. data/lib/simplecov/formatter/base.rb +38 -51
  109. data/lib/simplecov/formatter/baseline_formatter.rb +98 -0
  110. data/lib/simplecov/formatter/coverage_json_writer.rb +29 -31
  111. data/lib/simplecov/formatter/html_formatter/public/index.html +17 -10
  112. data/lib/simplecov/formatter/html_formatter/viewer_data_validator.rb +74 -17
  113. data/lib/simplecov/formatter/html_formatter.rb +24 -41
  114. data/lib/simplecov/formatter/json_formatter/errors_formatter.rb +50 -16
  115. data/lib/simplecov/formatter/json_formatter/production_section_formatter.rb +48 -0
  116. data/lib/simplecov/formatter/json_formatter/result_hash_formatter.rb +43 -29
  117. data/lib/simplecov/formatter/json_formatter/source_file_formatter.rb +14 -10
  118. data/lib/simplecov/formatter/json_formatter.rb +7 -13
  119. data/lib/simplecov/formatter/multi_formatter.rb +5 -11
  120. data/lib/simplecov/formatter/simple_formatter.rb +2 -8
  121. data/lib/simplecov/formatter.rb +14 -10
  122. data/lib/simplecov/group_names.rb +13 -12
  123. data/lib/simplecov/history.rb +115 -0
  124. data/lib/simplecov/last_run.rb +6 -9
  125. data/lib/simplecov/lines_classifier.rb +31 -16
  126. data/lib/simplecov/load_global_config.rb +7 -7
  127. data/lib/simplecov/parallel_adapters/base.rb +13 -41
  128. data/lib/simplecov/parallel_adapters/generic.rb +7 -18
  129. data/lib/simplecov/parallel_adapters/parallel_tests.rb +21 -42
  130. data/lib/simplecov/parallel_adapters.rb +24 -53
  131. data/lib/simplecov/parallel_coordination.rb +39 -49
  132. data/lib/simplecov/parallel_result_merger/worker_payload.rb +33 -0
  133. data/lib/simplecov/parallel_result_merger.rb +67 -126
  134. data/lib/simplecov/process.rb +14 -32
  135. data/lib/simplecov/production/error.rb +11 -0
  136. data/lib/simplecov/production/file_sink.rb +130 -0
  137. data/lib/simplecov/production.rb +249 -0
  138. data/lib/simplecov/profiles/rails.rb +1 -12
  139. data/lib/simplecov/profiles/root_filter.rb +0 -4
  140. data/lib/simplecov/profiles/strict.rb +9 -19
  141. data/lib/simplecov/profiles.rb +11 -33
  142. data/lib/simplecov/report_deferral.rb +11 -15
  143. data/lib/simplecov/report_stamp.rb +6 -9
  144. data/lib/simplecov/result/filter_config.rb +19 -0
  145. data/lib/simplecov/result/missing_source_files_reporter.rb +8 -9
  146. data/lib/simplecov/result/serialization.rb +43 -0
  147. data/lib/simplecov/result/source_file_builder.rb +7 -12
  148. data/lib/simplecov/result.rb +68 -117
  149. data/lib/simplecov/result_adapter.rb +58 -68
  150. data/lib/simplecov/result_merger/contexts.rb +22 -0
  151. data/lib/simplecov/result_merger/legacy_format_adapter.rb +4 -8
  152. data/lib/simplecov/result_merger/resultset_file.rb +20 -27
  153. data/lib/simplecov/result_merger/resultset_run_identity.rb +23 -25
  154. data/lib/simplecov/result_merger/resultset_store.rb +23 -14
  155. data/lib/simplecov/result_merger/unloaded_files.rb +24 -32
  156. data/lib/simplecov/result_merger.rb +59 -58
  157. data/lib/simplecov/result_processing.rb +74 -119
  158. data/lib/simplecov/run_identity.rb +16 -18
  159. data/lib/simplecov/simulate_coverage.rb +35 -50
  160. data/lib/simplecov/source_file/branch.rb +8 -33
  161. data/lib/simplecov/source_file/branch_builder.rb +28 -47
  162. data/lib/simplecov/source_file/builder_context.rb +6 -13
  163. data/lib/simplecov/source_file/line.rb +13 -33
  164. data/lib/simplecov/source_file/line_builder.rb +9 -15
  165. data/lib/simplecov/source_file/method.rb +3 -7
  166. data/lib/simplecov/source_file/method_builder.rb +6 -15
  167. data/lib/simplecov/source_file/ruby_data_parser.rb +59 -66
  168. data/lib/simplecov/source_file/skip_chunks.rb +19 -28
  169. data/lib/simplecov/source_file/source_loader.rb +45 -35
  170. data/lib/simplecov/source_file/statistics.rb +10 -9
  171. data/lib/simplecov/source_file.rb +21 -51
  172. data/lib/simplecov/static_coverage_extractor/condition_folding.rb +63 -114
  173. data/lib/simplecov/static_coverage_extractor/location_conventions.rb +76 -121
  174. data/lib/simplecov/static_coverage_extractor/method_collector.rb +11 -24
  175. data/lib/simplecov/static_coverage_extractor/prism_compat.rb +15 -24
  176. data/lib/simplecov/static_coverage_extractor/value_position.rb +25 -38
  177. data/lib/simplecov/static_coverage_extractor/visitor.rb +47 -64
  178. data/lib/simplecov/static_coverage_extractor.rb +46 -62
  179. data/lib/simplecov/test_tracker/accessors.rb +34 -0
  180. data/lib/simplecov/test_tracker/constant_watch.rb +49 -0
  181. data/lib/simplecov/test_tracker/delta.rb +69 -0
  182. data/lib/simplecov/test_tracker/framework_hooks.rb +130 -0
  183. data/lib/simplecov/test_tracker.rb +162 -0
  184. data/lib/simplecov/unloaded_file_injector.rb +18 -31
  185. data/lib/simplecov/useless_results_remover.rb +7 -6
  186. data/lib/simplecov/version.rb +1 -1
  187. data/lib/simplecov/view_coverage/template_compiler.rb +83 -0
  188. data/lib/simplecov/view_coverage.rb +55 -0
  189. data/lib/simplecov-html.rb +1 -0
  190. data/lib/simplecov.rb +59 -114
  191. data/lib/simplecov_json_formatter.rb +1 -0
  192. data/man/simplecov.1 +349 -0
  193. data/sig/simplecov.rbs +523 -595
  194. metadata +72 -7
  195. data/schemas/coverage-v1.0.schema.json +0 -306
  196. data/schemas/coverage.schema.json +0 -306
@@ -4,7 +4,7 @@
4
4
  <meta charset="utf-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1">
6
6
  <title>Code Coverage</title>
7
- <style>*,*:before,*:after{box-sizing:border-box}*{margin:0;padding:0}html{-moz-text-size-adjust:none;-webkit-text-size-adjust:none;text-size-adjust:none}body{min-height:100vh;line-height:1.5;-webkit-font-smoothing:antialiased}img,picture,svg{display:block;max-width:100%}input,button,textarea,select{font:inherit}h1,h2,h3,h4,h5,h6{overflow-wrap:break-word;text-wrap:balance}p{overflow-wrap:break-word;text-wrap:pretty}table{border-collapse:collapse;border-spacing:0}ul,ol{list-style:none}a{text-decoration-skip-ink:auto;color:currentColor}.hide{display:none}.hljs{color:#24292e}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#d73a49}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#6f42c1}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#005cc5}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:#032f62}.hljs-built_in,.hljs-symbol{color:#e36209}.hljs-comment,.hljs-code,.hljs-formula{color:#6a737d}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:#22863a}.hljs-subst{color:#24292e}.hljs-section{color:#005cc5;font-weight:700}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}@media(prefers-color-scheme:dark){:root:not(.light-mode) .hljs{color:#c9d1d9}:root:not(.light-mode) .hljs-doctag,:root:not(.light-mode) .hljs-keyword,:root:not(.light-mode) .hljs-meta .hljs-keyword,:root:not(.light-mode) .hljs-template-tag,:root:not(.light-mode) .hljs-template-variable,:root:not(.light-mode) .hljs-type,:root:not(.light-mode) .hljs-variable.language_{color:#ff7b72}:root:not(.light-mode) .hljs-title,:root:not(.light-mode) .hljs-title.class_,:root:not(.light-mode) .hljs-title.class_.inherited__,:root:not(.light-mode) .hljs-title.function_{color:#d2a8ff}:root:not(.light-mode) .hljs-attr,:root:not(.light-mode) .hljs-attribute,:root:not(.light-mode) .hljs-literal,:root:not(.light-mode) .hljs-meta,:root:not(.light-mode) .hljs-number,:root:not(.light-mode) .hljs-operator,:root:not(.light-mode) .hljs-variable,:root:not(.light-mode) .hljs-selector-attr,:root:not(.light-mode) .hljs-selector-class,:root:not(.light-mode) .hljs-selector-id{color:#79c0ff}:root:not(.light-mode) .hljs-regexp,:root:not(.light-mode) .hljs-string,:root:not(.light-mode) .hljs-meta .hljs-string{color:#a5d6ff}:root:not(.light-mode) .hljs-built_in,:root:not(.light-mode) .hljs-symbol{color:#ffa657}:root:not(.light-mode) .hljs-comment,:root:not(.light-mode) .hljs-code,:root:not(.light-mode) .hljs-formula{color:#8b949e}:root:not(.light-mode) .hljs-name,:root:not(.light-mode) .hljs-quote,:root:not(.light-mode) .hljs-selector-tag,:root:not(.light-mode) .hljs-selector-pseudo{color:#7ee787}:root:not(.light-mode) .hljs-subst{color:#c9d1d9}:root:not(.light-mode) .hljs-section{color:#1f6feb}}.dark-mode .hljs{color:#c9d1d9}.dark-mode .hljs-doctag,.dark-mode .hljs-keyword,.dark-mode .hljs-meta .hljs-keyword,.dark-mode .hljs-template-tag,.dark-mode .hljs-template-variable,.dark-mode .hljs-type,.dark-mode .hljs-variable.language_{color:#ff7b72}.dark-mode .hljs-title,.dark-mode .hljs-title.class_,.dark-mode .hljs-title.class_.inherited__,.dark-mode .hljs-title.function_{color:#d2a8ff}.dark-mode .hljs-attr,.dark-mode .hljs-attribute,.dark-mode .hljs-literal,.dark-mode .hljs-meta,.dark-mode .hljs-number,.dark-mode .hljs-operator,.dark-mode .hljs-variable,.dark-mode .hljs-selector-attr,.dark-mode .hljs-selector-class,.dark-mode .hljs-selector-id{color:#79c0ff}.dark-mode .hljs-regexp,.dark-mode .hljs-string,.dark-mode .hljs-meta .hljs-string{color:#a5d6ff}.dark-mode .hljs-built_in,.dark-mode .hljs-symbol{color:#ffa657}.dark-mode .hljs-comment,.dark-mode .hljs-code,.dark-mode .hljs-formula{color:#8b949e}.dark-mode .hljs-name,.dark-mode .hljs-quote,.dark-mode .hljs-selector-tag,.dark-mode .hljs-selector-pseudo{color:#7ee787}.dark-mode .hljs-subst{color:#c9d1d9}.dark-mode .hljs-section{color:#1f6feb}:root{--ap: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--ae: ui-monospace, "Cascadia Code", "Source Code Pro", Menlo, Consolas, "DejaVu Sans Mono", monospace;--f: 4px;--b: 8px;--as: 12px;--k: 16px;--au: 20px;--ac: 24px;--av: 32px;--ar: 8px;--aq: 12px;--ao: 16px;--o: #f0f1f3;--e: #fff;--ad: #f0f1f3;--a: #111;--g: #333;--h: #444;--al: #f4f5f7;--c: #c0c5cc;--p: #999;--d: #0550ae;--am: #033d8b;--v: #ddf4ff;--green: #116329;--red: #a40e26;--yellow: #7a5200;--an: #953800;--l: #ccf5d0;--i: #9ae6a4;--m: #ffd8d5;--j: #ffb8b3;--z: #fff;--ah: #f0f1f3;--aa: #fff0a0;--u: #eed860;--x: #ffd0a0;--r: #ffb060;--s: #b45309;--y: #e8d0ff;--t: #d4b0ff;--n: #7b2d8e;--aj: #fff;--q: #c0c5cc;--ak: #444;--ab: #f0f1f3;--af: #e0e3e8;--ag: #333;--ai: rgba(0, 0, 0, .5);--w: #d0d7de;--at: 6px}@media(prefers-color-scheme:dark){:root:not(.light-mode){--o: #010409;--e: #0d1117;--ad: #161b22;--a: #f0f3f6;--g: #b0b8c4;--h: #9aa5b1;--al: #161b22;--c: #3d444d;--p: #555e68;--d: #6cb6ff;--am: #96ccff;--v: #121d2f;--green: #56d364;--red: #ff6b61;--yellow: #e3b341;--an: #f0883e;--l: #122d1e;--i: #1e4430;--m: #351418;--j: #4e1d20;--z: #0d1117;--ah: #161b22;--aa: #302818;--u: #443920;--x: #322218;--r: #483020;--s: #ffb86c;--y: #1e1830;--t: #2a2044;--n: #dcb8ff;--aj: #0d1117;--q: #3d444d;--ak: #9aa5b1;--ab: #161b22;--af: #262c34;--ag: #b0b8c4;--ai: rgba(1, 4, 9, .8);--w: #3d444d}}.dark-mode{--o: #010409;--e: #0d1117;--ad: #161b22;--a: #f0f3f6;--g: #b0b8c4;--h: #9aa5b1;--al: #161b22;--c: #3d444d;--p: #555e68;--d: #6cb6ff;--am: #96ccff;--v: #121d2f;--green: #56d364;--red: #ff6b61;--yellow: #e3b341;--an: #f0883e;--l: #122d1e;--i: #1e4430;--m: #351418;--j: #4e1d20;--z: #0d1117;--ah: #161b22;--aa: #302818;--u: #443920;--x: #322218;--r: #483020;--s: #ffb86c;--y: #1e1830;--t: #2a2044;--n: #dcb8ff;--aj: #0d1117;--q: #3d444d;--ak: #9aa5b1;--ab: #161b22;--af: #262c34;--ag: #b0b8c4;--ai: rgba(1, 4, 9, .8);--w: #3d444d}.colorblind-mode{--green: #0060a8;--red: #c2410c;--l: #d3eaf7;--i: #a5d2ee;--m: #ffe0cc;--j: #ffc39a}@media screen and (prefers-color-scheme:dark){.colorblind-mode:not(.light-mode){--green: #6cb6ff;--red: #f0883e;--l: #0e2a45;--i: #12385c;--m: #3a2410;--j: #52331a}}@media screen{.colorblind-mode.dark-mode{--green: #6cb6ff;--red: #f0883e;--l: #0e2a45;--i: #12385c;--m: #3a2410;--j: #52331a}}body{font-family:var(--ap);font-size:18px;color:var(--a);background:var(--o);padding:var(--ac)}a{color:var(--d);text-decoration:none;transition:color .15s}a:hover{color:var(--am)}strong,b{font-weight:600}#loading{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:var(--o);z-index:9999}#loading-inner{width:280px;text-align:center}#loading-bar-track{width:100%;height:6px;background:var(--w);border-radius:6px;overflow:hidden}#loading-bar-fill{width:0%;height:100%;background:var(--d);border-radius:6px;transition:width .15s ease-out}#loading-text{margin-top:var(--as);font-size:18px;color:var(--h)}#sort-overlay{position:fixed;inset:0;z-index:9998;display:flex;align-items:center;justify-content:center;background:var(--ai)}#sort-overlay-label{padding:var(--b) var(--k);border:1px solid var(--c);border-radius:6px;background:var(--o);font-size:16px;color:var(--h)}#wrapper{margin:0 auto}.tab-bar{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--k);margin-bottom:-1px;position:relative;z-index:1}abbr.timeago{text-decoration:none;border:none}.group_tabs{display:flex;align-self:flex-end;gap:var(--f);overflow-x:auto}.group_tabs li a{display:block;padding:var(--b) var(--k);font-size:18px;font-weight:500;color:var(--g);background:transparent;border:1px solid transparent;border-bottom:none;border-radius:var(--aq) var(--aq) 0 0;white-space:nowrap;transition:color .15s,background .15s}.group_tabs li a:hover{color:var(--a);background:var(--ad);text-decoration:none}.group_tabs li.active a{color:var(--d);background:var(--e);border-color:var(--c);font-weight:600}#content{background:var(--e);border:1px solid var(--c);border-radius:0 var(--ao) var(--ao) var(--ao);padding:var(--ac)}.file_list_container h2{font-size:24px;font-weight:600;color:var(--a);margin:0}.file_list_container h2 .covered_percent{font-weight:600}.summary-stats{display:flex;flex-direction:column;gap:var(--f);font-size:18px;color:var(--g)}.summary-stats b{color:var(--a)}.summary-stats .missed-branch-text b,.summary-stats .missed-method-text-color b,.summary-stats .green b,.summary-stats .red b{color:inherit}.summary-stats .green{color:var(--green)}.summary-stats .red{color:var(--red)}.coverage-disabled{color:var(--h);font-style:italic}.th-with-filter{display:flex;align-items:center;gap:var(--b)}table.file_list th.cell--coverage .th-with-filter{white-space:nowrap;justify-content:flex-end}.th-with-filter .th-label{white-space:nowrap}.col-filter--name{width:100%;min-width:200px;border:1px solid var(--c);border-radius:999px;padding:var(--f) var(--k);font-size:14px;background:var(--e);color:var(--a);outline:none}.col-filter--name:focus{border-color:var(--d)}.col-filter__coverage{display:flex;gap:var(--f)}.col-filter__op{border:1px solid var(--c);border-radius:var(--ar);padding:var(--f) var(--f);font-size:14px;background:var(--e);color:var(--a);cursor:pointer}.col-filter__value{border:1px solid var(--c);border-radius:var(--ar);padding:var(--f) var(--b);font-size:14px;background:var(--e);color:var(--a);width:60px;outline:none}.col-filter__value:focus{border-color:var(--d)}.file_list--responsive{overflow-x:auto}table.file_list{width:100%;font-size:18px}table.file_list{border-collapse:separate;border-spacing:0}table.file_list thead th{font-size:14px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--h);background:var(--e);padding:var(--b) var(--b);border-bottom:2px solid var(--p);white-space:nowrap}table.file_list tbody tr{background:var(--e);cursor:pointer}table.file_list tbody tr:nth-child(2n){background:var(--al)}table.file_list tbody tr:hover{background:var(--v)}table.file_list tbody tr.keyboard-focus{background:var(--v);outline:2px solid var(--d);outline-offset:-2px}table.file_list tbody td{padding:var(--b) var(--b);border-bottom:1px solid var(--c);color:var(--a)}table.file_list td.cell--number{text-align:right;font-variant-numeric:tabular-nums;color:var(--a)}table.file_list th.cell--left,table.file_list th.cell--coverage{text-align:left}table.file_list th.cell--number{text-align:right}table.file_list th.cell--numerator{text-align:right;padding-right:0}table.file_list th.cell--denominator{text-align:left;padding-left:0}table.file_list td.strong{font-weight:600;color:var(--a)}table.file_list td.t-file__name{white-space:nowrap}a.src_link{color:var(--d);font-weight:500;word-break:break-all}table.file_list td.cell--coverage{white-space:nowrap}.coverage-cell{display:flex;flex-wrap:nowrap;align-items:center;justify-content:flex-end;gap:10px}.coverage-cell .coverage-pct{flex:0 0 4.5em;font-variant-numeric:tabular-nums}tr.t-window-hidden{display:none}tr.t-show-all td{padding:var(--as);text-align:center;color:var(--h);cursor:pointer}.coverage-cell .bar-sizer{flex:0 0 auto;width:var(--bar-sizer-width, 240px);min-width:160px;max-width:240px}table.file_list td.cell--numerator{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap;padding-left:var(--f);padding-right:0}table.file_list td.cell--denominator{text-align:left;font-variant-numeric:tabular-nums;white-space:nowrap;padding-left:0;padding-right:var(--f)}table.file_list .totals-row td.cell--numerator{color:var(--a);padding-right:0}table.file_list .totals-row td.cell--denominator{color:var(--a);padding-left:0}.coverage-cell__fraction{font-variant-numeric:tabular-nums;color:var(--g);font-size:14px;white-space:nowrap}.coverage-bar{width:100%;height:var(--at);background:var(--w);border-radius:6px;overflow:hidden}.coverage-bar__fill{height:100%;border-radius:6px}.coverage-bar__fill--green{background:var(--green)}.coverage-bar__fill--yellow{background:var(--yellow)}.coverage-bar__fill--red{background:var(--red)}.green,table.file_list td.green{color:var(--green)}.red,table.file_list td.red{color:var(--red)}.yellow,table.file_list td.yellow{color:var(--yellow)}.missed-branch-text{color:var(--s)}.missed-method-text-color{color:var(--n)}dialog.source-dialog{position:fixed;inset:0;width:100%;height:100%;max-width:100%;max-height:100%;border:none;padding:0;background:var(--o);color:var(--a);overflow:hidden}dialog.source-dialog::backdrop{background:var(--ai)}dialog.source-dialog[open]{display:flex;flex-direction:column}.source-dialog__header{display:flex;align-items:flex-start;justify-content:space-between;padding:var(--k) var(--ac);background:var(--e);border-bottom:1px solid var(--c);flex-shrink:0}.source-dialog__title{flex:1;min-width:0}.source-dialog__title h2{font-size:22px;font-weight:700;color:var(--a);margin-bottom:var(--b);word-break:break-all}.source-legend{display:flex;flex-wrap:wrap;gap:var(--b) var(--k);align-items:center;align-self:flex-end;flex-shrink:0;margin-left:auto;padding-left:var(--ac)}.source-legend__item{display:flex;align-items:center;gap:var(--f);font-size:13px;color:var(--g);white-space:nowrap}.source-legend__swatch{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:3px;border:1px solid var(--c);font-family:var(--ae);font-size:12px;font-weight:700;line-height:1}.source-legend__swatch--covered{background:var(--l);border-color:var(--i);color:var(--green)}.source-legend__swatch--missed{background:var(--m);border-color:var(--j);color:var(--red)}.source-legend__swatch--skipped{background:var(--aa);border-color:var(--u);color:var(--g)}.source-legend__swatch--missed-branch{background:var(--x);border-color:var(--r);color:var(--s)}.source-legend__swatch--missed-method{background:var(--y);border-color:var(--t);color:var(--n)}.source-legend__swatch--covered:after{content:"+"}.source-legend__swatch--missed:after{content:"\2212"}.source-legend__swatch--skipped:after{content:"~"}.source-legend__swatch--missed-branch:after{content:"\b1"}.source-legend__swatch--missed-method:after{content:"\192"}.source-dialog__toggles{display:flex;align-items:center;gap:var(--b);flex-shrink:0;margin-left:var(--k);align-self:flex-start}.source-dialog__close{appearance:none;background:none;border:1px solid var(--c);border-radius:50%;width:34px;height:34px;font-size:0;color:var(--g);cursor:pointer;position:relative;flex-shrink:0;margin-left:var(--k);transition:color .15s,border-color .15s}.source-dialog__close:before,.source-dialog__close:after{content:"";position:absolute;top:50%;left:50%;width:14px;height:2px;background:currentColor;border-radius:1px}.source-dialog__close:before{transform:translate(-50%,-50%) rotate(45deg)}.source-dialog__close:after{transform:translate(-50%,-50%) rotate(-45deg)}.source-dialog__close:hover{color:var(--a);border-color:var(--p)}.source-dialog__body{flex:1;overflow:auto}.source_table .header{padding:var(--k) var(--ac);background:var(--e)}.source_table .header h2{font-size:22px;font-weight:700;color:var(--a);margin-bottom:var(--b)}table.file_list .totals-row td{padding:var(--b) var(--b);font-weight:600;border-bottom:2px solid var(--p);background:var(--ad)}.totals-row .t-file-count{font-size:18px;font-weight:700;color:var(--a)}.t-missed-method-toggle{color:var(--n);font-weight:600;cursor:pointer;text-decoration:none}.t-missed-method-toggle:hover{text-decoration:underline;color:var(--n)}.t-missed-method-list ul{padding-left:2em;margin-top:var(--f);max-height:200px;overflow-y:auto}.t-missed-method-list li{list-style:none}.source_table pre{margin:0;padding:0;white-space:normal;color:var(--a);font-family:var(--ae);font-size:16px;line-height:24px;background:var(--aj);border:1px solid var(--q);border-top:none}.source_table code{color:inherit;font-family:var(--ae)}.source_table pre ol{margin:0;padding:0;list-style:none;counter-reset:linenumber}.source_table pre li{display:flex;counter-increment:linenumber;background:var(--z)}.source_table pre li:before{content:counter(linenumber);flex-shrink:0;width:50px;padding:0 8px;text-align:right;color:var(--ak);background:var(--ab);border-right:1px solid var(--q);-webkit-user-select:none;user-select:none;cursor:pointer}.source_table pre li:hover:before{color:var(--a)}.source_table pre li:hover{cursor:pointer}.source_table pre li code{order:1;flex:1;min-width:0;padding:0 12px;white-space:pre-wrap}.source_table pre .hits{order:2;flex-shrink:0;padding:0 var(--b);background:var(--af);color:var(--ag);font-family:var(--ae);font-size:14px;text-align:center;line-height:24px;border-left:1px solid var(--q);-webkit-user-select:none;user-select:none}.source_table pre .hits:after{content:attr(data-content)}.source_table .covered{background-color:var(--l)}.source_table .missed{background-color:var(--m)}.source_table .never{background-color:var(--z)}.source_table .skipped{background-color:var(--aa)}.source_table .missed-branch{background-color:var(--x)}.source_table .missed-method{background-color:var(--y)}.source_table .covered:before{background-color:var(--i)}.source_table .missed:before{background-color:var(--j)}.source_table .never:before{background-color:var(--ah)}.source_table .skipped:before{background-color:var(--u)}.source_table .missed-branch:before{background-color:var(--r)}.source_table .missed-method:before{background-color:var(--t)}.source_table pre li:after{order:-1;content:"";flex-shrink:0;width:1.6em;text-align:center;font-weight:700;color:var(--g);background:var(--ab);border-right:1px solid var(--q);-webkit-user-select:none;user-select:none}.source_table .covered:after{content:"+";color:var(--green);background:var(--i)}.source_table .missed:after{content:"\2212";color:var(--red);background:var(--j)}.source_table .skipped:after{content:"~";background:var(--u)}.source_table .missed-branch:after{content:"\b1";color:var(--s);background:var(--r)}.source_table .missed-method:after{content:"\192";color:var(--n);background:var(--t)}.toolbar{display:flex;align-items:flex-start;gap:var(--b);flex-shrink:0}.toolbar-toggle{appearance:none;background:var(--e);color:var(--g);border:1px solid var(--c);border-radius:999px;padding:var(--f) var(--k);font-size:16px;font-family:var(--ap);cursor:pointer;white-space:nowrap;transition:color .15s,border-color .15s,background .15s}.toolbar-toggle:hover{color:var(--a);border-color:var(--p)}.toolbar-toggle[aria-pressed=true]{background:var(--v);color:var(--d);border-color:var(--d)}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,[tabindex]:focus-visible,.source_table pre li:focus-visible{outline:2px solid var(--d);outline-offset:2px;border-radius:3px}#footer{color:var(--h);font-size:16px;margin-top:var(--au);text-align:center}#footer a{color:var(--g);text-decoration:underline}#footer a:hover{color:var(--a)}table.file_list thead th.sorting,table.file_list thead th.sorting_asc,table.file_list thead th.sorting_desc{cursor:pointer;position:relative;padding-right:12px}table.file_list thead th.sorting:after,table.file_list thead th.sorting_asc:after,table.file_list thead th.sorting_desc:after{position:absolute;right:2px;top:50%;transform:translateY(-50%);font-size:14px;color:var(--h)}table.file_list thead th.sorting:after{content:"\2195"}table.file_list thead th.sorting_asc:after{content:"\2191"}table.file_list thead th.sorting_desc:after{content:"\2193"}@media print{:root,.dark-mode{--o: #fff;--e: #fff;--ad: #f4f5f7;--a: #111;--g: #333;--h: #444;--al: #f4f5f7;--c: #c0c5cc;--p: #999;--d: #0550ae;--green: #116329;--red: #a40e26;--yellow: #7a5200;--an: #953800;--w: #d0d7de;--l: #ccf5d0;--i: #9ae6a4;--m: #ffd8d5;--j: #ffb8b3;--z: #fff;--ah: #f0f1f3;--aa: #fff0a0;--u: #eed860;--x: #ffd0a0;--r: #ffb060;--s: #b45309;--y: #e8d0ff;--t: #d4b0ff;--n: #7b2d8e;--aj: #fff;--q: #c0c5cc;--ak: #444;--ab: #f0f1f3;--af: #e0e3e8;--ag: #333}.colorblind-mode{--green: #0060a8;--red: #c2410c;--l: #d3eaf7;--i: #a5d2ee;--m: #ffe0cc;--j: #ffc39a}body{padding:0;font-size:12pt}#loading,#sort-overlay,.toolbar,.source-dialog__toggles,.tab-bar,.source_files,.col-filter--name,.col-filter__coverage,tr.t-show-all,table.file_list thead th.sorting:after,table.file_list thead th.sorting_asc:after,table.file_list thead th.sorting_desc:after{display:none!important}#wrapper,.file_list_container{display:block!important}body:has(.source-dialog[open]) #wrapper{display:none!important}#content{border:none;border-radius:0;padding:0}.file_list_container .group_name{display:inline!important;font-size:16pt;font-weight:700}.file_list_container .covered_percent{display:inline!important;font-weight:600}.file_list_container+.file_list_container{margin-top:24pt}dialog.source-dialog{display:none}dialog.source-dialog[open]{display:block!important;position:static;width:100%;height:auto;max-height:none;overflow:visible;background:#fff}.source-dialog__close{display:none!important}.source-dialog__header{flex-wrap:wrap;border-bottom:none;padding:0 0 8pt}.source-dialog__title{flex:0 0 100%}.source-dialog__title h2{word-break:normal;overflow-wrap:break-word}.source-legend{margin-left:0;padding-left:0;padding-top:var(--b)}.source-dialog__body{overflow:visible}.source_table pre{font-size:8pt;line-height:1.4}.source_table pre li{-webkit-print-color-adjust:exact;print-color-adjust:exact}.source_table pre li:before{-webkit-print-color-adjust:exact;print-color-adjust:exact}.source_table pre .hits{-webkit-print-color-adjust:exact;print-color-adjust:exact}.coverage-bar{border:1px solid var(--c);-webkit-print-color-adjust:exact;print-color-adjust:exact}.coverage-bar__fill{-webkit-print-color-adjust:exact;print-color-adjust:exact}table.file_list tbody tr:nth-child(2n){-webkit-print-color-adjust:exact;print-color-adjust:exact}table.file_list{font-size:10pt}table.file_list thead th{font-size:9pt}table.file_list{page-break-inside:auto}table.file_list tr{page-break-inside:avoid}table.file_list thead{display:table-header-group}#footer{font-size:10pt;margin-top:12pt}#footer a:after{content:" (" attr(href) ")";font-size:9pt;color:var(--h)}}
7
+ <style>*,*:before,*:after{box-sizing:border-box}*{margin:0;padding:0}html{-moz-text-size-adjust:none;-webkit-text-size-adjust:none;text-size-adjust:none}body{min-height:100vh;line-height:1.5;-webkit-font-smoothing:antialiased}img,picture,svg{display:block;max-width:100%}input,button,textarea,select{font:inherit}h1,h2,h3,h4,h5,h6{overflow-wrap:break-word;text-wrap:balance}p{overflow-wrap:break-word;text-wrap:pretty}table{border-collapse:collapse;border-spacing:0}ul,ol{list-style:none}a{text-decoration-skip-ink:auto;color:currentColor}.hide{display:none}.hljs{color:#24292e}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#d73a49}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#6f42c1}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#005cc5}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:#032f62}.hljs-built_in,.hljs-symbol{color:#e36209}.hljs-comment,.hljs-code,.hljs-formula{color:#6a737d}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:#22863a}.hljs-subst{color:#24292e}.hljs-section{color:#005cc5;font-weight:700}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}@media(prefers-color-scheme:dark){:root:not(.light-mode) .hljs{color:#c9d1d9}:root:not(.light-mode) .hljs-doctag,:root:not(.light-mode) .hljs-keyword,:root:not(.light-mode) .hljs-meta .hljs-keyword,:root:not(.light-mode) .hljs-template-tag,:root:not(.light-mode) .hljs-template-variable,:root:not(.light-mode) .hljs-type,:root:not(.light-mode) .hljs-variable.language_{color:#ff7b72}:root:not(.light-mode) .hljs-title,:root:not(.light-mode) .hljs-title.class_,:root:not(.light-mode) .hljs-title.class_.inherited__,:root:not(.light-mode) .hljs-title.function_{color:#d2a8ff}:root:not(.light-mode) .hljs-attr,:root:not(.light-mode) .hljs-attribute,:root:not(.light-mode) .hljs-literal,:root:not(.light-mode) .hljs-meta,:root:not(.light-mode) .hljs-number,:root:not(.light-mode) .hljs-operator,:root:not(.light-mode) .hljs-variable,:root:not(.light-mode) .hljs-selector-attr,:root:not(.light-mode) .hljs-selector-class,:root:not(.light-mode) .hljs-selector-id{color:#79c0ff}:root:not(.light-mode) .hljs-regexp,:root:not(.light-mode) .hljs-string,:root:not(.light-mode) .hljs-meta .hljs-string{color:#a5d6ff}:root:not(.light-mode) .hljs-built_in,:root:not(.light-mode) .hljs-symbol{color:#ffa657}:root:not(.light-mode) .hljs-comment,:root:not(.light-mode) .hljs-code,:root:not(.light-mode) .hljs-formula{color:#8b949e}:root:not(.light-mode) .hljs-name,:root:not(.light-mode) .hljs-quote,:root:not(.light-mode) .hljs-selector-tag,:root:not(.light-mode) .hljs-selector-pseudo{color:#7ee787}:root:not(.light-mode) .hljs-subst{color:#c9d1d9}:root:not(.light-mode) .hljs-section{color:#1f6feb}}.dark-mode .hljs{color:#c9d1d9}.dark-mode .hljs-doctag,.dark-mode .hljs-keyword,.dark-mode .hljs-meta .hljs-keyword,.dark-mode .hljs-template-tag,.dark-mode .hljs-template-variable,.dark-mode .hljs-type,.dark-mode .hljs-variable.language_{color:#ff7b72}.dark-mode .hljs-title,.dark-mode .hljs-title.class_,.dark-mode .hljs-title.class_.inherited__,.dark-mode .hljs-title.function_{color:#d2a8ff}.dark-mode .hljs-attr,.dark-mode .hljs-attribute,.dark-mode .hljs-literal,.dark-mode .hljs-meta,.dark-mode .hljs-number,.dark-mode .hljs-operator,.dark-mode .hljs-variable,.dark-mode .hljs-selector-attr,.dark-mode .hljs-selector-class,.dark-mode .hljs-selector-id{color:#79c0ff}.dark-mode .hljs-regexp,.dark-mode .hljs-string,.dark-mode .hljs-meta .hljs-string{color:#a5d6ff}.dark-mode .hljs-built_in,.dark-mode .hljs-symbol{color:#ffa657}.dark-mode .hljs-comment,.dark-mode .hljs-code,.dark-mode .hljs-formula{color:#8b949e}.dark-mode .hljs-name,.dark-mode .hljs-quote,.dark-mode .hljs-selector-tag,.dark-mode .hljs-selector-pseudo{color:#7ee787}.dark-mode .hljs-subst{color:#c9d1d9}.dark-mode .hljs-section{color:#1f6feb}:root{--aj: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--as: ui-monospace, "Cascadia Code", "Source Code Pro", Menlo, Consolas, "DejaVu Sans Mono", monospace;--f: 4px;--c: 8px;--aw: 12px;--o: 16px;--bc: 20px;--p: 24px;--bd: 32px;--ay: 8px;--ax: 12px;--au: 16px;--av: 34px;--az: var(--o);--bb: calc(var(--av) + var(--az));--m: #f0f1f3;--g: #fff;--ai: #f0f1f3;--a: #111;--h: #333;--e: #444;--aq: #f4f5f7;--b: #c0c5cc;--q: #999;--d: #0550ae;--ar: #033d8b;--u: #ddf4ff;--green: #116329;--red: #a40e26;--yellow: #7a5200;--at: #953800;--i: #ccf5d0;--j: #9ae6a4;--k: #ffd8d5;--l: #ffb8b3;--ab: #fff;--am: #f0f1f3;--af: #fff0a0;--ag: #eed860;--w: #ffd0a0;--x: #ffb060;--y: #b45309;--z: #e8d0ff;--aa: #d4b0ff;--r: #7b2d8e;--ac: #dfe5ee;--ad: #b6c4da;--s: #3f5578;--t: #0d7a80;--ae: #8a919a;--ao: #fff;--n: #c0c5cc;--ap: #444;--ah: #f0f1f3;--ak: #e0e3e8;--al: #333;--an: rgba(0, 0, 0, .5);--v: #d0d7de;--ba: 6px}@media(prefers-color-scheme:dark){:root:not(.light-mode){--m: #010409;--g: #0d1117;--ai: #161b22;--a: #f0f3f6;--h: #b0b8c4;--e: #9aa5b1;--aq: #161b22;--b: #3d444d;--q: #555e68;--d: #6cb6ff;--ar: #96ccff;--u: #121d2f;--green: #56d364;--red: #ff6b61;--yellow: #e3b341;--at: #f0883e;--i: #122d1e;--j: #1e4430;--k: #351418;--l: #4e1d20;--ab: #0d1117;--am: #161b22;--af: #302818;--ag: #443920;--w: #322218;--x: #483020;--y: #ffb86c;--z: #1e1830;--aa: #2a2044;--r: #dcb8ff;--ac: #1a2231;--ad: #28344c;--s: #9db2d9;--t: #39c5cf;--ae: #6e7681;--ao: #0d1117;--n: #3d444d;--ap: #9aa5b1;--ah: #161b22;--ak: #262c34;--al: #b0b8c4;--an: rgba(1, 4, 9, .8);--v: #3d444d}}.dark-mode{--m: #010409;--g: #0d1117;--ai: #161b22;--a: #f0f3f6;--h: #b0b8c4;--e: #9aa5b1;--aq: #161b22;--b: #3d444d;--q: #555e68;--d: #6cb6ff;--ar: #96ccff;--u: #121d2f;--green: #56d364;--red: #ff6b61;--yellow: #e3b341;--at: #f0883e;--i: #122d1e;--j: #1e4430;--k: #351418;--l: #4e1d20;--ab: #0d1117;--am: #161b22;--af: #302818;--ag: #443920;--w: #322218;--x: #483020;--y: #ffb86c;--z: #1e1830;--aa: #2a2044;--r: #dcb8ff;--ac: #1a2231;--ad: #28344c;--s: #9db2d9;--t: #39c5cf;--ae: #6e7681;--ao: #0d1117;--n: #3d444d;--ap: #9aa5b1;--ah: #161b22;--ak: #262c34;--al: #b0b8c4;--an: rgba(1, 4, 9, .8);--v: #3d444d}.colorblind-mode{--green: #0060a8;--red: #c2410c;--i: #d3eaf7;--j: #a5d2ee;--k: #ffe0cc;--l: #ffc39a}@media screen and (prefers-color-scheme:dark){.colorblind-mode:not(.light-mode){--green: #6cb6ff;--red: #f0883e;--i: #0e2a45;--j: #12385c;--k: #3a2410;--l: #52331a}}@media screen{.colorblind-mode.dark-mode{--green: #6cb6ff;--red: #f0883e;--i: #0e2a45;--j: #12385c;--k: #3a2410;--l: #52331a}}html{scrollbar-gutter:stable}body{font-family:var(--aj);font-size:18px;color:var(--a);background:var(--m);padding:var(--p)}a{color:var(--d);text-decoration:none;transition:color .15s}a:hover{color:var(--ar)}strong,b{font-weight:600}#loading{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:var(--m);z-index:9999}#loading-inner{width:280px;text-align:center}#loading-bar-track{width:100%;height:6px;background:var(--v);border-radius:6px;overflow:hidden}#loading-bar-fill{width:0%;height:100%;background:var(--d);border-radius:6px;transition:width .15s ease-out}#loading-text{margin-top:var(--aw);font-size:18px;color:var(--e)}#sort-overlay{position:fixed;inset:0;z-index:9998;display:flex;align-items:center;justify-content:center;background:var(--an)}#sort-overlay-label{padding:var(--c) var(--o);border:1px solid var(--b);border-radius:6px;background:var(--m);font-size:16px;color:var(--e)}#wrapper{margin:0 auto}.tab-bar{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--o);margin-bottom:-1px;position:relative;z-index:1}abbr.timeago{text-decoration:none;border:none}.group_tabs{display:flex;align-self:flex-end;gap:var(--f);overflow-x:auto;padding-right:var(--p);mask-image:linear-gradient(to right,#000 calc(100% - var(--p)),transparent)}.group_tabs.is-scrolled{mask-image:linear-gradient(to right,transparent,#000 var(--p),#000 calc(100% - var(--p)),transparent)}.group_tabs li a{display:block;padding:var(--c) var(--o);font-size:18px;font-weight:500;color:var(--h);background:transparent;border:1px solid var(--b);border-bottom:none;border-radius:var(--ax) var(--ax) 0 0;white-space:nowrap;transition:color .15s,background .15s,border-color .15s}.group_tabs li a:hover{color:var(--a);background:var(--ai);border-color:var(--q);text-decoration:none}.group_tabs li.active a{color:var(--d);background:var(--g);border-color:var(--b);font-weight:600}#content{background:var(--g);border:1px solid var(--b);border-radius:0 var(--au) var(--au) var(--au);padding:var(--p)}.file_list_container h2{font-size:24px;font-weight:600;color:var(--a);margin:0}.file_list_container h2 .covered_percent{font-weight:600}.summary-stats{display:flex;flex-direction:column;gap:var(--f);font-size:18px;color:var(--h)}.summary-stats b{color:var(--a)}.summary-stats .missed-branch-text b,.summary-stats .missed-method-text-color b,.summary-stats .green b,.summary-stats .red b{color:inherit}.summary-stats .green{color:var(--green)}.summary-stats .red{color:var(--red)}.coverage-disabled{color:var(--e);font-style:italic}.th-with-filter{display:flex;align-items:center;gap:var(--c)}table.file_list th.cell--coverage .th-with-filter{white-space:nowrap;justify-content:flex-end}.th-with-filter .th-label{white-space:nowrap}.col-filter--name{width:100%;min-width:200px;border:1px solid var(--b);border-radius:999px;padding:var(--f) var(--o);font-size:14px;background:var(--g);color:var(--a);outline:none}.col-filter--name:focus{border-color:var(--d)}.col-filter__coverage{display:flex;gap:var(--f)}.col-filter__op{border:1px solid var(--b);border-radius:var(--ay);padding:var(--f) var(--f);font-size:14px;background:var(--g);color:var(--a);cursor:pointer}.col-filter__value{border:1px solid var(--b);border-radius:var(--ay);padding:var(--f) var(--c);font-size:14px;background:var(--g);color:var(--a);width:60px;outline:none}.col-filter__value:focus{border-color:var(--d)}.file_list--responsive{overflow-x:auto}table.file_list{width:100%;font-size:18px}table.file_list{border-collapse:separate;border-spacing:0}table.file_list thead th{font-size:14px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--e);background:var(--g);padding:var(--c) var(--c);border-bottom:2px solid var(--q);white-space:nowrap}table.file_list tbody tr{background:var(--g);cursor:pointer}table.file_list tbody tr:nth-child(2n){background:var(--aq)}table.file_list tbody tr:hover{background:var(--u)}table.file_list tbody tr.keyboard-focus{background:var(--u);outline:2px solid var(--d);outline-offset:-2px}table.file_list tbody td{padding:var(--c) var(--c);border-bottom:1px solid var(--b);color:var(--a)}table.file_list td.cell--number{text-align:right;font-variant-numeric:tabular-nums;color:var(--a)}table.file_list th.cell--left,table.file_list th.cell--coverage{text-align:left}table.file_list th.cell--number{text-align:right}table.file_list th.cell--numerator{text-align:right;padding-right:0}table.file_list th.cell--denominator{text-align:left;padding-left:0}table.file_list td.strong{font-weight:600;color:var(--a)}table.file_list th.cell--production,table.file_list td.cell--production{text-align:right;white-space:nowrap}table.file_list td.t-file__production--never{color:var(--e)}table.file_list td.t-file__name{white-space:nowrap}a.src_link{color:var(--d);font-weight:500;word-break:break-all}table.file_list td.cell--coverage{white-space:nowrap}.coverage-cell{display:flex;flex-wrap:nowrap;align-items:center;justify-content:flex-end;gap:10px}.coverage-cell .coverage-pct{flex:0 0 4.5em;font-variant-numeric:tabular-nums}tr.t-window-hidden{display:none}tr.t-show-all td{padding:var(--aw);text-align:center;color:var(--e);cursor:pointer}.coverage-cell .bar-sizer{flex:0 0 auto;width:var(--bar-sizer-width, 240px);min-width:160px;max-width:240px}table.file_list td.cell--numerator{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap;padding-left:var(--f);padding-right:0}table.file_list td.cell--denominator{text-align:left;font-variant-numeric:tabular-nums;white-space:nowrap;padding-left:0;padding-right:var(--f)}table.file_list .totals-row td.cell--numerator{color:var(--a);padding-right:0}table.file_list .totals-row td.cell--denominator{color:var(--a);padding-left:0}.coverage-cell__fraction{font-variant-numeric:tabular-nums;color:var(--h);font-size:14px;white-space:nowrap}.coverage-bar{display:flex;width:100%;height:var(--ba);background:var(--v);border-radius:6px;overflow:hidden}.coverage-bar__fill{flex:none;height:100%;border-radius:6px}.coverage-bar__fill--green{background:var(--green)}.coverage-bar__fill--yellow{background:var(--yellow)}.coverage-bar__fill--red{background:var(--red)}.coverage-bar__fill--split{border-radius:6px 0 0 6px}.coverage-bar__fill--outside{background:var(--s);border-radius:0 6px 6px 0}.green,table.file_list td.green{color:var(--green)}.red,table.file_list td.red{color:var(--red)}.yellow,table.file_list td.yellow{color:var(--yellow)}.missed-branch-text{color:var(--y)}.missed-method-text-color{color:var(--r)}dialog.source-dialog{position:fixed;inset:0;width:100%;height:100%;max-width:100%;max-height:100%;border:none;padding:0;background:var(--m);color:var(--a);overflow:hidden}dialog.source-dialog::backdrop{background:var(--an)}dialog.source-dialog[open]{display:flex;flex-direction:column}.source-dialog__header{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:flex-start;padding:var(--p);background:var(--m);border-bottom:1px solid var(--b);flex-shrink:0}.source-dialog__title{display:contents;min-width:0}.source-dialog__title h2{grid-column:1;grid-row:1;font-size:22px;font-weight:700;color:var(--a);margin-bottom:var(--c);word-break:break-all}.source-dialog__title .summary-stats{display:contents}.source-dialog__title .t-line-summary{grid-column:1;grid-row:2}.source-dialog__title .t-branch-summary{grid-column:1;grid-row:3}.source-dialog__title .t-method-summary{grid-column:1;grid-row:4}.source-dialog__title>.t-missed-method-list{grid-column:1 / -1;grid-row:5}.source-legend{grid-column:2 / 3;grid-row:2 / 5;display:grid;grid-template-rows:subgrid;grid-template-columns:repeat(4,auto);column-gap:var(--o);justify-content:end;justify-items:start;align-items:baseline}.source-legend__row{display:contents}.source-legend__row--line .source-legend__item{grid-row:1}.source-legend__row--branch .source-legend__item{grid-row:2;grid-column:4}.source-legend__row--method .source-legend__item{grid-row:3;grid-column:4}.source-legend__row--line .source-legend__item:nth-last-child(1){grid-column:4}.source-legend__row--line .source-legend__item:nth-last-child(2){grid-column:3}.source-legend__row--line .source-legend__item:nth-last-child(3){grid-column:2}.source-legend__row--line .source-legend__item:nth-last-child(4){grid-column:1}.source-legend__item{display:flex;align-items:center;gap:var(--f);font-size:13px;color:var(--h);white-space:nowrap}.source-legend__swatch{display:inline-block;width:16px;height:16px;border-radius:3px;border:1px solid var(--b)}.source-legend__swatch--covered{background:var(--i);border-color:var(--j);color:var(--green)}.source-legend__swatch--missed{background:var(--k);border-color:var(--l);color:var(--red)}.source-legend__swatch--skipped{background:var(--af);border-color:var(--ag);color:var(--h)}.source-legend__swatch--missed-branch{background:var(--w);border-color:var(--x);color:var(--y)}.source-legend__swatch--missed-method{background:var(--z);border-color:var(--aa);color:var(--r)}.source-legend__swatch--outside-tests{background:var(--ac);border-color:var(--ad);color:var(--s)}.source-legend__swatch--production-never{background:var(--i);border-color:var(--j);box-shadow:inset 4px 0 0 var(--ae)}.source-legend__swatch--production-ran{background:var(--k);border-color:var(--l);box-shadow:inset 4px 0 0 var(--t)}.source-dialog__toggles{display:flex;align-items:center;gap:var(--c);flex-shrink:0;margin-left:var(--o);align-self:flex-start;justify-self:end}.source-dialog__close{appearance:none;background:none;border:1px solid var(--b);border-radius:50%;width:var(--av);height:var(--av);font-size:0;color:var(--h);cursor:pointer;position:relative;flex-shrink:0;margin-left:var(--az);transition:color .15s,border-color .15s}.source-dialog__close:before,.source-dialog__close:after{content:"";position:absolute;top:50%;left:50%;width:14px;height:2px;background:currentColor;border-radius:1px}.source-dialog__close:before{transform:translate(-50%,-50%) rotate(45deg)}.source-dialog__close:after{transform:translate(-50%,-50%) rotate(-45deg)}.source-dialog__close:hover{color:var(--a);border-color:var(--q)}.source-dialog__body{flex:1;overflow:auto}.source_table .header{padding:var(--o) var(--p);background:var(--g)}.source_table .header h2{font-size:22px;font-weight:700;color:var(--a);margin-bottom:var(--c)}table.file_list .totals-row td{padding:var(--c) var(--c);font-weight:600;border-bottom:2px solid var(--q);background:var(--ai)}.totals-row .t-file-count{font-size:18px;font-weight:700;color:var(--a)}.t-missed-method-toggle{color:var(--r);font-weight:600;cursor:pointer;text-decoration:none}.t-missed-method-toggle:hover{text-decoration:underline;color:var(--r)}.t-missed-method-list ul{padding-left:2em;margin-top:var(--f);max-height:200px;overflow-y:auto}.t-missed-method-list li{list-style:none}.source_table pre{margin:0;padding:0;white-space:normal;color:var(--a);font-family:var(--as);font-size:16px;line-height:24px;background:var(--ao);border:1px solid var(--n);border-top:none}.source_table code{color:inherit;font-family:var(--as)}.source_table pre ol{margin:0;padding:0;list-style:none;counter-reset:linenumber}.source_table pre li{display:flex;counter-increment:linenumber;background:var(--ab)}.source_table pre li:before{content:counter(linenumber);flex-shrink:0;width:50px;padding:0 8px;text-align:right;color:var(--ap);background:var(--ah);border-right:1px solid var(--n);-webkit-user-select:none;user-select:none;cursor:pointer}.source_table pre li:hover:before{color:var(--a)}.source_table pre li:hover{cursor:pointer}.source_table pre li code{order:1;flex:1;min-width:0;padding:0 12px;white-space:pre-wrap}.source_table pre .hits{order:2;flex-shrink:0;padding:0 var(--c);background:var(--ak);color:var(--al);font-family:var(--as);font-size:14px;text-align:center;line-height:24px;border-left:1px solid var(--n);-webkit-user-select:none;user-select:none}.source_table pre .hits:after{content:attr(data-content)}.source_table .covered{background-color:var(--i)}.source_table .missed{background-color:var(--k)}.source_table .never{background-color:var(--ab)}.source_table .skipped{background-color:var(--af)}.source_table .missed-branch{background-color:var(--w)}.source_table .missed-method{background-color:var(--z)}.source_table .covered:before{background-color:var(--j)}.source_table .missed:before{background-color:var(--l)}.source_table .never:before{background-color:var(--am)}.source_table .skipped:before{background-color:var(--ag)}.source_table .missed-branch:before{background-color:var(--x)}.source_table .missed-method:before{background-color:var(--aa)}.source_table .outside-tests{background-color:var(--ac)}.source_table .outside-tests:before{background-color:var(--ad)}.outside-tests-text{color:var(--s)}.source_table .covered.production-never:before,.source_table .outside-tests.production-never:before{box-shadow:inset 4px 0 0 var(--ae)}.source_table .missed.production-ran:before,.source_table .missed-branch.production-ran:before,.source_table .missed-method.production-ran:before{box-shadow:inset 4px 0 0 var(--t)}.source_table pre .hits--production{color:var(--t)}.source_table pre button.hits--tests{appearance:none;border:0;border-left:1px solid var(--n);cursor:pointer;display:flex;align-items:flex-start;justify-content:center}.source_table pre button.hits--tests:hover:after,.source_table pre button.hits--tests[aria-expanded=true]:after{text-decoration:underline}.source_table pre .hits--tests-none{color:var(--s)}.source_table pre li.tests-peek{counter-increment:none;display:block;padding:6px 12px 8px 58px;background:var(--ah);border-top:1px solid var(--n);border-bottom:1px solid var(--n)}.source_table pre li.tests-peek:before{content:none}.source_table pre .tests-peek li{counter-increment:none;display:block;background:transparent}.source_table pre .tests-peek li:before{content:none}.tests-peek__title{font-family:var(--aj);font-size:13px;font-weight:600;color:var(--h);margin-bottom:4px}.tests-peek__note{font-family:var(--aj);font-size:13px;color:var(--e)}.tests-peek__list{margin:0;padding:0;list-style:none;columns:30ch;column-gap:24px;max-height:240px;overflow-y:auto}.tests-peek__list code{font-size:13px;-webkit-user-select:all;user-select:all}.toolbar{display:flex;align-items:flex-start;gap:var(--c);flex-shrink:0;margin-right:var(--bb)}.toolbar-toggle{appearance:none;background:transparent;color:var(--h);border:1px solid var(--b);border-radius:999px;padding:var(--f) var(--o);font-size:16px;font-family:var(--aj);cursor:pointer;white-space:nowrap;transition:color .15s,border-color .15s,background .15s}.toolbar-toggle:hover{color:var(--a);background:var(--g);border-color:var(--q)}.toolbar-toggle[aria-pressed=true]{background:var(--u);color:var(--d);border-color:var(--d)}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,[tabindex]:focus-visible,.source_table pre li:focus-visible{outline:2px solid var(--d);outline-offset:2px;border-radius:3px}#footer,.source-dialog__footer{color:var(--e);font-size:16px;text-align:center}#footer{margin-top:var(--bc)}.source-dialog__footer{flex-shrink:0;padding:var(--aw) var(--p);background:var(--m);border-top:1px solid var(--b)}#footer a,.source-dialog__footer a{color:var(--h);text-decoration:underline}#footer a:hover,.source-dialog__footer a:hover{color:var(--a)}#footer,.source-dialog__footer{max-height:10em;overflow-y:auto}.footer-runs{display:inline-block;vertical-align:top}.footer-runs summary{cursor:pointer}.footer-runs__list{display:block;max-height:6em;overflow-y:auto}table.file_list thead th.sorting,table.file_list thead th.sorting_asc,table.file_list thead th.sorting_desc{cursor:pointer;position:relative;padding-right:12px}table.file_list thead th.sorting:after,table.file_list thead th.sorting_asc:after,table.file_list thead th.sorting_desc:after{position:absolute;right:2px;top:50%;transform:translateY(-50%);font-size:14px;color:var(--e)}table.file_list thead th.sorting:after{content:"\2195"}table.file_list thead th.sorting_asc:after{content:"\2191"}table.file_list thead th.sorting_desc:after{content:"\2193"}@media print{:root,.dark-mode{--m: #fff;--g: #fff;--ai: #f4f5f7;--a: #111;--h: #333;--e: #444;--aq: #f4f5f7;--b: #c0c5cc;--q: #999;--d: #0550ae;--green: #116329;--red: #a40e26;--yellow: #7a5200;--at: #953800;--v: #d0d7de;--i: #ccf5d0;--j: #9ae6a4;--k: #ffd8d5;--l: #ffb8b3;--ab: #fff;--am: #f0f1f3;--af: #fff0a0;--ag: #eed860;--w: #ffd0a0;--x: #ffb060;--y: #b45309;--z: #e8d0ff;--aa: #d4b0ff;--r: #7b2d8e;--ac: #dfe5ee;--ad: #b6c4da;--s: #3f5578;--t: #0d7a80;--ae: #8a919a;--ao: #fff;--n: #c0c5cc;--ap: #444;--ah: #f0f1f3;--ak: #e0e3e8;--al: #333}.colorblind-mode{--green: #0060a8;--red: #c2410c;--i: #d3eaf7;--j: #a5d2ee;--k: #ffe0cc;--l: #ffc39a}body{padding:0;font-size:12pt}#loading,#sort-overlay,.toolbar,.source-dialog__toggles,.tab-bar,.source_files,.col-filter--name,.col-filter__coverage,tr.t-show-all,table.file_list thead th.sorting:after,table.file_list thead th.sorting_asc:after,table.file_list thead th.sorting_desc:after{display:none!important}#wrapper,.file_list_container{display:block!important}body:has(.source-dialog[open]) #wrapper{display:none!important}#content{border:none;border-radius:0;padding:0}.file_list_container .group_name{display:inline!important;font-size:16pt;font-weight:700}.file_list_container .covered_percent{display:inline!important;font-weight:600}.file_list_container+.file_list_container{margin-top:24pt}dialog.source-dialog{display:none}dialog.source-dialog[open]{display:block!important;position:static;width:100%;height:auto;max-height:none;overflow:visible;background:#fff}.source-dialog__close{display:none!important}.source-dialog__header{display:block;border-bottom:none;padding:0 0 8pt}.source-dialog__title h2{word-break:normal;overflow-wrap:break-word}.source-legend{justify-content:flex-start}.source-dialog__body{overflow:visible}.source_table pre{font-size:8pt;line-height:1.4}.source_table pre li{-webkit-print-color-adjust:exact;print-color-adjust:exact}.source_table pre li:before{-webkit-print-color-adjust:exact;print-color-adjust:exact}.source_table pre .hits{-webkit-print-color-adjust:exact;print-color-adjust:exact}.coverage-bar{border:1px solid var(--b);-webkit-print-color-adjust:exact;print-color-adjust:exact}.coverage-bar__fill{-webkit-print-color-adjust:exact;print-color-adjust:exact}table.file_list tbody tr:nth-child(2n){-webkit-print-color-adjust:exact;print-color-adjust:exact}table.file_list{font-size:10pt}table.file_list thead th{font-size:9pt}table.file_list{page-break-inside:auto}table.file_list tr{page-break-inside:avoid}table.file_list thead{display:table-header-group}#footer,.source-dialog__footer{font-size:10pt;margin-top:12pt}#footer a:after,.source-dialog__footer a:after{content:" (" attr(href) ")";font-size:9pt;color:var(--e)}}
8
8
  </style>
9
9
  <script>
10
10
  // Apply the saved dark/light and colorblind preferences before paint to
@@ -60,12 +60,13 @@
60
60
  <button class="source-dialog__close" aria-label="Close" title="Close">&times;</button>
61
61
  </div>
62
62
  <div class="source-dialog__body" id="source-dialog-body" tabindex="0"></div>
63
+ <div class="source-dialog__footer" id="source-dialog-footer"></div>
63
64
  </dialog>
64
65
 
65
66
  <!-- SIMPLECOV_COVERAGE_DATA -->
66
- <script>"use strict";(()=>{var In=Object.create;var ht=Object.defineProperty;var Hn=Object.getOwnPropertyDescriptor;var kn=Object.getOwnPropertyNames;var $n=Object.getPrototypeOf,Dn=Object.prototype.hasOwnProperty;var Bn=(e,t)=>()=>{try{return t||e((t={exports:{}}).exports,t),t.exports}catch(n){throw t=0,n}};var Fn=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of kn(t))!Dn.call(e,o)&&o!==n&&ht(e,o,{get:()=>t[o],enumerable:!(r=Hn(t,o))||r.enumerable});return e};var Pn=(e,t,n)=>(n=e!=null?In($n(e)):{},Fn(t||!e||!e.__esModule?ht(n,"default",{value:e,enumerable:!0}):n,e));var oe=(e,t,n)=>new Promise((r,o)=>{var l=a=>{try{s(n.next(a))}catch(d){o(d)}},i=a=>{try{s(n.throw(a))}catch(d){o(d)}},s=a=>a.done?r(a.value):Promise.resolve(a.value).then(l,i);s((n=n.apply(e,t)).next())});var qt=Bn((Ao,Pt)=>{function xt(e){return e instanceof Map?e.clear=e.delete=e.set=function(){throw new Error("map is read-only")}:e instanceof Set&&(e.add=e.clear=e.delete=function(){throw new Error("set is read-only")}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach(t=>{let n=e[t],r=typeof n;(r==="object"||r==="function")&&!Object.isFrozen(n)&&xt(n)}),e}var we=class{constructor(t){t.data===void 0&&(t.data={}),this.data=t.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}};function At(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;")}function V(e,...t){let n=Object.create(null);for(let r in e)n[r]=e[r];return t.forEach(function(r){for(let o in r)n[o]=r[o]}),n}var jn="</span>",Mt=e=>!!e.scope,zn=(e,{prefix:t})=>{if(e.startsWith("language:"))return e.replace("language:","language-");if(e.includes(".")){let n=e.split(".");return[`${t}${n.shift()}`,...n.map((r,o)=>`${r}${"_".repeat(o+1)}`)].join(" ")}return`${t}${e}`},Fe=class{constructor(t,n){this.buffer="",this.classPrefix=n.classPrefix,t.walk(this)}addText(t){this.buffer+=At(t)}openNode(t){if(!Mt(t))return;let n=zn(t.scope,{prefix:this.classPrefix});this.span(n)}closeNode(t){Mt(t)&&(this.buffer+=jn)}value(){return this.buffer}span(t){this.buffer+=`<span class="${t}">`}},wt=(e={})=>{let t={children:[]};return Object.assign(t,e),t},Pe=class e{constructor(){this.rootNode=wt(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(t){this.top.children.push(t)}openNode(t){let n=wt({scope:t});this.add(n),this.stack.push(n)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(t){return this.constructor._walk(t,this.rootNode)}static _walk(t,n){return typeof n=="string"?t.addText(n):n.children&&(t.openNode(n),n.children.forEach(r=>this._walk(t,r)),t.closeNode(n)),t}static _collapse(t){typeof t!="string"&&t.children&&(t.children.every(n=>typeof n=="string")?t.children=[t.children.join("")]:t.children.forEach(n=>{e._collapse(n)}))}},qe=class extends Pe{constructor(t){super(),this.options=t}addText(t){t!==""&&this.add(t)}startScope(t){this.openNode(t)}endScope(){this.closeNode()}__addSublanguage(t,n){let r=t.root;n&&(r.scope=`language:${n}`),this.add(r)}toHTML(){return new Fe(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}};function de(e){return e?typeof e=="string"?e:e.source:null}function Rt(e){return J("(?=",e,")")}function Gn(e){return J("(?:",e,")*")}function Kn(e){return J("(?:",e,")?")}function J(...e){return e.map(n=>de(n)).join("")}function Vn(e){let t=e[e.length-1];return typeof t=="object"&&t.constructor===Object?(e.splice(e.length-1,1),t):{}}function Ue(...e){return"("+(Vn(e).capture?"":"?:")+e.map(r=>de(r)).join("|")+")"}function Nt(e){return new RegExp(e.toString()+"|").exec("").length-1}function Xn(e,t){let n=e&&e.exec(t);return n&&n.index===0}var Yn=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function je(e,{joinWith:t}){let n=0;return e.map(r=>{n+=1;let o=n,l=de(r),i="";for(;l.length>0;){let s=Yn.exec(l);if(!s){i+=l;break}i+=l.substring(0,s.index),l=l.substring(s.index+s[0].length),s[0][0]==="\\"&&s[1]?i+="\\"+String(Number(s[1])+o):(i+=s[0],s[0]==="("&&n++)}return i}).map(r=>`(${r})`).join(t)}var Zn=/\b\B/,Ot="[a-zA-Z]\\w*",ze="[a-zA-Z_]\\w*",It="\\b\\d+(\\.\\d+)?",Ht="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",kt="\\b(0b[01]+)",Qn="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",Jn=(e={})=>{let t=/^#![ ]*\//;return e.binary&&(e.begin=J(t,/.*\b/,e.binary,/\b.*/)),V({scope:"meta",begin:t,end:/$/,relevance:0,"on:begin":(n,r)=>{n.index!==0&&r.ignoreMatch()}},e)},fe={begin:"\\\\[\\s\\S]",relevance:0},er={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[fe]},tr={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[fe]},nr={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},Te=function(e,t,n={}){let r=V({scope:"comment",begin:e,end:t,contains:[]},n);r.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});let o=Ue("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return r.contains.push({begin:J(/[ ]+/,"(",o,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),r},rr=Te("//","$"),or=Te("/\\*","\\*/"),ir=Te("#","$"),sr={scope:"number",begin:It,relevance:0},lr={scope:"number",begin:Ht,relevance:0},ar={scope:"number",begin:kt,relevance:0},cr={scope:"regexp",begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[fe,{begin:/\[/,end:/\]/,relevance:0,contains:[fe]}]},ur={scope:"title",begin:Ot,relevance:0},dr={scope:"title",begin:ze,relevance:0},fr={begin:"\\.\\s*"+ze,relevance:0},gr=function(e){return Object.assign(e,{"on:begin":(t,n)=>{n.data._beginMatch=t[1]},"on:end":(t,n)=>{n.data._beginMatch!==t[1]&&n.ignoreMatch()}})},Me=Object.freeze({__proto__:null,APOS_STRING_MODE:er,BACKSLASH_ESCAPE:fe,BINARY_NUMBER_MODE:ar,BINARY_NUMBER_RE:kt,COMMENT:Te,C_BLOCK_COMMENT_MODE:or,C_LINE_COMMENT_MODE:rr,C_NUMBER_MODE:lr,C_NUMBER_RE:Ht,END_SAME_AS_BEGIN:gr,HASH_COMMENT_MODE:ir,IDENT_RE:Ot,MATCH_NOTHING_RE:Zn,METHOD_GUARD:fr,NUMBER_MODE:sr,NUMBER_RE:It,PHRASAL_WORDS_MODE:nr,QUOTE_STRING_MODE:tr,REGEXP_MODE:cr,RE_STARTERS_RE:Qn,SHEBANG:Jn,TITLE_MODE:ur,UNDERSCORE_IDENT_RE:ze,UNDERSCORE_TITLE_MODE:dr});function pr(e,t){e.input[e.index-1]==="."&&t.ignoreMatch()}function hr(e,t){e.className!==void 0&&(e.scope=e.className,delete e.className)}function mr(e,t){t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",e.__beforeBegin=pr,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,e.relevance===void 0&&(e.relevance=0))}function br(e,t){Array.isArray(e.illegal)&&(e.illegal=Ue(...e.illegal))}function vr(e,t){if(e.match){if(e.begin||e.end)throw new Error("begin & end are not supported with match");e.begin=e.match,delete e.match}}function Er(e,t){e.relevance===void 0&&(e.relevance=1)}var _r=(e,t)=>{if(!e.beforeMatch)return;if(e.starts)throw new Error("beforeMatch cannot be used with starts");let n=Object.assign({},e);Object.keys(e).forEach(r=>{delete e[r]}),e.keywords=n.keywords,e.begin=J(n.beforeMatch,Rt(n.begin)),e.starts={relevance:0,contains:[Object.assign(n,{endsParent:!0})]},e.relevance=0,delete n.beforeMatch},yr=["of","and","for","in","not","or","if","then","parent","list","value"],Mr="keyword";function $t(e,t,n=Mr){let r=Object.create(null);return typeof e=="string"?o(n,e.split(" ")):Array.isArray(e)?o(n,e):Object.keys(e).forEach(function(l){Object.assign(r,$t(e[l],t,l))}),r;function o(l,i){t&&(i=i.map(s=>s.toLowerCase())),i.forEach(function(s){let a=s.split("|");r[a[0]]=[l,wr(a[0],a[1])]})}}function wr(e,t){return t?Number(t):Sr(e)?0:1}function Sr(e){return yr.includes(e.toLowerCase())}var St={},Q=e=>{console.error(e)},Tt=(e,...t)=>{console.log(`WARN: ${e}`,...t)},se=(e,t)=>{St[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),St[`${e}/${t}`]=!0)},Se=new Error;function Dt(e,t,{key:n}){let r=0,o=e[n],l={},i={};for(let s=1;s<=t.length;s++)i[s+r]=o[s],l[s+r]=!0,r+=Nt(t[s-1]);e[n]=i,e[n]._emit=l,e[n]._multi=!0}function Tr(e){if(Array.isArray(e.begin)){if(e.skip||e.excludeBegin||e.returnBegin)throw Q("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),Se;if(typeof e.beginScope!="object"||e.beginScope===null)throw Q("beginScope must be object"),Se;Dt(e,e.begin,{key:"beginScope"}),e.begin=je(e.begin,{joinWith:""})}}function Lr(e){if(Array.isArray(e.end)){if(e.skip||e.excludeEnd||e.returnEnd)throw Q("skip, excludeEnd, returnEnd not compatible with endScope: {}"),Se;if(typeof e.endScope!="object"||e.endScope===null)throw Q("endScope must be object"),Se;Dt(e,e.end,{key:"endScope"}),e.end=je(e.end,{joinWith:""})}}function Cr(e){e.scope&&typeof e.scope=="object"&&e.scope!==null&&(e.beginScope=e.scope,delete e.scope)}function xr(e){Cr(e),typeof e.beginScope=="string"&&(e.beginScope={_wrap:e.beginScope}),typeof e.endScope=="string"&&(e.endScope={_wrap:e.endScope}),Tr(e),Lr(e)}function Ar(e){function t(i,s){return new RegExp(de(i),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(s?"g":""))}class n{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(s,a){a.position=this.position++,this.matchIndexes[this.matchAt]=a,this.regexes.push([a,s]),this.matchAt+=Nt(s)+1}compile(){this.regexes.length===0&&(this.exec=()=>null);let s=this.regexes.map(a=>a[1]);this.matcherRe=t(je(s,{joinWith:"|"}),!0),this.lastIndex=0}exec(s){this.matcherRe.lastIndex=this.lastIndex;let a=this.matcherRe.exec(s);if(!a)return null;let d=a.findIndex((_,w)=>w>0&&_!==void 0),p=this.matchIndexes[d];return a.splice(0,d),Object.assign(a,p)}}class r{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(s){if(this.multiRegexes[s])return this.multiRegexes[s];let a=new n;return this.rules.slice(s).forEach(([d,p])=>a.addRule(d,p)),a.compile(),this.multiRegexes[s]=a,a}resumingScanAtSamePosition(){return this.regexIndex!==0}considerAll(){this.regexIndex=0}addRule(s,a){this.rules.push([s,a]),a.type==="begin"&&this.count++}exec(s){let a=this.getMatcher(this.regexIndex);a.lastIndex=this.lastIndex;let d=a.exec(s);if(this.resumingScanAtSamePosition()&&!(d&&d.index===this.lastIndex)){let p=this.getMatcher(0);p.lastIndex=this.lastIndex+1,d=p.exec(s)}return d&&(this.regexIndex+=d.position+1,this.regexIndex===this.count&&this.considerAll()),d}}function o(i){let s=new r;return i.contains.forEach(a=>s.addRule(a.begin,{rule:a,type:"begin"})),i.terminatorEnd&&s.addRule(i.terminatorEnd,{type:"end"}),i.illegal&&s.addRule(i.illegal,{type:"illegal"}),s}function l(i,s){let a=i;if(i.isCompiled)return a;[hr,vr,xr,_r].forEach(p=>p(i,s)),e.compilerExtensions.forEach(p=>p(i,s)),i.__beforeBegin=null,[mr,br,Er].forEach(p=>p(i,s)),i.isCompiled=!0;let d=null;return typeof i.keywords=="object"&&i.keywords.$pattern&&(i.keywords=Object.assign({},i.keywords),d=i.keywords.$pattern,delete i.keywords.$pattern),d=d||/\w+/,i.keywords&&(i.keywords=$t(i.keywords,e.case_insensitive)),a.keywordPatternRe=t(d,!0),s&&(i.begin||(i.begin=/\B|\b/),a.beginRe=t(a.begin),!i.end&&!i.endsWithParent&&(i.end=/\B|\b/),i.end&&(a.endRe=t(a.end)),a.terminatorEnd=de(a.end)||"",i.endsWithParent&&s.terminatorEnd&&(a.terminatorEnd+=(i.end?"|":"")+s.terminatorEnd)),i.illegal&&(a.illegalRe=t(i.illegal)),i.contains||(i.contains=[]),i.contains=[].concat(...i.contains.map(function(p){return Rr(p==="self"?i:p)})),i.contains.forEach(function(p){l(p,a)}),i.starts&&l(i.starts,s),a.matcher=o(a),a}if(e.compilerExtensions||(e.compilerExtensions=[]),e.contains&&e.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return e.classNameAliases=V(e.classNameAliases||{}),l(e)}function Bt(e){return e?e.endsWithParent||Bt(e.starts):!1}function Rr(e){return e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map(function(t){return V(e,{variants:null},t)})),e.cachedVariants?e.cachedVariants:Bt(e)?V(e,{starts:e.starts?V(e.starts):null}):Object.isFrozen(e)?V(e):e}var Nr="11.11.1",We=class extends Error{constructor(t,n){super(t),this.name="HTMLInjectionError",this.html=n}},Be=At,Lt=V,Ct=Symbol("nomatch"),Or=7,Ft=function(e){let t=Object.create(null),n=Object.create(null),r=[],o=!0,l="Could not find the language '{}', did you forget to load/include a language module?",i={disableAutodetect:!0,name:"Plain text",contains:[]},s={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:qe};function a(c){return s.noHighlightRe.test(c)}function d(c){let g=c.className+" ";g+=c.parentNode?c.parentNode.className:"";let b=s.languageDetectRe.exec(g);if(b){let y=W(b[1]);return y||(Tt(l.replace("{}",b[1])),Tt("Falling back to no-highlight mode for this block.",c)),y?b[1]:"no-highlight"}return g.split(/\s+/).find(y=>a(y)||W(y))}function p(c,g,b){let y="",T="";typeof g=="object"?(y=c,b=g.ignoreIllegals,T=g.language):(se("10.7.0","highlight(lang, code, ...args) has been deprecated."),se("10.7.0",`Please use highlight(code, options) instead.
67
- https://github.com/highlightjs/highlight.js/issues/2277`),T=c,y=g),b===void 0&&(b=!0);let D={code:y,language:T};ve("before:highlight",D);let K=D.result?D.result:_(D.language,D.code,b);return K.code=D.code,ve("after:highlight",K),K}function _(c,g,b,y){let T=Object.create(null);function D(u,f){return u.keywords[f]}function K(){if(!h.keywords){L.addText(M);return}let u=0;h.keywordPatternRe.lastIndex=0;let f=h.keywordPatternRe.exec(M),m="";for(;f;){m+=M.substring(u,f.index);let E=F.case_insensitive?f[0].toLowerCase():f[0],x=D(h,E);if(x){let[U,Nn]=x;if(L.addText(m),m="",T[E]=(T[E]||0)+1,T[E]<=Or&&(ye+=Nn),U.startsWith("_"))m+=f[0];else{let On=F.classNameAliases[U]||U;B(f[0],On)}}else m+=f[0];u=h.keywordPatternRe.lastIndex,f=h.keywordPatternRe.exec(M)}m+=M.substring(u),L.addText(m)}function Ee(){if(M==="")return;let u=null;if(typeof h.subLanguage=="string"){if(!t[h.subLanguage]){L.addText(M);return}u=_(h.subLanguage,M,!0,pt[h.subLanguage]),pt[h.subLanguage]=u._top}else u=C(M,h.subLanguage.length?h.subLanguage:null);h.relevance>0&&(ye+=u.relevance),L.__addSublanguage(u._emitter,u.language)}function H(){h.subLanguage!=null?Ee():K(),M=""}function B(u,f){u!==""&&(L.startScope(f),L.addText(u),L.endScope())}function ut(u,f){let m=1,E=f.length-1;for(;m<=E;){if(!u._emit[m]){m++;continue}let x=F.classNameAliases[u[m]]||u[m],U=f[m];x?B(U,x):(M=U,K(),M=""),m++}}function dt(u,f){return u.scope&&typeof u.scope=="string"&&L.openNode(F.classNameAliases[u.scope]||u.scope),u.beginScope&&(u.beginScope._wrap?(B(M,F.classNameAliases[u.beginScope._wrap]||u.beginScope._wrap),M=""):u.beginScope._multi&&(ut(u.beginScope,f),M="")),h=Object.create(u,{parent:{value:h}}),h}function ft(u,f,m){let E=Xn(u.endRe,m);if(E){if(u["on:end"]){let x=new we(u);u["on:end"](f,x),x.isMatchIgnored&&(E=!1)}if(E){for(;u.endsParent&&u.parent;)u=u.parent;return u}}if(u.endsWithParent)return ft(u.parent,f,m)}function Ln(u){return h.matcher.regexIndex===0?(M+=u[0],1):($e=!0,0)}function Cn(u){let f=u[0],m=u.rule,E=new we(m),x=[m.__beforeBegin,m["on:begin"]];for(let U of x)if(U&&(U(u,E),E.isMatchIgnored))return Ln(f);return m.skip?M+=f:(m.excludeBegin&&(M+=f),H(),!m.returnBegin&&!m.excludeBegin&&(M=f)),dt(m,u),m.returnBegin?0:f.length}function xn(u){let f=u[0],m=g.substring(u.index),E=ft(h,u,m);if(!E)return Ct;let x=h;h.endScope&&h.endScope._wrap?(H(),B(f,h.endScope._wrap)):h.endScope&&h.endScope._multi?(H(),ut(h.endScope,u)):x.skip?M+=f:(x.returnEnd||x.excludeEnd||(M+=f),H(),x.excludeEnd&&(M=f));do h.scope&&L.closeNode(),!h.skip&&!h.subLanguage&&(ye+=h.relevance),h=h.parent;while(h!==E.parent);return E.starts&&dt(E.starts,u),x.returnEnd?0:f.length}function An(){let u=[];for(let f=h;f!==F;f=f.parent)f.scope&&u.unshift(f.scope);u.forEach(f=>L.openNode(f))}let _e={};function gt(u,f){let m=f&&f[0];if(M+=u,m==null)return H(),0;if(_e.type==="begin"&&f.type==="end"&&_e.index===f.index&&m===""){if(M+=g.slice(f.index,f.index+1),!o){let E=new Error(`0 width match regex (${c})`);throw E.languageName=c,E.badRule=_e.rule,E}return 1}if(_e=f,f.type==="begin")return Cn(f);if(f.type==="illegal"&&!b){let E=new Error('Illegal lexeme "'+m+'" for mode "'+(h.scope||"<unnamed>")+'"');throw E.mode=h,E}else if(f.type==="end"){let E=xn(f);if(E!==Ct)return E}if(f.type==="illegal"&&m==="")return M+=`
68
- `,1;if(ke>1e5&&ke>f.index*3)throw new Error("potential infinite loop, way more iterations than matches");return M+=m,m.length}let F=W(c);if(!F)throw Q(l.replace("{}",c)),new Error('Unknown language: "'+c+'"');let Rn=Ar(F),He="",h=y||Rn,pt={},L=new s.__emitter(s);An();let M="",ye=0,Z=0,ke=0,$e=!1;try{if(F.__emitTokens)F.__emitTokens(g,L);else{for(h.matcher.considerAll();;){ke++,$e?$e=!1:h.matcher.considerAll(),h.matcher.lastIndex=Z;let u=h.matcher.exec(g);if(!u)break;let f=g.substring(Z,u.index),m=gt(f,u);Z=u.index+m}gt(g.substring(Z))}return L.finalize(),He=L.toHTML(),{language:c,value:He,relevance:ye,illegal:!1,_emitter:L,_top:h}}catch(u){if(u.message&&u.message.includes("Illegal"))return{language:c,value:Be(g),illegal:!0,relevance:0,_illegalBy:{message:u.message,index:Z,context:g.slice(Z-100,Z+100),mode:u.mode,resultSoFar:He},_emitter:L};if(o)return{language:c,value:Be(g),illegal:!1,relevance:0,errorRaised:u,_emitter:L,_top:h};throw u}}function w(c){let g={value:Be(c),illegal:!1,relevance:0,_top:i,_emitter:new s.__emitter(s)};return g._emitter.addText(c),g}function C(c,g){g=g||s.languages||Object.keys(t);let b=w(c),y=g.filter(W).filter(be).map(H=>_(H,c,!1));y.unshift(b);let T=y.sort((H,B)=>{if(H.relevance!==B.relevance)return B.relevance-H.relevance;if(H.language&&B.language){if(W(H.language).supersetOf===B.language)return 1;if(W(B.language).supersetOf===H.language)return-1}return 0}),[D,K]=T,Ee=D;return Ee.secondBest=K,Ee}function S(c,g,b){let y=g&&n[g]||b;c.classList.add("hljs"),c.classList.add(`language-${y}`)}function R(c){let g=null,b=d(c);if(a(b))return;if(ve("before:highlightElement",{el:c,language:b}),c.dataset.highlighted){console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",c);return}if(c.children.length>0&&(s.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),console.warn("The element with unescaped HTML:"),console.warn(c)),s.throwUnescapedHTML))throw new We("One of your code blocks includes unescaped HTML.",c.innerHTML);g=c;let y=g.textContent,T=b?p(y,{language:b,ignoreIllegals:!0}):C(y);c.innerHTML=T.value,c.dataset.highlighted="yes",S(c,b,T.language),c.result={language:T.language,re:T.relevance,relevance:T.relevance},T.secondBest&&(c.secondBest={language:T.secondBest.language,relevance:T.secondBest.relevance}),ve("after:highlightElement",{el:c,result:T,text:y})}function N(c){s=Lt(s,c)}let G=()=>{X(),se("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")};function I(){X(),se("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")}let re=!1;function X(){function c(){X()}if(document.readyState==="loading"){re||window.addEventListener("DOMContentLoaded",c,!1),re=!0;return}document.querySelectorAll(s.cssSelector).forEach(R)}function at(c,g){let b=null;try{b=g(e)}catch(y){if(Q("Language definition for '{}' could not be registered.".replace("{}",c)),o)Q(y);else throw y;b=i}b.name||(b.name=c),t[c]=b,b.rawDefinition=g.bind(null,e),b.aliases&&Ie(b.aliases,{languageName:c})}function Y(c){delete t[c];for(let g of Object.keys(n))n[g]===c&&delete n[g]}function ct(){return Object.keys(t)}function W(c){return c=(c||"").toLowerCase(),t[c]||t[n[c]]}function Ie(c,{languageName:g}){typeof c=="string"&&(c=[c]),c.forEach(b=>{n[b.toLowerCase()]=g})}function be(c){let g=W(c);return g&&!g.disableAutodetect}function Mn(c){c["before:highlightBlock"]&&!c["before:highlightElement"]&&(c["before:highlightElement"]=g=>{c["before:highlightBlock"](Object.assign({block:g.el},g))}),c["after:highlightBlock"]&&!c["after:highlightElement"]&&(c["after:highlightElement"]=g=>{c["after:highlightBlock"](Object.assign({block:g.el},g))})}function wn(c){Mn(c),r.push(c)}function Sn(c){let g=r.indexOf(c);g!==-1&&r.splice(g,1)}function ve(c,g){let b=c;r.forEach(function(y){y[b]&&y[b](g)})}function Tn(c){return se("10.7.0","highlightBlock will be removed entirely in v12.0"),se("10.7.0","Please use highlightElement now."),R(c)}Object.assign(e,{highlight:p,highlightAuto:C,highlightAll:X,highlightElement:R,highlightBlock:Tn,configure:N,initHighlighting:G,initHighlightingOnLoad:I,registerLanguage:at,unregisterLanguage:Y,listLanguages:ct,getLanguage:W,registerAliases:Ie,autoDetection:be,inherit:Lt,addPlugin:wn,removePlugin:Sn}),e.debugMode=function(){o=!1},e.safeMode=function(){o=!0},e.versionString=Nr,e.regex={concat:J,lookahead:Rt,either:Ue,optional:Kn,anyNumberOfTimes:Gn};for(let c in Me)typeof Me[c]=="object"&&xt(Me[c]);return Object.assign(e,Me),e},le=Ft({});le.newInstance=()=>Ft({});Pt.exports=le;le.HighlightJS=le;le.default=le});function O(e,t){return(t||document).querySelector(e)}function v(e,t){return Array.from((t||document).querySelectorAll(e))}function P(e,t,n,r){typeof n=="function"?e.addEventListener(t,n):e.addEventListener(t,function(o){let l=o.target.closest(n);l&&e.contains(l)&&r&&r.call(l,o)})}var qn={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function k(e){return e.replace(/[&<>"']/g,t=>qn[t])}function mt(e){return oe(this,null,function*(){let t=new TextEncoder().encode(e),n=yield crypto.subtle.digest("SHA-1",t);return Array.from(new Uint8Array(n,0,4),r=>r.toString(16).padStart(2,"0")).join("")})}var Wn=90,Un=75;function q(e){return e>=Wn?"green":e>=Un?"yellow":"red"}function A(e){return e.toString().replace(/\B(?=(\d{3})+(?!\d))/g,",")}function j(e){return(Math.floor(e*100)/100).toFixed(2)}function bt(e){return"g-"+e.replace(/[^a-zA-Z0-9-]/gu,t=>`_${t.codePointAt(0).toString(16)}_`)}var vt=[[31536e3,"year"],[2592e3,"month"],[86400,"day"],[3600,"hour"],[60,"minute"],[1,"second"]];function Et(e){let t=Math.floor((Date.now()-e.getTime())/1e3);for(let[n,r]of vt){let o=Math.floor(t/n);if(o>=1)return o===1?`about 1 ${r} ago`:`${o} ${r}s ago`}return"just now"}function _t(e){let t=(Date.now()-e.getTime())/1e3;for(let[n]of vt){let r=Math.floor(t/n);if(r>=1){let o=(r+1)*n;return Math.max((o-t)*1e3+500,1e3)}}return 1e3}var De=new Map;function ie(e){let t=De.get(e);if(t===void 0)throw new Error(`File ID was not precomputed for ${e}`);return t}function yt(e){return oe(this,null,function*(){De.clear();let t=[...new Set(e)],n=yield Promise.all(t.map(mt)),r=new Map;t.forEach((o,l)=>{let i=n[l],s=r.get(i)||[];s.push(o),r.set(i,s)});for(let[o,l]of r)l.sort().forEach((i,s)=>{De.set(i,s===0?o:`${o}-${s}`)})})}var Wt=Pn(qt(),1);var Ge=Wt.default;function Ut(e){let t=e.regex,n="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",r=t.either(/\b([A-Z]+[a-z0-9]+)+/,/\b([A-Z]+[a-z0-9]+)+[A-Z]+/),o=t.concat(r,/(::\w+)*/),i={"variable.constant":["__FILE__","__LINE__","__ENCODING__"],"variable.language":["self","super"],keyword:["alias","and","begin","BEGIN","break","case","class","defined","do","else","elsif","end","END","ensure","for","if","in","module","next","not","or","redo","require","rescue","retry","return","then","undef","unless","until","when","while","yield",...["include","extend","prepend","public","private","protected","raise","throw"]],built_in:["proc","lambda","attr_accessor","attr_reader","attr_writer","define_method","private_constant","module_function"],literal:["true","false","nil"]},s={className:"doctag",begin:"@[A-Za-z]+"},a={begin:"#<",end:">"},d=[e.COMMENT("#","$",{contains:[s]}),e.COMMENT("^=begin","^=end",{contains:[s],relevance:10}),e.COMMENT("^__END__",e.MATCH_NOTHING_RE)],p={className:"subst",begin:/#\{/,end:/\}/,keywords:i},_={className:"string",contains:[e.BACKSLASH_ESCAPE,p],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/,end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{begin:/%[qQwWx]?</,end:/>/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/,end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{begin:t.concat(/<<[-~]?'?/,t.lookahead(/(\w+)(?=\W)[^\n]*\n(?:[^\n]*\n)*?\s*\1\b/)),contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,contains:[e.BACKSLASH_ESCAPE,p]})]}]},w="[1-9](_?[0-9])*|0",C="[0-9](_?[0-9])*",S={className:"number",relevance:0,variants:[{begin:`\\b(${w})(\\.(${C}))?([eE][+-]?(${C})|r)?i?\\b`},{begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{begin:"\\b0(_?[0-7])+r?i?\\b"}]},R={variants:[{match:/\(\)/},{className:"params",begin:/\(/,end:/(?=\))/,excludeBegin:!0,endsParent:!0,keywords:i}]},Y=[_,{variants:[{match:[/class\s+/,o,/\s+<\s+/,o]},{match:[/\b(class|module)\s+/,o]}],scope:{2:"title.class",4:"title.class.inherited"},keywords:i},{match:[/(include|extend)\s+/,o],scope:{2:"title.class"},keywords:i},{relevance:0,match:[o,/\.new[. (]/],scope:{1:"title.class"}},{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"},{relevance:0,match:r,scope:"title.class"},{match:[/def/,/\s+/,n],scope:{1:"keyword",3:"title.function"},contains:[R]},{begin:e.IDENT_RE+"::"},{className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol",begin:":(?!\\s)",contains:[_,{begin:n}],relevance:0},S,{className:"variable",begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{className:"params",begin:/\|(?!=)/,end:/\|/,excludeBegin:!0,excludeEnd:!0,relevance:0,keywords:i},{begin:"("+e.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{className:"regexp",contains:[e.BACKSLASH_ESCAPE,p],illegal:/\n/,variants:[{begin:"/",end:"/[a-z]*"},{begin:/%r\{/,end:/\}[a-z]*/},{begin:"%r\\(",end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}].concat(a,d),relevance:0}].concat(a,d);p.contains=Y,R.contains=Y;let be=[{begin:/^\s*=>/,starts:{end:"$",contains:Y}},{className:"meta.prompt",begin:"^("+"[>?]>"+"|"+"[\\w#]+\\(\\w+\\):\\d+:\\d+[>*]"+"|"+"(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>"+")(?=[ ])",starts:{end:"$",keywords:i,contains:Y}}];return d.unshift(a),{name:"Ruby",aliases:["rb","gemspec","podspec","thor","irb"],keywords:i,illegal:/\/\*/,contains:[e.SHEBANG({binary:"ruby"})].concat(be).concat(d).concat(Y)}}function Ir(e){if(e==="oneshot_line")return"line";if(e==="line"||e==="branch"||e==="method")return e}function jt(e){let t=Ir(e.primary_coverage);return t==="line"&&e.line_coverage||t==="branch"&&e.branch_coverage||t==="method"&&e.method_coverage?t:e.line_coverage?"line":e.branch_coverage?"branch":"method"}function Hr(e,t){return t==="line"?e.lines:t==="branch"?e.branches:e.methods}function Le(e,t){return Hr(e,t)||e.lines||e.branches||e.methods}function Ve(e){let t=q(e),n=j(e);return`<div class="bar-sizer"><div class="coverage-bar"><div class="coverage-bar__fill coverage-bar__fill--${t}" style="width: ${n}%"></div></div></div>`}function ee(e,t,n,r,o){let l=q(e),i=j(e),s=`<div class="coverage-cell">${Ve(e)}<span class="coverage-pct">${i}%</span></div>`;if(o)return`<td class="cell--coverage strong t-totals__${r}-pct ${l}">${s}</td><td class="cell--numerator strong t-totals__${r}-num">${A(t)}/</td><td class="cell--denominator strong t-totals__${r}-den">${A(n)}</td>`;let a=` data-order="${j(e)}"`;return`<td class="cell--coverage cell--${r}-pct ${l}"${a}>${s}</td><td class="cell--numerator">${A(t)}/</td><td class="cell--denominator">${A(n)}</td>`}function Ce(e,t,n,r){return`<th class="cell--coverage">
67
+ <script>"use strict";(()=>{var Jn=Object.create;var Lt=Object.defineProperty;var Qn=Object.getOwnPropertyDescriptor;var er=Object.getOwnPropertyNames;var tr=Object.getPrototypeOf,nr=Object.prototype.hasOwnProperty;var rr=(e,t)=>()=>{try{return t||e((t={exports:{}}).exports,t),t.exports}catch(n){throw t=0,n}};var or=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of er(t))!nr.call(e,o)&&o!==n&&Lt(e,o,{get:()=>t[o],enumerable:!(r=Qn(t,o))||r.enumerable});return e};var sr=(e,t,n)=>(n=e!=null?Jn(tr(e)):{},or(t||!e||!e.__esModule?Lt(n,"default",{value:e,enumerable:!0}):n,e));var le=(e,t,n)=>new Promise((r,o)=>{var i=a=>{try{c(n.next(a))}catch(d){o(d)}},s=a=>{try{c(n.throw(a))}catch(d){o(d)}},c=a=>a.done?r(a.value):Promise.resolve(a.value).then(i,s);c((n=n.apply(e,t)).next())});var Jt=rr((os,Yt)=>{function Pt(e){return e instanceof Map?e.clear=e.delete=e.set=function(){throw new Error("map is read-only")}:e instanceof Set&&(e.add=e.clear=e.delete=function(){throw new Error("set is read-only")}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach(t=>{let n=e[t],r=typeof n;(r==="object"||r==="function")&&!Object.isFrozen(n)&&Pt(n)}),e}var ke=class{constructor(t){t.data===void 0&&(t.data={}),this.data=t.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}};function Ft(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;")}function V(e,...t){let n=Object.create(null);for(let r in e)n[r]=e[r];return t.forEach(function(r){for(let o in r)n[o]=r[o]}),n}var lr="</span>",Ot=e=>!!e.scope,ur=(e,{prefix:t})=>{if(e.startsWith("language:"))return e.replace("language:","language-");if(e.includes(".")){let n=e.split(".");return[`${t}${n.shift()}`,...n.map((r,o)=>`${r}${"_".repeat(o+1)}`)].join(" ")}return`${t}${e}`},Qe=class{constructor(t,n){this.buffer="",this.classPrefix=n.classPrefix,t.walk(this)}addText(t){this.buffer+=Ft(t)}openNode(t){if(!Ot(t))return;let n=ur(t.scope,{prefix:this.classPrefix});this.span(n)}closeNode(t){Ot(t)&&(this.buffer+=lr)}value(){return this.buffer}span(t){this.buffer+=`<span class="${t}">`}},kt=(e={})=>{let t={children:[]};return Object.assign(t,e),t},et=class e{constructor(){this.rootNode=kt(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(t){this.top.children.push(t)}openNode(t){let n=kt({scope:t});this.add(n),this.stack.push(n)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(t){return this.constructor._walk(t,this.rootNode)}static _walk(t,n){return typeof n=="string"?t.addText(n):n.children&&(t.openNode(n),n.children.forEach(r=>this._walk(t,r)),t.closeNode(n)),t}static _collapse(t){typeof t!="string"&&t.children&&(t.children.every(n=>typeof n=="string")?t.children=[t.children.join("")]:t.children.forEach(n=>{e._collapse(n)}))}},tt=class extends et{constructor(t){super(),this.options=t}addText(t){t!==""&&this.add(t)}startScope(t){this.openNode(t)}endScope(){this.closeNode()}__addSublanguage(t,n){let r=t.root;n&&(r.scope=`language:${n}`),this.add(r)}toHTML(){return new Qe(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}};function Se(e){return e?typeof e=="string"?e:e.source:null}function qt(e){return re("(?=",e,")")}function dr(e){return re("(?:",e,")*")}function fr(e){return re("(?:",e,")?")}function re(...e){return e.map(n=>Se(n)).join("")}function gr(e){let t=e[e.length-1];return typeof t=="object"&&t.constructor===Object?(e.splice(e.length-1,1),t):{}}function He(...e){return"("+(gr(e).capture?"":"?:")+e.map(r=>Se(r)).join("|")+")"}function Wt(e){return new RegExp(e.toString()+"|").exec("").length-1}function pr(e,t){let n=e&&e.exec(t);return n&&n.index===0}var mr=new RegExp(He(/\[(?:[^\\\]]|\\.)*\]/,/\(\?<(?![=!])[^>]+>/,/\(\?'[^']+'/,/\(\??/,/\\([1-9][0-9]*)/,/\\./));function rt(e,{joinWith:t}){let n=0;return e.map(r=>{n+=1;let o=n,i=Se(r),s="";for(;i.length>0;){let c=mr.exec(i);if(!c){s+=i;break}s+=i.substring(0,c.index),i=i.substring(c.index+c[0].length),c[0][0]==="\\"&&c[1]?s+="\\"+String(Number(c[1])+o):(s+=c[0],(c[0]==="("||/^\(\?[<']/.test(c[0]))&&n++)}return s}).map(r=>`(${r})`).join(t)}var hr=/\b\B/,zt="[a-zA-Z]\\w*",ot="[a-zA-Z_]\\w*",Ut="\\b\\d+(\\.\\d+)?",jt="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",Gt="\\b(0b[01]+)",br="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",vr=(e={})=>{let t=/^#![ ]*\//;return e.binary&&(e.begin=re(t,/.*\b/,e.binary,/\b.*/)),V({scope:"meta",begin:t,end:/$/,relevance:0,"on:begin":(n,r)=>{n.index!==0&&r.ignoreMatch()}},e)},Me={begin:"\\\\[\\s\\S]",relevance:0},Er={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[Me]},_r={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[Me]},yr={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},De=function(e,t,n={}){let r=V({scope:"comment",begin:e,end:t,contains:[]},n);r.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});let o=He("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return r.contains.push({begin:re(/[ ]+/,"(",o,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),r},Sr=De("//","$"),Mr=De("/\\*","\\*/"),wr=De("#","$"),xr={scope:"number",begin:Ut,relevance:0},Lr={scope:"number",begin:jt,relevance:0},Tr={scope:"number",begin:Gt,relevance:0},Cr={scope:"regexp",begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[Me,{begin:/\[/,end:/\]/,relevance:0,contains:[Me]}]},Ar={scope:"title",begin:zt,relevance:0},Nr={scope:"title",begin:ot,relevance:0},Rr={begin:"\\.\\s*"+ot,relevance:0},$r=function(e){return Object.assign(e,{"on:begin":(t,n)=>{n.data._beginMatch=t[1]},"on:end":(t,n)=>{n.data._beginMatch!==t[1]&&n.ignoreMatch()}})},Oe=Object.freeze({__proto__:null,APOS_STRING_MODE:Er,BACKSLASH_ESCAPE:Me,BINARY_NUMBER_MODE:Tr,BINARY_NUMBER_RE:Gt,COMMENT:De,C_BLOCK_COMMENT_MODE:Mr,C_LINE_COMMENT_MODE:Sr,C_NUMBER_MODE:Lr,C_NUMBER_RE:jt,END_SAME_AS_BEGIN:$r,HASH_COMMENT_MODE:wr,IDENT_RE:zt,MATCH_NOTHING_RE:hr,METHOD_GUARD:Rr,NUMBER_MODE:xr,NUMBER_RE:Ut,PHRASAL_WORDS_MODE:yr,QUOTE_STRING_MODE:_r,REGEXP_MODE:Cr,RE_STARTERS_RE:br,SHEBANG:vr,TITLE_MODE:Ar,UNDERSCORE_IDENT_RE:ot,UNDERSCORE_TITLE_MODE:Nr});function Or(e,t){e.input[e.index-1]==="."&&t.ignoreMatch()}function kr(e,t){e.className!==void 0&&(e.scope=e.className,delete e.className)}function Ir(e,t){t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",e.__beforeBegin=Or,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,e.relevance===void 0&&(e.relevance=0))}function Hr(e,t){Array.isArray(e.illegal)&&(e.illegal=He(...e.illegal))}function Dr(e,t){if(e.match){if(e.begin||e.end)throw new Error("begin & end are not supported with match");e.begin=e.match,delete e.match}}function Br(e,t){e.relevance===void 0&&(e.relevance=1)}var Pr=(e,t)=>{if(!e.beforeMatch)return;if(e.starts)throw new Error("beforeMatch cannot be used with starts");let n=Object.assign({},e);Object.keys(e).forEach(r=>{delete e[r]}),e.keywords=n.keywords,e.begin=re(n.beforeMatch,qt(n.begin)),e.starts={relevance:0,contains:[Object.assign(n,{endsParent:!0})]},e.relevance=0,delete n.beforeMatch},Fr=["of","and","for","in","not","or","if","then","parent","list","value"],qr="keyword";function Kt(e,t,n=qr){let r=Object.create(null);return typeof e=="string"?o(n,e.split(" ")):Array.isArray(e)?o(n,e):Object.keys(e).forEach(function(i){Object.assign(r,Kt(e[i],t,i))}),r;function o(i,s){t&&(s=s.map(c=>c.toLowerCase())),s.forEach(function(c){let a=c.split("|");r[a[0]]=[i,Wr(a[0],a[1])]})}}function Wr(e,t){return t?Number(t):zr(e)?0:1}function zr(e){return Fr.includes(e.toLowerCase())}var It={},ne=e=>{console.error(e)},Ht=(e,...t)=>{console.log(`WARN: ${e}`,...t)},de=(e,t)=>{It[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),It[`${e}/${t}`]=!0)},Ie=new Error;function Zt(e,t,{key:n}){let r=0,o=e[n],i={},s={};for(let c=1;c<=t.length;c++)s[c+r]=o[c],i[c+r]=!0,r+=Wt(t[c-1]);e[n]=s,e[n]._emit=i,e[n]._multi=!0}function Ur(e){if(Array.isArray(e.begin)){if(e.skip||e.excludeBegin||e.returnBegin)throw ne("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),Ie;if(typeof e.beginScope!="object"||e.beginScope===null)throw ne("beginScope must be object"),Ie;Zt(e,e.begin,{key:"beginScope"}),e.begin=rt(e.begin,{joinWith:""})}}function jr(e){if(Array.isArray(e.end)){if(e.skip||e.excludeEnd||e.returnEnd)throw ne("skip, excludeEnd, returnEnd not compatible with endScope: {}"),Ie;if(typeof e.endScope!="object"||e.endScope===null)throw ne("endScope must be object"),Ie;Zt(e,e.end,{key:"endScope"}),e.end=rt(e.end,{joinWith:""})}}function Gr(e){e.scope&&typeof e.scope=="object"&&e.scope!==null&&(e.beginScope=e.scope,delete e.scope)}function Kr(e){Gr(e),typeof e.beginScope=="string"&&(e.beginScope={_wrap:e.beginScope}),typeof e.endScope=="string"&&(e.endScope={_wrap:e.endScope}),Ur(e),jr(e)}function Zr(e){function t(s,c){return new RegExp(Se(s),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(c?"g":""))}class n{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(c,a){a.position=this.position++,this.matchIndexes[this.matchAt]=a,this.regexes.push([a,c]),this.matchAt+=Wt(c)+1}compile(){this.regexes.length===0&&(this.exec=()=>null);let c=this.regexes.map(a=>a[1]);this.matcherRe=t(rt(c,{joinWith:"|"}),!0),this.lastIndex=0}exec(c){this.matcherRe.lastIndex=this.lastIndex;let a=this.matcherRe.exec(c);if(!a)return null;let d=a.findIndex((m,_)=>_>0&&m!==void 0),f=this.matchIndexes[d];return a.splice(0,d),Object.assign(a,f)}}class r{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(c){if(this.multiRegexes[c])return this.multiRegexes[c];let a=new n;return this.rules.slice(c).forEach(([d,f])=>a.addRule(d,f)),a.compile(),this.multiRegexes[c]=a,a}resumingScanAtSamePosition(){return this.regexIndex!==0}considerAll(){this.regexIndex=0}addRule(c,a){this.rules.push([c,a]),a.type==="begin"&&this.count++}exec(c){let a=this.getMatcher(this.regexIndex);a.lastIndex=this.lastIndex;let d=a.exec(c);if(this.resumingScanAtSamePosition()&&!(d&&d.index===this.lastIndex)){let f=this.getMatcher(0);f.lastIndex=this.lastIndex+1,d=f.exec(c)}return d&&(this.regexIndex+=d.position+1,this.regexIndex===this.count&&this.considerAll()),d}}function o(s){let c=new r;return s.contains.forEach(a=>c.addRule(a.begin,{rule:a,type:"begin"})),s.terminatorEnd&&c.addRule(s.terminatorEnd,{type:"end"}),s.illegal&&c.addRule(s.illegal,{type:"illegal"}),c}function i(s,c){let a=s;if(s.isCompiled)return a;[kr,Dr,Kr,Pr].forEach(f=>f(s,c)),e.compilerExtensions.forEach(f=>f(s,c)),s.__beforeBegin=null,[Ir,Hr,Br].forEach(f=>f(s,c)),s.isCompiled=!0;let d=null;return typeof s.keywords=="object"&&s.keywords.$pattern&&(s.keywords=Object.assign({},s.keywords),d=s.keywords.$pattern,delete s.keywords.$pattern),d=d||/\w+/,s.keywords&&(s.keywords=Kt(s.keywords,e.case_insensitive)),a.keywordPatternRe=t(d,!0),c&&(s.begin||(s.begin=/\B|\b/),a.beginRe=t(a.begin),!s.end&&!s.endsWithParent&&(s.end=/\B|\b/),s.end&&(a.endRe=t(a.end)),a.terminatorEnd=Se(a.end)||"",s.endsWithParent&&c.terminatorEnd&&(a.terminatorEnd+=(s.end?"|":"")+c.terminatorEnd)),s.illegal&&(a.illegalRe=t(s.illegal)),s.contains||(s.contains=[]),s.contains=[].concat(...s.contains.map(function(f){return Xr(f==="self"?s:f)})),s.contains.forEach(function(f){i(f,a)}),s.starts&&i(s.starts,c),a.matcher=o(a),a}if(e.compilerExtensions||(e.compilerExtensions=[]),e.contains&&e.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return e.classNameAliases=V(e.classNameAliases||{}),i(e)}function Xt(e){return e?e.endsWithParent||Xt(e.starts):!1}function Xr(e){return e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map(function(t){return V(e,{variants:null},t)})),e.cachedVariants?e.cachedVariants:Xt(e)?V(e,{starts:e.starts?V(e.starts):null}):Object.isFrozen(e)?V(e):e}var Vr="11.12.0",nt=class extends Error{constructor(t,n){super(t),this.name="HTMLInjectionError",this.html=n}},Je=Ft,Dt=V,Bt=Symbol("nomatch"),Yr=7,Vt=function(e){let t=Object.create(null),n=Object.create(null),r=[],o=!0,i="Could not find the language '{}', did you forget to load/include a language module?",s={disableAutodetect:!0,name:"Plain text",contains:[]},c={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:tt};function a(l){return c.noHighlightRe.test(l)}function d(l){let g=l.className+" ";g+=l.parentNode?l.parentNode.className:"";let E=c.languageDetectRe.exec(g);if(E){let M=N(E[1]);return M||(Ht(i.replace("{}",E[1])),Ht("Falling back to no-highlight mode for this block.",l)),M?E[1]:"no-highlight"}return g.split(/\s+/).find(M=>a(M)||N(M))}function f(l,g,E){let M="",C="";typeof g=="object"?(M=l,E=g.ignoreIllegals,C=g.language):(de("10.7.0","highlight(lang, code, ...args) has been deprecated."),de("10.7.0",`Please use highlight(code, options) instead.
68
+ https://github.com/highlightjs/highlight.js/issues/2277`),C=l,M=g),E===void 0&&(E=!0);let P={code:M,language:C};ee("before:highlight",P);let X=P.result?P.result:m(P.language,P.code,E);return X.code=P.code,ee("after:highlight",X),X}function m(l,g,E,M){let C=Object.create(null);function P(u,p){return u.keywords[p]}function X(){if(!h.keywords){A.addText(w);return}let u=0;h.keywordPatternRe.lastIndex=0;let p=h.keywordPatternRe.exec(w),b="";for(;p;){b+=w.substring(u,p.index);let S=z.case_insensitive?p[0].toLowerCase():p[0],R=P(h,S);if(R){let[G,Vn]=R;if(A.addText(b),b="",C[S]=(C[S]||0)+1,C[S]<=Yr&&($e+=Vn),G.startsWith("_"))b+=p[0];else{let Yn=z.classNameAliases[G]||G;W(p[0],Yn)}}else b+=p[0];u=h.keywordPatternRe.lastIndex,p=h.keywordPatternRe.exec(w)}b+=w.substring(u),A.addText(b)}function Ne(){if(w==="")return;let u=null;if(typeof h.subLanguage=="string"){if(!t[h.subLanguage]){A.addText(w);return}u=m(h.subLanguage,w,!0,xt[h.subLanguage]),xt[h.subLanguage]=u._top}else u=L(w,h.subLanguage.length?h.subLanguage:null);h.relevance>0&&($e+=u.relevance),A.__addSublanguage(u._emitter,u.language)}function H(){h.subLanguage!=null?Ne():X(),w=""}function W(u,p){u!==""&&(A.startScope(p),A.addText(u),A.endScope())}function yt(u,p){let b=1,S=p.length-1;for(;b<=S;){if(!u._emit[b]){b++;continue}let R=z.classNameAliases[u[b]]||u[b],G=p[b];R?W(G,R):(w=G,X(),w=""),b++}}function St(u,p){return u.scope&&typeof u.scope=="string"&&A.openNode(z.classNameAliases[u.scope]||u.scope),u.beginScope&&(u.beginScope._wrap?(W(w,z.classNameAliases[u.beginScope._wrap]||u.beginScope._wrap),w=""):u.beginScope._multi&&(yt(u.beginScope,p),w="")),h=Object.create(u,{parent:{value:h}}),h}function Mt(u,p,b){let S=pr(u.endRe,b);if(S){if(u["on:end"]){let R=new ke(u);u["on:end"](p,R),R.isMatchIgnored&&(S=!1)}if(S){for(;u.endsParent&&u.parent;)u=u.parent;return u}}if(u.endsWithParent)return Mt(u.parent,p,b)}function jn(u){return h.matcher.regexIndex===0?(w+=u[0],1):(Ve=!0,0)}function Gn(u){let p=u[0],b=u.rule,S=new ke(b),R=[b.__beforeBegin,b["on:begin"]];for(let G of R)if(G&&(G(u,S),S.isMatchIgnored))return jn(p);return b.skip?w+=p:(b.excludeBegin&&(w+=p),H(),!b.returnBegin&&!b.excludeBegin&&(w=p)),St(b,u),b.returnBegin?0:p.length}function Kn(u){let p=u[0],b=g.substring(u.index),S=Mt(h,u,b);if(!S)return Bt;let R=h;h.endScope&&h.endScope._wrap?(H(),W(p,h.endScope._wrap)):h.endScope&&h.endScope._multi?(H(),yt(h.endScope,u)):R.skip?w+=p:(R.returnEnd||R.excludeEnd||(w+=p),H(),R.excludeEnd&&(w=p));do h.scope&&A.closeNode(),!h.skip&&!h.subLanguage&&($e+=h.relevance),h=h.parent;while(h!==S.parent);return S.starts&&St(S.starts,u),R.returnEnd?0:p.length}function Zn(){let u=[];for(let p=h;p!==z;p=p.parent)p.scope&&u.unshift(p.scope);u.forEach(p=>A.openNode(p))}let Re={};function wt(u,p){let b=p&&p[0];if(w+=u,b==null)return H(),0;if(Re.type==="begin"&&p.type==="end"&&Re.index===p.index&&b===""){if(w+=g.slice(p.index,p.index+1),!o){let S=new Error(`0 width match regex (${l})`);throw S.languageName=l,S.badRule=Re.rule,S}return 1}if(Re=p,p.type==="begin")return Gn(p);if(p.type==="illegal"&&!E){let S=new Error('Illegal lexeme "'+b+'" for mode "'+(h.scope||"<unnamed>")+'"');throw S.mode=h,S}else if(p.type==="end"){let S=Kn(p);if(S!==Bt)return S}if(p.type==="illegal"&&b==="")return p.index===g.length||(w+=`
69
+ `),1;if(Xe>1e5&&Xe>p.index*3)throw new Error("potential infinite loop, way more iterations than matches");return w+=b,b.length}let z=N(l);if(!z)throw ne(i.replace("{}",l)),new Error('Unknown language: "'+l+'"');let Xn=Zr(z),Ze="",h=M||Xn,xt={},A=new c.__emitter(c);Zn();let w="",$e=0,te=0,Xe=0,Ve=!1;try{if(z.__emitTokens)z.__emitTokens(g,A);else{for(h.matcher.considerAll();;){Xe++,Ve?Ve=!1:h.matcher.considerAll(),h.matcher.lastIndex=te;let u=h.matcher.exec(g);if(!u)break;let p=g.substring(te,u.index),b=wt(p,u);te=u.index+b}wt(g.substring(te))}return A.finalize(),Ze=A.toHTML(),{language:l,value:Ze,relevance:$e,illegal:!1,_emitter:A,_top:h}}catch(u){if(u.message&&u.message.includes("Illegal"))return{language:l,value:Je(g),illegal:!0,relevance:0,_illegalBy:{message:u.message,index:te,context:g.slice(te-100,te+100),mode:u.mode,resultSoFar:Ze},_emitter:A};if(o)return{language:l,value:Je(g),illegal:!1,relevance:0,errorRaised:u,_emitter:A,_top:h};throw u}}function _(l){let g={value:Je(l),illegal:!1,relevance:0,_top:s,_emitter:new c.__emitter(c)};return g._emitter.addText(l),g}function L(l,g){g=g||c.languages||Object.keys(t);let E=_(l),M=g.filter(N).filter(Q).map(H=>m(H,l,!1));M.unshift(E);let C=M.sort((H,W)=>{if(H.relevance!==W.relevance)return W.relevance-H.relevance;if(H.language&&W.language){if(N(H.language).supersetOf===W.language)return 1;if(N(W.language).supersetOf===H.language)return-1}return 0}),[P,X]=C,Ne=P;return Ne.secondBest=X,Ne}function x(l,g,E){let M=g&&n[g]||E;l.classList.add("hljs"),l.classList.add(`language-${M}`)}function v(l){let g=null,E=d(l);if(a(E))return;if(ee("before:highlightElement",{el:l,language:E}),l.dataset.highlighted){console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",l);return}if(l.children.length>0&&(c.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),console.warn("The element with unescaped HTML:"),console.warn(l)),c.throwUnescapedHTML))throw new nt("One of your code blocks includes unescaped HTML.",l.innerHTML);g=l;let M=g.textContent,C=E?f(M,{language:E,ignoreIllegals:!0}):L(M);l.innerHTML=C.value,l.dataset.highlighted="yes",x(l,E,C.language),l.result={language:C.language,re:C.relevance,relevance:C.relevance},C.secondBest&&(l.secondBest={language:C.secondBest.language,relevance:C.secondBest.relevance}),ee("after:highlightElement",{el:l,result:C,text:M})}function k(l){c=Dt(c,l)}let J=()=>{j(),de("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")};function Ce(){j(),de("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")}let Z=!1;function j(){function l(){j()}if(document.readyState==="loading"){Z||window.addEventListener("DOMContentLoaded",l,!1),Z=!0;return}document.querySelectorAll(c.cssSelector).forEach(v)}function Ee(l,g){let E=null;try{E=g(e)}catch(M){if(ne("Language definition for '{}' could not be registered.".replace("{}",l)),o)ne(M);else throw M;E=s}E.name||(E.name=l),t[l]=E,E.rawDefinition=g.bind(null,e),E.aliases&&ce(E.aliases,{languageName:l})}function q(l){delete t[l];for(let g of Object.keys(n))n[g]===l&&delete n[g]}function _e(){return Object.keys(t)}function N(l){return l=(l||"").toLowerCase(),t[l]||t[n[l]]}function ce(l,{languageName:g}){typeof l=="string"&&(l=[l]),l.forEach(E=>{n[E.toLowerCase()]=g})}function Q(l){let g=N(l);return g&&!g.disableAutodetect}function Ae(l){l["before:highlightBlock"]&&!l["before:highlightElement"]&&(l["before:highlightElement"]=g=>{l["before:highlightBlock"](Object.assign({block:g.el},g))}),l["after:highlightBlock"]&&!l["after:highlightElement"]&&(l["after:highlightElement"]=g=>{l["after:highlightBlock"](Object.assign({block:g.el},g))})}function I(l){Ae(l),r.push(l)}function ae(l){let g=r.indexOf(l);g!==-1&&r.splice(g,1)}function ee(l,g){let E=l;r.forEach(function(M){M[E]&&M[E](g)})}function ye(l){return de("10.7.0","highlightBlock will be removed entirely in v12.0"),de("10.7.0","Please use highlightElement now."),v(l)}Object.assign(e,{highlight:f,highlightAuto:L,highlightAll:j,highlightElement:v,highlightBlock:ye,configure:k,initHighlighting:J,initHighlightingOnLoad:Ce,registerLanguage:Ee,unregisterLanguage:q,listLanguages:_e,getLanguage:N,registerAliases:ce,autoDetection:Q,inherit:Dt,addPlugin:I,removePlugin:ae}),e.debugMode=function(){o=!1},e.safeMode=function(){o=!0},e.versionString=Vr,e.regex={concat:re,lookahead:qt,either:He,optional:fr,anyNumberOfTimes:dr};for(let l in Oe)typeof Oe[l]=="object"&&Pt(Oe[l]);return Object.assign(e,Oe),e},fe=Vt({});fe.newInstance=()=>Vt({});Yt.exports=fe;fe.HighlightJS=fe;fe.default=fe});function $(e,t){return(t||document).querySelector(e)}function y(e,t){return Array.from((t||document).querySelectorAll(e))}function U(e,t,n,r){typeof n=="function"?e.addEventListener(t,n):e.addEventListener(t,function(o){let i=o.target.closest(n);i&&e.contains(i)&&r&&r.call(i,o)})}var ir={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function T(e){return e.replace(/[&<>"']/g,t=>ir[t])}function Tt(e){return le(this,null,function*(){let t=new TextEncoder().encode(e),n=yield crypto.subtle.digest("SHA-1",t);return Array.from(new Uint8Array(n,0,4),r=>r.toString(16).padStart(2,"0")).join("")})}var cr=90,ar=75;function F(e){return e>=cr?"green":e>=ar?"yellow":"red"}function O(e){return e.toString().replace(/\B(?=(\d{3})+(?!\d))/g,",")}function D(e){return(Math.floor(e*100)/100).toFixed(2)}function Ct(e){return"g-"+e.replace(/[^a-zA-Z0-9-]/gu,t=>`_${t.codePointAt(0).toString(16)}_`)}var At=[[31536e3,"year"],[2592e3,"month"],[86400,"day"],[3600,"hour"],[60,"minute"],[1,"second"]];function Nt(e){let t=Math.floor((Date.now()-e.getTime())/1e3);for(let[n,r]of At){let o=Math.floor(t/n);if(o>=1)return o===1?`about 1 ${r} ago`:`${o} ${r}s ago`}return"just now"}function Rt(e){let t=(Date.now()-e.getTime())/1e3;for(let[n]of At){let r=Math.floor(t/n);if(r>=1){let o=(r+1)*n;return Math.max((o-t)*1e3+500,1e3)}}return 1e3}var Ye=new Map;function ue(e){let t=Ye.get(e);if(t===void 0)throw new Error(`File ID was not precomputed for ${e}`);return t}function $t(e){return le(this,null,function*(){Ye.clear();let t=[...new Set(e)],n=yield Promise.all(t.map(Tt)),r=new Map;t.forEach((o,i)=>{let s=n[i],c=r.get(s)||[];c.push(o),r.set(s,c)});for(let[o,i]of r)i.sort().forEach((s,c)=>{Ye.set(s,c===0?o:`${o}-${c}`)})})}var Qt=sr(Jt(),1);var ge=Qt.default;function en(e){let t=e.regex,n="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",r=t.either(/\b([A-Z]+[a-z0-9]+)+/,/\b([A-Z]+[a-z0-9]+)+[A-Z]+/),o=t.concat(r,/(::\w+)*/),s={"variable.constant":["__FILE__","__LINE__","__ENCODING__"],"variable.language":["self","super"],keyword:["alias","and","begin","BEGIN","break","case","class","defined","do","else","elsif","end","END","ensure","for","if","in","module","next","not","or","redo","require","rescue","retry","return","then","undef","unless","until","when","while","yield",...["include","extend","prepend","public","private","protected","raise","throw"]],built_in:["proc","lambda","attr_accessor","attr_reader","attr_writer","define_method","private_constant","module_function"],literal:["true","false","nil"]},c={className:"doctag",begin:"@[A-Za-z]+"},a={begin:"#<",end:">"},d=[e.COMMENT("#","$",{contains:[c]}),e.COMMENT("^=begin","^=end",{contains:[c],relevance:10}),e.COMMENT("^__END__",e.MATCH_NOTHING_RE)],f={className:"subst",begin:/#\{/,end:/\}/,keywords:s},m={className:"string",contains:[e.BACKSLASH_ESCAPE,f],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/,end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{begin:/%[qQwWx]?</,end:/>/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/,end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{begin:t.concat(/<<[-~]?'?/,t.lookahead(/(\w+)(?=\W)[^\n]*\n(?:[^\n]*\n)*?\s*\1\b/)),contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,contains:[e.BACKSLASH_ESCAPE,f]})]}]},_="[1-9](_?[0-9])*|0",L="[0-9](_?[0-9])*",x={className:"number",relevance:0,variants:[{begin:`\\b(${_})(\\.(${L}))?([eE][+-]?(${L})|r)?i?\\b`},{begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{begin:"\\b0(_?[0-7])+r?i?\\b"}]},v={variants:[{match:/\(\)/},{className:"params",begin:/\(/,end:/(?=\))/,excludeBegin:!0,endsParent:!0,keywords:s}]},q=[m,{variants:[{match:[/class\s+/,o,/\s+<\s+/,o]},{match:[/\b(class|module)\s+/,o]}],scope:{2:"title.class",4:"title.class.inherited"},keywords:s},{match:[/(include|extend)\s+/,o],scope:{2:"title.class"},keywords:s},{relevance:0,match:[o,/\.new[. (]/],scope:{1:"title.class"}},{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"},{relevance:0,match:r,scope:"title.class"},{match:[/def/,/\s+/,n],scope:{1:"keyword",3:"title.function"},contains:[v]},{begin:"::"},{className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol",begin:":(?!\\s)",contains:[m,{begin:n}],relevance:0},x,{className:"variable",begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{className:"params",begin:/\|(?!=)/,end:/\|/,excludeBegin:!0,excludeEnd:!0,relevance:0,keywords:s},{begin:"("+e.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{className:"regexp",contains:[e.BACKSLASH_ESCAPE,f],illegal:/\n/,variants:[{begin:"/",end:"/[a-z]*"},{begin:/%r\{/,end:/\}[a-z]*/},{begin:"%r\\(",end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}].concat(a,d),relevance:0}].concat(a,d);f.contains=q,v.contains=q;let Q=[{begin:/^\s*=>/,starts:{end:"$",contains:q}},{className:"meta.prompt",begin:"^("+"[>?]>"+"|"+"[\\w#]+\\(\\w+\\):\\d+:\\d+[>*]"+"|"+"(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>"+")(?=[ ])",starts:{end:"$",keywords:s,contains:q}}];return d.unshift(a),{name:"Ruby",aliases:["rb","gemspec","podspec","thor","irb"],keywords:s,illegal:/\/\*/,contains:[e.SHEBANG({binary:"ruby"})].concat(Q).concat(d).concat(q)}}function tn(e){return{name:"HAML",case_insensitive:!0,contains:[{className:"meta",begin:"^!!!( (5|1\\.1|Strict|Frameset|Basic|Mobile|RDFa|XML\\b.*))?$",relevance:10},e.COMMENT("^\\s*(!=#|=#|-#|/).*$",null,{relevance:0}),{begin:"^\\s*(-|=|!=)(?!#)",end:/$/,subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0},{className:"tag",begin:"^\\s*%",contains:[{className:"selector-tag",begin:"\\w+"},{className:"selector-id",begin:"#[\\w-]+"},{className:"selector-class",begin:"\\.[\\w-]+"},{begin:/\{\s*/,end:/\s*\}/,contains:[{begin:":\\w+\\s*=>",end:",\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr",begin:":\\w+"},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+",relevance:0}]}]},{begin:"\\(\\s*",end:"\\s*\\)",excludeEnd:!0,contains:[{begin:"\\w+\\s*=",end:"\\s+",returnBegin:!0,endsWithParent:!0,contains:[{className:"attr",begin:"\\w+",relevance:0},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{begin:"\\w+",relevance:0}]}]}]},{begin:"^\\s*[=~]\\s*"},{begin:/#\{/,end:/\}/,subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0}]}}var Jr={endsWithParent:!0,relevance:0,contains:[{className:"attr",begin:/[A-Za-z_:][-A-Za-z0-9_:.]*/,relevance:0},{className:"string",relevance:0,variants:[{begin:/"/,end:/"/},{begin:/'/,end:/'/}]}]};function st(e){return{name:"ERB",contains:[e.COMMENT("<%#","%>"),{begin:/<%[%=-]?/,end:/[%-]?%>/,subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0},{className:"tag",begin:/<\/?(?=[A-Za-z])/,end:/\/?>/,contains:[{className:"name",begin:/[A-Za-z][^\s/>]*/,relevance:0,starts:Jr}]}]}}function it(e){return{name:"Slim",contains:[e.COMMENT(/^\s*\/!?/,/$/),{begin:/^\s*(?:-|={1,2})[<>']*/,end:/$/,subLanguage:"ruby",excludeBegin:!0,relevance:0},{className:"name",begin:/^\s*[A-Za-z][A-Za-z0-9_-]*/,relevance:0,starts:{end:/\s/,relevance:0,contains:[{className:"selector-class",begin:/\.[A-Za-z][A-Za-z0-9_-]*/,relevance:0},{className:"selector-id",begin:/#[A-Za-z][A-Za-z0-9_-]*/,relevance:0}]}},{className:"selector-class",begin:/^\s*\.[A-Za-z][A-Za-z0-9_-]*/,relevance:0},{className:"selector-id",begin:/^\s*#[A-Za-z][A-Za-z0-9_-]*/,relevance:0}]}}function Qr(e){if(e==="oneshot_line")return"line";if(e==="line"||e==="branch"||e==="method")return e}function nn(e){let t=Qr(e.primary_coverage);return t==="branch"&&e.branch_coverage||t==="method"&&e.method_coverage?t:e.line_coverage?"line":e.branch_coverage?"branch":"method"}function eo(e,t){return t==="line"?e.lines:t==="branch"?e.branches:e.methods}function Be(e,t){return eo(e,t)||e.lines||e.branches||e.methods}function Pe(e,t){let n=Array.from({length:t},()=>[]);for(let[r,o]of Object.entries(e||{})){let i=Number(r);Array.from(o).reverse().forEach((s,c)=>{let a=parseInt(s,16);for(let d of[0,1,2,3]){if(!(a&1<<d))continue;let f=c*4+d;f<t&&n[f].push(i)}})}return{perLine:n}}function rn(e,t){if(!t)return 0;let n=[];for(let o of Object.values(e||{}))Array.from(o).reverse().forEach((i,s)=>{n[s]=(n[s]||0)|parseInt(i,16)});let r=0;return t.forEach((o,i)=>{typeof o!="number"||o<=0||(n[i>>2]||0)&1<<(i&3)||r++}),r}function on(e,t,n){let r=e.perLine[n-1];return r?r.map(o=>t[o]).sort():[]}function at(e,t){let n=F(e);return t?`<div class="bar-sizer"><div class="coverage-bar"><div class="coverage-bar__fill coverage-bar__fill--${n} coverage-bar__fill--split" style="width: ${D(e-t)}%"></div><div class="coverage-bar__fill coverage-bar__fill--outside" style="width: ${D(t)}%"></div></div></div>`:`<div class="bar-sizer"><div class="coverage-bar"><div class="coverage-bar__fill coverage-bar__fill--${n}" style="width: ${D(e)}%"></div></div></div>`}function oe(e,t,n,r,o,i){let s=F(e),c=D(e),a=i===void 0||n===0?void 0:i*100/n,d=`<div class="coverage-cell">${at(e,a)}<span class="coverage-pct">${c}%</span></div>`;if(o)return`<td class="cell--coverage strong t-totals__${r}-pct ${s}">${d}</td><td class="cell--numerator strong t-totals__${r}-num">${O(t)}/</td><td class="cell--denominator strong t-totals__${r}-den">${O(n)}</td>`;let f=a===void 0?"":` data-order-2="${D(e-a)}"`,m=` data-order="${D(e)}"${f}`;return`<td class="cell--coverage cell--${r}-pct ${s}"${m}>${d}</td><td class="cell--numerator" data-order="${t}">${O(t)}/</td><td class="cell--denominator" data-order="${n}">${O(n)}</td>`}function Fe(e,t,n,r){return`<th class="cell--coverage" data-sort-key="${t}-percent">
69
70
  <div class="th-with-filter">
70
71
  <span class="th-label">${e}</span>
71
72
  <div class="col-filter__coverage">
@@ -74,13 +75,19 @@ https://github.com/highlightjs/highlight.js/issues/2277`),T=c,y=g),b===void 0&&(
74
75
  </div>
75
76
  </div>
76
77
  </th>
77
- <th class="cell--numerator">${n}</th>
78
- <th class="cell--denominator">${r}</th>`}function Ke(e){let{type:t,label:n,covered:r,total:o,enabled:l,toggle:i}=e;if(!l)return`<div class="t-${t}-summary">
78
+ <th class="cell--numerator" data-sort-key="${t}-covered">${n}</th>
79
+ <th class="cell--denominator" data-sort-key="${t}-total">${r}</th>`}function ct(e){let{type:t,label:n,covered:r,total:o,enabled:i,toggle:s}=e;if(!i)return`<div class="t-${t}-summary">
79
80
  ${n}: <span class="coverage-disabled">disabled</span>
80
- </div>`;let s=o-r,a=o>0?r*100/o:100,d=q(a),p=e.suffix||"covered",_=e.missedClass||"red",w=`<div class="t-${t}-summary">
81
- ${n}: <span class="${d}"><b>${j(a)}%</b></span><span class="coverage-cell__fraction"> ${r}/${o} ${p}</span>`;if(s>0){let C=i?`<a href="#" class="t-missed-method-toggle"><b>${s}</b> missed</a>`:`<span class="${_}"><b>${s}</b> missed</span>`;w+=`<span class="coverage-cell__fraction">,</span>
82
- ${C}`}return w+=`
83
- </div>`,w}function zt(e){return'<div class="summary-stats">'+Ke({type:"line",label:"Line coverage",covered:e.coveredLines,total:e.totalLines,enabled:e.lineCoverage,suffix:"relevant lines covered"})+Ke({type:"branch",label:"Branch coverage",covered:e.coveredBranches,total:e.totalBranches,enabled:e.branchCoverage,missedClass:"missed-branch-text"})+Ke({type:"method",label:"Method coverage",covered:e.coveredMethods,total:e.totalMethods,enabled:e.methodCoverage,missedClass:"missed-method-text-color",toggle:e.showMethodToggle})+"</div>"}function kr(e){let{containerId:t,title:n,filenames:r,stats:o,lineCoverage:l,branchCoverage:i,methodCoverage:s,primaryCoverage:a}=e,d=l?o.lines:void 0,p=i?o.branches:void 0,_=s?o.methods:void 0,w=Le(o,a),C=w?w.percent:100,S=[`<div class="file_list_container" id="${t}" data-total-files="${r.length}">`,`<span class="group_name hide">${k(n)}</span>`,`<span class="covered_percent hide"><span class="${q(C)}">${j(C)}%</span></span>`,'<div class="file_list--responsive"><table class="file_list"><thead><tr>','<th class="cell--left"><div class="th-with-filter"><span class="th-label">File Name</span><input type="search" class="col-filter col-filter--name" placeholder="Filter paths\u2026"></div></th>'];d&&S.push(Ce("Line Coverage","line","Covered","Lines")),i&&S.push(Ce("Branch Coverage","branch","Covered","Branches")),s&&S.push(Ce("Method Coverage","method","Covered","Methods")),S.push("</tr>");let R=r.length===1?"file":"files";return S.push(`<tr class="totals-row"><td class="strong t-file-count">${A(r.length)} ${R}</td>`),d&&S.push(ee(d.percent,d.covered,d.total,"line",!0)),p&&S.push(ee(p.percent,p.covered,p.total,"branch",!0)),_&&S.push(ee(_.percent,_.covered,_.total,"method",!0)),S.push("</tr></thead><tbody>"),S.join("")}function $r(e){let{filename:t,coverage:n,lineCoverage:r,branchCoverage:o,methodCoverage:l}=e,i=ie(t),s=[];r&&s.push(`data-covered-lines="${n.covered_lines||0}"`,`data-relevant-lines="${n.total_lines||0}"`),o&&s.push(`data-covered-branches="${n.covered_branches||0}"`,`data-total-branches="${n.total_branches||0}"`),l&&s.push(`data-covered-methods="${n.covered_methods||0}"`,`data-total-methods="${n.total_methods||0}"`);let a=[`<tr class="t-file" ${s.join(" ")}>`,`<td class="strong t-file__name"><a href="#${i}" class="src_link" title="${k(t)}">${k(t)}</a></td>`];if(r){let d=n.lines_covered_percent===void 0?100:n.lines_covered_percent;a.push(ee(d,n.covered_lines||0,n.total_lines||0,"line",!1))}if(o){let d=n.branches_covered_percent===void 0?100:n.branches_covered_percent;a.push(ee(d,n.covered_branches||0,n.total_branches||0,"branch",!1))}if(l){let d=n.methods_covered_percent===void 0?100:n.methods_covered_percent;a.push(ee(d,n.covered_methods||0,n.total_methods||0,"method",!1))}return a.push("</tr>"),a.join("")}function Xe(e){let{filenames:t,allCoverage:n,lineCoverage:r,branchCoverage:o,methodCoverage:l}=e,i=[kr(e)];for(let s of t){let a=n[s];a&&i.push($r({filename:s,coverage:a,lineCoverage:r,branchCoverage:o,methodCoverage:l}))}return i.push("</tbody></table></div></div>"),i.join("")}function Dr(e){let{lineIndex:t,lineCov:n,branchesReport:r,missedMethodLines:o,branchCoverage:l,methodCoverage:i}=e,s=t+1;if(n==="ignored")return"skipped";if(l){let a=r[s];if(a&&a.some(([,d])=>d===0))return"missed-branch"}return i&&o.has(s)?"missed-method":n==null?"never":n===0?"missed":"covered"}function Br(e){let t={};if(!e)return t;for(let{coverage:n,report_line:r,type:o}of e){if(n==="ignored")continue;(t[r]||(t[r]=[])).push([o,n])}return t}function Fr(e){let t=new Set;if(!e)return t;for(let n of e)if(n.coverage===0&&n.start_line&&n.end_line)for(let r=n.start_line;r<=n.end_line;r++)t.add(r);return t}function Pr(e){let{index:t,source:n,lineCov:r,status:o,branchCoverage:l,lineBranches:i}=e,s=t+1,a=typeof r=="number"?` data-hits="${r}"`:"",d=[`<li class="${o}"${a} data-linenumber="${s}">`];if(typeof r=="number"&&r>0?d.push(`<span class="hits" data-content="${r}"></span>`):r==="ignored"&&d.push('<span class="hits" data-content="skipped"></span>'),l&&i)for(let[p,_]of i){let w=k(p);d.push(`<span class="hits" data-content="${w}: ${_}" title="${w} branch hit ${_} times"></span>`)}return d.push(`<code class="ruby">${k(n)}</code></li>`),d.join("")}function Gt(e,t,n,r,o){var G;let l=ie(e),i=n&&t.covered_lines||0,s=n&&t.total_lines||0,a=r&&t.covered_branches||0,d=r&&t.total_branches||0,p=o&&t.covered_methods||0,_=o&&t.total_methods||0,w=(t.methods||[]).filter(I=>I.coverage===0),C=o&&w.length>0,S=Br(t.branches),R=Fr(t.methods),N=[`<div class="source_table" id="${l}">`,'<div class="header">',`<h2>${k(e)}</h2>`,zt({coveredLines:i,totalLines:s,coveredBranches:a,totalBranches:d,coveredMethods:p,totalMethods:_,lineCoverage:n,branchCoverage:r,methodCoverage:o,showMethodToggle:C})];C&&N.push('<div class="t-missed-method-list" style="display: none"><ul>',w.map(I=>`<li><tt>${k(I.name)}</tt></li>`).join(""),"</ul></div>"),N.push("</div>","<pre><ol>");for(let I=0;I<t.source.length;I++){let re=(G=t.lines)==null?void 0:G[I],X=Dr({lineIndex:I,lineCov:re,branchesReport:S,missedMethodLines:R,branchCoverage:r,methodCoverage:o});N.push(Pr({index:I,source:t.source[I],lineCov:re,status:X,branchCoverage:r,lineBranches:r?S[I+1]:void 0}))}return N.push("</ol></pre></div>"),N.join("")}Ge.registerLanguage("ruby",Ut);var Ye=null;function ge(){if(!Ye)return;let e=getComputedStyle(document.documentElement).getPropertyValue(`--${Ye}`).trim(),t=document.createElement("canvas");t.width=t.height=16;let n=t.getContext("2d");if(!e||!n)return;n.fillStyle=e,n.fillRect(0,0,16,16);let r=document.querySelector('link[rel="icon"]');r||(r=document.createElement("link"),r.rel="icon",r.type="image/png",document.head.appendChild(r)),r.href=t.toDataURL("image/png")}var te=null;function Kt(e){let t=e.meta,n=t.line_coverage,r=t.branch_coverage,o=t.method_coverage,l=jt(t);document.title=`Code coverage for ${t.project_name}`;let i=Object.keys(e.coverage),s=Le(e.total,l),a=s&&s.total>0?s.percent:100;Ye=q(a),ge(),r&&document.body.setAttribute("data-branch-coverage","true");let d=document.getElementById("content"),p=[Xe({containerId:"g-total",title:"All Files",filenames:i,stats:e.total,allCoverage:e.coverage,lineCoverage:n,branchCoverage:r,methodCoverage:o,primaryCoverage:l})];for(let N of Object.keys(e.groups)){let G=e.groups[N];p.push(Xe({containerId:bt(`group-${N}`),title:N,filenames:G.files||[],stats:G,allCoverage:e.coverage,lineCoverage:n,branchCoverage:r,methodCoverage:o,primaryCoverage:l}))}d.innerHTML=p.join("");let _={};for(let N of i)_[ie(N)]=N;te={idToFilename:_,coverage:e.coverage,lineCoverage:n,branchCoverage:r,methodCoverage:o};let w=new Date(t.timestamp),C=document.getElementById("footer");C.innerHTML=`Generated <abbr class="timeago" title="${w.toISOString()}">${w.toISOString()}</abbr> by <a href="https://github.com/simplecov-ruby/simplecov">simplecov</a> v${k(t.simplecov_version)} using ${k(t.command_name)}`;let S=document.getElementById("source-legend"),R="";n&&(R+='<span class="source-legend__item"><span class="source-legend__swatch source-legend__swatch--covered"></span>Covered</span><span class="source-legend__item"><span class="source-legend__swatch source-legend__swatch--skipped"></span>Skipped</span><span class="source-legend__item"><span class="source-legend__swatch source-legend__swatch--missed"></span>Missed line</span>'),r&&(R+='<span class="source-legend__item"><span class="source-legend__swatch source-legend__swatch--missed-branch"></span>Missed branch</span>'),o&&(R+='<span class="source-legend__item"><span class="source-legend__swatch source-legend__swatch--missed-method"></span>Missed method</span>'),S.innerHTML=R}function Vt(e){let t=document.getElementById(e);if(t)return t;if(!te)return null;let n=te.idToFilename[e];if(!n)return null;let r=Gt(n,te.coverage[n],te.lineCoverage,te.branchCoverage,te.methodCoverage),o=document.querySelector(".source_files"),l=document.createElement("div");l.innerHTML=r;let i=l.firstElementChild;return o.appendChild(i),v("pre code",i).forEach(s=>Ge.highlightElement(s)),i}var Ze=1e3,qr="t-window-hidden",Xt=new WeakSet;function Wr(e,t){let n=e.querySelector("tr.t-show-all");if(!n){n=document.createElement("tr"),n.className="t-show-all";let r=document.createElement("td");r.colSpan=t,n.appendChild(r),n.addEventListener("click",o=>{o.preventDefault(),Xt.add(e),ae(e.closest("table"))}),e.appendChild(n)}return n}function ae(e){let t=e.querySelector("tbody");if(!t)return;let n=t.querySelectorAll("tr.t-file"),r=Xt.has(t),o=0;if(n.forEach(i=>{let s=i.style.display==="none";s||(o+=1),i.classList.toggle(qr,!r&&!s&&o>Ze)}),r||o<=Ze){let i=t.querySelector("tr.t-show-all");i&&(i.style.display="none");return}let l=Wr(t,n[0].children.length);l.style.display="",l.firstElementChild.innerHTML=`Showing the first ${A(Ze)} of ${A(o)} files. <a href="#" class="t-show-all__link">Show all</a>`,t.appendChild(l)}var Qt=new WeakMap;function Ur(e,t){let n=0,r=e.children;for(let o=0;o<r.length;o++)if(r[o].style.display!=="none"){if(n===t)return o;n+=1}return null}function jr(e){if(!e)return"";let t=e.getAttribute("data-order");if(t!==null)return Number.parseFloat(t);let n=(e.textContent||"").trim(),r=Number.parseFloat(n);return Number.isNaN(r)?n.toLowerCase():r}var Yt=new WeakMap;function Jt(e,t){var l;if(t===null)return"";let n=Yt.get(e);n||(n=new Map,Yt.set(e,n));let r=n.get(t);if(r!==void 0)return r;let o=jr((l=e.children[t])!=null?l:null);return n.set(t,o),o}var zr=new Intl.Collator;function en(e,t){return typeof e=="number"&&typeof t=="number"?e-t:zr.compare(String(e),String(t))}function Qe(e,t,n){Qt.set(e,{colIndex:t,direction:n});let r=0;v("thead tr:first-child th",e).forEach(o=>{let l=Number.parseInt(o.getAttribute("colspan")||"1",10);o.classList.remove("sorting_asc","sorting_desc","sorting");let i=t>=r&&t<r+l;o.classList.add(i?n==="asc"?"sorting_asc":"sorting_desc":"sorting"),r+=l})}function tn(e,t){let n=document.createDocumentFragment();t.forEach(r=>n.appendChild(r)),e.appendChild(n)}function Zt(e,t){let n=Qt.get(e),r=n&&n.colIndex===t&&n.direction==="asc"?"desc":"asc",o=e.querySelector("tbody"),l=Array.from(o.querySelectorAll("tr.t-file"));if(l.length===0){Qe(e,t,r);return}if(n&&n.colIndex===t)l.reverse();else{let i=Ur(l[0],t),s=l.map(d=>({row:d,value:Jt(d,i)})),a=r==="asc"?1:-1;s.sort((d,p)=>a*en(d.value,p.value)),l=s.map(({row:d})=>d)}tn(o,l),ae(e),Qe(e,t,r)}var Gr=500,pe=null;function Kr(){if(pe)return pe;let e=document.createElement("div");return e.id="sort-overlay",e.innerHTML='<span id="sort-overlay-label">Sorting\u2026</span>',e.style.display="none",document.body.appendChild(e),pe=e,e}function Vr(){let e=Kr();e.style.transition="none",e.style.opacity="1",e.style.display="flex"}function Xr(){if(!pe)return;let e=pe;e.style.transition="opacity 0.15s",e.style.opacity="0",setTimeout(()=>{e.style.display="none"},150)}function Yr(e,t){if(e.querySelectorAll("tbody tr.t-file").length<Gr){Zt(e,t);return}Vr(),requestAnimationFrame(()=>requestAnimationFrame(()=>{Zt(e,t),Xr()}))}function Zr(e,t){let n=0;for(let r of v("thead tr:first-child th",e)){let o=Number.parseInt(r.getAttribute("colspan")||"1",10);if(r===t)return n+o-1;n+=o}return n}function Qr(e,t){let n=Array.from(e.children);if(t){let o=n.findIndex(l=>l.classList.contains(`cell--${t}-pct`));if(o!==-1)return o}let r=n.findIndex(o=>o.hasAttribute("data-order"));return r===-1?null:r}function Jr(e,t){let n=e.querySelector("tbody");if(!n)return;let r=Array.from(n.querySelectorAll("tr.t-file"));if(r.length===0)return;let o=Qr(r[0],t);if(o===null)return;let l=r.map(i=>({row:i,value:Jt(i,o)}));l.sort((i,s)=>en(i.value,s.value)),tn(n,l.map(({row:i})=>i)),Qe(e,o,"asc")}function nn(e){v("table.file_list").forEach(t=>{v("thead tr:first-child th",t).forEach(n=>{n.classList.add("sorting"),n.style.cursor="pointer",n.addEventListener("click",()=>Yr(t,Zr(t,n)))}),Jr(t,e),ae(t)})}var he=null;function xe(){he=null}function rn(){if(he)return he;let e=v(".file_list_container").filter(t=>t.style.display!=="none");return e.length?(he=v("tbody tr.t-file",e[0]).filter(t=>t.style.display!=="none"),he):[]}var eo=240,to=160;function on(e,t){e.style.setProperty("--bar-sizer-width",t+"px")}var no=8;function ro(e,t){let n=to,r=eo;for(;r-n>no;){let o=Math.ceil((n+r)/2);on(e,o),e.offsetWidth,e.scrollWidth<=t?n=o:r=o-1}return n}function et(){v(".file_list_container").forEach(e=>{if(e.style.display==="none"||e.offsetWidth===0)return;let t=O("table.file_list",e);if(!t||!O(".bar-sizer",t))return;let n=t.closest(".file_list--responsive");n&&(n.style.visibility="hidden",on(t,ro(t,n.clientWidth)),n.style.visibility="")})}var Je=0;function ce(){Je||(Je=requestAnimationFrame(()=>{Je=0,et()}))}var Ae={line:{covered:"coveredLines",total:"relevantLines"},branch:{covered:"coveredBranches",total:"totalBranches"},method:{covered:"coveredMethods",total:"totalMethods"}};function sn(e){let t=v("tbody tr.t-file",e).filter(l=>l.style.display!=="none");function n(l){return t.reduce((i,s)=>i+(Number.parseInt(s.dataset[l]||"0",10)||0),0)}let r=O(".t-file-count",e),o=Number.parseInt(e.getAttribute("data-total-files")||"0",10);if(r){let l=t.length===1?" file":" files";r.textContent=t.length===o?A(o)+l:A(t.length)+"/"+A(o)+l}for(let l of Object.keys(Ae)){let i=Ae[l],s=`.t-totals__${l}`;O(s+"-pct",e)&&oo(e,s,n(i.covered),n(i.total))}}function oo(e,t,n,r){let o=O(t+"-pct",e),l=O(t+"-num",e),i=O(t+"-den",e);if(r===0){o&&(o.innerHTML="",o.classList.remove("green","yellow","red")),l&&(l.textContent=""),i&&(i.textContent="");return}let s=n*100/r,a=q(s);o&&(o.innerHTML=`<div class="coverage-cell">${Ve(s)}<span class="coverage-pct">${j(s)}%</span></div>`,o.classList.remove("green","yellow","red"),o.classList.add(a)),l&&(l.textContent=A(n)+"/"),i&&(i.textContent=A(r))}var io={gt:(e,t)=>e>t,gte:(e,t)=>e>=t,eq:(e,t)=>e===t,lte:(e,t)=>e<=t,lt:(e,t)=>e<t};function so(e,t,n){let r=io[e];return r?r(t,n):!0}function lo(e){let t=[];for(let n of v(".col-filter__value",e)){let r=n;if(!r.value)continue;let o=Number.parseFloat(r.value);if(Number.isNaN(o))continue;let l=r.dataset.type||"",i=O(`.col-filter__op[data-type="${l}"]`,e),s=i?i.value:"",a=Ae[l];s&&a&&t.push({attrs:a,op:s,threshold:o})}return t}var ln=new WeakMap;function ao(e){let t=ln.get(e);return t===void 0&&(t=(e.children[0].textContent||"").toLowerCase(),ln.set(e,t)),t}function an(e){let t=O("table.file_list",e);if(!t)return;let n=O(".col-filter--name",e),r=n?n.value.trim().toLowerCase():"",o=lo(e);v("tbody tr.t-file",t).forEach(l=>{let i=l,a=(!r||ao(l).includes(r))&&o.every(d=>{let p=Number.parseInt(i.dataset[d.attrs.covered]||"0",10)||0,_=Number.parseInt(i.dataset[d.attrs.total]||"0",10)||0,w=_>0?p*100/_:100;return so(d.op,w,d.threshold)})?"":"none";i.style.display!==a&&(i.style.display=a)}),ae(t),xe(),sn(e),ce()}function tt(e){let t=Number.parseFloat(e.value),n=e.closest(".col-filter__coverage"),r=n?n.querySelector(".col-filter__op"):null;if(!r)return;let o=r.querySelector('option[value="gt"]'),l=r.querySelector('option[value="lt"]');if(o&&(o.disabled=t>=100),l&&(l.disabled=t<=0),r.selectedOptions[0]&&r.selectedOptions[0].disabled){let i=r.querySelector("option:not(:disabled)");i&&(r.value=i.value)}}function cn(){v(".col-filter__value").forEach(e=>tt(e)),v(".col-filter--name, .col-filter__op, .col-filter__value, .col-filter__coverage").forEach(e=>{e.addEventListener("click",t=>t.stopPropagation())}),P(document,"input",".col-filter--name, .col-filter__op, .col-filter__value",function(){this.classList.contains("col-filter__value")&&tt(this),an(this.closest(".file_list_container"))}),P(document,"change",".col-filter__op, .col-filter__value",function(){this.classList.contains("col-filter__value")&&tt(this),an(this.closest(".file_list_container"))})}var $=null;function nt(){return $!==null}function ue(e){$&&$.classList.remove("keyboard-focus"),$=e,$&&($.classList.add("keyboard-focus"),$.scrollIntoView({block:"nearest"}))}function rt(e){let t=rn();if(!t.length)return;if(!$||t.indexOf($)===-1){ue(e===1?t[0]:t[t.length-1]);return}let n=t.indexOf($)+e;n>=0&&n<t.length&&ue(t[n])}function un(){if(!$)return;let e=$.querySelector("a.src_link");e&&(window.location.hash=e.getAttribute("href").substring(1))}var z,ne,ot,me=null,Re="";function it(){return z.open}function st(){return ne}function fn(){if(!me)return;Re&&(me.insertAdjacentHTML("afterbegin",Re),Re="");let e=document.querySelector(".source_files");e&&e.appendChild(me),me=null}function co(e,t){fn();let n=Vt(e);if(!n)return;let r=n.querySelector(".header");if(r&&(Re=r.outerHTML,ot.innerHTML=r.innerHTML,r.remove()),me=n,ne.appendChild(n),z.open||z.showModal(),document.documentElement.style.overflow="hidden",ne.focus(),t){let o=ne.querySelector('li[data-linenumber="'+t+'"]');o&&(ne.scrollTop=o.offsetTop)}}function dn(e){if(ue(null),xe(),z.open&&(fn(),z.close(),ne.innerHTML="",ot.innerHTML="",document.documentElement.style.overflow=""),e){let n=document.querySelector(".group_tabs a."+e);if(n){v(".group_tabs li").forEach(o=>o.classList.remove("active")),n.parentElement.classList.add("active"),v(".file_list_container").forEach(o=>o.style.display="none");let r=document.getElementById(e);r&&(r.style.display="")}}let t=document.getElementById("wrapper");t&&!t.classList.contains("hide")&&ce()}function Oe(){let e=window.location.hash.substring(1);if(!e){let t=document.querySelector(".group_tabs a");t&&dn(t.getAttribute("href").replace("#",""));return}if(e.charAt(0)==="_")dn(e.substring(1));else{let t=e.split("-L");if(!document.querySelector(".group_tabs li.active")){let n=document.querySelector(".group_tabs li");n&&n.classList.add("active")}co(t[0],t[1])}}function Ne(){let e=document.querySelector(".group_tabs li.active a");e&&(window.location.hash=e.getAttribute("href").replace("#","#_"))}function gn(){z=document.getElementById("source-dialog"),ne=document.getElementById("source-dialog-body"),ot=document.getElementById("source-dialog-title"),z.querySelector(".source-dialog__close").addEventListener("click",Ne),z.addEventListener("click",e=>{e.target===z&&Ne()})}function uo(){return v(".source-dialog .source_table li.missed, .source-dialog .source_table li.missed-branch, .source-dialog .source_table li.missed-method")}function lt(e){let t=uo();if(!t.length)return;let n=st(),r=n.scrollTop+n.clientHeight/2,o=e===1?t.find(l=>l.offsetTop>r)||t[0]:t.findLast(l=>l.offsetTop<r-10)||t[t.length-1];n.scrollTop=o.offsetTop-n.clientHeight/3}function pn(){P(document,"click",".t-missed-method-toggle",function(e){e.preventDefault();let t=this.closest(".header")||this.closest(".source-dialog__title")||this.closest(".source-dialog__header"),n=t?t.querySelector(".t-missed-method-list"):null;n&&(n.style.display=n.style.display==="none"?"":"none")}),P(document,"click","a.src_link",function(e){e.preventDefault(),window.location.hash=this.getAttribute("href").substring(1)}),P(document,"click","table.file_list tbody tr",function(e){if(e.target.closest("a"))return;let t=this.querySelector("a.src_link");t&&(window.location.hash=t.getAttribute("href").substring(1))}),P(document,"click",".source-dialog .source_table li[data-linenumber]",function(e){e.preventDefault(),st().scrollTop=this.offsetTop;let t=this.dataset.linenumber,n=window.location.hash.substring(1).replace(/-L.*/,"");window.location.replace(window.location.href.replace(/#.*/,"#"+n+"-L"+t))}),window.addEventListener("hashchange",Oe)}var hn="simplecov-dark-mode",fo="simplecov-colorblind-mode";function go(e){try{return localStorage.getItem(e)}catch(t){return null}}function mn(e,t){try{localStorage.setItem(e,t)}catch(n){}}function po(){return go(hn)}function bn(e){return Array.from(document.querySelectorAll(`[data-toggle="${e}"]`))}function vn(){let e=bn("colorblind");if(e.length===0)return;let t=document.documentElement,n=()=>{let r=String(t.classList.contains("colorblind-mode"));e.forEach(o=>o.setAttribute("aria-pressed",r))};n(),e.forEach(r=>r.addEventListener("click",()=>{let o=t.classList.toggle("colorblind-mode");mn(fo,o?"on":"off"),n(),ge()}))}function En(){let e=bn("dark");if(e.length===0)return;let t=document.documentElement;function n(){return t.classList.contains("dark-mode")||!t.classList.contains("light-mode")&&window.matchMedia("(prefers-color-scheme: dark)").matches}function r(){let o=n();e.forEach(l=>{l.textContent=o?"\u2600\uFE0F Light":"\u{1F319} Dark",l.setAttribute("aria-label",o?"Switch to light mode":"Switch to dark mode")})}r(),e.forEach(o=>o.addEventListener("click",()=>{let l=n();t.classList.toggle("light-mode",l),t.classList.toggle("dark-mode",!l),mn(hn,l?"light":"dark"),r(),ge()})),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",()=>{po()||r(),ge()})}function ho(){let e=v(".file_list_container").filter(n=>n.style.display!=="none"),t=e.length?O(".col-filter--name",e[0]):null;t&&t.focus()}function mo(e,t){it()?(e.preventDefault(),Ne()):t?e.target.blur():nt()&&ue(null)}function bo(e){e.key==="n"&&!e.shiftKey&&(e.preventDefault(),lt(1)),(e.key==="N"||e.key==="n"&&e.shiftKey||e.key==="p")&&(e.preventDefault(),lt(-1))}function vo(e){e.key==="j"&&(e.preventDefault(),rt(1)),e.key==="k"&&(e.preventDefault(),rt(-1)),e.key==="Enter"&&nt()&&(e.preventDefault(),un())}function _n(e){let t=e.target.matches("input, select, textarea");e.key==="/"&&!t?(e.preventDefault(),ho()):e.key==="Escape"?mo(e,t):t||(it()?bo(e):vo(e))}function yn(){let e=1/0;v("abbr.timeago").forEach(t=>{let n=new Date(t.getAttribute("title")||"");Number.isNaN(n.getTime())||(t.textContent=Et(n),e=Math.min(e,_t(n)))}),e<1/0&&setTimeout(yn,e)}function Eo(){v(".file_list_container").forEach(e=>e.style.display="none"),v(".file_list_container").forEach(e=>{let t=e.id,n=e.querySelector(".group_name"),r=e.querySelector(".covered_percent"),o=document.createElement("li");o.setAttribute("role","tab");let l=document.createElement("a");l.href="#"+t,l.className=t,l.innerHTML=(n?n.innerHTML:"")+" ("+(r?r.innerHTML:"")+")",o.appendChild(l),document.querySelector(".group_tabs").appendChild(o)}),P(document.querySelector(".group_tabs"),"click","a",function(e){e.preventDefault(),window.location.hash=this.getAttribute("href").replace("#","#_")})}function _o(e){e&&(e.style.transition="opacity 0.3s",e.style.opacity="0",setTimeout(()=>{e.style.display="none"},300));let t=document.getElementById("wrapper");t&&t.classList.remove("hide"),et()}function yo(){return oe(this,null,function*(){let e=window.SIMPLECOV_DATA,t=document.getElementById("loading");t&&(t.style.display=""),yield yt(Object.keys(e.coverage)),Kt(e),yn(),En(),vn(),nn(e.meta.primary_coverage),cn(),document.addEventListener("keydown",_n),gn(),pn(),Eo(),window.addEventListener("resize",ce),Oe(),_o(t)})}document.addEventListener("DOMContentLoaded",yo);})();
81
+ </div>`;let c=o-r,a=o>0?r*100/o:100,d=F(a),f=e.suffix||"covered",m=e.missedClass||"red",_=`<div class="t-${t}-summary">
82
+ ${n}: <span class="${d}"><b>${D(a)}%</b></span><span class="coverage-cell__fraction"> ${r}/${o} ${f}</span>`;if(c>0){let L=s?`<a href="#" class="t-missed-method-toggle"><b>${c}</b> missed</a>`:`<span class="${m}"><b>${c}</b> missed</span>`;_+=`<span class="coverage-cell__fraction">,</span>
83
+ ${L}`}return _+=`
84
+ </div>`,_}function to(e,t,n,r){let o=t>0?e*100/t:100,i=t-e,s=`<div class="t-line-summary">
85
+ Line coverage: <span class="${F(o)}"><b>${D(o)}%</b></span><span class="coverage-cell__fraction"> ${n}/${t} relevant lines covered by tests</span>`;return r>0&&(s+=`<span class="coverage-cell__fraction">,</span>
86
+ <span class="coverage-cell__fraction outside-tests-text">${r}/${t} relevant lines covered outside tests</span>`),i>0&&(s+=`<span class="coverage-cell__fraction">,</span>
87
+ <span class="red"><b>${i}</b> missed</span>`),s+`
88
+ </div>`}function sn(e){return'<div class="summary-stats">'+(e.coveredByTests===void 0||!e.lineCoverage?ct({type:"line",label:"Line coverage",covered:e.coveredLines,total:e.totalLines,enabled:e.lineCoverage,suffix:"relevant lines covered"}):to(e.coveredLines,e.totalLines,e.coveredByTests,e.coveredOutsideTests||0))+ct({type:"branch",label:"Branch coverage",covered:e.coveredBranches,total:e.totalBranches,enabled:e.branchCoverage,missedClass:"missed-branch-text"})+ct({type:"method",label:"Method coverage",covered:e.coveredMethods,total:e.totalMethods,enabled:e.methodCoverage,missedClass:"missed-method-text-color",toggle:e.showMethodToggle})+"</div>"}function no(e,t){let{containerId:n,title:r,filenames:o,stats:i,lineCoverage:s,branchCoverage:c,methodCoverage:a,primaryCoverage:d}=e,f=s?i.lines:void 0,m=c?i.branches:void 0,_=a?i.methods:void 0,L=Be(i,d),x=L?L.percent:100,v=[`<div class="file_list_container" id="${n}" data-total-files="${o.length}">`,`<span class="group_name hide">${T(r)}</span>`,`<span class="covered_percent hide"><span class="${F(x)}">${D(x)}%</span></span>`,'<div class="file_list--responsive"><table class="file_list"><thead><tr>','<th class="cell--left" data-sort-key="file"><div class="th-with-filter"><span class="th-label">File Name</span><input type="search" class="col-filter col-filter--name" placeholder="Filter paths\u2026"></div></th>'];f&&v.push(Fe("Line Coverage","line","Covered","Lines")),c&&v.push(Fe("Branch Coverage","branch","Covered","Branches")),a&&v.push(Fe("Method Coverage","method","Covered","Methods")),e.production&&v.push('<th class="cell--production" data-sort-key="production"><span class="th-label">Last Run in Production</span></th>'),v.push("</tr>");let k=o.length===1?"file":"files";return v.push(`<tr class="totals-row"><td class="strong t-file-count">${O(o.length)} ${k}</td>`),f&&v.push(oe(f.percent,f.covered,f.total,"line",!0,t)),m&&v.push(oe(m.percent,m.covered,m.total,"branch",!0)),_&&v.push(oe(_.percent,_.covered,_.total,"method",!0)),e.production&&v.push('<td class="cell--production"></td>'),v.push("</tr></thead><tbody>"),v.join("")}function ro(e,t){let n=t.files[e];if(!n)return'<td class="cell--production t-file__production t-file__production--never" data-order="-1">never</td>';let r=String(n.last_seen),o=Date.parse(r);return Number.isNaN(o)?'<td class="cell--production t-file__production" data-order="0">ran</td>':`<td class="cell--production t-file__production" data-order="${o}"><abbr class="timeago" title="${T(r)}">${T(r.slice(0,10))}</abbr></td>`}function oo(e){let{filename:t,coverage:n,lineCoverage:r,branchCoverage:o,methodCoverage:i,outsideLines:s,production:c}=e,a=ue(t),d=[];r&&(d.push(`data-covered-lines="${n.covered_lines||0}"`,`data-relevant-lines="${n.total_lines||0}"`),s!==void 0&&d.push(`data-covered-outside-lines="${s}"`)),o&&d.push(`data-covered-branches="${n.covered_branches||0}"`,`data-total-branches="${n.total_branches||0}"`),i&&d.push(`data-covered-methods="${n.covered_methods||0}"`,`data-total-methods="${n.total_methods||0}"`);let f=[`<tr class="t-file" ${d.join(" ")}>`,`<td class="strong t-file__name"><a href="#${a}" class="src_link" title="${T(t)}">${T(t)}</a></td>`];if(r){let m=n.lines_covered_percent===void 0?100:n.lines_covered_percent;f.push(oe(m,n.covered_lines||0,n.total_lines||0,"line",!1,s))}if(o){let m=n.branches_covered_percent===void 0?100:n.branches_covered_percent;f.push(oe(m,n.covered_branches||0,n.total_branches||0,"branch",!1))}if(i){let m=n.methods_covered_percent===void 0?100:n.methods_covered_percent;f.push(oe(m,n.covered_methods||0,n.total_methods||0,"method",!1))}return c&&f.push(ro(t,c)),f.push("</tr>"),f.join("")}function lt(e){let{filenames:t,allCoverage:n,lineCoverage:r,branchCoverage:o,methodCoverage:i,contextsEnabled:s,production:c}=e,a=s&&r?new Map(t.flatMap(m=>{let _=n[m];return _?[[m,rn(_.contexts,_.lines)]]:[]})):void 0,d=a?[...a.values()].reduce((m,_)=>m+_,0):void 0,f=[no(e,d)];for(let m of t){let _=n[m];_&&f.push(oo({filename:m,coverage:_,lineCoverage:r,branchCoverage:o,methodCoverage:i,outsideLines:a==null?void 0:a.get(m),production:c}))}return f.push("</tbody></table></div></div>"),f.join("")}function so(e){let{lineIndex:t,lineCov:n,branchesReport:r,missedMethodLines:o,branchCoverage:i,methodCoverage:s}=e,c=t+1;if(n==="ignored")return"skipped";if(i){let a=r[c];if(a&&a.some(([,d])=>d===0))return"missed-branch"}return s&&o.has(c)?"missed-method":n==null?"never":n===0?"missed":"covered"}function io(e){let t={};if(!e)return t;for(let{coverage:n,report_line:r,type:o}of e){if(n==="ignored")continue;(t[r]||(t[r]=[])).push([o,n])}return t}function co(e){let t=new Set;if(!e)return t;for(let n of e)if(n.coverage===0&&n.start_line&&n.end_line)for(let r=n.start_line;r<=n.end_line;r++)t.add(r);return t}var ao={erb:"erb",haml:"haml",slim:"slim"};function lo(e){return ao[e.split(".").pop().toLowerCase()]||"ruby"}function uo(e){let{index:t,source:n,language:r,lineCov:o,status:i,branchCoverage:s,lineBranches:c,testCount:a,productionRan:d}=e,f=t+1,m=typeof o=="number"?o:null,_=m===null?"":` data-hits="${m}"`,x=[`<li class="${i}${d===void 0?"":d?" production-ran":" production-never"}"${_} data-linenumber="${f}">`];if(m?x.push(`<span class="hits" data-content="${m}"></span>`):o==="ignored"&&x.push('<span class="hits" data-content="skipped"></span>'),d&&o===0&&x.push('<span class="hits hits--production" data-content="runs in production"></span>'),a!==void 0){let v=a===0?" hits--tests-none":"",k=a===1?"1 test":`${a} tests`;x.push(`<button type="button" class="hits hits--tests${v}" data-content="${k}" data-tests-line="${f}" title="List the tests covering this line" aria-expanded="false"></button>`)}if(s&&c)for(let[v,k]of c){let J=T(v);x.push(`<span class="hits" data-content="${J}: ${k}" title="${J} branch hit ${k} times"></span>`)}return x.push(`<code class="${r}">${T(n)}</code></li>`),x.join("")}function fo(e,t,n){let r=`<div class="t-production-summary">
89
+ Production: <b>${e}</b>/${t} relevant lines ran`,o=n&&n.last_seen;return o&&(r+=`<span class="coverage-cell__fraction">, last run <span title="${T(o)}">${T(o.slice(0,10))}</span></span>`),r+`
90
+ </div>`}function cn(e,t,n,r,o,i,s){var ce,Q,Ae;let c=ue(e),a=n&&t.covered_lines||0,d=n&&t.total_lines||0,f=r&&t.covered_branches||0,m=r&&t.total_branches||0,_=o&&t.covered_methods||0,L=o&&t.total_methods||0,x=(Q=(ce=t.methods)==null?void 0:ce.filter(I=>I.coverage===0))!=null?Q:[],v=o&&x.length>0,k=io(t.branches),J=co(t.methods),Ce=lo(e),Z=i?Pe(t.contexts,t.source.length):null,j=0,Ee=s===void 0?null:new Set(s==null?void 0:s.lines),q=0,_e=[];for(let I=0;I<t.source.length;I++){let ae=(Ae=t.lines)==null?void 0:Ae[I],ee=typeof ae=="number"?ae:null,ye=so({lineIndex:I,lineCov:ae,branchesReport:k,missedMethodLines:J,branchCoverage:r,methodCoverage:o}),l;Z&&ee&&(l=Z.perLine[I].length,l===0&&(j++,ye==="covered"&&(ye="outside-tests")));let g;Ee&&ee!==null&&(g=Ee.has(I+1),g&&q++),_e.push(uo({index:I,source:t.source[I],language:Ce,lineCov:ae,status:ye,branchCoverage:r,lineBranches:r?k[I+1]:void 0,testCount:l,productionRan:g}))}let N=[`<div class="source_table" id="${c}">`,'<div class="header">',`<h2>${T(e)}</h2>`,sn({coveredLines:a,totalLines:d,coveredBranches:f,totalBranches:m,coveredMethods:_,totalMethods:L,lineCoverage:n,branchCoverage:r,methodCoverage:o,showMethodToggle:v,coveredByTests:Z?a-j:void 0,coveredOutsideTests:Z?j:void 0})];return s!==void 0&&N.push('<div class="summary-stats summary-stats--production">',fo(q,d,s),"</div>"),v&&N.push('<div class="t-missed-method-list" style="display: none"><ul>',x.map(I=>`<li><tt>${T(I.name)}</tt></li>`).join(""),"</ul></div>"),N.push("</div>","<pre><ol>"),N.push(..._e),N.push("</ol></pre></div>"),N.join("")}ge.registerLanguage("ruby",en);ge.registerLanguage("erb",st);ge.registerLanguage("haml",tn);ge.registerLanguage("slim",it);var an;function we(){let e=getComputedStyle(document.documentElement).getPropertyValue(`--${an}`).trim(),t=document.createElement("canvas");t.width=t.height=16;let n=t.getContext("2d");if(!e||!n)return;n.fillStyle=e,n.fillRect(0,0,16,16);let r=document.querySelector('link[rel="icon"]');r||(r=document.createElement("link"),r.rel="icon",r.type="image/png",document.head.appendChild(r)),r.href=t.toDataURL("image/png")}var ln;function un(){return ln}var go=3;function po(e){let t=e.command_names&&e.command_names.length?e.command_names:[e.command_name];return t.length<=go?T(t.join(", ")):`<details class="footer-runs"><summary>${T(t[0])} and ${t.length-1} other runs</summary><span class="footer-runs__list">${T(t.join(", "))}</span></details>`}function dn(e){let t=e.meta,n=t.line_coverage,r=t.branch_coverage,o=t.method_coverage,i=nn(t);document.title=`Code coverage for ${t.project_name}`;let s=Object.keys(e.coverage),c=Be(e.total,i),a=c&&c.total>0?c.percent:100;an=F(a),we(),r&&document.body.setAttribute("data-branch-coverage","true");let d=document.getElementById("content"),f=[lt({containerId:"g-total",title:"All Files",filenames:s,stats:e.total,allCoverage:e.coverage,lineCoverage:n,branchCoverage:r,methodCoverage:o,primaryCoverage:i,contextsEnabled:!!e.contexts,production:e.production})];for(let v of Object.keys(e.groups)){let k=e.groups[v];f.push(lt({containerId:Ct(`group-${v}`),title:v,filenames:k.files||[],stats:k,allCoverage:e.coverage,lineCoverage:n,branchCoverage:r,methodCoverage:o,primaryCoverage:i,contextsEnabled:!!e.contexts,production:e.production}))}d.innerHTML=f.join("");let m={};for(let v of s)m[ue(v)]=v;ln={idToFilename:m,coverage:e.coverage,lineCoverage:n,branchCoverage:r,methodCoverage:o,contexts:e.contexts||null,production:e.production||null};let _=new Date(t.timestamp),L=`Generated <abbr class="timeago" title="${_.toISOString()}">${_.toISOString()}</abbr> by <a href="https://github.com/simplecov-ruby/simplecov">simplecov</a> v${T(t.simplecov_version)} using ${po(t)}`;document.getElementById("footer").innerHTML=L,document.getElementById("source-dialog-footer").innerHTML=L;let x=[];if(n){let v=e.contexts?[K("covered","Covered by tests"),K("outside-tests","Covered outside tests")]:[K("covered","Covered")];x.push(qe("line",[...v,K("skipped","Skipped"),K("missed","Missed line")]))}e.production&&n&&x.push(qe("production",[K("production-never","Never ran in production"),K("production-ran","Untested, runs in production")])),r&&x.push(qe("branch",[K("missed-branch","Missed branch")])),o&&x.push(qe("method",[K("missed-method","Missed method")])),document.getElementById("source-legend").innerHTML=x.join("")}function qe(e,t){return`<div class="source-legend__row source-legend__row--${e}">${t.join("")}</div>`}function K(e,t){return`<span class="source-legend__item"><span class="source-legend__swatch source-legend__swatch--${e}"></span>${t}</span>`}function fn(e){let t=document.getElementById(e);if(t)return t;let{idToFilename:n,coverage:r,lineCoverage:o,branchCoverage:i,methodCoverage:s,contexts:c,production:a}=un(),d=n[e];if(!d)return null;let f=cn(d,r[d],o,i,s,c||void 0,a?a.files[d]||null:void 0),m=document.querySelector(".source_files"),_=document.createElement("div");_.innerHTML=f;let L=_.firstElementChild;return m.appendChild(L),y("pre code",L).forEach(x=>ge.highlightElement(x)),L}function gn(e,t){let{contexts:n,idToFilename:r,coverage:o}=un();if(!n)return null;let i=r[e];if(!i)return null;let s=o[i],c=Pe(s.contexts,s.source.length);return on(c,n,t)}var ut=1e3,mo="t-window-hidden",pn=new WeakSet;function ho(e,t){let n=e.querySelector("tr.t-show-all");if(!n){n=document.createElement("tr"),n.className="t-show-all";let r=document.createElement("td");r.colSpan=t,n.appendChild(r),n.addEventListener("click",o=>{o.preventDefault(),pn.add(e),pe(e.closest("table"))})}return n}function pe(e){let t=e.querySelector("tbody");if(!t)return;let n=t.querySelectorAll("tr.t-file"),r=pn.has(t),o=0;if(n.forEach(s=>{let c=s.style.display==="none";c||(o+=1),s.classList.toggle(mo,!r&&!c&&o>ut)}),r||o<=ut){let s=t.querySelector("tr.t-show-all");s&&(s.style.display="none");return}let i=ho(t,n[0].children.length);i.style.removeProperty("display"),i.firstElementChild.innerHTML=`Showing the first ${O(ut)} of ${O(o)} files. <a href="#" class="t-show-all__link">Show all</a>`,t.appendChild(i)}function We(e){try{return localStorage.getItem(e)}catch(t){return null}}function xe(e,t){try{localStorage.setItem(e,t)}catch(n){}}var ft=new WeakMap,vn="simplecov-sort";function bo(){var e;try{return(e=JSON.parse(String(We(vn))))!=null?e:{}}catch(t){return{}}}function vo(){let e=bo();return e.direction!=="asc"&&e.direction!=="desc"?null:{column:e.column,direction:e.direction}}function Eo(e){xe(vn,JSON.stringify(e))}function _o(e,t){let n=0,r=e.children;for(let o=0;o<r.length;o++)if(r[o].style.display!=="none"){if(n===t)return o;n+=1}return-1}function mn(e){if(!e)return"";let t=e.getAttribute("data-order");if(t!==null)return Number.parseFloat(t);let n=e.textContent.trim(),r=Number.parseFloat(n);return Number.isNaN(r)?n:r}function yo(e){return Number.parseFloat(String(e==null?void 0:e.getAttribute("data-order-2")))}var So=new Intl.Collator(void 0,{sensitivity:"accent"});function hn(e,t){return typeof e=="number"&&typeof t=="number"?e-t:So.compare(String(e),String(t))}function En(e,t,n){let r=e.map(i=>({row:i,value:mn(i.children[t]),tiebreak:yo(i.children[t]),filename:mn(i.children[0])})),o=(i,s)=>hn(i.value,s.value)||i.tiebreak-s.tiebreak||hn(i.filename,s.filename);return r.sort(n==="asc"?o:(i,s)=>o(s,i)),r.map(({row:i})=>i)}function dt(e,t,n){ft.set(e,{colIndex:t,direction:n});let r=0;y("thead tr:first-child th",e).forEach(o=>{let i=Number.parseInt(o.getAttribute("colspan")||"1",10);o.classList.remove("sorting_asc","sorting_desc","sorting");let s=t>=r&&t<r+i;o.classList.add(s?n==="asc"?"sorting_asc":"sorting_desc":"sorting"),r+=i})}function _n(e,t){let n=document.createDocumentFragment();t.forEach(r=>n.appendChild(r)),e.appendChild(n)}function bn(e,t,n){let r=ft.get(e),o=e.querySelector("tbody"),i=Array.from(o.querySelectorAll("tr.t-file"));if(i.length===0){dt(e,t,n);return}r&&r.colIndex===t?i.reverse():i=En(i,_o(i[0],t),n),_n(o,i),pe(e),dt(e,t,n)}var Mo=500,me=null;function wo(){me||(me=document.createElement("div"),me.id="sort-overlay",me.innerHTML='<span id="sort-overlay-label">Sorting\u2026</span>',document.body.appendChild(me));let e=me;return e.style.transition="none",e.style.opacity="1",e.style.display="flex",e}function xo(e){e.style.transition="opacity 0.15s",e.style.opacity="0",setTimeout(()=>{e.style.display="none"},150)}function Lo(e,t){let n=yn(e,t),r=ft.get(e),o=r&&r.colIndex===n&&r.direction==="asc"?"desc":"asc",i=t.getAttribute("data-sort-key");if(i&&Eo({column:i,direction:o}),e.querySelectorAll("tbody tr.t-file").length<Mo){bn(e,n,o);return}let c=wo();requestAnimationFrame(()=>requestAnimationFrame(()=>{bn(e,n,o),xo(c)}))}function yn(e,t){let n=0;for(let r of y("thead tr:first-child th",e)){let o=Number.parseInt(r.getAttribute("colspan")||"1",10);if(r===t)return n+o-1;n+=o}return n}function To(e,t){let n=Array.from(e.children),r=n.findIndex(i=>i.classList.contains(`cell--${t}-pct`)),o=r===-1?n.findIndex(i=>i.hasAttribute("data-order")):r;return o===-1?null:o}function Co(e,t,n){let r=e.querySelector("tbody");if(!r)return;let o=Array.from(r.querySelectorAll("tr.t-file"));if(o.length===0)return;let i=n&&y("thead tr:first-child th[data-sort-key]",e).find(a=>a.getAttribute("data-sort-key")===n.column),s=i?yn(e,i):To(o[0],t);if(s===null)return;let c=i?n.direction:"asc";_n(r,En(o,s,c)),dt(e,s,c)}function Sn(e){let t=vo();y("table.file_list").forEach(n=>{y("thead tr:first-child th",n).forEach(r=>{r.classList.add("sorting"),r.style.cursor="pointer",r.addEventListener("click",()=>Lo(n,r))}),Co(n,e,t),pe(n)})}var Le=null;function ze(){Le=null}function Mn(){if(Le)return Le;let e=y(".file_list_container").filter(t=>t.style.display!=="none");return e.length?(Le=y("tbody tr.t-file",e[0]).filter(t=>t.style.display!=="none"),Le):[]}var Ao=240,No=160;function wn(e,t){e.style.setProperty("--bar-sizer-width",t+"px")}var Ro=8;function $o(e,t){let n=No,r=Ao;for(;r-n>Ro;){let o=Math.ceil((n+r)/2);wn(e,o),e.offsetWidth,e.scrollWidth<=t?n=o:r=o-1}return n}function pt(){y(".file_list_container").forEach(e=>{if(e.style.display==="none"||e.offsetWidth===0)return;let t=$("table.file_list",e);if(!t||!$(".bar-sizer",t))return;let n=t.closest(".file_list--responsive");n&&(n.style.visibility="hidden",wn(t,$o(t,n.clientWidth)),n.style.visibility="")})}var gt=0;function he(){gt||(gt=requestAnimationFrame(()=>{gt=0,pt()}))}var Ue={line:{covered:"coveredLines",total:"relevantLines"},branch:{covered:"coveredBranches",total:"totalBranches"},method:{covered:"coveredMethods",total:"totalMethods"}};function xn(e){let t=y("tbody tr.t-file",e).filter(i=>i.style.display!=="none");function n(i){return t.reduce((s,c)=>s+(Number(c.dataset[i])||0),0)}let r=$(".t-file-count",e),o=Number(e.getAttribute("data-total-files"));if(r){let i=t.length===1?" file":" files";r.textContent=t.length===o?O(o)+i:O(t.length)+"/"+O(o)+i}for(let i of Object.keys(Ue)){let s=Ue[i],c=i==="line"?n("coveredOutsideLines"):0;Oo(e,`.t-totals__${i}`,n(s.covered),n(s.total),c)}}function Oo(e,t,n,r,o){let i=$(t+"-pct",e),s=$(t+"-num",e),c=$(t+"-den",e);if(r===0){i&&(i.innerHTML="",i.classList.remove("green","yellow","red")),s&&(s.textContent=""),c&&(c.textContent="");return}let a=n*100/r;i&&(i.innerHTML=`<div class="coverage-cell">${at(a,o*100/r)}<span class="coverage-pct">${D(a)}%</span></div>`,i.classList.remove("green","yellow","red"),i.classList.add(F(a))),s&&(s.textContent=O(n)+"/"),c&&(c.textContent=O(r))}var ko={gt:(e,t)=>e>t,gte:(e,t)=>e>=t,eq:(e,t)=>e===t,lte:(e,t)=>e<=t,lt:(e,t)=>e<t};function Io(e,t,n){let r=ko[e];return r?r(t,n):!0}function Ho(e){let t=[];for(let n of y(".col-filter__value",e)){let r=n,o=Number.parseFloat(r.value);if(Number.isNaN(o))continue;let i=r.dataset.type,s=i&&Ue[i],c=$(`.col-filter__op[data-type="${i}"]`,e);s&&c&&t.push({attrs:s,op:c.value,threshold:o})}return t}var Ln=new WeakMap;function Do(e){let t=Ln.get(e);return t===void 0&&(t=e.children[0].textContent.toLowerCase(),Ln.set(e,t)),t}function Bo(e){let t=$("table.file_list",e);if(!t)return;let n=$(".col-filter--name",e),r=n?n.value.trim().toLowerCase():"",o=Ho(e);y("tbody tr.t-file",t).forEach(i=>{let s=i,c=(!r||Do(i).includes(r))&&o.every(a=>{let d=Number(s.dataset[a.attrs.covered])||0,f=Number(s.dataset[a.attrs.total])||0,m=f>0?d*100/f:100;return Io(a.op,m,a.threshold)});s.style.display=c?"":"none"}),pe(t),ze(),xn(e),he()}function Cn(e){let t=Number.parseFloat(e.value),n=e.closest(".col-filter__coverage"),r=n?n.querySelector(".col-filter__op"):null;if(!r)return;let o=r.querySelector('option[value="gt"]'),i=r.querySelector('option[value="lt"]');if(o&&(o.disabled=t>=100),i&&(i.disabled=t<=0),r.selectedOptions[0]&&r.selectedOptions[0].disabled){let s=r.querySelector("option:not(:disabled)");s&&(r.value=s.value)}}function Tn(){this.classList.contains("col-filter__value")&&Cn(this),Bo(this.closest(".file_list_container"))}function An(){y(".col-filter__value").forEach(e=>Cn(e)),y(".col-filter--name, .col-filter__op, .col-filter__value, .col-filter__coverage").forEach(e=>{e.addEventListener("click",t=>t.stopPropagation())}),U(document,"input",".col-filter--name, .col-filter__op, .col-filter__value",Tn),U(document,"change",".col-filter__op, .col-filter__value",Tn)}var B=null;function Nn(){return B!==null}function be(e){B&&B.classList.remove("keyboard-focus"),B=e,B&&(B.classList.add("keyboard-focus"),B.scrollIntoView({block:"nearest"}))}function mt(e){let t=Mn();if(!t.length)return;if(!B||t.indexOf(B)===-1){be(e===1?t[0]:t[t.length-1]);return}let n=t.indexOf(B)+e;n>=0&&n<t.length&&be(t[n])}function Rn(){if(!B)return;let e=B.querySelector("a.src_link");e&&(window.location.hash=e.getAttribute("href"))}var Y,se,ht,Te=null,je=null;function bt(){return Y.open}function vt(){return se}function On(){if(!Te)return;je&&(Te.prepend(je),je=null);let e=document.querySelector(".source_files");e&&e.appendChild(Te),Te=null}function Po(e,t){On();let n=fn(e);if(!n)return;let r=n.querySelector(".header");r&&(je=r,ht.innerHTML=r.innerHTML,r.remove()),Te=n,se.appendChild(n),Y.open||Y.showModal(),document.documentElement.style.overflow="hidden",se.focus();let o=se.querySelector(`li[data-linenumber="${t}"]`);o&&(se.scrollTop=o.offsetTop)}function $n(e){if(be(null),ze(),On(),Y.close(),se.innerHTML="",ht.innerHTML="",document.documentElement.style.overflow="",e){let n=document.querySelector(".group_tabs a."+e);n&&(y(".group_tabs li").forEach(r=>r.classList.remove("active")),n.parentElement.classList.add("active"),y(".file_list_container").forEach(r=>r.style.display="none"),document.getElementById(e).style.display="")}let t=document.getElementById("wrapper");t&&!t.classList.contains("hide")&&he()}function Ke(){let e=window.location.hash.substring(1);if(!e){let t=document.querySelector(".group_tabs a");t&&$n(t.getAttribute("href").replace("#",""));return}if(e.charAt(0)==="_")$n(e.substring(1));else{let t=e.split("-L");if(!document.querySelector(".group_tabs li.active")){let n=document.querySelector(".group_tabs li");n&&n.classList.add("active")}Po(t[0],t[1])}}function Ge(){let e=document.querySelector(".group_tabs li.active a");e&&(window.location.hash=e.getAttribute("href").replace("#","#_"))}function kn(){Y=document.getElementById("source-dialog"),se=document.getElementById("source-dialog-body"),ht=document.getElementById("source-dialog-title"),Y.querySelector(".source-dialog__close").addEventListener("click",Ge),Y.addEventListener("click",e=>{e.target===Y&&Ge()})}var ie=null,ve=null;function Fo(e){return e.length===0?'<div class="tests-peek__title">No recorded test covers this line</div><div class="tests-peek__note">It ran outside any test: at load time, in suite setup, or from a helper.</div>':`<div class="tests-peek__title">${e.length===1?"Covered by 1 test":`Covered by ${e.length} tests`}</div><ul class="tests-peek__list">${e.map(n=>`<li><code>${T(n)}</code></li>`).join("")}</ul>`}function Et(){ie&&ie.remove(),ve&&ve.setAttribute("aria-expanded","false"),ie=null,ve=null}function In(e,t){let n=e.closest("li"),r=e.closest(".source_table");if(!n||!r)return;let o=ve===e;if(Et(),o)return;let i=Number(e.getAttribute("data-tests-line")),s=t(r.id,i);if(!s)return;let c=document.createElement("li");c.className="tests-peek",c.innerHTML=Fo(s),n.after(c),e.setAttribute("aria-expanded","true"),ie=c,ve=e}function Hn(){document.addEventListener("keydown",e=>{!ie||e.key!=="Escape"||(e.preventDefault(),e.stopPropagation(),Et())},!0),document.addEventListener("click",e=>{if(!ie)return;let t=e.target;ie.contains(t)||ve.contains(t)||Et()},!0)}function qo(){return y(".source-dialog .source_table li.missed, .source-dialog .source_table li.missed-branch, .source-dialog .source_table li.missed-method")}function _t(e){let t=qo();if(!t.length)return;let n=vt(),r=n.scrollTop+n.clientHeight/2,o=e===1?t.find(i=>i.offsetTop>r)||t[0]:t.findLast(i=>i.offsetTop<r-10)||t[t.length-1];n.scrollTop=o.offsetTop-n.clientHeight/3}function Dn(){U(document,"click",".t-missed-method-toggle",function(e){e.preventDefault();let t=this.closest(".header")||this.closest(".source-dialog__title")||this.closest(".source-dialog__header"),n=t?t.querySelector(".t-missed-method-list"):null;n&&(n.style.display=n.style.display==="none"?"":"none")}),U(document,"click","table.file_list tbody tr",function(){let e=this.querySelector("a.src_link");e&&(window.location.hash=e.getAttribute("href"))}),U(document,"click","button.hits--tests",function(e){e.preventDefault(),In(this,gn)}),U(document,"click",".source-dialog .source_table li[data-linenumber]",function(e){if(e.target.closest(".hits--tests, .tests-peek"))return;e.preventDefault(),vt().scrollTop=this.offsetTop;let t=this.dataset.linenumber,n=window.location.hash.substring(1).replace(/-L.*/,"");window.location.replace(window.location.href.replace(/#.*/,"#"+n+"-L"+t))}),window.addEventListener("hashchange",Ke),Hn()}var Bn="simplecov-dark-mode",Wo="simplecov-colorblind-mode";function zo(){return We(Bn)}function Pn(e){return Array.from(document.querySelectorAll(`[data-toggle="${e}"]`))}function Fn(){let e=Pn("colorblind"),t=document.documentElement,n=()=>{let r=String(t.classList.contains("colorblind-mode"));e.forEach(o=>o.setAttribute("aria-pressed",r))};n(),e.forEach(r=>r.addEventListener("click",()=>{let o=t.classList.toggle("colorblind-mode");xe(Wo,o?"on":"off"),n(),we()}))}function qn(){let e=Pn("dark"),t=document.documentElement;function n(){return t.classList.contains("dark-mode")||!t.classList.contains("light-mode")&&window.matchMedia("(prefers-color-scheme: dark)").matches}function r(){let o=n();e.forEach(i=>{i.textContent=o?"\u2600\uFE0F Light":"\u{1F319} Dark",i.setAttribute("aria-label",o?"Switch to light mode":"Switch to dark mode")})}r(),e.forEach(o=>o.addEventListener("click",()=>{let i=n();t.classList.toggle("light-mode",i),t.classList.toggle("dark-mode",!i),xe(Bn,i?"light":"dark"),r(),we()})),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",()=>{zo()||r(),we()})}function Uo(){let e=y(".file_list_container").find(t=>t.style.display!=="none");e&&$(".col-filter--name",e).focus()}function jo(e,t){bt()?(e.preventDefault(),Ge()):t?e.target.blur():be(null)}function Go(e){e.key==="n"&&!e.shiftKey&&(e.preventDefault(),_t(1)),(e.key==="N"||e.key==="n"&&e.shiftKey||e.key==="p")&&(e.preventDefault(),_t(-1))}function Ko(e){e.key==="j"&&(e.preventDefault(),mt(1)),e.key==="k"&&(e.preventDefault(),mt(-1)),e.key==="Enter"&&Nn()&&(e.preventDefault(),Rn())}function Wn(e){let t=e.target instanceof Element&&e.target.matches("input, select, textarea");e.key==="/"&&!t?(e.preventDefault(),Uo()):e.key==="Escape"?jo(e,t):t||(bt()?Go(e):Ko(e))}function zn(){let e=$(".group_tabs");if(!e)return;let t=()=>{e.classList.toggle("is-scrolled",e.scrollLeft>0)};e.addEventListener("scroll",t),window.addEventListener("resize",t),t()}function Un(){let e=1/0;y("abbr.timeago").forEach(t=>{let n=t.getAttribute("title");if(!n)return;let r=new Date(n);Number.isNaN(r.getTime())||(t.textContent=Nt(r),e=Math.min(e,Rt(r)))}),e<1/0&&setTimeout(Un,e)}function Zo(){y(".file_list_container").forEach(e=>e.style.display="none"),y(".file_list_container").forEach(e=>{let t=document.createElement("li");t.setAttribute("role","tab");let n=document.createElement("a");n.href="#"+e.id,n.className=e.id,n.innerHTML=`${e.querySelector(".group_name").innerHTML} (${e.querySelector(".covered_percent").innerHTML})`,t.appendChild(n),document.querySelector(".group_tabs").appendChild(t)}),U(document.querySelector(".group_tabs"),"click","a",function(e){e.preventDefault(),window.location.hash=this.getAttribute("href").replace("#","#_")})}function Xo(e){e.style.transition="opacity 0.3s",e.style.opacity="0",setTimeout(()=>{e.style.display="none"},300),document.getElementById("wrapper").classList.remove("hide"),pt()}function Vo(){return le(this,null,function*(){let e=window.SIMPLECOV_DATA,t=document.getElementById("loading");t.style.display="",yield $t(Object.keys(e.coverage)),dn(e),Un(),qn(),Fn(),Sn(e.meta.primary_coverage),An(),document.addEventListener("keydown",Wn),kn(),Dn(),Zo(),zn(),window.addEventListener("resize",he),Ke(),Xo(t)})}document.addEventListener("DOMContentLoaded",Vo);})();
84
91
  </script>
85
92
  </body>
86
93
  </html>