§
    âX­j—%  ã                   óº   — d Z ddlZddlmc mZ ddlZddlm	Z	m
Z
mZ ddlmZmZmZmZmZmZmZmZmZ  G d„ d¦  «        Z G d„ d¦  «        Z G d	„ d
¦  «        ZdS )uÜ  
Unit Tests for Atlas Node Selector & Endgame Atlas Strategy (Doc 56 / Doc 65 / Doc 70)
======================================================================================
Kiá»ƒm thá»­ toÃ n diá»‡n cÃ¡c báº¥t biáº¿n kiáº¿n trÃºc:
- INV-ATLAS-FARM-NODE: Tuyá»‡t Ä‘á»‘i loáº¡i trá»« vÃ  cáº¥m Ä‘i vÃ o The Burning Monolith (Arbiter of Ash).
- Monk CI Tier 15 Optimization: Æ¯u tiÃªn cÃ¡c map má»Ÿ, an toÃ n (Deserted, Fortress, Mineshaft, Creek, Marsh).
- INV-ATLAS-01: Safe Hideout Execution (chá»‰ kÃ­ch hoáº¡t táº¡i Hideout/Town, 0 quÃ¡i váº­t).
- INV-ATLAS-02: Verified Node Target & Hover Confirmation (Viewport ROI & Occlusion Fail-Closed).
- Precursor Tower Integration: Nháº­n diá»‡n vÃ  cáº¯m Precursor Tablet há»£p lá»‡.
é    N)ÚAtlasKnowledgeBaseÚAtlasNodeTypeÚAtlasNodeProfile)	Ú	AtlasNodeÚPrecursorTowerÚAtlasPerceptionEngineÚAtlasStrategyPlannerÚAtlasStrategyConfigÚAtlasNodeSelectorÚATLAS_FLAG_REQUIRE_HOVER_VERIFYÚ!ATLAS_FLAG_SOCKET_PRECURSOR_TOWERÚ#ATLAS_FLAG_AUTO_PROCEED_TO_WAYSTONEc                   ó$   — e Zd ZdZd„ Zd„ Zd„ ZdS )ÚTestInvAtlasFarmNodeSafetyuj   Kiá»ƒm thá»­ báº¥t biáº¿n INV-ATLAS-FARM-NODE: Cáº¥m tuyá»‡t Ä‘á»‘i The Burning Monolith (Arbiter of Ash).c                 óÆ  — t          j        d¦  «        }|j        }t          j        }||k    }|sòt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        dt          j        ¦   «         v st          j	        t          ¦  «        rt          j
        t          ¦  «        ndt          j
        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|j        }d	}||u }|sªt          j        d
|fd||f¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        t          j
        |¦  «        dœz  }dd|iz  }	t          t          j        |	¦  «        ¦  «        ‚d x}x}}t          j        d¦  «        }
|
j        }t          j        }||k    }|sòt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j	        |
¦  «        rt          j
        |
¦  «        ndt          j
        |¦  «        dt          j        ¦   «         v st          j	        t          ¦  «        rt          j
        t          ¦  «        ndt          j
        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|
j        }d	}||u }|sªt          j        d
|fd||f¦  «        dt          j        ¦   «         v st          j	        |
¦  «        rt          j
        |
¦  «        ndt          j
        |¦  «        t          j
        |¦  «        dœz  }dd|iz  }	t          t          j        |	¦  «        ¦  «        ‚d x}x}}t           j        }d} ||¦  «        }d}||u }|sÚt          j        d
|fd||f¦  «        dt          j        ¦   «         v st          j	        t           ¦  «        rt          j
        t           ¦  «        ndt          j
        |¦  «        t          j
        |¦  «        t          j
        |¦  «        t          j
        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}}t           j        }d} ||¦  «        }d}||u }|sÚt          j        d
|fd||f¦  «        dt          j        ¦   «         v st          j	        t           ¦  «        rt          j
        t           ¦  «        ndt          j
        |¦  «        t          j
        |¦  «        t          j
        |¦  «        t          j
        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}}t           j        }d} ||¦  «        }d}||u }|sÚt          j        d
|fd||f¦  «        dt          j        ¦   «         v st          j	        t           ¦  «        rt          j
        t           ¦  «        ndt          j
        |¦  «        t          j
        |¦  «        t          j
        |¦  «        t          j
        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}}t           j        }d} ||¦  «        }d}||u }|sÚt          j        d
