oltc-selector 1.0.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 (3) hide show
  1. package/README.md +91 -0
  2. package/bin/oltc.js +2095 -0
  3. package/package.json +27 -0
package/bin/oltc.js ADDED
@@ -0,0 +1,2095 @@
1
+ #!/usr/bin/env node
2
+
3
+ // lib/deriveUm.ts
4
+ var RATED_TO_WINDING_UM = {
5
+ 33: 40.5,
6
+ 35: 40.5,
7
+ 66: 72.5,
8
+ 69: 72.5,
9
+ 110: 126,
10
+ 115: 126,
11
+ 132: 145,
12
+ 138: 145,
13
+ 150: 170,
14
+ 220: 252,
15
+ 230: 252,
16
+ 330: 363
17
+ };
18
+ var SNAP_UN = Object.keys(RATED_TO_WINDING_UM).map(Number).sort(
19
+ (a, b) => a - b
20
+ );
21
+ function snapRatedKv(ratedKv) {
22
+ if (!Number.isFinite(ratedKv) || ratedKv <= 0) return ratedKv;
23
+ if (RATED_TO_WINDING_UM[ratedKv] != null) return ratedKv;
24
+ let best = SNAP_UN[0];
25
+ let bestDist = Math.abs(ratedKv - best);
26
+ for (const u of SNAP_UN) {
27
+ const d = Math.abs(ratedKv - u);
28
+ if (d < bestDist) {
29
+ best = u;
30
+ bestDist = d;
31
+ }
32
+ }
33
+ const rel = bestDist / Math.max(ratedKv, 1);
34
+ if (rel <= 0.12 || bestDist <= 8) return best;
35
+ return ratedKv;
36
+ }
37
+ function windingUmFromRatedKv(ratedKv) {
38
+ const snapped = snapRatedKv(ratedKv);
39
+ return RATED_TO_WINDING_UM[snapped] ?? snapped;
40
+ }
41
+ function deriveOltcUm(windingUmKv, connection) {
42
+ if (connection !== "Y") return windingUmKv;
43
+ if (windingUmKv >= 125.9 && windingUmKv <= 170.1) return 72.5;
44
+ return windingUmKv;
45
+ }
46
+ function oltcUmFromRatedKv(ratedKv, connection) {
47
+ return deriveOltcUm(windingUmFromRatedKv(ratedKv), connection);
48
+ }
49
+ function throughCurrentFromRated(mva, ratedKv, connection) {
50
+ if (!(mva > 0) || !(ratedKv > 0)) return NaN;
51
+ if (connection === "D") return mva * 1e3 / (3 * ratedKv);
52
+ return mva * 1e3 / (Math.sqrt(3) * ratedKv);
53
+ }
54
+ function stepVoltageFromPercent(ratedKv, stepPercent, connection) {
55
+ if (!(ratedKv > 0) || !(stepPercent > 0)) return NaN;
56
+ const windingV = connection === "D" ? ratedKv * 1e3 : ratedKv * 1e3 / Math.sqrt(3);
57
+ return windingV * stepPercent;
58
+ }
59
+ function maxThroughCurrent(ratedA, minusSteps, stepPercent) {
60
+ if (!(ratedA > 0)) return NaN;
61
+ if (!(minusSteps > 0) || !(stepPercent > 0)) return ratedA;
62
+ const drop = minusSteps * stepPercent;
63
+ if (drop <= 0) return ratedA;
64
+ const denom = 1 - Math.min(drop, 0.45);
65
+ return ratedA / denom;
66
+ }
67
+
68
+ // lib/tapCode.ts
69
+ var PITCHES = [10, 12, 14, 16, 18];
70
+ var W_DIAGRAMS = [
71
+ // mid=1, small pitch ladder
72
+ { plusMinus: 4, pitch: 10, positions: 9, mid: 1 },
73
+ // 10091W
74
+ { plusMinus: 5, pitch: 12, positions: 11, mid: 1 },
75
+ // 12111W
76
+ { plusMinus: 6, pitch: 14, positions: 13, mid: 1 },
77
+ // 14131W
78
+ { plusMinus: 7, pitch: 16, positions: 15, mid: 1 },
79
+ // 16151W
80
+ { plusMinus: 8, pitch: 18, positions: 17, mid: 1 },
81
+ // 18171W
82
+ // mid=1, large (odd ±N)
83
+ { plusMinus: 9, pitch: 10, positions: 19, mid: 1 },
84
+ // 10191W
85
+ { plusMinus: 11, pitch: 12, positions: 23, mid: 1 },
86
+ // 12231W
87
+ { plusMinus: 13, pitch: 14, positions: 27, mid: 1 },
88
+ // 14271W
89
+ { plusMinus: 15, pitch: 16, positions: 31, mid: 1 },
90
+ // 16311W
91
+ { plusMinus: 17, pitch: 18, positions: 35, mid: 1 },
92
+ // 18351W
93
+ // mid=3 (even ±N) — most common overseas quotes
94
+ { plusMinus: 8, pitch: 10, positions: 19, mid: 3 },
95
+ // 10193W ★
96
+ { plusMinus: 10, pitch: 12, positions: 23, mid: 3 },
97
+ // 12233W
98
+ { plusMinus: 12, pitch: 14, positions: 27, mid: 3 },
99
+ // 14273W
100
+ { plusMinus: 14, pitch: 16, positions: 31, mid: 3 },
101
+ // 16313W
102
+ { plusMinus: 16, pitch: 18, positions: 35, mid: 3 }
103
+ // 18353W
104
+ ];
105
+ var G_DIAGRAMS = [
106
+ { plusMinus: 9, pitch: 10, positions: 19, mid: 1 },
107
+ // 10191G
108
+ { plusMinus: 11, pitch: 12, positions: 23, mid: 1 },
109
+ // 12231G
110
+ { plusMinus: 13, pitch: 14, positions: 27, mid: 1 },
111
+ // 14271G
112
+ { plusMinus: 15, pitch: 16, positions: 31, mid: 1 },
113
+ // 16311G
114
+ { plusMinus: 17, pitch: 18, positions: 35, mid: 1 },
115
+ // 18351G
116
+ { plusMinus: 8, pitch: 10, positions: 19, mid: 3 },
117
+ // 10193G ★
118
+ { plusMinus: 10, pitch: 12, positions: 23, mid: 3 },
119
+ // 12233G
120
+ { plusMinus: 12, pitch: 14, positions: 27, mid: 3 },
121
+ // 14273G
122
+ { plusMinus: 14, pitch: 16, positions: 31, mid: 3 },
123
+ // 16313G
124
+ { plusMinus: 16, pitch: 18, positions: 35, mid: 3 }
125
+ // 18353G
126
+ ];
127
+ function diagramsFor(regulation) {
128
+ if (regulation === "coarse_fine") return G_DIAGRAMS;
129
+ if (regulation === "reversing") return W_DIAGRAMS;
130
+ return [];
131
+ }
132
+ function preferredMid(n, regulation) {
133
+ const rows = diagramsFor(regulation).filter((d) => d.plusMinus === n);
134
+ if (!rows.length) return n % 2 === 0 ? 3 : 1;
135
+ const mid3 = rows.find((d) => d.mid === 3);
136
+ if (mid3) return 3;
137
+ return rows[0].mid === 3 ? 3 : 1;
138
+ }
139
+ function lookupDiagram(n, mid, regulation) {
140
+ return diagramsFor(regulation).find(
141
+ (d) => d.plusMinus === n && d.mid === mid
142
+ ) ?? null;
143
+ }
144
+ function pitchFor(n, mid) {
145
+ if (mid === 3) return n + 2;
146
+ if (n <= 8) return 2 * n + 2;
147
+ return n + 1;
148
+ }
149
+ function positionsFor(n, mid) {
150
+ if (mid === 0) return n;
151
+ return 2 * n + mid;
152
+ }
153
+ function midOptionsFor(n, regulation) {
154
+ const mids = diagramsFor(regulation).filter((d) => d.plusMinus === n).map((d) => d.mid);
155
+ const out = [];
156
+ if (mids.includes(3)) out.push(3);
157
+ if (mids.includes(1)) out.push(1);
158
+ return out;
159
+ }
160
+ var PM_STEP_OPTIONS_W = [
161
+ 4,
162
+ 5,
163
+ 6,
164
+ 7,
165
+ 8,
166
+ 9,
167
+ 10,
168
+ 11,
169
+ 12,
170
+ 13,
171
+ 14,
172
+ 15,
173
+ 16,
174
+ 17
175
+ ];
176
+ var PM_TAP_MAP = Object.fromEntries(
177
+ PM_STEP_OPTIONS_W.map((n) => {
178
+ const mid = preferredMid(n, "reversing");
179
+ const row = lookupDiagram(n, mid, "reversing");
180
+ return [n, { pitch: row.pitch, positions: row.positions, mid: row.mid }];
181
+ })
182
+ );
183
+ function plusMinusFromPositions(positions, regulation) {
184
+ if (regulation === "linear") return null;
185
+ const rows = diagramsFor(regulation).filter((d) => d.positions === positions);
186
+ if (!rows.length) return null;
187
+ const mid3 = rows.find((d) => d.mid === 3);
188
+ return (mid3 ?? rows[0]).plusMinus;
189
+ }
190
+ function defaultPitch(positions, regulation) {
191
+ if (regulation === "linear") {
192
+ if (positions <= 10) return 10;
193
+ if (positions <= 12) return 12;
194
+ if (positions <= 14) return 14;
195
+ if (positions <= 16) return 16;
196
+ return 18;
197
+ }
198
+ const n = plusMinusFromPositions(positions, regulation);
199
+ if (n != null) {
200
+ const mid = defaultMid(positions, regulation);
201
+ if (mid === 1 || mid === 3) {
202
+ const row = lookupDiagram(n, mid, regulation);
203
+ if (row) return row.pitch;
204
+ }
205
+ }
206
+ if (positions <= 19) return 10;
207
+ if (positions <= 23) return 12;
208
+ if (positions <= 27) return 14;
209
+ if (positions <= 31) return 16;
210
+ return 18;
211
+ }
212
+ function defaultMid(positions, regulation) {
213
+ if (regulation === "linear") return 0;
214
+ if (positions === 19 || positions === 23 || positions === 27 || positions === 31 || positions === 35) {
215
+ return 3;
216
+ }
217
+ if (positions % 2 === 1) return 1;
218
+ return 1;
219
+ }
220
+ function changeOverOf(regulation) {
221
+ if (regulation === "linear") return "0";
222
+ if (regulation === "reversing") return "W";
223
+ return "G";
224
+ }
225
+ function buildTapCode(opts) {
226
+ let pitch = opts.pitch;
227
+ if (!PITCHES.includes(pitch)) {
228
+ pitch = defaultPitch(opts.positions, opts.regulation);
229
+ }
230
+ if (!PITCHES.includes(pitch)) {
231
+ pitch = 10;
232
+ }
233
+ const mid = opts.regulation === "linear" ? 0 : opts.mid;
234
+ const co = changeOverOf(opts.regulation);
235
+ const p = String(pitch).padStart(2, "0");
236
+ const pos = String(opts.positions).padStart(2, "0");
237
+ if (co === "0") {
238
+ return `${p}${pos}${mid === 0 ? "0" : mid}`;
239
+ }
240
+ return `${p}${pos}${mid}${co}`;
241
+ }
242
+ function resolveTapFields(input) {
243
+ const reg = input.regulation;
244
+ if (reg === "linear") {
245
+ const positions2 = input.positions ?? 9;
246
+ const pitch2 = input.pitch ?? defaultPitch(positions2, reg);
247
+ const mid2 = 0;
248
+ return {
249
+ positions: positions2,
250
+ pitch: pitch2,
251
+ mid: mid2,
252
+ tapCode: buildTapCode({ pitch: pitch2, positions: positions2, mid: mid2, regulation: reg }),
253
+ changeOver: "0"
254
+ };
255
+ }
256
+ if (input.plusMinusSteps != null && input.plusMinusSteps > 0) {
257
+ const n = input.plusMinusSteps;
258
+ const allowed = midOptionsFor(n, reg);
259
+ let mid2;
260
+ if (input.midPositions === 1 || input.midPositions === 3) {
261
+ mid2 = allowed.includes(input.midPositions) ? input.midPositions : preferredMid(n, reg);
262
+ } else {
263
+ mid2 = preferredMid(n, reg);
264
+ }
265
+ const row = lookupDiagram(n, mid2, reg);
266
+ const positions2 = row?.positions ?? positionsFor(n, mid2);
267
+ const pitch2 = input.pitch ?? row?.pitch ?? pitchFor(n, mid2);
268
+ return {
269
+ positions: positions2,
270
+ pitch: pitch2,
271
+ mid: mid2,
272
+ tapCode: buildTapCode({ pitch: pitch2, positions: positions2, mid: mid2, regulation: reg }),
273
+ changeOver: changeOverOf(reg)
274
+ };
275
+ }
276
+ let positions = input.positions ?? 19;
277
+ let mid = input.midPositions === 1 || input.midPositions === 3 ? input.midPositions : defaultMid(positions, reg);
278
+ const pitch = input.pitch ?? (mid === 1 || mid === 3 ? (() => {
279
+ const n = plusMinusFromPositions(positions, reg);
280
+ if (n != null) {
281
+ const row = lookupDiagram(n, mid, reg);
282
+ if (row) return row.pitch;
283
+ }
284
+ return defaultPitch(positions, reg);
285
+ })() : defaultPitch(positions, reg));
286
+ return {
287
+ positions,
288
+ pitch,
289
+ mid,
290
+ tapCode: buildTapCode({ pitch, positions, mid, regulation: reg }),
291
+ changeOver: changeOverOf(reg)
292
+ };
293
+ }
294
+
295
+ // lib/catalog.ts
296
+ var EARTH_INSULATION = {
297
+ 12: { pf: 35, bil: 75 },
298
+ 17.5: { pf: 45, bil: 105 },
299
+ 40.5: { pf: 90, bil: 250 },
300
+ 72.5: { pf: 140, bil: 350 },
301
+ 126: { pf: 230, bil: 550 },
302
+ 145: { pf: 275, bil: 650 },
303
+ 170: { pf: 325, bil: 750 },
304
+ 252: { pf: 460, bil: 1050 },
305
+ 300: { pf: 480, bil: 1100 },
306
+ 363: { pf: 510, bil: 1175 }
307
+ };
308
+ var UM_OPTIONS_KV = [
309
+ 12,
310
+ 17.5,
311
+ 40.5,
312
+ 72.5,
313
+ 126,
314
+ 145,
315
+ 170,
316
+ 252,
317
+ 300,
318
+ 363
319
+ ];
320
+ function catalogueMenu(steps, unit) {
321
+ return steps.map((v) => {
322
+ const label = `${v} ${unit}`;
323
+ return { value: v, labelZh: label, labelEn: label };
324
+ });
325
+ }
326
+ var UM_MENU = catalogueMenu(UM_OPTIONS_KV, "kV");
327
+ var CURRENT_OPTIONS_A = [
328
+ 160,
329
+ 200,
330
+ 350,
331
+ 400,
332
+ 500,
333
+ 600,
334
+ 700,
335
+ 800,
336
+ 1e3,
337
+ 1200,
338
+ 1300,
339
+ 1500,
340
+ 1600,
341
+ 2e3,
342
+ 2400,
343
+ 2500,
344
+ 3e3
345
+ ];
346
+ var CURRENT_MENU = catalogueMenu(
347
+ CURRENT_OPTIONS_A,
348
+ "A"
349
+ );
350
+ var STEP_VOLTAGE_OPTIONS_V = [
351
+ 500,
352
+ 800,
353
+ 1e3,
354
+ 1200,
355
+ 1400,
356
+ 1500,
357
+ 1650,
358
+ 1800,
359
+ 2e3,
360
+ 2200,
361
+ 2500,
362
+ 3e3,
363
+ 3300,
364
+ 4e3
365
+ ];
366
+ var STEP_VOLTAGE_MENU = catalogueMenu(
367
+ STEP_VOLTAGE_OPTIONS_V,
368
+ "V"
369
+ );
370
+ var ACROSS_BIL_OPTIONS_KV = [
371
+ 75,
372
+ 95,
373
+ 105,
374
+ 120,
375
+ 150,
376
+ 170,
377
+ 200,
378
+ 250,
379
+ 285,
380
+ 320,
381
+ 350,
382
+ 450,
383
+ 520,
384
+ 550,
385
+ 650,
386
+ 750
387
+ ];
388
+ var ACROSS_PF_OPTIONS_KV = [
389
+ 20,
390
+ 30,
391
+ 38,
392
+ 45,
393
+ 50,
394
+ 65,
395
+ 70,
396
+ 80,
397
+ 85,
398
+ 95,
399
+ 100,
400
+ 110,
401
+ 125,
402
+ 140,
403
+ 150
404
+ ];
405
+ var ACROSS_BIL_MENU = catalogueMenu(
406
+ ACROSS_BIL_OPTIONS_KV,
407
+ "kV"
408
+ );
409
+ var ACROSS_PF_MENU = catalogueMenu(
410
+ ACROSS_PF_OPTIONS_KV,
411
+ "kV"
412
+ );
413
+ var SELECTOR_SIZES_BY_UM = {
414
+ 40.5: ["B", "C"],
415
+ 72.5: ["B", "C", "D", "DE"],
416
+ 126: ["B", "C", "D", "DE"],
417
+ 145: ["C", "D", "DE"],
418
+ 170: ["B", "C", "D", "DE"],
419
+ 252: ["C", "D", "DE"],
420
+ 300: ["DE"],
421
+ 363: ["DE"]
422
+ };
423
+ var SIZE_ORDER = ["B", "C", "D", "DE"];
424
+ var INTERNAL_INSULATION = {
425
+ "": { a_li: 0, a_pf: 0, b_li: 0, b_pf: 0 },
426
+ A: { a_li: 0, a_pf: 0, b_li: 0, b_pf: 0 },
427
+ B: { a_li: 265, a_pf: 50, b_li: 265, b_pf: 50 },
428
+ C: { a_li: 365, a_pf: 82, b_li: 350, b_pf: 82 },
429
+ D: { a_li: 460, a_pf: 105, b_li: 460, b_pf: 146 },
430
+ DE: { a_li: 550, a_pf: 120, b_li: 550, b_pf: 160 },
431
+ E: { a_li: 0, a_pf: 0, b_li: 0, b_pf: 0 }
432
+ };
433
+ function iiiTypeAllowsConnection(s, phases, conn) {
434
+ if (phases !== "III") return true;
435
+ const allowed = s.iiiConnections ?? s.connections;
436
+ if (conn === "any") return true;
437
+ return allowed.includes(conn) || allowed.includes("any");
438
+ }
439
+ var FAMILY_MIN_RANK = {
440
+ cv2: 10,
441
+ cv: 18,
442
+ sv: 19,
443
+ cm2: 25,
444
+ shzv: 40,
445
+ shzvg: 45,
446
+ // high-current vacuum after standard SHZV
447
+ cm: 50,
448
+ cmd: 55,
449
+ hwv: 15,
450
+ // only wins on on-tank path
451
+ cvt: 12,
452
+ cz: 14,
453
+ wsg: 6,
454
+ hwdk: 80,
455
+ wsl: 5,
456
+ // OCTC-only list (never mixed into CV2→CM2→SHZV)
457
+ wdl: 6
458
+ };
459
+ var SERIES = [
460
+ {
461
+ id: "shzv",
462
+ code: "SHZV",
463
+ nameEn: "SHZV in-tank vacuum OLTC (combined)",
464
+ nameZh: "SHZV \u7BB1\u5185\u771F\u7A7A\u6709\u8F7D\u5F00\u5173\uFF08\u7EC4\u5408\u5F0F\uFF09",
465
+ mounting: ["in_tank"],
466
+ medium: "oil_vacuum",
467
+ structure: "combined",
468
+ vacuum: true,
469
+ currents: {
470
+ I: [400, 600, 1e3, 1200, 1500, 1600, 2400],
471
+ II: [400, 600, 1e3],
472
+ III: [400, 600, 1e3]
473
+ },
474
+ // List 72.5/126/170/252. 300 from 2026 OS. 363 brochure-only (no 2025 list row).
475
+ umKv: [72.5, 126, 170, 252, 300, 363],
476
+ usesSelectorSize: true,
477
+ maxStepVoltageV: 4e3,
478
+ stepCapacityByCurrent: {
479
+ 400: 1500,
480
+ 600: 1600,
481
+ 1e3: 3e3,
482
+ 1200: 3e3,
483
+ 1500: 3e3,
484
+ 1600: 4400,
485
+ 2400: 5600
486
+ },
487
+ connections: ["Y", "D"],
488
+ iiiConnections: ["Y"],
489
+ maxPositionsLinear: 18,
490
+ maxPositionsWithChangeOver: 35,
491
+ defaultMdu: "CMA7",
492
+ notesEn: "In-tank vacuum combined. Brochure III type is star-point only (no SHZVIII-\u2026D). Use when compound / CM2 cannot cover. For I\u1D64\u226B1000 A III see SHZVG.",
493
+ notesZh: "\u7BB1\u5185\u771F\u7A7A\u7EC4\u5408\u5F0F\u3002\u6837\u672C\u4E09\u76F8\u578B\u53F7\u53EA\u7ED9\u661F\u70B9\uFF08\u6CA1\u6709 SHZVIII-\u2026D\uFF09\u3002\u5F53\u590D\u5408\u5F0F/CM2 \u4E0D\u591F\u65F6\u7528\u3002\u4E09\u76F8\u7535\u6D41\u663E\u8457\u5927\u4E8E 1000 A \u89C1 SHZVG\u3002",
494
+ rank: 40
495
+ },
496
+ {
497
+ id: "shzvg",
498
+ code: "SHZVG",
499
+ nameEn: "SHZVG in-tank vacuum OLTC (high current)",
500
+ nameZh: "SHZVG \u7BB1\u5185\u771F\u7A7A\u6709\u8F7D\u5F00\u5173\uFF08\u5927\u7535\u6D41\uFF09",
501
+ mounting: ["in_tank"],
502
+ medium: "oil_vacuum",
503
+ structure: "combined",
504
+ vacuum: true,
505
+ // 2025 list: III 1300/1500; I 1300/2000/3000. Um 72.5/126/170/252 only.
506
+ currents: {
507
+ I: [1300, 2e3, 3e3],
508
+ II: [1300],
509
+ III: [1300, 1500]
510
+ },
511
+ umKv: [72.5, 126, 170, 252],
512
+ usesSelectorSize: true,
513
+ maxStepVoltageV: 4e3,
514
+ stepCapacityByCurrent: {
515
+ 1300: 3e3,
516
+ 1500: 3500,
517
+ 2e3: 4400,
518
+ 3e3: 5600
519
+ },
520
+ connections: ["Y", "D"],
521
+ iiiConnections: ["Y"],
522
+ maxPositionsLinear: 18,
523
+ maxPositionsWithChangeOver: 35,
524
+ defaultMdu: "CMA7",
525
+ notesEn: "High-current vacuum combined (2025 shipments). Brochure III type is star-point only (no SHZVGIII-\u2026D). Prefer when SHZV III max 1000 A is short.",
526
+ notesZh: "\u5927\u7535\u6D41\u771F\u7A7A\u7EC4\u5408\u5F0F\uFF082025 \u51FA\u8D27\u6709\u91CF\uFF09\u3002\u6837\u672C\u4E09\u76F8\u578B\u53F7\u53EA\u7ED9\u661F\u70B9\uFF08\u6CA1\u6709 SHZVGIII-\u2026D\uFF09\u3002\u4EC5\u5F53 SHZV \u4E09\u76F8 1000 A \u4E0D\u591F\u65F6\u9009\u7528\u3002",
527
+ rank: 45
528
+ },
529
+ {
530
+ id: "hwv",
531
+ code: "HWV",
532
+ nameEn: "HWV externally-mounted vacuum OLTC",
533
+ nameZh: "HWV \u7BB1\u5916\u771F\u7A7A\u6709\u8F7D\u5F00\u5173",
534
+ mounting: ["on_tank", "external_compartment"],
535
+ medium: "oil_vacuum",
536
+ structure: "combined",
537
+ vacuum: true,
538
+ currents: {
539
+ I: [400, 800, 1e3],
540
+ III: [400, 800, 1e3]
541
+ },
542
+ umKv: [17.5, 40.5, 72.5],
543
+ usesSelectorSize: false,
544
+ maxStepVoltageV: 3300,
545
+ stepCapacityByCurrent: {
546
+ 400: 1200,
547
+ 800: 2200,
548
+ 1e3: 2600
549
+ },
550
+ connections: ["Y", "D", "any"],
551
+ maxPositionsLinear: 18,
552
+ maxPositionsWithChangeOver: 35,
553
+ defaultMdu: "CMA7",
554
+ notesEn: "Side-mounted independent oil compartment \u2014 retrofit / side tank. Commercial string usually omits selector grade.",
555
+ notesZh: "\u4FA7\u9762\u72EC\u7ACB\u6CB9\u5BA4\uFF0C\u6539\u9020\u5E38\u7528\u3002\u5546\u52A1\u578B\u53F7\u901A\u5E38\u4E0D\u5199\u9009\u62E9\u5668\u5B57\u6BCD\u3002",
556
+ rank: 15
557
+ },
558
+ {
559
+ id: "cm2",
560
+ code: "CM2",
561
+ nameEn: "CM2 in-tank vacuum OLTC (combined)",
562
+ nameZh: "CM2 \u7BB1\u5185\u771F\u7A7A\u6709\u8F7D\u5F00\u5173\uFF08\u7EC4\u5408\u5F0F\uFF09",
563
+ mounting: ["in_tank"],
564
+ medium: "oil_vacuum",
565
+ structure: "combined",
566
+ vacuum: true,
567
+ currents: {
568
+ I: [500, 600, 800, 1200, 1500],
569
+ II: [500, 600],
570
+ III: [500, 600]
571
+ },
572
+ umKv: [72.5, 126, 170, 252],
573
+ usesSelectorSize: true,
574
+ maxStepVoltageV: 3300,
575
+ stepCapacityByCurrent: {
576
+ 500: 1400,
577
+ 600: 1500,
578
+ 800: 2e3,
579
+ 1200: 3100,
580
+ 1500: 3500
581
+ },
582
+ connections: ["Y", "D"],
583
+ iiiConnections: ["Y"],
584
+ maxPositionsLinear: 18,
585
+ maxPositionsWithChangeOver: 35,
586
+ defaultMdu: "CMA7",
587
+ notesEn: "Vacuum combined. Brochure III type is star-point only (no CM2III-\u2026D). Prefer over SHZV when III \u2264600 A (or single-phase ratings) and Um/positions fit.",
588
+ notesZh: "\u771F\u7A7A\u7EC4\u5408\u5F0F\u3002\u6837\u672C\u4E09\u76F8\u578B\u53F7\u53EA\u7ED9\u661F\u70B9\uFF08\u6CA1\u6709 CM2III-\u2026D\uFF09\u3002\u4E09\u76F8 \u2264600 A \u4E14 Um/\u6863\u4F4D\u6EE1\u8DB3\u65F6\u4F18\u5148\u4E8E SHZV\u3002",
589
+ rank: 25
590
+ },
591
+ {
592
+ id: "cm",
593
+ code: "CM",
594
+ nameEn: "CM in-tank oil OLTC (combined)",
595
+ nameZh: "CM \u7BB1\u5185\u6CB9\u6D78\u6709\u8F7D\u5F00\u5173\uFF08\u7EC4\u5408\u5F0F\uFF09",
596
+ mounting: ["in_tank"],
597
+ medium: "oil",
598
+ structure: "combined",
599
+ vacuum: false,
600
+ currents: {
601
+ I: [500, 600, 800, 1200, 1500],
602
+ II: [500, 600],
603
+ III: [500, 600]
604
+ },
605
+ umKv: [72.5, 126, 170, 252],
606
+ usesSelectorSize: true,
607
+ maxStepVoltageV: 3300,
608
+ stepCapacityByCurrent: {
609
+ 500: 1400,
610
+ 600: 1500,
611
+ 800: 2e3,
612
+ 1200: 3100,
613
+ 1500: 3500
614
+ },
615
+ connections: ["Y", "D"],
616
+ iiiConnections: ["Y"],
617
+ maxPositionsLinear: 18,
618
+ maxPositionsWithChangeOver: 35,
619
+ defaultMdu: "CMA7",
620
+ notesEn: "Oil combined. Brochure III type is star-point only (no CMIII-\u2026D). Prefer vacuum when switching is frequent.",
621
+ notesZh: "\u6CB9\u5207\u6362\u7EC4\u5408\u5F0F\u3002\u6837\u672C\u4E09\u76F8\u578B\u53F7\u53EA\u7ED9\u661F\u70B9\uFF08\u6CA1\u6709 CMIII-\u2026D\uFF09\u3002\u5207\u6362\u9891\u7E41\u65F6\u4F18\u5148\u771F\u7A7A\u3002",
622
+ rank: 50
623
+ },
624
+ {
625
+ id: "cmd",
626
+ code: "CMD",
627
+ nameEn: "CMD in-tank oil OLTC (combined, high current)",
628
+ nameZh: "CMD \u7BB1\u5185\u6CB9\u6D78\u6709\u8F7D\u5F00\u5173\uFF08\u5927\u7535\u6D41\uFF09",
629
+ mounting: ["in_tank"],
630
+ medium: "oil",
631
+ structure: "combined",
632
+ vacuum: false,
633
+ currents: {
634
+ // 2025 sales: CMDI-1200 common (indirect export); price list also 400/600/1000/1600/2400
635
+ I: [400, 600, 1e3, 1200, 1600, 2400],
636
+ II: [400, 600, 1e3],
637
+ III: [400, 600, 1e3]
638
+ },
639
+ umKv: [72.5, 126, 170, 252],
640
+ usesSelectorSize: true,
641
+ maxStepVoltageV: 4e3,
642
+ stepCapacityByCurrent: {
643
+ 400: 1320,
644
+ 600: 1600,
645
+ 1e3: 3e3,
646
+ 1200: 3e3,
647
+ 1600: 4400,
648
+ 2400: 5600
649
+ },
650
+ connections: ["Y", "D"],
651
+ iiiConnections: ["Y"],
652
+ maxPositionsLinear: 14,
653
+ maxPositionsWithChangeOver: 27,
654
+ defaultMdu: "CMA7",
655
+ notesEn: "Higher through-current oil combined type. Brochure III type is star-point only (no CMDIII-\u2026D).",
656
+ notesZh: "\u66F4\u5927\u989D\u5B9A\u7535\u6D41\u7684\u6CB9\u6D78\u7EC4\u5408\u5F0F\u3002\u6837\u672C\u4E09\u76F8\u578B\u53F7\u53EA\u7ED9\u661F\u70B9\uFF08\u6CA1\u6709 CMDIII-\u2026D\uFF09\u3002",
657
+ rank: 55
658
+ },
659
+ {
660
+ id: "cv2",
661
+ code: "CV2",
662
+ nameEn: "CV2 in-tank vacuum compound OLTC (selector switch)",
663
+ nameZh: "CV2 \u7BB1\u5185\u771F\u7A7A\u590D\u5408\u5F0F\u6709\u8F7D\u5F00\u5173\uFF08\u9009\u62E9\u5F00\u5173\uFF09",
664
+ mounting: ["in_tank"],
665
+ medium: "oil_vacuum",
666
+ structure: "compound",
667
+ vacuum: true,
668
+ currents: {
669
+ I: [350, 600],
670
+ III: [350, 600]
671
+ },
672
+ umKv: [40.5, 72.5, 126, 145],
673
+ usesSelectorSize: false,
674
+ maxStepVoltageV: 2e3,
675
+ stepCapacityByCurrent: {
676
+ 350: 700,
677
+ 600: 800
678
+ },
679
+ connections: ["Y", "D"],
680
+ maxPositionsLinear: 12,
681
+ maxPositionsWithChangeOver: 23,
682
+ defaultMdu: "CMA7",
683
+ notesEn: "Compound vacuum. 2025 sales: III 350/600 only (no 500). Prefer when I\u2264600 A, Um\u2264145 kV, positions\u226423.",
684
+ notesZh: "\u771F\u7A7A\u590D\u5408\u5F0F\u30022025 \u51FA\u8D27\u4E09\u76F8\u4EC5 350/600 A\uFF08\u65E0 500\uFF09\u3002I\u2264600\u3001Um\u2264145\u3001\u6863\u4F4D\u226423 \u65F6\u4F18\u5148\u3002",
685
+ rank: 10
686
+ },
687
+ {
688
+ id: "cv",
689
+ code: "CV",
690
+ nameEn: "CV in-tank oil compound OLTC",
691
+ nameZh: "CV \u7BB1\u5185\u6CB9\u6D78\u590D\u5408\u5F0F\u6709\u8F7D\u5F00\u5173",
692
+ mounting: ["in_tank"],
693
+ medium: "oil",
694
+ structure: "compound",
695
+ vacuum: false,
696
+ currents: {
697
+ I: [350, 700],
698
+ III: [350]
699
+ },
700
+ umKv: [40.5, 72.5],
701
+ usesSelectorSize: false,
702
+ maxStepVoltageV: 1500,
703
+ stepCapacityByCurrent: {
704
+ 350: 525,
705
+ 700: 660
706
+ },
707
+ connections: ["Y", "D"],
708
+ maxPositionsLinear: 14,
709
+ maxPositionsWithChangeOver: 27,
710
+ defaultMdu: "CMA7",
711
+ notesEn: "Oil compound. 500 A oil compound is SV, not CV.",
712
+ notesZh: "\u6CB9\u6D78\u590D\u5408\u5F0F\u3002500 A \u6CB9\u6D78\u590D\u5408\u4E3A SV\u3002",
713
+ rank: 18
714
+ },
715
+ {
716
+ id: "sv",
717
+ code: "SV",
718
+ nameEn: "SV in-tank oil compound OLTC",
719
+ nameZh: "SV \u7BB1\u5185\u6CB9\u6D78\u590D\u5408\u5F0F\u6709\u8F7D\u5F00\u5173",
720
+ mounting: ["in_tank"],
721
+ medium: "oil",
722
+ structure: "compound",
723
+ vacuum: false,
724
+ currents: {
725
+ III: [500]
726
+ },
727
+ umKv: [40.5, 72.5],
728
+ usesSelectorSize: false,
729
+ maxStepVoltageV: 1500,
730
+ stepCapacityByCurrent: {
731
+ 500: 525
732
+ },
733
+ connections: ["Y", "D"],
734
+ maxPositionsLinear: 12,
735
+ maxPositionsWithChangeOver: 23,
736
+ defaultMdu: "CMA7",
737
+ notesEn: "Oil compound 500 A (SVIII-500).",
738
+ notesZh: "\u6CB9\u6D78\u590D\u5408\u5F0F 500 A\uFF08SVIII-500\uFF09\u3002",
739
+ rank: 19
740
+ },
741
+ {
742
+ id: "cvt",
743
+ code: "CVT",
744
+ nameEn: "CVT dry-type vacuum OLTC",
745
+ nameZh: "CVT \u5E72\u5F0F\u771F\u7A7A\u6709\u8F7D\u5F00\u5173",
746
+ mounting: ["dry_type"],
747
+ medium: "dry",
748
+ structure: "compound",
749
+ vacuum: true,
750
+ currents: {
751
+ I: [160, 200],
752
+ III: [160, 200]
753
+ },
754
+ umKv: [12],
755
+ usesSelectorSize: false,
756
+ maxStepVoltageV: 500,
757
+ stepCapacityByCurrent: {
758
+ 160: 80,
759
+ 200: 80
760
+ },
761
+ connections: ["Y", "D", "any"],
762
+ maxPositionsLinear: 10,
763
+ maxPositionsWithChangeOver: 10,
764
+ defaultMdu: "CMA7",
765
+ notesEn: "Dry-type CVTIII-160/200 / 12 kV.",
766
+ notesZh: "\u5E72\u5F0F CVTIII-160/200\uFF0C12 kV\u3002",
767
+ rank: 12
768
+ },
769
+ {
770
+ id: "cz",
771
+ code: "CZ",
772
+ nameEn: "CZ dry-type vacuum OLTC",
773
+ nameZh: "CZ \u5E72\u5F0F\u771F\u7A7A\u6709\u8F7D\u5F00\u5173",
774
+ mounting: ["dry_type"],
775
+ medium: "dry",
776
+ structure: "compound",
777
+ vacuum: true,
778
+ currents: {
779
+ I: [500, 600]
780
+ },
781
+ umKv: [40.5, 72.5],
782
+ usesSelectorSize: false,
783
+ maxStepVoltageV: 950,
784
+ stepCapacityByCurrent: {
785
+ 500: 325,
786
+ 600: 325
787
+ },
788
+ connections: ["Y", "D", "any"],
789
+ maxPositionsLinear: 17,
790
+ maxPositionsWithChangeOver: 17,
791
+ defaultMdu: "CMA7",
792
+ notesEn: "Dry-type; 2025 list and 2026 OS are 3\xD7CZI only (no CZIII row).",
793
+ notesZh: "\u5E72\u5F0F\uFF1B\u4EF7\u8868\u548C 2026 \u5B9E\u5355\u53EA\u6709 3\xD7CZI\uFF0C\u6CA1\u6709 CZIII\u3002",
794
+ rank: 14
795
+ },
796
+ {
797
+ id: "hwdk",
798
+ code: "HWDK",
799
+ nameEn: "HWDK reactor-type OLTC",
800
+ nameZh: "HWDK \u7535\u6297\u5F0F\u6709\u8F7D\u5F00\u5173",
801
+ mounting: ["reactor", "on_tank"],
802
+ medium: "oil",
803
+ structure: "combined",
804
+ vacuum: false,
805
+ currents: {
806
+ I: [1500, 2e3, 2500],
807
+ III: [1500, 2e3, 2500]
808
+ },
809
+ umKv: [35, 40.5, 69],
810
+ usesSelectorSize: false,
811
+ maxStepVoltageV: 6e3,
812
+ connections: ["Y", "D", "any"],
813
+ maxPositionsLinear: 18,
814
+ maxPositionsWithChangeOver: 35,
815
+ defaultMdu: "CMA7",
816
+ notesEn: "Reactor family \u2014 confirm with engineering.",
817
+ notesZh: "\u7535\u6297\u5668\u7CFB\u5217\uFF0C\u9700\u5DE5\u7A0B\u786E\u8BA4\u3002",
818
+ rank: 80
819
+ },
820
+ {
821
+ id: "wsl",
822
+ code: "WSL",
823
+ nameEn: "WSL in-tank de-energized tap changer (OCTC)",
824
+ nameZh: "WSL \u7BB1\u5185\u65E0\u8F7D\u5206\u63A5\u5F00\u5173\uFF08OCTC\uFF09",
825
+ mounting: ["in_tank"],
826
+ medium: "oil",
827
+ structure: "cage",
828
+ vacuum: false,
829
+ dutyKind: "octc",
830
+ // Regular WSL(WDL) 2025 blocks only — no one-off 350/400/3500 rows.
831
+ currents: {
832
+ I: [600, 800, 1e3, 1200, 1600, 2e3, 2400],
833
+ II: [600, 800, 1e3, 1200, 1600, 2e3, 2400],
834
+ III: [600, 800, 1e3, 1200, 1600, 2e3, 2400]
835
+ },
836
+ umKv: [12, 40.5, 72.5, 126, 145, 170, 252, 363],
837
+ usesSelectorSize: false,
838
+ maxStepVoltageV: 1e4,
839
+ connections: ["Y", "D"],
840
+ maxPositionsLinear: 18,
841
+ maxPositionsWithChangeOver: 18,
842
+ defaultMdu: "CMA7",
843
+ notesEn: "Cage OCTC. Eligible only when dutyKind=octc. Wiring roman II/IV/V/VI/VII/VIII is a form field, independent of Y/D. Unset auto: Y\u2192WSLIV, D\u2192WSLII; 5x2\u2192VIII, 3x2\u2192VI, 5x4\u2192V. Contact from P or OS. WDL aliases the same list.",
844
+ notesZh: "\u7B3C\u5F0F\u65E0\u8F7D\u5F00\u5173\u3002\u4EC5 dutyKind=octc \u65F6\u5165\u9009\u3002\u63A5\u7EBF\u65B9\u5F0F II/IV/V/VI/VII/VIII \u4E0E Y/D \u5206\u5F00\u9009\u3002\u672A\u6307\u5B9A\u65F6\uFF1AY\u2192WSLIV\uFF0CD\u2192WSLII\u3002\u6863\u4F4D\u6620\u5C04\u89E6\u5934 6x5/7x6/12x11/18x17\u3002WDL \u8D70\u540C\u4E00\u4EF7\u76EE\u8868\u3002",
845
+ rank: 5
846
+ },
847
+ {
848
+ id: "wsg",
849
+ code: "WSG",
850
+ nameEn: "WSG off-circuit tap changer (OCTC)",
851
+ nameZh: "WSG \u65E0\u8F7D\u5206\u63A5\u5F00\u5173\uFF08OCTC\uFF09",
852
+ mounting: ["in_tank"],
853
+ medium: "oil",
854
+ structure: "drum",
855
+ vacuum: false,
856
+ dutyKind: "octc",
857
+ currents: {
858
+ I: [250, 300, 400, 600, 800, 1e3, 1250],
859
+ II: [250, 300, 400, 600, 800, 1e3, 1250],
860
+ III: [300, 600, 800]
861
+ },
862
+ umKv: [40.5],
863
+ usesSelectorSize: false,
864
+ maxStepVoltageV: 1e4,
865
+ connections: ["Y", "D"],
866
+ maxPositionsLinear: 12,
867
+ maxPositionsWithChangeOver: 12,
868
+ defaultMdu: "CMA7",
869
+ notesEn: "Drum OCTC (WG sheet). dutyKind=octc only. Wiring roman follows octcSeries (form default IV). Auto D \u2192 WSGII (Anthony WSG II-800D/40.5-4x5A).",
870
+ notesZh: "\u9F13\u5F0F\u65E0\u8F7D\uFF08WG \u4EF7\u76EE\u8868\uFF09\u3002\u4EC5 dutyKind=octc\u3002\u63A5\u7EBF\u65B9\u5F0F\u8DDF octcSeries\uFF08\u9875\u9762\u9ED8\u8BA4 IV\uFF09\u3002\u672A\u6307\u5B9A\u65F6 D \u2192 WSGII\u3002",
871
+ rank: 6
872
+ }
873
+ ];
874
+ function nearestUm(wanted, allowed) {
875
+ if (!allowed.length) return null;
876
+ const sorted = [...allowed].sort((a, b) => a - b);
877
+ const ge = sorted.find((u) => u >= wanted - 0.01);
878
+ return ge ?? sorted[sorted.length - 1];
879
+ }
880
+ function coveringUms(wanted, allowed) {
881
+ if (!allowed.length) return [];
882
+ const sorted = [...allowed].sort((a, b) => a - b);
883
+ const ge = sorted.filter((u) => u >= wanted - 0.01);
884
+ if (!ge.length) return [];
885
+ return ge.length > 1 ? [ge[0], ge[1]] : [ge[0]];
886
+ }
887
+ function nearestCurrent(wanted, allowed) {
888
+ if (!allowed?.length) return null;
889
+ const sorted = [...allowed].sort((a, b) => a - b);
890
+ const ge = sorted.find((c) => c >= wanted - 0.01);
891
+ if (ge != null) return ge;
892
+ const max = sorted[sorted.length - 1];
893
+ if (wanted <= max * 1.01 + 0.5) return max;
894
+ return null;
895
+ }
896
+ function phaseToken(p) {
897
+ return p;
898
+ }
899
+ function defaultSelectorSizeForUm(um) {
900
+ if (um <= 72.5 + 0.1) return "B";
901
+ if (um <= 145 + 0.1) return "C";
902
+ if (um <= 252 + 0.1) return "D";
903
+ return "DE";
904
+ }
905
+ function firstAllowedAtOrAbove(min, allowed) {
906
+ const minIdx = SIZE_ORDER.indexOf(min);
907
+ for (let i = Math.max(0, minIdx); i < SIZE_ORDER.length; i++) {
908
+ if (allowed.includes(SIZE_ORDER[i])) return SIZE_ORDER[i];
909
+ }
910
+ return allowed[allowed.length - 1] ?? "B";
911
+ }
912
+ function pickSelectorSize(um, requested, bilKv, pfKv, acrossTapBilKv, acrossTapPfKv) {
913
+ const allowed = SELECTOR_SIZES_BY_UM[um] ?? ["B", "C", "D", "DE"];
914
+ if (requested && requested !== "auto") {
915
+ if (allowed.includes(requested)) return requested;
916
+ return firstAllowedAtOrAbove(requested, allowed);
917
+ }
918
+ let floor = defaultSelectorSizeForUm(um);
919
+ floor = firstAllowedAtOrAbove(floor, allowed);
920
+ const earth = EARTH_INSULATION[um];
921
+ if (earth && bilKv && bilKv > earth.bil + 1) {
922
+ const i = SIZE_ORDER.indexOf(floor);
923
+ floor = firstAllowedAtOrAbove(
924
+ SIZE_ORDER[Math.min(SIZE_ORDER.length - 1, i + 1)] ?? "DE",
925
+ allowed
926
+ );
927
+ }
928
+ if (earth && pfKv && pfKv > earth.pf + 1) {
929
+ const i = SIZE_ORDER.indexOf(floor);
930
+ floor = firstAllowedAtOrAbove(
931
+ SIZE_ORDER[Math.min(SIZE_ORDER.length - 1, i + 1)] ?? "DE",
932
+ allowed
933
+ );
934
+ }
935
+ const needALi = acrossTapBilKv ?? 0;
936
+ const needAPf = acrossTapPfKv ?? 0;
937
+ const floorIdx = SIZE_ORDER.indexOf(floor);
938
+ for (let i = floorIdx; i < SIZE_ORDER.length; i++) {
939
+ const cand = SIZE_ORDER[i];
940
+ if (!allowed.includes(cand)) continue;
941
+ const ins = INTERNAL_INSULATION[cand];
942
+ if (needALi <= 0 && needAPf <= 0) return cand;
943
+ if (ins.a_li + 0.5 >= needALi && ins.a_pf + 0.5 >= needAPf) return cand;
944
+ }
945
+ for (const cand of SIZE_ORDER) {
946
+ if (!allowed.includes(cand)) continue;
947
+ const ins = INTERNAL_INSULATION[cand];
948
+ if (ins.a_li + 0.5 >= needALi && ins.a_pf + 0.5 >= needAPf) return cand;
949
+ }
950
+ return allowed[allowed.length - 1];
951
+ }
952
+
953
+ // lib/listIndex.data.json
954
+ var listIndex_data_default = { source: "QS/a. Base Price List 2025.xlsx (WSL/WDL keys only, no RMB)", generatedOn: "2026-08-19", keyCount: 451, keys: ["WSLIV-600Y/12-6x5A", "WSLIV-600Y/12-6x5B", "WSLIV-600Y/12-7x6B", "WSLIV-600Y/12-8x7B", "WSLIV-600Y/12-9x8B", "WSLIV-600Y/12-10x9B", "WSLIV-600Y/12-11x10B", "WSLIV-600Y/12-12x11B", "WSLIV-600Y/12-18x17E", "WSLIV-600Y/72.5-6x5A", "WSLIV-600Y/72.5-6x5B", "WSLIV-600Y/72.5-7x6B", "WSLIV-600Y/72.5-8x7B", "WSLIV-600Y/72.5-9x8B", "WSLIV-600Y/72.5-10x9B", "WSLIV-600Y/72.5-11x10B", "WSLIV-600Y/72.5-12x11B", "WSLIV-600Y/126-6x5A", "WSLIV-600Y/126-6x5B", "WSLIV-600Y/126-7x6B", "WSLIV-600Y/126-8x7B", "WSLIV-600Y/126-8x7E", "WSLIV-600Y/126-9x8B", "WSLIV-600Y/126-10x9B", "WSLIV-600Y/126-11x10B", "WSLIV-600Y/126-12x11B", "WSLIV-600Y/145-18x17E", "WSLIV-600Y/170-6x5B", "WSLIV-600Y/252-6x5", "WSLIV-800Y/12-6x5A", "WSLIV-800Y/12-6x5B", "WSLIV-800Y/12-7x6B", "WSLIV-800Y/12-8x7B", "WSLIV-800Y/12-9x8B", "WSLIV-800Y/12-10x9B", "WSLIV-800Y/12-11x10B", "WSLIV-800Y/12-12x11B", "WSLIV-800Y/72.5-6x5A", "WSLIV-800Y/72.5-6x5B", "WSLIV-800Y/72.5-7x6B", "WSLIV-800Y/72.5-8x7B", "WSLIV-800Y/72.5-9x8B", "WSLIV-800Y/72.5-10x9B", "WSLIV-800Y/72.5-11x10B", "WSLIV-800Y/72.5-12x11B", "WSLIV-800Y/72.5-18x17E", "WDLIV-800Y/72.5-8x7D", "WSLIV-800Y/126-6x5A", "WSLIV-800Y/126-6x5B", "WSLIV-800Y/126-7x6B", "WSLIV-800Y/126-8x7B", "WSLIV-800Y/126-9x8B", "WSLIV-800Y/126-10x9B", "WSLIV-800Y/126-11x10B", "WSLIV-800Y/126-12x11B", "WSLIV-1000Y/12-6x5B", "WSLIV-1000Y/12-7x6B", "WSLIV-1000Y/12-8x7B", "WSLIV-1000Y/12-9x8B", "WSLIV-1000Y/12-10x9B", "WSLIV-1000Y/72.5-6x5B", "WSLIV-1000Y/72.5-7x6B", "WSLIV-1000Y/72.5-8x7B", "WSLIV-1000Y/72.5-9x8B", "WSLIV-1000Y/72.5-10x9B", "WSLIV-1000Y/126-6x5B", "WSLIV-1000Y/126-7x6B", "WSLIV-1000Y/126-8x7B", "WSLIV-1000Y/126-9x8B", "WSLIV-1000Y/126-10x9B", "WSLIV-1000Y/170-6x5", "WSLIV-1000Y/252-3x2", "WSLIV-1000Y/252-6x5", "WSLIV-1200Y/12-6x5B", "WSLIV-1200Y/12-14x13E", "WSLIV-1200Y/40.5-12x11D", "WSLIV-1200Y/72.5-6x5B", "WSLIV-1200Y/126-6x5B", "WSLIV-1200Y/145-10x9D", "WSLIV-1600Y/12-6x5B", "WSLIV-1600Y/72.5-6x5B", "WDLIV-1600Y/72.5-11x10D", "WSLIV-1600Y/126-6x5B", "WSLIV-1600Y/145-6x5B", "WDLIV-1600/252-6x5B", "WDLIV-1600/362-6x5B", "WSLIV-2000Y/12-6x5B", "WSLIV-2000Y/72.5-6x5B", "WSLIV-2000Y/126-6x5B", "WSLIV-2400Y/12-6x5B", "WSLIV-2400Y/72.5-6x5B", "WSLIV-2400Y/126-6x5B", "WSLIV-3000Y/12-6x5B", "WSLIV-3000Y/72.5-6x5B", "WSLIV-3000Y/126-6x5B", "WSLIV-600D/12-6x5A", "WSLIV-600D/12-6x5B", "WSLIV-600D/10-7x6B", "WSLIV-600D/12-8x7B", "WSLIV-600D/12-9x8B", "WSLIV-600D/12-10x9B", "WSLIV-600D/12-11x10B", "WSLIV-600D/12-12x11B", "WSLIV-600D/12-12x11D", "WSLIV-600Y/170-14x13E", "WSLIV-1200Y/72.5-6x5D", "WSLV-400D/170-6x5B", "WSLIV-600D/72.5-12x11", "WSLIV-800Y/170-6x5B", "WSLIV-1600D/72.5-6x5B", "WSLIV-350D/72.5-10x9", "WSLIV-800Y/252-6x5A", "WSLIV-1200Y/252-6x5A", "WSLIV-1200D/12-12x11D", "WSLIV-600Y/252-6x5B", "WSLIV-800Y/252-6x5B", "WSLIV-600Y/330-6x5B", "WSLIV-800Y/330-6x5B", "WSLIV-600D/72.5-6x5A", "WSLIV-600D/72.5-6x5B", "WSLIV-600D/72.5-7x6B", "WSLIV-600D/72.5-8x7B", "WSLIV-600D/72.5-9x8B", "WSLIV-600D/72.5-10x9B", "WSLIV-600D/72.5-11x10B", "WSLIV-600D/72.5-12x11B", "WSLIV-600D/72.5-12x7D", "WSLIV-600D/126-6x5A", "WSLIV-600D/126-6x5B", "WSLIV-600D/126-7x6B", "WSLIV-600D/126-8x7B", "WSLIV-600D/126-9x8B", "WSLIV-600D/126-10x9B", "WSLIV-600D/126-11x10B", "WSLIV-600D/126-12x11B", "WSLIV-600D/170-6x5B", "WSLIV-600D/170-10x9B", "WSLIV-600D/72.5-14x13", "WSLIV-800D/12-6x5A", "WSLIV-800D/12-6x5B", "WSLIV-800D/12-7x6B", "WSLIV-800D/12-8x7B", "WSLIV-800D/12-9x8B", "WSLIV-800D/12-10x9B", "WSLIV-800D/12-11x10B", "WSLIV-800D/12-12x11B", "WSLIV-800D/72.5-6x5A", "WSLIV-800D/72.5-6x5B", "WSLIV-800D/72.5-7x6B", "WSLIV-800D/72.5-8x7B", "WSLIV-800D/72.5-9x8B", "WSLIV-800D/72.5-10x9B", "WSLIV-800D/72.5-11x10B", "WSLIV-800D/72.5-12x11B", "WSLIV-800D/126-6x5A", "WSLIV-800D/126-6x5B", "WSLIV-800D/126-7x6B", "WSLIV-800D/126-8x7B", "WSLIV-800D/126-9x8B", "WSLIV-800D/126-10x9B", "WSLIV-800D/126-11x10B", "WSLIV-800D/126-12x11B", "WSLIV-800D/170-6x5D", "WSLIV-1000D/12-6x5B", "WSLIV-1000D/12-7x6B", "WSLIV-1000D/12-8x7B", "WSLIV-1000D/12-9x8B", "WSLIV-1000D/12-10x9B", "WSLIV-1000D/12-12x11D", "WSLIV-1000D/72.5-6x5B", "WSLIV-1000D/72.5-7x6B", "WSLIV-1000D/72.5-8x7B", "WSLIV-1000D/72.5-9x8B", "WSLIV-1000D/72.5-10x9B", "WSLIV-1000D/126-6x5B", "WSLIV-1000D/126-7x6B", "WSLIV-1000D/126-8x7B", "WSLIV-1000D/126-9x8B", "WSLIV-1000D/126-10x9B", "WSLIV-1200D/12-6x5B", "WSLIV-1200D/72.5-6x5B", "WSLIV-1200D/72.5-11x10D", "WSLIV-1200D/126-6x5B", "WSLIV-1600D/12-6x5B", "WSLIV-1600D/12.5-12x8D", "WSLIV-1600D/126-6x5B", "WSLIV-1600D/126-6x6B", "WSLIV-2000D/72.5-6x5B", "WSLIV-2000D/72.5-18x17E", "WSLIV-2400Y/72.5-6x5A", "WSLIV-3000D/12-6x5B", "WSLIV-3000D/72.5-6x5B", "WDLIV-4800/362-6x5", "WDLIV-3200/145-6x5", "WDLIV-3200/252-6x5", "WDLIV-2400/252-6x5", "WDLIV-1600/126-12x11", "WDLIV-3000/72.5-6x5B", "WDLIV-2000/72.5-6x5B", "WSLV-600D/12-6x5A", "WSLV-600D/12-6x5B", "WSLV-600D/12-8x7B", "WSLV-600D/12-10x9B", "WSLV-600D/12-12x11B", "WSLV-600D/72.5-6x5A", "WSLV-600D/72.5-6x5B", "WSLV-600D/72.5-8x7B", "WSLV-600D/72.5-10x9B", "WSLV-600D/72.5-12x11B", "WSLV-600D/40.5-16x15E", "WSLV-600D/126-6x5A", "WSLV-600D/126-6x5B", "WSLV-600D/126-6x5E", "WSLV-600D/126-8x7B", "WSLV-600D/126-10x9B", "WSLV-600D/126-12x11B", "WSLV-600D/145-6x5A", "WSLV-600D/170-6x5", "WDLV-600D/252-6x5B", "WSLV-800D/12-6x5A", "WSLV-800D/12-6x5B", "WSLV-800D/12-8x7B", "WSLV-800D/12-10x9B", "WSLV-800D/12-12x11B", "WSLV-800D/72.5-6x5A", "WSLV-800D/72.5-6x5B", "WSLV-800D/72.5-8x7B", "WSLV-800D/72.5-10x9B", "WSLV-800D/72.5-12x11B", "WSLV-800D/126-6x5A", "WSLV-800D/126-6x5B", "WSLV-800D/126-8x7B", "WSLV-800D/126-10x9B", "WSLV-800D/126-12x11B", "WSLV-1000D/12-6x5B", "WSLV-1000D/12-8x7B", "WSLV-1000D/12-10x9B", "WSLV-1600D/12-6x5B", "WSLV-1000D/72.5-6x5B", "WSLV-1000D/72.5-8x7B", "WSLV-1000D/72.5-10x9B", "WSLV-1000D/126-6x5B", "WSLV-1000D/126-8x7B", "WSLV-1000D/126-10x9B", "WSLV-1200Y/126-12x11", "WSLV-1600Y/72.5-7x6B", "WDLV-1600Y/72.5-11x10D", "WSLV-2000D/12-6x5B", "WSLV-2000D/126-6x5B", "WDLV-1600D/145-6x5B", "WDLV-2000/252-6x5B", "WDLV-600/252-6x5B", "WDLV-1000/252-7x6D", "WSLV-3000D/72.5-6x5B", "WDLV-3200/252-12x11", "WSLV-600/145-6x5B", "WSLV-1600Y/12-6x5", "WSLV-2000/126-6x5B", "WSLV-1600D/72.5-6x5A", "WDLV-2500/252-6x5B", "WSLVII-600D/12-6x5A", "WSLVII-600D/12-6x5B", "WSLVII-600D/12-8x7B", "WSLVII-600D/12-10x9B", "WSLVII-600D/12-12x11B", "WSLVII-600D/72.5-6x5A", "WSLVII-600D/72.5-6x5B", "WSLVII-600D/72.5-8x7B", "WSLVII-600D/72.5-10x9B", "WSLVII-600D/72.5-12x11B", "WSLVII-600D/126-6x5A", "WSLVII-600D/126-6x5B", "WSLVII-600D/126-8x7B", "WSLVII-600D/126-10x9B", "WSLVII-600D/126-12x11B", "WSLVII-600D/300-4x3E", "WSLVII-600D/170-6x5B", "WSLVII-600D/170-6x5D", "WSLVI-2500/40.5-3x2B", "WSLVII-800D/12-6x5A", "WSLVII-800D/12-6x5B", "WSLVII-800D/12-8x7B", "WSLVII-800D/12-10x9B", "WSLVII-800D/12-12x11B", "WSLVII-800D/72.5-6x5A", "WSLVII-800D/72.5-6x5B", "WSLVII-800D/72.5-8x7B", "WSLVII-800D/72.5-10x9B", "WSLVII-800D/72.5-12x11B", "WSLVII-800D/126-6x5A", "WSLVII-800D/126-6x5B", "WSLVII-800D/126-8x7B", "WSLVII-800D/126-10x9B", "WSLVII-800D/126-12x11B", "WSLVII-1000D/12-6x5B", "WSLVII-1000D/12-8x7B", "WSLVII-1000D/12-10x9B", "WSLVII-1000D/72.5-6x5B", "WSLVII-1000D/72.5-8x7B", "WSLVII-1000D/72.5-10x9B", "WSLVII-1000D/126-6x5B", "WSLVII-1000D/126-8x7B", "WSLVII-1000D/126-10x9B", "WDLVII-1600D/145-6x5B", "WSLVII-1600D/12-6x5B", "WSLVII-2000D/12-6x5B", "WSLII-600Y/12-6x5A", "WSLII-600Y/12-6x5B", "WSLII-600Y/12-8x7B", "WSLII-600Y/12-10x9B", "WSLII-600Y/12-12x11B", "WSLII-600Y/72.5-6x5A", "WSLII-600Y/72.5-6x5B", "WSLII-600Y/72.5-8x7B", "WSLII-600Y/72.5-10x9B", "WSLII-600Y/72.5-12x11B", "WSLII-600Y/126-6x5A", "WSLII-600Y/126-6x5B", "WSLII-600Y/126-8x7B", "WSLII-600Y/126-10x9B", "WSLII-600Y/126-12x11B", "WSLII-800Y/12-6x5A", "WSLII-800Y/12-6x5B", "WSLII-800Y/12-8x7B", "WSLII-800Y/12-10x9B", "WSLII-800Y/12-12x11B", "WSLII-800Y/72.5-6x5A", "WSLII-800Y/72.5-6x5B", "WSLII-800Y/72.5-8x7B", "WSLII-800Y/72.5-10x9B", "WSLII-800Y/72.5-12x11B", "WSLII-800Y/126-6x5A", "WSLII-800Y/126-6x5B", "WSLII-800Y/126-8x7B", "WSLII-800Y/126-10x9B", "WSLII-800Y/126-12x11B", "WSLII-1000Y/12-6x5", "WSLII-1000Y/12-6x5B", "WSLII-1000Y/12-8x7B", "WSLII-1000Y/12-10x9B", "WSLII-1000Y/72.5-6x5", "WSLII-1000Y/72.5-6x5B", "WSLII-1000Y/72.5-8x7B", "WSLII-1000Y/72.5-10x9B", "WSLII-1000Y/126-6x5B", "WSLII-1000Y/126-8x7B", "WSLII-1000Y/126-10x9B", "WSLII-1200Y/12-6x5", "WSLII-1200Y/12-6x5B", "WSLII-1200Y/72.5-6x5", "WSLII-1200Y/72.5-6x5B", "WSLII-1200Y/72.5-10x9D", "WSLII-1600Y/12-6x5B", "WSLII-1600Y/72.5-6x5B", "WSLII-1600Y/145-6x5B", "WSLII-2000Y/12-6x5A", "WSLII-2000Y/40.5-6x5A", "WSLII-2000Y/72.5-11x10B", "WDLII-2400Y/252-6x5D", "WDLII-1600/252-12x11D", "WDLII-630/252-4x3", "WDLII-400/252-10x9D", "WSLII-400D/170-6x5A", "WSLII-1200D/72.5-10x9B", "WSLII-1000D/72.5-10x9B", "WSLII-600D/12-6x5A", "WSLII-600D/12-6x5B", "WSLII-600D/12-8x7B", "WSLII-600D/12-10x9B", "WSLII-600D/12-12x11B", "WSLII-600D/72.5-6x5A", "WSLII-600D/72.5-6x5B", "WSLII-600D/72.5-8x7B", "WSLII-600D/72.5-10x9B", "WSLII-600D/72.5-12x11B", "WSLII-600D/126-6x5A", "WSLII-600D/126-6x5B", "WSLII-600D/126-8x7B", "WSLII-600D/126-10x9B", "WSLII-600D/126-12x11B", "WSLII-600D/170-6x5D", "WSLII-800D/12-6x5A", "WSLII-800D/12-6x5B", "WSLII-800D/12-8x7B", "WSLII-800D/12-10x9B", "WSLII-800D/12-12x11B", "WSLII-800D/72.5-6x5A", "WSLII-800D/72.5-6x5B", "WSLII-800D/72.5-8x7B", "WSLII-800D/72.5-10x9B", "WSLII-800D/72.5-12x11B", "WSLII-800D/126-6x5A", "WSLII-800D/126-6x5B", "WSLII-800D/126-8x7B", "WSLII-800D/126-10x9B", "WSLII-800D/126-12x11B", "WSLII-800D/170-6x5B", "WSLII-1000D/12-6x5B", "WSLII-1000D/12-8x7B", "WSLII-1000D/12-10x9B", "WSLII-1000D/72.5-6x5B", "WSLII-1000D/72.5-8x7B", "WDLII-4000/72.5-6x5B", "WSLII-1000D/126-6x5B", "WSLII-1000D/126-8x7B", "WSLII-1000D/126-10x9B", "WSLII-1000D/170-6x5B", "WDLII-2400/126-10x9D", "WSLVI-600/12-3x2A", "WSLVI-600/12-3x2B", "WSLVI-600/72.5-3x2A", "WSLVI-600/72.5-3x2B", "WSLVI-1600/72.5-6x2B", "WSLVI-600/252-6x2C", "WDLVI-600/252-6x2C", "WSLVI-800/12-3x2A", "WSLVI-800/12-3x2B", "WSLVI-800/72.5-3x2A", "WSLVI-800/72.5-3x2B", "WSLVI-1000/12-3x2B", "WSLVI-1000/72.5-3x2B", "WSLVI-2000/72.5-3x2B", "WSLVI-3000/72.5-3x2B", "WSLVIII-600/12-5x2A", "WSLVIII-600/12-5x2B", "WSLVIII-600/72.5-5x2A", "WSLVIII-600/72.5-5x2B", "WSLVIII-600/126-5x2A", "WSLVIII-600/126-5x2B", "WSLVIII-600/126-5x2E", "WSLVIII-600/252-5x2B", "WDLVIII-600/252-5x2D", "WDLVIII-600/252-5x2E", "WSLVIII-800/12-5x2A", "WSLVIII-800/12-5x2B", "WSLVIII-800/72.5-5x2A", "WSLVIII-800/72.5-5x2B", "WSLVIII-800/72.5-12x2D", "WSLVIII-800/126-5x2A", "WSLVIII-800/126-5x2B", "WSLVIII-1000/12-5x2B", "WSLVIII-1000/72.5-5x2B", "WSLVIII-1000/126-5x2B", "WSLVIII-1200/72.5-5x2B", "WSLVIII-2000/72.5-12x2D", "WSLVIII-2000/72.5-5x2B", "WDLVIII-2000/126-5x2B", "WSLVIII-2000/40.5-5x2B", "WSLVIII-2000/126-5x2B", "WDLVIII-2400/126-5x2B", "WSLVIII-1600/72.5-3x2B"], octc: [{ family: "WSL", phases: "IV", currentA: 600, connection: "Y", umKv: 12, selectorSize: "A", tapCode: "6x5", listKey: "WSLIV-600Y/12-6x5A" }, { family: "WSL", phases: "IV", currentA: 600, connection: "Y", umKv: 12, selectorSize: "B", tapCode: "6x5", listKey: "WSLIV-600Y/12-6x5B" }, { family: "WSL", phases: "IV", currentA: 600, connection: "Y", umKv: 12, selectorSize: "B", tapCode: "7x6", listKey: "WSLIV-600Y/12-7x6B" }, { family: "WSL", phases: "IV", currentA: 600, connection: "Y", umKv: 12, selectorSize: "B", tapCode: "8x7", listKey: "WSLIV-600Y/12-8x7B" }, { family: "WSL", phases: "IV", currentA: 600, connection: "Y", umKv: 12, selectorSize: "B", tapCode: "9x8", listKey: "WSLIV-600Y/12-9x8B" }, { family: "WSL", phases: "IV", currentA: 600, connection: "Y", umKv: 12, selectorSize: "B", tapCode: "10x9", listKey: "WSLIV-600Y/12-10x9B" }, { family: "WSL", phases: "IV", currentA: 600, connection: "Y", umKv: 12, selectorSize: "B", tapCode: "11x10", listKey: "WSLIV-600Y/12-11x10B" }, { family: "WSL", phases: "IV", currentA: 600, connection: "Y", umKv: 12, selectorSize: "B", tapCode: "12x11", listKey: "WSLIV-600Y/12-12x11B" }, { family: "WSL", phases: "IV", currentA: 600, connection: "Y", umKv: 12, selectorSize: "E", tapCode: "18x17", listKey: "WSLIV-600Y/12-18x17E" }, { family: "WSL", phases: "IV", currentA: 600, connection: "Y", umKv: 72.5, selectorSize: "A", tapCode: "6x5", listKey: "WSLIV-600Y/72.5-6x5A" }, { family: "WSL", phases: "IV", currentA: 600, connection: "Y", umKv: 72.5, selectorSize: "B", tapCode: "6x5", listKey: "WSLIV-600Y/72.5-6x5B" }, { family: "WSL", phases: "IV", currentA: 600, connection: "Y", umKv: 72.5, selectorSize: "B", tapCode: "7x6", listKey: "WSLIV-600Y/72.5-7x6B" }, { family: "WSL", phases: "IV", currentA: 600, connection: "Y", umKv: 72.5, selectorSize: "B", tapCode: "8x7", listKey: "WSLIV-600Y/72.5-8x7B" }, { family: "WSL", phases: "IV", currentA: 600, connection: "Y", umKv: 72.5, selectorSize: "B", tapCode: "9x8", listKey: "WSLIV-600Y/72.5-9x8B" }, { family: "WSL", phases: "IV", currentA: 600, connection: "Y", umKv: 72.5, selectorSize: "B", tapCode: "10x9", listKey: "WSLIV-600Y/72.5-10x9B" }, { family: "WSL", phases: "IV", currentA: 600, connection: "Y", umKv: 72.5, selectorSize: "B", tapCode: "11x10", listKey: "WSLIV-600Y/72.5-11x10B" }, { family: "WSL", phases: "IV", currentA: 600, connection: "Y", umKv: 72.5, selectorSize: "B", tapCode: "12x11", listKey: "WSLIV-600Y/72.5-12x11B" }, { family: "WSL", phases: "IV", currentA: 600, connection: "Y", umKv: 126, selectorSize: "A", tapCode: "6x5", listKey: "WSLIV-600Y/126-6x5A" }, { family: "WSL", phases: "IV", currentA: 600, connection: "Y", umKv: 126, selectorSize: "B", tapCode: "6x5", listKey: "WSLIV-600Y/126-6x5B" }, { family: "WSL", phases: "IV", currentA: 600, connection: "Y", umKv: 126, selectorSize: "B", tapCode: "7x6", listKey: "WSLIV-600Y/126-7x6B" }, { family: "WSL", phases: "IV", currentA: 600, connection: "Y", umKv: 126, selectorSize: "B", tapCode: "8x7", listKey: "WSLIV-600Y/126-8x7B" }, { family: "WSL", phases: "IV", currentA: 600, connection: "Y", umKv: 126, selectorSize: "E", tapCode: "8x7", listKey: "WSLIV-600Y/126-8x7E" }, { family: "WSL", phases: "IV", currentA: 600, connection: "Y", umKv: 126, selectorSize: "B", tapCode: "9x8", listKey: "WSLIV-600Y/126-9x8B" }, { family: "WSL", phases: "IV", currentA: 600, connection: "Y", umKv: 126, selectorSize: "B", tapCode: "10x9", listKey: "WSLIV-600Y/126-10x9B" }, { family: "WSL", phases: "IV", currentA: 600, connection: "Y", umKv: 126, selectorSize: "B", tapCode: "11x10", listKey: "WSLIV-600Y/126-11x10B" }, { family: "WSL", phases: "IV", currentA: 600, connection: "Y", umKv: 126, selectorSize: "B", tapCode: "12x11", listKey: "WSLIV-600Y/126-12x11B" }, { family: "WSL", phases: "IV", currentA: 600, connection: "Y", umKv: 145, selectorSize: "E", tapCode: "18x17", listKey: "WSLIV-600Y/145-18x17E" }, { family: "WSL", phases: "IV", currentA: 600, connection: "Y", umKv: 170, selectorSize: "B", tapCode: "6x5", listKey: "WSLIV-600Y/170-6x5B" }, { family: "WSL", phases: "IV", currentA: 600, connection: "Y", umKv: 252, selectorSize: "", tapCode: "6x5", listKey: "WSLIV-600Y/252-6x5" }, { family: "WSL", phases: "IV", currentA: 800, connection: "Y", umKv: 12, selectorSize: "A", tapCode: "6x5", listKey: "WSLIV-800Y/12-6x5A" }, { family: "WSL", phases: "IV", currentA: 800, connection: "Y", umKv: 12, selectorSize: "B", tapCode: "6x5", listKey: "WSLIV-800Y/12-6x5B" }, { family: "WSL", phases: "IV", currentA: 800, connection: "Y", umKv: 12, selectorSize: "B", tapCode: "7x6", listKey: "WSLIV-800Y/12-7x6B" }, { family: "WSL", phases: "IV", currentA: 800, connection: "Y", umKv: 12, selectorSize: "B", tapCode: "8x7", listKey: "WSLIV-800Y/12-8x7B" }, { family: "WSL", phases: "IV", currentA: 800, connection: "Y", umKv: 12, selectorSize: "B", tapCode: "9x8", listKey: "WSLIV-800Y/12-9x8B" }, { family: "WSL", phases: "IV", currentA: 800, connection: "Y", umKv: 12, selectorSize: "B", tapCode: "10x9", listKey: "WSLIV-800Y/12-10x9B" }, { family: "WSL", phases: "IV", currentA: 800, connection: "Y", umKv: 12, selectorSize: "B", tapCode: "11x10", listKey: "WSLIV-800Y/12-11x10B" }, { family: "WSL", phases: "IV", currentA: 800, connection: "Y", umKv: 12, selectorSize: "B", tapCode: "12x11", listKey: "WSLIV-800Y/12-12x11B" }, { family: "WSL", phases: "IV", currentA: 800, connection: "Y", umKv: 72.5, selectorSize: "A", tapCode: "6x5", listKey: "WSLIV-800Y/72.5-6x5A" }, { family: "WSL", phases: "IV", currentA: 800, connection: "Y", umKv: 72.5, selectorSize: "B", tapCode: "6x5", listKey: "WSLIV-800Y/72.5-6x5B" }, { family: "WSL", phases: "IV", currentA: 800, connection: "Y", umKv: 72.5, selectorSize: "B", tapCode: "7x6", listKey: "WSLIV-800Y/72.5-7x6B" }, { family: "WSL", phases: "IV", currentA: 800, connection: "Y", umKv: 72.5, selectorSize: "B", tapCode: "8x7", listKey: "WSLIV-800Y/72.5-8x7B" }, { family: "WSL", phases: "IV", currentA: 800, connection: "Y", umKv: 72.5, selectorSize: "B", tapCode: "9x8", listKey: "WSLIV-800Y/72.5-9x8B" }, { family: "WSL", phases: "IV", currentA: 800, connection: "Y", umKv: 72.5, selectorSize: "B", tapCode: "10x9", listKey: "WSLIV-800Y/72.5-10x9B" }, { family: "WSL", phases: "IV", currentA: 800, connection: "Y", umKv: 72.5, selectorSize: "B", tapCode: "11x10", listKey: "WSLIV-800Y/72.5-11x10B" }, { family: "WSL", phases: "IV", currentA: 800, connection: "Y", umKv: 72.5, selectorSize: "B", tapCode: "12x11", listKey: "WSLIV-800Y/72.5-12x11B" }, { family: "WSL", phases: "IV", currentA: 800, connection: "Y", umKv: 72.5, selectorSize: "E", tapCode: "18x17", listKey: "WSLIV-800Y/72.5-18x17E" }, { family: "WDL", phases: "IV", currentA: 800, connection: "Y", umKv: 72.5, selectorSize: "D", tapCode: "8x7", listKey: "WDLIV-800Y/72.5-8x7D" }, { family: "WSL", phases: "IV", currentA: 800, connection: "Y", umKv: 126, selectorSize: "A", tapCode: "6x5", listKey: "WSLIV-800Y/126-6x5A" }, { family: "WSL", phases: "IV", currentA: 800, connection: "Y", umKv: 126, selectorSize: "B", tapCode: "6x5", listKey: "WSLIV-800Y/126-6x5B" }, { family: "WSL", phases: "IV", currentA: 800, connection: "Y", umKv: 126, selectorSize: "B", tapCode: "7x6", listKey: "WSLIV-800Y/126-7x6B" }, { family: "WSL", phases: "IV", currentA: 800, connection: "Y", umKv: 126, selectorSize: "B", tapCode: "8x7", listKey: "WSLIV-800Y/126-8x7B" }, { family: "WSL", phases: "IV", currentA: 800, connection: "Y", umKv: 126, selectorSize: "B", tapCode: "9x8", listKey: "WSLIV-800Y/126-9x8B" }, { family: "WSL", phases: "IV", currentA: 800, connection: "Y", umKv: 126, selectorSize: "B", tapCode: "10x9", listKey: "WSLIV-800Y/126-10x9B" }, { family: "WSL", phases: "IV", currentA: 800, connection: "Y", umKv: 126, selectorSize: "B", tapCode: "11x10", listKey: "WSLIV-800Y/126-11x10B" }, { family: "WSL", phases: "IV", currentA: 800, connection: "Y", umKv: 126, selectorSize: "B", tapCode: "12x11", listKey: "WSLIV-800Y/126-12x11B" }, { family: "WSL", phases: "IV", currentA: 1e3, connection: "Y", umKv: 12, selectorSize: "B", tapCode: "6x5", listKey: "WSLIV-1000Y/12-6x5B" }, { family: "WSL", phases: "IV", currentA: 1e3, connection: "Y", umKv: 12, selectorSize: "B", tapCode: "7x6", listKey: "WSLIV-1000Y/12-7x6B" }, { family: "WSL", phases: "IV", currentA: 1e3, connection: "Y", umKv: 12, selectorSize: "B", tapCode: "8x7", listKey: "WSLIV-1000Y/12-8x7B" }, { family: "WSL", phases: "IV", currentA: 1e3, connection: "Y", umKv: 12, selectorSize: "B", tapCode: "9x8", listKey: "WSLIV-1000Y/12-9x8B" }, { family: "WSL", phases: "IV", currentA: 1e3, connection: "Y", umKv: 12, selectorSize: "B", tapCode: "10x9", listKey: "WSLIV-1000Y/12-10x9B" }, { family: "WSL", phases: "IV", currentA: 1e3, connection: "Y", umKv: 72.5, selectorSize: "B", tapCode: "6x5", listKey: "WSLIV-1000Y/72.5-6x5B" }, { family: "WSL", phases: "IV", currentA: 1e3, connection: "Y", umKv: 72.5, selectorSize: "B", tapCode: "7x6", listKey: "WSLIV-1000Y/72.5-7x6B" }, { family: "WSL", phases: "IV", currentA: 1e3, connection: "Y", umKv: 72.5, selectorSize: "B", tapCode: "8x7", listKey: "WSLIV-1000Y/72.5-8x7B" }, { family: "WSL", phases: "IV", currentA: 1e3, connection: "Y", umKv: 72.5, selectorSize: "B", tapCode: "9x8", listKey: "WSLIV-1000Y/72.5-9x8B" }, { family: "WSL", phases: "IV", currentA: 1e3, connection: "Y", umKv: 72.5, selectorSize: "B", tapCode: "10x9", listKey: "WSLIV-1000Y/72.5-10x9B" }, { family: "WSL", phases: "IV", currentA: 1e3, connection: "Y", umKv: 126, selectorSize: "B", tapCode: "6x5", listKey: "WSLIV-1000Y/126-6x5B" }, { family: "WSL", phases: "IV", currentA: 1e3, connection: "Y", umKv: 126, selectorSize: "B", tapCode: "7x6", listKey: "WSLIV-1000Y/126-7x6B" }, { family: "WSL", phases: "IV", currentA: 1e3, connection: "Y", umKv: 126, selectorSize: "B", tapCode: "8x7", listKey: "WSLIV-1000Y/126-8x7B" }, { family: "WSL", phases: "IV", currentA: 1e3, connection: "Y", umKv: 126, selectorSize: "B", tapCode: "9x8", listKey: "WSLIV-1000Y/126-9x8B" }, { family: "WSL", phases: "IV", currentA: 1e3, connection: "Y", umKv: 126, selectorSize: "B", tapCode: "10x9", listKey: "WSLIV-1000Y/126-10x9B" }, { family: "WSL", phases: "IV", currentA: 1e3, connection: "Y", umKv: 170, selectorSize: "", tapCode: "6x5", listKey: "WSLIV-1000Y/170-6x5" }, { family: "WSL", phases: "IV", currentA: 1e3, connection: "Y", umKv: 252, selectorSize: "", tapCode: "3x2", listKey: "WSLIV-1000Y/252-3x2" }, { family: "WSL", phases: "IV", currentA: 1e3, connection: "Y", umKv: 252, selectorSize: "", tapCode: "6x5", listKey: "WSLIV-1000Y/252-6x5" }, { family: "WSL", phases: "IV", currentA: 1200, connection: "Y", umKv: 12, selectorSize: "B", tapCode: "6x5", listKey: "WSLIV-1200Y/12-6x5B" }, { family: "WSL", phases: "IV", currentA: 1200, connection: "Y", umKv: 12, selectorSize: "E", tapCode: "14x13", listKey: "WSLIV-1200Y/12-14x13E" }, { family: "WSL", phases: "IV", currentA: 1200, connection: "Y", umKv: 40.5, selectorSize: "D", tapCode: "12x11", listKey: "WSLIV-1200Y/40.5-12x11D" }, { family: "WSL", phases: "IV", currentA: 1200, connection: "Y", umKv: 72.5, selectorSize: "B", tapCode: "6x5", listKey: "WSLIV-1200Y/72.5-6x5B" }, { family: "WSL", phases: "IV", currentA: 1200, connection: "Y", umKv: 126, selectorSize: "B", tapCode: "6x5", listKey: "WSLIV-1200Y/126-6x5B" }, { family: "WSL", phases: "IV", currentA: 1200, connection: "Y", umKv: 145, selectorSize: "D", tapCode: "10x9", listKey: "WSLIV-1200Y/145-10x9D" }, { family: "WSL", phases: "IV", currentA: 1600, connection: "Y", umKv: 12, selectorSize: "B", tapCode: "6x5", listKey: "WSLIV-1600Y/12-6x5B" }, { family: "WSL", phases: "IV", currentA: 1600, connection: "Y", umKv: 72.5, selectorSize: "B", tapCode: "6x5", listKey: "WSLIV-1600Y/72.5-6x5B" }, { family: "WDL", phases: "IV", currentA: 1600, connection: "Y", umKv: 72.5, selectorSize: "D", tapCode: "11x10", listKey: "WDLIV-1600Y/72.5-11x10D" }, { family: "WSL", phases: "IV", currentA: 1600, connection: "Y", umKv: 126, selectorSize: "B", tapCode: "6x5", listKey: "WSLIV-1600Y/126-6x5B" }, { family: "WSL", phases: "IV", currentA: 1600, connection: "Y", umKv: 145, selectorSize: "B", tapCode: "6x5", listKey: "WSLIV-1600Y/145-6x5B" }, { family: "WDL", phases: "IV", currentA: 1600, connection: "", umKv: 252, selectorSize: "B", tapCode: "6x5", listKey: "WDLIV-1600/252-6x5B" }, { family: "WDL", phases: "IV", currentA: 1600, connection: "", umKv: 362, selectorSize: "B", tapCode: "6x5", listKey: "WDLIV-1600/362-6x5B" }, { family: "WSL", phases: "IV", currentA: 2e3, connection: "Y", umKv: 12, selectorSize: "B", tapCode: "6x5", listKey: "WSLIV-2000Y/12-6x5B" }, { family: "WSL", phases: "IV", currentA: 2e3, connection: "Y", umKv: 72.5, selectorSize: "B", tapCode: "6x5", listKey: "WSLIV-2000Y/72.5-6x5B" }, { family: "WSL", phases: "IV", currentA: 2e3, connection: "Y", umKv: 126, selectorSize: "B", tapCode: "6x5", listKey: "WSLIV-2000Y/126-6x5B" }, { family: "WSL", phases: "IV", currentA: 2400, connection: "Y", umKv: 12, selectorSize: "B", tapCode: "6x5", listKey: "WSLIV-2400Y/12-6x5B" }, { family: "WSL", phases: "IV", currentA: 2400, connection: "Y", umKv: 72.5, selectorSize: "B", tapCode: "6x5", listKey: "WSLIV-2400Y/72.5-6x5B" }, { family: "WSL", phases: "IV", currentA: 2400, connection: "Y", umKv: 126, selectorSize: "B", tapCode: "6x5", listKey: "WSLIV-2400Y/126-6x5B" }, { family: "WSL", phases: "IV", currentA: 3e3, connection: "Y", umKv: 12, selectorSize: "B", tapCode: "6x5", listKey: "WSLIV-3000Y/12-6x5B" }, { family: "WSL", phases: "IV", currentA: 3e3, connection: "Y", umKv: 72.5, selectorSize: "B", tapCode: "6x5", listKey: "WSLIV-3000Y/72.5-6x5B" }, { family: "WSL", phases: "IV", currentA: 3e3, connection: "Y", umKv: 126, selectorSize: "B", tapCode: "6x5", listKey: "WSLIV-3000Y/126-6x5B" }, { family: "WSL", phases: "IV", currentA: 600, connection: "D", umKv: 12, selectorSize: "A", tapCode: "6x5", listKey: "WSLIV-600D/12-6x5A" }, { family: "WSL", phases: "IV", currentA: 600, connection: "D", umKv: 12, selectorSize: "B", tapCode: "6x5", listKey: "WSLIV-600D/12-6x5B" }, { family: "WSL", phases: "IV", currentA: 600, connection: "D", umKv: 10, selectorSize: "B", tapCode: "7x6", listKey: "WSLIV-600D/10-7x6B" }, { family: "WSL", phases: "IV", currentA: 600, connection: "D", umKv: 12, selectorSize: "B", tapCode: "8x7", listKey: "WSLIV-600D/12-8x7B" }, { family: "WSL", phases: "IV", currentA: 600, connection: "D", umKv: 12, selectorSize: "B", tapCode: "9x8", listKey: "WSLIV-600D/12-9x8B" }, { family: "WSL", phases: "IV", currentA: 600, connection: "D", umKv: 12, selectorSize: "B", tapCode: "10x9", listKey: "WSLIV-600D/12-10x9B" }, { family: "WSL", phases: "IV", currentA: 600, connection: "D", umKv: 12, selectorSize: "B", tapCode: "11x10", listKey: "WSLIV-600D/12-11x10B" }, { family: "WSL", phases: "IV", currentA: 600, connection: "D", umKv: 12, selectorSize: "B", tapCode: "12x11", listKey: "WSLIV-600D/12-12x11B" }, { family: "WSL", phases: "IV", currentA: 600, connection: "D", umKv: 12, selectorSize: "D", tapCode: "12x11", listKey: "WSLIV-600D/12-12x11D" }, { family: "WSL", phases: "IV", currentA: 600, connection: "Y", umKv: 170, selectorSize: "E", tapCode: "14x13", listKey: "WSLIV-600Y/170-14x13E" }, { family: "WSL", phases: "IV", currentA: 1200, connection: "Y", umKv: 72.5, selectorSize: "D", tapCode: "6x5", listKey: "WSLIV-1200Y/72.5-6x5D" }, { family: "WSL", phases: "V", currentA: 400, connection: "D", umKv: 170, selectorSize: "B", tapCode: "6x5", listKey: "WSLV-400D/170-6x5B" }, { family: "WSL", phases: "IV", currentA: 600, connection: "D", umKv: 72.5, selectorSize: "", tapCode: "12x11", listKey: "WSLIV-600D/72.5-12x11" }, { family: "WSL", phases: "IV", currentA: 800, connection: "Y", umKv: 170, selectorSize: "B", tapCode: "6x5", listKey: "WSLIV-800Y/170-6x5B" }, { family: "WSL", phases: "IV", currentA: 1600, connection: "D", umKv: 72.5, selectorSize: "B", tapCode: "6x5", listKey: "WSLIV-1600D/72.5-6x5B" }, { family: "WSL", phases: "IV", currentA: 350, connection: "D", umKv: 72.5, selectorSize: "", tapCode: "10x9", listKey: "WSLIV-350D/72.5-10x9" }, { family: "WSL", phases: "IV", currentA: 800, connection: "Y", umKv: 252, selectorSize: "A", tapCode: "6x5", listKey: "WSLIV-800Y/252-6x5A" }, { family: "WSL", phases: "IV", currentA: 1200, connection: "Y", umKv: 252, selectorSize: "A", tapCode: "6x5", listKey: "WSLIV-1200Y/252-6x5A" }, { family: "WSL", phases: "IV", currentA: 1200, connection: "D", umKv: 12, selectorSize: "D", tapCode: "12x11", listKey: "WSLIV-1200D/12-12x11D" }, { family: "WSL", phases: "IV", currentA: 600, connection: "Y", umKv: 252, selectorSize: "B", tapCode: "6x5", listKey: "WSLIV-600Y/252-6x5B" }, { family: "WSL", phases: "IV", currentA: 800, connection: "Y", umKv: 252, selectorSize: "B", tapCode: "6x5", listKey: "WSLIV-800Y/252-6x5B" }, { family: "WSL", phases: "IV", currentA: 600, connection: "Y", umKv: 330, selectorSize: "B", tapCode: "6x5", listKey: "WSLIV-600Y/330-6x5B" }, { family: "WSL", phases: "IV", currentA: 800, connection: "Y", umKv: 330, selectorSize: "B", tapCode: "6x5", listKey: "WSLIV-800Y/330-6x5B" }, { family: "WSL", phases: "IV", currentA: 600, connection: "D", umKv: 72.5, selectorSize: "A", tapCode: "6x5", listKey: "WSLIV-600D/72.5-6x5A" }, { family: "WSL", phases: "IV", currentA: 600, connection: "D", umKv: 72.5, selectorSize: "B", tapCode: "6x5", listKey: "WSLIV-600D/72.5-6x5B" }, { family: "WSL", phases: "IV", currentA: 600, connection: "D", umKv: 72.5, selectorSize: "B", tapCode: "7x6", listKey: "WSLIV-600D/72.5-7x6B" }, { family: "WSL", phases: "IV", currentA: 600, connection: "D", umKv: 72.5, selectorSize: "B", tapCode: "8x7", listKey: "WSLIV-600D/72.5-8x7B" }, { family: "WSL", phases: "IV", currentA: 600, connection: "D", umKv: 72.5, selectorSize: "B", tapCode: "9x8", listKey: "WSLIV-600D/72.5-9x8B" }, { family: "WSL", phases: "IV", currentA: 600, connection: "D", umKv: 72.5, selectorSize: "B", tapCode: "10x9", listKey: "WSLIV-600D/72.5-10x9B" }, { family: "WSL", phases: "IV", currentA: 600, connection: "D", umKv: 72.5, selectorSize: "B", tapCode: "11x10", listKey: "WSLIV-600D/72.5-11x10B" }, { family: "WSL", phases: "IV", currentA: 600, connection: "D", umKv: 72.5, selectorSize: "B", tapCode: "12x11", listKey: "WSLIV-600D/72.5-12x11B" }, { family: "WSL", phases: "IV", currentA: 600, connection: "D", umKv: 72.5, selectorSize: "D", tapCode: "12x7", listKey: "WSLIV-600D/72.5-12x7D" }, { family: "WSL", phases: "IV", currentA: 600, connection: "D", umKv: 126, selectorSize: "A", tapCode: "6x5", listKey: "WSLIV-600D/126-6x5A" }, { family: "WSL", phases: "IV", currentA: 600, connection: "D", umKv: 126, selectorSize: "B", tapCode: "6x5", listKey: "WSLIV-600D/126-6x5B" }, { family: "WSL", phases: "IV", currentA: 600, connection: "D", umKv: 126, selectorSize: "B", tapCode: "7x6", listKey: "WSLIV-600D/126-7x6B" }, { family: "WSL", phases: "IV", currentA: 600, connection: "D", umKv: 126, selectorSize: "B", tapCode: "8x7", listKey: "WSLIV-600D/126-8x7B" }, { family: "WSL", phases: "IV", currentA: 600, connection: "D", umKv: 126, selectorSize: "B", tapCode: "9x8", listKey: "WSLIV-600D/126-9x8B" }, { family: "WSL", phases: "IV", currentA: 600, connection: "D", umKv: 126, selectorSize: "B", tapCode: "10x9", listKey: "WSLIV-600D/126-10x9B" }, { family: "WSL", phases: "IV", currentA: 600, connection: "D", umKv: 126, selectorSize: "B", tapCode: "11x10", listKey: "WSLIV-600D/126-11x10B" }, { family: "WSL", phases: "IV", currentA: 600, connection: "D", umKv: 126, selectorSize: "B", tapCode: "12x11", listKey: "WSLIV-600D/126-12x11B" }, { family: "WSL", phases: "IV", currentA: 600, connection: "D", umKv: 170, selectorSize: "B", tapCode: "6x5", listKey: "WSLIV-600D/170-6x5B" }, { family: "WSL", phases: "IV", currentA: 600, connection: "D", umKv: 170, selectorSize: "B", tapCode: "10x9", listKey: "WSLIV-600D/170-10x9B" }, { family: "WSL", phases: "IV", currentA: 600, connection: "D", umKv: 72.5, selectorSize: "", tapCode: "14x13", listKey: "WSLIV-600D/72.5-14x13" }, { family: "WSL", phases: "IV", currentA: 800, connection: "D", umKv: 12, selectorSize: "A", tapCode: "6x5", listKey: "WSLIV-800D/12-6x5A" }, { family: "WSL", phases: "IV", currentA: 800, connection: "D", umKv: 12, selectorSize: "B", tapCode: "6x5", listKey: "WSLIV-800D/12-6x5B" }, { family: "WSL", phases: "IV", currentA: 800, connection: "D", umKv: 12, selectorSize: "B", tapCode: "7x6", listKey: "WSLIV-800D/12-7x6B" }, { family: "WSL", phases: "IV", currentA: 800, connection: "D", umKv: 12, selectorSize: "B", tapCode: "8x7", listKey: "WSLIV-800D/12-8x7B" }, { family: "WSL", phases: "IV", currentA: 800, connection: "D", umKv: 12, selectorSize: "B", tapCode: "9x8", listKey: "WSLIV-800D/12-9x8B" }, { family: "WSL", phases: "IV", currentA: 800, connection: "D", umKv: 12, selectorSize: "B", tapCode: "10x9", listKey: "WSLIV-800D/12-10x9B" }, { family: "WSL", phases: "IV", currentA: 800, connection: "D", umKv: 12, selectorSize: "B", tapCode: "11x10", listKey: "WSLIV-800D/12-11x10B" }, { family: "WSL", phases: "IV", currentA: 800, connection: "D", umKv: 12, selectorSize: "B", tapCode: "12x11", listKey: "WSLIV-800D/12-12x11B" }, { family: "WSL", phases: "IV", currentA: 800, connection: "D", umKv: 72.5, selectorSize: "A", tapCode: "6x5", listKey: "WSLIV-800D/72.5-6x5A" }, { family: "WSL", phases: "IV", currentA: 800, connection: "D", umKv: 72.5, selectorSize: "B", tapCode: "6x5", listKey: "WSLIV-800D/72.5-6x5B" }, { family: "WSL", phases: "IV", currentA: 800, connection: "D", umKv: 72.5, selectorSize: "B", tapCode: "7x6", listKey: "WSLIV-800D/72.5-7x6B" }, { family: "WSL", phases: "IV", currentA: 800, connection: "D", umKv: 72.5, selectorSize: "B", tapCode: "8x7", listKey: "WSLIV-800D/72.5-8x7B" }, { family: "WSL", phases: "IV", currentA: 800, connection: "D", umKv: 72.5, selectorSize: "B", tapCode: "9x8", listKey: "WSLIV-800D/72.5-9x8B" }, { family: "WSL", phases: "IV", currentA: 800, connection: "D", umKv: 72.5, selectorSize: "B", tapCode: "10x9", listKey: "WSLIV-800D/72.5-10x9B" }, { family: "WSL", phases: "IV", currentA: 800, connection: "D", umKv: 72.5, selectorSize: "B", tapCode: "11x10", listKey: "WSLIV-800D/72.5-11x10B" }, { family: "WSL", phases: "IV", currentA: 800, connection: "D", umKv: 72.5, selectorSize: "B", tapCode: "12x11", listKey: "WSLIV-800D/72.5-12x11B" }, { family: "WSL", phases: "IV", currentA: 800, connection: "D", umKv: 126, selectorSize: "A", tapCode: "6x5", listKey: "WSLIV-800D/126-6x5A" }, { family: "WSL", phases: "IV", currentA: 800, connection: "D", umKv: 126, selectorSize: "B", tapCode: "6x5", listKey: "WSLIV-800D/126-6x5B" }, { family: "WSL", phases: "IV", currentA: 800, connection: "D", umKv: 126, selectorSize: "B", tapCode: "7x6", listKey: "WSLIV-800D/126-7x6B" }, { family: "WSL", phases: "IV", currentA: 800, connection: "D", umKv: 126, selectorSize: "B", tapCode: "8x7", listKey: "WSLIV-800D/126-8x7B" }, { family: "WSL", phases: "IV", currentA: 800, connection: "D", umKv: 126, selectorSize: "B", tapCode: "9x8", listKey: "WSLIV-800D/126-9x8B" }, { family: "WSL", phases: "IV", currentA: 800, connection: "D", umKv: 126, selectorSize: "B", tapCode: "10x9", listKey: "WSLIV-800D/126-10x9B" }, { family: "WSL", phases: "IV", currentA: 800, connection: "D", umKv: 126, selectorSize: "B", tapCode: "11x10", listKey: "WSLIV-800D/126-11x10B" }, { family: "WSL", phases: "IV", currentA: 800, connection: "D", umKv: 126, selectorSize: "B", tapCode: "12x11", listKey: "WSLIV-800D/126-12x11B" }, { family: "WSL", phases: "IV", currentA: 800, connection: "D", umKv: 170, selectorSize: "D", tapCode: "6x5", listKey: "WSLIV-800D/170-6x5D" }, { family: "WSL", phases: "IV", currentA: 1e3, connection: "D", umKv: 12, selectorSize: "B", tapCode: "6x5", listKey: "WSLIV-1000D/12-6x5B" }, { family: "WSL", phases: "IV", currentA: 1e3, connection: "D", umKv: 12, selectorSize: "B", tapCode: "7x6", listKey: "WSLIV-1000D/12-7x6B" }, { family: "WSL", phases: "IV", currentA: 1e3, connection: "D", umKv: 12, selectorSize: "B", tapCode: "8x7", listKey: "WSLIV-1000D/12-8x7B" }, { family: "WSL", phases: "IV", currentA: 1e3, connection: "D", umKv: 12, selectorSize: "B", tapCode: "9x8", listKey: "WSLIV-1000D/12-9x8B" }, { family: "WSL", phases: "IV", currentA: 1e3, connection: "D", umKv: 12, selectorSize: "B", tapCode: "10x9", listKey: "WSLIV-1000D/12-10x9B" }, { family: "WSL", phases: "IV", currentA: 1e3, connection: "D", umKv: 12, selectorSize: "D", tapCode: "12x11", listKey: "WSLIV-1000D/12-12x11D" }, { family: "WSL", phases: "IV", currentA: 1e3, connection: "D", umKv: 72.5, selectorSize: "B", tapCode: "6x5", listKey: "WSLIV-1000D/72.5-6x5B" }, { family: "WSL", phases: "IV", currentA: 1e3, connection: "D", umKv: 72.5, selectorSize: "B", tapCode: "7x6", listKey: "WSLIV-1000D/72.5-7x6B" }, { family: "WSL", phases: "IV", currentA: 1e3, connection: "D", umKv: 72.5, selectorSize: "B", tapCode: "8x7", listKey: "WSLIV-1000D/72.5-8x7B" }, { family: "WSL", phases: "IV", currentA: 1e3, connection: "D", umKv: 72.5, selectorSize: "B", tapCode: "9x8", listKey: "WSLIV-1000D/72.5-9x8B" }, { family: "WSL", phases: "IV", currentA: 1e3, connection: "D", umKv: 72.5, selectorSize: "B", tapCode: "10x9", listKey: "WSLIV-1000D/72.5-10x9B" }, { family: "WSL", phases: "IV", currentA: 1e3, connection: "D", umKv: 126, selectorSize: "B", tapCode: "6x5", listKey: "WSLIV-1000D/126-6x5B" }, { family: "WSL", phases: "IV", currentA: 1e3, connection: "D", umKv: 126, selectorSize: "B", tapCode: "7x6", listKey: "WSLIV-1000D/126-7x6B" }, { family: "WSL", phases: "IV", currentA: 1e3, connection: "D", umKv: 126, selectorSize: "B", tapCode: "8x7", listKey: "WSLIV-1000D/126-8x7B" }, { family: "WSL", phases: "IV", currentA: 1e3, connection: "D", umKv: 126, selectorSize: "B", tapCode: "9x8", listKey: "WSLIV-1000D/126-9x8B" }, { family: "WSL", phases: "IV", currentA: 1e3, connection: "D", umKv: 126, selectorSize: "B", tapCode: "10x9", listKey: "WSLIV-1000D/126-10x9B" }, { family: "WSL", phases: "IV", currentA: 1200, connection: "D", umKv: 12, selectorSize: "B", tapCode: "6x5", listKey: "WSLIV-1200D/12-6x5B" }, { family: "WSL", phases: "IV", currentA: 1200, connection: "D", umKv: 72.5, selectorSize: "B", tapCode: "6x5", listKey: "WSLIV-1200D/72.5-6x5B" }, { family: "WSL", phases: "IV", currentA: 1200, connection: "D", umKv: 72.5, selectorSize: "D", tapCode: "11x10", listKey: "WSLIV-1200D/72.5-11x10D" }, { family: "WSL", phases: "IV", currentA: 1200, connection: "D", umKv: 126, selectorSize: "B", tapCode: "6x5", listKey: "WSLIV-1200D/126-6x5B" }, { family: "WSL", phases: "IV", currentA: 1600, connection: "D", umKv: 12, selectorSize: "B", tapCode: "6x5", listKey: "WSLIV-1600D/12-6x5B" }, { family: "WSL", phases: "IV", currentA: 1600, connection: "D", umKv: 12.5, selectorSize: "D", tapCode: "12x8", listKey: "WSLIV-1600D/12.5-12x8D" }, { family: "WSL", phases: "IV", currentA: 1600, connection: "D", umKv: 126, selectorSize: "B", tapCode: "6x5", listKey: "WSLIV-1600D/126-6x5B" }, { family: "WSL", phases: "IV", currentA: 1600, connection: "D", umKv: 126, selectorSize: "B", tapCode: "6x6", listKey: "WSLIV-1600D/126-6x6B" }, { family: "WSL", phases: "IV", currentA: 2e3, connection: "D", umKv: 72.5, selectorSize: "B", tapCode: "6x5", listKey: "WSLIV-2000D/72.5-6x5B" }, { family: "WSL", phases: "IV", currentA: 2e3, connection: "D", umKv: 72.5, selectorSize: "E", tapCode: "18x17", listKey: "WSLIV-2000D/72.5-18x17E" }, { family: "WSL", phases: "IV", currentA: 2400, connection: "Y", umKv: 72.5, selectorSize: "A", tapCode: "6x5", listKey: "WSLIV-2400Y/72.5-6x5A" }, { family: "WSL", phases: "IV", currentA: 3e3, connection: "D", umKv: 12, selectorSize: "B", tapCode: "6x5", listKey: "WSLIV-3000D/12-6x5B" }, { family: "WSL", phases: "IV", currentA: 3e3, connection: "D", umKv: 72.5, selectorSize: "B", tapCode: "6x5", listKey: "WSLIV-3000D/72.5-6x5B" }, { family: "WDL", phases: "IV", currentA: 4800, connection: "", umKv: 362, selectorSize: "", tapCode: "6x5", listKey: "WDLIV-4800/362-6x5" }, { family: "WDL", phases: "IV", currentA: 3200, connection: "", umKv: 145, selectorSize: "", tapCode: "6x5", listKey: "WDLIV-3200/145-6x5" }, { family: "WDL", phases: "IV", currentA: 3200, connection: "", umKv: 252, selectorSize: "", tapCode: "6x5", listKey: "WDLIV-3200/252-6x5" }, { family: "WDL", phases: "IV", currentA: 2400, connection: "", umKv: 252, selectorSize: "", tapCode: "6x5", listKey: "WDLIV-2400/252-6x5" }, { family: "WDL", phases: "IV", currentA: 1600, connection: "", umKv: 126, selectorSize: "", tapCode: "12x11", listKey: "WDLIV-1600/126-12x11" }, { family: "WDL", phases: "IV", currentA: 3e3, connection: "", umKv: 72.5, selectorSize: "B", tapCode: "6x5", listKey: "WDLIV-3000/72.5-6x5B" }, { family: "WDL", phases: "IV", currentA: 2e3, connection: "", umKv: 72.5, selectorSize: "B", tapCode: "6x5", listKey: "WDLIV-2000/72.5-6x5B" }, { family: "WSL", phases: "V", currentA: 600, connection: "D", umKv: 12, selectorSize: "A", tapCode: "6x5", listKey: "WSLV-600D/12-6x5A" }, { family: "WSL", phases: "V", currentA: 600, connection: "D", umKv: 12, selectorSize: "B", tapCode: "6x5", listKey: "WSLV-600D/12-6x5B" }, { family: "WSL", phases: "V", currentA: 600, connection: "D", umKv: 12, selectorSize: "B", tapCode: "8x7", listKey: "WSLV-600D/12-8x7B" }, { family: "WSL", phases: "V", currentA: 600, connection: "D", umKv: 12, selectorSize: "B", tapCode: "10x9", listKey: "WSLV-600D/12-10x9B" }, { family: "WSL", phases: "V", currentA: 600, connection: "D", umKv: 12, selectorSize: "B", tapCode: "12x11", listKey: "WSLV-600D/12-12x11B" }, { family: "WSL", phases: "V", currentA: 600, connection: "D", umKv: 72.5, selectorSize: "A", tapCode: "6x5", listKey: "WSLV-600D/72.5-6x5A" }, { family: "WSL", phases: "V", currentA: 600, connection: "D", umKv: 72.5, selectorSize: "B", tapCode: "6x5", listKey: "WSLV-600D/72.5-6x5B" }, { family: "WSL", phases: "V", currentA: 600, connection: "D", umKv: 72.5, selectorSize: "B", tapCode: "8x7", listKey: "WSLV-600D/72.5-8x7B" }, { family: "WSL", phases: "V", currentA: 600, connection: "D", umKv: 72.5, selectorSize: "B", tapCode: "10x9", listKey: "WSLV-600D/72.5-10x9B" }, { family: "WSL", phases: "V", currentA: 600, connection: "D", umKv: 72.5, selectorSize: "B", tapCode: "12x11", listKey: "WSLV-600D/72.5-12x11B" }, { family: "WSL", phases: "V", currentA: 600, connection: "D", umKv: 40.5, selectorSize: "E", tapCode: "16x15", listKey: "WSLV-600D/40.5-16x15E" }, { family: "WSL", phases: "V", currentA: 600, connection: "D", umKv: 126, selectorSize: "A", tapCode: "6x5", listKey: "WSLV-600D/126-6x5A" }, { family: "WSL", phases: "V", currentA: 600, connection: "D", umKv: 126, selectorSize: "B", tapCode: "6x5", listKey: "WSLV-600D/126-6x5B" }, { family: "WSL", phases: "V", currentA: 600, connection: "D", umKv: 126, selectorSize: "E", tapCode: "6x5", listKey: "WSLV-600D/126-6x5E" }, { family: "WSL", phases: "V", currentA: 600, connection: "D", umKv: 126, selectorSize: "B", tapCode: "8x7", listKey: "WSLV-600D/126-8x7B" }, { family: "WSL", phases: "V", currentA: 600, connection: "D", umKv: 126, selectorSize: "B", tapCode: "10x9", listKey: "WSLV-600D/126-10x9B" }, { family: "WSL", phases: "V", currentA: 600, connection: "D", umKv: 126, selectorSize: "B", tapCode: "12x11", listKey: "WSLV-600D/126-12x11B" }, { family: "WSL", phases: "V", currentA: 600, connection: "D", umKv: 145, selectorSize: "A", tapCode: "6x5", listKey: "WSLV-600D/145-6x5A" }, { family: "WSL", phases: "V", currentA: 600, connection: "D", umKv: 170, selectorSize: "", tapCode: "6x5", listKey: "WSLV-600D/170-6x5" }, { family: "WDL", phases: "V", currentA: 600, connection: "D", umKv: 252, selectorSize: "B", tapCode: "6x5", listKey: "WDLV-600D/252-6x5B" }, { family: "WSL", phases: "V", currentA: 800, connection: "D", umKv: 12, selectorSize: "A", tapCode: "6x5", listKey: "WSLV-800D/12-6x5A" }, { family: "WSL", phases: "V", currentA: 800, connection: "D", umKv: 12, selectorSize: "B", tapCode: "6x5", listKey: "WSLV-800D/12-6x5B" }, { family: "WSL", phases: "V", currentA: 800, connection: "D", umKv: 12, selectorSize: "B", tapCode: "8x7", listKey: "WSLV-800D/12-8x7B" }, { family: "WSL", phases: "V", currentA: 800, connection: "D", umKv: 12, selectorSize: "B", tapCode: "10x9", listKey: "WSLV-800D/12-10x9B" }, { family: "WSL", phases: "V", currentA: 800, connection: "D", umKv: 12, selectorSize: "B", tapCode: "12x11", listKey: "WSLV-800D/12-12x11B" }, { family: "WSL", phases: "V", currentA: 800, connection: "D", umKv: 72.5, selectorSize: "A", tapCode: "6x5", listKey: "WSLV-800D/72.5-6x5A" }, { family: "WSL", phases: "V", currentA: 800, connection: "D", umKv: 72.5, selectorSize: "B", tapCode: "6x5", listKey: "WSLV-800D/72.5-6x5B" }, { family: "WSL", phases: "V", currentA: 800, connection: "D", umKv: 72.5, selectorSize: "B", tapCode: "8x7", listKey: "WSLV-800D/72.5-8x7B" }, { family: "WSL", phases: "V", currentA: 800, connection: "D", umKv: 72.5, selectorSize: "B", tapCode: "10x9", listKey: "WSLV-800D/72.5-10x9B" }, { family: "WSL", phases: "V", currentA: 800, connection: "D", umKv: 72.5, selectorSize: "B", tapCode: "12x11", listKey: "WSLV-800D/72.5-12x11B" }, { family: "WSL", phases: "V", currentA: 800, connection: "D", umKv: 126, selectorSize: "A", tapCode: "6x5", listKey: "WSLV-800D/126-6x5A" }, { family: "WSL", phases: "V", currentA: 800, connection: "D", umKv: 126, selectorSize: "B", tapCode: "6x5", listKey: "WSLV-800D/126-6x5B" }, { family: "WSL", phases: "V", currentA: 800, connection: "D", umKv: 126, selectorSize: "B", tapCode: "8x7", listKey: "WSLV-800D/126-8x7B" }, { family: "WSL", phases: "V", currentA: 800, connection: "D", umKv: 126, selectorSize: "B", tapCode: "10x9", listKey: "WSLV-800D/126-10x9B" }, { family: "WSL", phases: "V", currentA: 800, connection: "D", umKv: 126, selectorSize: "B", tapCode: "12x11", listKey: "WSLV-800D/126-12x11B" }, { family: "WSL", phases: "V", currentA: 1e3, connection: "D", umKv: 12, selectorSize: "B", tapCode: "6x5", listKey: "WSLV-1000D/12-6x5B" }, { family: "WSL", phases: "V", currentA: 1e3, connection: "D", umKv: 12, selectorSize: "B", tapCode: "8x7", listKey: "WSLV-1000D/12-8x7B" }, { family: "WSL", phases: "V", currentA: 1e3, connection: "D", umKv: 12, selectorSize: "B", tapCode: "10x9", listKey: "WSLV-1000D/12-10x9B" }, { family: "WSL", phases: "V", currentA: 1600, connection: "D", umKv: 12, selectorSize: "B", tapCode: "6x5", listKey: "WSLV-1600D/12-6x5B" }, { family: "WSL", phases: "V", currentA: 1e3, connection: "D", umKv: 72.5, selectorSize: "B", tapCode: "6x5", listKey: "WSLV-1000D/72.5-6x5B" }, { family: "WSL", phases: "V", currentA: 1e3, connection: "D", umKv: 72.5, selectorSize: "B", tapCode: "8x7", listKey: "WSLV-1000D/72.5-8x7B" }, { family: "WSL", phases: "V", currentA: 1e3, connection: "D", umKv: 72.5, selectorSize: "B", tapCode: "10x9", listKey: "WSLV-1000D/72.5-10x9B" }, { family: "WSL", phases: "V", currentA: 1e3, connection: "D", umKv: 126, selectorSize: "B", tapCode: "6x5", listKey: "WSLV-1000D/126-6x5B" }, { family: "WSL", phases: "V", currentA: 1e3, connection: "D", umKv: 126, selectorSize: "B", tapCode: "8x7", listKey: "WSLV-1000D/126-8x7B" }, { family: "WSL", phases: "V", currentA: 1e3, connection: "D", umKv: 126, selectorSize: "B", tapCode: "10x9", listKey: "WSLV-1000D/126-10x9B" }, { family: "WSL", phases: "V", currentA: 1200, connection: "Y", umKv: 126, selectorSize: "", tapCode: "12x11", listKey: "WSLV-1200Y/126-12x11" }, { family: "WSL", phases: "V", currentA: 1600, connection: "Y", umKv: 72.5, selectorSize: "B", tapCode: "7x6", listKey: "WSLV-1600Y/72.5-7x6B" }, { family: "WDL", phases: "V", currentA: 1600, connection: "Y", umKv: 72.5, selectorSize: "D", tapCode: "11x10", listKey: "WDLV-1600Y/72.5-11x10D" }, { family: "WSL", phases: "V", currentA: 2e3, connection: "D", umKv: 12, selectorSize: "B", tapCode: "6x5", listKey: "WSLV-2000D/12-6x5B" }, { family: "WSL", phases: "V", currentA: 2e3, connection: "D", umKv: 126, selectorSize: "B", tapCode: "6x5", listKey: "WSLV-2000D/126-6x5B" }, { family: "WDL", phases: "V", currentA: 1600, connection: "D", umKv: 145, selectorSize: "B", tapCode: "6x5", listKey: "WDLV-1600D/145-6x5B" }, { family: "WDL", phases: "V", currentA: 2e3, connection: "", umKv: 252, selectorSize: "B", tapCode: "6x5", listKey: "WDLV-2000/252-6x5B" }, { family: "WDL", phases: "V", currentA: 600, connection: "", umKv: 252, selectorSize: "B", tapCode: "6x5", listKey: "WDLV-600/252-6x5B" }, { family: "WDL", phases: "V", currentA: 1e3, connection: "", umKv: 252, selectorSize: "D", tapCode: "7x6", listKey: "WDLV-1000/252-7x6D" }, { family: "WSL", phases: "V", currentA: 3e3, connection: "D", umKv: 72.5, selectorSize: "B", tapCode: "6x5", listKey: "WSLV-3000D/72.5-6x5B" }, { family: "WDL", phases: "V", currentA: 3200, connection: "", umKv: 252, selectorSize: "", tapCode: "12x11", listKey: "WDLV-3200/252-12x11" }, { family: "WSL", phases: "V", currentA: 600, connection: "", umKv: 145, selectorSize: "B", tapCode: "6x5", listKey: "WSLV-600/145-6x5B" }, { family: "WSL", phases: "V", currentA: 1600, connection: "Y", umKv: 12, selectorSize: "", tapCode: "6x5", listKey: "WSLV-1600Y/12-6x5" }, { family: "WSL", phases: "V", currentA: 2e3, connection: "", umKv: 126, selectorSize: "B", tapCode: "6x5", listKey: "WSLV-2000/126-6x5B" }, { family: "WSL", phases: "V", currentA: 1600, connection: "D", umKv: 72.5, selectorSize: "A", tapCode: "6x5", listKey: "WSLV-1600D/72.5-6x5A" }, { family: "WDL", phases: "V", currentA: 2500, connection: "", umKv: 252, selectorSize: "B", tapCode: "6x5", listKey: "WDLV-2500/252-6x5B" }, { family: "WSL", phases: "VII", currentA: 600, connection: "D", umKv: 12, selectorSize: "A", tapCode: "6x5", listKey: "WSLVII-600D/12-6x5A" }, { family: "WSL", phases: "VII", currentA: 600, connection: "D", umKv: 12, selectorSize: "B", tapCode: "6x5", listKey: "WSLVII-600D/12-6x5B" }, { family: "WSL", phases: "VII", currentA: 600, connection: "D", umKv: 12, selectorSize: "B", tapCode: "8x7", listKey: "WSLVII-600D/12-8x7B" }, { family: "WSL", phases: "VII", currentA: 600, connection: "D", umKv: 12, selectorSize: "B", tapCode: "10x9", listKey: "WSLVII-600D/12-10x9B" }, { family: "WSL", phases: "VII", currentA: 600, connection: "D", umKv: 12, selectorSize: "B", tapCode: "12x11", listKey: "WSLVII-600D/12-12x11B" }, { family: "WSL", phases: "VII", currentA: 600, connection: "D", umKv: 72.5, selectorSize: "A", tapCode: "6x5", listKey: "WSLVII-600D/72.5-6x5A" }, { family: "WSL", phases: "VII", currentA: 600, connection: "D", umKv: 72.5, selectorSize: "B", tapCode: "6x5", listKey: "WSLVII-600D/72.5-6x5B" }, { family: "WSL", phases: "VII", currentA: 600, connection: "D", umKv: 72.5, selectorSize: "B", tapCode: "8x7", listKey: "WSLVII-600D/72.5-8x7B" }, { family: "WSL", phases: "VII", currentA: 600, connection: "D", umKv: 72.5, selectorSize: "B", tapCode: "10x9", listKey: "WSLVII-600D/72.5-10x9B" }, { family: "WSL", phases: "VII", currentA: 600, connection: "D", umKv: 72.5, selectorSize: "B", tapCode: "12x11", listKey: "WSLVII-600D/72.5-12x11B" }, { family: "WSL", phases: "VII", currentA: 600, connection: "D", umKv: 126, selectorSize: "A", tapCode: "6x5", listKey: "WSLVII-600D/126-6x5A" }, { family: "WSL", phases: "VII", currentA: 600, connection: "D", umKv: 126, selectorSize: "B", tapCode: "6x5", listKey: "WSLVII-600D/126-6x5B" }, { family: "WSL", phases: "VII", currentA: 600, connection: "D", umKv: 126, selectorSize: "B", tapCode: "8x7", listKey: "WSLVII-600D/126-8x7B" }, { family: "WSL", phases: "VII", currentA: 600, connection: "D", umKv: 126, selectorSize: "B", tapCode: "10x9", listKey: "WSLVII-600D/126-10x9B" }, { family: "WSL", phases: "VII", currentA: 600, connection: "D", umKv: 126, selectorSize: "B", tapCode: "12x11", listKey: "WSLVII-600D/126-12x11B" }, { family: "WSL", phases: "VII", currentA: 600, connection: "D", umKv: 300, selectorSize: "E", tapCode: "4x3", listKey: "WSLVII-600D/300-4x3E" }, { family: "WSL", phases: "VII", currentA: 600, connection: "D", umKv: 170, selectorSize: "B", tapCode: "6x5", listKey: "WSLVII-600D/170-6x5B" }, { family: "WSL", phases: "VII", currentA: 600, connection: "D", umKv: 170, selectorSize: "D", tapCode: "6x5", listKey: "WSLVII-600D/170-6x5D" }, { family: "WSL", phases: "VI", currentA: 2500, connection: "", umKv: 40.5, selectorSize: "B", tapCode: "3x2", listKey: "WSLVI-2500/40.5-3x2B" }, { family: "WSL", phases: "VII", currentA: 800, connection: "D", umKv: 12, selectorSize: "A", tapCode: "6x5", listKey: "WSLVII-800D/12-6x5A" }, { family: "WSL", phases: "VII", currentA: 800, connection: "D", umKv: 12, selectorSize: "B", tapCode: "6x5", listKey: "WSLVII-800D/12-6x5B" }, { family: "WSL", phases: "VII", currentA: 800, connection: "D", umKv: 12, selectorSize: "B", tapCode: "8x7", listKey: "WSLVII-800D/12-8x7B" }, { family: "WSL", phases: "VII", currentA: 800, connection: "D", umKv: 12, selectorSize: "B", tapCode: "10x9", listKey: "WSLVII-800D/12-10x9B" }, { family: "WSL", phases: "VII", currentA: 800, connection: "D", umKv: 12, selectorSize: "B", tapCode: "12x11", listKey: "WSLVII-800D/12-12x11B" }, { family: "WSL", phases: "VII", currentA: 800, connection: "D", umKv: 72.5, selectorSize: "A", tapCode: "6x5", listKey: "WSLVII-800D/72.5-6x5A" }, { family: "WSL", phases: "VII", currentA: 800, connection: "D", umKv: 72.5, selectorSize: "B", tapCode: "6x5", listKey: "WSLVII-800D/72.5-6x5B" }, { family: "WSL", phases: "VII", currentA: 800, connection: "D", umKv: 72.5, selectorSize: "B", tapCode: "8x7", listKey: "WSLVII-800D/72.5-8x7B" }, { family: "WSL", phases: "VII", currentA: 800, connection: "D", umKv: 72.5, selectorSize: "B", tapCode: "10x9", listKey: "WSLVII-800D/72.5-10x9B" }, { family: "WSL", phases: "VII", currentA: 800, connection: "D", umKv: 72.5, selectorSize: "B", tapCode: "12x11", listKey: "WSLVII-800D/72.5-12x11B" }, { family: "WSL", phases: "VII", currentA: 800, connection: "D", umKv: 126, selectorSize: "A", tapCode: "6x5", listKey: "WSLVII-800D/126-6x5A" }, { family: "WSL", phases: "VII", currentA: 800, connection: "D", umKv: 126, selectorSize: "B", tapCode: "6x5", listKey: "WSLVII-800D/126-6x5B" }, { family: "WSL", phases: "VII", currentA: 800, connection: "D", umKv: 126, selectorSize: "B", tapCode: "8x7", listKey: "WSLVII-800D/126-8x7B" }, { family: "WSL", phases: "VII", currentA: 800, connection: "D", umKv: 126, selectorSize: "B", tapCode: "10x9", listKey: "WSLVII-800D/126-10x9B" }, { family: "WSL", phases: "VII", currentA: 800, connection: "D", umKv: 126, selectorSize: "B", tapCode: "12x11", listKey: "WSLVII-800D/126-12x11B" }, { family: "WSL", phases: "VII", currentA: 1e3, connection: "D", umKv: 12, selectorSize: "B", tapCode: "6x5", listKey: "WSLVII-1000D/12-6x5B" }, { family: "WSL", phases: "VII", currentA: 1e3, connection: "D", umKv: 12, selectorSize: "B", tapCode: "8x7", listKey: "WSLVII-1000D/12-8x7B" }, { family: "WSL", phases: "VII", currentA: 1e3, connection: "D", umKv: 12, selectorSize: "B", tapCode: "10x9", listKey: "WSLVII-1000D/12-10x9B" }, { family: "WSL", phases: "VII", currentA: 1e3, connection: "D", umKv: 72.5, selectorSize: "B", tapCode: "6x5", listKey: "WSLVII-1000D/72.5-6x5B" }, { family: "WSL", phases: "VII", currentA: 1e3, connection: "D", umKv: 72.5, selectorSize: "B", tapCode: "8x7", listKey: "WSLVII-1000D/72.5-8x7B" }, { family: "WSL", phases: "VII", currentA: 1e3, connection: "D", umKv: 72.5, selectorSize: "B", tapCode: "10x9", listKey: "WSLVII-1000D/72.5-10x9B" }, { family: "WSL", phases: "VII", currentA: 1e3, connection: "D", umKv: 126, selectorSize: "B", tapCode: "6x5", listKey: "WSLVII-1000D/126-6x5B" }, { family: "WSL", phases: "VII", currentA: 1e3, connection: "D", umKv: 126, selectorSize: "B", tapCode: "8x7", listKey: "WSLVII-1000D/126-8x7B" }, { family: "WSL", phases: "VII", currentA: 1e3, connection: "D", umKv: 126, selectorSize: "B", tapCode: "10x9", listKey: "WSLVII-1000D/126-10x9B" }, { family: "WDL", phases: "VII", currentA: 1600, connection: "D", umKv: 145, selectorSize: "B", tapCode: "6x5", listKey: "WDLVII-1600D/145-6x5B" }, { family: "WSL", phases: "VII", currentA: 1600, connection: "D", umKv: 12, selectorSize: "B", tapCode: "6x5", listKey: "WSLVII-1600D/12-6x5B" }, { family: "WSL", phases: "VII", currentA: 2e3, connection: "D", umKv: 12, selectorSize: "B", tapCode: "6x5", listKey: "WSLVII-2000D/12-6x5B" }, { family: "WSL", phases: "II", currentA: 600, connection: "Y", umKv: 12, selectorSize: "A", tapCode: "6x5", listKey: "WSLII-600Y/12-6x5A" }, { family: "WSL", phases: "II", currentA: 600, connection: "Y", umKv: 12, selectorSize: "B", tapCode: "6x5", listKey: "WSLII-600Y/12-6x5B" }, { family: "WSL", phases: "II", currentA: 600, connection: "Y", umKv: 12, selectorSize: "B", tapCode: "8x7", listKey: "WSLII-600Y/12-8x7B" }, { family: "WSL", phases: "II", currentA: 600, connection: "Y", umKv: 12, selectorSize: "B", tapCode: "10x9", listKey: "WSLII-600Y/12-10x9B" }, { family: "WSL", phases: "II", currentA: 600, connection: "Y", umKv: 12, selectorSize: "B", tapCode: "12x11", listKey: "WSLII-600Y/12-12x11B" }, { family: "WSL", phases: "II", currentA: 600, connection: "Y", umKv: 72.5, selectorSize: "A", tapCode: "6x5", listKey: "WSLII-600Y/72.5-6x5A" }, { family: "WSL", phases: "II", currentA: 600, connection: "Y", umKv: 72.5, selectorSize: "B", tapCode: "6x5", listKey: "WSLII-600Y/72.5-6x5B" }, { family: "WSL", phases: "II", currentA: 600, connection: "Y", umKv: 72.5, selectorSize: "B", tapCode: "8x7", listKey: "WSLII-600Y/72.5-8x7B" }, { family: "WSL", phases: "II", currentA: 600, connection: "Y", umKv: 72.5, selectorSize: "B", tapCode: "10x9", listKey: "WSLII-600Y/72.5-10x9B" }, { family: "WSL", phases: "II", currentA: 600, connection: "Y", umKv: 72.5, selectorSize: "B", tapCode: "12x11", listKey: "WSLII-600Y/72.5-12x11B" }, { family: "WSL", phases: "II", currentA: 600, connection: "Y", umKv: 126, selectorSize: "A", tapCode: "6x5", listKey: "WSLII-600Y/126-6x5A" }, { family: "WSL", phases: "II", currentA: 600, connection: "Y", umKv: 126, selectorSize: "B", tapCode: "6x5", listKey: "WSLII-600Y/126-6x5B" }, { family: "WSL", phases: "II", currentA: 600, connection: "Y", umKv: 126, selectorSize: "B", tapCode: "8x7", listKey: "WSLII-600Y/126-8x7B" }, { family: "WSL", phases: "II", currentA: 600, connection: "Y", umKv: 126, selectorSize: "B", tapCode: "10x9", listKey: "WSLII-600Y/126-10x9B" }, { family: "WSL", phases: "II", currentA: 600, connection: "Y", umKv: 126, selectorSize: "B", tapCode: "12x11", listKey: "WSLII-600Y/126-12x11B" }, { family: "WSL", phases: "II", currentA: 800, connection: "Y", umKv: 12, selectorSize: "A", tapCode: "6x5", listKey: "WSLII-800Y/12-6x5A" }, { family: "WSL", phases: "II", currentA: 800, connection: "Y", umKv: 12, selectorSize: "B", tapCode: "6x5", listKey: "WSLII-800Y/12-6x5B" }, { family: "WSL", phases: "II", currentA: 800, connection: "Y", umKv: 12, selectorSize: "B", tapCode: "8x7", listKey: "WSLII-800Y/12-8x7B" }, { family: "WSL", phases: "II", currentA: 800, connection: "Y", umKv: 12, selectorSize: "B", tapCode: "10x9", listKey: "WSLII-800Y/12-10x9B" }, { family: "WSL", phases: "II", currentA: 800, connection: "Y", umKv: 12, selectorSize: "B", tapCode: "12x11", listKey: "WSLII-800Y/12-12x11B" }, { family: "WSL", phases: "II", currentA: 800, connection: "Y", umKv: 72.5, selectorSize: "A", tapCode: "6x5", listKey: "WSLII-800Y/72.5-6x5A" }, { family: "WSL", phases: "II", currentA: 800, connection: "Y", umKv: 72.5, selectorSize: "B", tapCode: "6x5", listKey: "WSLII-800Y/72.5-6x5B" }, { family: "WSL", phases: "II", currentA: 800, connection: "Y", umKv: 72.5, selectorSize: "B", tapCode: "8x7", listKey: "WSLII-800Y/72.5-8x7B" }, { family: "WSL", phases: "II", currentA: 800, connection: "Y", umKv: 72.5, selectorSize: "B", tapCode: "10x9", listKey: "WSLII-800Y/72.5-10x9B" }, { family: "WSL", phases: "II", currentA: 800, connection: "Y", umKv: 72.5, selectorSize: "B", tapCode: "12x11", listKey: "WSLII-800Y/72.5-12x11B" }, { family: "WSL", phases: "II", currentA: 800, connection: "Y", umKv: 126, selectorSize: "A", tapCode: "6x5", listKey: "WSLII-800Y/126-6x5A" }, { family: "WSL", phases: "II", currentA: 800, connection: "Y", umKv: 126, selectorSize: "B", tapCode: "6x5", listKey: "WSLII-800Y/126-6x5B" }, { family: "WSL", phases: "II", currentA: 800, connection: "Y", umKv: 126, selectorSize: "B", tapCode: "8x7", listKey: "WSLII-800Y/126-8x7B" }, { family: "WSL", phases: "II", currentA: 800, connection: "Y", umKv: 126, selectorSize: "B", tapCode: "10x9", listKey: "WSLII-800Y/126-10x9B" }, { family: "WSL", phases: "II", currentA: 800, connection: "Y", umKv: 126, selectorSize: "B", tapCode: "12x11", listKey: "WSLII-800Y/126-12x11B" }, { family: "WSL", phases: "II", currentA: 1e3, connection: "Y", umKv: 12, selectorSize: "", tapCode: "6x5", listKey: "WSLII-1000Y/12-6x5" }, { family: "WSL", phases: "II", currentA: 1e3, connection: "Y", umKv: 12, selectorSize: "B", tapCode: "6x5", listKey: "WSLII-1000Y/12-6x5B" }, { family: "WSL", phases: "II", currentA: 1e3, connection: "Y", umKv: 12, selectorSize: "B", tapCode: "8x7", listKey: "WSLII-1000Y/12-8x7B" }, { family: "WSL", phases: "II", currentA: 1e3, connection: "Y", umKv: 12, selectorSize: "B", tapCode: "10x9", listKey: "WSLII-1000Y/12-10x9B" }, { family: "WSL", phases: "II", currentA: 1e3, connection: "Y", umKv: 72.5, selectorSize: "", tapCode: "6x5", listKey: "WSLII-1000Y/72.5-6x5" }, { family: "WSL", phases: "II", currentA: 1e3, connection: "Y", umKv: 72.5, selectorSize: "B", tapCode: "6x5", listKey: "WSLII-1000Y/72.5-6x5B" }, { family: "WSL", phases: "II", currentA: 1e3, connection: "Y", umKv: 72.5, selectorSize: "B", tapCode: "8x7", listKey: "WSLII-1000Y/72.5-8x7B" }, { family: "WSL", phases: "II", currentA: 1e3, connection: "Y", umKv: 72.5, selectorSize: "B", tapCode: "10x9", listKey: "WSLII-1000Y/72.5-10x9B" }, { family: "WSL", phases: "II", currentA: 1e3, connection: "Y", umKv: 126, selectorSize: "B", tapCode: "6x5", listKey: "WSLII-1000Y/126-6x5B" }, { family: "WSL", phases: "II", currentA: 1e3, connection: "Y", umKv: 126, selectorSize: "B", tapCode: "8x7", listKey: "WSLII-1000Y/126-8x7B" }, { family: "WSL", phases: "II", currentA: 1e3, connection: "Y", umKv: 126, selectorSize: "B", tapCode: "10x9", listKey: "WSLII-1000Y/126-10x9B" }, { family: "WSL", phases: "II", currentA: 1200, connection: "Y", umKv: 12, selectorSize: "", tapCode: "6x5", listKey: "WSLII-1200Y/12-6x5" }, { family: "WSL", phases: "II", currentA: 1200, connection: "Y", umKv: 12, selectorSize: "B", tapCode: "6x5", listKey: "WSLII-1200Y/12-6x5B" }, { family: "WSL", phases: "II", currentA: 1200, connection: "Y", umKv: 72.5, selectorSize: "", tapCode: "6x5", listKey: "WSLII-1200Y/72.5-6x5" }, { family: "WSL", phases: "II", currentA: 1200, connection: "Y", umKv: 72.5, selectorSize: "B", tapCode: "6x5", listKey: "WSLII-1200Y/72.5-6x5B" }, { family: "WSL", phases: "II", currentA: 1200, connection: "Y", umKv: 72.5, selectorSize: "D", tapCode: "10x9", listKey: "WSLII-1200Y/72.5-10x9D" }, { family: "WSL", phases: "II", currentA: 1600, connection: "Y", umKv: 12, selectorSize: "B", tapCode: "6x5", listKey: "WSLII-1600Y/12-6x5B" }, { family: "WSL", phases: "II", currentA: 1600, connection: "Y", umKv: 72.5, selectorSize: "B", tapCode: "6x5", listKey: "WSLII-1600Y/72.5-6x5B" }, { family: "WSL", phases: "II", currentA: 1600, connection: "Y", umKv: 145, selectorSize: "B", tapCode: "6x5", listKey: "WSLII-1600Y/145-6x5B" }, { family: "WSL", phases: "II", currentA: 2e3, connection: "Y", umKv: 12, selectorSize: "A", tapCode: "6x5", listKey: "WSLII-2000Y/12-6x5A" }, { family: "WSL", phases: "II", currentA: 2e3, connection: "Y", umKv: 40.5, selectorSize: "A", tapCode: "6x5", listKey: "WSLII-2000Y/40.5-6x5A" }, { family: "WSL", phases: "II", currentA: 2e3, connection: "Y", umKv: 72.5, selectorSize: "B", tapCode: "11x10", listKey: "WSLII-2000Y/72.5-11x10B" }, { family: "WDL", phases: "II", currentA: 2400, connection: "Y", umKv: 252, selectorSize: "D", tapCode: "6x5", listKey: "WDLII-2400Y/252-6x5D" }, { family: "WDL", phases: "II", currentA: 1600, connection: "", umKv: 252, selectorSize: "D", tapCode: "12x11", listKey: "WDLII-1600/252-12x11D" }, { family: "WDL", phases: "II", currentA: 630, connection: "", umKv: 252, selectorSize: "", tapCode: "4x3", listKey: "WDLII-630/252-4x3" }, { family: "WDL", phases: "II", currentA: 400, connection: "", umKv: 252, selectorSize: "D", tapCode: "10x9", listKey: "WDLII-400/252-10x9D" }, { family: "WSL", phases: "II", currentA: 400, connection: "D", umKv: 170, selectorSize: "A", tapCode: "6x5", listKey: "WSLII-400D/170-6x5A" }, { family: "WSL", phases: "II", currentA: 1200, connection: "D", umKv: 72.5, selectorSize: "B", tapCode: "10x9", listKey: "WSLII-1200D/72.5-10x9B" }, { family: "WSL", phases: "II", currentA: 1e3, connection: "D", umKv: 72.5, selectorSize: "B", tapCode: "10x9", listKey: "WSLII-1000D/72.5-10x9B" }, { family: "WSL", phases: "II", currentA: 600, connection: "D", umKv: 12, selectorSize: "A", tapCode: "6x5", listKey: "WSLII-600D/12-6x5A" }, { family: "WSL", phases: "II", currentA: 600, connection: "D", umKv: 12, selectorSize: "B", tapCode: "6x5", listKey: "WSLII-600D/12-6x5B" }, { family: "WSL", phases: "II", currentA: 600, connection: "D", umKv: 12, selectorSize: "B", tapCode: "8x7", listKey: "WSLII-600D/12-8x7B" }, { family: "WSL", phases: "II", currentA: 600, connection: "D", umKv: 12, selectorSize: "B", tapCode: "10x9", listKey: "WSLII-600D/12-10x9B" }, { family: "WSL", phases: "II", currentA: 600, connection: "D", umKv: 12, selectorSize: "B", tapCode: "12x11", listKey: "WSLII-600D/12-12x11B" }, { family: "WSL", phases: "II", currentA: 600, connection: "D", umKv: 72.5, selectorSize: "A", tapCode: "6x5", listKey: "WSLII-600D/72.5-6x5A" }, { family: "WSL", phases: "II", currentA: 600, connection: "D", umKv: 72.5, selectorSize: "B", tapCode: "6x5", listKey: "WSLII-600D/72.5-6x5B" }, { family: "WSL", phases: "II", currentA: 600, connection: "D", umKv: 72.5, selectorSize: "B", tapCode: "8x7", listKey: "WSLII-600D/72.5-8x7B" }, { family: "WSL", phases: "II", currentA: 600, connection: "D", umKv: 72.5, selectorSize: "B", tapCode: "10x9", listKey: "WSLII-600D/72.5-10x9B" }, { family: "WSL", phases: "II", currentA: 600, connection: "D", umKv: 72.5, selectorSize: "B", tapCode: "12x11", listKey: "WSLII-600D/72.5-12x11B" }, { family: "WSL", phases: "II", currentA: 600, connection: "D", umKv: 126, selectorSize: "A", tapCode: "6x5", listKey: "WSLII-600D/126-6x5A" }, { family: "WSL", phases: "II", currentA: 600, connection: "D", umKv: 126, selectorSize: "B", tapCode: "6x5", listKey: "WSLII-600D/126-6x5B" }, { family: "WSL", phases: "II", currentA: 600, connection: "D", umKv: 126, selectorSize: "B", tapCode: "8x7", listKey: "WSLII-600D/126-8x7B" }, { family: "WSL", phases: "II", currentA: 600, connection: "D", umKv: 126, selectorSize: "B", tapCode: "10x9", listKey: "WSLII-600D/126-10x9B" }, { family: "WSL", phases: "II", currentA: 600, connection: "D", umKv: 126, selectorSize: "B", tapCode: "12x11", listKey: "WSLII-600D/126-12x11B" }, { family: "WSL", phases: "II", currentA: 600, connection: "D", umKv: 170, selectorSize: "D", tapCode: "6x5", listKey: "WSLII-600D/170-6x5D" }, { family: "WSL", phases: "II", currentA: 800, connection: "D", umKv: 12, selectorSize: "A", tapCode: "6x5", listKey: "WSLII-800D/12-6x5A" }, { family: "WSL", phases: "II", currentA: 800, connection: "D", umKv: 12, selectorSize: "B", tapCode: "6x5", listKey: "WSLII-800D/12-6x5B" }, { family: "WSL", phases: "II", currentA: 800, connection: "D", umKv: 12, selectorSize: "B", tapCode: "8x7", listKey: "WSLII-800D/12-8x7B" }, { family: "WSL", phases: "II", currentA: 800, connection: "D", umKv: 12, selectorSize: "B", tapCode: "10x9", listKey: "WSLII-800D/12-10x9B" }, { family: "WSL", phases: "II", currentA: 800, connection: "D", umKv: 12, selectorSize: "B", tapCode: "12x11", listKey: "WSLII-800D/12-12x11B" }, { family: "WSL", phases: "II", currentA: 800, connection: "D", umKv: 72.5, selectorSize: "A", tapCode: "6x5", listKey: "WSLII-800D/72.5-6x5A" }, { family: "WSL", phases: "II", currentA: 800, connection: "D", umKv: 72.5, selectorSize: "B", tapCode: "6x5", listKey: "WSLII-800D/72.5-6x5B" }, { family: "WSL", phases: "II", currentA: 800, connection: "D", umKv: 72.5, selectorSize: "B", tapCode: "8x7", listKey: "WSLII-800D/72.5-8x7B" }, { family: "WSL", phases: "II", currentA: 800, connection: "D", umKv: 72.5, selectorSize: "B", tapCode: "10x9", listKey: "WSLII-800D/72.5-10x9B" }, { family: "WSL", phases: "II", currentA: 800, connection: "D", umKv: 72.5, selectorSize: "B", tapCode: "12x11", listKey: "WSLII-800D/72.5-12x11B" }, { family: "WSL", phases: "II", currentA: 800, connection: "D", umKv: 126, selectorSize: "A", tapCode: "6x5", listKey: "WSLII-800D/126-6x5A" }, { family: "WSL", phases: "II", currentA: 800, connection: "D", umKv: 126, selectorSize: "B", tapCode: "6x5", listKey: "WSLII-800D/126-6x5B" }, { family: "WSL", phases: "II", currentA: 800, connection: "D", umKv: 126, selectorSize: "B", tapCode: "8x7", listKey: "WSLII-800D/126-8x7B" }, { family: "WSL", phases: "II", currentA: 800, connection: "D", umKv: 126, selectorSize: "B", tapCode: "10x9", listKey: "WSLII-800D/126-10x9B" }, { family: "WSL", phases: "II", currentA: 800, connection: "D", umKv: 126, selectorSize: "B", tapCode: "12x11", listKey: "WSLII-800D/126-12x11B" }, { family: "WSL", phases: "II", currentA: 800, connection: "D", umKv: 170, selectorSize: "B", tapCode: "6x5", listKey: "WSLII-800D/170-6x5B" }, { family: "WSL", phases: "II", currentA: 1e3, connection: "D", umKv: 12, selectorSize: "B", tapCode: "6x5", listKey: "WSLII-1000D/12-6x5B" }, { family: "WSL", phases: "II", currentA: 1e3, connection: "D", umKv: 12, selectorSize: "B", tapCode: "8x7", listKey: "WSLII-1000D/12-8x7B" }, { family: "WSL", phases: "II", currentA: 1e3, connection: "D", umKv: 12, selectorSize: "B", tapCode: "10x9", listKey: "WSLII-1000D/12-10x9B" }, { family: "WSL", phases: "II", currentA: 1e3, connection: "D", umKv: 72.5, selectorSize: "B", tapCode: "6x5", listKey: "WSLII-1000D/72.5-6x5B" }, { family: "WSL", phases: "II", currentA: 1e3, connection: "D", umKv: 72.5, selectorSize: "B", tapCode: "8x7", listKey: "WSLII-1000D/72.5-8x7B" }, { family: "WDL", phases: "II", currentA: 4e3, connection: "", umKv: 72.5, selectorSize: "B", tapCode: "6x5", listKey: "WDLII-4000/72.5-6x5B" }, { family: "WSL", phases: "II", currentA: 1e3, connection: "D", umKv: 126, selectorSize: "B", tapCode: "6x5", listKey: "WSLII-1000D/126-6x5B" }, { family: "WSL", phases: "II", currentA: 1e3, connection: "D", umKv: 126, selectorSize: "B", tapCode: "8x7", listKey: "WSLII-1000D/126-8x7B" }, { family: "WSL", phases: "II", currentA: 1e3, connection: "D", umKv: 126, selectorSize: "B", tapCode: "10x9", listKey: "WSLII-1000D/126-10x9B" }, { family: "WSL", phases: "II", currentA: 1e3, connection: "D", umKv: 170, selectorSize: "B", tapCode: "6x5", listKey: "WSLII-1000D/170-6x5B" }, { family: "WDL", phases: "II", currentA: 2400, connection: "", umKv: 126, selectorSize: "D", tapCode: "10x9", listKey: "WDLII-2400/126-10x9D" }, { family: "WSL", phases: "VI", currentA: 600, connection: "", umKv: 12, selectorSize: "A", tapCode: "3x2", listKey: "WSLVI-600/12-3x2A" }, { family: "WSL", phases: "VI", currentA: 600, connection: "", umKv: 12, selectorSize: "B", tapCode: "3x2", listKey: "WSLVI-600/12-3x2B" }, { family: "WSL", phases: "VI", currentA: 600, connection: "", umKv: 72.5, selectorSize: "A", tapCode: "3x2", listKey: "WSLVI-600/72.5-3x2A" }, { family: "WSL", phases: "VI", currentA: 600, connection: "", umKv: 72.5, selectorSize: "B", tapCode: "3x2", listKey: "WSLVI-600/72.5-3x2B" }, { family: "WSL", phases: "VI", currentA: 1600, connection: "", umKv: 72.5, selectorSize: "B", tapCode: "6x2", listKey: "WSLVI-1600/72.5-6x2B" }, { family: "WSL", phases: "VI", currentA: 600, connection: "", umKv: 252, selectorSize: "C", tapCode: "6x2", listKey: "WSLVI-600/252-6x2C" }, { family: "WDL", phases: "VI", currentA: 600, connection: "", umKv: 252, selectorSize: "C", tapCode: "6x2", listKey: "WDLVI-600/252-6x2C" }, { family: "WSL", phases: "VI", currentA: 800, connection: "", umKv: 12, selectorSize: "A", tapCode: "3x2", listKey: "WSLVI-800/12-3x2A" }, { family: "WSL", phases: "VI", currentA: 800, connection: "", umKv: 12, selectorSize: "B", tapCode: "3x2", listKey: "WSLVI-800/12-3x2B" }, { family: "WSL", phases: "VI", currentA: 800, connection: "", umKv: 72.5, selectorSize: "A", tapCode: "3x2", listKey: "WSLVI-800/72.5-3x2A" }, { family: "WSL", phases: "VI", currentA: 800, connection: "", umKv: 72.5, selectorSize: "B", tapCode: "3x2", listKey: "WSLVI-800/72.5-3x2B" }, { family: "WSL", phases: "VI", currentA: 1e3, connection: "", umKv: 12, selectorSize: "B", tapCode: "3x2", listKey: "WSLVI-1000/12-3x2B" }, { family: "WSL", phases: "VI", currentA: 1e3, connection: "", umKv: 72.5, selectorSize: "B", tapCode: "3x2", listKey: "WSLVI-1000/72.5-3x2B" }, { family: "WSL", phases: "VI", currentA: 2e3, connection: "", umKv: 72.5, selectorSize: "B", tapCode: "3x2", listKey: "WSLVI-2000/72.5-3x2B" }, { family: "WSL", phases: "VI", currentA: 3e3, connection: "", umKv: 72.5, selectorSize: "B", tapCode: "3x2", listKey: "WSLVI-3000/72.5-3x2B" }, { family: "WSL", phases: "VIII", currentA: 600, connection: "", umKv: 12, selectorSize: "A", tapCode: "5x2", listKey: "WSLVIII-600/12-5x2A" }, { family: "WSL", phases: "VIII", currentA: 600, connection: "", umKv: 12, selectorSize: "B", tapCode: "5x2", listKey: "WSLVIII-600/12-5x2B" }, { family: "WSL", phases: "VIII", currentA: 600, connection: "", umKv: 72.5, selectorSize: "A", tapCode: "5x2", listKey: "WSLVIII-600/72.5-5x2A" }, { family: "WSL", phases: "VIII", currentA: 600, connection: "", umKv: 72.5, selectorSize: "B", tapCode: "5x2", listKey: "WSLVIII-600/72.5-5x2B" }, { family: "WSL", phases: "VIII", currentA: 600, connection: "", umKv: 126, selectorSize: "A", tapCode: "5x2", listKey: "WSLVIII-600/126-5x2A" }, { family: "WSL", phases: "VIII", currentA: 600, connection: "", umKv: 126, selectorSize: "B", tapCode: "5x2", listKey: "WSLVIII-600/126-5x2B" }, { family: "WSL", phases: "VIII", currentA: 600, connection: "", umKv: 126, selectorSize: "E", tapCode: "5x2", listKey: "WSLVIII-600/126-5x2E" }, { family: "WSL", phases: "VIII", currentA: 600, connection: "", umKv: 252, selectorSize: "B", tapCode: "5x2", listKey: "WSLVIII-600/252-5x2B" }, { family: "WDL", phases: "VIII", currentA: 600, connection: "", umKv: 252, selectorSize: "D", tapCode: "5x2", listKey: "WDLVIII-600/252-5x2D" }, { family: "WDL", phases: "VIII", currentA: 600, connection: "", umKv: 252, selectorSize: "E", tapCode: "5x2", listKey: "WDLVIII-600/252-5x2E" }, { family: "WSL", phases: "VIII", currentA: 800, connection: "", umKv: 12, selectorSize: "A", tapCode: "5x2", listKey: "WSLVIII-800/12-5x2A" }, { family: "WSL", phases: "VIII", currentA: 800, connection: "", umKv: 12, selectorSize: "B", tapCode: "5x2", listKey: "WSLVIII-800/12-5x2B" }, { family: "WSL", phases: "VIII", currentA: 800, connection: "", umKv: 72.5, selectorSize: "A", tapCode: "5x2", listKey: "WSLVIII-800/72.5-5x2A" }, { family: "WSL", phases: "VIII", currentA: 800, connection: "", umKv: 72.5, selectorSize: "B", tapCode: "5x2", listKey: "WSLVIII-800/72.5-5x2B" }, { family: "WSL", phases: "VIII", currentA: 800, connection: "", umKv: 72.5, selectorSize: "D", tapCode: "12x2", listKey: "WSLVIII-800/72.5-12x2D" }, { family: "WSL", phases: "VIII", currentA: 800, connection: "", umKv: 126, selectorSize: "A", tapCode: "5x2", listKey: "WSLVIII-800/126-5x2A" }, { family: "WSL", phases: "VIII", currentA: 800, connection: "", umKv: 126, selectorSize: "B", tapCode: "5x2", listKey: "WSLVIII-800/126-5x2B" }, { family: "WSL", phases: "VIII", currentA: 1e3, connection: "", umKv: 12, selectorSize: "B", tapCode: "5x2", listKey: "WSLVIII-1000/12-5x2B" }, { family: "WSL", phases: "VIII", currentA: 1e3, connection: "", umKv: 72.5, selectorSize: "B", tapCode: "5x2", listKey: "WSLVIII-1000/72.5-5x2B" }, { family: "WSL", phases: "VIII", currentA: 1e3, connection: "", umKv: 126, selectorSize: "B", tapCode: "5x2", listKey: "WSLVIII-1000/126-5x2B" }, { family: "WSL", phases: "VIII", currentA: 1200, connection: "", umKv: 72.5, selectorSize: "B", tapCode: "5x2", listKey: "WSLVIII-1200/72.5-5x2B" }, { family: "WSL", phases: "VIII", currentA: 2e3, connection: "", umKv: 72.5, selectorSize: "D", tapCode: "12x2", listKey: "WSLVIII-2000/72.5-12x2D" }, { family: "WSL", phases: "VIII", currentA: 2e3, connection: "", umKv: 72.5, selectorSize: "B", tapCode: "5x2", listKey: "WSLVIII-2000/72.5-5x2B" }, { family: "WDL", phases: "VIII", currentA: 2e3, connection: "", umKv: 126, selectorSize: "B", tapCode: "5x2", listKey: "WDLVIII-2000/126-5x2B" }, { family: "WSL", phases: "VIII", currentA: 2e3, connection: "", umKv: 40.5, selectorSize: "B", tapCode: "5x2", listKey: "WSLVIII-2000/40.5-5x2B" }, { family: "WSL", phases: "VIII", currentA: 2e3, connection: "", umKv: 126, selectorSize: "B", tapCode: "5x2", listKey: "WSLVIII-2000/126-5x2B" }, { family: "WDL", phases: "VIII", currentA: 2400, connection: "", umKv: 126, selectorSize: "B", tapCode: "5x2", listKey: "WDLVIII-2400/126-5x2B" }, { family: "WSL", phases: "VIII", currentA: 1600, connection: "", umKv: 72.5, selectorSize: "B", tapCode: "3x2", listKey: "WSLVIII-1600/72.5-3x2B" }] };
955
+
956
+ // lib/parseType.ts
957
+ function normalizeType(raw) {
958
+ let t = raw.replace(/[×*]/g, "x").replace(/[–—-]/g, "-").replace(/,/g, ".").replace(/(/g, "(").replace(/)/g, ")").replace(/\s+/g, "").replace(/(\d)_(\d)/g, "$1x$2").replace(/(III|II|I)(\d)/, "$1-$2").replace(/(WSL|WDL|WSG)(VIII|VII|IV|VI|IX|V)(\d)/i, "$1$2-$3");
959
+ if (!t.includes("/")) {
960
+ t = t.replace(/([YD])(\d+(?:\.\d+)?)-/i, "$1/$2-");
961
+ }
962
+ t = t.replace(
963
+ /(363|362|330|300|252|170|145|126|72\.5|40\.5|17\.5|12\.5|12)(\d{1,2}x\d)/,
964
+ "$1-$2"
965
+ );
966
+ return t;
967
+ }
968
+ var OCTC_TYPE_RE = /^(?:(\d+)x)?(WSL|WDL|WSG)(VIII|VII|III|II|IV|VI|IX|V|I)-(\d+)([YD])?[/-](\d+(?:\.\d+)?)-(\d+)x(\d+)(?:\((\d+)x(\d+)\))?(?:\(([A-E])\)|([A-E]))?$/i;
969
+ function parseTypeString(raw) {
970
+ const t = normalizeType(raw);
971
+ const octc = t.match(OCTC_TYPE_RE);
972
+ if (octc) {
973
+ const contact = octc[9] && octc[10] ? `${Number(octc[9])}x${Number(octc[10])}` : `${Number(octc[7])}x${Number(octc[8])}`;
974
+ return {
975
+ unitCount: octc[1] ? Number(octc[1]) : 1,
976
+ family: octc[2].toUpperCase(),
977
+ phases: octc[3].toUpperCase(),
978
+ currentA: Number(octc[4]),
979
+ connection: (octc[5] ?? "").toUpperCase(),
980
+ umKv: Number(octc[6]),
981
+ selectorSize: (octc[11] || octc[12] || "").toUpperCase(),
982
+ tapCode: contact
983
+ };
984
+ }
985
+ const re = /^(?:(\d+)x)?([A-Z][A-Z0-9]*?)(III|II|I)-(\d+)([YD])?\/(\d+(?:\.\d+)?)([BCDE]+)?-(\d+[WG0]?)$/;
986
+ const m = t.match(re);
987
+ if (!m) return null;
988
+ return {
989
+ unitCount: m[1] ? Number(m[1]) : 1,
990
+ family: m[2],
991
+ phases: m[3],
992
+ currentA: Number(m[4]),
993
+ connection: m[5] ?? "",
994
+ umKv: Number(m[6]),
995
+ selectorSize: m[7] ?? "",
996
+ tapCode: m[8]
997
+ };
998
+ }
999
+
1000
+ // lib/listIndex.ts
1001
+ var file = listIndex_data_default;
1002
+ var LIST_INDEX_META = {
1003
+ source: file.source,
1004
+ generatedOn: file.generatedOn,
1005
+ keyCount: file.keyCount
1006
+ };
1007
+ var KEYS = new Set(file.keys);
1008
+ function stripMdu(raw) {
1009
+ return raw.replace(
1010
+ /\+(CMA7|SHM-D[A]?|SHM-KX|HMIET|HMJK|ET-SZ6).*$/i,
1011
+ ""
1012
+ );
1013
+ }
1014
+ function compactTypeKey(model) {
1015
+ return stripMdu(model).trim().replace(/\s+/g, "").replace(/[×*]/g, "x");
1016
+ }
1017
+ function octcSig(row) {
1018
+ return [
1019
+ "octc",
1020
+ row.family,
1021
+ row.phases,
1022
+ row.currentA,
1023
+ row.connection,
1024
+ row.umKv,
1025
+ row.selectorSize,
1026
+ row.tapCode
1027
+ ].join("|");
1028
+ }
1029
+ var octcIndex = null;
1030
+ function getOctcIndex() {
1031
+ if (octcIndex) return octcIndex;
1032
+ const bySig = /* @__PURE__ */ new Map();
1033
+ for (const row of file.octc) {
1034
+ const k = octcSig(row);
1035
+ const bucket = bySig.get(k);
1036
+ if (bucket) bucket.push(row);
1037
+ else bySig.set(k, [row]);
1038
+ }
1039
+ octcIndex = { byKey: KEYS, bySig };
1040
+ return octcIndex;
1041
+ }
1042
+ var OCTC_SIZE_FALLBACK = ["A", "B", "E", "D", "C", ""];
1043
+ function lookupOctcRows(parsed) {
1044
+ const idx = getOctcIndex();
1045
+ const tryFam = (family) => {
1046
+ const base = { ...parsed, family };
1047
+ const exact = idx.bySig.get(octcSig(base));
1048
+ if (exact?.length) return exact;
1049
+ if (parsed.selectorSize) return void 0;
1050
+ for (const sz of OCTC_SIZE_FALLBACK) {
1051
+ const hits = idx.bySig.get(octcSig({ ...base, selectorSize: sz }));
1052
+ if (hits?.length) return hits;
1053
+ }
1054
+ return void 0;
1055
+ };
1056
+ return tryFam(parsed.family) ?? (parsed.family === "WDL" ? tryFam("WSL") : void 0);
1057
+ }
1058
+ function listRowExists(model) {
1059
+ const compact = compactTypeKey(model);
1060
+ if (!compact) return false;
1061
+ if (KEYS.has(compact)) return true;
1062
+ const parsed = parseTypeString(compact);
1063
+ if (!parsed) return false;
1064
+ if (parsed.family !== "WSL" && parsed.family !== "WDL") return false;
1065
+ return Boolean(lookupOctcRows(parsed)?.length);
1066
+ }
1067
+ function resolveOctcListKey(model) {
1068
+ const parsed = parseTypeString(model);
1069
+ if (!parsed) return null;
1070
+ if (parsed.family === "WSG") return model;
1071
+ if (parsed.family !== "WSL" && parsed.family !== "WDL") return null;
1072
+ const candidates = /* @__PURE__ */ new Set();
1073
+ const add = (m) => {
1074
+ if (m) candidates.add(m);
1075
+ };
1076
+ add(model);
1077
+ const stripped = model.replace(/(\d+)[YD]\//, "$1/");
1078
+ add(stripped);
1079
+ const sizeNow = parsed.selectorSize;
1080
+ const sizes = ["A", "B", "D", "E"];
1081
+ for (const sz of sizes) {
1082
+ if (!sizeNow) {
1083
+ add(`${model}${sz}`);
1084
+ add(`${stripped}${sz}`);
1085
+ } else {
1086
+ add(model.replace(new RegExp(`${sizeNow}$`), sz));
1087
+ add(stripped.replace(new RegExp(`${sizeNow}$`), sz));
1088
+ }
1089
+ }
1090
+ for (const c of candidates) {
1091
+ if (listRowExists(c)) {
1092
+ const hits2 = lookupOctcRows(parseTypeString(c) ?? parsed);
1093
+ return hits2?.[0]?.listKey ?? compactTypeKey(c);
1094
+ }
1095
+ }
1096
+ const hits = lookupOctcRows(parsed);
1097
+ return hits?.[0]?.listKey ?? null;
1098
+ }
1099
+
1100
+ // lib/typeExists.ts
1101
+ var STAR_ONLY_III = /* @__PURE__ */ new Set(["cm", "cm2", "cmd", "shzv", "shzvg"]);
1102
+ var II_OMITS_CONNECTION = /* @__PURE__ */ new Set(["cm", "cm2", "cmd"]);
1103
+ var COMPOUND_NO_GRADE = /* @__PURE__ */ new Set(["cv", "cv2", "sv", "cvt", "cz"]);
1104
+ function commercialTypeExists(model, series) {
1105
+ const parsed = parseTypeString(model);
1106
+ if (!parsed) return false;
1107
+ const s = series ?? SERIES.find((row) => row.code === parsed.family);
1108
+ if (!s) return false;
1109
+ if (s.code !== parsed.family) return false;
1110
+ if (s.dutyKind === "octc") {
1111
+ if (s.id === "wsg") {
1112
+ const i = s.currents.III?.includes(parsed.currentA) || s.currents.II?.includes(parsed.currentA) || s.currents.I?.includes(parsed.currentA);
1113
+ return Boolean(
1114
+ i && s.umKv.some((u) => Math.abs(u - parsed.umKv) < 0.05)
1115
+ );
1116
+ }
1117
+ return listRowExists(model);
1118
+ }
1119
+ const phase = parsed.phases;
1120
+ const allowedI = s.currents[phase];
1121
+ if (!allowedI?.includes(parsed.currentA)) return false;
1122
+ if (!s.umKv.some((u) => Math.abs(u - parsed.umKv) < 0.05)) return false;
1123
+ if (COMPOUND_NO_GRADE.has(s.id) && parsed.selectorSize) return false;
1124
+ if (s.id === "cv2" && parsed.currentA === 500) return false;
1125
+ if (s.id === "hwv" && parsed.selectorSize) return false;
1126
+ if (phase === "III") {
1127
+ const conn = parsed.connection || "Y";
1128
+ if (!iiiTypeAllowsConnection(s, "III", conn === "D" ? "D" : "Y")) {
1129
+ return false;
1130
+ }
1131
+ }
1132
+ if (phase === "I" && parsed.connection) return false;
1133
+ if (phase === "II") {
1134
+ if (STAR_ONLY_III.has(s.id) && parsed.connection === "D") return false;
1135
+ if (II_OMITS_CONNECTION.has(s.id) && parsed.connection) return false;
1136
+ }
1137
+ return true;
1138
+ }
1139
+ function phaseConnectionLegal(s, phases, conn) {
1140
+ if (s.dutyKind === "octc") return true;
1141
+ if (phases === "III") return iiiTypeAllowsConnection(s, "III", conn);
1142
+ if (phases === "II" && STAR_ONLY_III.has(s.id) && conn === "D") return false;
1143
+ return true;
1144
+ }
1145
+ function resolveOctcListModel(model) {
1146
+ return resolveOctcListKey(model);
1147
+ }
1148
+ function connectionLetterOnPhase(s, phases, connection) {
1149
+ if (s.dutyKind === "octc") return connection === "D" ? "D" : "Y";
1150
+ if (phases === "I") return "any";
1151
+ if (phases === "II" && II_OMITS_CONNECTION.has(s.id)) return "any";
1152
+ if (phases === "II" && STAR_ONLY_III.has(s.id) && connection === "D") {
1153
+ return "any";
1154
+ }
1155
+ if (phases === "III" && !iiiTypeAllowsConnection(s, "III", connection)) {
1156
+ return "any";
1157
+ }
1158
+ return connection;
1159
+ }
1160
+
1161
+ // lib/engine.ts
1162
+ function normOctcContact(raw) {
1163
+ const t = (raw ?? "").replace(/\s+/g, "").toLowerCase();
1164
+ const m = t.match(/^(\d+)x(\d+)$/);
1165
+ if (!m) return "";
1166
+ return `${Number(m[1])}x${Number(m[2])}`;
1167
+ }
1168
+ function octcContactCode(input, seriesId) {
1169
+ const hinted = normOctcContact(input.octcContact);
1170
+ if (hinted) return hinted;
1171
+ let pos = input.positions;
1172
+ if (input.plusMinusSteps != null && input.plusMinusSteps > 0) {
1173
+ pos = 2 * input.plusMinusSteps + 1;
1174
+ }
1175
+ if (seriesId === "wsg") {
1176
+ if (pos == null || pos <= 5) return "4x5";
1177
+ return "6x5";
1178
+ }
1179
+ if (pos == null || pos <= 6) return "6x5";
1180
+ if (pos <= 7) return "7x6";
1181
+ if (pos <= 8) return "8x7";
1182
+ if (pos <= 9) return "9x8";
1183
+ if (pos <= 10) return "10x9";
1184
+ if (pos <= 12) return "12x11";
1185
+ if (pos <= 16) return "16x15";
1186
+ return "18x17";
1187
+ }
1188
+ function octcSizeLetter(um, contact, requested) {
1189
+ if (requested && requested !== "auto") {
1190
+ if (requested === "DE") return "E";
1191
+ return requested;
1192
+ }
1193
+ const c = contact.toLowerCase();
1194
+ if (c === "18x17" || c === "16x15") return "E";
1195
+ if (c === "12x11" || c === "10x9" || c === "12x12") return "D";
1196
+ if (um <= 72.5 + 0.1 && ["6x5", "4x5", "5x4", "5x2", "4x3", "3x2", "7x6"].includes(c)) {
1197
+ return "A";
1198
+ }
1199
+ return "B";
1200
+ }
1201
+ function octcRoman(connection, contact, series) {
1202
+ if (series && series !== "auto") return series;
1203
+ const c = (contact ?? "").toLowerCase();
1204
+ if (c === "5x2" || c === "12x2") return "VIII";
1205
+ if (c === "3x2" || c === "6x2") return "VI";
1206
+ if (c === "5x4" || c === "4x3") return "V";
1207
+ if (c === "12x12") return "VII";
1208
+ return connection === "D" ? "II" : "IV";
1209
+ }
1210
+ function isOctcSeries(s) {
1211
+ return s.dutyKind === "octc";
1212
+ }
1213
+ function maxStepVoltageForSeries(s, pitch) {
1214
+ if (s.id === "cv2" || s.id === "cv" || s.id === "sv") {
1215
+ if (pitch <= 10) return s.id === "cv2" ? 2e3 : 1500;
1216
+ if (pitch <= 12) return s.id === "cv2" ? 1500 : 1400;
1217
+ return s.id === "cv2" ? 1500 : 1e3;
1218
+ }
1219
+ return s.maxStepVoltageV;
1220
+ }
1221
+ function compoundCoversAcrossTap(s, input) {
1222
+ if (s.structure !== "compound") return true;
1223
+ const needBil = input.acrossTapBilKv ?? 0;
1224
+ const needPf = input.acrossTapPfKv ?? 0;
1225
+ if (needBil <= 0 && needPf <= 0) return true;
1226
+ const aLi = s.id === "cv2" ? 200 : 200;
1227
+ const aPf = s.id === "cv2" ? 50 : 50;
1228
+ return aLi + 0.5 >= needBil && aPf + 0.5 >= needPf;
1229
+ }
1230
+ function formatUmToken(um, size, usesSelectorSize) {
1231
+ const umStr = Number.isInteger(um) ? String(um) : String(um);
1232
+ if (!usesSelectorSize || !size) return umStr;
1233
+ return `${umStr}${size}`;
1234
+ }
1235
+ function buildModelString(series, phases, current, connection, umToken, tapCode, unitCount, octcSeries) {
1236
+ const conn = series.connections.includes("any") && connection === "any" ? "" : connection === "any" ? "Y" : connection;
1237
+ let core;
1238
+ if (isOctcSeries(series)) {
1239
+ const yd = conn === "D" ? "D" : "Y";
1240
+ const roman = octcRoman(
1241
+ yd,
1242
+ tapCode.replace(/[A-E]$/i, ""),
1243
+ octcSeries
1244
+ );
1245
+ core = `${series.code}${roman}-${current}${yd}/${umToken}-${tapCode}`;
1246
+ } else if (series.code === "HWDK") {
1247
+ core = `${series.code}${phases}-${current}/${umToken}`;
1248
+ if (tapCode && /^\d+$/.test(tapCode)) core += `-${tapCode}`;
1249
+ } else if (!conn) {
1250
+ core = `${series.code}${phases}-${current}/${umToken}-${tapCode}`;
1251
+ } else {
1252
+ core = `${series.code}${phases}-${current}${conn}/${umToken}-${tapCode}`;
1253
+ }
1254
+ if (unitCount > 1) {
1255
+ return `${unitCount}x${core}`;
1256
+ }
1257
+ return core;
1258
+ }
1259
+ function seriesMatchesMounting(s, input) {
1260
+ if (input.mounting === "dry_type") return s.mounting.includes("dry_type");
1261
+ if (input.mounting === "reactor") return s.mounting.includes("reactor");
1262
+ if (input.mounting === "on_tank" || input.mounting === "external_compartment") {
1263
+ return s.mounting.includes("on_tank") || s.mounting.includes("external_compartment");
1264
+ }
1265
+ return s.mounting.includes("in_tank");
1266
+ }
1267
+ function seriesMatchesMedium(s, input) {
1268
+ if (input.mounting === "dry_type") return s.medium === "dry";
1269
+ if (input.preferVacuum) return true;
1270
+ if (input.medium === "oil_vacuum") return s.vacuum || s.medium === "oil_vacuum";
1271
+ if (input.medium === "oil") return s.medium === "oil" || s.medium === "oil_vacuum";
1272
+ return true;
1273
+ }
1274
+ function adequacyScore(s, input, current, um, unitCount) {
1275
+ let score = 1e4;
1276
+ const fam = FAMILY_MIN_RANK[s.id] ?? s.rank;
1277
+ score -= fam * 100;
1278
+ if (input.preferVacuum && s.vacuum) score += 40;
1279
+ if (input.preferVacuum && !s.vacuum) score -= 800;
1280
+ if (!input.preferVacuum && input.medium === "oil" && !s.vacuum) score += 40;
1281
+ if (!input.preferVacuum && input.medium === "oil" && s.vacuum) score -= 800;
1282
+ if ((input.mounting === "on_tank" || input.mounting === "external_compartment") && s.id === "hwv") {
1283
+ score += 2500;
1284
+ }
1285
+ if (input.mounting === "in_tank" && s.id === "hwv") score -= 4e3;
1286
+ if (unitCount > 1) {
1287
+ score -= 8e3;
1288
+ score -= current * 0.05;
1289
+ }
1290
+ const overshootI = current - input.throughCurrentA;
1291
+ score -= overshootI * 0.25;
1292
+ const overshootUm = um - input.umKv;
1293
+ score -= overshootUm * 3;
1294
+ const psin = s.stepCapacityByCurrent?.[current];
1295
+ if (psin && input.stepVoltageV > 0) {
1296
+ const need = input.throughCurrentA * input.stepVoltageV / 1e3;
1297
+ if (need > 0 && psin >= need) {
1298
+ score -= (psin - need) * 0.01;
1299
+ }
1300
+ }
1301
+ return score;
1302
+ }
1303
+ function ratingCoversDuty(wanted, rating) {
1304
+ if (wanted <= rating + 0.01) return true;
1305
+ return wanted <= rating * 1.01 + 0.5;
1306
+ }
1307
+ function buildAttempts(s, input) {
1308
+ const out = [];
1309
+ const covering = coveringUms(input.umKv, s.umKv).filter(
1310
+ (u) => u >= input.umKv - 0.1
1311
+ );
1312
+ if (!covering.length) return out;
1313
+ const um0 = covering[0];
1314
+ const ums = (FAMILY_MIN_RANK[s.id] ?? s.rank) < 40 ? covering : [um0];
1315
+ if (s.id === "cz") {
1316
+ const curI = nearestCurrent(input.throughCurrentA, s.currents.I ?? []);
1317
+ if (curI != null && ratingCoversDuty(input.throughCurrentA, curI)) {
1318
+ out.push({
1319
+ series: s,
1320
+ phases: "I",
1321
+ current: curI,
1322
+ um: um0,
1323
+ unitCount: 3
1324
+ });
1325
+ }
1326
+ return out;
1327
+ }
1328
+ const list = s.currents[input.phases];
1329
+ const maxPhase = list?.length ? Math.max(...list) : null;
1330
+ const connIllegal = !phaseConnectionLegal(
1331
+ s,
1332
+ input.phases,
1333
+ input.connection
1334
+ );
1335
+ if (!connIllegal && maxPhase != null && ratingCoversDuty(input.throughCurrentA, maxPhase)) {
1336
+ const cur = nearestCurrent(input.throughCurrentA, list);
1337
+ if (cur != null) {
1338
+ for (const um of ums) {
1339
+ out.push({
1340
+ series: s,
1341
+ phases: input.phases,
1342
+ current: cur,
1343
+ um,
1344
+ unitCount: 1
1345
+ });
1346
+ }
1347
+ }
1348
+ }
1349
+ if (isOctcSeries(s)) return out;
1350
+ if (s.currents.I?.length && (input.phases === "III" || connIllegal)) {
1351
+ const curI = nearestCurrent(input.throughCurrentA, s.currents.I);
1352
+ if (curI != null) {
1353
+ out.push({
1354
+ series: s,
1355
+ phases: "I",
1356
+ current: curI,
1357
+ um: um0,
1358
+ unitCount: 3,
1359
+ deltaForced: connIllegal
1360
+ });
1361
+ }
1362
+ }
1363
+ return out;
1364
+ }
1365
+ function diversifyResults(ranked) {
1366
+ if (ranked.length <= 1) return ranked;
1367
+ const primary = ranked[0];
1368
+ const used = /* @__PURE__ */ new Set([primary.model]);
1369
+ const rest = [];
1370
+ const take = (pred) => {
1371
+ const hit = ranked.find((r) => !used.has(r.model) && pred(r));
1372
+ if (hit) {
1373
+ rest.push(hit);
1374
+ used.add(hit.model);
1375
+ }
1376
+ };
1377
+ take(
1378
+ (r) => r.seriesId === primary.seriesId && r.unitCount === primary.unitCount && Math.abs(r.umKv - primary.umKv) < 0.1 && r.currentA !== primary.currentA
1379
+ );
1380
+ take(
1381
+ (r) => r.seriesId === primary.seriesId && r.unitCount === primary.unitCount && r.umKv > primary.umKv + 0.1
1382
+ );
1383
+ take(
1384
+ (r) => r.seriesId !== primary.seriesId && r.unitCount === 1 && r.umKv <= primary.umKv + 0.1
1385
+ );
1386
+ for (const r of ranked) {
1387
+ if (used.has(r.model)) continue;
1388
+ rest.push(r);
1389
+ used.add(r.model);
1390
+ }
1391
+ return [primary, ...rest];
1392
+ }
1393
+ function selectOltc(input) {
1394
+ const errorsEn = [];
1395
+ const errorsZh = [];
1396
+ if (!input.throughCurrentA || input.throughCurrentA <= 0) {
1397
+ errorsEn.push("Enter rated through-current (A).");
1398
+ errorsZh.push("\u8BF7\u586B\u5199\u989D\u5B9A\u901A\u8FC7\u7535\u6D41\uFF08A\uFF09\u3002");
1399
+ }
1400
+ if (!input.umKv || input.umKv <= 0) {
1401
+ errorsEn.push("Enter highest voltage for equipment Um (kV).");
1402
+ errorsZh.push("\u8BF7\u586B\u5199\u8BBE\u5907\u6700\u9AD8\u7535\u538B Um\uFF08kV\uFF09\u3002");
1403
+ }
1404
+ if (input.stepVoltageV < 0) {
1405
+ errorsEn.push("Step voltage cannot be negative.");
1406
+ errorsZh.push("\u7EA7\u7535\u538B\u4E0D\u80FD\u4E3A\u8D1F\u3002");
1407
+ }
1408
+ if (errorsEn.length) {
1409
+ return { ok: false, results: [], errorsEn, errorsZh };
1410
+ }
1411
+ const tap = resolveTapFields({
1412
+ regulation: input.regulation,
1413
+ positions: input.positions,
1414
+ plusMinusSteps: input.plusMinusSteps,
1415
+ pitch: input.pitch,
1416
+ midPositions: input.midPositions
1417
+ });
1418
+ const wantOctc = input.dutyKind === "octc";
1419
+ let candidates = SERIES.filter((s) => {
1420
+ if (isOctcSeries(s) !== wantOctc) return false;
1421
+ return seriesMatchesMounting(s, input) && seriesMatchesMedium(s, input);
1422
+ });
1423
+ candidates = candidates.filter((s) => {
1424
+ if (input.connection === "any") return true;
1425
+ return s.connections.includes(input.connection) || s.connections.includes("any");
1426
+ });
1427
+ const wantStruct = input.preferStructure;
1428
+ if (wantStruct && wantStruct !== "auto") {
1429
+ candidates = candidates.filter((s) => s.structure === wantStruct);
1430
+ }
1431
+ if (!candidates.length) {
1432
+ return {
1433
+ ok: false,
1434
+ results: [],
1435
+ errorsEn: [
1436
+ wantOctc ? "No OCTC family matches this mounting / medium combination. Adjust filters or contact engineering." : "No OLTC family matches this mounting / medium combination. Adjust filters or contact engineering."
1437
+ ],
1438
+ errorsZh: [
1439
+ wantOctc ? "\u6CA1\u6709\u65E0\u8F7D\u7CFB\u5217\u5339\u914D\u5F53\u524D\u5B89\u88C5\u4F4D\u7F6E/\u4ECB\u8D28\u3002\u8BF7\u8C03\u6574\u6761\u4EF6\uFF0C\u6216\u8054\u7CFB\u5DE5\u7A0B\u786E\u8BA4\u3002" : "\u6CA1\u6709\u7CFB\u5217\u5339\u914D\u5F53\u524D\u5B89\u88C5\u4F4D\u7F6E/\u4ECB\u8D28\u3002\u8BF7\u8C03\u6574\u6761\u4EF6\uFF0C\u6216\u8054\u7CFB\u5DE5\u7A0B\u786E\u8BA4\u3002"
1440
+ ]
1441
+ };
1442
+ }
1443
+ const results = [];
1444
+ const seen = /* @__PURE__ */ new Set();
1445
+ for (const s of candidates) {
1446
+ if (!compoundCoversAcrossTap(s, input)) continue;
1447
+ if (!isOctcSeries(s)) {
1448
+ const pitchMaxUst = maxStepVoltageForSeries(s, tap.pitch);
1449
+ if (input.stepVoltageV > pitchMaxUst + 0.5) continue;
1450
+ const maxPos = input.regulation === "linear" ? s.maxPositionsLinear : s.maxPositionsWithChangeOver;
1451
+ if (tap.positions > maxPos) continue;
1452
+ } else {
1453
+ let octcPos = input.positions;
1454
+ if (input.plusMinusSteps != null && input.plusMinusSteps > 0) {
1455
+ octcPos = 2 * input.plusMinusSteps + 1;
1456
+ }
1457
+ if (octcPos != null && octcPos > s.maxPositionsLinear) continue;
1458
+ }
1459
+ for (const att of buildAttempts(s, input)) {
1460
+ const phaseCurrents = s.currents[att.phases] ?? s.currents.I ?? [];
1461
+ const need = input.stepVoltageV > 0 ? input.throughCurrentA * input.stepVoltageV / 1e3 : 0;
1462
+ const capacityOk = (c) => {
1463
+ const psin = s.stepCapacityByCurrent?.[c];
1464
+ if (psin != null && need > psin + 0.5) return false;
1465
+ return true;
1466
+ };
1467
+ let covering = phaseCurrents.filter((c) => {
1468
+ if (!ratingCoversDuty(input.throughCurrentA, c)) return false;
1469
+ if (input.throughCurrentA + 1 < c && input.throughCurrentA > c * 0.97) {
1470
+ return false;
1471
+ }
1472
+ return capacityOk(c);
1473
+ });
1474
+ if (!covering.length) {
1475
+ const maxKeep = phaseCurrents.filter(
1476
+ (c) => ratingCoversDuty(input.throughCurrentA, c) && capacityOk(c)
1477
+ );
1478
+ if (maxKeep.length) covering = [Math.max(...maxKeep)];
1479
+ }
1480
+ if (!covering.length) continue;
1481
+ const currentsToEmit = covering.slice(0, 2);
1482
+ for (const current of currentsToEmit) {
1483
+ const octc = isOctcSeries(s);
1484
+ const contact = octc ? octcContactCode(input, s.id) : "";
1485
+ const selectorSize = octc ? octcSizeLetter(att.um, contact, input.selectorSize ?? "auto") : s.usesSelectorSize ? pickSelectorSize(
1486
+ att.um,
1487
+ input.selectorSize ?? "auto",
1488
+ input.bilKv,
1489
+ input.pfKv,
1490
+ input.acrossTapBilKv,
1491
+ input.acrossTapPfKv
1492
+ ) : "";
1493
+ const tapCode = octc ? contact : tap.tapCode;
1494
+ const modelTap = octc ? `${contact}${selectorSize}` : s.id === "cz" || s.id === "hwdk" ? String(tap.positions) : tap.tapCode;
1495
+ const umToken = formatUmToken(att.um, selectorSize, s.usesSelectorSize);
1496
+ const phases = phaseToken(att.phases);
1497
+ const conn = input.connection === "any" ? s.connections.includes("Y") ? "Y" : s.connections[0] : input.connection;
1498
+ let mduStr = "";
1499
+ const mduPref = input.mdu ?? "none";
1500
+ if (mduPref && mduPref !== "none" && mduPref !== "auto") {
1501
+ mduStr = mduPref;
1502
+ } else if (mduPref === "auto") {
1503
+ mduStr = s.defaultMdu;
1504
+ }
1505
+ const modelConn = connectionLetterOnPhase(
1506
+ s,
1507
+ att.phases,
1508
+ conn
1509
+ );
1510
+ let finalModel = buildModelString(
1511
+ s,
1512
+ phases,
1513
+ current,
1514
+ modelConn,
1515
+ umToken,
1516
+ modelTap,
1517
+ att.unitCount,
1518
+ input.octcSeries
1519
+ );
1520
+ if (att.phases === "I") {
1521
+ finalModel = finalModel.replace(
1522
+ new RegExp(`(${s.code}I-\\d+)[YD]/`),
1523
+ "$1/"
1524
+ );
1525
+ } else if (att.phases === "II" && modelConn === "any") {
1526
+ finalModel = finalModel.replace(
1527
+ new RegExp(`(${s.code}II-\\d+)[YD]/`),
1528
+ "$1/"
1529
+ );
1530
+ }
1531
+ if (octc) {
1532
+ const listed = resolveOctcListModel(finalModel);
1533
+ if (!listed) continue;
1534
+ finalModel = listed;
1535
+ } else if (!commercialTypeExists(finalModel, s)) {
1536
+ continue;
1537
+ }
1538
+ if (seen.has(finalModel)) continue;
1539
+ seen.add(finalModel);
1540
+ const modelWithMdu = mduStr ? `${finalModel}+${mduStr}` : finalModel;
1541
+ const score = adequacyScore(s, input, current, att.um, att.unitCount);
1542
+ const reasonsEn = [];
1543
+ const reasonsZh = [];
1544
+ const warningsEn = [];
1545
+ const warningsZh = [];
1546
+ reasonsEn.push(
1547
+ `Minimum-adequate path: ${s.nameEn}, Ium ${current} A \u2265 ${input.throughCurrentA} A, Um ${att.um} kV.`
1548
+ );
1549
+ reasonsZh.push(
1550
+ `\u6700\u4F4E\u6EE1\u8DB3\u8DEF\u5F84\uFF1A${s.nameZh}\uFF0CIum ${current} A \u2265 \u9700\u6C42 ${input.throughCurrentA} A\uFF0CUm ${att.um} kV\u3002`
1551
+ );
1552
+ if (s.structure === "compound" && !octc) {
1553
+ reasonsEn.push(
1554
+ "Compound type fits duty \u2014 preferred over larger combined types when eligible."
1555
+ );
1556
+ reasonsZh.push(
1557
+ "\u590D\u5408\u5F0F\u6EE1\u8DB3\u5DE5\u51B5\u65F6\u4F18\u5148\u4E8E\u66F4\u5927\u7684\u7EC4\u5408\u5F0F\uFF08\u975E\u9ED8\u8BA4 SHZV\uFF09\u3002"
1558
+ );
1559
+ }
1560
+ if (s.usesSelectorSize) {
1561
+ reasonsEn.push(
1562
+ `Tap selector grade ${selectorSize} (smallest covering Um` + (input.acrossTapBilKv ? ` + across-tap BIL ${input.acrossTapBilKv} kV` : "") + ")."
1563
+ );
1564
+ reasonsZh.push(
1565
+ `\u5206\u63A5\u9009\u62E9\u5668\u7B49\u7EA7 ${selectorSize}\uFF08\u6EE1\u8DB3 Um` + (input.acrossTapBilKv ? ` \u4E0E\u8C03\u538B\u7ED5\u7EC4\u95F4 BIL ${input.acrossTapBilKv} kV` : "") + " \u7684\u6700\u5C0F\u89C4\u683C\uFF09\u3002"
1566
+ );
1567
+ }
1568
+ if (octc) {
1569
+ const roman = octcRoman(conn, contact, input.octcSeries);
1570
+ reasonsEn.push(
1571
+ `OCTC contact ${contact}${selectorSize} (${s.code}${roman}).`
1572
+ );
1573
+ reasonsZh.push(
1574
+ `\u65E0\u8F7D\u89E6\u5934 ${contact}${selectorSize}\uFF08${s.code}${roman}\uFF09\u3002`
1575
+ );
1576
+ } else {
1577
+ reasonsEn.push(
1578
+ `Tap code ${tap.tapCode}: pitch ${tap.pitch}, ${tap.positions} pos, mid ${tap.mid}, ${input.regulation}.`
1579
+ );
1580
+ reasonsZh.push(
1581
+ `\u5206\u63A5\u4EE3\u7801 ${tap.tapCode}\uFF1A\u8282\u8DDD ${tap.pitch}\uFF0C${tap.positions} \u4F4D\uFF0C\u4E2D\u95F4\u4F4D ${tap.mid}\u3002`
1582
+ );
1583
+ }
1584
+ if (att.unitCount > 1) {
1585
+ if (att.deltaForced) {
1586
+ reasonsEn.push(
1587
+ `${att.unitCount}\xD7 single-phase \u2014 no brochure III type for this connection (e.g. CM2III-\u2026D does not exist).`
1588
+ );
1589
+ reasonsZh.push(
1590
+ `${att.unitCount} \u53F0\u5355\u76F8 \u2014 \u6837\u672C\u6CA1\u6709\u8FD9\u4E2A\u8FDE\u63A5\u7684\u4E09\u76F8\u578B\u53F7\uFF08\u6CA1\u6709 CM2III-\u2026D\uFF09\u3002`
1591
+ );
1592
+ } else {
1593
+ reasonsEn.push(
1594
+ `${att.unitCount}\xD7 single-phase \u2014 no single III unit covers this I\u1D64 (prefer one SHZV/SHZVG when it fits; 3\xD7 costs more).`
1595
+ );
1596
+ reasonsZh.push(
1597
+ `${att.unitCount} \u53F0\u5355\u76F8 \u2014 \u65E0\u4E09\u76F8\u6574\u673A\u53EF\u8986\u76D6\u6B64\u7535\u6D41\uFF08\u6709 SHZV/SHZVG \u6574\u673A\u65F6\u4F18\u5148\uFF1B3\xD7 \u66F4\u8D35\uFF09\u3002`
1598
+ );
1599
+ }
1600
+ }
1601
+ const earth = EARTH_INSULATION[att.um];
1602
+ if (earth) {
1603
+ reasonsEn.push(
1604
+ `Earth insulation (catalogue): PF ${earth.pf} / LI ${earth.bil} kV.`
1605
+ );
1606
+ reasonsZh.push(
1607
+ `\u5BF9\u5730\u7EDD\u7F18\uFF08\u6837\u672C\uFF09\uFF1A\u5DE5\u9891 ${earth.pf} / \u96F7\u7535 ${earth.bil} kV\u3002`
1608
+ );
1609
+ }
1610
+ if (current > input.throughCurrentA + 0.5) {
1611
+ warningsEn.push(`Through-current rounded up to ${current} A.`);
1612
+ warningsZh.push(`\u901A\u8FC7\u7535\u6D41\u5DF2\u4E0A\u9760\u81F3 ${current} A\u3002`);
1613
+ }
1614
+ const coveringUm = nearestUm(input.umKv, s.umKv);
1615
+ const extraUm = coveringUm != null && att.um > coveringUm + 0.1;
1616
+ if (extraUm) {
1617
+ reasonsEn.push(
1618
+ `Next catalogue Um ${att.um} kV (list twin of ${coveringUm} kV).`
1619
+ );
1620
+ reasonsZh.push(
1621
+ `\u76EE\u5F55\u4E0B\u4E00\u6863 Um ${att.um} kV\uFF08${coveringUm} kV \u7684\u4EF7\u76EE\u8868\u914D\u5BF9\uFF09\u3002`
1622
+ );
1623
+ } else if (att.um > input.umKv + 0.1) {
1624
+ warningsEn.push(`Um rounded up to ${att.um} kV.`);
1625
+ warningsZh.push(`Um \u5DF2\u4E0A\u9760\u81F3 ${att.um} kV\u3002`);
1626
+ }
1627
+ warningsEn.push(
1628
+ "Indicative selection from published technical data. Final OS requires engineering confirmation."
1629
+ );
1630
+ warningsZh.push(
1631
+ "\u4F9D\u636E\u516C\u5F00\u6280\u672F\u6837\u672C\u7684\u9009\u578B\u5EFA\u8BAE\u3002\u6700\u7EC8 OS \u987B\u5DE5\u7A0B\u786E\u8BA4\u3002"
1632
+ );
1633
+ const maxStepVoltageV = octc ? null : maxStepVoltageForSeries(s, tap.pitch);
1634
+ const stepCapacityKva = s.stepCapacityByCurrent?.[current] ?? null;
1635
+ let confidence = 0.88;
1636
+ if (att.unitCount > 1) confidence -= 0.08;
1637
+ if (warningsEn.length > 2) confidence -= 0.03;
1638
+ confidence = Math.max(0.45, Math.min(0.96, confidence));
1639
+ results.push({
1640
+ seriesId: s.id,
1641
+ seriesCode: s.code,
1642
+ model: finalModel,
1643
+ modelWithMdu,
1644
+ phases: att.phases,
1645
+ currentA: current,
1646
+ connection: conn,
1647
+ umKv: att.um,
1648
+ selectorSize,
1649
+ umToken,
1650
+ tapCode,
1651
+ regulation: input.regulation,
1652
+ changeOver: octc ? "0" : tap.changeOver,
1653
+ pitch: octc ? 0 : tap.pitch,
1654
+ positions: octc ? input.positions ?? (input.plusMinusSteps != null && input.plusMinusSteps > 0 ? 2 * input.plusMinusSteps + 1 : 5) : tap.positions,
1655
+ mid: octc ? 0 : tap.mid,
1656
+ mdu: mduStr,
1657
+ unitCount: att.unitCount,
1658
+ maxStepVoltageV,
1659
+ stepCapacityKva,
1660
+ earthPfKv: earth?.pf ?? null,
1661
+ earthBilKv: earth?.bil ?? null,
1662
+ reasonsEn,
1663
+ reasonsZh,
1664
+ warningsEn,
1665
+ warningsZh,
1666
+ confidence,
1667
+ adequacyScore: score
1668
+ });
1669
+ }
1670
+ }
1671
+ }
1672
+ let final = results;
1673
+ if (input.preferVacuum) {
1674
+ const vac = results.filter(
1675
+ (r) => SERIES.find((s) => s.id === r.seriesId)?.vacuum
1676
+ );
1677
+ if (vac.length) final = vac;
1678
+ } else if (input.medium === "oil") {
1679
+ const oil = results.filter(
1680
+ (r) => SERIES.find((s) => s.id === r.seriesId)?.vacuum === false
1681
+ );
1682
+ if (oil.length) final = oil;
1683
+ }
1684
+ final.sort((a, b) => {
1685
+ if (a.unitCount !== b.unitCount) return a.unitCount - b.unitCount;
1686
+ if (b.adequacyScore !== a.adequacyScore)
1687
+ return b.adequacyScore - a.adequacyScore;
1688
+ return b.confidence - a.confidence;
1689
+ });
1690
+ if (!final.length) {
1691
+ return {
1692
+ ok: false,
1693
+ results: [],
1694
+ errorsEn: [
1695
+ "Parameters out of catalogue range (current, Um, step voltage, or positions)."
1696
+ ],
1697
+ errorsZh: [
1698
+ "\u53C2\u6570\u8D85\u51FA\u76EE\u5F55\u8303\u56F4\uFF08\u7535\u6D41\u3001Um\u3001\u7EA7\u7535\u538B\u6216\u6863\u4F4D\u6570\uFF09\u3002"
1699
+ ]
1700
+ };
1701
+ }
1702
+ return {
1703
+ ok: true,
1704
+ results: diversifyResults(final).slice(0, 20),
1705
+ errorsEn: [],
1706
+ errorsZh: []
1707
+ };
1708
+ }
1709
+ function stepUpOf(primary, results) {
1710
+ const same = results.filter(
1711
+ (r) => r.model !== primary.model && r.seriesId === primary.seriesId && r.phases === primary.phases && r.unitCount === primary.unitCount && r.currentA > primary.currentA
1712
+ );
1713
+ if (!same.length) return null;
1714
+ same.sort((a, b) => a.currentA - b.currentA);
1715
+ return same[0];
1716
+ }
1717
+ function pickOtherOptions(results, n = 3) {
1718
+ if (results.length <= 1) return [];
1719
+ const primary = results[0];
1720
+ const stepUp = stepUpOf(primary, results);
1721
+ const preferred = [];
1722
+ const overflow = [];
1723
+ if (stepUp) preferred.push(stepUp);
1724
+ for (const r of results.slice(1)) {
1725
+ if (r.model === primary.model) continue;
1726
+ if (preferred.some((x) => x.model === r.model)) continue;
1727
+ const sameFamilyUm = preferred.some(
1728
+ (x) => x.seriesCode === r.seriesCode && Math.abs(x.umKv - r.umKv) < 0.1
1729
+ );
1730
+ if (sameFamilyUm) overflow.push(r);
1731
+ else preferred.push(r);
1732
+ }
1733
+ return [...preferred, ...overflow].slice(0, n);
1734
+ }
1735
+
1736
+ // lib/cli.ts
1737
+ var CliError = class extends Error {
1738
+ constructor(message) {
1739
+ super(message);
1740
+ this.name = "CliError";
1741
+ }
1742
+ };
1743
+ function num(raw, flag) {
1744
+ const n = Number(String(raw).replace(",", "."));
1745
+ if (!Number.isFinite(n)) throw new CliError(`Invalid number for ${flag}: ${raw}`);
1746
+ return n;
1747
+ }
1748
+ function parseCliArgs(argv) {
1749
+ const out = {
1750
+ conn: "Y",
1751
+ reg: "reversing",
1752
+ octc: false,
1753
+ structure: "auto",
1754
+ mount: "in_tank",
1755
+ vacuum: true,
1756
+ oil: false,
1757
+ phases: "III",
1758
+ json: false,
1759
+ help: false,
1760
+ pm: 8
1761
+ };
1762
+ const take = (i, flag) => {
1763
+ const v = argv[i + 1];
1764
+ if (v == null || v.startsWith("-")) {
1765
+ throw new CliError(`Missing value for ${flag}`);
1766
+ }
1767
+ return [v, i + 1];
1768
+ };
1769
+ for (let i = 0; i < argv.length; i++) {
1770
+ const a = argv[i];
1771
+ if (a === "-h" || a === "--help") {
1772
+ out.help = true;
1773
+ continue;
1774
+ }
1775
+ if (a === "--json") {
1776
+ out.json = true;
1777
+ continue;
1778
+ }
1779
+ if (a === "--octc") {
1780
+ out.octc = true;
1781
+ continue;
1782
+ }
1783
+ if (a === "--oil") {
1784
+ out.oil = true;
1785
+ out.vacuum = false;
1786
+ continue;
1787
+ }
1788
+ if (a === "--vacuum") {
1789
+ out.vacuum = true;
1790
+ out.oil = false;
1791
+ continue;
1792
+ }
1793
+ if (a === "--iu" || a === "--imax") {
1794
+ const [v, n] = take(i, a);
1795
+ out.iu = num(v, a);
1796
+ i = n;
1797
+ continue;
1798
+ }
1799
+ if (a === "--mva") {
1800
+ const [v, n] = take(i, a);
1801
+ out.mva = num(v, a);
1802
+ i = n;
1803
+ continue;
1804
+ }
1805
+ if (a === "--kv") {
1806
+ const [v, n] = take(i, a);
1807
+ out.kv = num(v, a);
1808
+ i = n;
1809
+ continue;
1810
+ }
1811
+ if (a === "--um") {
1812
+ const [v, n] = take(i, a);
1813
+ out.um = num(v, a);
1814
+ i = n;
1815
+ continue;
1816
+ }
1817
+ if (a === "--ust") {
1818
+ const [v, n] = take(i, a);
1819
+ out.ust = num(v, a);
1820
+ i = n;
1821
+ continue;
1822
+ }
1823
+ if (a === "--step-pct") {
1824
+ const [v, n] = take(i, a);
1825
+ out.stepPct = num(v, a);
1826
+ i = n;
1827
+ continue;
1828
+ }
1829
+ if (a === "--k") {
1830
+ const [v, n] = take(i, a);
1831
+ out.k = num(v, a);
1832
+ i = n;
1833
+ continue;
1834
+ }
1835
+ if (a === "--conn" || a === "--connection") {
1836
+ const [v, n] = take(i, a);
1837
+ const c = v.toUpperCase();
1838
+ if (c !== "Y" && c !== "D") throw new CliError(`--conn must be Y or D`);
1839
+ out.conn = c;
1840
+ i = n;
1841
+ continue;
1842
+ }
1843
+ if (a === "--reg") {
1844
+ const [v, n] = take(i, a);
1845
+ const r = v.toUpperCase();
1846
+ if (r === "W" || r === "REVERSING") out.reg = "reversing";
1847
+ else if (r === "G" || r === "COARSE" || r === "COARSE_FINE") {
1848
+ out.reg = "coarse_fine";
1849
+ } else if (r === "0" || r === "LINEAR") out.reg = "linear";
1850
+ else throw new CliError(`--reg must be W, G, or 0`);
1851
+ i = n;
1852
+ continue;
1853
+ }
1854
+ if (a === "--pm") {
1855
+ const [v, n] = take(i, a);
1856
+ out.pm = num(v, a);
1857
+ i = n;
1858
+ continue;
1859
+ }
1860
+ if (a === "--positions" || a === "--pos") {
1861
+ const [v, n] = take(i, a);
1862
+ out.positions = num(v, a);
1863
+ i = n;
1864
+ continue;
1865
+ }
1866
+ if (a === "--structure") {
1867
+ const [v, n] = take(i, a);
1868
+ const s = v.toLowerCase();
1869
+ const map = {
1870
+ auto: "auto",
1871
+ combined: "combined",
1872
+ compound: "compound",
1873
+ cage: "cage",
1874
+ drum: "drum",
1875
+ \u7EC4\u5408\u5F0F: "combined",
1876
+ \u590D\u5408\u5F0F: "compound",
1877
+ \u7B3C\u5F0F: "cage",
1878
+ \u9F13\u5F0F: "drum"
1879
+ };
1880
+ if (!(s in map) && !(v in map)) {
1881
+ throw new CliError(
1882
+ `--structure must be auto|combined|compound|cage|drum`
1883
+ );
1884
+ }
1885
+ out.structure = map[s] ?? map[v];
1886
+ i = n;
1887
+ continue;
1888
+ }
1889
+ if (a === "--series") {
1890
+ const [v, n] = take(i, a);
1891
+ const r = v.toUpperCase();
1892
+ const ok = ["II", "IV", "V", "VI", "VII", "VIII", "AUTO"];
1893
+ if (!ok.includes(r)) {
1894
+ throw new CliError(`--series must be II|IV|V|VI|VII|VIII`);
1895
+ }
1896
+ out.series = r === "AUTO" ? "auto" : r;
1897
+ i = n;
1898
+ continue;
1899
+ }
1900
+ if (a === "--mount") {
1901
+ const [v, n] = take(i, a);
1902
+ const m = v.toLowerCase().replace("_", "-");
1903
+ if (m === "in-tank" || m === "intank") out.mount = "in_tank";
1904
+ else if (m === "on-tank" || m === "ontank") out.mount = "on_tank";
1905
+ else if (m === "dry" || m === "dry-type") out.mount = "dry_type";
1906
+ else throw new CliError(`--mount must be in-tank|on-tank|dry`);
1907
+ i = n;
1908
+ continue;
1909
+ }
1910
+ if (a === "--contact") {
1911
+ const [v, n] = take(i, a);
1912
+ out.contact = v;
1913
+ i = n;
1914
+ continue;
1915
+ }
1916
+ if (a === "--phases") {
1917
+ const [v, n] = take(i, a);
1918
+ const p = v.toUpperCase();
1919
+ if (p !== "I" && p !== "II" && p !== "III") {
1920
+ throw new CliError(`--phases must be I, II, or III`);
1921
+ }
1922
+ out.phases = p;
1923
+ i = n;
1924
+ continue;
1925
+ }
1926
+ if (a === "--duty") {
1927
+ const [v, n] = take(i, a);
1928
+ const d = v.toLowerCase();
1929
+ if (d === "octc" || d === "off" || d === "detc") out.octc = true;
1930
+ else if (d === "oltc" || d === "on") out.octc = false;
1931
+ else throw new CliError(`--duty must be oltc or octc`);
1932
+ i = n;
1933
+ continue;
1934
+ }
1935
+ throw new CliError(`Unknown flag: ${a}`);
1936
+ }
1937
+ return out;
1938
+ }
1939
+ var CLI_HELP = `oltc \u2014 Huaming OLTC/OCTC type selection (package: oltc-selector, no prices)
1940
+
1941
+ Usage:
1942
+ oltc --iu 400 --um 72.5 --conn Y --reg W --pm 8
1943
+ oltc --mva 25 --kv 110 --conn Y --reg W --pm 8
1944
+ oltc --octc --iu 800 --um 72.5 --conn D --series II --contact 6x5
1945
+ oltc --iu 600 --um 72.5 --conn Y --reg W --pm 8 --structure combined
1946
+
1947
+ Flags:
1948
+ --iu, --imax A Max through-current (Imax). No safety factor.
1949
+ --mva MVA --kv kV Capacity path: Imax from rated I, minus steps, --step-pct, --k
1950
+ --um kV Equipment Um (OLTC). With --mva/--kv, derived if omitted.
1951
+ --ust V Step voltage. With --mva/--kv/--step-pct, derived if omitted.
1952
+ --step-pct % Step as percent (1.25 means 1.25%). Capacity path only.
1953
+ --k n Safety factor on capacity path only (default 1.2).
1954
+ --conn Y|D Switch connection (star / delta). Default Y.
1955
+ --reg W|G|0 Reversing / coarse-fine / linear. Default W.
1956
+ --pm N \xB1 steps. Default 8.
1957
+ --pos, --positions Linear / OCTC positions.
1958
+ --octc Off-circuit (\u65E0\u8F7D). Default on-load.
1959
+ --structure auto|combined|compound|cage|drum (\u7EC4\u5408\u5F0F/\u590D\u5408\u5F0F/\u7B3C\u5F0F/\u9F13\u5F0F)
1960
+ --series II|IV|V|VI|VII|VIII OCTC wiring. Default auto (Y\u2192IV, D\u2192II).
1961
+ --mount in-tank|on-tank|dry. Default in-tank.
1962
+ --oil / --vacuum Switching medium. Default vacuum (on-load).
1963
+ --contact OCTC contact e.g. 6x5.
1964
+ --phases I|II|III. Default III.
1965
+ --json Machine-readable result (still no prices).
1966
+ -h, --help This text.
1967
+
1968
+ Defaults match the web first paint: on-load, in-tank vacuum, structure auto,
1969
+ \xB18 mid-3 reversing. Omitting --octc and --structure auto is minimum-adequate.
1970
+ `;
1971
+ function cliToSelectInput(args) {
1972
+ const dutyKind = args.octc ? "octc" : "oltc";
1973
+ const oil = args.octc || args.oil || !args.vacuum;
1974
+ const medium = args.mount === "dry_type" ? "dry" : oil ? "oil" : "oil_vacuum";
1975
+ let iu = args.iu;
1976
+ let um = args.um;
1977
+ let ust = args.ust ?? 0;
1978
+ if (args.mva != null) {
1979
+ if (!(args.kv != null && args.kv > 0)) {
1980
+ throw new CliError("--mva requires --kv (tap-side rated voltage)");
1981
+ }
1982
+ const rated = throughCurrentFromRated(args.mva, args.kv, args.conn);
1983
+ if (!Number.isFinite(rated) || rated <= 0) {
1984
+ throw new CliError("Could not compute rated current from --mva/--kv");
1985
+ }
1986
+ const pct = args.stepPct != null && args.stepPct > 0 ? args.stepPct / 100 : 0.0125;
1987
+ const minus = args.pm != null && args.pm > 0 ? args.pm : 8;
1988
+ const iMax = maxThroughCurrent(rated, minus, pct);
1989
+ const k = args.k != null && args.k > 0 ? args.k : 1.2;
1990
+ iu = iMax * k;
1991
+ if (um == null || !(um > 0)) {
1992
+ um = oltcUmFromRatedKv(args.kv, args.conn);
1993
+ }
1994
+ if (!(ust > 0)) {
1995
+ const v = stepVoltageFromPercent(args.kv, pct, args.conn);
1996
+ if (Number.isFinite(v) && v > 0) ust = v;
1997
+ }
1998
+ }
1999
+ if (iu == null || !(iu > 0)) {
2000
+ throw new CliError("Need --iu (Imax) or --mva plus --kv");
2001
+ }
2002
+ if (um == null || !(um > 0)) {
2003
+ throw new CliError("Need --um, or --mva/--kv so Um can be derived");
2004
+ }
2005
+ const input = {
2006
+ mounting: args.mount,
2007
+ medium,
2008
+ preferVacuum: !oil && dutyKind === "oltc",
2009
+ dutyKind,
2010
+ phases: args.phases,
2011
+ connection: args.conn,
2012
+ throughCurrentA: iu,
2013
+ umKv: um,
2014
+ stepVoltageV: ust,
2015
+ regulation: args.octc ? "linear" : args.reg,
2016
+ selectorSize: "auto",
2017
+ preferStructure: args.structure,
2018
+ mdu: "none"
2019
+ };
2020
+ if (args.octc) {
2021
+ input.octcSeries = args.series ?? "auto";
2022
+ if (args.contact) input.octcContact = args.contact;
2023
+ if (args.positions != null) input.positions = args.positions;
2024
+ else if (args.pm != null && args.pm > 0) {
2025
+ input.positions = Math.round(2 * args.pm + 1);
2026
+ }
2027
+ } else if (args.reg === "linear") {
2028
+ if (args.positions != null) input.positions = args.positions;
2029
+ } else {
2030
+ if (args.pm != null && args.pm > 0) {
2031
+ input.plusMinusSteps = args.pm;
2032
+ input.midPositions = 3;
2033
+ }
2034
+ if (args.positions != null) input.positions = args.positions;
2035
+ }
2036
+ return input;
2037
+ }
2038
+ function formatCliText(input) {
2039
+ const out = selectOltc(input);
2040
+ if (!out.ok || !out.results.length) {
2041
+ const err = [...out.errorsZh, ...out.errorsEn].join("\n") || "No type found.";
2042
+ throw new CliError(err);
2043
+ }
2044
+ const primary = out.results[0];
2045
+ if (!commercialTypeExists(primary.model)) {
2046
+ throw new CliError(`Engine emitted a non-catalogue type: ${primary.model}`);
2047
+ }
2048
+ const alts = pickOtherOptions(out.results, 3);
2049
+ const lines = [
2050
+ primary.model,
2051
+ primary.reasonsZh[0] || primary.reasonsEn[0] || "\u6700\u4F4E\u6EE1\u8DB3"
2052
+ ];
2053
+ if (alts.length) {
2054
+ lines.push("");
2055
+ lines.push("\u5176\u4ED6");
2056
+ for (const a of alts) lines.push(a.model);
2057
+ }
2058
+ return lines.join("\n") + "\n";
2059
+ }
2060
+ function formatCliJson(input) {
2061
+ const out = selectOltc(input);
2062
+ const primary = out.results[0] ?? null;
2063
+ const alts = pickOtherOptions(out.results, 3).map((r) => r.model);
2064
+ const payload = {
2065
+ ok: out.ok,
2066
+ model: primary?.model ?? null,
2067
+ why: primary?.reasonsZh[0] ?? primary?.reasonsEn[0] ?? null,
2068
+ alts,
2069
+ errors: out.errorsZh.length ? out.errorsZh : out.errorsEn
2070
+ };
2071
+ return JSON.stringify(payload, null, 2) + "\n";
2072
+ }
2073
+ function runCli(argv, io = {
2074
+ stdout: (s) => process.stdout.write(s),
2075
+ stderr: (s) => process.stderr.write(s)
2076
+ }) {
2077
+ try {
2078
+ const args = parseCliArgs(argv);
2079
+ if (args.help) {
2080
+ io.stdout(CLI_HELP);
2081
+ return 0;
2082
+ }
2083
+ const input = cliToSelectInput(args);
2084
+ io.stdout(args.json ? formatCliJson(input) : formatCliText(input));
2085
+ return 0;
2086
+ } catch (err) {
2087
+ const msg = err instanceof Error ? err.message : String(err);
2088
+ io.stderr(msg.endsWith("\n") ? msg : msg + "\n");
2089
+ return 1;
2090
+ }
2091
+ }
2092
+
2093
+ // scripts/oltc.ts
2094
+ var code = runCli(process.argv.slice(2));
2095
+ process.exit(code);