vehicles 0.6.1 → 0.8.0

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 (186) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop_todo.yml +164 -0
  3. data/CHANGELOG.md +274 -0
  4. data/README.md +55 -10
  5. data/data/PROVENANCE-vehicles.md +12 -0
  6. data/data/plates/PROVENANCE.md +5 -4
  7. data/data/plates/_decode/at-districts.yml +287 -0
  8. data/data/plates/_decode/ch-cantons.yml +110 -0
  9. data/data/plates/_decode/cn-issuing-offices.yml +463 -0
  10. data/data/plates/_decode/cn-provinces.yml +614 -0
  11. data/data/plates/_decode/cz-kraj.yml +159 -0
  12. data/data/plates/_decode/dk-serial-blocks.yml +327 -0
  13. data/data/plates/_decode/fr-departements.yml +191 -0
  14. data/data/plates/_decode/gb-age-identifiers.yml +170 -0
  15. data/data/plates/_decode/gb-memory-tags.yml +202 -0
  16. data/data/plates/_decode/gr-prefectures.yml +1408 -0
  17. data/data/plates/_decode/hr-cities.yml +315 -0
  18. data/data/plates/_decode/ie-counties.yml +227 -0
  19. data/data/plates/_decode/in-state-codes.yml +169 -0
  20. data/data/plates/_decode/is-districts-1938.yml +116 -0
  21. data/data/plates/_decode/it-provinces.yml +348 -0
  22. data/data/plates/_decode/jp-office-marks.yml +960 -0
  23. data/data/plates/_decode/jp-use-marks.yml +205 -0
  24. data/data/plates/_decode/kr-authority-marks.yml +146 -0
  25. data/data/plates/_decode/kr-use-syllables.yml +194 -0
  26. data/data/plates/_decode/lu-series-order.yml +638 -0
  27. data/data/plates/_decode/mx-entity-series.yml +380 -0
  28. data/data/plates/_decode/my-index-marks.yml +271 -0
  29. data/data/plates/_decode/no-counties-1913.yml +148 -0
  30. data/data/plates/_decode/no-districts.yml +901 -0
  31. data/data/plates/_decode/pl-powiats.yml +567 -0
  32. data/data/plates/_decode/pt-trailer-services.yml +96 -0
  33. data/data/plates/_decode/ro-counties.yml +213 -0
  34. data/data/plates/_decode/se-diplomatic.yml +220 -0
  35. data/data/plates/_decode/si-regions.yml +123 -0
  36. data/data/plates/_decode/sk-districts.yml +314 -0
  37. data/data/plates/_decode/th-registration-elements.yml +208 -0
  38. data/data/plates/_decode/ua-regions.yml +393 -0
  39. data/data/plates/_decode/za-licence-marks.yml +215 -0
  40. data/data/plates/_meta/classes.yml +1 -0
  41. data/data/plates/_meta/separators.yml +102 -0
  42. data/data/plates/ad.yml +961 -0
  43. data/data/plates/ar.yml +762 -0
  44. data/data/plates/at.yml +1424 -0
  45. data/data/plates/au-act.yml +472 -0
  46. data/data/plates/au-nsw.yml +282 -0
  47. data/data/plates/au-nt.yml +431 -0
  48. data/data/plates/au-qld.yml +272 -0
  49. data/data/plates/au-sa.yml +248 -0
  50. data/data/plates/au-tas.yml +302 -0
  51. data/data/plates/au-vic.yml +215 -0
  52. data/data/plates/au-wa.yml +309 -0
  53. data/data/plates/be.yml +1840 -0
  54. data/data/plates/br.yml +1152 -0
  55. data/data/plates/ca-ab.yml +430 -0
  56. data/data/plates/ca-bc.yml +697 -0
  57. data/data/plates/ca-mb.yml +499 -0
  58. data/data/plates/ca-nb.yml +537 -0
  59. data/data/plates/ca-nl.yml +743 -0
  60. data/data/plates/ca-ns.yml +808 -0
  61. data/data/plates/ca-nt.yml +610 -0
  62. data/data/plates/ca-nu.yml +280 -0
  63. data/data/plates/ca-on.yml +881 -0
  64. data/data/plates/ca-pe.yml +592 -0
  65. data/data/plates/ca-qc.yml +1036 -0
  66. data/data/plates/ca-sk.yml +256 -0
  67. data/data/plates/ca-yt.yml +656 -0
  68. data/data/plates/ch.yml +1273 -0
  69. data/data/plates/cn.yml +1431 -0
  70. data/data/plates/cy.yml +688 -0
  71. data/data/plates/cz.yml +1179 -0
  72. data/data/plates/de.yml +553 -118
  73. data/data/plates/dk.yml +1647 -0
  74. data/data/plates/ee.yml +1275 -0
  75. data/data/plates/es.yml +228 -32
  76. data/data/plates/fi.yml +1271 -0
  77. data/data/plates/fr.yml +1265 -0
  78. data/data/plates/gb.yml +1188 -0
  79. data/data/plates/gr.yml +721 -0
  80. data/data/plates/hr.yml +860 -0
  81. data/data/plates/hu.yml +959 -0
  82. data/data/plates/ie.yml +775 -0
  83. data/data/plates/in.yml +1172 -0
  84. data/data/plates/is.yml +667 -0
  85. data/data/plates/it.yml +1317 -0
  86. data/data/plates/jp.yml +3650 -0
  87. data/data/plates/kr.yml +1375 -0
  88. data/data/plates/li.yml +1010 -0
  89. data/data/plates/lt.yml +879 -0
  90. data/data/plates/lu.yml +842 -0
  91. data/data/plates/lv.yml +924 -0
  92. data/data/plates/mc.yml +1024 -0
  93. data/data/plates/mt.yml +854 -0
  94. data/data/plates/mx.yml +1372 -0
  95. data/data/plates/my.yml +685 -0
  96. data/data/plates/nl.yml +44 -0
  97. data/data/plates/no.yml +1018 -0
  98. data/data/plates/nz.yml +1699 -0
  99. data/data/plates/pl.yml +1296 -0
  100. data/data/plates/pt.yml +847 -0
  101. data/data/plates/ro.yml +785 -0
  102. data/data/plates/se.yml +1091 -0
  103. data/data/plates/si.yml +1105 -0
  104. data/data/plates/sk.yml +1439 -0
  105. data/data/plates/sm.yml +1119 -0
  106. data/data/plates/th.yml +1150 -0
  107. data/data/plates/ua.yml +1672 -0
  108. data/data/plates/us-ak.yml +763 -0
  109. data/data/plates/us-al.yml +457 -0
  110. data/data/plates/us-ar.yml +427 -0
  111. data/data/plates/us-as.yml +454 -0
  112. data/data/plates/us-az.yml +430 -0
  113. data/data/plates/us-ca.yml +892 -0
  114. data/data/plates/us-co.yml +452 -0
  115. data/data/plates/us-ct.yml +427 -0
  116. data/data/plates/us-dc.yml +614 -0
  117. data/data/plates/us-de.yml +551 -0
  118. data/data/plates/us-fl.yml +319 -96
  119. data/data/plates/us-ga.yml +644 -0
  120. data/data/plates/us-gu.yml +658 -0
  121. data/data/plates/us-hi.yml +585 -0
  122. data/data/plates/us-ia.yml +438 -0
  123. data/data/plates/us-id.yml +531 -0
  124. data/data/plates/us-il.yml +516 -0
  125. data/data/plates/us-in.yml +324 -0
  126. data/data/plates/us-ks.yml +351 -0
  127. data/data/plates/us-ky.yml +770 -0
  128. data/data/plates/us-la.yml +568 -0
  129. data/data/plates/us-ma.yml +379 -0
  130. data/data/plates/us-md.yml +536 -0
  131. data/data/plates/us-me.yml +445 -0
  132. data/data/plates/us-mi.yml +408 -0
  133. data/data/plates/us-mn.yml +411 -0
  134. data/data/plates/us-mo.yml +356 -0
  135. data/data/plates/us-mp.yml +402 -0
  136. data/data/plates/us-ms.yml +432 -0
  137. data/data/plates/us-mt.yml +619 -0
  138. data/data/plates/us-nc.yml +602 -0
  139. data/data/plates/us-nd.yml +419 -0
  140. data/data/plates/us-ne.yml +483 -0
  141. data/data/plates/us-nh.yml +394 -0
  142. data/data/plates/us-nj.yml +547 -0
  143. data/data/plates/us-nm.yml +574 -0
  144. data/data/plates/us-nv.yml +655 -0
  145. data/data/plates/us-ny.yml +592 -0
  146. data/data/plates/us-oh.yml +404 -0
  147. data/data/plates/us-ok.yml +513 -0
  148. data/data/plates/us-or.yml +392 -0
  149. data/data/plates/us-pa.yml +506 -0
  150. data/data/plates/us-pr.yml +507 -0
  151. data/data/plates/us-ri.yml +445 -0
  152. data/data/plates/us-sc.yml +605 -0
  153. data/data/plates/us-sd.yml +428 -0
  154. data/data/plates/us-tn.yml +471 -0
  155. data/data/plates/us-tx.yml +535 -0
  156. data/data/plates/us-ut.yml +384 -0
  157. data/data/plates/us-va.yml +567 -0
  158. data/data/plates/us-vi.yml +489 -0
  159. data/data/plates/us-vt.yml +458 -0
  160. data/data/plates/us-wa.yml +484 -0
  161. data/data/plates/us-wi.yml +509 -0
  162. data/data/plates/us-wv.yml +446 -0
  163. data/data/plates/us-wy.yml +523 -0
  164. data/data/plates/va.yml +604 -0
  165. data/data/plates/za.yml +1141 -0
  166. data/data/vehicles.json +160653 -105090
  167. data/lib/vehicles/configuration.rb +17 -3
  168. data/lib/vehicles/dataset.rb +73 -18
  169. data/lib/vehicles/fuzzy.rb +115 -0
  170. data/lib/vehicles/http.rb +48 -0
  171. data/lib/vehicles/make.rb +36 -6
  172. data/lib/vehicles/mcp_server.rb +5 -5
  173. data/lib/vehicles/model.rb +21 -2
  174. data/lib/vehicles/plates/series.rb +172 -18
  175. data/lib/vehicles/plates/template_fill.rb +188 -0
  176. data/lib/vehicles/plates/templates.rb +162 -0
  177. data/lib/vehicles/plates.rb +12 -0
  178. data/lib/vehicles/providers/hosted_provider.rb +28 -55
  179. data/lib/vehicles/validators/vehicle_make_validator.rb +3 -1
  180. data/lib/vehicles/validators/vehicle_model_validator.rb +1 -1
  181. data/lib/vehicles/version.rb +1 -1
  182. data/lib/vehicles.rb +32 -16
  183. data/rakelib/data_refresh.rake +109 -0
  184. data/rakelib/plates_refresh.rake +29 -0
  185. data/sig/vehicles.rbs +18 -0
  186. metadata +164 -2
