Grammalecte  Hex Artifact Content

Artifact f3882fd6a0fcd5d88d8022b981af4b545638e618c85bf9abc469832608d369c1:


0000: 2f 2f 20 47 72 61 6d 6d 61 6c 65 63 74 65 20 2d  // Grammalecte -
0010: 20 4c 65 78 69 63 6f 67 72 61 70 68 65 0a 2f 2f   Lexicographe.//
0020: 20 4c 69 63 65 6e 73 65 3a 20 4d 50 4c 20 32 0a   License: MPL 2.
0030: 2f 2a 6a 73 6c 69 6e 74 20 65 73 76 65 72 73 69  /*jslint esversi
0040: 6f 6e 3a 20 36 2a 2f 0a 2f 2a 67 6c 6f 62 61 6c  on: 6*/./*global
0050: 20 72 65 71 75 69 72 65 2c 65 78 70 6f 72 74 73   require,exports
0060: 2a 2f 0a 0a 22 75 73 65 20 73 74 72 69 63 74 22  */.."use strict"
0070: 3b 0a 0a 24 7b 73 74 72 69 6e 67 7d 0a 24 7b 6d  ;..${string}.${m
0080: 61 70 7d 0a 0a 0a 69 66 20 28 74 79 70 65 6f 66  ap}...if (typeof
0090: 20 28 72 65 71 75 69 72 65 29 20 21 3d 3d 20 27   (require) !== '
00a0: 75 6e 64 65 66 69 6e 65 64 27 29 20 7b 0a 20 20  undefined') {.  
00b0: 20 20 76 61 72 20 68 65 6c 70 65 72 73 20 3d 20    var helpers = 
00c0: 72 65 71 75 69 72 65 28 22 72 65 73 6f 75 72 63  require("resourc
00d0: 65 3a 2f 2f 67 72 61 6d 6d 61 6c 65 63 74 65 2f  e://grammalecte/
00e0: 68 65 6c 70 65 72 73 2e 6a 73 22 29 3b 0a 7d 0a  helpers.js");.}.
00f0: 0a 63 6f 6e 73 74 20 5f 64 54 41 47 53 20 3d 20  .const _dTAGS = 
0100: 6e 65 77 20 4d 61 70 28 5b 0a 20 20 20 20 5b 27  new Map([.    ['
0110: 3a 47 27 2c 20 22 5b 6d 6f 74 20 67 72 61 6d 6d  :G', "[mot gramm
0120: 61 74 69 63 61 6c 5d 22 5d 2c 0a 20 20 20 20 5b  atical]"],.    [
0130: 27 3a 4e 27 2c 20 22 20 6e 6f 6d 2c 22 5d 2c 0a  ':N', " nom,"],.
0140: 20 20 20 20 5b 27 3a 41 27 2c 20 22 20 61 64 6a      [':A', " adj
0150: 65 63 74 69 66 2c 22 5d 2c 0a 20 20 20 20 5b 27  ectif,"],.    ['
0160: 3a 4d 31 27 2c 20 22 20 70 72 c3 a9 6e 6f 6d 2c  :M1', " pr..nom,
0170: 22 5d 2c 0a 20 20 20 20 5b 27 3a 4d 32 27 2c 20  "],.    [':M2', 
0180: 22 20 70 61 74 72 6f 6e 79 6d 65 2c 22 5d 2c 0a  " patronyme,"],.
0190: 20 20 20 20 5b 27 3a 4d 50 27 2c 20 22 20 6e 6f      [':MP', " no
01a0: 6d 20 70 72 6f 70 72 65 2c 22 5d 2c 0a 20 20 20  m propre,"],.   
01b0: 20 5b 27 3a 57 27 2c 20 22 20 61 64 76 65 72 62   [':W', " adverb
01c0: 65 2c 22 5d 2c 0a 20 20 20 20 5b 27 3a 58 27 2c  e,"],.    [':X',
01d0: 20 22 20 61 64 76 65 72 62 65 20 64 65 20 6e c3   " adverbe de n.
01e0: a9 67 61 74 69 6f 6e 2c 22 5d 2c 0a 20 20 20 20  .gation,"],.    
01f0: 5b 27 3a 55 27 2c 20 22 20 61 64 76 65 72 62 65  [':U', " adverbe
0200: 20 69 6e 74 65 72 72 6f 67 61 74 69 66 2c 22 5d   interrogatif,"]
0210: 2c 0a 20 20 20 20 5b 27 3a 4a 27 2c 20 22 20 69  ,.    [':J', " i
0220: 6e 74 65 72 6a 65 63 74 69 6f 6e 2c 22 5d 2c 0a  nterjection,"],.
0230: 20 20 20 20 5b 27 3a 42 27 2c 20 22 20 6e 6f 6d      [':B', " nom
0240: 62 72 65 2c 22 5d 2c 0a 20 20 20 20 5b 27 3a 54  bre,"],.    [':T
0250: 27 2c 20 22 20 74 69 74 72 65 2c 22 5d 2c 0a 0a  ', " titre,"],..
0260: 20 20 20 20 5b 27 3a 52 27 2c 20 22 20 70 72 c3      [':R', " pr.
0270: a9 70 6f 73 69 74 69 6f 6e 2c 22 5d 2c 0a 20 20  .position,"],.  
0280: 20 20 5b 27 3a 52 76 27 2c 20 22 20 70 72 c3 a9    [':Rv', " pr..
0290: 70 6f 73 69 74 69 6f 6e 20 76 65 72 62 61 6c 65  position verbale
02a0: 2c 22 5d 2c 0a 20 20 20 20 5b 27 3a 44 27 2c 20  ,"],.    [':D', 
02b0: 22 20 64 c3 a9 74 65 72 6d 69 6e 61 6e 74 2c 22  " d..terminant,"
02c0: 5d 2c 0a 20 20 20 20 5b 27 3a 44 64 27 2c 20 22  ],.    [':Dd', "
02d0: 20 64 c3 a9 74 65 72 6d 69 6e 61 6e 74 20 64 c3   d..terminant d.
02e0: a9 6d 6f 6e 73 74 72 61 74 69 66 2c 22 5d 2c 0a  .monstratif,"],.
02f0: 20 20 20 20 5b 27 3a 44 65 27 2c 20 22 20 64 c3      [':De', " d.
0300: a9 74 65 72 6d 69 6e 61 6e 74 20 65 78 63 6c 61  .terminant excla
0310: 6d 61 74 69 66 2c 22 5d 2c 0a 20 20 20 20 5b 27  matif,"],.    ['
0320: 3a 44 70 27 2c 20 22 20 64 c3 a9 74 65 72 6d 69  :Dp', " d..termi
0330: 6e 61 6e 74 20 70 6f 73 73 65 73 73 69 66 2c 22  nant possessif,"
0340: 5d 2c 0a 20 20 20 20 5b 27 3a 44 69 27 2c 20 22  ],.    [':Di', "
0350: 20 64 c3 a9 74 65 72 6d 69 6e 61 6e 74 20 69 6e   d..terminant in
0360: 64 c3 a9 66 69 6e 69 2c 22 5d 2c 0a 20 20 20 20  d..fini,"],.    
0370: 5b 27 3a 44 6e 27 2c 20 22 20 64 c3 a9 74 65 72  [':Dn', " d..ter
0380: 6d 69 6e 61 6e 74 20 6e c3 a9 67 61 74 69 66 2c  minant n..gatif,
0390: 22 5d 2c 0a 20 20 20 20 5b 27 3a 4f 64 27 2c 20  "],.    [':Od', 
03a0: 22 20 70 72 6f 6e 6f 6d 20 64 c3 a9 6d 6f 6e 73  " pronom d..mons
03b0: 74 72 61 74 69 66 2c 22 5d 2c 0a 20 20 20 20 5b  tratif,"],.    [
03c0: 27 3a 4f 69 27 2c 20 22 20 70 72 6f 6e 6f 6d 20  ':Oi', " pronom 
03d0: 69 6e 64 c3 a9 66 69 6e 69 2c 22 5d 2c 0a 20 20  ind..fini,"],.  
03e0: 20 20 5b 27 3a 4f 6e 27 2c 20 22 20 70 72 6f 6e    [':On', " pron
03f0: 6f 6d 20 69 6e 64 c3 a9 66 69 6e 69 20 6e c3 a9  om ind..fini n..
0400: 67 61 74 69 66 2c 22 5d 2c 0a 20 20 20 20 5b 27  gatif,"],.    ['
0410: 3a 4f 74 27 2c 20 22 20 70 72 6f 6e 6f 6d 20 69  :Ot', " pronom i
0420: 6e 74 65 72 72 6f 67 61 74 69 66 2c 22 5d 2c 0a  nterrogatif,"],.
0430: 20 20 20 20 5b 27 3a 4f 72 27 2c 20 22 20 70 72      [':Or', " pr
0440: 6f 6e 6f 6d 20 72 65 6c 61 74 69 66 2c 22 5d 2c  onom relatif,"],
0450: 0a 20 20 20 20 5b 27 3a 4f 77 27 2c 20 22 20 70  .    [':Ow', " p
0460: 72 6f 6e 6f 6d 20 61 64 76 65 72 62 69 61 6c 2c  ronom adverbial,
0470: 22 5d 2c 0a 20 20 20 20 5b 27 3a 4f 73 27 2c 20  "],.    [':Os', 
0480: 22 20 70 72 6f 6e 6f 6d 20 70 65 72 73 6f 6e 6e  " pronom personn
0490: 65 6c 20 73 75 6a 65 74 2c 22 5d 2c 0a 20 20 20  el sujet,"],.   
04a0: 20 5b 27 3a 4f 6f 27 2c 20 22 20 70 72 6f 6e 6f   [':Oo', " prono
04b0: 6d 20 70 65 72 73 6f 6e 6e 65 6c 20 6f 62 6a 65  m personnel obje
04c0: 74 2c 22 5d 2c 0a 20 20 20 20 5b 27 3a 43 27 2c  t,"],.    [':C',
04d0: 20 22 20 63 6f 6e 6a 6f 6e 63 74 69 6f 6e 2c 22   " conjonction,"
04e0: 5d 2c 0a 20 20 20 20 5b 27 3a 43 63 27 2c 20 22  ],.    [':Cc', "
04f0: 20 63 6f 6e 6a 6f 6e 63 74 69 6f 6e 20 64 65 20   conjonction de 
0500: 63 6f 6f 72 64 69 6e 61 74 69 6f 6e 2c 22 5d 2c  coordination,"],
0510: 0a 20 20 20 20 5b 27 3a 43 73 27 2c 20 22 20 63  .    [':Cs', " c
0520: 6f 6e 6a 6f 6e 63 74 69 6f 6e 20 64 65 20 73 75  onjonction de su
0530: 62 6f 72 64 69 6e 61 74 69 6f 6e 2c 22 5d 2c 0a  bordination,"],.
0540: 0a 20 20 20 20 5b 27 3a c4 b9 27 2c 20 22 20 6c  .    [':..', " l
0550: 6f 63 75 74 69 6f 6e 2c 22 5d 2c 0a 20 20 20 20  ocution,"],.    
0560: 5b 27 3a c4 88 27 2c 20 22 20 6c 6f 63 75 74 69  [':..', " locuti
0570: 6f 6e 20 63 6f 6e 6a 6f 6e 63 74 69 76 61 6c 65  on conjonctivale
0580: 20 28 c3 a9 6c 2e 29 2c 22 5d 2c 0a 20 20 20 20   (..l.),"],.    
0590: 5b 27 3a c4 88 73 27 2c 20 22 20 6c 6f 63 75 74  [':..s', " locut
05a0: 69 6f 6e 20 63 6f 6e 6a 6f 6e 63 74 69 76 61 6c  ion conjonctival
05b0: 65 20 64 65 20 73 75 62 6f 72 64 69 6e 61 74 69  e de subordinati
05c0: 6f 6e 20 28 c3 a9 6c 2e 29 2c 22 5d 2c 0a 20 20  on (..l.),"],.  
05d0: 20 20 5b 27 3a c5 b4 27 2c 20 22 20 6c 6f 63 75    [':..', " locu
05e0: 74 69 6f 6e 20 61 64 76 65 72 62 69 61 6c 65 20  tion adverbiale 
05f0: 28 c3 a9 6c 2e 29 2c 22 5d 2c 0a 20 20 20 20 5b  (..l.),"],.    [
0600: 27 3a c3 91 27 2c 20 22 20 6c 6f 63 75 74 69 6f  ':..', " locutio
0610: 6e 20 6e 6f 6d 69 6e 61 6c 65 20 28 c3 a9 6c 2e  n nominale (..l.
0620: 29 2c 22 5d 2c 0a 20 20 20 20 5b 27 3a c3 82 27  ),"],.    [':..'
0630: 2c 20 22 20 6c 6f 63 75 74 69 6f 6e 20 61 64 6a  , " locution adj
0640: 65 63 74 69 76 61 6c 65 20 28 c3 a9 6c 2e 29 2c  ectivale (..l.),
0650: 22 5d 2c 0a 20 20 20 20 5b 27 3a e1 b9 bc 27 2c  "],.    [':...',
0660: 20 22 20 6c 6f 63 75 74 69 6f 6e 20 76 65 72 62   " locution verb
0670: 61 6c 65 20 28 c3 a9 6c 2e 29 2c 22 5d 2c 0a 20  ale (..l.),"],. 
0680: 20 20 20 5b 27 3a c5 94 27 2c 20 22 20 6c 6f 63     [':..', " loc
0690: 75 74 69 6f 6e 20 70 72 c3 a9 70 6f 73 69 74 69  ution pr..positi
06a0: 76 65 20 28 c3 a9 6c 2e 29 2c 22 5d 2c 0a 20 20  ve (..l.),"],.  
06b0: 20 20 5b 27 3a c3 94 27 2c 20 22 20 6c 6f 63 75    [':..', " locu
06c0: 74 69 6f 6e 20 70 72 6f 6e 6f 6d 69 6e 61 6c 65  tion pronominale
06d0: 73 20 28 c3 a9 6c 2e 29 2c 22 5d 2c 0a 20 20 20  s (..l.),"],.   
06e0: 20 5b 27 3a c4 b4 27 2c 20 22 20 6c 6f 63 75 74   [':..', " locut
06f0: 69 6f 6e 20 69 6e 74 65 72 6a 65 63 74 69 76 65  ion interjective
0700: 20 28 c3 a9 6c 2e 29 2c 22 5d 2c 0a 0a 20 20 20   (..l.),"],..   
0710: 20 5b 27 3a 5a 70 27 2c 20 22 20 70 72 c3 a9 66   [':Zp', " pr..f
0720: 69 78 65 2c 22 5d 2c 0a 20 20 20 20 5b 27 3a 5a  ixe,"],.    [':Z
0730: 73 27 2c 20 22 20 73 75 66 66 69 78 65 2c 22 5d  s', " suffixe,"]
0740: 2c 0a 0a 20 20 20 20 5b 27 3a 56 31 27 2c 20 22  ,..    [':V1', "
0750: 20 76 65 72 62 65 20 28 31 e1 b5 89 ca b3 20 67   verbe (1..... g
0760: 72 2e 29 2c 22 5d 2c 0a 20 20 20 20 5b 27 3a 56  r.),"],.    [':V
0770: 32 27 2c 20 22 20 76 65 72 62 65 20 28 32 e1 b5  2', " verbe (2..
0780: 89 20 67 72 2e 29 2c 22 5d 2c 0a 20 20 20 20 5b  . gr.),"],.    [
0790: 27 3a 56 33 27 2c 20 22 20 76 65 72 62 65 20 28  ':V3', " verbe (
07a0: 33 e1 b5 89 20 67 72 2e 29 2c 22 5d 2c 0a 20 20  3... gr.),"],.  
07b0: 20 20 5b 27 3a 56 30 65 27 2c 20 22 20 76 65 72    [':V0e', " ver
07c0: 62 65 2c 22 5d 2c 0a 20 20 20 20 5b 27 3a 56 30  be,"],.    [':V0
07d0: 61 27 2c 20 22 20 76 65 72 62 65 2c 22 5d 2c 0a  a', " verbe,"],.
07e0: 0a 20 20 20 20 5b 27 3a 4f 31 27 2c 20 22 20 31  .    [':O1', " 1
07f0: ca b3 e1 b5 89 20 70 65 72 73 2e 2c 22 5d 2c 0a  ..... pers.,"],.
0800: 20 20 20 20 5b 27 3a 4f 32 27 2c 20 22 20 32 e1      [':O2', " 2.
0810: b5 89 20 70 65 72 73 2e 2c 22 5d 2c 0a 20 20 20  .. pers.,"],.   
0820: 20 5b 27 3a 4f 33 27 2c 20 22 20 33 e1 b5 89 20   [':O3', " 3... 
0830: 70 65 72 73 2e 2c 22 5d 2c 0a 0a 20 20 20 20 5b  pers.,"],..    [
0840: 27 3a 65 27 2c 20 22 20 c3 a9 70 69 63 c3 a8 6e  ':e', " ..pic..n
0850: 65 22 5d 2c 0a 20 20 20 20 5b 27 3a 6d 27 2c 20  e"],.    [':m', 
0860: 22 20 6d 61 73 63 75 6c 69 6e 22 5d 2c 0a 20 20  " masculin"],.  
0870: 20 20 5b 27 3a 66 27 2c 20 22 20 66 c3 a9 6d 69    [':f', " f..mi
0880: 6e 69 6e 22 5d 2c 0a 20 20 20 20 5b 27 3a 73 27  nin"],.    [':s'
0890: 2c 20 22 20 73 69 6e 67 75 6c 69 65 72 22 5d 2c  , " singulier"],
08a0: 0a 20 20 20 20 5b 27 3a 70 27 2c 20 22 20 70 6c  .    [':p', " pl
08b0: 75 72 69 65 6c 22 5d 2c 0a 20 20 20 20 5b 27 3a  uriel"],.    [':
08c0: 69 27 2c 20 22 20 69 6e 76 61 72 69 61 62 6c 65  i', " invariable
08d0: 22 5d 2c 0a 0a 20 20 20 20 5b 27 3a 59 27 2c 20  "],..    [':Y', 
08e0: 22 20 69 6e 66 69 6e 69 74 69 66 2c 22 5d 2c 0a  " infinitif,"],.
08f0: 20 20 20 20 5b 27 3a 50 27 2c 20 22 20 70 61 72      [':P', " par
0900: 74 69 63 69 70 65 20 70 72 c3 a9 73 65 6e 74 2c  ticipe pr..sent,
0910: 22 5d 2c 0a 20 20 20 20 5b 27 3a 51 27 2c 20 22  "],.    [':Q', "
0920: 20 70 61 72 74 69 63 69 70 65 20 70 61 73 73 c3   participe pass.
0930: a9 2c 22 5d 2c 0a 0a 20 20 20 20 5b 27 3a 49 70  .,"],..    [':Ip
0940: 27 2c 20 22 20 70 72 c3 a9 73 65 6e 74 2c 22 5d  ', " pr..sent,"]
0950: 2c 0a 20 20 20 20 5b 27 3a 49 71 27 2c 20 22 20  ,.    [':Iq', " 
0960: 69 6d 70 61 72 66 61 69 74 2c 22 5d 2c 0a 20 20  imparfait,"],.  
0970: 20 20 5b 27 3a 49 73 27 2c 20 22 20 70 61 73 73    [':Is', " pass
0980: c3 a9 20 73 69 6d 70 6c 65 2c 22 5d 2c 0a 20 20  .. simple,"],.  
0990: 20 20 5b 27 3a 49 66 27 2c 20 22 20 66 75 74 75    [':If', " futu
09a0: 72 2c 22 5d 2c 0a 20 20 20 20 5b 27 3a 4b 27 2c  r,"],.    [':K',
09b0: 20 22 20 63 6f 6e 64 69 74 69 6f 6e 6e 65 6c 20   " conditionnel 
09c0: 70 72 c3 a9 73 65 6e 74 2c 22 5d 2c 0a 20 20 20  pr..sent,"],.   
09d0: 20 5b 27 3a 53 70 27 2c 20 22 20 73 75 62 6a 6f   [':Sp', " subjo
09e0: 6e 63 74 69 66 20 70 72 c3 a9 73 65 6e 74 2c 22  nctif pr..sent,"
09f0: 5d 2c 0a 20 20 20 20 5b 27 3a 53 71 27 2c 20 22  ],.    [':Sq', "
0a00: 20 73 75 62 6a 6f 6e 63 74 69 66 20 69 6d 70 61   subjonctif impa
0a10: 72 66 61 69 74 2c 22 5d 2c 0a 20 20 20 20 5b 27  rfait,"],.    ['
0a20: 3a 45 27 2c 20 22 20 69 6d 70 c3 a9 72 61 74 69  :E', " imp..rati
0a30: 66 2c 22 5d 2c 0a 0a 20 20 20 20 5b 27 3a 31 73  f,"],..    [':1s
0a40: 27 2c 20 22 20 31 ca b3 e1 b5 89 20 70 2e 20 73  ', " 1..... p. s
0a50: 67 2e 2c 22 5d 2c 0a 20 20 20 20 5b 27 3a 31 c5  g.,"],.    [':1.
0a60: 9d 27 2c 20 22 20 70 72 c3 a9 73 65 6e 74 20 69  .', " pr..sent i
0a70: 6e 74 65 72 72 2e 20 31 ca b3 e1 b5 89 20 70 2e  nterr. 1..... p.
0a80: 20 73 67 2e 2c 22 5d 2c 0a 20 20 20 20 5b 27 3a   sg.,"],.    [':
0a90: 31 c5 9b 27 2c 20 22 20 70 72 c3 a9 73 65 6e 74  1..', " pr..sent
0aa0: 20 69 6e 74 65 72 72 2e 20 31 ca b3 e1 b5 89 20   interr. 1..... 
0ab0: 70 2e 20 73 67 2e 2c 22 5d 2c 0a 20 20 20 20 5b  p. sg.,"],.    [
0ac0: 27 3a 32 73 27 2c 20 22 20 32 e1 b5 89 20 70 2e  ':2s', " 2... p.
0ad0: 20 73 67 2e 2c 22 5d 2c 0a 20 20 20 20 5b 27 3a   sg.,"],.    [':
0ae0: 33 73 27 2c 20 22 20 33 e1 b5 89 20 70 2e 20 73  3s', " 3... p. s
0af0: 67 2e 2c 22 5d 2c 0a 20 20 20 20 5b 27 3a 31 70  g.,"],.    [':1p
0b00: 27 2c 20 22 20 31 ca b3 e1 b5 89 20 70 2e 20 70  ', " 1..... p. p
0b10: 6c 2e 2c 22 5d 2c 0a 20 20 20 20 5b 27 3a 32 70  l.,"],.    [':2p
0b20: 27 2c 20 22 20 32 e1 b5 89 20 70 2e 20 70 6c 2e  ', " 2... p. pl.
0b30: 2c 22 5d 2c 0a 20 20 20 20 5b 27 3a 33 70 27 2c  ,"],.    [':3p',
0b40: 20 22 20 33 e1 b5 89 20 70 2e 20 70 6c 2e 2c 22   " 3... p. pl.,"
0b50: 5d 2c 0a 20 20 20 20 5b 27 3a 33 70 21 27 2c 20  ],.    [':3p!', 
0b60: 22 20 33 e1 b5 89 20 70 2e 20 70 6c 2e 2c 22 5d  " 3... p. pl.,"]
0b70: 2c 0a 0a 20 20 20 20 5b 27 3b 53 27 2c 20 22 20  ,..    [';S', " 
0b80: 3a 20 73 79 6d 62 6f 6c 65 20 28 75 6e 69 74 c3  : symbole (unit.
0b90: a9 20 64 65 20 6d 65 73 75 72 65 29 22 5d 2c 0a  . de mesure)"],.
0ba0: 0a 20 20 20 20 5b 27 2f 2a 27 2c 20 22 22 5d 2c  .    ['/*', ""],
0bb0: 0a 20 20 20 20 5b 27 2f 43 27 2c 20 22 20 7b 63  .    ['/C', " {c
0bc0: 6c 61 73 73 69 71 75 65 7d 22 5d 2c 0a 20 20 20  lassique}"],.   
0bd0: 20 5b 27 2f 4d 27 2c 20 22 22 5d 2c 0a 20 20 20   ['/M', ""],.   
0be0: 20 5b 27 2f 52 27 2c 20 22 20 7b 72 c3 a9 66 6f   ['/R', " {r..fo
0bf0: 72 6d 65 7d 22 5d 2c 0a 20 20 20 20 5b 27 2f 41  rme}"],.    ['/A
0c00: 27 2c 20 22 22 5d 2c 0a 20 20 20 20 5b 27 2f 58  ', ""],.    ['/X
0c10: 27 2c 20 22 22 5d 2c 0a 20 20 20 20 5b 27 2f 4c  ', ""],.    ['/L
0c20: 27 2c 20 22 20 7b 6c 61 74 69 6e 7d 22 5d 0a 5d  ', " {latin}"].]
0c30: 29 3b 0a 0a 63 6f 6e 73 74 20 5f 64 50 46 58 20  );..const _dPFX 
0c40: 3d 20 6e 65 77 20 4d 61 70 28 5b 0a 20 20 20 20  = new Map([.    
0c50: 5b 27 64 27 2c 20 22 28 64 65 29 2c 20 64 c3 a9  ['d', "(de), d..
0c60: 74 65 72 6d 69 6e 61 6e 74 20 c3 a9 70 69 63 c3  terminant ..pic.
0c70: a8 6e 65 20 69 6e 76 61 72 69 61 62 6c 65 22 5d  .ne invariable"]
0c80: 2c 0a 20 20 20 20 5b 27 6c 27 2c 20 22 28 6c 65  ,.    ['l', "(le
0c90: 2f 6c 61 29 2c 20 64 c3 a9 74 65 72 6d 69 6e 61  /la), d..termina
0ca0: 6e 74 20 6d 61 73 63 75 6c 69 6e 2f 66 c3 a9 6d  nt masculin/f..m
0cb0: 69 6e 69 6e 20 73 69 6e 67 75 6c 69 65 72 22 5d  inin singulier"]
0cc0: 2c 0a 20 20 20 20 5b 27 6a 27 2c 20 22 28 6a 65  ,.    ['j', "(je
0cd0: 29 2c 20 70 72 6f 6e 6f 6d 20 70 65 72 73 6f 6e  ), pronom person
0ce0: 6e 65 6c 20 73 75 6a 65 74 2c 20 31 ca b3 e1 b5  nel sujet, 1....
0cf0: 89 20 70 65 72 73 2e 2c 20 c3 a9 70 69 63 c3 a8  . pers., ..pic..
0d00: 6e 65 20 73 69 6e 67 75 6c 69 65 72 22 5d 2c 0a  ne singulier"],.
0d10: 20 20 20 20 5b 27 6d 27 2c 20 22 28 6d 65 29 2c      ['m', "(me),
0d20: 20 70 72 6f 6e 6f 6d 20 70 65 72 73 6f 6e 6e 65   pronom personne
0d30: 6c 20 6f 62 6a 65 74 2c 20 31 ca b3 e1 b5 89 20  l objet, 1..... 
0d40: 70 65 72 73 2e 2c 20 c3 a9 70 69 63 c3 a8 6e 65  pers., ..pic..ne
0d50: 20 73 69 6e 67 75 6c 69 65 72 22 5d 2c 0a 20 20   singulier"],.  
0d60: 20 20 5b 27 74 27 2c 20 22 28 74 65 29 2c 20 70    ['t', "(te), p
0d70: 72 6f 6e 6f 6d 20 70 65 72 73 6f 6e 6e 65 6c 20  ronom personnel 
0d80: 6f 62 6a 65 74 2c 20 32 e1 b5 89 20 70 65 72 73  objet, 2... pers
0d90: 2e 2c 20 c3 a9 70 69 63 c3 a8 6e 65 20 73 69 6e  ., ..pic..ne sin
0da0: 67 75 6c 69 65 72 22 5d 2c 0a 20 20 20 20 5b 27  gulier"],.    ['
0db0: 73 27 2c 20 22 28 73 65 29 2c 20 70 72 6f 6e 6f  s', "(se), prono
0dc0: 6d 20 70 65 72 73 6f 6e 6e 65 6c 20 6f 62 6a 65  m personnel obje
0dd0: 74 2c 20 33 e1 b5 89 20 70 65 72 73 2e 2c 20 c3  t, 3... pers., .
0de0: a9 70 69 63 c3 a8 6e 65 20 73 69 6e 67 75 6c 69  .pic..ne singuli
0df0: 65 72 2f 70 6c 75 72 69 65 6c 22 5d 2c 0a 20 20  er/pluriel"],.  
0e00: 20 20 5b 27 6e 27 2c 20 22 28 6e 65 29 2c 20 61    ['n', "(ne), a
0e10: 64 76 65 72 62 65 20 64 65 20 6e c3 a9 67 61 74  dverbe de n..gat
0e20: 69 6f 6e 22 5d 2c 0a 20 20 20 20 5b 27 63 27 2c  ion"],.    ['c',
0e30: 20 22 28 63 65 29 2c 20 70 72 6f 6e 6f 6d 20 64   "(ce), pronom d
0e40: c3 a9 6d 6f 6e 73 74 72 61 74 69 66 2c 20 6d 61  ..monstratif, ma
0e50: 73 63 75 6c 69 6e 20 73 69 6e 67 75 6c 69 65 72  sculin singulier
0e60: 2f 70 6c 75 72 69 65 6c 22 5d 2c 0a 20 20 20 20  /pluriel"],.    
0e70: 5b 27 c3 a7 27 2c 20 22 28 c3 a7 61 29 2c 20 70  ['..', "(..a), p
0e80: 72 6f 6e 6f 6d 20 64 c3 a9 6d 6f 6e 73 74 72 61  ronom d..monstra
0e90: 74 69 66 2c 20 6d 61 73 63 75 6c 69 6e 20 73 69  tif, masculin si
0ea0: 6e 67 75 6c 69 65 72 22 5d 2c 0a 20 20 20 20 5b  ngulier"],.    [
0eb0: 27 71 75 27 2c 20 22 28 71 75 65 29 2c 20 63 6f  'qu', "(que), co
0ec0: 6e 6a 6f 6e 63 74 69 6f 6e 20 64 65 20 73 75 62  njonction de sub
0ed0: 6f 72 64 69 6e 61 74 69 6f 6e 22 5d 2c 0a 20 20  ordination"],.  
0ee0: 20 20 5b 27 6c 6f 72 73 71 75 27 2c 20 22 28 6c    ['lorsqu', "(l
0ef0: 6f 72 73 71 75 65 29 2c 20 63 6f 6e 6a 6f 6e 63  orsque), conjonc
0f00: 74 69 6f 6e 20 64 65 20 73 75 62 6f 72 64 69 6e  tion de subordin
0f10: 61 74 69 6f 6e 22 5d 2c 0a 20 20 20 20 5b 27 71  ation"],.    ['q
0f20: 75 6f 69 71 75 27 2c 20 22 28 71 75 6f 69 71 75  uoiqu', "(quoiqu
0f30: 65 29 2c 20 63 6f 6e 6a 6f 6e 63 74 69 6f 6e 20  e), conjonction 
0f40: 64 65 20 73 75 62 6f 72 64 69 6e 61 74 69 6f 6e  de subordination
0f50: 22 5d 2c 0a 20 20 20 20 5b 27 6a 75 73 71 75 27  "],.    ['jusqu'
0f60: 2c 20 22 28 6a 75 73 71 75 65 29 2c 20 70 72 c3  , "(jusque), pr.
0f70: a9 70 6f 73 69 74 69 6f 6e 22 5d 0a 5d 29 3b 0a  .position"].]);.
0f80: 0a 63 6f 6e 73 74 20 5f 64 41 44 20 3d 20 6e 65  .const _dAD = ne
0f90: 77 20 4d 61 70 28 5b 0a 20 20 20 20 5b 27 6a 65  w Map([.    ['je
0fa0: 27 2c 20 22 20 70 72 6f 6e 6f 6d 20 70 65 72 73  ', " pronom pers
0fb0: 6f 6e 6e 65 6c 20 73 75 6a 65 74 2c 20 31 ca b3  onnel sujet, 1..
0fc0: e1 b5 89 20 70 65 72 73 2e 20 73 69 6e 67 2e 22  ... pers. sing."
0fd0: 5d 2c 0a 20 20 20 20 5b 27 74 75 27 2c 20 22 20  ],.    ['tu', " 
0fe0: 70 72 6f 6e 6f 6d 20 70 65 72 73 6f 6e 6e 65 6c  pronom personnel
0ff0: 20 73 75 6a 65 74 2c 20 32 e1 b5 89 20 70 65 72   sujet, 2... per
1000: 73 2e 20 73 69 6e 67 2e 22 5d 2c 0a 20 20 20 20  s. sing."],.    
1010: 5b 27 69 6c 27 2c 20 22 20 70 72 6f 6e 6f 6d 20  ['il', " pronom 
1020: 70 65 72 73 6f 6e 6e 65 6c 20 73 75 6a 65 74 2c  personnel sujet,
1030: 20 33 e1 b5 89 20 70 65 72 73 2e 20 6d 61 73 63   3... pers. masc
1040: 2e 20 73 69 6e 67 2e 22 5d 2c 0a 20 20 20 20 5b  . sing."],.    [
1050: 27 6f 6e 27 2c 20 22 20 70 72 6f 6e 6f 6d 20 70  'on', " pronom p
1060: 65 72 73 6f 6e 6e 65 6c 20 73 75 6a 65 74 2c 20  ersonnel sujet, 
1070: 33 e1 b5 89 20 70 65 72 73 2e 20 73 69 6e 67 2e  3... pers. sing.
1080: 20 6f 75 20 70 6c 75 72 2e 22 5d 2c 0a 20 20 20   ou plur."],.   
1090: 20 5b 27 65 6c 6c 65 27 2c 20 22 20 70 72 6f 6e   ['elle', " pron
10a0: 6f 6d 20 70 65 72 73 6f 6e 6e 65 6c 20 73 75 6a  om personnel suj
10b0: 65 74 2c 20 33 e1 b5 89 20 70 65 72 73 2e 20 66  et, 3... pers. f
10c0: c3 a9 6d 2e 20 73 69 6e 67 2e 22 5d 2c 0a 20 20  ..m. sing."],.  
10d0: 20 20 5b 27 6e 6f 75 73 27 2c 20 22 20 70 72 6f    ['nous', " pro
10e0: 6e 6f 6d 20 70 65 72 73 6f 6e 6e 65 6c 20 73 75  nom personnel su
10f0: 6a 65 74 2f 6f 62 6a 65 74 2c 20 31 ca b3 e1 b5  jet/objet, 1....
1100: 89 20 70 65 72 73 2e 20 70 6c 75 72 2e 22 5d 2c  . pers. plur."],
1110: 0a 20 20 20 20 5b 27 76 6f 75 73 27 2c 20 22 20  .    ['vous', " 
1120: 70 72 6f 6e 6f 6d 20 70 65 72 73 6f 6e 6e 65 6c  pronom personnel
1130: 20 73 75 6a 65 74 2f 6f 62 6a 65 74 2c 20 32 e1   sujet/objet, 2.
1140: b5 89 20 70 65 72 73 2e 20 70 6c 75 72 2e 22 5d  .. pers. plur."]
1150: 2c 0a 20 20 20 20 5b 27 69 6c 73 27 2c 20 22 20  ,.    ['ils', " 
1160: 70 72 6f 6e 6f 6d 20 70 65 72 73 6f 6e 6e 65 6c  pronom personnel
1170: 20 73 75 6a 65 74 2c 20 33 e1 b5 89 20 70 65 72   sujet, 3... per
1180: 73 2e 20 6d 61 73 63 2e 20 70 6c 75 72 2e 22 5d  s. masc. plur."]
1190: 2c 0a 20 20 20 20 5b 27 65 6c 6c 65 73 27 2c 20  ,.    ['elles', 
11a0: 22 20 70 72 6f 6e 6f 6d 20 70 65 72 73 6f 6e 6e  " pronom personn
11b0: 65 6c 20 73 75 6a 65 74 2c 20 33 e1 b5 89 20 70  el sujet, 3... p
11c0: 65 72 73 2e 20 6d 61 73 63 2e 20 70 6c 75 72 2e  ers. masc. plur.
11d0: 22 5d 2c 0a 0a 20 20 20 20 5b 22 6c c3 a0 22 2c  "],..    ["l..",
11e0: 20 22 20 70 61 72 74 69 63 75 6c 65 20 64 c3 a9   " particule d..
11f0: 6d 6f 6e 73 74 72 61 74 69 76 65 22 5d 2c 0a 20  monstrative"],. 
1200: 20 20 20 5b 22 63 69 22 2c 20 22 20 70 61 72 74     ["ci", " part
1210: 69 63 75 6c 65 20 64 c3 a9 6d 6f 6e 73 74 72 61  icule d..monstra
1220: 74 69 76 65 22 5d 2c 0a 0a 20 20 20 20 5b 27 6c  tive"],..    ['l
1230: 65 27 2c 20 22 20 43 4f 44 2c 20 6d 61 73 63 2e  e', " COD, masc.
1240: 20 73 69 6e 67 2e 22 5d 2c 0a 20 20 20 20 5b 27   sing."],.    ['
1250: 6c 61 27 2c 20 22 20 43 4f 44 2c 20 66 c3 a9 6d  la', " COD, f..m
1260: 2e 20 73 69 6e 67 2e 22 5d 2c 0a 20 20 20 20 5b  . sing."],.    [
1270: 27 6c 65 73 27 2c 20 22 20 43 4f 44 2c 20 70 6c  'les', " COD, pl
1280: 75 72 2e 22 5d 2c 0a 0a 20 20 20 20 5b 27 6d 6f  ur."],..    ['mo
1290: 69 27 2c 20 22 20 43 4f 49 20 28 c3 a0 20 6d 6f  i', " COI (.. mo
12a0: 69 29 2c 20 73 69 6e 67 2e 22 5d 2c 0a 20 20 20  i), sing."],.   
12b0: 20 5b 27 74 6f 69 27 2c 20 22 20 43 4f 49 20 28   ['toi', " COI (
12c0: c3 a0 20 74 6f 69 29 2c 20 73 69 6e 67 2e 22 5d  .. toi), sing."]
12d0: 2c 0a 20 20 20 20 5b 27 6c 75 69 27 2c 20 22 20  ,.    ['lui', " 
12e0: 43 4f 49 20 28 c3 a0 20 6c 75 69 20 6f 75 20 c3  COI (.. lui ou .
12f0: a0 20 65 6c 6c 65 29 2c 20 73 69 6e 67 2e 22 5d  . elle), sing."]
1300: 2c 0a 20 20 20 20 5b 27 6e 6f 75 73 32 27 2c 20  ,.    ['nous2', 
1310: 22 20 43 4f 49 20 28 c3 a0 20 6e 6f 75 73 29 2c  " COI (.. nous),
1320: 20 70 6c 75 72 2e 22 5d 2c 0a 20 20 20 20 5b 27   plur."],.    ['
1330: 76 6f 75 73 32 27 2c 20 22 20 43 4f 49 20 28 c3  vous2', " COI (.
1340: a0 20 76 6f 75 73 29 2c 20 70 6c 75 72 2e 22 5d  . vous), plur."]
1350: 2c 0a 20 20 20 20 5b 27 6c 65 75 72 27 2c 20 22  ,.    ['leur', "
1360: 20 43 4f 49 20 28 c3 a0 20 65 75 78 20 6f 75 20   COI (.. eux ou 
1370: c3 a0 20 65 6c 6c 65 73 29 2c 20 70 6c 75 72 2e  .. elles), plur.
1380: 22 5d 2c 0a 0a 20 20 20 20 5b 27 79 27 2c 20 22  "],..    ['y', "
1390: 20 70 72 6f 6e 6f 6d 20 61 64 76 65 72 62 69 61   pronom adverbia
13a0: 6c 22 5d 2c 0a 20 20 20 20 5b 22 6d 27 79 22 2c  l"],.    ["m'y",
13b0: 20 22 20 28 6d 65 29 20 70 72 6f 6e 6f 6d 20 70   " (me) pronom p
13c0: 65 72 73 6f 6e 6e 65 6c 20 6f 62 6a 65 74 20 2b  ersonnel objet +
13d0: 20 28 79 29 20 70 72 6f 6e 6f 6d 20 61 64 76 65   (y) pronom adve
13e0: 72 62 69 61 6c 22 5d 2c 0a 20 20 20 20 5b 22 74  rbial"],.    ["t
13f0: 27 79 22 2c 20 22 20 28 74 65 29 20 70 72 6f 6e  'y", " (te) pron
1400: 6f 6d 20 70 65 72 73 6f 6e 6e 65 6c 20 6f 62 6a  om personnel obj
1410: 65 74 20 2b 20 28 79 29 20 70 72 6f 6e 6f 6d 20  et + (y) pronom 
1420: 61 64 76 65 72 62 69 61 6c 22 5d 2c 0a 20 20 20  adverbial"],.   
1430: 20 5b 22 73 27 79 22 2c 20 22 20 28 73 65 29 20   ["s'y", " (se) 
1440: 70 72 6f 6e 6f 6d 20 70 65 72 73 6f 6e 6e 65 6c  pronom personnel
1450: 20 6f 62 6a 65 74 20 2b 20 28 79 29 20 70 72 6f   objet + (y) pro
1460: 6e 6f 6d 20 61 64 76 65 72 62 69 61 6c 22 5d 2c  nom adverbial"],
1470: 0a 0a 20 20 20 20 5b 27 65 6e 27 2c 20 22 20 70  ..    ['en', " p
1480: 72 6f 6e 6f 6d 20 61 64 76 65 72 62 69 61 6c 22  ronom adverbial"
1490: 5d 2c 0a 20 20 20 20 5b 22 6d 27 65 6e 22 2c 20  ],.    ["m'en", 
14a0: 22 20 28 6d 65 29 20 70 72 6f 6e 6f 6d 20 70 65  " (me) pronom pe
14b0: 72 73 6f 6e 6e 65 6c 20 6f 62 6a 65 74 20 2b 20  rsonnel objet + 
14c0: 28 65 6e 29 20 70 72 6f 6e 6f 6d 20 61 64 76 65  (en) pronom adve
14d0: 72 62 69 61 6c 22 5d 2c 0a 20 20 20 20 5b 22 74  rbial"],.    ["t
14e0: 27 65 6e 22 2c 20 22 20 28 74 65 29 20 70 72 6f  'en", " (te) pro
14f0: 6e 6f 6d 20 70 65 72 73 6f 6e 6e 65 6c 20 6f 62  nom personnel ob
1500: 6a 65 74 20 2b 20 28 65 6e 29 20 70 72 6f 6e 6f  jet + (en) prono
1510: 6d 20 61 64 76 65 72 62 69 61 6c 22 5d 2c 0a 20  m adverbial"],. 
1520: 20 20 20 5b 22 73 27 65 6e 22 2c 20 22 20 28 73     ["s'en", " (s
1530: 65 29 20 70 72 6f 6e 6f 6d 20 70 65 72 73 6f 6e  e) pronom person
1540: 6e 65 6c 20 6f 62 6a 65 74 20 2b 20 28 65 6e 29  nel objet + (en)
1550: 20 70 72 6f 6e 6f 6d 20 61 64 76 65 72 62 69 61   pronom adverbia
1560: 6c 22 5d 0a 5d 29 3b 0a 0a 63 6f 6e 73 74 20 5f  l"].]);..const _
1570: 64 53 65 70 61 72 61 74 6f 72 20 3d 20 6e 65 77  dSeparator = new
1580: 20 4d 61 70 28 5b 0a 20 20 20 20 5b 27 2e 27 2c   Map([.    ['.',
1590: 20 22 70 6f 69 6e 74 22 5d 2c 0a 20 20 20 20 5b   "point"],.    [
15a0: 27 c2 b7 27 2c 20 22 70 6f 69 6e 74 20 6d c3 a9  '..', "point m..
15b0: 64 69 61 6e 22 5d 2c 0a 20 20 20 20 5b 27 e2 80  dian"],.    ['..
15c0: a6 27 2c 20 22 70 6f 69 6e 74 73 20 64 65 20 73  .', "points de s
15d0: 75 73 70 65 6e 73 69 6f 6e 22 5d 2c 0a 20 20 20  uspension"],.   
15e0: 20 5b 27 3a 27 2c 20 22 64 65 75 78 2d 70 6f 69   [':', "deux-poi
15f0: 6e 74 73 22 5d 2c 0a 20 20 20 20 5b 27 3b 27 2c  nts"],.    [';',
1600: 20 22 70 6f 69 6e 74 2d 76 69 72 67 75 6c 65 22   "point-virgule"
1610: 5d 2c 0a 20 20 20 20 5b 27 2c 27 2c 20 22 76 69  ],.    [',', "vi
1620: 72 67 75 6c 65 22 5d 2c 0a 20 20 20 20 5b 27 3f  rgule"],.    ['?
1630: 27 2c 20 22 70 6f 69 6e 74 20 64 e2 80 99 69 6e  ', "point d...in
1640: 74 65 72 72 6f 67 61 74 69 6f 6e 22 5d 2c 0a 20  terrogation"],. 
1650: 20 20 20 5b 27 21 27 2c 20 22 70 6f 69 6e 74 20     ['!', "point 
1660: 64 e2 80 99 65 78 63 6c 61 6d 61 74 69 6f 6e 22  d...exclamation"
1670: 5d 2c 0a 20 20 20 20 5b 27 28 27 2c 20 22 70 61  ],.    ['(', "pa
1680: 72 65 6e 74 68 c3 a8 73 65 20 6f 75 76 72 61 6e  renth..se ouvran
1690: 74 65 22 5d 2c 0a 20 20 20 20 5b 27 29 27 2c 20  te"],.    [')', 
16a0: 22 70 61 72 65 6e 74 68 c3 a8 73 65 20 66 65 72  "parenth..se fer
16b0: 6d 61 6e 74 65 22 5d 2c 0a 20 20 20 20 5b 27 5b  mante"],.    ['[
16c0: 27 2c 20 22 63 72 6f 63 68 65 74 20 6f 75 76 72  ', "crochet ouvr
16d0: 61 6e 74 65 22 5d 2c 0a 20 20 20 20 5b 27 5d 27  ante"],.    [']'
16e0: 2c 20 22 63 72 6f 63 68 65 74 20 66 65 72 6d 61  , "crochet ferma
16f0: 6e 74 65 22 5d 2c 0a 20 20 20 20 5b 27 7b 27 2c  nte"],.    ['{',
1700: 20 22 61 63 63 6f 6c 61 64 65 20 6f 75 76 72 61   "accolade ouvra
1710: 6e 74 65 22 5d 2c 0a 20 20 20 20 5b 27 7d 27 2c  nte"],.    ['}',
1720: 20 22 61 63 63 6f 6c 61 64 65 20 66 65 72 6d 61   "accolade ferma
1730: 6e 74 65 22 5d 2c 0a 20 20 20 20 5b 27 2d 27 2c  nte"],.    ['-',
1740: 20 22 74 69 72 65 74 22 5d 2c 0a 20 20 20 20 5b   "tiret"],.    [
1750: 27 e2 80 94 27 2c 20 22 74 69 72 65 74 20 63 61  '...', "tiret ca
1760: 64 72 61 74 69 6e 22 5d 2c 0a 20 20 20 20 5b 27  dratin"],.    ['
1770: e2 80 93 27 2c 20 22 74 69 72 65 74 20 64 65 6d  ...', "tiret dem
1780: 69 2d 63 61 64 72 61 74 69 6e 22 5d 2c 0a 20 20  i-cadratin"],.  
1790: 20 20 5b 27 c2 ab 27 2c 20 22 67 75 69 6c 6c 65    ['..', "guille
17a0: 6d 65 74 20 6f 75 76 72 61 6e 74 20 28 63 68 65  met ouvrant (che
17b0: 76 72 6f 6e 73 29 22 5d 2c 0a 20 20 20 20 5b 27  vrons)"],.    ['
17c0: c2 bb 27 2c 20 22 67 75 69 6c 6c 65 6d 65 74 20  ..', "guillemet 
17d0: 66 65 72 6d 61 6e 74 20 28 63 68 65 76 72 6f 6e  fermant (chevron
17e0: 73 29 22 5d 2c 0a 20 20 20 20 5b 27 e2 80 9c 27  s)"],.    ['...'
17f0: 2c 20 22 67 75 69 6c 6c 65 6d 65 74 20 6f 75 76  , "guillemet ouv
1800: 72 61 6e 74 20 64 6f 75 62 6c 65 22 5d 2c 0a 20  rant double"],. 
1810: 20 20 20 5b 27 e2 80 9d 27 2c 20 22 67 75 69 6c     ['...', "guil
1820: 6c 65 6d 65 74 20 66 65 72 6d 61 6e 74 20 64 6f  lemet fermant do
1830: 75 62 6c 65 22 5d 2c 0a 20 20 20 20 5b 27 e2 80  uble"],.    ['..
1840: 98 27 2c 20 22 67 75 69 6c 6c 65 6d 65 74 20 6f  .', "guillemet o
1850: 75 76 72 61 6e 74 22 5d 2c 0a 20 20 20 20 5b 27  uvrant"],.    ['
1860: e2 80 99 27 2c 20 22 67 75 69 6c 6c 65 6d 65 74  ...', "guillemet
1870: 20 66 65 72 6d 61 6e 74 22 5d 2c 0a 20 20 20 20   fermant"],.    
1880: 5b 27 2f 27 2c 20 22 73 69 67 6e 65 20 64 65 20  ['/', "signe de 
1890: 6c 61 20 64 69 76 69 73 69 6f 6e 22 5d 2c 0a 20  la division"],. 
18a0: 20 20 20 5b 27 2b 27 2c 20 22 73 69 67 6e 65 20     ['+', "signe 
18b0: 64 65 20 6c e2 80 99 61 64 64 69 74 69 6f 6e 22  de l...addition"
18c0: 5d 2c 0a 20 20 20 20 5b 27 2a 27 2c 20 22 73 69  ],.    ['*', "si
18d0: 67 6e 65 20 64 65 20 6c 61 20 6d 75 6c 74 69 70  gne de la multip
18e0: 6c 69 63 61 74 69 6f 6e 22 5d 2c 0a 20 20 20 20  lication"],.    
18f0: 5b 27 3d 27 2c 20 22 73 69 67 6e 65 20 64 65 20  ['=', "signe de 
1900: 6c e2 80 99 c3 a9 67 61 6c 69 74 c3 a9 22 5d 2c  l.....galit.."],
1910: 0a 20 20 20 20 5b 27 3c 27 2c 20 22 69 6e 66 c3  .    ['<', "inf.
1920: a9 72 69 65 75 72 20 c3 a0 22 5d 2c 0a 20 20 20  .rieur .."],.   
1930: 20 5b 27 3e 27 2c 20 22 73 75 70 c3 a9 72 69 65   ['>', "sup..rie
1940: 75 72 20 c3 a0 22 5d 2c 0a 5d 29 3b 0a 0a 0a 63  ur .."],.]);...c
1950: 6c 61 73 73 20 4c 65 78 69 63 6f 67 72 61 70 68  lass Lexicograph
1960: 65 20 7b 0a 0a 20 20 20 20 63 6f 6e 73 74 72 75  e {..    constru
1970: 63 74 6f 72 20 28 6f 44 69 63 74 2c 20 6f 54 6f  ctor (oDict, oTo
1980: 6b 65 6e 69 7a 65 72 2c 20 6f 4c 6f 63 47 72 61  kenizer, oLocGra
1990: 70 68 29 20 7b 0a 20 20 20 20 20 20 20 20 74 68  ph) {.        th
19a0: 69 73 2e 6f 44 69 63 74 20 3d 20 6f 44 69 63 74  is.oDict = oDict
19b0: 3b 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 6f  ;.        this.o
19c0: 54 6f 6b 65 6e 69 7a 65 72 20 3d 20 6f 54 6f 6b  Tokenizer = oTok
19d0: 65 6e 69 7a 65 72 3b 0a 20 20 20 20 20 20 20 20  enizer;.        
19e0: 74 68 69 73 2e 6f 4c 6f 63 47 72 61 70 68 20 3d  this.oLocGraph =
19f0: 20 4a 53 4f 4e 2e 70 61 72 73 65 28 6f 4c 6f 63   JSON.parse(oLoc
1a00: 47 72 61 70 68 29 3b 0a 0a 20 20 20 20 20 20 20  Graph);..       
1a10: 20 74 68 69 73 2e 5f 7a 45 6c 69 64 65 64 50 72   this._zElidedPr
1a20: 65 66 69 78 20 3d 20 6e 65 77 20 52 65 67 45 78  efix = new RegEx
1a30: 70 28 22 5e 28 5b 64 6c 6a 6d 74 73 6e 63 c3 a7  p("^([dljmtsnc..
1a40: 5d 7c 71 75 6f 69 71 75 7c 6c 6f 72 73 71 75 7c  ]|quoiqu|lorsqu|
1a50: 6a 75 73 71 75 7c 70 75 69 73 71 75 7c 71 75 29  jusqu|puisqu|qu)
1a60: 5b 27 e2 80 99 5d 28 2e 2b 29 22 2c 20 22 69 22  ['...](.+)", "i"
1a70: 29 3b 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e  );.        this.
1a80: 5f 7a 43 6f 6d 70 6f 75 6e 64 57 6f 72 64 20 3d  _zCompoundWord =
1a90: 20 6e 65 77 20 52 65 67 45 78 70 28 22 28 5b 61   new RegExp("([a
1aa0: 2d 7a 41 2d 5a c3 a0 2d c3 b6 30 2d 39 c3 80 2d  -zA-Z..-..0-9..-
1ab0: c3 96 c3 b8 2d c3 bf c3 98 2d c3 9f c4 80 2d ca  ....-....-....-.
1ac0: af 5d 2b 29 2d 28 28 3f 3a 6c 65 73 3f 7c 6c 61  .]+)-((?:les?|la
1ad0: 29 2d 28 3f 3a 6d 6f 69 7c 74 6f 69 7c 6c 75 69  )-(?:moi|toi|lui
1ae0: 7c 5b 6e 76 5d 6f 75 73 7c 6c 65 75 72 29 7c 74  |[nv]ous|leur)|t
1af0: 2d 28 3f 3a 69 6c 7c 65 6c 6c 65 7c 6f 6e 29 7c  -(?:il|elle|on)|
1b00: 79 7c 65 6e 7c 5b 6d 74 73 5d 5b e2 80 99 27 5d  y|en|[mts][...']
1b10: 28 3f 3a 79 7c 65 6e 29 7c 6c 65 73 3f 7c 6c 5b  (?:y|en)|les?|l[
1b20: 61 c3 a0 5d 7c 5b 6d 74 5d 6f 69 7c 6c 65 75 72  a..]|[mt]oi|leur
1b30: 7c 6c 75 69 7c 6a 65 7c 74 75 7c 69 6c 73 3f 7c  |lui|je|tu|ils?|
1b40: 65 6c 6c 65 73 3f 7c 6f 6e 7c 5b 6e 76 5d 6f 75  elles?|on|[nv]ou
1b50: 73 29 24 22 2c 20 22 69 22 29 3b 0a 20 20 20 20  s)$", "i");.    
1b60: 20 20 20 20 74 68 69 73 2e 5f 7a 54 61 67 20 3d      this._zTag =
1b70: 20 6e 65 77 20 52 65 67 45 78 70 28 22 5b 3a 3b   new RegExp("[:;
1b80: 2f 5d 5b 61 2d 7a 41 2d 5a c3 a0 2d c3 b6 30 2d  /][a-zA-Z..-..0-
1b90: 39 c3 80 2d c3 96 c3 b8 2d c3 bf c3 98 2d c3 9f  9..-....-....-..
1ba0: c4 80 2d ca af 2a e1 b9 bc 5d 5b 5e 3a 3b 2f 5d  ..-..*...][^:;/]
1bb0: 2a 22 2c 20 22 67 22 29 3b 0a 0a 20 20 20 20 7d  *", "g");..    }
1bc0: 0a 0a 20 20 20 20 67 65 74 49 6e 66 6f 46 6f 72  ..    getInfoFor
1bd0: 54 6f 6b 65 6e 20 28 6f 54 6f 6b 65 6e 29 20 7b  Token (oToken) {
1be0: 0a 20 20 20 20 20 20 20 20 2f 2f 20 54 6f 6b 65  .        // Toke
1bf0: 6e 3a 20 2e 73 54 79 70 65 2c 20 2e 73 56 61 6c  n: .sType, .sVal
1c00: 75 65 2c 20 2e 6e 53 74 61 72 74 2c 20 2e 6e 45  ue, .nStart, .nE
1c10: 6e 64 0a 20 20 20 20 20 20 20 20 2f 2f 20 72 65  nd.        // re
1c20: 74 75 72 6e 20 61 20 6f 62 6a 65 63 74 20 7b 73  turn a object {s
1c30: 54 79 70 65 2c 20 73 56 61 6c 75 65 2c 20 61 4c  Type, sValue, aL
1c40: 61 62 65 6c 7d 0a 20 20 20 20 20 20 20 20 6c 65  abel}.        le
1c50: 74 20 6d 20 3d 20 6e 75 6c 6c 3b 0a 20 20 20 20  t m = null;.    
1c60: 20 20 20 20 74 72 79 20 7b 0a 20 20 20 20 20 20      try {.      
1c70: 20 20 20 20 20 20 73 77 69 74 63 68 20 28 6f 54        switch (oT
1c80: 6f 6b 65 6e 2e 73 54 79 70 65 29 20 7b 0a 20 20  oken.sType) {.  
1c90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
1ca0: 73 65 20 27 53 45 50 41 52 41 54 4f 52 27 3a 0a  se 'SEPARATOR':.
1cb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cc0: 20 20 20 20 72 65 74 75 72 6e 20 7b 0a 20 20 20      return {.   
1cd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ce0: 20 20 20 20 20 73 54 79 70 65 3a 20 6f 54 6f 6b       sType: oTok
1cf0: 65 6e 2e 73 54 79 70 65 2c 0a 20 20 20 20 20 20  en.sType,.      
1d00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d10: 20 20 73 56 61 6c 75 65 3a 20 6f 54 6f 6b 65 6e    sValue: oToken
1d20: 2e 73 56 61 6c 75 65 2c 0a 20 20 20 20 20 20 20  .sValue,.       
1d30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d40: 20 61 4c 61 62 65 6c 3a 20 5b 5f 64 53 65 70 61   aLabel: [_dSepa
1d50: 72 61 74 6f 72 2e 67 6c 5f 67 65 74 28 6f 54 6f  rator.gl_get(oTo
1d60: 6b 65 6e 2e 73 56 61 6c 75 65 2c 20 22 63 61 72  ken.sValue, "car
1d70: 61 63 74 c3 a8 72 65 20 69 6e 64 c3 a9 74 65 72  act..re ind..ter
1d80: 6d 69 6e c3 a9 22 29 5d 0a 20 20 20 20 20 20 20  min..")].       
1d90: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 3b 0a               };.
1da0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1db0: 20 20 20 20 62 72 65 61 6b 3b 0a 20 20 20 20 20      break;.     
1dc0: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
1dd0: 27 4e 55 4d 27 3a 0a 20 20 20 20 20 20 20 20 20  'NUM':.         
1de0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
1df0: 6e 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  n {.            
1e00: 20 20 20 20 20 20 20 20 20 20 20 20 73 54 79 70              sTyp
1e10: 65 3a 20 6f 54 6f 6b 65 6e 2e 73 54 79 70 65 2c  e: oToken.sType,
1e20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1e30: 20 20 20 20 20 20 20 20 20 73 56 61 6c 75 65 3a           sValue:
1e40: 20 6f 54 6f 6b 65 6e 2e 73 56 61 6c 75 65 2c 0a   oToken.sValue,.
1e50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e60: 20 20 20 20 20 20 20 20 61 4c 61 62 65 6c 3a 20          aLabel: 
1e70: 5b 22 6e 6f 6d 62 72 65 22 5d 0a 20 20 20 20 20  ["nombre"].     
1e80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
1e90: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ;.              
1ea0: 20 20 20 20 20 20 62 72 65 61 6b 3b 0a 20 20 20        break;.   
1eb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73               cas
1ec0: 65 20 27 4c 49 4e 4b 27 3a 0a 20 20 20 20 20 20  e 'LINK':.      
1ed0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
1ee0: 74 75 72 6e 20 7b 0a 20 20 20 20 20 20 20 20 20  turn {.         
1ef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
1f00: 54 79 70 65 3a 20 6f 54 6f 6b 65 6e 2e 73 54 79  Type: oToken.sTy
1f10: 70 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20  pe,.            
1f20: 20 20 20 20 20 20 20 20 20 20 20 20 73 56 61 6c              sVal
1f30: 75 65 3a 20 6f 54 6f 6b 65 6e 2e 73 56 61 6c 75  ue: oToken.sValu
1f40: 65 2e 73 6c 69 63 65 28 30 2c 20 34 30 29 20 2b  e.slice(0, 40) +
1f50: 20 22 e2 80 a6 22 2c 0a 20 20 20 20 20 20 20 20   "...",.        
1f60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f70: 61 4c 61 62 65 6c 3a 20 5b 22 68 79 70 65 72 6c  aLabel: ["hyperl
1f80: 69 65 6e 22 5d 0a 20 20 20 20 20 20 20 20 20 20  ien"].          
1f90: 20 20 20 20 20 20 20 20 20 20 7d 3b 0a 20 20 20            };.   
1fa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fb0: 20 62 72 65 61 6b 3b 0a 20 20 20 20 20 20 20 20   break;.        
1fc0: 20 20 20 20 20 20 20 20 63 61 73 65 20 27 45 4c          case 'EL
1fd0: 50 46 58 27 3a 0a 20 20 20 20 20 20 20 20 20 20  PFX':.          
1fe0: 20 20 20 20 20 20 20 20 20 20 6c 65 74 20 73 54            let sT
1ff0: 65 6d 70 20 3d 20 6f 54 6f 6b 65 6e 2e 73 56 61  emp = oToken.sVa
2000: 6c 75 65 2e 72 65 70 6c 61 63 65 28 22 e2 80 99  lue.replace("...
2010: 22 2c 20 22 22 29 2e 72 65 70 6c 61 63 65 28 22  ", "").replace("
2020: 27 22 2c 20 22 22 29 2e 72 65 70 6c 61 63 65 28  '", "").replace(
2030: 22 60 22 2c 20 22 22 29 2e 74 6f 4c 6f 77 65 72  "`", "").toLower
2040: 43 61 73 65 28 29 3b 0a 20 20 20 20 20 20 20 20  Case();.        
2050: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2060: 72 6e 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  rn {.           
2070: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 54 79               sTy
2080: 70 65 3a 20 6f 54 6f 6b 65 6e 2e 73 54 79 70 65  pe: oToken.sType
2090: 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ,.              
20a0: 20 20 20 20 20 20 20 20 20 20 73 56 61 6c 75 65            sValue
20b0: 3a 20 6f 54 6f 6b 65 6e 2e 73 56 61 6c 75 65 2c  : oToken.sValue,
20c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
20d0: 20 20 20 20 20 20 20 20 20 61 4c 61 62 65 6c 3a           aLabel:
20e0: 20 5b 5f 64 50 46 58 2e 67 6c 5f 67 65 74 28 73   [_dPFX.gl_get(s
20f0: 54 65 6d 70 2c 20 22 70 72 c3 a9 66 69 78 65 20  Temp, "pr..fixe 
2100: c3 a9 6c 69 64 c3 a9 20 69 6e 63 6f 6e 6e 75 22  ..lid.. inconnu"
2110: 29 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )].             
2120: 20 20 20 20 20 20 20 7d 3b 0a 20 20 20 20 20 20         };.      
2130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72                br
2140: 65 61 6b 3b 0a 20 20 20 20 20 20 20 20 20 20 20  eak;.           
2150: 20 20 20 20 20 63 61 73 65 20 27 46 4f 4c 44 45       case 'FOLDE
2160: 52 27 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20  R':.            
2170: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 7b          return {
2180: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2190: 20 20 20 20 20 20 20 20 20 73 54 79 70 65 3a 20           sType: 
21a0: 6f 54 6f 6b 65 6e 2e 73 54 79 70 65 2c 0a 20 20  oToken.sType,.  
21b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21c0: 20 20 20 20 20 20 73 56 61 6c 75 65 3a 20 6f 54        sValue: oT
21d0: 6f 6b 65 6e 2e 73 56 61 6c 75 65 2e 73 6c 69 63  oken.sValue.slic
21e0: 65 28 30 2c 20 34 30 29 20 2b 20 22 e2 80 a6 22  e(0, 40) + "..."
21f0: 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ,.              
2200: 20 20 20 20 20 20 20 20 20 20 61 4c 61 62 65 6c            aLabel
2210: 3a 20 5b 22 64 6f 73 73 69 65 72 22 5d 0a 20 20  : ["dossier"].  
2220: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2230: 20 20 7d 3b 0a 20 20 20 20 20 20 20 20 20 20 20    };.           
2240: 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0a           break;.
2250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2260: 63 61 73 65 20 27 57 4f 52 44 27 3a 0a 20 20 20  case 'WORD':.   
2270: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2280: 20 69 66 20 28 6f 54 6f 6b 65 6e 2e 73 56 61 6c   if (oToken.sVal
2290: 75 65 2e 67 6c 5f 63 6f 75 6e 74 28 22 2d 22 29  ue.gl_count("-")
22a0: 20 3e 20 34 29 20 7b 0a 20 20 20 20 20 20 20 20   > 4) {.        
22b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22c0: 72 65 74 75 72 6e 20 7b 0a 20 20 20 20 20 20 20  return {.       
22d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22e0: 20 20 20 20 20 73 54 79 70 65 3a 20 22 43 4f 4d       sType: "COM
22f0: 50 4c 45 58 22 2c 0a 20 20 20 20 20 20 20 20 20  PLEX",.         
2300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2310: 20 20 20 73 56 61 6c 75 65 3a 20 6f 54 6f 6b 65     sValue: oToke
2320: 6e 2e 73 56 61 6c 75 65 2c 0a 20 20 20 20 20 20  n.sValue,.      
2330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2340: 20 20 20 20 20 20 61 4c 61 62 65 6c 3a 20 5b 22        aLabel: ["
2350: c3 a9 6c c3 a9 6d 65 6e 74 20 63 6f 6d 70 6c 65  ..l..ment comple
2360: 78 65 20 69 6e 64 c3 a9 74 65 72 6d 69 6e c3 a9  xe ind..termin..
2370: 22 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  "].             
2380: 20 20 20 20 20 20 20 20 20 20 20 7d 3b 0a 20 20             };.  
2390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23a0: 20 20 7d 20 65 6c 73 65 20 69 66 20 28 74 68 69    } else if (thi
23b0: 73 2e 6f 44 69 63 74 2e 69 73 56 61 6c 69 64 54  s.oDict.isValidT
23c0: 6f 6b 65 6e 28 6f 54 6f 6b 65 6e 2e 73 56 61 6c  oken(oToken.sVal
23d0: 75 65 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20  ue)) {.         
23e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
23f0: 65 74 20 6c 4d 6f 72 70 68 20 3d 20 74 68 69 73  et lMorph = this
2400: 2e 6f 44 69 63 74 2e 67 65 74 4d 6f 72 70 68 28  .oDict.getMorph(
2410: 6f 54 6f 6b 65 6e 2e 73 56 61 6c 75 65 29 3b 0a  oToken.sValue);.
2420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2430: 20 20 20 20 20 20 20 20 6c 65 74 20 61 45 6c 65          let aEle
2440: 6d 20 3d 20 5b 5d 3b 0a 20 20 20 20 20 20 20 20  m = [];.        
2450: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2460: 66 6f 72 20 28 6c 65 74 20 73 20 6f 66 20 6c 4d  for (let s of lM
2470: 6f 72 70 68 29 20 7b 0a 20 20 20 20 20 20 20 20  orph) {.        
2480: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2490: 20 20 20 20 69 66 20 28 73 2e 69 6e 63 6c 75 64      if (s.includ
24a0: 65 73 28 22 3a 22 29 29 20 61 45 6c 65 6d 2e 70  es(":")) aElem.p
24b0: 75 73 68 28 74 68 69 73 2e 5f 66 6f 72 6d 61 74  ush(this._format
24c0: 54 61 67 73 28 73 29 29 3b 0a 20 20 20 20 20 20  Tags(s));.      
24d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24e0: 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20    }.            
24f0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2500: 72 6e 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  rn {.           
2510: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2520: 20 73 54 79 70 65 3a 20 6f 54 6f 6b 65 6e 2e 73   sType: oToken.s
2530: 54 79 70 65 2c 0a 20 20 20 20 20 20 20 20 20 20  Type,.          
2540: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2550: 20 20 73 56 61 6c 75 65 3a 20 6f 54 6f 6b 65 6e    sValue: oToken
2560: 2e 73 56 61 6c 75 65 2c 0a 20 20 20 20 20 20 20  .sValue,.       
2570: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2580: 20 20 20 20 20 61 4c 61 62 65 6c 3a 20 61 45 6c       aLabel: aEl
2590: 65 6d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  em.             
25a0: 20 20 20 20 20 20 20 20 20 20 20 7d 3b 0a 20 20             };.  
25b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25c0: 20 20 7d 20 65 6c 73 65 20 69 66 20 28 6d 20 3d    } else if (m =
25d0: 20 74 68 69 73 2e 5f 7a 43 6f 6d 70 6f 75 6e 64   this._zCompound
25e0: 57 6f 72 64 2e 65 78 65 63 28 6f 54 6f 6b 65 6e  Word.exec(oToken
25f0: 2e 73 56 61 6c 75 65 29 29 20 7b 0a 20 20 20 20  .sValue)) {.    
2600: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2610: 20 20 20 20 2f 2f 20 6d 6f 74 73 20 63 6f 6d 70      // mots comp
2620: 6f 73 c3 a9 73 0a 20 20 20 20 20 20 20 20 20 20  os..s.          
2630: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 65                le
2640: 74 20 6c 4d 6f 72 70 68 20 3d 20 74 68 69 73 2e  t lMorph = this.
2650: 6f 44 69 63 74 2e 67 65 74 4d 6f 72 70 68 28 6d  oDict.getMorph(m
2660: 5b 31 5d 29 3b 0a 20 20 20 20 20 20 20 20 20 20  [1]);.          
2670: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 65                le
2680: 74 20 61 45 6c 65 6d 20 3d 20 5b 5d 3b 0a 20 20  t aElem = [];.  
2690: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26a0: 20 20 20 20 20 20 66 6f 72 20 28 6c 65 74 20 73        for (let s
26b0: 20 6f 66 20 6c 4d 6f 72 70 68 29 20 7b 0a 20 20   of lMorph) {.  
26c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26d0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 2e            if (s.
26e0: 69 6e 63 6c 75 64 65 73 28 22 3a 22 29 29 20 61  includes(":")) a
26f0: 45 6c 65 6d 2e 70 75 73 68 28 74 68 69 73 2e 5f  Elem.push(this._
2700: 66 6f 72 6d 61 74 54 61 67 73 28 73 29 29 3b 0a  formatTags(s));.
2710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2720: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20          }.      
2730: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2740: 20 20 61 45 6c 65 6d 2e 70 75 73 68 28 22 2d 22    aElem.push("-"
2750: 20 2b 20 6d 5b 32 5d 20 2b 20 22 3a 20 22 20 2b   + m[2] + ": " +
2760: 20 74 68 69 73 2e 5f 66 6f 72 6d 61 74 53 75 66   this._formatSuf
2770: 66 69 78 28 6d 5b 32 5d 2e 74 6f 4c 6f 77 65 72  fix(m[2].toLower
2780: 43 61 73 65 28 29 29 29 3b 0a 20 20 20 20 20 20  Case()));.      
2790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27a0: 20 20 72 65 74 75 72 6e 20 7b 0a 20 20 20 20 20    return {.     
27b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27c0: 20 20 20 20 20 20 20 73 54 79 70 65 3a 20 6f 54         sType: oT
27d0: 6f 6b 65 6e 2e 73 54 79 70 65 2c 0a 20 20 20 20  oken.sType,.    
27e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27f0: 20 20 20 20 20 20 20 20 73 56 61 6c 75 65 3a 20          sValue: 
2800: 6f 54 6f 6b 65 6e 2e 73 56 61 6c 75 65 2c 0a 20  oToken.sValue,. 
2810: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2820: 20 20 20 20 20 20 20 20 20 20 20 61 4c 61 62 65             aLabe
2830: 6c 3a 20 61 45 6c 65 6d 0a 20 20 20 20 20 20 20  l: aElem.       
2840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2850: 20 7d 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20   };.            
2860: 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b          } else {
2870: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2880: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2890: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  {.              
28a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 54                sT
28b0: 79 70 65 3a 20 22 55 4e 4b 4e 4f 57 4e 22 2c 0a  ype: "UNKNOWN",.
28c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28d0: 20 20 20 20 20 20 20 20 20 20 20 20 73 56 61 6c              sVal
28e0: 75 65 3a 20 6f 54 6f 6b 65 6e 2e 73 56 61 6c 75  ue: oToken.sValu
28f0: 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e,.             
2900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61                 a
2910: 4c 61 62 65 6c 3a 20 5b 22 69 6e 63 6f 6e 6e 75  Label: ["inconnu
2920: 20 64 75 20 64 69 63 74 69 6f 6e 6e 61 69 72 65   du dictionnaire
2930: 22 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  "].             
2940: 20 20 20 20 20 20 20 20 20 20 20 7d 3b 0a 20 20             };.  
2950: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2960: 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20    }.            
2970: 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0a 20          break;. 
2980: 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20             }.   
2990: 20 20 20 20 20 7d 20 63 61 74 63 68 20 28 65 29       } catch (e)
29a0: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 68   {.            h
29b0: 65 6c 70 65 72 73 2e 6c 6f 67 65 72 72 6f 72 28  elpers.logerror(
29c0: 65 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20  e);.        }.  
29d0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c        return nul
29e0: 6c 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 5f 66  l;.    }..    _f
29f0: 6f 72 6d 61 74 54 61 67 73 20 28 73 54 61 67 73  ormatTags (sTags
2a00: 29 20 7b 0a 20 20 20 20 20 20 20 20 6c 65 74 20  ) {.        let 
2a10: 73 52 65 73 20 3d 20 22 22 3b 0a 20 20 20 20 20  sRes = "";.     
2a20: 20 20 20 73 54 61 67 73 20 3d 20 73 54 61 67 73     sTags = sTags
2a30: 2e 72 65 70 6c 61 63 65 28 2f 56 28 5b 30 2d 33  .replace(/V([0-3
2a40: 5d 5b 65 61 5d 3f 29 5b 69 74 70 71 6e 6d 72 5f  ][ea]?)[itpqnmr_
2a50: 65 61 78 7a 5d 2b 2f 2c 20 22 56 24 31 22 29 3b  eaxz]+/, "V$1");
2a60: 0a 20 20 20 20 20 20 20 20 6c 65 74 20 6d 3b 0a  .        let m;.
2a70: 20 20 20 20 20 20 20 20 77 68 69 6c 65 20 28 28          while ((
2a80: 6d 20 3d 20 74 68 69 73 2e 5f 7a 54 61 67 2e 65  m = this._zTag.e
2a90: 78 65 63 28 73 54 61 67 73 29 29 20 21 3d 3d 20  xec(sTags)) !== 
2aa0: 6e 75 6c 6c 29 20 7b 0a 20 20 20 20 20 20 20 20  null) {.        
2ab0: 20 20 20 20 73 52 65 73 20 2b 3d 20 5f 64 54 41      sRes += _dTA
2ac0: 47 53 2e 67 65 74 28 6d 5b 30 5d 29 3b 0a 20 20  GS.get(m[0]);.  
2ad0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 52            if (sR
2ae0: 65 73 2e 6c 65 6e 67 74 68 20 3e 20 31 30 30 29  es.length > 100)
2af0: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   {.             
2b00: 20 20 20 62 72 65 61 6b 3b 0a 20 20 20 20 20 20     break;.      
2b10: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20        }.        
2b20: 7d 0a 20 20 20 20 20 20 20 20 69 66 20 28 73 52  }.        if (sR
2b30: 65 73 2e 73 74 61 72 74 73 57 69 74 68 28 22 20  es.startsWith(" 
2b40: 76 65 72 62 65 22 29 20 26 26 20 21 73 52 65 73  verbe") && !sRes
2b50: 2e 65 6e 64 73 57 69 74 68 28 22 69 6e 66 69 6e  .endsWith("infin
2b60: 69 74 69 66 22 29 29 20 7b 0a 20 20 20 20 20 20  itif")) {.      
2b70: 20 20 20 20 20 20 73 52 65 73 20 2b 3d 20 22 20        sRes += " 
2b80: 5b 22 20 2b 20 73 54 61 67 73 2e 73 6c 69 63 65  [" + sTags.slice
2b90: 28 31 2c 20 73 54 61 67 73 2e 69 6e 64 65 78 4f  (1, sTags.indexO
2ba0: 66 28 22 20 22 29 29 20 2b 20 22 5d 22 3b 0a 20  f(" ")) + "]";. 
2bb0: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20         }.       
2bc0: 20 69 66 20 28 21 73 52 65 73 29 20 7b 0a 20 20   if (!sRes) {.  
2bd0: 20 20 20 20 20 20 20 20 20 20 73 52 65 73 20 3d            sRes =
2be0: 20 22 23 45 72 72 65 75 72 2e 20 c3 89 74 69 71   "#Erreur. ..tiq
2bf0: 75 65 74 74 65 20 69 6e 63 6f 6e 6e 75 65 20 3a  uette inconnue :
2c00: 20 5b 22 20 2b 20 73 54 61 67 73 20 2b 20 22 5d   [" + sTags + "]
2c10: 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 68  ";.            h
2c20: 65 6c 70 65 72 73 2e 65 63 68 6f 28 73 52 65 73  elpers.echo(sRes
2c30: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  );.            r
2c40: 65 74 75 72 6e 20 73 52 65 73 3b 0a 20 20 20 20  eturn sRes;.    
2c50: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 72 65      }.        re
2c60: 74 75 72 6e 20 73 52 65 73 2e 67 6c 5f 74 72 69  turn sRes.gl_tri
2c70: 6d 52 69 67 68 74 28 22 2c 22 29 3b 0a 20 20 20  mRight(",");.   
2c80: 20 7d 0a 0a 20 20 20 20 5f 66 6f 72 6d 61 74 53   }..    _formatS
2c90: 75 66 66 69 78 20 28 73 29 20 7b 0a 20 20 20 20  uffix (s) {.    
2ca0: 20 20 20 20 69 66 20 28 73 2e 73 74 61 72 74 73      if (s.starts
2cb0: 57 69 74 68 28 22 74 2d 22 29 29 20 7b 0a 20 20  With("t-")) {.  
2cc0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2cd0: 20 22 e2 80 9c 74 e2 80 9d 20 65 75 70 68 6f 6e   "...t... euphon
2ce0: 69 71 75 65 20 2b 22 20 2b 20 5f 64 41 44 2e 67  ique +" + _dAD.g
2cf0: 65 74 28 73 2e 73 6c 69 63 65 28 32 29 29 3b 0a  et(s.slice(2));.
2d00: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20          }.      
2d10: 20 20 69 66 20 28 21 73 2e 69 6e 63 6c 75 64 65    if (!s.include
2d20: 73 28 22 2d 22 29 29 20 7b 0a 20 20 20 20 20 20  s("-")) {.      
2d30: 20 20 20 20 20 20 72 65 74 75 72 6e 20 5f 64 41        return _dA
2d40: 44 2e 67 65 74 28 73 2e 72 65 70 6c 61 63 65 28  D.get(s.replace(
2d50: 22 e2 80 99 22 2c 20 22 27 22 29 29 3b 0a 20 20  "...", "'"));.  
2d60: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20        }.        
2d70: 69 66 20 28 73 2e 65 6e 64 73 57 69 74 68 28 22  if (s.endsWith("
2d80: 6f 75 73 22 29 29 20 7b 0a 20 20 20 20 20 20 20  ous")) {.       
2d90: 20 20 20 20 20 73 20 2b 3d 20 27 32 27 3b 0a 20       s += '2';. 
2da0: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20         }.       
2db0: 20 6c 65 74 20 6e 50 6f 73 20 3d 20 73 2e 69 6e   let nPos = s.in
2dc0: 64 65 78 4f 66 28 22 2d 22 29 3b 0a 20 20 20 20  dexOf("-");.    
2dd0: 20 20 20 20 72 65 74 75 72 6e 20 5f 64 41 44 2e      return _dAD.
2de0: 67 65 74 28 73 2e 73 6c 69 63 65 28 30 2c 20 6e  get(s.slice(0, n
2df0: 50 6f 73 29 29 20 2b 20 22 20 2b 22 20 2b 20 5f  Pos)) + " +" + _
2e00: 64 41 44 2e 67 65 74 28 73 2e 73 6c 69 63 65 28  dAD.get(s.slice(
2e10: 6e 50 6f 73 20 2b 20 31 29 29 3b 0a 20 20 20 20  nPos + 1));.    
2e20: 7d 0a 0a 20 20 20 20 67 65 74 4c 69 73 74 4f 66  }..    getListOf
2e30: 54 6f 6b 65 6e 73 20 28 73 54 65 78 74 2c 20 62  Tokens (sText, b
2e40: 49 6e 66 6f 3d 74 72 75 65 29 20 7b 0a 20 20 20  Info=true) {.   
2e50: 20 20 20 20 20 6c 65 74 20 61 45 6c 65 6d 20 3d       let aElem =
2e60: 20 5b 5d 3b 0a 20 20 20 20 20 20 20 20 69 66 20   [];.        if 
2e70: 28 73 54 65 78 74 20 21 3d 3d 20 22 22 29 20 7b  (sText !== "") {
2e80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72  .            for
2e90: 20 28 6c 65 74 20 6f 54 6f 6b 65 6e 20 6f 66 20   (let oToken of 
2ea0: 74 68 69 73 2e 6f 54 6f 6b 65 6e 69 7a 65 72 2e  this.oTokenizer.
2eb0: 67 65 6e 54 6f 6b 65 6e 73 28 73 54 65 78 74 29  genTokens(sText)
2ec0: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ) {.            
2ed0: 20 20 20 20 69 66 20 28 62 49 6e 66 6f 29 20 7b      if (bInfo) {
2ee0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2ef0: 20 20 20 20 20 6c 65 74 20 61 52 65 73 20 3d 20       let aRes = 
2f00: 74 68 69 73 2e 67 65 74 49 6e 66 6f 46 6f 72 54  this.getInfoForT
2f10: 6f 6b 65 6e 28 6f 54 6f 6b 65 6e 29 3b 0a 20 20  oken(oToken);.  
2f20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f30: 20 20 69 66 20 28 61 52 65 73 29 20 7b 0a 20 20    if (aRes) {.  
2f40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f50: 20 20 20 20 20 20 61 45 6c 65 6d 2e 70 75 73 68        aElem.push
2f60: 28 61 52 65 73 29 3b 0a 20 20 20 20 20 20 20 20  (aRes);.        
2f70: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20              }.  
2f80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20                } 
2f90: 65 6c 73 65 20 69 66 20 28 6f 54 6f 6b 65 6e 2e  else if (oToken.
2fa0: 73 54 79 70 65 20 21 3d 3d 20 22 53 50 41 43 45  sType !== "SPACE
2fb0: 22 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20  ") {.           
2fc0: 20 20 20 20 20 20 20 20 20 61 45 6c 65 6d 2e 70           aElem.p
2fd0: 75 73 68 28 6f 54 6f 6b 65 6e 29 3b 0a 20 20 20  ush(oToken);.   
2fe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20               }. 
2ff0: 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20             }.   
3000: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 72       }.        r
3010: 65 74 75 72 6e 20 61 45 6c 65 6d 3b 0a 20 20 20  eturn aElem;.   
3020: 20 7d 0a 0a 20 20 20 20 67 65 74 4c 69 73 74 4f   }..    getListO
3030: 66 54 6f 6b 65 6e 73 52 65 64 75 63 20 28 73 54  fTokensReduc (sT
3040: 65 78 74 2c 20 62 49 6e 66 6f 3d 74 72 75 65 29  ext, bInfo=true)
3050: 20 7b 0a 20 20 20 20 20 20 20 20 6c 65 74 20 61   {.        let a
3060: 54 6f 6b 65 6e 4c 69 73 74 20 3d 20 74 68 69 73  TokenList = this
3070: 2e 67 65 74 4c 69 73 74 4f 66 54 6f 6b 65 6e 73  .getListOfTokens
3080: 28 73 54 65 78 74 2e 72 65 70 6c 61 63 65 28 22  (sText.replace("
3090: 27 22 2c 20 22 e2 80 99 22 29 2e 74 72 69 6d 28  '", "...").trim(
30a0: 29 2c 20 66 61 6c 73 65 29 3b 0a 20 20 20 20 20  ), false);.     
30b0: 20 20 20 6c 65 74 20 69 4b 65 79 20 3d 20 30 3b     let iKey = 0;
30c0: 0a 20 20 20 20 20 20 20 20 6c 65 74 20 61 45 6c  .        let aEl
30d0: 65 6d 20 3d 20 5b 5d 3b 0a 20 20 20 20 20 20 20  em = [];.       
30e0: 20 64 6f 20 7b 0a 20 20 20 20 20 20 20 20 20 20   do {.          
30f0: 20 20 6c 65 74 20 6f 54 6f 6b 65 6e 20 3d 20 61    let oToken = a
3100: 54 6f 6b 65 6e 4c 69 73 74 5b 69 4b 65 79 5d 3b  TokenList[iKey];
3110: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 65 74  .            let
3120: 20 73 4d 6f 72 70 68 4c 6f 63 20 3d 20 27 27 3b   sMorphLoc = '';
3130: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 65 74  .            let
3140: 20 61 54 6f 6b 65 6e 54 65 6d 70 4c 69 73 74 20   aTokenTempList 
3150: 3d 20 5b 6f 54 6f 6b 65 6e 5d 3b 0a 20 20 20 20  = [oToken];.    
3160: 20 20 20 20 20 20 20 20 69 66 20 28 6f 54 6f 6b          if (oTok
3170: 65 6e 2e 73 54 79 70 65 20 3d 3d 20 22 57 4f 52  en.sType == "WOR
3180: 44 22 20 7c 7c 20 6f 54 6f 6b 65 6e 2e 73 54 79  D" || oToken.sTy
3190: 70 65 20 3d 3d 20 22 45 4c 50 46 58 22 29 7b 0a  pe == "ELPFX"){.
31a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31b0: 6c 65 74 20 69 4b 65 79 54 72 65 65 20 3d 20 69  let iKeyTree = i
31c0: 4b 65 79 20 2b 20 31 3b 0a 20 20 20 20 20 20 20  Key + 1;.       
31d0: 20 20 20 20 20 20 20 20 20 6c 65 74 20 6f 4c 6f           let oLo
31e0: 63 4e 6f 64 65 20 3d 20 74 68 69 73 2e 6f 4c 6f  cNode = this.oLo
31f0: 63 47 72 61 70 68 5b 6f 54 6f 6b 65 6e 2e 73 56  cGraph[oToken.sV
3200: 61 6c 75 65 2e 74 6f 4c 6f 77 65 72 43 61 73 65  alue.toLowerCase
3210: 28 29 5d 3b 0a 20 20 20 20 20 20 20 20 20 20 20  ()];.           
3220: 20 20 20 20 20 77 68 69 6c 65 20 28 6f 4c 6f 63       while (oLoc
3230: 4e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20  Node) {.        
3240: 20 20 20 20 20 20 20 20 20 20 20 20 6c 65 74 20              let 
3250: 6f 54 6f 6b 65 6e 4e 65 78 74 20 3d 20 61 54 6f  oTokenNext = aTo
3260: 6b 65 6e 4c 69 73 74 5b 69 4b 65 79 54 72 65 65  kenList[iKeyTree
3270: 5d 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ];.             
3280: 20 20 20 20 20 20 20 69 4b 65 79 54 72 65 65 2b         iKeyTree+
3290: 2b 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  +;.             
32a0: 20 20 20 20 20 20 20 69 66 20 28 6f 54 6f 6b 65         if (oToke
32b0: 6e 4e 65 78 74 29 20 7b 0a 20 20 20 20 20 20 20  nNext) {.       
32c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32d0: 20 6f 4c 6f 63 4e 6f 64 65 20 3d 20 6f 4c 6f 63   oLocNode = oLoc
32e0: 4e 6f 64 65 5b 6f 54 6f 6b 65 6e 4e 65 78 74 2e  Node[oTokenNext.
32f0: 73 56 61 6c 75 65 2e 74 6f 4c 6f 77 65 72 43 61  sValue.toLowerCa
3300: 73 65 28 29 5d 3b 0a 20 20 20 20 20 20 20 20 20  se()];.         
3310: 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20             }.   
3320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3330: 20 69 66 20 28 6f 4c 6f 63 4e 6f 64 65 20 26 26   if (oLocNode &&
3340: 20 69 4b 65 79 54 72 65 65 20 3c 3d 20 61 54 6f   iKeyTree <= aTo
3350: 6b 65 6e 4c 69 73 74 2e 6c 65 6e 67 74 68 29 20  kenList.length) 
3360: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  {.              
3370: 20 20 20 20 20 20 20 20 20 20 73 4d 6f 72 70 68            sMorph
3380: 4c 6f 63 20 3d 20 6f 4c 6f 63 4e 6f 64 65 5b 22  Loc = oLocNode["
3390: 3a 22 5d 3b 0a 20 20 20 20 20 20 20 20 20 20 20  :"];.           
33a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 61 54 6f               aTo
33b0: 6b 65 6e 54 65 6d 70 4c 69 73 74 2e 70 75 73 68  kenTempList.push
33c0: 28 6f 54 6f 6b 65 6e 4e 65 78 74 29 3b 0a 20 20  (oTokenNext);.  
33d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33e0: 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20    } else {.     
33f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3400: 20 20 20 62 72 65 61 6b 3b 0a 20 20 20 20 20 20     break;.      
3410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a                }.
3420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3430: 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a  }.            }.
3440: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20  .            if 
3450: 28 73 4d 6f 72 70 68 4c 6f 63 29 20 7b 0a 20 20  (sMorphLoc) {.  
3460: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 65                le
3470: 74 20 73 57 6f 72 64 20 3d 20 27 27 3b 0a 20 20  t sWord = '';.  
3480: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f                fo
3490: 72 20 28 6c 65 74 20 6f 54 6f 6b 65 6e 57 6f 72  r (let oTokenWor
34a0: 64 20 6f 66 20 61 54 6f 6b 65 6e 54 65 6d 70 4c  d of aTokenTempL
34b0: 69 73 74 29 20 7b 0a 20 20 20 20 20 20 20 20 20  ist) {.         
34c0: 20 20 20 20 20 20 20 20 20 20 20 73 57 6f 72 64             sWord
34d0: 20 2b 3d 20 6f 54 6f 6b 65 6e 57 6f 72 64 2e 73   += oTokenWord.s
34e0: 56 61 6c 75 65 2b 27 20 27 3b 0a 20 20 20 20 20  Value+' ';.     
34f0: 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20             }.   
3500: 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 65 74               let
3510: 20 6f 54 6f 6b 65 6e 4c 6f 63 75 74 69 6f 6e 20   oTokenLocution 
3520: 3d 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  = {.            
3530: 20 20 20 20 20 20 20 20 27 6e 53 74 61 72 74 27          'nStart'
3540: 3a 20 61 54 6f 6b 65 6e 54 65 6d 70 4c 69 73 74  : aTokenTempList
3550: 5b 30 5d 2e 6e 53 74 61 72 74 2c 0a 20 20 20 20  [0].nStart,.    
3560: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3570: 27 6e 45 6e 64 27 3a 20 61 54 6f 6b 65 6e 54 65  'nEnd': aTokenTe
3580: 6d 70 4c 69 73 74 5b 61 54 6f 6b 65 6e 54 65 6d  mpList[aTokenTem
3590: 70 4c 69 73 74 2e 6c 65 6e 67 74 68 2d 31 5d 2e  pList.length-1].
35a0: 6e 45 6e 64 2c 0a 20 20 20 20 20 20 20 20 20 20  nEnd,.          
35b0: 20 20 20 20 20 20 20 20 20 20 27 73 54 79 70 65            'sType
35c0: 27 3a 20 22 4c 4f 43 22 2c 0a 20 20 20 20 20 20  ': "LOC",.      
35d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 73                's
35e0: 56 61 6c 75 65 27 3a 20 73 57 6f 72 64 2e 72 65  Value': sWord.re
35f0: 70 6c 61 63 65 28 27 e2 80 99 20 27 2c 27 e2 80  place('... ','..
3600: 99 27 29 2e 74 72 69 6d 28 29 0a 20 20 20 20 20  .').trim().     
3610: 20 20 20 20 20 20 20 20 20 20 20 7d 3b 0a 20 20             };.  
3620: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
3630: 20 28 62 49 6e 66 6f 29 20 7b 0a 20 20 20 20 20   (bInfo) {.     
3640: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
3650: 65 74 20 61 46 6f 72 6d 61 74 65 64 54 61 67 20  et aFormatedTag 
3660: 3d 20 5b 5d 3b 0a 20 20 20 20 20 20 20 20 20 20  = [];.          
3670: 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 6c            for (l
3680: 65 74 20 73 54 61 67 4d 75 6c 74 69 20 6f 66 20  et sTagMulti of 
3690: 73 4d 6f 72 70 68 4c 6f 63 2e 73 70 6c 69 74 28  sMorphLoc.split(
36a0: 27 7c 27 29 20 29 7b 0a 20 20 20 20 20 20 20 20  '|') ){.        
36b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36c0: 61 46 6f 72 6d 61 74 65 64 54 61 67 2e 70 75 73  aFormatedTag.pus
36d0: 68 28 20 74 68 69 73 2e 5f 66 6f 72 6d 61 74 54  h( this._formatT
36e0: 61 67 73 28 73 54 61 67 4d 75 6c 74 69 29 2e 72  ags(sTagMulti).r
36f0: 65 70 6c 61 63 65 28 2f 28 20 5c 28 c3 a9 6c 2e  eplace(/( \(..l.
3700: 5c 29 29 2f 67 2c 27 27 29 20 29 3b 0a 20 20 20  \))/g,'') );.   
3710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3720: 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   }.             
3730: 20 20 20 20 20 20 20 61 45 6c 65 6d 2e 70 75 73         aElem.pus
3740: 68 28 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  h({.            
3750: 20 20 20 20 20 20 20 20 20 20 20 20 73 54 79 70              sTyp
3760: 65 3a 20 6f 54 6f 6b 65 6e 4c 6f 63 75 74 69 6f  e: oTokenLocutio
3770: 6e 2e 73 54 79 70 65 2c 0a 20 20 20 20 20 20 20  n.sType,.       
3780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3790: 20 73 56 61 6c 75 65 3a 20 6f 54 6f 6b 65 6e 4c   sValue: oTokenL
37a0: 6f 63 75 74 69 6f 6e 2e 73 56 61 6c 75 65 2c 0a  ocution.sValue,.
37b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37c0: 20 20 20 20 20 20 20 20 61 4c 61 62 65 6c 3a 20          aLabel: 
37d0: 61 46 6f 72 6d 61 74 65 64 54 61 67 0a 20 20 20  aFormatedTag.   
37e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37f0: 20 7d 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20   });.           
3800: 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20       } else {.  
3810: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3820: 20 20 61 45 6c 65 6d 2e 70 75 73 68 28 6f 54 6f    aElem.push(oTo
3830: 6b 65 6e 4c 6f 63 75 74 69 6f 6e 29 3b 0a 20 20  kenLocution);.  
3840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a                }.
3850: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3860: 69 4b 65 79 20 3d 20 69 4b 65 79 20 2b 20 61 54  iKey = iKey + aT
3870: 6f 6b 65 6e 54 65 6d 70 4c 69 73 74 2e 6c 65 6e  okenTempList.len
3880: 67 74 68 3b 0a 20 20 20 20 20 20 20 20 20 20 20  gth;.           
3890: 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20   } else {.      
38a0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62 49            if (bI
38b0: 6e 66 6f 29 20 7b 0a 20 20 20 20 20 20 20 20 20  nfo) {.         
38c0: 20 20 20 20 20 20 20 20 20 20 20 6c 65 74 20 61             let a
38d0: 52 65 73 20 3d 20 74 68 69 73 2e 67 65 74 49 6e  Res = this.getIn
38e0: 66 6f 46 6f 72 54 6f 6b 65 6e 28 6f 54 6f 6b 65  foForToken(oToke
38f0: 6e 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20  n);.            
3900: 20 20 20 20 20 20 20 20 69 66 20 28 61 52 65 73          if (aRes
3910: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20  ) {.            
3920: 20 20 20 20 20 20 20 20 20 20 20 20 61 45 6c 65              aEle
3930: 6d 2e 70 75 73 68 28 61 52 65 73 29 3b 0a 20 20  m.push(aRes);.  
3940: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3950: 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20    }.            
3960: 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20      } else {.   
3970: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3980: 20 61 45 6c 65 6d 2e 70 75 73 68 28 6f 54 6f 6b   aElem.push(oTok
3990: 65 6e 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20  en);.           
39a0: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20       }.         
39b0: 20 20 20 20 20 20 20 69 4b 65 79 2b 2b 3b 0a 20         iKey++;. 
39c0: 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20             }.   
39d0: 20 20 20 20 20 7d 20 77 68 69 6c 65 20 28 69 4b       } while (iK
39e0: 65 79 20 3c 20 61 54 6f 6b 65 6e 4c 69 73 74 2e  ey < aTokenList.
39f0: 6c 65 6e 67 74 68 29 3b 0a 20 20 20 20 20 20 20  length);.       
3a00: 20 72 65 74 75 72 6e 20 61 45 6c 65 6d 3b 0a 20   return aElem;. 
3a10: 20 20 20 7d 0a 7d 0a 0a 0a 69 66 20 28 74 79 70     }.}...if (typ
3a20: 65 6f 66 28 65 78 70 6f 72 74 73 29 20 21 3d 3d  eof(exports) !==
3a30: 20 27 75 6e 64 65 66 69 6e 65 64 27 29 20 7b 0a   'undefined') {.
3a40: 20 20 20 20 65 78 70 6f 72 74 73 2e 4c 65 78 69      exports.Lexi
3a50: 63 6f 67 72 61 70 68 65 20 3d 20 4c 65 78 69 63  cographe = Lexic
3a60: 6f 67 72 61 70 68 65 3b 0a 7d 0a                 ographe;.}.