X12 0.1.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1844) hide show
  1. data/CHANGELOG +6 -1
  2. data/README +215 -60
  3. data/Rakefile +6 -16
  4. data/example/factory.rb +1 -1
  5. data/example/parse.rb +1 -1
  6. data/lib/X12.rb +4 -7
  7. data/lib/X12/Base.rb +16 -2
  8. data/lib/X12/Field.rb +16 -9
  9. data/lib/X12/Parser.rb +52 -29
  10. data/lib/X12/Segment.rb +6 -4
  11. data/lib/X12/XMLDefinitions.rb +160 -0
  12. data/misc/270.xml +152 -0
  13. data/misc/270interchange.xml +163 -0
  14. data/misc/997.xml +50 -0
  15. data/misc/997single.xml +835 -0
  16. data/misc/AAA.xml +31 -0
  17. data/misc/ACD.xml +30 -0
  18. data/misc/ACK.xml +56 -0
  19. data/misc/ACS.xml +31 -0
  20. data/misc/ACT.xml +36 -0
  21. data/misc/AD1.xml +32 -0
  22. data/misc/ADI.xml +31 -0
  23. data/misc/ADJ.xml +44 -0
  24. data/misc/ADT.xml +37 -0
  25. data/misc/ADV.xml +34 -0
  26. data/misc/ADX.xml +31 -0
  27. data/misc/AEI.xml +30 -0
  28. data/misc/AES.xml +32 -0
  29. data/misc/AIN.xml +40 -0
  30. data/misc/AK1.xml +29 -0
  31. data/misc/AK2.xml +29 -0
  32. data/misc/AK3.xml +31 -0
  33. data/misc/AK4.xml +31 -0
  34. data/misc/AK5.xml +33 -0
  35. data/misc/AK9.xml +36 -0
  36. data/misc/AM1.xml +33 -0
  37. data/misc/AMT.xml +30 -0
  38. data/misc/ANI.xml +36 -0
  39. data/misc/AOC.xml +32 -0
  40. data/misc/AOI.xml +40 -0
  41. data/misc/AOL.xml +35 -0
  42. data/misc/AOR.xml +40 -0
  43. data/misc/AP1.xml +40 -0
  44. data/misc/APE.xml +32 -0
  45. data/misc/API.xml +35 -0
  46. data/misc/APR.xml +30 -0
  47. data/misc/ARC.xml +30 -0
  48. data/misc/ARS.xml +32 -0
  49. data/misc/ASI.xml +30 -0
  50. data/misc/ASL.xml +31 -0
  51. data/misc/ASM.xml +30 -0
  52. data/misc/ASO.xml +38 -0
  53. data/misc/AST.xml +38 -0
  54. data/misc/AT1.xml +28 -0
  55. data/misc/AT2.xml +39 -0
  56. data/misc/AT3.xml +34 -0
  57. data/misc/AT4.xml +28 -0
  58. data/misc/AT5.xml +33 -0
  59. data/misc/AT6.xml +30 -0
  60. data/misc/AT7.xml +34 -0
  61. data/misc/AT8.xml +34 -0
  62. data/misc/AT9.xml +35 -0
  63. data/misc/ATA.xml +30 -0
  64. data/misc/ATH.xml +32 -0
  65. data/misc/ATN.xml +33 -0
  66. data/misc/ATR.xml +37 -0
  67. data/misc/ATV.xml +37 -0
  68. data/misc/AVA.xml +29 -0
  69. data/misc/AWD.xml +31 -0
  70. data/misc/AXL.xml +35 -0
  71. data/misc/B1.xml +33 -0
  72. data/misc/B10.xml +36 -0
  73. data/misc/B11.xml +38 -0
  74. data/misc/B12.xml +30 -0
  75. data/misc/B13.xml +29 -0
  76. data/misc/B2.xml +39 -0
  77. data/misc/B2A.xml +29 -0
  78. data/misc/B3.xml +41 -0
  79. data/misc/B3A.xml +29 -0
  80. data/misc/B3B.xml +38 -0
  81. data/misc/B4.xml +40 -0
  82. data/misc/B9.xml +30 -0
  83. data/misc/B9A.xml +28 -0
  84. data/misc/BA1.xml +39 -0
  85. data/misc/BA2.xml +38 -0
  86. data/misc/BAA.xml +33 -0
  87. data/misc/BAK.xml +37 -0
  88. data/misc/BAL.xml +30 -0
  89. data/misc/BAT.xml +31 -0
  90. data/misc/BAU.xml +33 -0
  91. data/misc/BAX.xml +41 -0
  92. data/misc/BBC.xml +29 -0
  93. data/misc/BC.xml +34 -0
  94. data/misc/BCA.xml +42 -0
  95. data/misc/BCD.xml +42 -0
  96. data/misc/BCH.xml +43 -0
  97. data/misc/BCI.xml +35 -0
  98. data/misc/BCM.xml +39 -0
  99. data/misc/BCO.xml +39 -0
  100. data/misc/BCP.xml +40 -0
  101. data/misc/BCQ.xml +34 -0
  102. data/misc/BCS.xml +39 -0
  103. data/misc/BCT.xml +37 -0
  104. data/misc/BCU.xml +34 -0
  105. data/misc/BDD.xml +30 -0
  106. data/misc/BDS.xml +30 -0
  107. data/misc/BEG.xml +39 -0
  108. data/misc/BEN.xml +33 -0
  109. data/misc/BEP.xml +29 -0
  110. data/misc/BFR.xml +40 -0
  111. data/misc/BFS.xml +37 -0
  112. data/misc/BGF.xml +30 -0
  113. data/misc/BGN.xml +36 -0
  114. data/misc/BGP.xml +36 -0
  115. data/misc/BHT.xml +33 -0
  116. data/misc/BIA.xml +33 -0
  117. data/misc/BIG.xml +38 -0
  118. data/misc/BIN.xml +29 -0
  119. data/misc/BIX.xml +38 -0
  120. data/misc/BJF.xml +34 -0
  121. data/misc/BL.xml +44 -0
  122. data/misc/BLI.xml +45 -0
  123. data/misc/BLN.xml +33 -0
  124. data/misc/BLR.xml +30 -0
  125. data/misc/BLS.xml +33 -0
  126. data/misc/BMA.xml +35 -0
  127. data/misc/BMG.xml +30 -0
  128. data/misc/BMM.xml +37 -0
  129. data/misc/BMP.xml +31 -0
  130. data/misc/BMS.xml +36 -0
  131. data/misc/BNR.xml +33 -0
  132. data/misc/BNX.xml +31 -0
  133. data/misc/BOL.xml +38 -0
  134. data/misc/BOR.xml +37 -0
  135. data/misc/BOS.xml +33 -0
  136. data/misc/BOX.xml +42 -0
  137. data/misc/BPA.xml +32 -0
  138. data/misc/BPP.xml +41 -0
  139. data/misc/BPR.xml +48 -0
  140. data/misc/BPT.xml +37 -0
  141. data/misc/BQR.xml +35 -0
  142. data/misc/BQT.xml +38 -0
  143. data/misc/BR.xml +38 -0
  144. data/misc/BRA.xml +34 -0
  145. data/misc/BRC.xml +32 -0
  146. data/misc/BRR.xml +33 -0
  147. data/misc/BSC.xml +31 -0
  148. data/misc/BSD.xml +36 -0
  149. data/misc/BSF.xml +30 -0
  150. data/misc/BSI.xml +36 -0
  151. data/misc/BSN.xml +34 -0
  152. data/misc/BSR.xml +39 -0
  153. data/misc/BSS.xml +38 -0
  154. data/misc/BT1.xml +38 -0
  155. data/misc/BTA.xml +31 -0
  156. data/misc/BTC.xml +39 -0
  157. data/misc/BTI.xml +41 -0
  158. data/misc/BTP.xml +37 -0
  159. data/misc/BTR.xml +35 -0
  160. data/misc/BTS.xml +42 -0
  161. data/misc/BUY.xml +32 -0
  162. data/misc/BVA.xml +52 -0
  163. data/misc/BVB.xml +34 -0
  164. data/misc/BVP.xml +38 -0
  165. data/misc/BVS.xml +39 -0
  166. data/misc/BW.xml +30 -0
  167. data/misc/BX.xml +41 -0
  168. data/misc/C001.xml +43 -0
  169. data/misc/C002.xml +33 -0
  170. data/misc/C003.xml +35 -0
  171. data/misc/C004.xml +32 -0
  172. data/misc/C005.xml +33 -0
  173. data/misc/C006.xml +33 -0
  174. data/misc/C007.xml +38 -0
  175. data/misc/C022.xml +37 -0
  176. data/misc/C023.xml +31 -0
  177. data/misc/C024.xml +33 -0
  178. data/misc/C028.xml +48 -0
  179. data/misc/C030.xml +31 -0
  180. data/misc/C033.xml +30 -0
  181. data/misc/C034.xml +30 -0
  182. data/misc/C035.xml +31 -0
  183. data/misc/C036.xml +33 -0
  184. data/misc/C037.xml +30 -0
  185. data/misc/C040.xml +34 -0
  186. data/misc/C042.xml +30 -0
  187. data/misc/C043.xml +32 -0
  188. data/misc/C045.xml +33 -0
  189. data/misc/C046.xml +33 -0
  190. data/misc/C047.xml +33 -0
  191. data/misc/C048.xml +32 -0
  192. data/misc/C050.xml +40 -0
  193. data/misc/C052.xml +32 -0
  194. data/misc/C053.xml +33 -0
  195. data/misc/C055.xml +36 -0
  196. data/misc/C056.xml +31 -0
  197. data/misc/C057.xml +29 -0
  198. data/misc/C2.xml +34 -0
  199. data/misc/C3.xml +31 -0
  200. data/misc/C4.xml +29 -0
  201. data/misc/C8.xml +31 -0
  202. data/misc/C8C.xml +30 -0
  203. data/misc/CA1.xml +29 -0
  204. data/misc/CAD.xml +36 -0
  205. data/misc/CAI.xml +34 -0
  206. data/misc/CAL.xml +43 -0
  207. data/misc/CAS.xml +46 -0
  208. data/misc/CAT.xml +34 -0
  209. data/misc/CB1.xml +29 -0
  210. data/misc/CBS.xml +30 -0
  211. data/misc/CCI.xml +37 -0
  212. data/misc/CD.xml +38 -0
  213. data/misc/CD1.xml +58 -0
  214. data/misc/CD2.xml +35 -0
  215. data/misc/CD3.xml +41 -0
  216. data/misc/CDA.xml +49 -0
  217. data/misc/CDD.xml +41 -0
  218. data/misc/CDI.xml +38 -0
  219. data/misc/CDS.xml +38 -0
  220. data/misc/CED.xml +32 -0
  221. data/misc/CF1.xml +33 -0
  222. data/misc/CF2.xml +37 -0
  223. data/misc/CFI.xml +34 -0
  224. data/misc/CFT.xml +36 -0
  225. data/misc/CGS.xml +32 -0
  226. data/misc/CHB.xml +36 -0
  227. data/misc/CHR.xml +30 -0
  228. data/misc/CI.xml +41 -0
  229. data/misc/CIC.xml +32 -0
  230. data/misc/CID.xml +34 -0
  231. data/misc/CIV.xml +45 -0
  232. data/misc/CL1.xml +31 -0
  233. data/misc/CLD.xml +32 -0
  234. data/misc/CLI.xml +33 -0
  235. data/misc/CLM.xml +47 -0
  236. data/misc/CLP.xml +41 -0
  237. data/misc/CLR.xml +31 -0
  238. data/misc/CM.xml +44 -0
  239. data/misc/CMA.xml +38 -0
  240. data/misc/CMC.xml +29 -0
  241. data/misc/CN1.xml +33 -0
  242. data/misc/COB.xml +31 -0
  243. data/misc/COM.xml +30 -0
  244. data/misc/CON_.xml +30 -0
  245. data/misc/CPR.xml +32 -0
  246. data/misc/CQ.xml +37 -0
  247. data/misc/CR1.xml +37 -0
  248. data/misc/CR2.xml +39 -0
  249. data/misc/CR3.xml +32 -0
  250. data/misc/CR4.xml +56 -0
  251. data/misc/CR5.xml +45 -0
  252. data/misc/CR6.xml +48 -0
  253. data/misc/CR7.xml +30 -0
  254. data/misc/CR8.xml +36 -0
  255. data/misc/CRC.xml +34 -0
  256. data/misc/CRD.xml +31 -0
  257. data/misc/CRI.xml +37 -0
  258. data/misc/CRO.xml +33 -0
  259. data/misc/CRS.xml +47 -0
  260. data/misc/CRT.xml +37 -0
  261. data/misc/CRV.xml +34 -0
  262. data/misc/CS.xml +45 -0
  263. data/misc/CSB.xml +29 -0
  264. data/misc/CSC.xml +36 -0
  265. data/misc/CSD.xml +36 -0
  266. data/misc/CSE.xml +39 -0
  267. data/misc/CSF.xml +30 -0
  268. data/misc/CSH.xml +37 -0
  269. data/misc/CSI.xml +31 -0
  270. data/misc/CSM.xml +30 -0
  271. data/misc/CSS.xml +34 -0
  272. data/misc/CST.xml +31 -0
  273. data/misc/CSU.xml +37 -0
  274. data/misc/CT.xml +30 -0
  275. data/misc/CTB.xml +34 -0
  276. data/misc/CTC.xml +37 -0
  277. data/misc/CTP.xml +38 -0
  278. data/misc/CTT.xml +34 -0
  279. data/misc/CUR.xml +48 -0
  280. data/misc/CV.xml +41 -0
  281. data/misc/CYC.xml +33 -0
  282. data/misc/D9.xml +39 -0
  283. data/misc/DAD.xml +42 -0
  284. data/misc/DAI.xml +30 -0
  285. data/misc/DAM.xml +43 -0
  286. data/misc/DB.xml +33 -0
  287. data/misc/DD.xml +37 -0
  288. data/misc/DDI.xml +28 -0
  289. data/misc/DED.xml +36 -0
  290. data/misc/DEF.xml +33 -0
  291. data/misc/DEG.xml +32 -0
  292. data/misc/DEL.xml +32 -0
  293. data/misc/DEP.xml +35 -0
  294. data/misc/DEX.xml +33 -0
  295. data/misc/DFI.xml +31 -0
  296. data/misc/DH.xml +30 -0
  297. data/misc/DIS.xml +33 -0
  298. data/misc/DK.xml +37 -0
  299. data/misc/DL.xml +38 -0
  300. data/misc/DLV.xml +32 -0
  301. data/misc/DM.xml +48 -0
  302. data/misc/DMA.xml +36 -0
  303. data/misc/DMG.xml +38 -0
  304. data/misc/DMI.xml +39 -0
  305. data/misc/DN.xml +31 -0
  306. data/misc/DN1.xml +31 -0
  307. data/misc/DN2.xml +32 -0
  308. data/misc/DOS.xml +34 -0
  309. data/misc/DP.xml +44 -0
  310. data/misc/DPN.xml +31 -0
  311. data/misc/DR.xml +33 -0
  312. data/misc/DRT.xml +33 -0
  313. data/misc/DSB.xml +35 -0
  314. data/misc/DTM.xml +33 -0
  315. data/misc/DTP.xml +30 -0
  316. data/misc/DVI.xml +41 -0
  317. data/misc/E01.xml +31 -0
  318. data/misc/E03.xml +34 -0
  319. data/misc/E1.xml +30 -0
  320. data/misc/E10.xml +32 -0
  321. data/misc/E13.xml +37 -0
  322. data/misc/E20.xml +31 -0
  323. data/misc/E22.xml +39 -0
  324. data/misc/E24.xml +34 -0
  325. data/misc/E30.xml +36 -0
  326. data/misc/E34.xml +31 -0
  327. data/misc/E4.xml +31 -0
  328. data/misc/E40.xml +31 -0
  329. data/misc/E41.xml +31 -0
  330. data/misc/E5.xml +31 -0
  331. data/misc/E6.xml +36 -0
  332. data/misc/E8.xml +29 -0
  333. data/misc/EA.xml +30 -0
  334. data/misc/EB.xml +40 -0
  335. data/misc/EC.xml +33 -0
  336. data/misc/ED.xml +35 -0
  337. data/misc/EDF.xml +38 -0
  338. data/misc/EFI.xml +43 -0
  339. data/misc/EI.xml +33 -0
  340. data/misc/EIA.xml +33 -0
  341. data/misc/ELV.xml +33 -0
  342. data/misc/EM.xml +34 -0
  343. data/misc/EMP.xml +37 -0
  344. data/misc/EMS.xml +42 -0
  345. data/misc/EMT.xml +35 -0
  346. data/misc/ENE.xml +32 -0
  347. data/misc/ENM.xml +35 -0
  348. data/misc/ENR.xml +47 -0
  349. data/misc/ENT.xml +36 -0
  350. data/misc/EQ.xml +31 -0
  351. data/misc/ER.xml +38 -0
  352. data/misc/ERI.xml +36 -0
  353. data/misc/ERP.xml +32 -0
  354. data/misc/ES.xml +33 -0
  355. data/misc/ESI.xml +36 -0
  356. data/misc/ETD.xml +32 -0
  357. data/misc/EXI.xml +35 -0
  358. data/misc/F01.xml +36 -0
  359. data/misc/F02.xml +36 -0
  360. data/misc/F04.xml +37 -0
  361. data/misc/F05.xml +30 -0
  362. data/misc/F07.xml +49 -0
  363. data/misc/F09.xml +39 -0
  364. data/misc/F10.xml +31 -0
  365. data/misc/F11.xml +37 -0
  366. data/misc/F12.xml +35 -0
  367. data/misc/F13.xml +33 -0
  368. data/misc/F14.xml +29 -0
  369. data/misc/F6X.xml +35 -0
  370. data/misc/F9.xml +39 -0
  371. data/misc/FA1.xml +30 -0
  372. data/misc/FA2.xml +29 -0
  373. data/misc/FAA.xml +42 -0
  374. data/misc/FAC.xml +33 -0
  375. data/misc/FBB.xml +34 -0
  376. data/misc/FC.xml +32 -0
  377. data/misc/FCL.xml +32 -0
  378. data/misc/FDA.xml +36 -0
  379. data/misc/FGS.xml +30 -0
  380. data/misc/FH.xml +31 -0
  381. data/misc/FIR.xml +39 -0
  382. data/misc/FIS.xml +31 -0
  383. data/misc/FK.xml +41 -0
  384. data/misc/FNA.xml +33 -0
  385. data/misc/FOB.xml +36 -0
  386. data/misc/FOS.xml +34 -0
  387. data/misc/FPT.xml +29 -0
  388. data/misc/FRM.xml +32 -0
  389. data/misc/FSA.xml +36 -0
  390. data/misc/FST.xml +40 -0
  391. data/misc/FTH.xml +31 -0
  392. data/misc/G01.xml +35 -0
  393. data/misc/G05.xml +35 -0
  394. data/misc/G07.xml +33 -0
  395. data/misc/G08.xml +31 -0
  396. data/misc/G1.xml +30 -0
  397. data/misc/G11.xml +37 -0
  398. data/misc/G12.xml +34 -0
  399. data/misc/G13.xml +33 -0
  400. data/misc/G14.xml +29 -0
  401. data/misc/G15.xml +31 -0
  402. data/misc/G17.xml +41 -0
  403. data/misc/G18.xml +31 -0
  404. data/misc/G19.xml +36 -0
  405. data/misc/G2.xml +29 -0
  406. data/misc/G20.xml +36 -0
  407. data/misc/G21.xml +37 -0
  408. data/misc/G22.xml +32 -0
  409. data/misc/G23.xml +43 -0
  410. data/misc/G24.xml +28 -0
  411. data/misc/G25.xml +30 -0
  412. data/misc/G26.xml +33 -0
  413. data/misc/G27.xml +33 -0
  414. data/misc/G28.xml +33 -0
  415. data/misc/G29.xml +30 -0
  416. data/misc/G3.xml +33 -0
  417. data/misc/G30.xml +29 -0
  418. data/misc/G31.xml +38 -0
  419. data/misc/G32.xml +32 -0
  420. data/misc/G33.xml +28 -0
  421. data/misc/G35.xml +30 -0
  422. data/misc/G36.xml +31 -0
  423. data/misc/G37.xml +30 -0
  424. data/misc/G38.xml +30 -0
  425. data/misc/G39.xml +56 -0
  426. data/misc/G4.xml +33 -0
  427. data/misc/G40.xml +36 -0
  428. data/misc/G42.xml +30 -0
  429. data/misc/G43.xml +31 -0
  430. data/misc/G45.xml +44 -0
  431. data/misc/G46.xml +39 -0
  432. data/misc/G47.xml +29 -0
  433. data/misc/G48.xml +36 -0
  434. data/misc/G49.xml +30 -0
  435. data/misc/G5.xml +44 -0
  436. data/misc/G50.xml +34 -0
  437. data/misc/G51.xml +35 -0
  438. data/misc/G53.xml +28 -0
  439. data/misc/G54.xml +33 -0
  440. data/misc/G55.xml +60 -0
  441. data/misc/G61.xml +32 -0
  442. data/misc/G62.xml +32 -0
  443. data/misc/G63.xml +31 -0
  444. data/misc/G66.xml +34 -0
  445. data/misc/G68.xml +42 -0
  446. data/misc/G69.xml +28 -0
  447. data/misc/G70.xml +37 -0
  448. data/misc/G72.xml +38 -0
  449. data/misc/G73.xml +28 -0
  450. data/misc/G76.xml +37 -0
  451. data/misc/G82.xml +39 -0
  452. data/misc/G83.xml +40 -0
  453. data/misc/G84.xml +30 -0
  454. data/misc/G85.xml +28 -0
  455. data/misc/G86.xml +29 -0
  456. data/misc/G87.xml +33 -0
  457. data/misc/G88.xml +32 -0
  458. data/misc/G89.xml +37 -0
  459. data/misc/G91.xml +29 -0
  460. data/misc/G92.xml +30 -0
  461. data/misc/G93.xml +35 -0
  462. data/misc/G94.xml +29 -0
  463. data/misc/G95.xml +34 -0
  464. data/misc/GA.xml +45 -0
  465. data/misc/GDP.xml +34 -0
  466. data/misc/GE.xml +29 -0
  467. data/misc/GF.xml +36 -0
  468. data/misc/GH.xml +31 -0
  469. data/misc/GID.xml +30 -0
  470. data/misc/GR.xml +49 -0
  471. data/misc/GR2.xml +39 -0
  472. data/misc/GR4.xml +38 -0
  473. data/misc/GR5.xml +32 -0
  474. data/misc/GRI.xml +38 -0
  475. data/misc/GRP.xml +31 -0
  476. data/misc/GS.xml +35 -0
  477. data/misc/GY.xml +42 -0
  478. data/misc/H1.xml +36 -0
  479. data/misc/H2.xml +29 -0
  480. data/misc/H3.xml +32 -0
  481. data/misc/H5.xml +30 -0
  482. data/misc/H6.xml +34 -0
  483. data/misc/HAD.xml +33 -0
  484. data/misc/HC.xml +34 -0
  485. data/misc/HCP.xml +42 -0
  486. data/misc/HCR.xml +31 -0
  487. data/misc/HD.xml +38 -0
  488. data/misc/HI.xml +39 -0
  489. data/misc/HL.xml +31 -0
  490. data/misc/HLH.xml +34 -0
  491. data/misc/HPL.xml +33 -0
  492. data/misc/HS.xml +32 -0
  493. data/misc/HSD.xml +35 -0
  494. data/misc/IC.xml +36 -0
  495. data/misc/ICH.xml +39 -0
  496. data/misc/ICM.xml +33 -0
  497. data/misc/ID.xml +30 -0
  498. data/misc/ID1.xml +61 -0
  499. data/misc/ID2.xml +35 -0
  500. data/misc/ID3.xml +48 -0
  501. data/misc/ID4.xml +36 -0
  502. data/misc/IDB.xml +32 -0
  503. data/misc/IDC.xml +31 -0
  504. data/misc/IEA.xml +29 -0
  505. data/misc/IGI.xml +33 -0
  506. data/misc/III.xml +36 -0
  507. data/misc/IIS.xml +41 -0
  508. data/misc/IM.xml +30 -0
  509. data/misc/IMA.xml +31 -0
  510. data/misc/IMM.xml +33 -0
  511. data/misc/IMP.xml +29 -0
  512. data/misc/IN1.xml +34 -0
  513. data/misc/IN2.xml +30 -0
  514. data/misc/INC.xml +32 -0
  515. data/misc/IND.xml +39 -0
  516. data/misc/INI.xml +30 -0
  517. data/misc/INQ.xml +29 -0
  518. data/misc/INR.xml +30 -0
  519. data/misc/INS.xml +44 -0
  520. data/misc/INT.xml +33 -0
  521. data/misc/INV.xml +34 -0
  522. data/misc/INX.xml +29 -0
  523. data/misc/IRA.xml +30 -0
  524. data/misc/IRP.xml +34 -0
  525. data/misc/IS1.xml +34 -0
  526. data/misc/IS2.xml +44 -0
  527. data/misc/ISA.xml +43 -0
  528. data/misc/ISC.xml +37 -0
  529. data/misc/ISD.xml +31 -0
  530. data/misc/ISI.xml +33 -0
  531. data/misc/ISR.xml +30 -0
  532. data/misc/ISS.xml +35 -0
  533. data/misc/IT1.xml +52 -0
  534. data/misc/IT3.xml +32 -0
  535. data/misc/IT8.xml +54 -0
  536. data/misc/ITA.xml +44 -0
  537. data/misc/ITC.xml +39 -0
  538. data/misc/ITD.xml +42 -0
  539. data/misc/IV1.xml +32 -0
  540. data/misc/JCT.xml +36 -0
  541. data/misc/JID.xml +33 -0
  542. data/misc/JIL.xml +34 -0
  543. data/misc/JIT.xml +29 -0
  544. data/misc/JL.xml +31 -0
  545. data/misc/JS.xml +31 -0
  546. data/misc/K1.xml +29 -0
  547. data/misc/K2.xml +28 -0
  548. data/misc/K3.xml +30 -0
  549. data/misc/L0.xml +42 -0
  550. data/misc/L1.xml +49 -0
  551. data/misc/L10.xml +30 -0
  552. data/misc/L11.xml +32 -0
  553. data/misc/L12.xml +29 -0
  554. data/misc/L13.xml +43 -0
  555. data/misc/L1A.xml +29 -0
  556. data/misc/L3.xml +42 -0
  557. data/misc/L4.xml +33 -0
  558. data/misc/L5.xml +37 -0
  559. data/misc/L7.xml +43 -0
  560. data/misc/L8.xml +38 -0
  561. data/misc/L9.xml +29 -0
  562. data/misc/LAD.xml +41 -0
  563. data/misc/LC.xml +34 -0
  564. data/misc/LC1.xml +39 -0
  565. data/misc/LCD.xml +33 -0
  566. data/misc/LCT.xml +39 -0
  567. data/misc/LDT.xml +31 -0
  568. data/misc/LE.xml +28 -0
  569. data/misc/LEP.xml +31 -0
  570. data/misc/LEQ.xml +36 -0
  571. data/misc/LET.xml +31 -0
  572. data/misc/LFG.xml +33 -0
  573. data/misc/LFH.xml +34 -0
  574. data/misc/LFI.xml +35 -0
  575. data/misc/LH.xml +33 -0
  576. data/misc/LH1.xml +38 -0
  577. data/misc/LH2.xml +40 -0
  578. data/misc/LH3.xml +31 -0
  579. data/misc/LH4.xml +39 -0
  580. data/misc/LH6.xml +31 -0
  581. data/misc/LHE.xml +32 -0
  582. data/misc/LHR.xml +30 -0
  583. data/misc/LHT.xml +30 -0
  584. data/misc/LIC.xml +35 -0
  585. data/misc/LID.xml +36 -0
  586. data/misc/LIE.xml +31 -0
  587. data/misc/LIN.xml +58 -0
  588. data/misc/LM.xml +29 -0
  589. data/misc/LN.xml +38 -0
  590. data/misc/LN1.xml +50 -0
  591. data/misc/LN2.xml +39 -0
  592. data/misc/LOC.xml +51 -0
  593. data/misc/LOD.xml +33 -0
  594. data/misc/LP.xml +34 -0
  595. data/misc/LQ.xml +29 -0
  596. data/misc/LRQ.xml +48 -0
  597. data/misc/LS.xml +28 -0
  598. data/misc/LS1.xml +34 -0
  599. data/misc/LT.xml +31 -0
  600. data/misc/LTE.xml +31 -0
  601. data/misc/LTR.xml +39 -0
  602. data/misc/LUC.xml +31 -0
  603. data/misc/LUI.xml +32 -0
  604. data/misc/LV.xml +29 -0
  605. data/misc/LX.xml +28 -0
  606. data/misc/M0.xml +31 -0
  607. data/misc/M1.xml +39 -0
  608. data/misc/M10.xml +41 -0
  609. data/misc/M11.xml +46 -0
  610. data/misc/M12.xml +38 -0
  611. data/misc/M13.xml +39 -0
  612. data/misc/M14.xml +38 -0
  613. data/misc/M15.xml +43 -0
  614. data/misc/M2.xml +35 -0
  615. data/misc/M20.xml +36 -0
  616. data/misc/M21.xml +42 -0
  617. data/misc/M3.xml +31 -0
  618. data/misc/M7.xml +32 -0
  619. data/misc/M7A.xml +33 -0
  620. data/misc/MAN.xml +33 -0
  621. data/misc/MBL.xml +32 -0
  622. data/misc/MC.xml +32 -0
  623. data/misc/MCD.xml +31 -0
  624. data/misc/MCT.xml +35 -0
  625. data/misc/MEA.xml +39 -0
  626. data/misc/MI.xml +32 -0
  627. data/misc/MI1.xml +30 -0
  628. data/misc/MIA.xml +51 -0
  629. data/misc/MIC.xml +45 -0
  630. data/misc/MIN.xml +43 -0
  631. data/misc/MIR.xml +39 -0
  632. data/misc/MIS.xml +32 -0
  633. data/misc/MIT.xml +31 -0
  634. data/misc/MKS.xml +30 -0
  635. data/misc/MLA.xml +35 -0
  636. data/misc/MLS.xml +31 -0
  637. data/misc/MNC.xml +44 -0
  638. data/misc/MOA.xml +36 -0
  639. data/misc/MPI.xml +34 -0
  640. data/misc/MPP.xml +35 -0
  641. data/misc/MRC.xml +36 -0
  642. data/misc/MS.xml +33 -0
  643. data/misc/MS1.xml +35 -0
  644. data/misc/MS2.xml +31 -0
  645. data/misc/MS3.xml +32 -0
  646. data/misc/MS4.xml +31 -0
  647. data/misc/MS5.xml +32 -0
  648. data/misc/MS6.xml +31 -0
  649. data/misc/MSG.xml +30 -0
  650. data/misc/MSI.xml +29 -0
  651. data/misc/MSS.xml +34 -0
  652. data/misc/MTX.xml +33 -0
  653. data/misc/N1.xml +33 -0
  654. data/misc/N10.xml +40 -0
  655. data/misc/N11.xml +30 -0
  656. data/misc/N12.xml +29 -0
  657. data/misc/N2.xml +29 -0
  658. data/misc/N3.xml +29 -0
  659. data/misc/N4.xml +34 -0
  660. data/misc/N5.xml +36 -0
  661. data/misc/N7.xml +51 -0
  662. data/misc/N7A.xml +36 -0
  663. data/misc/N7B.xml +33 -0
  664. data/misc/N8.xml +38 -0
  665. data/misc/N8A.xml +37 -0
  666. data/misc/N9.xml +34 -0
  667. data/misc/NA.xml +39 -0
  668. data/misc/NCA.xml +32 -0
  669. data/misc/NCD.xml +34 -0
  670. data/misc/NM1.xml +38 -0
  671. data/misc/NTE.xml +29 -0
  672. data/misc/NX1.xml +32 -0
  673. data/misc/NX2.xml +30 -0
  674. data/misc/OBI.xml +33 -0
  675. data/misc/OD.xml +31 -0
  676. data/misc/OI.xml +33 -0
  677. data/misc/OID.xml +38 -0
  678. data/misc/OOI.xml +31 -0
  679. data/misc/OPS.xml +33 -0
  680. data/misc/OPX.xml +32 -0
  681. data/misc/OQS.xml +29 -0
  682. data/misc/ORI.xml +28 -0
  683. data/misc/OTI.xml +44 -0
  684. data/misc/P1.xml +34 -0
  685. data/misc/P2.xml +30 -0
  686. data/misc/P4.xml +32 -0
  687. data/misc/P5.xml +30 -0
  688. data/misc/PAD.xml +32 -0
  689. data/misc/PAI.xml +32 -0
  690. data/misc/PAL.xml +44 -0
  691. data/misc/PAM.xml +42 -0
  692. data/misc/PAS.xml +37 -0
  693. data/misc/PAT.xml +36 -0
  694. data/misc/PBI.xml +35 -0
  695. data/misc/PCL.xml +34 -0
  696. data/misc/PCR.xml +29 -0
  697. data/misc/PCS.xml +38 -0
  698. data/misc/PCT.xml +29 -0
  699. data/misc/PD.xml +37 -0
  700. data/misc/PDD.xml +32 -0
  701. data/misc/PDE.xml +31 -0
  702. data/misc/PDI.xml +31 -0
  703. data/misc/PDL.xml +39 -0
  704. data/misc/PDP.xml +30 -0
  705. data/misc/PDR.xml +31 -0
  706. data/misc/PDS.xml +30 -0
  707. data/misc/PEN.xml +36 -0
  708. data/misc/PER.xml +36 -0
  709. data/misc/PEX.xml +35 -0
  710. data/misc/PI.xml +42 -0
  711. data/misc/PID.xml +36 -0
  712. data/misc/PIN.xml +34 -0
  713. data/misc/PKD.xml +32 -0
  714. data/misc/PKG.xml +33 -0
  715. data/misc/PKL.xml +40 -0
  716. data/misc/PL.xml +33 -0
  717. data/misc/PLA.xml +32 -0
  718. data/misc/PLB.xml +41 -0
  719. data/misc/PLC.xml +29 -0
  720. data/misc/PLD.xml +31 -0
  721. data/misc/PLI.xml +36 -0
  722. data/misc/PM.xml +33 -0
  723. data/misc/PO1.xml +52 -0
  724. data/misc/PO3.xml +35 -0
  725. data/misc/PO4.xml +45 -0
  726. data/misc/POC.xml +54 -0
  727. data/misc/POD.xml +30 -0
  728. data/misc/PPA.xml +33 -0
  729. data/misc/PPD.xml +40 -0
  730. data/misc/PPL.xml +32 -0
  731. data/misc/PPY.xml +35 -0
  732. data/misc/PR.xml +36 -0
  733. data/misc/PR1.xml +40 -0
  734. data/misc/PR2.xml +36 -0
  735. data/misc/PRC.xml +39 -0
  736. data/misc/PRD.xml +38 -0
  737. data/misc/PRF.xml +34 -0
  738. data/misc/PRI.xml +41 -0
  739. data/misc/PRJ.xml +31 -0
  740. data/misc/PRM.xml +40 -0
  741. data/misc/PRR.xml +38 -0
  742. data/misc/PRS.xml +29 -0
  743. data/misc/PRT.xml +31 -0
  744. data/misc/PRV.xml +33 -0
  745. data/misc/PS.xml +41 -0
  746. data/misc/PS1.xml +30 -0
  747. data/misc/PSA.xml +32 -0
  748. data/misc/PSC.xml +52 -0
  749. data/misc/PSD.xml +36 -0
  750. data/misc/PT.xml +38 -0
  751. data/misc/PTD.xml +33 -0
  752. data/misc/PTF.xml +34 -0
  753. data/misc/PTS.xml +38 -0
  754. data/misc/PUN.xml +32 -0
  755. data/misc/PWK.xml +36 -0
  756. data/misc/PYD.xml +32 -0
  757. data/misc/PYM.xml +34 -0
  758. data/misc/PYT.xml +35 -0
  759. data/misc/Q2.xml +43 -0
  760. data/misc/Q3.xml +29 -0
  761. data/misc/Q5.xml +45 -0
  762. data/misc/Q7.xml +30 -0
  763. data/misc/Q8.xml +37 -0
  764. data/misc/QTY.xml +31 -0
  765. data/misc/R1.xml +40 -0
  766. data/misc/R11.xml +34 -0
  767. data/misc/R12.xml +37 -0
  768. data/misc/R13.xml +39 -0
  769. data/misc/R2.xml +40 -0
  770. data/misc/R2A.xml +37 -0
  771. data/misc/R2B.xml +30 -0
  772. data/misc/R2C.xml +31 -0
  773. data/misc/R2D.xml +29 -0
  774. data/misc/R3.xml +39 -0
  775. data/misc/R4.xml +35 -0
  776. data/misc/R9.xml +36 -0
  777. data/misc/RA.xml +37 -0
  778. data/misc/RAB.xml +37 -0
  779. data/misc/RAP.xml +34 -0
  780. data/misc/RB.xml +35 -0
  781. data/misc/RC.xml +36 -0
  782. data/misc/RCD.xml +48 -0
  783. data/misc/RCR.xml +29 -0
  784. data/misc/RD.xml +31 -0
  785. data/misc/RDD.xml +32 -0
  786. data/misc/RDI.xml +32 -0
  787. data/misc/RDM.xml +32 -0
  788. data/misc/RDR.xml +32 -0
  789. data/misc/RDT.xml +33 -0
  790. data/misc/REA.xml +41 -0
  791. data/misc/REC.xml +40 -0
  792. data/misc/RED.xml +33 -0
  793. data/misc/REF.xml +31 -0
  794. data/misc/REL.xml +29 -0
  795. data/misc/REN.xml +34 -0
  796. data/misc/REP.xml +47 -0
  797. data/misc/REQ.xml +29 -0
  798. data/misc/RES.xml +34 -0
  799. data/misc/RET.xml +32 -0
  800. data/misc/RH.xml +30 -0
  801. data/misc/RIC.xml +45 -0
  802. data/misc/RLD.xml +31 -0
  803. data/misc/RLT.xml +39 -0
  804. data/misc/RMR.xml +35 -0
  805. data/misc/RMT.xml +37 -0
  806. data/misc/RO.xml +36 -0
  807. data/misc/RP.xml +36 -0
  808. data/misc/RPA.xml +32 -0
  809. data/misc/RQS.xml +32 -0
  810. data/misc/RRA.xml +29 -0
  811. data/misc/RS.xml +33 -0
  812. data/misc/RSC.xml +31 -0
  813. data/misc/RSD.xml +30 -0
  814. data/misc/RST.xml +29 -0
  815. data/misc/RT.xml +39 -0
  816. data/misc/RT1.xml +35 -0
  817. data/misc/RTE.xml +32 -0
  818. data/misc/RTT.xml +29 -0
  819. data/misc/RU1.xml +36 -0
  820. data/misc/RU2.xml +35 -0
  821. data/misc/RU3.xml +56 -0
  822. data/misc/RYL.xml +31 -0
  823. data/misc/S1.xml +33 -0
  824. data/misc/S2.xml +30 -0
  825. data/misc/S4A.xml +38 -0
  826. data/misc/S5.xml +38 -0
  827. data/misc/S9.xml +35 -0
  828. data/misc/SA.xml +32 -0
  829. data/misc/SAC.xml +43 -0
  830. data/misc/SAD.xml +34 -0
  831. data/misc/SAL.xml +34 -0
  832. data/misc/SB.xml +28 -0
  833. data/misc/SBR.xml +36 -0
  834. data/misc/SBT.xml +30 -0
  835. data/misc/SC.xml +29 -0
  836. data/misc/SCA.xml +34 -0
  837. data/misc/SCD.xml +34 -0
  838. data/misc/SCH.xml +39 -0
  839. data/misc/SCL.xml +37 -0
  840. data/misc/SCM.xml +31 -0
  841. data/misc/SCN.xml +32 -0
  842. data/misc/SCP.xml +31 -0
  843. data/misc/SCR.xml +51 -0
  844. data/misc/SCS.xml +29 -0
  845. data/misc/SCT.xml +38 -0
  846. data/misc/SD1.xml +35 -0
  847. data/misc/SDP.xml +35 -0
  848. data/misc/SDQ.xml +50 -0
  849. data/misc/SE.xml +29 -0
  850. data/misc/SER.xml +38 -0
  851. data/misc/SES.xml +41 -0
  852. data/misc/SFC.xml +29 -0
  853. data/misc/SG.xml +33 -0
  854. data/misc/SHD.xml +41 -0
  855. data/misc/SHI.xml +32 -0
  856. data/misc/SHP.xml +34 -0
  857. data/misc/SHR.xml +29 -0
  858. data/misc/SI.xml +48 -0
  859. data/misc/SID.xml +33 -0
  860. data/misc/SII.xml +34 -0
  861. data/misc/SIN.xml +33 -0
  862. data/misc/SL1.xml +36 -0
  863. data/misc/SLA.xml +35 -0
  864. data/misc/SLI.xml +49 -0
  865. data/misc/SLN.xml +55 -0
  866. data/misc/SMA.xml +32 -0
  867. data/misc/SMB.xml +36 -0
  868. data/misc/SMD.xml +30 -0
  869. data/misc/SMO.xml +34 -0
  870. data/misc/SMR.xml +31 -0
  871. data/misc/SMS.xml +40 -0
  872. data/misc/SN1.xml +35 -0
  873. data/misc/SOI.xml +32 -0
  874. data/misc/SOM.xml +40 -0
  875. data/misc/SP.xml +32 -0
  876. data/misc/SPA.xml +38 -0
  877. data/misc/SPE.xml +31 -0
  878. data/misc/SPI.xml +42 -0
  879. data/misc/SPK.xml +32 -0
  880. data/misc/SPR.xml +36 -0
  881. data/misc/SPS.xml +33 -0
  882. data/misc/SPY.xml +30 -0
  883. data/misc/SR.xml +38 -0
  884. data/misc/SRA.xml +29 -0
  885. data/misc/SRD.xml +47 -0
  886. data/misc/SRE.xml +29 -0
  887. data/misc/SRM.xml +43 -0
  888. data/misc/SRT.xml +40 -0
  889. data/misc/SS.xml +36 -0
  890. data/misc/SSC.xml +35 -0
  891. data/misc/SSD.xml +31 -0
  892. data/misc/SSE.xml +32 -0
  893. data/misc/SSS.xml +36 -0
  894. data/misc/SST.xml +36 -0
  895. data/misc/ST.xml +30 -0
  896. data/misc/STA.xml +35 -0
  897. data/misc/STC.xml +39 -0
  898. data/misc/STP.xml +36 -0
  899. data/misc/STS.xml +32 -0
  900. data/misc/SUM.xml +45 -0
  901. data/misc/SUP.xml +31 -0
  902. data/misc/SV.xml +31 -0
  903. data/misc/SV1.xml +48 -0
  904. data/misc/SV2.xml +37 -0
  905. data/misc/SV3.xml +38 -0
  906. data/misc/SV4.xml +45 -0
  907. data/misc/SV5.xml +34 -0
  908. data/misc/SV6.xml +34 -0
  909. data/misc/SV7.xml +33 -0
  910. data/misc/SVA.xml +30 -0
  911. data/misc/SVC.xml +34 -0
  912. data/misc/SVD.xml +33 -0
  913. data/misc/SW.xml +36 -0
  914. data/misc/T1.xml +36 -0
  915. data/misc/T1002.xml +30 -0
  916. data/misc/T1004.xml +305 -0
  917. data/misc/T1005.xml +107 -0
  918. data/misc/T1006.xml +35 -0
  919. data/misc/T1007.xml +31 -0
  920. data/misc/T1008.xml +58 -0
  921. data/misc/T1009.xml +116 -0
  922. data/misc/T1012.xml +53 -0
  923. data/misc/T1013.xml +113 -0
  924. data/misc/T1015.xml +33 -0
  925. data/misc/T1016.xml +33 -0
  926. data/misc/T1017.xml +82 -0
  927. data/misc/T1019.xml +30 -0
  928. data/misc/T102.xml +32 -0
  929. data/misc/T1020.xml +30 -0
  930. data/misc/T1023.xml +31 -0
  931. data/misc/T1025.xml +30 -0
  932. data/misc/T1026.xml +34 -0
  933. data/misc/T1029.xml +68 -0
  934. data/misc/T103.2.xml +84 -0
  935. data/misc/T1030.xml +41 -0
  936. data/misc/T1031.xml +40 -0
  937. data/misc/T1032.xml +75 -0
  938. data/misc/T1033.xml +36 -0
  939. data/misc/T104.xml +31 -0
  940. data/misc/T1042.xml +32 -0
  941. data/misc/T1044.xml +41 -0
  942. data/misc/T1045.xml +32 -0
  943. data/misc/T1046.xml +34 -0
  944. data/misc/T1047.xml +40 -0
  945. data/misc/T1048.xml +36 -0
  946. data/misc/T1053.xml +29 -0
  947. data/misc/T1054.xml +30 -0
  948. data/misc/T1062.xml +47 -0
  949. data/misc/T1065.xml +43 -0
  950. data/misc/T1066.xml +45 -0
  951. data/misc/T1067.xml +39 -0
  952. data/misc/T1068.xml +34 -0
  953. data/misc/T1069.xml +181 -0
  954. data/misc/T107.xml +64 -0
  955. data/misc/T1070.xml +42 -0
  956. data/misc/T1071.xml +104 -0
  957. data/misc/T1072.xml +31 -0
  958. data/misc/T1073.xml +31 -0
  959. data/misc/T1074.xml +101 -0
  960. data/misc/T1075.xml +40 -0
  961. data/misc/T1076.xml +31 -0
  962. data/misc/T1077.xml +31 -0
  963. data/misc/T1078.xml +43 -0
  964. data/misc/T1079.xml +31 -0
  965. data/misc/T108.xml +59 -0
  966. data/misc/T1080.xml +31 -0
  967. data/misc/T1081.xml +72 -0
  968. data/misc/T1082.xml +48 -0
  969. data/misc/T1083.xml +76 -0
  970. data/misc/T1084.xml +29 -0
  971. data/misc/T1085.xml +58 -0
  972. data/misc/T1086.xml +34 -0
  973. data/misc/T1089.xml +98 -0
  974. data/misc/T1090.xml +30 -0
  975. data/misc/T1091.xml +39 -0
  976. data/misc/T1093.xml +45 -0
  977. data/misc/T1097.xml +31 -0
  978. data/misc/T1098.xml +30 -0
  979. data/misc/T1099.xml +31 -0
  980. data/misc/T11.xml +47 -0
  981. data/misc/T110.xml +47 -0
  982. data/misc/T1100.xml +36 -0
  983. data/misc/T1101.xml +34 -0
  984. data/misc/T1102.xml +30 -0
  985. data/misc/T1103.xml +35 -0
  986. data/misc/T1104.xml +49 -0
  987. data/misc/T1105.xml +32 -0
  988. data/misc/T1106.xml +101 -0
  989. data/misc/T1107.xml +43 -0
  990. data/misc/T1108.xml +39 -0
  991. data/misc/T1109.xml +50 -0
  992. data/misc/T1113.xml +43 -0
  993. data/misc/T1122.xml +34 -0
  994. data/misc/T1123.xml +46 -0
  995. data/misc/T1127.xml +60 -0
  996. data/misc/T1129.xml +184 -0
  997. data/misc/T1130.xml +29 -0
  998. data/misc/T1131.xml +120 -0
  999. data/misc/T1132.xml +68 -0
  1000. data/misc/T1133.xml +112 -0
  1001. data/misc/T1134.xml +36 -0
  1002. data/misc/T1135.xml +40 -0
  1003. data/misc/T1136.xml +447 -0
  1004. data/misc/T1138.xml +33 -0
  1005. data/misc/T1139.xml +42 -0
  1006. data/misc/T1140.xml +32 -0
  1007. data/misc/T1141.xml +43 -0
  1008. data/misc/T1142.xml +65 -0
  1009. data/misc/T1143.xml +36 -0
  1010. data/misc/T1146.xml +33 -0
  1011. data/misc/T1147.xml +47 -0
  1012. data/misc/T115.xml +60 -0
  1013. data/misc/T1150.xml +30 -0
  1014. data/misc/T1152.xml +30 -0
  1015. data/misc/T1153.xml +41 -0
  1016. data/misc/T1154.xml +31 -0
  1017. data/misc/T1156.xml +38 -0
  1018. data/misc/T1157.xml +31 -0
  1019. data/misc/T1159.xml +56 -0
  1020. data/misc/T1160.xml +41 -0
  1021. data/misc/T1161.xml +57 -0
  1022. data/misc/T1162.xml +35 -0
  1023. data/misc/T1163.xml +35 -0
  1024. data/misc/T1164.xml +36 -0
  1025. data/misc/T1165.xml +30 -0
  1026. data/misc/T1166.xml +77 -0
  1027. data/misc/T1168.xml +43 -0
  1028. data/misc/T1172.xml +109 -0
  1029. data/misc/T1173.xml +46 -0
  1030. data/misc/T1176.xml +97 -0
  1031. data/misc/T1179.xml +29 -0
  1032. data/misc/T1181.xml +46 -0
  1033. data/misc/T1185.xml +48 -0
  1034. data/misc/T1186.xml +144 -0
  1035. data/misc/T1187.xml +60 -0
  1036. data/misc/T1188.xml +144 -0
  1037. data/misc/T1189.xml +33 -0
  1038. data/misc/T1193.xml +61 -0
  1039. data/misc/T1196.xml +189 -0
  1040. data/misc/T1197.xml +46 -0
  1041. data/misc/T1198.xml +30 -0
  1042. data/misc/T1199.xml +32 -0
  1043. data/misc/T120.xml +31 -0
  1044. data/misc/T1201.xml +37 -0
  1045. data/misc/T1202.xml +32 -0
  1046. data/misc/T1203.xml +143 -0
  1047. data/misc/T1205.xml +79 -0
  1048. data/misc/T1207.xml +45 -0
  1049. data/misc/T1209.xml +34 -0
  1050. data/misc/T121.xml +52 -0
  1051. data/misc/T1211.xml +35 -0
  1052. data/misc/T1212.xml +32 -0
  1053. data/misc/T1213.xml +40 -0
  1054. data/misc/T1215.xml +32 -0
  1055. data/misc/T1216.xml +33 -0
  1056. data/misc/T1218.xml +32 -0
  1057. data/misc/T1219.xml +38 -0
  1058. data/misc/T122.xml +204 -0
  1059. data/misc/T1220.xml +30 -0
  1060. data/misc/T1221.xml +53 -0
  1061. data/misc/T1222.xml +38 -0
  1062. data/misc/T1223.xml +35 -0
  1063. data/misc/T1224.xml +62 -0
  1064. data/misc/T1225.xml +39 -0
  1065. data/misc/T1226.xml +43 -0
  1066. data/misc/T1227.xml +34 -0
  1067. data/misc/T1229.xml +32 -0
  1068. data/misc/T1230.xml +87 -0
  1069. data/misc/T1231.xml +38 -0
  1070. data/misc/T1232.xml +50 -0
  1071. data/misc/T1233.xml +49 -0
  1072. data/misc/T1234.xml +31 -0
  1073. data/misc/T1236.xml +31 -0
  1074. data/misc/T1237.xml +32 -0
  1075. data/misc/T1238.xml +30 -0
  1076. data/misc/T1239.xml +36 -0
  1077. data/misc/T1240.xml +57 -0
  1078. data/misc/T1241.xml +36 -0
  1079. data/misc/T1246.xml +30 -0
  1080. data/misc/T125.xml +47 -0
  1081. data/misc/T1250.xml +68 -0
  1082. data/misc/T1254.xml +41 -0
  1083. data/misc/T1257.xml +52 -0
  1084. data/misc/T1262.xml +98 -0
  1085. data/misc/T1264.xml +59 -0
  1086. data/misc/T1265.xml +34 -0
  1087. data/misc/T1266.xml +43 -0
  1088. data/misc/T1267.xml +33 -0
  1089. data/misc/T1268.xml +30 -0
  1090. data/misc/T1270.xml +917 -0
  1091. data/misc/T1273.xml +30 -0
  1092. data/misc/T1275.xml +31 -0
  1093. data/misc/T1277.xml +31 -0
  1094. data/misc/T1278.xml +29 -0
  1095. data/misc/T128.xml +1712 -0
  1096. data/misc/T1280.xml +43 -0
  1097. data/misc/T1292.xml +41 -0
  1098. data/misc/T1293.xml +56 -0
  1099. data/misc/T1294.xml +41 -0
  1100. data/misc/T1295.xml +55 -0
  1101. data/misc/T1297.xml +33 -0
  1102. data/misc/T1300.xml +1116 -0
  1103. data/misc/T1303.xml +35 -0
  1104. data/misc/T1304.xml +37 -0
  1105. data/misc/T1307.xml +216 -0
  1106. data/misc/T1308.xml +38 -0
  1107. data/misc/T1309.xml +144 -0
  1108. data/misc/T1310.xml +30 -0
  1109. data/misc/T1311.xml +38 -0
  1110. data/misc/T1312.xml +30 -0
  1111. data/misc/T1316.xml +31 -0
  1112. data/misc/T1317.xml +33 -0
  1113. data/misc/T1319.xml +37 -0
  1114. data/misc/T132.xml +33 -0
  1115. data/misc/T1320.xml +31 -0
  1116. data/misc/T1321.xml +1327 -0
  1117. data/misc/T1322.xml +41 -0
  1118. data/misc/T1327.xml +31 -0
  1119. data/misc/T1329.xml +37 -0
  1120. data/misc/T133.xml +50 -0
  1121. data/misc/T1330.xml +100 -0
  1122. data/misc/T1332.xml +29 -0
  1123. data/misc/T1333.xml +33 -0
  1124. data/misc/T1335.xml +31 -0
  1125. data/misc/T1336.xml +74 -0
  1126. data/misc/T1337.xml +35 -0
  1127. data/misc/T1338.xml +44 -0
  1128. data/misc/T1340.xml +30 -0
  1129. data/misc/T1342.xml +34 -0
  1130. data/misc/T1343.xml +74 -0
  1131. data/misc/T1344.xml +30 -0
  1132. data/misc/T1345.xml +36 -0
  1133. data/misc/T1346.xml +30 -0
  1134. data/misc/T1347.xml +31 -0
  1135. data/misc/T1348.xml +33 -0
  1136. data/misc/T1349.xml +34 -0
  1137. data/misc/T1350.xml +30 -0
  1138. data/misc/T1351.xml +32 -0
  1139. data/misc/T1355.xml +35 -0
  1140. data/misc/T1356.xml +31 -0
  1141. data/misc/T1357.xml +35 -0
  1142. data/misc/T1358.xml +29 -0
  1143. data/misc/T1359.xml +31 -0
  1144. data/misc/T1360.xml +34 -0
  1145. data/misc/T1361.xml +43 -0
  1146. data/misc/T1362.xml +33 -0
  1147. data/misc/T1363.xml +33 -0
  1148. data/misc/T1364.xml +35 -0
  1149. data/misc/T1365.xml +210 -0
  1150. data/misc/T1366.xml +37 -0
  1151. data/misc/T1367.xml +55 -0
  1152. data/misc/T1368.xml +31 -0
  1153. data/misc/T1369.xml +34 -0
  1154. data/misc/T1370.xml +37 -0
  1155. data/misc/T1373.xml +41 -0
  1156. data/misc/T1376.xml +55 -0
  1157. data/misc/T1378.xml +36 -0
  1158. data/misc/T1379.xml +49 -0
  1159. data/misc/T1382.xml +32 -0
  1160. data/misc/T1383.xml +45 -0
  1161. data/misc/T1384.xml +42 -0
  1162. data/misc/T1387.xml +61 -0
  1163. data/misc/T139.xml +40 -0
  1164. data/misc/T1390.xml +66 -0
  1165. data/misc/T1393.xml +31 -0
  1166. data/misc/T1395.xml +35 -0
  1167. data/misc/T1396.xml +30 -0
  1168. data/misc/T1398.xml +68 -0
  1169. data/misc/T1401.xml +44 -0
  1170. data/misc/T1402.xml +56 -0
  1171. data/misc/T1403.xml +30 -0
  1172. data/misc/T1404.xml +29 -0
  1173. data/misc/T1407.xml +29 -0
  1174. data/misc/T1408.xml +30 -0
  1175. data/misc/T1413.xml +30 -0
  1176. data/misc/T1420.xml +41 -0
  1177. data/misc/T1422.xml +32 -0
  1178. data/misc/T1423.xml +89 -0
  1179. data/misc/T1425.xml +36 -0
  1180. data/misc/T1426.xml +43 -0
  1181. data/misc/T1428.xml +29 -0
  1182. data/misc/T1429.xml +76 -0
  1183. data/misc/T143.xml +341 -0
  1184. data/misc/T1431.xml +33 -0
  1185. data/misc/T1432.xml +51 -0
  1186. data/misc/T1434.xml +34 -0
  1187. data/misc/T1439.xml +37 -0
  1188. data/misc/T146.xml +58 -0
  1189. data/misc/T1465.xml +48 -0
  1190. data/misc/T1466.xml +49 -0
  1191. data/misc/T1468.xml +64 -0
  1192. data/misc/T1469.xml +33 -0
  1193. data/misc/T147.xml +62 -0
  1194. data/misc/T1473.xml +42 -0
  1195. data/misc/T1476.xml +38 -0
  1196. data/misc/T1484.xml +37 -0
  1197. data/misc/T1485.xml +29 -0
  1198. data/misc/T1487.xml +58 -0
  1199. data/misc/T1488.xml +44 -0
  1200. data/misc/T1489.xml +39 -0
  1201. data/misc/T1491.xml +30 -0
  1202. data/misc/T1492.xml +37 -0
  1203. data/misc/T1493.xml +35 -0
  1204. data/misc/T1496.xml +81 -0
  1205. data/misc/T1499.xml +29 -0
  1206. data/misc/T150.xml +1125 -0
  1207. data/misc/T1511.xml +34 -0
  1208. data/misc/T1514.xml +41 -0
  1209. data/misc/T152.xml +577 -0
  1210. data/misc/T1520.xml +52 -0
  1211. data/misc/T1521.xml +41 -0
  1212. data/misc/T1522.xml +52 -0
  1213. data/misc/T1523.xml +35 -0
  1214. data/misc/T1525.xml +34 -0
  1215. data/misc/T1526.xml +32 -0
  1216. data/misc/T1527.xml +33 -0
  1217. data/misc/T1540.xml +31 -0
  1218. data/misc/T1543.xml +29 -0
  1219. data/misc/T1546.xml +32 -0
  1220. data/misc/T1549.xml +34 -0
  1221. data/misc/T1550.xml +31 -0
  1222. data/misc/T1552.xml +41 -0
  1223. data/misc/T1553.xml +41 -0
  1224. data/misc/T1554.xml +47 -0
  1225. data/misc/T1555.xml +31 -0
  1226. data/misc/T1556.xml +30 -0
  1227. data/misc/T1557.xml +32 -0
  1228. data/misc/T1558.xml +31 -0
  1229. data/misc/T1559.xml +50 -0
  1230. data/misc/T1560.xml +38 -0
  1231. data/misc/T1561.xml +29 -0
  1232. data/misc/T157.xml +206 -0
  1233. data/misc/T1570.xml +35 -0
  1234. data/misc/T1572.xml +30 -0
  1235. data/misc/T1574.xml +34 -0
  1236. data/misc/T1575.xml +33 -0
  1237. data/misc/T1576.xml +30 -0
  1238. data/misc/T1577.xml +30 -0
  1239. data/misc/T1578.xml +36 -0
  1240. data/misc/T1579.xml +30 -0
  1241. data/misc/T1585.xml +33 -0
  1242. data/misc/T1588.xml +47 -0
  1243. data/misc/T1590.xml +151 -0
  1244. data/misc/T1591.xml +159 -0
  1245. data/misc/T1592.xml +60 -0
  1246. data/misc/T1594.xml +69 -0
  1247. data/misc/T1595.xml +42 -0
  1248. data/misc/T1596.xml +82 -0
  1249. data/misc/T1599.xml +151 -0
  1250. data/misc/T16.xml +33 -0
  1251. data/misc/T160.xml +31 -0
  1252. data/misc/T1600.xml +36 -0
  1253. data/misc/T1601.xml +39 -0
  1254. data/misc/T1602.xml +59 -0
  1255. data/misc/T1606.xml +39 -0
  1256. data/misc/T1607.xml +47 -0
  1257. data/misc/T1609.xml +51 -0
  1258. data/misc/T1610.xml +31 -0
  1259. data/misc/T1611.xml +38 -0
  1260. data/misc/T1612.xml +32 -0
  1261. data/misc/T1617.xml +31 -0
  1262. data/misc/T1619.xml +30 -0
  1263. data/misc/T1620.xml +49 -0
  1264. data/misc/T1621.xml +29 -0
  1265. data/misc/T1622.xml +35 -0
  1266. data/misc/T1626.xml +30 -0
  1267. data/misc/T1627.xml +29 -0
  1268. data/misc/T1629.xml +41 -0
  1269. data/misc/T163.xml +49 -0
  1270. data/misc/T1630.xml +61 -0
  1271. data/misc/T1631.xml +44 -0
  1272. data/misc/T1632.xml +96 -0
  1273. data/misc/T1633.xml +32 -0
  1274. data/misc/T1634.xml +128 -0
  1275. data/misc/T1635.xml +39 -0
  1276. data/misc/T1636.xml +54 -0
  1277. data/misc/T1637.xml +29 -0
  1278. data/misc/T1638.xml +57 -0
  1279. data/misc/T1642.xml +37 -0
  1280. data/misc/T1644.xml +34 -0
  1281. data/misc/T1650.xml +73 -0
  1282. data/misc/T1651.xml +111 -0
  1283. data/misc/T1652.xml +36 -0
  1284. data/misc/T1656.xml +31 -0
  1285. data/misc/T1657.xml +30 -0
  1286. data/misc/T1658.xml +34 -0
  1287. data/misc/T1675.xml +31 -0
  1288. data/misc/T1678.xml +34 -0
  1289. data/misc/T1679.xml +30 -0
  1290. data/misc/T1680.xml +30 -0
  1291. data/misc/T1681.xml +43 -0
  1292. data/misc/T1685.xml +30 -0
  1293. data/misc/T1691.xml +81 -0
  1294. data/misc/T1693.xml +28 -0
  1295. data/misc/T1698.xml +30 -0
  1296. data/misc/T1699.xml +30 -0
  1297. data/misc/T1701.xml +30 -0
  1298. data/misc/T1703.xml +32 -0
  1299. data/misc/T1706.xml +33 -0
  1300. data/misc/T1713.xml +39 -0
  1301. data/misc/T1714.xml +40 -0
  1302. data/misc/T1719.xml +31 -0
  1303. data/misc/T1720.xml +46 -0
  1304. data/misc/T1721.xml +67 -0
  1305. data/misc/T1722.xml +38 -0
  1306. data/misc/T1727.xml +30 -0
  1307. data/misc/T1729.xml +48 -0
  1308. data/misc/T1730.xml +37 -0
  1309. data/misc/T1731.xml +40 -0
  1310. data/misc/T176.xml +70 -0
  1311. data/misc/T181.xml +75 -0
  1312. data/misc/T184.xml +43 -0
  1313. data/misc/T187.xml +79 -0
  1314. data/misc/T188.xml +35 -0
  1315. data/misc/T190.xml +29 -0
  1316. data/misc/T192.xml +30 -0
  1317. data/misc/T195.xml +33 -0
  1318. data/misc/T197.xml +34 -0
  1319. data/misc/T199.xml +31 -0
  1320. data/misc/T2.xml +39 -0
  1321. data/misc/T201.xml +39 -0
  1322. data/misc/T202.xml +66 -0
  1323. data/misc/T208.xml +41 -0
  1324. data/misc/T210.xml +29 -0
  1325. data/misc/T211.xml +161 -0
  1326. data/misc/T214.xml +31 -0
  1327. data/misc/T216.xml +28 -0
  1328. data/misc/T221.xml +74 -0
  1329. data/misc/T226.xml +29 -0
  1330. data/misc/T23.xml +53 -0
  1331. data/misc/T231.xml +42 -0
  1332. data/misc/T235.xml +544 -0
  1333. data/misc/T236.xml +194 -0
  1334. data/misc/T240.xml +46 -0
  1335. data/misc/T241.xml +36 -0
  1336. data/misc/T242.xml +35 -0
  1337. data/misc/T246.xml +86 -0
  1338. data/misc/T248.xml +34 -0
  1339. data/misc/T249.xml +32 -0
  1340. data/misc/T253.xml +33 -0
  1341. data/misc/T256.xml +48 -0
  1342. data/misc/T257.xml +37 -0
  1343. data/misc/T259.xml +48 -0
  1344. data/misc/T261.xml +44 -0
  1345. data/misc/T262.xml +37 -0
  1346. data/misc/T263.xml +48 -0
  1347. data/misc/T271.xml +29 -0
  1348. data/misc/T272.xml +29 -0
  1349. data/misc/T283.xml +31 -0
  1350. data/misc/T284.xml +93 -0
  1351. data/misc/T286.xml +37 -0
  1352. data/misc/T287.xml +30 -0
  1353. data/misc/T288.xml +34 -0
  1354. data/misc/T290.xml +51 -0
  1355. data/misc/T291.xml +30 -0
  1356. data/misc/T292.xml +29 -0
  1357. data/misc/T293.xml +30 -0
  1358. data/misc/T295.xml +36 -0
  1359. data/misc/T3.xml +34 -0
  1360. data/misc/T304.xml +138 -0
  1361. data/misc/T305.xml +50 -0
  1362. data/misc/T306.xml +347 -0
  1363. data/misc/T308.xml +28 -0
  1364. data/misc/T309.xml +209 -0
  1365. data/misc/T311.xml +32 -0
  1366. data/misc/T312.xml +32 -0
  1367. data/misc/T313.xml +37 -0
  1368. data/misc/T321.xml +35 -0
  1369. data/misc/T322.xml +32 -0
  1370. data/misc/T33.xml +34 -0
  1371. data/misc/T331.xml +49 -0
  1372. data/misc/T333.xml +44 -0
  1373. data/misc/T334.xml +30 -0
  1374. data/misc/T335.xml +52 -0
  1375. data/misc/T336.xml +104 -0
  1376. data/misc/T340.xml +153 -0
  1377. data/misc/T344.xml +87 -0
  1378. data/misc/T345.xml +59 -0
  1379. data/misc/T346.xml +111 -0
  1380. data/misc/T349.xml +30 -0
  1381. data/misc/T353.xml +93 -0
  1382. data/misc/T355.xml +831 -0
  1383. data/misc/T363.xml +376 -0
  1384. data/misc/T365.xml +69 -0
  1385. data/misc/T366.xml +265 -0
  1386. data/misc/T368.xml +129 -0
  1387. data/misc/T371.xml +57 -0
  1388. data/misc/T372.xml +29 -0
  1389. data/misc/T374.xml +1283 -0
  1390. data/misc/T375.xml +106 -0
  1391. data/misc/T377.xml +31 -0
  1392. data/misc/T378.xml +39 -0
  1393. data/misc/T379.xml +36 -0
  1394. data/misc/T381.xml +44 -0
  1395. data/misc/T39.xml +35 -0
  1396. data/misc/T392.xml +30 -0
  1397. data/misc/T393.xml +44 -0
  1398. data/misc/T399.xml +32 -0
  1399. data/misc/T40.xml +164 -0
  1400. data/misc/T400.xml +39 -0
  1401. data/misc/T407.xml +31 -0
  1402. data/misc/T412.xml +42 -0
  1403. data/misc/T422.xml +103 -0
  1404. data/misc/T423.xml +34 -0
  1405. data/misc/T426.xml +508 -0
  1406. data/misc/T432.xml +166 -0
  1407. data/misc/T433.xml +31 -0
  1408. data/misc/T436.xml +33 -0
  1409. data/misc/T437.xml +28 -0
  1410. data/misc/T441.xml +61 -0
  1411. data/misc/T444.xml +33 -0
  1412. data/misc/T445.xml +37 -0
  1413. data/misc/T448.xml +43 -0
  1414. data/misc/T455.xml +29 -0
  1415. data/misc/T456.xml +31 -0
  1416. data/misc/T460.xml +40 -0
  1417. data/misc/T461.xml +30 -0
  1418. data/misc/T465.xml +28 -0
  1419. data/misc/T47.xml +29 -0
  1420. data/misc/T473.xml +40 -0
  1421. data/misc/T478.xml +29 -0
  1422. data/misc/T479.xml +288 -0
  1423. data/misc/T48.xml +31 -0
  1424. data/misc/T480.xml +72 -0
  1425. data/misc/T481.xml +30 -0
  1426. data/misc/T482.xml +36 -0
  1427. data/misc/T483.xml +32 -0
  1428. data/misc/T484.xml +32 -0
  1429. data/misc/T485.xml +38 -0
  1430. data/misc/T486.xml +35 -0
  1431. data/misc/T487.xml +33 -0
  1432. data/misc/T491.xml +31 -0
  1433. data/misc/T501.xml +44 -0
  1434. data/misc/T503.xml +30 -0
  1435. data/misc/T506.xml +32 -0
  1436. data/misc/T51.xml +29 -0
  1437. data/misc/T511.xml +36 -0
  1438. data/misc/T512.xml +31 -0
  1439. data/misc/T514.xml +40 -0
  1440. data/misc/T516.xml +31 -0
  1441. data/misc/T519.xml +33 -0
  1442. data/misc/T52.xml +55 -0
  1443. data/misc/T521.xml +84 -0
  1444. data/misc/T522.xml +1767 -0
  1445. data/misc/T529.xml +43 -0
  1446. data/misc/T533.xml +31 -0
  1447. data/misc/T534.xml +34 -0
  1448. data/misc/T535.xml +33 -0
  1449. data/misc/T536.xml +40 -0
  1450. data/misc/T537.xml +29 -0
  1451. data/misc/T538.xml +36 -0
  1452. data/misc/T54.xml +36 -0
  1453. data/misc/T544.xml +29 -0
  1454. data/misc/T545.xml +36 -0
  1455. data/misc/T546.xml +208 -0
  1456. data/misc/T547.xml +47 -0
  1457. data/misc/T548.xml +86 -0
  1458. data/misc/T558.xml +37 -0
  1459. data/misc/T559.xml +218 -0
  1460. data/misc/T56.xml +46 -0
  1461. data/misc/T560.xml +196 -0
  1462. data/misc/T562.xml +74 -0
  1463. data/misc/T563.xml +83 -0
  1464. data/misc/T566.xml +36 -0
  1465. data/misc/T568.xml +34 -0
  1466. data/misc/T569.xml +73 -0
  1467. data/misc/T570.xml +29 -0
  1468. data/misc/T571.xml +29 -0
  1469. data/misc/T572.xml +32 -0
  1470. data/misc/T575.xml +28 -0
  1471. data/misc/T578.xml +45 -0
  1472. data/misc/T579.xml +36 -0
  1473. data/misc/T580.xml +34 -0
  1474. data/misc/T584.xml +117 -0
  1475. data/misc/T585.xml +46 -0
  1476. data/misc/T587.xml +42 -0
  1477. data/misc/T590.xml +30 -0
  1478. data/misc/T591.xml +81 -0
  1479. data/misc/T592.xml +34 -0
  1480. data/misc/T594.xml +50 -0
  1481. data/misc/T595.xml +33 -0
  1482. data/misc/T6.xml +34 -0
  1483. data/misc/T604.xml +30 -0
  1484. data/misc/T605.xml +31 -0
  1485. data/misc/T608.xml +34 -0
  1486. data/misc/T611.xml +52 -0
  1487. data/misc/T612.xml +31 -0
  1488. data/misc/T615.xml +65 -0
  1489. data/misc/T617.xml +51 -0
  1490. data/misc/T623.xml +78 -0
  1491. data/misc/T625.xml +31 -0
  1492. data/misc/T626.xml +50 -0
  1493. data/misc/T627.xml +32 -0
  1494. data/misc/T629.xml +33 -0
  1495. data/misc/T632.xml +38 -0
  1496. data/misc/T635.xml +47 -0
  1497. data/misc/T639.xml +118 -0
  1498. data/misc/T640.xml +553 -0
  1499. data/misc/T641.xml +463 -0
  1500. data/misc/T644.xml +31 -0
  1501. data/misc/T645.xml +29 -0
  1502. data/misc/T647.xml +227 -0
  1503. data/misc/T648.xml +33 -0
  1504. data/misc/T650.xml +109 -0
  1505. data/misc/T653.xml +39 -0
  1506. data/misc/T654.xml +31 -0
  1507. data/misc/T656.xml +29 -0
  1508. data/misc/T659.xml +47 -0
  1509. data/misc/T66.xml +266 -0
  1510. data/misc/T662.xml +32 -0
  1511. data/misc/T665.xml +29 -0
  1512. data/misc/T666.xml +47 -0
  1513. data/misc/T668.xml +53 -0
  1514. data/misc/T669.xml +33 -0
  1515. data/misc/T670.xml +57 -0
  1516. data/misc/T672.xml +35 -0
  1517. data/misc/T673.xml +1123 -0
  1518. data/misc/T674.xml +32 -0
  1519. data/misc/T675.xml +38 -0
  1520. data/misc/T676.xml +31 -0
  1521. data/misc/T678.xml +72 -0
  1522. data/misc/T679.xml +36 -0
  1523. data/misc/T680.xml +48 -0
  1524. data/misc/T681.xml +38 -0
  1525. data/misc/T682.xml +58 -0
  1526. data/misc/T683.xml +32 -0
  1527. data/misc/T687.xml +89 -0
  1528. data/misc/T688.xml +38 -0
  1529. data/misc/T689.xml +44 -0
  1530. data/misc/T692.xml +61 -0
  1531. data/misc/T693.xml +34 -0
  1532. data/misc/T695.xml +39 -0
  1533. data/misc/T698.xml +30 -0
  1534. data/misc/T699.xml +29 -0
  1535. data/misc/T701.xml +118 -0
  1536. data/misc/T703.xml +45 -0
  1537. data/misc/T704.xml +41 -0
  1538. data/misc/T705.xml +30 -0
  1539. data/misc/T706.xml +151 -0
  1540. data/misc/T707.xml +115 -0
  1541. data/misc/T708.xml +125 -0
  1542. data/misc/T709.xml +29 -0
  1543. data/misc/T714.xml +30 -0
  1544. data/misc/T715.xml +34 -0
  1545. data/misc/T716.xml +47 -0
  1546. data/misc/T717.xml +33 -0
  1547. data/misc/T718.xml +50 -0
  1548. data/misc/T72.xml +30 -0
  1549. data/misc/T720.xml +35 -0
  1550. data/misc/T723.xml +39 -0
  1551. data/misc/T726.xml +46 -0
  1552. data/misc/T728.xml +38 -0
  1553. data/misc/T73.xml +30 -0
  1554. data/misc/T731.xml +34 -0
  1555. data/misc/T732.xml +37 -0
  1556. data/misc/T735.xml +277 -0
  1557. data/misc/T736.xml +29 -0
  1558. data/misc/T737.xml +191 -0
  1559. data/misc/T738.xml +1018 -0
  1560. data/misc/T743.xml +31 -0
  1561. data/misc/T744.xml +39 -0
  1562. data/misc/T745.xml +28 -0
  1563. data/misc/T747.xml +30 -0
  1564. data/misc/T748.xml +51 -0
  1565. data/misc/T749.xml +51 -0
  1566. data/misc/T750.xml +263 -0
  1567. data/misc/T752.xml +136 -0
  1568. data/misc/T753.xml +72 -0
  1569. data/misc/T755.xml +560 -0
  1570. data/misc/T756.xml +82 -0
  1571. data/misc/T759.xml +28 -0
  1572. data/misc/T760.xml +28 -0
  1573. data/misc/T762.xml +42 -0
  1574. data/misc/T771.xml +41 -0
  1575. data/misc/T772.xml +30 -0
  1576. data/misc/T78.xml +31 -0
  1577. data/misc/T783.xml +42 -0
  1578. data/misc/T786.xml +44 -0
  1579. data/misc/T789.xml +44 -0
  1580. data/misc/T792.xml +42 -0
  1581. data/misc/T795.xml +36 -0
  1582. data/misc/T797.xml +32 -0
  1583. data/misc/T8.xml +34 -0
  1584. data/misc/T808.xml +46 -0
  1585. data/misc/T811.xml +45 -0
  1586. data/misc/T812.xml +38 -0
  1587. data/misc/T813.xml +39 -0
  1588. data/misc/T814.xml +29 -0
  1589. data/misc/T815.xml +40 -0
  1590. data/misc/T816.xml +37 -0
  1591. data/misc/T820.xml +58 -0
  1592. data/misc/T821.xml +180 -0
  1593. data/misc/T829.xml +48 -0
  1594. data/misc/T83.xml +55 -0
  1595. data/misc/T831.xml +41 -0
  1596. data/misc/T835.xml +28 -0
  1597. data/misc/T836.xml +63 -0
  1598. data/misc/T837.xml +38 -0
  1599. data/misc/T844.xml +30 -0
  1600. data/misc/T845.xml +34 -0
  1601. data/misc/T846.xml +66 -0
  1602. data/misc/T847.xml +35 -0
  1603. data/misc/T848.xml +30 -0
  1604. data/misc/T849.xml +30 -0
  1605. data/misc/T850.xml +39 -0
  1606. data/misc/T852.xml +31 -0
  1607. data/misc/T853.xml +48 -0
  1608. data/misc/T854.xml +47 -0
  1609. data/misc/T855.xml +29 -0
  1610. data/misc/T856.xml +31 -0
  1611. data/misc/T859.xml +69 -0
  1612. data/misc/T868.xml +29 -0
  1613. data/misc/T875.xml +150 -0
  1614. data/misc/T88.xml +48 -0
  1615. data/misc/T883.xml +36 -0
  1616. data/misc/T886.xml +36 -0
  1617. data/misc/T887.xml +42 -0
  1618. data/misc/T888.xml +34 -0
  1619. data/misc/T889.xml +37 -0
  1620. data/misc/T890.xml +43 -0
  1621. data/misc/T891.xml +47 -0
  1622. data/misc/T892.xml +52 -0
  1623. data/misc/T893.xml +29 -0
  1624. data/misc/T894.xml +39 -0
  1625. data/misc/T897.xml +31 -0
  1626. data/misc/T9.xml +50 -0
  1627. data/misc/T90.xml +31 -0
  1628. data/misc/T901.xml +234 -0
  1629. data/misc/T902.xml +31 -0
  1630. data/misc/T903.xml +30 -0
  1631. data/misc/T904.xml +33 -0
  1632. data/misc/T906.xml +31 -0
  1633. data/misc/T91.xml +107 -0
  1634. data/misc/T912.xml +32 -0
  1635. data/misc/T913.xml +43 -0
  1636. data/misc/T92.xml +98 -0
  1637. data/misc/T921.xml +33 -0
  1638. data/misc/T922.xml +33 -0
  1639. data/misc/T923.xml +35 -0
  1640. data/misc/T924.xml +29 -0
  1641. data/misc/T927.xml +29 -0
  1642. data/misc/T934.xml +34 -0
  1643. data/misc/T935.xml +157 -0
  1644. data/misc/T936.xml +86 -0
  1645. data/misc/T937.xml +47 -0
  1646. data/misc/T938.xml +35 -0
  1647. data/misc/T939.xml +29 -0
  1648. data/misc/T940.xml +32 -0
  1649. data/misc/T943.xml +53 -0
  1650. data/misc/T944.xml +43 -0
  1651. data/misc/T945.xml +56 -0
  1652. data/misc/T950.xml +75 -0
  1653. data/misc/T951.xml +36 -0
  1654. data/misc/T952.xml +30 -0
  1655. data/misc/T955.xml +32 -0
  1656. data/misc/T959.xml +29 -0
  1657. data/misc/T960.xml +40 -0
  1658. data/misc/T962.xml +38 -0
  1659. data/misc/T963.xml +129 -0
  1660. data/misc/T964.xml +46 -0
  1661. data/misc/T969.xml +38 -0
  1662. data/misc/T974.xml +28 -0
  1663. data/misc/T976.xml +32 -0
  1664. data/misc/T98.xml +1511 -0
  1665. data/misc/T980.xml +35 -0
  1666. data/misc/T981.xml +46 -0
  1667. data/misc/T982.xml +32 -0
  1668. data/misc/T983.xml +29 -0
  1669. data/misc/T984.xml +30 -0
  1670. data/misc/T985.xml +28 -0
  1671. data/misc/T986.xml +28 -0
  1672. data/misc/T987.xml +36 -0
  1673. data/misc/T988.xml +48 -0
  1674. data/misc/T990.xml +34 -0
  1675. data/misc/T998.xml +30 -0
  1676. data/misc/T999.xml +39 -0
  1677. data/misc/TA.xml +34 -0
  1678. data/misc/TAX.xml +40 -0
  1679. data/misc/TBI.xml +35 -0
  1680. data/misc/TC2.xml +29 -0
  1681. data/misc/TCD.xml +43 -0
  1682. data/misc/TD1.xml +37 -0
  1683. data/misc/TD3.xml +37 -0
  1684. data/misc/TD4.xml +32 -0
  1685. data/misc/TD5.xml +42 -0
  1686. data/misc/TDS.xml +31 -0
  1687. data/misc/TDT.xml +31 -0
  1688. data/misc/TED.xml +35 -0
  1689. data/misc/TEM.xml +32 -0
  1690. data/misc/TER.xml +33 -0
  1691. data/misc/TF.xml +31 -0
  1692. data/misc/TFR.xml +31 -0
  1693. data/misc/TFS.xml +35 -0
  1694. data/misc/THE.xml +32 -0
  1695. data/misc/TI.xml +34 -0
  1696. data/misc/TI01.xml +34 -0
  1697. data/misc/TI03.xml +29 -0
  1698. data/misc/TI05.xml +65 -0
  1699. data/misc/TI10.xml +28 -0
  1700. data/misc/TI11.xml +41 -0
  1701. data/misc/TI13.xml +29 -0
  1702. data/misc/TI14.xml +30 -0
  1703. data/misc/TI40.xml +36 -0
  1704. data/misc/TI43.xml +61 -0
  1705. data/misc/TI58.xml +32 -0
  1706. data/misc/TI60.xml +29 -0
  1707. data/misc/TI61.xml +30 -0
  1708. data/misc/TI62.xml +30 -0
  1709. data/misc/TI63.xml +33 -0
  1710. data/misc/TIA.xml +34 -0
  1711. data/misc/TID.xml +36 -0
  1712. data/misc/TII.xml +32 -0
  1713. data/misc/TIS.xml +31 -0
  1714. data/misc/TLN.xml +49 -0
  1715. data/misc/TMD.xml +36 -0
  1716. data/misc/TOA.xml +32 -0
  1717. data/misc/TOO.xml +30 -0
  1718. data/misc/TOV.xml +33 -0
  1719. data/misc/TPB.xml +31 -0
  1720. data/misc/TPD.xml +31 -0
  1721. data/misc/TRF.xml +32 -0
  1722. data/misc/TRL.xml +32 -0
  1723. data/misc/TRN.xml +31 -0
  1724. data/misc/TRS.xml +32 -0
  1725. data/misc/TS.xml +34 -0
  1726. data/misc/TS2.xml +46 -0
  1727. data/misc/TS3.xml +51 -0
  1728. data/misc/TSD.xml +29 -0
  1729. data/misc/TSI.xml +31 -0
  1730. data/misc/TSP.xml +31 -0
  1731. data/misc/TST.xml +44 -0
  1732. data/misc/TSU.xml +35 -0
  1733. data/misc/TT.xml +29 -0
  1734. data/misc/TUD.xml +30 -0
  1735. data/misc/TXI.xml +37 -0
  1736. data/misc/TXN.xml +37 -0
  1737. data/misc/TXP.xml +37 -0
  1738. data/misc/UC.xml +31 -0
  1739. data/misc/UCS.xml +35 -0
  1740. data/misc/UD.xml +44 -0
  1741. data/misc/UDA.xml +34 -0
  1742. data/misc/UIT.xml +30 -0
  1743. data/misc/UM.xml +37 -0
  1744. data/misc/UQS.xml +31 -0
  1745. data/misc/UR.xml +29 -0
  1746. data/misc/USD.xml +39 -0
  1747. data/misc/USI.xml +30 -0
  1748. data/misc/UWI.xml +31 -0
  1749. data/misc/V1.xml +36 -0
  1750. data/misc/V2.xml +44 -0
  1751. data/misc/V3.xml +31 -0
  1752. data/misc/V4.xml +28 -0
  1753. data/misc/V5.xml +30 -0
  1754. data/misc/V9.xml +47 -0
  1755. data/misc/VAD.xml +38 -0
  1756. data/misc/VAR.xml +34 -0
  1757. data/misc/VAT.xml +39 -0
  1758. data/misc/VC.xml +40 -0
  1759. data/misc/VC1.xml +42 -0
  1760. data/misc/VDI.xml +42 -0
  1761. data/misc/VEH.xml +43 -0
  1762. data/misc/VID.xml +40 -0
  1763. data/misc/VR.xml +36 -0
  1764. data/misc/VRC.xml +32 -0
  1765. data/misc/W01.xml +43 -0
  1766. data/misc/W03.xml +34 -0
  1767. data/misc/W04.xml +42 -0
  1768. data/misc/W05.xml +35 -0
  1769. data/misc/W06.xml +39 -0
  1770. data/misc/W07.xml +38 -0
  1771. data/misc/W08.xml +36 -0
  1772. data/misc/W09.xml +36 -0
  1773. data/misc/W1.xml +28 -0
  1774. data/misc/W10.xml +36 -0
  1775. data/misc/W12.xml +49 -0
  1776. data/misc/W13.xml +32 -0
  1777. data/misc/W14.xml +32 -0
  1778. data/misc/W15.xml +33 -0
  1779. data/misc/W17.xml +36 -0
  1780. data/misc/W18.xml +30 -0
  1781. data/misc/W19.xml +45 -0
  1782. data/misc/W2.xml +43 -0
  1783. data/misc/W20.xml +37 -0
  1784. data/misc/W27.xml +37 -0
  1785. data/misc/W28.xml +35 -0
  1786. data/misc/W3.xml +33 -0
  1787. data/misc/W4.xml +32 -0
  1788. data/misc/W5.xml +33 -0
  1789. data/misc/W6.xml +31 -0
  1790. data/misc/W66.xml +37 -0
  1791. data/misc/W76.xml +33 -0
  1792. data/misc/WLD.xml +37 -0
  1793. data/misc/WS.xml +30 -0
  1794. data/misc/X01.xml +37 -0
  1795. data/misc/X02.xml +32 -0
  1796. data/misc/X1.xml +44 -0
  1797. data/misc/X2.xml +33 -0
  1798. data/misc/X4.xml +46 -0
  1799. data/misc/X7.xml +29 -0
  1800. data/misc/XD.xml +32 -0
  1801. data/misc/XH.xml +34 -0
  1802. data/misc/XPO.xml +31 -0
  1803. data/misc/XQ.xml +32 -0
  1804. data/misc/Y1.xml +36 -0
  1805. data/misc/Y2.xml +37 -0
  1806. data/misc/Y3.xml +38 -0
  1807. data/misc/Y4.xml +37 -0
  1808. data/misc/Y5.xml +28 -0
  1809. data/misc/Y6.xml +30 -0
  1810. data/misc/Y7.xml +32 -0
  1811. data/misc/YNQ.xml +37 -0
  1812. data/misc/ZA.xml +35 -0
  1813. data/misc/ZC1.xml +36 -0
  1814. data/misc/ZD.xml +36 -0
  1815. data/misc/ZR.xml +43 -0
  1816. data/misc/ZT.xml +33 -0
  1817. data/test/tc_factory_270.rb +170 -0
  1818. data/test/tc_factory_270interchange.rb +306 -0
  1819. data/test/tc_factory_997.rb +11 -7
  1820. data/test/tc_parse_270.rb +98 -0
  1821. data/test/tc_parse_270interchange.rb +184 -0
  1822. data/test/tc_parse_997.rb +4 -4
  1823. metadata +1821 -35
  1824. data/lib/X12/x12syntax.treetop +0 -256
  1825. data/misc/997.d12 +0 -118
  1826. data/misc/IEA.d12 +0 -10
  1827. data/misc/ISA.d12 +0 -24
  1828. data/misc/SE.d12 +0 -12
  1829. data/misc/ST.d12 +0 -7
  1830. data/misc/Tbl143.d12 +0 -302
  1831. data/misc/Tbl479.d12 +0 -238
  1832. data/misc/Tbl715.d12 +0 -11
  1833. data/misc/Tbl716.d12 +0 -27
  1834. data/misc/Tbl717.d12 +0 -10
  1835. data/misc/Tbl718.d12 +0 -29
  1836. data/misc/Tbl720.d12 +0 -12
  1837. data/misc/Tbl723.d12 +0 -14
  1838. data/misc/TblI01.d12 +0 -11
  1839. data/misc/TblI03.d12 +0 -6
  1840. data/misc/TblI05.d12 +0 -42
  1841. data/misc/TblI10.d12 +0 -5
  1842. data/misc/TblI11.d12 +0 -18
  1843. data/misc/TblI13.d12 +0 -6
  1844. data/misc/TblI14.d12 +0 -7
