§
    º³Ùg¯O  ã                  óø  — d Z ddlmZ ddlZddlZddlZddlmZmZm	Z	 ddl
mZ ddlmZmZmZmZ ddlmZ ddlmZmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddl m!Z! ddl"m#Z# ddl$m%Z%m&Z&  edeee         ef         ¬¦  «        Z' G d„ de¦  «        Z( G d„ de(¦  «        Z)d„ Z* ej+        e(ej,        ¬¦  «        D ]3\  Z-Z.e- /                    d¦  «        rŒ e*e.¦  «        Z0 e1e(e-e0¦  «         Œ4dd„Z2dS )úFManager for a set of Passes and their scheduling during transpilation.é    )ÚannotationsN)ÚIteratorÚIterableÚCallable©Úwraps)ÚUnionÚListÚAnyÚTypeVar)ÚQuantumCircuit)Úcircuit_to_dagÚdag_to_circuit)Ú
DAGCircuit)ÚBasePassManager)ÚTask)ÚFlowControllerLinear)ÚPassManagerErroré   )ÚBasePass)ÚTranspilerError)ÚTranspileLayoutÚLayoutÚ
_CircuitsT)Úboundc                  ót   ‡ — e Zd ZdZ	 	 d!d"ˆ fd„Zd#d„Zd$d„Zd„ Zd%ˆ fd„Zd&ˆ fd„Z		 	 	 d'd(ˆ fd„Z
d)d „Zˆ xZS )*ÚPassManagerr   © éè  ÚpassesúTask | list[Task]Úmax_iterationÚintc                óN   •— t          ¦   «                              ||¬¦  «         dS )a  Initialize an empty pass manager object.

        Args:
            passes: A pass set to be added to the pass manager schedule.
            max_iteration: The maximum number of iterations the schedule will be looped if the
                condition is not met.
        )Útasksr#   N)ÚsuperÚ__init__)Úselfr!   r#   Ú	__class__s      €úS/granary/edev/quantum/lib/python3.11/site-packages/qiskit/transpiler/passmanager.pyr(   zPassManager.__init__(   s6   ø€ õ 	‰Œ×ÒØØ'ð 	ñ 	
ô 	
ð 	
ð 	
ð 	
ó    Úinput_programr   Úreturnr   c                ó$   — t          |d¬¦  «        S )NT©Úcopy_operations)r   )r)   r-   Úkwargss      r+   Ú_passmanager_frontendz!PassManager._passmanager_frontend9   s   € õ
 ˜m¸TÐBÑBÔBÐBr,   Úpassmanager_irÚ
in_programc                ó>  — t          |d¬¦  «        }|                      |¦  «         |                     dd ¦  «        }|�||_        | j        d         �Qt          | j        d         | j        d         | j        d         t          |j        ¦  «        |j        ¬¦  «        |_        | j        d         |_	        | j        d	         |_
        | j        d
         rHg }| j        d
         }|                     ¦   «         D ]}|                     ||         ¦  «         Œ||_        |S )NFr0   Úoutput_nameÚlayoutÚoriginal_qubit_indicesÚfinal_layout)Úinitial_layoutÚinput_qubit_mappingr:   Ú_input_qubit_countÚ_output_qubit_listÚclbit_write_latencyÚconditional_latencyÚnode_start_time)r   Ú_finalize_layoutsÚgetÚnameÚproperty_setr   ÚlenÚqubitsÚ_layoutÚ_clbit_write_latencyÚ_conditional_latencyÚtopological_op_nodesÚappendÚ_op_start_times)	r)   r4   r5   r2   Úout_programÚout_nameÚtopological_start_timesÚstart_timesÚdag_nodes	            r+   Ú_passmanager_backendz PassManager._passmanager_backend@   s9  € õ % ^ÀUÐKÑKÔKˆà×Ò˜~Ñ.Ô.Ð.Ø—:’:˜m¨TÑ2Ô2ˆØÐØ'ˆKÔàÔ˜XÔ&Ð2Ý"1Ø#Ô0°Ô:Ø$(Ô$5Ð6NÔ$OØ!Ô.¨~Ô>Ý#& zÔ'8Ñ#9Ô#9Ø#.Ô#5ð#ñ #ô #ˆKÔð ,0Ô+<Ð=RÔ+SˆÔ(Ø+/Ô+<Ð=RÔ+SˆÔ(àÔÐ.Ô/ð 	Bð ')Ð#ØÔ+Ð,=Ô>ˆKØ*×?Ò?ÑAÔAð Fð F�Ø'×.Ò.¨{¸8Ô/DÑEÔEÐEÐEØ*AˆKÔ'àÐr,   c                óœ  — | j         d         x}€d S | j                              d¦  «         | j                              dd ¦  «        }|D ]}||vr||         ||<   Œ|j        }| j                              dd ¦  «        x}€)t	          t          t          |¦  «        ¦  «        ¦  «        }| j                              dd ¦  «        x}€)t	          t          t          |¦  «        ¦  «        ¦  «        }d„ |                     ¦   «         D ¦   «         }g }	t          t          |¦  «        ¦  «        D ]}