|fd||f¦  «        dt          j        ¦   «         v st          j	        t           ¦  «        rt          j
        t           ¦  «        ndt          j
        |¦  «        t          j
        |¦  «        t          j
        |¦  «        t          j
        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}}d S )NúThe Burning Monolith©ú==)zW%(py2)s
{%(py2)s = %(py0)s.node_type
} == %(py6)s
{%(py6)s = %(py4)s.BURNING_MONOLITH
}Ú
profile_bmr   )Úpy0Úpy2Úpy4Úpy6zassert %(py8)sÚpy8F©Úis)z8%(py2)s
{%(py2)s = %(py0)s.accepts_waystone
} is %(py5)s©r   r   Úpy5úassert %(py7)sÚpy7úArbiter of AshÚprofile_ashT)zg%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.is_forbidden_for_waystone_farming
}(%(py4)s)
} is %(py9)sr   )r   r   r   r   Úpy9zassert %(py11)sÚpy11úBurning Monolithz%The Burning Monolith (Arbiter of Ash))r   Úclassify_nodeÚ	node_typer   ÚBURNING_MONOLITHÚ
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanationÚaccepts_waystoneÚ!is_forbidden_for_waystone_farming)Úselfr   Ú@py_assert1Ú@py_assert5Ú@py_assert3Ú@py_format7Ú@py_format9Ú@py_assert4Ú@py_format6Ú@py_format8r"   Ú@py_assert8Ú@py_assert7Ú@py_format10Ú@py_format12s                  ú6C:\Projects\AutoPOE2\tests\test_atlas_node_selector.pyÚ.test_burning_monolith_classified_and_forbiddenzITestInvAtlasFarmNodeSafety.test_burning_monolith_classified_and_forbidden"   sÔ  € å'Ô5Ð6LÑMÔMˆ
ØÔ#ÐE¥}Ô'EÐEÐ#Ð'EÒEÐEÐEÐEÕEÔEÐEÐEÐEÐEÐ#Ð'EÐEÑEÔEÐEÕEÔEÑEÔEÐEÐEÕEÔEˆzÑEÔEÐEÕEÔEˆzÑEÔEÐEÐEÕEÔEÐ#ÑEÔEÐEÕEÔEÑEÔEÐEÐEÕEÔE¥}ÑEÔEÐEÕEÔE¥}ÑEÔEÐEÐEÕEÔEÐ'EÑEÔEÐEÐEÑEÐEÐEÐEÐEÐEÑEÐEÕEÕEÔEÐEÑEÔEÑEÔEÐEÐEÐEÐEÐEÐEÐEØÔ*Ð3¨eÐ3Ð*¨eÐ3Ð3Ð3Ð3Õ3Ô3Ð3Ð3Ð3Ð3Ð*¨eÐ3Ñ3Ô3Ð3Õ3Ô3Ñ3Ô3Ð3Ð3Õ3Ô3ˆzÑ3Ô3Ð3Õ3Ô3ˆzÑ3Ô3Ð3Ð3Õ3Ô3Ð*Ñ3Ô3Õ3Ô3¨eÑ3Ô3Ð3Ð3Ñ3Ð3Ð3Ð3Ð3Ð3Ñ3Ð3Õ3Õ3Ô3Ð3Ñ3Ô3Ñ3Ô3Ð3Ð3Ð3Ð3Ð3Ð3Ð3å(Ô6Ð7GÑHÔHˆØÔ$ÐF­Ô(FÐFÐ$Ð(FÒFÐFÐFÐFÕFÔFÐFÐFÐFÐFÐ$Ð(FÐFÑFÔFÐFÕFÔFÑFÔFÐFÐFÕFÔFˆ{ÑFÔFÐFÕFÔFˆ{ÑFÔFÐFÐFÕFÔFÐ$ÑFÔFÐFÕFÔFÑFÔFÐFÐFÕFÔF­ÑFÔFÐFÕFÔF­ÑFÔFÐFÐFÕFÔFÐ(FÑFÔFÐFÐFÑFÐFÐFÐFÐFÐFÑFÐFÕFÕFÔFÐFÑFÔFÑFÔFÐFÐFÐFÐFÐFÐFÐFØÔ+Ð4¨uÐ4Ð+¨uÐ4Ð4Ð4Ð4Õ4Ô4Ð4Ð4Ð4Ð4Ð+¨uÐ4Ñ4Ô4Ð4Õ4Ô4Ñ4Ô4Ð4Ð4Õ4Ô4ˆ{Ñ4Ô4Ð4Õ4Ô4ˆ{Ñ4Ô4Ð4Ð4Õ4Ô4Ð+Ñ4Ô4Õ4Ô4¨uÑ4Ô4Ð4Ð4Ñ4Ð4Ð4Ð4Ð4Ð4Ñ4Ð4Õ4Õ4Ô4Ð4Ñ4Ô4Ñ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4Ð4õ "ÔCÐcÐDZÐcÐCÐCÐDZÑ[Ô[ÐcÐ_cÐcÐ[Ð_cÐcÐcÐcÐcÕcÔcÐcÐcÐcÐcÐ[Ð_cÐcÑcÔcÐcÕcÔcÑcÔcÐcÐcÕcÔcÕ!ÑcÔcÐcÕcÔcÕ!ÑcÔcÐcÐcÕcÔcÐCÑcÔcÕcÔcÐDZÑcÔcÕcÔcÐ[ÑcÔcÕcÔcÐ_cÑcÔcÐcÐcÑcÐcÐcÐcÐcÐcÑcÐcÕcÕcÔcÐcÑcÔcÑcÔcÐcÐcÐcÐcÐcÐcÐcÐcÐcÐcÐcÝ!ÔCÐ_ÐDVÐ_ÐCÐCÐDVÑWÔWÐ_Ð[_Ð_ÐWÐ[_Ð_Ð_Ð_Ð_Õ_Ô_Ð_Ð_Ð_Ð_ÐWÐ[_Ð_Ñ_Ô_Ð_Õ_Ô_Ñ_Ô_Ð_Ð_Õ_Ô_Õ!Ñ_Ô_Ð_Õ_Ô_Õ!Ñ_Ô_Ð_Ð_Õ_Ô_ÐCÑ_Ô_Õ_Ô_ÐDVÑ_Ô_Õ_Ô_ÐWÑ_Ô_Õ_Ô_Ð[_Ñ_Ô_Ð_Ð_Ñ_Ð_Ð_Ð_Ð_Ð_Ñ_Ð_Õ_Õ_Ô_Ð_Ñ_Ô_Ñ_Ô_Ð_Ð_Ð_Ð_Ð_Ð_Ð_Ð_Ð_Ð_Ð_Ý!ÔCÐ]ÐDTÐ]ÐCÐCÐDTÑUÔUÐ]ÐY]Ð]ÐUÐY]Ð]Ð]Ð]Ð]Õ]Ô]Ð]Ð]Ð]Ð]ÐUÐY]Ð]Ñ]Ô]Ð]Õ]Ô]Ñ]Ô]Ð]Ð]Õ]Ô]Õ!Ñ]Ô]Ð]Õ]Ô]Õ!Ñ]Ô]Ð]Ð]Õ]Ô]ÐCÑ]Ô]Õ]Ô]ÐDTÑ]Ô]Õ]Ô]ÐUÑ]Ô]Õ]Ô]ÐY]Ñ]Ô]Ð]Ð]Ñ]Ð]Ð]Ð]Ð]Ð]Ñ]Ð]Õ]Õ]Ô]Ð]Ñ]Ô]Ñ]Ô]Ð]Ð]Ð]Ð]Ð]Ð]Ð]Ð]Ð]Ð]Ð]Ý!ÔCÐtÐDkÐtÐCÐCÐDkÑlÔlÐtÐptÐtÐlÐptÐtÐtÐtÐtÕtÔtÐtÐtÐtÐtÐlÐptÐtÑtÔtÐtÕtÔtÑtÔtÐtÐtÕtÔtÕ!ÑtÔtÐtÕtÔtÕ!ÑtÔtÐtÐtÕtÔtÐCÑtÔtÕtÔtÐDkÑtÔtÕtÔtÐlÑtÔtÕtÔtÐptÑtÔtÐtÐtÑtÐtÐtÐtÐtÐtÑtÐtÕtÕtÔtÐtÑtÔtÑtÔtÐtÐtÐtÐtÐtÐtÐtÐtÐtÐtÐtÐtÐtó    c           	      ó‚  — t          ¦   «         }t          ddddd¬¦  «        t          dddd	d¬¦  «        t          d
dddd¬¦  «        g}|                     |¦  «        }d }||u}|s—t          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}}d}|j        }	||	v }|sªt          j        d|fd||	f¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |	¦  «        dœz  }dd|iz  }
t          t          j
        |