@@ -23,7 +23,7 @@
23
23
  #
24
24
  module X12
25
25
 
26
- # $Id: Base.rb 49 2009-03-17 19:46:08Z ikk $
26
+ # $Id: Base.rb 70 2009-03-26 19:25:39Z ikk $
27
27
  #
28
28
  # Base class for Segment, Composite, and Loop. Contains setable
29
29
  # segment_separator, field_separator, and composite_separator fields.
@@ -113,8 +113,11 @@ module X12
113
113
  #puts "Finding [#{e}] in #{self.class} #{name}"
114
114
  case self
115
115
  when X12::Loop
116
+ # Breadth first
117
+ res = nodes.find{|i| e==i.name }
118
+ return res if res
119
+ # Depth now
116
120
  nodes.each{|i|
117
- return i if e==i.name
118
121
  res = i.find(e) if i.kind_of?(X12::Loop)
119
122
  return res unless res.nil? or EMPTY==res # otherwise keep looping
120
123
  }
@@ -143,6 +146,8 @@ module X12
143
146
  # The main method implementing Ruby-like access methods for nested elements
144
147
  def method_missing(meth, *args, &block)
145
148
  str = meth.id2name
149
+ str = str[1..str.length] if str =~ /^_\d+$/ # to avoid pure number names like 270, 997, etc.
150
+ #puts "Missing #{str}"
146
151
  if str =~ /=$/
