§
    WI¾jE'  ã                   ó˜   — d Z ddlZddlmc mZ ddlmZ ddl	Z	ddl
Z
ddlmZ ddlmZ e
j        defd„¦   «         Z G d„ d	¦  «        ZdS )
aT  
Adversarial and empirical verification suite for Milestone 1 (R1: Wilderness Map Expansion).

Directly challenges and stress-tests:
1. Extreme coordinates in zone_tang_kiem_nhai (x=999.0 valid, x=1001.0 rejected).
2. Boundary expansion transition (old edge x=500.0 vs new valid coordinate x=800.0).
3. Sanctuary zone bounds rejection (x=401.0 rejected in zone_player_hideout, half-width 400.0).
4. JS camera bounds in ZONE_BOUNDS (minCamWx < maxCamWx, minCamWy < maxCamWy for all zones).
5. All 9 wilderness zones upper/lower boundary stress.
6. Non-finite coordinate handling (inf, -inf, nan).
é    N)ÚPath©Ú
ZoneEngine)ÚZoneTypeÚreturnc                  ó   — t          ¦   «         S )Nr   © ó    ú@C:\Projects\FreeExile\tests\unit\test_adversarial_zone_bounds.pyÚzone_enginer      s   € å‰<Œ<Ðr
   c                   ó´   — e Zd ZdZdeddfd„Zdeddfd„Zdeddfd„Zdd„Ze	j
                             d	g d
¢¦  «        ded	eddfd„¦   «         Zdeddfd„ZdS )ÚTestAdversarialZoneBoundszJEmpirical challenges against zone bounds expansion and safety constraints.r   r   Nc           	      óª  — d}|                      |d¦  «         |                     |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  }t          j        d
|› �¦  «        dz   d|iz  }t          t          j
        |¦  «        ¦  «        ‚dx}}d}||k    }|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        } ||¦  «        }	|	j        }
d}|
|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        |¦  «        rt          j        |¦  «        ndt          j        |	¦  «        t          j        |
¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚dx}x}	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  }t          j        d|› �¦  «        dz   d|iz  }t          t          j
        |¦  «        ¦  «        ‚d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  }t          j        d¦  «        dz   d|iz  }t          t          j
        |¦  «        ¦  «        ‚dx}}d }||v }|s—t          j        d!|fd"||f¦  «        t          j        |¦  «        d#t	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd#d$œz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d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'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 }||v }|s—t          j        d!|fd"||f¦  «        t          j        |¦  «        d)t	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd)d$œz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d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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 }||v }|s—t          j        d!|fd"||f¦  «        t          j        |¦  «        d,t	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd,d$œz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚dx}}dS )-zº
        Challenge 1: Extreme coordinates in zone_tang_kiem_nhai.
        Half-width is 1000.0 (bounds 2000.0 x 2000.0).
        x=999.0 must succeed; x=1001.0 must be rejected.
        Úadv_player_tang_kiemÚzone_tang_kiem_nhaig     8�@ç        T©Úis©z%(py0)s is %(py3)sÚok_999©Úpy0Úpy3z*Expected x=999.0 to succeed, failed with: ú