¦  «        ¦  «        ‚d x}x}}	d}|j        }	||	v}|sªt          j        d|fd||	f¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |	¦  «        dœz  }dd|iz  }
t          t          j
        |
¦  «        ¦  «        ‚d x}x}}	d}|j        }	||	v}|sªt          j        d|fd||	f¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |	¦  «        dœz  }dd|iz  }
t          t          j
        |
¦  «        ¦  «        ‚d x}x}}	d S )Nr   é   ç     à…@ç     @@T©ÚnameÚtierÚscreen_xÚscreen_yÚis_reachablezArbiter of Ash Arenag     €†@g     @€@úDeserted Mapé   ç      ‰@ç     À‚@©úis not©z%(py0)s is not %(py3)sÚbest©r   Úpy3úassert %(py5)sr   ÚDeserted©Úin©z,%(py1)s in %(py5)s
{%(py5)s = %(py3)s.name
}©Úpy1rV   r   r   r    r%   )únot in)z0%(py1)s not in %(py5)s
{%(py5)s = %(py3)s.name
}r!   )r	   r   Úselect_best_noder)   r*   r+   r,   r-   r.   r/   r0   rH   )r3   ÚplannerÚ
candidatesrT   Ú@py_assert2r4   Ú@py_format4r:   Ú@py_assert0r9   r;   s              r@   Ú<test_planner_rejects_burning_monolith_even_with_highest_tierzWTestInvAtlasFarmNodeSafety.test_planner_rejects_burning_monolith_even_with_highest_tier2   sÙ  € Ý&Ñ(Ô(ˆõ Ð1¸ÀUÐUZÐimÐnÑnÔnÝÐ1¸ÀUÐUZÐimÐnÑnÔnÝ˜>°¸UÈUÐaeÐfÑfÔfð
ˆ
ð ×'Ò'¨
Ñ3Ô3ˆØÐˆt˜4ÐÐÐÐÕÔÐÐÐÐˆt˜4ÐÑÔÐÕÔÑÔÐÐÕÔˆtÑÔÐÕÔˆtÑÔÐÐÕÔ˜4ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØÐ&˜TœYÐ&ˆz˜YÐ&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&ˆz˜YÐ&Ñ&Ô&Õ&Ô&ˆzÑ&Ô&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&˜TÑ&Ô&Ð&Õ&Ô&˜TÑ&Ô&Ð&Ð&Õ&Ô&˜YÑ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ø!Ð2¨¬Ð2Ð!¨Ð2Ð2Ð2Ð2Õ2Ô2Ð2Ð2Ð2Ð2Ð!¨Ð2Ñ2Ô2Õ2Ô2Ð!Ñ2Ô2Ð2Õ2Ô2Ñ2Ô2Ð2Ð2Õ2Ô2¨Ñ2Ô2Ð2Õ2Ô2¨Ñ2Ô2Ð2Ð2Õ2Ô2¨Ñ2Ô2Ð2Ð2Ñ2Ð2Ð2Ð2Ð2Ð2Ñ2Ð2Õ2Õ2Ô2Ð2Ñ2Ô2Ñ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2Ð2ØÐ0 t¤yÐ0Ð yÐ0Ð0Ð0Ð0Õ0Ô0Ð0Ð0Ð0Ð0Ð yÐ0Ñ0Ô0Õ0Ô0ÐÑ0Ô0Ð0Õ0Ô0Ñ0Ô0Ð0Ð0Õ0Ô0 tÑ0Ô0Ð0Õ0Ô0 tÑ0Ô0Ð0Ð0Õ0Ô0 yÑ0Ô0Ð0Ð0Ñ0Ð0Ð0Ð0Ð0Ð0Ñ0Ð0Õ0Õ0Ô0Ð0Ñ0Ô0Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0rB   c           	      ó²  — t          d¬¦  «        }t          |¬¦  «        }t          dddddd¬¦  «        t          d	dd
ddd¬¦  «        t          ddddd¬¦  «        g}|                     |¦  «        }d}||u}|s—t	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}}|j        }d}	||	k    }
|
sªt	          j        d|
fd||	f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |	¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}
}	dS )ul   Ká»ƒ cáº£ khi bá»‹ gÃ¡n cá»� is_citadel hoáº·c auto_engage_citadels=True, Burning Monolith váº«n bá»‹ cáº¥m.T)Úauto_engage_citadels)Úconfigr   rD   rE   rF   )rH   rI   rJ   rK   rL   Ú
is_citadelzIron Citadelç     p‡@ç     0�@rM   rN   rO   rP   rG   NrQ   rS   rT   rU   rW   r   )ú!=)z,%(py2)s
{%(py2)s = %(py0)s.name
} != %(py5)sr   r   r    )r
   r	   r   r_   r)   r*   r+   r,   r-   r.   r/   r0   rH   )r3   Úcfgr`   ra   rT   rb   r4   rc   r:   r9   r6   r;   s               r@   Ú0test_planner_rejects_burning_monolith_as_citadelzKTestInvAtlasFarmNodeSafety.test_planner_rejects_burning_monolith_as_citadelA   s6  € å!°tÐ<Ñ<Ô<ˆÝ&¨cÐ2Ñ2Ô2ˆõ Ð1¸ÀUÐUZÐimÐz~ÐÑÔÝ˜>°¸UÈUÐaeÐrvÐwÑwÔwÝ˜>°¸UÈUÐaeÐfÑfÔfð
ˆ
ð ×'Ò'¨
Ñ3Ô3ˆØÐˆt˜4ÐÐÐÐÕÔÐÐÐÐˆt˜4ÐÑÔÐÕÔÑÔÐÐÕÔˆtÑÔÐÕÔˆtÑÔÐÐÕÔ˜4ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØŒyÐ2Ð2Ð2ˆyÐ2Ò2Ð2Ð2Ð2Õ2Ô2Ð2Ð2Ð2Ð2ˆyÐ2Ð2Ñ2Ô2Ð2Õ2Ô2Ñ2Ô2Ð2Ð2Õ2Ô2ˆtÑ2Ô2Ð2Õ2Ô2ˆtÑ2Ô2Ð2Ð2Õ2Ô2ˆyÑ2Ô2Õ2Ô2Ð2Ñ2Ô2Ð2Ð2Ñ2Ð2Ð2Ð2Ð2Ð2Ñ2Ð2Õ2Õ2Ô2Ð2Ñ2Ô2Ñ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2rB   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rA   re   rn   © rB   r@   r   r      sJ   € € € € € ØtÐtðuð uð uð 1ð 1ð 1ð3ð 3ð 3ð 3ð 3rB   r   c                   ó   — e Zd ZdZd„ Zd„ ZdS )ÚTestMonkCITier15Preferencesuz   Kiá»ƒm thá»­ chiáº¿n lÆ°á»£c tá»‘i Æ°u báº£n Ä‘á»“ má»Ÿ cho Monk CI Tier 15 (Deserted, Fortress, Mineshaft, Creek, Marsh).c                 óz  ‡— t          ¦   «         }g d¢}|D ]ÄŠˆfd„|j        j        D ¦   «         }t          |¦  «        }|s•ddt	          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }t          t          j
        |¦  «        ¦  «        ‚d x}}ŒÅt          dddd	¬
¦  «        t          dddd¬
¦  «        t          dddd¬
¦  «        t          dddd¬
¦  «        t          dddd¬
¦  «        t          dddd¬
¦  «        g}|                     |¦  «        }d }||u}|s—t          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }	dd|	iz  }
t          t          j
        |
¦  «        ¦  «        ‚d x}}d}|j        }||v }|sªt          j        d|fd ||f¦  «        t          j        |¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        d!œz  }
d"d#|
iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}|                     |d d$…         ¦  «        }d }||u}|s—t          j        d|fd||f¦  «        d%t	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd%t          j        |¦  «        dœz  }	dd|	iz  }
t          t          j
        |
¦  «        ¦  «        ‚d x}}d&}|j        }||v }|sªt          j        d|fd ||f¦  «        t          j        |¦  «        d%t	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd%t          j        |¦  «        d!œz  }
d"d#|
iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}|                     |d d'…         ¦  «        }d }||u}|s—t          j        d|fd||f¦  «        d(t	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd(t          j        |¦  «        dœz  }	dd|	iz  }
t          t          j
        |
¦  «        ¦  «        ‚d x}}d)}|j        }||v }|sªt          j        d|fd ||f¦  «        t          j        |¦  «        d(t	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd(t          j        |¦  «        d!œz  }
d"d#|
iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}|                     |d d*…         ¦  «        }d }||u}|s—t          j        d|fd||f¦  «        d+t	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd+t          j        |¦  «        dœz  }	dd|	iz  }
t          t          j
        |
¦  «        ¦  «        ‚d x}}d,}|j        }||v }|sªt          j        d|fd ||f¦  «        t          j        |¦  «        d+t	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd+t          j        |¦  «        d!œz  }
d"d#|
iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}|                     |d d-…         ¦  «        }d }||u}|s—t          j        d|fd||f¦  «        d.t	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd.t          j        |¦  «        dœz  }	dd|	iz  }
t          t          j
        |
¦  «        ¦  «        ‚d x}}d/}|j        }||v }|sªt          j        d|fd ||f¦  «        t          j        |¦  «        d.t	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd.t          j        |¦  «        d!œz  }
d"d#|
iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}|                     |d d0…         ¦  «        }d }||u}|s—t          j        d|fd||f¦  «        d1t	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd1t          j        |¦  «        dœz  }	dd|	iz  }
t          t          j
        |
¦  «        ¦  «        ‚d x}}d2}|j        }||v }|sªt          j        d|fd ||f¦  «        t          j        |¦  «        d1t	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd1t          j        |¦  «        d!œz  }
d"d#|
iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}d S )3N)ÚCryptrX   ÚFortressÚ	MineshaftÚCreekÚMarshc              3   óh   •K  — | ],}‰                      ¦   «         |                      ¦   «         v V — Œ-d S )N)Úlower)Ú.0ÚprefÚms     €r@   ú	<genexpr>zPTestMonkCITier15Preferences.test_monk_ci_preferred_maps_order.<locals>.<genexpr>[   s8   øè è € Ð[Ð[°T�q—w’w‘y”y D§J¢J¡L¤LÐ0Ð[Ð[Ð[Ð[Ð[Ð[rB   z,assert %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}Úany)r   r   r   z	Marsh MaprN   rP   ç      y@©rH   rI   rJ   rK   z	Creek Mapg     P„@g      |@zMineshaft MaprE   rF   zFortress Maprj   rk   rM   rO   z	Crypt Mapg     �Š@rQ   rS   Ú
best_cryptrU   rW   r   rw   rY   r[   r\   r   r    éÿÿÿÿrT   rX   é   Úbest2rx   é   Úbest3ry   é   Úbest4rz   é   Úbest5r{   )r	   rh   Úpreferred_mapsr‚   r+   r,   r)   r-   r.   r/   r0   r   r_   r*   rH   )r3   r`   Úexpected_safe_mapsr4   r6   Ú@py_format5ra   r…   rb   rc   r:   rd   r9   r;   rT   rˆ   rŠ   rŒ   rŽ   r€   s                      @r@   Ú!test_monk_ci_preferred_maps_orderz=TestMonkCITier15Preferences.test_monk_ci_preferred_maps_orderU   sÙ  ø€ Ý&Ñ(Ô(ˆð ^Ð]Ð]ÐØ#ð 	\ð 	\ˆAØ[Ð[Ð[Ð[¸W¼^Ô=ZÐ[Ñ[Ô[Ð[•3Ð[Ñ[Ô[Ð[Ð[Ð[Ð[Ð[Õ[Ô[Ñ[Ô[Ð[Ð[Õ[Ô[•3Ñ[Ô[Ð[Õ[Ô[•3Ñ[Ô[Ð[Ð[Õ[Ô[Ð[Ñ[Ô[Õ[Ô[Ð[Ñ[Ô[Ð[Ð[Ñ[Ð[Õ[Õ[Ô[Ð[Ñ[Ô[Ñ[Ô[Ð[Ð[Ð[Ð[Ð[Ð[õ ˜;¨R¸%È%ÐPÑPÔPÝ˜;¨R¸%È%ÐPÑPÔPÝ˜?°¸eÈeÐTÑTÔTÝ˜>°¸UÈUÐSÑSÔSÝ˜>°¸UÈUÐSÑSÔSÝ˜;¨R¸%È%ÐPÑPÔPð
ˆ
ð ×-Ò-¨jÑ9Ô9ˆ
Ø!%Ð%ˆz Ð%Ð%Ð%Ð%Õ%Ô%Ð%Ð%Ð%Ð%ˆz Ð%Ñ%Ô%Ð%Õ%Ô%Ñ%Ô%Ð%Ð%Õ%Ô%ˆzÑ%Ô%Ð%Õ%Ô%ˆzÑ%Ô%Ð%Ð%Õ%Ô% Ñ%Ô%Ð%Ð%Ñ%Ð%Ð%Ð%Ð%Ð%Ñ%Ð%Õ%Õ%Ô%Ð%Ñ%Ô%Ñ%Ô%Ð%Ð%Ð%Ð%Ð%ØÐ)˜*œ/Ð)ˆw˜/Ð)Ð)Ð)Ð)Õ)Ô)Ð)Ð)Ð)Ð)ˆw˜/Ð)Ñ)Ô)Õ)Ô)ˆwÑ)Ô)Ð)Õ)Ô)Ñ)Ô)Ð)Ð)Õ)Ô)˜*Ñ)Ô)Ð)Õ)Ô)˜*Ñ)Ô)Ð)Ð)Õ)Ô)˜/Ñ)Ô)Ð)Ð)Ñ)Ð)Ð)Ð)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)ð ×'Ò'¨
°3°B°3¬Ñ8Ô8ˆØÐˆt˜4ÐÐÐÐÕÔÐÐÐÐˆt˜4ÐÑÔÐÕÔÑÔÐÐÕÔˆtÑÔÐÕÔˆtÑÔÐÐÕÔ˜4ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØÐ&˜TœYÐ&ˆz˜YÐ&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&ˆz˜YÐ&Ñ&Ô&Õ&Ô&ˆzÑ&Ô&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&˜TÑ&Ô&Ð&Õ&Ô&˜TÑ&Ô&Ð&Ð&Õ&Ô&˜YÑ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&ð ×(Ò(¨°B°Q°B¬Ñ8Ô8ˆØ Ð ˆu˜DÐ Ð Ð Ð Õ Ô Ð Ð Ð Ð ˆu˜DÐ Ñ Ô Ð Õ Ô Ñ Ô Ð Ð Õ Ô ˆuÑ Ô Ð Õ Ô ˆuÑ Ô Ð Ð Õ Ô ˜DÑ Ô Ð Ð Ñ Ð Ð Ð Ð Ð Ñ Ð Õ Õ Ô Ð Ñ Ô Ñ Ô Ð Ð Ð Ð Ð ØÐ'˜UœZÐ'ˆz˜ZÐ'Ð'Ð'Ð'Õ'Ô'Ð'Ð'Ð'Ð'ˆz˜ZÐ'Ñ'Ô'Õ'Ô'ˆzÑ'Ô'Ð'Õ'Ô'Ñ'Ô'Ð'Ð'Õ'Ô'˜UÑ'Ô'Ð'Õ'Ô'˜UÑ'Ô'Ð'Ð'Õ'Ô'˜ZÑ'Ô'Ð'Ð'Ñ'Ð'Ð'Ð'Ð'Ð'Ñ'Ð'Õ'Õ'Ô'Ð'Ñ'Ô'Ñ'Ô'Ð'Ð'Ð'Ð'Ð'Ð'Ð'ð ×(Ò(¨°B°Q°B¬Ñ8Ô8ˆØ Ð ˆu˜DÐ Ð Ð Ð Õ Ô Ð Ð Ð Ð ˆu˜DÐ Ñ Ô Ð Õ Ô Ñ Ô Ð Ð Õ Ô ˆuÑ Ô Ð Õ Ô ˆuÑ Ô Ð Ð Õ Ô ˜DÑ Ô Ð Ð Ñ Ð Ð Ð Ð Ð Ñ Ð Õ Õ Ô Ð Ñ Ô Ñ Ô Ð Ð Ð Ð Ð ØÐ(˜eœjÐ(ˆ{˜jÐ(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(ˆ{˜jÐ(Ñ(Ô(Õ(Ô(ˆ{Ñ(Ô(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(˜eÑ(Ô(Ð(Õ(Ô(˜eÑ(Ô(Ð(Ð(Õ(Ô(˜jÑ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(ð ×(Ò(¨°B°Q°B¬Ñ8Ô8ˆØ Ð ˆu˜DÐ Ð Ð Ð Õ Ô Ð Ð Ð Ð ˆu˜DÐ Ñ Ô Ð Õ Ô Ñ Ô Ð Ð Õ Ô ˆuÑ Ô Ð Õ Ô ˆuÑ Ô Ð Ð Õ Ô ˜DÑ Ô Ð Ð Ñ Ð Ð Ð Ð Ð Ñ Ð Õ Õ Ô Ð Ñ Ô Ñ Ô Ð Ð Ð Ð Ð ØÐ$˜%œ*Ð$ˆw˜*Ð$Ð$Ð$Ð$Õ$Ô$Ð$Ð$Ð$Ð$ˆw˜*Ð$Ñ$Ô$Õ$Ô$ˆwÑ$Ô$Ð$Õ$Ô$Ñ$Ô$Ð$Ð$Õ$Ô$˜%Ñ$Ô$Ð$Õ$Ô$˜%Ñ$Ô$Ð$Ð$Õ$Ô$˜*Ñ$Ô$Ð$Ð$Ñ$Ð$Ð$Ð$Ð$Ð$Ñ$Ð$Õ$Õ$Ô$Ð$Ñ$Ô$Ñ$Ô$Ð$Ð$Ð$Ð$Ð$Ð$Ð$ð ×(Ò(¨°B°Q°B¬Ñ8Ô8ˆØ Ð ˆu˜DÐ Ð Ð Ð Õ Ô Ð Ð Ð Ð ˆu˜DÐ Ñ Ô Ð Õ Ô Ñ Ô Ð Ð Õ Ô ˆuÑ Ô Ð Õ Ô ˆuÑ Ô Ð Ð Õ Ô ˜DÑ Ô Ð Ð Ñ Ð Ð Ð Ð Ð Ñ Ð Õ Õ Ô Ð Ñ Ô Ñ Ô Ð Ð Ð Ð Ð ØÐ$˜%œ*Ð$ˆw˜*Ð$Ð$Ð$Ð$Õ$Ô$Ð$Ð$Ð$Ð$ˆw˜*Ð$Ñ$Ô$Õ$Ô$ˆwÑ$Ô$Ð$Õ$Ô$Ñ$Ô$Ð$Ð$Õ$Ô$˜%Ñ$Ô$Ð$Õ$Ô$˜%Ñ$Ô$Ð$Ð$Õ$Ô$˜*Ñ$Ô$Ð$Ð$Ñ$Ð$Ð$Ð$Ð$Ð$Ñ$Ð$Õ$Õ$Ô$Ð$Ñ$Ô$Ñ$Ô$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ð$rB   c                 óâ  — t          ¦   «         }t          dddd¬¦  «        t          dddd	¬¦  «        g}|                     |¦  «        }d }||u}|s—t          j        d
|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}}|j        }d}||k    }	|	sªt          j        d|	fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }
t          t          j
        |
¦  «        ¦  «        ‚d x}x}	}|j        }d}||k    }	|	sªt          j        d|	fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }
t          t          j
        |
¦  «        ¦  «        ‚d x}x}	}d S )NzDeserted Map (Low Tier)é   rE   rF   r„   zFortress Map (Tier 15)rN   rO   rP   rQ   rS   rT   rU   rW   r   r   )z,%(py2)s
{%(py2)s = %(py0)s.name
} == %(py5)sr   r   r    )z,%(py2)s
{%(py2)s = %(py0)s.tier
} == %(py5)s)r	   r   r_   r)   r*   r+   r,   r-   r.   r/   r0   rH   rI   )r3   r`   ra   rT   rb   r4   rc   r:   r9   r6   r;   s              r@   Útest_tier_15_filteringz2TestMonkCITier15Preferences.test_tier_15_filtering…   sÜ  € Ý&Ñ(Ô(ˆõ Ð4¸2ÈÐX]Ð^Ñ^Ô^ÝÐ3¸"ÀuÐW\Ð]Ñ]Ô]ð
ˆ
ð ×'Ò'¨
Ñ3Ô3ˆØÐˆt˜4ÐÐÐÐÕÔÐÐÐÐˆt˜4ÐÑÔÐÕÔÑÔÐÐÕÔˆtÑÔÐÕÔˆtÑÔÐÐÕÔ˜4ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØŒyÐ4Ð4Ð4ˆyÐ4Ò4Ð4Ð4Ð4Õ4Ô4Ð4Ð4Ð4Ð4ˆyÐ4Ð4Ñ4Ô4Ð4Õ4Ô4Ñ4Ô4Ð4Ð4Õ4Ô4ˆtÑ4Ô4Ð4Õ4Ô4ˆtÑ4Ô4Ð4Ð4Õ4Ô4ˆyÑ4Ô4Õ4Ô4Ð4Ñ4Ô4Ð4Ð4Ñ4Ð4Ð4Ð4Ð4Ð4Ñ4Ð4Õ4Õ4Ô4Ð4Ñ4Ô4Ñ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4Ð4ØŒyÐ˜BÐˆy˜BŠÐÐÐÕÔÐÐÐÐˆy˜BÐÑÔÐÕÔÑÔÐÐÕÔˆtÑÔÐÕÔˆtÑÔÐÐÕÔˆyÑÔÕÔ˜BÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐÐÐrB   N)ro   rp   rq   rr   r’   r•   rs   rB   r@   ru   ru   R   s?   € € € € € ð Eð  Eð.%ð .%ð .%ð`
ð 
ð 
ð 
ð 
rB   ru   c                   ó$   — e Zd ZdZd„ Zd„ Zd„ ZdS )ÚTestAtlasCoreInvariantsuR   Kiá»ƒm thá»­ cÃ¡c báº¥t biáº¿n kiáº¿n trÃºc cÆ¡ sá»Ÿ (INV-ATLAS-01, INV-ATLAS-02).c                 óî  — t          ¦   «         }t          dddd¬¦  «        g}|                     |dd¬¦  «        }|d	         }d
}||u }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}d}|d         }||v }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|                     |dd¬¦  «        }	|	d	         }d
}||u }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}d}|	d         }||v }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|                     |dd¬¦  «        }
|
d	         }d}||u }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}d S )NrM   rN   rE   rF   r„   úShoreline Hideoutr‰   ©Úcandidate_nodesÚ	area_nameÚmonster_countÚsuccessFr   ©z%(py1)s is %(py4)s©r]   r   úassert %(py6)sr   zINV-ATLAS-01ÚerrorrY   ©z%(py1)s in %(py4)srX   r   T©r   r   Úplan_and_executer)   r*   r.   r/   r0   )r3   Úselectorra   Ú
res_dangerrd   r6   rb   r‘   r7   Úres_mapÚres_oks              r@   Ú(test_inv_atlas_01_safe_hideout_executionz@TestAtlasCoreInvariants.test_inv_atlas_01_safe_hideout_execution•   sð  € Ý$Ñ&Ô&ˆå˜>°¸UÈUÐSÑSÔSð
ˆ
ð
 ×.Ò.Ø&Ø)Øð /ñ 