147
152
  # Assignment
148
153
  str.chop!
@@ -170,6 +175,15 @@ module X12
170
175
  return self.to_a[args[0]] || EMPTY
171
176
  end
172
177
 
178
+ # Yields to accompanying block passing self as a parameter.
179
+ def with(&block)
180
+ if block_given?
181
+ yield self
182
+ else
183
+ throw Exception.new("Method 'with' requires a block.")
184
+ end
185
+ end
186
+
173
187
  # Returns number of repeats
174
188
  def size
175
189
  return self.to_a.size
@@ -23,7 +23,7 @@
23
23
  #
24
24
  module X12
25
25
 
26
- # $Id: Field.rb 56 2009-03-18 19:56:01Z ikk $
26
+ # $Id: Field.rb 90 2009-05-13 19:51:27Z ikk $
27
27
  #
28
28
  # Class to represent a segment field. Please note, it's not a descendant of Base.
29
29
 
@@ -35,7 +35,7 @@ module X12
35
35
  def initialize(name, type, required, min_length, max_length, validation)
36
36
  @name = name
37
37
  @type = type
38
- @required = required == 'R' ? true : false
38
+ @required = required
39
39
  @min_length = min_length.to_i
40
40
  @max_length = max_length.to_i
41
41
  @validation = validation