@@ -0,0 +1,638 @@
1
+ # plates/_decode/lu-series-order.yml — the Luxembourg "serie courante" ISSUANCE
2
+ # ORDER, verbatim from the statutory annex.
3
+ #
4
+ # NOT a geographic decode. Luxembourg encodes no geography whatsoever in a
5
+ # plate. What this table decodes is TIME: the two-letter prefix advances
6
+ # through a fixed, published order, so the prefix of a Luxembourg plate is an
7
+ # approximate-age signal and the only inferable dimension of the serial - the
8
+ # same role the letter triple plays on a post-2000 Spanish plate.
9
+ #
10
+ # THE SOURCE IS PRIMARY AND THE TRANSCRIPTION IS PROVABLY COMPLETE. The table
11
+ # is the Annexe, paragraphe 3, of the reglement grand-ducal du 17 juin 2003
12
+ # (Memorial A n. 87 of 25-06-2003, p. 1632), printed as a 15-column grid whose
13
+ # reading rule the annex states in terms: "L'ordre sequentiel dans lequel les
14
+ # combinaisons de lettres se suivent repond au tableau ci-apres, evoluant de
15
+ # haut en bas et de gauche a droite" - i.e. COLUMN-MAJOR, top to bottom then
16
+ # left to right. The rows below are that grid re-serialised in that order.
17
+ #
18
+ # The completeness check is arithmetic, and it closes exactly:
19
+ # 26 x 26 = 676 pairs
20
+ # less every pair containing I or O = 676 - 100 = 576 (annex 2.b)
21
+ # less AA CD HJ KK KZ PD SA SS WC ZZ = 576 - 10 = 566 (annex 2.a)
22
+ # rows in this file = 566
23
+ # and no row is a duplicate, none contains I or O, and none is an excluded
24
+ # pair. A miscopied or dropped cell could not satisfy all four at once.
25
+ #
26
+ # THE DIGIT BLOCK IS PART OF THE ORDER, and it is why a bare prefix does not
27
+ # date a plate on its own. Each prefix takes ONE thousand-block per pass:
28
+ # "BA 4000 - BA 4999, CA 5000 - CA 5999, DA 6000 - DA 6999, etc." - so the
29
+ # thousands digit advances with the prefix and wraps 4->9, and the whole table
30
+ # is walked again at the next pass. 566 prefixes x 1000 = 566,000 numbers per
31
+ # pass; 4000-9999 gives six passes, i.e. 3,396,000 current-series numbers.
32
+ #
33
+ # Referenced by: lu-standard-2003 (plates/lu.yml) via region_encoding.
34
+ jurisdiction: lu
35
+ topic: series-order
36
+ authority:
37
+ name: "Reglement grand-ducal du 17 juin 2003 relatif a l'identification des vehicules routiers, a leurs plaques d'immatriculation et aux modalites d'attribution de leurs numeros d'immatriculation - Annexe"
38
+ url: "https://data.legilux.public.lu/eli/etat/leg/rgd/2003/06/17/n2/jo/fr/pdf"
39
+ sources:
40
+ - "https://data.legilux.public.lu/eli/etat/leg/rgd/2003/06/17/n2/jo/fr/pdf # Memorial A n. 87, 25-06-2003, p. 1632: Annexe, paragraphes 1-3 - the six-position composition, the AA/CD/HJ/KK/KZ/PD/SA/SS/WC/ZZ and I/O exclusions, the 15-column order grid and its column-major reading rule. Accessed 2026-08-02"
41
+ - "https://data.legilux.public.lu/eli/etat/leg/rgd/2006/10/18/n1/jo/fr/pdf # Memorial A n. 190, 06-11-2006, art. 19: replaces the annex's numeric-allocation paragraphs - 0001-0099 mopeds/light quadricycles, 0100-3999 personalised, 4000-9999 the current series - while LEAVING the paragraphe 3 order grid untouched. In force 18-12-2006. Accessed 2026-08-02"
42
+ period: { start: 2003 }
43
+ period_evidence: instrument-in-force
44
+ period_note: >-
45
+ 2003 is the in-force date of the instrument that ENACTS this order
46
+ (art. 20: "entre en vigueur le 1er juillet 2003"), not the date any
47
+ particular prefix was reached. Prefix-to-year mapping is NOT in this file
48
+ and is not derivable from it: it depends on registration volume, and the
49
+ first-issue date of each prefix is administrative allocation that Legilux
50
+ does not publish. A consumer may use `seq` for ORDERING two plates, never
51
+ for dating one.
52
+ maximal_munch: false
53
+ reading_rule: column-major
54
+ excluded_pairs: [AA, CD, HJ, KK, KZ, PD, SA, SS, WC, ZZ]
55
+ excluded_letters: [I, O]
56
+ excluded_note: >-
57
+ Annexe paragraphe 2, verbatim: "les series qui impliquent une des
58
+ combinaisons de lettres AA, CD, HJ, KK, KZ, PD, SA, SS, WC et ZZ" and
59
+ "les series qui impliquent les lettres I ou O". The instrument gives no
60
+ reason for either list; AA, CD, P and ZZ are separately reserved as special
61
+ series by art. 7, which accounts for three of the ten but not for HJ, KK,
62
+ KZ, PD, SA, SS or WC - recorded as unexplained rather than rationalised.
63
+ digit_block:
64
+ range: [4000, 9999]
65
+ per_prefix_span: 1000
66
+ note: >-
67
+ Annex as amended 2006: 0001-0099 are reserved to cyclomoteurs and light
68
+ quadricycles (and the leading two digits are NOT printed on those plates),
69
+ 0100-3999 are available as personalised numbers, and 4000-9999 are the
70
+ current series. Within the current series each prefix takes one
71
+ thousand-block per pass in the order below.
72
+ codes:
73
+ - { seq: 1 , pair: BA }
74
+ - { seq: 2 , pair: CA }
75
+ - { seq: 3 , pair: DA }
76
+ - { seq: 4 , pair: EA }
77
+ - { seq: 5 , pair: FB }
78
+ - { seq: 6 , pair: GB }
79
+ - { seq: 7 , pair: HB }
80
+ - { seq: 8 , pair: JB }
81
+ - { seq: 9 , pair: KB }
82
+ - { seq: 10 , pair: LC }
83
+ - { seq: 11 , pair: MC }
84
+ - { seq: 12 , pair: NC }
85
+ - { seq: 13 , pair: PC }
86
+ - { seq: 14 , pair: QC }
87
+ - { seq: 15 , pair: RD }
88
+ - { seq: 16 , pair: SD }
89
+ - { seq: 17 , pair: TD }
90
+ - { seq: 18 , pair: UD }
91
+ - { seq: 19 , pair: VD }
92
+ - { seq: 20 , pair: WE }
93
+ - { seq: 21 , pair: XE }
94
+ - { seq: 22 , pair: YE }
95
+ - { seq: 23 , pair: ZE }
96
+ - { seq: 24 , pair: ZF }
97
+ - { seq: 25 , pair: YF }
98
+ - { seq: 26 , pair: XF }
99
+ - { seq: 27 , pair: WF }
100
+ - { seq: 28 , pair: VG }
101
+ - { seq: 29 , pair: UG }
102
+ - { seq: 30 , pair: TG }
103
+ - { seq: 31 , pair: SG }
104
+ - { seq: 32 , pair: RG }
105
+ - { seq: 33 , pair: QH }
106
+ - { seq: 34 , pair: PH }
107
+ - { seq: 35 , pair: NH }
108
+ - { seq: 36 , pair: MH }
109
+ - { seq: 37 , pair: LH }
110
+ - { seq: 38 , pair: KJ }
111
+ - { seq: 39 , pair: JJ }
112
+ - { seq: 40 , pair: GJ }
113
+ - { seq: 41 , pair: FJ }
114
+ - { seq: 42 , pair: EK }
115
+ - { seq: 43 , pair: DK }
116
+ - { seq: 44 , pair: CK }
117
+ - { seq: 45 , pair: BK }
118
+ - { seq: 46 , pair: AK }
119
+ - { seq: 47 , pair: AL }
120
+ - { seq: 48 , pair: BL }
121
+ - { seq: 49 , pair: CL }
122
+ - { seq: 50 , pair: DL }
123
+ - { seq: 51 , pair: EL }
124
+ - { seq: 52 , pair: FM }
125
+ - { seq: 53 , pair: GM }
126
+ - { seq: 54 , pair: HM }
127
+ - { seq: 55 , pair: JM }
128
+ - { seq: 56 , pair: KM }
129
+ - { seq: 57 , pair: LN }
130
+ - { seq: 58 , pair: MN }
131
+ - { seq: 59 , pair: NN }
132
+ - { seq: 60 , pair: PN }
133
+ - { seq: 61 , pair: QN }
134
+ - { seq: 62 , pair: RP }
135
+ - { seq: 63 , pair: SP }
136
+ - { seq: 64 , pair: TP }
137
+ - { seq: 65 , pair: UP }
138
+ - { seq: 66 , pair: VP }
139
+ - { seq: 67 , pair: WQ }
140
+ - { seq: 68 , pair: XQ }
141
+ - { seq: 69 , pair: YQ }
142
+ - { seq: 70 , pair: ZQ }
143
+ - { seq: 71 , pair: ZR }
144
+ - { seq: 72 , pair: YR }
145
+ - { seq: 73 , pair: XR }
146
+ - { seq: 74 , pair: WR }
147
+ - { seq: 75 , pair: VS }
148
+ - { seq: 76 , pair: US }
149
+ - { seq: 77 , pair: TS }
150
+ - { seq: 78 , pair: RS }
151
+ - { seq: 79 , pair: QT }
152
+ - { seq: 80 , pair: PT }
153
+ - { seq: 81 , pair: NT }
154
+ - { seq: 82 , pair: MT }
155
+ - { seq: 83 , pair: LT }
156
+ - { seq: 84 , pair: KU }
157
+ - { seq: 85 , pair: JU }
158
+ - { seq: 86 , pair: HU }
159
+ - { seq: 87 , pair: GU }
160
+ - { seq: 88 , pair: FU }
161
+ - { seq: 89 , pair: EV }
162
+ - { seq: 90 , pair: DV }
163
+ - { seq: 91 , pair: CV }
164
+ - { seq: 92 , pair: BV }
165
+ - { seq: 93 , pair: AV }
166
+ - { seq: 94 , pair: AW }
167
+ - { seq: 95 , pair: BW }
168
+ - { seq: 96 , pair: CW }
169
+ - { seq: 97 , pair: DW }
170
+ - { seq: 98 , pair: EW }
171
+ - { seq: 99 , pair: FX }
172
+ - { seq: 100, pair: GX }
173
+ - { seq: 101, pair: HX }
174
+ - { seq: 102, pair: JX }
175
+ - { seq: 103, pair: KX }
176
+ - { seq: 104, pair: LY }
177
+ - { seq: 105, pair: MY }
178
+ - { seq: 106, pair: NY }
179
+ - { seq: 107, pair: PY }
180
+ - { seq: 108, pair: QY }
181
+ - { seq: 109, pair: RZ }
182
+ - { seq: 110, pair: SZ }
183
+ - { seq: 111, pair: TZ }
184
+ - { seq: 112, pair: UZ }
185
+ - { seq: 113, pair: VZ }
186
+ - { seq: 114, pair: WZ }
187
+ - { seq: 115, pair: XZ }
188
+ - { seq: 116, pair: YZ }
189
+ - { seq: 117, pair: ZY }
190
+ - { seq: 118, pair: YY }
191
+ - { seq: 119, pair: XY }
192
+ - { seq: 120, pair: WY }
193
+ - { seq: 121, pair: VX }
194
+ - { seq: 122, pair: UX }
195
+ - { seq: 123, pair: TX }
196
+ - { seq: 124, pair: SX }
197
+ - { seq: 125, pair: RX }
198
+ - { seq: 126, pair: QW }
199
+ - { seq: 127, pair: PW }
200
+ - { seq: 128, pair: NW }
201
+ - { seq: 129, pair: MW }
202
+ - { seq: 130, pair: LW }
203
+ - { seq: 131, pair: KV }
204
+ - { seq: 132, pair: JV }
205
+ - { seq: 133, pair: HV }
206
+ - { seq: 134, pair: GV }
207
+ - { seq: 135, pair: FV }
208
+ - { seq: 136, pair: EU }
209
+ - { seq: 137, pair: DU }
210
+ - { seq: 138, pair: CU }
211
+ - { seq: 139, pair: BU }
212
+ - { seq: 140, pair: AU }
213
+ - { seq: 141, pair: AT }
214
+ - { seq: 142, pair: BT }
215
+ - { seq: 143, pair: CT }
216
+ - { seq: 144, pair: DT }
217
+ - { seq: 145, pair: ET }
218
+ - { seq: 146, pair: FS }
219
+ - { seq: 147, pair: GS }
220
+ - { seq: 148, pair: HS }
221
+ - { seq: 149, pair: JS }
222
+ - { seq: 150, pair: KS }
223
+ - { seq: 151, pair: LR }
224
+ - { seq: 152, pair: MR }
225
+ - { seq: 153, pair: NR }
226
+ - { seq: 154, pair: PR }
227
+ - { seq: 155, pair: QR }
228
+ - { seq: 156, pair: RQ }
229
+ - { seq: 157, pair: SQ }
230
+ - { seq: 158, pair: TQ }
231
+ - { seq: 159, pair: UQ }
232
+ - { seq: 160, pair: VQ }
233
+ - { seq: 161, pair: WP }
234
+ - { seq: 162, pair: XP }
235
+ - { seq: 163, pair: YP }
236
+ - { seq: 164, pair: ZP }
237
+ - { seq: 165, pair: ZN }
238
+ - { seq: 166, pair: YN }
239
+ - { seq: 167, pair: XN }
240
+ - { seq: 168, pair: WN }
241
+ - { seq: 169, pair: VM }
242
+ - { seq: 170, pair: UM }
243
+ - { seq: 171, pair: TM }
244
+ - { seq: 172, pair: SM }
245
+ - { seq: 173, pair: RM }
246
+ - { seq: 174, pair: QL }
247
+ - { seq: 175, pair: PL }
248
+ - { seq: 176, pair: NL }
249
+ - { seq: 177, pair: ML }
250
+ - { seq: 178, pair: LL }
251
+ - { seq: 179, pair: JK }
252
+ - { seq: 180, pair: HK }
253
+ - { seq: 181, pair: GK }
254
+ - { seq: 182, pair: FK }
255
+ - { seq: 183, pair: EJ }
256
+ - { seq: 184, pair: DJ }
257
+ - { seq: 185, pair: CJ }
258
+ - { seq: 186, pair: BJ }
259
+ - { seq: 187, pair: AJ }
260
+ - { seq: 188, pair: AH }
261
+ - { seq: 189, pair: BH }
262
+ - { seq: 190, pair: CH }
263
+ - { seq: 191, pair: DH }
264
+ - { seq: 192, pair: EH }
265
+ - { seq: 193, pair: FG }
266
+ - { seq: 194, pair: GG }
267
+ - { seq: 195, pair: HG }
268
+ - { seq: 196, pair: JG }
269
+ - { seq: 197, pair: KG }
270
+ - { seq: 198, pair: LF }
271
+ - { seq: 199, pair: MF }
272
+ - { seq: 200, pair: NF }
273
+ - { seq: 201, pair: PF }
274
+ - { seq: 202, pair: QF }
275
+ - { seq: 203, pair: RE }
276
+ - { seq: 204, pair: SE }
277
+ - { seq: 205, pair: TE }
278
+ - { seq: 206, pair: UE }
279
+ - { seq: 207, pair: VE }
280
+ - { seq: 208, pair: WD }
281
+ - { seq: 209, pair: XD }
282
+ - { seq: 210, pair: YD }
283
+ - { seq: 211, pair: ZD }
284
+ - { seq: 212, pair: ZC }
285
+ - { seq: 213, pair: YC }
286
+ - { seq: 214, pair: XC }
287
+ - { seq: 215, pair: VB }
288
+ - { seq: 216, pair: UB }
289
+ - { seq: 217, pair: TB }
290
+ - { seq: 218, pair: SB }
291
+ - { seq: 219, pair: RB }
292
+ - { seq: 220, pair: QA }
293
+ - { seq: 221, pair: PA }
294
+ - { seq: 222, pair: NA }
295
+ - { seq: 223, pair: MA }
296
+ - { seq: 224, pair: LA }
297
+ - { seq: 225, pair: KA }
298
+ - { seq: 226, pair: JA }
299
+ - { seq: 227, pair: HA }
300
+ - { seq: 228, pair: GA }
301
+ - { seq: 229, pair: FA }
302
+ - { seq: 230, pair: EB }
303
+ - { seq: 231, pair: DB }
304
+ - { seq: 232, pair: CB }
305
+ - { seq: 233, pair: BB }
306
+ - { seq: 234, pair: AB }
307
+ - { seq: 235, pair: AC }
308
+ - { seq: 236, pair: BC }
309
+ - { seq: 237, pair: CC }
310
+ - { seq: 238, pair: DC }
311
+ - { seq: 239, pair: EC }
312
+ - { seq: 240, pair: FD }
313
+ - { seq: 241, pair: GD }
314
+ - { seq: 242, pair: HD }
315
+ - { seq: 243, pair: JD }
316
+ - { seq: 244, pair: KD }
317
+ - { seq: 245, pair: LE }
318
+ - { seq: 246, pair: ME }
319
+ - { seq: 247, pair: NE }
320
+ - { seq: 248, pair: PE }
321
+ - { seq: 249, pair: QE }
322
+ - { seq: 250, pair: RF }
323
+ - { seq: 251, pair: SF }
324
+ - { seq: 252, pair: TF }
325
+ - { seq: 253, pair: UF }
326
+ - { seq: 254, pair: VF }
327
+ - { seq: 255, pair: WG }
328
+ - { seq: 256, pair: XG }
329
+ - { seq: 257, pair: YG }
330
+ - { seq: 258, pair: ZG }
331
+ - { seq: 259, pair: ZH }
332
+ - { seq: 260, pair: YH }
333
+ - { seq: 261, pair: XH }
334
+ - { seq: 262, pair: WH }
335
+ - { seq: 263, pair: VJ }
336
+ - { seq: 264, pair: UJ }
337
+ - { seq: 265, pair: TJ }
338
+ - { seq: 266, pair: SJ }
339
+ - { seq: 267, pair: RJ }
340
+ - { seq: 268, pair: QK }
341
+ - { seq: 269, pair: PK }
342
+ - { seq: 270, pair: NK }
343
+ - { seq: 271, pair: MK }
344
+ - { seq: 272, pair: LK }
345
+ - { seq: 273, pair: KL }
346
+ - { seq: 274, pair: JL }
347
+ - { seq: 275, pair: HL }
348
+ - { seq: 276, pair: GL }
349
+ - { seq: 277, pair: FL }
350
+ - { seq: 278, pair: EM }
351
+ - { seq: 279, pair: DM }
352
+ - { seq: 280, pair: CM }
353
+ - { seq: 281, pair: BM }
354
+ - { seq: 282, pair: AM }
355
+ - { seq: 283, pair: AN }
356
+ - { seq: 284, pair: BN }
357
+ - { seq: 285, pair: CN }
358
+ - { seq: 286, pair: DN }
359
+ - { seq: 287, pair: EN }
360
+ - { seq: 288, pair: FP }
361
+ - { seq: 289, pair: GP }
362
+ - { seq: 290, pair: HP }
363
+ - { seq: 291, pair: JP }
364
+ - { seq: 292, pair: KP }
365
+ - { seq: 293, pair: LQ }
366
+ - { seq: 294, pair: MQ }
367
+ - { seq: 295, pair: NQ }
368
+ - { seq: 296, pair: PQ }
369
+ - { seq: 297, pair: QQ }
370
+ - { seq: 298, pair: RR }
371
+ - { seq: 299, pair: SR }
372
+ - { seq: 300, pair: TR }
373
+ - { seq: 301, pair: UR }
374
+ - { seq: 302, pair: VR }
375
+ - { seq: 303, pair: WS }
376
+ - { seq: 304, pair: XS }
377
+ - { seq: 305, pair: YS }
378
+ - { seq: 306, pair: ZS }
379
+ - { seq: 307, pair: ZT }
380
+ - { seq: 308, pair: YT }
381
+ - { seq: 309, pair: XT }
382
+ - { seq: 310, pair: WT }
383
+ - { seq: 311, pair: VU }
384
+ - { seq: 312, pair: UU }
385
+ - { seq: 313, pair: TU }
386
+ - { seq: 314, pair: SU }
387
+ - { seq: 315, pair: RU }
388
+ - { seq: 316, pair: QV }
389
+ - { seq: 317, pair: PV }
390
+ - { seq: 318, pair: NV }
391
+ - { seq: 319, pair: MV }
392
+ - { seq: 320, pair: LV }
393
+ - { seq: 321, pair: KW }
394
+ - { seq: 322, pair: JW }
395
+ - { seq: 323, pair: HW }
396
+ - { seq: 324, pair: GW }
397
+ - { seq: 325, pair: FW }
398
+ - { seq: 326, pair: EX }
399
+ - { seq: 327, pair: DX }
400
+ - { seq: 328, pair: CX }
401
+ - { seq: 329, pair: BX }
402
+ - { seq: 330, pair: AX }
403
+ - { seq: 331, pair: AY }
404
+ - { seq: 332, pair: BY }
405
+ - { seq: 333, pair: CY }
406
+ - { seq: 334, pair: DY }
407
+ - { seq: 335, pair: EY }
408
+ - { seq: 336, pair: FZ }
409
+ - { seq: 337, pair: GZ }
410
+ - { seq: 338, pair: HZ }
411
+ - { seq: 339, pair: JZ }
412
+ - { seq: 340, pair: LZ }
413
+ - { seq: 341, pair: MZ }
414
+ - { seq: 342, pair: NZ }
415
+ - { seq: 343, pair: PZ }
416
+ - { seq: 344, pair: QZ }
417
+ - { seq: 345, pair: RY }
418
+ - { seq: 346, pair: SY }
419
+ - { seq: 347, pair: TY }
420
+ - { seq: 348, pair: UY }
421
+ - { seq: 349, pair: VY }
422
+ - { seq: 350, pair: WX }
423
+ - { seq: 351, pair: XX }
424
+ - { seq: 352, pair: YX }
425
+ - { seq: 353, pair: ZX }
426
+ - { seq: 354, pair: ZW }
427
+ - { seq: 355, pair: YW }
428
+ - { seq: 356, pair: XW }
429
+ - { seq: 357, pair: WW }
430
+ - { seq: 358, pair: VV }
431
+ - { seq: 359, pair: UV }
432
+ - { seq: 360, pair: TV }
433
+ - { seq: 361, pair: SV }
434
+ - { seq: 362, pair: RV }
435
+ - { seq: 363, pair: QU }
436
+ - { seq: 364, pair: PU }
437
+ - { seq: 365, pair: NU }
438
+ - { seq: 366, pair: MU }
439
+ - { seq: 367, pair: LU }
440
+ - { seq: 368, pair: KT }
441
+ - { seq: 369, pair: JT }
442
+ - { seq: 370, pair: HT }
443
+ - { seq: 371, pair: GT }
444
+ - { seq: 372, pair: FT }
445
+ - { seq: 373, pair: ES }
446
+ - { seq: 374, pair: DS }
447
+ - { seq: 375, pair: CS }
448
+ - { seq: 376, pair: BS }
449
+ - { seq: 377, pair: AS }
450
+ - { seq: 378, pair: AR }
451
+ - { seq: 379, pair: BR }
452
+ - { seq: 380, pair: CR }
453
+ - { seq: 381, pair: DR }
454
+ - { seq: 382, pair: ER }
455
+ - { seq: 383, pair: FQ }
456
+ - { seq: 384, pair: GQ }
457
+ - { seq: 385, pair: HQ }
458
+ - { seq: 386, pair: JQ }
459
+ - { seq: 387, pair: KQ }
460
+ - { seq: 388, pair: LP }
461
+ - { seq: 389, pair: MP }
462
+ - { seq: 390, pair: NP }
463
+ - { seq: 391, pair: PP }
464
+ - { seq: 392, pair: QP }
465
+ - { seq: 393, pair: RN }
466
+ - { seq: 394, pair: SN }
467
+ - { seq: 395, pair: TN }
468
+ - { seq: 396, pair: UN }
469
+ - { seq: 397, pair: VN }
470
+ - { seq: 398, pair: WM }
471
+ - { seq: 399, pair: XM }
472
+ - { seq: 400, pair: YM }
473
+ - { seq: 401, pair: ZM }
474
+ - { seq: 402, pair: ZL }
475
+ - { seq: 403, pair: YL }
476
+ - { seq: 404, pair: XL }
477
+ - { seq: 405, pair: WL }
478
+ - { seq: 406, pair: VK }
479
+ - { seq: 407, pair: UK }
480
+ - { seq: 408, pair: TK }
481
+ - { seq: 409, pair: SK }
482
+ - { seq: 410, pair: RK }
483
+ - { seq: 411, pair: QJ }
484
+ - { seq: 412, pair: PJ }
485
+ - { seq: 413, pair: NJ }
486
+ - { seq: 414, pair: MJ }
487
+ - { seq: 415, pair: LJ }
488
+ - { seq: 416, pair: KH }
489
+ - { seq: 417, pair: JH }
490
+ - { seq: 418, pair: HH }
491
+ - { seq: 419, pair: GH }
492
+ - { seq: 420, pair: FH }
493
+ - { seq: 421, pair: EG }
494
+ - { seq: 422, pair: DG }
495
+ - { seq: 423, pair: CG }
496
+ - { seq: 424, pair: BG }
497
+ - { seq: 425, pair: AG }
498
+ - { seq: 426, pair: AF }
499
+ - { seq: 427, pair: BF }
500
+ - { seq: 428, pair: CF }
501
+ - { seq: 429, pair: DF }
502
+ - { seq: 430, pair: EF }
503
+ - { seq: 431, pair: FE }
504
+ - { seq: 432, pair: GE }
505
+ - { seq: 433, pair: HE }
506
+ - { seq: 434, pair: JE }
507
+ - { seq: 435, pair: KE }
508
+ - { seq: 436, pair: LD }
509
+ - { seq: 437, pair: MD }
510
+ - { seq: 438, pair: ND }
511
+ - { seq: 439, pair: QD }
512
+ - { seq: 440, pair: RC }
513
+ - { seq: 441, pair: SC }
514
+ - { seq: 442, pair: TC }
515
+ - { seq: 443, pair: UC }
516
+ - { seq: 444, pair: VC }
517
+ - { seq: 445, pair: WB }
518
+ - { seq: 446, pair: XB }
519
+ - { seq: 447, pair: YB }
520
+ - { seq: 448, pair: ZB }
521
+ - { seq: 449, pair: ZA }
522
+ - { seq: 450, pair: YA }
523
+ - { seq: 451, pair: XA }
524
+ - { seq: 452, pair: WA }
525
+ - { seq: 453, pair: VA }
526
+ - { seq: 454, pair: UA }
527
+ - { seq: 455, pair: TA }
528
+ - { seq: 456, pair: RA }
529
+ - { seq: 457, pair: QB }
530
+ - { seq: 458, pair: PB }
531
+ - { seq: 459, pair: NB }
532
+ - { seq: 460, pair: MB }
533
+ - { seq: 461, pair: LB }
534
+ - { seq: 462, pair: KC }
535
+ - { seq: 463, pair: JC }
536
+ - { seq: 464, pair: HC }
537
+ - { seq: 465, pair: GC }
538
+ - { seq: 466, pair: FC }
539
+ - { seq: 467, pair: ED }
540
+ - { seq: 468, pair: DD }
541
+ - { seq: 469, pair: BD }
542
+ - { seq: 470, pair: AD }
543
+ - { seq: 471, pair: AE }
544
+ - { seq: 472, pair: BE }
545
+ - { seq: 473, pair: CE }
546
+ - { seq: 474, pair: DE }
547
+ - { seq: 475, pair: EE }
548
+ - { seq: 476, pair: FF }
549
+ - { seq: 477, pair: GF }
550
+ - { seq: 478, pair: HF }
551
+ - { seq: 479, pair: JF }
552
+ - { seq: 480, pair: KF }
553
+ - { seq: 481, pair: LG }
554
+ - { seq: 482, pair: MG }
555
+ - { seq: 483, pair: NG }
556
+ - { seq: 484, pair: PG }
557
+ - { seq: 485, pair: QG }
558
+ - { seq: 486, pair: RH }
559
+ - { seq: 487, pair: SH }
560
+ - { seq: 488, pair: TH }
561
+ - { seq: 489, pair: UH }
562
+ - { seq: 490, pair: VH }
563
+ - { seq: 491, pair: WJ }
564
+ - { seq: 492, pair: XJ }
565
+ - { seq: 493, pair: YJ }
566
+ - { seq: 494, pair: ZJ }
567
+ - { seq: 495, pair: ZK }
568
+ - { seq: 496, pair: YK }
569
+ - { seq: 497, pair: XK }
570
+ - { seq: 498, pair: WK }
571
+ - { seq: 499, pair: VL }
572
+ - { seq: 500, pair: UL }
573
+ - { seq: 501, pair: TL }
574
+ - { seq: 502, pair: SL }
575
+ - { seq: 503, pair: RL }
576
+ - { seq: 504, pair: QM }
577
+ - { seq: 505, pair: PM }
578
+ - { seq: 506, pair: NM }
579
+ - { seq: 507, pair: MM }
580
+ - { seq: 508, pair: LM }
581
+ - { seq: 509, pair: KN }
582
+ - { seq: 510, pair: JN }
583
+ - { seq: 511, pair: HN }
584
+ - { seq: 512, pair: GN }
585
+ - { seq: 513, pair: FN }
586
+ - { seq: 514, pair: EP }
587
+ - { seq: 515, pair: DP }
588
+ - { seq: 516, pair: CP }
589
+ - { seq: 517, pair: BP }
590
+ - { seq: 518, pair: AP }
591
+ - { seq: 519, pair: AQ }
592
+ - { seq: 520, pair: BQ }
593
+ - { seq: 521, pair: CQ }
594
+ - { seq: 522, pair: DQ }
595
+ - { seq: 523, pair: EQ }
596
+ - { seq: 524, pair: FR }
597
+ - { seq: 525, pair: GR }
598
+ - { seq: 526, pair: HR }
599
+ - { seq: 527, pair: JR }
600
+ - { seq: 528, pair: KR }
601
+ - { seq: 529, pair: LS }
602
+ - { seq: 530, pair: MS }
603
+ - { seq: 531, pair: NS }
604
+ - { seq: 532, pair: PS }
605
+ - { seq: 533, pair: QS }
606
+ - { seq: 534, pair: RT }
607
+ - { seq: 535, pair: ST }
608
+ - { seq: 536, pair: TT }
609
+ - { seq: 537, pair: UT }
610
+ - { seq: 538, pair: VT }
611
+ - { seq: 539, pair: WU }
612
+ - { seq: 540, pair: XU }
613
+ - { seq: 541, pair: YU }
614
+ - { seq: 542, pair: ZU }
615
+ - { seq: 543, pair: ZV }
616
+ - { seq: 544, pair: YV }
617
+ - { seq: 545, pair: XV }
618
+ - { seq: 546, pair: WV }
619
+ - { seq: 547, pair: VW }
620
+ - { seq: 548, pair: UW }
621
+ - { seq: 549, pair: TW }
622
+ - { seq: 550, pair: SW }
623
+ - { seq: 551, pair: RW }
624
+ - { seq: 552, pair: QX }
625
+ - { seq: 553, pair: PX }
626
+ - { seq: 554, pair: NX }
627
+ - { seq: 555, pair: MX }
628
+ - { seq: 556, pair: LX }
629
+ - { seq: 557, pair: KY }
630
+ - { seq: 558, pair: JY }
631
+ - { seq: 559, pair: HY }
632
+ - { seq: 560, pair: GY }
633
+ - { seq: 561, pair: FY }
634
+ - { seq: 562, pair: EZ }
635
+ - { seq: 563, pair: DZ }
636
+ - { seq: 564, pair: CZ }
637
+ - { seq: 565, pair: BZ }
638
+ - { seq: 566, pair: AZ }