>assert %(py5)sÚpy5NÚ ©ú==©z%(py0)s == %(py3)sÚerr_999úassert %(py5)s)zq%(py7)s
{%(py7)s = %(py5)s
{%(py5)s = %(py2)s
{%(py2)s = %(py0)s.get_player_location
}(%(py3)s)
}.x
} == %(py10)sr   Ú	player_id)r   Úpy2r   r   Úpy7Úpy10zassert %(py12)sÚpy12g     @�@Úok_1000z5Expected exact boundary x=1000.0 to succeed, failed: g     H�@FÚok_1001z0Expected x=1001.0 to be rejected, but succeeded!õ$   VÆ°á»£t quÃ¡ ranh giá»›i báº£n Ä‘á»“©Úin©z%(py1)s in %(py3)sÚerr_1001©Úpy1r   g     8�ÀÚ
ok_neg_999g     H�ÀÚok_neg_1001Úerr_neg_1001Úok_y_999Ú	ok_y_1001Ú
err_y_1001)Úspawn_playerÚupdate_player_positionÚ
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚ_format_assertmsgÚAssertionErrorÚ_format_explanationÚget_player_locationÚx)Úselfr   r"   r   r    Ú@py_assert2Ú@py_assert1Ú@py_format4Ú@py_format6Ú@py_assert4Ú@py_assert6Ú@py_assert9Ú@py_assert8Ú@py_format11Ú@py_format13r'   Úerr_1000r(   r-   Ú@py_assert0r0   Ú_r1   r2   r3   r4   r5   s                              r   Ú'test_extreme_coordinates_tang_kiem_nhaizATestAdversarialZoneBounds.test_extreme_coordinates_tang_kiem_nhai   sø
  € ð +ˆ	Ø× Ò  Ð,AÑBÔBÐBð &×<Ò<¸YÈÈsÑSÔS‰ˆ�ØÐUˆv˜ˆ~ÐUÐUÐUÕUÔUÐUÐUÐUÐUˆv˜ÐUÑUÔUÐUÕUÔUÑUÔUÐUÐUÕUÔUˆvÑUÔUÐUÕUÔUˆvÑUÔUÐUÐUÕUÔU˜ÑUÔUÐUÐUÑUÐUÕUÔUÐUÈGÐUÐUÑUÔUÐUÑUÐUÐUÐUÑUÐUÕUÕUÔUÐUÑUÔUÑUÔUÐUÐUÐUÐUÐUØÐˆw˜"Š}ÐÐÐÕÔÐÐÐÐˆw˜"ÐÑÔÐÕÔÑÔÐÐÕÔˆwÑÔÐÕÔˆwÑÔÐÐÕÔ˜"ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØÔ.ÐDÐ.Ð.¨yÑ9Ô9ÐDÐ9Ô;ÐD¸uÐDÐ;¸uÒDÐDÐDÑDÕDÔDÐDÐDÐDÐDÐ;¸uÐDÑDÔDÐDÕDÔDÑDÔDÐDÐDÕDÔDˆ{ÑDÔDÐDÕDÔDˆ{ÑDÔDÐDÐDÕDÔDÐ.ÑDÔDÐDÕDÔDÑDÔDÐDÐDÕDÔD¨yÑDÔDÐDÕDÔD¨yÑDÔDÐDÐDÕDÔDÐ9ÑDÔDÕDÔDÐ;ÑDÔDÕDÔD¸uÑDÔDÐDÐDÑDÐDÐDÐDÐDÐDÑDÐDÕDÕDÔDÐDÑDÔDÑDÔDÐDÐDÐDÐDÐDÐDÐDÐDÐDÐDÐDð (×>Ò>¸yÈ&ÐRUÑVÔVÑˆ�ØÐbˆw˜$ˆÐbÐbÐbÕbÔbÐbÐbÐbÐbˆw˜$ÐbÑbÔbÐbÕbÔbÑbÔbÐbÐbÕbÔbˆwÑbÔbÐbÕbÔbˆwÑbÔbÐbÐbÕbÔb˜$ÑbÔbÐbÐbÑbÐbÕbÔbÐ bÐX`Ð bÐ bÑbÔbÐbÑbÐbÐbÐbÑbÐbÕbÕbÔbÐbÑbÔbÑbÔbÐbÐbÐbÐbÐbð (×>Ò>¸yÈ&ÐRUÑVÔVÑˆ�ØÐSˆw˜%ÐÐSÐSÐSÕSÔSÐSÐSÐSÐSˆw˜%ÐSÑSÔSÐSÕSÔSÑSÔSÐSÐSÕSÔSˆwÑSÔSÐSÕSÔSˆwÑSÔSÐSÐSÕSÔS˜%ÑSÔSÐSÐSÑSÐSÕSÔSÐ!SÑSÔSÐSÑSÐSÐSÐSÑSÐSÕSÕSÔSÐSÑSÔSÑSÔSÐSÐSÐSÐSÐSØ5ÐAÐ5¸ÐAÐAÐAÐAÕAÔAÐAÐAÐAÐAÐ5¸ÐAÑAÔAÕAÔAÐ5ÑAÔAÐAÕAÔAÑAÔAÐAÐAÕAÔA¸ÑAÔAÐAÕAÔA¸ÑAÔAÐAÐAÐAÐAÑAÐAÐAÐAÐAÐAÑAÐAÕAÕAÔAÐAÑAÔAÑAÔAÐAÐAÐAÐAÐAð $×:Ò:¸9ÀfÈcÑRÔR‰ˆ
�AØ!Ð!ˆz˜TÐ!Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!ˆz˜TÐ!Ñ!Ô!Ð!Õ!Ô!Ñ!Ô!Ð!Ð!Õ!Ô!ˆzÑ!Ô!Ð!Õ!Ô!ˆzÑ!Ô!Ð!Ð!Õ!Ô!˜TÑ!Ô!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!à$/×$FÒ$FÀyÐRYÐ[^Ñ$_Ô$_Ñ!ˆ�\Ø#Ð#ˆ{˜eÐ#Ð#Ð#Ð#Õ#Ô#Ð#Ð#Ð#Ð#ˆ{˜eÐ#Ñ#Ô#Ð#Õ#Ô#Ñ#Ô#Ð#Ð#Õ#Ô#ˆ{Ñ#Ô#Ð#Õ#Ô#ˆ{Ñ#Ô#Ð#Ð#Õ#Ô#˜eÑ#Ô#Ð#Ð#Ñ#Ð#Ð#Ð#Ð#Ð#Ñ#Ð#Õ#Õ#Ô#Ð#Ñ#Ô#Ñ#Ô#Ð#Ð#Ð#Ð#Ð#Ø5ÐEÐ5¸ÐEÐEÐEÐEÕEÔEÐEÐEÐEÐEÐ5¸ÐEÑEÔEÕEÔEÐ5Ñ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ð "×8Ò8¸ÀCÈÑOÔO‰ˆ�!ØÐˆx˜4ÐÐÐÐÕÔÐÐÐÐˆx˜4ÐÑÔÐÕÔÑÔÐÐÕÔˆxÑÔÐÕÔˆxÑÔÐÐÕÔ˜4ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐà +× BÒ BÀ9ÈcÐSYÑ ZÔ ZÑˆ	�:Ø!Ð!ˆy˜EÐ!Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!ˆy˜EÐ!Ñ!Ô!Ð!Õ!Ô!Ñ!Ô!Ð!Ð!Õ!Ô!ˆyÑ!Ô!Ð!Õ!Ô!ˆyÑ!Ô!Ð!Ð!Õ!Ô!˜EÑ!Ô!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!Ø5ÐCÐ5¸ÐCÐCÐCÐCÕCÔCÐCÐCÐCÐCÐ5¸ÐCÑCÔCÕCÔCÐ5Ñ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ÐCÐCr
   c                 ó²  — d}|                      |d¦  «         |                     |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}||k    }|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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  }t          j
        d|