|	 
                    ||
         ¦  «         Œ|                     |	|	¦  «        }|                     |	|¦  «        }|}|                     ||	¦  «        }|                     ||	¦  «        }|                     ||¦  «        }|| j         d<   || j         d<   d S )NÚvirtual_permutation_layoutr9   r8   r:   c                ó   — i | ]\  }}||“Œ	S r   r   )Ú.0ÚkÚvs      r+   ú
<dictcomp>z1PassManager._finalize_layouts.<locals>.<dictcomp>z   s   € Ð"SÐ"SÐ"S©D¨A¨q 1 aÐ"SÐ"SÐ"Sr,   )rE   ÚpoprC   rG   r   ÚdictÚ	enumerateÚitemsÚrangerF   rL   ÚinverseÚcompose)r)   ÚdagrU   r9   ÚoqÚt_qubitsÚt_initial_layoutÚt_final_layoutÚoriginal_qubits_reverseÚoriginal_qubitsÚiÚvirtual_permutation_layout_invÚt_initial_layout_invÚnew_final_layouts                 r+   rB   zPassManager._finalize_layoutsd   s  € Ø*.Ô*;Ð<XÔ*YÐYÐ&ÐbØˆFàÔ×ÒÐ:Ñ;Ô;Ð;ð "&Ô!2×!6Ò!6Ð7OÐQUÑ!VÔ!VÐØ(ð 	Lð 	LˆBØÐ3Ð3Ð3Ø1GÈÔ1KÐ*¨2Ñ.øà”:ˆà $Ô 1× 5Ò 5°hÀÑ EÔ EÐEÐÐNÝ%¥d­9°XÑ+>Ô+>Ñ&?Ô&?Ñ@Ô@Ðà"Ô/×3Ò3°NÀDÑIÔIÐIˆNÐRÝ#¥D­°8Ñ)<Ô)<Ñ$=Ô$=Ñ>Ô>ˆNð #TÐ"SÐ4J×4PÒ4PÑ4RÔ4RÐ"SÑ"SÔ"SÐØˆå•sÐ2Ñ3Ô3Ñ4Ô4ð 	?ð 	?ˆAØ×"Ò"Ð#:¸1Ô#=Ñ>Ô>Ð>Ð>à)C×)KÒ)KØ˜_ñ*
ô *
Ð&ð  0×7Ò7¸ÈÑRÔRÐð 0ÐØ+×3Ò3Ð4RÐTcÑdÔdÐØ+×3Ò3Ð4DÀoÑVÔVÐØ+×3Ò3°NÀHÑMÔMÐà&6ˆÔ˜(Ñ#Ø,<ˆÔ˜.Ñ)Ð)Ð)r,   ÚNonec                óL   •— t          ¦   «                              |¬¦  «         dS )zäAppend a Pass Set to the schedule of passes.

        Args:
            passes: A set of transpiler passes to be added to schedule.

        Raises:
            TranspilerError: if a pass in passes is not a proper pass.
        ©r&   N)r'   rL   )r)   r!   r*   s     €r+   rL   zPassManager.append�   s#   ø€ õ 	‰Œ�Š˜VˆÑ$Ô$Ð$Ð$Ð$r,   Úindexc                óN   •— t          ¦   «                              ||¬¦  «         dS )zÙReplace a particular pass in the scheduler.

        Args:
            index: Pass index to replace, based on the position in passes().
            passes: A pass set to be added to the pass manager schedule.
        ro   N)r'   Úreplace)r)   rp   r!   r*   s      €r+   rr   zPassManager.replace�   s%   ø€ õ 	‰Œ�Š˜ VˆÑ,Ô,Ð,Ð,Ð,r,   NÚcircuitsr   r7   ú