@@ -69,15 +69,22 @@ module X12
69
69
  @content = nil
70
70
  end
71
71
 
72
- # Returns string regexp for this field, takes field separator as an argument
73
- def str_regexp(sep)
74
- min = required ? @min_length : 0
72
+ # Returns simplified string regexp for this field, takes field separator and segment separator as arguments
73
+ def simple_regexp(field_sep, segment_sep)
75
74
  case self.type
76
- when 'I' : "\\d{#{min},#{@max_length}}"
77
- when 'S' : "[^#{Regexp.escape(sep)}]{#{min},#{@max_length}}"
78
- when /C.*/ : "[^#{Regexp.escape(sep)}]{#{min},#{@max_length}}"
79
75
  when /"(.*)"/ : $1
80
- else ''
76
+ else "[^#{Regexp.escape(field_sep)}#{Regexp.escape(segment_sep)}]*"
77
+ end # case
78
+ end # simple_regexp
79
+
80
+ # Returns proper validating string regexp for this field, takes field separator and segment separator as arguments
81
+ def proper_regexp(field_sep, segment_sep)
82
+ case self.type
83
+ when 'I' : "\\d{#{@min_length},#{@max_length}}"
84
+ when 'S' : "[^#{Regexp.escape(field_sep)}#{Regexp.escape(segment_sep)}]{#{@min_length},#{@max_length}}"
85
+ when /C.*/ : "[^#{Regexp.escape(field_sep)}#{Regexp.escape(segment_sep)}]{#{@min_length},#{@max_length}}"
86
+ when /"(.*)"/ : $1
87
+ else "[^#{Regexp.escape(field_sep)}#{Regexp.escape(segment_sep)}]*"
81
88
  end # case