ô 
ˆ
ð
 ˜)Ô$Ð-¨Ð-Ð$¨Ð-Ð-Ð-Ð-Õ-Ô-Ð-Ð-Ð-Ð-Ð$¨Ð-Ñ-Ô-Õ-Ô-Ð$Ñ-Ô-Õ-Ô-¨Ñ-Ô-Ð-Ð-Ñ-Ð-Ð-Ð-Ð-Ð-Ñ-Ð-Õ-Õ-Ô-Ð-Ñ-Ô-Ñ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-ØÐ4 ¨GÔ!4Ð4ˆ~Ð!4Ð4Ð4Ð4Ð4Õ4Ô4Ð4Ð4Ð4Ð4ˆ~Ð!4Ð4Ñ4Ô4Õ4Ô4ˆ~Ñ4Ô4Õ4Ô4Ð!4Ñ4Ô4Ð4Ð4Ñ4Ð4Ð4Ð4Ð4Ð4Ñ4Ð4Õ4Õ4Ô4Ð4Ñ4Ô4Ñ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4Ð4ð ×+Ò+Ø&Ø Øð ,ñ 
ô 
ˆð
 �yÔ!Ð* UÐ*Ð! UÐ*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*Ð! UÐ*Ñ*Ô*Õ*Ô*Ð!Ñ*Ô*Õ*Ô* UÑ*Ô*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*ØÐ1 ¨Ô!1Ð1ˆ~Ð!1Ð1Ð1Ð1Ð1Õ1Ô1Ð1Ð1Ð1Ð1ˆ~Ð!1Ð1Ñ1Ô1Õ1Ô1ˆ~Ñ1Ô1Õ1Ô1Ð!1Ñ1Ô1Ð1Ð1Ñ1Ð1Ð1Ð1Ð1Ð1Ñ1Ð1Õ1Õ1Ô1Ð1Ñ1Ô1Ñ1Ô1Ð1Ð1Ð1Ð1Ð1Ð1Ð1ð ×*Ò*Ø&Ø)Øð +ñ 