str | NoneÚcallbackr   Únum_processesc                óp   •— |�t          |¦  «        }t          ¦   «                              ||||¬¦  «        S )aä  Run all the passes on the specified ``circuits``.

        Args:
            circuits: Circuit(s) to transform via all the registered passes.
            output_name: The output circuit name. If ``None``, it will be set to the same as the
                input circuit name.
            callback: A callback function that will be called after each pass execution. The
                function will be called with 5 keyword arguments::

                    pass_ (Pass): the pass being run
                    dag (DAGCircuit): the dag output of the pass
                    time (float): the time to execute the pass
                    property_set (PropertySet): the property set
                    count (int): the index for the pass execution

                .. note::

                    Beware that the keyword arguments here are different to those used by the
                    generic :class:`.BasePassManager`.  This pass manager will translate those
                    arguments into the form described above.

                The exact arguments pass expose the internals of the pass
                manager and are subject to change as the pass manager internals
                change. If you intend to reuse a callback function over
                multiple releases be sure to check that the arguments being
                passed are the same.

                To use the callback feature you define a function that will
                take in kwargs dict and access the variables. For example::

                    def callback_func(**kwargs):
                        pass_ = kwargs['pass_']
                        dag = kwargs['dag']
                        time = kwargs['time']
                        property_set = kwargs['property_set']
                        count = kwargs['count']
                        ...
            num_processes: The maximum number of parallel processes to launch if parallel
                execution is enabled. This argument overrides ``num_processes`` in the user
                configuration file, and the ``QISKIT_NUM_PROCS`` environment variable. If set
                to ``None`` the system default or local user configuration will be used.

        Returns:
            The transformed circuit(s).
        N)Úin_programsru   r7   rv   )Ú_legacy_style_callbackr'   Úrun©r)   rs   r7   ru   rv   r*   s        €r+   rz   zPassManager.run«   sD   ø€ ðh ÐÝ-¨hÑ7Ô7ˆHå‰wŒw�{Š{Ø ØØ#Ø'ð	 ñ 
ô 
ð 	
r,   Fc                ó,   — ddl m}  || |||¬¦  «        S )a  Draw the pass manager.

        This function needs `pydot <https://github.com/erocarrera/pydot>`__, which in turn needs
        `Graphviz <https://www.graphviz.org/>`__ to be installed.

        Args:
            filename (str): file path to save image to.
            style (dict): keys are the pass classes and the values are the colors to make them. An
                example can be seen in the DEFAULT_STYLE. An ordered dict can be used to ensure
                a priority coloring when pass falls into multiple categories. Any values not
                included in the provided dict will be filled in from the default dict.
            raw (bool): If ``True``, save the raw Dot output instead of the image.

        Returns:
            Optional[PassManager]: an in-memory representation of the pass manager, or ``None``
            if no image was generated or `Pillow <https://pypi.org/project/Pillow/>`__
            is not installed.

        Raises:
            ImportError: when nxpd or pydot not installed.
        r   )Úpass_manager_drawer©ÚfilenameÚstyleÚraw)Úqiskit.visualizationr}   )r)   r   r€   r�   r}   s        r+   ÚdrawzPassManager.drawé   s0   € ð, 	=Ð<Ð<Ð<Ð<Ð<à"Ð" 4°(À%ÈSÐQÑQÔQÐQr,   )r   r    )r!   r"   r#   r$   )r-   r   r.   r   )r4   r   r5   r   r.   r   ©r!   r"   r.   rm   )rp   r$   r!   r"   r.   rm   ©NNN)
