{"payload":{"allShortcutsEnabled":false,"fileTree":{"qiskit/transpiler/passes/optimization":{"items":[{"name":"template_matching","path":"qiskit/transpiler/passes/optimization/template_matching","contentType":"directory"},{"name":"__init__.py","path":"qiskit/transpiler/passes/optimization/__init__.py","contentType":"file"},{"name":"_gate_extension.py","path":"qiskit/transpiler/passes/optimization/_gate_extension.py","contentType":"file"},{"name":"collect_1q_runs.py","path":"qiskit/transpiler/passes/optimization/collect_1q_runs.py","contentType":"file"},{"name":"collect_2q_blocks.py","path":"qiskit/transpiler/passes/optimization/collect_2q_blocks.py","contentType":"file"},{"name":"collect_and_collapse.py","path":"qiskit/transpiler/passes/optimization/collect_and_collapse.py","contentType":"file"},{"name":"collect_cliffords.py","path":"qiskit/transpiler/passes/optimization/collect_cliffords.py","contentType":"file"},{"name":"collect_linear_functions.py","path":"qiskit/transpiler/passes/optimization/collect_linear_functions.py","contentType":"file"},{"name":"collect_multiqubit_blocks.py","path":"qiskit/transpiler/passes/optimization/collect_multiqubit_blocks.py","contentType":"file"},{"name":"commutation_analysis.py","path":"qiskit/transpiler/passes/optimization/commutation_analysis.py","contentType":"file"},{"name":"commutative_cancellation.py","path":"qiskit/transpiler/passes/optimization/commutative_cancellation.py","contentType":"file"},{"name":"commutative_inverse_cancellation.py","path":"qiskit/transpiler/passes/optimization/commutative_inverse_cancellation.py","contentType":"file"},{"name":"consolidate_blocks.py","path":"qiskit/transpiler/passes/optimization/consolidate_blocks.py","contentType":"file"},{"name":"cx_cancellation.py","path":"qiskit/transpiler/passes/optimization/cx_cancellation.py","contentType":"file"},{"name":"echo_rzx_weyl_decomposition.py","path":"qiskit/transpiler/passes/optimization/echo_rzx_weyl_decomposition.py","contentType":"file"},{"name":"hoare_opt.py","path":"qiskit/transpiler/passes/optimization/hoare_opt.py","contentType":"file"},{"name":"inverse_cancellation.py","path":"qiskit/transpiler/passes/optimization/inverse_cancellation.py","contentType":"file"},{"name":"normalize_rx_angle.py","path":"qiskit/transpiler/passes/optimization/normalize_rx_angle.py","contentType":"file"},{"name":"optimize_1q_commutation.py","path":"qiskit/transpiler/passes/optimization/optimize_1q_commutation.py","contentType":"file"},{"name":"optimize_1q_decomposition.py","path":"qiskit/transpiler/passes/optimization/optimize_1q_decomposition.py","contentType":"file"},{"name":"optimize_1q_gates.py","path":"qiskit/transpiler/passes/optimization/optimize_1q_gates.py","contentType":"file"},{"name":"optimize_annotated.py","path":"qiskit/transpiler/passes/optimization/optimize_annotated.py","contentType":"file"},{"name":"optimize_cliffords.py","path":"qiskit/transpiler/passes/optimization/optimize_cliffords.py","contentType":"file"},{"name":"optimize_swap_before_measure.py","path":"qiskit/transpiler/passes/optimization/optimize_swap_before_measure.py","contentType":"file"},{"name":"remove_diagonal_gates_before_measure.py","path":"qiskit/transpiler/passes/optimization/remove_diagonal_gates_before_measure.py","contentType":"file"},{"name":"remove_reset_in_zero_state.py","path":"qiskit/transpiler/passes/optimization/remove_reset_in_zero_state.py","contentType":"file"},{"name":"reset_after_measure_simplification.py","path":"qiskit/transpiler/passes/optimization/reset_after_measure_simplification.py","contentType":"file"},{"name":"template_optimization.py","path":"qiskit/transpiler/passes/optimization/template_optimization.py","contentType":"file"}],"totalCount":28},"qiskit/transpiler/passes":{"items":[{"name":"analysis","path":"qiskit/transpiler/passes/analysis","contentType":"directory"},{"name":"basis","path":"qiskit/transpiler/passes/basis","contentType":"directory"},{"name":"calibration","path":"qiskit/transpiler/passes/calibration","contentType":"directory"},{"name":"layout","path":"qiskit/transpiler/passes/layout","contentType":"directory"},{"name":"optimization","path":"qiskit/transpiler/passes/optimization","contentType":"directory"},{"name":"routing","path":"qiskit/transpiler/passes/routing","contentType":"directory"},{"name":"scheduling","path":"qiskit/transpiler/passes/scheduling","contentType":"directory"},{"name":"synthesis","path":"qiskit/transpiler/passes/synthesis","contentType":"directory"},{"name":"utils","path":"qiskit/transpiler/passes/utils","contentType":"directory"},{"name":"__init__.py","path":"qiskit/transpiler/passes/__init__.py","contentType":"file"}],"totalCount":10},"qiskit/transpiler":{"items":[{"name":"passes","path":"qiskit/transpiler/passes","contentType":"directory"},{"name":"preset_passmanagers","path":"qiskit/transpiler/preset_passmanagers","contentType":"directory"},{"name":"__init__.py","path":"qiskit/transpiler/__init__.py","contentType":"file"},{"name":"basepasses.py","path":"qiskit/transpiler/basepasses.py","contentType":"file"},{"name":"coupling.py","path":"qiskit/transpiler/coupling.py","contentType":"file"},{"name":"exceptions.py","path":"qiskit/transpiler/exceptions.py","contentType":"file"},{"name":"instruction_durations.py","path":"qiskit/transpiler/instruction_durations.py","contentType":"file"},{"name":"layout.py","path":"qiskit/transpiler/layout.py","contentType":"file"},{"name":"passmanager.py","path":"qiskit/transpiler/passmanager.py","contentType":"file"},{"name":"passmanager_config.py","path":"qiskit/transpiler/passmanager_config.py","contentType":"file"},{"name":"target.py","path":"qiskit/transpiler/target.py","contentType":"file"},{"name":"timing_constraints.py","path":"qiskit/transpiler/timing_constraints.py","contentType":"file"}],"totalCount":12},"qiskit":{"items":[{"name":"assembler","path":"qiskit/assembler","contentType":"directory"},{"name":"circuit","path":"qiskit/circuit","contentType":"directory"},{"name":"compiler","path":"qiskit/compiler","contentType":"directory"},{"name":"converters","path":"qiskit/converters","contentType":"directory"},{"name":"dagcircuit","path":"qiskit/dagcircuit","contentType":"directory"},{"name":"passmanager","path":"qiskit/passmanager","contentType":"directory"},{"name":"primitives","path":"qiskit/primitives","contentType":"directory"},{"name":"providers","path":"qiskit/providers","contentType":"directory"},{"name":"pulse","path":"qiskit/pulse","contentType":"directory"},{"name":"qasm","path":"qiskit/qasm","contentType":"directory"},{"name":"qasm2","path":"qiskit/qasm2","contentType":"directory"},{"name":"qasm3","path":"qiskit/qasm3","contentType":"directory"},{"name":"qobj","path":"qiskit/qobj","contentType":"directory"},{"name":"qpy","path":"qiskit/qpy","contentType":"directory"},{"name":"quantum_info","path":"qiskit/quantum_info","contentType":"directory"},{"name":"result","path":"qiskit/result","contentType":"directory"},{"name":"scheduler","path":"qiskit/scheduler","contentType":"directory"},{"name":"synthesis","path":"qiskit/synthesis","contentType":"directory"},{"name":"transpiler","path":"qiskit/transpiler","contentType":"directory"},{"name":"utils","path":"qiskit/utils","contentType":"directory"},{"name":"visualization","path":"qiskit/visualization","contentType":"directory"},{"name":"VERSION.txt","path":"qiskit/VERSION.txt","contentType":"file"},{"name":"__init__.py","path":"qiskit/__init__.py","contentType":"file"},{"name":"exceptions.py","path":"qiskit/exceptions.py","contentType":"file"},{"name":"user_config.py","path":"qiskit/user_config.py","contentType":"file"},{"name":"version.py","path":"qiskit/version.py","contentType":"file"}],"totalCount":26},"":{"items":[{"name":".azure","path":".azure","contentType":"directory"},{"name":".binder","path":".binder","contentType":"directory"},{"name":".cargo","path":".cargo","contentType":"directory"},{"name":".github","path":".github","contentType":"directory"},{"name":"crates","path":"crates","contentType":"directory"},{"name":"docs","path":"docs","contentType":"directory"},{"name":"examples","path":"examples","contentType":"directory"},{"name":"qiskit","path":"qiskit","contentType":"directory"},{"name":"releasenotes","path":"releasenotes","contentType":"directory"},{"name":"test","path":"test","contentType":"directory"},{"name":"tools","path":"tools","contentType":"directory"},{"name":".editorconfig","path":".editorconfig","contentType":"file"},{"name":".git-blame-ignore-revs","path":".git-blame-ignore-revs","contentType":"file"},{"name":".gitignore","path":".gitignore","contentType":"file"},{"name":".local-spellings","path":".local-spellings","contentType":"file"},{"name":".mailmap","path":".mailmap","contentType":"file"},{"name":".mergify.yml","path":".mergify.yml","contentType":"file"},{"name":".stestr.conf","path":".stestr.conf","contentType":"file"},{"name":"CITATION.bib","path":"CITATION.bib","contentType":"file"},{"name":"CODE_OF_CONDUCT.md","path":"CODE_OF_CONDUCT.md","contentType":"file"},{"name":"CONTRIBUTING.md","path":"CONTRIBUTING.md","contentType":"file"},{"name":"Cargo.lock","path":"Cargo.lock","contentType":"file"},{"name":"Cargo.toml","path":"Cargo.toml","contentType":"file"},{"name":"DEPRECATION.md","path":"DEPRECATION.md","contentType":"file"},{"name":"LICENSE.txt","path":"LICENSE.txt","contentType":"file"},{"name":"MAINTAINING.md","path":"MAINTAINING.md","contentType":"file"},{"name":"MANIFEST.in","path":"MANIFEST.in","contentType":"file"},{"name":"Makefile","path":"Makefile","contentType":"file"},{"name":"README.md","path":"README.md","contentType":"file"},{"name":"SECURITY.md","path":"SECURITY.md","contentType":"file"},{"name":"asv.conf.json","path":"asv.conf.json","contentType":"file"},{"name":"azure-pipelines.yml","path":"azure-pipelines.yml","contentType":"file"},{"name":"constraints.txt","path":"constraints.txt","contentType":"file"},{"name":"pyproject.toml","path":"pyproject.toml","contentType":"file"},{"name":"qiskit_bot.yaml","path":"qiskit_bot.yaml","contentType":"file"},{"name":"requirements-dev.txt","path":"requirements-dev.txt","contentType":"file"},{"name":"requirements-optional.txt","path":"requirements-optional.txt","contentType":"file"},{"name":"requirements.txt","path":"requirements.txt","contentType":"file"},{"name":"rust-toolchain.toml","path":"rust-toolchain.toml","contentType":"file"},{"name":"setup.py","path":"setup.py","contentType":"file"},{"name":"tox.ini","path":"tox.ini","contentType":"file"}],"totalCount":41}},"fileTreeProcessingTime":26.353853,"foldersToFetch":[],"repo":{"id":83821669,"defaultBranch":"main","name":"qiskit","ownerLogin":"Qiskit","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2017-03-03T17:02:42.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/30696987?v=4","public":true,"private":false,"isOrgOwned":true},"symbolsExpanded":false,"treeExpanded":true,"refInfo":{"name":"main","listCacheKey":"v0:1710785011.0","canEdit":false,"refType":"branch","currentOid":"43381ae1b159c01b55159d2dc1e8a65970b72746"},"path":"qiskit/transpiler/passes/optimization/optimize_1q_decomposition.py","currentUser":null,"blob":{"rawLines":["# This code is part of Qiskit.","#","# (C) Copyright IBM 2017, 2023.","#","# This code is licensed under the Apache License, Version 2.0. You may","# obtain a copy of this license in the LICENSE.txt file in the root directory","# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0.","#","# Any modifications or derivative works of this code must retain this","# copyright notice, and modified files need to carry a notice indicating","# that they have been altered from the originals.","","\"\"\"Optimize chains of single-qubit gates using Euler 1q decomposer\"\"\"","","import logging","import math","","from qiskit.transpiler.basepasses import TransformationPass","from qiskit.transpiler.passes.utils import control_flow","from qiskit.synthesis.one_qubit import one_qubit_decompose","from qiskit._accelerate import euler_one_qubit_decomposer","from qiskit.circuit.library.standard_gates import ("," UGate,"," PhaseGate,"," U3Gate,"," U2Gate,"," U1Gate,"," RXGate,"," RYGate,"," RZGate,"," RGate,"," SXGate,"," XGate,",")","from qiskit.circuit import Qubit","from qiskit.dagcircuit.dagcircuit import DAGCircuit","","","logger = logging.getLogger(__name__)","","# When expanding the list of supported gates this needs to updated in","# lockstep with the VALID_BASES constant in src/euler_one_qubit_decomposer.rs","# and the global variables in one_qubit_decompose.py","NAME_MAP = {"," \"u\": UGate,"," \"u1\": U1Gate,"," \"u2\": U2Gate,"," \"u3\": U3Gate,"," \"p\": PhaseGate,"," \"rx\": RXGate,"," \"ry\": RYGate,"," \"rz\": RZGate,"," \"r\": RGate,"," \"sx\": SXGate,"," \"x\": XGate,","}","","","class Optimize1qGatesDecomposition(TransformationPass):"," \"\"\"Optimize chains of single-qubit gates by combining them into a single gate.",""," The decision to replace the original chain with a new re-synthesis depends on:"," - whether the original chain was out of basis: replace"," - whether the original chain was in basis but re-synthesis is lower error: replace"," - whether the original chain contains a pulse gate: do not replace"," - whether the original chain amounts to identity: replace with null",""," Error is computed as a multiplication of the errors of individual gates on that qubit."," \"\"\"",""," def __init__(self, basis=None, target=None):"," \"\"\"Optimize1qGatesDecomposition initializer.",""," Args:"," basis (list[str]): Basis gates to consider, e.g. `['u3', 'cx']`. For the effects"," of this pass, the basis is the set intersection between the `basis` parameter"," and the Euler basis. Ignored if ``target`` is also specified."," target (Optional[Target]): The :class:`~.Target` object corresponding to the compilation"," target. When specified, any argument specified for ``basis_gates`` is ignored."," \"\"\""," super().__init__()",""," self._basis_gates = basis"," self._target = target"," self._global_decomposers = []"," self._local_decomposers_cache = {}",""," if basis:"," self._global_decomposers = _possible_decomposers(set(basis))"," elif target is None:"," self._global_decomposers = _possible_decomposers(None)"," self._basis_gates = None",""," self.error_map = self._build_error_map()",""," def _build_error_map(self):"," # include path for when target exists but target.num_qubits is None (BasicSimulator)"," if self._target is not None and self._target.num_qubits is not None:"," error_map = euler_one_qubit_decomposer.OneQubitGateErrorMap(self._target.num_qubits)"," for qubit in range(self._target.num_qubits):"," gate_error = {}"," for gate, gate_props in self._target.items():"," if gate_props is not None:"," props = gate_props.get((qubit,), None)"," if props is not None and props.error is not None:"," gate_error[gate] = props.error"," error_map.add_qubit(gate_error)"," return error_map"," else:"," return None",""," def _resynthesize_run(self, matrix, qubit=None):"," \"\"\""," Re-synthesizes one 2x2 `matrix`, typically extracted via `dag.collect_1q_runs`.",""," Returns the newly synthesized circuit in the indicated basis, or None"," if no synthesis routine applied.",""," When multiple synthesis options are available, it prefers the one with the lowest"," error when the circuit is applied to `qubit`."," \"\"\""," # include path for when target exists but target.num_qubits is None (BasicSimulator)"," if self._target is not None and self._target.num_qubits is not None:"," if qubit is not None:"," qubits_tuple = (qubit,)"," else:"," qubits_tuple = None"," if qubits_tuple in self._local_decomposers_cache:"," decomposers = self._local_decomposers_cache[qubits_tuple]"," else:"," available_1q_basis = set(self._target.operation_names_for_qargs(qubits_tuple))"," decomposers = _possible_decomposers(available_1q_basis)"," else:"," decomposers = self._global_decomposers",""," best_synth_circuit = euler_one_qubit_decomposer.unitary_to_gate_sequence("," matrix,"," decomposers,"," qubit,"," self.error_map,"," )"," return best_synth_circuit",""," def _gate_sequence_to_dag(self, best_synth_circuit):"," qubits = (Qubit(),)"," out_dag = DAGCircuit()"," out_dag.add_qubits(qubits)"," out_dag.global_phase = best_synth_circuit.global_phase",""," for gate_name, angles in best_synth_circuit:"," out_dag.apply_operation_back(NAME_MAP[gate_name](*angles), qubits, check=False)"," return out_dag",""," def _substitution_checks(self, dag, old_run, new_circ, basis, qubit):"," \"\"\""," Returns `True` when it is recommended to replace `old_run` with `new_circ` over `basis`."," \"\"\""," if new_circ is None:"," return False",""," # do we even have calibrations?"," has_cals_p = dag.calibrations is not None and len(dag.calibrations) > 0"," # does this run have uncalibrated gates?"," uncalibrated_p = not has_cals_p or any(not dag.has_calibration_for(g) for g in old_run)"," # does this run have gates not in the image of ._decomposers _and_ uncalibrated?"," if basis is not None:"," uncalibrated_and_not_basis_p = any("," g.name not in basis and (not has_cals_p or not dag.has_calibration_for(g))"," for g in old_run"," )"," else:"," # If no basis is specified then we're always in the basis"," uncalibrated_and_not_basis_p = False",""," # if we're outside of the basis set, we're obligated to logically decompose."," # if we're outside of the set of gates for which we have physical definitions,"," # then we _try_ to decompose, using the results if we see improvement."," new_error = 0.0"," old_error = 0.0"," if not uncalibrated_and_not_basis_p:"," new_error = self._error(new_circ, qubit)"," old_error = self._error(old_run, qubit)",""," return ("," uncalibrated_and_not_basis_p"," or (uncalibrated_p and new_error < old_error)"," or (math.isclose(new_error[0], 0) and not math.isclose(old_error[0], 0))"," )",""," @control_flow.trivial_recurse"," def run(self, dag):"," \"\"\"Run the Optimize1qGatesDecomposition pass on `dag`.",""," Args:"," dag (DAGCircuit): the DAG to be optimized.",""," Returns:"," DAGCircuit: the optimized DAG."," \"\"\""," runs = dag.collect_1q_runs()"," for run in runs:"," qubit = dag.find_bit(run[0].qargs[0]).index"," operator = run[0].op.to_matrix()"," for node in run[1:]:"," operator = node.op.to_matrix().dot(operator)"," best_circuit_sequence = self._resynthesize_run(operator, qubit)",""," if self._target is None:"," basis = self._basis_gates"," else:"," basis = self._target.operation_names_for_qargs((qubit,))",""," if best_circuit_sequence is not None and self._substitution_checks("," dag, run, best_circuit_sequence, basis, qubit"," ):"," new_dag = self._gate_sequence_to_dag(best_circuit_sequence)"," dag.substitute_node_with_dag(run[0], new_dag)"," # Delete the other nodes in the run"," for current_node in run[1:]:"," dag.remove_op_node(current_node)",""," return dag",""," def _error(self, circuit, qubit):"," \"\"\""," Calculate a rough error for a `circuit` that runs on a specific"," `qubit` of `target` (`circuit` can either be an OneQubitGateSequence"," from Rust or a list of DAGOPNodes).",""," Use basis errors from target if available, otherwise use length"," of circuit as a weak proxy for error."," \"\"\""," if isinstance(circuit, euler_one_qubit_decomposer.OneQubitGateSequence):"," return euler_one_qubit_decomposer.compute_error_one_qubit_sequence("," circuit, qubit, self.error_map"," )"," else:"," circuit_list = [(x.op.name, []) for x in circuit]"," return euler_one_qubit_decomposer.compute_error_list("," circuit_list, qubit, self.error_map"," )","","","def _possible_decomposers(basis_set):"," decomposers = []"," if basis_set is None:"," decomposers = list(one_qubit_decompose.ONE_QUBIT_EULER_BASIS_GATES)"," else:"," euler_basis_gates = one_qubit_decompose.ONE_QUBIT_EULER_BASIS_GATES"," for euler_basis_name, gates in euler_basis_gates.items():"," if set(gates).issubset(basis_set):"," decomposers.append(euler_basis_name)"," # If both U3 and U321 are in decomposer list only run U321 because"," # in worst case it will produce the same U3 output, but in the general"," # case it will use U2 and U1 which will be more efficient."," if \"U3\" in decomposers and \"U321\" in decomposers:"," decomposers.remove(\"U3\")"," # If both ZSX and ZSXX are in decomposer list only run ZSXX because"," # in the worst case it will produce the same output, but in the general"," # case it will simplify X rotations to use X gate instead of multiple"," # SX gates and be more efficient. Running multiple decomposers in this"," # case will just waste time."," if \"ZSX\" in decomposers and \"ZSXX\" in decomposers:"," decomposers.remove(\"ZSX\")"," return decomposers"],"stylingDirectives":[[{"start":0,"end":30,"cssClass":"pl-c"}],[{"start":0,"end":1,"cssClass":"pl-c"}],[{"start":0,"end":31,"cssClass":"pl-c"}],[{"start":0,"end":1,"cssClass":"pl-c"}],[{"start":0,"end":70,"cssClass":"pl-c"}],[{"start":0,"end":77,"cssClass":"pl-c"}],[{"start":0,"end":71,"cssClass":"pl-c"}],[{"start":0,"end":1,"cssClass":"pl-c"}],[{"start":0,"end":69,"cssClass":"pl-c"}],[{"start":0,"end":72,"cssClass":"pl-c"}],[{"start":0,"end":49,"cssClass":"pl-c"}],[],[{"start":0,"end":69,"cssClass":"pl-s"}],[],[{"start":0,"end":6,"cssClass":"pl-k"},{"start":7,"end":14,"cssClass":"pl-s1"}],[{"start":0,"end":6,"cssClass":"pl-k"},{"start":7,"end":11,"cssClass":"pl-s1"}],[],[{"start":0,"end":4,"cssClass":"pl-k"},{"start":5,"end":11,"cssClass":"pl-s1"},{"start":12,"end":22,"cssClass":"pl-s1"},{"start":23,"end":33,"cssClass":"pl-s1"},{"start":34,"end":40,"cssClass":"pl-k"},{"start":41,"end":59,"cssClass":"pl-v"}],[{"start":0,"end":4,"cssClass":"pl-k"},{"start":5,"end":11,"cssClass":"pl-s1"},{"start":12,"end":22,"cssClass":"pl-s1"},{"start":23,"end":29,"cssClass":"pl-s1"},{"start":30,"end":35,"cssClass":"pl-s1"},{"start":36,"end":42,"cssClass":"pl-k"},{"start":43,"end":55,"cssClass":"pl-s1"}],[{"start":0,"end":4,"cssClass":"pl-k"},{"start":5,"end":11,"cssClass":"pl-s1"},{"start":12,"end":21,"cssClass":"pl-s1"},{"start":22,"end":31,"cssClass":"pl-s1"},{"start":32,"end":38,"cssClass":"pl-k"},{"start":39,"end":58,"cssClass":"pl-s1"}],[{"start":0,"end":4,"cssClass":"pl-k"},{"start":5,"end":11,"cssClass":"pl-s1"},{"start":12,"end":23,"cssClass":"pl-s1"},{"start":24,"end":30,"cssClass":"pl-k"},{"start":31,"end":57,"cssClass":"pl-s1"}],[{"start":0,"end":4,"cssClass":"pl-k"},{"start":5,"end":11,"cssClass":"pl-s1"},{"start":12,"end":19,"cssClass":"pl-s1"},{"start":20,"end":27,"cssClass":"pl-s1"},{"start":28,"end":42,"cssClass":"pl-s1"},{"start":43,"end":49,"cssClass":"pl-k"}],[{"start":4,"end":9,"cssClass":"pl-v"}],[{"start":4,"end":13,"cssClass":"pl-v"}],[{"start":4,"end":10,"cssClass":"pl-v"}],[{"start":4,"end":10,"cssClass":"pl-v"}],[{"start":4,"end":10,"cssClass":"pl-v"}],[{"start":4,"end":10,"cssClass":"pl-v"}],[{"start":4,"end":10,"cssClass":"pl-v"}],[{"start":4,"end":10,"cssClass":"pl-v"}],[{"start":4,"end":9,"cssClass":"pl-v"}],[{"start":4,"end":10,"cssClass":"pl-v"}],[{"start":4,"end":9,"cssClass":"pl-v"}],[],[{"start":0,"end":4,"cssClass":"pl-k"},{"start":5,"end":11,"cssClass":"pl-s1"},{"start":12,"end":19,"cssClass":"pl-s1"},{"start":20,"end":26,"cssClass":"pl-k"},{"start":27,"end":32,"cssClass":"pl-v"}],[{"start":0,"end":4,"cssClass":"pl-k"},{"start":5,"end":11,"cssClass":"pl-s1"},{"start":12,"end":22,"cssClass":"pl-s1"},{"start":23,"end":33,"cssClass":"pl-s1"},{"start":34,"end":40,"cssClass":"pl-k"},{"start":41,"end":51,"cssClass":"pl-v"}],[],[],[{"start":0,"end":6,"cssClass":"pl-s1"},{"start":7,"end":8,"cssClass":"pl-c1"},{"start":9,"end":16,"cssClass":"pl-s1"},{"start":17,"end":26,"cssClass":"pl-en"},{"start":27,"end":35,"cssClass":"pl-s1"}],[],[{"start":0,"end":69,"cssClass":"pl-c"}],[{"start":0,"end":77,"cssClass":"pl-c"}],[{"start":0,"end":52,"cssClass":"pl-c"}],[{"start":0,"end":8,"cssClass":"pl-v"},{"start":9,"end":10,"cssClass":"pl-c1"}],[{"start":4,"end":7,"cssClass":"pl-s"},{"start":9,"end":14,"cssClass":"pl-v"}],[{"start":4,"end":8,"cssClass":"pl-s"},{"start":10,"end":16,"cssClass":"pl-v"}],[{"start":4,"end":8,"cssClass":"pl-s"},{"start":10,"end":16,"cssClass":"pl-v"}],[{"start":4,"end":8,"cssClass":"pl-s"},{"start":10,"end":16,"cssClass":"pl-v"}],[{"start":4,"end":7,"cssClass":"pl-s"},{"start":9,"end":18,"cssClass":"pl-v"}],[{"start":4,"end":8,"cssClass":"pl-s"},{"start":10,"end":16,"cssClass":"pl-v"}],[{"start":4,"end":8,"cssClass":"pl-s"},{"start":10,"end":16,"cssClass":"pl-v"}],[{"start":4,"end":8,"cssClass":"pl-s"},{"start":10,"end":16,"cssClass":"pl-v"}],[{"start":4,"end":7,"cssClass":"pl-s"},{"start":9,"end":14,"cssClass":"pl-v"}],[{"start":4,"end":8,"cssClass":"pl-s"},{"start":10,"end":16,"cssClass":"pl-v"}],[{"start":4,"end":7,"cssClass":"pl-s"},{"start":9,"end":14,"cssClass":"pl-v"}],[],[],[],[{"start":0,"end":5,"cssClass":"pl-k"},{"start":6,"end":34,"cssClass":"pl-v"},{"start":35,"end":53,"cssClass":"pl-v"}],[{"start":4,"end":82,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":82,"cssClass":"pl-s"}],[{"start":0,"end":59,"cssClass":"pl-s"}],[{"start":0,"end":87,"cssClass":"pl-s"}],[{"start":0,"end":71,"cssClass":"pl-s"}],[{"start":0,"end":72,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":91,"cssClass":"pl-s"}],[{"start":0,"end":7,"cssClass":"pl-s"}],[],[{"start":4,"end":7,"cssClass":"pl-k"},{"start":8,"end":16,"cssClass":"pl-en"},{"start":17,"end":21,"cssClass":"pl-s1"},{"start":23,"end":28,"cssClass":"pl-s1"},{"start":28,"end":29,"cssClass":"pl-c1"},{"start":29,"end":33,"cssClass":"pl-c1"},{"start":35,"end":41,"cssClass":"pl-s1"},{"start":41,"end":42,"cssClass":"pl-c1"},{"start":42,"end":46,"cssClass":"pl-c1"}],[{"start":8,"end":52,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":13,"cssClass":"pl-s"}],[{"start":0,"end":92,"cssClass":"pl-s"}],[{"start":0,"end":93,"cssClass":"pl-s"}],[{"start":0,"end":77,"cssClass":"pl-s"}],[{"start":0,"end":100,"cssClass":"pl-s"}],[{"start":0,"end":94,"cssClass":"pl-s"}],[{"start":0,"end":11,"cssClass":"pl-s"}],[{"start":8,"end":13,"cssClass":"pl-en"},{"start":16,"end":24,"cssClass":"pl-en"}],[],[{"start":8,"end":12,"cssClass":"pl-s1"},{"start":13,"end":25,"cssClass":"pl-s1"},{"start":26,"end":27,"cssClass":"pl-c1"},{"start":28,"end":33,"cssClass":"pl-s1"}],[{"start":8,"end":12,"cssClass":"pl-s1"},{"start":13,"end":20,"cssClass":"pl-s1"},{"start":21,"end":22,"cssClass":"pl-c1"},{"start":23,"end":29,"cssClass":"pl-s1"}],[{"start":8,"end":12,"cssClass":"pl-s1"},{"start":13,"end":32,"cssClass":"pl-s1"},{"start":33,"end":34,"cssClass":"pl-c1"}],[{"start":8,"end":12,"cssClass":"pl-s1"},{"start":13,"end":37,"cssClass":"pl-s1"},{"start":38,"end":39,"cssClass":"pl-c1"}],[],[{"start":8,"end":10,"cssClass":"pl-k"},{"start":11,"end":16,"cssClass":"pl-s1"}],[{"start":12,"end":16,"cssClass":"pl-s1"},{"start":17,"end":36,"cssClass":"pl-s1"},{"start":37,"end":38,"cssClass":"pl-c1"},{"start":39,"end":60,"cssClass":"pl-en"},{"start":61,"end":64,"cssClass":"pl-en"},{"start":65,"end":70,"cssClass":"pl-s1"}],[{"start":8,"end":12,"cssClass":"pl-k"},{"start":13,"end":19,"cssClass":"pl-s1"},{"start":20,"end":22,"cssClass":"pl-c1"},{"start":23,"end":27,"cssClass":"pl-c1"}],[{"start":12,"end":16,"cssClass":"pl-s1"},{"start":17,"end":36,"cssClass":"pl-s1"},{"start":37,"end":38,"cssClass":"pl-c1"},{"start":39,"end":60,"cssClass":"pl-en"},{"start":61,"end":65,"cssClass":"pl-c1"}],[{"start":12,"end":16,"cssClass":"pl-s1"},{"start":17,"end":29,"cssClass":"pl-s1"},{"start":30,"end":31,"cssClass":"pl-c1"},{"start":32,"end":36,"cssClass":"pl-c1"}],[],[{"start":8,"end":12,"cssClass":"pl-s1"},{"start":13,"end":22,"cssClass":"pl-s1"},{"start":23,"end":24,"cssClass":"pl-c1"},{"start":25,"end":29,"cssClass":"pl-s1"},{"start":30,"end":46,"cssClass":"pl-en"}],[],[{"start":4,"end":7,"cssClass":"pl-k"},{"start":8,"end":24,"cssClass":"pl-en"},{"start":25,"end":29,"cssClass":"pl-s1"}],[{"start":8,"end":92,"cssClass":"pl-c"}],[{"start":8,"end":10,"cssClass":"pl-k"},{"start":11,"end":15,"cssClass":"pl-s1"},{"start":16,"end":23,"cssClass":"pl-s1"},{"start":24,"end":26,"cssClass":"pl-c1"},{"start":27,"end":30,"cssClass":"pl-c1"},{"start":31,"end":35,"cssClass":"pl-c1"},{"start":36,"end":39,"cssClass":"pl-c1"},{"start":40,"end":44,"cssClass":"pl-s1"},{"start":45,"end":52,"cssClass":"pl-s1"},{"start":53,"end":63,"cssClass":"pl-s1"},{"start":64,"end":66,"cssClass":"pl-c1"},{"start":67,"end":70,"cssClass":"pl-c1"},{"start":71,"end":75,"cssClass":"pl-c1"}],[{"start":12,"end":21,"cssClass":"pl-s1"},{"start":22,"end":23,"cssClass":"pl-c1"},{"start":24,"end":50,"cssClass":"pl-s1"},{"start":51,"end":71,"cssClass":"pl-v"},{"start":72,"end":76,"cssClass":"pl-s1"},{"start":77,"end":84,"cssClass":"pl-s1"},{"start":85,"end":95,"cssClass":"pl-s1"}],[{"start":12,"end":15,"cssClass":"pl-k"},{"start":16,"end":21,"cssClass":"pl-s1"},{"start":22,"end":24,"cssClass":"pl-c1"},{"start":25,"end":30,"cssClass":"pl-en"},{"start":31,"end":35,"cssClass":"pl-s1"},{"start":36,"end":43,"cssClass":"pl-s1"},{"start":44,"end":54,"cssClass":"pl-s1"}],[{"start":16,"end":26,"cssClass":"pl-s1"},{"start":27,"end":28,"cssClass":"pl-c1"}],[{"start":16,"end":19,"cssClass":"pl-k"},{"start":20,"end":24,"cssClass":"pl-s1"},{"start":26,"end":36,"cssClass":"pl-s1"},{"start":37,"end":39,"cssClass":"pl-c1"},{"start":40,"end":44,"cssClass":"pl-s1"},{"start":45,"end":52,"cssClass":"pl-s1"},{"start":53,"end":58,"cssClass":"pl-en"}],[{"start":20,"end":22,"cssClass":"pl-k"},{"start":23,"end":33,"cssClass":"pl-s1"},{"start":34,"end":36,"cssClass":"pl-c1"},{"start":37,"end":40,"cssClass":"pl-c1"},{"start":41,"end":45,"cssClass":"pl-c1"}],[{"start":24,"end":29,"cssClass":"pl-s1"},{"start":30,"end":31,"cssClass":"pl-c1"},{"start":32,"end":42,"cssClass":"pl-s1"},{"start":43,"end":46,"cssClass":"pl-en"},{"start":48,"end":53,"cssClass":"pl-s1"},{"start":57,"end":61,"cssClass":"pl-c1"}],[{"start":24,"end":26,"cssClass":"pl-k"},{"start":27,"end":32,"cssClass":"pl-s1"},{"start":33,"end":35,"cssClass":"pl-c1"},{"start":36,"end":39,"cssClass":"pl-c1"},{"start":40,"end":44,"cssClass":"pl-c1"},{"start":45,"end":48,"cssClass":"pl-c1"},{"start":49,"end":54,"cssClass":"pl-s1"},{"start":55,"end":60,"cssClass":"pl-s1"},{"start":61,"end":63,"cssClass":"pl-c1"},{"start":64,"end":67,"cssClass":"pl-c1"},{"start":68,"end":72,"cssClass":"pl-c1"}],[{"start":28,"end":38,"cssClass":"pl-s1"},{"start":39,"end":43,"cssClass":"pl-s1"},{"start":45,"end":46,"cssClass":"pl-c1"},{"start":47,"end":52,"cssClass":"pl-s1"},{"start":53,"end":58,"cssClass":"pl-s1"}],[{"start":16,"end":25,"cssClass":"pl-s1"},{"start":26,"end":35,"cssClass":"pl-en"},{"start":36,"end":46,"cssClass":"pl-s1"}],[{"start":12,"end":18,"cssClass":"pl-k"},{"start":19,"end":28,"cssClass":"pl-s1"}],[{"start":8,"end":12,"cssClass":"pl-k"}],[{"start":12,"end":18,"cssClass":"pl-k"},{"start":19,"end":23,"cssClass":"pl-c1"}],[],[{"start":4,"end":7,"cssClass":"pl-k"},{"start":8,"end":25,"cssClass":"pl-en"},{"start":26,"end":30,"cssClass":"pl-s1"},{"start":32,"end":38,"cssClass":"pl-s1"},{"start":40,"end":45,"cssClass":"pl-s1"},{"start":45,"end":46,"cssClass":"pl-c1"},{"start":46,"end":50,"cssClass":"pl-c1"}],[{"start":8,"end":11,"cssClass":"pl-s"}],[{"start":0,"end":87,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":77,"cssClass":"pl-s"}],[{"start":0,"end":40,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":89,"cssClass":"pl-s"}],[{"start":0,"end":53,"cssClass":"pl-s"}],[{"start":0,"end":11,"cssClass":"pl-s"}],[{"start":8,"end":92,"cssClass":"pl-c"}],[{"start":8,"end":10,"cssClass":"pl-k"},{"start":11,"end":15,"cssClass":"pl-s1"},{"start":16,"end":23,"cssClass":"pl-s1"},{"start":24,"end":26,"cssClass":"pl-c1"},{"start":27,"end":30,"cssClass":"pl-c1"},{"start":31,"end":35,"cssClass":"pl-c1"},{"start":36,"end":39,"cssClass":"pl-c1"},{"start":40,"end":44,"cssClass":"pl-s1"},{"start":45,"end":52,"cssClass":"pl-s1"},{"start":53,"end":63,"cssClass":"pl-s1"},{"start":64,"end":66,"cssClass":"pl-c1"},{"start":67,"end":70,"cssClass":"pl-c1"},{"start":71,"end":75,"cssClass":"pl-c1"}],[{"start":12,"end":14,"cssClass":"pl-k"},{"start":15,"end":20,"cssClass":"pl-s1"},{"start":21,"end":23,"cssClass":"pl-c1"},{"start":24,"end":27,"cssClass":"pl-c1"},{"start":28,"end":32,"cssClass":"pl-c1"}],[{"start":16,"end":28,"cssClass":"pl-s1"},{"start":29,"end":30,"cssClass":"pl-c1"},{"start":32,"end":37,"cssClass":"pl-s1"}],[{"start":12,"end":16,"cssClass":"pl-k"}],[{"start":16,"end":28,"cssClass":"pl-s1"},{"start":29,"end":30,"cssClass":"pl-c1"},{"start":31,"end":35,"cssClass":"pl-c1"}],[{"start":12,"end":14,"cssClass":"pl-k"},{"start":15,"end":27,"cssClass":"pl-s1"},{"start":28,"end":30,"cssClass":"pl-c1"},{"start":31,"end":35,"cssClass":"pl-s1"},{"start":36,"end":60,"cssClass":"pl-s1"}],[{"start":16,"end":27,"cssClass":"pl-s1"},{"start":28,"end":29,"cssClass":"pl-c1"},{"start":30,"end":34,"cssClass":"pl-s1"},{"start":35,"end":59,"cssClass":"pl-s1"},{"start":60,"end":72,"cssClass":"pl-s1"}],[{"start":12,"end":16,"cssClass":"pl-k"}],[{"start":16,"end":34,"cssClass":"pl-s1"},{"start":35,"end":36,"cssClass":"pl-c1"},{"start":37,"end":40,"cssClass":"pl-en"},{"start":41,"end":45,"cssClass":"pl-s1"},{"start":46,"end":53,"cssClass":"pl-s1"},{"start":54,"end":79,"cssClass":"pl-en"},{"start":80,"end":92,"cssClass":"pl-s1"}],[{"start":16,"end":27,"cssClass":"pl-s1"},{"start":28,"end":29,"cssClass":"pl-c1"},{"start":30,"end":51,"cssClass":"pl-en"},{"start":52,"end":70,"cssClass":"pl-s1"}],[{"start":8,"end":12,"cssClass":"pl-k"}],[{"start":12,"end":23,"cssClass":"pl-s1"},{"start":24,"end":25,"cssClass":"pl-c1"},{"start":26,"end":30,"cssClass":"pl-s1"},{"start":31,"end":50,"cssClass":"pl-s1"}],[],[{"start":8,"end":26,"cssClass":"pl-s1"},{"start":27,"end":28,"cssClass":"pl-c1"},{"start":29,"end":55,"cssClass":"pl-s1"},{"start":56,"end":80,"cssClass":"pl-en"}],[{"start":12,"end":18,"cssClass":"pl-s1"}],[{"start":12,"end":23,"cssClass":"pl-s1"}],[{"start":12,"end":17,"cssClass":"pl-s1"}],[{"start":12,"end":16,"cssClass":"pl-s1"},{"start":17,"end":26,"cssClass":"pl-s1"}],[],[{"start":8,"end":14,"cssClass":"pl-k"},{"start":15,"end":33,"cssClass":"pl-s1"}],[],[{"start":4,"end":7,"cssClass":"pl-k"},{"start":8,"end":29,"cssClass":"pl-en"},{"start":30,"end":34,"cssClass":"pl-s1"},{"start":36,"end":54,"cssClass":"pl-s1"}],[{"start":8,"end":14,"cssClass":"pl-s1"},{"start":15,"end":16,"cssClass":"pl-c1"},{"start":18,"end":23,"cssClass":"pl-v"}],[{"start":8,"end":15,"cssClass":"pl-s1"},{"start":16,"end":17,"cssClass":"pl-c1"},{"start":18,"end":28,"cssClass":"pl-v"}],[{"start":8,"end":15,"cssClass":"pl-s1"},{"start":16,"end":26,"cssClass":"pl-en"},{"start":27,"end":33,"cssClass":"pl-s1"}],[{"start":8,"end":15,"cssClass":"pl-s1"},{"start":16,"end":28,"cssClass":"pl-s1"},{"start":29,"end":30,"cssClass":"pl-c1"},{"start":31,"end":49,"cssClass":"pl-s1"},{"start":50,"end":62,"cssClass":"pl-s1"}],[],[{"start":8,"end":11,"cssClass":"pl-k"},{"start":12,"end":21,"cssClass":"pl-s1"},{"start":23,"end":29,"cssClass":"pl-s1"},{"start":30,"end":32,"cssClass":"pl-c1"},{"start":33,"end":51,"cssClass":"pl-s1"}],[{"start":12,"end":19,"cssClass":"pl-s1"},{"start":20,"end":40,"cssClass":"pl-en"},{"start":41,"end":49,"cssClass":"pl-v"},{"start":50,"end":59,"cssClass":"pl-s1"},{"start":61,"end":62,"cssClass":"pl-c1"},{"start":62,"end":68,"cssClass":"pl-s1"},{"start":71,"end":77,"cssClass":"pl-s1"},{"start":79,"end":84,"cssClass":"pl-s1"},{"start":84,"end":85,"cssClass":"pl-c1"},{"start":85,"end":90,"cssClass":"pl-c1"}],[{"start":8,"end":14,"cssClass":"pl-k"},{"start":15,"end":22,"cssClass":"pl-s1"}],[],[{"start":4,"end":7,"cssClass":"pl-k"},{"start":8,"end":28,"cssClass":"pl-en"},{"start":29,"end":33,"cssClass":"pl-s1"},{"start":35,"end":38,"cssClass":"pl-s1"},{"start":40,"end":47,"cssClass":"pl-s1"},{"start":49,"end":57,"cssClass":"pl-s1"},{"start":59,"end":64,"cssClass":"pl-s1"},{"start":66,"end":71,"cssClass":"pl-s1"}],[{"start":8,"end":11,"cssClass":"pl-s"}],[{"start":0,"end":96,"cssClass":"pl-s"}],[{"start":0,"end":11,"cssClass":"pl-s"}],[{"start":8,"end":10,"cssClass":"pl-k"},{"start":11,"end":19,"cssClass":"pl-s1"},{"start":20,"end":22,"cssClass":"pl-c1"},{"start":23,"end":27,"cssClass":"pl-c1"}],[{"start":12,"end":18,"cssClass":"pl-k"},{"start":19,"end":24,"cssClass":"pl-c1"}],[],[{"start":8,"end":39,"cssClass":"pl-c"}],[{"start":8,"end":18,"cssClass":"pl-s1"},{"start":19,"end":20,"cssClass":"pl-c1"},{"start":21,"end":24,"cssClass":"pl-s1"},{"start":25,"end":37,"cssClass":"pl-s1"},{"start":38,"end":40,"cssClass":"pl-c1"},{"start":41,"end":44,"cssClass":"pl-c1"},{"start":45,"end":49,"cssClass":"pl-c1"},{"start":50,"end":53,"cssClass":"pl-c1"},{"start":54,"end":57,"cssClass":"pl-en"},{"start":58,"end":61,"cssClass":"pl-s1"},{"start":62,"end":74,"cssClass":"pl-s1"},{"start":76,"end":77,"cssClass":"pl-c1"},{"start":78,"end":79,"cssClass":"pl-c1"}],[{"start":8,"end":48,"cssClass":"pl-c"}],[{"start":8,"end":22,"cssClass":"pl-s1"},{"start":23,"end":24,"cssClass":"pl-c1"},{"start":25,"end":28,"cssClass":"pl-c1"},{"start":29,"end":39,"cssClass":"pl-s1"},{"start":40,"end":42,"cssClass":"pl-c1"},{"start":43,"end":46,"cssClass":"pl-en"},{"start":47,"end":50,"cssClass":"pl-c1"},{"start":51,"end":54,"cssClass":"pl-s1"},{"start":55,"end":74,"cssClass":"pl-en"},{"start":75,"end":76,"cssClass":"pl-s1"},{"start":78,"end":81,"cssClass":"pl-k"},{"start":82,"end":83,"cssClass":"pl-s1"},{"start":84,"end":86,"cssClass":"pl-c1"},{"start":87,"end":94,"cssClass":"pl-s1"}],[{"start":8,"end":88,"cssClass":"pl-c"}],[{"start":8,"end":10,"cssClass":"pl-k"},{"start":11,"end":16,"cssClass":"pl-s1"},{"start":17,"end":19,"cssClass":"pl-c1"},{"start":20,"end":23,"cssClass":"pl-c1"},{"start":24,"end":28,"cssClass":"pl-c1"}],[{"start":12,"end":40,"cssClass":"pl-s1"},{"start":41,"end":42,"cssClass":"pl-c1"},{"start":43,"end":46,"cssClass":"pl-en"}],[{"start":16,"end":17,"cssClass":"pl-s1"},{"start":18,"end":22,"cssClass":"pl-s1"},{"start":23,"end":26,"cssClass":"pl-c1"},{"start":27,"end":29,"cssClass":"pl-c1"},{"start":30,"end":35,"cssClass":"pl-s1"},{"start":36,"end":39,"cssClass":"pl-c1"},{"start":41,"end":44,"cssClass":"pl-c1"},{"start":45,"end":55,"cssClass":"pl-s1"},{"start":56,"end":58,"cssClass":"pl-c1"},{"start":59,"end":62,"cssClass":"pl-c1"},{"start":63,"end":66,"cssClass":"pl-s1"},{"start":67,"end":86,"cssClass":"pl-en"},{"start":87,"end":88,"cssClass":"pl-s1"}],[{"start":16,"end":19,"cssClass":"pl-k"},{"start":20,"end":21,"cssClass":"pl-s1"},{"start":22,"end":24,"cssClass":"pl-c1"},{"start":25,"end":32,"cssClass":"pl-s1"}],[],[{"start":8,"end":12,"cssClass":"pl-k"}],[{"start":12,"end":69,"cssClass":"pl-c"}],[{"start":12,"end":40,"cssClass":"pl-s1"},{"start":41,"end":42,"cssClass":"pl-c1"},{"start":43,"end":48,"cssClass":"pl-c1"}],[],[{"start":8,"end":84,"cssClass":"pl-c"}],[{"start":8,"end":86,"cssClass":"pl-c"}],[{"start":8,"end":81,"cssClass":"pl-c"}],[{"start":8,"end":17,"cssClass":"pl-s1"},{"start":18,"end":19,"cssClass":"pl-c1"},{"start":20,"end":23,"cssClass":"pl-c1"}],[{"start":8,"end":17,"cssClass":"pl-s1"},{"start":18,"end":19,"cssClass":"pl-c1"},{"start":20,"end":23,"cssClass":"pl-c1"}],[{"start":8,"end":10,"cssClass":"pl-k"},{"start":11,"end":14,"cssClass":"pl-c1"},{"start":15,"end":43,"cssClass":"pl-s1"}],[{"start":12,"end":21,"cssClass":"pl-s1"},{"start":22,"end":23,"cssClass":"pl-c1"},{"start":24,"end":28,"cssClass":"pl-s1"},{"start":29,"end":35,"cssClass":"pl-en"},{"start":36,"end":44,"cssClass":"pl-s1"},{"start":46,"end":51,"cssClass":"pl-s1"}],[{"start":12,"end":21,"cssClass":"pl-s1"},{"start":22,"end":23,"cssClass":"pl-c1"},{"start":24,"end":28,"cssClass":"pl-s1"},{"start":29,"end":35,"cssClass":"pl-en"},{"start":36,"end":43,"cssClass":"pl-s1"},{"start":45,"end":50,"cssClass":"pl-s1"}],[],[{"start":8,"end":14,"cssClass":"pl-k"}],[{"start":12,"end":40,"cssClass":"pl-s1"}],[{"start":12,"end":14,"cssClass":"pl-c1"},{"start":16,"end":30,"cssClass":"pl-s1"},{"start":31,"end":34,"cssClass":"pl-c1"},{"start":35,"end":44,"cssClass":"pl-s1"},{"start":45,"end":46,"cssClass":"pl-c1"},{"start":47,"end":56,"cssClass":"pl-s1"}],[{"start":12,"end":14,"cssClass":"pl-c1"},{"start":16,"end":20,"cssClass":"pl-s1"},{"start":21,"end":28,"cssClass":"pl-en"},{"start":29,"end":38,"cssClass":"pl-s1"},{"start":39,"end":40,"cssClass":"pl-c1"},{"start":43,"end":44,"cssClass":"pl-c1"},{"start":46,"end":49,"cssClass":"pl-c1"},{"start":50,"end":53,"cssClass":"pl-c1"},{"start":54,"end":58,"cssClass":"pl-s1"},{"start":59,"end":66,"cssClass":"pl-en"},{"start":67,"end":76,"cssClass":"pl-s1"},{"start":77,"end":78,"cssClass":"pl-c1"},{"start":81,"end":82,"cssClass":"pl-c1"}],[],[],[{"start":4,"end":33,"cssClass":"pl-en"},{"start":5,"end":17,"cssClass":"pl-s1"},{"start":18,"end":33,"cssClass":"pl-s1"}],[{"start":4,"end":7,"cssClass":"pl-k"},{"start":8,"end":11,"cssClass":"pl-en"},{"start":12,"end":16,"cssClass":"pl-s1"},{"start":18,"end":21,"cssClass":"pl-s1"}],[{"start":8,"end":62,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":13,"cssClass":"pl-s"}],[{"start":0,"end":54,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":16,"cssClass":"pl-s"}],[{"start":0,"end":42,"cssClass":"pl-s"}],[{"start":0,"end":11,"cssClass":"pl-s"}],[{"start":8,"end":12,"cssClass":"pl-s1"},{"start":13,"end":14,"cssClass":"pl-c1"},{"start":15,"end":18,"cssClass":"pl-s1"},{"start":19,"end":34,"cssClass":"pl-en"}],[{"start":8,"end":11,"cssClass":"pl-k"},{"start":12,"end":15,"cssClass":"pl-s1"},{"start":16,"end":18,"cssClass":"pl-c1"},{"start":19,"end":23,"cssClass":"pl-s1"}],[{"start":12,"end":17,"cssClass":"pl-s1"},{"start":18,"end":19,"cssClass":"pl-c1"},{"start":20,"end":23,"cssClass":"pl-s1"},{"start":24,"end":32,"cssClass":"pl-en"},{"start":33,"end":36,"cssClass":"pl-s1"},{"start":37,"end":38,"cssClass":"pl-c1"},{"start":40,"end":45,"cssClass":"pl-s1"},{"start":46,"end":47,"cssClass":"pl-c1"},{"start":50,"end":55,"cssClass":"pl-s1"}],[{"start":12,"end":20,"cssClass":"pl-s1"},{"start":21,"end":22,"cssClass":"pl-c1"},{"start":23,"end":26,"cssClass":"pl-s1"},{"start":27,"end":28,"cssClass":"pl-c1"},{"start":30,"end":32,"cssClass":"pl-s1"},{"start":33,"end":42,"cssClass":"pl-en"}],[{"start":12,"end":15,"cssClass":"pl-k"},{"start":16,"end":20,"cssClass":"pl-s1"},{"start":21,"end":23,"cssClass":"pl-c1"},{"start":24,"end":27,"cssClass":"pl-s1"},{"start":28,"end":29,"cssClass":"pl-c1"}],[{"start":16,"end":24,"cssClass":"pl-s1"},{"start":25,"end":26,"cssClass":"pl-c1"},{"start":27,"end":31,"cssClass":"pl-s1"},{"start":32,"end":34,"cssClass":"pl-s1"},{"start":35,"end":44,"cssClass":"pl-en"},{"start":47,"end":50,"cssClass":"pl-en"},{"start":51,"end":59,"cssClass":"pl-s1"}],[{"start":12,"end":33,"cssClass":"pl-s1"},{"start":34,"end":35,"cssClass":"pl-c1"},{"start":36,"end":40,"cssClass":"pl-s1"},{"start":41,"end":58,"cssClass":"pl-en"},{"start":59,"end":67,"cssClass":"pl-s1"},{"start":69,"end":74,"cssClass":"pl-s1"}],[],[{"start":12,"end":14,"cssClass":"pl-k"},{"start":15,"end":19,"cssClass":"pl-s1"},{"start":20,"end":27,"cssClass":"pl-s1"},{"start":28,"end":30,"cssClass":"pl-c1"},{"start":31,"end":35,"cssClass":"pl-c1"}],[{"start":16,"end":21,"cssClass":"pl-s1"},{"start":22,"end":23,"cssClass":"pl-c1"},{"start":24,"end":28,"cssClass":"pl-s1"},{"start":29,"end":41,"cssClass":"pl-s1"}],[{"start":12,"end":16,"cssClass":"pl-k"}],[{"start":16,"end":21,"cssClass":"pl-s1"},{"start":22,"end":23,"cssClass":"pl-c1"},{"start":24,"end":28,"cssClass":"pl-s1"},{"start":29,"end":36,"cssClass":"pl-s1"},{"start":37,"end":62,"cssClass":"pl-en"},{"start":64,"end":69,"cssClass":"pl-s1"}],[],[{"start":12,"end":14,"cssClass":"pl-k"},{"start":15,"end":36,"cssClass":"pl-s1"},{"start":37,"end":39,"cssClass":"pl-c1"},{"start":40,"end":43,"cssClass":"pl-c1"},{"start":44,"end":48,"cssClass":"pl-c1"},{"start":49,"end":52,"cssClass":"pl-c1"},{"start":53,"end":57,"cssClass":"pl-s1"},{"start":58,"end":78,"cssClass":"pl-en"}],[{"start":16,"end":19,"cssClass":"pl-s1"},{"start":21,"end":24,"cssClass":"pl-s1"},{"start":26,"end":47,"cssClass":"pl-s1"},{"start":49,"end":54,"cssClass":"pl-s1"},{"start":56,"end":61,"cssClass":"pl-s1"}],[],[{"start":16,"end":23,"cssClass":"pl-s1"},{"start":24,"end":25,"cssClass":"pl-c1"},{"start":26,"end":30,"cssClass":"pl-s1"},{"start":31,"end":52,"cssClass":"pl-en"},{"start":53,"end":74,"cssClass":"pl-s1"}],[{"start":16,"end":19,"cssClass":"pl-s1"},{"start":20,"end":44,"cssClass":"pl-en"},{"start":45,"end":48,"cssClass":"pl-s1"},{"start":49,"end":50,"cssClass":"pl-c1"},{"start":53,"end":60,"cssClass":"pl-s1"}],[{"start":16,"end":51,"cssClass":"pl-c"}],[{"start":16,"end":19,"cssClass":"pl-k"},{"start":20,"end":32,"cssClass":"pl-s1"},{"start":33,"end":35,"cssClass":"pl-c1"},{"start":36,"end":39,"cssClass":"pl-s1"},{"start":40,"end":41,"cssClass":"pl-c1"}],[{"start":20,"end":23,"cssClass":"pl-s1"},{"start":24,"end":38,"cssClass":"pl-en"},{"start":39,"end":51,"cssClass":"pl-s1"}],[],[{"start":8,"end":14,"cssClass":"pl-k"},{"start":15,"end":18,"cssClass":"pl-s1"}],[],[{"start":4,"end":7,"cssClass":"pl-k"},{"start":8,"end":14,"cssClass":"pl-en"},{"start":15,"end":19,"cssClass":"pl-s1"},{"start":21,"end":28,"cssClass":"pl-s1"},{"start":30,"end":35,"cssClass":"pl-s1"}],[{"start":8,"end":11,"cssClass":"pl-s"}],[{"start":0,"end":71,"cssClass":"pl-s"}],[{"start":0,"end":76,"cssClass":"pl-s"}],[{"start":0,"end":43,"cssClass":"pl-s"}],[{"start":0,"end":0,"cssClass":"pl-s"}],[{"start":0,"end":71,"cssClass":"pl-s"}],[{"start":0,"end":45,"cssClass":"pl-s"}],[{"start":0,"end":11,"cssClass":"pl-s"}],[{"start":8,"end":10,"cssClass":"pl-k"},{"start":11,"end":21,"cssClass":"pl-en"},{"start":22,"end":29,"cssClass":"pl-s1"},{"start":31,"end":57,"cssClass":"pl-s1"},{"start":58,"end":78,"cssClass":"pl-v"}],[{"start":12,"end":18,"cssClass":"pl-k"},{"start":19,"end":45,"cssClass":"pl-s1"},{"start":46,"end":78,"cssClass":"pl-en"}],[{"start":16,"end":23,"cssClass":"pl-s1"},{"start":25,"end":30,"cssClass":"pl-s1"},{"start":32,"end":36,"cssClass":"pl-s1"},{"start":37,"end":46,"cssClass":"pl-s1"}],[],[{"start":8,"end":12,"cssClass":"pl-k"}],[{"start":12,"end":24,"cssClass":"pl-s1"},{"start":25,"end":26,"cssClass":"pl-c1"},{"start":29,"end":30,"cssClass":"pl-s1"},{"start":31,"end":33,"cssClass":"pl-s1"},{"start":34,"end":38,"cssClass":"pl-s1"},{"start":44,"end":47,"cssClass":"pl-k"},{"start":48,"end":49,"cssClass":"pl-s1"},{"start":50,"end":52,"cssClass":"pl-c1"},{"start":53,"end":60,"cssClass":"pl-s1"}],[{"start":12,"end":18,"cssClass":"pl-k"},{"start":19,"end":45,"cssClass":"pl-s1"},{"start":46,"end":64,"cssClass":"pl-en"}],[{"start":16,"end":28,"cssClass":"pl-s1"},{"start":30,"end":35,"cssClass":"pl-s1"},{"start":37,"end":41,"cssClass":"pl-s1"},{"start":42,"end":51,"cssClass":"pl-s1"}],[],[],[],[{"start":0,"end":3,"cssClass":"pl-k"},{"start":4,"end":25,"cssClass":"pl-en"},{"start":26,"end":35,"cssClass":"pl-s1"}],[{"start":4,"end":15,"cssClass":"pl-s1"},{"start":16,"end":17,"cssClass":"pl-c1"}],[{"start":4,"end":6,"cssClass":"pl-k"},{"start":7,"end":16,"cssClass":"pl-s1"},{"start":17,"end":19,"cssClass":"pl-c1"},{"start":20,"end":24,"cssClass":"pl-c1"}],[{"start":8,"end":19,"cssClass":"pl-s1"},{"start":20,"end":21,"cssClass":"pl-c1"},{"start":22,"end":26,"cssClass":"pl-en"},{"start":27,"end":46,"cssClass":"pl-s1"},{"start":47,"end":74,"cssClass":"pl-v"}],[{"start":4,"end":8,"cssClass":"pl-k"}],[{"start":8,"end":25,"cssClass":"pl-s1"},{"start":26,"end":27,"cssClass":"pl-c1"},{"start":28,"end":47,"cssClass":"pl-s1"},{"start":48,"end":75,"cssClass":"pl-v"}],[{"start":8,"end":11,"cssClass":"pl-k"},{"start":12,"end":28,"cssClass":"pl-s1"},{"start":30,"end":35,"cssClass":"pl-s1"},{"start":36,"end":38,"cssClass":"pl-c1"},{"start":39,"end":56,"cssClass":"pl-s1"},{"start":57,"end":62,"cssClass":"pl-en"}],[{"start":12,"end":14,"cssClass":"pl-k"},{"start":15,"end":18,"cssClass":"pl-en"},{"start":19,"end":24,"cssClass":"pl-s1"},{"start":26,"end":34,"cssClass":"pl-en"},{"start":35,"end":44,"cssClass":"pl-s1"}],[{"start":16,"end":27,"cssClass":"pl-s1"},{"start":28,"end":34,"cssClass":"pl-en"},{"start":35,"end":51,"cssClass":"pl-s1"}],[{"start":8,"end":74,"cssClass":"pl-c"}],[{"start":8,"end":78,"cssClass":"pl-c"}],[{"start":8,"end":66,"cssClass":"pl-c"}],[{"start":8,"end":10,"cssClass":"pl-k"},{"start":11,"end":15,"cssClass":"pl-s"},{"start":16,"end":18,"cssClass":"pl-c1"},{"start":19,"end":30,"cssClass":"pl-s1"},{"start":31,"end":34,"cssClass":"pl-c1"},{"start":35,"end":41,"cssClass":"pl-s"},{"start":42,"end":44,"cssClass":"pl-c1"},{"start":45,"end":56,"cssClass":"pl-s1"}],[{"start":12,"end":23,"cssClass":"pl-s1"},{"start":24,"end":30,"cssClass":"pl-en"},{"start":31,"end":35,"cssClass":"pl-s"}],[{"start":8,"end":75,"cssClass":"pl-c"}],[{"start":8,"end":79,"cssClass":"pl-c"}],[{"start":8,"end":77,"cssClass":"pl-c"}],[{"start":8,"end":78,"cssClass":"pl-c"}],[{"start":8,"end":36,"cssClass":"pl-c"}],[{"start":8,"end":10,"cssClass":"pl-k"},{"start":11,"end":16,"cssClass":"pl-s"},{"start":17,"end":19,"cssClass":"pl-c1"},{"start":20,"end":31,"cssClass":"pl-s1"},{"start":32,"end":35,"cssClass":"pl-c1"},{"start":36,"end":42,"cssClass":"pl-s"},{"start":43,"end":45,"cssClass":"pl-c1"},{"start":46,"end":57,"cssClass":"pl-s1"}],[{"start":12,"end":23,"cssClass":"pl-s1"},{"start":24,"end":30,"cssClass":"pl-en"},{"start":31,"end":36,"cssClass":"pl-s"}],[{"start":4,"end":10,"cssClass":"pl-k"},{"start":11,"end":22,"cssClass":"pl-s1"}]],"colorizedLines":null,"csv":null,"csvError":null,"dependabotInfo":{"showConfigurationBanner":false,"configFilePath":null,"networkDependabotPath":"/Qiskit/qiskit/network/updates","dismissConfigurationNoticePath":"/settings/dismiss-notice/dependabot_configuration_notice","configurationNoticeDismissed":null},"displayName":"optimize_1q_decomposition.py","displayUrl":"https://github.com/Qiskit/qiskit/blob/main/qiskit/transpiler/passes/optimization/optimize_1q_decomposition.py?raw=true","headerInfo":{"blobSize":"10.3 KB","deleteTooltip":"You must be signed in to make or propose changes","editTooltip":"You must be signed in to make or propose changes","ghDesktopPath":"https://desktop.github.com","isGitLfs":false,"onBranch":true,"shortPath":"0cc8fee","siteNavLoginPath":"/login?return_to=https%3A%2F%2Fgithub.com%2FQiskit%2Fqiskit%2Fblob%2Fmain%2Fqiskit%2Ftranspiler%2Fpasses%2Foptimization%2Foptimize_1q_decomposition.py","isCSV":false,"isRichtext":false,"toc":null,"lineInfo":{"truncatedLoc":"265","truncatedSloc":"229"},"mode":"file"},"image":false,"isCodeownersFile":null,"isPlain":false,"isValidLegacyIssueTemplate":false,"issueTemplate":null,"discussionTemplate":null,"language":"Python","languageID":303,"large":false,"planSupportInfo":{"repoIsFork":null,"repoOwnedByCurrentUser":null,"requestFullPath":"/Qiskit/qiskit/blob/main/qiskit/transpiler/passes/optimization/optimize_1q_decomposition.py","showFreeOrgGatedFeatureMessage":null,"showPlanSupportBanner":null,"upgradeDataAttributes":null,"upgradePath":null},"publishBannersInfo":{"dismissActionNoticePath":"/settings/dismiss-notice/publish_action_from_dockerfile","releasePath":"/Qiskit/qiskit/releases/new?marketplace=true","showPublishActionBanner":false},"rawBlobUrl":"https://github.com/Qiskit/qiskit/raw/main/qiskit/transpiler/passes/optimization/optimize_1q_decomposition.py","renderImageOrRaw":false,"richText":null,"renderedFileInfo":null,"shortPath":null,"symbolsEnabled":true,"tabSize":4,"topBannersInfo":{"overridingGlobalFundingFile":false,"globalPreferredFundingPath":null,"showInvalidCitationWarning":false,"citationHelpUrl":"https://docs.github.com/github/creating-cloning-and-archiving-repositories/creating-a-repository-on-github/about-citation-files","actionsOnboardingTip":null},"truncated":false,"viewable":true,"workflowRedirectUrl":null,"symbols":{"timed_out":false,"not_analyzed":false,"symbols":[{"name":"logger","kind":"constant","ident_start":1089,"ident_end":1095,"extent_start":1089,"extent_end":1125,"fully_qualified_name":"logger","ident_utf16":{"start":{"line_number":38,"utf16_col":0},"end":{"line_number":38,"utf16_col":6}},"extent_utf16":{"start":{"line_number":38,"utf16_col":0},"end":{"line_number":38,"utf16_col":36}}},{"name":"NAME_MAP","kind":"constant","ident_start":1328,"ident_end":1336,"extent_start":1328,"extent_end":1536,"fully_qualified_name":"NAME_MAP","ident_utf16":{"start":{"line_number":43,"utf16_col":0},"end":{"line_number":43,"utf16_col":8}},"extent_utf16":{"start":{"line_number":43,"utf16_col":0},"end":{"line_number":55,"utf16_col":1}}},{"name":"Optimize1qGatesDecomposition","kind":"class","ident_start":1545,"ident_end":1573,"extent_start":1539,"extent_end":9380,"fully_qualified_name":"Optimize1qGatesDecomposition","ident_utf16":{"start":{"line_number":58,"utf16_col":6},"end":{"line_number":58,"utf16_col":34}},"extent_utf16":{"start":{"line_number":58,"utf16_col":0},"end":{"line_number":240,"utf16_col":13}}},{"name":"__init__","kind":"function","ident_start":2165,"ident_end":2173,"extent_start":2161,"extent_end":3194,"fully_qualified_name":"Optimize1qGatesDecomposition.__init__","ident_utf16":{"start":{"line_number":70,"utf16_col":8},"end":{"line_number":70,"utf16_col":16}},"extent_utf16":{"start":{"line_number":70,"utf16_col":4},"end":{"line_number":93,"utf16_col":48}}},{"name":"_build_error_map","kind":"function","ident_start":3204,"ident_end":3220,"extent_start":3200,"extent_end":4003,"fully_qualified_name":"Optimize1qGatesDecomposition._build_error_map","ident_utf16":{"start":{"line_number":95,"utf16_col":8},"end":{"line_number":95,"utf16_col":24}},"extent_utf16":{"start":{"line_number":95,"utf16_col":4},"end":{"line_number":109,"utf16_col":23}}},{"name":"_resynthesize_run","kind":"function","ident_start":4013,"ident_end":4030,"extent_start":4009,"extent_end":5337,"fully_qualified_name":"Optimize1qGatesDecomposition._resynthesize_run","ident_utf16":{"start":{"line_number":111,"utf16_col":8},"end":{"line_number":111,"utf16_col":25}},"extent_utf16":{"start":{"line_number":111,"utf16_col":4},"end":{"line_number":141,"utf16_col":33}}},{"name":"_gate_sequence_to_dag","kind":"function","ident_start":5347,"ident_end":5368,"extent_start":5343,"extent_end":5721,"fully_qualified_name":"Optimize1qGatesDecomposition._gate_sequence_to_dag","ident_utf16":{"start":{"line_number":143,"utf16_col":8},"end":{"line_number":143,"utf16_col":29}},"extent_utf16":{"start":{"line_number":143,"utf16_col":4},"end":{"line_number":151,"utf16_col":22}}},{"name":"_substitution_checks","kind":"function","ident_start":5731,"ident_end":5751,"extent_start":5727,"extent_end":7340,"fully_qualified_name":"Optimize1qGatesDecomposition._substitution_checks","ident_utf16":{"start":{"line_number":153,"utf16_col":8},"end":{"line_number":153,"utf16_col":28}},"extent_utf16":{"start":{"line_number":153,"utf16_col":4},"end":{"line_number":187,"utf16_col":9}}},{"name":"run","kind":"function","ident_start":7384,"ident_end":7387,"extent_start":7380,"extent_end":8575,"fully_qualified_name":"Optimize1qGatesDecomposition.run","ident_utf16":{"start":{"line_number":190,"utf16_col":8},"end":{"line_number":190,"utf16_col":11}},"extent_utf16":{"start":{"line_number":190,"utf16_col":4},"end":{"line_number":221,"utf16_col":18}}},{"name":"_error","kind":"function","ident_start":8585,"ident_end":8591,"extent_start":8581,"extent_end":9380,"fully_qualified_name":"Optimize1qGatesDecomposition._error","ident_utf16":{"start":{"line_number":223,"utf16_col":8},"end":{"line_number":223,"utf16_col":14}},"extent_utf16":{"start":{"line_number":223,"utf16_col":4},"end":{"line_number":240,"utf16_col":13}}},{"name":"_possible_decomposers","kind":"function","ident_start":9387,"ident_end":9408,"extent_start":9383,"extent_end":10581,"fully_qualified_name":"_possible_decomposers","ident_utf16":{"start":{"line_number":243,"utf16_col":4},"end":{"line_number":243,"utf16_col":25}},"extent_utf16":{"start":{"line_number":243,"utf16_col":0},"end":{"line_number":264,"utf16_col":22}}}]}},"copilotInfo":null,"copilotAccessAllowed":false,"csrf_tokens":{"/Qiskit/qiskit/branches":{"post":"J1u0l132x2H-gOSNcbl5CfWDf7xEZL0OPYqE0lC9WQDaVWi8N6L5hAuNhnSdBH_1G2b_eK_0x6Ba_pmX6ME5hA"},"/repos/preferences":{"post":"t4MR-U9CGtqXdWM1Ol1nvT0YmgmVRAN5ulS3x-4qhzo4697skJRXFlazREiVartm4Xqf09IyY5q_Jb4RwV4vzA"}}},"title":"qiskit/qiskit/transpiler/passes/optimization/optimize_1q_decomposition.py at main ยท Qiskit/qiskit"}