82
89
  end # str_regexp
83
90
 
@@ -21,56 +21,76 @@
21
21
  # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22
22
  #++
23
23
  #
24
+
25
+ require "rexml/document"
26
+ include REXML
27
+
28
+ require 'pp'
29
+
24
30
  module X12
25
31
 
26
- # $Id: Parser.rb 54 2009-03-18 17:04:45Z ikk $
32
+ # $Id: Parser.rb 89 2009-05-13 19:36:20Z ikk $
27
33
  #
28
34
  # Main class for creating X12 parsers and factories.
29
35
 
30
36
  class Parser
31
37
 
38
+ # These constitute prohibited file names under Microsoft
39
+ MS_DEVICES = [
40
+ 'CON',
41
+ 'PRN',
42
+ 'AUX',
43
+ 'CLOCK$',
44
+ 'NUL',
45
+ 'COM1',
46
+ 'LPT1',
47
+ 'LPT2',
48
+ 'LPT3',
49
+ 'COM2',
50
+ 'COM3',
51
+ 'COM4',
52
+ ]
53
+
32
54
  # Creates a parser out of a definition
33
55
  def initialize(file_name)
34
56
  save_definition = @x12_definition
57
+
58
+ # Deal with Microsoft devices
59
+ base_name = File.basename(file_name, '.xml')
60
+ if MS_DEVICES.find{|i| i == base_name}
61
+ file_name = File.join(File.dirname, "#{base_name}_.xml")
62
+ end
35
63
  #puts "Reading definition from #{file_name}"