ô 
ˆð
 �iÔ Ð( DÐ(Ð  DÐ(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(Ð  DÐ(Ñ(Ô(Õ(Ô(Ð Ñ(Ô(Õ(Ô( DÑ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(rB   c                 óä  — t          ¦   «         }t          dddd¬¦  «        g}|                     |dd¬¦  «        }|d	         }d
}||u }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}d}|d         }||v }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}t          dddd¬¦  «        g}	|                     |	ddd¬¦  «        }
|
d	         }d
}||u }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}d}|
d         }||v }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}d S )NrM   rN   g      Y@g      I@r„   r™   r   rš   rž   Fr   rŸ   r    r¡   r   zINV-ATLAS-02r¢   rY   r£   rƒ   rE   T)r›   rœ   r�   Ú	chat_openr¤   )r3   r¦   Úout_nodeÚres_outrd   r6   rb   r‘   r7   Ú	chat_nodeÚres_chats              r@   Ú(test_inv_atlas_02_viewport_and_occlusionz@TestAtlasCoreInvariants.test_inv_atlas_02_viewport_and_occlusionµ   s3  € Ý$Ñ&Ô&ˆõ  >¸ÀUÐUYÐZÑZÔZÐ[ˆØ×+Ò+¸HÐPcÐstÐ+ÑuÔuˆØ�yÔ!Ð* UÐ*Ð! UÐ*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*Ð! UÐ*Ñ*Ô*Õ*Ô*Ð!Ñ*Ô*Õ*Ô* UÑ*Ô*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*ØÐ1 ¨Ô!1Ð1ˆ~Ð!1Ð1Ð1Ð1Ð1Õ1Ô1Ð1Ð1Ð1Ð1ˆ~Ð!1Ð1Ñ1Ô1Õ1Ô1ˆ~Ñ1Ô1Õ1Ô1Ð!1Ñ1Ô1Ð1Ð1Ñ1Ð1Ð1Ð1Ð1Ð1Ñ1Ð1Õ1Õ1Ô1Ð1Ñ1Ô1Ñ1Ô1Ð1Ð1Ð1Ð1Ð1Ð1Ð1õ  N¸ÀeÐV[Ð\Ñ\Ô\Ð]ˆ	Ø×,Ò,Ø%Ø)ØØð	 -ñ 
ô 
ˆð ˜	Ô"Ð+ eÐ+Ð" eÐ+Ð+Ð+Ð+Õ+Ô+Ð+Ð+Ð+Ð+Ð" eÐ+Ñ+Ô+Õ+Ô+Ð"Ñ+Ô+Õ+Ô+ eÑ+Ô+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+ØÐ2 ¨'Ô!2Ð2ˆ~Ð!2Ð2Ð2Ð2Ð2Õ2Ô2Ð2Ð2Ð2Ð2ˆ~Ð!2Ð2Ñ2Ô2Õ2Ô2ˆ~Ñ2Ô2Õ2Ô2Ð!2Ñ2Ô2Ð2Ð2Ñ2Ð2Ð2Ð2Ð2Ð2Ñ2Ð2Õ2Õ2Ô2Ð2Ñ2Ô2Ñ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2rB   c                 ó¨  — t          ¦   «         }t          dddd¬¦  «        g}t          ddd¬	¦  «        }|                     |d
d|¬¦  «        }|d         }d}||u }|slt	          j        d|fd||f¦  «        t	          j        |¦  «        t	          j        |¦  «        dœz  }dd|iz  }	t          t	          j        |	¦  «        ¦  «        ‚d x}x}}|d         }d}||u }|slt	          j        d|fd||f¦  «        t	          j        |¦  «        t	          j        |¦  «        dœz  }dd|iz  }	t          t	          j        |	¦  «        ¦  «        ‚d x}x}}d S )NrM   rN   rE   rF   r„   g      Ž@g     Àw@r‹   )rJ   rK   Úempty_socketsr™   r   )r›   rœ   r�   Úavailable_towerrž   Tr   rŸ   r    r¡   r   Útower_socketed)	r   r   r   r¥   r)   r*   r.   r/   r0   )
r3   r¦   ra   ÚtowerÚresrd   r6   rb   r‘   r7   s
             r@   Útest_precursor_tower_socketingz6TestAtlasCoreInvariants.test_precursor_tower_socketingÉ   s¸  € Ý$Ñ&Ô&ˆÝ ^¸"ÀuÐW\Ð]Ñ]Ô]Ð^ˆ