› �¦  «        dz   d
|iz  }t          t          j	        |¦  «        ¦  «        ‚dx}}d}|
|k    }|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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}||k    }|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S )zŠ
        Challenge 2: Verify old boundary x=500.0 was previously the edge,
        but now x=800.0 is valid and freely navigable.
        Úadv_player_expansionr   g     @@Tr   r   Úok_500r   r!   r   Nr   r   r   Úerr_500g      ‰@Úok_800zx=800.0 failed: r   Úerr_800g      ‰ÀÚ
ok_neg_800Úerr_neg_800)r6   r7   r8   r9   r:   r;   r<   r=   r?   r@   r>   )rC   r   r"   rT   rU   rD   rE   rF   rG   rV   rW   rX   rY   s                r   Ú*test_old_boundary_vs_new_expanded_boundaryzDTestAdversarialZoneBounds.test_old_boundary_vs_new_expanded_boundaryE   s"  € ð
 +ˆ	Ø× Ò  Ð,AÑBÔBÐBð &×<Ò<¸YÈÈuÑUÔU‰ˆ�ØÐˆv˜ˆ~ÐÐÐÕÔÐÐÐÐˆv˜ÐÑÔÐÕÔÑÔÐÐÕÔˆvÑÔÐÕÔˆvÑÔÐÐÕÔ˜ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØÐˆw˜"Š}ÐÐÐÕÔÐÐÐÐˆw˜"ÐÑÔÐÕÔÑÔÐÐÕÔˆwÑÔÐÕÔˆwÑÔÐÐÕÔ˜"ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐð &×<Ò<¸YÈÈuÑUÔU‰ˆ�ØÐ;ˆv˜ˆ~Ð;Ð;Ð;Õ;Ô;Ð;Ð;Ð;Ð;ˆv˜Ð;Ñ;Ô;Ð;Õ;Ô;Ñ;Ô;Ð;Ð;Õ;Ô;ˆvÑ;Ô;Ð;Õ;Ô;ˆvÑ;Ô;Ð;Ð;Õ;Ô;˜Ñ;Ô;Ð;Ð;Ñ;Ð;Õ;Ô;Ð;°'Ð;Ð;Ñ;Ô;Ð;Ñ;Ð;Ð;Ð;Ñ;Ð;Õ;Õ;Ô;Ð;Ñ;Ô;Ñ;Ô;Ð;Ð;Ð;Ð;Ð;ØÐˆw˜"Š}ÐÐÐÕÔÐÐÐÐˆw˜"ÐÑÔÐÕÔÑÔÐÐÕÔˆwÑÔÐÕÔˆwÑÔÐÐÕÔ˜"ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐð #.×"DÒ"DÀYÐPVÐX^Ñ"_Ô"_Ñˆ
�KØ!Ð!ˆz˜TÐ!Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!ˆz˜TÐ!Ñ!Ô!Ð!Õ!Ô!Ñ!Ô!Ð!Ð!Õ!Ô!ˆzÑ!Ô!Ð!Õ!Ô!ˆzÑ!Ô!Ð!Ð!Õ!Ô!˜TÑ!Ô!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!Ø Ð ˆ{˜bÒ Ð Ð Ð Õ Ô Ð Ð Ð Ð ˆ{˜bÐ Ñ Ô Ð Õ Ô Ñ Ô Ð Ð Õ Ô ˆ{Ñ Ô Ð Õ Ô ˆ{Ñ Ô Ð Ð Õ Ô ˜bÑ Ô Ð Ð Ñ Ð Ð Ð Ð Ð Ñ Ð Õ Õ Ô Ð Ñ Ô Ñ Ô Ð Ð Ð Ð Ð Ð Ð r
   c                 óz
  — d}|                      |d¦  «         |                     |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  }t          j        d
|› �¦  «        dz   d|iz  }t          t          j
        |¦  «        ¦  «        ‚d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  }t          j        d¦  «        dz   d|iz  }t          t          j
        |¦  «        ¦  «        ‚dx}}d}||