rs   r   r7   rt   ru   r   rv   r$   r.   r   ©NNF)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r(   r3   rS   rB   rL   rr   rz   rƒ   Ú__classcell__©r*   s   @r+   r   r   %   s  ø€ € € € € ØPÐPð %'Ø!ð
ð 
ð 
ð 
ð 
ð 
ð 
ð"Cð Cð Cð Cð"ð "ð "ð "ðH)=ð )=ð )=ðV%ð %ð %ð %ð %ð %ð-ð -ð -ð -ð -ð -ð" #'Ø!Ø!ð<
ð <
ð <
ð <
ð <
ð <
ð <
ð|Rð Rð Rð Rð Rð Rð Rð Rr,   r   c                  óü   ‡ — e Zd ZdZ ej        d¦  «        Zd-d.ˆ fd„Zd/d
„Zd0d„Z	e
d1d„¦   «         Ze
d1d„¦   «         Zd2d„Zd3d„Zˆ fd„Zd4d„Zd5d„Zd6d„Zd„ Zˆ fd„Zd„ Zd „ Z	 	 	 d7d8ˆ fd(„Zd9ˆ fd*„Zd:d,„Zˆ xZS );ÚStagedPassManagerac  A pass manager pipeline built from individual stages.

    This class enables building a compilation pipeline out of fixed stages.
    Each ``StagedPassManager`` defines a list of stages which are executed in
    a fixed order, and each stage is defined as a standalone :class:`~.PassManager`
    instance. There are also ``pre_`` and ``post_`` stages for each defined stage.
    This enables easily composing and replacing different stages and also adding
    hook points to enable programmatic modifications to a pipeline. When using a staged
    pass manager you are not able to modify the individual passes and are only able
    to modify stages.

    By default, instances of ``StagedPassManager`` define a typical full compilation
    pipeline from an abstract virtual circuit to one that is optimized and
    capable of running on the specified backend. The default pre-defined stages are:

    #. ``init`` - Initial passes to run before embedding the circuit to the backend.
    #. ``layout`` - Maps the virtual qubits in the circuit to the physical qubits on
       the backend.
    #. ``routing`` - Inserts gates as needed to move the qubit states around until
       the circuit can be run with the chosen layout on the backend's coupling map.
    #. ``translation`` - Translates the gates in the circuit to the target backend's
       basis gate set.
    #. ``optimization`` - Optimizes the circuit to reduce the cost of executing it.
       These passes will typically run in a loop until a convergence criteria is met.
       For example, the convergence criteria might be that the circuit depth does not
       decrease in successive iterations.
    #. ``scheduling`` - Hardware-aware passes that schedule the operations in the
       circuit.

    .. note::

        For backwards compatibility the relative positioning of these default
        stages will remain stable moving forward. However, new stages may be
        added to the default stage list in between current stages. For example,
        in a future release a new phase, something like ``logical_optimization``, could be added
        immediately after the existing ``init`` stage in the default stage list.
        This would preserve compatibility for pre-existing ``StagedPassManager``
        users as the relative positions of the stage are preserved so the behavior
        will not change between releases.

    These stages will be executed in order and any stage set to ``None`` will be skipped.
    If a stage is provided multiple times (i.e. at diferent relative positions), the
    associated passes, including pre and post, will run once per declaration.
    If a :class:`~qiskit.transpiler.PassManager` input is being used for more than 1 stage here
    (for example in the case of a :class:`~.Pass` that covers both Layout and Routing) you will
    want to set that to the earliest stage in sequence that it covers.
    z>\s|\+|\-|\*|\/|\\|\%|\<|\>|\@|\!|\~|\^|\&|\:|\[|\]|\{|\}|\(|\)NÚstagesúIterable[str] | Noner.   rm   c                ó  •— |pg d¢}|                       |¦  «         t          ¦   «                              dt          |¦  «        ¦  «         t          ¦   «                              dt          |                      ¦   «         ¦  «        ¦  «         t          ¦   «                              ¦   «          |                      |¦  «         t          | j        ¦  «        D ])}| 	                    |d¦  «        }t          | ||¦  «         Œ*dS )aù  Initialize a new StagedPassManager object

        Args:
            stages (Iterable[str]): An optional list of stages to use for this
                instance. If this is not specified the default stages list
                ``['init', 'layout', 'routing', 'translation', 'optimization', 'scheduling']`` is
                used. After instantiation, the final list will be immutable and stored as tuple.
                If a stage is provided multiple times (i.e. at diferent relative positions), the
                associated passes, including pre and post, will run once per declaration.
            kwargs: The initial :class:`~.PassManager` values for any stages
                defined in ``stages``. If a argument is not defined the
                stages will default to ``None`` indicating an empty/undefined
                stage.

        Raises:
            AttributeError: If a stage in the input keyword arguments is not defined.
            ValueError: If an invalid stage name is specified.
        )Úinitr8   ÚroutingÚtranslationÚoptimizationÚ