Ý¨¸ÈQÐOÑOÔOˆà×'Ò'Ø&Ø)ØØ!ð	 (ñ 
ô 
ˆð �9Œ~Ð% Ð%ˆ~ Ð%Ð%Ð%Ð%Õ%Ô%Ð%Ð%Ð%Ð%ˆ~ Ð%Ñ%Ô%Õ%Ô%ˆ~Ñ%Ô%Õ%Ô% Ñ%Ô%Ð%Ð%Ñ%Ð%Ð%Ð%Ð%Ð%Ñ%Ð%Õ%Õ%Ô%Ð%Ñ%Ô%Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Ð%Ð%ØÐ#Ô$Ð,¨Ð,Ð$¨Ð,Ð,Ð,Ð,Õ,Ô,Ð,Ð,Ð,Ð,Ð$¨Ð,Ñ,Ô,Õ,Ô,Ð$Ñ,Ô,Õ,Ô,¨Ñ,Ô,Ð,Ð,Ñ,Ð,Ð,Ð,Ð,Ð,Ñ,Ð,Õ,Õ,Ô,Ð,Ñ,Ô,Ñ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,rB   N)ro   rp   rq   rr   rª   r±   r¸   rs   rB   r@   r—   r—   ’   sH   € € € € € Ø\Ð\ð)ð )ð )ð@3ð 3ð 3ð(-ð -ð -ð -ð -rB   r—   )rr   Úbuiltinsr+   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter)   ÚpytestÚ'src.assistant_tool.atlas_knowledge_baser   r   r   Ú&src.assistant_tool.atlas_node_selectorr   r   r   r	   r
   r   r   r   r   r   ru   r—   rs   rB   r@   ú<module>rÀ      sb  ðð	ð 	ð € € € € € € € € € € € € €€€€ðð ð ð ð ð ð ð ð ð ð

ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð03ð 03ð 03ð 03ð 03ñ 03ô 03ð 03ðf=ð =ð =ð =ð =ñ =ô =ð =ð@C-ð C-ð C-ð C-ð C-ñ C-ô C-ð C-ð C-ð C-rB   