v }|s—t          j        d|fd||
f¦  «        t          j        |¦  «        dt	          j        ¦   «         v st          j        |
¦  «        rt          j        |
¦  «        nddœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d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}||v }|s—t          j        d|fd||f¦  «        t          j        |¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚dx}}d}|                      |d¦  «         |                     |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}||v }|s—t          j        d|fd||f¦  «        t          j        |¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚dx}}dS )z¡
        Challenge 3: Test sanctuary zone bounds rejection: player moving to
        x=401.0 in zone_player_hideout must be rejected (half-width 400.0).
        Úadv_player_hideoutÚzone_player_hideoutg      y@r   Tr   r   Úok_400r   zx=400.0 failed: r   r   Ng     y@FÚok_401z:Expected x=401.0 in hideout to be rejected, but it passed!r)   r*   r,   Úerr_401r.   r!   Úok_y_401Ú	err_y_401Úadv_player_sanctuaryÚzone_boundless_sanctuaryÚok_sanc_401Úerr_sanc_401)r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   )rC   r   r"   r^   Úerr_400rD   rE   rF   rG   r_   r`   rO   ra   rb   Úp2re   rf   s                    r   Ú$test_sanctuary_zone_bounds_rejectionz>TestAdversarialZoneBounds.test_sanctuary_zone_bounds_rejection\   s;  € ð
 )ˆ	Ø× Ò  Ð,AÑBÔBÐBð &×<Ò<¸YÈÈsÑSÔS‰ˆ�ØÐ;ˆv˜ˆ~Ð;Ð;Ð;Õ;Ô;Ð;Ð;Ð;Ð;ˆv˜Ð;Ñ;Ô;Ð;Õ;Ô;Ñ;Ô;Ð;Ð;Õ;Ô;ˆvÑ;Ô;Ð;Õ;Ô;ˆvÑ;Ô;Ð;Ð;Õ;Ô;˜Ñ;Ô;Ð;Ð;Ñ;Ð;Õ;Ô;Ð;°'Ð;Ð;Ñ;Ô;Ð;Ñ;Ð;Ð;Ð;Ñ;Ð;Õ;Õ;Ô;Ð;Ñ;Ô;Ñ;Ô;Ð;Ð;Ð;Ð;Ð;ð &×<Ò<¸YÈÈsÑSÔS‰ˆ�ØÐ\ˆv˜ˆÐ\Ð\Ð\Õ\Ô\Ð\Ð\Ð\Ð\ˆv˜Ð\Ñ\Ô\Ð\Õ\Ô\Ñ\Ô\Ð\Ð\Õ\Ô\ˆvÑ\Ô\Ð\Õ\Ô\ˆvÑ\Ô\Ð\Ð\Õ\Ô\˜Ñ\Ô\Ð\Ð\Ñ\Ð\Õ\Ô\Ð \Ñ\Ô\Ð\Ñ\Ð\Ð\Ð\Ñ\Ð\Õ\Õ\Ô\Ð\Ñ\Ô\Ñ\Ô\Ð\Ð\Ð\Ð\Ð\Ø5Ð@Ð5¸Ð@Ð@Ð@Ð@Õ@Ô@Ð@Ð@Ð@Ð@Ð5¸Ð@Ñ@Ô@Õ@Ô@Ð5Ñ@Ô@Ð@Õ@Ô@Ñ@Ô@Ð@Ð@Õ@Ô@¸Ñ@Ô@Ð@Õ@Ô@¸Ñ@Ô@Ð@Ð@Ð@Ð@Ñ@Ð@Ð@Ð@Ð@Ð@Ñ@Ð@Õ@Õ@Ô@Ð@Ñ@Ô@Ñ@Ô@Ð@Ð@Ð@Ð@Ð@ð *×@Ò@ÀÈCÐQVÑWÔWÑˆ�)Ø Ð ˆx˜5Ð Ð Ð Ð Õ Ô Ð Ð Ð Ð ˆx˜5Ð Ñ Ô Ð Õ Ô Ñ Ô Ð Ð Õ Ô ˆxÑ Ô Ð Õ Ô ˆxÑ Ô Ð Ð Õ Ô ˜5Ñ Ô Ð Ð Ñ Ð Ð Ð Ð Ð Ñ Ð Õ Õ Ô Ð Ñ Ô Ñ Ô Ð Ð Ð Ð Ð Ø5ÐBÐ5¸ÐBÐBÐBÐBÕBÔBÐBÐBÐBÐBÐ5¸ÐBÑBÔBÕBÔBÐ5ÑBÔBÐBÕBÔBÑBÔBÐBÐBÕBÔB¸ÑBÔBÐBÕBÔB¸ÑBÔBÐBÐBÐBÐBÑBÐBÐBÐBÐBÐBÑBÐBÕBÕBÔBÐBÑBÔBÑBÔBÐBÐBÐBÐBÐBð $ˆØ× Ò  Ð%?Ñ@Ô@Ð@Ø$/×$FÒ$FÀrÈ5ÐRUÑ$VÔ$VÑ!ˆ�\Ø#Ð#ˆ{˜eÐ#Ð#Ð#Ð#Õ#Ô#Ð#Ð#Ð#Ð#ˆ{˜eÐ#Ñ#Ô#Ð#Õ#Ô#Ñ#Ô#Ð#Ð#Õ#Ô#ˆ{Ñ#Ô#Ð#Õ#Ô#ˆ{Ñ#Ô#Ð#Ð#Õ#Ô#˜eÑ#Ô#Ð#Ð#Ñ#Ð#Ð#Ð#Ð#Ð#Ñ#Ð#Õ#Õ#Ô#Ð#Ñ#Ô#Ñ#Ô#Ð#Ð#Ð#Ð#Ð#Ø5ÐEÐ5¸ÐEÐEÐEÐEÕEÔEÐEÐEÐEÐEÐ5¸ÐEÑEÔEÕEÔEÐ5Ñ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ÐEr
   c           
      óZ  — t          d¦  «        }|j        } |¦   «         }|s‹ddt          j        ¦   «         v st	          j        |¦  «        rt	          j        |¦  «        ndt	          j        |¦  «        t	          j        |¦  «        dœz  }t          t	          j        |¦  «        ¦  «        ‚dx}}| 	                    d¬¦  «        }t          j        d¦  «        }|                     |¦  «        }t          |¦  «        }d	}	||	k    }
