Refactor exercises so hints are simpler
Remove extra ,

Test plan:
Crossed fingers, or really make lint

Auditors: alpert
Rename katex.less.css to just katex.css

So that a webapp `make clean` doesn't delete it.

Auditors: emily
Merge pull request #66520 from petercollingridge/add-rat-exp-3

Improve consistency of rational expression module
Merge pull request #66424 from petercollingridge/add-rat-exp-6a

Adding and subtracting rational expressions 6 (new branch)
Merge pull request #66604 from petercollingridge/sim-tri

Solving similar triangles 1.5
Add missing period

Auditors: peter
Obliterate solving_similar_triangles_2

Apparently this is what we're calling it!

Auditors: eater

CC: peter
fractionSimplify function to convert fractions to integers where required
Rewrite to be much simpler and include a mixture of numbers
use consistent rounding, fix #66872
Tweak var formatting

re rKE5412d80cc6270d204c36b5e492bd992c4fa2e01f

Auditors: emily
Add missing periods

Auditors: peter
Fix scratchpad undo

Three undo bugs fixed:
1) Undo didn't work at all (mousedown was saving state when
   toolbar was clicked).
2) Undo was adding back in clipped lines.
3) Using the eraser added state to undo even if you didn't
   actually erase anything. (N.B. stopped using shapes.length
   here as it doesn't work: length doesn't change when things
   are .remove()'d)
Merge pull request #68397 from theinternetftw/fix-scratchpad-undo

Fix scratchpad undo
trig_addition_identities: Allow decimals

Auditors: eater
Add a test that says that 'isSingular' spans have to be at the bottom level.

Summary:
When translating, we replace a pair of 'isSingular'/'else' spans by
possibly a whole bunch of spans, one for each plural-form that a
language has.  This means that the spans must contain the actual text
to be translated.  If instead we have:

   <isSingular>
      <if foo>foo</if>
      <if bar>bar</if>
   </isSingular>
   <else>
      <if foo>foos</if>
      <if bar>bars</if>
   </else>

then we don't know how to automatically rewrite this for languages
with 5 plural forms.  Instead it needs to be
   <if foo>
      <isSingular>foo</isSingular>
      <else>foos</else>
   </if>
   <if bar>
      <isSingular>bar</isSingular>
      <else>bars</else>
   </if>
-- the 'isSingular' spans need to be distributed down.

I write a test that looks for this bad form, though I don't try to
automatically fix it (maybe possible, actually, but too much work for
now).

Fix the problematic file to distribute the isSingular spans down.

Get rid of class I started to write but ended up not using.

Allow isSingular nodes to be nested with each other.

We need to be able to support
   <isSingular(VAR_A)><isSingular(VAR_B)>text</else>text...

Test Plan:
Added a unittest case for this.

build/lint_i18n_strings.py exercises/reading_stem_and_leaf_plots.html

None

build/lint_i18n_strings_test.py

Reviewers: john

Reviewed By: john

CC: mattfaus, alpert

Differential Revision: http://phabricator.khanacademy.org/D3874
Include debug log in issues, add ex name info

Trying to debug the latest slew of mysterious issues.

Auditors: eater
Fix set answer type

More tests! Fixes #67477.

Auditors: emily

CC: eater
visualizing_derivatives: Fix #68721

Test Plan:
- doing nothing is empty
- checking no solution is correct
- moving window and checking no solution is correct
- moving window is wrong

Auditors: eater