https://github.com/solana-developers/program-examples/blob/main/tokens/token-swap/anchor/programs/token-swap/src/instructions/swap_exact_tokens_for_tokens.rs
please have a look at line 137,
if invariant > ctx.accounts.pool_account_a.amount * ctx.accounts.pool_account_a.amount {//a*a
return err!(TutorialError::InvariantViolated);
}
I think it should be
if invariant > ctx.accounts.pool_account_a.amount * ctx.accounts.pool_account_b.amount { //a*b
return err!(TutorialError::InvariantViolated);
}