|
�st	          j        d
|
fd||	f¦  «        dt          j        ¦   «         v st	          j        t          ¦  «        rt	          j        t          ¦  «        nddt          j        ¦   «         v st	          j        |¦  «        rt	          j        |¦  «        ndt	          j        |¦  «        t	          j        |	¦  «        dœz  }t	          j        dt          |¦  «        › �¦  «        dz   d|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}
}	|D �]ÿ}|d         }t!          |d         ¦  «        }t!          |d         ¦  «        }t!          |d         ¦  «        }t!          |d         ¦  «        }t!          |d         ¦  «        }t!          |d         ¦  «        }t!          |d         ¦  «        }t!          |d         ¦  «        }||k     }|sát	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j        |¦  «        nddt          j        ¦   «         v st	          j        |¦  «        rt	          j        |¦  «        nddœz  }t	          j        d |› d!|› d"|› d#�¦  «        d$z   d%|iz  }t          t	          j        |¦  «        ¦  «        ‚d}||k     }|sát	          j        d|fd||f¦  «        d&t          j        ¦   «         v st	          j        |¦  «        rt	          j        |¦  «        nd&d't          j        ¦   «         v st	          j        |¦  «        rt	          j        |¦  «        nd'dœz  }t	          j        d |› d(|› d)|› d#�¦  «        d$z   d%|iz  }t          t	          j        |¦  «        ¦  «        ‚d}||k     }|sÛt	          j        d|fd||f¦  «        d*t          j        ¦   «         v st	          j        |¦  «        rt	          j        |¦  «        nd*d+t          j        ¦   «         v st	          j        |¦  «        rt	          j        |¦  «        nd+dœz  }t	          j        d |› d,�¦  «        d$z   d%|iz  }t          t	          j        |¦  «        ¦  «        ‚d}||k     }|sÛt	          j        d|fd||f¦  «        d-t          j        ¦   «         v st	          j        |¦  «        rt	          j        |¦  «        nd-d.t          j        ¦   «         v st	          j        |¦  «        rt	          j        |¦  «        nd.dœz  }t	          j        d |› d/�¦  «        d$z   d%|iz  }t          t	          j        |¦  «        ¦  «        ‚d}||k    }|sát	          j        d0|fd1||f¦  «        d*t          j        ¦   «         v st	          j        |¦  «        rt	          j        |¦  «        nd*dt          j        ¦   «         v st	          j        |¦  «        rt	          j        |¦  «        nddœz  }t	          j        d |› d2|› d3|› d#�¦  «        d$z   d%|iz  }t          t	          j        |¦  «        ¦  «        ‚d}||k    }|sát	          j        d0|fd1||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j        |¦  «        ndd+t          j        ¦   «         v st	          j        |¦  «        rt	          j        |¦  «        nd+dœz  }t	          j        d |› d4|› d5|› d#�¦  «        d$z   d%|iz  }t          t	          j        |¦  «        ¦  «        ‚d}||k    }|sát	          j        d0|fd1||f¦  «        d-t          j        ¦   «         v st	          j        |¦  «        rt	          j        |¦  «        nd-d&t          j        ¦   «         v st	          j        |¦  «        rt	          j        |¦  «        nd&dœz  }t	          j        d |› d6|› d7|› d#�¦  «        d$z   d%|iz  }t          t	          j        |¦  «        ¦  «        ‚d}||k    }|sát	          j        d0|fd1||f¦  «        d't          j        ¦   «         v st	          j        |¦  «        rt	          j        |¦  «        nd'd.t          j        ¦   «         v st	          j        |¦  «        rt	          j        |¦  «        nd.dœz  }t	          j        d |› d8|› d9|› d#�¦  «        d$z   d%|iz  }t          t	          j        |¦  «        ¦  «        ‚d}�ŒdS ):zÌ
        Challenge 4: Test camera bounds in JS: ensure minCamWx < maxCamWx
        and minCamWy < maxCamWy for all zones in ZONE_BOUNDS.
        Also check minWx <= minCamWx <= maxCamWx <= maxWx.
        z+client/webapp/js/engine/collision_engine.jszAassert %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.exists
}()
}Úcollision_file)r   r#   Úpy4Nzutf-8)ÚencodingzÈ(\w+):\s*\{[^}]*minWx:\s*([-\d.]+),\s*maxWx:\s*([-\d.]+),\s*minWy:\s*([-\d.]+),\s*maxWy:\s*([-\d.]+),\s*minCamWx:\s*([-\d.]+),\s*maxCamWx:\s*([-\d.]+),\s*minCamWy:\s*([-\d.]+),\s*maxCamWy:\s*([-\d.]+)é   )ú>=)z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} >= %(py6)sÚlenÚmatches)r   r/   r   Úpy6z)Expected at least 11 zone entries, found z
>assert %(py8)sÚpy8r   é   é   é   é   é   é   é   é   )ú<)z%(py0)s < %(py2)sÚ
min_cam_wxÚ
max_cam_wx)r   r#   zZone z: minCamWx (z) >= maxCamWx (ú)z
>assert %(py4)srl   Ú
min_cam_wyÚ
max_cam_wyz: minCamWy (z) >= maxCamWy (Úmin_wxÚmax_wxz: minWx >= maxWxÚmin_wyÚmax_wyz: minWy >= maxWy)ú<=)z%(py0)s <= %(py2)sz	: minWx (z) > minCamWx (z: maxCamWx (z) > maxWx (z	: minWy (z) > minCamWy (z: maxCamWy (z) > maxWy ()r   Úexistsr:   r;   r8   r<   r=   r?   r@   Ú	read_textÚreÚcompileÚfindallrp   r9   r>   Úfloat)rC   rk   rE   Ú@py_assert3Ú@py_format5ÚcontentÚzone_patternrq   rD   Ú@py_assert5rH   Ú@py_format7Ú@py_format9ÚmatchÚzone_idr‚   rƒ   r„   r…   r}   r~   r€   r�   Ú@py_format3s                           r   Ú$test_camera_bounds_in_js_zone_boundsz>TestAdversarialZoneBounds.test_camera_bounds_in_js_zone_boundsy   s‘  € õ ÐKÑLÔLˆØÔ$Ð&Ð$Ð$Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&ˆ~Ñ&Ô&Ð&Õ&Ô&ˆ~Ñ&Ô&Ð&Ð&Õ&Ô&Ð$Ñ&Ô&Õ&Ô&Ð&Ñ&Ô&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ø ×*Ò*°GÐ*Ñ<Ô<ˆõ ”zð>ñ
ô 
ˆð ×&Ò& wÑ/Ô/ˆÝ�7‰|Œ|Ð]˜rÐ]ˆ|˜rÒ!Ð]Ð]Ñ]Õ]Ô]Ð]Ð]Ð]Ð]ˆ|˜rÐ]Ñ]Ô]Ð]Õ]Ô]Ñ]Ô]Ð]Ð]Õ]Ô]�sÑ]Ô]Ð]Õ]Ô]�sÑ]Ô]Ð]Ð]Ð]Õ]Ô]Ñ]Ô]Ð]Ð]Õ]Ô]�7Ñ]Ô]Ð]Õ]Ô]�7Ñ]Ô]Ð]Ð]Õ]Ô]ˆ|Ñ]Ô]Õ]Ô]˜rÑ]Ô]Ð]Ð]Ñ]Ð]Õ]Ô]Ð#]ÍsÐSZÉ|Ì|Ð#]Ð#]Ñ]Ô]Ð]Ñ]Ð]Ð]Ð]Ñ]Ð]Õ]Õ]Ô]Ð]Ñ]Ô]Ñ]Ô]Ð]Ð]Ð]Ð]Ð]Ð]Ð]àð #	ñ #	ˆEØ˜A”hˆGÝ˜5 œ8‘_”_ˆFÝ˜5 œ8‘_”_ˆFÝ˜5 œ8‘_”_ˆFÝ˜5 œ8‘_”_ˆFÝ˜u Qœx™œˆJÝ˜u Qœx™œˆJÝ˜u Qœx™œˆJÝ˜u Qœx™œˆJð  
Ò*ð ð ð õ ìðð ð ð �: 
ð ñ ô ð õ äñô ð ð õ ìð ñ ô ð õ äð ñ ô ð ð ð õ äñô ð ð õ ìð !+ñ ô ð õ äð !+ñ ô ð ð ð ð ñ ð õ ìð V˜ÐUÐU¨ZÐUÐUÈ
ÐUÐUÐUñô ð ñ ð ð ð ñ ð õ õ ìðñ ô ñ ô ð ð ð ð  
Ò*ð ð ð õ ìðð ð ð �: 
ð ñ ô ð õ äñô ð ð õ ìð ñ ô ð õ äð ñ ô ð ð ð õ äñô ð ð õ ìð !+ñ ô ð õ äð !+ñ ô ð ð ð ð ñ ð õ ìð V˜ÐUÐU¨ZÐUÐUÈ
ÐUÐUÐUñô ð ñ ð ð ð ñ ð õ õ ìðñ ô ñ ô ð ð ð ð
 ˜F’?ÐEÐEÐEÕEÔEÐEÐEÐEÐE�6˜FÐEÑEÔEÐEÕEÔEÑEÔEÐEÐEÕEÔE�6ÑEÔEÐEÕEÔE�6ÑEÔEÐEÐEÐEÕEÔEÑEÔEÐEÐEÕEÔE˜FÑEÔEÐEÕEÔE˜FÑEÔEÐEÐEÐEÐEÑEÐEÕEÔEÐ$E¨GÐ$EÐ$EÐ$EÑEÔEÐEÑEÐEÐEÐEÑEÐEÕEÕEÔEÐEÑEÔEÑEÔEÐEÐEÐEØ˜F’?ÐEÐEÐEÕEÔEÐEÐEÐEÐE�6˜FÐEÑEÔEÐEÕEÔEÑEÔEÐEÐEÕEÔE�6ÑEÔEÐEÕEÔE�6ÑEÔEÐEÐEÐEÕEÔEÑEÔEÐEÐEÕEÔE˜FÑEÔEÐEÕEÔE˜FÑEÔEÐEÐEÐEÐEÑEÐEÕEÔEÐ$E¨GÐ$EÐ$EÐ$EÑEÔEÐEÑEÐEÐEÐEÑEÐEÕEÕEÔEÐEÑEÔEÑEÔEÐEÐEÐEð ˜ZÒ'ð ð ð õ ìðð ð ð �6˜Zð ñ ô ð õ äñô ð ð õ ìð ñ ô ð õ äð ñ ô ð ð ð õ äñô ð ð õ ìð (ñ ô ð õ äð (ñ ô ð ð ð ð ñ ð õ ìð N˜ÐMÐM¨&ÐMÐMÀ