schedulingÚ_stagesÚ_expanded_stagesN)Ú_validate_stagesr'   Ú__setattr__ÚtupleÚ_generate_expanded_stagesr(   Ú_validate_init_kwargsÚsetÚexpanded_stagesrC   Úsetattr)r)   r�   r2   ÚstageÚpmr*   s        €r+   r(   zStagedPassManager.__init__9  sù   ø€ ð& ð 
ð 
ð 
ð 
ˆð 	×Ò˜fÑ%Ô%Ð%å‰Œ×Ò˜I¥u¨V¡}¤}Ñ5Ô5Ð5Ý‰Œ×ÒÐ.µ°d×6TÒ6TÑ6VÔ6VÑ0WÔ0WÑXÔXÐXÝ‰Œ×ÒÑÔÐØ×"Ò" 6Ñ*Ô*Ð*Ý˜Ô-Ñ.Ô.ð 	%ð 	%ˆEØ—’˜E 4Ñ(Ô(ˆBÝ�D˜% Ñ$Ô$Ð$Ð$ð	%ð 	%r,   úIterable[str]c                ó2  ‡ — ˆ fd„|D ¦   «         }|r…t          j        ¦   «         5 }|                     d|d         › �¦  «         |dd …         D ]}|                     d|› �¦  «         Œt          |                     ¦   «         ¦  «        ‚# 1 swxY w Y   d S d S )Nc                óH   •— g | ]}‰j                              |¦  «        ®|‘ŒS ©N)Úinvalid_stage_regexÚsearch)rW   r¡   r)   s     €r+   ú
<listcomp>z6StagedPassManager._validate_stages.<locals>.<listcomp>_  s6   ø€ ð 
ð 
ð 
Ø¨Ô)A×)HÒ)HÈÑ)OÔ)OÐ)[ˆEÐ)[Ð)[Ð)[r,   z)The following stage names are not valid: r   r   z, )ÚioÚStringIOÚwriteÚ
ValueErrorÚgetvalue)r)   r�   Úinvalid_stagesÚmsgÚinvalid_stages   `    r+   r™   z"StagedPassManager._validate_stages^  sñ   ø€ ð
ð 
ð 
ð 
Ø%ð
ñ 
ô 
ˆð ð 	1Ý”‘”ð 1 #Ø—	’	ÐYÀnÐUVÔFWÐYÐYÑZÔZÐZØ%3°A°B°BÔ%7ð 4ð 4�MØ—I’IÐ2 =Ð2Ð2Ñ3Ô3Ð3Ð3Ý  §¢¡¤Ñ0Ô0Ð0ð	1ð 1ð 1ð 1øøøð 1ð 1ð 1ð 1ð 1ð 1ð	1ð 	1s   ¥A%B
Â
BÂBr2   údict[str, Any]c                óˆ   — t          | j        ¦  «        }|                     ¦   «         D ]}||vrt          |› d�¦  «        ‚Œd S )Nz is not a valid stage.)rž   rŸ   ÚkeysÚAttributeError)r)   r2   rŸ   r¡   s       r+   r�   z'StagedPassManager._validate_init_kwargsi  s^   € Ý˜dÔ2Ñ3Ô3ˆØ—[’[‘]”]ð 	Gð 	GˆEØ˜OÐ+Ð+Ý$¨Ð%EÐ%EÐ%EÑFÔFÐFð ,ð	Gð 	Gr,   útuple[str, ...]c                ó   — | j         S )zPass manager stages)r—   ©r)   s    r+   r�   zStagedPassManager.stageso  s   € ð Œ|Ðr,   c                ó   — | j         S )zEExpanded Pass manager stages including ``pre_`` and ``post_`` phases.)r˜   r¸   s    r+   rŸ   z!StagedPassManager.expanded_stagest  s   € ð Ô$Ð$r,   úIterator[str]c              #  óB   K  — | j         D ]}d|z   V — |V — d|z   V — Œd S )NÚpre_Úpost_)r�   )r)   r¡   s     r+   rœ   z+StagedPassManager._generate_expanded_stagesy  sM   è è € Ø”[ð 	"ð 	"ˆEØ˜5‘.Ð Ð Ð ØˆKˆKˆKØ˜E‘/Ð!Ð!Ð!Ð!ð	"ð 	"r,   c                óx   — g | _         | j        D ]*}t          | |d ¦  «        }|�| xj         |j         z  c_         Œ+d S r¦   )Ú_tasksrŸ   Úgetattr)r)   r¡   r¢   s      r+   Ú_update_passmanagerz%StagedPassManager._update_passmanager  sN   € ØˆŒØÔ)ð 	)ð 	)ˆEÝ˜˜u dÑ+Ô+ˆBØˆ~Ø�”˜rœyÑ(�”øð	)ð 	)r,   c                óÆ   •— || k    r|| j         v rt          d¦  «        ‚t          ¦   «                              ||¦  «         || j         v r|                      ¦   «          d S d S )Nz5Recursive definition of StagedPassManager disallowed.)rŸ   r   r'   rš   rÁ   )r)   ÚattrÚvaluer*   s      €r+   rš   zStagedPassManager.__setattr__†  sp   ø€ Ø�DŠ=ˆ=˜T TÔ%9Ð9Ð9Ý!Ð"YÑZÔZÐZÝ‰Œ×Ò˜D %Ñ(Ô(Ð(Ø�4Ô'Ð'Ð'Ø×$Ò$Ñ&Ô&Ð&Ð&Ð&ð (Ð'r,   r!   r"   c                ó   — t           ‚r¦   ©ÚNotImplementedError)r)   r!   s     r+   rL   zStagedPassManager.append�  s
   € õ "Ð!r,   rp   r$   úBasePass | list[BasePass]c                ó   — t           ‚r¦   rÆ   )r)   rp   r!   s      r+   rr   zStagedPassManager.replace“  s
   € õ
 "Ð!r,   c                ó   — t           ‚r¦   rÆ   )r)   rp   s     r+   ÚremovezStagedPassManager.remove›  ó   € Ý!Ð!r,   c                ó|   — |                       ¦   «          t          | j        ¬¦  «        }| j        |         |_        |S )N)r#   )rÁ   r   r#   r¿   )r)   rp   Únew_passmanagers      r+   Ú__getitem__zStagedPassManager.__getitem__ž  s>   € Ø× Ò Ñ"Ô"Ð"õ &°DÔ4FÐGÑGÔGˆØ!%¤¨UÔ!3ˆÔØÐr,   c                ól   •— |                       ¦   «          t          ¦   «                              ¦   «         S r¦   )rÁ   r'   Ú__len__©r)   r*   s    €r+   rÑ   zStagedPassManager.__len__§  s)   ø€ Ø× Ò Ñ"Ô"Ð"Ý‰wŒw�ŠÑ Ô Ð r,   c                ó   — t           ‚r¦   rÆ   )r)   rp   Úitems      r+   Ú__setitem__zStagedPassManager.__setitem__«  rÌ   r,   c                ó   — t           ‚r¦   rÆ   )r)   Úothers     r+   Ú__add__zStagedPassManager.__add__®  rÌ   r,   rs   r   r7   rt   ru   úCallable | Nonerv   c                óv   •— |                       ¦   «          t          ¦   «                              ||||¬¦  «        S )N)rv   )rÁ   r'   rz   r{   s        €r+   rz   zStagedPassManager.run±  s5   ø€ ð 	× Ò Ñ"Ô"Ð"Ý‰wŒw�{Š{˜8 [°(È-ˆ{ÑXÔXÐXr,   r   c                ól   •— |                       ¦   «          t          ¦   «                              ¦   «         S r¦   )rÁ   r'   Úto_flow_controllerrÒ   s    €r+   rÜ   z$StagedPassManager.to_flow_controller»  s+   ø€ Ø× Ò Ñ"Ô"Ð"Ý‰wŒw×)Ò)Ñ+Ô+Ð+r,   Fc                ó,   — ddl m}  || |||¬¦  «        S )zDraw the staged pass manager.r   )Ústaged_pass_manager_drawerr~   )r‚   rÞ   )r)   r   r€   r�   rÞ   s        r+   rƒ   zStagedPassManager.draw¿  s/   € àCÐCÐCÐCÐCÐCà)Ð)¨$¸ÈÐTWÐXÑXÔXÐXr,   r¦   )r�   r�   r.   rm   )r�   r£   r.   rm   )r2   r²   r.   rm   )r.   r¶   )r.   rº   )r.   rm   r„   )rp   r$   r!   rÈ   r.   rm   )rp   r$   r.   rm   r…   )
rs   r   r7   rt   ru   rÙ   rv   r$   r.   r   )r.   r   r†   )r‡   rˆ   r‰   rŠ   ÚreÚcompiler§   r(   r™   r�   Úpropertyr�   rŸ   rœ   rÁ   rš   rL   rr   rË   rÏ   rÑ   rÕ   rØ   rz   rÜ   rƒ   r‹   rŒ   s   @r+   rŽ   rŽ     s  ø€ € € € € ð.ð .ð` %˜"œ*ØIñô Ðð#%ð #%ð #%ð #%ð #%ð #%ð #%ðJ	1ð 	1ð 	1ð 	1ðGð Gð Gð Gð ðð ð ñ „Xðð ð%ð %ð %ñ „Xð%ð"ð "ð "ð "ð)ð )ð )ð )ð'ð 'ð 'ð 'ð 'ð"ð "ð "ð "ð"ð "ð "ð "ð"ð "ð "ð "ðð ð ð!ð !ð !ð !ð !ð"ð "ð "ð"ð "ð "ð #'Ø$(Ø!ðYð Yð Yð Yð Yð Yð Yð,ð ,ð ,ð ,ð ,ð ,ðYð Yð Yð Yð Yð Yð Yð Yr,   rŽ   c                ó<   ‡ — t          ‰ ¦  «        ˆ fd„¦   «         }|S )Nc                 ód   •— 	  ‰| i |¤ŽS # t           $ r}t          |j        ¦  «        |‚d }~ww xY wr¦   )r   r   Úmessage)Ú	meth_argsÚmeth_kwargsÚexÚmeths      €r+   Úwrapperz_replace_error.<locals>.wrapperÍ  sN   ø€ ð	6Ø�4˜Ð2 kÐ2Ð2Ð2øÝð 	6ð 	6ð 	6Ý! "¤*Ñ-Ô-°2Ð5øøøøð	6øøøs   ƒ ‹
/•*ª/r   )rè   ré   s   ` r+   Ú_replace_errorrê   Ì  s3   ø€ Ý
ˆ4�[„[ð6ð 6ð 6ð 6ñ „[ð6ð €Nr,   )Ú	predicateÚ_ru   r   c                ó   ‡ — ˆ fd„}|S )Nc                ó(   •—  ‰| ||||¬¦  «         d S )N)Úpass_rb   ÚtimerE   Úcountr   )Útaskr4   rE   Úrunning_timerñ   ru   s        €r+   Ú_wrapped_callablez1_legacy_style_callback.<locals>._wrapped_callableá  s5   ø€ ØˆØØØØ%Øð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r,   r   )ru   rô   s   ` r+   ry   ry   à  s$   ø€ ð
ð 
ð 
ð 
ð 
ð Ðr,   )ru   r   )3rŠ   Ú
__future__r   Úinspectrª   rß   Úcollections.abcr   r   r   Ú	functoolsr	   Útypingr
   r   r   r   Úqiskit.circuitr   Úqiskit.convertersr   r   Úqiskit.dagcircuitr   Úqiskit.passmanager.passmanagerr   Úqiskit.passmanager.base_tasksr   Ú#qiskit.passmanager.flow_controllersr   Úqiskit.passmanager.exceptionsr   Ú