64
+
65
+ # Read and parse the definition
36
66
  str = File.open(file_name, 'r').read
37
- @dir_name = File.dirname(file_name) # to look up other files if needed
38
- treetop_parser = X12::X12syntaxParser.new
39
- res = treetop_parser.parse(str)
40
- throw Exception.new("Cannot parse X12 definition in #{file_name}") unless res
41
- @x12_definition = res.get
67
+ @dir_name = File.dirname(File.expand_path(file_name)) # to look up other files if needed
68
+ @x12_definition = X12::XMLDefinitions.new(str)
42
69
 
43
70
  # Populate fields in all segments found in all the loops
44
71
  @x12_definition[X12::Loop].each_pair{|k, v|
45
- #puts "Processing loop #{k}"
72
+ #puts "Populating definitions for loop #{k}"
46
73
  process_loop(v)
47
74
  } if @x12_definition[X12::Loop]
48
- # @x12_definition.keys.each{|t|
49
- # puts "**** #{t}"
50
-
51
- # case
52
- # when t==X12::Segment: @x12_definition[t].each{|i| puts i.inspect; puts i.regexp.source}
53
- # when t==X12::Loop: @x12_definition[t].each{|i| puts i.inspect.gsub(/\\*\"/, '"') ; puts i.regexp.source}
54
- # else
55
- # puts @x12_definition[t].inspect
56
- # end
57
- # puts "\n\n"
58
- # }
59
-
60
- # Merge the saved definition, if any, into the newly parsed one
61
- return unless save_definition
62
- save_definition.keys.each{|t|
63
- @x12_definition[t] ||= {}
64
- save_definition[t].keys.each{|u|
65
- @x12_definition[t][u] = save_definition[t][u]
75
+
76
+ # Merge the newly parsed definition into a saved one, if any.
77
+ if save_definition
78
+ @x12_definition.keys.each{|t|
79
+ save_definition[t] ||= {}
80
+ @x12_definition[t].keys.each{|u|
81
+ save_definition[t][u] = @x12_definition[t][u]
82
+ }
83
+ @x12_definition = save_definition
66
84
  }
67
- }
85
+ end
68
86
 
69
- end
87
+ #puts PP.pp(self, '')
88
+ end # initialize
70
89
 
71
90
  # Parse a loop of a given name out of a string. Throws an exception if the loop name is not defined.
72
91
  def parse(loop_name, str)
73
92
  loop = @x12_definition[X12::Loop][loop_name]
93
+ #puts "Loops to parse #{@x12_definition[X12::Loop].keys}"
74
94
  throw Exception.new("Cannot find a definition for loop #{loop_name}") unless loop
75
95
  loop = loop.dup
76
96
  loop.parse(str)
@@ -85,6 +105,8 @@ module X12
85
105
  return loop
86
106
  end # factory
87
107
 
108
+ private
109
+
88
110
  # Recursively scan the loop and instantiate fields' definitions for all its
89
111
  # segments
90
112
  def process_loop(loop)
@@ -99,9 +121,10 @@ module X12
99
121
 
100
122
  # Instantiate segment's fields as previously defined
101
123
  def process_segment(segment)
124
+ #puts "Trying to process segment #{segment.inspect}"
102
125
  unless @x12_definition[X12::Segment] && @x12_definition[X12::Segment][segment.name]
103
126
  # Try to find it in a separate file if missing from the @x12_definition structure
104
- initialize(File.join(@dir_name, segment.name+'.d12'))
127
+ initialize(File.join(@dir_name, segment.name+'.xml'))
105
128
  segment_definition = @x12_definition[X12::Segment][segment.name]
106
129
  throw Exception.new("Cannot find a definition for segment #{segment.name}") unless segment_definition
107
130
  else
@@ -113,7 +136,7 @@ module X12
113
136
  table = segment.nodes[i].validation
114
137
  if table
115
138
  unless @x12_definition[X12::Table] && @x12_definition[X12::Table][table]
116
- initialize(File.join(@dir_name, table+'.d12'))
139
+ initialize(File.join(@dir_name, table+'.xml'))
117
140
  throw Exception.new("Cannot find a definition for table #{table}") unless @x12_definition[X12::Table] && @x12_definition[X12::Table][table]
118
141
  end
119
142
  end
@@ -23,7 +23,7 @@
23
23
  #
24
24
  module X12
25
25
 
26
- # $Id: Segment.rb 54 2009-03-18 17:04:45Z ikk $
26
+ # $Id: Segment.rb 82 2009-05-13 18:07:22Z ikk $
27
27
  #
28
28
  # Implements a segment containing fields or composites
29
29
 
@@ -69,14 +69,16 @@ module X12
69
69
  if self.nodes.find{|i| i.type =~ /^".+"$/ }
70
70
  # It's a very special regexp if there are constant fields
71
71
  re_str = self.nodes.inject("^#{name}#{Regexp.escape(field_separator)}"){|s, i|
72
- s+i.str_regexp(field_separator)+Regexp.escape(field_separator)
73
- } + '?'+Regexp.escape(segment_separator)
72
+ field_re = i.simple_regexp(field_separator, segment_separator)+Regexp.escape(field_separator)+'?'
73
+ field_re = "(#{field_re})?" unless i.required
74
+ s+field_re
75
+ } + Regexp.escape(segment_separator)
74
76
  @regexp = Regexp.new(re_str)