ÐMÐMÐMñô ð ñ ð ð ð ñ ð õ õ ìðñ ô ñ ô ð ð ð ð  Ò'ð ð ð õ ìðð ð ð �: ð ñ ô ð õ äñô ð ð õ ìð ñ ô ð õ äð ñ ô ð ð ð õ äñô ð ð õ ìð "(ñ ô ð õ äð "(ñ ô ð ð ð ð ñ ð õ ìð N˜ÐMÐM¨ZÐMÐMÀFÐMÐMÐMñô ð ñ ð ð ð ñ ð õ õ ìðñ ô ñ ô ð ð ð ð ˜ZÒ'ð ð ð õ ìðð ð ð �6˜Zð ñ ô ð õ äñô ð ð õ ìð ñ ô ð õ äð ñ ô ð ð ð õ äñô ð ð õ ìð (ñ ô ð õ äð (ñ ô ð ð ð ð ñ ð õ ìð N˜ÐMÐM¨&ÐMÐMÀ
ÐMÐMÐMñô ð ñ ð ð ð ñ ð õ õ ìðñ ô ñ ô ð ð ð ð  Ò'ð ð ð õ ìðð ð ð �: ð ñ ô ð õ äñô ð ð õ ìð ñ ô ð õ äð ñ ô ð ð ð õ äñô ð ð õ ìð "(ñ ô ð õ äð "(ñ ô ð ð ð ð ñ ð õ ìð N˜ÐMÐM¨ZÐMÐMÀFÐMÐMÐMñô ð ñ ð ð ð ñ ð õ õ ìðñ ô ñ ô ð ð ð ñ ðC#	ð #	r
   r•   )	r   Úzone_ancient_sword_barrowÚzone_boundless_sandstormÚzone_blood_scale_ruinsÚzone_five_elements_altarÚzone_abyssal_ice_pondÚzone_infinite_blood_riftÚzone_purgatory_lava_cavernÚzone_boundless_celestial_palacec           
      óÒ  — |                      |¦  «        }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	        }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z  }|j        dz  }d|› �}|                     ||¦  «         |                     ||dz
  |dz
  ¦  «        \  }}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  }t          j        d|dz
  › d|dz
  › d|› d|› �¦  «        dz   d|iz  }t          t          j        |¦  «        ¦  «        ‚dx}}|                     ||dz   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  }t          j        d|dz   › d|› �¦  «        dz   d|iz  }t          t          j        |¦  «        ¦  «        ‚dx}}d}||v }|s—t          j        d |fd!||f¦  «        t          j        |¦  «        d"t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd"d#œz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}}|                     |d|dz   ¦  «        \  }}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  }t          j        d%|dz   › d|› �¦  «        dz   d|iz  }t          t          j        |¦  «        ¦  «        ‚dx}}d}||v }|s—t          j        d |fd!||f¦  «        t          j        |¦  «        d&t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd&d#œz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}}dS )'z9Adversarial boundary check across all 9 wilderness zones.N)úis not)z%(py0)s is not %(py3)sÚzoner   r!   r   r   )zQ%(py2)s
{%(py2)s = %(py0)s.zone_type
} == %(py6)s
{%(py6)s = %(py4)s.OPEN_WORLD
}r   )r   r#   rl   rr   zassert %(py8)srs   g       @Úadv_stress_g      ð?Tr   r   Úok_inzFailed at (z, z) in z: r   r   FÚok_out_xzUnexpectedly allowed x=z in r)   r*   r,   Ú	err_out_xr.   Úok_out_yzUnexpectedly allowed y=Ú	err_out_y)Úget_zoner8   r9   r:   r;   r<   r=   r?   r@   Ú	zone_typer   Ú
OPEN_WORLDÚbounds_widthÚbounds_heightr6   r7   r>   )rC   r   r•   r¢   rD   rE   rF   rG   r‘   r�   r’   r“   Úhalf_wÚhalf_hÚpidr¤   Úerr_inr¥   r¦   rO   r§   r¨   s                         r   Ú)test_all_wilderness_zones_boundary_limitszCTestAdversarialZoneBounds.test_all_wilderness_zones_boundary_limits²   sû  € ð$ ×#Ò# GÑ,Ô,ˆØÐˆt˜4ÐÐÐÐÕÔÐÐÐÐˆt˜4ÐÑÔÐÕÔÑÔÐÐÕÔˆtÑÔÐÕÔˆtÑÔÐÐÕÔ˜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ˆtÑ4Ô4Ð4Õ4Ô4ˆtÑ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Ð4Ð4Ð4Ð4Ð4àÔ" SÑ(ˆØÔ# cÑ)ˆà%˜GÐ%Ð%ˆØ× Ò   gÑ.Ô.Ð.ð $×:Ò:¸3ÀÈÁÈfÐWZÉlÑ[Ô[‰ˆˆvØÐbˆu˜ˆ}ÐbÐbÐbÕbÔbÐbÐbÐbÐbˆu˜ÐbÑbÔbÐbÕbÔbÑbÔbÐbÐbÕbÔbˆuÑbÔbÐbÕbÔbˆuÑbÔbÐbÐbÕbÔb˜ÑbÔbÐbÐbÑbÐbÕbÔbÐb¨F°S©LÐbÐb¸FÀS¹LÐbÐbÈwÐbÐbÐZ`ÐbÐbÑbÔbÐbÑbÐbÐbÐbÑbÐbÕbÕbÔbÐbÑbÔbÑbÔbÐbÐbÐbÐbÐbð *×@Ò@ÀÀfÈsÁlÐTWÑXÔXÑˆ�)Ø ÐWˆx˜5Ð ÐWÐWÐWÕWÔWÐWÐWÐWÐWˆx˜5ÐWÑWÔWÐWÕWÔWÑWÔWÐWÐWÕWÔWˆxÑWÔWÐWÕWÔWˆxÑWÔWÐWÐWÕWÔW˜5ÑWÔWÐWÐWÑWÐWÕWÔWÐ"W¸FÀS¹LÐ"WÐ"WÈgÐ"WÐ"WÑWÔWÐWÑWÐWÐWÐWÑWÐWÕWÕWÔWÐWÑWÔWÑWÔWÐWÐWÐWÐWÐWØ5ÐBÐ5¸ÐBÐBÐBÐBÕBÔBÐBÐBÐBÐBÐ5¸ÐBÑBÔBÕBÔBÐ5ÑBÔBÐBÕBÔBÑBÔBÐBÐBÕBÔB¸ÑBÔBÐBÕBÔB¸ÑBÔBÐBÐBÐBÐBÑBÐBÐBÐBÐBÐBÑBÐBÕBÕBÔBÐBÑBÔBÑBÔBÐBÐBÐBÐBÐBð *×@Ò@ÀÀcÈ6ÐTWÉ<ÑXÔXÑˆ�)Ø ÐWˆx˜5Ð ÐWÐWÐWÕWÔWÐWÐWÐWÐWˆx˜5ÐWÑWÔWÐWÕWÔWÑWÔWÐWÐWÕWÔWˆxÑWÔWÐWÕWÔWˆxÑWÔWÐWÐWÕWÔW˜5ÑWÔWÐWÐWÑWÐWÕWÔWÐ"W¸FÀS¹LÐ"WÐ"WÈgÐ"WÐ"WÑWÔWÐWÑWÐWÐWÐWÑWÐWÕWÕWÔWÐWÑWÔWÑWÔWÐWÐWÐWÐWÐWØ5ÐBÐ5¸ÐBÐBÐBÐBÕBÔBÐBÐBÐBÐBÐ5¸ÐBÑBÔBÕBÔBÐ5ÑBÔBÐBÕBÔBÑBÔBÐBÐBÕBÔB¸ÑBÔBÐBÕBÔB¸ÑBÔBÐBÐBÐBÐBÑBÐBÐBÐBÐBÐBÑBÐBÕBÕBÔBÐBÑBÔBÑBÔBÐBÐBÐBÐBÐBÐBÐBr
   c                 ó^  — d}|                      |d¦  «         |                     |t          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}}|                     |t          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S )z:Adversarial stress: infinite coordinates must be rejected.Úadv_inf_playerr   Úinfr   Fr   r   Ú
