Grammalecte  Hex Artifact Content

Artifact a0e3390e0768159cfb4a507024d03c7a47c4f9d8551a0ff1a3db1cef92c0f503:


0000: 2f 2f 20 4a 61 76 61 53 63 72 69 70 74 0a 0a 22  // JavaScript.."
0010: 75 73 65 20 73 74 72 69 63 74 22 3b 0a 0a 0a 63  use strict";...c
0020: 6f 6e 73 74 20 43 63 20 3d 20 43 6f 6d 70 6f 6e  onst Cc = Compon
0030: 65 6e 74 73 2e 63 6c 61 73 73 65 73 3b 0a 63 6f  ents.classes;.co
0040: 6e 73 74 20 43 69 20 3d 20 43 6f 6d 70 6f 6e 65  nst Ci = Compone
0050: 6e 74 73 2e 69 6e 74 65 72 66 61 63 65 73 3b 0a  nts.interfaces;.
0060: 63 6f 6e 73 74 20 43 75 20 3d 20 43 6f 6d 70 6f  const Cu = Compo
0070: 6e 65 6e 74 73 2e 75 74 69 6c 73 3b 0a 63 6f 6e  nents.utils;.con
0080: 73 74 20 7b 20 72 65 71 75 69 72 65 20 7d 20 3d  st { require } =
0090: 20 43 75 2e 69 6d 70 6f 72 74 28 22 72 65 73 6f   Cu.import("reso
00a0: 75 72 63 65 3a 2f 2f 67 72 65 2f 6d 6f 64 75 6c  urce://gre/modul
00b0: 65 73 2f 63 6f 6d 6d 6f 6e 6a 73 2f 74 6f 6f 6c  es/commonjs/tool
00c0: 6b 69 74 2f 72 65 71 75 69 72 65 2e 6a 73 22 2c  kit/require.js",
00d0: 20 7b 7d 29 3b 0a 0a 63 6f 6e 73 74 20 7b 20 42   {});..const { B
00e0: 61 73 65 50 72 6f 6d 69 73 65 57 6f 72 6b 65 72  asePromiseWorker
00f0: 20 7d 20 3d 20 43 75 2e 69 6d 70 6f 72 74 28 27   } = Cu.import('
0100: 72 65 73 6f 75 72 63 65 3a 2f 2f 67 72 65 2f 6d  resource://gre/m
0110: 6f 64 75 6c 65 73 2f 50 72 6f 6d 69 73 65 57 6f  odules/PromiseWo
0120: 72 6b 65 72 2e 6a 73 6d 27 2c 20 7b 7d 29 3b 0a  rker.jsm', {});.
0130: 63 6f 6e 73 74 20 54 61 73 6b 20 3d 20 43 75 2e  const Task = Cu.
0140: 69 6d 70 6f 72 74 28 22 72 65 73 6f 75 72 63 65  import("resource
0150: 3a 2f 2f 67 72 65 2f 6d 6f 64 75 6c 65 73 2f 54  ://gre/modules/T
0160: 61 73 6b 2e 6a 73 6d 22 29 2e 54 61 73 6b 3b 0a  ask.jsm").Task;.
0170: 63 6f 6e 73 74 20 70 72 65 66 73 20 3d 20 43 63  const prefs = Cc
0180: 5b 22 40 6d 6f 7a 69 6c 6c 61 2e 6f 72 67 2f 70  ["@mozilla.org/p
0190: 72 65 66 65 72 65 6e 63 65 73 2d 73 65 72 76 69  references-servi
01a0: 63 65 3b 31 22 5d 2e 67 65 74 53 65 72 76 69 63  ce;1"].getServic
01b0: 65 28 43 69 2e 6e 73 49 50 72 65 66 53 65 72 76  e(Ci.nsIPrefServ
01c0: 69 63 65 29 2e 67 65 74 42 72 61 6e 63 68 28 22  ice).getBranch("
01d0: 65 78 74 65 6e 73 69 6f 6e 73 2e 67 72 61 6d 6d  extensions.gramm
01e0: 61 72 63 68 65 63 6b 65 72 2e 22 29 3b 0a 2f 2f  archecker.");.//
01f0: 43 75 2e 69 6d 70 6f 72 74 28 22 72 65 73 6f 75  Cu.import("resou
0200: 72 63 65 3a 2f 2f 67 72 65 2f 6d 6f 64 75 6c 65  rce://gre/module
0210: 73 2f 43 6f 6e 73 6f 6c 65 2e 6a 73 6d 22 29 3b  s/Console.jsm");
0220: 20 2f 2f 20 64 6f 65 73 6e e2 80 99 74 20 77 6f   // doesn...t wo
0230: 72 6b 0a 2f 2f 63 6f 6e 73 74 20 78 43 6f 6e 73  rk.//const xCons
0240: 6f 6c 65 20 3d 20 43 63 5b 22 40 6d 6f 7a 69 6c  ole = Cc["@mozil
0250: 6c 61 2e 6f 72 67 2f 63 6f 6e 73 6f 6c 65 73 65  la.org/consolese
0260: 72 76 69 63 65 3b 31 22 5d 2e 67 65 74 53 65 72  rvice;1"].getSer
0270: 76 69 63 65 28 43 69 2e 6e 73 49 43 6f 6e 73 6f  vice(Ci.nsIConso
0280: 6c 65 53 65 72 76 69 63 65 29 3b 0a 2f 2f 78 43  leService);.//xC
0290: 6f 6e 73 6f 6c 65 2e 6c 6f 67 53 74 72 69 6e 67  onsole.logString
02a0: 4d 65 73 73 61 67 65 28 22 47 72 61 6d 6d 61 6c  Message("Grammal
02b0: 65 63 74 65 3a 20 22 20 2b 20 61 72 67 73 2e 6a  ecte: " + args.j
02c0: 6f 69 6e 28 22 20 c2 b7 20 22 29 29 3b 20 2f 2f  oin(" .. ")); //
02d0: 20 75 73 65 6c 65 73 73 20 6e 6f 77 2e 20 55 73   useless now. Us
02e0: 65 3a 20 53 65 72 76 69 63 65 73 2e 63 6f 6e 73  e: Services.cons
02f0: 6f 6c 65 2e 6c 6f 67 53 74 72 69 6e 67 4d 65 73  ole.logStringMes
0300: 73 61 67 65 28 22 2a 2a 2a 22 29 3b 0a 0a 63 6f  sage("***");..co
0310: 6e 73 74 20 74 65 78 74 20 3d 20 72 65 71 75 69  nst text = requi
0320: 72 65 28 22 72 65 73 6f 75 72 63 65 3a 2f 2f 67  re("resource://g
0330: 72 61 6d 6d 61 6c 65 63 74 65 2f 74 65 78 74 2e  rammalecte/text.
0340: 6a 73 22 29 3b 0a 63 6f 6e 73 74 20 74 66 20 3d  js");.const tf =
0350: 20 72 65 71 75 69 72 65 28 22 72 65 73 6f 75 72   require("resour
0360: 63 65 3a 2f 2f 67 72 61 6d 6d 61 6c 65 63 74 65  ce://grammalecte
0370: 2f 66 72 2f 74 65 78 74 66 6f 72 6d 61 74 74 65  /fr/textformatte
0380: 72 2e 6a 73 22 29 3b 0a 0a 0a 66 75 6e 63 74 69  r.js");...functi
0390: 6f 6e 20 65 63 68 6f 20 28 2e 2e 2e 61 72 67 73  on echo (...args
03a0: 29 20 7b 0a 20 20 20 20 64 75 6d 70 28 61 72 67  ) {.    dump(arg
03b0: 73 2e 6a 6f 69 6e 28 22 20 2d 2d 20 22 29 20 2b  s.join(" -- ") +
03c0: 20 22 5c 6e 22 29 3b 20 20 2f 2f 20 6f 62 73 6f   "\n");  // obso
03d0: 6c 65 74 65 20 73 69 6e 63 65 20 54 42 20 35 32  lete since TB 52
03e0: 3f 0a 20 20 20 20 53 65 72 76 69 63 65 73 2e 63  ?.    Services.c
03f0: 6f 6e 73 6f 6c 65 2e 6c 6f 67 53 74 72 69 6e 67  onsole.logString
0400: 4d 65 73 73 61 67 65 28 22 47 72 61 6d 6d 61 6c  Message("Grammal
0410: 65 63 74 65 3a 20 22 20 2b 20 61 72 67 73 2e 6a  ecte: " + args.j
0420: 6f 69 6e 28 22 20 c2 b7 20 22 29 29 3b 0a 7d 0a  oin(" .. "));.}.
0430: 0a 0a 63 6f 6e 73 74 20 6f 43 6f 6e 76 65 72 74  ..const oConvert
0440: 65 72 54 6f 45 78 70 6f 6e 65 6e 74 20 3d 20 7b  erToExponent = {
0450: 0a 20 20 20 20 64 4e 75 6d 62 65 72 73 3a 20 6e  .    dNumbers: n
0460: 65 77 20 4d 61 70 20 28 5b 0a 20 20 20 20 20 20  ew Map ([.      
0470: 20 20 5b 22 31 22 2c 20 22 c2 b9 22 5d 2c 20 5b    ["1", ".."], [
0480: 22 32 22 2c 20 22 c2 b2 22 5d 2c 20 5b 22 33 22  "2", ".."], ["3"
0490: 2c 20 22 c2 b3 22 5d 2c 20 5b 22 34 22 2c 20 22  , ".."], ["4", "
04a0: e2 81 b4 22 5d 2c 20 5b 22 35 22 2c 20 22 e2 81  ..."], ["5", "..
04b0: b5 22 5d 2c 0a 20 20 20 20 20 20 20 20 5b 22 36  ."],.        ["6
04c0: 22 2c 20 22 e2 81 b6 22 5d 2c 20 5b 22 37 22 2c  ", "..."], ["7",
04d0: 20 22 e2 81 b7 22 5d 2c 20 5b 22 38 22 2c 20 22   "..."], ["8", "
04e0: e2 81 b8 22 5d 2c 20 5b 22 39 22 2c 20 22 e2 81  ..."], ["9", "..
04f0: b9 22 5d 2c 20 5b 22 30 22 2c 20 22 e2 81 b0 22  ."], ["0", "..."
0500: 5d 0a 20 20 20 20 5d 29 2c 0a 20 20 20 20 63 6f  ].    ]),.    co
0510: 6e 76 65 72 74 3a 20 66 75 6e 63 74 69 6f 6e 20  nvert: function 
0520: 28 73 54 65 78 74 29 20 7b 0a 20 20 20 20 20 20  (sText) {.      
0530: 20 20 6c 65 74 20 73 52 65 73 20 3d 20 22 22 3b    let sRes = "";
0540: 0a 20 20 20 20 20 20 20 20 66 6f 72 20 28 6c 65  .        for (le
0550: 74 20 63 20 6f 66 20 73 54 65 78 74 29 20 7b 0a  t c of sText) {.
0560: 20 20 20 20 20 20 20 20 20 20 20 20 73 52 65 73              sRes
0570: 20 2b 3d 20 28 74 68 69 73 2e 64 4e 75 6d 62 65   += (this.dNumbe
0580: 72 73 2e 68 61 73 28 63 29 29 20 3f 20 74 68 69  rs.has(c)) ? thi
0590: 73 2e 64 4e 75 6d 62 65 72 73 2e 67 65 74 28 63  s.dNumbers.get(c
05a0: 29 20 3a 20 22 e2 81 bb 22 3b 0a 20 20 20 20 20  ) : "...";.     
05b0: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 72 65 74     }.        ret
05c0: 75 72 6e 20 73 52 65 73 3b 0a 20 20 20 20 7d 0a  urn sRes;.    }.
05d0: 7d 3b 0a 0a 0a 76 61 72 20 6f 47 72 61 6d 6d 61  };...var oGramma
05e0: 72 43 68 65 63 6b 65 72 20 3d 20 7b 0a 20 20 20  rChecker = {.   
05f0: 20 2f 2f 20 79 6f 75 20 6d 75 73 74 20 75 73 65   // you must use
0600: 20 76 61 72 20 74 6f 20 62 65 20 61 62 6c 65 20   var to be able 
0610: 74 6f 20 63 61 6c 6c 20 74 68 69 73 20 6f 62 6a  to call this obj
0620: 65 63 74 20 66 72 6f 6d 20 65 6c 73 65 77 68 65  ect from elsewhe
0630: 72 65 0a 20 20 20 20 78 47 43 45 57 6f 72 6b 65  re.    xGCEWorke
0640: 72 3a 20 6e 75 6c 6c 2c 0a 20 20 20 20 6c 6f 61  r: null,.    loa
0650: 64 47 43 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29  dGC: function ()
0660: 20 7b 0a 20 20 20 20 20 20 20 20 69 66 20 28 74   {.        if (t
0670: 68 69 73 2e 78 47 43 45 57 6f 72 6b 65 72 20 3d  his.xGCEWorker =
0680: 3d 3d 20 6e 75 6c 6c 29 20 7b 0a 20 20 20 20 20  == null) {.     
0690: 20 20 20 20 20 20 20 2f 2f 20 47 72 61 6d 6d 61         // Gramma
06a0: 72 20 63 68 65 63 6b 65 72 0a 20 20 20 20 20 20  r checker.      
06b0: 20 20 20 20 20 20 65 63 68 6f 28 27 4c 6f 61 64        echo('Load
06c0: 69 6e 67 20 47 72 61 6d 6d 61 6c 65 63 74 65 27  ing Grammalecte'
06d0: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  );.            t
06e0: 68 69 73 2e 78 47 43 45 57 6f 72 6b 65 72 20 3d  his.xGCEWorker =
06f0: 20 6e 65 77 20 42 61 73 65 50 72 6f 6d 69 73 65   new BasePromise
0700: 57 6f 72 6b 65 72 28 27 63 68 72 6f 6d 65 3a 2f  Worker('chrome:/
0710: 2f 70 72 6f 6d 69 73 65 77 6f 72 6b 65 72 2f 63  /promiseworker/c
0720: 6f 6e 74 65 6e 74 2f 67 63 65 5f 77 6f 72 6b 65  ontent/gce_worke
0730: 72 2e 6a 73 27 29 3b 0a 20 20 20 20 20 20 20 20  r.js');.        
0740: 20 20 20 20 6c 65 74 20 74 68 61 74 20 3d 20 74      let that = t
0750: 68 69 73 3b 0a 20 20 20 20 20 20 20 20 20 20 20  his;.           
0760: 20 6c 65 74 20 78 50 72 6f 6d 69 73 65 20 3d 20   let xPromise = 
0770: 74 68 69 73 2e 78 47 43 45 57 6f 72 6b 65 72 2e  this.xGCEWorker.
0780: 70 6f 73 74 28 27 6c 6f 61 64 47 72 61 6d 6d 61  post('loadGramma
0790: 72 43 68 65 63 6b 65 72 27 2c 20 5b 70 72 65 66  rChecker', [pref
07a0: 73 2e 67 65 74 43 68 61 72 50 72 65 66 28 22 73  s.getCharPref("s
07b0: 47 43 4f 70 74 69 6f 6e 73 22 29 2c 20 22 54 68  GCOptions"), "Th
07c0: 75 6e 64 65 72 62 69 72 64 22 5d 29 3b 0a 20 20  underbird"]);.  
07d0: 20 20 20 20 20 20 20 20 20 20 78 50 72 6f 6d 69            xPromi
07e0: 73 65 2e 74 68 65 6e 28 0a 20 20 20 20 20 20 20  se.then(.       
07f0: 20 20 20 20 20 20 20 20 20 66 75 6e 63 74 69 6f           functio
0800: 6e 20 28 61 56 61 6c 29 20 7b 0a 20 20 20 20 20  n (aVal) {.     
0810: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
0820: 63 68 6f 28 61 56 61 6c 29 3b 0a 20 20 20 20 20  cho(aVal);.     
0830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
0840: 72 65 66 73 2e 73 65 74 43 68 61 72 50 72 65 66  refs.setCharPref
0850: 28 22 73 47 43 4f 70 74 69 6f 6e 73 22 2c 20 61  ("sGCOptions", a
0860: 56 61 6c 29 3b 0a 20 20 20 20 20 20 20 20 20 20  Val);.          
0870: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 72            if (pr
0880: 65 66 73 2e 67 65 74 42 6f 6f 6c 50 72 65 66 28  efs.getBoolPref(
0890: 22 62 50 65 72 73 6f 6e 61 6c 44 69 63 74 69 6f  "bPersonalDictio
08a0: 6e 61 72 79 22 29 29 20 7b 0a 20 20 20 20 20 20  nary")) {.      
08b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
08c0: 20 20 6c 65 74 20 73 44 69 63 4a 53 4f 4e 20 3d    let sDicJSON =
08d0: 20 6f 46 69 6c 65 48 61 6e 64 6c 65 72 2e 6c 6f   oFileHandler.lo
08e0: 61 64 46 69 6c 65 28 22 66 72 2e 70 65 72 73 6f  adFile("fr.perso
08f0: 6e 61 6c 2e 6a 73 6f 6e 22 29 3b 0a 20 20 20 20  nal.json");.    
0900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0910: 20 20 20 20 69 66 20 28 73 44 69 63 4a 53 4f 4e      if (sDicJSON
0920: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ) {.            
0930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0940: 74 68 61 74 2e 78 47 43 45 57 6f 72 6b 65 72 2e  that.xGCEWorker.
0950: 70 6f 73 74 28 27 73 65 74 44 69 63 74 69 6f 6e  post('setDiction
0960: 61 72 79 27 2c 20 5b 22 70 65 72 73 6f 6e 61 6c  ary', ["personal
0970: 22 2c 20 73 44 69 63 4a 53 4f 4e 5d 29 3b 0a 20  ", sDicJSON]);. 
0980: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0990: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20         }.       
09a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20               }. 
09b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
09c0: 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ,.              
09d0: 20 20 66 75 6e 63 74 69 6f 6e 20 28 61 52 65 61    function (aRea
09e0: 73 6f 6e 29 20 7b 20 65 63 68 6f 28 27 50 72 6f  son) { echo('Pro
09f0: 6d 69 73 65 20 72 65 6a 65 63 74 65 64 20 2d 20  mise rejected - 
0a00: 27 2c 20 61 52 65 61 73 6f 6e 29 3b 20 7d 0a 20  ', aReason); }. 
0a10: 20 20 20 20 20 20 20 20 20 20 20 29 2e 63 61 74             ).cat
0a20: 63 68 28 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch(.            
0a30: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 28 61 43      function (aC
0a40: 61 75 67 68 74 29 20 7b 20 65 63 68 6f 28 27 50  aught) { echo('P
0a50: 72 6f 6d 69 73 65 20 45 72 72 6f 72 20 2d 20 27  romise Error - '
0a60: 2c 20 61 43 61 75 67 68 74 29 3b 20 7d 0a 20 20  , aCaught); }.  
0a70: 20 20 20 20 20 20 20 20 20 20 29 3b 0a 0a 20 20            );..  
0a80: 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 2c 0a 20        }.    },. 
0a90: 20 20 20 66 75 6c 6c 54 65 73 74 73 3a 20 66 75     fullTests: fu
0aa0: 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20 20 20  nction () {.    
0ab0: 20 20 20 20 65 63 68 6f 28 27 50 65 72 66 6f 72      echo('Perfor
0ac0: 6d 69 6e 67 20 74 65 73 74 73 2e 2e 2e 20 57 61  ming tests... Wa
0ad0: 69 74 2e 2e 2e 27 29 3b 0a 20 20 20 20 20 20 20  it...');.       
0ae0: 20 6c 65 74 20 78 50 72 6f 6d 69 73 65 20 3d 20   let xPromise = 
0af0: 74 68 69 73 2e 78 47 43 45 57 6f 72 6b 65 72 2e  this.xGCEWorker.
0b00: 70 6f 73 74 28 27 66 75 6c 6c 54 65 73 74 73 27  post('fullTests'
0b10: 2c 20 5b 27 7b 22 6e 62 73 70 22 3a 74 72 75 65  , ['{"nbsp":true
0b20: 2c 20 22 65 73 70 22 3a 74 72 75 65 2c 20 22 75  , "esp":true, "u
0b30: 6e 69 74 22 3a 74 72 75 65 2c 20 22 6e 75 6d 22  nit":true, "num"
0b40: 3a 74 72 75 65 7d 27 5d 29 3b 0a 20 20 20 20 20  :true}']);.     
0b50: 20 20 20 78 50 72 6f 6d 69 73 65 2e 74 68 65 6e     xPromise.then
0b60: 28 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 75  (.            fu
0b70: 6e 63 74 69 6f 6e 20 28 61 56 61 6c 29 20 7b 0a  nction (aVal) {.
0b80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0b90: 65 63 68 6f 28 27 44 6f 6e 65 2e 27 29 3b 0a 20  echo('Done.');. 
0ba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
0bb0: 63 68 6f 28 61 56 61 6c 29 3b 0a 20 20 20 20 20  cho(aVal);.     
0bc0: 20 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20         },.      
0bd0: 20 20 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 28        function (
0be0: 61 52 65 61 73 6f 6e 29 20 7b 20 65 63 68 6f 28  aReason) { echo(
0bf0: 27 50 72 6f 6d 69 73 65 20 72 65 6a 65 63 74 65  'Promise rejecte
0c00: 64 27 2c 20 61 52 65 61 73 6f 6e 29 3b 20 7d 0a  d', aReason); }.
0c10: 20 20 20 20 20 20 20 20 29 2e 63 61 74 63 68 28          ).catch(
0c20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 75 6e  .            fun
0c30: 63 74 69 6f 6e 20 28 61 43 61 75 67 68 74 29 20  ction (aCaught) 
0c40: 7b 20 65 63 68 6f 28 27 50 72 6f 6d 69 73 65 20  { echo('Promise 
0c50: 45 72 72 6f 72 27 2c 20 61 43 61 75 67 68 74 29  Error', aCaught)
0c60: 3b 20 7d 0a 20 20 20 20 20 20 20 20 29 3b 0a 20  ; }.        );. 
0c70: 20 20 20 7d 2c 0a 20 20 20 20 74 65 73 74 3a 20     },.    test: 
0c80: 66 75 6e 63 74 69 6f 6e 20 28 73 54 65 78 74 29  function (sText)
0c90: 20 7b 0a 20 20 20 20 20 20 20 20 65 63 68 6f 28   {.        echo(
0ca0: 22 54 65 73 74 2e 2e 2e 22 29 3b 0a 20 20 20 20  "Test...");.    
0cb0: 20 20 20 20 6c 65 74 20 78 50 72 6f 6d 69 73 65      let xPromise
0cc0: 20 3d 20 74 68 69 73 2e 78 47 43 45 57 6f 72 6b   = this.xGCEWork
0cd0: 65 72 2e 70 6f 73 74 28 27 70 61 72 73 65 27 2c  er.post('parse',
0ce0: 20 5b 73 54 65 78 74 2c 20 22 46 52 22 2c 20 74   [sText, "FR", t
0cf0: 72 75 65 5d 29 3b 0a 20 20 20 20 20 20 20 20 78  rue]);.        x
0d00: 50 72 6f 6d 69 73 65 2e 74 68 65 6e 28 0a 20 20  Promise.then(.  
0d10: 20 20 20 20 20 20 20 20 20 20 66 75 6e 63 74 69            functi
0d20: 6f 6e 20 28 61 56 61 6c 29 20 7b 0a 20 20 20 20  on (aVal) {.    
0d30: 20 20 20 20 20 20 20 20 20 20 20 20 6c 65 74 20              let 
0d40: 6c 45 72 72 20 3d 20 4a 53 4f 4e 2e 70 61 72 73  lErr = JSON.pars
0d50: 65 28 61 56 61 6c 29 3b 0a 20 20 20 20 20 20 20  e(aVal);.       
0d60: 20 20 20 20 20 20 20 20 20 69 66 20 28 6c 45 72           if (lEr
0d70: 72 2e 6c 65 6e 67 74 68 20 3e 20 30 29 20 7b 0a  r.length > 0) {.
0d80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0d90: 20 20 20 20 66 6f 72 20 28 6c 65 74 20 64 45 72      for (let dEr
0da0: 72 20 6f 66 20 6c 45 72 72 29 20 7b 0a 20 20 20  r of lErr) {.   
0db0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0dc0: 20 20 20 20 20 65 63 68 6f 28 74 65 78 74 2e 67       echo(text.g
0dd0: 65 74 52 65 61 64 61 62 6c 65 45 72 72 6f 72 28  etReadableError(
0de0: 64 45 72 72 29 29 3b 0a 20 20 20 20 20 20 20 20  dErr));.        
0df0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20              }.  
0e00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20                } 
0e10: 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 20  else {.         
0e20: 20 20 20 20 20 20 20 20 20 20 20 65 63 68 6f 28             echo(
0e30: 22 6e 6f 20 65 72 72 6f 72 20 66 6f 75 6e 64 22  "no error found"
0e40: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  );.             
0e50: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20     }.           
0e60: 20 7d 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20   },.            
0e70: 66 75 6e 63 74 69 6f 6e 20 28 61 52 65 61 73 6f  function (aReaso
0e80: 6e 29 20 7b 20 65 63 68 6f 28 27 50 72 6f 6d 69  n) { echo('Promi
0e90: 73 65 20 72 65 6a 65 63 74 65 64 27 2c 20 61 52  se rejected', aR
0ea0: 65 61 73 6f 6e 29 3b 20 7d 0a 20 20 20 20 20 20  eason); }.      
0eb0: 20 20 29 2e 63 61 74 63 68 28 0a 20 20 20 20 20    ).catch(.     
0ec0: 20 20 20 20 20 20 20 66 75 6e 63 74 69 6f 6e 20         function 
0ed0: 28 61 43 61 75 67 68 74 29 20 7b 20 65 63 68 6f  (aCaught) { echo
0ee0: 28 27 50 72 6f 6d 69 73 65 20 45 72 72 6f 72 27  ('Promise Error'
0ef0: 2c 20 61 43 61 75 67 68 74 29 3b 20 7d 0a 20 20  , aCaught); }.  
0f00: 20 20 20 20 20 20 29 3b 0a 20 20 20 20 7d 2c 0a        );.    },.
0f10: 20 20 20 20 73 65 74 4f 70 74 69 6f 6e 73 3a 20      setOptions: 
0f20: 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20  function () {.  
0f30: 20 20 20 20 20 20 65 63 68 6f 28 27 53 65 74 20        echo('Set 
0f40: 6f 70 74 69 6f 6e 73 27 29 3b 0a 20 20 20 20 20  options');.     
0f50: 20 20 20 6c 65 74 20 78 50 72 6f 6d 69 73 65 20     let xPromise 
0f60: 3d 20 74 68 69 73 2e 78 47 43 45 57 6f 72 6b 65  = this.xGCEWorke
0f70: 72 2e 70 6f 73 74 28 27 73 65 74 4f 70 74 69 6f  r.post('setOptio
0f80: 6e 73 27 2c 20 5b 70 72 65 66 73 2e 67 65 74 43  ns', [prefs.getC
0f90: 68 61 72 50 72 65 66 28 22 73 47 43 4f 70 74 69  harPref("sGCOpti
0fa0: 6f 6e 73 22 29 5d 29 3b 0a 20 20 20 20 20 20 20  ons")]);.       
0fb0: 20 78 50 72 6f 6d 69 73 65 2e 74 68 65 6e 28 0a   xPromise.then(.
0fc0: 20 20 20 20 20 20 20 20 20 20 20 20 66 75 6e 63              func
0fd0: 74 69 6f 6e 20 28 61 56 61 6c 29 20 7b 0a 20 20  tion (aVal) {.  
0fe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 63                ec
0ff0: 68 6f 28 61 56 61 6c 29 3b 0a 20 20 20 20 20 20  ho(aVal);.      
1000: 20 20 20 20 20 20 20 20 20 20 70 72 65 66 73 2e            prefs.
1010: 73 65 74 43 68 61 72 50 72 65 66 28 22 73 47 43  setCharPref("sGC
1020: 4f 70 74 69 6f 6e 73 22 2c 20 61 56 61 6c 29 3b  Options", aVal);
1030: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 2c 0a  .            },.
1040: 20 20 20 20 20 20 20 20 20 20 20 20 66 75 6e 63              func
1050: 74 69 6f 6e 20 28 61 52 65 61 73 6f 6e 29 20 7b  tion (aReason) {
1060: 20 65 63 68 6f 28 27 50 72 6f 6d 69 73 65 20 72   echo('Promise r
1070: 65 6a 65 63 74 65 64 27 2c 20 61 52 65 61 73 6f  ejected', aReaso
1080: 6e 29 3b 20 7d 0a 20 20 20 20 20 20 20 20 29 2e  n); }.        ).
1090: 63 61 74 63 68 28 0a 20 20 20 20 20 20 20 20 20  catch(.         
10a0: 20 20 20 66 75 6e 63 74 69 6f 6e 20 28 61 43 61     function (aCa
10b0: 75 67 68 74 29 20 7b 20 65 63 68 6f 28 27 50 72  ught) { echo('Pr
10c0: 6f 6d 69 73 65 20 45 72 72 6f 72 27 2c 20 61 43  omise Error', aC
10d0: 61 75 67 68 74 29 3b 20 7d 0a 20 20 20 20 20 20  aught); }.      
10e0: 20 20 29 3b 0a 20 20 20 20 7d 2c 0a 20 20 20 20    );.    },.    
10f0: 72 65 73 65 74 4f 70 74 69 6f 6e 73 3a 20 66 75  resetOptions: fu
1100: 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20 20 20  nction () {.    
1110: 20 20 20 20 6c 65 74 20 78 50 72 6f 6d 69 73 65      let xPromise
1120: 20 3d 20 74 68 69 73 2e 78 47 43 45 57 6f 72 6b   = this.xGCEWork
1130: 65 72 2e 70 6f 73 74 28 27 72 65 73 65 74 4f 70  er.post('resetOp
1140: 74 69 6f 6e 73 27 29 3b 0a 20 20 20 20 20 20 20  tions');.       
1150: 20 78 50 72 6f 6d 69 73 65 2e 74 68 65 6e 28 0a   xPromise.then(.
1160: 20 20 20 20 20 20 20 20 20 20 20 20 66 75 6e 63              func
1170: 74 69 6f 6e 20 28 61 56 61 6c 29 20 7b 0a 20 20  tion (aVal) {.  
1180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 63                ec
1190: 68 6f 28 61 56 61 6c 29 3b 0a 20 20 20 20 20 20  ho(aVal);.      
11a0: 20 20 20 20 20 20 20 20 20 20 70 72 65 66 73 2e            prefs.
11b0: 73 65 74 43 68 61 72 50 72 65 66 28 22 73 47 43  setCharPref("sGC
11c0: 4f 70 74 69 6f 6e 73 22 2c 20 61 56 61 6c 29 3b  Options", aVal);
11d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 2c 0a  .            },.
11e0: 20 20 20 20 20 20 20 20 20 20 20 20 66 75 6e 63              func
11f0: 74 69 6f 6e 20 28 61 52 65 61 73 6f 6e 29 20 7b  tion (aReason) {
1200: 20 65 63 68 6f 28 27 50 72 6f 6d 69 73 65 20 72   echo('Promise r
1210: 65 6a 65 63 74 65 64 27 2c 20 61 52 65 61 73 6f  ejected', aReaso
1220: 6e 29 3b 20 7d 0a 20 20 20 20 20 20 20 20 29 2e  n); }.        ).
1230: 63 61 74 63 68 28 0a 20 20 20 20 20 20 20 20 20  catch(.         
1240: 20 20 20 66 75 6e 63 74 69 6f 6e 20 28 61 43 61     function (aCa
1250: 75 67 68 74 29 20 7b 20 65 63 68 6f 28 27 50 72  ught) { echo('Pr
1260: 6f 6d 69 73 65 20 45 72 72 6f 72 27 2c 20 61 43  omise Error', aC
1270: 61 75 67 68 74 29 3b 20 7d 0a 20 20 20 20 20 20  aught); }.      
1280: 20 20 29 3b 0a 20 20 20 20 7d 2c 0a 20 20 20 20    );.    },.    
1290: 5f 67 65 74 47 43 52 65 73 75 6c 74 50 72 6f 6d  _getGCResultProm
12a0: 69 73 65 3a 20 66 75 6e 63 74 69 6f 6e 20 28 73  ise: function (s
12b0: 50 61 72 61 67 72 61 70 68 2c 20 73 4c 61 6e 67  Paragraph, sLang
12c0: 2c 20 62 44 65 62 75 67 2c 20 62 43 6f 6e 74 65  , bDebug, bConte
12d0: 78 74 29 20 7b 0a 20 20 20 20 20 20 20 20 2f 2f  xt) {.        //
12e0: 20 46 6f 72 20 73 6f 6d 65 20 72 65 61 73 6f 6e   For some reason
12f0: 2c 20 79 6f 75 20 63 61 6e e2 80 99 74 20 75 73  , you can...t us
1300: 65 20 72 65 73 75 6c 74 20 6f 66 20 50 72 6f 6d  e result of Prom
1310: 69 73 65 57 6f 72 6b 65 72 20 77 69 74 68 69 6e  iseWorker within
1320: 20 61 20 54 61 73 6b 2c 0a 20 20 20 20 20 20 20   a Task,.       
1330: 20 2f 2f 20 79 6f 75 20 68 61 76 65 20 74 6f 20   // you have to 
1340: 77 72 61 70 20 69 74 20 69 6e 20 61 20 63 6f 6d  wrap it in a com
1350: 6d 6f 6e 20 50 72 6f 6d 69 73 65 2e 20 54 61 73  mon Promise. Tas
1360: 6b 20 61 6e 64 20 79 69 65 6c 64 20 63 61 6e 20  k and yield can 
1370: 62 65 20 72 65 70 6c 61 63 65 64 20 77 69 74 68  be replaced with
1380: 20 61 73 79 6e 63 20 2f 20 61 77 61 69 74 20 77   async / await w
1390: 68 65 6e 20 69 74 20 69 73 20 61 76 61 69 6c 61  hen it is availa
13a0: 62 6c 65 2e 0a 20 20 20 20 20 20 20 20 6c 65 74  ble..        let
13b0: 20 74 68 61 74 20 3d 20 74 68 69 73 3b 0a 20 20   that = this;.  
13c0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77        return new
13d0: 20 50 72 6f 6d 69 73 65 28 66 75 6e 63 74 69 6f   Promise(functio
13e0: 6e 20 28 72 65 73 6f 6c 76 65 2c 20 72 65 6a 65  n (resolve, reje
13f0: 63 74 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20  ct) {.          
1400: 20 20 6c 65 74 20 78 50 72 6f 6d 69 73 65 20 3d    let xPromise =
1410: 20 74 68 61 74 2e 78 47 43 45 57 6f 72 6b 65 72   that.xGCEWorker
1420: 2e 70 6f 73 74 28 27 70 61 72 73 65 41 6e 64 53  .post('parseAndS
1430: 70 65 6c 6c 63 68 65 63 6b 27 2c 20 5b 73 50 61  pellcheck', [sPa
1440: 72 61 67 72 61 70 68 2c 20 73 4c 61 6e 67 2c 20  ragraph, sLang, 
1450: 62 44 65 62 75 67 2c 20 62 43 6f 6e 74 65 78 74  bDebug, bContext
1460: 5d 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ]);.            
1470: 78 50 72 6f 6d 69 73 65 2e 74 68 65 6e 28 0a 20  xPromise.then(. 
1480: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66                 f
1490: 75 6e 63 74 69 6f 6e 20 28 61 56 61 6c 29 20 7b  unction (aVal) {
14a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
14b0: 20 20 20 20 20 72 65 73 6f 6c 76 65 28 61 56 61       resolve(aVa
14c0: 6c 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  l);.            
14d0: 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 20 20 20      },.         
14e0: 20 20 20 20 20 20 20 66 75 6e 63 74 69 6f 6e 20         function 
14f0: 28 61 52 65 61 73 6f 6e 29 20 7b 0a 20 20 20 20  (aReason) {.    
1500: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1510: 2f 2f 20 72 65 6a 65 63 74 65 64 0a 20 20 20 20  // rejected.    
1520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1530: 72 65 73 6f 6c 76 65 28 61 52 65 61 73 6f 6e 29  resolve(aReason)
1540: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ;.              
1550: 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20    }.            
1560: 29 2e 63 61 74 63 68 28 0a 20 20 20 20 20 20 20  ).catch(.       
1570: 20 20 20 20 20 20 20 20 20 66 75 6e 63 74 69 6f           functio
1580: 6e 20 28 61 43 61 75 67 68 74 29 20 7b 0a 20 20  n (aCaught) {.  
1590: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15a0: 20 20 2f 2f 20 65 72 72 6f 72 0a 20 20 20 20 20    // error.     
15b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
15c0: 65 6a 65 63 74 28 61 43 61 75 67 68 74 29 3b 0a  eject(aCaught);.
15d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15e0: 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b  }.            );
15f0: 0a 20 20 20 20 20 20 20 20 7d 29 3b 0a 20 20 20  .        });.   
1600: 20 7d 2c 0a 20 20 20 20 70 61 72 73 65 3a 20 66   },.    parse: f
1610: 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20 20  unction () {.   
1620: 20 20 20 20 20 74 68 69 73 2e 63 6c 65 61 72 50       this.clearP
1630: 72 65 76 69 65 77 28 29 3b 0a 20 20 20 20 20 20  review();.      
1640: 20 20 74 68 69 73 2e 6f 70 65 6e 50 61 6e 65 6c    this.openPanel
1650: 28 29 3b 0a 20 20 20 20 20 20 20 20 74 68 69 73  ();.        this
1660: 2e 73 65 74 49 6e 66 6f 28 22 41 6e 61 6c 79 73  .setInfo("Analys
1670: 65 20 65 6e 20 63 6f 75 72 73 e2 80 a6 22 29 3b  e en cours...");
1680: 0a 20 20 20 20 20 20 20 20 6c 65 74 20 74 68 61  .        let tha
1690: 74 20 3d 20 74 68 69 73 3b 0a 20 20 20 20 20 20  t = this;.      
16a0: 20 20 54 61 73 6b 2e 73 70 61 77 6e 28 66 75 6e    Task.spawn(fun
16b0: 63 74 69 6f 6e 2a 20 28 29 20 7b 0a 20 20 20 20  ction* () {.    
16c0: 20 20 20 20 20 20 20 20 6c 65 74 20 78 45 64 69          let xEdi
16d0: 74 6f 72 20 3d 20 6e 65 77 20 45 64 69 74 6f 72  tor = new Editor
16e0: 28 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ();.            
16f0: 6c 65 74 20 6e 50 61 72 61 67 72 61 70 68 20 3d  let nParagraph =
1700: 20 30 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20   0;.            
1710: 6c 65 74 20 62 49 73 45 72 72 6f 72 20 3d 20 66  let bIsError = f
1720: 61 6c 73 65 3b 0a 20 20 20 20 20 20 20 20 20 20  alse;.          
1730: 20 20 66 6f 72 20 28 6c 65 74 20 5b 69 50 61 72    for (let [iPar
1740: 61 67 72 61 70 68 2c 20 73 50 61 72 61 67 72 61  agraph, sParagra
1750: 70 68 5d 20 6f 66 20 78 45 64 69 74 6f 72 2e 67  ph] of xEditor.g
1760: 65 74 50 61 72 61 67 72 61 70 68 73 28 29 29 20  etParagraphs()) 
1770: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  {.              
1780: 20 20 69 66 20 28 73 50 61 72 61 67 72 61 70 68    if (sParagraph
1790: 2e 74 72 69 6d 28 29 20 21 3d 3d 20 22 22 29 20  .trim() !== "") 
17a0: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  {.              
17b0: 20 20 20 20 20 20 6c 65 74 20 73 52 65 73 20 3d        let sRes =
17c0: 20 79 69 65 6c 64 20 74 68 61 74 2e 5f 67 65 74   yield that._get
17d0: 47 43 52 65 73 75 6c 74 50 72 6f 6d 69 73 65 28  GCResultPromise(
17e0: 73 50 61 72 61 67 72 61 70 68 2c 20 22 46 52 22  sParagraph, "FR"
17f0: 2c 20 66 61 6c 73 65 2c 20 66 61 6c 73 65 29 3b  , false, false);
1800: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1810: 20 20 20 20 20 6c 65 74 20 6f 52 65 73 20 3d 20       let oRes = 
1820: 4a 53 4f 4e 2e 70 61 72 73 65 28 73 52 65 73 29  JSON.parse(sRes)
1830: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ;.              
1840: 20 20 20 20 20 20 69 66 20 28 6f 52 65 73 2e 61        if (oRes.a
1850: 47 72 61 6d 6d 45 72 72 2e 6c 65 6e 67 74 68 20  GrammErr.length 
1860: 3e 20 30 20 7c 7c 20 6f 52 65 73 2e 61 53 70 65  > 0 || oRes.aSpe
1870: 6c 6c 45 72 72 2e 6c 65 6e 67 74 68 20 3e 20 30  llErr.length > 0
1880: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ) {.            
1890: 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 63 75              docu
18a0: 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42  ment.getElementB
18b0: 79 49 64 28 22 67 72 61 6d 6d 61 6c 65 63 74 65  yId("grammalecte
18c0: 2d 65 72 72 6f 72 73 22 29 2e 61 70 70 65 6e 64  -errors").append
18d0: 43 68 69 6c 64 28 74 68 61 74 2e 63 72 65 61 74  Child(that.creat
18e0: 65 52 65 73 75 6c 74 4e 6f 64 65 28 78 45 64 69  eResultNode(xEdi
18f0: 74 6f 72 2c 20 73 50 61 72 61 67 72 61 70 68 2c  tor, sParagraph,
1900: 20 69 50 61 72 61 67 72 61 70 68 2c 20 6f 52 65   iParagraph, oRe
1910: 73 2e 61 47 72 61 6d 6d 45 72 72 2c 20 6f 52 65  s.aGrammErr, oRe
1920: 73 2e 61 53 70 65 6c 6c 45 72 72 29 29 3b 0a 20  s.aSpellErr));. 
1930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1940: 20 20 20 20 20 20 20 62 49 73 45 72 72 6f 72 20         bIsError 
1950: 3d 20 74 72 75 65 3b 0a 20 20 20 20 20 20 20 20  = true;.        
1960: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20              }.  
1970: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1980: 20 20 6e 50 61 72 61 67 72 61 70 68 20 2b 3d 20    nParagraph += 
1990: 31 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  1;.             
19a0: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20     }.           
19b0: 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69   }.            i
19c0: 66 20 28 62 49 73 45 72 72 6f 72 20 3d 3d 3d 20  f (bIsError === 
19d0: 66 61 6c 73 65 29 20 7b 0a 20 20 20 20 20 20 20  false) {.       
19e0: 20 20 20 20 20 20 20 20 20 6c 65 74 20 78 4e 6f           let xNo
19f0: 64 65 50 20 3d 20 64 6f 63 75 6d 65 6e 74 2e 63  deP = document.c
1a00: 72 65 61 74 65 45 6c 65 6d 65 6e 74 28 22 70 22  reateElement("p"
1a10: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  );.             
1a20: 20 20 20 78 4e 6f 64 65 50 2e 73 65 74 41 74 74     xNodeP.setAtt
1a30: 72 69 62 75 74 65 28 22 63 6c 61 73 73 22 2c 20  ribute("class", 
1a40: 22 6d 65 73 73 61 67 65 22 29 3b 0a 20 20 20 20  "message");.    
1a50: 20 20 20 20 20 20 20 20 20 20 20 20 78 4e 6f 64              xNod
1a60: 65 50 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d  eP.textContent =
1a70: 20 22 41 75 63 75 6e 65 20 65 72 72 65 75 72 20   "Aucune erreur 
1a80: 64 c3 a9 74 65 63 74 c3 a9 65 e2 80 a6 22 3b 0a  d..tect..e...";.
1a90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1aa0: 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d  document.getElem
1ab0: 65 6e 74 42 79 49 64 28 22 67 72 61 6d 6d 61 6c  entById("grammal
1ac0: 65 63 74 65 2d 65 72 72 6f 72 73 22 29 2e 61 70  ecte-errors").ap
1ad0: 70 65 6e 64 43 68 69 6c 64 28 78 4e 6f 64 65 50  pendChild(xNodeP
1ae0: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  );.            }
1af0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
1b00: 75 72 6e 20 6e 50 61 72 61 67 72 61 70 68 3b 0a  urn nParagraph;.
1b10: 20 20 20 20 20 20 20 20 7d 29 2e 74 68 65 6e 28          }).then(
1b20: 66 75 6e 63 74 69 6f 6e 20 28 72 65 73 29 20 7b  function (res) {
1b30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 61  .            tha
1b40: 74 2e 73 65 74 49 6e 66 6f 28 22 4e 6f 6d 62 72  t.setInfo("Nombr
1b50: 65 20 64 65 20 70 61 72 61 67 72 61 70 68 65 73  e de paragraphes
1b60: 20 61 6e 61 6c 79 73 c3 a9 73 20 3a 20 22 20 2b   analys..s : " +
1b70: 20 72 65 73 29 3b 0a 20 20 20 20 20 20 20 20 7d   res);.        }
1b80: 2c 20 66 75 6e 63 74 69 6f 6e 20 28 65 29 20 7b  , function (e) {
1b90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 61  .            tha
1ba0: 74 2e 73 65 74 49 6e 66 6f 28 22 45 72 72 65 75  t.setInfo("Erreu
1bb0: 72 20 3a 20 22 20 2b 20 65 2e 6d 65 73 73 61 67  r : " + e.messag
1bc0: 65 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  e);.            
1bd0: 43 75 2e 72 65 70 6f 72 74 45 72 72 6f 72 28 65  Cu.reportError(e
1be0: 29 3b 0a 20 20 20 20 20 20 20 20 7d 29 3b 0a 20  );.        });. 
1bf0: 20 20 20 7d 2c 0a 20 20 20 20 63 72 65 61 74 65     },.    create
1c00: 52 65 73 75 6c 74 4e 6f 64 65 3a 20 66 75 6e 63  ResultNode: func
1c10: 74 69 6f 6e 20 28 78 45 64 69 74 6f 72 2c 20 73  tion (xEditor, s
1c20: 50 61 72 61 67 72 61 70 68 2c 20 69 50 61 72 61  Paragraph, iPara
1c30: 67 72 61 70 68 2c 20 61 47 72 61 6d 6d 45 72 72  graph, aGrammErr
1c40: 2c 20 61 53 70 65 6c 6c 45 72 72 29 20 7b 0a 20  , aSpellErr) {. 
1c50: 20 20 20 20 20 20 20 6c 65 74 20 78 52 65 73 75         let xResu
1c60: 6c 74 4e 6f 64 65 20 3d 20 64 6f 63 75 6d 65 6e  ltNode = documen
1c70: 74 2e 63 72 65 61 74 65 45 6c 65 6d 65 6e 74 28  t.createElement(
1c80: 22 64 69 76 22 29 3b 0a 20 20 20 20 20 20 20 20  "div");.        
1c90: 78 52 65 73 75 6c 74 4e 6f 64 65 2e 73 65 74 41  xResultNode.setA
1ca0: 74 74 72 69 62 75 74 65 28 22 69 64 22 2c 20 22  ttribute("id", "
1cb0: 72 65 73 6e 6f 64 65 22 20 2b 20 69 50 61 72 61  resnode" + iPara
1cc0: 67 72 61 70 68 29 3b 0a 20 20 20 20 20 20 20 20  graph);.        
1cd0: 74 68 69 73 2e 66 69 6c 6c 52 65 73 75 6c 74 4e  this.fillResultN
1ce0: 6f 64 65 28 78 52 65 73 75 6c 74 4e 6f 64 65 2c  ode(xResultNode,
1cf0: 20 78 45 64 69 74 6f 72 2c 20 73 50 61 72 61 67   xEditor, sParag
1d00: 72 61 70 68 2c 20 69 50 61 72 61 67 72 61 70 68  raph, iParagraph
1d10: 2c 20 61 47 72 61 6d 6d 45 72 72 2c 20 61 53 70  , aGrammErr, aSp
1d20: 65 6c 6c 45 72 72 29 3b 0a 20 20 20 20 20 20 20  ellErr);.       
1d30: 20 72 65 74 75 72 6e 20 78 52 65 73 75 6c 74 4e   return xResultN
1d40: 6f 64 65 3b 0a 20 20 20 20 7d 2c 0a 20 20 20 20  ode;.    },.    
1d50: 72 65 70 61 72 73 65 50 61 72 61 67 72 61 70 68  reparseParagraph
1d60: 3a 20 66 75 6e 63 74 69 6f 6e 20 28 78 45 64 69  : function (xEdi
1d70: 74 6f 72 2c 20 69 50 61 72 61 67 72 61 70 68 29  tor, iParagraph)
1d80: 20 7b 0a 20 20 20 20 20 20 20 20 74 72 79 20 7b   {.        try {
1d90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 65 74  .            let
1da0: 20 74 68 61 74 20 3d 20 74 68 69 73 3b 0a 20 20   that = this;.  
1db0: 20 20 20 20 20 20 20 20 20 20 6c 65 74 20 78 52            let xR
1dc0: 65 73 75 6c 74 4e 6f 64 65 20 3d 20 64 6f 63 75  esultNode = docu
1dd0: 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42  ment.getElementB
1de0: 79 49 64 28 22 72 65 73 6e 6f 64 65 22 2b 69 50  yId("resnode"+iP
1df0: 61 72 61 67 72 61 70 68 29 3b 0a 20 20 20 20 20  aragraph);.     
1e00: 20 20 20 20 20 20 20 78 52 65 73 75 6c 74 4e 6f         xResultNo
1e10: 64 65 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d  de.textContent =
1e20: 20 22 e2 80 a6 e2 80 a6 e2 80 a6 e2 80 a6 e2 80   "..............
1e30: a6 20 72 c3 a9 61 6e 61 6c 79 73 65 20 65 6e 20  . r..analyse en 
1e40: 63 6f 75 72 73 20 e2 80 a6 e2 80 a6 e2 80 a6 e2  cours ..........
1e50: 80 a6 e2 80 a6 22 3b 0a 20 20 20 20 20 20 20 20  .....";.        
1e60: 20 20 20 20 6c 65 74 20 73 50 61 72 61 67 72 61      let sParagra
1e70: 70 68 20 3d 20 78 45 64 69 74 6f 72 2e 67 65 74  ph = xEditor.get
1e80: 50 61 72 61 67 72 61 70 68 28 69 50 61 72 61 67  Paragraph(iParag
1e90: 72 61 70 68 29 3b 0a 20 20 20 20 20 20 20 20 20  raph);.         
1ea0: 20 20 20 6c 65 74 20 78 50 72 6f 6d 69 73 65 20     let xPromise 
1eb0: 3d 20 74 68 69 73 2e 5f 67 65 74 47 43 52 65 73  = this._getGCRes
1ec0: 75 6c 74 50 72 6f 6d 69 73 65 28 73 50 61 72 61  ultPromise(sPara
1ed0: 67 72 61 70 68 2c 20 22 46 52 22 2c 20 66 61 6c  graph, "FR", fal
1ee0: 73 65 2c 20 66 61 6c 73 65 29 3b 0a 20 20 20 20  se, false);.    
1ef0: 20 20 20 20 20 20 20 20 78 50 72 6f 6d 69 73 65          xPromise
1f00: 2e 74 68 65 6e 28 66 75 6e 63 74 69 6f 6e 20 28  .then(function (
1f10: 72 65 73 29 20 7b 0a 20 20 20 20 20 20 20 20 20  res) {.         
1f20: 20 20 20 20 20 20 20 2f 2f 65 63 68 6f 28 22 72         //echo("r
1f30: 65 73 3a 20 22 20 2b 20 72 65 73 29 3b 0a 20 20  es: " + res);.  
1f40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 52                xR
1f50: 65 73 75 6c 74 4e 6f 64 65 2e 74 65 78 74 43 6f  esultNode.textCo
1f60: 6e 74 65 6e 74 20 3d 20 22 22 3b 0a 20 20 20 20  ntent = "";.    
1f70: 20 20 20 20 20 20 20 20 20 20 20 20 6c 65 74 20              let 
1f80: 6f 52 65 73 20 3d 20 4a 53 4f 4e 2e 70 61 72 73  oRes = JSON.pars
1f90: 65 28 72 65 73 29 3b 0a 20 20 20 20 20 20 20 20  e(res);.        
1fa0: 20 20 20 20 20 20 20 20 69 66 20 28 6f 52 65 73          if (oRes
1fb0: 2e 61 47 72 61 6d 6d 45 72 72 2e 6c 65 6e 67 74  .aGrammErr.lengt
1fc0: 68 20 3e 20 30 20 7c 7c 20 6f 52 65 73 2e 61 53  h > 0 || oRes.aS
1fd0: 70 65 6c 6c 45 72 72 2e 6c 65 6e 67 74 68 20 3e  pellErr.length >
1fe0: 20 30 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20   0) {.          
1ff0: 20 20 20 20 20 20 20 20 20 20 74 68 61 74 2e 66            that.f
2000: 69 6c 6c 52 65 73 75 6c 74 4e 6f 64 65 28 78 52  illResultNode(xR
2010: 65 73 75 6c 74 4e 6f 64 65 2c 20 78 45 64 69 74  esultNode, xEdit
2020: 6f 72 2c 20 73 50 61 72 61 67 72 61 70 68 2c 20  or, sParagraph, 
2030: 69 50 61 72 61 67 72 61 70 68 2c 20 6f 52 65 73  iParagraph, oRes
2040: 2e 61 47 72 61 6d 6d 45 72 72 2c 20 6f 52 65 73  .aGrammErr, oRes
2050: 2e 61 53 70 65 6c 6c 45 72 72 29 3b 0a 20 20 20  .aSpellErr);.   
2060: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20               }. 
2070: 20 20 20 20 20 20 20 20 20 20 20 7d 2c 20 66 75             }, fu
2080: 6e 63 74 69 6f 6e 20 28 72 65 73 29 20 7b 0a 20  nction (res) {. 
2090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78                 x
20a0: 52 65 73 75 6c 74 4e 6f 64 65 2e 74 65 78 74 43  ResultNode.textC
20b0: 6f 6e 74 65 6e 74 20 3d 20 22 45 72 72 65 75 72  ontent = "Erreur
20c0: 3a 20 22 20 2b 20 72 65 73 3b 0a 20 20 20 20 20  : " + res;.     
20d0: 20 20 20 20 20 20 20 7d 29 3b 0a 20 20 20 20 20         });.     
20e0: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 63 61 74     }.        cat
20f0: 63 68 20 28 65 29 20 7b 0a 20 20 20 20 20 20 20  ch (e) {.       
2100: 20 20 20 20 20 43 75 2e 72 65 70 6f 72 74 45 72       Cu.reportEr
2110: 72 6f 72 28 65 29 3b 0a 20 20 20 20 20 20 20 20  ror(e);.        
2120: 7d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 66 69 6c  }.    },.    fil
2130: 6c 52 65 73 75 6c 74 4e 6f 64 65 3a 20 66 75 6e  lResultNode: fun
2140: 63 74 69 6f 6e 20 28 78 52 65 73 75 6c 74 4e 6f  ction (xResultNo
2150: 64 65 2c 20 78 45 64 69 74 6f 72 2c 20 73 50 61  de, xEditor, sPa
2160: 72 61 67 72 61 70 68 2c 20 69 50 61 72 61 67 72  ragraph, iParagr
2170: 61 70 68 2c 20 61 47 72 61 6d 6d 45 72 72 2c 20  aph, aGrammErr, 
2180: 61 53 70 65 6c 6c 45 72 72 29 20 7b 0a 20 20 20  aSpellErr) {.   
2190: 20 20 20 20 20 74 72 79 20 7b 0a 20 20 20 20 20       try {.     
21a0: 20 20 20 20 20 20 20 69 66 20 28 61 47 72 61 6d         if (aGram
21b0: 6d 45 72 72 2e 6c 65 6e 67 74 68 20 3d 3d 3d 20  mErr.length === 
21c0: 30 20 20 26 26 20 20 61 53 70 65 6c 6c 45 72 72  0  &&  aSpellErr
21d0: 2e 6c 65 6e 67 74 68 20 3d 3d 3d 20 30 29 20 7b  .length === 0) {
21e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21f0: 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0a 20 20   return null;.  
2200: 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20            }.    
2210: 20 20 20 20 20 20 20 20 61 47 72 61 6d 6d 45 72          aGrammEr
2220: 72 2e 70 75 73 68 28 2e 2e 2e 61 53 70 65 6c 6c  r.push(...aSpell
2230: 45 72 72 29 3b 0a 20 20 20 20 20 20 20 20 20 20  Err);.          
2240: 20 20 61 47 72 61 6d 6d 45 72 72 2e 73 6f 72 74    aGrammErr.sort
2250: 28 66 75 6e 63 74 69 6f 6e 20 28 61 2c 20 62 29  (function (a, b)
2260: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   {.             
2270: 20 20 20 69 66 20 28 61 5b 22 6e 53 74 61 72 74     if (a["nStart
2280: 22 5d 20 3c 20 62 5b 22 6e 53 74 61 72 74 22 5d  "] < b["nStart"]
2290: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ).              
22a0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 2d 31 3b        return -1;
22b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
22c0: 20 69 66 20 28 61 5b 22 6e 53 74 61 72 74 22 5d   if (a["nStart"]
22d0: 20 3e 20 62 5b 22 6e 53 74 61 72 74 22 5d 29 0a   > b["nStart"]).
22e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22f0: 20 20 20 20 72 65 74 75 72 6e 20 31 3b 0a 20 20      return 1;.  
2300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2310: 74 75 72 6e 20 30 3b 0a 20 20 20 20 20 20 20 20  turn 0;.        
2320: 20 20 20 20 7d 29 3b 0a 20 20 20 20 20 20 20 20      });.        
2330: 20 20 20 20 6c 65 74 20 78 50 61 72 61 67 72 61      let xParagra
2340: 70 68 4e 6f 64 65 20 3d 20 64 6f 63 75 6d 65 6e  phNode = documen
2350: 74 2e 63 72 65 61 74 65 45 6c 65 6d 65 6e 74 28  t.createElement(
2360: 22 70 22 29 3b 0a 20 20 20 20 20 20 20 20 20 20  "p");.          
2370: 20 20 6c 65 74 20 6c 4e 6f 64 65 45 72 72 6f 72    let lNodeError
2380: 20 3d 20 5b 5d 3b 0a 20 20 20 20 20 20 20 20 20   = [];.         
2390: 20 20 20 6c 65 74 20 6e 45 6e 64 4c 61 73 74 45     let nEndLastE
23a0: 72 72 20 3d 20 30 3b 0a 20 20 20 20 20 20 20 20  rr = 0;.        
23b0: 20 20 20 20 6c 65 74 20 6e 45 72 72 6f 72 20 3d      let nError =
23c0: 20 31 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20   1;.            
23d0: 78 50 61 72 61 67 72 61 70 68 4e 6f 64 65 2e 73  xParagraphNode.s
23e0: 65 74 41 74 74 72 69 62 75 74 65 28 22 63 6c 61  etAttribute("cla
23f0: 73 73 22 2c 20 22 70 61 72 61 67 72 61 70 68 22  ss", "paragraph"
2400: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 66  );.            f
2410: 6f 72 20 28 6c 65 74 20 64 45 72 72 20 6f 66 20  or (let dErr of 
2420: 61 47 72 61 6d 6d 45 72 72 29 20 7b 0a 20 20 20  aGrammErr) {.   
2430: 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 65 74               let
2440: 20 6e 53 74 61 72 74 20 3d 20 64 45 72 72 5b 22   nStart = dErr["
2450: 6e 53 74 61 72 74 22 5d 3b 0a 20 20 20 20 20 20  nStart"];.      
2460: 20 20 20 20 20 20 20 20 20 20 6c 65 74 20 6e 45            let nE
2470: 6e 64 20 3d 20 64 45 72 72 5b 22 6e 45 6e 64 22  nd = dErr["nEnd"
2480: 5d 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ];.             
2490: 20 20 20 69 66 20 28 6e 53 74 61 72 74 20 3e 3d     if (nStart >=
24a0: 20 6e 45 6e 64 4c 61 73 74 45 72 72 29 20 7b 0a   nEndLastErr) {.
24b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24c0: 20 20 20 20 78 50 61 72 61 67 72 61 70 68 4e 6f      xParagraphNo
24d0: 64 65 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 64  de.appendChild(d
24e0: 6f 63 75 6d 65 6e 74 2e 63 72 65 61 74 65 54 65  ocument.createTe
24f0: 78 74 4e 6f 64 65 28 74 68 69 73 2e 5f 70 75 72  xtNode(this._pur
2500: 67 65 54 61 67 73 28 73 50 61 72 61 67 72 61 70  geTags(sParagrap
2510: 68 2e 73 6c 69 63 65 28 6e 45 6e 64 4c 61 73 74  h.slice(nEndLast
2520: 45 72 72 2c 20 6e 53 74 61 72 74 29 29 29 29 3b  Err, nStart))));
2530: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2540: 20 20 20 20 20 6c 65 74 20 78 4e 6f 64 65 45 72       let xNodeEr
2550: 72 6f 72 20 3d 20 64 6f 63 75 6d 65 6e 74 2e 63  ror = document.c
2560: 72 65 61 74 65 45 6c 65 6d 65 6e 74 28 22 62 22  reateElement("b"
2570: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  );.             
2580: 20 20 20 20 20 20 20 69 66 20 28 64 45 72 72 5b         if (dErr[
2590: 27 73 54 79 70 65 27 5d 20 21 3d 3d 20 27 57 4f  'sType'] !== 'WO
25a0: 52 44 27 29 20 7b 0a 20 20 20 20 20 20 20 20 20  RD') {.         
25b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78                 x
25c0: 4e 6f 64 65 45 72 72 6f 72 2e 73 65 74 41 74 74  NodeError.setAtt
25d0: 72 69 62 75 74 65 28 22 63 6c 61 73 73 22 2c 20  ribute("class", 
25e0: 22 65 72 72 6f 72 20 22 20 2b 20 64 45 72 72 5b  "error " + dErr[
25f0: 22 73 54 79 70 65 22 5d 29 3b 0a 20 20 20 20 20  "sType"]);.     
2600: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2610: 20 20 20 78 4e 6f 64 65 45 72 72 6f 72 2e 74 65     xNodeError.te
2620: 78 74 43 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e  xtContent = oCon
2630: 76 65 72 74 65 72 54 6f 45 78 70 6f 6e 65 6e 74  verterToExponent
2640: 2e 63 6f 6e 76 65 72 74 28 6e 45 72 72 6f 72 2e  .convert(nError.
2650: 74 6f 53 74 72 69 6e 67 28 29 29 20 2b 20 73 50  toString()) + sP
2660: 61 72 61 67 72 61 70 68 2e 73 6c 69 63 65 28 6e  aragraph.slice(n
2670: 53 74 61 72 74 2c 20 6e 45 6e 64 29 3b 0a 20 20  Start, nEnd);.  
2680: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2690: 20 20 20 20 20 20 78 50 61 72 61 67 72 61 70 68        xParagraph
26a0: 4e 6f 64 65 2e 61 70 70 65 6e 64 43 68 69 6c 64  Node.appendChild
26b0: 28 78 4e 6f 64 65 45 72 72 6f 72 29 3b 0a 20 20  (xNodeError);.  
26c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26d0: 20 20 20 20 20 20 6c 4e 6f 64 65 45 72 72 6f 72        lNodeError
26e0: 2e 70 75 73 68 28 74 68 69 73 2e 5f 63 72 65 61  .push(this._crea
26f0: 74 65 4e 6f 64 65 47 43 45 72 72 6f 72 44 65 73  teNodeGCErrorDes
2700: 63 72 69 70 74 69 6f 6e 28 78 45 64 69 74 6f 72  cription(xEditor
2710: 2c 20 6e 45 72 72 6f 72 2c 20 64 45 72 72 2c 20  , nError, dErr, 
2720: 69 50 61 72 61 67 72 61 70 68 29 29 3b 0a 20 20  iParagraph));.  
2730: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2740: 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20    }.            
2750: 20 20 20 20 20 20 20 20 65 6c 73 65 20 7b 0a 20          else {. 
2760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2770: 20 20 20 20 20 20 20 78 4e 6f 64 65 45 72 72 6f         xNodeErro
2780: 72 2e 73 65 74 41 74 74 72 69 62 75 74 65 28 22  r.setAttribute("
2790: 63 6c 61 73 73 22 2c 20 22 65 72 72 6f 72 20 73  class", "error s
27a0: 70 65 6c 6c 22 29 3b 0a 20 20 20 20 20 20 20 20  pell");.        
27b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27c0: 78 4e 6f 64 65 45 72 72 6f 72 2e 74 65 78 74 43  xNodeError.textC
27d0: 6f 6e 74 65 6e 74 20 3d 20 6f 43 6f 6e 76 65 72  ontent = oConver
27e0: 74 65 72 54 6f 45 78 70 6f 6e 65 6e 74 2e 63 6f  terToExponent.co
27f0: 6e 76 65 72 74 28 6e 45 72 72 6f 72 2e 74 6f 53  nvert(nError.toS
2800: 74 72 69 6e 67 28 29 29 20 2b 20 73 50 61 72 61  tring()) + sPara
2810: 67 72 61 70 68 2e 73 6c 69 63 65 28 6e 53 74 61  graph.slice(nSta
2820: 72 74 2c 20 6e 45 6e 64 29 3b 0a 20 20 20 20 20  rt, nEnd);.     
2830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2840: 20 20 20 78 50 61 72 61 67 72 61 70 68 4e 6f 64     xParagraphNod
2850: 65 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 78 4e  e.appendChild(xN
2860: 6f 64 65 45 72 72 6f 72 29 3b 0a 20 20 20 20 20  odeError);.     
2870: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2880: 20 20 20 6c 4e 6f 64 65 45 72 72 6f 72 2e 70 75     lNodeError.pu
2890: 73 68 28 74 68 69 73 2e 5f 63 72 65 61 74 65 4e  sh(this._createN
28a0: 6f 64 65 53 70 65 6c 6c 45 72 72 6f 72 44 65 73  odeSpellErrorDes
28b0: 63 72 69 70 74 69 6f 6e 28 78 45 64 69 74 6f 72  cription(xEditor
28c0: 2c 20 6e 45 72 72 6f 72 2c 20 64 45 72 72 2c 20  , nError, dErr, 
28d0: 69 50 61 72 61 67 72 61 70 68 29 29 3b 0a 20 20  iParagraph));.  
28e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28f0: 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20    }.            
2900: 20 20 20 20 20 20 20 20 6e 45 6e 64 4c 61 73 74          nEndLast
2910: 45 72 72 20 3d 20 6e 45 6e 64 3b 0a 20 20 20 20  Err = nEnd;.    
2920: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2930: 6e 45 72 72 6f 72 20 2b 3d 20 31 3b 0a 20 20 20  nError += 1;.   
2940: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20               }. 
2950: 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20             }.   
2960: 20 20 20 20 20 20 20 20 20 78 50 61 72 61 67 72           xParagr
2970: 61 70 68 4e 6f 64 65 2e 61 70 70 65 6e 64 43 68  aphNode.appendCh
2980: 69 6c 64 28 64 6f 63 75 6d 65 6e 74 2e 63 72 65  ild(document.cre
2990: 61 74 65 54 65 78 74 4e 6f 64 65 28 74 68 69 73  ateTextNode(this
29a0: 2e 5f 70 75 72 67 65 54 61 67 73 28 73 50 61 72  ._purgeTags(sPar
29b0: 61 67 72 61 70 68 2e 73 6c 69 63 65 28 6e 45 6e  agraph.slice(nEn
29c0: 64 4c 61 73 74 45 72 72 29 29 29 29 3b 0a 20 20  dLastErr))));.  
29d0: 20 20 20 20 20 20 20 20 20 20 78 52 65 73 75 6c            xResul
29e0: 74 4e 6f 64 65 2e 61 70 70 65 6e 64 43 68 69 6c  tNode.appendChil
29f0: 64 28 78 50 61 72 61 67 72 61 70 68 4e 6f 64 65  d(xParagraphNode
2a00: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 66  );.            f
2a10: 6f 72 20 28 6c 65 74 20 78 4e 6f 64 65 20 6f 66  or (let xNode of
2a20: 20 6c 4e 6f 64 65 45 72 72 6f 72 29 20 7b 0a 20   lNodeError) {. 
2a30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78                 x
2a40: 52 65 73 75 6c 74 4e 6f 64 65 2e 61 70 70 65 6e  ResultNode.appen
2a50: 64 43 68 69 6c 64 28 78 4e 6f 64 65 29 3b 0a 20  dChild(xNode);. 
2a60: 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20             }.   
2a70: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 63       }.        c
2a80: 61 74 63 68 20 28 65 29 20 7b 0a 20 20 20 20 20  atch (e) {.     
2a90: 20 20 20 20 20 20 20 43 75 2e 72 65 70 6f 72 74         Cu.report
2aa0: 45 72 72 6f 72 28 65 29 3b 0a 20 20 20 20 20 20  Error(e);.      
2ab0: 20 20 20 20 20 20 78 52 65 73 75 6c 74 4e 6f 64        xResultNod
2ac0: 65 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20  e.textContent = 
2ad0: 22 23 20 45 72 72 6f 72 3a 20 22 20 2b 20 65 2e  "# Error: " + e.
2ae0: 6d 65 73 73 61 67 65 3b 0a 20 20 20 20 20 20 20  message;.       
2af0: 20 7d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 5f 63   }.    },.    _c
2b00: 72 65 61 74 65 4e 6f 64 65 47 43 45 72 72 6f 72  reateNodeGCError
2b10: 44 65 73 63 72 69 70 74 69 6f 6e 3a 20 66 75 6e  Description: fun
2b20: 63 74 69 6f 6e 20 28 78 45 64 69 74 6f 72 2c 20  ction (xEditor, 
2b30: 6e 45 72 72 6f 72 2c 20 64 45 72 72 2c 20 69 50  nError, dErr, iP
2b40: 61 72 61 67 72 61 70 68 29 20 7b 0a 20 20 20 20  aragraph) {.    
2b50: 20 20 20 20 6c 65 74 20 78 4e 6f 64 65 44 69 76      let xNodeDiv
2b60: 20 3d 20 64 6f 63 75 6d 65 6e 74 2e 63 72 65 61   = document.crea
2b70: 74 65 45 6c 65 6d 65 6e 74 28 22 64 69 76 22 29  teElement("div")
2b80: 3b 0a 20 20 20 20 20 20 20 20 6c 65 74 20 74 68  ;.        let th
2b90: 61 74 20 3d 20 74 68 69 73 3b 0a 20 20 20 20 20  at = this;.     
2ba0: 20 20 20 2f 2f 20 6d 65 73 73 61 67 65 0a 20 20     // message.  
2bb0: 20 20 20 20 20 20 6c 65 74 20 78 4e 6f 64 65 4d        let xNodeM
2bc0: 65 73 73 61 67 65 20 3d 20 64 6f 63 75 6d 65 6e  essage = documen
2bd0: 74 2e 63 72 65 61 74 65 45 6c 65 6d 65 6e 74 28  t.createElement(
2be0: 22 70 22 29 3b 0a 20 20 20 20 20 20 20 20 78 4e  "p");.        xN
2bf0: 6f 64 65 4d 65 73 73 61 67 65 2e 73 65 74 41 74  odeMessage.setAt
2c00: 74 72 69 62 75 74 65 28 22 63 6c 61 73 73 22 2c  tribute("class",
2c10: 20 22 6d 65 73 73 61 67 65 22 29 3b 0a 20 20 20   "message");.   
2c20: 20 20 20 20 20 6c 65 74 20 78 4e 6f 64 65 45 72       let xNodeEr
2c30: 72 6f 72 4e 75 6d 62 65 72 20 3d 20 64 6f 63 75  rorNumber = docu
2c40: 6d 65 6e 74 2e 63 72 65 61 74 65 45 6c 65 6d 65  ment.createEleme
2c50: 6e 74 28 22 62 22 29 3b 0a 20 20 20 20 20 20 20  nt("b");.       
2c60: 20 78 4e 6f 64 65 45 72 72 6f 72 4e 75 6d 62 65   xNodeErrorNumbe
2c70: 72 2e 73 65 74 41 74 74 72 69 62 75 74 65 28 22  r.setAttribute("
2c80: 63 6c 61 73 73 22 2c 20 22 65 72 72 6f 72 6e 75  class", "errornu
2c90: 6d 22 29 3b 0a 20 20 20 20 20 20 20 20 78 4e 6f  m");.        xNo
2ca0: 64 65 45 72 72 6f 72 4e 75 6d 62 65 72 2e 74 65  deErrorNumber.te
2cb0: 78 74 43 6f 6e 74 65 6e 74 20 3d 20 22 5b 22 20  xtContent = "[" 
2cc0: 2b 20 6e 45 72 72 6f 72 20 2b 20 22 5d 20 22 3b  + nError + "] ";
2cd0: 0a 20 20 20 20 20 20 20 20 78 4e 6f 64 65 4d 65  .        xNodeMe
2ce0: 73 73 61 67 65 2e 61 70 70 65 6e 64 43 68 69 6c  ssage.appendChil
2cf0: 64 28 78 4e 6f 64 65 45 72 72 6f 72 4e 75 6d 62  d(xNodeErrorNumb
2d00: 65 72 29 3b 0a 20 20 20 20 20 20 20 20 78 4e 6f  er);.        xNo
2d10: 64 65 4d 65 73 73 61 67 65 2e 61 70 70 65 6e 64  deMessage.append
2d20: 43 68 69 6c 64 28 64 6f 63 75 6d 65 6e 74 2e 63  Child(document.c
2d30: 72 65 61 74 65 54 65 78 74 4e 6f 64 65 28 22 20  reateTextNode(" 
2d40: 22 20 2b 20 64 45 72 72 5b 22 73 4d 65 73 73 61  " + dErr["sMessa
2d50: 67 65 22 5d 2e 72 65 70 6c 61 63 65 28 2f 26 6e  ge"].replace(/&n
2d60: 62 73 70 3b 2f 67 2c 20 22 20 22 29 20 2b 20 22  bsp;/g, " ") + "
2d70: 20 22 29 29 3b 0a 20 20 20 20 20 20 20 20 69 66   "));.        if
2d80: 20 28 66 61 6c 73 65 29 20 7b 0a 20 20 20 20 20   (false) {.     
2d90: 20 20 20 20 20 20 20 2f 2f 20 64 65 62 75 67 20         // debug 
2da0: 69 6e 66 6f 0a 20 20 20 20 20 20 20 20 20 20 20  info.           
2db0: 20 6c 65 74 20 78 4e 6f 64 65 44 65 62 75 67 20   let xNodeDebug 
2dc0: 3d 20 64 6f 63 75 6d 65 6e 74 2e 63 72 65 61 74  = document.creat
2dd0: 65 45 6c 65 6d 65 6e 74 28 22 73 70 61 6e 22 29  eElement("span")
2de0: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 78 4e  ;.            xN
2df0: 6f 64 65 44 65 62 75 67 2e 73 65 74 41 74 74 72  odeDebug.setAttr
2e00: 69 62 75 74 65 28 22 63 6c 61 73 73 22 2c 20 22  ibute("class", "
2e10: 64 65 62 75 67 5f 69 6e 66 6f 22 29 3b 0a 20 20  debug_info");.  
2e20: 20 20 20 20 20 20 20 20 20 20 78 4e 6f 64 65 44            xNodeD
2e30: 65 62 75 67 2e 74 65 78 74 43 6f 6e 74 65 6e 74  ebug.textContent
2e40: 20 3d 20 22 20 23 22 20 2b 20 64 45 72 72 5b 22   = " #" + dErr["
2e50: 73 52 75 6c 65 49 64 22 5d 20 2b 20 22 20 23 22  sRuleId"] + " #"
2e60: 20 2b 20 64 45 72 72 5b 22 73 4c 69 6e 65 49 64   + dErr["sLineId
2e70: 22 5d 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  "];.            
2e80: 78 4e 6f 64 65 4d 65 73 73 61 67 65 2e 61 70 70  xNodeMessage.app
2e90: 65 6e 64 43 68 69 6c 64 28 78 4e 6f 64 65 44 65  endChild(xNodeDe
2ea0: 62 75 67 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a  bug);.        }.
2eb0: 20 20 20 20 20 20 20 20 78 4e 6f 64 65 44 69 76          xNodeDiv
2ec0: 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 78 4e 6f  .appendChild(xNo
2ed0: 64 65 4d 65 73 73 61 67 65 29 3b 0a 20 20 20 20  deMessage);.    
2ee0: 20 20 20 20 2f 2f 20 55 52 4c 0a 20 20 20 20 20      // URL.     
2ef0: 20 20 20 69 66 20 28 64 45 72 72 5b 22 55 52 4c     if (dErr["URL
2f00: 22 5d 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20  "]) {.          
2f10: 20 20 6c 65 74 20 78 4e 6f 64 65 50 20 3d 20 64    let xNodeP = d
2f20: 6f 63 75 6d 65 6e 74 2e 63 72 65 61 74 65 45 6c  ocument.createEl
2f30: 65 6d 65 6e 74 28 22 70 22 29 3b 0a 20 20 20 20  ement("p");.    
2f40: 20 20 20 20 20 20 20 20 78 4e 6f 64 65 50 2e 73          xNodeP.s
2f50: 65 74 41 74 74 72 69 62 75 74 65 28 22 63 6c 61  etAttribute("cla
2f60: 73 73 22 2c 20 22 6d 6f 72 65 69 6e 66 6f 22 29  ss", "moreinfo")
2f70: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 78 4e  ;.            xN
2f80: 6f 64 65 50 2e 61 70 70 65 6e 64 43 68 69 6c 64  odeP.appendChild
2f90: 28 64 6f 63 75 6d 65 6e 74 2e 63 72 65 61 74 65  (document.create
2fa0: 54 65 78 74 4e 6f 64 65 28 22 e2 86 92 20 22 29  TextNode("... ")
2fb0: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c  );.            l
2fc0: 65 74 20 78 4e 6f 64 65 55 52 4c 20 3d 20 64 6f  et xNodeURL = do
2fd0: 63 75 6d 65 6e 74 2e 63 72 65 61 74 65 45 6c 65  cument.createEle
2fe0: 6d 65 6e 74 28 22 61 22 29 3b 0a 20 20 20 20 20  ment("a");.     
2ff0: 20 20 20 20 20 20 20 78 4e 6f 64 65 55 52 4c 2e         xNodeURL.
3000: 73 65 74 41 74 74 72 69 62 75 74 65 28 22 68 72  setAttribute("hr
3010: 65 66 22 2c 20 64 45 72 72 5b 22 55 52 4c 22 5d  ef", dErr["URL"]
3020: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 78  );.            x
3030: 4e 6f 64 65 55 52 4c 2e 74 65 78 74 43 6f 6e 74  NodeURL.textCont
3040: 65 6e 74 20 3d 20 22 50 6c 75 73 20 64 e2 80 99  ent = "Plus d...
3050: 69 6e 66 6f 72 6d 61 74 69 6f 6e 73 e2 80 a6 22  informations..."
3060: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 78 4e  ;.            xN
3070: 6f 64 65 55 52 4c 2e 61 64 64 45 76 65 6e 74 4c  odeURL.addEventL
3080: 69 73 74 65 6e 65 72 28 22 63 6c 69 63 6b 22 2c  istener("click",
3090: 20 66 75 6e 63 74 69 6f 6e 20 28 65 29 20 7b 0a   function (e) {.
30a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30b0: 74 68 61 74 2e 6f 70 65 6e 49 6e 54 61 62 55 52  that.openInTabUR
30c0: 4c 28 64 45 72 72 5b 22 55 52 4c 22 5d 29 3b 0a  L(dErr["URL"]);.
30d0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 29 3b 0a              });.
30e0: 20 20 20 20 20 20 20 20 20 20 20 20 78 4e 6f 64              xNod
30f0: 65 50 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 78  eP.appendChild(x
3100: 4e 6f 64 65 55 52 4c 29 3b 0a 20 20 20 20 20 20  NodeURL);.      
3110: 20 20 20 20 20 20 78 4e 6f 64 65 44 69 76 2e 61        xNodeDiv.a
3120: 70 70 65 6e 64 43 68 69 6c 64 28 78 4e 6f 64 65  ppendChild(xNode
3130: 50 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20  P);.        }.  
3140: 20 20 20 20 20 20 2f 2f 20 73 75 67 67 65 73 74        // suggest
3150: 69 6f 6e 73 0a 20 20 20 20 20 20 20 20 69 66 20  ions.        if 
3160: 28 64 45 72 72 5b 22 61 53 75 67 67 65 73 74 69  (dErr["aSuggesti
3170: 6f 6e 73 22 5d 2e 6c 65 6e 67 74 68 20 3e 20 30  ons"].length > 0
3180: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ) {.            
3190: 6c 65 74 20 78 4e 6f 64 65 53 75 67 67 4c 69 6e  let xNodeSuggLin
31a0: 65 20 3d 20 64 6f 63 75 6d 65 6e 74 2e 63 72 65  e = document.cre
31b0: 61 74 65 45 6c 65 6d 65 6e 74 28 22 70 22 29 3b  ateElement("p");
31c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 78 4e 6f  .            xNo
31d0: 64 65 53 75 67 67 4c 69 6e 65 2e 73 65 74 41 74  deSuggLine.setAt
31e0: 74 72 69 62 75 74 65 28 22 63 6c 61 73 73 22 2c  tribute("class",
31f0: 20 22 73 75 67 67 65 73 74 69 6f 6e 73 22 29 3b   "suggestions");
3200: 0a 20 20 20 20 20 20 20 20 20 20 20 20 78 4e 6f  .            xNo
3210: 64 65 53 75 67 67 4c 69 6e 65 2e 74 65 78 74 43  deSuggLine.textC
3220: 6f 6e 74 65 6e 74 20 3d 20 22 53 75 67 67 65 73  ontent = "Sugges
3230: 74 69 6f 6e 73 20 3a 20 22 3b 0a 20 20 20 20 20  tions : ";.     
3240: 20 20 20 20 20 20 20 6c 65 74 20 6e 20 3d 20 30         let n = 0
3250: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f  ;.            fo
3260: 72 20 28 6c 65 74 20 73 53 75 67 67 20 6f 66 20  r (let sSugg of 
3270: 64 45 72 72 5b 22 61 53 75 67 67 65 73 74 69 6f  dErr["aSuggestio
3280: 6e 73 22 5d 29 20 7b 0a 20 20 20 20 20 20 20 20  ns"]) {.        
3290: 20 20 20 20 20 20 20 20 69 66 20 28 6e 20 3e 20          if (n > 
32a0: 30 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  0) {.           
32b0: 20 20 20 20 20 20 20 20 20 78 4e 6f 64 65 53 75           xNodeSu
32c0: 67 67 4c 69 6e 65 2e 61 70 70 65 6e 64 43 68 69  ggLine.appendChi
32d0: 6c 64 28 64 6f 63 75 6d 65 6e 74 2e 63 72 65 61  ld(document.crea
32e0: 74 65 54 65 78 74 4e 6f 64 65 28 22 c2 a0 22 29  teTextNode("..")
32f0: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  );.             
3300: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20     }.           
3310: 20 20 20 20 20 6c 65 74 20 78 4e 6f 64 65 53 75       let xNodeSu
3320: 67 67 20 3d 20 64 6f 63 75 6d 65 6e 74 2e 63 72  gg = document.cr
3330: 65 61 74 65 45 6c 65 6d 65 6e 74 28 22 73 70 61  eateElement("spa
3340: 6e 22 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20  n");.           
3350: 20 20 20 20 20 78 4e 6f 64 65 53 75 67 67 2e 73       xNodeSugg.s
3360: 65 74 41 74 74 72 69 62 75 74 65 28 22 63 6c 61  etAttribute("cla
3370: 73 73 22 2c 20 22 73 75 67 67 22 29 3b 0a 20 20  ss", "sugg");.  
3380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 4e                xN
3390: 6f 64 65 53 75 67 67 2e 74 65 78 74 43 6f 6e 74  odeSugg.textCont
33a0: 65 6e 74 20 3d 20 73 53 75 67 67 2e 72 65 70 6c  ent = sSugg.repl
33b0: 61 63 65 28 22 20 22 2c 20 22 e2 80 af 22 29 3b  ace(" ", "...");
33c0: 20 2f 2f 20 75 73 65 20 6e 6e 62 73 70 0a 20 20   // use nnbsp.  
33d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 4e                xN
33e0: 6f 64 65 53 75 67 67 2e 61 64 64 45 76 65 6e 74  odeSugg.addEvent
33f0: 4c 69 73 74 65 6e 65 72 28 22 63 6c 69 63 6b 22  Listener("click"
3400: 2c 20 66 75 6e 63 74 69 6f 6e 20 28 65 29 20 7b  , function (e) {
3410: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3420: 20 20 20 20 20 78 45 64 69 74 6f 72 2e 63 68 61       xEditor.cha
3430: 6e 67 65 50 61 72 61 67 72 61 70 68 28 69 50 61  ngeParagraph(iPa
3440: 72 61 67 72 61 70 68 2c 20 73 53 75 67 67 2c 20  ragraph, sSugg, 
3450: 64 45 72 72 5b 22 6e 53 74 61 72 74 22 5d 2c 20  dErr["nStart"], 
3460: 64 45 72 72 5b 22 6e 45 6e 64 22 5d 29 3b 0a 20  dErr["nEnd"]);. 
3470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3480: 20 20 20 78 4e 6f 64 65 44 69 76 2e 74 65 78 74     xNodeDiv.text
3490: 43 6f 6e 74 65 6e 74 20 3d 20 22 22 3b 0a 20 20  Content = "";.  
34a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34b0: 20 20 74 68 61 74 2e 72 65 70 61 72 73 65 50 61    that.reparsePa
34c0: 72 61 67 72 61 70 68 28 78 45 64 69 74 6f 72 2c  ragraph(xEditor,
34d0: 20 69 50 61 72 61 67 72 61 70 68 29 3b 0a 20 20   iParagraph);.  
34e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 29                })
34f0: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ;.              
3500: 20 20 78 4e 6f 64 65 53 75 67 67 4c 69 6e 65 2e    xNodeSuggLine.
3510: 61 70 70 65 6e 64 43 68 69 6c 64 28 78 4e 6f 64  appendChild(xNod
3520: 65 53 75 67 67 29 3b 0a 20 20 20 20 20 20 20 20  eSugg);.        
3530: 20 20 20 20 20 20 20 20 6e 20 2b 3d 20 31 3b 0a          n += 1;.
3540: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20              }.  
3550: 20 20 20 20 20 20 20 20 20 20 78 4e 6f 64 65 44            xNodeD
3560: 69 76 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 78  iv.appendChild(x
3570: 4e 6f 64 65 53 75 67 67 4c 69 6e 65 29 3b 0a 20  NodeSuggLine);. 
3580: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20         }.       
3590: 20 72 65 74 75 72 6e 20 78 4e 6f 64 65 44 69 76   return xNodeDiv
35a0: 3b 0a 20 20 20 20 7d 2c 0a 20 20 20 20 5f 70 75  ;.    },.    _pu
35b0: 72 67 65 54 61 67 73 3a 20 66 75 6e 63 74 69 6f  rgeTags: functio
35c0: 6e 20 28 73 54 65 78 74 29 20 7b 0a 20 20 20 20  n (sText) {.    
35d0: 20 20 20 20 73 54 65 78 74 20 3d 20 73 54 65 78      sText = sTex
35e0: 74 2e 72 65 70 6c 61 63 65 28 2f 3c 62 72 20 3f  t.replace(/<br ?
35f0: 5c 2f 3f 3e 2f 69 67 2c 20 22 20 22 29 3b 0a 20  \/?>/ig, " ");. 
3600: 20 20 20 20 20 20 20 73 54 65 78 74 20 3d 20 73         sText = s
3610: 54 65 78 74 2e 72 65 70 6c 61 63 65 28 2f 3c 66  Text.replace(/<f
3620: 6f 6e 74 20 73 69 7a 65 3d 22 5b 2b 2d 5d 5c 64  ont size="[+-]\d
3630: 2b 22 3e 2f 67 2c 20 22 22 29 3b 0a 20 20 20 20  +">/g, "");.    
3640: 20 20 20 20 72 65 74 75 72 6e 20 73 54 65 78 74      return sText
3650: 2e 72 65 70 6c 61 63 65 28 2f 3c 5c 2f 3f 20 3f  .replace(/<\/? ?
3660: 5b 61 2d 7a 41 2d 5a 5d 2b 20 3f 3e 2f 67 2c 20  [a-zA-Z]+ ?>/g, 
3670: 22 22 29 3b 0a 20 20 20 20 7d 2c 0a 20 20 20 20  "");.    },.    
3680: 5f 63 72 65 61 74 65 4e 6f 64 65 53 70 65 6c 6c  _createNodeSpell
3690: 45 72 72 6f 72 44 65 73 63 72 69 70 74 69 6f 6e  ErrorDescription
36a0: 3a 20 66 75 6e 63 74 69 6f 6e 20 28 78 45 64 69  : function (xEdi
36b0: 74 6f 72 2c 20 6e 45 72 72 6f 72 2c 20 64 45 72  tor, nError, dEr
36c0: 72 2c 20 69 50 61 72 61 67 72 61 70 68 29 20 7b  r, iParagraph) {
36d0: 0a 20 20 20 20 20 20 20 20 6c 65 74 20 78 4e 6f  .        let xNo
36e0: 64 65 44 69 76 20 3d 20 64 6f 63 75 6d 65 6e 74  deDiv = document
36f0: 2e 63 72 65 61 74 65 45 6c 65 6d 65 6e 74 28 22  .createElement("
3700: 64 69 76 22 29 3b 0a 20 20 20 20 20 20 20 20 6c  div");.        l
3710: 65 74 20 74 68 61 74 20 3d 20 74 68 69 73 3b 0a  et that = this;.
3720: 20 20 20 20 20 20 20 20 2f 2f 20 6d 65 73 73 61          // messa
3730: 67 65 0a 20 20 20 20 20 20 20 20 6c 65 74 20 78  ge.        let x
3740: 4e 6f 64 65 4d 65 73 73 61 67 65 20 3d 20 64 6f  NodeMessage = do
3750: 63 75 6d 65 6e 74 2e 63 72 65 61 74 65 45 6c 65  cument.createEle
3760: 6d 65 6e 74 28 22 70 22 29 3b 0a 20 20 20 20 20  ment("p");.     
3770: 20 20 20 78 4e 6f 64 65 4d 65 73 73 61 67 65 2e     xNodeMessage.
3780: 73 65 74 41 74 74 72 69 62 75 74 65 28 22 63 6c  setAttribute("cl
3790: 61 73 73 22 2c 20 22 6d 65 73 73 61 67 65 22 29  ass", "message")
37a0: 3b 0a 20 20 20 20 20 20 20 20 6c 65 74 20 78 4e  ;.        let xN
37b0: 6f 64 65 45 72 72 6f 72 4e 75 6d 62 65 72 20 3d  odeErrorNumber =
37c0: 20 64 6f 63 75 6d 65 6e 74 2e 63 72 65 61 74 65   document.create
37d0: 45 6c 65 6d 65 6e 74 28 22 62 22 29 3b 0a 20 20  Element("b");.  
37e0: 20 20 20 20 20 20 78 4e 6f 64 65 45 72 72 6f 72        xNodeError
37f0: 4e 75 6d 62 65 72 2e 73 65 74 41 74 74 72 69 62  Number.setAttrib
3800: 75 74 65 28 22 63 6c 61 73 73 22 2c 20 22 65 72  ute("class", "er
3810: 72 6f 72 6e 75 6d 22 29 3b 0a 20 20 20 20 20 20  rornum");.      
3820: 20 20 78 4e 6f 64 65 45 72 72 6f 72 4e 75 6d 62    xNodeErrorNumb
3830: 65 72 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d  er.textContent =
3840: 20 22 5b 22 20 2b 20 6e 45 72 72 6f 72 20 2b 20   "[" + nError + 
3850: 22 5d 20 22 3b 0a 20 20 20 20 20 20 20 20 78 4e  "] ";.        xN
3860: 6f 64 65 4d 65 73 73 61 67 65 2e 61 70 70 65 6e  odeMessage.appen
3870: 64 43 68 69 6c 64 28 78 4e 6f 64 65 45 72 72 6f  dChild(xNodeErro
3880: 72 4e 75 6d 62 65 72 29 3b 0a 20 20 20 20 20 20  rNumber);.      
3890: 20 20 78 4e 6f 64 65 4d 65 73 73 61 67 65 2e 61    xNodeMessage.a
38a0: 70 70 65 6e 64 43 68 69 6c 64 28 64 6f 63 75 6d  ppendChild(docum
38b0: 65 6e 74 2e 63 72 65 61 74 65 54 65 78 74 4e 6f  ent.createTextNo
38c0: 64 65 28 22 20 4d 6f 74 20 69 6e 63 6f 6e 6e 75  de(" Mot inconnu
38d0: 20 64 75 20 64 69 63 74 69 6f 6e 6e 61 69 72 65   du dictionnaire
38e0: 2e 20 22 29 29 3b 0a 20 20 20 20 20 20 20 20 78  . "));.        x
38f0: 4e 6f 64 65 44 69 76 2e 61 70 70 65 6e 64 43 68  NodeDiv.appendCh
3900: 69 6c 64 28 78 4e 6f 64 65 4d 65 73 73 61 67 65  ild(xNodeMessage
3910: 29 3b 0a 20 20 20 20 20 20 20 20 2f 2f 20 73 75  );.        // su
3920: 67 67 65 73 74 69 6f 6e 73 0a 20 20 20 20 20 20  ggestions.      
3930: 20 20 6c 65 74 20 78 4e 6f 64 65 53 75 67 67 4c    let xNodeSuggL
3940: 69 6e 65 20 3d 20 64 6f 63 75 6d 65 6e 74 2e 63  ine = document.c
3950: 72 65 61 74 65 45 6c 65 6d 65 6e 74 28 22 70 22  reateElement("p"
3960: 29 3b 0a 20 20 20 20 20 20 20 20 78 4e 6f 64 65  );.        xNode
3970: 53 75 67 67 4c 69 6e 65 2e 73 65 74 41 74 74 72  SuggLine.setAttr
3980: 69 62 75 74 65 28 22 63 6c 61 73 73 22 2c 20 22  ibute("class", "
3990: 73 75 67 67 65 73 74 69 6f 6e 73 22 29 3b 0a 20  suggestions");. 
39a0: 20 20 20 20 20 20 20 6c 65 74 20 78 4e 6f 64 65         let xNode
39b0: 53 75 67 67 42 75 74 74 6f 6e 20 3d 20 64 6f 63  SuggButton = doc
39c0: 75 6d 65 6e 74 2e 63 72 65 61 74 65 45 6c 65 6d  ument.createElem
39d0: 65 6e 74 28 22 73 70 61 6e 22 29 3b 0a 20 20 20  ent("span");.   
39e0: 20 20 20 20 20 78 4e 6f 64 65 53 75 67 67 42 75       xNodeSuggBu
39f0: 74 74 6f 6e 2e 73 65 74 41 74 74 72 69 62 75 74  tton.setAttribut
3a00: 65 28 22 63 6c 61 73 73 22 2c 20 22 73 75 67 67  e("class", "sugg
3a10: 65 73 74 69 6f 6e 73 5f 62 75 74 74 6f 6e 22 29  estions_button")
3a20: 3b 0a 20 20 20 20 20 20 20 20 78 4e 6f 64 65 53  ;.        xNodeS
3a30: 75 67 67 42 75 74 74 6f 6e 2e 74 65 78 74 43 6f  uggButton.textCo
3a40: 6e 74 65 6e 74 20 3d 20 22 53 75 67 67 65 73 74  ntent = "Suggest
3a50: 69 6f 6e 73 20 3a 20 22 3b 0a 20 20 20 20 20 20  ions : ";.      
3a60: 20 20 78 4e 6f 64 65 53 75 67 67 42 75 74 74 6f    xNodeSuggButto
3a70: 6e 2e 61 64 64 45 76 65 6e 74 4c 69 73 74 65 6e  n.addEventListen
3a80: 65 72 28 22 63 6c 69 63 6b 22 2c 20 28 65 29 20  er("click", (e) 
3a90: 3d 3e 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  => {.           
3aa0: 20 6c 65 74 20 78 50 72 6f 6d 69 73 65 20 3d 20   let xPromise = 
3ab0: 74 68 69 73 2e 78 47 43 45 57 6f 72 6b 65 72 2e  this.xGCEWorker.
3ac0: 70 6f 73 74 28 27 73 75 67 67 65 73 74 27 2c 20  post('suggest', 
3ad0: 5b 64 45 72 72 5b 27 73 56 61 6c 75 65 27 5d 2c  [dErr['sValue'],
3ae0: 20 31 30 5d 29 3b 0a 20 20 20 20 20 20 20 20 20   10]);.         
3af0: 20 20 20 78 50 72 6f 6d 69 73 65 2e 74 68 65 6e     xPromise.then
3b00: 28 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  (.              
3b10: 20 20 66 75 6e 63 74 69 6f 6e 20 28 73 56 61 6c    function (sVal
3b20: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ) {.            
3b30: 20 20 20 20 20 20 20 20 69 66 20 28 73 56 61 6c          if (sVal
3b40: 20 21 3d 20 22 22 29 20 7b 0a 20 20 20 20 20 20   != "") {.      
3b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3b60: 20 20 6c 65 74 20 6c 53 75 67 67 20 3d 20 73 56    let lSugg = sV
3b70: 61 6c 2e 73 70 6c 69 74 28 22 7c 22 29 3b 0a 20  al.split("|");. 
3b80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3b90: 20 20 20 20 20 20 20 6c 65 74 20 6e 20 3d 20 30         let n = 0
3ba0: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ;.              
3bb0: 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 6c            for (l
3bc0: 65 74 20 73 53 75 67 67 20 6f 66 20 6c 53 75 67  et sSugg of lSug
3bd0: 67 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  g) {.           
3be0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3bf0: 20 78 4e 6f 64 65 53 75 67 67 4c 69 6e 65 2e 61   xNodeSuggLine.a
3c00: 70 70 65 6e 64 43 68 69 6c 64 28 64 6f 63 75 6d  ppendChild(docum
3c10: 65 6e 74 2e 63 72 65 61 74 65 54 65 78 74 4e 6f  ent.createTextNo
3c20: 64 65 28 22 c2 a0 22 29 29 3b 0a 20 20 20 20 20  de(".."));.     
3c30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3c40: 20 20 20 20 20 20 20 6c 65 74 20 78 4e 6f 64 65         let xNode
3c50: 53 75 67 67 20 3d 20 64 6f 63 75 6d 65 6e 74 2e  Sugg = document.
3c60: 63 72 65 61 74 65 45 6c 65 6d 65 6e 74 28 22 73  createElement("s
3c70: 70 61 6e 22 29 3b 0a 20 20 20 20 20 20 20 20 20  pan");.         
3c80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3c90: 20 20 20 78 4e 6f 64 65 53 75 67 67 2e 73 65 74     xNodeSugg.set
3ca0: 41 74 74 72 69 62 75 74 65 28 22 63 6c 61 73 73  Attribute("class
3cb0: 22 2c 20 22 73 75 67 67 22 29 3b 0a 20 20 20 20  ", "sugg");.    
3cc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3cd0: 20 20 20 20 20 20 20 20 78 4e 6f 64 65 53 75 67          xNodeSug
3ce0: 67 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20  g.textContent = 
3cf0: 73 53 75 67 67 3b 0a 20 20 20 20 20 20 20 20 20  sSugg;.         
3d00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3d10: 20 20 20 78 4e 6f 64 65 53 75 67 67 2e 61 64 64     xNodeSugg.add
3d20: 45 76 65 6e 74 4c 69 73 74 65 6e 65 72 28 22 63  EventListener("c
3d30: 6c 69 63 6b 22 2c 20 66 75 6e 63 74 69 6f 6e 20  lick", function 
3d40: 28 65 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20  (e) {.          
3d50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3d60: 20 20 20 20 20 20 78 45 64 69 74 6f 72 2e 63 68        xEditor.ch
3d70: 61 6e 67 65 50 61 72 61 67 72 61 70 68 28 69 50  angeParagraph(iP
3d80: 61 72 61 67 72 61 70 68 2c 20 78 4e 6f 64 65 53  aragraph, xNodeS
3d90: 75 67 67 2e 74 65 78 74 43 6f 6e 74 65 6e 74 2c  ugg.textContent,
3da0: 20 64 45 72 72 5b 22 6e 53 74 61 72 74 22 5d 2c   dErr["nStart"],
3db0: 20 64 45 72 72 5b 22 6e 45 6e 64 22 5d 29 3b 0a   dErr["nEnd"]);.
3dc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3dd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3de0: 78 4e 6f 64 65 44 69 76 2e 74 65 78 74 43 6f 6e  xNodeDiv.textCon
3df0: 74 65 6e 74 20 3d 20 22 22 3b 0a 20 20 20 20 20  tent = "";.     
3e00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3e10: 20 20 20 20 20 20 20 20 20 20 20 74 68 61 74 2e             that.
3e20: 72 65 70 61 72 73 65 50 61 72 61 67 72 61 70 68  reparseParagraph
3e30: 28 78 45 64 69 74 6f 72 2c 20 69 50 61 72 61 67  (xEditor, iParag
3e40: 72 61 70 68 29 3b 0a 20 20 20 20 20 20 20 20 20  raph);.         
3e50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3e60: 20 20 20 7d 29 3b 0a 20 20 20 20 20 20 20 20 20     });.         
3e70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3e80: 20 20 20 78 4e 6f 64 65 53 75 67 67 4c 69 6e 65     xNodeSuggLine
3e90: 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 78 4e 6f  .appendChild(xNo
3ea0: 64 65 53 75 67 67 29 3b 0a 20 20 20 20 20 20 20  deSugg);.       
3eb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3ec0: 20 20 20 20 20 6e 20 2b 3d 20 31 3b 0a 20 20 20       n += 1;.   
3ed0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3ee0: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20       }.         
3ef0: 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73             } els
3f00: 65 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  e {.            
3f10: 20 20 20 20 20 20 20 20 20 20 20 20 78 4e 6f 64              xNod
3f20: 65 53 75 67 67 4c 69 6e 65 2e 61 70 70 65 6e 64  eSuggLine.append
3f30: 43 68 69 6c 64 28 64 6f 63 75 6d 65 6e 74 2e 63  Child(document.c
3f40: 72 65 61 74 65 54 65 78 74 4e 6f 64 65 28 22 41  reateTextNode("A
3f50: 75 63 75 6e 65 20 73 75 67 67 65 73 74 69 6f 6e  ucune suggestion
3f60: 2e 22 29 29 3b 0a 20 20 20 20 20 20 20 20 20 20  ."));.          
3f70: 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20            }.    
3f80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3f90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3fa0: 20 7d 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20   },.            
3fb0: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 28 61 52      function (aR
3fc0: 65 61 73 6f 6e 29 20 7b 20 63 6f 6e 73 6f 6c 65  eason) { console
3fd0: 2e 65 72 72 6f 72 28 27 50 72 6f 6d 69 73 65 20  .error('Promise 
3fe0: 72 65 6a 65 63 74 65 64 20 2d 20 27 2c 20 61 52  rejected - ', aR
3ff0: 65 61 73 6f 6e 29 3b 20 7d 0a 20 20 20 20 20 20  eason); }.      
4000: 20 20 20 20 20 20 29 2e 63 61 74 63 68 28 0a 20        ).catch(. 
4010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66                 f
4020: 75 6e 63 74 69 6f 6e 20 28 61 43 61 75 67 68 74  unction (aCaught
4030: 29 20 7b 20 63 6f 6e 73 6f 6c 65 2e 65 72 72 6f  ) { console.erro
4040: 72 28 27 50 72 6f 6d 69 73 65 20 45 72 72 6f 72  r('Promise Error
4050: 20 2d 20 27 2c 20 61 43 61 75 67 68 74 29 3b 20   - ', aCaught); 
4060: 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 3b  }.            );
4070: 0a 20 20 20 20 20 20 20 20 7d 29 3b 0a 20 20 20  .        });.   
4080: 20 20 20 20 20 78 4e 6f 64 65 53 75 67 67 4c 69       xNodeSuggLi
4090: 6e 65 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 78  ne.appendChild(x
40a0: 4e 6f 64 65 53 75 67 67 42 75 74 74 6f 6e 29 3b  NodeSuggButton);
40b0: 0a 20 20 20 20 20 20 20 20 78 4e 6f 64 65 44 69  .        xNodeDi
40c0: 76 2e 61 70 70 65 6e 64 43 68 69 6c 64 28 78 4e  v.appendChild(xN
40d0: 6f 64 65 53 75 67 67 4c 69 6e 65 29 3b 0a 20 20  odeSuggLine);.  
40e0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 78 4e 6f        return xNo
40f0: 64 65 44 69 76 3b 0a 20 20 20 20 7d 2c 0a 20 20  deDiv;.    },.  
4100: 20 20 6c 6f 61 64 55 49 3a 20 66 75 6e 63 74 69    loadUI: functi
4110: 6f 6e 28 29 20 7b 0a 20 20 20 20 20 20 20 20 65  on() {.        e
4120: 63 68 6f 28 22 6c 6f 61 64 55 49 22 29 3b 0a 20  cho("loadUI");. 
4130: 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 74 72         this._str
4140: 69 6e 67 73 20 3d 20 64 6f 63 75 6d 65 6e 74 2e  ings = document.
4150: 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 22  getElementById("
4160: 67 72 61 6d 6d 61 72 63 68 65 63 6b 65 72 2d 73  grammarchecker-s
4170: 74 72 69 6e 67 73 22 29 3b 0a 20 20 20 20 20 20  trings");.      
4180: 20 20 6c 65 74 20 74 68 61 74 20 3d 20 74 68 69    let that = thi
4190: 73 3b 0a 20 20 20 20 20 20 20 20 6c 65 74 20 6e  s;.        let n
41a0: 73 47 72 61 6d 6d 61 72 43 6f 6d 6d 61 6e 64 20  sGrammarCommand 
41b0: 3d 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  = {.            
41c0: 69 73 43 6f 6d 6d 61 6e 64 45 6e 61 62 6c 65 64  isCommandEnabled
41d0: 3a 20 66 75 6e 63 74 69 6f 6e 20 28 61 43 6f 6d  : function (aCom
41e0: 6d 61 6e 64 2c 20 64 75 6d 6d 79 29 20 7b 0a 20  mand, dummy) {. 
41f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
4200: 65 74 75 72 6e 20 28 49 73 44 6f 63 75 6d 65 6e  eturn (IsDocumen
4210: 74 45 64 69 74 61 62 6c 65 28 29 20 26 26 20 21  tEditable() && !
4220: 49 73 49 6e 48 54 4d 4c 53 6f 75 72 63 65 4d 6f  IsInHTMLSourceMo
4230: 64 65 28 29 29 3b 0a 20 20 20 20 20 20 20 20 20  de());.         
4240: 20 20 20 7d 2c 0a 20 20 20 20 20 20 20 20 20 20     },.          
4250: 20 20 67 65 74 43 6f 6d 6d 61 6e 64 53 74 61 74    getCommandStat
4260: 65 50 61 72 61 6d 73 3a 20 66 75 6e 63 74 69 6f  eParams: functio
4270: 6e 20 28 61 43 6f 6d 6d 61 6e 64 2c 20 61 50 61  n (aCommand, aPa
4280: 72 61 6d 73 2c 20 61 52 65 66 43 6f 6e 29 20 7b  rams, aRefCon) {
4290: 7d 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 64  },.            d
42a0: 6f 43 6f 6d 6d 61 6e 64 50 61 72 61 6d 73 3a 20  oCommandParams: 
42b0: 66 75 6e 63 74 69 6f 6e 20 28 61 43 6f 6d 6d 61  function (aComma
42c0: 6e 64 2c 20 61 50 61 72 61 6d 73 2c 20 61 52 65  nd, aParams, aRe
42d0: 66 43 6f 6e 29 20 7b 7d 2c 0a 20 20 20 20 20 20  fCon) {},.      
42e0: 20 20 20 20 20 20 64 6f 43 6f 6d 6d 61 6e 64 3a        doCommand:
42f0: 20 66 75 6e 63 74 69 6f 6e 20 28 61 43 6f 6d 6d   function (aComm
4300: 61 6e 64 29 20 7b 0a 20 20 20 20 20 20 20 20 20  and) {.         
4310: 20 20 20 20 20 20 20 74 68 61 74 2e 6f 6e 50 61         that.onPa
4320: 72 73 65 54 65 78 74 28 61 43 6f 6d 6d 61 6e 64  rseText(aCommand
4330: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  );.            }
4340: 0a 20 20 20 20 20 20 20 20 7d 3b 0a 20 20 20 20  .        };.    
4350: 20 20 20 20 6c 65 74 20 78 43 6f 6d 6d 61 6e 64      let xCommand
4360: 54 61 62 6c 65 20 3d 20 47 65 74 43 6f 6d 70 6f  Table = GetCompo
4370: 73 65 72 43 6f 6d 6d 61 6e 64 54 61 62 6c 65 28  serCommandTable(
4380: 29 3b 0a 20 20 20 20 20 20 20 20 78 43 6f 6d 6d  );.        xComm
4390: 61 6e 64 54 61 62 6c 65 2e 72 65 67 69 73 74 65  andTable.registe
43a0: 72 43 6f 6d 6d 61 6e 64 28 22 63 6d 64 5f 67 72  rCommand("cmd_gr
43b0: 61 6d 6d 61 72 22 2c 20 6e 73 47 72 61 6d 6d 61  ammar", nsGramma
43c0: 72 43 6f 6d 6d 61 6e 64 29 3b 0a 20 20 20 20 20  rCommand);.     
43d0: 20 20 20 6c 65 74 20 73 42 75 74 74 6f 6e 49 64     let sButtonId
43e0: 20 3d 20 22 67 72 61 6d 6d 61 72 63 68 65 63 6b   = "grammarcheck
43f0: 65 72 2d 74 6f 6f 6c 62 61 72 2d 62 75 74 74 6f  er-toolbar-butto
4400: 6e 22 3b 0a 20 20 20 20 20 20 20 20 6c 65 74 20  n";.        let 
4410: 73 42 75 74 74 6f 6e 49 64 32 20 3d 20 22 67 72  sButtonId2 = "gr
4420: 61 6d 6d 61 6c 65 63 74 65 2d 6d 65 6e 75 22 3b  ammalecte-menu";
4430: 0a 20 20 20 20 20 20 20 20 6c 65 74 20 78 4e 61  .        let xNa
4440: 76 42 61 72 20 20 3d 20 64 6f 63 75 6d 65 6e 74  vBar  = document
4450: 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28  .getElementById(
4460: 22 63 6f 6d 70 6f 73 65 54 6f 6f 6c 62 61 72 32  "composeToolbar2
4470: 22 29 3b 0a 20 20 20 20 20 20 20 20 6c 65 74 20  ");.        let 
4480: 6c 43 75 72 53 65 74 20 20 3d 20 78 4e 61 76 42  lCurSet  = xNavB
4490: 61 72 2e 63 75 72 72 65 6e 74 53 65 74 2e 73 70  ar.currentSet.sp
44a0: 6c 69 74 28 22 2c 22 29 3b 0a 20 20 20 20 20 20  lit(",");.      
44b0: 20 20 69 66 20 28 6c 43 75 72 53 65 74 2e 69 6e    if (lCurSet.in
44c0: 64 65 78 4f 66 28 73 42 75 74 74 6f 6e 49 64 29  dexOf(sButtonId)
44d0: 20 3d 3d 20 2d 31 29 20 7b 0a 20 20 20 20 20 20   == -1) {.      
44e0: 20 20 20 20 20 20 6c 65 74 20 69 50 6f 73 20 3d        let iPos =
44f0: 20 6c 43 75 72 53 65 74 2e 69 6e 64 65 78 4f 66   lCurSet.indexOf
4500: 28 22 73 70 65 6c 6c 69 6e 67 42 75 74 74 6f 6e  ("spellingButton
4510: 22 29 20 2b 20 31 20 7c 7c 20 6c 43 75 72 53 65  ") + 1 || lCurSe
4520: 74 2e 6c 65 6e 67 74 68 3b 0a 20 20 20 20 20 20  t.length;.      
4530: 20 20 20 20 20 20 6c 65 74 20 61 53 65 74 20 3d        let aSet =
4540: 20 6c 43 75 72 53 65 74 2e 73 6c 69 63 65 28 30   lCurSet.slice(0
4550: 2c 20 69 50 6f 73 29 2e 63 6f 6e 63 61 74 28 73  , iPos).concat(s
4560: 42 75 74 74 6f 6e 49 64 29 2e 63 6f 6e 63 61 74  ButtonId).concat
4570: 28 73 42 75 74 74 6f 6e 49 64 32 29 2e 63 6f 6e  (sButtonId2).con
4580: 63 61 74 28 6c 43 75 72 53 65 74 2e 73 6c 69 63  cat(lCurSet.slic
4590: 65 28 69 50 6f 73 29 29 3b 0a 20 20 20 20 20 20  e(iPos));.      
45a0: 20 20 20 20 20 20 78 4e 61 76 42 61 72 2e 73 65        xNavBar.se
45b0: 74 41 74 74 72 69 62 75 74 65 28 22 63 75 72 72  tAttribute("curr
45c0: 65 6e 74 73 65 74 22 2c 20 61 53 65 74 2e 6a 6f  entset", aSet.jo
45d0: 69 6e 28 22 2c 22 29 29 3b 0a 20 20 20 20 20 20  in(","));.      
45e0: 20 20 20 20 20 20 78 4e 61 76 42 61 72 2e 63 75        xNavBar.cu
45f0: 72 72 65 6e 74 53 65 74 20 3d 20 61 53 65 74 2e  rrentSet = aSet.
4600: 6a 6f 69 6e 28 22 2c 22 29 3b 0a 20 20 20 20 20  join(",");.     
4610: 20 20 20 20 20 20 20 64 6f 63 75 6d 65 6e 74 2e         document.
4620: 70 65 72 73 69 73 74 28 78 4e 61 76 42 61 72 2e  persist(xNavBar.
4630: 69 64 2c 20 22 63 75 72 72 65 6e 74 73 65 74 22  id, "currentset"
4640: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  );.            t
4650: 72 79 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  ry {.           
4660: 20 20 20 20 20 42 72 6f 77 73 65 72 54 6f 6f 6c       BrowserTool
4670: 62 6f 78 43 75 73 74 6f 6d 69 7a 65 44 6f 6e 65  boxCustomizeDone
4680: 28 74 72 75 65 29 3b 0a 20 20 20 20 20 20 20 20  (true);.        
4690: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20      }.          
46a0: 20 20 63 61 74 63 68 20 28 65 29 20 7b 0a 20 20    catch (e) {.  
46b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75                Cu
46c0: 2e 72 65 70 6f 72 74 45 72 72 6f 72 28 65 29 3b  .reportError(e);
46d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20  .            }. 
46e0: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 2c 0a         }.    },.
46f0: 20 20 20 20 63 6c 65 61 72 50 72 65 76 69 65 77      clearPreview
4700: 3a 20 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0a 20  : function() {. 
4710: 20 20 20 20 20 20 20 6c 65 74 20 78 50 72 65 76         let xPrev
4720: 69 65 77 20 3d 20 64 6f 63 75 6d 65 6e 74 2e 67  iew = document.g
4730: 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 22 67  etElementById("g
4740: 72 61 6d 6d 61 6c 65 63 74 65 2d 65 72 72 6f 72  rammalecte-error
4750: 73 22 29 3b 0a 20 20 20 20 20 20 20 20 77 68 69  s");.        whi
4760: 6c 65 20 28 78 50 72 65 76 69 65 77 2e 66 69 72  le (xPreview.fir
4770: 73 74 43 68 69 6c 64 29 20 7b 0a 20 20 20 20 20  stChild) {.     
4780: 20 20 20 20 20 20 20 78 50 72 65 76 69 65 77 2e         xPreview.
4790: 72 65 6d 6f 76 65 43 68 69 6c 64 28 78 50 72 65  removeChild(xPre
47a0: 76 69 65 77 2e 66 69 72 73 74 43 68 69 6c 64 29  view.firstChild)
47b0: 3b 0a 20 20 20 20 20 20 20 20 7d 3b 0a 20 20 20  ;.        };.   
47c0: 20 20 20 20 20 6c 65 74 20 78 45 64 69 74 6f 72       let xEditor
47d0: 20 3d 20 47 65 74 43 75 72 72 65 6e 74 45 64 69   = GetCurrentEdi
47e0: 74 6f 72 28 29 3b 0a 20 20 20 20 20 20 20 20 69  tor();.        i
47f0: 66 20 28 78 45 64 69 74 6f 72 20 21 3d 20 6e 75  f (xEditor != nu
4800: 6c 6c 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20  ll) {.          
4810: 20 20 74 72 79 20 7b 0a 20 20 20 20 20 20 20 20    try {.        
4820: 20 20 20 20 20 20 20 20 78 45 64 69 74 6f 72 2e          xEditor.
4830: 51 75 65 72 79 49 6e 74 65 72 66 61 63 65 28 43  QueryInterface(C
4840: 69 2e 6e 73 49 45 64 69 74 6f 72 53 74 79 6c 65  i.nsIEditorStyle
4850: 53 68 65 65 74 73 29 3b 0a 20 20 20 20 20 20 20  Sheets);.       
4860: 20 20 20 20 20 20 20 20 20 78 45 64 69 74 6f 72           xEditor
4870: 2e 61 64 64 4f 76 65 72 72 69 64 65 53 74 79 6c  .addOverrideStyl
4880: 65 53 68 65 65 74 28 22 63 68 72 6f 6d 65 3a 2f  eSheet("chrome:/
4890: 2f 67 72 61 6d 6d 61 72 63 68 65 63 6b 65 72 2f  /grammarchecker/
48a0: 63 6f 6e 74 65 6e 74 2f 6f 76 65 72 6c 61 79 2e  content/overlay.
48b0: 63 73 73 22 29 3b 0a 20 20 20 20 20 20 20 20 20  css");.         
48c0: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20     }.           
48d0: 20 63 61 74 63 68 20 28 65 29 20 7b 0a 20 20 20   catch (e) {.   
48e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 2e               Cu.
48f0: 72 65 70 6f 72 74 45 72 72 6f 72 28 65 29 3b 0a  reportError(e);.
4900: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20              }.  
4910: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20        }.        
4920: 74 68 69 73 2e 73 65 74 49 6e 66 6f 28 22 5b 76  this.setInfo("[v
4930: 69 64 65 5d 22 29 3b 0a 20 20 20 20 7d 2c 0a 20  ide]");.    },. 
4940: 20 20 20 73 65 74 49 6e 66 6f 3a 20 66 75 6e 63     setInfo: func
4950: 74 69 6f 6e 20 28 73 54 65 78 74 29 20 7b 0a 20  tion (sText) {. 
4960: 20 20 20 20 20 20 20 64 6f 63 75 6d 65 6e 74 2e         document.
4970: 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 22  getElementById("
4980: 67 72 61 6d 6d 61 6c 65 63 74 65 2d 69 6e 66 6f  grammalecte-info
4990: 22 29 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d  ").textContent =
49a0: 20 73 54 65 78 74 3b 0a 20 20 20 20 7d 2c 0a 20   sText;.    },. 
49b0: 20 20 20 6f 70 65 6e 50 61 6e 65 6c 3a 20 66 75     openPanel: fu
49c0: 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20 20 20  nction () {.    
49d0: 20 20 20 20 64 6f 63 75 6d 65 6e 74 2e 67 65 74      document.get
49e0: 45 6c 65 6d 65 6e 74 42 79 49 64 28 22 74 65 78  ElementById("tex
49f0: 74 66 6f 72 6d 61 74 74 65 72 2d 73 70 6c 69 74  tformatter-split
4a00: 74 65 72 22 29 2e 73 65 74 41 74 74 72 69 62 75  ter").setAttribu
4a10: 74 65 28 22 73 74 61 74 65 22 2c 20 22 63 6f 6c  te("state", "col
4a20: 6c 61 70 73 65 64 22 29 3b 0a 20 20 20 20 20 20  lapsed");.      
4a30: 20 20 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c    document.getEl
4a40: 65 6d 65 6e 74 42 79 49 64 28 22 67 72 61 6d 6d  ementById("gramm
4a50: 61 72 63 68 65 63 6b 65 72 2d 73 70 6c 69 74 74  archecker-splitt
4a60: 65 72 22 29 2e 73 65 74 41 74 74 72 69 62 75 74  er").setAttribut
4a70: 65 28 22 73 74 61 74 65 22 2c 20 22 6f 70 65 6e  e("state", "open
4a80: 22 29 3b 0a 20 20 20 20 7d 2c 0a 20 20 20 20 63  ");.    },.    c
4a90: 6c 6f 73 65 50 61 6e 65 6c 3a 20 66 75 6e 63 74  losePanel: funct
4aa0: 69 6f 6e 20 28 29 20 7b 0a 20 20 20 20 20 20 20  ion () {.       
4ab0: 20 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65   document.getEle
4ac0: 6d 65 6e 74 42 79 49 64 28 22 67 72 61 6d 6d 61  mentById("gramma
4ad0: 72 63 68 65 63 6b 65 72 2d 73 70 6c 69 74 74 65  rchecker-splitte
4ae0: 72 22 29 2e 73 65 74 41 74 74 72 69 62 75 74 65  r").setAttribute
4af0: 28 22 73 74 61 74 65 22 2c 20 22 63 6f 6c 6c 61  ("state", "colla
4b00: 70 73 65 64 22 29 3b 0a 20 20 20 20 7d 2c 0a 20  psed");.    },. 
4b10: 20 20 20 6f 70 65 6e 44 69 61 6c 6f 67 3a 20 66     openDialog: f
4b20: 75 6e 63 74 69 6f 6e 20 28 73 57 68 61 74 2c 20  unction (sWhat, 
4b30: 73 4e 61 6d 65 3d 22 22 2c 20 73 4f 70 74 69 6f  sName="", sOptio
4b40: 6e 73 3d 22 22 29 20 7b 0a 20 20 20 20 20 20 20  ns="") {.       
4b50: 20 74 72 79 20 7b 0a 20 20 20 20 20 20 20 20 20   try {.         
4b60: 20 20 20 77 69 6e 64 6f 77 2e 6f 70 65 6e 44 69     window.openDi
4b70: 61 6c 6f 67 28 73 57 68 61 74 2c 20 73 4e 61 6d  alog(sWhat, sNam
4b80: 65 2c 20 73 4f 70 74 69 6f 6e 73 29 3b 0a 20 20  e, sOptions);.  
4b90: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20        }.        
4ba0: 63 61 74 63 68 20 28 65 29 20 7b 0a 20 20 20 20  catch (e) {.    
4bb0: 20 20 20 20 20 20 20 20 43 75 2e 72 65 70 6f 72          Cu.repor
4bc0: 74 45 72 72 6f 72 28 65 29 3b 0a 20 20 20 20 20  tError(e);.     
4bd0: 20 20 20 7d 0a 20 20 20 20 7d 2c 0a 20 20 20 20     }.    },.    
4be0: 6f 70 65 6e 49 6e 54 61 62 55 52 4c 3a 20 66 75  openInTabURL: fu
4bf0: 6e 63 74 69 6f 6e 20 28 73 55 52 4c 29 20 7b 0a  nction (sURL) {.
4c00: 20 20 20 20 20 20 20 20 2f 2f 20 6d 65 74 68 6f          // metho
4c10: 64 20 66 6f 75 6e 64 20 69 6e 20 53 33 2e 47 6f  d found in S3.Go
4c20: 6f 67 6c 65 2e 54 72 61 6e 73 6c 61 74 6f 72 0a  ogle.Translator.
4c30: 20 20 20 20 20 20 20 20 74 72 79 20 7b 0a 20 20          try {.  
4c40: 20 20 20 20 20 20 20 20 20 20 6c 65 74 20 78 57            let xW
4c50: 4d 20 3d 20 43 63 5b 22 40 6d 6f 7a 69 6c 6c 61  M = Cc["@mozilla
4c60: 2e 6f 72 67 2f 61 70 70 73 68 65 6c 6c 2f 77 69  .org/appshell/wi
4c70: 6e 64 6f 77 2d 6d 65 64 69 61 74 6f 72 3b 31 22  ndow-mediator;1"
4c80: 5d 2e 67 65 74 53 65 72 76 69 63 65 28 43 69 2e  ].getService(Ci.
4c90: 6e 73 49 57 69 6e 64 6f 77 4d 65 64 69 61 74 6f  nsIWindowMediato
4ca0: 72 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  r);.            
4cb0: 6c 65 74 20 78 57 69 6e 20 3d 20 78 57 4d 2e 67  let xWin = xWM.g
4cc0: 65 74 4d 6f 73 74 52 65 63 65 6e 74 57 69 6e 64  etMostRecentWind
4cd0: 6f 77 28 22 6d 61 69 6c 3a 33 70 61 6e 65 22 29  ow("mail:3pane")
4ce0: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 65  ;.            le
4cf0: 74 20 78 54 61 62 6d 61 69 6c 20 3d 20 78 57 69  t xTabmail = xWi
4d00: 6e 2e 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c  n.document.getEl
4d10: 65 6d 65 6e 74 42 79 49 64 28 27 74 61 62 6d 61  ementById('tabma
4d20: 69 6c 27 29 3b 0a 20 20 20 20 20 20 20 20 20 20  il');.          
4d30: 20 20 78 57 69 6e 2e 66 6f 63 75 73 28 29 3b 0a    xWin.focus();.
4d40: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
4d50: 78 54 61 62 6d 61 69 6c 29 20 7b 0a 20 20 20 20  xTabmail) {.    
4d60: 20 20 20 20 20 20 20 20 20 20 20 20 78 54 61 62              xTab
4d70: 6d 61 69 6c 2e 6f 70 65 6e 54 61 62 28 27 63 6f  mail.openTab('co
4d80: 6e 74 65 6e 74 54 61 62 27 2c 20 7b 20 63 6f 6e  ntentTab', { con
4d90: 74 65 6e 74 50 61 67 65 3a 20 73 55 52 4c 20 7d  tentPage: sURL }
4da0: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  );.            }
4db0: 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20  .        }.     
4dc0: 20 20 20 63 61 74 63 68 20 28 65 29 20 7b 0a 20     catch (e) {. 
4dd0: 20 20 20 20 20 20 20 20 20 20 20 43 75 2e 72 65             Cu.re
4de0: 70 6f 72 74 45 72 72 6f 72 28 65 29 3b 0a 20 20  portError(e);.  
4df0: 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 2c 0a 20        }.    },. 
4e00: 20 20 20 6f 70 65 6e 49 6e 42 72 6f 77 73 65 72     openInBrowser
4e10: 55 52 4c 3a 20 66 75 6e 63 74 69 6f 6e 20 28 73  URL: function (s
4e20: 55 52 4c 29 20 7b 0a 20 20 20 20 20 20 20 20 2f  URL) {.        /
4e30: 2f 20 6d 65 74 68 6f 64 20 66 6f 75 6e 64 20 69  / method found i
4e40: 6e 20 53 33 2e 47 6f 6f 67 6c 65 2e 54 72 61 6e  n S3.Google.Tran
4e50: 73 6c 61 74 6f 72 0a 20 20 20 20 20 20 20 20 74  slator.        t
4e60: 72 79 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  ry {.           
4e70: 20 6f 70 65 6e 55 52 4c 28 73 55 52 4c 29 3b 0a   openURL(sURL);.
4e80: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20          }.      
4e90: 20 20 63 61 74 63 68 20 28 65 29 20 7b 0a 20 20    catch (e) {.  
4ea0: 20 20 20 20 20 20 20 20 20 20 43 75 2e 72 65 70            Cu.rep
4eb0: 6f 72 74 45 72 72 6f 72 28 65 29 3b 0a 20 20 20  ortError(e);.   
4ec0: 20 20 20 20 20 7d 0a 20 20 20 20 7d 2c 0a 20 20       }.    },.  
4ed0: 20 20 6f 6e 50 61 72 73 65 54 65 78 74 3a 20 66    onParseText: f
4ee0: 75 6e 63 74 69 6f 6e 20 28 65 29 20 7b 0a 20 20  unction (e) {.  
4ef0: 20 20 20 20 20 20 74 68 69 73 2e 70 61 72 73 65        this.parse
4f00: 28 29 3b 0a 20 20 20 20 7d 2c 0a 20 20 20 20 6f  ();.    },.    o
4f10: 6e 43 6c 6f 73 65 50 61 6e 65 6c 3a 20 66 75 6e  nClosePanel: fun
4f20: 63 74 69 6f 6e 20 28 65 29 20 7b 0a 20 20 20 20  ction (e) {.    
4f30: 20 20 20 20 74 68 69 73 2e 63 6c 6f 73 65 50 61      this.closePa
4f40: 6e 65 6c 28 29 3b 0a 20 20 20 20 7d 2c 0a 20 20  nel();.    },.  
4f50: 20 20 6f 6e 4f 70 65 6e 47 43 4f 70 74 69 6f 6e    onOpenGCOption
4f60: 73 3a 20 66 75 6e 63 74 69 6f 6e 20 28 65 29 20  s: function (e) 
4f70: 7b 0a 20 20 20 20 20 20 20 20 6c 65 74 20 74 68  {.        let th
4f80: 61 74 20 3d 20 74 68 69 73 3b 0a 20 20 20 20 20  at = this;.     
4f90: 20 20 20 6c 65 74 20 78 50 72 6f 6d 69 73 65 20     let xPromise 
4fa0: 3d 20 74 68 69 73 2e 78 47 43 45 57 6f 72 6b 65  = this.xGCEWorke
4fb0: 72 2e 70 6f 73 74 28 27 67 65 74 44 65 66 61 75  r.post('getDefau
4fc0: 6c 74 4f 70 74 69 6f 6e 73 27 29 3b 0a 20 20 20  ltOptions');.   
4fd0: 20 20 20 20 20 78 50 72 6f 6d 69 73 65 2e 74 68       xPromise.th
4fe0: 65 6e 28 0a 20 20 20 20 20 20 20 20 20 20 20 20  en(.            
4ff0: 66 75 6e 63 74 69 6f 6e 20 28 61 56 61 6c 29 20  function (aVal) 
5000: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  {.              
5010: 20 20 65 63 68 6f 28 61 56 61 6c 29 3b 0a 20 20    echo(aVal);.  
5020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72                pr
5030: 65 66 73 2e 73 65 74 43 68 61 72 50 72 65 66 28  efs.setCharPref(
5040: 22 73 47 43 44 65 66 61 75 6c 74 4f 70 74 69 6f  "sGCDefaultOptio
5050: 6e 73 22 2c 20 61 56 61 6c 29 3b 0a 20 20 20 20  ns", aVal);.    
5060: 20 20 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20          },.     
5070: 20 20 20 20 20 20 20 66 75 6e 63 74 69 6f 6e 20         function 
5080: 28 61 52 65 61 73 6f 6e 29 20 7b 20 65 63 68 6f  (aReason) { echo
5090: 28 27 50 72 6f 6d 69 73 65 20 72 65 6a 65 63 74  ('Promise reject
50a0: 65 64 27 2c 20 61 52 65 61 73 6f 6e 29 3b 20 7d  ed', aReason); }
50b0: 0a 20 20 20 20 20 20 20 20 29 2e 63 61 74 63 68  .        ).catch
50c0: 28 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 75  (.            fu
50d0: 6e 63 74 69 6f 6e 20 28 61 43 61 75 67 68 74 29  nction (aCaught)
50e0: 20 7b 20 65 63 68 6f 28 27 50 72 6f 6d 69 73 65   { echo('Promise
50f0: 20 45 72 72 6f 72 27 2c 20 61 43 61 75 67 68 74   Error', aCaught
5100: 29 3b 20 7d 0a 20 20 20 20 20 20 20 20 29 2e 74  ); }.        ).t
5110: 68 65 6e 28 0a 20 20 20 20 20 20 20 20 20 20 20  hen(.           
5120: 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20   function () {. 
5130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
5140: 68 61 74 2e 6f 70 65 6e 44 69 61 6c 6f 67 28 22  hat.openDialog("
5150: 63 68 72 6f 6d 65 3a 2f 2f 67 72 61 6d 6d 61 72  chrome://grammar
5160: 63 68 65 63 6b 65 72 2f 63 6f 6e 74 65 6e 74 2f  checker/content/
5170: 67 63 5f 6f 70 74 69 6f 6e 73 2e 78 75 6c 22 2c  gc_options.xul",
5180: 20 22 22 2c 20 22 63 68 72 6f 6d 65 2c 20 64 69   "", "chrome, di
5190: 61 6c 6f 67 2c 20 6d 6f 64 61 6c 2c 20 72 65 73  alog, modal, res
51a0: 69 7a 61 62 6c 65 3d 6e 6f 22 29 3b 0a 20 20 20  izable=no");.   
51b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 61               tha
51c0: 74 2e 73 65 74 4f 70 74 69 6f 6e 73 28 29 3b 0a  t.setOptions();.
51d0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 2c 0a 20              },. 
51e0: 20 20 20 20 20 20 20 20 20 20 20 66 75 6e 63 74             funct
51f0: 69 6f 6e 20 28 61 52 65 61 73 6f 6e 29 20 7b 20  ion (aReason) { 
5200: 65 63 68 6f 28 27 45 72 72 6f 72 20 6f 70 74 69  echo('Error opti
5210: 6f 6e 73 20 64 69 61 6c 6f 67 27 2c 20 61 52 65  ons dialog', aRe
5220: 61 73 6f 6e 29 3b 20 7d 0a 20 20 20 20 20 20 20  ason); }.       
5230: 20 29 2e 63 61 74 63 68 28 0a 20 20 20 20 20 20   ).catch(.      
5240: 20 20 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 28        function (
5250: 61 43 61 75 67 68 74 29 20 7b 20 65 63 68 6f 28  aCaught) { echo(
5260: 27 45 72 72 6f 72 27 2c 20 61 43 61 75 67 68 74  'Error', aCaught
5270: 29 3b 20 7d 0a 20 20 20 20 20 20 20 20 29 3b 0a  ); }.        );.
5280: 20 20 20 20 7d 2c 0a 20 20 20 20 6f 6e 4f 70 65      },.    onOpe
5290: 6e 53 70 65 6c 6c 4f 70 74 69 6f 6e 73 3a 20 66  nSpellOptions: f
52a0: 75 6e 63 74 69 6f 6e 20 28 65 29 20 7b 0a 20 20  unction (e) {.  
52b0: 20 20 20 20 20 20 74 68 69 73 2e 6f 70 65 6e 44        this.openD
52c0: 69 61 6c 6f 67 28 22 63 68 72 6f 6d 65 3a 2f 2f  ialog("chrome://
52d0: 67 72 61 6d 6d 61 72 63 68 65 63 6b 65 72 2f 63  grammarchecker/c
52e0: 6f 6e 74 65 6e 74 2f 73 70 65 6c 6c 5f 6f 70 74  ontent/spell_opt
52f0: 69 6f 6e 73 2e 78 75 6c 22 2c 20 22 22 2c 20 22  ions.xul", "", "
5300: 63 68 72 6f 6d 65 2c 20 64 69 61 6c 6f 67 2c 20  chrome, dialog, 
5310: 6d 6f 64 61 6c 2c 20 72 65 73 69 7a 61 62 6c 65  modal, resizable
5320: 3d 6e 6f 22 29 3b 0a 20 20 20 20 7d 2c 0a 20 20  =no");.    },.  
5330: 20 20 6f 6e 4f 70 65 6e 4f 70 74 69 6f 6e 73 3a    onOpenOptions:
5340: 20 66 75 6e 63 74 69 6f 6e 20 28 65 29 20 7b 0a   function (e) {.
5350: 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f 70 65          this.ope
5360: 6e 44 69 61 6c 6f 67 28 22 63 68 72 6f 6d 65 3a  nDialog("chrome:
5370: 2f 2f 67 72 61 6d 6d 61 72 63 68 65 63 6b 65 72  //grammarchecker
5380: 2f 63 6f 6e 74 65 6e 74 2f 6f 70 74 69 6f 6e 73  /content/options
5390: 2e 78 75 6c 22 2c 20 22 22 2c 20 22 63 68 72 6f  .xul", "", "chro
53a0: 6d 65 2c 20 64 69 61 6c 6f 67 2c 20 6d 6f 64 61  me, dialog, moda
53b0: 6c 2c 20 72 65 73 69 7a 61 62 6c 65 3d 6e 6f 22  l, resizable=no"
53c0: 29 3b 0a 20 20 20 20 7d 2c 0a 20 20 20 20 6f 6e  );.    },.    on
53d0: 4f 70 65 6e 54 65 78 74 46 6f 72 6d 61 74 74 65  OpenTextFormatte
53e0: 72 3a 20 66 75 6e 63 74 69 6f 6e 20 28 65 29 20  r: function (e) 
53f0: 7b 0a 20 20 20 20 20 20 20 20 6f 54 65 78 74 46  {.        oTextF
5400: 6f 72 6d 61 74 74 65 72 2e 6f 70 65 6e 50 61 6e  ormatter.openPan
5410: 65 6c 28 29 3b 0a 20 20 20 20 7d 2c 0a 20 20 20  el();.    },.   
5420: 20 6f 6e 4f 70 65 6e 43 6f 6e 6a 75 67 75 65 75   onOpenConjugueu
5430: 72 3a 20 66 75 6e 63 74 69 6f 6e 20 28 65 29 20  r: function (e) 
5440: 7b 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f  {.        this.o
5450: 70 65 6e 44 69 61 6c 6f 67 28 22 63 68 72 6f 6d  penDialog("chrom
5460: 65 3a 2f 2f 67 72 61 6d 6d 61 72 63 68 65 63 6b  e://grammarcheck
5470: 65 72 2f 63 6f 6e 74 65 6e 74 2f 63 6f 6e 6a 75  er/content/conju
5480: 67 75 65 75 72 2e 78 75 6c 22 2c 20 22 22 2c 20  gueur.xul", "", 
5490: 22 63 68 72 6f 6d 65 2c 20 72 65 73 69 7a 61 62  "chrome, resizab
54a0: 6c 65 3d 6e 6f 22 29 3b 0a 20 20 20 20 7d 2c 0a  le=no");.    },.
54b0: 20 20 20 20 6f 6e 4f 70 65 6e 4c 65 78 69 63 6f      onOpenLexico
54c0: 6e 45 64 69 74 6f 72 3a 20 66 75 6e 63 74 69 6f  nEditor: functio
54d0: 6e 20 28 65 29 20 7b 0a 20 20 20 20 20 20 20 20  n (e) {.        
54e0: 74 68 69 73 2e 6f 70 65 6e 44 69 61 6c 6f 67 28  this.openDialog(
54f0: 22 63 68 72 6f 6d 65 3a 2f 2f 67 72 61 6d 6d 61  "chrome://gramma
5500: 72 63 68 65 63 6b 65 72 2f 63 6f 6e 74 65 6e 74  rchecker/content
5510: 2f 6c 65 78 5f 65 64 69 74 6f 72 2e 78 75 6c 22  /lex_editor.xul"
5520: 2c 20 22 22 2c 20 22 63 68 72 6f 6d 65 2c 20 72  , "", "chrome, r
5530: 65 73 69 7a 61 62 6c 65 3d 6e 6f 22 29 3b 0a 20  esizable=no");. 
5540: 20 20 20 7d 2c 0a 20 20 20 20 6f 6e 41 62 6f 75     },.    onAbou
5550: 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 65 29 20  t: function (e) 
5560: 7b 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f  {.        this.o
5570: 70 65 6e 44 69 61 6c 6f 67 28 22 63 68 72 6f 6d  penDialog("chrom
5580: 65 3a 2f 2f 67 72 61 6d 6d 61 72 63 68 65 63 6b  e://grammarcheck
5590: 65 72 2f 63 6f 6e 74 65 6e 74 2f 61 62 6f 75 74  er/content/about
55a0: 2e 78 75 6c 22 2c 20 22 22 2c 20 22 63 68 72 6f  .xul", "", "chro
55b0: 6d 65 2c 20 64 69 61 6c 6f 67 2c 20 6d 6f 64 61  me, dialog, moda
55c0: 6c 2c 20 72 65 73 69 7a 61 62 6c 65 3d 6e 6f 22  l, resizable=no"
55d0: 29 3b 0a 20 20 20 20 7d 0a 7d 3b 0a 0a 0a 76 61  );.    }.};...va
55e0: 72 20 6f 44 69 63 74 49 67 6e 69 74 65 72 20 3d  r oDictIgniter =
55f0: 20 7b 0a 20 20 20 20 62 44 6f 6e 65 3a 20 66 61   {.    bDone: fa
5600: 6c 73 65 2c 0a 20 20 20 20 69 6e 69 74 3a 20 66  lse,.    init: f
5610: 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20 20  unction () {.   
5620: 20 20 20 20 20 69 66 20 28 21 74 68 69 73 2e 62       if (!this.b
5630: 44 6f 6e 65 29 20 7b 0a 20 20 20 20 20 20 20 20  Done) {.        
5640: 20 20 20 20 6f 53 70 65 6c 6c 43 6f 6e 74 72 6f      oSpellContro
5650: 6c 2e 69 6e 69 74 28 29 3b 0a 20 20 20 20 20 20  l.init();.      
5660: 20 20 20 20 20 20 74 68 69 73 2e 5f 73 65 74 44        this._setD
5670: 69 63 74 69 6f 6e 61 72 79 28 27 66 72 2d 46 52  ictionary('fr-FR
5680: 2d 6d 6f 64 65 72 6e 27 2c 20 27 62 44 69 63 74  -modern', 'bDict
5690: 4d 6f 64 65 72 6e 27 29 3b 0a 20 20 20 20 20 20  Modern');.      
56a0: 20 20 20 20 20 20 74 68 69 73 2e 5f 73 65 74 44        this._setD
56b0: 69 63 74 69 6f 6e 61 72 79 28 27 66 72 2d 46 52  ictionary('fr-FR
56c0: 2d 63 6c 61 73 73 69 63 27 2c 20 27 62 44 69 63  -classic', 'bDic
56d0: 74 43 6c 61 73 73 69 63 27 29 3b 0a 20 20 20 20  tClassic');.    
56e0: 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 65          this._se
56f0: 74 44 69 63 74 69 6f 6e 61 72 79 28 27 66 72 2d  tDictionary('fr-
5700: 46 52 2d 72 65 66 6f 72 6d 27 2c 20 27 62 44 69  FR-reform', 'bDi
5710: 63 74 52 65 66 6f 72 6d 27 29 3b 0a 20 20 20 20  ctReform');.    
5720: 20 20 20 20 20 20 20 20 74 68 69 73 2e 5f 73 65          this._se
5730: 74 44 69 63 74 69 6f 6e 61 72 79 28 27 66 72 2d  tDictionary('fr-
5740: 46 52 2d 63 6c 61 73 73 69 63 2d 72 65 66 6f 72  FR-classic-refor
5750: 6d 27 2c 20 27 62 44 69 63 74 43 6c 61 73 73 69  m', 'bDictClassi
5760: 63 52 65 66 6f 72 6d 27 29 3b 0a 20 20 20 20 20  cReform');.     
5770: 20 20 20 7d 0a 20 20 20 20 7d 2c 0a 20 20 20 20     }.    },.    
5780: 5f 73 65 74 44 69 63 74 69 6f 6e 61 72 79 3a 20  _setDictionary: 
5790: 66 75 6e 63 74 69 6f 6e 20 28 73 44 69 63 4e 61  function (sDicNa
57a0: 6d 65 2c 20 73 4f 70 74 4e 61 6d 65 29 20 7b 0a  me, sOptName) {.
57b0: 20 20 20 20 20 20 20 20 74 72 79 20 7b 0a 20 20          try {.  
57c0: 20 20 20 20 20 20 20 20 20 20 6f 53 70 65 6c 6c            oSpell
57d0: 43 6f 6e 74 72 6f 6c 2e 73 65 74 45 78 74 65 6e  Control.setExten
57e0: 73 69 6f 6e 44 69 63 74 46 6f 6c 64 65 72 28 73  sionDictFolder(s
57f0: 44 69 63 4e 61 6d 65 2c 20 70 72 65 66 73 2e 67  DicName, prefs.g
5800: 65 74 42 6f 6f 6c 50 72 65 66 28 73 4f 70 74 4e  etBoolPref(sOptN
5810: 61 6d 65 29 29 3b 0a 20 20 20 20 20 20 20 20 7d  ame));.        }
5820: 0a 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28  .        catch (
5830: 65 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  e) {.           
5840: 20 43 75 2e 72 65 70 6f 72 74 45 72 72 6f 72 28   Cu.reportError(
5850: 65 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20  e);.        }.  
5860: 20 20 7d 0a 7d 0a 0a 0a 76 61 72 20 6f 54 65 78    }.}...var oTex
5870: 74 46 6f 72 6d 61 74 74 65 72 20 3d 20 7b 0a 20  tFormatter = {. 
5880: 20 20 20 69 6e 69 74 3a 20 66 75 6e 63 74 69 6f     init: functio
5890: 6e 20 28 29 20 7b 0a 20 20 20 20 20 20 20 20 74  n () {.        t
58a0: 72 79 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  ry {.           
58b0: 20 74 68 69 73 2e 63 6c 6f 73 65 50 61 6e 65 6c   this.closePanel
58c0: 28 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ();.            
58d0: 6c 65 74 20 73 54 46 4f 70 74 69 6f 6e 73 20 3d  let sTFOptions =
58e0: 20 70 72 65 66 73 2e 67 65 74 43 68 61 72 50 72   prefs.getCharPr
58f0: 65 66 28 22 73 54 46 4f 70 74 69 6f 6e 73 22 29  ef("sTFOptions")
5900: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ;.            if
5910: 20 28 73 54 46 4f 70 74 69 6f 6e 73 20 21 3d 3d   (sTFOptions !==
5920: 20 22 22 29 20 7b 0a 20 20 20 20 20 20 20 20 20   "") {.         
5930: 20 20 20 20 20 20 20 74 68 69 73 2e 73 65 74 4f         this.setO
5940: 70 74 69 6f 6e 73 49 6e 50 61 6e 65 6c 28 4a 53  ptionsInPanel(JS
5950: 4f 4e 2e 70 61 72 73 65 28 73 54 46 4f 70 74 69  ON.parse(sTFOpti
5960: 6f 6e 73 29 29 3b 0a 20 20 20 20 20 20 20 20 20  ons));.         
5970: 20 20 20 20 20 20 20 74 68 69 73 2e 72 65 73 65         this.rese
5980: 74 50 72 6f 67 72 65 73 73 42 61 72 28 29 3b 0a  tProgressBar();.
5990: 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c              } el
59a0: 73 65 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  se {.           
59b0: 20 20 20 20 20 74 68 69 73 2e 72 65 73 65 74 28       this.reset(
59c0: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  );.            }
59d0: 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20  .        }.     
59e0: 20 20 20 63 61 74 63 68 20 28 65 29 20 7b 0a 20     catch (e) {. 
59f0: 20 20 20 20 20 20 20 20 20 20 20 43 75 2e 72 65             Cu.re
5a00: 70 6f 72 74 45 72 72 6f 72 28 65 29 3b 0a 20 20  portError(e);.  
5a10: 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 2c 0a 20        }.    },. 
5a20: 20 20 20 61 70 70 6c 79 3a 20 66 75 6e 63 74 69     apply: functi
5a30: 6f 6e 20 28 29 20 7b 0a 20 20 20 20 20 20 20 20  on () {.        
5a40: 74 72 79 20 7b 0a 20 20 20 20 20 20 20 20 20 20  try {.          
5a50: 20 20 74 68 69 73 2e 73 61 76 65 4f 70 74 69 6f    this.saveOptio
5a60: 6e 73 28 29 3b 0a 20 20 20 20 20 20 20 20 20 20  ns();.          
5a70: 20 20 74 68 69 73 2e 72 65 73 65 74 50 72 6f 67    this.resetProg
5a80: 72 65 73 73 42 61 72 28 29 3b 0a 20 20 20 20 20  ressBar();.     
5a90: 20 20 20 20 20 20 20 6c 65 74 20 78 45 64 69 74         let xEdit
5aa0: 6f 72 20 3d 20 6e 65 77 20 45 64 69 74 6f 72 28  or = new Editor(
5ab0: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c  );.            l
5ac0: 65 74 20 73 54 65 78 74 20 3d 20 78 45 64 69 74  et sText = xEdit
5ad0: 6f 72 2e 67 65 74 43 6f 6e 74 65 6e 74 28 29 3b  or.getContent();
5ae0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 65 74  .            let
5af0: 20 69 50 61 72 61 67 72 61 70 68 20 3d 20 30 3b   iParagraph = 0;
5b00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 54 65  .            sTe
5b10: 78 74 20 3d 20 74 68 69 73 2e 61 70 70 6c 79 4f  xt = this.applyO
5b20: 70 74 69 6f 6e 73 28 73 54 65 78 74 29 3b 0a 20  ptions(sText);. 
5b30: 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28             for (
5b40: 6c 65 74 20 73 50 61 72 61 67 72 61 70 68 20 6f  let sParagraph o
5b50: 66 20 74 65 78 74 2e 67 65 74 50 61 72 61 67 72  f text.getParagr
5b60: 61 70 68 28 73 54 65 78 74 29 29 20 7b 0a 20 20  aph(sText)) {.  
5b70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 45                xE
5b80: 64 69 74 6f 72 2e 77 72 69 74 65 50 61 72 61 67  ditor.writeParag
5b90: 72 61 70 68 28 69 50 61 72 61 67 72 61 70 68 2c  raph(iParagraph,
5ba0: 20 73 50 61 72 61 67 72 61 70 68 29 3b 0a 20 20   sParagraph);.  
5bb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 50                iP
5bc0: 61 72 61 67 72 61 70 68 20 2b 3d 20 31 3b 0a 20  aragraph += 1;. 
5bd0: 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20             }.   
5be0: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 63       }.        c
5bf0: 61 74 63 68 20 28 65 29 20 7b 0a 20 20 20 20 20  atch (e) {.     
5c00: 20 20 20 20 20 20 20 43 75 2e 72 65 70 6f 72 74         Cu.report
5c10: 45 72 72 6f 72 28 65 29 3b 0a 20 20 20 20 20 20  Error(e);.      
5c20: 20 20 7d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 73    }.    },.    s
5c30: 61 76 65 4f 70 74 69 6f 6e 73 3a 20 66 75 6e 63  aveOptions: func
5c40: 74 69 6f 6e 20 28 29 20 7b 0a 20 20 20 20 20 20  tion () {.      
5c50: 20 20 6c 65 74 20 6f 4f 70 74 69 6f 6e 73 20 3d    let oOptions =
5c60: 20 7b 7d 3b 0a 20 20 20 20 20 20 20 20 66 6f 72   {};.        for
5c70: 20 28 6c 65 74 20 78 4e 6f 64 65 20 6f 66 20 64   (let xNode of d
5c80: 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65  ocument.getEleme
5c90: 6e 74 73 42 79 43 6c 61 73 73 4e 61 6d 65 28 22  ntsByClassName("
5ca0: 6f 70 74 69 6f 6e 22 29 29 20 7b 0a 20 20 20 20  option")) {.    
5cb0: 20 20 20 20 20 20 20 20 6f 4f 70 74 69 6f 6e 73          oOptions
5cc0: 5b 78 4e 6f 64 65 2e 69 64 5d 20 3d 20 78 4e 6f  [xNode.id] = xNo
5cd0: 64 65 2e 63 68 65 63 6b 65 64 3b 0a 20 20 20 20  de.checked;.    
5ce0: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 2f 2f      }.        //
5cf0: 65 63 68 6f 28 22 73 61 76 65 20 6f 70 74 69 6f  echo("save optio
5d00: 6e 73 3a 20 22 20 2b 20 4a 53 4f 4e 2e 73 74 72  ns: " + JSON.str
5d10: 69 6e 67 69 66 79 28 6f 4f 70 74 69 6f 6e 73 29  ingify(oOptions)
5d20: 29 3b 0a 20 20 20 20 20 20 20 20 70 72 65 66 73  );.        prefs
5d30: 2e 73 65 74 43 68 61 72 50 72 65 66 28 22 73 54  .setCharPref("sT
5d40: 46 4f 70 74 69 6f 6e 73 22 2c 20 4a 53 4f 4e 2e  FOptions", JSON.
5d50: 73 74 72 69 6e 67 69 66 79 28 6f 4f 70 74 69 6f  stringify(oOptio
5d60: 6e 73 29 29 3b 0a 20 20 20 20 7d 2c 0a 20 20 20  ns));.    },.   
5d70: 20 73 65 74 4f 70 74 69 6f 6e 73 49 6e 50 61 6e   setOptionsInPan
5d80: 65 6c 3a 20 66 75 6e 63 74 69 6f 6e 20 28 6f 4f  el: function (oO
5d90: 70 74 69 6f 6e 73 29 20 7b 0a 20 20 20 20 20 20  ptions) {.      
5da0: 20 20 66 6f 72 20 28 6c 65 74 20 73 4f 70 74 4e    for (let sOptN
5db0: 61 6d 65 20 69 6e 20 6f 4f 70 74 69 6f 6e 73 29  ame in oOptions)
5dc0: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f   {.            /
5dd0: 2f 63 6f 6e 73 6f 6c 65 2e 6c 6f 67 28 73 4f 70  /console.log(sOp
5de0: 74 4e 61 6d 65 20 2b 20 22 3a 22 20 2b 20 6f 4f  tName + ":" + oO
5df0: 70 74 69 6f 6e 73 5b 73 4f 70 74 4e 61 6d 65 5d  ptions[sOptName]
5e00: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  );.            i
5e10: 66 20 28 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45  f (document.getE
5e20: 6c 65 6d 65 6e 74 42 79 49 64 28 73 4f 70 74 4e  lementById(sOptN
5e30: 61 6d 65 29 20 21 3d 3d 20 6e 75 6c 6c 29 20 7b  ame) !== null) {
5e40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5e50: 20 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65   document.getEle
5e60: 6d 65 6e 74 42 79 49 64 28 73 4f 70 74 4e 61 6d  mentById(sOptNam
5e70: 65 29 2e 63 68 65 63 6b 65 64 20 3d 20 6f 4f 70  e).checked = oOp
5e80: 74 69 6f 6e 73 5b 73 4f 70 74 4e 61 6d 65 5d 3b  tions[sOptName];
5e90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5ea0: 20 69 66 20 28 73 4f 70 74 4e 61 6d 65 2e 73 74   if (sOptName.st
5eb0: 61 72 74 73 57 69 74 68 28 22 6f 5f 67 72 6f 75  artsWith("o_grou
5ec0: 70 5f 22 29 29 20 7b 0a 20 20 20 20 20 20 20 20  p_")) {.        
5ed0: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
5ee0: 2e 73 77 69 74 63 68 47 72 6f 75 70 28 73 4f 70  .switchGroup(sOp
5ef0: 74 4e 61 6d 65 29 3b 0a 20 20 20 20 20 20 20 20  tName);.        
5f00: 20 20 20 20 20 20 20 20 7d 20 0a 20 20 20 20 20          } .     
5f10: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64             if (d
5f20: 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65  ocument.getEleme
5f30: 6e 74 42 79 49 64 28 22 72 65 73 5f 22 2b 73 4f  ntById("res_"+sO
5f40: 70 74 4e 61 6d 65 29 20 21 3d 3d 20 6e 75 6c 6c  ptName) !== null
5f50: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ) {.            
5f60: 20 20 20 20 20 20 20 20 64 6f 63 75 6d 65 6e 74          document
5f70: 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28  .getElementById(
5f80: 22 72 65 73 5f 22 2b 73 4f 70 74 4e 61 6d 65 29  "res_"+sOptName)
5f90: 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20 22  .textContent = "
5fa0: 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ";.             
5fb0: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20     }.           
5fc0: 20 7d 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20   }.        }.   
5fd0: 20 7d 2c 0a 20 20 20 20 73 77 69 74 63 68 47 72   },.    switchGr
5fe0: 6f 75 70 3a 20 66 75 6e 63 74 69 6f 6e 20 28 73  oup: function (s
5ff0: 4f 70 74 4e 61 6d 65 29 20 7b 0a 20 20 20 20 20  OptName) {.     
6000: 20 20 20 69 66 20 28 64 6f 63 75 6d 65 6e 74 2e     if (document.
6010: 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 73  getElementById(s
6020: 4f 70 74 4e 61 6d 65 29 2e 63 68 65 63 6b 65 64  OptName).checked
6030: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ) {.            
6040: 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d  document.getElem
6050: 65 6e 74 42 79 49 64 28 73 4f 70 74 4e 61 6d 65  entById(sOptName
6060: 2e 73 6c 69 63 65 28 32 29 29 2e 73 74 79 6c 65  .slice(2)).style
6070: 2e 6f 70 61 63 69 74 79 20 3d 20 31 3b 0a 20 20  .opacity = 1;.  
6080: 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20        } else {. 
6090: 20 20 20 20 20 20 20 20 20 20 20 64 6f 63 75 6d             docum
60a0: 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79  ent.getElementBy
60b0: 49 64 28 73 4f 70 74 4e 61 6d 65 2e 73 6c 69 63  Id(sOptName.slic
60c0: 65 28 32 29 29 2e 73 74 79 6c 65 2e 6f 70 61 63  e(2)).style.opac
60d0: 69 74 79 20 3d 20 30 2e 33 3b 0a 20 20 20 20 20  ity = 0.3;.     
60e0: 20 20 20 7d 0a 20 20 20 20 7d 2c 0a 20 20 20 20     }.    },.    
60f0: 72 65 73 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20  reset: function 
6100: 28 29 20 7b 0a 20 20 20 20 20 20 20 20 74 72 79  () {.        try
6110: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 74   {.            t
6120: 68 69 73 2e 72 65 73 65 74 50 72 6f 67 72 65 73  his.resetProgres
6130: 73 42 61 72 28 29 3b 0a 20 20 20 20 20 20 20 20  sBar();.        
6140: 20 20 20 20 66 6f 72 20 28 6c 65 74 20 78 4e 6f      for (let xNo
6150: 64 65 20 6f 66 20 64 6f 63 75 6d 65 6e 74 2e 67  de of document.g
6160: 65 74 45 6c 65 6d 65 6e 74 73 42 79 43 6c 61 73  etElementsByClas
6170: 73 4e 61 6d 65 28 27 6f 70 74 69 6f 6e 27 29 29  sName('option'))
6180: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   {.             
6190: 20 20 20 78 4e 6f 64 65 2e 63 68 65 63 6b 65 64     xNode.checked
61a0: 20 3d 20 28 78 4e 6f 64 65 2e 67 65 74 41 74 74   = (xNode.getAtt
61b0: 72 69 62 75 74 65 28 27 64 61 74 61 2d 64 65 66  ribute('data-def
61c0: 61 75 6c 74 27 29 20 3d 3d 3d 20 22 74 72 75 65  ault') === "true
61d0: 22 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ");.            
61e0: 20 20 20 20 69 66 20 28 78 4e 6f 64 65 2e 69 64      if (xNode.id
61f0: 2e 73 74 61 72 74 73 57 69 74 68 28 22 6f 5f 67  .startsWith("o_g
6200: 72 6f 75 70 5f 22 29 29 20 7b 0a 20 20 20 20 20  roup_")) {.     
6210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
6220: 68 69 73 2e 73 77 69 74 63 68 47 72 6f 75 70 28  his.switchGroup(
6230: 78 4e 6f 64 65 2e 69 64 29 3b 0a 20 20 20 20 20  xNode.id);.     
6240: 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20             }.   
6250: 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20           }.     
6260: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 63 61 74     }.        cat
6270: 63 68 20 28 65 29 20 7b 0a 20 20 20 20 20 20 20  ch (e) {.       
6280: 20 20 20 20 20 43 75 2e 72 65 70 6f 72 74 45 72       Cu.reportEr
6290: 72 6f 72 28 65 29 3b 0a 20 20 20 20 20 20 20 20  ror(e);.        
62a0: 7d 0a 20 20 20 20 7d 2c 0a 20 20 20 20 72 65 73  }.    },.    res
62b0: 65 74 50 72 6f 67 72 65 73 73 42 61 72 3a 20 66  etProgressBar: f
62c0: 75 6e 63 74 69 6f 6e 20 28 29 20 7b 0a 20 20 20  unction () {.   
62d0: 20 20 20 20 20 64 6f 63 75 6d 65 6e 74 2e 67 65       document.ge
62e0: 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 70 72  tElementById('pr
62f0: 6f 67 72 65 73 73 62 61 72 27 29 2e 76 61 6c 75  ogressbar').valu
6300: 65 20 3d 20 30 3b 0a 20 20 20 20 20 20 20 20 64  e = 0;.        d
6310: 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65  ocument.getEleme
6320: 6e 74 42 79 49 64 28 27 74 69 6d 65 5f 72 65 73  ntById('time_res
6330: 27 29 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d  ').textContent =
6340: 20 22 22 3b 0a 20 20 20 20 7d 2c 0a 20 20 20 20   "";.    },.    
6350: 67 65 74 54 69 6d 65 52 65 73 3a 20 66 75 6e 63  getTimeRes: func
6360: 74 69 6f 6e 20 28 6e 29 20 7b 0a 20 20 20 20 20  tion (n) {.     
6370: 20 20 20 2f 2f 20 72 65 74 75 72 6e 73 20 64 75     // returns du
6380: 72 61 74 69 6f 6e 20 69 6e 20 73 65 63 6f 6e 64  ration in second
6390: 73 20 61 73 20 73 74 72 69 6e 67 0a 20 20 20 20  s as string.    
63a0: 20 20 20 20 69 66 20 28 6e 20 3c 20 31 30 29 20      if (n < 10) 
63b0: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  {.            re
63c0: 74 75 72 6e 20 6e 2e 74 6f 46 69 78 65 64 28 33  turn n.toFixed(3
63d0: 29 2e 74 6f 53 74 72 69 6e 67 28 29 20 2b 20 22  ).toString() + "
63e0: 20 73 22 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20   s";.        }. 
63f0: 20 20 20 20 20 20 20 69 66 20 28 6e 20 3c 20 31         if (n < 1
6400: 30 30 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20  00) {.          
6410: 20 20 72 65 74 75 72 6e 20 6e 2e 74 6f 46 69 78    return n.toFix
6420: 65 64 28 32 29 2e 74 6f 53 74 72 69 6e 67 28 29  ed(2).toString()
6430: 20 2b 20 22 20 73 22 3b 0a 20 20 20 20 20 20 20   + " s";.       
6440: 20 7d 0a 20 20 20 20 20 20 20 20 69 66 20 28 6e   }.        if (n
6450: 20 3c 20 31 30 30 30 29 20 7b 0a 20 20 20 20 20   < 1000) {.     
6460: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 2e         return n.
6470: 74 6f 46 69 78 65 64 28 31 29 2e 74 6f 53 74 72  toFixed(1).toStr
6480: 69 6e 67 28 29 20 2b 20 22 20 73 22 3b 0a 20 20  ing() + " s";.  
6490: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20        }.        
64a0: 72 65 74 75 72 6e 20 6e 2e 74 6f 46 69 78 65 64  return n.toFixed
64b0: 28 29 2e 74 6f 53 74 72 69 6e 67 28 29 20 2b 20  ().toString() + 
64c0: 22 20 73 22 3b 0a 20 20 20 20 7d 2c 0a 20 20 20  " s";.    },.   
64d0: 20 6f 70 65 6e 50 61 6e 65 6c 3a 20 66 75 6e 63   openPanel: func
64e0: 74 69 6f 6e 20 28 29 20 7b 0a 20 20 20 20 20 20  tion () {.      
64f0: 20 20 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c    document.getEl
6500: 65 6d 65 6e 74 42 79 49 64 28 22 67 72 61 6d 6d  ementById("gramm
6510: 61 72 63 68 65 63 6b 65 72 2d 73 70 6c 69 74 74  archecker-splitt
6520: 65 72 22 29 2e 73 65 74 41 74 74 72 69 62 75 74  er").setAttribut
6530: 65 28 22 73 74 61 74 65 22 2c 20 22 63 6f 6c 6c  e("state", "coll
6540: 61 70 73 65 64 22 29 3b 0a 20 20 20 20 20 20 20  apsed");.       
6550: 20 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65   document.getEle
6560: 6d 65 6e 74 42 79 49 64 28 22 74 65 78 74 66 6f  mentById("textfo
6570: 72 6d 61 74 74 65 72 2d 73 70 6c 69 74 74 65 72  rmatter-splitter
6580: 22 29 2e 73 65 74 41 74 74 72 69 62 75 74 65 28  ").setAttribute(
6590: 22 73 74 61 74 65 22 2c 20 22 6f 70 65 6e 22 29  "state", "open")
65a0: 3b 0a 20 20 20 20 7d 2c 0a 20 20 20 20 63 6c 6f  ;.    },.    clo
65b0: 73 65 50 61 6e 65 6c 3a 20 66 75 6e 63 74 69 6f  sePanel: functio
65c0: 6e 20 28 29 20 7b 0a 20 20 20 20 20 20 20 20 64  n () {.        d
65d0: 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65  ocument.getEleme
65e0: 6e 74 42 79 49 64 28 22 74 65 78 74 66 6f 72 6d  ntById("textform
65f0: 61 74 74 65 72 2d 73 70 6c 69 74 74 65 72 22 29  atter-splitter")
6600: 2e 73 65 74 41 74 74 72 69 62 75 74 65 28 22 73  .setAttribute("s
6610: 74 61 74 65 22 2c 20 22 63 6f 6c 6c 61 70 73 65  tate", "collapse
6620: 64 22 29 3b 0a 20 20 20 20 7d 2c 0a 20 20 20 20  d");.    },.    
6630: 6f 6e 4f 70 65 6e 50 61 6e 65 6c 3a 20 66 75 6e  onOpenPanel: fun
6640: 63 74 69 6f 6e 20 28 65 29 20 7b 0a 20 20 20 20  ction (e) {.    
6650: 20 20 20 20 74 68 69 73 2e 6f 70 65 6e 50 61 6e      this.openPan
6660: 65 6c 28 29 3b 0a 20 20 20 20 7d 2c 0a 20 20 20  el();.    },.   
6670: 20 6f 6e 43 6c 6f 73 65 50 61 6e 65 6c 3a 20 66   onClosePanel: f
6680: 75 6e 63 74 69 6f 6e 20 28 65 29 20 7b 0a 20 20  unction (e) {.  
6690: 20 20 20 20 20 20 74 68 69 73 2e 63 6c 6f 73 65        this.close
66a0: 50 61 6e 65 6c 28 29 3b 0a 20 20 20 20 7d 2c 0a  Panel();.    },.
66b0: 20 20 20 20 6f 6e 41 70 70 6c 79 3a 20 66 75 6e      onApply: fun
66c0: 63 74 69 6f 6e 20 28 65 29 20 7b 0a 20 20 20 20  ction (e) {.    
66d0: 20 20 20 20 74 68 69 73 2e 61 70 70 6c 79 28 29      this.apply()
66e0: 3b 0a 20 20 20 20 7d 2c 0a 20 20 20 20 6f 6e 52  ;.    },.    onR
66f0: 65 73 65 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28  eset: function (
6700: 65 29 20 7b 0a 20 20 20 20 20 20 20 20 74 68 69  e) {.        thi
6710: 73 2e 72 65 73 65 74 28 29 3b 0a 20 20 20 20 7d  s.reset();.    }
6720: 2c 0a 20 20 20 20 2f 2f 0a 20 20 20 20 61 70 70  ,.    //.    app
6730: 6c 79 4f 70 74 69 6f 6e 73 3a 20 66 75 6e 63 74  lyOptions: funct
6740: 69 6f 6e 20 28 73 54 65 78 74 29 20 7b 0a 20 20  ion (sText) {.  
6750: 20 20 20 20 20 20 74 72 79 20 7b 0a 20 20 20 20        try {.    
6760: 20 20 20 20 20 20 20 20 63 6f 6e 73 74 20 74 30          const t0
6770: 20 3d 20 44 61 74 65 2e 6e 6f 77 28 29 3b 0a 20   = Date.now();. 
6780: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 77 69 6e             //win
6790: 64 6f 77 2e 73 65 74 43 75 72 73 6f 72 28 22 77  dow.setCursor("w
67a0: 61 69 74 22 29 3b 20 2f 2f 20 63 68 61 6e 67 65  ait"); // change
67b0: 20 70 6f 69 6e 74 65 72 0a 20 20 20 20 20 20 20   pointer.       
67c0: 20 20 20 20 20 64 6f 63 75 6d 65 6e 74 2e 67 65       document.ge
67d0: 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 70 72  tElementById('pr
67e0: 6f 67 72 65 73 73 62 61 72 27 29 2e 76 61 6c 75  ogressbar').valu
67f0: 65 20 3d 20 30 3b 0a 20 20 20 20 20 20 20 20 20  e = 0;.         
6800: 20 20 20 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45     document.getE
6810: 6c 65 6d 65 6e 74 42 79 49 64 28 27 70 72 6f 67  lementById('prog
6820: 72 65 73 73 62 61 72 27 29 2e 6d 61 78 20 3d 20  ressbar').max = 
6830: 36 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c  6;.            l
6840: 65 74 20 6e 31 20 3d 20 30 2c 20 6e 32 20 3d 20  et n1 = 0, n2 = 
6850: 30 2c 20 6e 33 20 3d 20 30 2c 20 6e 34 20 3d 20  0, n3 = 0, n4 = 
6860: 30 2c 20 6e 35 20 3d 20 30 2c 20 6e 36 20 3d 20  0, n5 = 0, n6 = 
6870: 30 2c 20 6e 37 20 3d 20 30 3b 0a 20 20 20 20 20  0, n7 = 0;.     
6880: 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20         .        
6890: 20 20 20 20 2f 2f 20 65 73 70 61 63 65 73 20 73      // espaces s
68a0: 75 72 6e 75 6d c3 a9 72 61 69 72 65 73 0a 20 20  urnum..raires.  
68b0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64 6f            if (do
68c0: 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e  cument.getElemen
68d0: 74 42 79 49 64 28 22 6f 5f 67 72 6f 75 70 5f 73  tById("o_group_s
68e0: 73 70 22 29 2e 63 68 65 63 6b 65 64 29 20 7b 0a  sp").checked) {.
68f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6900: 69 66 20 28 64 6f 63 75 6d 65 6e 74 2e 67 65 74  if (document.get
6910: 45 6c 65 6d 65 6e 74 42 79 49 64 28 22 6f 5f 65  ElementById("o_e
6920: 6e 64 5f 6f 66 5f 70 61 72 61 67 72 61 70 68 22  nd_of_paragraph"
6930: 29 2e 63 68 65 63 6b 65 64 29 20 7b 0a 20 20 20  ).checked) {.   
6940: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6950: 20 5b 73 54 65 78 74 2c 20 6e 31 5d 20 3d 20 74   [sText, n1] = t
6960: 68 69 73 2e 66 6f 72 6d 61 74 54 65 78 74 28 73  his.formatText(s
6970: 54 65 78 74 2c 20 22 65 6e 64 5f 6f 66 5f 70 61  Text, "end_of_pa
6980: 72 61 67 72 61 70 68 22 29 3b 0a 20 20 20 20 20  ragraph");.     
6990: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64                 d
69a0: 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65  ocument.getEleme
69b0: 6e 74 42 79 49 64 28 27 72 65 73 5f 6f 5f 65 6e  ntById('res_o_en
69c0: 64 5f 6f 66 5f 70 61 72 61 67 72 61 70 68 27 29  d_of_paragraph')
69d0: 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20 6e  .textContent = n
69e0: 31 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  1;.             
69f0: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20     }.           
6a00: 20 20 20 20 20 69 66 20 28 64 6f 63 75 6d 65 6e       if (documen
6a10: 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64  t.getElementById
6a20: 28 22 6f 5f 62 65 74 77 65 65 6e 5f 77 6f 72 64  ("o_between_word
6a30: 73 22 29 2e 63 68 65 63 6b 65 64 29 20 7b 0a 20  s").checked) {. 
6a40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6a50: 20 20 20 5b 73 54 65 78 74 2c 20 6e 31 5d 20 3d     [sText, n1] =
6a60: 20 74 68 69 73 2e 66 6f 72 6d 61 74 54 65 78 74   this.formatText
6a70: 28 73 54 65 78 74 2c 20 22 62 65 74 77 65 65 6e  (sText, "between
6a80: 5f 77 6f 72 64 73 22 29 3b 0a 20 20 20 20 20 20  _words");.      
6a90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 6f                do
6aa0: 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e  cument.getElemen
6ab0: 74 42 79 49 64 28 27 72 65 73 5f 6f 5f 62 65 74  tById('res_o_bet
6ac0: 77 65 65 6e 5f 77 6f 72 64 73 27 29 2e 74 65 78  ween_words').tex
6ad0: 74 43 6f 6e 74 65 6e 74 20 3d 20 6e 31 3b 0a 20  tContent = n1;. 
6ae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
6af0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
6b00: 20 69 66 20 28 64 6f 63 75 6d 65 6e 74 2e 67 65   if (document.ge
6b10: 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 22 6f 5f  tElementById("o_
6b20: 73 74 61 72 74 5f 6f 66 5f 70 61 72 61 67 72 61  start_of_paragra
6b30: 70 68 22 29 2e 63 68 65 63 6b 65 64 29 20 7b 0a  ph").checked) {.
6b40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6b50: 20 20 20 20 5b 73 54 65 78 74 2c 20 6e 31 5d 20      [sText, n1] 
6b60: 3d 20 74 68 69 73 2e 66 6f 72 6d 61 74 54 65 78  = this.formatTex
6b70: 74 28 73 54 65 78 74 2c 20 22 73 74 61 72 74 5f  t(sText, "start_
6b80: 6f 66 5f 70 61 72 61 67 72 61 70 68 22 29 3b 0a  of_paragraph");.
6b90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6ba0: 20 20 20 20 64 6f 63 75 6d 65 6e 74 2e 67 65 74      document.get
6bb0: 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 72 65 73  ElementById('res
6bc0: 5f 6f 5f 73 74 61 72 74 5f 6f 66 5f 70 61 72 61  _o_start_of_para
6bd0: 67 72 61 70 68 27 29 2e 74 65 78 74 43 6f 6e 74  graph').textCont
6be0: 65 6e 74 20 3d 20 6e 31 3b 0a 20 20 20 20 20 20  ent = n1;.      
6bf0: 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20            }.    
6c00: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
6c10: 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d  document.getElem
6c20: 65 6e 74 42 79 49 64 28 22 6f 5f 62 65 66 6f 72  entById("o_befor
6c30: 65 5f 70 75 6e 63 74 75 61 74 69 6f 6e 22 29 2e  e_punctuation").
6c40: 63 68 65 63 6b 65 64 29 20 7b 0a 20 20 20 20 20  checked) {.     
6c50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5b                 [
6c60: 73 54 65 78 74 2c 20 6e 31 5d 20 3d 20 74 68 69  sText, n1] = thi
6c70: 73 2e 66 6f 72 6d 61 74 54 65 78 74 28 73 54 65  s.formatText(sTe
6c80: 78 74 2c 20 22 62 65 66 6f 72 65 5f 70 75 6e 63  xt, "before_punc
6c90: 74 75 61 74 69 6f 6e 22 29 3b 0a 20 20 20 20 20  tuation");.     
6ca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64                 d
6cb0: 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65  ocument.getEleme
6cc0: 6e 74 42 79 49 64 28 27 72 65 73 5f 6f 5f 62 65  ntById('res_o_be
6cd0: 66 6f 72 65 5f 70 75 6e 63 74 75 61 74 69 6f 6e  fore_punctuation
6ce0: 27 29 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d  ').textContent =
6cf0: 20 6e 31 3b 0a 20 20 20 20 20 20 20 20 20 20 20   n1;.           
6d00: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20       }.         
6d10: 20 20 20 20 20 20 20 69 66 20 28 64 6f 63 75 6d         if (docum
6d20: 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79  ent.getElementBy
6d30: 49 64 28 22 6f 5f 77 69 74 68 69 6e 5f 70 61 72  Id("o_within_par
6d40: 65 6e 74 68 65 73 69 73 22 29 2e 63 68 65 63 6b  enthesis").check
6d50: 65 64 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20  ed) {.          
6d60: 20 20 20 20 20 20 20 20 20 20 5b 73 54 65 78 74            [sText
6d70: 2c 20 6e 31 5d 20 3d 20 74 68 69 73 2e 66 6f 72  , n1] = this.for
6d80: 6d 61 74 54 65 78 74 28 73 54 65 78 74 2c 20 22  matText(sText, "
6d90: 77 69 74 68 69 6e 5f 70 61 72 65 6e 74 68 65 73  within_parenthes
6da0: 69 73 22 29 3b 0a 20 20 20 20 20 20 20 20 20 20  is");.          
6db0: 20 20 20 20 20 20 20 20 20 20 64 6f 63 75 6d 65            docume
6dc0: 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49  nt.getElementByI
6dd0: 64 28 27 72 65 73 5f 6f 5f 77 69 74 68 69 6e 5f  d('res_o_within_
6de0: 70 61 72 65 6e 74 68 65 73 69 73 27 29 2e 74 65  parenthesis').te
6df0: 78 74 43 6f 6e 74 65 6e 74 20 3d 20 6e 31 3b 0a  xtContent = n1;.
6e00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6e10: 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  }.              
6e20: 20 20 69 66 20 28 64 6f 63 75 6d 65 6e 74 2e 67    if (document.g
6e30: 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 22 6f  etElementById("o
6e40: 5f 77 69 74 68 69 6e 5f 73 71 75 61 72 65 5f 62  _within_square_b
6e50: 72 61 63 6b 65 74 73 22 29 2e 63 68 65 63 6b 65  rackets").checke
6e60: 64 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  d) {.           
6e70: 20 20 20 20 20 20 20 20 20 5b 73 54 65 78 74 2c           [sText,
6e80: 20 6e 31 5d 20 3d 20 74 68 69 73 2e 66 6f 72 6d   n1] = this.form
6e90: 61 74 54 65 78 74 28 73 54 65 78 74 2c 20 22 77  atText(sText, "w
6ea0: 69 74 68 69 6e 5f 73 71 75 61 72 65 5f 62 72 61  ithin_square_bra
6eb0: 63 6b 65 74 73 22 29 3b 0a 20 20 20 20 20 20 20  ckets");.       
6ec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 63               doc
6ed0: 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74  ument.getElement
6ee0: 42 79 49 64 28 27 72 65 73 5f 6f 5f 77 69 74 68  ById('res_o_with
6ef0: 69 6e 5f 73 71 75 61 72 65 5f 62 72 61 63 6b 65  in_square_bracke
6f00: 74 73 27 29 2e 74 65 78 74 43 6f 6e 74 65 6e 74  ts').textContent
6f10: 20 3d 20 6e 31 3b 0a 20 20 20 20 20 20 20 20 20   = n1;.         
6f20: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20         }.       
6f30: 20 20 20 20 20 20 20 20 20 69 66 20 28 64 6f 63           if (doc
6f40: 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74  ument.getElement
6f50: 42 79 49 64 28 22 6f 5f 77 69 74 68 69 6e 5f 71  ById("o_within_q
6f60: 75 6f 74 61 74 69 6f 6e 5f 6d 61 72 6b 73 22 29  uotation_marks")
6f70: 2e 63 68 65 63 6b 65 64 29 20 7b 0a 20 20 20 20  .checked) {.    
6f80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6f90: 5b 73 54 65 78 74 2c 20 6e 31 5d 20 3d 20 74 68  [sText, n1] = th
6fa0: 69 73 2e 66 6f 72 6d 61 74 54 65 78 74 28 73 54  is.formatText(sT
6fb0: 65 78 74 2c 20 22 77 69 74 68 69 6e 5f 71 75 6f  ext, "within_quo
6fc0: 74 61 74 69 6f 6e 5f 6d 61 72 6b 73 22 29 3b 0a  tation_marks");.
6fd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6fe0: 20 20 20 20 64 6f 63 75 6d 65 6e 74 2e 67 65 74      document.get
6ff0: 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 72 65 73  ElementById('res
7000: 5f 6f 5f 77 69 74 68 69 6e 5f 71 75 6f 74 61 74  _o_within_quotat
7010: 69 6f 6e 5f 6d 61 72 6b 73 27 29 2e 74 65 78 74  ion_marks').text
7020: 43 6f 6e 74 65 6e 74 20 3d 20 6e 31 3b 0a 20 20  Content = n1;.  
7030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a                }.
7040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7050: 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d  document.getElem
7060: 65 6e 74 42 79 49 64 28 22 6f 5f 67 72 6f 75 70  entById("o_group
7070: 5f 73 73 70 22 29 2e 63 68 65 63 6b 65 64 20 3d  _ssp").checked =
7080: 20 66 61 6c 73 65 3b 0a 20 20 20 20 20 20 20 20   false;.        
7090: 20 20 20 20 20 20 20 20 74 68 69 73 2e 73 77 69          this.swi
70a0: 74 63 68 47 72 6f 75 70 28 22 6f 5f 67 72 6f 75  tchGroup("o_grou
70b0: 70 5f 73 73 70 22 29 3b 0a 20 20 20 20 20 20 20  p_ssp");.       
70c0: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20       }.         
70d0: 20 20 20 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45     document.getE
70e0: 6c 65 6d 65 6e 74 42 79 49 64 28 27 70 72 6f 67  lementById('prog
70f0: 72 65 73 73 62 61 72 27 29 2e 76 61 6c 75 65 20  ressbar').value 
7100: 3d 20 31 3b 0a 0a 20 20 20 20 20 20 20 20 20 20  = 1;..          
7110: 20 20 2f 2f 20 65 73 70 61 63 65 73 20 74 79 70    // espaces typ
7120: 6f 67 72 61 70 68 69 71 75 65 73 0a 20 20 20 20  ographiques.    
7130: 20 20 20 20 20 20 20 20 69 66 20 28 64 6f 63 75          if (docu
7140: 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42  ment.getElementB
7150: 79 49 64 28 22 6f 5f 67 72 6f 75 70 5f 6e 62 73  yId("o_group_nbs
7160: 70 22 29 2e 63 68 65 63 6b 65 64 29 20 7b 0a 20  p").checked) {. 
7170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
7180: 66 20 28 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45  f (document.getE
7190: 6c 65 6d 65 6e 74 42 79 49 64 28 22 6f 5f 6e 62  lementById("o_nb
71a0: 73 70 5f 62 65 66 6f 72 65 5f 70 75 6e 63 74 75  sp_before_punctu
71b0: 61 74 69 6f 6e 22 29 2e 63 68 65 63 6b 65 64 29  ation").checked)
71c0: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   {.             
71d0: 20 20 20 20 20 20 20 5b 73 54 65 78 74 2c 20 6e         [sText, n
71e0: 31 5d 20 3d 20 74 68 69 73 2e 66 6f 72 6d 61 74  1] = this.format
71f0: 54 65 78 74 28 73 54 65 78 74 2c 20 22 6e 62 73  Text(sText, "nbs
7200: 70 5f 62 65 66 6f 72 65 5f 70 75 6e 63 74 75 61  p_before_punctua
7210: 74 69 6f 6e 22 29 3b 0a 20 20 20 20 20 20 20 20  tion");.        
7220: 20 20 20 20 20 20 20 20 20 20 20 20 5b 73 54 65              [sTe
7230: 78 74 2c 20 6e 32 5d 20 3d 20 74 68 69 73 2e 66  xt, n2] = this.f
7240: 6f 72 6d 61 74 54 65 78 74 28 73 54 65 78 74 2c  ormatText(sText,
7250: 20 22 6e 62 73 70 5f 72 65 70 61 69 72 22 29 3b   "nbsp_repair");
7260: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7270: 20 20 20 20 20 64 6f 63 75 6d 65 6e 74 2e 67 65       document.ge
7280: 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 72 65  tElementById('re
7290: 73 5f 6f 5f 6e 62 73 70 5f 62 65 66 6f 72 65 5f  s_o_nbsp_before_
72a0: 70 75 6e 63 74 75 61 74 69 6f 6e 27 29 2e 74 65  punctuation').te
72b0: 78 74 43 6f 6e 74 65 6e 74 20 3d 20 6e 31 20 2d  xtContent = n1 -
72c0: 20 6e 32 3b 0a 20 20 20 20 20 20 20 20 20 20 20   n2;.           
72d0: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20       }.         
72e0: 20 20 20 20 20 20 20 69 66 20 28 64 6f 63 75 6d         if (docum
72f0: 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79  ent.getElementBy
7300: 49 64 28 22 6f 5f 6e 62 73 70 5f 77 69 74 68 69  Id("o_nbsp_withi
7310: 6e 5f 71 75 6f 74 61 74 69 6f 6e 5f 6d 61 72 6b  n_quotation_mark
7320: 73 22 29 2e 63 68 65 63 6b 65 64 29 20 7b 0a 20  s").checked) {. 
7330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7340: 20 20 20 5b 73 54 65 78 74 2c 20 6e 31 5d 20 3d     [sText, n1] =
7350: 20 74 68 69 73 2e 66 6f 72 6d 61 74 54 65 78 74   this.formatText
7360: 28 73 54 65 78 74 2c 20 22 6e 62 73 70 5f 77 69  (sText, "nbsp_wi
7370: 74 68 69 6e 5f 71 75 6f 74 61 74 69 6f 6e 5f 6d  thin_quotation_m
7380: 61 72 6b 73 22 29 3b 0a 20 20 20 20 20 20 20 20  arks");.        
7390: 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 63 75              docu
73a0: 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42  ment.getElementB
73b0: 79 49 64 28 27 72 65 73 5f 6f 5f 6e 62 73 70 5f  yId('res_o_nbsp_
73c0: 77 69 74 68 69 6e 5f 71 75 6f 74 61 74 69 6f 6e  within_quotation
73d0: 5f 6d 61 72 6b 73 27 29 2e 74 65 78 74 43 6f 6e  _marks').textCon
73e0: 74 65 6e 74 20 3d 20 6e 31 3b 0a 20 20 20 20 20  tent = n1;.     
73f0: 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20             }.   
7400: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
7410: 28 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65  (document.getEle
7420: 6d 65 6e 74 42 79 49 64 28 22 6f 5f 6e 62 73 70  mentById("o_nbsp
7430: 5f 62 65 66 6f 72 65 5f 73 79 6d 62 6f 6c 22 29  _before_symbol")
7440: 2e 63 68 65 63 6b 65 64 29 20 7b 0a 20 20 20 20  .checked) {.    
7450: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7460: 5b 73 54 65 78 74 2c 20 6e 31 5d 20 3d 20 74 68  [sText, n1] = th
7470: 69 73 2e 66 6f 72 6d 61 74 54 65 78 74 28 73 54  is.formatText(sT
7480: 65 78 74 2c 20 22 6e 62 73 70 5f 62 65 66 6f 72  ext, "nbsp_befor
7490: 65 5f 73 79 6d 62 6f 6c 22 29 3b 0a 20 20 20 20  e_symbol");.    
74a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
74b0: 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d  document.getElem
74c0: 65 6e 74 42 79 49 64 28 27 72 65 73 5f 6f 5f 6e  entById('res_o_n
74d0: 62 73 70 5f 62 65 66 6f 72 65 5f 73 79 6d 62 6f  bsp_before_symbo
74e0: 6c 27 29 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20  l').textContent 
74f0: 3d 20 6e 31 3b 0a 20 20 20 20 20 20 20 20 20 20  = n1;.          
7500: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20        }.        
7510: 20 20 20 20 20 20 20 20 69 66 20 28 64 6f 63 75          if (docu
7520: 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42  ment.getElementB
7530: 79 49 64 28 22 6f 5f 6e 62 73 70 5f 77 69 74 68  yId("o_nbsp_with
7540: 69 6e 5f 6e 75 6d 62 65 72 73 22 29 2e 63 68 65  in_numbers").che
7550: 63 6b 65 64 29 20 7b 0a 20 20 20 20 20 20 20 20  cked) {.        
7560: 20 20 20 20 20 20 20 20 20 20 20 20 5b 73 54 65              [sTe
7570: 78 74 2c 20 6e 31 5d 20 3d 20 74 68 69 73 2e 66  xt, n1] = this.f
7580: 6f 72 6d 61 74 54 65 78 74 28 73 54 65 78 74 2c  ormatText(sText,
7590: 20 22 6e 62 73 70 5f 77 69 74 68 69 6e 5f 6e 75   "nbsp_within_nu
75a0: 6d 62 65 72 73 22 29 3b 0a 20 20 20 20 20 20 20  mbers");.       
75b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 63               doc
75c0: 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74  ument.getElement
75d0: 42 79 49 64 28 27 72 65 73 5f 6f 5f 6e 62 73 70  ById('res_o_nbsp
75e0: 5f 77 69 74 68 69 6e 5f 6e 75 6d 62 65 72 73 27  _within_numbers'
75f0: 29 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20  ).textContent = 
7600: 6e 31 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  n1;.            
7610: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20      }.          
7620: 20 20 20 20 20 20 69 66 20 28 64 6f 63 75 6d 65        if (docume
7630: 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49  nt.getElementByI
7640: 64 28 22 6f 5f 6e 62 73 70 5f 62 65 66 6f 72 65  d("o_nbsp_before
7650: 5f 75 6e 69 74 73 22 29 2e 63 68 65 63 6b 65 64  _units").checked
7660: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ) {.            
7670: 20 20 20 20 20 20 20 20 5b 73 54 65 78 74 2c 20          [sText, 
7680: 6e 31 5d 20 3d 20 74 68 69 73 2e 66 6f 72 6d 61  n1] = this.forma
7690: 74 54 65 78 74 28 73 54 65 78 74 2c 20 22 6e 62  tText(sText, "nb
76a0: 73 70 5f 62 65 66 6f 72 65 5f 75 6e 69 74 73 22  sp_before_units"
76b0: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  );.             
76c0: 20 20 20 20 20 20 20 64 6f 63 75 6d 65 6e 74 2e         document.
76d0: 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27  getElementById('
76e0: 72 65 73 5f 6f 5f 6e 62 73 70 5f 62 65 66 6f 72  res_o_nbsp_befor
76f0: 65 5f 75 6e 69 74 73 27 29 2e 74 65 78 74 43 6f  e_units').textCo
7700: 6e 74 65 6e 74 20 3d 20 6e 31 3b 0a 20 20 20 20  ntent = n1;.    
7710: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20              }.  
7720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 6f                do
7730: 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e  cument.getElemen
7740: 74 42 79 49 64 28 22 6f 5f 67 72 6f 75 70 5f 6e  tById("o_group_n
7750: 62 73 70 22 29 2e 63 68 65 63 6b 65 64 20 3d 20  bsp").checked = 
7760: 66 61 6c 73 65 3b 0a 20 20 20 20 20 20 20 20 20  false;.         
7770: 20 20 20 20 20 20 20 74 68 69 73 2e 73 77 69 74         this.swit
7780: 63 68 47 72 6f 75 70 28 22 6f 5f 67 72 6f 75 70  chGroup("o_group
7790: 5f 6e 62 73 70 22 29 3b 0a 20 20 20 20 20 20 20  _nbsp");.       
77a0: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20       }.         
77b0: 20 20 20 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45     document.getE
77c0: 6c 65 6d 65 6e 74 42 79 49 64 28 27 70 72 6f 67  lementById('prog
77d0: 72 65 73 73 62 61 72 27 29 2e 76 61 6c 75 65 20  ressbar').value 
77e0: 3d 20 32 3b 0a 0a 20 20 20 20 20 20 20 20 20 20  = 2;..          
77f0: 20 20 2f 2f 20 65 73 70 61 63 65 73 20 6d 61 6e    // espaces man
7800: 71 75 61 6e 74 73 0a 20 20 20 20 20 20 20 20 20  quants.         
7810: 20 20 20 69 66 20 28 64 6f 63 75 6d 65 6e 74 2e     if (document.
7820: 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 22  getElementById("
7830: 6f 5f 67 72 6f 75 70 5f 74 79 70 6f 22 29 2e 63  o_group_typo").c
7840: 68 65 63 6b 65 64 29 20 7b 0a 20 20 20 20 20 20  hecked) {.      
7850: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64 6f            if (do
7860: 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e  cument.getElemen
7870: 74 42 79 49 64 28 22 6f 5f 74 73 5f 75 6e 69 74  tById("o_ts_unit
7880: 73 22 29 2e 63 68 65 63 6b 65 64 29 20 7b 0a 20  s").checked) {. 
7890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
78a0: 20 20 20 5b 73 54 65 78 74 2c 20 6e 31 5d 20 3d     [sText, n1] =
78b0: 20 74 68 69 73 2e 66 6f 72 6d 61 74 54 65 78 74   this.formatText
78c0: 28 73 54 65 78 74 2c 20 22 74 73 5f 75 6e 69 74  (sText, "ts_unit
78d0: 73 22 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20  s");.           
78e0: 20 20 20 20 20 20 20 20 20 64 6f 63 75 6d 65 6e           documen
78f0: 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64  t.getElementById
7900: 28 27 72 65 73 5f 6f 5f 74 73 5f 75 6e 69 74 73  ('res_o_ts_units
7910: 27 29 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d  ').textContent =
7920: 20 6e 31 3b 0a 20 20 20 20 20 20 20 20 20 20 20   n1;.           
7930: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20       }.         
7940: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20     }.           
7950: 20 69 66 20 28 64 6f 63 75 6d 65 6e 74 2e 67 65   if (document.ge
7960: 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 22 6f 5f  tElementById("o_
7970: 67 72 6f 75 70 5f 73 70 61 63 65 22 29 2e 63 68  group_space").ch
7980: 65 63 6b 65 64 29 20 7b 0a 20 20 20 20 20 20 20  ecked) {.       
7990: 20 20 20 20 20 20 20 20 20 69 66 20 28 64 6f 63           if (doc
79a0: 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74  ument.getElement
79b0: 42 79 49 64 28 22 6f 5f 61 64 64 5f 73 70 61 63  ById("o_add_spac
79c0: 65 5f 61 66 74 65 72 5f 70 75 6e 63 74 75 61 74  e_after_punctuat
79d0: 69 6f 6e 22 29 2e 63 68 65 63 6b 65 64 29 20 7b  ion").checked) {
79e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
79f0: 20 20 20 20 20 5b 73 54 65 78 74 2c 20 6e 31 5d       [sText, n1]
7a00: 20 3d 20 74 68 69 73 2e 66 6f 72 6d 61 74 54 65   = this.formatTe
7a10: 78 74 28 73 54 65 78 74 2c 20 22 61 64 64 5f 73  xt(sText, "add_s
7a20: 70 61 63 65 5f 61 66 74 65 72 5f 70 75 6e 63 74  pace_after_punct
7a30: 75 61 74 69 6f 6e 22 29 3b 0a 20 20 20 20 20 20  uation");.      
7a40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5b 73                [s
7a50: 54 65 78 74 2c 20 6e 32 5d 20 3d 20 74 68 69 73  Text, n2] = this
7a60: 2e 66 6f 72 6d 61 74 54 65 78 74 28 73 54 65 78  .formatText(sTex
7a70: 74 2c 20 22 61 64 64 5f 73 70 61 63 65 5f 72 65  t, "add_space_re
7a80: 70 61 69 72 22 29 3b 0a 20 20 20 20 20 20 20 20  pair");.        
7a90: 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 63 75              docu
7aa0: 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42  ment.getElementB
7ab0: 79 49 64 28 27 72 65 73 5f 6f 5f 61 64 64 5f 73  yId('res_o_add_s
7ac0: 70 61 63 65 5f 61 66 74 65 72 5f 70 75 6e 63 74  pace_after_punct
7ad0: 75 61 74 69 6f 6e 27 29 2e 74 65 78 74 43 6f 6e  uation').textCon
7ae0: 74 65 6e 74 20 3d 20 6e 31 20 2d 20 6e 32 3b 0a  tent = n1 - n2;.
7af0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7b00: 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  }.              
7b10: 20 20 69 66 20 28 64 6f 63 75 6d 65 6e 74 2e 67    if (document.g
7b20: 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 22 6f  etElementById("o
7b30: 5f 61 64 64 5f 73 70 61 63 65 5f 61 72 6f 75 6e  _add_space_aroun
7b40: 64 5f 68 79 70 68 65 6e 73 22 29 2e 63 68 65 63  d_hyphens").chec
7b50: 6b 65 64 29 20 7b 0a 20 20 20 20 20 20 20 20 20  ked) {.         
7b60: 20 20 20 20 20 20 20 20 20 20 20 5b 73 54 65 78             [sTex
7b70: 74 2c 20 6e 31 5d 20 3d 20 74 68 69 73 2e 66 6f  t, n1] = this.fo
7b80: 72 6d 61 74 54 65 78 74 28 73 54 65 78 74 2c 20  rmatText(sText, 
7b90: 22 61 64 64 5f 73 70 61 63 65 5f 61 72 6f 75 6e  "add_space_aroun
7ba0: 64 5f 68 79 70 68 65 6e 73 22 29 3b 0a 20 20 20  d_hyphens");.   
7bb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7bc0: 20 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65   document.getEle
7bd0: 6d 65 6e 74 42 79 49 64 28 27 72 65 73 5f 6f 5f  mentById('res_o_
7be0: 61 64 64 5f 73 70 61 63 65 5f 61 72 6f 75 6e 64  add_space_around
7bf0: 5f 68 79 70 68 65 6e 73 27 29 2e 74 65 78 74 43  _hyphens').textC
7c00: 6f 6e 74 65 6e 74 20 3d 20 6e 31 3b 0a 20 20 20  ontent = n1;.   
7c10: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20               }. 
7c20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64                 d
7c30: 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65  ocument.getEleme
7c40: 6e 74 42 79 49 64 28 22 6f 5f 67 72 6f 75 70 5f  ntById("o_group_
7c50: 73 70 61 63 65 22 29 2e 63 68 65 63 6b 65 64 20  space").checked 
7c60: 3d 20 66 61 6c 73 65 3b 0a 20 20 20 20 20 20 20  = false;.       
7c70: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 73 77           this.sw
7c80: 69 74 63 68 47 72 6f 75 70 28 22 6f 5f 67 72 6f  itchGroup("o_gro
7c90: 75 70 5f 73 70 61 63 65 22 29 3b 0a 20 20 20 20  up_space");.    
7ca0: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20          }.      
7cb0: 20 20 20 20 20 20 64 6f 63 75 6d 65 6e 74 2e 67        document.g
7cc0: 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 70  etElementById('p
7cd0: 72 6f 67 72 65 73 73 62 61 72 27 29 2e 76 61 6c  rogressbar').val
7ce0: 75 65 20 3d 20 33 3b 0a 0a 20 20 20 20 20 20 20  ue = 3;..       
7cf0: 20 20 20 20 20 2f 2f 20 73 75 70 70 72 65 73 73       // suppress
7d00: 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20  ion.            
7d10: 69 66 20 28 64 6f 63 75 6d 65 6e 74 2e 67 65 74  if (document.get
7d20: 45 6c 65 6d 65 6e 74 42 79 49 64 28 22 6f 5f 67  ElementById("o_g
7d30: 72 6f 75 70 5f 64 65 6c 65 74 65 22 29 2e 63 68  roup_delete").ch
7d40: 65 63 6b 65 64 29 20 7b 0a 20 20 20 20 20 20 20  ecked) {.       
7d50: 20 20 20 20 20 20 20 20 20 69 66 20 28 64 6f 63           if (doc
7d60: 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74  ument.getElement
7d70: 42 79 49 64 28 22 6f 5f 65 72 61 73 65 5f 6e 6f  ById("o_erase_no
7d80: 6e 5f 62 72 65 61 6b 69 6e 67 5f 68 79 70 68 65  n_breaking_hyphe
7d90: 6e 73 22 29 2e 63 68 65 63 6b 65 64 29 20 7b 0a  ns").checked) {.
7da0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7db0: 20 20 20 20 5b 73 54 65 78 74 2c 20 6e 31 5d 20      [sText, n1] 
7dc0: 3d 20 74 68 69 73 2e 66 6f 72 6d 61 74 54 65 78  = this.formatTex
7dd0: 74 28 73 54 65 78 74 2c 20 22 65 72 61 73 65 5f  t(sText, "erase_
7de0: 6e 6f 6e 5f 62 72 65 61 6b 69 6e 67 5f 68 79 70  non_breaking_hyp
7df0: 68 65 6e 73 22 29 3b 0a 20 20 20 20 20 20 20 20  hens");.        
7e00: 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 63 75              docu
7e10: 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42  ment.getElementB
7e20: 79 49 64 28 27 72 65 73 5f 6f 5f 65 72 61 73 65  yId('res_o_erase
7e30: 5f 6e 6f 6e 5f 62 72 65 61 6b 69 6e 67 5f 68 79  _non_breaking_hy
7e40: 70 68 65 6e 73 27 29 2e 74 65 78 74 43 6f 6e 74  phens').textCont
7e50: 65 6e 74 20 3d 20 6e 31 3b 0a 20 20 20 20 20 20  ent = n1;.      
7e60: 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20            }.    
7e70: 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 63 75              docu
7e80: 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42  ment.getElementB
7e90: 79 49 64 28 22 6f 5f 67 72 6f 75 70 5f 64 65 6c  yId("o_group_del
7ea0: 65 74 65 22 29 2e 63 68 65 63 6b 65 64 20 3d 20  ete").checked = 
7eb0: 66 61 6c 73 65 3b 0a 20 20 20 20 20 20 20 20 20  false;.         
7ec0: 20 20 20 20 20 20 20 74 68 69 73 2e 73 77 69 74         this.swit
7ed0: 63 68 47 72 6f 75 70 28 22 6f 5f 67 72 6f 75 70  chGroup("o_group
7ee0: 5f 64 65 6c 65 74 65 22 29 3b 0a 20 20 20 20 20  _delete");.     
7ef0: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20         }.       
7f00: 20 20 20 20 20 64 6f 63 75 6d 65 6e 74 2e 67 65       document.ge
7f10: 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 70 72  tElementById('pr
7f20: 6f 67 72 65 73 73 62 61 72 27 29 2e 76 61 6c 75  ogressbar').valu
7f30: 65 20 3d 20 34 3b 0a 0a 20 20 20 20 20 20 20 20  e = 4;..        
7f40: 20 20 20 20 2f 2f 20 73 69 67 6e 65 73 20 74 79      // signes ty
7f50: 70 6f 67 72 61 70 68 69 71 75 65 73 0a 20 20 20  pographiques.   
7f60: 20 20 20 20 20 20 20 20 20 69 66 20 28 64 6f 63           if (doc
7f70: 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74  ument.getElement
7f80: 42 79 49 64 28 22 6f 5f 67 72 6f 75 70 5f 74 79  ById("o_group_ty
7f90: 70 6f 22 29 2e 63 68 65 63 6b 65 64 29 20 7b 0a  po").checked) {.
7fa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7fb0: 69 66 20 28 64 6f 63 75 6d 65 6e 74 2e 67 65 74  if (document.get
7fc0: 45 6c 65 6d 65 6e 74 42 79 49 64 28 22 6f 5f 74  ElementById("o_t
7fd0: 73 5f 61 70 6f 73 74 72 6f 70 68 65 22 29 2e 63  s_apostrophe").c
7fe0: 68 65 63 6b 65 64 29 20 7b 0a 20 20 20 20 20 20  hecked) {.      
7ff0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5b 73                [s
8000: 54 65 78 74 2c 20 6e 31 5d 20 3d 20 74 68 69 73  Text, n1] = this
8010: 2e 66 6f 72 6d 61 74 54 65 78 74 28 73 54 65 78  .formatText(sTex
8020: 74 2c 20 22 74 73 5f 61 70 6f 73 74 72 6f 70 68  t, "ts_apostroph
8030: 65 22 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20  e");.           
8040: 20 20 20 20 20 20 20 20 20 64 6f 63 75 6d 65 6e           documen
8050: 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64  t.getElementById
8060: 28 27 72 65 73 5f 6f 5f 74 73 5f 61 70 6f 73 74  ('res_o_ts_apost
8070: 72 6f 70 68 65 27 29 2e 74 65 78 74 43 6f 6e 74  rophe').textCont
8080: 65 6e 74 20 3d 20 6e 31 3b 0a 20 20 20 20 20 20  ent = n1;.      
8090: 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20            }.    
80a0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
80b0: 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d  document.getElem
80c0: 65 6e 74 42 79 49 64 28 22 6f 5f 74 73 5f 65 6c  entById("o_ts_el
80d0: 6c 69 70 73 69 73 22 29 2e 63 68 65 63 6b 65 64  lipsis").checked
80e0: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ) {.            
80f0: 20 20 20 20 20 20 20 20 5b 73 54 65 78 74 2c 20          [sText, 
8100: 6e 31 5d 20 3d 20 74 68 69 73 2e 66 6f 72 6d 61  n1] = this.forma
8110: 74 54 65 78 74 28 73 54 65 78 74 2c 20 22 74 73  tText(sText, "ts
8120: 5f 65 6c 6c 69 70 73 69 73 22 29 3b 0a 20 20 20  _ellipsis");.   
8130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8140: 20 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65   document.getEle
8150: 6d 65 6e 74 42 79 49 64 28 27 72 65 73 5f 6f 5f  mentById('res_o_
8160: 74 73 5f 65 6c 6c 69 70 73 69 73 27 29 2e 74 65  ts_ellipsis').te
8170: 78 74 43 6f 6e 74 65 6e 74 20 3d 20 6e 31 3b 0a  xtContent = n1;.
8180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8190: 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  }.              
81a0: 20 20 69 66 20 28 64 6f 63 75 6d 65 6e 74 2e 67    if (document.g
81b0: 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 22 6f  etElementById("o
81c0: 5f 74 73 5f 64 61 73 68 5f 73 74 61 72 74 22 29  _ts_dash_start")
81d0: 2e 63 68 65 63 6b 65 64 29 20 7b 0a 20 20 20 20  .checked) {.    
81e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
81f0: 69 66 20 28 64 6f 63 75 6d 65 6e 74 2e 67 65 74  if (document.get
8200: 45 6c 65 6d 65 6e 74 42 79 49 64 28 22 6f 5f 74  ElementById("o_t
8210: 73 5f 6d 5f 64 61 73 68 5f 73 74 61 72 74 22 29  s_m_dash_start")
8220: 2e 63 68 65 63 6b 65 64 29 20 7b 0a 20 20 20 20  .checked) {.    
8230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8240: 20 20 20 20 5b 73 54 65 78 74 2c 20 6e 31 5d 20      [sText, n1] 
8250: 3d 20 74 68 69 73 2e 66 6f 72 6d 61 74 54 65 78  = this.formatTex
8260: 74 28 73 54 65 78 74 2c 20 22 74 73 5f 6d 5f 64  t(sText, "ts_m_d
8270: 61 73 68 5f 73 74 61 72 74 22 29 3b 0a 20 20 20  ash_start");.   
8280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8290: 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20   } else {.      
82a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
82b0: 20 20 5b 73 54 65 78 74 2c 20 6e 31 5d 20 3d 20    [sText, n1] = 
82c0: 74 68 69 73 2e 66 6f 72 6d 61 74 54 65 78 74 28  this.formatText(
82d0: 73 54 65 78 74 2c 20 22 74 73 5f 6e 5f 64 61 73  sText, "ts_n_das
82e0: 68 5f 73 74 61 72 74 22 29 3b 0a 20 20 20 20 20  h_start");.     
82f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
8300: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8310: 20 20 20 20 20 64 6f 63 75 6d 65 6e 74 2e 67 65       document.ge
8320: 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 72 65  tElementById('re
8330: 73 5f 6f 5f 74 73 5f 64 61 73 68 5f 73 74 61 72  s_o_ts_dash_star
8340: 74 27 29 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20  t').textContent 
8350: 3d 20 6e 31 3b 0a 20 20 20 20 20 20 20 20 20 20  = n1;.          
8360: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20        }.        
8370: 20 20 20 20 20 20 20 20 69 66 20 28 64 6f 63 75          if (docu
8380: 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42  ment.getElementB
8390: 79 49 64 28 22 6f 5f 74 73 5f 64 61 73 68 5f 6d  yId("o_ts_dash_m
83a0: 69 64 64 6c 65 22 29 2e 63 68 65 63 6b 65 64 29  iddle").checked)
83b0: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   {.             
83c0: 20 20 20 20 20 20 20 69 66 20 28 64 6f 63 75 6d         if (docum
83d0: 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79  ent.getElementBy
83e0: 49 64 28 22 6f 5f 74 73 5f 6d 5f 64 61 73 68 5f  Id("o_ts_m_dash_
83f0: 6d 69 64 64 6c 65 22 29 2e 63 68 65 63 6b 65 64  middle").checked
8400: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ) {.            
8410: 20 20 20 20 20 20 20 20 20 20 20 20 5b 73 54 65              [sTe
8420: 78 74 2c 20 6e 31 5d 20 3d 20 74 68 69 73 2e 66  xt, n1] = this.f
8430: 6f 72 6d 61 74 54 65 78 74 28 73 54 65 78 74 2c  ormatText(sText,
8440: 20 22 74 73 5f 6d 5f 64 61 73 68 5f 6d 69 64 64   "ts_m_dash_midd
8450: 6c 65 22 29 3b 0a 20 20 20 20 20 20 20 20 20 20  le");.          
8460: 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65            } else
8470: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   {.             
8480: 20 20 20 20 20 20 20 20 20 20 20 5b 73 54 65 78             [sTex
8490: 74 2c 20 6e 31 5d 20 3d 20 74 68 69 73 2e 66 6f  t, n1] = this.fo
84a0: 72 6d 61 74 54 65 78 74 28 73 54 65 78 74 2c 20  rmatText(sText, 
84b0: 22 74 73 5f 6e 5f 64 61 73 68 5f 6d 69 64 64 6c  "ts_n_dash_middl
84c0: 65 22 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20  e");.           
84d0: 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20           }.     
84e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64                 d
84f0: 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65  ocument.getEleme
8500: 6e 74 42 79 49 64 28 27 72 65 73 5f 6f 5f 74 73  ntById('res_o_ts
8510: 5f 64 61 73 68 5f 6d 69 64 64 6c 65 27 29 2e 74  _dash_middle').t
8520: 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20 6e 31 3b  extContent = n1;
8530: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8540: 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   }.             
8550: 20 20 20 69 66 20 28 64 6f 63 75 6d 65 6e 74 2e     if (document.
8560: 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 22  getElementById("
8570: 6f 5f 74 73 5f 71 75 6f 74 61 74 69 6f 6e 5f 6d  o_ts_quotation_m
8580: 61 72 6b 73 22 29 2e 63 68 65 63 6b 65 64 29 20  arks").checked) 
8590: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  {.              
85a0: 20 20 20 20 20 20 5b 73 54 65 78 74 2c 20 6e 31        [sText, n1
85b0: 5d 20 3d 20 74 68 69 73 2e 66 6f 72 6d 61 74 54  ] = this.formatT
85c0: 65 78 74 28 73 54 65 78 74 2c 20 22 74 73 5f 71  ext(sText, "ts_q
85d0: 75 6f 74 61 74 69 6f 6e 5f 6d 61 72 6b 73 22 29  uotation_marks")
85e0: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ;.              
85f0: 20 20 20 20 20 20 64 6f 63 75 6d 65 6e 74 2e 67        document.g
8600: 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 72  etElementById('r
8610: 65 73 5f 6f 5f 74 73 5f 71 75 6f 74 61 74 69 6f  es_o_ts_quotatio
8620: 6e 5f 6d 61 72 6b 73 27 29 2e 74 65 78 74 43 6f  n_marks').textCo
8630: 6e 74 65 6e 74 20 3d 20 6e 31 3b 0a 20 20 20 20  ntent = n1;.    
8640: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20              }.  
8650: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
8660: 20 28 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c   (document.getEl
8670: 65 6d 65 6e 74 42 79 49 64 28 22 6f 5f 74 73 5f  ementById("o_ts_
8680: 73 70 65 6c 6c 22 29 2e 63 68 65 63 6b 65 64 29  spell").checked)
8690: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   {.             
86a0: 20 20 20 20 20 20 20 5b 73 54 65 78 74 2c 20 6e         [sText, n
86b0: 31 5d 20 3d 20 74 68 69 73 2e 66 6f 72 6d 61 74  1] = this.format
86c0: 54 65 78 74 28 73 54 65 78 74 2c 20 22 74 73 5f  Text(sText, "ts_
86d0: 73 70 65 6c 6c 22 29 3b 0a 20 20 20 20 20 20 20  spell");.       
86e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 63               doc
86f0: 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74  ument.getElement
8700: 42 79 49 64 28 27 72 65 73 5f 6f 5f 74 73 5f 73  ById('res_o_ts_s
8710: 70 65 6c 6c 27 29 2e 74 65 78 74 43 6f 6e 74 65  pell').textConte
8720: 6e 74 20 3d 20 6e 31 3b 0a 20 20 20 20 20 20 20  nt = n1;.       
8730: 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20           }.     
8740: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64             if (d
8750: 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65  ocument.getEleme
8760: 6e 74 42 79 49 64 28 22 6f 5f 74 73 5f 6c 69 67  ntById("o_ts_lig
8770: 61 74 75 72 65 22 29 2e 63 68 65 63 6b 65 64 29  ature").checked)
8780: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   {.             
8790: 20 20 20 20 20 20 20 2f 2f 20 6c 69 67 61 74 75         // ligatu
87a0: 72 65 73 20 74 79 70 6f 67 72 61 70 68 69 71 75  res typographiqu
87b0: 65 73 20 3a 20 66 69 2c 20 66 6c 2c 20 66 66 2c  es : fi, fl, ff,
87c0: 20 66 66 69 2c 20 66 66 6c 2c 20 66 74 2c 20 73   ffi, ffl, ft, s
87d0: 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  t.              
87e0: 20 20 20 20 20 20 69 66 20 28 64 6f 63 75 6d 65        if (docume
87f0: 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49  nt.getElementByI
8800: 64 28 22 6f 5f 74 73 5f 6c 69 67 61 74 75 72 65  d("o_ts_ligature
8810: 5f 64 6f 22 29 2e 63 68 65 63 6b 65 64 29 20 7b  _do").checked) {
8820: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8830: 20 20 20 20 20 20 20 20 20 69 66 20 28 64 6f 63           if (doc
8840: 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74  ument.getElement
8850: 42 79 49 64 28 22 6f 5f 74 73 5f 6c 69 67 61 74  ById("o_ts_ligat
8860: 75 72 65 5f 66 66 69 22 29 2e 63 68 65 63 6b 65  ure_ffi").checke
8870: 64 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  d) {.           
8880: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8890: 20 5b 73 54 65 78 74 2c 20 6e 31 5d 20 3d 20 74   [sText, n1] = t
88a0: 68 69 73 2e 66 6f 72 6d 61 74 54 65 78 74 28 73  his.formatText(s
88b0: 54 65 78 74 2c 20 22 74 73 5f 6c 69 67 61 74 75  Text, "ts_ligatu
88c0: 72 65 5f 66 66 69 5f 64 6f 22 29 3b 0a 20 20 20  re_ffi_do");.   
88d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
88e0: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20       }.         
88f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
8900: 66 20 28 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45  f (document.getE
8910: 6c 65 6d 65 6e 74 42 79 49 64 28 22 6f 5f 74 73  lementById("o_ts
8920: 5f 6c 69 67 61 74 75 72 65 5f 66 66 6c 22 29 2e  _ligature_ffl").
8930: 63 68 65 63 6b 65 64 29 20 7b 0a 20 20 20 20 20  checked) {.     
8940: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8950: 20 20 20 20 20 20 20 5b 73 54 65 78 74 2c 20 6e         [sText, n
8960: 32 5d 20 3d 20 74 68 69 73 2e 66 6f 72 6d 61 74  2] = this.format
8970: 54 65 78 74 28 73 54 65 78 74 2c 20 22 74 73 5f  Text(sText, "ts_
8980: 6c 69 67 61 74 75 72 65 5f 66 66 6c 5f 64 6f 22  ligature_ffl_do"
8990: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  );.             
89a0: 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20             }.   
89b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
89c0: 20 20 20 20 20 69 66 20 28 64 6f 63 75 6d 65 6e       if (documen
89d0: 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64  t.getElementById
89e0: 28 22 6f 5f 74 73 5f 6c 69 67 61 74 75 72 65 5f  ("o_ts_ligature_
89f0: 66 69 22 29 2e 63 68 65 63 6b 65 64 29 20 7b 0a  fi").checked) {.
8a00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8a10: 20 20 20 20 20 20 20 20 20 20 20 20 5b 73 54 65              [sTe
8a20: 78 74 2c 20 6e 33 5d 20 3d 20 74 68 69 73 2e 66  xt, n3] = this.f
8a30: 6f 72 6d 61 74 54 65 78 74 28 73 54 65 78 74 2c  ormatText(sText,
8a40: 20 22 74 73 5f 6c 69 67 61 74 75 72 65 5f 66 69   "ts_ligature_fi
8a50: 5f 64 6f 22 29 3b 0a 20 20 20 20 20 20 20 20 20  _do");.         
8a60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
8a70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8a80: 20 20 20 20 20 20 20 20 20 69 66 20 28 64 6f 63           if (doc
8a90: 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74  ument.getElement
8aa0: 42 79 49 64 28 22 6f 5f 74 73 5f 6c 69 67 61 74  ById("o_ts_ligat
8ab0: 75 72 65 5f 66 6c 22 29 2e 63 68 65 63 6b 65 64  ure_fl").checked
8ac0: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ) {.            
8ad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8ae0: 5b 73 54 65 78 74 2c 20 6e 34 5d 20 3d 20 74 68  [sText, n4] = th
8af0: 69 73 2e 66 6f 72 6d 61 74 54 65 78 74 28 73 54  is.formatText(sT
8b00: 65 78 74 2c 20 22 74 73 5f 6c 69 67 61 74 75 72  ext, "ts_ligatur
8b10: 65 5f 66 6c 5f 64 6f 22 29 3b 0a 20 20 20 20 20  e_fl_do");.     
8b20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8b30: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20     }.           
8b40: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
8b50: 28 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65  (document.getEle
8b60: 6d 65 6e 74 42 79 49 64 28 22 6f 5f 74 73 5f 6c  mentById("o_ts_l
8b70: 69 67 61 74 75 72 65 5f 66 66 22 29 2e 63 68 65  igature_ff").che
8b80: 63 6b 65 64 29 20 7b 0a 20 20 20 20 20 20 20 20  cked) {.        
8b90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8ba0: 20 20 20 20 5b 73 54 65 78 74 2c 20 6e 35 5d 20      [sText, n5] 
8bb0: 3d 20 74 68 69 73 2e 66 6f 72 6d 61 74 54 65 78  = this.formatTex
8bc0: 74 28 73 54 65 78 74 2c 20 22 74 73 5f 6c 69 67  t(sText, "ts_lig
8bd0: 61 74 75 72 65 5f 66 66 5f 64 6f 22 29 3b 0a 20  ature_ff_do");. 
8be0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8bf0: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20         }.       
8c00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8c10: 20 69 66 20 28 64 6f 63 75 6d 65 6e 74 2e 67 65   if (document.ge
8c20: 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 22 6f 5f  tElementById("o_
8c30: 74 73 5f 6c 69 67 61 74 75 72 65 5f 66 74 22 29  ts_ligature_ft")
8c40: 2e 63 68 65 63 6b 65 64 29 20 7b 0a 20 20 20 20  .checked) {.    
8c50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8c60: 20 20 20 20 20 20 20 20 5b 73 54 65 78 74 2c 20          [sText, 
8c70: 6e 36 5d 20 3d 20 74 68 69 73 2e 66 6f 72 6d 61  n6] = this.forma
8c80: 74 54 65 78 74 28 73 54 65 78 74 2c 20 22 74 73  tText(sText, "ts
8c90: 5f 6c 69 67 61 74 75 72 65 5f 66 74 5f 64 6f 22  _ligature_ft_do"
8ca0: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  );.             
8cb0: 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20             }.   
8cc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8cd0: 20 20 20 20 20 69 66 20 28 64 6f 63 75 6d 65 6e       if (documen
8ce0: 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64  t.getElementById
8cf0: 28 22 6f 5f 74 73 5f 6c 69 67 61 74 75 72 65 5f  ("o_ts_ligature_
8d00: 73 74 22 29 2e 63 68 65 63 6b 65 64 29 20 7b 0a  st").checked) {.
8d10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8d20: 20 20 20 20 20 20 20 20 20 20 20 20 5b 73 54 65              [sTe
8d30: 78 74 2c 20 6e 37 5d 20 3d 20 74 68 69 73 2e 66  xt, n7] = this.f
8d40: 6f 72 6d 61 74 54 65 78 74 28 73 54 65 78 74 2c  ormatText(sText,
8d50: 20 22 74 73 5f 6c 69 67 61 74 75 72 65 5f 73 74   "ts_ligature_st
8d60: 5f 64 6f 22 29 3b 0a 20 20 20 20 20 20 20 20 20  _do");.         
8d70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
8d80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8d90: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20       }.         
8da0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64             if (d
8db0: 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65  ocument.getEleme
8dc0: 6e 74 42 79 49 64 28 22 6f 5f 74 73 5f 6c 69 67  ntById("o_ts_lig
8dd0: 61 74 75 72 65 5f 75 6e 64 6f 22 29 2e 63 68 65  ature_undo").che
8de0: 63 6b 65 64 29 20 7b 0a 20 20 20 20 20 20 20 20  cked) {.        
8df0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8e00: 69 66 20 28 64 6f 63 75 6d 65 6e 74 2e 67 65 74  if (document.get
8e10: 45 6c 65 6d 65 6e 74 42 79 49 64 28 22 6f 5f 74  ElementById("o_t
8e20: 73 5f 6c 69 67 61 74 75 72 65 5f 66 66 69 22 29  s_ligature_ffi")
8e30: 2e 63 68 65 63 6b 65 64 29 20 7b 0a 20 20 20 20  .checked) {.    
8e40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8e50: 20 20 20 20 20 20 20 20 5b 73 54 65 78 74 2c 20          [sText, 
8e60: 6e 31 5d 20 3d 20 74 68 69 73 2e 66 6f 72 6d 61  n1] = this.forma
8e70: 74 54 65 78 74 28 73 54 65 78 74 2c 20 22 74 73  tText(sText, "ts
8e80: 5f 6c 69 67 61 74 75 72 65 5f 66 66 69 5f 75 6e  _ligature_ffi_un
8e90: 64 6f 22 29 3b 0a 20 20 20 20 20 20 20 20 20 20  do");.          
8ea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a                }.
8eb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8ec0: 20 20 20 20 20 20 20 20 69 66 20 28 64 6f 63 75          if (docu
8ed0: 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42  ment.getElementB
8ee0: 79 49 64 28 22 6f 5f 74 73 5f 6c 69 67 61 74 75  yId("o_ts_ligatu
8ef0: 72 65 5f 66 66 6c 22 29 2e 63 68 65 63 6b 65 64  re_ffl").checked
8f00: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ) {.            
8f10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8f20: 5b 73 54 65 78 74 2c 20 6e 32 5d 20 3d 20 74 68  [sText, n2] = th
8f30: 69 73 2e 66 6f 72 6d 61 74 54 65 78 74 28 73 54  is.formatText(sT
8f40: 65 78 74 2c 20 22 74 73 5f 6c 69 67 61 74 75 72  ext, "ts_ligatur
8f50: 65 5f 66 66 6c 5f 75 6e 64 6f 22 29 3b 0a 20 20  e_ffl_undo");.  
8f60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8f70: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20        }.        
8f80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8f90: 69 66 20 28 64 6f 63 75 6d 65 6e 74 2e 67 65 74  if (document.get
8fa0: 45 6c 65 6d 65 6e 74 42 79 49 64 28 22 6f 5f 74  ElementById("o_t
8fb0: 73 5f 6c 69 67 61 74 75 72 65 5f 66 69 22 29 2e  s_ligature_fi").
8fc0: 63 68 65 63 6b 65 64 29 20 7b 0a 20 20 20 20 20  checked) {.     
8fd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8fe0: 20 20 20 20 20 20 20 5b 73 54 65 78 74 2c 20 6e         [sText, n
8ff0: 33 5d 20 3d 20 74 68 69 73 2e 66 6f 72 6d 61 74  3] = this.format
9000: 54 65 78 74 28 73 54 65 78 74 2c 20 22 74 73 5f  Text(sText, "ts_
9010: 6c 69 67 61 74 75 72 65 5f 66 69 5f 75 6e 64 6f  ligature_fi_undo
9020: 22 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ");.            
9030: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20              }.  
9040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9050: 20 20 20 20 20 20 69 66 20 28 64 6f 63 75 6d 65        if (docume
9060: 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49  nt.getElementByI
9070: 64 28 22 6f 5f 74 73 5f 6c 69 67 61 74 75 72 65  d("o_ts_ligature
9080: 5f 66 6c 22 29 2e 63 68 65 63 6b 65 64 29 20 7b  _fl").checked) {
9090: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
90a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 5b 73 54               [sT
90b0: 65 78 74 2c 20 6e 34 5d 20 3d 20 74 68 69 73 2e  ext, n4] = this.
90c0: 66 6f 72 6d 61 74 54 65 78 74 28 73 54 65 78 74  formatText(sText
90d0: 2c 20 22 74 73 5f 6c 69 67 61 74 75 72 65 5f 66  , "ts_ligature_f
90e0: 6c 5f 75 6e 64 6f 22 29 3b 0a 20 20 20 20 20 20  l_undo");.      
90f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9100: 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20    }.            
9110: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
9120: 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d  document.getElem
9130: 65 6e 74 42 79 49 64 28 22 6f 5f 74 73 5f 6c 69  entById("o_ts_li
9140: 67 61 74 75 72 65 5f 66 66 22 29 2e 63 68 65 63  gature_ff").chec
9150: 6b 65 64 29 20 7b 0a 20 20 20 20 20 20 20 20 20  ked) {.         
9160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9170: 20 20 20 5b 73 54 65 78 74 2c 20 6e 35 5d 20 3d     [sText, n5] =
9180: 20 74 68 69 73 2e 66 6f 72 6d 61 74 54 65 78 74   this.formatText
9190: 28 73 54 65 78 74 2c 20 22 74 73 5f 6c 69 67 61  (sText, "ts_liga
91a0: 74 75 72 65 5f 66 66 5f 75 6e 64 6f 22 29 3b 0a  ture_ff_undo");.
91b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
91c0: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20          }.      
91d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
91e0: 20 20 69 66 20 28 64 6f 63 75 6d 65 6e 74 2e 67    if (document.g
91f0: 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 22 6f  etElementById("o
9200: 5f 74 73 5f 6c 69 67 61 74 75 72 65 5f 66 74 22  _ts_ligature_ft"
9210: 29 2e 63 68 65 63 6b 65 64 29 20 7b 0a 20 20 20  ).checked) {.   
9220: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9230: 20 20 20 20 20 20 20 20 20 5b 73 54 65 78 74 2c           [sText,
9240: 20 6e 36 5d 20 3d 20 74 68 69 73 2e 66 6f 72 6d   n6] = this.form
9250: 61 74 54 65 78 74 28 73 54 65 78 74 2c 20 22 74  atText(sText, "t
9260: 73 5f 6c 69 67 61 74 75 72 65 5f 66 74 5f 75 6e  s_ligature_ft_un
9270: 64 6f 22 29 3b 0a 20 20 20 20 20 20 20 20 20 20  do");.          
9280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a                }.
9290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
92a0: 20 20 20 20 20 20 20 20 69 66 20 28 64 6f 63 75          if (docu
92b0: 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42  ment.getElementB
92c0: 79 49 64 28 22 6f 5f 74 73 5f 6c 69 67 61 74 75  yId("o_ts_ligatu
92d0: 72 65 5f 73 74 22 29 2e 63 68 65 63 6b 65 64 29  re_st").checked)
92e0: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   {.             
92f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5b                 [
9300: 73 54 65 78 74 2c 20 6e 37 5d 20 3d 20 74 68 69  sText, n7] = thi
9310: 73 2e 66 6f 72 6d 61 74 54 65 78 74 28 73 54 65  s.formatText(sTe
9320: 78 74 2c 20 22 74 73 5f 6c 69 67 61 74 75 72 65  xt, "ts_ligature
9330: 5f 73 74 5f 75 6e 64 6f 22 29 3b 0a 20 20 20 20  _st_undo");.    
9340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9350: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20      }.          
9360: 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20            }.    
9370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9380: 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d  document.getElem
9390: 65 6e 74 42 79 49 64 28 27 72 65 73 5f 6f 5f 74  entById('res_o_t
93a0: 73 5f 6c 69 67 61 74 75 72 65 27 29 2e 74 65 78  s_ligature').tex
93b0: 74 43 6f 6e 74 65 6e 74 20 3d 20 6e 31 20 2b 20  tContent = n1 + 
93c0: 6e 32 20 2b 20 6e 33 20 2b 20 6e 34 20 2b 20 6e  n2 + n3 + n4 + n
93d0: 35 20 2b 20 6e 36 20 2b 20 6e 37 3b 0a 20 20 20  5 + n6 + n7;.   
93e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20               }. 
93f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64                 d
9400: 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65  ocument.getEleme
9410: 6e 74 42 79 49 64 28 22 6f 5f 67 72 6f 75 70 5f  ntById("o_group_
9420: 74 79 70 6f 22 29 2e 63 68 65 63 6b 65 64 20 3d  typo").checked =
9430: 20 66 61 6c 73 65 3b 0a 20 20 20 20 20 20 20 20   false;.        
9440: 20 20 20 20 20 20 20 20 74 68 69 73 2e 73 77 69          this.swi
9450: 74 63 68 47 72 6f 75 70 28 22 6f 5f 67 72 6f 75  tchGroup("o_grou
9460: 70 5f 74 79 70 6f 22 29 3b 0a 20 20 20 20 20 20  p_typo");.      
9470: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20        }.        
9480: 20 20 20 20 64 6f 63 75 6d 65 6e 74 2e 67 65 74      document.get
9490: 45 6c 65 6d 65 6e 74 42 79 49 64 28 27 70 72 6f  ElementById('pro
94a0: 67 72 65 73 73 62 61 72 27 29 2e 76 61 6c 75 65  gressbar').value
94b0: 20 3d 20 35 3b 0a 0a 20 20 20 20 20 20 20 20 20   = 5;..         
94c0: 20 20 20 2f 2f 20 64 69 76 65 72 73 0a 20 20 20     // divers.   
94d0: 20 20 20 20 20 20 20 20 20 69 66 20 28 64 6f 63           if (doc
94e0: 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74  ument.getElement
94f0: 42 79 49 64 28 22 6f 5f 67 72 6f 75 70 5f 6d 69  ById("o_group_mi
9500: 73 63 22 29 2e 63 68 65 63 6b 65 64 29 20 7b 0a  sc").checked) {.
9510: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9520: 69 66 20 28 64 6f 63 75 6d 65 6e 74 2e 67 65 74  if (document.get
9530: 45 6c 65 6d 65 6e 74 42 79 49 64 28 22 6f 5f 6f  ElementById("o_o
9540: 72 64 69 6e 61 6c 73 5f 6e 6f 5f 65 78 70 6f 6e  rdinals_no_expon
9550: 61 6e 74 22 29 2e 63 68 65 63 6b 65 64 29 20 7b  ant").checked) {
9560: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9570: 20 20 20 20 20 69 66 20 28 64 6f 63 75 6d 65 6e       if (documen
9580: 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64  t.getElementById
9590: 28 22 6f 5f 6f 72 64 69 6e 61 6c 73 5f 65 78 70  ("o_ordinals_exp
95a0: 6f 6e 61 6e 74 22 29 2e 63 68 65 63 6b 65 64 29  onant").checked)
95b0: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   {.             
95c0: 20 20 20 20 20 20 20 20 20 20 20 5b 73 54 65 78             [sTex
95d0: 74 2c 20 6e 31 5d 20 3d 20 74 68 69 73 2e 66 6f  t, n1] = this.fo
95e0: 72 6d 61 74 54 65 78 74 28 73 54 65 78 74 2c 20  rmatText(sText, 
95f0: 22 6f 72 64 69 6e 61 6c 73 5f 65 78 70 6f 6e 61  "ordinals_expona
9600: 6e 74 22 29 3b 0a 20 20 20 20 20 20 20 20 20 20  nt");.          
9610: 20 20 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65            } else
9620: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   {.             
9630: 20 20 20 20 20 20 20 20 20 20 20 5b 73 54 65 78             [sTex
9640: 74 2c 20 6e 31 5d 20 3d 20 74 68 69 73 2e 66 6f  t, n1] = this.fo
9650: 72 6d 61 74 54 65 78 74 28 73 54 65 78 74 2c 20  rmatText(sText, 
9660: 22 6f 72 64 69 6e 61 6c 73 5f 6e 6f 5f 65 78 70  "ordinals_no_exp
9670: 6f 6e 61 6e 74 22 29 3b 0a 20 20 20 20 20 20 20  onant");.       
9680: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20               }. 
9690: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
96a0: 20 20 20 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45     document.getE
96b0: 6c 65 6d 65 6e 74 42 79 49 64 28 27 72 65 73 5f  lementById('res_
96c0: 6f 5f 6f 72 64 69 6e 61 6c 73 5f 6e 6f 5f 65 78  o_ordinals_no_ex
96d0: 70 6f 6e 61 6e 74 27 29 2e 74 65 78 74 43 6f 6e  ponant').textCon
96e0: 74 65 6e 74 20 3d 20 6e 31 3b 0a 20 20 20 20 20  tent = n1;.     
96f0: 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20             }.   
9700: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
9710: 28 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65  (document.getEle
9720: 6d 65 6e 74 42 79 49 64 28 22 6f 5f 65 74 63 22  mentById("o_etc"
9730: 29 2e 63 68 65 63 6b 65 64 29 20 7b 0a 20 20 20  ).checked) {.   
9740: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9750: 20 5b 73 54 65 78 74 2c 20 6e 31 5d 20 3d 20 74   [sText, n1] = t
9760: 68 69 73 2e 66 6f 72 6d 61 74 54 65 78 74 28 73  his.formatText(s
9770: 54 65 78 74 2c 20 22 65 74 63 22 29 3b 0a 20 20  Text, "etc");.  
9780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9790: 20 20 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c    document.getEl
97a0: 65 6d 65 6e 74 42 79 49 64 28 27 72 65 73 5f 6f  ementById('res_o
97b0: 5f 65 74 63 27 29 2e 74 65 78 74 43 6f 6e 74 65  _etc').textConte
97c0: 6e 74 20 3d 20 6e 31 3b 0a 20 20 20 20 20 20 20  nt = n1;.       
97d0: 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20           }.     
97e0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64             if (d
97f0: 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65  ocument.getEleme
9800: 6e 74 42 79 49 64 28 22 6f 5f 6d 69 73 73 69 6e  ntById("o_missin
9810: 67 5f 68 79 70 68 65 6e 73 22 29 2e 63 68 65 63  g_hyphens").chec
9820: 6b 65 64 29 20 7b 0a 20 20 20 20 20 20 20 20 20  ked) {.         
9830: 20 20 20 20 20 20 20 20 20 20 20 5b 73 54 65 78             [sTex
9840: 74 2c 20 6e 31 5d 20 3d 20 74 68 69 73 2e 66 6f  t, n1] = this.fo
9850: 72 6d 61 74 54 65 78 74 28 73 54 65 78 74 2c 20  rmatText(sText, 
9860: 22 6d 69 73 73 69 6e 67 5f 68 79 70 68 65 6e 73  "missing_hyphens
9870: 22 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ");.            
9880: 20 20 20 20 20 20 20 20 64 6f 63 75 6d 65 6e 74          document
9890: 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28  .getElementById(
98a0: 27 72 65 73 5f 6f 5f 6d 69 73 73 69 6e 67 5f 68  'res_o_missing_h
98b0: 79 70 68 65 6e 73 27 29 2e 74 65 78 74 43 6f 6e  yphens').textCon
98c0: 74 65 6e 74 20 3d 20 6e 31 3b 0a 20 20 20 20 20  tent = n1;.     
98d0: 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20             }.   
98e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
98f0: 28 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65  (document.getEle
9900: 6d 65 6e 74 42 79 49 64 28 22 6f 5f 6d 61 5f 77  mentById("o_ma_w
9910: 6f 72 64 22 29 2e 63 68 65 63 6b 65 64 29 20 7b  ord").checked) {
9920: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9930: 20 20 20 20 20 5b 73 54 65 78 74 2c 20 6e 31 5d       [sText, n1]
9940: 20 3d 20 74 68 69 73 2e 66 6f 72 6d 61 74 54 65   = this.formatTe
9950: 78 74 28 73 54 65 78 74 2c 20 22 6d 61 5f 77 6f  xt(sText, "ma_wo
9960: 72 64 22 29 3b 0a 20 20 20 20 20 20 20 20 20 20  rd");.          
9970: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64 6f            if (do
9980: 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e  cument.getElemen
9990: 74 42 79 49 64 28 22 6f 5f 6d 61 5f 31 6c 65 74  tById("o_ma_1let
99a0: 74 65 72 5f 6c 6f 77 65 72 63 61 73 65 22 29 2e  ter_lowercase").
99b0: 63 68 65 63 6b 65 64 29 20 7b 0a 20 20 20 20 20  checked) {.     
99c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
99d0: 20 20 20 5b 73 54 65 78 74 2c 20 6e 31 5d 20 3d     [sText, n1] =
99e0: 20 74 68 69 73 2e 66 6f 72 6d 61 74 54 65 78 74   this.formatText
99f0: 28 73 54 65 78 74 2c 20 22 6d 61 5f 31 6c 65 74  (sText, "ma_1let
9a00: 74 65 72 5f 6c 6f 77 65 72 63 61 73 65 22 29 3b  ter_lowercase");
9a10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9a20: 20 20 20 20 20 20 20 20 20 69 66 20 28 64 6f 63           if (doc
9a30: 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74  ument.getElement
9a40: 42 79 49 64 28 22 6f 5f 6d 61 5f 31 6c 65 74 74  ById("o_ma_1lett
9a50: 65 72 5f 75 70 70 65 72 63 61 73 65 22 29 2e 63  er_uppercase").c
9a60: 68 65 63 6b 65 64 29 20 7b 0a 20 20 20 20 20 20  hecked) {.      
9a70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9a80: 20 20 20 20 20 20 5b 73 54 65 78 74 2c 20 6e 31        [sText, n1
9a90: 5d 20 3d 20 74 68 69 73 2e 66 6f 72 6d 61 74 54  ] = this.formatT
9aa0: 65 78 74 28 73 54 65 78 74 2c 20 22 6d 61 5f 31  ext(sText, "ma_1
9ab0: 6c 65 74 74 65 72 5f 75 70 70 65 72 63 61 73 65  letter_uppercase
9ac0: 22 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ");.            
9ad0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20              }.  
9ae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9af0: 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20    }.            
9b00: 20 20 20 20 20 20 20 20 64 6f 63 75 6d 65 6e 74          document
9b10: 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28  .getElementById(
9b20: 27 72 65 73 5f 6f 5f 6d 61 5f 77 6f 72 64 27 29  'res_o_ma_word')
9b30: 2e 74 65 78 74 43 6f 6e 74 65 6e 74 20 3d 20 6e  .textContent = n
9b40: 31 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  1;.             
9b50: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20     }.           
9b60: 20 20 20 20 20 64 6f 63 75 6d 65 6e 74 2e 67 65       document.ge
9b70: 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 22 6f 5f  tElementById("o_
9b80: 67 72 6f 75 70 5f 6d 69 73 63 22 29 2e 63 68 65  group_misc").che
9b90: 63 6b 65 64 20 3d 20 66 61 6c 73 65 3b 0a 20 20  cked = false;.  
9ba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
9bb0: 69 73 2e 73 77 69 74 63 68 47 72 6f 75 70 28 22  is.switchGroup("
9bc0: 6f 5f 67 72 6f 75 70 5f 6d 69 73 63 22 29 3b 0a  o_group_misc");.
9bd0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20              }.  
9be0: 20 20 20 20 20 20 20 20 20 20 64 6f 63 75 6d 65            docume
9bf0: 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49  nt.getElementByI
9c00: 64 28 27 70 72 6f 67 72 65 73 73 62 61 72 27 29  d('progressbar')
9c10: 2e 76 61 6c 75 65 20 3d 20 64 6f 63 75 6d 65 6e  .value = documen
9c20: 74 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64  t.getElementById
9c30: 28 27 70 72 6f 67 72 65 73 73 62 61 72 27 29 2e  ('progressbar').
9c40: 6d 61 78 3b 0a 20 20 20 20 20 20 20 20 20 20 20  max;.           
9c50: 20 2f 2f 20 65 6e 64 20 6f 66 20 70 72 6f 63 65   // end of proce
9c60: 73 73 69 6e 67 0a 0a 20 20 20 20 20 20 20 20 20  ssing..         
9c70: 20 20 20 2f 2f 77 69 6e 64 6f 77 2e 73 65 74 43     //window.setC
9c80: 75 72 73 6f 72 28 22 61 75 74 6f 22 29 3b 20 2f  ursor("auto"); /
9c90: 2f 20 72 65 73 74 6f 72 65 20 70 6f 69 6e 74 65  / restore pointe
9ca0: 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6f  r.            co
9cb0: 6e 73 74 20 74 31 20 3d 20 44 61 74 65 2e 6e 6f  nst t1 = Date.no
9cc0: 77 28 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20  w();.           
9cd0: 20 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65   document.getEle
9ce0: 6d 65 6e 74 42 79 49 64 28 27 74 69 6d 65 5f 72  mentById('time_r
9cf0: 65 73 27 29 2e 74 65 78 74 43 6f 6e 74 65 6e 74  es').textContent
9d00: 20 3d 20 74 68 69 73 2e 67 65 74 54 69 6d 65 52   = this.getTimeR
9d10: 65 73 28 28 74 31 2d 74 30 29 2f 31 30 30 30 29  es((t1-t0)/1000)
9d20: 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20  ;.        }.    
9d30: 20 20 20 20 63 61 74 63 68 20 28 65 29 20 7b 0a      catch (e) {.
9d40: 20 20 20 20 20 20 20 20 20 20 20 20 43 75 2e 72              Cu.r
9d50: 65 70 6f 72 74 45 72 72 6f 72 28 65 29 3b 0a 20  eportError(e);. 
9d60: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20         }.       
9d70: 20 72 65 74 75 72 6e 20 73 54 65 78 74 3b 0a 20   return sText;. 
9d80: 20 20 20 7d 2c 0a 20 20 20 20 66 6f 72 6d 61 74     },.    format
9d90: 54 65 78 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28  Text: function (
9da0: 73 54 65 78 74 2c 20 73 4f 70 74 4e 61 6d 65 29  sText, sOptName)
9db0: 20 7b 0a 20 20 20 20 20 20 20 20 6c 65 74 20 6e   {.        let n
9dc0: 43 6f 75 6e 74 20 3d 20 30 3b 0a 20 20 20 20 20  Count = 0;.     
9dd0: 20 20 20 74 72 79 20 7b 0a 20 20 20 20 20 20 20     try {.       
9de0: 20 20 20 20 20 69 66 20 28 21 74 66 2e 6f 52 65       if (!tf.oRe
9df0: 70 6c 54 61 62 6c 65 2e 68 61 73 4f 77 6e 50 72  plTable.hasOwnPr
9e00: 6f 70 65 72 74 79 28 73 4f 70 74 4e 61 6d 65 29  operty(sOptName)
9e10: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ) {.            
9e20: 20 20 20 20 65 63 68 6f 28 22 23 20 45 72 72 6f      echo("# Erro
9e30: 72 2e 20 54 46 3a 20 74 68 65 72 65 20 69 73 20  r. TF: there is 
9e40: 6e 6f 20 6f 70 74 69 6f 6e 20 e2 80 9c 22 20 2b  no option ..." +
9e50: 20 73 4f 70 74 4e 61 6d 65 2b 20 22 e2 80 9d 2e   sOptName+ "....
9e60: 22 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ");.            
9e70: 20 20 20 20 72 65 74 75 72 6e 20 5b 73 54 65 78      return [sTex
9e80: 74 2c 20 6e 43 6f 75 6e 74 5d 3b 0a 20 20 20 20  t, nCount];.    
9e90: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20          }.      
9ea0: 20 20 20 20 20 20 66 6f 72 20 28 6c 65 74 20 5b        for (let [
9eb0: 7a 52 67 78 2c 20 73 52 65 70 5d 20 6f 66 20 74  zRgx, sRep] of t
9ec0: 66 2e 6f 52 65 70 6c 54 61 62 6c 65 5b 73 4f 70  f.oReplTable[sOp
9ed0: 74 4e 61 6d 65 5d 29 20 7b 0a 20 20 20 20 20 20  tName]) {.      
9ee0: 20 20 20 20 20 20 20 20 20 20 6e 43 6f 75 6e 74            nCount
9ef0: 20 2b 3d 20 28 73 54 65 78 74 2e 6d 61 74 63 68   += (sText.match
9f00: 28 7a 52 67 78 29 20 7c 7c 20 5b 5d 29 2e 6c 65  (zRgx) || []).le
9f10: 6e 67 74 68 3b 0a 20 20 20 20 20 20 20 20 20 20  ngth;.          
9f20: 20 20 20 20 20 20 73 54 65 78 74 20 3d 20 73 54        sText = sT
9f30: 65 78 74 2e 72 65 70 6c 61 63 65 28 7a 52 67 78  ext.replace(zRgx
9f40: 2c 20 73 52 65 70 29 3b 0a 20 20 20 20 20 20 20  , sRep);.       
9f50: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 7d       }.        }
9f60: 0a 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28  .        catch (
9f70: 65 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  e) {.           
9f80: 20 43 75 2e 72 65 70 6f 72 74 45 72 72 6f 72 28   Cu.reportError(
9f90: 65 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20  e);.        }.  
9fa0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 5b 73 54        return [sT
9fb0: 65 78 74 2c 20 6e 43 6f 75 6e 74 5d 3b 0a 20 20  ext, nCount];.  
9fc0: 20 20 7d 0a 7d 0a 0a 0a 2f 2a 20 45 56 45 4e 54    }.}.../* EVENT
9fd0: 53 20 2a 2f 0a 0a 77 69 6e 64 6f 77 2e 61 64 64  S */..window.add
9fe0: 45 76 65 6e 74 4c 69 73 74 65 6e 65 72 28 22 63  EventListener("c
9ff0: 6c 69 63 6b 22 2c 20 66 75 6e 63 74 69 6f 6e 20  lick", function 
a000: 28 78 45 76 65 6e 74 29 20 7b 0a 20 20 20 20 6c  (xEvent) {.    l
a010: 65 74 20 78 45 6c 65 6d 20 3d 20 78 45 76 65 6e  et xElem = xEven
a020: 74 2e 74 61 72 67 65 74 3b 0a 20 20 20 20 69 66  t.target;.    if
a030: 20 28 78 45 6c 65 6d 2e 69 64 20 26 26 20 78 45   (xElem.id && xE
a040: 6c 65 6d 2e 69 64 2e 73 74 61 72 74 73 57 69 74  lem.id.startsWit
a050: 68 28 22 6f 5f 67 72 6f 75 70 5f 22 29 29 20 7b  h("o_group_")) {
a060: 0a 20 20 20 20 20 20 20 20 6f 54 65 78 74 46 6f  .        oTextFo
a070: 72 6d 61 74 74 65 72 2e 73 77 69 74 63 68 47 72  rmatter.switchGr
a080: 6f 75 70 28 78 45 6c 65 6d 2e 69 64 29 3b 0a 20  oup(xElem.id);. 
a090: 20 20 20 20 20 20 20 6f 54 65 78 74 46 6f 72 6d         oTextForm
a0a0: 61 74 74 65 72 2e 72 65 73 65 74 50 72 6f 67 72  atter.resetProgr
a0b0: 65 73 73 42 61 72 28 29 3b 0a 20 20 20 20 7d 0a  essBar();.    }.
a0c0: 7d 2c 20 66 61 6c 73 65 29 3b 0a 0a 77 69 6e 64  }, false);..wind
a0d0: 6f 77 2e 61 64 64 45 76 65 6e 74 4c 69 73 74 65  ow.addEventListe
a0e0: 6e 65 72 28 22 6c 6f 61 64 22 2c 20 66 75 6e 63  ner("load", func
a0f0: 74 69 6f 6e 20 28 78 45 76 65 6e 74 29 20 7b 0a  tion (xEvent) {.
a100: 20 20 20 20 6f 44 69 63 74 49 67 6e 69 74 65 72      oDictIgniter
a110: 2e 69 6e 69 74 28 29 3b 0a 20 20 20 20 6f 47 72  .init();.    oGr
a120: 61 6d 6d 61 72 43 68 65 63 6b 65 72 2e 6c 6f 61  ammarChecker.loa
a130: 64 47 43 28 29 3b 0a 20 20 20 20 2f 2f 6f 47 72  dGC();.    //oGr
a140: 61 6d 6d 61 72 43 68 65 63 6b 65 72 2e 66 75 6c  ammarChecker.ful
a150: 6c 54 65 73 74 73 28 29 3b 0a 7d 2c 20 66 61 6c  lTests();.}, fal
a160: 73 65 29 3b 0a 0a 77 69 6e 64 6f 77 2e 61 64 64  se);..window.add
a170: 45 76 65 6e 74 4c 69 73 74 65 6e 65 72 28 22 63  EventListener("c
a180: 6f 6d 70 6f 73 65 2d 77 69 6e 64 6f 77 2d 69 6e  ompose-window-in
a190: 69 74 22 2c 20 66 75 6e 63 74 69 6f 6e 20 28 78  it", function (x
a1a0: 45 76 65 6e 74 29 20 7b 0a 20 20 20 20 6f 47 72  Event) {.    oGr
a1b0: 61 6d 6d 61 72 43 68 65 63 6b 65 72 2e 6c 6f 61  ammarChecker.loa
a1c0: 64 55 49 28 29 3b 0a 20 20 20 20 6f 47 72 61 6d  dUI();.    oGram
a1d0: 6d 61 72 43 68 65 63 6b 65 72 2e 63 6c 6f 73 65  marChecker.close
a1e0: 50 61 6e 65 6c 28 29 3b 0a 20 20 20 20 6f 47 72  Panel();.    oGr
a1f0: 61 6d 6d 61 72 43 68 65 63 6b 65 72 2e 63 6c 65  ammarChecker.cle
a200: 61 72 50 72 65 76 69 65 77 28 29 3b 0a 20 20 20  arPreview();.   
a210: 20 6f 54 65 78 74 46 6f 72 6d 61 74 74 65 72 2e   oTextFormatter.
a220: 69 6e 69 74 28 29 3b 0a 7d 2c 20 74 72 75 65 29  init();.}, true)
a230: 3b 0a                                            ;.