diff --git a/src/json.rs b/src/json.rs index 37ddbb59..c08afba5 100644 --- a/src/json.rs +++ b/src/json.rs @@ -30,8 +30,14 @@ use self::encoder::JsonEncoder; /// Prefix used for storing metadata in the hugr nodes. pub const METADATA_PREFIX: &str = "TKET1_JSON"; +/// The global phase specified as metadata. const METADATA_PHASE: &str = "TKET1_JSON.phase"; +/// The implicit permutation of qubits. const METADATA_IMPLICIT_PERM: &str = "TKET1_JSON.implicit_permutation"; +/// Explicit names for the input qubit registers. +const METADATA_Q_REGISTERS: &str = "TKET1_JSON.qubit_registers"; +/// Explicit names for the input bit registers. +const METADATA_B_REGISTERS: &str = "TKET1_JSON.bit_registers"; /// A JSON-serialized circuit that can be converted to a [`Hugr`]. pub trait TKETDecode: Sized { diff --git a/src/json/decoder.rs b/src/json/decoder.rs index 19c4cd0b..38c712ba 100644 --- a/src/json/decoder.rs +++ b/src/json/decoder.rs @@ -22,6 +22,7 @@ use tket_json_rs::circuit_json::SerialCircuit; use super::op::JsonOp; use super::{try_param_to_constant, METADATA_IMPLICIT_PERM, METADATA_PHASE}; use crate::extension::{LINEAR_BIT, REGISTRY}; +use crate::json::{METADATA_B_REGISTERS, METADATA_Q_REGISTERS}; use crate::symbolic_constant_op; /// The state of an in-progress [`DFGBuilder`] being built from a [`SerialCircuit`]. @@ -76,6 +77,8 @@ impl JsonDecoder { "name": serialcirc.name, METADATA_PHASE: serialcirc.phase, METADATA_IMPLICIT_PERM: serialcirc.implicit_permutation, + METADATA_Q_REGISTERS: serialcirc.qubits, + METADATA_B_REGISTERS: serialcirc.bits, }); dfg.set_metadata(metadata); diff --git a/src/json/encoder.rs b/src/json/encoder.rs index ca7fe187..cd026005 100644 --- a/src/json/encoder.rs +++ b/src/json/encoder.rs @@ -16,7 +16,10 @@ use crate::extension::LINEAR_BIT; use crate::ops::match_symb_const_op; use super::op::JsonOp; -use super::{OpConvertError, METADATA_IMPLICIT_PERM, METADATA_PHASE}; +use super::{ + OpConvertError, METADATA_B_REGISTERS, METADATA_IMPLICIT_PERM, METADATA_PHASE, + METADATA_Q_REGISTERS, +}; /// The state of an in-progress [`SerialCircuit`] being built from a [`Circuit`]. #[derive(Debug, PartialEq)] @@ -30,9 +33,13 @@ pub(super) struct JsonEncoder { /// The current commands commands: Vec, /// The TKET1 qubit registers associated to each qubit unit of the circuit. - qubit_regs: HashMap, + qubit_to_reg: HashMap, /// The TKET1 bit registers associated to each linear bit unit of the circuit. - bit_regs: HashMap, + bit_to_reg: HashMap, + /// The ordered TKET1 names for the input qubit registers. + qubit_registers: Vec, + /// The ordered TKET1 names for the input bit registers. + bit_registers: Vec, /// A register of wires with constant values, used to recover TKET1 /// parameters. parameters: HashMap, @@ -43,48 +50,63 @@ impl JsonEncoder { pub fn new(circ: &impl Circuit) -> Self { let name = circ.name().map(str::to_string); - // Compute the linear qubit and bit registers. Each one have independent - // indices starting from zero. - // - // TODO Throw an error on non-recognized unit types, or just ignore? - let mut bit_units = HashMap::new(); - let mut qubit_units = HashMap::new(); + let mut qubit_registers = vec![]; + let mut bit_registers = vec![]; + let mut phase = "0".to_string(); + let mut implicit_permutation = vec![]; + + // Recover other parameters stored in the metadata + if let Some(meta) = circ.get_metadata(circ.root()).as_object() { + if let Some(p) = meta.get(METADATA_PHASE) { + // TODO: Check for invalid encoded metadata + phase = p.as_str().unwrap().to_string(); + } + if let Some(perm) = meta.get(METADATA_IMPLICIT_PERM) { + // TODO: Check for invalid encoded metadata + implicit_permutation = serde_json::from_value(perm.clone()).unwrap(); + } + if let Some(q_regs) = meta.get(METADATA_Q_REGISTERS) { + qubit_registers = serde_json::from_value(q_regs.clone()).unwrap(); + } + if let Some(b_regs) = meta.get(METADATA_B_REGISTERS) { + bit_registers = serde_json::from_value(b_regs.clone()).unwrap(); + } + } + + // Map the Hugr units to tket1 register names. + // Uses the names from the metadata if available, or initializes new sequentially-numbered registers. + let mut bit_to_reg = HashMap::new(); + let mut qubit_to_reg = HashMap::new(); + let get_register = |registers: &mut Vec, prefix: &str, index| { + registers.get(index).cloned().unwrap_or_else(|| { + let r = Register(prefix.to_string(), vec![index as i64]); + registers.push(r.clone()); + r + }) + }; for (unit, _, ty) in circ.units() { if ty == QB_T { - let index = vec![qubit_units.len() as i64]; - let reg = circuit_json::Register("q".to_string(), index); - qubit_units.insert(unit, reg); + let index = qubit_to_reg.len(); + let reg = get_register(&mut qubit_registers, "q", index); + qubit_to_reg.insert(unit, reg); } else if ty == *LINEAR_BIT { - let index = vec![bit_units.len() as i64]; - let reg = circuit_json::Register("c".to_string(), index); - bit_units.insert(unit, reg); + let index = bit_to_reg.len(); + let reg = get_register(&mut bit_registers, "b", index); + bit_to_reg.insert(unit, reg.clone()); } } - let mut encoder = Self { + Self { name, - phase: "0".to_string(), - implicit_permutation: vec![], + phase, + implicit_permutation, commands: vec![], - qubit_regs: qubit_units, - bit_regs: bit_units, + qubit_to_reg, + bit_to_reg, + qubit_registers, + bit_registers, parameters: HashMap::new(), - }; - - // Encode other parameters stored in the metadata - if let Some(meta) = circ.get_metadata(circ.root()).as_object() { - if let Some(phase) = meta.get(METADATA_PHASE) { - // TODO: Check for invalid encoded metadata - encoder.phase = phase.as_str().unwrap().to_string(); - } - if let Some(implicit_perm) = meta.get(METADATA_IMPLICIT_PERM) { - // TODO: Check for invalid encoded metadata - encoder.implicit_permutation = - serde_json::from_value(implicit_perm.clone()).unwrap(); - } } - - encoder } /// Add a circuit command to the serialization. @@ -139,8 +161,8 @@ impl JsonEncoder { name: self.name, phase: self.phase, commands: self.commands, - qubits: self.qubit_regs.into_values().collect_vec(), - bits: self.bit_regs.into_values().collect_vec(), + qubits: self.qubit_registers, + bits: self.bit_registers, implicit_permutation: self.implicit_permutation, } } @@ -208,10 +230,11 @@ impl JsonEncoder { true } - fn unit_to_register(&self, unit: CircuitUnit) -> Option { - self.qubit_regs + /// Translate a linear [`CircuitUnit`] into a [`Register`], if possible. + fn unit_to_register(&self, unit: CircuitUnit) -> Option { + self.qubit_to_reg .get(&unit) - .or_else(|| self.bit_regs.get(&unit)) + .or_else(|| self.bit_to_reg.get(&unit)) .cloned() } } diff --git a/src/json/tests.rs b/src/json/tests.rs index 78c8cc3c..90fb3253 100644 --- a/src/json/tests.rs +++ b/src/json/tests.rs @@ -1,6 +1,6 @@ //! General tests. -use std::collections::HashSet; +use std::io::BufReader; use hugr::Hugr; use rstest::rstest; @@ -64,16 +64,27 @@ fn json_roundtrip(#[case] circ_s: &str, #[case] num_commands: usize, #[case] num compare_serial_circs(&ser, &reser); } +#[rstest] +#[cfg_attr(miri, ignore)] // Opening files is not supported in (isolated) miri +#[case::barenco_tof_10("test_files/barenco_tof_10.json")] +fn json_file_roundtrip(#[case] circ: impl AsRef) { + let reader = BufReader::new(std::fs::File::open(circ).unwrap()); + let ser: circuit_json::SerialCircuit = serde_json::from_reader(reader).unwrap(); + let circ: Hugr = ser.clone().decode().unwrap(); + let reser: SerialCircuit = SerialCircuit::encode(&circ).unwrap(); + compare_serial_circs(&ser, &reser); +} + fn compare_serial_circs(a: &SerialCircuit, b: &SerialCircuit) { assert_eq!(a.name, b.name); assert_eq!(a.phase, b.phase); - let qubits_a: HashSet<_> = a.qubits.iter().collect(); - let qubits_b: HashSet<_> = b.qubits.iter().collect(); + let qubits_a: Vec<_> = a.qubits.iter().collect(); + let qubits_b: Vec<_> = b.qubits.iter().collect(); assert_eq!(qubits_a, qubits_b); - let bits_a: HashSet<_> = a.bits.iter().collect(); - let bits_b: HashSet<_> = b.bits.iter().collect(); + let bits_a: Vec<_> = a.bits.iter().collect(); + let bits_b: Vec<_> = b.bits.iter().collect(); assert_eq!(bits_a, bits_b); assert_eq!(a.implicit_permutation, b.implicit_permutation); diff --git a/src/optimiser/taso.rs b/src/optimiser/taso.rs index 14b67363..a6045a43 100644 --- a/src/optimiser/taso.rs +++ b/src/optimiser/taso.rs @@ -284,20 +284,25 @@ mod taso_default { use std::io; use std::path::Path; + use hugr::ops::OpType; + use crate::rewrite::ecc_rewriter::RewriterSerialisationError; - use crate::rewrite::strategy::NonIncreasingCXCountStrategy; + use crate::rewrite::strategy::NonIncreasingGateCountStrategy; use crate::rewrite::ECCRewriter; use super::*; /// The default TASO optimiser using ECC sets. - pub type DefaultTasoOptimiser = TasoOptimiser; + pub type DefaultTasoOptimiser = TasoOptimiser< + ECCRewriter, + NonIncreasingGateCountStrategy usize, fn(&OpType) -> usize>, + >; impl DefaultTasoOptimiser { /// A sane default optimiser using the given ECC sets. pub fn default_with_eccs_json_file(eccs_path: impl AsRef) -> io::Result { let rewriter = ECCRewriter::try_from_eccs_json_file(eccs_path)?; - let strategy = NonIncreasingCXCountStrategy::default_cx(); + let strategy = NonIncreasingGateCountStrategy::default_cx(); Ok(TasoOptimiser::new(rewriter, strategy)) } @@ -306,7 +311,7 @@ mod taso_default { rewriter_path: impl AsRef, ) -> Result { let rewriter = ECCRewriter::load_binary(rewriter_path)?; - let strategy = NonIncreasingCXCountStrategy::default_cx(); + let strategy = NonIncreasingGateCountStrategy::default_cx(); Ok(TasoOptimiser::new(rewriter, strategy)) } } diff --git a/src/passes/chunks.rs b/src/passes/chunks.rs index ff10d3b7..2f436cdf 100644 --- a/src/passes/chunks.rs +++ b/src/passes/chunks.rs @@ -263,6 +263,8 @@ impl CircuitChunks { } } + reassembled.set_metadata(root, self.root_meta)?; + Ok(reassembled) } diff --git a/src/rewrite/ecc_rewriter.rs b/src/rewrite/ecc_rewriter.rs index b5fd7a47..6343837c 100644 --- a/src/rewrite/ecc_rewriter.rs +++ b/src/rewrite/ecc_rewriter.rs @@ -13,17 +13,22 @@ //! of the Quartz repository. use derive_more::{From, Into}; +use hugr::hugr::PortIndex; +use hugr::ops::OpTrait; use itertools::Itertools; use portmatching::PatternID; -use std::fs::File; -use std::path::Path; -use std::{io, path::PathBuf}; +use std::{ + collections::HashSet, + fs::File, + io, + path::{Path, PathBuf}, +}; use thiserror::Error; use hugr::Hugr; use crate::{ - circuit::Circuit, + circuit::{remove_empty_wire, Circuit}, optimiser::taso::{load_eccs_json_file, EqCircClass}, portmatching::{CircuitPattern, PatternMatcher}, }; @@ -49,6 +54,9 @@ pub struct ECCRewriter { /// target TargetIDs. The usize index of PatternID is used to index into /// the outer vector. rewrite_rules: Vec>, + /// Wires that have been removed in the pattern circuit -- to be removed + /// in the target circuit as well when generating a rewrite. + empty_wires: Vec>, } impl ECCRewriter { @@ -72,18 +80,34 @@ impl ECCRewriter { let eccs = eccs.into(); let rewrite_rules = get_rewrite_rules(&eccs); let patterns = get_patterns(&eccs); + let targets = into_targets(eccs); // Remove failed patterns - let (patterns, rewrite_rules): (Vec<_>, Vec<_>) = patterns + let (patterns, empty_wires, rewrite_rules): (Vec<_>, Vec<_>, Vec<_>) = patterns .into_iter() .zip(rewrite_rules) - .filter_map(|(p, r)| Some((p?, r))) - .unzip(); - let targets = into_targets(eccs); + .filter_map(|(p, r)| { + // Filter out target IDs where empty wires are not empty + let (pattern, pattern_empty_wires) = p?; + let targets = r + .into_iter() + .filter(|&id| { + let circ = &targets[id.0]; + let target_empty_wires: HashSet<_> = + empty_wires(&circ).into_iter().collect(); + pattern_empty_wires + .iter() + .all(|&w| target_empty_wires.contains(&w)) + }) + .collect(); + Some((pattern, pattern_empty_wires, targets)) + }) + .multiunzip(); let matcher = PatternMatcher::from_patterns(patterns); Self { matcher, targets, rewrite_rules, + empty_wires, } } @@ -151,7 +175,11 @@ impl Rewriter for ECCRewriter { .flat_map(|m| { let pattern_id = m.pattern_id(); self.get_targets(pattern_id).map(move |repl| { - m.to_rewrite(circ.base_hugr(), repl.clone()) + let mut repl = repl.clone(); + for &empty_qb in self.empty_wires[pattern_id.0].iter().rev() { + remove_empty_wire(&mut repl, empty_qb).unwrap(); + } + m.to_rewrite(circ.base_hugr(), repl) .expect("invalid replacement") }) }) @@ -198,11 +226,43 @@ fn get_rewrite_rules(rep_sets: &[EqCircClass]) -> Vec> { rewrite_rules } -fn get_patterns(rep_sets: &[EqCircClass]) -> Vec> { +/// For an equivalence class, return all valid patterns together with the +/// indices of the wires that have been removed in the pattern circuit. +fn get_patterns(rep_sets: &[EqCircClass]) -> Vec)>> { rep_sets .iter() .flat_map(|rs| rs.circuits()) - .map(|circ| CircuitPattern::try_from_circuit(circ).ok()) + .map(|circ| { + let empty_qbs = empty_wires(circ); + let mut circ = circ.clone(); + for &qb in empty_qbs.iter().rev() { + remove_empty_wire(&mut circ, qb).unwrap(); + } + CircuitPattern::try_from_circuit(&circ) + .ok() + .map(|circ| (circ, empty_qbs)) + }) + .collect() +} + +/// The port offsets of wires that are empty. +fn empty_wires(circ: &impl Circuit) -> Vec { + let inp = circ.input(); + circ.node_outputs(inp) + // Only consider dataflow edges + .filter(|&p| circ.get_optype(inp).signature().get(p).is_some()) + // Only consider ports linked to at most one other port + .filter_map(|p| Some((p, circ.linked_ports(inp, p).at_most_one().ok()?))) + // Ports are either connected to output or nothing + .filter_map(|(from, to)| { + if let Some((n, _)) = to { + // Wires connected to output + (n == circ.output()).then_some(from.index()) + } else { + // Wires connected to nothing + Some(from.index()) + } + }) .collect() } @@ -305,4 +365,15 @@ mod tests { let exp_n_eccs_of_len = [0, 5 * 2 + 5 * 3, 5, 5]; assert_eq!(n_eccs_of_len, exp_n_eccs_of_len); } + + /// Some inputs are left untouched: these parameters should be removed to + /// obtain convex patterns + #[test] + fn ecc_rewriter_empty_params() { + let test_file = "test_files/cx_cx_eccs.json"; + let rewriter = ECCRewriter::try_from_eccs_json_file(test_file).unwrap(); + + let cx_cx = cx_cx(); + assert_eq!(rewriter.get_rewrites(&cx_cx).len(), 1); + } } diff --git a/src/rewrite/strategy.rs b/src/rewrite/strategy.rs index aae2e810..38a63e3f 100644 --- a/src/rewrite/strategy.rs +++ b/src/rewrite/strategy.rs @@ -8,7 +8,7 @@ //! possible rewrite (with some pruning strategy): //! - [`NonIncreasingGateCountStrategy`], which only considers rewrites that //! do not increase some cost function (e.g. cx gate count, implemented as -//! [`NonIncreasingCXCountStrategy`]), and +//! [`NonIncreasingGateCountStrategy::default_cx`]), and //! - [`ExhaustiveGammaStrategy`], which ignores rewrites that increase the //! cost function beyond a threshold given by a f64 parameter gamma. @@ -95,6 +95,65 @@ impl RewriteStrategy for GreedyRewriteStrategy { } } +/// Exhaustive strategies based on cost functions and thresholds. +/// +/// Every possible rewrite is applied to a copy of the input circuit. Thus for +/// one circuit, up to `n` rewritten circuits will be returned, each obtained +/// by applying one of the `n` rewrites to the original circuit. +/// +/// Whether a rewrite is allowed or not is determined by a cost function and a +/// threshold function: if the cost of the target of the rewrite is below the +/// threshold given by the cost of the original circuit, the rewrite is +/// performed. +/// +/// The cost function must return a value of type `Self::OpCost`. All op costs +/// are summed up to obtain a total cost that is then compared using the +/// threshold function. +pub trait ExhaustiveThresholdStrategy { + /// The cost of a single operation. + type OpCost; + /// The sum of the cost of all operations in a circuit. + type SumOpCost; + + /// Whether the rewrite is allowed or not, based on the cost of the pattern and target. + fn threshold(&self, pattern_cost: &Self::SumOpCost, target_cost: &Self::SumOpCost) -> bool; + + /// The cost of a single operation. + fn op_cost(&self, op: &OpType) -> Self::OpCost; +} + +impl RewriteStrategy for T +where + T::SumOpCost: Sum + Ord, +{ + type Cost = T::SumOpCost; + + #[tracing::instrument(skip_all)] + fn apply_rewrites( + &self, + rewrites: impl IntoIterator, + circ: &Hugr, + ) -> Vec { + rewrites + .into_iter() + .filter(|rw| { + let pattern_cost = pre_rewrite_cost(rw, circ, |op| self.op_cost(op)); + let target_cost = post_rewrite_cost(rw, circ, |op| self.op_cost(op)); + self.threshold(&pattern_cost, &target_cost) + }) + .map(|rw| { + let mut circ = circ.clone(); + rw.apply(&mut circ).expect("invalid pattern match"); + circ + }) + .collect() + } + + fn circuit_cost(&self, circ: &Hugr) -> Self::Cost { + cost(circ.nodes(), circ, |op| self.op_cost(op)) + } +} + /// Exhaustive rewrite strategy allowing smaller or equal cost rewrites. /// /// Rewrites are permitted based on a cost function called the major cost: if @@ -132,15 +191,13 @@ where } } -/// Non-increasing rewrite strategy based on CX count. -/// -/// The minor cost to break ties between equal CX counts is the number of -/// quantum gates. -pub type NonIncreasingCXCountStrategy = - NonIncreasingGateCountStrategy usize, fn(&OpType) -> usize>; - -impl NonIncreasingCXCountStrategy { - /// Create rewrite strategy based on non-increasing CX count. +impl NonIncreasingGateCountStrategy usize, fn(&OpType) -> usize> { + /// Non-increasing rewrite strategy based on CX count. + /// + /// The minor cost to break ties between equal CX counts is the number of + /// quantum gates. + /// + /// This is probably a good default for NISQ-y circuit optimisation. pub fn default_cx() -> Self { Self { major_cost: |op| is_cx(op) as usize, @@ -218,65 +275,6 @@ impl ExhaustiveGammaStrategy usize> { } } -/// Exhaustive strategies based on cost functions and thresholds. -/// -/// Every possible rewrite is applied to a copy of the input circuit. Thus for -/// one circuit, up to `n` rewritten circuits will be returned, each obtained -/// by applying one of the `n` rewrites to the original circuit. -/// -/// Whether a rewrite is allowed or not is determined by a cost function and a -/// threshold function: if the cost of the target of the rewrite is below the -/// threshold given by the cost of the original circuit, the rewrite is -/// performed. -/// -/// The cost function must return a value of type `Self::OpCost`. All op costs -/// are summed up to obtain a total cost that is then compared using the -/// threshold function. -pub trait ExhaustiveThresholdStrategy { - /// The cost of a single operation. - type OpCost; - /// The sum of the cost of all operations in a circuit. - type SumOpCost; - - /// Whether the rewrite is allowed or not, based on the cost of the pattern and target. - fn threshold(&self, pattern_cost: &Self::SumOpCost, target_cost: &Self::SumOpCost) -> bool; - - /// The cost of a single operation. - fn op_cost(&self, op: &OpType) -> Self::OpCost; -} - -impl RewriteStrategy for T -where - T::SumOpCost: Sum + Ord, -{ - type Cost = T::SumOpCost; - - #[tracing::instrument(skip_all)] - fn apply_rewrites( - &self, - rewrites: impl IntoIterator, - circ: &Hugr, - ) -> Vec { - rewrites - .into_iter() - .filter(|rw| { - let pattern_cost = pre_rewrite_cost(rw, circ, |op| self.op_cost(op)); - let target_cost = post_rewrite_cost(rw, circ, |op| self.op_cost(op)); - self.threshold(&pattern_cost, &target_cost) - }) - .map(|rw| { - let mut circ = circ.clone(); - rw.apply(&mut circ).expect("invalid pattern match"); - circ - }) - .collect() - } - - fn circuit_cost(&self, circ: &Hugr) -> Self::Cost { - cost(circ.nodes(), circ, |op| self.op_cost(op)) - } -} - /// A pair of major and minor cost. /// /// This is used to order circuits based on major cost first, then minor cost. @@ -459,7 +457,7 @@ mod tests { #[test] fn test_exhaustive_default_cx_cost() { - let strat = NonIncreasingCXCountStrategy::default_cx(); + let strat = NonIncreasingGateCountStrategy::default_cx(); let circ = n_cx(3); assert_eq!(strat.circuit_cost(&circ), (3, 3).into()); let circ = build_simple_circuit(2, |circ| { @@ -474,7 +472,7 @@ mod tests { #[test] fn test_exhaustive_default_cx_threshold() { - let strat = NonIncreasingCXCountStrategy::default_cx(); + let strat = NonIncreasingGateCountStrategy::default_cx(); assert!(strat.threshold(&(3, 0).into(), &(3, 0).into())); assert!(strat.threshold(&(3, 0).into(), &(3, 5).into())); assert!(!strat.threshold(&(3, 10).into(), &(4, 0).into())); diff --git a/test_files/barenco_tof_10.json b/test_files/barenco_tof_10.json new file mode 100755 index 00000000..ebb40575 --- /dev/null +++ b/test_files/barenco_tof_10.json @@ -0,0 +1,7576 @@ +{ + "phase": "0.0", + "commands": [ + { + "op": { + "type": "H", + "n_qb": 1, + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 18 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 17 + ] + ], + [ + "q", + [ + 18 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "-0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 18 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 9 + ] + ], + [ + "q", + [ + 18 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 18 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 17 + ] + ], + [ + "q", + [ + 18 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 9 + ] + ], + [ + "q", + [ + 18 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 9 + ] + ], + [ + "q", + [ + 17 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "-0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 17 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 9 + ] + ], + [ + "q", + [ + 17 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 17 + ] + ] + ] + }, + { + "op": { + "type": "H", + "n_qb": 1, + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 17 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 16 + ] + ], + [ + "q", + [ + 17 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "-0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 17 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 8 + ] + ], + [ + "q", + [ + 17 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 17 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 16 + ] + ], + [ + "q", + [ + 17 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 8 + ] + ], + [ + "q", + [ + 17 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 8 + ] + ], + [ + "q", + [ + 16 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "-0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 16 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 8 + ] + ], + [ + "q", + [ + 16 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 16 + ] + ] + ] + }, + { + "op": { + "type": "H", + "n_qb": 1, + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 16 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 15 + ] + ], + [ + "q", + [ + 16 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "-0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 16 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 7 + ] + ], + [ + "q", + [ + 16 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 16 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 15 + ] + ], + [ + "q", + [ + 16 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 7 + ] + ], + [ + "q", + [ + 16 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 7 + ] + ], + [ + "q", + [ + 15 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "-0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 15 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 7 + ] + ], + [ + "q", + [ + 15 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 15 + ] + ] + ] + }, + { + "op": { + "type": "H", + "n_qb": 1, + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 15 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 14 + ] + ], + [ + "q", + [ + 15 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "-0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 15 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 6 + ] + ], + [ + "q", + [ + 15 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 15 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 14 + ] + ], + [ + "q", + [ + 15 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 6 + ] + ], + [ + "q", + [ + 15 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 6 + ] + ], + [ + "q", + [ + 14 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "-0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 14 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 6 + ] + ], + [ + "q", + [ + 14 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 14 + ] + ] + ] + }, + { + "op": { + "type": "H", + "n_qb": 1, + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 14 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 13 + ] + ], + [ + "q", + [ + 14 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "-0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 14 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 5 + ] + ], + [ + "q", + [ + 14 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 14 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 13 + ] + ], + [ + "q", + [ + 14 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 5 + ] + ], + [ + "q", + [ + 14 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 5 + ] + ], + [ + "q", + [ + 13 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "-0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 13 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 5 + ] + ], + [ + "q", + [ + 13 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 13 + ] + ] + ] + }, + { + "op": { + "type": "H", + "n_qb": 1, + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 13 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 12 + ] + ], + [ + "q", + [ + 13 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "-0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 13 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 4 + ] + ], + [ + "q", + [ + 13 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 13 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 12 + ] + ], + [ + "q", + [ + 13 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 4 + ] + ], + [ + "q", + [ + 13 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 4 + ] + ], + [ + "q", + [ + 12 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "-0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 12 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 4 + ] + ], + [ + "q", + [ + 12 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 12 + ] + ] + ] + }, + { + "op": { + "type": "H", + "n_qb": 1, + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 12 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 11 + ] + ], + [ + "q", + [ + 12 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "-0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 12 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 3 + ] + ], + [ + "q", + [ + 12 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 12 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 11 + ] + ], + [ + "q", + [ + 12 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 3 + ] + ], + [ + "q", + [ + 12 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 3 + ] + ], + [ + "q", + [ + 11 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "-0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 11 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 3 + ] + ], + [ + "q", + [ + 11 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 11 + ] + ] + ] + }, + { + "op": { + "type": "H", + "n_qb": 1, + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 11 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 10 + ] + ], + [ + "q", + [ + 11 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "-0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 11 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 2 + ] + ], + [ + "q", + [ + 11 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 11 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 10 + ] + ], + [ + "q", + [ + 11 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 2 + ] + ], + [ + "q", + [ + 11 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 2 + ] + ], + [ + "q", + [ + 10 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "-0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 10 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 2 + ] + ], + [ + "q", + [ + 10 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 10 + ] + ] + ] + }, + { + "op": { + "type": "H", + "n_qb": 1, + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 10 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 1 + ] + ], + [ + "q", + [ + 10 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "-0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 10 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 0 + ] + ], + [ + "q", + [ + 10 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 10 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 1 + ] + ], + [ + "q", + [ + 10 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "-0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 10 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 0 + ] + ], + [ + "q", + [ + 10 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 10 + ] + ] + ] + }, + { + "op": { + "type": "H", + "n_qb": 1, + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 10 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 10 + ] + ], + [ + "q", + [ + 11 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 11 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 2 + ] + ], + [ + "q", + [ + 11 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "-0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 11 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 10 + ] + ], + [ + "q", + [ + 11 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 2 + ] + ], + [ + "q", + [ + 11 + ] + ] + ] + }, + { + "op": { + "type": "H", + "n_qb": 1, + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 11 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 11 + ] + ], + [ + "q", + [ + 12 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 12 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 3 + ] + ], + [ + "q", + [ + 12 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "-0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 12 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 11 + ] + ], + [ + "q", + [ + 12 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 3 + ] + ], + [ + "q", + [ + 12 + ] + ] + ] + }, + { + "op": { + "type": "H", + "n_qb": 1, + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 12 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 12 + ] + ], + [ + "q", + [ + 13 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 13 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 4 + ] + ], + [ + "q", + [ + 13 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "-0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 13 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 12 + ] + ], + [ + "q", + [ + 13 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 4 + ] + ], + [ + "q", + [ + 13 + ] + ] + ] + }, + { + "op": { + "type": "H", + "n_qb": 1, + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 13 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 13 + ] + ], + [ + "q", + [ + 14 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 14 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 5 + ] + ], + [ + "q", + [ + 14 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "-0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 14 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 13 + ] + ], + [ + "q", + [ + 14 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 5 + ] + ], + [ + "q", + [ + 14 + ] + ] + ] + }, + { + "op": { + "type": "H", + "n_qb": 1, + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 14 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 14 + ] + ], + [ + "q", + [ + 15 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 15 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 6 + ] + ], + [ + "q", + [ + 15 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "-0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 15 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 14 + ] + ], + [ + "q", + [ + 15 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 6 + ] + ], + [ + "q", + [ + 15 + ] + ] + ] + }, + { + "op": { + "type": "H", + "n_qb": 1, + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 15 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 15 + ] + ], + [ + "q", + [ + 16 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 16 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 7 + ] + ], + [ + "q", + [ + 16 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "-0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 16 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 15 + ] + ], + [ + "q", + [ + 16 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 7 + ] + ], + [ + "q", + [ + 16 + ] + ] + ] + }, + { + "op": { + "type": "H", + "n_qb": 1, + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 16 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 16 + ] + ], + [ + "q", + [ + 17 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 17 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 8 + ] + ], + [ + "q", + [ + 17 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "-0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 17 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 16 + ] + ], + [ + "q", + [ + 17 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 8 + ] + ], + [ + "q", + [ + 17 + ] + ] + ] + }, + { + "op": { + "type": "H", + "n_qb": 1, + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 17 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 17 + ] + ], + [ + "q", + [ + 18 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 18 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 9 + ] + ], + [ + "q", + [ + 18 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "-0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 18 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 17 + ] + ], + [ + "q", + [ + 18 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 9 + ] + ], + [ + "q", + [ + 18 + ] + ] + ] + }, + { + "op": { + "type": "H", + "n_qb": 1, + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 18 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 9 + ] + ], + [ + "q", + [ + 17 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 17 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 9 + ] + ], + [ + "q", + [ + 17 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "-0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 17 + ] + ] + ] + }, + { + "op": { + "type": "H", + "n_qb": 1, + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 17 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 8 + ] + ], + [ + "q", + [ + 16 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 8 + ] + ], + [ + "q", + [ + 16 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 16 + ] + ], + [ + "q", + [ + 17 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "-0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 17 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 8 + ] + ], + [ + "q", + [ + 17 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 17 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 16 + ] + ], + [ + "q", + [ + 17 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 8 + ] + ], + [ + "q", + [ + 17 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 8 + ] + ], + [ + "q", + [ + 16 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 8 + ] + ], + [ + "q", + [ + 16 + ] + ] + ] + }, + { + "op": { + "type": "H", + "n_qb": 1, + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 16 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 7 + ] + ], + [ + "q", + [ + 15 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 7 + ] + ], + [ + "q", + [ + 15 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 15 + ] + ], + [ + "q", + [ + 16 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "-0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 16 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 7 + ] + ], + [ + "q", + [ + 16 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 16 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 15 + ] + ], + [ + "q", + [ + 16 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 7 + ] + ], + [ + "q", + [ + 16 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 7 + ] + ], + [ + "q", + [ + 15 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 7 + ] + ], + [ + "q", + [ + 15 + ] + ] + ] + }, + { + "op": { + "type": "H", + "n_qb": 1, + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 15 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 6 + ] + ], + [ + "q", + [ + 14 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 6 + ] + ], + [ + "q", + [ + 14 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 14 + ] + ], + [ + "q", + [ + 15 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "-0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 15 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 6 + ] + ], + [ + "q", + [ + 15 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 15 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 14 + ] + ], + [ + "q", + [ + 15 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 6 + ] + ], + [ + "q", + [ + 15 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 6 + ] + ], + [ + "q", + [ + 14 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 6 + ] + ], + [ + "q", + [ + 14 + ] + ] + ] + }, + { + "op": { + "type": "H", + "n_qb": 1, + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 14 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 5 + ] + ], + [ + "q", + [ + 13 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 5 + ] + ], + [ + "q", + [ + 13 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 13 + ] + ], + [ + "q", + [ + 14 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "-0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 14 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 5 + ] + ], + [ + "q", + [ + 14 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 14 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 13 + ] + ], + [ + "q", + [ + 14 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 5 + ] + ], + [ + "q", + [ + 14 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 5 + ] + ], + [ + "q", + [ + 13 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 5 + ] + ], + [ + "q", + [ + 13 + ] + ] + ] + }, + { + "op": { + "type": "H", + "n_qb": 1, + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 13 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 4 + ] + ], + [ + "q", + [ + 12 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 4 + ] + ], + [ + "q", + [ + 12 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 12 + ] + ], + [ + "q", + [ + 13 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "-0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 13 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 4 + ] + ], + [ + "q", + [ + 13 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 13 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 12 + ] + ], + [ + "q", + [ + 13 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 4 + ] + ], + [ + "q", + [ + 13 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 4 + ] + ], + [ + "q", + [ + 12 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 4 + ] + ], + [ + "q", + [ + 12 + ] + ] + ] + }, + { + "op": { + "type": "H", + "n_qb": 1, + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 12 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 3 + ] + ], + [ + "q", + [ + 11 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 3 + ] + ], + [ + "q", + [ + 11 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 11 + ] + ], + [ + "q", + [ + 12 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "-0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 12 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 3 + ] + ], + [ + "q", + [ + 12 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 12 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 11 + ] + ], + [ + "q", + [ + 12 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 3 + ] + ], + [ + "q", + [ + 12 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 3 + ] + ], + [ + "q", + [ + 11 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 3 + ] + ], + [ + "q", + [ + 11 + ] + ] + ] + }, + { + "op": { + "type": "H", + "n_qb": 1, + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 11 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 2 + ] + ], + [ + "q", + [ + 10 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 2 + ] + ], + [ + "q", + [ + 10 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 10 + ] + ], + [ + "q", + [ + 11 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "-0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 11 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 2 + ] + ], + [ + "q", + [ + 11 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 11 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 10 + ] + ], + [ + "q", + [ + 11 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 2 + ] + ], + [ + "q", + [ + 11 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 2 + ] + ], + [ + "q", + [ + 10 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 2 + ] + ], + [ + "q", + [ + 10 + ] + ] + ] + }, + { + "op": { + "type": "H", + "n_qb": 1, + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 10 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 0 + ] + ], + [ + "q", + [ + 1 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 0 + ] + ], + [ + "q", + [ + 1 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 1 + ] + ], + [ + "q", + [ + 10 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 10 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 0 + ] + ], + [ + "q", + [ + 10 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "-0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 10 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 1 + ] + ], + [ + "q", + [ + 10 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 10 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 0 + ] + ], + [ + "q", + [ + 10 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "-0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 10 + ] + ] + ] + }, + { + "op": { + "type": "H", + "n_qb": 1, + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 10 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 10 + ] + ], + [ + "q", + [ + 11 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 11 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 2 + ] + ], + [ + "q", + [ + 11 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "-0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 11 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 10 + ] + ], + [ + "q", + [ + 11 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 2 + ] + ], + [ + "q", + [ + 11 + ] + ] + ] + }, + { + "op": { + "type": "H", + "n_qb": 1, + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 11 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 11 + ] + ], + [ + "q", + [ + 12 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 12 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 3 + ] + ], + [ + "q", + [ + 12 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "-0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 12 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 11 + ] + ], + [ + "q", + [ + 12 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 3 + ] + ], + [ + "q", + [ + 12 + ] + ] + ] + }, + { + "op": { + "type": "H", + "n_qb": 1, + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 12 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 12 + ] + ], + [ + "q", + [ + 13 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 13 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 4 + ] + ], + [ + "q", + [ + 13 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "-0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 13 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 12 + ] + ], + [ + "q", + [ + 13 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 4 + ] + ], + [ + "q", + [ + 13 + ] + ] + ] + }, + { + "op": { + "type": "H", + "n_qb": 1, + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 13 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 13 + ] + ], + [ + "q", + [ + 14 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 14 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 5 + ] + ], + [ + "q", + [ + 14 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "-0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 14 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 13 + ] + ], + [ + "q", + [ + 14 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 5 + ] + ], + [ + "q", + [ + 14 + ] + ] + ] + }, + { + "op": { + "type": "H", + "n_qb": 1, + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 14 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 14 + ] + ], + [ + "q", + [ + 15 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 15 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 6 + ] + ], + [ + "q", + [ + 15 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "-0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 15 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 14 + ] + ], + [ + "q", + [ + 15 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 6 + ] + ], + [ + "q", + [ + 15 + ] + ] + ] + }, + { + "op": { + "type": "H", + "n_qb": 1, + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 15 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 15 + ] + ], + [ + "q", + [ + 16 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 16 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 7 + ] + ], + [ + "q", + [ + 16 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "-0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 16 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 15 + ] + ], + [ + "q", + [ + 16 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 7 + ] + ], + [ + "q", + [ + 16 + ] + ] + ] + }, + { + "op": { + "type": "H", + "n_qb": 1, + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 16 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 16 + ] + ], + [ + "q", + [ + 17 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 17 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 8 + ] + ], + [ + "q", + [ + 17 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "-0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 17 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 16 + ] + ], + [ + "q", + [ + 17 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 8 + ] + ], + [ + "q", + [ + 17 + ] + ] + ] + }, + { + "op": { + "type": "H", + "n_qb": 1, + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 17 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 8 + ] + ], + [ + "q", + [ + 16 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 16 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 8 + ] + ], + [ + "q", + [ + 16 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "-0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 16 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 7 + ] + ], + [ + "q", + [ + 15 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 15 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 7 + ] + ], + [ + "q", + [ + 15 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "-0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 15 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 6 + ] + ], + [ + "q", + [ + 14 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 14 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 6 + ] + ], + [ + "q", + [ + 14 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "-0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 14 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 5 + ] + ], + [ + "q", + [ + 13 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 13 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 5 + ] + ], + [ + "q", + [ + 13 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "-0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 13 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 4 + ] + ], + [ + "q", + [ + 12 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 12 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 4 + ] + ], + [ + "q", + [ + 12 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "-0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 12 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 3 + ] + ], + [ + "q", + [ + 11 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 11 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 3 + ] + ], + [ + "q", + [ + 11 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "-0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 11 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 2 + ] + ], + [ + "q", + [ + 10 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 10 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 2 + ] + ], + [ + "q", + [ + 10 + ] + ] + ] + }, + { + "op": { + "type": "Rz", + "n_qb": 1, + "params": [ + "-0.25" + ], + "signature": [ + "Q" + ] + }, + "args": [ + [ + "q", + [ + 10 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 0 + ] + ], + [ + "q", + [ + 1 + ] + ] + ] + }, + { + "op": { + "type": "CX", + "n_qb": 2, + "signature": [ + "Q", + "Q" + ] + }, + "args": [ + [ + "q", + [ + 0 + ] + ], + [ + "q", + [ + 1 + ] + ] + ] + } + ], + "qubits": [ + [ + "q", + [ + 1 + ] + ], + [ + "q", + [ + 7 + ] + ], + [ + "q", + [ + 0 + ] + ], + [ + "q", + [ + 13 + ] + ], + [ + "q", + [ + 16 + ] + ], + [ + "q", + [ + 10 + ] + ], + [ + "q", + [ + 3 + ] + ], + [ + "q", + [ + 18 + ] + ], + [ + "q", + [ + 12 + ] + ], + [ + "q", + [ + 4 + ] + ], + [ + "q", + [ + 14 + ] + ], + [ + "q", + [ + 9 + ] + ], + [ + "q", + [ + 15 + ] + ], + [ + "q", + [ + 17 + ] + ], + [ + "q", + [ + 5 + ] + ], + [ + "q", + [ + 2 + ] + ], + [ + "q", + [ + 6 + ] + ], + [ + "q", + [ + 8 + ] + ], + [ + "q", + [ + 11 + ] + ] + ], + "bits": [], + "implicit_permutation": [ + [ + [ + "q", + [ + 0 + ] + ], + [ + "q", + [ + 0 + ] + ] + ], + [ + [ + "q", + [ + 1 + ] + ], + [ + "q", + [ + 1 + ] + ] + ], + [ + [ + "q", + [ + 2 + ] + ], + [ + "q", + [ + 2 + ] + ] + ], + [ + [ + "q", + [ + 3 + ] + ], + [ + "q", + [ + 3 + ] + ] + ], + [ + [ + "q", + [ + 4 + ] + ], + [ + "q", + [ + 4 + ] + ] + ], + [ + [ + "q", + [ + 5 + ] + ], + [ + "q", + [ + 5 + ] + ] + ], + [ + [ + "q", + [ + 6 + ] + ], + [ + "q", + [ + 6 + ] + ] + ], + [ + [ + "q", + [ + 7 + ] + ], + [ + "q", + [ + 7 + ] + ] + ], + [ + [ + "q", + [ + 8 + ] + ], + [ + "q", + [ + 8 + ] + ] + ], + [ + [ + "q", + [ + 9 + ] + ], + [ + "q", + [ + 9 + ] + ] + ], + [ + [ + "q", + [ + 10 + ] + ], + [ + "q", + [ + 10 + ] + ] + ], + [ + [ + "q", + [ + 11 + ] + ], + [ + "q", + [ + 11 + ] + ] + ], + [ + [ + "q", + [ + 12 + ] + ], + [ + "q", + [ + 12 + ] + ] + ], + [ + [ + "q", + [ + 13 + ] + ], + [ + "q", + [ + 13 + ] + ] + ], + [ + [ + "q", + [ + 14 + ] + ], + [ + "q", + [ + 14 + ] + ] + ], + [ + [ + "q", + [ + 15 + ] + ], + [ + "q", + [ + 15 + ] + ] + ], + [ + [ + "q", + [ + 16 + ] + ], + [ + "q", + [ + 16 + ] + ] + ], + [ + [ + "q", + [ + 17 + ] + ], + [ + "q", + [ + 17 + ] + ] + ], + [ + [ + "q", + [ + 18 + ] + ], + [ + "q", + [ + 18 + ] + ] + ] + ] +} \ No newline at end of file diff --git a/test_files/cx_cx_eccs.json b/test_files/cx_cx_eccs.json new file mode 100644 index 00000000..8cf933f3 --- /dev/null +++ b/test_files/cx_cx_eccs.json @@ -0,0 +1,8 @@ +[[], +{ +"7779_2": [ +[[3,0,0,0,["2acba3946000"],[7.23975983031379111e-02,-6.01244148396314765e-02]],[]] +,[[3,0,0,2,["2acba3946000"],[7.23975983031379111e-02,-6.01244148396314765e-02]],[["cx", ["Q0", "Q1"],["Q0", "Q1"]],["cx", ["Q0", "Q1"],["Q0", "Q1"]]]] +] +} +] \ No newline at end of file