ok_inf_posr   r!   r   Nz-infÚ
ok_inf_neg)r6   r7   rŒ   r8   r9   r:   r;   r<   r=   r?   r@   )
rC   r   r°   r¶   rP   rD   rE   rF   rG   r·   s
             r   Ú"test_infinite_coordinates_rejectedz<TestAdversarialZoneBounds.test_infinite_coordinates_rejectedÜ   sê  € àˆØ× Ò  Ð&;Ñ<Ô<Ð<à#×:Ò:¸3ÅÀeÁÄÈcÑRÔR‰ˆ
�AØ"Ð"ˆz˜UÐ"Ð"Ð"Ð"Õ"Ô"Ð"Ð"Ð"Ð"ˆz˜UÐ"Ñ"Ô"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"ˆzÑ"Ô"Ð"Õ"Ô"ˆzÑ"Ô"Ð"Ð"Õ"Ô"˜UÑ"Ô"Ð"Ð"Ñ"Ð"Ð"Ð"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"à#×:Ò:¸3ÅÀfÁÄÈsÑSÔS‰ˆ
�AØ"Ð"ˆz˜UÐ"Ð"Ð"Ð"Õ"Ô"Ð"Ð"Ð"Ð"ˆz˜UÐ"Ñ"Ô"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"ˆzÑ"Ô"Ð"Õ"Ô"ˆzÑ"Ô"Ð"Ð"Õ"Ô"˜UÑ"Ô"Ð"Ð"Ñ"Ð"Ð"Ð"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"r
   )r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   rQ   rZ   ri   r—   ÚpytestÚmarkÚparametrizeÚstrr²   r¸   r	   r
   r   r   r      s,  € € € € € ØTÐTð&DÀ:ð &DÐRVð &Dð &Dð &Dð &DðP!Àjð !ÐUYð !ð !ð !ð !ð.FÀ
ð FÈtð Fð Fð Fð Fð:7ð 7ð 7ð 7ðr „[×ÒØð
	
ð 
	
ð 
	
ñô ðCØ%ðCØ03ðCà	ðCð Cð Cñô ðCð8	#¸jð 	#ÈTð 	#ð 	#ð 	#ð 	#ð 	#ð 	#r
   r   )r¼   Úbuiltinsr:   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter8   Úpathlibr   r‰   r½   Úserver.world.zone_enginer   Úserver.world.zone_typesr   Úfixturer   r   r	   r
   r   ú<module>rÉ      sÙ   ðð
ð 
ð € € € € € € € € € € € € Ð Ð Ð Ð Ð Ð Ø 	€	€	€	Ø €€€à /Ð /Ð /Ð /Ð /Ð /Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,ð „ð�Zð ð ð ñ „ððK#ð K#ð K#ð K#ð K#ñ K#ô K#ð K#ð K#ð K#r
   