poulpy/poulpy-schemes/src/tfhe/bdd_arithmetic/circuits/u32/sra_codegen.rs
poulpy-schemes/src/tfhe/bdd_arithmetic/circuits/u32/sra_codegen.rsRaw
1use crate::tfhe::bdd_arithmetic::{BitCircuit, BitCircuitInfo, Circuit, GetBitCircuitInfo, Node};
2pub(crate) enum AnyBitCircuit {
3 B0(BitCircuit<63, 6>),
4 B1(BitCircuit<62, 6>),
5 B2(BitCircuit<61, 6>),
6 B3(BitCircuit<60, 6>),
7 B4(BitCircuit<59, 6>),
8 B5(BitCircuit<58, 6>),
9 B6(BitCircuit<57, 6>),
10 B7(BitCircuit<56, 6>),
11 B8(BitCircuit<55, 6>),
12 B9(BitCircuit<54, 6>),
13 B10(BitCircuit<53, 6>),
14 B11(BitCircuit<52, 6>),
15 B12(BitCircuit<51, 6>),
16 B13(BitCircuit<50, 6>),
17 B14(BitCircuit<49, 6>),
18 B15(BitCircuit<48, 6>),
19 B16(BitCircuit<47, 6>),
20 B17(BitCircuit<45, 6>),
21 B18(BitCircuit<43, 6>),
22 B19(BitCircuit<41, 6>),
23 B20(BitCircuit<39, 6>),
24 B21(BitCircuit<37, 6>),
25 B22(BitCircuit<35, 6>),
26 B23(BitCircuit<33, 6>),
27 B24(BitCircuit<31, 6>),
28 B25(BitCircuit<28, 6>),
29 B26(BitCircuit<25, 6>),
30 B27(BitCircuit<22, 6>),
31 B28(BitCircuit<19, 6>),
32 B29(BitCircuit<15, 6>),
33 B30(BitCircuit<11, 6>),
34 B31(BitCircuit<1, 1>),
35}
36impl BitCircuitInfo for AnyBitCircuit {
37 fn info(&self) -> (&[Node], &[usize], usize) {
38 match self {
39 AnyBitCircuit::B0(bit_circuit) => (
40 bit_circuit.nodes.as_ref(),
41 bit_circuit.levels.as_ref(),
42 bit_circuit.max_inter_state,
43 ),
44 AnyBitCircuit::B1(bit_circuit) => (
45 bit_circuit.nodes.as_ref(),
46 bit_circuit.levels.as_ref(),
47 bit_circuit.max_inter_state,
48 ),
49 AnyBitCircuit::B2(bit_circuit) => (
50 bit_circuit.nodes.as_ref(),
51 bit_circuit.levels.as_ref(),
52 bit_circuit.max_inter_state,
53 ),
54 AnyBitCircuit::B3(bit_circuit) => (
55 bit_circuit.nodes.as_ref(),
56 bit_circuit.levels.as_ref(),
57 bit_circuit.max_inter_state,
58 ),
59 AnyBitCircuit::B4(bit_circuit) => (
60 bit_circuit.nodes.as_ref(),
61 bit_circuit.levels.as_ref(),
62 bit_circuit.max_inter_state,
63 ),
64 AnyBitCircuit::B5(bit_circuit) => (
65 bit_circuit.nodes.as_ref(),
66 bit_circuit.levels.as_ref(),
67 bit_circuit.max_inter_state,
68 ),
69 AnyBitCircuit::B6(bit_circuit) => (
70 bit_circuit.nodes.as_ref(),
71 bit_circuit.levels.as_ref(),
72 bit_circuit.max_inter_state,
73 ),
74 AnyBitCircuit::B7(bit_circuit) => (
75 bit_circuit.nodes.as_ref(),
76 bit_circuit.levels.as_ref(),
77 bit_circuit.max_inter_state,
78 ),
79 AnyBitCircuit::B8(bit_circuit) => (
80 bit_circuit.nodes.as_ref(),
81 bit_circuit.levels.as_ref(),
82 bit_circuit.max_inter_state,
83 ),
84 AnyBitCircuit::B9(bit_circuit) => (
85 bit_circuit.nodes.as_ref(),
86 bit_circuit.levels.as_ref(),
87 bit_circuit.max_inter_state,
88 ),
89 AnyBitCircuit::B10(bit_circuit) => (
90 bit_circuit.nodes.as_ref(),
91 bit_circuit.levels.as_ref(),
92 bit_circuit.max_inter_state,
93 ),
94 AnyBitCircuit::B11(bit_circuit) => (
95 bit_circuit.nodes.as_ref(),
96 bit_circuit.levels.as_ref(),
97 bit_circuit.max_inter_state,
98 ),
99 AnyBitCircuit::B12(bit_circuit) => (
100 bit_circuit.nodes.as_ref(),
101 bit_circuit.levels.as_ref(),
102 bit_circuit.max_inter_state,
103 ),
104 AnyBitCircuit::B13(bit_circuit) => (
105 bit_circuit.nodes.as_ref(),
106 bit_circuit.levels.as_ref(),
107 bit_circuit.max_inter_state,
108 ),
109 AnyBitCircuit::B14(bit_circuit) => (
110 bit_circuit.nodes.as_ref(),
111 bit_circuit.levels.as_ref(),
112 bit_circuit.max_inter_state,
113 ),
114 AnyBitCircuit::B15(bit_circuit) => (
115 bit_circuit.nodes.as_ref(),
116 bit_circuit.levels.as_ref(),
117 bit_circuit.max_inter_state,
118 ),
119 AnyBitCircuit::B16(bit_circuit) => (
120 bit_circuit.nodes.as_ref(),
121 bit_circuit.levels.as_ref(),
122 bit_circuit.max_inter_state,
123 ),
124 AnyBitCircuit::B17(bit_circuit) => (
125 bit_circuit.nodes.as_ref(),
126 bit_circuit.levels.as_ref(),
127 bit_circuit.max_inter_state,
128 ),
129 AnyBitCircuit::B18(bit_circuit) => (
130 bit_circuit.nodes.as_ref(),
131 bit_circuit.levels.as_ref(),
132 bit_circuit.max_inter_state,
133 ),
134 AnyBitCircuit::B19(bit_circuit) => (
135 bit_circuit.nodes.as_ref(),
136 bit_circuit.levels.as_ref(),
137 bit_circuit.max_inter_state,
138 ),
139 AnyBitCircuit::B20(bit_circuit) => (
140 bit_circuit.nodes.as_ref(),
141 bit_circuit.levels.as_ref(),
142 bit_circuit.max_inter_state,
143 ),
144 AnyBitCircuit::B21(bit_circuit) => (
145 bit_circuit.nodes.as_ref(),
146 bit_circuit.levels.as_ref(),
147 bit_circuit.max_inter_state,
148 ),
149 AnyBitCircuit::B22(bit_circuit) => (
150 bit_circuit.nodes.as_ref(),
151 bit_circuit.levels.as_ref(),
152 bit_circuit.max_inter_state,
153 ),
154 AnyBitCircuit::B23(bit_circuit) => (
155 bit_circuit.nodes.as_ref(),
156 bit_circuit.levels.as_ref(),
157 bit_circuit.max_inter_state,
158 ),
159 AnyBitCircuit::B24(bit_circuit) => (
160 bit_circuit.nodes.as_ref(),
161 bit_circuit.levels.as_ref(),
162 bit_circuit.max_inter_state,
163 ),
164 AnyBitCircuit::B25(bit_circuit) => (
165 bit_circuit.nodes.as_ref(),
166 bit_circuit.levels.as_ref(),
167 bit_circuit.max_inter_state,
168 ),
169 AnyBitCircuit::B26(bit_circuit) => (
170 bit_circuit.nodes.as_ref(),
171 bit_circuit.levels.as_ref(),
172 bit_circuit.max_inter_state,
173 ),
174 AnyBitCircuit::B27(bit_circuit) => (
175 bit_circuit.nodes.as_ref(),
176 bit_circuit.levels.as_ref(),
177 bit_circuit.max_inter_state,
178 ),
179 AnyBitCircuit::B28(bit_circuit) => (
180 bit_circuit.nodes.as_ref(),
181 bit_circuit.levels.as_ref(),
182 bit_circuit.max_inter_state,
183 ),
184 AnyBitCircuit::B29(bit_circuit) => (
185 bit_circuit.nodes.as_ref(),
186 bit_circuit.levels.as_ref(),
187 bit_circuit.max_inter_state,
188 ),
189 AnyBitCircuit::B30(bit_circuit) => (
190 bit_circuit.nodes.as_ref(),
191 bit_circuit.levels.as_ref(),
192 bit_circuit.max_inter_state,
193 ),
194 AnyBitCircuit::B31(bit_circuit) => (
195 bit_circuit.nodes.as_ref(),
196 bit_circuit.levels.as_ref(),
197 bit_circuit.max_inter_state,
198 ),
199 }
200 }
201}
202
203impl GetBitCircuitInfo<u32> for Circuit<AnyBitCircuit, 32usize> {
204 fn input_size(&self) -> usize {
205 2 * u32::BITS as usize
206 }
207 fn output_size(&self) -> usize {
208 u32::BITS as usize
209 }
210 fn get_circuit(&self, bit: usize) -> (&[Node], &[usize], usize) {
211 self.0[bit].info()
212 }
213}
214
215pub(crate) static OUTPUT_CIRCUITS: Circuit<AnyBitCircuit, 32usize> = Circuit([
216 AnyBitCircuit::B0(BitCircuit::new(
217 [
218 Node::new(13, 1, 0),
219 Node::new(11, 1, 0),
220 Node::new(8, 1, 0),
221 Node::new(14, 1, 0),
222 Node::new(21, 1, 0),
223 Node::new(23, 1, 0),
224 Node::new(24, 1, 0),
225 Node::new(17, 1, 0),
226 Node::new(6, 1, 0),
227 Node::new(3, 1, 0),
228 Node::new(29, 1, 0),
229 Node::new(1, 1, 0),
230 Node::new(20, 1, 0),
231 Node::new(28, 1, 0),
232 Node::new(10, 1, 0),
233 Node::new(18, 1, 0),
234 Node::new(19, 1, 0),
235 Node::new(15, 1, 0),
236 Node::new(7, 1, 0),
237 Node::new(0, 1, 0),
238 Node::new(30, 1, 0),
239 Node::new(5, 1, 0),
240 Node::new(27, 1, 0),
241 Node::new(9, 1, 0),
242 Node::new(2, 1, 0),
243 Node::new(25, 1, 0),
244 Node::new(12, 1, 0),
245 Node::new(31, 1, 0),
246 Node::new(16, 1, 0),
247 Node::new(22, 1, 0),
248 Node::new(26, 1, 0),
249 Node::new(4, 1, 0),
250 Node::new(36, 15, 24),
251 Node::new(36, 12, 31),
252 Node::new(36, 7, 11),
253 Node::new(36, 5, 18),
254 Node::new(36, 4, 21),
255 Node::new(36, 30, 14),
256 Node::new(36, 6, 2),
257 Node::new(36, 29, 8),
258 Node::new(36, 16, 9),
259 Node::new(36, 20, 3),
260 Node::new(36, 25, 23),
261 Node::new(36, 27, 17),
262 Node::new(36, 13, 26),
263 Node::new(36, 10, 0),
264 Node::new(36, 28, 19),
265 Node::new(36, 22, 1),
266 Node::new(35, 5, 0),
267 Node::new(35, 12, 1),
268 Node::new(35, 9, 7),
269 Node::new(35, 11, 3),
270 Node::new(35, 10, 2),
271 Node::new(35, 15, 8),
272 Node::new(35, 6, 14),
273 Node::new(35, 13, 4),
274 Node::new(34, 7, 4),
275 Node::new(34, 1, 6),
276 Node::new(34, 2, 0),
277 Node::new(34, 3, 5),
278 Node::new(33, 3, 0),
279 Node::new(33, 2, 1),
280 Node::new(32, 0, 1),
281 ],
282 [0, 32, 48, 56, 60, 62],
283 32,
284 )),
285 AnyBitCircuit::B1(BitCircuit::new(
286 [
287 Node::new(3, 1, 0),
288 Node::new(1, 1, 0),
289 Node::new(27, 1, 0),
290 Node::new(2, 1, 0),
291 Node::new(5, 1, 0),
292 Node::new(17, 1, 0),
293 Node::new(10, 1, 0),
294 Node::new(30, 1, 0),
295 Node::new(24, 1, 0),
296 Node::new(22, 1, 0),
297 Node::new(20, 1, 0),
298 Node::new(8, 1, 0),
299 Node::new(16, 1, 0),
300 Node::new(11, 1, 0),
301 Node::new(15, 1, 0),
302 Node::new(12, 1, 0),
303 Node::new(23, 1, 0),
304 Node::new(29, 1, 0),
305 Node::new(25, 1, 0),
306 Node::new(13, 1, 0),
307 Node::new(14, 1, 0),
308 Node::new(21, 1, 0),
309 Node::new(7, 1, 0),
310 Node::new(18, 1, 0),
311 Node::new(26, 1, 0),
312 Node::new(9, 1, 0),
313 Node::new(19, 1, 0),
314 Node::new(4, 1, 0),
315 Node::new(31, 1, 0),
316 Node::new(28, 1, 0),
317 Node::new(6, 1, 0),
318 Node::new(36, 26, 0),
319 Node::new(36, 8, 11),
320 Node::new(36, 23, 3),
321 Node::new(36, 2, 13),
322 Node::new(36, 29, 15),
323 Node::new(36, 28, 12),
324 Node::new(36, 9, 30),
325 Node::new(36, 5, 1),
326 Node::new(36, 21, 4),
327 Node::new(36, 10, 27),
328 Node::new(36, 18, 25),
329 Node::new(36, 28, 14),
330 Node::new(36, 7, 20),
331 Node::new(36, 16, 22),
332 Node::new(36, 17, 19),
333 Node::new(36, 24, 6),
334 Node::new(35, 14, 8),
335 Node::new(35, 12, 6),
336 Node::new(35, 11, 13),
337 Node::new(35, 3, 0),
338 Node::new(35, 10, 7),
339 Node::new(35, 4, 9),
340 Node::new(35, 5, 1),
341 Node::new(35, 15, 2),
342 Node::new(34, 1, 7),
343 Node::new(34, 6, 5),
344 Node::new(34, 0, 4),
345 Node::new(34, 2, 3),
346 Node::new(33, 3, 2),
347 Node::new(33, 1, 0),
348 Node::new(32, 1, 0),
349 ],
350 [0, 31, 47, 55, 59, 61],
351 31,
352 )),
353 AnyBitCircuit::B2(BitCircuit::new(
354 [
355 Node::new(8, 1, 0),
356 Node::new(28, 1, 0),
357 Node::new(4, 1, 0),
358 Node::new(20, 1, 0),
359 Node::new(27, 1, 0),
360 Node::new(7, 1, 0),
361 Node::new(23, 1, 0),
362 Node::new(26, 1, 0),
363 Node::new(17, 1, 0),
364 Node::new(6, 1, 0),
365 Node::new(29, 1, 0),
366 Node::new(2, 1, 0),
367 Node::new(9, 1, 0),
368 Node::new(21, 1, 0),
369 Node::new(25, 1, 0),
370 Node::new(31, 1, 0),
371 Node::new(15, 1, 0),
372 Node::new(18, 1, 0),
373 Node::new(10, 1, 0),
374 Node::new(30, 1, 0),
375 Node::new(5, 1, 0),
376 Node::new(13, 1, 0),
377 Node::new(24, 1, 0),
378 Node::new(12, 1, 0),
379 Node::new(19, 1, 0),
380 Node::new(22, 1, 0),
381 Node::new(16, 1, 0),
382 Node::new(3, 1, 0),
383 Node::new(11, 1, 0),
384 Node::new(14, 1, 0),
385 Node::new(36, 10, 21),
386 Node::new(36, 3, 2),
387 Node::new(36, 22, 0),
388 Node::new(36, 13, 20),
389 Node::new(36, 6, 5),
390 Node::new(36, 25, 9),
391 Node::new(36, 15, 16),
392 Node::new(36, 15, 8),
393 Node::new(36, 4, 28),
394 Node::new(36, 1, 23),
395 Node::new(36, 17, 11),
396 Node::new(36, 19, 29),
397 Node::new(36, 24, 27),
398 Node::new(36, 14, 12),
399 Node::new(36, 7, 18),
400 Node::new(36, 15, 26),
401 Node::new(35, 11, 5),
402 Node::new(35, 14, 10),
403 Node::new(35, 9, 1),
404 Node::new(35, 6, 4),
405 Node::new(35, 7, 13),
406 Node::new(35, 8, 12),
407 Node::new(35, 0, 3),
408 Node::new(35, 15, 2),
409 Node::new(34, 7, 2),
410 Node::new(34, 0, 1),
411 Node::new(34, 3, 5),
412 Node::new(34, 4, 6),
413 Node::new(33, 3, 2),
414 Node::new(33, 0, 1),
415 Node::new(32, 0, 1),
416 ],
417 [0, 30, 46, 54, 58, 60],
418 30,
419 )),
420 AnyBitCircuit::B3(BitCircuit::new(
421 [
422 Node::new(28, 1, 0),
423 Node::new(3, 1, 0),
424 Node::new(16, 1, 0),
425 Node::new(14, 1, 0),
426 Node::new(29, 1, 0),
427 Node::new(13, 1, 0),
428 Node::new(27, 1, 0),
429 Node::new(10, 1, 0),
430 Node::new(8, 1, 0),
431 Node::new(31, 1, 0),
432 Node::new(24, 1, 0),
433 Node::new(9, 1, 0),
434 Node::new(5, 1, 0),
435 Node::new(6, 1, 0),
436 Node::new(7, 1, 0),
437 Node::new(30, 1, 0),
438 Node::new(25, 1, 0),
439 Node::new(20, 1, 0),
440 Node::new(18, 1, 0),
441 Node::new(21, 1, 0),
442 Node::new(12, 1, 0),
443 Node::new(4, 1, 0),
444 Node::new(26, 1, 0),
445 Node::new(17, 1, 0),
446 Node::new(19, 1, 0),
447 Node::new(11, 1, 0),
448 Node::new(23, 1, 0),
449 Node::new(15, 1, 0),
450 Node::new(22, 1, 0),
451 Node::new(36, 4, 5),
452 Node::new(36, 19, 12),
453 Node::new(36, 26, 14),
454 Node::new(36, 6, 25),
455 Node::new(36, 9, 23),
456 Node::new(36, 16, 11),
457 Node::new(36, 15, 3),
458 Node::new(36, 10, 8),
459 Node::new(36, 0, 20),
460 Node::new(36, 9, 27),
461 Node::new(36, 9, 18),
462 Node::new(36, 9, 2),
463 Node::new(36, 28, 13),
464 Node::new(36, 24, 1),
465 Node::new(36, 17, 21),
466 Node::new(36, 22, 7),
467 Node::new(35, 8, 14),
468 Node::new(35, 3, 13),
469 Node::new(35, 11, 7),
470 Node::new(35, 10, 15),
471 Node::new(35, 0, 1),
472 Node::new(35, 4, 5),
473 Node::new(35, 6, 12),
474 Node::new(35, 9, 2),
475 Node::new(34, 5, 4),
476 Node::new(34, 3, 6),
477 Node::new(34, 2, 0),
478 Node::new(34, 7, 1),
479 Node::new(33, 1, 2),
480 Node::new(33, 0, 3),
481 Node::new(32, 0, 1),
482 ],
483 [0, 29, 45, 53, 57, 59],
484 29,
485 )),
486 AnyBitCircuit::B4(BitCircuit::new(
487 [
488 Node::new(27, 1, 0),
489 Node::new(8, 1, 0),
490 Node::new(9, 1, 0),
491 Node::new(11, 1, 0),
492 Node::new(29, 1, 0),
493 Node::new(16, 1, 0),
494 Node::new(10, 1, 0),
495 Node::new(30, 1, 0),
496 Node::new(21, 1, 0),
497 Node::new(25, 1, 0),
498 Node::new(14, 1, 0),
499 Node::new(5, 1, 0),
500 Node::new(15, 1, 0),
501 Node::new(23, 1, 0),
502 Node::new(24, 1, 0),
503 Node::new(26, 1, 0),
504 Node::new(17, 1, 0),
505 Node::new(20, 1, 0),
506 Node::new(13, 1, 0),
507 Node::new(4, 1, 0),
508 Node::new(28, 1, 0),
509 Node::new(18, 1, 0),
510 Node::new(6, 1, 0),
511 Node::new(7, 1, 0),
512 Node::new(22, 1, 0),
513 Node::new(19, 1, 0),
514 Node::new(12, 1, 0),
515 Node::new(31, 1, 0),
516 Node::new(36, 7, 10),
517 Node::new(36, 15, 6),
518 Node::new(36, 4, 18),
519 Node::new(36, 27, 21),
520 Node::new(36, 9, 2),
521 Node::new(36, 27, 12),
522 Node::new(36, 0, 3),
523 Node::new(36, 14, 1),
524 Node::new(36, 8, 11),
525 Node::new(36, 17, 19),
526 Node::new(36, 20, 26),
527 Node::new(36, 27, 25),
528 Node::new(36, 27, 16),
529 Node::new(36, 24, 22),
530 Node::new(36, 27, 5),
531 Node::new(36, 13, 23),
532 Node::new(35, 10, 9),
533 Node::new(35, 5, 15),
534 Node::new(35, 3, 1),
535 Node::new(35, 12, 4),
536 Node::new(35, 2, 8),
537 Node::new(35, 0, 13),
538 Node::new(35, 14, 7),
539 Node::new(35, 11, 6),
540 Node::new(34, 7, 1),
541 Node::new(34, 6, 0),
542 Node::new(34, 2, 5),
543 Node::new(34, 3, 4),
544 Node::new(33, 2, 1),
545 Node::new(33, 0, 3),
546 Node::new(32, 1, 0),
547 ],
548 [0, 28, 44, 52, 56, 58],
549 28,
550 )),
551 AnyBitCircuit::B5(BitCircuit::new(
552 [
553 Node::new(29, 1, 0),
554 Node::new(15, 1, 0),
555 Node::new(5, 1, 0),
556 Node::new(13, 1, 0),
557 Node::new(31, 1, 0),
558 Node::new(21, 1, 0),
559 Node::new(7, 1, 0),
560 Node::new(27, 1, 0),
561 Node::new(24, 1, 0),
562 Node::new(12, 1, 0),
563 Node::new(16, 1, 0),
564 Node::new(8, 1, 0),
565 Node::new(30, 1, 0),
566 Node::new(22, 1, 0),
567 Node::new(11, 1, 0),
568 Node::new(28, 1, 0),
569 Node::new(26, 1, 0),
570 Node::new(6, 1, 0),
571 Node::new(10, 1, 0),
572 Node::new(9, 1, 0),
573 Node::new(23, 1, 0),
574 Node::new(19, 1, 0),
575 Node::new(20, 1, 0),
576 Node::new(25, 1, 0),
577 Node::new(17, 1, 0),
578 Node::new(18, 1, 0),
579 Node::new(14, 1, 0),
580 Node::new(36, 20, 6),
581 Node::new(36, 4, 24),
582 Node::new(36, 4, 25),
583 Node::new(36, 16, 18),
584 Node::new(36, 4, 10),
585 Node::new(36, 8, 11),
586 Node::new(36, 7, 14),
587 Node::new(36, 15, 9),
588 Node::new(36, 0, 3),
589 Node::new(36, 4, 21),
590 Node::new(36, 5, 2),
591 Node::new(36, 23, 19),
592 Node::new(36, 13, 17),
593 Node::new(36, 4, 22),
594 Node::new(36, 12, 26),
595 Node::new(36, 4, 1),
596 Node::new(35, 8, 10),
597 Node::new(35, 15, 0),
598 Node::new(35, 13, 7),
599 Node::new(35, 9, 6),
600 Node::new(35, 1, 11),
601 Node::new(35, 4, 5),
602 Node::new(35, 2, 3),
603 Node::new(35, 14, 12),
604 Node::new(34, 4, 0),
605 Node::new(34, 2, 5),
606 Node::new(34, 3, 1),
607 Node::new(34, 6, 7),
608 Node::new(33, 1, 3),
609 Node::new(33, 2, 0),
610 Node::new(32, 0, 1),
611 ],
612 [0, 27, 43, 51, 55, 57],
613 27,
614 )),
615 AnyBitCircuit::B6(BitCircuit::new(
616 [
617 Node::new(24, 1, 0),
618 Node::new(18, 1, 0),
619 Node::new(17, 1, 0),
620 Node::new(29, 1, 0),
621 Node::new(16, 1, 0),
622 Node::new(7, 1, 0),
623 Node::new(30, 1, 0),
624 Node::new(13, 1, 0),
625 Node::new(6, 1, 0),
626 Node::new(28, 1, 0),
627 Node::new(26, 1, 0),
628 Node::new(12, 1, 0),
629 Node::new(19, 1, 0),
630 Node::new(9, 1, 0),
631 Node::new(20, 1, 0),
632 Node::new(21, 1, 0),
633 Node::new(14, 1, 0),
634 Node::new(8, 1, 0),
635 Node::new(10, 1, 0),
636 Node::new(22, 1, 0),
637 Node::new(25, 1, 0),
638 Node::new(15, 1, 0),
639 Node::new(11, 1, 0),
640 Node::new(23, 1, 0),
641 Node::new(31, 1, 0),
642 Node::new(27, 1, 0),
643 Node::new(36, 24, 14),
644 Node::new(36, 24, 12),
645 Node::new(36, 25, 22),
646 Node::new(36, 0, 17),
647 Node::new(36, 24, 4),
648 Node::new(36, 23, 5),
649 Node::new(36, 9, 11),
650 Node::new(36, 3, 7),
651 Node::new(36, 24, 2),
652 Node::new(36, 24, 15),
653 Node::new(36, 10, 18),
654 Node::new(36, 24, 1),
655 Node::new(36, 6, 16),
656 Node::new(36, 20, 13),
657 Node::new(36, 24, 21),
658 Node::new(36, 19, 8),
659 Node::new(35, 11, 10),
660 Node::new(35, 12, 15),
661 Node::new(35, 4, 3),
662 Node::new(35, 9, 7),
663 Node::new(35, 1, 2),
664 Node::new(35, 8, 13),
665 Node::new(35, 14, 5),
666 Node::new(35, 0, 6),
667 Node::new(34, 4, 6),
668 Node::new(34, 7, 2),
669 Node::new(34, 0, 1),
670 Node::new(34, 3, 5),
671 Node::new(33, 1, 2),
672 Node::new(33, 3, 0),
673 Node::new(32, 1, 0),
674 ],
675 [0, 26, 42, 50, 54, 56],
676 26,
677 )),
678 AnyBitCircuit::B7(BitCircuit::new(
679 [
680 Node::new(18, 1, 0),
681 Node::new(26, 1, 0),
682 Node::new(27, 1, 0),
683 Node::new(11, 1, 0),
684 Node::new(15, 1, 0),
685 Node::new(23, 1, 0),
686 Node::new(31, 1, 0),
687 Node::new(21, 1, 0),
688 Node::new(9, 1, 0),
689 Node::new(10, 1, 0),
690 Node::new(13, 1, 0),
691 Node::new(20, 1, 0),
692 Node::new(17, 1, 0),
693 Node::new(24, 1, 0),
694 Node::new(14, 1, 0),
695 Node::new(22, 1, 0),
696 Node::new(7, 1, 0),
697 Node::new(29, 1, 0),
698 Node::new(30, 1, 0),
699 Node::new(19, 1, 0),
700 Node::new(12, 1, 0),
701 Node::new(28, 1, 0),
702 Node::new(25, 1, 0),
703 Node::new(8, 1, 0),
704 Node::new(16, 1, 0),
705 Node::new(36, 6, 0),
706 Node::new(36, 6, 15),
707 Node::new(36, 22, 8),
708 Node::new(36, 6, 19),
709 Node::new(36, 13, 23),
710 Node::new(36, 21, 20),
711 Node::new(36, 6, 7),
712 Node::new(36, 2, 3),
713 Node::new(36, 6, 24),
714 Node::new(36, 6, 11),
715 Node::new(36, 6, 4),
716 Node::new(36, 5, 16),
717 Node::new(36, 1, 9),
718 Node::new(36, 18, 14),
719 Node::new(36, 6, 12),
720 Node::new(36, 17, 10),
721 Node::new(35, 6, 15),
722 Node::new(35, 9, 5),
723 Node::new(35, 10, 11),
724 Node::new(35, 8, 4),
725 Node::new(35, 14, 2),
726 Node::new(35, 0, 12),
727 Node::new(35, 1, 13),
728 Node::new(35, 3, 7),
729 Node::new(34, 7, 2),
730 Node::new(34, 1, 3),
731 Node::new(34, 0, 4),
732 Node::new(34, 6, 5),
733 Node::new(33, 3, 1),
734 Node::new(33, 2, 0),
735 Node::new(32, 0, 1),
736 ],
737 [0, 25, 41, 49, 53, 55],
738 25,
739 )),
740 AnyBitCircuit::B8(BitCircuit::new(
741 [
742 Node::new(21, 1, 0),
743 Node::new(22, 1, 0),
744 Node::new(15, 1, 0),
745 Node::new(20, 1, 0),
746 Node::new(11, 1, 0),
747 Node::new(24, 1, 0),
748 Node::new(18, 1, 0),
749 Node::new(13, 1, 0),
750 Node::new(9, 1, 0),
751 Node::new(10, 1, 0),
752 Node::new(26, 1, 0),
753 Node::new(27, 1, 0),
754 Node::new(19, 1, 0),
755 Node::new(23, 1, 0),
756 Node::new(12, 1, 0),
757 Node::new(29, 1, 0),
758 Node::new(8, 1, 0),
759 Node::new(17, 1, 0),
760 Node::new(14, 1, 0),
761 Node::new(25, 1, 0),
762 Node::new(28, 1, 0),
763 Node::new(31, 1, 0),
764 Node::new(16, 1, 0),
765 Node::new(30, 1, 0),
766 Node::new(36, 21, 13),
767 Node::new(36, 21, 22),
768 Node::new(36, 19, 8),
769 Node::new(36, 21, 12),
770 Node::new(36, 23, 18),
771 Node::new(36, 5, 16),
772 Node::new(36, 20, 14),
773 Node::new(36, 21, 3),
774 Node::new(36, 21, 0),
775 Node::new(36, 21, 17),
776 Node::new(36, 11, 4),
777 Node::new(36, 21, 2),
778 Node::new(36, 21, 1),
779 Node::new(36, 21, 6),
780 Node::new(36, 15, 7),
781 Node::new(36, 10, 9),
782 Node::new(35, 1, 5),
783 Node::new(35, 13, 15),
784 Node::new(35, 9, 2),
785 Node::new(35, 12, 4),
786 Node::new(35, 3, 10),
787 Node::new(35, 7, 6),
788 Node::new(35, 0, 11),
789 Node::new(35, 8, 14),
790 Node::new(34, 3, 1),
791 Node::new(34, 7, 2),
792 Node::new(34, 6, 4),
793 Node::new(34, 5, 0),
794 Node::new(33, 2, 1),
795 Node::new(33, 0, 3),
796 Node::new(32, 0, 1),
797 ],
798 [0, 24, 40, 48, 52, 54],
799 24,
800 )),
801 AnyBitCircuit::B9(BitCircuit::new(
802 [
803 Node::new(12, 1, 0),
804 Node::new(15, 1, 0),
805 Node::new(22, 1, 0),
806 Node::new(20, 1, 0),
807 Node::new(16, 1, 0),
808 Node::new(23, 1, 0),
809 Node::new(17, 1, 0),
810 Node::new(11, 1, 0),
811 Node::new(21, 1, 0),
812 Node::new(14, 1, 0),
813 Node::new(30, 1, 0),
814 Node::new(28, 1, 0),
815 Node::new(25, 1, 0),
816 Node::new(18, 1, 0),
817 Node::new(27, 1, 0),
818 Node::new(9, 1, 0),
819 Node::new(29, 1, 0),
820 Node::new(24, 1, 0),
821 Node::new(31, 1, 0),
822 Node::new(26, 1, 0),
823 Node::new(19, 1, 0),
824 Node::new(13, 1, 0),
825 Node::new(10, 1, 0),
826 Node::new(36, 12, 15),
827 Node::new(36, 16, 21),
828 Node::new(36, 18, 6),
829 Node::new(36, 19, 22),
830 Node::new(36, 18, 17),
831 Node::new(36, 18, 3),
832 Node::new(36, 14, 7),
833 Node::new(36, 18, 4),
834 Node::new(36, 18, 5),
835 Node::new(36, 18, 8),
836 Node::new(36, 18, 2),
837 Node::new(36, 18, 1),
838 Node::new(36, 10, 9),
839 Node::new(36, 11, 0),
840 Node::new(36, 18, 20),
841 Node::new(36, 18, 13),
842 Node::new(35, 5, 13),
843 Node::new(35, 2, 0),
844 Node::new(35, 9, 1),
845 Node::new(35, 8, 11),
846 Node::new(35, 14, 6),
847 Node::new(35, 10, 12),
848 Node::new(35, 4, 7),
849 Node::new(35, 15, 3),
850 Node::new(34, 6, 0),
851 Node::new(34, 3, 4),
852 Node::new(34, 5, 7),
853 Node::new(34, 2, 1),
854 Node::new(33, 1, 3),
855 Node::new(33, 0, 2),
856 Node::new(32, 1, 0),
857 ],
858 [0, 23, 39, 47, 51, 53],
859 23,
860 )),
861 AnyBitCircuit::B10(BitCircuit::new(
862 [
863 Node::new(26, 1, 0),
864 Node::new(23, 1, 0),
865 Node::new(31, 1, 0),
866 Node::new(10, 1, 0),
867 Node::new(18, 1, 0),
868 Node::new(17, 1, 0),
869 Node::new(30, 1, 0),
870 Node::new(29, 1, 0),
871 Node::new(22, 1, 0),
872 Node::new(12, 1, 0),
873 Node::new(19, 1, 0),
874 Node::new(15, 1, 0),
875 Node::new(11, 1, 0),
876 Node::new(16, 1, 0),
877 Node::new(13, 1, 0),
878 Node::new(24, 1, 0),
879 Node::new(25, 1, 0),
880 Node::new(14, 1, 0),
881 Node::new(28, 1, 0),
882 Node::new(21, 1, 0),
883 Node::new(27, 1, 0),
884 Node::new(20, 1, 0),
885 Node::new(36, 2, 11),
886 Node::new(36, 2, 16),
887 Node::new(36, 0, 3),
888 Node::new(36, 18, 9),
889 Node::new(36, 20, 12),
890 Node::new(36, 2, 4),
891 Node::new(36, 7, 14),
892 Node::new(36, 2, 10),
893 Node::new(36, 6, 17),
894 Node::new(36, 2, 13),
895 Node::new(36, 2, 1),
896 Node::new(36, 2, 15),
897 Node::new(36, 2, 8),
898 Node::new(36, 2, 21),
899 Node::new(36, 2, 19),
900 Node::new(36, 2, 5),
901 Node::new(35, 12, 8),
902 Node::new(35, 14, 6),
903 Node::new(35, 13, 3),
904 Node::new(35, 7, 4),
905 Node::new(35, 11, 9),
906 Node::new(35, 10, 0),
907 Node::new(35, 5, 2),
908 Node::new(35, 1, 15),
909 Node::new(34, 4, 2),
910 Node::new(34, 0, 6),
911 Node::new(34, 5, 3),
912 Node::new(34, 7, 1),
913 Node::new(33, 0, 1),
914 Node::new(33, 3, 2),
915 Node::new(32, 1, 0),
916 ],
917 [0, 22, 38, 46, 50, 52],
918 22,
919 )),
920 AnyBitCircuit::B11(BitCircuit::new(
921 [
922 Node::new(28, 1, 0),
923 Node::new(24, 1, 0),
924 Node::new(11, 1, 0),
925 Node::new(31, 1, 0),
926 Node::new(21, 1, 0),
927 Node::new(26, 1, 0),
928 Node::new(22, 1, 0),
929 Node::new(14, 1, 0),
930 Node::new(30, 1, 0),
931 Node::new(15, 1, 0),
932 Node::new(12, 1, 0),
933 Node::new(29, 1, 0),
934 Node::new(19, 1, 0),
935 Node::new(20, 1, 0),
936 Node::new(25, 1, 0),
937 Node::new(27, 1, 0),
938 Node::new(23, 1, 0),
939 Node::new(13, 1, 0),
940 Node::new(18, 1, 0),
941 Node::new(17, 1, 0),
942 Node::new(16, 1, 0),
943 Node::new(36, 3, 14),
944 Node::new(36, 3, 13),
945 Node::new(36, 3, 1),
946 Node::new(36, 8, 7),
947 Node::new(36, 3, 12),
948 Node::new(36, 11, 17),
949 Node::new(36, 3, 19),
950 Node::new(36, 3, 20),
951 Node::new(36, 3, 18),
952 Node::new(36, 3, 16),
953 Node::new(36, 3, 9),
954 Node::new(36, 15, 2),
955 Node::new(36, 0, 10),
956 Node::new(36, 3, 4),
957 Node::new(36, 3, 6),
958 Node::new(36, 3, 5),
959 Node::new(35, 0, 6),
960 Node::new(35, 9, 10),
961 Node::new(35, 13, 5),
962 Node::new(35, 2, 7),
963 Node::new(35, 4, 11),
964 Node::new(35, 15, 8),
965 Node::new(35, 1, 12),
966 Node::new(35, 14, 3),
967 Node::new(34, 0, 2),
968 Node::new(34, 1, 4),
969 Node::new(34, 3, 6),
970 Node::new(34, 5, 7),
971 Node::new(33, 3, 2),
972 Node::new(33, 0, 1),
973 Node::new(32, 0, 1),
974 ],
975 [0, 21, 37, 45, 49, 51],
976 21,
977 )),
978 AnyBitCircuit::B12(BitCircuit::new(
979 [
980 Node::new(23, 1, 0),
981 Node::new(22, 1, 0),
982 Node::new(13, 1, 0),
983 Node::new(12, 1, 0),
984 Node::new(26, 1, 0),
985 Node::new(25, 1, 0),
986 Node::new(15, 1, 0),
987 Node::new(31, 1, 0),
988 Node::new(24, 1, 0),
989 Node::new(29, 1, 0),
990 Node::new(18, 1, 0),
991 Node::new(21, 1, 0),
992 Node::new(14, 1, 0),
993 Node::new(20, 1, 0),
994 Node::new(27, 1, 0),
995 Node::new(19, 1, 0),
996 Node::new(16, 1, 0),
997 Node::new(28, 1, 0),
998 Node::new(17, 1, 0),
999 Node::new(30, 1, 0),
1000 Node::new(36, 7, 6),
1001 Node::new(36, 7, 0),
1002 Node::new(36, 9, 2),
1003 Node::new(36, 7, 5),
1004 Node::new(36, 7, 15),
1005 Node::new(36, 7, 18),
1006 Node::new(36, 19, 12),
1007 Node::new(36, 7, 8),
1008 Node::new(36, 7, 1),
1009 Node::new(36, 7, 11),
1010 Node::new(36, 7, 16),
1011 Node::new(36, 7, 10),
1012 Node::new(36, 7, 4),
1013 Node::new(36, 7, 14),
1014 Node::new(36, 7, 13),
1015 Node::new(36, 17, 3),
1016 Node::new(35, 14, 15),
1017 Node::new(35, 13, 4),
1018 Node::new(35, 8, 6),
1019 Node::new(35, 9, 2),
1020 Node::new(35, 12, 11),
1021 Node::new(35, 1, 0),
1022 Node::new(35, 3, 5),
1023 Node::new(35, 7, 10),
1024 Node::new(34, 6, 3),
1025 Node::new(34, 4, 2),
1026 Node::new(34, 7, 0),
1027 Node::new(34, 1, 5),
1028 Node::new(33, 3, 0),
1029 Node::new(33, 1, 2),
1030 Node::new(32, 0, 1),
1031 ],
1032 [0, 20, 36, 44, 48, 50],
1033 20,
1034 )),
1035 AnyBitCircuit::B13(BitCircuit::new(
1036 [
1037 Node::new(27, 1, 0),
1038 Node::new(20, 1, 0),
1039 Node::new(13, 1, 0),
1040 Node::new(28, 1, 0),
1041 Node::new(22, 1, 0),
1042 Node::new(15, 1, 0),
1043 Node::new(25, 1, 0),
1044 Node::new(29, 1, 0),
1045 Node::new(23, 1, 0),
1046 Node::new(21, 1, 0),
1047 Node::new(19, 1, 0),
1048 Node::new(16, 1, 0),
1049 Node::new(26, 1, 0),
1050 Node::new(24, 1, 0),
1051 Node::new(30, 1, 0),
1052 Node::new(17, 1, 0),
1053 Node::new(18, 1, 0),
1054 Node::new(14, 1, 0),
1055 Node::new(31, 1, 0),
1056 Node::new(36, 18, 12),
1057 Node::new(36, 18, 6),
1058 Node::new(36, 18, 16),
1059 Node::new(36, 18, 0),
1060 Node::new(36, 18, 11),
1061 Node::new(36, 18, 13),
1062 Node::new(36, 18, 8),
1063 Node::new(36, 14, 17),
1064 Node::new(36, 7, 2),
1065 Node::new(36, 18, 1),
1066 Node::new(36, 18, 5),
1067 Node::new(36, 18, 9),
1068 Node::new(36, 18, 10),
1069 Node::new(36, 18, 4),
1070 Node::new(36, 18, 3),
1071 Node::new(36, 18, 15),
1072 Node::new(35, 3, 12),
1073 Node::new(35, 14, 9),
1074 Node::new(35, 11, 8),
1075 Node::new(35, 13, 7),
1076 Node::new(35, 5, 4),
1077 Node::new(35, 6, 10),
1078 Node::new(35, 0, 2),
1079 Node::new(35, 1, 15),
1080 Node::new(34, 6, 3),
1081 Node::new(34, 7, 2),
1082 Node::new(34, 0, 5),
1083 Node::new(34, 1, 4),
1084 Node::new(33, 2, 1),
1085 Node::new(33, 3, 0),
1086 Node::new(32, 1, 0),
1087 ],
1088 [0, 19, 35, 43, 47, 49],
1089 19,
1090 )),
1091 AnyBitCircuit::B14(BitCircuit::new(
1092 [
1093 Node::new(26, 1, 0),
1094 Node::new(21, 1, 0),
1095 Node::new(20, 1, 0),
1096 Node::new(29, 1, 0),
1097 Node::new(31, 1, 0),
1098 Node::new(22, 1, 0),
1099 Node::new(19, 1, 0),
1100 Node::new(23, 1, 0),
1101 Node::new(16, 1, 0),
1102 Node::new(15, 1, 0),
1103 Node::new(14, 1, 0),
1104 Node::new(18, 1, 0),
1105 Node::new(17, 1, 0),
1106 Node::new(28, 1, 0),
1107 Node::new(24, 1, 0),
1108 Node::new(30, 1, 0),
1109 Node::new(25, 1, 0),
1110 Node::new(27, 1, 0),
1111 Node::new(36, 4, 8),
1112 Node::new(36, 4, 6),
1113 Node::new(36, 4, 13),
1114 Node::new(36, 4, 12),
1115 Node::new(36, 4, 1),
1116 Node::new(36, 4, 14),
1117 Node::new(36, 4, 0),
1118 Node::new(36, 4, 11),
1119 Node::new(36, 4, 9),
1120 Node::new(36, 4, 3),
1121 Node::new(36, 4, 17),
1122 Node::new(36, 4, 2),
1123 Node::new(36, 4, 16),
1124 Node::new(36, 4, 7),
1125 Node::new(36, 4, 5),
1126 Node::new(36, 15, 10),
1127 Node::new(35, 12, 3),
1128 Node::new(35, 10, 1),
1129 Node::new(35, 2, 11),
1130 Node::new(35, 13, 8),
1131 Node::new(35, 6, 7),
1132 Node::new(35, 9, 4),
1133 Node::new(35, 5, 0),
1134 Node::new(35, 14, 15),
1135 Node::new(34, 4, 7),
1136 Node::new(34, 1, 3),
1137 Node::new(34, 5, 0),
1138 Node::new(34, 2, 6),
1139 Node::new(33, 2, 1),
1140 Node::new(33, 3, 0),
1141 Node::new(32, 0, 1),
1142 ],
1143 [0, 18, 34, 42, 46, 48],
1144 18,
1145 )),
1146 AnyBitCircuit::B15(BitCircuit::new(
1147 [
1148 Node::new(30, 1, 0),
1149 Node::new(15, 1, 0),
1150 Node::new(24, 1, 0),
1151 Node::new(17, 1, 0),
1152 Node::new(29, 1, 0),
1153 Node::new(26, 1, 0),
1154 Node::new(19, 1, 0),
1155 Node::new(21, 1, 0),
1156 Node::new(18, 1, 0),
1157 Node::new(23, 1, 0),
1158 Node::new(31, 1, 0),
1159 Node::new(22, 1, 0),
1160 Node::new(28, 1, 0),
1161 Node::new(27, 1, 0),
1162 Node::new(16, 1, 0),
1163 Node::new(20, 1, 0),
1164 Node::new(25, 1, 0),
1165 Node::new(36, 10, 4),
1166 Node::new(36, 10, 3),
1167 Node::new(36, 10, 6),
1168 Node::new(36, 10, 7),
1169 Node::new(36, 10, 13),
1170 Node::new(36, 10, 15),
1171 Node::new(36, 10, 1),
1172 Node::new(36, 10, 16),
1173 Node::new(36, 10, 9),
1174 Node::new(36, 10, 11),
1175 Node::new(36, 10, 2),
1176 Node::new(36, 10, 14),
1177 Node::new(36, 10, 8),
1178 Node::new(36, 10, 0),
1179 Node::new(36, 10, 12),
1180 Node::new(36, 10, 5),
1181 Node::new(35, 10, 11),
1182 Node::new(35, 15, 12),
1183 Node::new(35, 8, 6),
1184 Node::new(35, 4, 2),
1185 Node::new(35, 0, 3),
1186 Node::new(35, 13, 9),
1187 Node::new(35, 7, 1),
1188 Node::new(35, 14, 5),
1189 Node::new(34, 3, 2),
1190 Node::new(34, 4, 6),
1191 Node::new(34, 5, 1),
1192 Node::new(34, 7, 0),
1193 Node::new(33, 2, 3),
1194 Node::new(33, 1, 0),
1195 Node::new(32, 0, 1),
1196 ],
1197 [0, 17, 33, 41, 45, 47],
1198 17,
1199 )),
1200 AnyBitCircuit::B16(BitCircuit::new(
1201 [
1202 Node::new(31, 1, 0),
1203 Node::new(24, 1, 0),
1204 Node::new(21, 1, 0),
1205 Node::new(29, 1, 0),
1206 Node::new(26, 1, 0),
1207 Node::new(17, 1, 0),
1208 Node::new(18, 1, 0),
1209 Node::new(28, 1, 0),
1210 Node::new(19, 1, 0),
1211 Node::new(22, 1, 0),
1212 Node::new(25, 1, 0),
1213 Node::new(23, 1, 0),
1214 Node::new(20, 1, 0),
1215 Node::new(16, 1, 0),
1216 Node::new(27, 1, 0),
1217 Node::new(30, 1, 0),
1218 Node::new(31, 0, 0),
1219 Node::new(36, 0, 10),
1220 Node::new(36, 0, 3),
1221 Node::new(36, 0, 8),
1222 Node::new(36, 0, 1),
1223 Node::new(36, 0, 7),
1224 Node::new(36, 0, 2),
1225 Node::new(36, 0, 12),
1226 Node::new(36, 0, 6),
1227 Node::new(36, 0, 13),
1228 Node::new(36, 0, 5),
1229 Node::new(36, 0, 14),
1230 Node::new(36, 0, 11),
1231 Node::new(36, 0, 4),
1232 Node::new(36, 0, 9),
1233 Node::new(36, 0, 15),
1234 Node::new(35, 5, 7),
1235 Node::new(35, 11, 3),
1236 Node::new(35, 15, 14),
1237 Node::new(35, 4, 9),
1238 Node::new(35, 13, 8),
1239 Node::new(35, 1, 10),
1240 Node::new(35, 2, 6),
1241 Node::new(35, 0, 12),
1242 Node::new(34, 6, 5),
1243 Node::new(34, 7, 1),
1244 Node::new(34, 2, 4),
1245 Node::new(34, 0, 3),
1246 Node::new(33, 2, 3),
1247 Node::new(33, 1, 0),
1248 Node::new(32, 1, 0),
1249 ],
1250 [0, 16, 32, 40, 44, 46],
1251 16,
1252 )),
1253 AnyBitCircuit::B17(BitCircuit::new(
1254 [
1255 Node::new(31, 1, 0),
1256 Node::new(28, 1, 0),
1257 Node::new(27, 1, 0),
1258 Node::new(29, 1, 0),
1259 Node::new(17, 1, 0),
1260 Node::new(23, 1, 0),
1261 Node::new(22, 1, 0),
1262 Node::new(19, 1, 0),
1263 Node::new(30, 1, 0),
1264 Node::new(21, 1, 0),
1265 Node::new(25, 1, 0),
1266 Node::new(24, 1, 0),
1267 Node::new(18, 1, 0),
1268 Node::new(20, 1, 0),
1269 Node::new(26, 1, 0),
1270 Node::new(31, 0, 0),
1271 Node::new(36, 0, 1),
1272 Node::new(36, 0, 11),
1273 Node::new(36, 0, 5),
1274 Node::new(36, 0, 14),
1275 Node::new(36, 0, 7),
1276 Node::new(36, 0, 6),
1277 Node::new(36, 0, 2),
1278 Node::new(36, 0, 10),
1279 Node::new(36, 0, 13),
1280 Node::new(36, 0, 3),
1281 Node::new(36, 0, 12),
1282 Node::new(36, 0, 4),
1283 Node::new(36, 0, 9),
1284 Node::new(36, 0, 8),
1285 Node::new(35, 1, 9),
1286 Node::new(35, 0, 3),
1287 Node::new(35, 8, 12),
1288 Node::new(35, 4, 11),
1289 Node::new(35, 0, 2),
1290 Node::new(35, 10, 13),
1291 Node::new(35, 14, 6),
1292 Node::new(35, 7, 5),
1293 Node::new(34, 6, 3),
1294 Node::new(34, 4, 0),
1295 Node::new(34, 5, 2),
1296 Node::new(34, 1, 7),
1297 Node::new(33, 3, 2),
1298 Node::new(33, 1, 0),
1299 Node::new(32, 1, 0),
1300 ],
1301 [0, 15, 30, 38, 42, 44],
1302 15,
1303 )),
1304 AnyBitCircuit::B18(BitCircuit::new(
1305 [
1306 Node::new(31, 1, 0),
1307 Node::new(22, 1, 0),
1308 Node::new(20, 1, 0),
1309 Node::new(23, 1, 0),
1310 Node::new(25, 1, 0),
1311 Node::new(19, 1, 0),
1312 Node::new(21, 1, 0),
1313 Node::new(18, 1, 0),
1314 Node::new(29, 1, 0),
1315 Node::new(27, 1, 0),
1316 Node::new(26, 1, 0),
1317 Node::new(30, 1, 0),
1318 Node::new(28, 1, 0),
1319 Node::new(24, 1, 0),
1320 Node::new(31, 0, 0),
1321 Node::new(36, 0, 1),
1322 Node::new(36, 0, 5),
1323 Node::new(36, 0, 7),
1324 Node::new(36, 0, 13),
1325 Node::new(36, 0, 9),
1326 Node::new(36, 0, 6),
1327 Node::new(36, 0, 3),
1328 Node::new(36, 0, 10),
1329 Node::new(36, 0, 2),
1330 Node::new(36, 0, 12),
1331 Node::new(36, 0, 11),
1332 Node::new(36, 0, 8),
1333 Node::new(36, 0, 4),
1334 Node::new(35, 0, 4),
1335 Node::new(35, 0, 7),
1336 Node::new(35, 8, 3),
1337 Node::new(35, 5, 2),
1338 Node::new(35, 11, 1),
1339 Node::new(35, 12, 6),
1340 Node::new(35, 10, 9),
1341 Node::new(35, 0, 13),
1342 Node::new(34, 1, 3),
1343 Node::new(34, 0, 6),
1344 Node::new(34, 7, 5),
1345 Node::new(34, 4, 2),
1346 Node::new(33, 1, 3),
1347 Node::new(33, 2, 0),
1348 Node::new(32, 1, 0),
1349 ],
1350 [0, 14, 28, 36, 40, 42],
1351 14,
1352 )),
1353 AnyBitCircuit::B19(BitCircuit::new(
1354 [
1355 Node::new(31, 1, 0),
1356 Node::new(27, 1, 0),
1357 Node::new(22, 1, 0),
1358 Node::new(23, 1, 0),
1359 Node::new(19, 1, 0),
1360 Node::new(24, 1, 0),
1361 Node::new(20, 1, 0),
1362 Node::new(28, 1, 0),
1363 Node::new(29, 1, 0),
1364 Node::new(21, 1, 0),
1365 Node::new(25, 1, 0),
1366 Node::new(26, 1, 0),
1367 Node::new(30, 1, 0),
1368 Node::new(31, 0, 0),
1369 Node::new(36, 0, 7),
1370 Node::new(36, 0, 5),
1371 Node::new(36, 0, 11),
1372 Node::new(36, 0, 2),
1373 Node::new(36, 0, 3),
1374 Node::new(36, 0, 1),
1375 Node::new(36, 0, 4),
1376 Node::new(36, 0, 9),
1377 Node::new(36, 0, 10),
1378 Node::new(36, 0, 6),
1379 Node::new(36, 0, 12),
1380 Node::new(36, 0, 8),
1381 Node::new(35, 0, 9),
1382 Node::new(35, 12, 8),
1383 Node::new(35, 6, 7),
1384 Node::new(35, 0, 5),
1385 Node::new(35, 11, 4),
1386 Node::new(35, 0, 2),
1387 Node::new(35, 1, 10),
1388 Node::new(35, 0, 3),
1389 Node::new(34, 7, 4),
1390 Node::new(34, 5, 6),
1391 Node::new(34, 3, 2),
1392 Node::new(34, 0, 1),
1393 Node::new(33, 0, 1),
1394 Node::new(33, 3, 2),
1395 Node::new(32, 0, 1),
1396 ],
1397 [0, 13, 26, 34, 38, 40],
1398 13,
1399 )),
1400 AnyBitCircuit::B20(BitCircuit::new(
1401 [
1402 Node::new(31, 1, 0),
1403 Node::new(30, 1, 0),
1404 Node::new(29, 1, 0),
1405 Node::new(20, 1, 0),
1406 Node::new(27, 1, 0),
1407 Node::new(25, 1, 0),
1408 Node::new(26, 1, 0),
1409 Node::new(24, 1, 0),
1410 Node::new(28, 1, 0),
1411 Node::new(21, 1, 0),
1412 Node::new(23, 1, 0),
1413 Node::new(22, 1, 0),
1414 Node::new(31, 0, 0),
1415 Node::new(36, 0, 7),
1416 Node::new(36, 0, 8),
1417 Node::new(36, 0, 10),
1418 Node::new(36, 0, 11),
1419 Node::new(36, 0, 2),
1420 Node::new(36, 0, 3),
1421 Node::new(36, 0, 9),
1422 Node::new(36, 0, 1),
1423 Node::new(36, 0, 4),
1424 Node::new(36, 0, 6),
1425 Node::new(36, 0, 5),
1426 Node::new(35, 2, 6),
1427 Node::new(35, 0, 11),
1428 Node::new(35, 0, 10),
1429 Node::new(35, 5, 7),
1430 Node::new(35, 0, 1),
1431 Node::new(35, 8, 4),
1432 Node::new(35, 0, 3),
1433 Node::new(35, 0, 9),
1434 Node::new(34, 1, 3),
1435 Node::new(34, 2, 5),
1436 Node::new(34, 4, 0),
1437 Node::new(34, 7, 6),
1438 Node::new(33, 3, 0),
1439 Node::new(33, 1, 2),
1440 Node::new(32, 0, 1),
1441 ],
1442 [0, 12, 24, 32, 36, 38],
1443 12,
1444 )),
1445 AnyBitCircuit::B21(BitCircuit::new(
1446 [
1447 Node::new(31, 1, 0),
1448 Node::new(23, 1, 0),
1449 Node::new(26, 1, 0),
1450 Node::new(30, 1, 0),
1451 Node::new(22, 1, 0),
1452 Node::new(21, 1, 0),
1453 Node::new(29, 1, 0),
1454 Node::new(28, 1, 0),
1455 Node::new(27, 1, 0),
1456 Node::new(24, 1, 0),
1457 Node::new(25, 1, 0),
1458 Node::new(31, 0, 0),
1459 Node::new(36, 0, 7),
1460 Node::new(36, 0, 1),
1461 Node::new(36, 0, 8),
1462 Node::new(36, 0, 4),
1463 Node::new(36, 0, 2),
1464 Node::new(36, 0, 10),
1465 Node::new(36, 0, 6),
1466 Node::new(36, 0, 5),
1467 Node::new(36, 0, 9),
1468 Node::new(36, 0, 3),
1469 Node::new(35, 0, 3),
1470 Node::new(35, 0, 6),
1471 Node::new(35, 10, 4),
1472 Node::new(35, 0, 1),
1473 Node::new(35, 0, 9),
1474 Node::new(35, 0, 2),
1475 Node::new(35, 0, 5),
1476 Node::new(35, 7, 8),
1477 Node::new(34, 6, 2),
1478 Node::new(34, 0, 5),
1479 Node::new(34, 1, 7),
1480 Node::new(34, 3, 4),
1481 Node::new(33, 3, 0),
1482 Node::new(33, 1, 2),
1483 Node::new(32, 0, 1),
1484 ],
1485 [0, 11, 22, 30, 34, 36],
1486 11,
1487 )),
1488 AnyBitCircuit::B22(BitCircuit::new(
1489 [
1490 Node::new(31, 1, 0),
1491 Node::new(25, 1, 0),
1492 Node::new(23, 1, 0),
1493 Node::new(28, 1, 0),
1494 Node::new(27, 1, 0),
1495 Node::new(22, 1, 0),
1496 Node::new(24, 1, 0),
1497 Node::new(30, 1, 0),
1498 Node::new(29, 1, 0),
1499 Node::new(26, 1, 0),
1500 Node::new(31, 0, 0),
1501 Node::new(36, 0, 9),
1502 Node::new(36, 0, 5),
1503 Node::new(36, 0, 4),
1504 Node::new(36, 0, 1),
1505 Node::new(36, 0, 2),
1506 Node::new(36, 0, 8),
1507 Node::new(36, 0, 3),
1508 Node::new(36, 0, 6),
1509 Node::new(36, 0, 7),
1510 Node::new(35, 9, 2),
1511 Node::new(35, 0, 5),
1512 Node::new(35, 0, 3),
1513 Node::new(35, 0, 1),
1514 Node::new(35, 0, 8),
1515 Node::new(35, 0, 7),
1516 Node::new(35, 0, 4),
1517 Node::new(35, 0, 6),
1518 Node::new(34, 5, 4),
1519 Node::new(34, 7, 6),
1520 Node::new(34, 3, 0),
1521 Node::new(34, 2, 1),
1522 Node::new(33, 0, 2),
1523 Node::new(33, 1, 3),
1524 Node::new(32, 1, 0),
1525 ],
1526 [0, 10, 20, 28, 32, 34],
1527 10,
1528 )),
1529 AnyBitCircuit::B23(BitCircuit::new(
1530 [
1531 Node::new(31, 1, 0),
1532 Node::new(23, 1, 0),
1533 Node::new(27, 1, 0),
1534 Node::new(28, 1, 0),
1535 Node::new(29, 1, 0),
1536 Node::new(25, 1, 0),
1537 Node::new(30, 1, 0),
1538 Node::new(24, 1, 0),
1539 Node::new(26, 1, 0),
1540 Node::new(31, 0, 0),
1541 Node::new(36, 0, 7),
1542 Node::new(36, 0, 3),
1543 Node::new(36, 0, 2),
1544 Node::new(36, 0, 6),
1545 Node::new(36, 0, 4),
1546 Node::new(36, 0, 8),
1547 Node::new(36, 0, 1),
1548 Node::new(36, 0, 5),
1549 Node::new(35, 0, 2),
1550 Node::new(35, 0, 7),
1551 Node::new(35, 0, 5),
1552 Node::new(35, 0, 4),
1553 Node::new(35, 0, 3),
1554 Node::new(35, 0, 1),
1555 Node::new(35, 0, 6),
1556 Node::new(35, 0, 8),
1557 Node::new(34, 0, 5),
1558 Node::new(34, 3, 6),
1559 Node::new(34, 4, 1),
1560 Node::new(34, 2, 7),
1561 Node::new(33, 1, 0),
1562 Node::new(33, 3, 2),
1563 Node::new(32, 0, 1),
1564 ],
1565 [0, 9, 18, 26, 30, 32],
1566 9,
1567 )),
1568 AnyBitCircuit::B24(BitCircuit::new(
1569 [
1570 Node::new(31, 1, 0),
1571 Node::new(29, 1, 0),
1572 Node::new(30, 1, 0),
1573 Node::new(24, 1, 0),
1574 Node::new(28, 1, 0),
1575 Node::new(25, 1, 0),
1576 Node::new(26, 1, 0),
1577 Node::new(27, 1, 0),
1578 Node::new(31, 0, 0),
1579 Node::new(36, 0, 6),
1580 Node::new(36, 0, 2),
1581 Node::new(36, 0, 5),
1582 Node::new(36, 0, 1),
1583 Node::new(36, 0, 4),
1584 Node::new(36, 0, 3),
1585 Node::new(36, 0, 7),
1586 Node::new(31, 0, 0),
1587 Node::new(35, 0, 1),
1588 Node::new(35, 0, 5),
1589 Node::new(35, 0, 2),
1590 Node::new(35, 0, 7),
1591 Node::new(35, 0, 6),
1592 Node::new(35, 0, 3),
1593 Node::new(35, 0, 4),
1594 Node::new(34, 3, 1),
1595 Node::new(34, 0, 4),
1596 Node::new(34, 2, 5),
1597 Node::new(34, 7, 6),
1598 Node::new(33, 1, 3),
1599 Node::new(33, 0, 2),
1600 Node::new(32, 0, 1),
1601 ],
1602 [0, 8, 16, 24, 28, 30],
1603 8,
1604 )),
1605 AnyBitCircuit::B25(BitCircuit::new(
1606 [
1607 Node::new(31, 1, 0),
1608 Node::new(27, 1, 0),
1609 Node::new(26, 1, 0),
1610 Node::new(30, 1, 0),
1611 Node::new(28, 1, 0),
1612 Node::new(25, 1, 0),
1613 Node::new(29, 1, 0),
1614 Node::new(31, 0, 0),
1615 Node::new(36, 0, 4),
1616 Node::new(36, 0, 3),
1617 Node::new(36, 0, 6),
1618 Node::new(36, 0, 2),
1619 Node::new(36, 0, 5),
1620 Node::new(36, 0, 1),
1621 Node::new(31, 0, 0),
1622 Node::new(35, 0, 2),
1623 Node::new(35, 0, 1),
1624 Node::new(35, 0, 5),
1625 Node::new(35, 0, 3),
1626 Node::new(35, 0, 6),
1627 Node::new(35, 0, 4),
1628 Node::new(34, 4, 3),
1629 Node::new(34, 1, 6),
1630 Node::new(34, 0, 2),
1631 Node::new(34, 0, 5),
1632 Node::new(33, 3, 0),
1633 Node::new(33, 2, 1),
1634 Node::new(32, 1, 0),
1635 ],
1636 [0, 7, 14, 21, 25, 27],
1637 7,
1638 )),
1639 AnyBitCircuit::B26(BitCircuit::new(
1640 [
1641 Node::new(31, 1, 0),
1642 Node::new(26, 1, 0),
1643 Node::new(27, 1, 0),
1644 Node::new(29, 1, 0),
1645 Node::new(30, 1, 0),
1646 Node::new(28, 1, 0),
1647 Node::new(31, 0, 0),
1648 Node::new(36, 0, 2),
1649 Node::new(36, 0, 1),
1650 Node::new(36, 0, 4),
1651 Node::new(36, 0, 5),
1652 Node::new(36, 0, 3),
1653 Node::new(31, 0, 0),
1654 Node::new(35, 0, 3),
1655 Node::new(35, 0, 1),
1656 Node::new(35, 0, 4),
1657 Node::new(35, 0, 5),
1658 Node::new(35, 0, 2),
1659 Node::new(34, 0, 2),
1660 Node::new(34, 0, 3),
1661 Node::new(34, 0, 4),
1662 Node::new(34, 1, 5),
1663 Node::new(33, 1, 3),
1664 Node::new(33, 2, 0),
1665 Node::new(32, 1, 0),
1666 ],
1667 [0, 6, 12, 18, 22, 24],
1668 6,
1669 )),
1670 AnyBitCircuit::B27(BitCircuit::new(
1671 [
1672 Node::new(31, 1, 0),
1673 Node::new(30, 1, 0),
1674 Node::new(27, 1, 0),
1675 Node::new(29, 1, 0),
1676 Node::new(28, 1, 0),
1677 Node::new(31, 0, 0),
1678 Node::new(36, 0, 3),
1679 Node::new(36, 0, 1),
1680 Node::new(36, 0, 4),
1681 Node::new(36, 0, 2),
1682 Node::new(31, 0, 0),
1683 Node::new(35, 0, 4),
1684 Node::new(35, 0, 2),
1685 Node::new(35, 0, 1),
1686 Node::new(35, 0, 3),
1687 Node::new(34, 0, 3),
1688 Node::new(34, 0, 2),
1689 Node::new(34, 0, 1),
1690 Node::new(34, 0, 4),
1691 Node::new(33, 0, 2),
1692 Node::new(33, 1, 3),
1693 Node::new(32, 1, 0),
1694 ],
1695 [0, 5, 10, 15, 19, 21],
1696 5,
1697 )),
1698 AnyBitCircuit::B28(BitCircuit::new(
1699 [
1700 Node::new(31, 1, 0),
1701 Node::new(28, 1, 0),
1702 Node::new(30, 1, 0),
1703 Node::new(29, 1, 0),
1704 Node::new(31, 0, 0),
1705 Node::new(36, 0, 2),
1706 Node::new(36, 0, 1),
1707 Node::new(36, 0, 3),
1708 Node::new(31, 0, 0),
1709 Node::new(35, 0, 2),
1710 Node::new(35, 0, 3),
1711 Node::new(35, 0, 1),
1712 Node::new(31, 0, 0),
1713 Node::new(34, 0, 3),
1714 Node::new(34, 0, 2),
1715 Node::new(34, 0, 1),
1716 Node::new(33, 0, 2),
1717 Node::new(33, 1, 3),
1718 Node::new(32, 0, 1),
1719 ],
1720 [0, 4, 8, 12, 16, 18],
1721 4,
1722 )),
1723 AnyBitCircuit::B29(BitCircuit::new(
1724 [
1725 Node::new(31, 1, 0),
1726 Node::new(30, 1, 0),
1727 Node::new(29, 1, 0),
1728 Node::new(31, 0, 0),
1729 Node::new(36, 0, 2),
1730 Node::new(36, 0, 1),
1731 Node::new(31, 0, 0),
1732 Node::new(35, 0, 1),
1733 Node::new(35, 0, 2),
1734 Node::new(31, 0, 0),
1735 Node::new(34, 0, 1),
1736 Node::new(34, 0, 2),
1737 Node::new(33, 0, 1),
1738 Node::new(33, 0, 2),
1739 Node::new(32, 1, 0),
1740 ],
1741 [0, 3, 6, 9, 12, 14],
1742 3,
1743 )),
1744 AnyBitCircuit::B30(BitCircuit::new(
1745 [
1746 Node::new(31, 1, 0),
1747 Node::new(30, 1, 0),
1748 Node::new(31, 0, 0),
1749 Node::new(36, 0, 1),
1750 Node::new(31, 0, 0),
1751 Node::new(35, 0, 1),
1752 Node::new(31, 0, 0),
1753 Node::new(34, 0, 1),
1754 Node::new(31, 0, 0),
1755 Node::new(33, 0, 1),
1756 Node::new(32, 0, 1),
1757 ],
1758 [0, 2, 4, 6, 8, 10],
1759 2,
1760 )),
1761 AnyBitCircuit::B31(BitCircuit::new([Node::new(31, 1, 0)], [0], 2)),
1762]);