PD_x12 1.3.1

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