"Phrases"
{
	"announcement.detected"	"detected {detection} on {player}{outcome}"
	"announcement.outcome.punishment_sent"	" and sent the punishment."
	"announcement.outcome.whitelisted"	", but they are whitelisted."
	"announcement.outcome.punishment_disabled"	", but punishment is disabled."
	"announcement.outcome.identity_unavailable"	", but their identity is not ready yet."
	"announcement.outcome.already_punished"	" and the punishment was already sent."
	"announcement.outcome.command_too_long"	", but the punishment command is too long."
	"announcement.outcome.command_service_unavailable"	", but the server command service is unavailable."
	"announcement.outcome.network_unstable"	", but no punishment was sent because their connection was unstable."
	"announcement.test"	"This is a test. No player was detected or punished."

	"evidence.aimbot.snap_return"	"{incidents} snap-hit incidents reached the threshold; the latest was a {snap}-degree snap-return."
	"evidence.aimbot.convergence"	"{incidents} snap-hit incidents reached the threshold; latest snap {snap} degrees, target error {before} -> {after} degrees."
	"evidence.aimbot.smooth"	"{incidents} smooth damaging aim movements reached the threshold; latest movement {snap} degrees, target error {before} -> {after} degrees."
	"evidence.aimlock"	"{incidents} precise tracking episodes reached the threshold; the latest stayed on target for {precise}/{samples} samples while the target moved {movement} degrees against a {required}-degree requirement."
	"evidence.silentaim"	"{deviation} degrees from visible aim added {points} points; the rolling score reached {score}/{threshold}."
	"evidence.inhuman_accuracy"	"{hits} of {attempts} qualifying shots hit ({accuracy}% accuracy)."
	"evidence.irregular_behavior"	"{score} points from {successes} successful difficult shots out of {attempts} attempts ({accuracy}% success)."
	"evidence.triggerbot"	"The last {shots} damaging fresh-contact shots reached {score}/{threshold}: {one_tick} landed in 0-1 ticks (+2 each), {two_tick} in 2 ticks (+1 each), and {normal} took 3+ ticks (-2 each). Latest: {latest_ticks} ticks, {damage} damage, {context}, {hitgroup}, target #{target}."

	"evidence.antiaim"	"{reason} added {points} points and reached {score}/{threshold} evidence."
	"evidence.antiaim.reason.spin"	"continuous spin"
	"evidence.antiaim.reason.jitter"	"continuous repeating jitter"
	"evidence.antiaim.reason.attack_return"	"one-command attack return"
	"evidence.antiaim.reason.inconsistent_command"	"an inconsistent angle command"
	"evidence.antiaim.reason.history_mismatch"	"a repeated base and input-history mismatch"
	"evidence.antiaim.reason.invalid_angles"	"invalid pitch or roll"
	"evidence.dll_injection.one"	"{count} blacklisted client event subscription found: {events}."
	"evidence.dll_injection.many"	"{count} blacklisted client event subscriptions found: {events}."
	"evidence.doubletap.one_tick"	"Three rapid-fire pairs reached the threshold; the latest pair was 1 server tick apart."
	"evidence.doubletap.zero_ticks"	"Three rapid-fire pairs reached the threshold; the latest pair was 0 server ticks apart."
	"evidence.doubletap.network_unstable"	"Three rapid-fire pairs were detected; the latest was {ticks} server ticks apart."
	"evidence.network_check"	"Network check: {ping} ms ping, {jitter} ms jitter, {incoming_loss}/{outgoing_loss}% incoming/outgoing loss, {incoming_choke}/{outgoing_choke}% incoming/outgoing choke, {gaps} command gaps, and {unavailable} unavailable samples."
	"evidence.namechanger"	"{changes} visible name changes occurred within one minute."

	"evidence.autostrafe.optimizer"	"Strafe optimizer detected."
	"evidence.autostrafe.jumps"	"{suspicious} of {evaluated} evaluated jumps matched automated strafe patterns ({ratio}%)."
	"evidence.bhop.perfect_chain"	"{perfect} of {landings} eligible landings formed one consecutive frame-perfect bhop chain."
	"evidence.bhop.repeated_pattern"	"{repeated} of {patterns} completed jump patterns repeated {inputs} inputs, with an average of {average} inputs."
	"evidence.hyperscroll"	"The player averaged {average} jump inputs across {patterns} completed landing patterns, while {perfect} of {landings} eligible landings were frame-perfect ({ratio}%)."
	"evidence.nulls"	"The {axis} inputs reached a perfect-timing score of {score}; {required} was required. Median release-to-press gap: {gap} ms; overlap score: {overlaps}; measured FPS: {fps}."
	"evidence.nulls.axis.forward_backward"	"forward/backward"
	"evidence.nulls.axis.left_right"	"left/right"

	"evidence.invalid_input"	"{commands} commands had movement button changes without matching subtick records within {seconds} seconds."
	"evidence.subtick_spam"	"{commands} commands contained repeated same-time button aliases with angle changes within {seconds} seconds."
	"evidence.desubticking"	"{zero} of {commands} commands with subtick input had zero timing ({ratio}%)."
	"evidence.invalid_cvar.invalid_number"	"{cvar} did not return a valid finite number."
	"evidence.invalid_cvar.above_maximum"	"{cvar} is {value}, but the maximum allowed value is {maximum}."
	"evidence.invalid_cvar.outside_range"	"{cvar} is {value}, but it must be between {minimum} and {maximum}."
	"evidence.invalid_cvar.must_equal"	"{cvar} is {value}, but it must be {expected}."
	"evidence.invalid_cvar.fps_max"	"fps_max is {value}, but it must be at least 64 or 0 for unlimited."
	"evidence.invalid_cvar.sv_cheats"	"sv_cheats is enabled or invalid on the client while it is disabled on the server."
	"evidence.invalid_cvar.enabled_without_cheats"	"{cvar} is enabled on the client despite sv_cheats being disabled on the server."
	"evidence.invalid_cvar.disabled_without_cheats"	"{cvar} is disabled on the client despite sv_cheats being disabled on the server."

	"webhook.field.player"	"Player"
	"webhook.field.steamid64"	"STEAMID64"
	"webhook.field.detection"	"Detection"
	"webhook.field.evidence"	"Evidence"
	"webhook.field.punishment"	"Punishment"
	"webhook.field.map"	"Map"
	"webhook.field.address"	"Address"
	"webhook.outcome.punishment_sent"	"The configured punishment command was sent."
	"webhook.outcome.whitelisted"	"The player is whitelisted, so no punishment command was sent."
	"webhook.outcome.punishment_disabled"	"No punishment was sent because this punishment command is disabled."
	"webhook.outcome.identity_unavailable"	"No punishment was sent because the player's identity was not ready."
	"webhook.outcome.already_punished"	"The player was already punished, so no duplicate command was sent."
	"webhook.outcome.command_too_long"	"No punishment was sent because the configured command is too long."
	"webhook.outcome.command_service_unavailable"	"No punishment was sent because the server command service is unavailable."
	"webhook.outcome.network_unstable"	"No punishment was sent because the player's connection exceeded the safe network limits."
	"webhook.outcome.unavailable"	"No punishment outcome was available."
	"webhook.unknown_player"	"Unknown player"
	"webhook.unknown_detection"	"UNKNOWN"
	"webhook.unavailable"	"Unavailable"
	"webhook.steamid_unavailable"	"SteamID64 is unavailable."
	"webhook.default_evidence"	"The detector reached its configured threshold"
	"webhook.default_server_name"	"CS2 Server"
	"webhook.footer"	"Detection report"
	"webhook.test_detection"	"WEBHOOK TEST"
	"webhook.test_player"	"Webhook test"
	"webhook.test_evidence"	"This is a harmless test report. No detection or punishment was created."
}