75
77
  else
76
78
  # Simple match
77
79
  @regexp = Regexp.new("^#{name}#{Regexp.escape(field_separator)}[^#{Regexp.escape(segment_separator)}]*#{Regexp.escape(segment_separator)}")
78
80
  end
79
- #puts @regexp
81
+ #puts sprintf("%s %p", name, @regexp)
80
82
  end
81
83
  @regexp
82
84
  end
@@ -0,0 +1,160 @@
1
+ #--
2
+ # This file is part of the X12Parser library that provides tools to
3
+ # manipulate X12 messages using Ruby native syntax.
4
+ #
5
+ # http://x12parser.rubyforge.org
6
+ #
7
+ # Copyright (C) 2008 APP Design, Inc.
8
+ #
9
+ # This library is free software; you can redistribute it and/or
10
+ # modify it under the terms of the GNU Lesser General Public
11
+ # License as published by the Free Software Foundation; either
12
+ # version 2.1 of the License, or (at your option) any later version.
13
+ #
14
+ # This library is distributed in the hope that it will be useful,
15
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
16
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17
+ # Lesser General Public License for more details.
18
+ #
19
+ # You should have received a copy of the GNU Lesser General Public
20
+ # License along with this library; if not, write to the Free Software
21
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22
+ #++
23
+ #
24
+
25
+ require "rexml/document"
26
+ include REXML
27
+
28
+ module X12
29
+
30
+ # $Id: XMLDefinitions.rb 90 2009-05-13 19:51:27Z ikk $
31
+ #
32
+ # A class for parsing X12 message definition expressed in XML format.
33
+
34
+ class XMLDefinitions < Hash
35
+
36
+ # Parse definitions out of XML file
37
+ def initialize(str)
38
+ doc = Document.new(str)
39
+ definitions = doc.root.name =~ /^Definition$/i ? doc.root.elements.to_a : [doc.root]
40
+ definitions.each { |element|
41
+ #puts element.name
42
+ syntax_element = case element.name
43
+ when /table/i : parse_table(element)
44
+ when /segment/i : parse_segment(element)
45
+ when /composite/i : parse_composite(element)
46
+ when /loop/i : parse_loop(element)
47
+ end
48
+
49
+ self[syntax_element.class] ||= {}
50
+ self[syntax_element.class][syntax_element.name]=syntax_element
51
+ }
52
+ end # initialize
53
+
54
+ private
55
+
56
+ def parse_boolean(s)
57
+ return case s
58
+ when nil : false
59
+ when "" : false
60
+ when /(^y(es)?$)|(^t(rue)?$)|(^1$)/i : true
61
+ when /(^no?$)|(^f(alse)?$)|(^0$)/i : false
62
+ else
63
+ nil
64
+ end # case
65
+ end #parse_boolean
66
+
67
+ def parse_type(s)
68
+ return case s
69
+ when nil : 'string'
70
+ when /^C.+$/ : s
71
+ when /^i(nt(eger)?)?$/i : 'int'
72
+ when /^l(ong)?$/i : 'long'
73
+ when /^d(ouble)?$/i : 'double'
74
+ when /^s(tr(ing)?)?$/i : 'string'
75
+ else
76
+ nil
77
+ end # case
78
+ end #parse_type
79
+
80
+ def parse_int(s)
81
+ return case s
82
+ when nil : 0
83
+ when /^\d+$/ : s.to_i
84
+ when /^inf(inite)?$/ : 999999
85
+ else
86
+ nil
87
+ end # case
88
+ end #parse_int
89
+
90
+ def parse_attributes(e)
91
+ throw Exception.new("No name attribute found for : #{e.inspect}") unless name = e.attributes["name"]
92
+ throw Exception.new("Cannot parse attribute 'min' for: #{e.inspect}") unless min = parse_int(e.attributes["min"])
93
+ throw Exception.new("Cannot parse attribute 'max' for: #{e.inspect}") unless max = parse_int(e.attributes["max"])
94
+ throw Exception.new("Cannot parse attribute 'type' for: #{e.inspect}") unless type = parse_type(e.attributes["type"])
95
+ throw Exception.new("Cannot parse attribute 'required' for: #{e.inspect}") if (required = parse_boolean(e.attributes["required"])).nil?
96
+
97
+ validation = e.attributes["validation"]
98
+ min = 1 if required and min < 1
99
+ max = 999999 if max == 0
100
+
101
+ return name, min, max, type, required, validation
102
+ end # parse_attributes
103
+
104
+ def parse_field(e)
105
+ name, min, max, type, required, validation = parse_attributes(e)
106
+
107
+ # FIXME - for compatibility with d12 - constants are stored in attribute 'type' and are enclosed in
108
+ # double quotes
109
+ const_field = e.attributes["const"]
110
+ if(const_field)
111
+ type = "\"#{const_field}\""
112
+ end
113
+
114
+ Field.new(name, type, required, min, max, validation)
115
+ end # parse_field
116
+
117
+ def parse_table(e)
118
+ name, min, max, type, required, validation = parse_attributes(e)
119
+
120
+ content = e.get_elements("Entry").inject({}) {|t, entry|
121
+ t[entry.attributes["name"]] = entry.attributes["value"]
122
+ t
123
+ }
124
+ Table.new(name, content)
125
+ end
126
+
127
+ def parse_segment(e)
128
+ name, min, max, type, required, validation = parse_attributes(e)
129
+
130
+ fields = e.get_elements("Field").inject([]) {|f, field|
131
+ f << parse_field(field)
132
+ }
133
+ Segment.new(name, fields, Range.new(min, max))
134
+ end
135
+
136
+ def parse_composite(e)
137
+ name, min, max, type, required, validation = parse_attributes(e)
138
+
139
+ fields = e.get_elements("Field").inject([]) {|f, field|
140
+ f << parse_field(field)
141
+ }
142
+ Composite.new(name, fields)
143
+ end
144
+
145
+ def parse_loop(e)
146
+ name, min, max, type, required, validation = parse_attributes(e)
147
+
148
+ components = e.elements.to_a.inject([]){|r, element|
149
+ r << case element.name
150
+ when /loop/i : parse_loop(element)
151
+ when /segment/i : parse_segment(element)
152
+ else
153
+ throw Exception.new("Cannot recognize syntax for: #{element.inspect} in loop #{e.inspect}")
154
+ end # case
155
+ }
156
+ Loop.new(name, components, Range.new(min, max))
157
+ end
158
+
159
+ end # Parser
160
+ end
@@ -0,0 +1,152 @@
1
+ <!--
2
+ This file is part of the X12Parser library that provides tools to
3
+ manipulate X12 messages using Ruby native syntax.
4
+
5
+ http://x12parser.rubyforge.org
6
+
7
+ Copyright (C) 2009 APP Design, Inc.
8
+
9
+ This library is free software; you can redistribute it and/or
10
+ modify it under the terms of the GNU Lesser General Public
11
+ License as published by the Free Software Foundation; either
12
+ version 2.1 of the License, or (at your option) any later version.
13
+
14
+ This library is distributed in the hope that it will be useful,
15
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
16
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17
+ Lesser General Public License for more details.
18
+
19
+ You should have received a copy of the GNU Lesser General Public
20
+ License along with this library; if not, write to the Free Software
21
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22
+
23
+ $Id: 270.xml 81 2009-05-13 18:05:32Z ikk $
24
+ -->
25
+
26
+ <Loop name="270" comment="This X12 Transaction Set contains the format and establishes the data contents of the Eligibility, Coverage or Benefit Inquiry Transaction Set (270) for use within the context of an Electronic Data Interchange (EDI) environment. This transaction set can be used to inquire about the eligibility, coverages or benefits associated with a benefit plan, employer, plan sponsor, subscriber or a dependent under the subscriber's policy. The transaction set is intended to be used by all lines of insurance such as Health, Life, and Property and Casualty.">
27
+
28
+ <Segment name="ST" required="y" max="1">
29
+ <Field name="TransactionSetIdentifierCode" const="270" comment="Code uniquely identifying a Transaction Set"/>
30
+ <Field name="TransactionSetControlNumber" min="4" max="9" comment="Identifying control number that must be unique within the transaction set functional group assigned by the originator for a transaction set"/>
31
+ </Segment>
32
+ <Segment name="BHT" required="y" max="1" comment="To define the business hierarchical structure of the transaction set and identify the business application purpose and reference data, i.e., number, date, and time">
33
+ <Field name="HierarchicalStructureCode" required="y" const="0022" comment="Code indicating the hierarchical application structure of a transaction set that utilizes the HL segment to define the structure of the transaction set"/>
34
+ <Field name="TransactionSetPurposeCode" required="y" min="2" max="2" validation="T353" comment="Code identifying purpose of transaction set"/>
35
+ <Field name="ReferenceIdentification" min="1" max="50" comment="Reference information as defined for a particular Transaction Set or as specified by the Reference Identification Qualifier"/>
36
+ <Field name="Date" required="y" min="8" max="8" comment="Date expressed as CCYYMMDD where CC represents the first two digits of the calendar year"/>
37
+ <Field name="Time" required="y" min="4" max="8" comment="Time expressed in 24-hour clock time as follows: HHMM, or HHMMSS, or HHMMSSD, or HHMMSSDD, where H = hours (00-23), M = minutes (00-59), S = integer seconds (00-59) and DD = decimal seconds; decimal seconds are expressed as follows: D = tenths (0-9) and DD = hundredths (00-99)"/>
38
+ <Field name="TransactionTypeCode" required="n" min="2" max="2" validation="T640" comment="Code specifying the type of transaction"/>
39
+ </Segment>
40
+
41
+ <Loop name="L2000A" max="inf" required="y">
42
+ <Segment name="HL" min="1" max="1" comment="To identify dependencies among and the content of hierarchically related groups of data segments">
43
+ <Field name="HierarchicalIdNumber" required="y" min="1" max="12" comment="A unique number assigned by the sender to identify a particular data segment in a hierarchical structure"/>
44
+ <Field name="HierarchicalParentIdNumber" required="n" min="1" max="12" comment="Identification number of the next higher hierarchical data segment that the data segment being described is subordinate to"/>
45
+ <Field name="HierarchicalLevelCode" const="20" required="y" comment="Code defining the characteristic of a level in a hierarchical structure"/>
46
+ <Field name="HierarchicalChildCode" required="n" min="1" max="1" validation="T736" comment="Code indicating if there are hierarchical child data segments subordinate to the level being described"/>
47
+ </Segment>
48
+ <Loop name="L2100A" min="1" max="1" required="y">
49
+ <Segment name="NM1" required="y" max="1"/>
50
+ </Loop>
51
+ </Loop>
52
+
53
+ <Loop name="L2000B" max="inf" required="y">
54
+ <Segment name="HL" min="1" max="1" comment="To identify dependencies among and the content of hierarchically related groups of data segments">
55
+ <Field name="HierarchicalIdNumber" required="y" min="1" max="12" comment="A unique number assigned by the sender to identify a particular data segment in a hierarchical structure"/>
56
+ <Field name="HierarchicalParentIdNumber" required="n" min="1" max="12" comment="Identification number of the next higher hierarchical data segment that the data segment being described is subordinate to"/>
57
+ <Field name="HierarchicalLevelCode" const="21" required="y" comment="Code defining the characteristic of a level in a hierarchical structure"/>
58
+ <Field name="HierarchicalChildCode" required="n" min="1" max="1" validation="T736" comment="Code indicating if there are hierarchical child data segments subordinate to the level being described"/>
59
+ </Segment>
60
+ <Loop name="L2100B" min="1" max="1" required="y">
61
+ <Segment name="NM1" required="y" max="1"/>
62
+ <Segment name="REF" required="n" max="9"/>
63
+ <Segment name="N3" required="n" max="1"/>
64
+ <Segment name="N4" required="n" max="1"/>
65
+ <Segment name="PER" required="n" max="3"/>
66
+ <Segment name="PRV" required="n" max="1"/>
67
+ </Loop>
68
+ </Loop>
69
+
70
+ <Loop name="L2000C" max="inf" required="y">
71
+ <Segment name="HL" min="1" max="1" comment="To identify dependencies among and the content of hierarchically related groups of data segments">
72
+ <Field name="HierarchicalIdNumber" required="y" min="1" max="12" comment="A unique number assigned by the sender to identify a particular data segment in a hierarchical structure"/>
73
+ <Field name="HierarchicalParentIdNumber" required="n" min="1" max="12" comment="Identification number of the next higher hierarchical data segment that the data segment being described is subordinate to"/>
74
+ <Field name="HierarchicalLevelCode" const="22" required="y" comment="Code defining the characteristic of a level in a hierarchical structure"/>
75
+ <Field name="HierarchicalChildCode" required="n" min="1" max="1" validation="T736" comment="Code indicating if there are hierarchical child data segments subordinate to the level being described"/>
76
+ </Segment>
77
+ <Segment name="TRN" required="n" max="2"/>
78
+ <Loop name="L2100C" min="1" max="1" required="y">
79
+ <!-- Note the difference from 'standard' NM1: IdentificationCodeQualifier and IdentificationCode are not
80
+ required -->
81
+ <Segment name="NM1" required="y" max="1" comment="To supply the full name of an individual or organizational entity">
82
+ <Field name="EntityIdentifierCode1" required="y" min="2" max="3" validation="T98" comment="Code identifying an organizational entity, a physical location, property or an individual"/>
83
+ <Field name="EntityTypeQualifier" required="y" min="1" max="1" validation="T1065" comment="Code qualifying the type of entity"/>
84
+ <Field name="NameLastOrOrganizationName" required="n" min="1" max="60" comment="Individual last name or organizational name"/>
85
+ <Field name="NameFirst" required="n" min="1" max="35" comment="Individual first name"/>
86
+ <Field name="NameMiddle" required="n" min="1" max="25" comment="Individual middle name or initial"/>
87
+ <Field name="NamePrefix" required="n" min="1" max="10" comment="Prefix to individual name"/>
88
+ <Field name="NameSuffix" required="n" min="1" max="10" comment="Suffix to individual name"/>
89
+ <Field name="IdentificationCodeQualifier" required="n" min="1" max="2" validation="T66" comment="Code designating the system/method of code structure used for Identification Code (67)"/>
90
+ <Field name="IdentificationCode" required="n" min="2" max="80" comment="Code identifying a party or other code"/>
91
+ <Field name="EntityRelationshipCode" required="n" min="2" max="2" validation="T706" comment="Code describing entity relationship"/>
92
+ <Field name="EntityIdentifierCode" required="n" min="2" max="3" validation="T98" comment="Code identifying an organizational entity, a physical location, property or an individual"/>
93
+ </Segment>
94
+ <Segment name="REF" required="n" max="9"/>
95
+ <Segment name="N3" required="n" max="1"/>
96
+ <Segment name="N4" required="n" max="1"/>
97
+ <Segment name="PRV" required="n" max="1"/>
98
+ <Segment name="DMG" required="n" max="3"/>
99
+ <Segment name="INS" required="n" max="1"/>
100
+ <Segment name="DTP" required="n" max="2"/>
101
+ <Loop name="L2110C" max="99" required="n">
102
+ <Segment name="EQ" required="n" max="1"/>
103
+ <Segment name="AMT" required="n" max="1"/>
104
+ <Segment name="III" required="n" max="10"/>
105
+ <Segment name="REF" required="n" max="1"/>
106
+ <Segment name="DTP" required="n" max="1"/>
107
+ </Loop>
108
+ </Loop>
109
+ </Loop>
110
+
111
+ <Loop name="L2000D" max="inf" required="n">
112
+ <Segment name="HL" min="1" max="1" comment="To identify dependencies among and the content of hierarchically related groups of data segments">
113
+ <Field name="HierarchicalIdNumber" required="y" min="1" max="12" comment="A unique number assigned by the sender to identify a particular data segment in a hierarchical structure"/>
114
+ <Field name="HierarchicalParentIdNumber" required="n" min="1" max="12" comment="Identification number of the next higher hierarchical data segment that the data segment being described is subordinate to"/>
115
+ <Field name="HierarchicalLevelCode" const="23" required="y" comment="Code defining the characteristic of a level in a hierarchical structure"/>
116
+ <Field name="HierarchicalChildCode" const="0" required="y" comment="Code indicating if there are hierarchical child data segments subordinate to the level being described"/>
117
+ </Segment>
118
+ <Segment name="TRN" required="n" max="2"/>
119
+ <Loop name="L2100D" min="0" max="1" required="n">
120
+ <!-- Note the difference from 'standard' NM1: IdentificationCodeQualifier and IdentificationCode are not
121
+ required -->
122
+ <Segment name="NM1" required="y" max="1" comment="To supply the full name of an individual or organizational entity">
123
+ <Field name="EntityIdentifierCode1" required="y" min="2" max="3" validation="T98" comment="Code identifying an organizational entity, a physical location, property or an individual"/>
124
+ <Field name="EntityTypeQualifier" required="y" min="1" max="1" validation="T1065" comment="Code qualifying the type of entity"/>
125
+ <Field name="NameLastOrOrganizationName" required="n" min="1" max="60" comment="Individual last name or organizational name"/>
126
+ <Field name="NameFirst" required="n" min="1" max="35" comment="Individual first name"/>
127
+ <Field name="NameMiddle" required="n" min="1" max="25" comment="Individual middle name or initial"/>
128
+ <Field name="NamePrefix" required="n" min="1" max="10" comment="Prefix to individual name"/>
129
+ <Field name="NameSuffix" required="n" min="1" max="10" comment="Suffix to individual name"/>
130
+ <Field name="IdentificationCodeQualifier" required="n" min="1" max="2" validation="T66" comment="Code designating the system/method of code structure used for Identification Code (67)"/>
131
+ <Field name="IdentificationCode" required="n" min="2" max="80" comment="Code identifying a party or other code"/>
132
+ <Field name="EntityRelationshipCode" required="n" min="2" max="2" validation="T706" comment="Code describing entity relationship"/>
133
+ <Field name="EntityIdentifierCode" required="n" min="2" max="3" validation="T98" comment="Code identifying an organizational entity, a physical location, property or an individual"/>
134
+ </Segment>
135
+ <Segment name="REF" required="n" max="9"/>
136
+ <Segment name="N3" required="n" max="1"/>
137
+ <Segment name="N4" required="n" max="1"/>
138
+ <Segment name="PRV" required="n" max="1"/>
139
+ <Segment name="DMG" required="n" max="3"/>
140
+ <Segment name="INS" required="n" max="1"/>
141
+ <Segment name="DTP" required="n" max="2"/>
142
+ <Loop name="L2110D" max="99" required="n">
143
+ <Segment name="EQ" required="y" max="1"/>
144
+ <Segment name="III" required="n" max="10"/>
145
+ <Segment name="REF" required="n" max="1"/>
146
+ <Segment name="DTP" required="n" max="1"/>
147
+ </Loop>
148
+ </Loop>
149
+ </Loop>
150
+
151
+ <Segment name="SE" min="1" max="1"/>
152
+ </Loop>