basepassesr   Ú
exceptionsr   r8   r   r   r   r   rŽ   rê   Ú
getmembersÚ
isfunctionÚ_nameÚ_methodÚ
startswithÚ_wrappedr    ry   r   r,   r+   ú<module>r	     s€  ðð MÐ LØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø 	€	€	€	Ø 	€	€	€	Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø Ð Ð Ð Ð Ð Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,à )Ð )Ð )Ð )Ð )Ð )Ø <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ø (Ð (Ð (Ð (Ð (Ð (Ø :Ð :Ð :Ð :Ð :Ð :Ø .Ð .Ð .Ð .Ð .Ð .Ø DÐ DÐ DÐ DÐ DÐ DØ :Ð :Ð :Ð :Ð :Ð :Ø  Ð  Ð  Ð  Ð  Ð  Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø +Ð +Ð +Ð +Ð +Ð +Ð +Ð +àˆW�\¨¨t°NÔ/CÀ^Ð/SÔ)TÐUÑUÔU€
ð\Rð \Rð \Rð \Rð \R�/ñ \Rô \Rð \Rð~Yð Yð Yð Yð Y˜ñ Yô Yð YðPð ð ð )�gÔ(¨ÀÔ@RÐSÑSÔSð *ð *�N€Eˆ7Ø×Ò˜ÑÔð ð 	Øˆ~˜gÑ&Ô&€HØ€GˆK˜ Ñ)Ô)Ð)Ð)ð
ð 
ð 
ð 
ð 
ð 
r,   