§
    ˆ¶¾jc  ã                  ó   — d Z ddlmZ ddlZddlmc mZ ddl	Z	ddl
Z
ddlZddlmZmZ ddlmZmZmZmZmZ ddlmZmZ ddlmZmZ ddlmZmZ dd	lmZ dd„Z  G d„ d¦  «        Z! G d„ d¦  «        Z" G d„ d¦  «        Z# G d„ d¦  «        Z$dS )aC  
Comprehensive E2E Test Suite for FreeExile PoE2 Procedural Tile Map System.
Enforces 4-Tier Testing Methodology:
- Tier 1: Feature Coverage (>=5 test cases per feature area)
- Tier 2: Boundary & Corner Cases (>=5 test cases per feature area)
- Tier 3: Cross-Feature Combinations
- Tier 4: Real-World Application Scenarios
é    )ÚannotationsN)ÚListÚTuple)ÚTileTypeÚMapGridDataÚEncounterZoneÚObstacleInstanceÚObstacleType)ÚWildernessMapGeneratorÚZONE_DEFAULT_SIZES)Úserialize_map_gridÚdeserialize_map_grid)Úcalculate_path_sinuosityÚverify_path_connectivity)Ú
ZoneEngineÚgridÚbytesÚwidthÚintÚheightÚtxÚtyÚreturnc                óp   — |dk     s||k    s|dk     s||k    rt           j        j        S | ||z  |z            S )zLSimulates client-side window.getTileAt(tx, ty) reading row-major Uint8Array.r   )r   ÚWALLÚvalue)r   r   r   r   r   s        ú;C:\Projects\FreeExile\tests\e2e\test_poe2_map_system_e2e.pyÚclient_get_tile_atr      sA   € à	ˆA‚v€v��u’�  Q¢ ¨"°ª,¨,ÝŒ}Ô"Ð"Ø��U‘
˜R‘Ô Ð ó    c                  óz  — e Zd ZdZd2d„Zd2d„Zd2d„Zd2d„Zd2d„Zd2d	„Z	d2d
„Z
d2d„Zd2d„Zd2d„Zd2d„Zd2d„Zd2d„Zd2d„Zd2d„Zd2d„Zd2d„Zd2d„Zd2d„Zd2d„Zd2d„Zd2d„Zd2d„Zd2d„Zd2d„Zd2d„Zd2d„Zd2d„Zd2d „Z d2d!„Z!d2d"„Z"d2d#„Z#d2d$„Z$d2d%„Z%d2d&„Z&d2d'„Z'd2d(„Z(d2d)„Z)d2d*„Z*d2d+„Z+d2d,„Z,d2d-„Z-d2d.„Z.d2d/„Z/d2d0„Z0d1S )3ÚTestTier1FeatureCoveragez;Tier 1: Feature Coverage (>=5 test cases per feature area).r   ÚNonec                ó6  — t          j        d¦  «                             d¦  «        }g }|j        }d}||k    }|}|r$|j        }d}||k    }	|	}|	r|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  }|                     |¦  «         |�r>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  }|                     |¦  «         |	rž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          j        |d¦  «        i z  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}x}x}	x}x}
x}}d S )NÚzone_tang_kiem_nhaié*   é<   é-   ÚBLEACHED_BONE_CANYON©ú==©z-%(py4)s
{%(py4)s = %(py2)s.width
} == %(py7)sÚm©Úpy2Úpy4Úpy7ú%(py9)sÚpy9©z2%(py13)s
{%(py13)s = %(py11)s.height
} == %(py16)s©Úpy11Úpy13Úpy16ú%(py18)sÚpy18)z1%(py22)s
{%(py22)s = %(py20)s.biome
} == %(py25)s)Úpy20Úpy22Úpy25z%(py27)sÚpy27r   zassert %(py30)sÚpy30)r   Úfor_zoneÚgenerater   r   ÚbiomeÚ
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚappendÚ_format_boolopÚAssertionErrorÚ_format_explanation)Úselfr,   Ú@py_assert1Ú@py_assert3Ú@py_assert6Ú@py_assert5Ú@py_assert0Ú@py_assert12Ú@py_assert15Ú@py_assert14Ú@py_assert21Ú@py_assert24Ú@py_assert23Ú@py_format8Ú@py_format10Ú@py_format17Ú@py_format19Ú@py_format26Ú@py_format28Ú@py_format29Ú@py_format31s                        r   Útest_t1_gen_valid_gridz/TestTier1FeatureCoverage.test_t1_gen_valid_grid"   s#  € Ý"Ô+Ð,AÑBÔB×KÒKÈBÑOÔOˆØUÐUˆqŒwÐU˜"ÐUˆw˜"Š}ÐUÐUÐUÐUÐU ¤ÐU¨RÐU ¨R¢ÐUÐUÐUÐUÐU°A´GÐUÐ?UÐU°GÐ?UÒ4UÐUÐUÐUÐUÑUÕUÔUÐUÐUÐUÐUˆw˜"ÐUÑUÔUÐUÕUÔUÑUÔUÐUÐUÕUÔUˆqÑUÔUÐUÕUÔUˆqÑUÔUÐUÐUÕUÔUˆwÑUÔUÕUÔU˜"ÑUÔUÐUÐUÑUÐUÐUÐUÐUÐUÑUÐUÐU×UÒUÐUÑUÔUÐUÐUÑUÕUÔUÐUÐUÐUÐU ¨RÐUÑUÔUÐUÕUÔUÑUÔUÐUÐUÕUÔU ÑUÔUÐUÕUÔU ÑUÔUÐUÐUÕUÔU ÑUÔUÕUÔU¨RÑUÔUÐUÐUÑUÐUÐUÐUÐUÐUÑUÐUÐ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°AÑUÔUÐUÕUÔU°AÑ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ÕUÔUÐUÐUÑUÔUÐUÑUÐUÐUÐUÐUÐUÑUÐUÕUÕUÔUÐUÑUÔUÑUÔUÐUÐUÐUÐUÐUÐUÐUÐUÐUÐUÐUÐUÐUÐUÐUÐUÐUÐUÐUÐUÐUÐUÐUÐUÐUr   c                óx  — dD �]5\  }\  }}t          j        |¦  «                             d¦  «        }g }|j        }||k    }|}|r|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	        |¦  «        rt          j
        |¦  «        nddœz  }dd	|iz  }|                     |¦  «         |rÉ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dœz  }dd|iz  }|                     |¦  «         t          j        |d¦  «        i z  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}	}
�Œ7d S )N))r$   )r&   r'   )Úzone_ancient_sword_barrow)éD   é4   )Úzone_boundless_celestial_palace)éx   éZ   éd   r)   )z-%(py4)s
{%(py4)s = %(py2)s.width
} == %(py6)sr,   Úw)r.   r/   Úpy6ú%(py8)sÚpy8)z2%(py12)s
{%(py12)s = %(py10)s.height
} == %(py14)sÚh)Úpy10Úpy12Úpy14ú%(py16)sr7   r   úassert %(py19)sÚpy19©r   r?   r@   r   r   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   )rL   Úzidri   rm   r,   rM   rN   rP   rQ   Ú@py_assert11Ú@py_assert13Ú@py_format7Ú@py_format9Ú@py_format15rZ   Ú@py_format18Ú@py_format20s                    r   Útest_t1_gen_canonical_zonesz4TestTier1FeatureCoverage.test_t1_gen_canonical_zones&   sŸ  € ð Xð 	2ñ 	2‰KˆC‘�!�QÝ&Ô/°Ñ4Ô4×=Ò=¸cÑBÔBˆAØ1Ð1�1”7Ð1�7˜a’<Ð1Ð1Ð1Ð1Ð1 A¤HÐ1 H°¢MÐ1Ð1Ð1Ð1Ñ1Õ1Ô1Ð1Ð1Ð1Ð1�7˜aÐ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�7Ñ1Ô1Ð1Õ1Ô1Ñ1Ô1Ð1Ð1Õ1Ô1˜aÑ1Ô1Ð1Õ1Ô1˜aÑ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 H°Ð1Ñ1Ô1Ð1Õ1Ô1Ñ1Ô1Ð1Ð1Õ1Ô1 AÑ1Ô1Ð1Õ1Ô1 AÑ1Ô1Ð1Ð1Õ1Ô1 HÑ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Õ1Õ1Ô1Ð1Ñ1Ô1Ñ1Ô1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ñ1ð	2ð 	2r   c                óT  — t          j        d¦  «                             d¦  «        }t          j        d¦  «                             d¦  «        }g }|j        }|j        }||k    }|}|r|j        }|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	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        dœz  }dd	|iz  }|                     |¦  «         |rÜ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
        |	¦  «        dœz  }dd|iz  }|                     |¦  «         t          j        |d¦  «        i z  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}x}x}
}	d„ |j        D ¦   «         }d„ |j        D ¦   «         }||k    }|slt          j        d|fd||f¦  «        t          j
        |¦  «        t          j
        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}d S )Nr$   éç  r)   )zT%(py4)s
{%(py4)s = %(py2)s.spawn_point
} == %(py8)s
{%(py8)s = %(py6)s.spawn_point
}Úm1Úm2©r.   r/   rj   rl   ú%(py10)srn   )zV%(py14)s
{%(py14)s = %(py12)s.boss_gate
} == %(py18)s
{%(py18)s = %(py16)s.boss_gate
}©ro   rp   r7   r9   ú%(py20)sr:   r   úassert %(py23)sÚpy23c                ó&   — g | ]}|D ]	}|j         ‘Œ
ŒS © ©Ú	tile_type©Ú.0ÚrowÚcs      r   ú
<listcomp>zVTestTier1FeatureCoverage.test_t1_gen_deterministic_reproducibility.<locals>.<listcomp>/   s'   € Ð=Ð=Ð= ¸Ð=Ð=°A�”Ð=Ð=Ð=Ð=r   c                ó&   — g | ]}|D ]	}|j         ‘Œ
ŒS r‰   rŠ   rŒ   s      r   r�   zVTestTier1FeatureCoverage.test_t1_gen_deterministic_reproducibility.<locals>.<listcomp>/   s*   € ÐAoÐAoÐAoÐRUÐknÐAoÐAoÐfgÀ!Ä+ÐAoÐAoÐAoÐAor   ©z%(py1)s == %(py4)s©Úpy1r/   úassert %(py6)srj   )r   r?   r@   Úspawn_pointÚ	boss_gaterB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   Útiles)rL   r€   r�   rM   rN   Ú@py_assert7rP   rQ   rw   Ú@py_assert17rS   ry   Ú@py_format11r[   Ú@py_format21Ú@py_format22Ú@py_format24Ú@py_assert2Ú@py_format5rx   s                       r   Ú)test_t1_gen_deterministic_reproducibilityzBTestTier1FeatureCoverage.test_t1_gen_deterministic_reproducibility+   s   € Ý#Ô,Ð-BÑCÔC×LÒLÈSÑQÔQˆÝ#Ô,Ð-BÑCÔC×LÒLÈSÑQÔQˆØPÐPˆrŒ~ÐP ¤ÐPˆ~ Ò/ÐPÐPÐPÐPÐP°B´LÐPÀBÄLÐP°LÀLÒ4PÐPÐPÐPÐPÑPÕPÔPÐPÐPÐPÐPˆ~ ÐPÑPÔPÐPÕPÔPÑPÔPÐPÐPÕPÔPˆrÑPÔPÐPÕPÔPˆrÑPÔPÐPÐPÕPÔPˆ~ÑPÔPÐPÕPÔPÑPÔPÐPÐPÕPÔP ÑPÔPÐPÕPÔP ÑPÔPÐPÐPÕPÔP ÑPÔPÐPÐPÑPÐPÐPÐPÐPÐPÑPÐPÐP×PÒPÐPÑPÔPÐPÐPÐPÕPÔPÐPÐPÐPÐP°LÀLÐPÑPÔPÐPÕPÔPÑPÔPÐPÐPÕPÔP°BÑPÔPÐPÕPÔP°BÑPÔPÐPÐPÕPÔP°LÑPÔPÐPÕPÔPÑPÔPÐPÐPÕPÔPÀBÑPÔPÐPÕPÔPÀBÑPÔPÐPÐPÕPÔPÀLÑPÔPÐPÐPÑPÐPÐPÐPÐPÐPÑPÐPÐP×PÒPÐPÑPÔPÐPÕPÔPÐPÐPÑPÔPÐPÑPÐPÐPÐPÐPÐPÑPÐPÕPÕPÔPÐPÑPÔPÑPÔPÐPÐPÐPÐPÐPÐPÐPÐPÐPÐPÐPÐPÐPÐPÐPÐPÐPØ=Ð= r¤xÐ=Ñ=Ô=ÐoÐAoÐAoÐY[ÔYaÐAoÑAoÔAoÐoÐ=ÐAoÒoÐoÐoÐoÕoÔoÐoÐoÐoÐoÐ=ÐAoÐoÑoÔoÕoÔoÐ=ÑoÔoÕoÔoÐAoÑoÔoÐoÐoÑoÐoÐoÐoÐoÐoÑoÐoÕoÕoÔoÐoÑoÔoÑoÔoÐoÐoÐoÐoÐoÐoÐoÐoÐor   c                ór  — t          j        d¦  «                             d¦  «        }|j        } |¦   «         }|j        }|j        }||z  }d}||z  }t          |¦  «        }	||	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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        |¦  «        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}x}x}x}x}}	d S )Nr$   éM   g333333Ã?©ú>=)zÅ%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.get_walkables_count
}()
} >= %(py18)s
{%(py18)s = %(py6)s(((%(py9)s
{%(py9)s = %(py7)s.width
} * %(py12)s
{%(py12)s = %(py10)s.height
}) * %(py15)s))
}r,   r   )
Úpy0r.   r/   rj   r0   r2   rn   ro   Úpy15r9   úassert %(py20)sr:   )r   r?   r@   Úget_walkables_countr   r   r   rB   rC   rD   rE   rF   rG   rJ   rK   )rL   r,   rM   rN   Ú@py_assert8rv   rw   rT   Ú@py_assert16rš   rP   r[   rœ   s                r   Ú!test_t1_gen_walkable_floors_existz:TestTier1FeatureCoverage.test_t1_gen_walkable_floors_exist1   sV  € Ý"Ô+Ð,AÑBÔB×KÒKÈBÑOÔOˆØÔ$ÐHÐ$Ð$Ñ&Ô&ÐH¨a¬gÐH¸¼ÐH¨g¸Ñ.@ÐHÀ4ÐHÐ.@À4Ñ.GÐH­#Ð.GÑ*HÔ*HÐHÐ&Ð*HÒHÐHÐHÑHÕHÔHÐHÐHÐHÐHÐ&Ð*HÐHÑHÔHÐHÕHÔHÑHÔHÐHÐHÕHÔHˆqÑHÔHÐHÕHÔHˆqÑHÔHÐHÐHÕHÔHÐ$ÑHÔHÕHÔHÐ&ÑHÔHÐHÕHÔHÑHÔHÐHÐHÕHÔH­#ÑHÔHÐHÕHÔH­#ÑHÔHÐHÐHÐHÕHÔHÑHÔHÐHÐHÕHÔH¨aÑHÔHÐHÕHÔH¨aÑHÔHÐHÐHÕHÔH¨gÑHÔHÐHÕHÔHÑHÔHÐHÐHÕHÔH¸ÑHÔHÐHÕHÔH¸ÑHÔHÐHÐHÕHÔH¸ÑHÔHÕHÔHÀ4ÑHÔHÕHÔHÐ*HÑHÔHÐHÐHÑHÐHÐHÐHÐHÐHÑHÐHÕHÕHÔHÐHÑHÔHÑHÔHÐHÐHÐHÐHÐHÐHÐHÐHÐHÐHÐHÐHÐHÐHÐHÐHÐHÐHÐHÐHÐHr   c                óÚ  — t          j        dd¬¦  «                             d¦  «        }|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 )Nr$   ÚSAVAGE_MANGROVE_SWAMP©Úbiome_idé7   r)   )z-%(py2)s
{%(py2)s = %(py0)s.biome
} == %(py5)sr,   )r¦   r.   Úpy5úassert %(py7)sr0   )r   r?   r@   rA   rB   rC   rD   rE   rF   rG   rJ   rK   )rL   r,   rM   Ú@py_assert4rN   Ú@py_format6rX   s          r   Ú&test_t1_gen_biome_attributes_respectedz?TestTier1FeatureCoverage.test_t1_gen_biome_attributes_respected5   s  € Ý"Ô+Ð,AÐLcÐdÑdÔd×mÒmÐnpÑqÔqˆØŒwÐ1Ð1Ð1ˆwÐ1Ò1Ð1Ð1Ð1Õ1Ô1Ð1Ð1Ð1Ð1ˆwÐ1Ð1Ñ1Ô1Ð1Õ1Ô1Ñ1Ô1Ð1Ð1Õ1Ô1ˆqÑ1Ô1Ð1Õ1Ô1ˆqÑ1Ô1Ð1Ð1Õ1Ô1ˆwÑ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Ð1r   c                óð  — t          j        d¦  «                             d¦  «        }t          |¦  «        }g }|d d…         }d}||k    }|}|r|d         }d}	||	k    }
|
}|�st	          j        d|fd||f¦  «        t	          j        |¦  «        t	          j        |¦  «        dœz  }d	d
|iz  }|                     |¦  «         |r`t	          j        d|
fd||	f¦  «        t	          j        |¦  «        t	          j        |	¦  «        dœz  }dd|iz  }|                     |¦  «         t	          j        |d¦  «        i z  }dd|iz  }t          t	          j
        |¦  «        ¦  «        ‚d x}x}x}x}x}x}x}
}	d S )Nr$   é{   é   s   FEé   r)   ©z%(py3)s == %(py6)s©Úpy3rj   rk   rl   ©z%(py11)s == %(py14)s©r5   rp   rq   r7   r   rr   rs   )r   r?   r@   r   rB   rC   rG   rH   rI   rJ   rK   )rL   r,   ÚbrM   rŸ   rP   r´   rQ   Ú@py_assert10rw   rR   rx   ry   rz   rZ   r{   r|   s                    r   Útest_t1_ser_magic_headerz1TestTier1FeatureCoverage.test_t1_ser_magic_header:   sÞ  € Ý"Ô+Ð,AÑBÔB×KÒKÈCÑPÔPˆÝ˜qÑ!Ô!ˆØ+Ð+ˆq��!�ŒuÐ+˜Ð+ˆu˜Š~Ð+Ð+Ð+Ð+Ð+ ! A¤$Ð+¨!Ð+ $¨!¢)Ð+Ð+Ð+Ð+Ñ+Õ+Ô+Ð+Ð+Ð+Ð+ˆu˜Ð+Ñ+Ô+Õ+Ô+ˆuÑ+Ô+Õ+Ô+˜Ñ+Ô+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Ð+×+Ò+Ð+Ñ+Ô+Ð+Ð+Ð+Õ+Ô+Ð+Ð+Ð+Ð+ $¨!Ð+Ñ+Ô+Õ+Ô+ $Ñ+Ô+Õ+Ô+¨!Ñ+Ô+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Ð+×+Ò+Ð+Ñ+Ô+Ð+Õ+Ô+Ð+Ð+Ñ+Ô+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+r   c                óž  — t          j        d¦  «                             d¦  «        }t          j        dt          |¦  «        d¦  «        \  }}g }d}||k    }|}|r
d}||k    }	|	}|�sXt          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  }|                     |¦  «         |r‹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          j        |d¦  «        i z  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}	}d S )Nr$   r¸   z<HHé   r&   r'   r)   )z%(py2)s == %(py5)sri   ©r.   r²   ú%(py7)sr0   )z%(py9)s == %(py12)srm   )r2   ro   z%(py14)srp   r   zassert %(py17)sÚpy17)r   r?   r@   ÚstructÚunpack_fromr   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   )rL   r,   ri   rm   rM   r´   rN   rQ   rv   rÁ   rµ   rX   Ú@py_format13rz   Ú@py_format16r{   s                   r   Útest_t1_ser_header_dimensionsz6TestTier1FeatureCoverage.test_t1_ser_header_dimensions?   s(  € Ý"Ô+Ð,AÑBÔB×KÒKÈCÑPÔPˆÝÔ! %Õ);¸AÑ)>Ô)>ÀÑBÔB‰ˆˆ1Ø"Ð"�BÐ"ˆq�BŠwÐ"Ð"Ð"Ð"Ð" Ð"˜1 š7Ð"Ð"Ð"Ð"Ñ"Õ"Ô"Ð"Ð"Ð"Ð"ˆq�BÐ"Ñ"Ô"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"ˆqÑ"Ô"Ð"Õ"Ô"ˆqÑ"Ô"Ð"Ð"Õ"Ô"�BÑ"Ô"Ð"Ð"Ñ"Ð"Ð"Ð"Ð"Ð"Ñ"Ð"Ð"×"Ò"Ð"Ñ"Ô"Ð"Ð"Ð"Õ"Ô"Ð"Ð"Ð"Ð"˜1 Ð"Ñ"Ô"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"˜1Ñ"Ô"Ð"Õ"Ô"˜1Ñ"Ô"Ð"Ð"Õ"Ô" Ñ"Ô"Ð"Ð"Ñ"Ð"Ð"Ð"Ð"Ð"Ñ"Ð"Ð"×"Ò"Ð"Ñ"Ô"Ð"Õ"Ô"Ð"Ð"Ñ"Ô"Ð"Ñ"Ð"Ð"Ð"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ð"r   c                óÈ  — t          j        d¦  «                             d¦  «        }t          |¦  «        }t	          |¦  «        }d}|j        }t	          |¦  «        }d}||z  }||z   }	|j        }
t	          |
¦  «        }d}||z  }|	|z   }|j        }|j        }||z  }||z   }||k    }|�s‘t          j
        d|fd||f¦  «        i dd	t          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nd	“d
dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nd“ddt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd“dt          j        |¦  «        “dt          j        |¦  «        “dt          j        |¦  «        “dd	t          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nd	“ddt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd“dt          j        |¦  «        “dt          j        |¦  «        “dt          j        |¦  «        “dd	t          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nd	“ddt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd“dt          j        |
¦  «        “dt          j        |¦  «        “dt          j        |¦  «        “d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        |¦  «        dœ¥z  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}x}x}x}x}	x}
x}x}x}x}x}x}x}}d S )Nr$   r¸   é   é   é   r)   )ab  %(py6)s
{%(py6)s = %(py0)s(%(py4)s
{%(py4)s = %(py1)s(%(py2)s)
})
} == (((%(py9)s + (%(py15)s
{%(py15)s = %(py10)s(%(py13)s
{%(py13)s = %(py11)s.poi_points
})
} * %(py17)s)) + (%(py25)s
{%(py25)s = %(py20)s(%(py23)s
{%(py23)s = %(py21)s.encounter_zones
})
} * %(py27)s)) + (%(py32)s
{%(py32)s = %(py30)s.width
} * %(py35)s
{%(py35)s = %(py33)s.height
}))r¦   Úlenr”   r   r.   r,   r/   rj   r2   rn   r5   r6   r§   rÇ   r:   Úpy21r‡   r<   r=   r>   )Úpy32Úpy33Úpy35zassert %(py39)sÚpy39)r   r?   r@   r   rÑ   Ú
poi_pointsÚencounter_zonesr   r   rB   rC   rD   rE   rF   rG   rJ   rK   )rL   r,   rN   rP   rª   rR   rT   r«   Ú@py_assert18Ú@py_assert19Ú@py_assert22rV   Ú@py_assert26Ú@py_assert28Ú@py_assert29Ú@py_assert31Ú@py_assert34Ú@py_assert36Ú@py_assert37r™   Ú@py_format38Ú@py_format40s                         r   Útest_t1_ser_poi_and_enc_tablesz7TestTier1FeatureCoverage.test_t1_ser_poi_and_enc_tablesD   sË  € Ý"Ô+Ð,AÑBÔB×KÒKÈCÑPÔPˆÝ% aÑ(Ô(Ðy�sÐ(Ñ)Ô)Ðy¨RÐy°a´lÐyµ#°lÑ2CÔ2CÐyÀaÐyÐ2CÀaÑ2GÐy¨RÐ2GÑ-GÐyÈaÔN_ÐyÍ#ÐN_ÑJ`ÔJ`ÐyÐcdÐyÐJ`ÐcdÑJdÐyÐ-GÐJdÑ-dÐyÐghÔgnÐyÐqrÔqyÐyÐgnÐqyÑgyÐyÐ-dÐgyÑ-yÐyÐ)Ð-yÒyÐyÐyÑyÕyÔyÐyÐyÐyÐyÐ)Ð-yÐyÑyÔyÐyÐyÐyÕyÔyÑyÔyÐyÐyÕyÔy�sÑyÔyÐyÕyÔy�sÑyÔyÐyÐyÐyÐyÐyÕyÔyÑyÔyÐyÐyÕyÔyÕ%ÑyÔyÐyÕyÔyÕ%ÑyÔyÐyÐyÐyÐyÐyÕyÔyÑyÔyÐyÐyÕyÔy aÑyÔyÐyÕyÔy aÑyÔyÐyÐyÐyÐyÕyÔyÐ(ÑyÔyÐyÐyÕyÔyÐ)ÑyÔyÐyÐyÕyÔy¨RÑyÔyÐyÐyÐyÕyÔyÑyÔyÐyÐyÕyÔyµ#ÑyÔyÐyÕyÔyµ#ÑyÔyÐyÐyÐyÐyÐyÕyÔyÑyÔyÐyÐyÕyÔy°aÑyÔyÐyÕyÔy°aÑyÔyÐyÐyÐyÐyÕyÔy°lÑyÔyÐyÐyÕyÔyÐ2CÑyÔyÐyÐyÕyÔyÀaÑyÔyÐyÐyÐyÕyÔyÑyÔyÐyÐyÕyÔyÍ#ÑyÔyÐyÕyÔyÍ#ÑyÔyÐyÐyÐyÐyÐyÕyÔyÑyÔyÐyÐyÕyÔyÈaÑyÔyÐyÕyÔyÈaÑyÔyÐyÐyÐyÐyÕyÔyÐN_ÑyÔyÐyÐyÕyÔyÐJ`ÑyÔyÐyÐyÕyÔyÐcdÑyÔyÐyÐyÐyÕyÔyÑyÔyÐyÐyÕyÔyÐghÑyÔyÐyÕyÔyÐghÑyÔyÐyÐyÐyÕyÔyÐgnÑyÔyÐyÕyÔyÑyÔyÐyÐyÕyÔyÐqrÑyÔyÐyÕyÔyÐqrÑyÔyÐyÐyÕyÔyÐqyÑyÔyÐyÐyÐyÑyÐyÐyÐyÐyÐyÑyÐyÕyÕyÔyÐyÑyÔyÑyÔyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyr   c                óú  — t          j        d¦  «                             d¦  «        }t          t	          |¦  «        ¦  «        }g }|j        }|j        }||k    }|}|rF|j        }|j        }	||	k    }
|
}|
r.|j        }|j        }||k    }|}|r|j        }|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        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd	|iz  }|                     |¦  «         |�r™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        |	¦  «        dœz  }dd|iz  }|                     |¦  «         |
�rº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        |¦  «        dœz  }dd|iz  }|                     |¦  «         |rÜ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        |¦  «        dœz  }dd|iz  }|                     |¦  «         t          j        |d¦  «        i z  }dd|iz  }t#          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}x}x}
x}	x}x}x}x}x}}d S )Nr$   r¸   r)   )zH%(py4)s
{%(py4)s = %(py2)s.width
} == %(py8)s
{%(py8)s = %(py6)s.width
}Údr,   r‚   rƒ   rn   )zP%(py14)s
{%(py14)s = %(py12)s.height
} == %(py18)s
{%(py18)s = %(py16)s.height
}r„   r…   r:   )zZ%(py24)s
{%(py24)s = %(py22)s.spawn_point
} == %(py28)s
{%(py28)s = %(py26)s.spawn_point
})r;   Úpy24Úpy26Úpy28ú%(py30)sr>   )zV%(py34)s
{%(py34)s = %(py32)s.boss_gate
} == %(py38)s
{%(py38)s = %(py36)s.boss_gate
})rÓ   Úpy34Úpy36Úpy38z%(py40)sÚpy40r   zassert %(py43)sÚpy43)r   r?   r@   r   r   r   r   r–   r—   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   )rL   r,   rç   rM   rN   r™   rP   rQ   rw   rš   rS   rW   Ú@py_assert27Ú@py_assert25Ú@py_assert33râ   Ú@py_assert35ry   r›   r[   rœ   r^   r_   Ú@py_format39Ú@py_format41Ú@py_format42Ú@py_format44s                              r   Ú$test_t1_ser_deserialization_fidelityz=TestTier1FeatureCoverage.test_t1_ser_deserialization_fidelityH   s  € Ý"Ô+Ð,AÑBÔB×KÒKÈCÑPÔPˆÝ Õ!3°AÑ!6Ô!6Ñ7Ô7ˆØ|Ð|ˆqŒwÐ|˜!œ'Ð|ˆw˜'Ò!Ð|Ð|Ð|Ð|Ð| a¤hÐ|°!´(Ð| h°(Ò&:Ð|Ð|Ð|Ð|Ð|¸q¼}Ð|ÐPQÔP]Ð|¸}ÐP]Ò?]Ð|Ð|Ð|Ð|Ð|ÐbcÔbmÐ|ÐqrÔq|Ð|ÐbmÐq|Òb|Ð|Ð|Ð|Ð|Ñ|Õ|Ô|Ð|Ð|Ð|Ð|ˆw˜'Ð|Ñ|Ô|Ð|Õ|Ô|Ñ|Ô|Ð|Ð|Õ|Ô|ˆqÑ|Ô|Ð|Õ|Ô|ˆqÑ|Ô|Ð|Ð|Õ|Ô|ˆwÑ|Ô|Ð|Õ|Ô|Ñ|Ô|Ð|Ð|Õ|Ô|˜!Ñ|Ô|Ð|Õ|Ô|˜!Ñ|Ô|Ð|Ð|Õ|Ô|˜'Ñ|Ô|Ð|Ð|Ñ|Ð|Ð|Ð|Ð|Ð|Ñ|Ð|Ð|×|Ò|Ð|Ñ|Ô|Ð|Ð|Ñ|Õ|Ô|Ð|Ð|Ð|Ð| h°(Ð|Ñ|Ô|Ð|Õ|Ô|Ñ|Ô|Ð|Ð|Õ|Ô| aÑ|Ô|Ð|Õ|Ô| aÑ|Ô|Ð|Ð|Õ|Ô| hÑ|Ô|Ð|Õ|Ô|Ñ|Ô|Ð|Ð|Õ|Ô|°!Ñ|Ô|Ð|Õ|Ô|°!Ñ|Ô|Ð|Ð|Õ|Ô|°(Ñ|Ô|Ð|Ð|Ñ|Ð|Ð|Ð|Ð|Ð|Ñ|Ð|Ð|×|Ò|Ð|Ñ|Ô|Ð|Ð|Ñ|Õ|Ô|Ð|Ð|Ð|Ð|¸}ÐP]Ð|Ñ|Ô|Ð|Õ|Ô|Ñ|Ô|Ð|Ð|Õ|Ô|¸qÑ|Ô|Ð|Õ|Ô|¸qÑ|Ô|Ð|Ð|Õ|Ô|¸}Ñ|Ô|Ð|Õ|Ô|Ñ|Ô|Ð|Ð|Õ|Ô|ÐPQÑ|Ô|Ð|Õ|Ô|ÐPQÑ|Ô|Ð|Ð|Õ|Ô|ÐP]Ñ|Ô|Ð|Ð|Ñ|Ð|Ð|Ð|Ð|Ð|Ñ|Ð|Ð|×|Ò|Ð|Ñ|Ô|Ð|Ð|Ð|Õ|Ô|Ð|Ð|Ð|Ð|ÐbmÐq|Ð|Ñ|Ô|Ð|Õ|Ô|Ñ|Ô|Ð|Ð|Õ|Ô|ÐbcÑ|Ô|Ð|Õ|Ô|ÐbcÑ|Ô|Ð|Ð|Õ|Ô|ÐbmÑ|Ô|Ð|Õ|Ô|Ñ|Ô|Ð|Ð|Õ|Ô|ÐqrÑ|Ô|Ð|Õ|Ô|ÐqrÑ|Ô|Ð|Ð|Õ|Ô|Ðq|Ñ|Ô|Ð|Ð|Ñ|Ð|Ð|Ð|Ð|Ð|Ñ|Ð|Ð|×|Ò|Ð|Ñ|Ô|Ð|Õ|Ô|Ð|Ð|Ñ|Ô|Ð|Ñ|Ð|Ð|Ð|Ð|Ð|Ñ|Ð|Õ|Õ|Ô|Ð|Ñ|Ô|Ñ|Ô|Ð|Ð|Ð|Ð|Ð|Ð|Ð|Ð|Ð|Ð|Ð|Ð|Ð|Ð|Ð|Ð|Ð|Ð|Ð|Ð|Ð|Ð|Ð|Ð|Ð|Ð|Ð|Ð|Ð|Ð|Ð|r   c                ó&  ‡‡— t          j        d¦  «                             d¦  «        Št          t	          ‰¦  «        ¦  «        Šˆˆfd„t          ‰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}}d S )Nr$   r¸   c              3  óª   •K  — | ]M}t          ‰j        ¦  «        D ]6}‰j        |         |         j        ‰j        |         |         j        k    V — Œ7ŒNd S ©N©Úranger   r˜   r‹   )r�   ÚyÚxrç   r,   s      €€r   ú	<genexpr>zLTestTier1FeatureCoverage.test_t1_ser_tile_matrix_equality.<locals>.<genexpr>P   s]   øè è € ÐwÐwÈ!ÕhmÐnoÔnuÑhvÔhvÐwÐwÐcd�1”7˜1”:˜a”=Ô*¨a¬g°a¬j¸¬mÔ.EÒEÐwÐwÐwÐwÐwÐwÐwr   ú,assert %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}Úall©r¦   r.   r/   )r   r?   r@   r   r   rþ   r   r  rD   rE   rB   rF   rG   rJ   rK   )rL   rM   rN   r    rç   r,   s       @@r   Ú test_t1_ser_tile_matrix_equalityz9TestTier1FeatureCoverage.test_t1_ser_tile_matrix_equalityM   s  øø€ Ý"Ô+Ð,AÑBÔB×KÒKÈCÑPÔPˆÝ Õ!3°AÑ!6Ô!6Ñ7Ô7ˆØwÐwÐwÐwÐwÍuÐUVÔU]ÉÌÐwÑwÔwÐw�sÐwÑwÔwÐwÐwÐwÐwÐwÕwÔwÑwÔwÐwÐwÕwÔw�sÑwÔwÐwÕwÔw�sÑwÔwÐwÐwÕwÔwÐwÑwÔwÕwÔwÐwÑwÔwÐwÐwÑwÐwÕwÕwÔwÐwÑwÔwÑwÔwÐwÐwÐwÐwÐwÐwÐwr   c                ó(  — t          j        d¦  «                             d¦  «        }|j        \  }}g }|j        |         |         }|j        }t          j        t          j        f}||v }|}	|r|j        |         |         }
|
j	        }|}	|	söt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }|                     |¦  «         |rAdt          j        |
¦  «        t          j        |¦  «        d	œz  }|                     |¦  «         t          j        |d
¦  «        i z  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}	x}x}x}x}x}x}
}d S )Nr$   éA  ©Úin©z1%(py5)s
{%(py5)s = %(py3)s.tile_type
} in %(py8)s©r½   r²   rl   rƒ   rn   ú(%(py15)s
{%(py15)s = %(py13)s.walkable
}©r6   r§   r   úassert %(py18)sr9   )r   r?   r@   r–   r˜   r‹   r   ÚFLOORÚPATHÚwalkablerB   rC   rG   rH   rI   rJ   rK   )rL   r,   ÚsxÚsyrM   rŸ   r´   r™   rO   rQ   rR   rT   ry   r›   rË   rZ   r[   s                    r   Útest_t1_spawn_center_is_floorz6TestTier1FeatureCoverage.test_t1_spawn_center_is_floorS   sß  € Ý"Ô+Ð,AÑBÔB×KÒKÈCÑPÔPˆØ”‰ˆˆBØhÐhˆqŒw�rŒ{˜2ŒÐhˆÔ(Ðh­X¬^½X¼]Ð,KÐhÐ(Ð,KÐKÐhÐhÐhÐhÐhÐPQÔPWÐXZÔP[Ð\^ÔP_ÐhÐP_ÔPhÐhÐPhÐhÐhÐhÕhÔhÐhÐhÐhÐhÐ(Ð,KÐhÑhÔhÕhÔhˆÑhÔhÕhÔhÐ(ÑhÔhÕhÔhÐ,KÑhÔhÐhÐhÑhÐhÐhÐhÐhÐhÑhÐhÐh×hÒhÐhÑhÔhÐhÐhÐhÐhÕhÔhÐP_ÑhÔhÕhÔhÐPhÑhÔhÐhÐhÑhÐhÐh×hÒhÐhÑhÔhÐhÕhÔhÐhÐhÑhÔhÐhÑhÐhÐhÐhÐhÐhÑhÐhÕhÕhÔhÐhÑhÔhÑhÔhÐhÐhÐhÐhÐhÐhÐhÐhÐhÐhÐhÐhÐhÐhÐhÐhÐhÐhÐhr   c           	     ój  ‡‡‡— t          j        d¦  «                             d¦  «        Š‰j        \  ŠŠˆˆˆfd„t	          t          d‰dz
  ¦  «        t          ‰j        dz
  ‰dz   ¦  «        ¦  «        D ¦   «         }d„ |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}}d S )Nr$   r  c           
     óä   •— g | ]l}t          t          d ‰dz
  ¦  «        t          ‰j        d z
  ‰dz   ¦  «        ¦  «        D ]/}|‰z
  dz  |‰z
  dz  z   dk    ¯‰j        |         |         j        ‘Œ0ŒmS )rº   é   é	   r¹   é@   )rþ   ÚmaxÚminr   r˜   r‹   ©r�   rÿ   r   r,   r  r  s      €€€r   r�   zNTestTier1FeatureCoverage.test_t1_spawn_radius_8_all_floors.<locals>.<listcomp>[   s›   ø€ ð wð wð w°!Ý$¥S¨¨B°©F¡^¤^µS¸¼À1¹ÀbÈ1ÁfÑ5MÔ5MÑNÔNðwð wØÐSTÐWYÑSYÐ^_ÑR_ÐcdÐgiÑciÐnoÑboÑRoÐsuÒRuÐRuð ”g˜a”j ”mÔ-ØRuÐRuÐRuÐRur   rº   r  r  c              3  óJ   K  — | ]}|t           j        t           j        fv V — Œd S rü   )r   r  r  )r�   Úts     r   r  zMTestTier1FeatureCoverage.test_t1_spawn_radius_8_all_floors.<locals>.<genexpr>]   s0   è è € ÐLÐL¸A�1�œ­¬Ð7Ð7ÐLÐLÐLÐLÐLÐLr   r  r  r  ©r   r?   r@   r–   rþ   r  r  r   r  rD   rE   rB   rF   rG   rJ   rK   )rL   Ú
safe_tilesrM   rN   r    r,   r  r  s        @@@r   Ú!test_t1_spawn_radius_8_all_floorsz:TestTier1FeatureCoverage.test_t1_spawn_radius_8_all_floorsX   sV  øøø€ Ý"Ô+Ð,AÑBÔB×KÒKÈCÑPÔPˆØ”‰ˆˆBðwð wð wð wð wð wµu½SÀÀBÈÁF¹^¼^ÍSÐQRÔQYÐ\]ÑQ]Ð_aÐdeÑ_eÑMfÔMfÑ7gÔ7gð wñ wô wˆ
àLÐLÀÐLÑLÔLÐL�sÐLÑLÔLÐLÐLÐLÐLÐLÕLÔLÑLÔLÐLÐLÕLÔL�sÑLÔLÐLÕLÔL�sÑLÔLÐLÐLÕLÔLÐLÑLÔLÕLÔLÐLÑLÔLÐLÐLÑLÐLÕLÕLÔLÐLÑLÔLÑLÔLÐLÐLÐLÐLÐLÐLÐLr   c           	     óR  ‡‡‡— t          j        d¦  «                             d¦  «        Š‰j        \  ŠŠˆˆˆfd„t	          t          d‰dz
  ¦  «        t          ‰j        dz
  ‰dz   ¦  «        ¦  «        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}}d S )
Nr$   r  c           	   3  óì   •K  — | ]n}t          t          d ‰dz
  ¦  «        t          ‰j        d z
  ‰dz   ¦  «        ¦  «        D ]1}|‰z
  dz  |‰z
  dz  z   dk    ¯‰j        |         |         j        V — Œ2ŒodS ©rº   r  r  r¹   r  N)rþ   r  r  r   r˜   r  r  s      €€€r   r  zOTestTier1FeatureCoverage.test_t1_spawn_radius_8_all_walkable.<locals>.<genexpr>b   s§   øè è € ð tð t¨aÝ!¥# a¨¨a©¡.¤.µ#°a´gÀ±kÀ2ÈÁ6Ñ2JÔ2JÑKÔKðtð tØÐPQÐTVÑPVÐ[\É}Ð`aÐdfÑ`fÐklÑ_lÑOlÐprÒOrÐOrð ”7˜1”:˜a”=Ô)ØOrÐOrÐOrÐOrÐOrðtð tr   rº   r  r  r  r  r  r  )rL   rM   rN   r    r,   r  r  s       @@@r   Ú#test_t1_spawn_radius_8_all_walkablez<TestTier1FeatureCoverage.test_t1_spawn_radius_8_all_walkable_   sÙ  øøø€ Ý"Ô+Ð,AÑBÔB×KÒKÈCÑPÔPˆØ”‰ˆˆBðtð tð tð tð tð tµ5½¸QÀÀQÁ¹¼ÍÈQÌXÐXYÉ\Ð[]Ð`aÑ[aÑIbÔIbÑ3cÔ3cð tñ tô tð 	t�sð tñ tô tð 	tð tð 	tð 	tð 	tõ 	tÜmsñ	tô 	tð 	tð 	tõ 	tÜ[sõ ñ 	tô 	tð 	tõ 	tÜjsõ ñ 	tô 	tð 	tð 	tõ 	tÜjsðtñ 	tô 	tõ 	tÜjsðtñ 	tô 	tð 	tð 	tñ 	tð 	tõ 	tõ 	tÜ`sð	tñ 	tô 	tñ 	tô 	tð 	tð 	tð 	tð 	tð 	tð 	tð 	tr   c           	     ó\  ‡‡‡— t          j        d¦  «                             d¦  «        Š‰j        \  ŠŠˆˆˆfd„t	          t          d‰dz
  ¦  «        t          ‰j        dz
  ‰dz   ¦  «        ¦  «        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}x}}d S )
Nr$   r  c           	   3  óì   •K  — | ]n}t          t          d ‰dz
  ¦  «        t          ‰j        d z
  ‰dz   ¦  «        ¦  «        D ]1}|‰z
  dz  |‰z
  dz  z   dk    ¯‰j        |         |         j        V — Œ2ŒodS r$  )rþ   r  r  r   r˜   Úblocks_visionr  s      €€€r   r  zVTestTier1FeatureCoverage.test_t1_spawn_radius_8_blocks_vision_false.<locals>.<genexpr>h   s¨   øè è € ð xð x°qÝ %¥c¨!¨R°!©V¡n¤nµc¸!¼'ÀA¹+ÀrÈAÁvÑ6NÔ6NÑ OÔ Oðxð xØÐTUÐXZÑTZÐ_`ÑS`ÐdeÐhjÑdjÐopÑcpÑSpÐtvÒSvÐSvð ”w˜q”z !”}Ô2ØSvÐSvÐSvÐSvÐSvðxð xr   rº   r  r  z0assert not %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}Úanyr  )r   r?   r@   r–   rþ   r  r  r   r)  rD   rE   rB   rF   rG   rJ   rK   )rL   rM   rN   rP   rµ   r,   r  r  s        @@@r   Ú*test_t1_spawn_radius_8_blocks_vision_falsezCTestTier1FeatureCoverage.test_t1_spawn_radius_8_blocks_vision_falsee   sû  øøø€ Ý"Ô+Ð,AÑBÔB×KÒKÈCÑPÔPˆØ”‰ˆˆBðxð xð xð xð xð x½EÅ#ÀaÈÈaÉÁ.Ä.ÕRUÐVWÔV^ÐabÑVbÐdfÐijÑdjÑRkÔRkÑ<lÔ<lð xñ xô xð 	x•3ð xñ xô xð 	xð xð xð 	xð xð 	xð 	xð 	xõ 	xÜqwñ	xô 	xð 	xð 	xõ 	xÜ_wõ ñ 	xô 	xð 	xõ 	xÜnwõ ñ 	xô 	xð 	xð 	xõ 	xÜnwðxñ 	xô 	xõ 	xÜnwðxñ 	xô 	xð 	xð 	xñ 	xð 	xõ 	xõ 	xÜdwð	xñ 	xô 	xñ 	xô 	xð 	xð 	xð 	xð 	xð 	xð 	xð 	xð 	xð 	xr   c                ó\  — t          j        d¦  «                             d¦  «        }|j        \  }}|j        |         |dz            j        |j        |         |dz
           j        |j        |dz            |         j        g}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}}d S )Nr$   r  r  r  r)  r  )r   r?   r@   r–   r˜   r  r)  rD   rE   rB   rF   rG   rJ   rK   )rL   r,   r  r  rM   rN   r    s          r   Ú!test_t1_spawn_perimeter_connectedz:TestTier1FeatureCoverage.test_t1_spawn_perimeter_connectedk   s  € Ý"Ô+Ð,AÑBÔB×KÒKÈCÑPÔPˆØ”‰ˆˆBØ”G˜B”K  Q¡Ô'Ô0°!´'¸"´+¸bÀ1¹fÔ2EÔ2NÐPQÔPWÐXZÐ]^ÑX^ÔP_Ð`bÔPcÔPlÐmÐn�sÐmÑnÔnÐnÐnÐnÐnÐnÕnÔnÑnÔnÐnÐnÕnÔn�sÑnÔnÐnÕnÔn�sÑnÔnÐnÐnÕnÔnÐmÑnÔnÕnÔnÐnÑnÔnÐnÐnÑnÐnÕnÕnÔnÐnÑnÔnÑnÔnÐnÐnÐnÐnÐnÐnÐnr   c                ób  — t          j        d¦  «                             d¦  «        }t          ||j        |j        ¦  «        \  }}g }d}||u }|}|rt          |¦  «        }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  }|                     |¦  «         |ræ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  }dd|iz  }|                     |¦  «         t          j        |d¦  «        i z  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}x}
}	d S )Nr$   éô  Tr   ©Úis©z%(py2)s is %(py5)sÚokrÅ   rÆ   r0   ©ú>©z3%(py12)s
{%(py12)s = %(py9)s(%(py10)s)
} > %(py15)srÑ   Úpath©r2   rn   ro   r§   ú%(py17)srÇ   r¨   r:   )r   r?   r@   r   r–   r—   rÑ   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   )rL   r,   r2  r6  rM   r´   rN   rQ   rv   rT   rw   rµ   rX   rË   r{   r[   rœ   s                    r   Ú test_t1_path_connectivity_existsz9TestTier1FeatureCoverage.test_t1_path_connectivity_existsq   sy  € Ý"Ô+Ð,AÑBÔB×KÒKÈCÑPÔPˆÝ+¨A¨q¬}¸a¼kÑJÔJ‰ˆˆDØ+Ð+�TÐ+ˆr�TˆzÐ+Ð+Ð+Ð+Ð+�c $™iœiÐ+¨!Ð+˜i¨!šmÐ+Ð+Ð+Ð+Ñ+Õ+Ô+Ð+Ð+Ð+Ð+ˆr�TÐ+Ñ+Ô+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+ˆrÑ+Ô+Ð+Õ+Ô+ˆrÑ+Ô+Ð+Ð+Õ+Ô+�TÑ+Ô+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Ð+×+Ò+Ð+Ñ+Ô+Ð+Ð+Ð+Õ+Ô+Ð+Ð+Ð+Ð+˜i¨!Ð+Ñ+Ô+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+�cÑ+Ô+Ð+Õ+Ô+�cÑ+Ô+Ð+Ð+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+ $Ñ+Ô+Ð+Õ+Ô+ $Ñ+Ô+Ð+Ð+Õ+Ô+˜iÑ+Ô+Õ+Ô+¨!Ñ+Ô+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Ð+×+Ò+Ð+Ñ+Ô+Ð+Õ+Ô+Ð+Ð+Ñ+Ô+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+r   c                ó   — t          j        d¦  «                             d¦  «        }t          ||j        |j        ¦  «        \  }}|j        }|j        }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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 S )Nr$   r.  ç      ô?r¤   ©zƒ%(py9)s
{%(py9)s = %(py0)s(%(py1)s, %(py4)s
{%(py4)s = %(py2)s.spawn_point
}, %(py7)s
{%(py7)s = %(py5)s.boss_gate
})
} >= %(py12)sr   r6  r,   ©r¦   r”   r.   r/   r²   r0   r2   ro   úassert %(py14)srp   ©r   r?   r@   r   r–   r—   r   rB   rC   rD   rE   rF   rG   rJ   rK   ©rL   r,   Ú_r6  rN   rO   rª   rv   rÁ   rÊ   rz   s              r   Ú%test_t1_path_sinuosity_tang_kiem_nhaiz>TestTier1FeatureCoverage.test_t1_path_sinuosity_tang_kiem_nhaiv   s  € Ý"Ô+Ð,AÑBÔB×KÒKÈCÑPÔPˆÝ*¨1¨a¬m¸Q¼[ÑIÔI‰ˆˆ4Ø./¬mÐQ¸Q¼[ÐQÕ'¨¨m¸[ÑIÔIÐQÈTÐQÐIÈTÒQÐQÐQÑQÕQÔQÐQÐQÐQÐQÐIÈTÐQÑQÔQÐQÕQÔQÑQÔQÐQÐQÕQÔQÕ'ÑQÔQÐQÕQÔQÕ'ÑQÔQÐQÐQÐQÕQÔQÑQÔQÐQÐQÕQÔQ¨ÑQÔQÐQÕQÔQ¨ÑQÔQÐQÐQÐQÕQÔQÑQÔQÐQÐQÕQÔQ¨aÑQÔQÐQÕQÔQ¨aÑQÔQÐQÐQÕQÔQ¨mÑQÔQÐQÕQÔQÑQÔQÐQÐQÕQÔQ¸QÑQÔQÐQÕQÔQ¸QÑQÔQÐQÐQÕQÔQ¸[ÑQÔQÕQÔQÐIÑQÔQÕQÔQÈTÑQÔQÐQÐQÑQÐQÐQÐQÐQÐQÑQÐQÕQÕQÔQÐQÑQÔQÑQÔQÐQÐQÐQÐQÐQÐQÐQÐQÐQÐQÐQÐQÐQr   c                ó   — t          j        d¦  «                             d¦  «        }t          ||j        |j        ¦  «        \  }}|j        }|j        }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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 S )Nre   r.  r;  r¤   r<  r   r6  r,   r=  r>  rp   r?  r@  s              r   Ú'test_t1_path_sinuosity_celestial_palacez@TestTier1FeatureCoverage.test_t1_path_sinuosity_celestial_palace{   s  € Ý"Ô+Ð,MÑNÔN×WÒWÐX[Ñ\Ô\ˆÝ*¨1¨a¬m¸Q¼[ÑIÔI‰ˆˆ4Ø./¬mÐQ¸Q¼[ÐQÕ'¨¨m¸[ÑIÔIÐQÈTÐQÐIÈTÒQÐQÐQÑQÕQÔQÐQÐQÐQÐQÐIÈTÐQÑQÔQÐQÕQÔQÑQÔQÐQÐQÕQÔQÕ'ÑQÔQÐQÕQÔQÕ'ÑQÔQÐQÐQÐQÕQÔQÑQÔQÐQÐQÕQÔQ¨ÑQÔQÐQÕQÔQ¨ÑQÔQÐQÐQÐQÕQÔQÑQÔQÐQÐQÕQÔQ¨aÑQÔQÐQÕQÔQ¨aÑQÔQÐQÐQÕQÔQ¨mÑQÔQÐQÕQÔQÑQÔQÐQÐQÕQÔQ¸QÑQÔQÐQÕQÔQ¸QÑQÔQÐQÐQÕQÔQ¸[ÑQÔQÕQÔQÐIÑQÔQÕQÔQÈTÑQÔQÐQÐQÑQÐQÐQÐQÐQÐQÑQÐQÕQÕQÔQÐQÑQÔQÑQÔQÐQÐQÐQÐQÐQÐQÐQÐQÐQÐQÐQÐQÐQr   c                ón  — t          j        d¦  «                             d¦  «        }d„ |j        D ¦   «         }g }t	          |¦  «        }d}||k    }|}|rd„ |D ¦   «         }t          |¦  «        }	|	}|�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  }
dd|
iz  }|                     |¦  «         |r‰ddt          j	        ¦   «         v st          j
        t
          ¦  «        rt          j        t
          ¦  «        ndt          j        |¦  «        t          j        |	¦  «        dœz  }|                     |¦  «         t          j        |d¦  «        i z  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}x}}	d S )Nr$   r.  c                óF   — g | ]}|D ]}|j         t          j        k    ¯|‘ŒŒS r‰   )r‹   r   r  rŒ   s      r   r�   zMTestTier1FeatureCoverage.test_t1_path_contains_path_tiles.<locals>.<listcomp>‚   s3   € ÐXÐXÐX˜C°CÐXÐX¨q¸1¼;Í(Ì-Ò;WÐ;W�aÐ;WÐ;WÐ;WÐ;Wr   é   c              3  ó,   K  — | ]}|j         d k    V — ŒdS )çš™™™™™é?N)Úmovement_cost©r�   r�   s     r   r  zLTestTier1FeatureCoverage.test_t1_path_contains_path_tiles.<locals>.<genexpr>ƒ   s)   è è € Ð,XÐ,XÈ¨Q¬_ÀÒ-CÐ,XÐ,XÐ,XÐ,XÐ,XÐ,Xr   r¤   ©z0%(py5)s
{%(py5)s = %(py2)s(%(py3)s)
} >= %(py8)srÑ   Ú
path_tiles©r.   r½   r²   rl   rƒ   rn   ú)%(py16)s
{%(py16)s = %(py12)s(%(py14)s)
}r  ©ro   rp   r7   r   rr   rs   ©r   r?   r@   r˜   rÑ   r  rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   )rL   r,   rM  rM   r´   r™   rO   rQ   rw   rS   ry   r›   rZ   r{   r|   s                  r   Ú test_t1_path_contains_path_tilesz9TestTier1FeatureCoverage.test_t1_path_contains_path_tiles€   sl  € Ý"Ô+Ð,AÑBÔB×KÒKÈCÑPÔPˆØXÐX 1¤7ÐXÑXÔXˆ
ØXÐX�s�:‰ŒÐX "ÐXˆ "Ò$ÐXÐXÐXÐXÐXÐ,XÐ,XÈZÐ,XÑ,XÔ,XÐX­Ð,XÑ)XÔ)XÐXÐ)XÐXÐXÑXÕXÔXÐXÐXÐXÐXˆ "ÐXÑXÔXÐXÕXÔXÑXÔXÐXÐXÕXÔX�sÑXÔXÐXÕXÔX�sÑXÔXÐXÐXÐXÕXÔXÑXÔXÐXÐXÕXÔX�:ÑXÔXÐXÕXÔX�:ÑXÔXÐXÐXÕXÔXˆÑXÔXÕXÔX "ÑXÔXÐXÐXÑXÐXÐXÐXÐXÐXÑXÐXÐX×XÒXÐXÑXÔXÐXÐXÐXÐXÐXÕXÔXÑXÔXÐXÐXÕXÔX­ÑXÔXÐXÕXÔX­ÑXÔXÐXÐXÕXÔXÐ,XÑXÔXÕXÔXÐ)XÑXÔXÐXÐXÑXÐXÐX×XÒXÐXÑXÔXÐXÕXÔXÐXÐXÑXÔXÐXÑXÐXÐXÐXÐXÐXÑXÐXÕXÕXÔXÐXÑXÔXÑXÔXÐXÐXÐXÐXÐXÐXÐXÐXÐXÐXÐXÐXÐXÐXÐXÐXÐXr   c                óx  — t          j        d¦  «                             d¦  «        }t          ||j        |j        ¦  «        \  }}d„ |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t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }d	d
|iz  }	t          t          j        |	¦  «        ¦  «        ‚d x}x}x}}d S )Nr$   r.  c                ó   — h | ]
}|d          ’ŒS ©rº   r‰   )r�   Úps     r   ú	<setcomp>zITestTier1FeatureCoverage.test_t1_path_non_linear_nodes.<locals>.<setcomp>ˆ   s   € Ð'Ð'Ð'˜Q�A�a”DÐ'Ð'Ð'r   r  r¤   )z0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} >= %(py7)srÑ   ©r¦   r.   r/   r0   úassert %(py9)sr2   )r   r?   r@   r   r–   r—   rÑ   rB   rC   rD   rE   rF   rG   rJ   rK   )
rL   r,   rA  r6  rM   rN   rO   rP   rX   rY   s
             r   Útest_t1_path_non_linear_nodesz6TestTier1FeatureCoverage.test_t1_path_non_linear_nodes…   sO  € Ý"Ô+Ð,AÑBÔB×KÒKÈCÑPÔPˆÝ*¨1¨a¬m¸Q¼[ÑIÔI‰ˆˆ4Ø'Ð' $Ð'Ñ'Ô'Ð-�sÐ'Ñ(Ô(Ð-¨AÐ-Ð(¨AÒ-Ð-Ð-Ð-Õ-Ô-Ð-Ð-Ð-Ð-Ð(¨AÐ-Ñ-Ô-Ð-Õ-Ô-Ñ-Ô-Ð-Ð-Õ-Ô-�sÑ-Ô-Ð-Õ-Ô-�sÑ-Ô-Ð-Ð-Õ-Ô-Ð'Ñ-Ô-Õ-Ô-Ð(Ñ-Ô-Õ-Ô-¨AÑ-Ô-Ð-Ð-Ñ-Ð-Ð-Ð-Ð-Ð-Ñ-Ð-Õ-Õ-Ô-Ð-Ñ-Ô-Ñ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ð-r   c                óº  — t          dd¬¦  «                             d¦  «        }t          j        d¦  «                             d¦  «        }g }|j        }t	          |¦  «        }d}||k    }|}|r |j        }	t	          |	¦  «        }
d}|
|k    }|}|�s4t          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
        |¦  «        t          j
        |¦  «        dœz  }dd|iz  }|                     |¦  «         |rù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
        |
¦  «        t          j
        |¦  «        dœz  }dd|iz  }|                     |¦  «         t          j        |d¦  «        i z  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}x}x}	x}
x}}d S )Né0   é$   ©r   r   éX  re   r¹   rÏ   r)   )zV%(py7)s
{%(py7)s = %(py2)s(%(py5)s
{%(py5)s = %(py3)s.encounter_zones
})
} == %(py10)srÑ   Úm_narrow)r.   r½   r²   r0   rn   z%(py12)sro   )z\%(py19)s
{%(py19)s = %(py14)s(%(py17)s
{%(py17)s = %(py15)s.encounter_zones
})
} == %(py22)sÚm_wide)rp   r§   rÇ   rs   r;   z%(py24)srè   r   zassert %(py27)sr=   )r   r@   r?   rØ   rÑ   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   )rL   r`  ra  rM   r´   rO   Ú@py_assert9rª   rQ   r«   rÙ   rU   Ú@py_assert20r›   rÊ   Ú@py_format23Ú@py_format25r\   r]   s                      r   Útest_t1_enc_zone_count_2_or_3z6TestTier1FeatureCoverage.test_t1_enc_zone_count_2_or_3‹   s&  € Ý)°¸2Ð>Ñ>Ô>×GÒGÈÑLÔLˆÝ'Ô0Ð1RÑSÔS×\Ò\Ð]`ÑaÔaˆØVÐV�8Ô+ÐV�sÐ+Ñ,Ô,ÐV°ÐVÐ,°Ò1ÐVÐVÐVÐVÐV¸&Ô:PÐVµcÐ:PÑ6QÔ6QÐVÐUVÐVÐ6QÐUVÒ6VÐVÐVÐVÐVÑVÕVÔVÐVÐVÐVÐVÐ,°ÐVÑVÔVÐVÕVÔVÑVÔVÐVÐVÕVÔV�sÑVÔVÐVÕVÔV�sÑVÔVÐVÐVÐVÕVÔVÑVÔVÐVÐVÕVÔV�8ÑVÔVÐVÕVÔV�8ÑVÔVÐVÐVÕVÔVÐ+ÑVÔVÕVÔVÐ,ÑVÔVÕVÔV°ÑVÔVÐVÐVÑVÐVÐVÐVÐVÐVÑVÐVÐV×VÒVÐVÑVÔVÐVÐVÐVÕVÔVÐVÐVÐVÐVÐ6QÐUVÐVÑVÔVÐVÕVÔVÑVÔVÐVÐVÕVÔVµcÑVÔVÐVÕVÔVµcÑVÔVÐVÐVÐVÕVÔVÑVÔVÐVÐVÕVÔV¸&ÑVÔVÐVÕVÔV¸&ÑVÔVÐVÐVÕVÔVÐ:PÑVÔVÕVÔVÐ6QÑVÔVÕVÔVÐUVÑVÔVÐVÐVÑVÐVÐVÐVÐVÐVÑVÐVÐV×VÒVÐVÑVÔVÐVÕVÔVÐVÐVÑVÔVÐVÑVÐVÐVÐVÐVÐVÑVÐVÕVÕVÔVÐVÑVÔVÑVÔVÐVÐVÐVÐVÐVÐVÐVÐVÐVÐVÐVÐVÐVÐVÐVÐVÐVÐVÐVÐVÐVÐVÐVr   c                ór  — t          j        d¦  «                             d¦  «        }d„ |j        D ¦   «         }g d¢}||k    }|slt	          j        d|fd||f¦  «        t	          j        |¦  «        t	          j        |¦  «        dœz  }dd	|iz  }t          t	          j        |¦  «        ¦  «        ‚d x}x}}d S )
Nre   r_  c                ó   — g | ]	}|j         ‘Œ
S r‰   )Útier)r�   Úezs     r   r�   zLTestTier1FeatureCoverage.test_t1_enc_zone_tiers_assigned.<locals>.<listcomp>’   s   € Ð4Ð4Ð4˜B�”Ð4Ð4Ð4r   )rº   r¹   rÏ   r)   r’   r“   r•   rj   )	r   r?   r@   rØ   rB   rC   rG   rJ   rK   ©rL   r,   rQ   rN   rŸ   r    rx   s          r   Útest_t1_enc_zone_tiers_assignedz8TestTier1FeatureCoverage.test_t1_enc_zone_tiers_assigned�   sá   € Ý"Ô+Ð,MÑNÔN×WÒWÐX[Ñ\Ô\ˆØ4Ð4 !Ô"3Ð4Ñ4Ô4ÐA¸	¸	¸	ÐAÐ4¸	ÒAÐAÐAÐAÕAÔAÐAÐAÐAÐAÐ4¸	ÐAÑAÔAÕAÔAÐ4Ñ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ÐAr   c                ó˜  — t          j        d¦  «                             d¦  «        }d„ |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  }d
d|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}d S )Nr$   r_  c                óz   — h | ]8}|D ]3}|j         t          j        t          j        t          j        fv ¯,|j         ’Œ4Œ9S r‰   ©r‹   r   ÚENCOUNTER_LOWÚENCOUNTER_MEDIUMÚENCOUNTER_HIGHrŒ   s      r   rW  zHTestTier1FeatureCoverage.test_t1_enc_tiles_classified.<locals>.<setcomp>–   s}   € ð  að  að  a S¸Sð  að  a¸ÀAÄKÕT\ÔTjÕltô  mFõ  HPô  H_ð  T`ð  E`ð  E`�Q”[ð  E`ð  E`ð  E`ð  E`r   r¹   r¤   )z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} >= %(py6)srÑ   Ú	enc_types)r¦   r”   r½   rj   úassert %(py8)srl   )r   r?   r@   r˜   rÑ   rB   rC   rD   rE   rF   rG   rJ   rK   )rL   r,   rs  rŸ   rP   r´   rx   ry   s           r   Útest_t1_enc_tiles_classifiedz5TestTier1FeatureCoverage.test_t1_enc_tiles_classified”   sf  € Ý"Ô+Ð,AÑBÔB×KÒKÈCÑPÔPˆð að  a¨A¬Gð  añ  aô  aˆ	Ý�9‰~Œ~Ð" Ð"ˆ~ Ò"Ð"Ð"Ð"Õ"Ô"Ð"Ð"Ð"Ð"ˆ~ Ð"Ñ"Ô"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"�sÑ"Ô"Ð"Õ"Ô"�sÑ"Ô"Ð"Ð"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"�9Ñ"Ô"Ð"Õ"Ô"�9Ñ"Ô"Ð"Ð"Õ"Ô"ˆ~Ñ"Ô"Õ"Ô" Ñ"Ô"Ð"Ð"Ñ"Ð"Ð"Ð"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ð"r   c                óÐ  ‡— t          j        d¦  «                             d¦  «        Šˆfd„‰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}}d S )Nr$   r_  c              3  ó°   •K  — | ]P}d |j         cxk    o|j        cxk     o
‰j        k     nc o%d |j        cxk    o|j        cxk     o
‰j        k     nc V — ŒQdS ©r   N)Úmin_xÚmax_xr   Úmin_yÚmax_yr   )r�   rj  r,   s     €r   r  zKTestTier1FeatureCoverage.test_t1_enc_zones_within_bounds.<locals>.<genexpr>›   s‹   øè è € ÐzÐzÐbd�1˜œÐ5Ð5Ò5Ð5 2¤8Ð5Ð5Ò5Ð5¨a¬gÒ5Ð5Ð5Ð5Ð]¸!¸r¼xÐ:]Ð:]Ò:]Ð:]È"Ì(Ð:]Ð:]Ò:]Ð:]ÐUVÔU]Ò:]Ð:]Ð:]Ð:]ÐzÐzÐzÐzÐzÐzr   r  r  r  )r   r?   r@   rØ   r  rD   rE   rB   rF   rG   rJ   rK   ©rL   rM   rN   r    r,   s       @r   Útest_t1_enc_zones_within_boundsz8TestTier1FeatureCoverage.test_t1_enc_zones_within_bounds™   sè   ø€ Ý"Ô+Ð,AÑBÔB×KÒKÈCÑPÔPˆØzÐzÐzÐzÐhiÔhyÐzÑzÔzÐz�sÐzÑzÔzÐzÐzÐzÐzÐzÕzÔzÑzÔzÐzÐzÕzÔz�sÑzÔzÐzÕzÔz�sÑzÔzÐzÐzÕzÔzÐzÑzÔzÕzÔzÐzÑzÔzÐzÐzÑzÐzÕzÕzÔzÐzÑzÔzÑzÔzÐzÐzÐzÐzÐzÐzÐzr   c                ón  — t          j        d¦  «                             d¦  «        }d„ |j        D ¦   «         }g }t	          |¦  «        }d}||k    }|}|rd„ |D ¦   «         }t          |¦  «        }	|	}|�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  }
dd|
iz  }|                     |¦  «         |r‰ddt          j	        ¦   «         v st          j
        t
          ¦  «        rt          j        t
          ¦  «        ndt          j        |¦  «        t          j        |	¦  «        dœz  }|                     |¦  «         t          j        |d¦  «        i z  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}x}}	d S )Nr$   r_  c                óp   — g | ]3}|D ].}|j         t          j        t          j        t          j        fv ¯,|‘Œ/Œ4S r‰   ro  rŒ   s      r   r�   zGTestTier1FeatureCoverage.test_t1_enc_zones_walkable.<locals>.<listcomp>Ÿ   sp   € ð  Sð  Sð  S�s¨sð  Sð  S¨!°a´kÅhÔF\Õ^fÔ^wõ  zBô  zQð  FRð  7Rð  7R�ð  7Rð  7Rð  7Rð  7Rr   r   c              3  ó$   K  — | ]}|j         V — Œd S rü   )r  rK  s     r   r  zFTestTier1FeatureCoverage.test_t1_enc_zones_walkable.<locals>.<genexpr>    s$   è è € Ð%@Ð%@°Q a¤jÐ%@Ð%@Ð%@Ð%@Ð%@Ð%@r   r3  )z/%(py5)s
{%(py5)s = %(py2)s(%(py3)s)
} > %(py8)srÑ   ÚcellsrN  rƒ   rn   rO  r  rP  rr   rs   rQ  )rL   r,   r‚  rM   r´   r™   rO   rQ   rw   rS   ry   r›   rZ   r{   r|   s                  r   Útest_t1_enc_zones_walkablez3TestTier1FeatureCoverage.test_t1_enc_zones_walkable�   sz  € Ý"Ô+Ð,AÑBÔB×KÒKÈCÑPÔPˆð Sð  S˜aœgð  Sñ  Sô  SˆØ@Ð@�s�5‰zŒzÐ@˜AÐ@ˆz˜AŠ~Ð@Ð@Ð@Ð@Ð@Ð%@Ð%@¸%Ð%@Ñ%@Ô%@Ð@¥#Ð%@Ñ"@Ô"@Ð@Ð"@Ð@Ð@Ñ@Õ@Ô@Ð@Ð@Ð@Ð@ˆz˜AÐ@Ñ@Ô@Ð@Õ@Ô@Ñ@Ô@Ð@Ð@Õ@Ô@�sÑ@Ô@Ð@Õ@Ô@�sÑ@Ô@Ð@Ð@Ð@Õ@Ô@Ñ@Ô@Ð@Ð@Õ@Ô@�5Ñ@Ô@Ð@Õ@Ô@�5Ñ@Ô@Ð@Ð@Õ@Ô@ˆzÑ@Ô@Õ@Ô@˜AÑ@Ô@Ð@Ð@Ñ@Ð@Ð@Ð@Ð@Ð@Ñ@Ð@Ð@×@Ò@Ð@Ñ@Ô@Ð@Ð@Ð@Ð@Ð@Õ@Ô@Ñ@Ô@Ð@Ð@Õ@Ô@¥#Ñ@Ô@Ð@Õ@Ô@¥#Ñ@Ô@Ð@Ð@Õ@Ô@Ð%@Ñ@Ô@Õ@Ô@Ð"@Ñ@Ô@Ð@Ð@Ñ@Ð@Ð@×@Ò@Ð@Ñ@Ô@Ð@Õ@Ô@Ð@Ð@Ñ@Ô@Ð@Ñ@Ð@Ð@Ð@Ð@Ð@Ñ@Ð@Õ@Õ@Ô@Ð@Ñ@Ô@Ñ@Ô@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@r   c           	     óö  — t          j        d¦  «                             d¦  «        }d}|j        }t	          |¦  «        }||k    }d}||k    }|r|�st          j        d||fd|||f¦  «        t          j        |¦  «        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        |¦  «        t          j        |¦  «        d	œz  }d
d|iz  }	t          t          j        |	¦  «        ¦  «        ‚d x}x}x}x}x}}d S )Nr$   é¼  rº   r¹   ©ú<=r‡  )zU%(py1)s <= %(py9)s
{%(py9)s = %(py4)s(%(py7)s
{%(py7)s = %(py5)s.dead_end_points
})
}zV%(py9)s
{%(py9)s = %(py4)s(%(py7)s
{%(py7)s = %(py5)s.dead_end_points
})
} <= %(py11)srÑ   r,   ©r”   r/   r²   r0   r2   r5   úassert %(py13)sr6   )r   r?   r@   Údead_end_pointsrÑ   rB   rC   rG   rD   rE   rF   rJ   rK   ©
rL   r,   rQ   rO   rª   rŸ   rÁ   rN   Ú@py_format12Ú@py_format14s
             r   Útest_t1_dead_ends_countz0TestTier1FeatureCoverage.test_t1_dead_ends_count£   sš  € Ý"Ô+Ð,AÑBÔB×KÒKÈCÑPÔPˆØÐ/˜Ô)Ð/•CÐ)Ñ*Ô*Ð/ˆqÐ*Ò/Ð/¨aÐ/Ð*¨aÒ/Ð/Ð/Ð/Ð/Ñ/Õ/Ô/Ð/Ð/Ð/Ð/Ð/ˆqÐ*¨aÐ/Ñ/Ô/Õ/Ô/ˆqÑ/Ô/Ð/Õ/Ô/Ñ/Ô/Ð/Ð/Õ/Ô/•CÑ/Ô/Ð/Õ/Ô/•CÑ/Ô/Ð/Ð/Ð/Õ/Ô/Ñ/Ô/Ð/Ð/Õ/Ô/˜Ñ/Ô/Ð/Õ/Ô/˜Ñ/Ô/Ð/Ð/Õ/Ô/Ð)Ñ/Ô/Õ/Ô/Ð*Ñ/Ô/Õ/Ô/¨aÑ/Ô/Ð/Ð/Ñ/Ð/Ð/Ð/Ð/Ð/Ñ/Ð/Õ/Õ/Ô/Ð/Ñ/Ô/Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/r   c                óJ  ‡— t          j        d¦  «                             d¦  «        Šg }‰j        }|}|r'ˆfd„‰j        D ¦   «         }t          |¦  «        }| }|}|�s7ddt          j        ¦   «         v st          j	        ‰¦  «        rt          j
        ‰¦  «        ndt          j
        |¦  «        dœz  }|                     |¦  «         |r‰ddt          j        ¦   «         v st          j	        t
          ¦  «        rt          j
        t
          ¦  «        ndt          j
        |¦  «        t          j
        |¦  «        d	œz  }|                     |¦  «         t          j        |d
¦  «        i z  }	dd|	iz  }
t          t          j        |
¦  «        ¦  «        ‚d x}x}x}x}x}}d S )Nr$   r…  c              3  óT   •K  — | ]"\  }}‰j                              ||¦  «        V — Œ#d S rü   ©Ú	boss_roomÚcontains©r�   ÚdxÚdyr,   s      €r   r  zPTestTier1FeatureCoverage.test_t1_dead_ends_secluded_from_boss.<locals>.<genexpr>©   s9   øè è € Ð&dÐ&dÉÈÈB q¤{×';Ò';¸BÀÑ'CÔ'CÐ&dÐ&dÐ&dÐ&dÐ&dÐ&dr   ú&%(py4)s
{%(py4)s = %(py2)s.boss_room
}r,   ©r.   r/   ú+not %(py10)s
{%(py10)s = %(py6)s(%(py8)s)
}r)  ©rj   rl   rn   r   r>  rp   )r   r?   r@   r’  rŠ  r)  rD   rE   rB   rF   rG   rH   rI   rJ   rK   ©rL   rM   rN   rQ   r™   rb  rv   r    rŒ  rÊ   rz   r,   s              @r   Ú$test_t1_dead_ends_secluded_from_bossz=TestTier1FeatureCoverage.test_t1_dead_ends_secluded_from_boss§   sÙ  ø€ Ý"Ô+Ð,AÑBÔB×KÒKÈCÑPÔPˆØdÐdˆqŒ{Ðdˆ{Ðdˆ{ÐdÐ&dÐ&dÐ&dÐ&dÐRSÔRcÐ&dÑ&dÔ&dÐd¥3Ð&dÑ#dÔ#dÐdÐ#dÐdÐdÐdÐdÐdÑdÐdÐdÕdÔdÑdÔdÐdÐdÕdÔdˆqÑdÔdÐdÕdÔdˆqÑ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¥3ÑdÔdÐdÕdÔd¥3Ñ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Ð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Ðdr   c                óÐ  ‡— t          j        d¦  «                             d¦  «        Šˆfd„‰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}}d S )Nr$   r…  c              3  óÄ   •K  — | ]Z\  }}‰j         |         |         j        t          j        t          j        t          j        fv o‰j         |         |         j        V — Œ[d S rü   )r˜   r‹   r   r  ÚPOIr  r  r”  s      €r   r  zQTestTier1FeatureCoverage.test_t1_dead_ends_have_floor_clearing.<locals>.<genexpr>­   s…   øè è € ð  \ð  \ñ  @Fð  @Bð  DF�1”7˜2”;˜r”?Ô,µ´ÅÄÍxÌ}Ð0]Ð]ÐzÐbcÔbiÐjlÔbmÐnpÔbqÔbzð  \ð  \ð  \ð  \ð  \ð  \r   r  r  r  ©r   r?   r@   rŠ  r  rD   rE   rB   rF   rG   rJ   rK   r}  s       @r   Ú%test_t1_dead_ends_have_floor_clearingz>TestTier1FeatureCoverage.test_t1_dead_ends_have_floor_clearing«   sª  ø€ Ý"Ô+Ð,AÑBÔB×KÒKÈCÑPÔPˆð \ð  \ð  \ð  \ð  JKô  J[ð  \ñ  \ô  \ð  	\�sð  \ñ  \ô  \ð  	\ð  \ð  	\ð  	\ð  	\õ  	\ô  	\ñ  	\ô  	\ð  	\ð  	\õ  	\ô  	\�sñ  	\ô  	\ð  	\õ  	\ô  	\�sñ  	\ô  	\ð  	\ð  	\õ  	\ô  	\ð  \ñ  	\ô  	\õ  	\ô  	\ð  \ñ  	\ô  	\ð  	\ð  	\ñ  	\ð  	\õ  	\õ  	\ô  	\ð  	\ñ  	\ô  	\ñ  	\ô  	\ð  	\ð  	\ð  	\ð  	\ð  	\ð  	\ð  	\r   c                óÐ  ‡— t          j        d¦  «                             d¦  «        Šˆfd„‰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}}d S )Nr$   r…  c              3  óP   •K  — | ] }t          ‰‰j        |¦  «        d          V — Œ!dS rx  )r   r–   )r�   Úder,   s     €r   r  zOTestTier1FeatureCoverage.test_t1_dead_ends_connected_to_path.<locals>.<genexpr>±   s7   øè è € ÐaÐaÈÕ+¨A¨q¬}¸bÑAÔAÀ!ÔDÐaÐaÐaÐaÐaÐar   r  r  r  r   r}  s       @r   Ú#test_t1_dead_ends_connected_to_pathz<TestTier1FeatureCoverage.test_t1_dead_ends_connected_to_path¯   sç   ø€ Ý"Ô+Ð,AÑBÔB×KÒKÈCÑPÔPˆØaÐaÐaÐaÈqÔO`ÐaÑaÔaÐa�sÐaÑaÔaÐaÐaÐaÐaÐaÕaÔaÑaÔaÐaÐaÕaÔa�sÑaÔaÐaÕaÔa�sÑ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Ðar   c                óÐ  ‡— t          j        d¦  «                             d¦  «        Šˆfd„‰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}}d S )Nr$   r…  c              3  ó~   •K  — | ]7\  }}d |cxk    o‰j         d z
  k     nc od |cxk    o‰j        d z
  k     nc V — Œ8dS ©rº   Nr^  r”  s      €r   r  zGTestTier1FeatureCoverage.test_t1_dead_ends_terminate.<locals>.<genexpr>µ   óp   øè è € ÐdÐdÉÈÈB�1˜Ð(Ð(Ò(Ð(˜QœW q™[Ò(Ð(Ð(Ð(ÐC¨Q°"Ð-CÐ-CÒ-CÐ-C°q´xÀ!±|Ò-CÐ-CÐ-CÐ-CÐdÐdÐdÐdÐdÐdr   r  r  r  r   r}  s       @r   Útest_t1_dead_ends_terminatez4TestTier1FeatureCoverage.test_t1_dead_ends_terminate³   sè   ø€ Ý"Ô+Ð,AÑBÔB×KÒKÈCÑPÔPˆØdÐdÐdÐdÐRSÔRcÐdÑdÔdÐd�sÐdÑdÔdÐdÐdÐdÐdÐdÕdÔdÑdÔdÐdÐdÕdÔd�sÑdÔdÐdÕdÔd�sÑ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Ðdr   c                ó´  — t          j        d¦  «                             d¦  «        }d„ |j        D ¦   «         }g }t	          |¦  «        }d}||k    }|}|r)|j        }|d         j        |d         j        f}	||	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  }dd|iz  }|                     |¦  «         |rž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          j        |d¦  «        i z  }dd|iz  }t!          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}x}x}
}	d S )Nr$   é   c                óF   — g | ]}|D ]}|j         t          j        k    ¯|‘ŒŒS r‰   )r‹   r   Ú	BOSS_GATErŒ   s      r   r�   zJTestTier1FeatureCoverage.test_t1_boss_gate_exactly_one.<locals>.<listcomp>º   s4   € ÐXÐXÐX�s¨sÐXÐX¨!°a´kÅXÔEWÒ6WÐ6W�Ð6WÐ6WÐ6WÐ6Wr   rº   r   r)   ©z0%(py5)s
{%(py5)s = %(py2)s(%(py3)s)
} == %(py8)srÑ   ÚgatesrN  rƒ   rn   )z5%(py14)s
{%(py14)s = %(py12)s.boss_gate
} == %(py17)sr,   )ro   rp   rÇ   ú%(py19)srs   úassert %(py22)sr;   )r   r?   r@   r˜   rÑ   r—   r   rÿ   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   )rL   r,   r°  rM   r´   r™   rO   rQ   rw   r«   rS   ry   r›   r{   r|   rœ   rd  s                    r   Útest_t1_boss_gate_exactly_onez6TestTier1FeatureCoverage.test_t1_boss_gate_exactly_one¸   s¥  € Ý"Ô+Ð,AÑBÔB×KÒKÈCÑPÔPˆØXÐX˜aœgÐXÑXÔXˆØJÐJ�s�5‰zŒzÐJ˜QÐJˆz˜QŠÐJÐJÐJÐJÐJ 1¤;ÐJ°5¸´8´:¸uÀQ¼x¼zÐ2JÐJ ;Ð2JÒ#JÐJÐJÐJÐJÑJÕJÔJÐJÐJÐJÐJˆz˜QÐJÑJÔJÐJÕJÔJÑJÔJÐJÐJÕJÔJ�sÑJÔJÐJÕJÔJ�sÑJÔJÐJÐJÐJÕJÔJÑJÔJÐJÐJÕJÔJ�5ÑJÔJÐJÕJÔJ�5ÑJÔJÐJÐJÕJÔJˆzÑJÔJÕJÔJ˜QÑJÔJÐJÐJÑJÐJÐJÐJÐJÐJÑJÐJÐJ×JÒJÐJÑJÔJÐJÐJÐJÕJÔJÐJÐJÐJÐJ ;Ð2JÐJÑJÔJÐJÕJÔJÑJÔJÐJÐJÕJÔJ 1ÑJÔJÐJÕJÔJ 1ÑJÔJÐJÐJÕJÔJ ;ÑJÔJÕJÔJÐ2JÑJÔJÐJÐJÑJÐJÐJÐJÐJÐJÑJÐJÐJ×JÒJÐJÑJÔJÐJÕJÔJÐJÐJÑJÔJÐJÑJÐJÐJÐJÐJÐJÑJÐJÕJÕJÔJÐJÑJÔJÑJÔJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJr   c                óv  — t          j        d¦  «                             d¦  «        }|j        \  }}g }|j        |         |         }|j        }d}||u }|}	|r"|j        |         |         }
|
j        }d}||u }|}	|	�s(t          j        d|fd||f¦  «        t          j	        |¦  «        t          j	        |¦  «        t          j	        |¦  «        dœz  }dd	|iz  }| 
                    |¦  «         |rst          j        d|fd
||f¦  «        t          j	        |
¦  «        t          j	        |¦  «        t          j	        |¦  «        dœz  }dd|iz  }| 
                    |¦  «         t          j        |d¦  «        i z  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}	x}x}x}x}x}x}
x}x}}d S )Nr$   r¬  FTr/  )z0%(py5)s
{%(py5)s = %(py3)s.walkable
} is %(py8)sr  rƒ   rn   )z9%(py15)s
{%(py15)s = %(py13)s.blocks_vision
} is %(py18)s)r6   r§   r9   r…   r:   r   r†   r‡   )r   r?   r@   r—   r˜   r  r(  rB   rC   rG   rH   rI   rJ   rK   )rL   r,   ÚgxÚgyrM   rŸ   r´   r™   rO   rQ   rR   rT   rš   r«   ry   r›   r[   rœ   r�   rž   s                       r   Ú#test_t1_boss_gate_initially_blockedz<TestTier1FeatureCoverage.test_t1_boss_gate_initially_blocked½   s(  € Ý"Ô+Ð,AÑBÔB×KÒKÈCÑPÔPˆØ”‰ˆˆBØZÐZˆqŒw�rŒ{˜2ŒÐZˆÔ'ÐZ¨5ÐZÐ'¨5Ð0ÐZÐZÐZÐZÐZ°Q´W¸R´[À´_ÐZ°_Ô5RÐZÐVZÐZÐ5RÐVZÐ5ZÐZÐZÐZÐZÑZÕZÔZÐZÐZÐZÐZÐ'¨5ÐZÑZÔZÕZÔZˆÑZÔZÕZÔZÐ'ÑZÔZÕZÔZ¨5ÑZÔZÐZÐZÑZÐZÐZÐZÐZÐZÑZÐZÐZ×ZÒZÐZÑZÔZÐZÐZÐZÕZÔZÐZÐZÐZÐZÐ5RÐVZÐZÑZÔZÕZÔZ°_ÑZÔZÕZÔZÐ5RÑZÔZÕZÔZÐVZÑZÔZÐZÐZÑZÐZÐZÐZÐZÐZÑZÐZÐZ×ZÒZÐZÑZÔZÐZÕZÔZÐZÐZÑZÔZÐZÑZÐZÐZÐZÐZÐZÑZÐZÕZÕZÔZÐZÑZÔZÑZÔZÐZÐZÐZÐZÐZÐZÐZÐZÐZÐZÐZÐZÐZÐZÐZÐZÐZÐZÐZÐZÐZÐZÐZr   c                óÖ  ‡‡	— t          j        d¦  «                             d¦  «        Š	‰	j        Š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}}ˆfd	„t          ‰j        ‰j        ‰j        z   ¦  «        D ¦   «         ˆfd
„t          ‰j        ‰j        ‰j        z   ¦  «        D ¦   «         z   }ˆ	fd„|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}}d S )Nr$   r¬  )úis not)z%(py0)s is not %(py3)sÚbr)r¦   r½   zassert %(py5)sr²   c                óP   •— g | ]"}‰j         ‰j         ‰j        z   d z
  fD ]}||f‘ŒŒ#S rU  )rÿ   rm   )r�   r   rÿ   rº  s      €r   r�   zPTestTier1FeatureCoverage.test_t1_boss_arena_perimeter_sealed.<locals>.<listcomp>Æ   ó@   ø€ Ð_Ð_Ð_ ÈÌÈbÌdÐUWÔUYÉkÐ\]ÉoÐG^Ð_Ð_À!�a˜�VÐ_Ð_Ð_Ð_r   c                óP   •— g | ]"}‰j         ‰j         ‰j        z   d z
  fD ]}||f‘ŒŒ#S rU  )r   ri   )r�   rÿ   r   rº  s      €r   r�   zPTestTier1FeatureCoverage.test_t1_boss_arena_perimeter_sealed.<locals>.<listcomp>Ç   r¼  r   c              3  ó„   •K  — | ]:\  }}||f‰j         k    ¯‰j        |         |         j        t          j        k    V — Œ;d S rü   )r—   r˜   r‹   r   r   )r�   r   rÿ   r,   s      €r   r  zOTestTier1FeatureCoverage.test_t1_boss_arena_perimeter_sealed.<locals>.<genexpr>È   sP   øè è € ÐkÐkÁÀÀ1ÐVWÐYZÐU[Ð_`Ô_jÒUjÐUj�1”7˜1”:˜a”=Ô*­h¬mÒ;ÐUjÐUjÐUjÐUjÐkÐkr   r  r  r  )r   r?   r@   r’  rB   rC   rD   rE   rF   rG   rJ   rK   rþ   r   ri   rÿ   rm   r  )
rL   rŸ   rM   Ú@py_format4rµ   Ú	perimeterrN   r    rº  r,   s
           @@r   Ú#test_t1_boss_arena_perimeter_sealedz<TestTier1FeatureCoverage.test_t1_boss_arena_perimeter_sealedÂ   s  øø€ Ý"Ô+Ð,AÑBÔB×KÒKÈCÑPÔPˆØŒ[ˆØÐˆr˜ˆ~ÐÐÐÕÔÐÐÐÐˆr˜ÐÑÔÐÕÔÑÔÐÐÕÔˆrÑÔÐÕÔˆrÑÔÐÐÕÔ˜ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØ_Ð_Ð_Ð_¥U¨2¬4°´¸¼±Ñ%=Ô%=Ð_Ñ_Ô_Ø_Ð_Ð_Ð_¥U¨2¬4°´¸¼±Ñ%=Ô%=Ð_Ñ_Ô_ñ`ˆ	àkÐkÐkÐkÈ	ÐkÑkÔkÐk�sÐkÑkÔkÐkÐkÐkÐkÐkÕkÔkÑkÔkÐkÐkÕkÔk�sÑkÔkÐkÕkÔk�sÑkÔkÐkÐkÕkÔkÐkÑkÔkÕkÔkÐkÑkÔkÐkÐkÑkÐkÕkÕkÔkÐkÑkÔkÑkÔkÐkÐkÐkÐkÐkÐkÐkr   c                óF  — t          j        d¦  «                             d¦  «        }d„ |j        D ¦   «         }d„ |j        D ¦   «         }g }t	          |¦  «        }d}||k    }|}|r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  }dd|iz  }|                     |¦  «         |ræ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  }dd|iz  }|                     |¦  «         t          j        |d¦  «        i z  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}x}	x}}
d S )Nr$   r¬  c                óF   — g | ]}|D ]}|j         t          j        k    ¯|‘ŒŒS r‰   )r‹   r   Ú
BOSS_ALTARrŒ   s      r   r�   zNTestTier1FeatureCoverage.test_t1_boss_arena_interior_altar.<locals>.<listcomp>Ì   s4   € ÐZÐZÐZ˜°ÐZÐZ¨1°q´{ÅhÔFYÒ7YÐ7Y�!Ð7YÐ7YÐ7YÐ7Yr   c                óF   — g | ]}|D ]}|j         t          j        k    ¯|‘ŒŒS r‰   )r‹   r   ÚRUNIC_FLOORrŒ   s      r   r�   zNTestTier1FeatureCoverage.test_t1_boss_arena_interior_altar.<locals>.<listcomp>Í   s4   € ÐZÐZÐZ�s¨sÐZÐZ¨!°a´kÅXÔEYÒ6YÐ6Y�Ð6YÐ6YÐ6YÐ6Yr   rº   r  r)   r¯  rÑ   ÚaltarsrN  rƒ   rn   r¤   )z5%(py15)s
{%(py15)s = %(py12)s(%(py13)s)
} >= %(py18)sÚrunic)ro   r6   r§   r9   r…   r:   r   r†   r‡   )r   r?   r@   r˜   rÑ   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   )rL   r,   rÇ  rÈ  rM   r´   r™   rO   rQ   rT   rš   r«   ry   r›   r[   rœ   r�   rž   s                     r   Ú!test_t1_boss_arena_interior_altarz:TestTier1FeatureCoverage.test_t1_boss_arena_interior_altarÊ   sä  € Ý"Ô+Ð,AÑBÔB×KÒKÈCÑPÔPˆØZÐZ˜qœwÐZÑZÔZˆØZÐZ˜aœgÐZÑZÔZˆØ3Ð3�s�6‰{Œ{Ð3˜aÐ3ˆ{˜aÒÐ3Ð3Ð3Ð3Ð3¥C¨¡J¤JÐ3°!Ð3 J°!¢OÐ3Ð3Ð3Ð3Ñ3Õ3Ô3Ð3Ð3Ð3Ð3ˆ{˜aÐ3Ñ3Ô3Ð3Õ3Ô3Ñ3Ô3Ð3Ð3Õ3Ô3�sÑ3Ô3Ð3Õ3Ô3�sÑ3Ô3Ð3Ð3Ð3Õ3Ô3Ñ3Ô3Ð3Ð3Õ3Ô3�6Ñ3Ô3Ð3Õ3Ô3�6Ñ3Ô3Ð3Ð3Õ3Ô3ˆ{Ñ3Ô3Õ3Ô3˜aÑ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 J°!Ð3Ñ3Ô3Ð3Õ3Ô3Ñ3Ô3Ð3Ð3Õ3Ô3¥CÑ3Ô3Ð3Õ3Ô3¥CÑ3Ô3Ð3Ð3Ð3Õ3Ô3Ñ3Ô3Ð3Ð3Õ3Ô3¨Ñ3Ô3Ð3Õ3Ô3¨Ñ3Ô3Ð3Ð3Õ3Ô3 JÑ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Ñ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Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ð3r   c                ó0  — t          j        d¦  «                             d¦  «        }|j        \  }}t          j        dc|j        |         |         _        |j        |         |         _        |j        |         |         }|j        }d}||u }|st          j
        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }	t          t          j        |	¦  «        ¦  «        ‚d x}x}x}}d S )	Nr$   r¬  Tr/  )z0%(py3)s
{%(py3)s = %(py1)s.walkable
} is %(py6)s)r”   r½   rj   rt  rl   )r   r?   r@   r—   r   r  r˜   r‹   r  rB   rC   rG   rJ   rK   )
rL   r,   rµ  r¶  rQ   rŸ   rP   r´   rx   ry   s
             r   Ú test_t1_boss_gate_breach_mutatesz9TestTier1FeatureCoverage.test_t1_boss_gate_breach_mutatesÐ   s$  € Ý"Ô+Ð,AÑBÔB×KÒKÈCÑPÔPˆØ”‰ˆˆBÝ>F¼nÈdÐ;ˆŒ�Œ�BŒÔ! 1¤7¨2¤;¨r¤?Ô#;ØŒw�rŒ{˜2ŒÐ/ˆÔ'Ð/¨4Ð/Ð'¨4Ð/Ð/Ð/Ð/Õ/Ô/Ð/Ð/Ð/Ð/Ð'¨4Ð/Ñ/Ô/Õ/Ô/ˆÑ/Ô/Õ/Ô/Ð'Ñ/Ô/Õ/Ô/¨4Ñ/Ô/Ð/Ð/Ñ/Ð/Ð/Ð/Ð/Ð/Ñ/Ð/Õ/Õ/Ô/Ð/Ñ/Ô/Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/r   c           	     óö  — t          j        d¦  «                             d¦  «        }d}|j        }t	          |¦  «        }||k    }d}||k    }|r|�st          j        d||fd|||f¦  «        t          j        |¦  «        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        |¦  «        t          j        |¦  «        d	œz  }d
d|iz  }	t          t          j        |	¦  «        ¦  «        ‚d x}x}x}x}x}}d S )Nr$   é„  rº   rÏ   r†  )zP%(py1)s <= %(py9)s
{%(py9)s = %(py4)s(%(py7)s
{%(py7)s = %(py5)s.poi_points
})
}zQ%(py9)s
{%(py9)s = %(py4)s(%(py7)s
{%(py7)s = %(py5)s.poi_points
})
} <= %(py11)srÑ   r,   rˆ  r‰  r6   )r   r?   r@   r×   rÑ   rB   rC   rG   rD   rE   rF   rJ   rK   r‹  s
             r   Útest_t1_poi_count_1_to_3z1TestTier1FeatureCoverage.test_t1_poi_count_1_to_3×   s—  € Ý"Ô+Ð,AÑBÔB×KÒKÈCÑPÔPˆØÐ*˜œÐ*•C˜Ñ%Ô%Ð*ˆqÐ%Ò*Ð*¨Ð*Ð%¨Ò*Ð*Ð*Ð*Ð*Ñ*Õ*Ô*Ð*Ð*Ð*Ð*Ð*ˆqÐ%¨Ð*Ñ*Ô*Õ*Ô*ˆqÑ*Ô*Ð*Õ*Ô*Ñ*Ô*Ð*Ð*Õ*Ô*•CÑ*Ô*Ð*Õ*Ô*•CÑ*Ô*Ð*Ð*Ð*Õ*Ô*Ñ*Ô*Ð*Ð*Õ*Ô*˜Ñ*Ô*Ð*Õ*Ô*˜Ñ*Ô*Ð*Ð*Õ*Ô*˜Ñ*Ô*Õ*Ô*Ð%Ñ*Ô*Õ*Ô*¨Ñ*Ô*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*r   c                óÐ  ‡— t          j        d¦  «                             d¦  «        Šˆfd„‰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}}d S )Nr$   rÍ  c              3  ól   •K  — | ].\  }}}‰j         |         |         j        t          j        k    V — Œ/d S rü   )r˜   r‹   r   rŸ  ©r�   ÚpxÚpyrA  r,   s       €r   r  zATestTier1FeatureCoverage.test_t1_poi_tile_type.<locals>.<genexpr>Ý   s=   øè è € Ð[Ð[ÁÀÀRÈ�1”7˜2”;˜r”?Ô,µ´Ò<Ð[Ð[Ð[Ð[Ð[Ð[r   r  r  r  ©r   r?   r@   r×   r  rD   rE   rB   rF   rG   rJ   rK   r}  s       @r   Útest_t1_poi_tile_typez.TestTier1FeatureCoverage.test_t1_poi_tile_typeÛ   sæ   ø€ Ý"Ô+Ð,AÑBÔB×KÒKÈCÑPÔPˆØ[Ð[Ð[Ð[ÈaÌlÐ[Ñ[Ô[Ð[�sÐ[Ñ[Ô[Ð[Ð[Ð[Ð[Ð[Õ[Ô[Ñ[Ô[Ð[Ð[Õ[Ô[�sÑ[Ô[Ð[Õ[Ô[�sÑ[Ô[Ð[Ð[Õ[Ô[Ð[Ñ[Ô[Õ[Ô[Ð[Ñ[Ô[Ð[Ð[Ñ[Ð[Õ[Õ[Ô[Ð[Ñ[Ô[Ñ[Ô[Ð[Ð[Ð[Ð[Ð[Ð[Ð[r   c                óÐ  ‡— t          j        d¦  «                             d¦  «        Šˆfd„‰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}}d S )Nr$   rÍ  c              3  óP   •K  — | ] \  }}}‰j         |         |         j        V — Œ!d S rü   )r˜   r  rÑ  s       €r   r  z@TestTier1FeatureCoverage.test_t1_poi_walkable.<locals>.<genexpr>á   s6   øè è € ÐJÐJ±	°°B¸�1”7˜2”;˜r”?Ô+ÐJÐJÐJÐJÐJÐJr   r  r  r  rÔ  r}  s       @r   Útest_t1_poi_walkablez-TestTier1FeatureCoverage.test_t1_poi_walkableß   sæ   ø€ Ý"Ô+Ð,AÑBÔB×KÒKÈCÑPÔPˆØJÐJÐJÐJ¸Q¼\ÐJÑJÔJÐJ�sÐJÑJÔJÐJÐJÐJÐJÐJÕJÔJÑJÔJÐJÐJÕJÔJ�sÑJÔJÐJÕJÔJ�sÑJÔJÐJÐJÕJÔJÐJÑJÔJÕJÔJÐJÑJÔJÐJÐJÑJÐJÕJÕJÔJÐJÑJÔJÑJÔJÐJÐJÐJÐJÐJÐJÐJr   c                óJ  ‡— t          j        d¦  «                             d¦  «        Šg }‰j        }|}|r'ˆfd„‰j        D ¦   «         }t          |¦  «        }| }|}|�s7ddt          j        ¦   «         v st          j	        ‰¦  «        rt          j
        ‰¦  «        ndt          j
        |¦  «        dœz  }|                     |¦  «         |r‰ddt          j        ¦   «         v st          j	        t
          ¦  «        rt          j
        t
          ¦  «        ndt          j
        |¦  «        t          j
        |¦  «        d	œz  }|                     |¦  «         t          j        |d
¦  «        i z  }	dd|	iz  }
t          t          j        |
¦  «        ¦  «        ‚d x}x}x}x}x}}d S )Nr$   rÍ  c              3  óV   •K  — | ]#\  }}}‰j                              ||¦  «        V — Œ$d S rü   r‘  rÑ  s       €r   r  zJTestTier1FeatureCoverage.test_t1_poi_outside_boss_arena.<locals>.<genexpr>å   s<   øè è € Ð&bÐ&bÉ	ÈÈBÐPQ q¤{×';Ò';¸BÀÑ'CÔ'CÐ&bÐ&bÐ&bÐ&bÐ&bÐ&br   r—  r,   r˜  r™  r)  rš  r   r>  rp   )r   r?   r@   r’  r×   r)  rD   rE   rB   rF   rG   rH   rI   rJ   rK   r›  s              @r   Útest_t1_poi_outside_boss_arenaz7TestTier1FeatureCoverage.test_t1_poi_outside_boss_arenaã   sÙ  ø€ Ý"Ô+Ð,AÑBÔB×KÒKÈCÑPÔPˆØbÐbˆqŒ{Ðbˆ{Ðbˆ{ÐbÐ&bÐ&bÐ&bÐ&bÐUVÔUaÐ&bÑ&bÔ&bÐb¥3Ð&bÑ#bÔ#bÐbÐ#bÐbÐbÐbÐbÐbÑbÐbÐbÕbÔbÑbÔbÐbÐbÕbÔbˆqÑbÔbÐbÕbÔbˆqÑ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¥3ÑbÔbÐbÕbÔb¥3Ñ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ÑbÔbÑbÔbÐbÐbÐbÐbÐbÐbÐbÐbÐbÐbÐbÐbÐbÐbÐbr   c                óÊ  — t          j        d¦  «                             d¦  «        }d„ |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}}d S )Nr$   rÍ  c              3  ó&   K  — | ]\  }}}|d v V — ŒdS )>   Úcache_shrineÚmerchant_postÚancient_tabletNr‰   )r�   rA  Úks      r   r  zCTestTier1FeatureCoverage.test_t1_poi_valid_kinds.<locals>.<genexpr>é   s2   è è € ÐhÐhÑPWÐPQÐSTÐVW�1ÐKÐKÐhÐhÐhÐhÐhÐhr   r  r  r  rÔ  )rL   r,   rM   rN   r    s        r   Útest_t1_poi_valid_kindsz0TestTier1FeatureCoverage.test_t1_poi_valid_kindsç   sá   € Ý"Ô+Ð,AÑBÔB×KÒKÈCÑPÔPˆØhÐhÐ[\Ô[gÐhÑhÔhÐh�sÐhÑhÔhÐhÐhÐhÐhÐhÕhÔhÑhÔhÐhÐhÕhÔh�sÑhÔhÐhÕhÔh�sÑhÔhÐhÐhÕhÔhÐhÑhÔhÕhÔhÐhÑhÔhÐhÐhÑhÐhÕhÕhÔhÐhÑhÔhÑhÔhÐhÐhÐhÐhÐhÐhÐhr   c                ó  — t          j        d¦  «                             d¦  «        }t          d„ |j        D ¦   «         ¦  «        }|j        }|j        }d}d}t          |||||¦  «        }|j        d         d         }|j        }	|	j	        }
||
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	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        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |	¦  «        t          j        |
¦  «        dœz  }dd|iz  }t!          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}x}x}x}	}
d S )Nr$   éo   c              3  ó8   K  — | ]}|D ]}|j         j        V — ŒŒd S rü   ©r‹   r   rŒ   s      r   r  zMTestTier1FeatureCoverage.test_t1_client_row_major_indexing.<locals>.<genexpr>î   ó4   è è € ÐFÐF¨#À#ÐFÐF¸Q�A”KÔ%ÐFÐFÐFÐFÐFÐFÐFr   é
   rÐ   r)   )zÍ%(py13)s
{%(py13)s = %(py0)s(%(py1)s, %(py4)s
{%(py4)s = %(py2)s.width
}, %(py7)s
{%(py7)s = %(py5)s.height
}, %(py9)s, %(py11)s)
} == %(py20)s
{%(py20)s = %(py18)s
{%(py18)s = %(py16)s.tile_type
}.value
}r   Úrawr,   )r¦   r”   r.   r/   r²   r0   r2   r5   r6   r7   r9   r:   r²  r;   )r   r?   r@   r   r˜   r   r   r   r‹   r   rB   rC   rD   rE   rF   rG   rJ   rK   )rL   r,   ré  rN   rO   rª   rÁ   rR   rS   rš   rÚ   rT   rœ   rd  s                 r   Ú!test_t1_client_row_major_indexingz:TestTier1FeatureCoverage.test_t1_client_row_major_indexingì   s“  € Ý"Ô+Ð,AÑBÔB×KÒKÈCÑPÔPˆÝÐFÐF°´ÐFÑFÔFÑFÔFˆØ'(¤wÐb°´Ðb¸"Ðb¸aÐbÕ! # w°¸"¸aÑ@Ô@ÐbÀAÄGÈAÄJÈrÄNÐbÀNÔD\ÐbÐD\ÔDbÐbÐ@ÐDbÒbÐbÐbÑbÕbÔbÐbÐbÐbÐbÐ@ÐDbÐ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ÐbÐbÕbÔb qÑbÔbÐbÕbÔb qÑbÔbÐbÐbÕbÔb wÑ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¸aÑbÔbÕbÔbÐ@ÑbÔbÕbÔbÀNÑbÔbÕbÔbÐD\ÑbÔbÕbÔbÐDbÑ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                ó¨  — t          j        d¦  «                             d¦  «        }t          d„ |j        D ¦   «         ¦  «        }|j        }|j        }|j        d         }|j        d         }t          |||||¦  «        }d}||v }	|	�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
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        |¦  «        t          j        |¦  «        t          j        |¦  «        dœ
z  }
dd|
iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}x}	}d S )Nr$   rä  c              3  ó8   K  — | ]}|D ]}|j         j        V — ŒŒd S rü   ræ  rŒ   s      r   r  zQTestTier1FeatureCoverage.test_t1_client_get_tile_inside_bounds.<locals>.<genexpr>ó   rç  r   r   rº   )rº   é   r  )z�%(py13)s
{%(py13)s = %(py0)s(%(py1)s, %(py4)s
{%(py4)s = %(py2)s.width
}, %(py7)s
{%(py7)s = %(py5)s.height
}, %(py9)s, %(py11)s)
} in %(py16)sr   ré  r,   )
r¦   r”   r.   r/   r²   r0   r2   r5   r6   r7   r  r9   )r   r?   r@   r   r˜   r   r   r–   r   rB   rC   rD   rE   rF   rG   rJ   rK   )rL   r,   ré  rN   rO   rª   rÁ   rR   rS   rT   rZ   r[   s               r   Ú%test_t1_client_get_tile_inside_boundsz>TestTier1FeatureCoverage.test_t1_client_get_tile_inside_boundsñ   sc  € Ý"Ô+Ð,AÑBÔB×KÒKÈCÑPÔPˆÝÐFÐF°´ÐFÑFÔFÑFÔFˆØ'(¤wÐh°´Ðh¸!¼-ÈÔ:JÐhÈAÌMÐZ[ÔL\ÐhÕ! # w°Ð:JÐL\Ñ]Ô]ÐhÐahÐhÐ]ÐahÐhÐhÐhÑhÕhÔhÐhÐhÐhÐhÐ]ÐahÐhÑhÔhÐhÕhÔhÑhÔhÐhÐhÕhÔhÕ!ÑhÔhÐhÕhÔhÕ!ÑhÔhÐhÐhÐhÕhÔhÑhÔhÐhÐhÕhÔh #ÑhÔhÐhÕhÔh #ÑhÔhÐhÐhÐhÕhÔhÑhÔhÐhÐhÕhÔh qÑhÔhÐhÕhÔh qÑhÔhÐhÐhÕhÔh wÑhÔhÐhÕhÔhÑhÔhÐhÐhÕhÔh°ÑhÔhÐhÕhÔh°ÑhÔhÐhÐhÕhÔh°ÑhÔhÕhÔhÐ:JÑhÔhÕhÔhÐL\ÑhÔhÕhÔhÐ]ÑhÔhÕhÔhÐahÑhÔhÐhÐhÑhÐhÐhÐhÐhÐhÑhÐhÕhÕhÔhÐhÑhÔhÑhÔhÐhÐhÐhÐhÐhÐhÐhÐhÐhÐhÐhÐhÐhÐhÐhÐhÐhr   c                ó^  — t          d¦  «        }g }d}d}d}| }d}t          |||||¦  «        }d}	||	k    }
|
}|
r%d}d}d}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        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |	¦  «        dœz  }dd|iz  }|                     |¦  «         |
�r2t          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        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }|                     |¦  «         t          j	        |d¦  «        i z  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}x}x}x}x}
x}	x}x}x}x}x}x}}d S )NiŒ
  r&   r'   rº   r   r¹   r)   )zY%(py14)s
{%(py14)s = %(py2)s(%(py3)s, %(py5)s, %(py7)s, -%(py9)s, %(py12)s)
} == %(py17)sr   ré  )r.   r½   r²   r0   r2   ro   rp   rÇ   r±  rs   )z]%(py32)s
{%(py32)s = %(py21)s(%(py22)s, %(py24)s, %(py26)s, %(py28)s, %(py30)s)
} == %(py35)s)rÒ   r;   rè   ré   rê   r>   rÓ   rÕ   z%(py37)sÚpy37zassert %(py40)srï   ©r   r   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   )rL   ré  rM   r´   rO   rª   rÁ   rv   rw   r«   rS   rQ   rW   rò   rñ   rÞ   rß   rà   ró   r{   r|   Ú@py_format36rã   rõ   rö   s                            r   Ú*test_t1_client_get_tile_out_of_bounds_wallzCTestTier1FeatureCoverage.test_t1_client_get_tile_out_of_bounds_wallö   s¯  € Ý�G‰nŒnˆØjÐj rÐj¨2Ðj°Ðj°¨rÐj°1ÐjÕ! # r¨2¨r°1Ñ5Ô5Ðj¸ÐjÐ5¸Ò:ÐjÐjÐjÐjÐjÐWYÐjÐ[]ÐjÐ_aÐjÐcdÐjÕ?QÐRUÐWYÐ[]Ð_aÐcdÑ?eÔ?eÐjÐijÐjÐ?eÐijÒ?jÐjÐjÐjÐjÑjÕjÔjÐjÐjÐjÐjÐ5¸ÐjÑjÔjÐjÕjÔjÑjÔjÐjÐjÕjÔjÕ!ÑjÔjÐjÕjÔjÕ!ÑjÔjÐjÐjÐjÕjÔjÑjÔjÐjÐjÕjÔj #ÑjÔjÐjÕjÔj #ÑjÔjÐjÐjÕjÔj rÑjÔjÕjÔj¨2ÑjÔjÕjÔj°ÑjÔjÕjÔj°1ÑjÔjÕjÔjÐ5ÑjÔjÕjÔj¸ÑjÔjÐjÐjÑjÐjÐjÐjÐjÐjÑjÐjÐj×jÒjÐjÑjÔjÐjÐjÑjÕjÔjÐjÐjÐjÐjÐ?eÐijÐjÑjÔjÐjÕjÔjÑjÔjÐjÐjÕjÔjÕ?QÑjÔjÐjÕjÔjÕ?QÑjÔjÐjÐjÐjÕjÔjÑjÔjÐjÐjÕjÔjÐRUÑjÔjÐjÕjÔjÐRUÑjÔjÐjÐjÕjÔjÐWYÑjÔjÕjÔjÐ[]ÑjÔjÕjÔjÐ_aÑjÔjÕjÔjÐcdÑjÔjÕjÔjÐ?eÑjÔjÕjÔjÐijÑjÔjÐjÐjÑjÐjÐjÐjÐjÐjÑjÐjÐj×jÒjÐjÑjÔjÐjÕjÔjÐjÐjÑjÔjÐjÑjÐjÐjÐjÐjÐjÑjÐjÕjÕjÔjÐjÑjÔjÑjÔjÐjÐjÐjÐjÐjÐjÐjÐjÐjÐjÐjÐjÐjÐjÐjÐjÐjÐjÐjÐjÐjÐjÐjÐjÐjÐjÐjÐjÐjÐjÐjÐjÐjÐjÐjÐjÐjr   c                ó
  ‡— t           j        t           j        t           j        t           j        t           j        t           j        hŠˆfd„t           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}}d S )Nc              3  óL   •K  — | ]}|                      ¦   «         |‰vk    V — Œd S rü   )Úis_passable)r�   ÚttÚ
impassables     €r   r  zLTestTier1FeatureCoverage.test_t1_client_passability_check.<locals>.<genexpr>ü   s7   øè è € ÐQÐQÀ"�2—>’>Ñ#Ô#¨°*Ð(<Ò=ÐQÐQÐQÐQÐQÐQr   r  r  r  )r   ÚVOIDr   ÚDESTRUCTIBLE_BARRICADEÚCHASMr®  ÚWATERr  rD   rE   rB   rF   rG   rJ   rK   )rL   rM   rN   r    rø  s       @r   Ú test_t1_client_passability_checkz9TestTier1FeatureCoverage.test_t1_client_passability_checkú   sõ   ø€ Ý”m¥X¤]µHÔ4SÕU]ÔUcÕemÔewõ  zBô  zHð  Iˆ
ØQÐQÐQÐQÍÐQÑQÔQÐQ�sÐQÑQÔQÐQÐQÐQÐQÐQÕQÔQÑQÔQÐQÐQÕQÔQ�sÑQÔQÐQÕQÔQ�sÑQÔQÐQÐQÕQÔQÐQÑQÔQÕQÔQÐQÑQÔQÐQÐQÑQÐQÕQÕQÔQÐQÑQÔQÑQÔQÐQÐQÐQÐQÐQÐQÐQr   c                óœ  — g }t           j        }|j        } |¦   «         }d}||k    }|}|r't           j        }|j        }	 |	¦   «         }
d}|
|k    }|}|�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  }| 
                    |¦  «         |rÎ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	          j        |d¦  «        i z  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d x}x}x}x}x}x}x}x}x}	x}
x}}d S )NrI  gáz®Gáö?r)   )zg%(py8)s
{%(py8)s = %(py6)s
{%(py6)s = %(py4)s
{%(py4)s = %(py2)s.PATH
}.movement_cost
}()
} == %(py11)sr   )r.   r/   rj   rl   r5   z%(py13)sr6   )zw%(py21)s
{%(py21)s = %(py19)s
{%(py19)s = %(py17)s
{%(py17)s = %(py15)s.DENSE_TERRAIN
}.movement_cost
}()
} == %(py24)s)r§   rÇ   rs   rÒ   rè   z%(py26)sré   r   zassert %(py29)sÚpy29)r   r  rJ  ÚDENSE_TERRAINrB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   )rL   rM   rN   rP   r™   rÁ   rb  rQ   r«   rÙ   rc  rW   rÛ   rŒ  r�  re  Ú@py_format27r]   Ú@py_format30s                      r   Útest_t1_client_speed_modifiersz7TestTier1FeatureCoverage.test_t1_client_speed_modifiersþ   s­  € ØfÐf�xŒ}Ðfˆ}Ô*ÐfÐ*Ð*Ñ,Ô,Ðf°ÐfÐ,°Ò3ÐfÐfÐfÐfÐf½Ô8NÐfÐ8NÔ8\ÐfÐ8\Ð8\Ñ8^Ô8^ÐfÐbfÐfÐ8^ÐbfÒ8fÐfÐfÐfÐfÑfÕfÔfÐfÐfÐfÐfÐ,°ÐfÑfÔfÐfÕfÔfÑfÔfÐfÐfÕfÔf�xÑfÔfÐfÕfÔf�xÑ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Ð8^ÐbfÐfÑfÔfÐfÕfÔfÑfÔfÐfÐfÕfÔf½ÑfÔfÐfÕfÔf½ÑfÔfÐfÐfÕfÔfÐ8NÑfÔfÕfÔfÐ8\ÑfÔfÕfÔfÐ8^ÑfÔfÕfÔfÐbfÑ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Ðfr   N©r   r"   )1Ú__name__Ú
__module__Ú__qualname__Ú__doc__r`   r}   r¡   r¬   r¶   rÂ   rÌ   rå   rù   r  r  r!  r%  r*  r,  r9  rB  rD  rR  rZ  rf  rl  ru  r~  rƒ  rŽ  rœ  r¡  r¥  rª  r³  r·  rÁ  rÉ  rË  rÎ  rÕ  rØ  rÛ  râ  rê  rî  ró  rý  r  r‰   r   r   r!   r!      s(  € € € € € ØEÐEðVð Vð Vð Vð2ð 2ð 2ð 2ð
pð pð pð pðIð Ið Ið Ið2ð 2ð 2ð 2ð
,ð ,ð ,ð ,ð
#ð #ð #ð #ð
zð zð zð zð}ð }ð }ð }ð
xð xð xð xðið ið ið ið
Mð Mð Mð Mðtð tð tð tðxð xð xð xðoð oð oð oð,ð ,ð ,ð ,ð
Rð Rð Rð Rð
Rð Rð Rð Rð
Yð Yð Yð Yð
.ð .ð .ð .ðWð Wð Wð Wð
Bð Bð Bð Bð#ð #ð #ð #ð
{ð {ð {ð {ðAð Að Að Að0ð 0ð 0ð 0ðeð eð eð eð\ð \ð \ð \ðbð bð bð bðeð eð eð eð
Kð Kð Kð Kð
[ð [ð [ð [ð
lð lð lð lð4ð 4ð 4ð 4ð0ð 0ð 0ð 0ð+ð +ð +ð +ð\ð \ð \ð \ðKð Kð Kð Kðcð cð cð cðið ið ið ið
cð cð cð cð
ið ið ið ið
kð kð kð kðRð Rð Rð Rðgð gð gð gð gð gr   r!   c                  óÚ   — e Zd ZdZdd„Zdd„Zdd„Zdd„Zdd„Zdd	„Z	dd
„Z
dd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„ZdS )ÚTestTier2BoundaryAndCornerCaseszBTier 2: Boundary & Corner Cases (>=5 test cases per feature area).r   r"   c                óê  — t          j        d¦  «                             d¦  «        }g }|j        }d}||k    }|}|rL|j        }d}||k    }	|	}|	r9|j        }
d}|
|z  }d}||z   }|j        }d}||z  }d}||z   }||z  }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  }|                     |¦  «         |�rÜ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  }|                     |¦  «         |	�r;t          j        d|fd||f¦  «        d	t          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        nd	t          j
        |
¦  «        t          j
        |¦  «        t          j
        |¦  «        d	t          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        nd	t          j
        |¦  «        t          j
        |¦  «        t          j
        |¦  «        t          j
        |¦  «        dœ	z  }dd|iz  }|                     |¦  «         t          j        |d¦  «        i z  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}x}x}	x}x}
x}x}x}x}x}x}x}x}x}x}x}}d S )Nr$   rº   r&   r'   rÎ   é   r)   r+   r,   r-   r1   r2   r3   r4   r8   r9   ©z’(((%(py22)s
{%(py22)s = %(py20)s.width
} // %(py24)s) + %(py27)s) * ((%(py31)s
{%(py31)s = %(py29)s.height
} // %(py33)s) + %(py36)s)) == %(py41)s©	r:   r;   rè   r=   rÿ  Úpy31rÔ   rí   Úpy41ú%(py43)srð   r   úassert %(py46)sÚpy46rt   ©rL   r,   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rW   rò   rÜ   rÝ   Ú@py_assert30Ú@py_assert32rà   rô   râ   Ú@py_assert38Ú@py_assert40Ú@py_assert39rX   rY   rZ   r[   r÷   rø   Ú@py_format45Ú@py_format47s                                  r   Ú test_t2_smallest_grid_dimensionsz@TestTier2BoundaryAndCornerCases.test_t2_smallest_grid_dimensions  s4  € Ý"Ô+Ð,AÑBÔB×KÒKÈAÑNÔNˆØdÐdˆqŒwÐd˜"Ðdˆw˜"Š}ÐdÐdÐdÐdÐd ¤Ðd¨RÐd ¨R¢ÐdÐdÐdÐdÐd°Q´WÐdÀÐd°WÀ±]ÐdÀQÐd°]ÀQÑ5FÐdÈ1Ì8ÐdÐWYÐdÈ8ÐWYÉ>ÐdÐ\]ÐdÈ>Ð\]ÑK]ÐdÐ5FÐK]Ñ4^ÐdÐbdÐdÐ4^ÐbdÒ4dÐdÐdÐdÐdÑdÕdÔdÐdÐdÐdÐdˆw˜"ÐdÑdÔdÐdÕdÔdÑdÔdÐdÐdÕdÔdˆqÑdÔdÐdÕdÔdˆqÑdÔdÐdÐdÕdÔdˆwÑ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 ¨RÐ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¨RÑ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Ð4^ÐbdÐdÑdÔdÐdÕdÔdÑdÔdÐdÐdÕdÔd°QÑdÔdÐdÕdÔd°QÑdÔdÐdÐdÕdÔd°WÑdÔdÕdÔdÀÑdÔdÕdÔdÀQÑdÔdÐdÕdÔdÑdÔdÐdÐdÕdÔdÈ1ÑdÔdÐdÕdÔdÈ1ÑdÔdÐdÐdÕdÔdÈ8ÑdÔdÕdÔdÐWYÑdÔdÕdÔdÐ\]ÑdÔdÕdÔdÐbdÑ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Õ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ÐdÐdÐdÐdÐdÐdÐdÐdÐdÐdÐdÐdÐdÐdÐdÐdÐdÐdÐdr   c                óê  — t          j        d¦  «                             d¦  «        }g }|j        }d}||k    }|}|rL|j        }d}||k    }	|	}|	r9|j        }
d}|
|z  }d}||z   }|j        }d}||z  }d}||z   }||z  }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  }|                     |¦  «         |�rÜ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  }|                     |¦  «         |	�r;t          j        d|fd||f¦  «        d	t          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        nd	t          j
        |
¦  «        t          j
        |¦  «        t          j
        |¦  «        d	t          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        nd	t          j
        |¦  «        t          j
        |¦  «        t          j
        |¦  «        t          j
        |¦  «        dœ	z  }dd|iz  }|                     |¦  «         t          j        |d¦  «        i z  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}x}x}	x}x}
x}x}x}x}x}x}x}x}x}x}x}}d S )Nre   rº   rf   rg   rÎ   r\  r)   r+   r,   r-   r1   r2   r3   r4   r8   r9   r  r  r  rð   r   r  r  rt   r  s                                  r   Útest_t2_largest_grid_dimensionsz?TestTier2BoundaryAndCornerCases.test_t2_largest_grid_dimensions
  s5  € Ý"Ô+Ð,MÑNÔN×WÒWÐXYÑZÔZˆØeÐeˆqŒwÐe˜#Ðeˆw˜#Š~ÐeÐeÐeÐeÐe !¤(Ðe¨bÐe (¨b¢.ÐeÐeÐeÐeÐe°a´gÐeÀÐe°gÀ±mÐeÀaÐe°mÀaÑ6GÐeÈAÌHÐeÐXZÐeÈHÐXZÉNÐeÐ]^ÐeÈNÐ]^ÑL^ÐeÐ6GÐL^Ñ5_ÐeÐceÐeÐ5_ÐceÒ5eÐeÐeÐeÐeÑeÕeÔeÐeÐeÐeÐeˆw˜#ÐeÑeÔeÐeÕeÔeÑeÔeÐeÐeÕeÔeˆqÑeÔeÐeÕeÔeˆqÑeÔeÐeÐeÕeÔeˆwÑ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 (¨bÐ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¨bÑ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Ð5_ÐceÐeÑeÔeÐeÕeÔeÑeÔeÐeÐeÕeÔe°aÑeÔeÐeÕeÔe°aÑeÔeÐeÐeÕeÔe°gÑeÔeÕeÔeÀÑeÔeÕeÔeÀaÑeÔeÐeÕeÔeÑeÔeÐeÐeÕeÔeÈAÑeÔeÐeÕeÔeÈAÑeÔeÐeÐeÕeÔeÈHÑeÔeÕeÔeÐXZÑeÔeÕeÔeÐ]^ÑeÔeÕeÔeÐceÑ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Ð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                ó¶  — dD �]Ô}t          j        |¦  «                             d¦  «        }g }|j        |j        f}t
          |         }||k    }|}|r|j        } |¦   «         }	d}
|	|
k    }|}|�sSt          j        d|fd||f¦  «        t          j	        |¦  «        t          j	        |¦  «        dœz  }dd|iz  }| 
                    |¦  «         |r±t          j        d	|fd
|	|
f¦  «        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          j        |d¦  «        i z  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}x}x}	x}}
�ŒÖd S )N)Úzone_blood_scale_ruinsÚzone_abyssal_ice_pondrº   rh   r)   r»   r¼   rk   rl   r3  )zW%(py14)s
{%(py14)s = %(py12)s
{%(py12)s = %(py10)s.get_walkables_count
}()
} > %(py17)sr,   )rn   ro   rp   rÇ   r±  rs   r   r²  r;   )r   r?   r@   r   r   r   r©   rB   rC   rG   rH   rD   rE   rF   rI   rJ   rK   )rL   Úzr,   rM   rŸ   rP   r´   rQ   rv   rw   r«   rS   rx   ry   r{   r|   rœ   rd  s                     r   Ú test_t2_intermediate_grids_scalez@TestTier2BoundaryAndCornerCases.test_t2_intermediate_grids_scale  s]  € ØDð 	bñ 	bˆAÝ&Ô/°Ñ2Ô2×;Ò;¸AÑ>Ô>ˆAØaÐa�A”G˜QœXÐ&ÐaÕ*<¸QÔ*?ÐaÐ&Ð*?Ò?ÐaÐaÐaÐaÐaÀAÔDYÐaÐDYÐDYÑD[ÔD[ÐaÐ^aÐaÐD[Ð^aÒDaÐ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ÐaÐaÐaÐaÐD[Ð^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ÐDYÑaÔaÕaÔaÐD[Ñ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ÑaÔaÑaÔaÐaÐaÐaÐaÐaÐaÐaÐaÐaÐaÐaÐaÐaÐaÐaÐaÐaÐaÐaÑað	bð 	br   c           	     óP  — t          j        d¦  «                             d¦  «        }t          |¦  «        }t	          |¦  «        }d}||k     }|�sMt          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	        t          ¦  «        rt          j
        t          ¦  «        nd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}}d S )Nre   rº   i˜:  )ú<)zM%(py6)s
{%(py6)s = %(py0)s(%(py4)s
{%(py4)s = %(py1)s(%(py2)s)
})
} < %(py9)srÑ   r   r,   )r¦   r”   r.   r/   rj   r2   zassert %(py11)sr5   )r   r?   r@   r   rÑ   rB   rC   rD   rE   rF   rG   rJ   rK   )rL   r,   rN   rP   rª   r™   rY   rŒ  s           r   Útest_t2_memory_budget_under_8mbz?TestTier2BoundaryAndCornerCases.test_t2_memory_budget_under_8mb  s§  € Ý"Ô+Ð,MÑNÔN×WÒWÐXYÑZÔZˆÝ% aÑ(Ô(Ð1�sÐ(Ñ)Ô)Ð1¨EÐ1Ð)¨EÒ1Ð1Ð1Ñ1Õ1Ô1Ð1Ð1Ð1Ð1Ð)¨EÐ1Ñ1Ô1Ð1Õ1Ô1Ñ1Ô1Ð1Ð1Õ1Ô1�sÑ1Ô1Ð1Õ1Ô1�sÑ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 aÑ1Ô1Ð1Õ1Ô1 aÑ1Ô1Ð1Ð1Õ1Ô1Ð(Ñ1Ô1Õ1Ô1Ð)Ñ1Ô1Õ1Ô1¨EÑ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Ð1r   c                óú  — t          j        d¦  «                             d¦  «        }|j        }|j        }d}||z
  }|j        }d}||z
  } |||¦  «        }	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        |¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |	¦  «        t          j        |
¦  «        dœ
z  }dd	|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}x}x}x}	x}}
d S )
Nre   rº   )é   rÐ   r)   )z´%(py16)s
{%(py16)s = %(py2)s
{%(py2)s = %(py0)s.get_chunk_coords
}((%(py5)s
{%(py5)s = %(py3)s.width
} - %(py7)s), (%(py11)s
{%(py11)s = %(py9)s.height
} - %(py13)s))
} == %(py19)sr,   )
r¦   r.   r½   r²   r0   r2   r5   r6   r7   rs   zassert %(py21)srÒ   )r   r?   r@   Úget_chunk_coordsr   r   rB   rC   rD   rE   rF   rG   rJ   rK   )rL   r,   rM   r´   rO   rª   rÁ   rR   rT   rS   rÙ   rš   r|   r�   s                 r   Útest_t2_chunk_bounds_clampingz=TestTier2BoundaryAndCornerCases.test_t2_chunk_bounds_clamping  s/  € Ý"Ô+Ð,MÑNÔN×WÒWÐXYÑZÔZˆØÔ!Ða !¤'Ða¨AÐa '¨A¡+Ða¨q¬xÐa¸!Ða¨x¸!©|Ð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ˆqÑaÔaÐaÕaÔaˆqÑ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Ôa¨qÑaÔaÐaÕaÔa¨qÑaÔaÐaÐaÕaÔa¨xÑ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ÐaÐaÐaÐaÐaÐaÐaÐaÐaÐaÐaÐaÐar   c                óœ  — t          j        d¦  «                             d¦  «        }g }|j        d         d         }|j        }t
          j        }||k    }|}|r|j        d         d         }|j        }	|	 }
|
}|�s>t          j	        d|fd||f¦  «        t          j
        |¦  «        t          j
        |¦  «        dt          j        ¦   «         v st          j        t
          ¦  «        rt          j
        t
          ¦  «        ndt          j
        |¦  «        dœz  }dd	|iz  }|                     |¦  «         |rAd
t          j
        |¦  «        t          j
        |	¦  «        dœz  }|                     |¦  «         t          j        |d¦  «        i z  }dd|iz  }t!          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}x}x}x}	}
d S )Nr$   r¹   r   r)   ©zK%(py5)s
{%(py5)s = %(py3)s.tile_type
} == %(py9)s
{%(py9)s = %(py7)s.WALL
}r   ©r½   r²   r0   r2   ú%(py11)sr5   z,not %(py16)s
{%(py16)s = %(py14)s.walkable
}©rp   r7   r¨   r:   )r   r?   r@   r˜   r‹   r   r   r  rB   rC   rG   rD   rE   rF   rH   rI   rJ   rK   )rL   r,   rM   rŸ   r´   rª   rO   rQ   rw   rS   rš   rY   rŒ  r{   r[   rœ   s                   r   Útest_t2_boundary_corner_0_0z;TestTier2BoundaryAndCornerCases.test_t2_boundary_corner_0_0  s  € Ý"Ô+Ð,AÑBÔB×KÒKÈAÑNÔNˆØVÐVˆqŒw�qŒz˜!Œ}ÐVˆ}Ô&ÐV­(¬-ÐVÐ&¨-Ò7ÐVÐVÐVÐVÐVÀÄÈÄ
È1ÄÐVÀÔ@VÐVÐ@VÐ<VÐVÐ<VÐVÐVÑVÕVÔVÐVÐVÐVÐVÐ&¨-ÐVÑVÔVÕVÔVˆ}ÑVÔVÕVÔVÐ&ÑVÔVÐVÕVÔVÑVÔVÐVÐVÕVÔV­(ÑVÔVÐVÕVÔV­(ÑVÔVÐVÐVÕVÔV¨-ÑVÔVÐVÐVÑVÐVÐVÐVÐVÐVÑVÐVÐV×VÒVÐVÑVÔVÐVÐVÐVÐVÕVÔVÀÑVÔVÕVÔVÐ@VÑVÔVÐVÐVÑVÐVÐV×VÒVÐVÑVÔVÐVÕVÔVÐVÐVÑVÔVÐVÑVÐVÐVÐVÐVÐVÑVÐVÕVÕVÔVÐVÑVÔVÑVÔVÐVÐVÐVÐVÐVÐVÐVÐVÐVÐVÐVÐVÐVÐVÐVÐVÐVÐVÐVÐVÐVr   c                ón  — t          j        d¦  «                             d¦  «        }|j        |j        dz
           |j        dz
           }|j        }t          j        }||k    }|sÇt          j
        d|fd||f¦  «        t          j        |¦  «        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}x}}d S )
Nr$   r¹   rº   r)   )zK%(py3)s
{%(py3)s = %(py1)s.tile_type
} == %(py7)s
{%(py7)s = %(py5)s.WALL
}r   )r”   r½   r²   r0   rY  r2   )r   r?   r@   r˜   r   r   r‹   r   r   rB   rC   rG   rD   rE   rF   rJ   rK   )rL   r,   rQ   rŸ   rO   r´   rX   rY   s           r   Útest_t2_boundary_corner_w_hz;TestTier2BoundaryAndCornerCases.test_t2_boundary_corner_w_h   s=  € Ý"Ô+Ð,AÑBÔB×KÒKÈAÑNÔNˆØŒw�q”x !‘|Ô$ Q¤W¨q¡[Ô1ÐLÐ1Ô;ÐL½x¼}ÐLÐ;¸}ÒLÐLÐLÐLÕLÔLÐLÐLÐLÐLÐ;¸}ÐLÑLÔLÕLÔLÐ1ÑLÔLÕLÔLÐ;ÑLÔLÐLÕLÔLÑLÔLÐLÐLÕLÔL½xÑLÔLÐLÕLÔL½xÑLÔLÐLÐLÕLÔL¸}ÑLÔLÐLÐLÑLÐLÐLÐLÐLÐLÑLÐLÕLÕLÔLÐLÑLÔLÑLÔLÐLÐLÐLÐLÐLÐLÐLÐLÐLÐLÐLr   c                óÒ  — t          j        d¦  «                             d¦  «        }g }|j        d         |j        dz
           }|j        }t          j        }||k    }|}|r6|j        |j        dz
           d         }|j        }	t          j        }
|	|
k    }|}|�s¸t          j
        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        |¦  «        dœz  }d	d
|iz  }|                     |¦  «         |r»t          j
        d|fd|	|
f¦  «        t          j        |¦  «        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          j        |d¦  «        i z  }dd|iz  }t#          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}x}x}x}	x}}
d S )Nr$   r¹   r   rº   r)   r,  r   r-  r.  r5   )zQ%(py16)s
{%(py16)s = %(py14)s.tile_type
} == %(py20)s
{%(py20)s = %(py18)s.WALL
})rp   r7   r9   r:   ú%(py22)sr;   úassert %(py25)sr<   )r   r?   r@   r˜   r   r‹   r   r   r   rB   rC   rG   rD   rE   rF   rH   rI   rJ   rK   )rL   r,   rM   rŸ   r´   rª   rO   rQ   rw   rS   rÚ   rš   rY   rŒ  rœ   rd  rž   r\   s                     r   Ú&test_t2_boundary_top_right_bottom_leftzFTestTier2BoundaryAndCornerCases.test_t2_boundary_top_right_bottom_left$  s­  € Ý"Ô+Ð,AÑBÔB×KÒKÈAÑNÔNˆØyÐyˆqŒw�qŒz˜!œ' A™+Ô&ÐyÐ&Ô0ÐyµH´MÐyÐ0°MÒAÐyÐyÐyÐyÐyÀaÄgÈaÌhÐYZÉlÔF[Ð\]ÔF^ÐyÐF^ÔFhÐyÕltÔlyÐyÐFhÐlyÒFyÐyÐyÐyÐyÑyÕyÔyÐyÐyÐyÐyÐ0°MÐyÑyÔyÕyÔyÐ&ÑyÔyÕyÔyÐ0ÑyÔyÐyÕyÔyÑyÔyÐyÐyÕyÔyµHÑyÔyÐyÕyÔyµHÑyÔyÐyÐyÕyÔy°MÑyÔyÐyÐyÑyÐyÐyÐyÐyÐyÑyÐyÐy×yÒyÐyÑyÔyÐyÐyÐyÕyÔyÐyÐyÐyÐyÐFhÐlyÐyÑyÔyÕyÔyÐF^ÑyÔyÕyÔyÐFhÑyÔyÐyÕyÔyÑyÔyÐyÐyÕyÔyÕltÑyÔyÐyÕyÔyÕltÑyÔyÐyÐyÕyÔyÐlyÑyÔyÐyÐyÑyÐyÐyÐyÐyÐyÑyÐyÐy×yÒyÐyÑyÔyÐyÕyÔyÐyÐyÑyÔyÐyÑyÐyÐyÐyÐyÐyÑyÐyÕyÕyÔyÐyÑyÔyÑyÔyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyr   c                óê  ‡— t          j        d¦  «                             d¦  «        Šˆfd„t          ‰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}}d S )Nr$   r¹   c              3  óÀ   •K  — | ]X}‰j         d          |         j        t          j        k    o-‰j         ‰j        dz
           |         j        t          j        k    V — ŒYdS ©r   rº   N)r˜   r‹   r   r   r   )r�   r   r,   s     €r   r  zZTestTier2BoundaryAndCornerCases.test_t2_boundary_perimeter_impenetrable.<locals>.<genexpr>*  su   øè è € ð  Mð  MÐxy�1”7˜1”:˜a”=Ô*­h¬mÒ;ÐsÀÄÈÌÐSTÉÔ@UÐVWÔ@XÔ@bÕfnÔfsÒ@sð  Mð  Mð  Mð  Mð  Mð  Mr   r  r  r  )r   r?   r@   rþ   r   r  rD   rE   rB   rF   rG   rJ   rK   r}  s       @r   Ú'test_t2_boundary_perimeter_impenetrablezGTestTier2BoundaryAndCornerCases.test_t2_boundary_perimeter_impenetrable(  s¿  ø€ Ý"Ô+Ð,AÑBÔB×KÒKÈAÑNÔNˆð Mð  Mð  Mð  Mõ  ~Cð  DEô  DKñ  ~Lô  ~Lð  Mñ  Mô  Mð  	M�sð  Mñ  Mô  Mð  	Mð  Mð  	Mð  	Mð  	Mõ  	Mô  	Mñ  	Mô  	Mð  	Mð  	Mõ  	Mô  	M�sñ  	Mô  	Mð  	Mõ  	Mô  	M�sñ  	Mô  	Mð  	Mð  	Mõ  	Mô  	Mð  Mñ  	Mô  	Mõ  	Mô  	Mð  Mñ  	Mô  	Mð  	Mð  	Mñ  	Mð  	Mõ  	Mõ  	Mô  	Mð  	Mñ  	Mô  	Mñ  	Mô  	Mð  	Mð  	Mð  	Mð  	Mð  	Mð  	Mð  	Mr   c           
     óR  — g }t           j        }d} ||¦  «        }t          |¦  «        }d}||k    }|}|r8t           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        t           ¦  «        rt          j        t           ¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        d	œz  }d
d|iz  }| 	                    |¦  «         |�r)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        t           ¦  «        rt          j        t           ¦  «        ndt          j        |	¦  «        t          j        |
¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }| 	                    |¦  «         t          j
        |d¦  «        i z  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}x}x}x}x}	x}
x}x}x}x}x}}d S )Ng®Gáz®ï?r   g{®Gáz„?rº   r)   )zl%(py11)s
{%(py11)s = %(py2)s(%(py9)s
{%(py9)s = %(py5)s
{%(py5)s = %(py3)s.floor
}(%(py7)s)
})
} == %(py14)sr   Úmath)r.   r½   r²   r0   r2   r5   rp   rq   r7   )zu%(py28)s
{%(py28)s = %(py18)s(%(py26)s
{%(py26)s = %(py21)s
{%(py21)s = %(py19)s.floor
}(-%(py23)s)
})
} == -%(py31)s)r9   rs   rÒ   r‡   ré   rê   r  ú%(py34)srì   zassert %(py37)srð  )r<  Úfloorr   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   )rL   rM   r´   rO   rª   rÁ   rw   rR   rQ   rc  rÛ   rV   rò   rñ   r  r  rÞ   rz   rZ   Ú@py_format33Ú@py_format35rò  rã   s                          r   Ú!test_t2_boundary_float_truncationzATestTier2BoundaryAndCornerCases.test_t2_boundary_float_truncation,  sr  € ØJÐJ•4”:ÐJ˜dÐJ�:�:˜dÑ#Ô#ÐJ�sÐ#Ñ$Ô$ÐJ¨ÐJÐ$¨Ò)ÐJÐJÐJÐJÐJµ$´*ÐJ¸dÐJ¸d¸UÐJ°*°*¸UÑ2CÔ2CÐJ­cÐ2CÑ.DÔ.DÐJÈÐJÈÈÐJÐ.DÈÒ.JÐJÐJÐJÐJÑJÕJÔJÐJÐJÐJÐJÐ$¨ÐJÑJÔJÐJÕJÔJÑJÔJÐJÐJÕJÔJ�sÑJÔJÐJÕJÔJ�sÑJÔJÐJÐJÐJÕJÔJÑJÔJÐJÐJÕJÔJ•4ÑJÔJÐJÕJÔJ•4ÑJÔJÐJÐJÕJÔJ�:ÑJÔJÕJÔJ˜dÑJÔJÕJÔJÐ#ÑJÔJÕJÔJÐ$ÑJÔJÕJÔJ¨ÑJÔJÐJÐJÑJÐJÐJÐJÐJÐJÑJÐJÐJ×JÒJÐJÑJÔJÐJÐJÑJÕJÔJÐJÐJÐJÐJÐ.DÈÐJÑJÔJÐJÕJÔJÑJÔJÐJÐJÕJÔJ­cÑJÔJÐJÕJÔJ­cÑJÔJÐJÐJÐJÕJÔJÑJÔJÐJÐJÕJÔJµ$ÑJÔJÐJÕJÔJµ$ÑJÔJÐJÐJÕJÔJ°*ÑJÔJÕJÔJ¸dÑJÔJÕJÔJÐ2CÑJÔJÕJÔJÐ.DÑJÔJÕJÔJÈÑJÔJÐJÐJÑJÐJÐJÐJÐJÐJÑJÐJÐJ×JÒJÐJÑJÔJÐJÕJÔJÐJÐJÑJÔJÐJÑJÐJÐJÐJÐJÐJÑJÐJÕJÕJÔJÐJÑJÔJÑJÔJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJr   c                óZ  — d}t          |¦  «        }d}d}d}| }d}t          |||||¦  «        }t          j        }	|	j        }
||
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	        t           ¦  «        rt          j
        t           ¦  «        ndt          j
        |¦  «        t          j
        |¦  «        t          j
        |¦  «        t          j
        |¦  «        t          j
        |¦  «        t          j
        |¦  «        t          j
        |¦  «        d	t          j        ¦   «         v st          j	        t          ¦  «        rt          j
        t          ¦  «        nd	t          j
        |	¦  «        t          j
        |
¦  «        d
œz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}x}x}x}x}x}	}
d S )Nrh   rè  rº   rÐ   r)   )z±%(py16)s
{%(py16)s = %(py0)s(%(py5)s
{%(py5)s = %(py1)s(%(py3)s)
}, %(py7)s, %(py9)s, -%(py11)s, %(py14)s)
} == %(py22)s
{%(py22)s = %(py20)s
{%(py20)s = %(py18)s.WALL
}.value
}r   r   r   )r¦   r”   r½   r²   r0   r2   r5   rp   r7   r9   r:   r;   úassert %(py24)srè   ©r   r   r   r   r   rB   rC   rD   rE   rF   rG   rJ   rK   )rL   rŸ   r´   rO   rª   rÁ   rR   rw   rS   rÚ   rU   rš   rd  re  s                 r   Útest_t2_oob_negative_xz6TestTier2BoundaryAndCornerCases.test_t2_oob_negative_x0  s7  € Ø(+ÐS¥%¨¡*¤*ÐS¨bÐS°"ÐS°qÐS°q°bÐS¸!ÐSÕ! *¨b°"°b¸!Ñ<Ô<Ð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Ð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¨bÑSÔSÕSÔS°"ÑSÔSÕSÔS°qÑ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Ð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ÐSÐSÐSÐSÐSÐSr   c                óZ  — d}t          |¦  «        }d}d}d}d}| }t          |||||¦  «        }t          j        }	|	j        }
||
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	        t           ¦  «        rt          j
        t           ¦  «        ndt          j
        |¦  «        t          j
        |¦  «        t          j
        |¦  «        t          j
        |¦  «        t          j
        |¦  «        t          j
        |¦  «        t          j
        |¦  «        d	t          j        ¦   «         v st          j	        t          ¦  «        rt          j
        t          ¦  «        nd	t          j
        |	¦  «        t          j
        |
¦  «        d
œz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}x}x}x}x}x}	}
d S )Nrh   rè  rÐ   rº   r)   )z±%(py16)s
{%(py16)s = %(py0)s(%(py5)s
{%(py5)s = %(py1)s(%(py3)s)
}, %(py7)s, %(py9)s, %(py11)s, -%(py13)s)
} == %(py22)s
{%(py22)s = %(py20)s
{%(py20)s = %(py18)s.WALL
}.value
}r   r   r   )r¦   r”   r½   r²   r0   r2   r5   r6   r7   r9   r:   r;   rC  rè   rD  )rL   rŸ   r´   rO   rª   rÁ   rR   rT   rS   rÚ   rU   rš   rd  re  s                 r   Útest_t2_oob_negative_yz6TestTier2BoundaryAndCornerCases.test_t2_oob_negative_y3  s7  € Ø(+ÐS¥%¨¡*¤*ÐS¨bÐS°"ÐS°aÐS¸!ÐS¸!¸ÐSÕ! *¨b°"°a¸Ñ<Ô<Ð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Ð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¨bÑSÔSÕSÔS°"ÑSÔSÕSÔS°aÑ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Ð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ÐSÐSÐSÐSÐSÐSr   c                óJ  — g }d}t          |¦  «        }d}d}d}d}t          |||||¦  «        }d}	||	k    }
|
}|
r6d}t          |¦  «        }d}d}d}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        t           ¦  «        rt          j        t           ¦  «        nd	t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |	¦  «        d
œ
z  }dd|iz  }|                     |¦  «         |
�rbt          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        t           ¦  «        rt          j        t           ¦  «        nd	t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœ
z  }dd|iz  }|                     |¦  «         t          j	        |d¦  «        i z  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}x}x}x}x}x}
x}	x}x}x}x}x}x}x}x}}d S ©Nrh   rè  rÐ   r¹   r   r)   )zx%(py17)s
{%(py17)s = %(py2)s(%(py7)s
{%(py7)s = %(py3)s(%(py5)s)
}, %(py9)s, %(py11)s, %(py13)s, %(py15)s)
} == %(py20)sr   r   )
r.   r½   r²   r0   r2   r5   r6   r§   rÇ   r:   r4  r;   )z~%(py39)s
{%(py39)s = %(py24)s(%(py29)s
{%(py29)s = %(py25)s(%(py27)s)
}, %(py31)s, %(py33)s, %(py35)s, %(py37)s)
} == %(py42)s)
rè   r<   r=   rÿ  r  rÔ   rÕ   rð  rÖ   Úpy42z%(py44)sÚpy44r   zassert %(py47)sÚpy47rñ  ©rL   rM   r´   rO   rª   rÁ   rR   rT   r«   rÚ   rÙ   rQ   rÜ   rÝ   r  r  rà   rá   r  Ú@py_assert41r  rœ   rd  Ú@py_format43r  Ú@py_format46Ú@py_format48s                              r   Útest_t2_oob_large_xz3TestTier2BoundaryAndCornerCases.test_t2_oob_large_x6  s  € ØyÐy¨Ðy¥%¨¡*¤*Ðy¨bÐy°"Ðy°bÐy¸!ÐyÕ! *¨b°"°b¸!Ñ<Ô<ÐyÀÐyÐ<ÀÒAÐyÐyÐyÐyÐyÐ_bÐyÕY^Ð_bÑYcÔYcÐyÐegÐyÐikÐyÐmpÐyÐrsÐyÕFXÐYcÐegÐikÐmpÐrsÑFtÔFtÐyÐxyÐyÐFtÐxyÒFyÐyÐyÐyÐyÑyÕyÔyÐyÐyÐyÐyÐ<ÀÐyÑyÔyÐyÕyÔyÑyÔyÐyÐyÕyÔyÕ!ÑyÔyÐyÕyÔyÕ!ÑyÔyÐyÐyÐyÕyÔyÑyÔyÐyÐyÕyÔy¥%ÑyÔyÐyÕyÔy¥%ÑyÔyÐyÐyÕyÔy¨ÑyÔyÕyÔy *ÑyÔyÕyÔy¨bÑyÔyÕyÔy°"ÑyÔyÕyÔy°bÑyÔyÕyÔy¸!ÑyÔyÕyÔyÐ<ÑyÔyÕyÔyÀÑyÔyÐyÐyÑyÐyÐyÐyÐyÐyÑyÐyÐy×yÒyÐyÑyÔyÐyÐyÑyÕyÔyÐyÐyÐyÐyÐFtÐxyÐyÑyÔyÐyÕyÔyÑyÔyÐyÐyÕyÔyÕFXÑyÔyÐyÕyÔyÕFXÑyÔyÐyÐyÐyÕyÔyÑyÔyÐyÐyÕyÔyÕY^ÑyÔyÐyÕyÔyÕY^ÑyÔyÐyÐyÕyÔyÐ_bÑyÔyÕyÔyÐYcÑyÔyÕyÔyÐegÑyÔyÕyÔyÐikÑyÔyÕyÔyÐmpÑyÔyÕyÔyÐrsÑyÔyÕyÔyÐFtÑyÔyÕyÔyÐxyÑyÔyÐyÐyÑyÐyÐyÐyÐyÐyÑyÐyÐy×yÒyÐyÑyÔyÐyÕyÔyÐyÐyÑyÔyÐyÑyÐyÐyÐyÐyÐyÑyÐyÕyÕyÔyÐyÑyÔyÑyÔyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyr   c                óJ  — g }d}t          |¦  «        }d}d}d}d}t          |||||¦  «        }d}	||	k    }
|
}|
r6d}t          |¦  «        }d}d}d}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        t           ¦  «        rt          j        t           ¦  «        nd	t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |	¦  «        d
œ
z  }dd|iz  }|                     |¦  «         |
�rbt          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        t           ¦  «        rt          j        t           ¦  «        nd	t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœ
z  }dd|iz  }|                     |¦  «         t          j	        |d¦  «        i z  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}x}x}x}x}x}
x}	x}x}x}x}x}x}x}x}}d S rI  rñ  rM  s                              r   Útest_t2_oob_large_yz3TestTier2BoundaryAndCornerCases.test_t2_oob_large_y9  s  € ØyÐy¨Ðy¥%¨¡*¤*Ðy¨bÐy°"Ðy°aÐy¸ÐyÕ! *¨b°"°a¸Ñ<Ô<ÐyÀÐyÐ<ÀÒAÐyÐyÐyÐyÐyÐ_bÐyÕY^Ð_bÑYcÔYcÐyÐegÐyÐikÐyÐmnÐyÐpsÐyÕFXÐYcÐegÐikÐmnÐpsÑFtÔFtÐyÐxyÐyÐFtÐxyÒFyÐyÐyÐyÐyÑyÕyÔyÐyÐyÐyÐyÐ<ÀÐyÑyÔyÐyÕyÔyÑyÔyÐyÐyÕyÔyÕ!ÑyÔyÐyÕyÔyÕ!ÑyÔyÐyÐyÐyÕyÔyÑyÔyÐyÐyÕyÔy¥%ÑyÔyÐyÕyÔy¥%ÑyÔyÐyÐyÕyÔy¨ÑyÔyÕyÔy *ÑyÔyÕyÔy¨bÑyÔyÕyÔy°"ÑyÔyÕyÔy°aÑyÔyÕyÔy¸ÑyÔyÕyÔyÐ<ÑyÔyÕyÔyÀÑyÔyÐyÐyÑyÐyÐyÐyÐyÐyÑyÐyÐy×yÒyÐyÑyÔyÐyÐyÑyÕyÔyÐyÐyÐyÐyÐFtÐxyÐyÑyÔyÐyÕyÔyÑyÔyÐyÐyÕyÔyÕFXÑyÔyÐyÕyÔyÕFXÑyÔyÐyÐyÐyÕyÔyÑyÔyÐyÐyÕyÔyÕY^ÑyÔyÐyÕyÔyÕY^ÑyÔyÐyÐyÕyÔyÐ_bÑyÔyÕyÔyÐYcÑyÔyÕyÔyÐegÑyÔyÕyÔyÐikÑyÔyÕyÔyÐmnÑyÔyÕyÔyÐpsÑyÔyÕyÔyÐFtÑyÔyÕyÔyÐxyÑyÔyÐyÐyÑyÐyÐyÐyÐyÐyÑyÐyÐy×yÒyÐyÑyÔyÐyÕyÔyÐyÐyÑyÔyÐyÑyÐyÐyÐyÐyÐyÑyÐyÕyÕyÔyÐyÑyÔyÑyÔyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyÐyr   c                ód  — d}t          |¦  «        }d}d}d}| }d}| }t          |||||¦  «        }	t          j        }
|
j        }|	|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	        t           ¦  «        rt          j
        t           ¦  «        ndt          j
        |¦  «        t          j
        |¦  «        t          j
        |¦  «        t          j
        |¦  «        t          j
        |¦  «        t          j
        |¦  «        t          j
        |	¦  «        dt          j        ¦   «         v st          j	        t          ¦  «        rt          j
        t          ¦  «        ndt          j
        |
¦  «        t          j
        |¦  «        d	œz  }d
d|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}x}x}x}x}	x}x}
}d S )Nrh   rè  éc   r)   )z²%(py17)s
{%(py17)s = %(py0)s(%(py5)s
{%(py5)s = %(py1)s(%(py3)s)
}, %(py7)s, %(py9)s, -%(py11)s, -%(py14)s)
} == %(py23)s
{%(py23)s = %(py21)s
{%(py21)s = %(py19)s.WALL
}.value
}r   r   r   )r¦   r”   r½   r²   r0   r2   r5   rp   rÇ   rs   rÒ   r‡   r5  r<   rD  )rL   rŸ   r´   rO   rª   rÁ   rR   rw   rS   r«   rc  rÛ   rÙ   rž   r\   s                  r   Útest_t2_oob_both_negativez9TestTier2BoundaryAndCornerCases.test_t2_oob_both_negative<  sD  € Ø(+ÐV¥%¨¡*¤*ÐV¨bÐV°"ÐV°rÐV°r°cÐV¸BÐV¸B¸3ÐVÕ! *¨b°"°c¸3Ñ?Ô?ÐVÅ8Ä=ÐVÀ=ÔCVÐVÐ?ÐCVÒVÐVÐVÑVÕVÔVÐVÐVÐVÐVÐ?ÐCVÐVÑVÔVÐVÕVÔVÑVÔVÐVÐVÕVÔVÕ!ÑVÔVÐVÕVÔVÕ!ÑVÔVÐVÐVÐVÕVÔVÑVÔVÐVÐVÕVÔV¥%ÑVÔVÐVÕVÔV¥%ÑVÔVÐVÐVÕVÔV¨ÑVÔVÕVÔV *ÑVÔVÕVÔV¨bÑVÔVÕVÔV°"ÑVÔVÕVÔV°rÑVÔVÕVÔV¸BÑVÔVÕVÔVÐ?ÑVÔVÐVÕVÔVÑVÔVÐVÐVÕVÔVÅ8ÑVÔVÐVÕVÔVÅ8ÑVÔVÐVÐVÕVÔVÀ=ÑVÔVÕVÔVÐCVÑVÔVÐVÐVÑVÐVÐVÐVÐVÐVÑVÐVÕVÕVÔVÐVÑVÔVÑVÔVÐVÐVÐVÐVÐVÐVÐVÐVÐVÐVÐVÐVÐVÐVÐVÐVÐVÐVÐVÐVÐVÐVÐVÐVÐVÐVÐVr   c                óŠ  — t          j        d¦  «                             d¦  «        }t          ||j        |j        ¦  «        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 )	Nr$   r   Tr/  ©z%(py1)s is %(py4)sr“   r•   rj   ©r   r?   r@   r   r–   r—   rB   rC   rG   rJ   rK   rk  s          r   Útest_t2_seed_zeroz1TestTier2BoundaryAndCornerCases.test_t2_seed_zero@  sà   € Ý"Ô+Ð,AÑBÔB×KÒKÈAÑNÔNˆÝ'¨¨1¬=¸!¼+ÑFÔFÀqÔIÐQÈTÐQÐIÈTÐQÐQÐQÐQÕQÔQÐQÐQÐQÐQÐIÈTÐQÑQÔQÕQÔQÐIÑQÔQÕQÔQÈTÑQÔQÐQÐQÑQÐQÐQÐQÐQÐQÑQÐQÕQÕQÔQÐQÑQÔQÑQÔQÐQÐQÐQÐQÐQÐQÐQÐQÐQr   c                óŠ  — t          j        d¦  «                             d¦  «        }t          ||j        |j        ¦  «        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 )
Nr$   éÿÿÿÿr   Tr/  rY  r“   r•   rj   rZ  rk  s          r   Útest_t2_seed_negative_smallz;TestTier2BoundaryAndCornerCases.test_t2_seed_negative_smallD  sà   € Ý"Ô+Ð,AÑBÔB×KÒKÈBÑOÔOˆÝ'¨¨1¬=¸!¼+ÑFÔFÀqÔIÐQÈTÐQÐIÈTÐQÐQÐQÐQÕQÔQÐQÐQÐQÐQÐIÈTÐQÑQÔQÕQÔQÐIÑQÔQÕQÔQÈTÑQÔQÐQÐQÑQÐQÐQÐQÐQÐQÑQÐQÕQÕQÔQÐQÑQÔQÑQÔQÐQÐQÐQÐQÐQÐQÐQÐQÐQr   c                óŠ  — t          j        d¦  «                             d¦  «        }t          ||j        |j        ¦  «        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 )
Nr$   iÁ½ðÿr   Tr/  rY  r“   r•   rj   rZ  rk  s          r   Útest_t2_seed_negative_largez;TestTier2BoundaryAndCornerCases.test_t2_seed_negative_largeH  sà   € Ý"Ô+Ð,AÑBÔB×KÒKÈGÑTÔTˆÝ'¨¨1¬=¸!¼+ÑFÔFÀqÔIÐQÈTÐQÐIÈTÐQÐQÐQÐQÕQÔQÐQÐQÐQÐQÐIÈTÐQÑQÔQÕQÔQÐIÑQÔQÕQÔQÈTÑQÔQÐQÐQÑQÐQÐQÐQÐQÐQÑQÐQÕQÕQÔQÐQÑQÔQÑQÔQÐQÐQÐQÐQÐQÐQÐQÐQÐQr   c                óŠ  — t          j        d¦  «                             d¦  «        }t          ||j        |j        ¦  «        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 )
Nr$   iÿÿÿr   Tr/  rY  r“   r•   rj   rZ  rk  s          r   Útest_t2_seed_int32_maxz6TestTier2BoundaryAndCornerCases.test_t2_seed_int32_maxL  óà   € Ý"Ô+Ð,AÑBÔB×KÒKÈJÑWÔWˆÝ'¨¨1¬=¸!¼+ÑFÔFÀqÔIÐQÈTÐQÐIÈTÐQÐQÐQÐQÕQÔQÐQÐQÐQÐQÐIÈTÐQÑQÔQÕQÔQÐIÑQÔQÕQÔQÈTÑQÔQÐQÐQÑQÐQÐQÐQÐQÐQÑQÐQÕQÕQÔQÐQÑQÔQÑQÔQÐQÐQÐQÐQÐQÐQÐQÐQÐQr   c                óŠ  — t          j        d¦  «                             d¦  «        }t          ||j        |j        ¦  «        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 )
Nr$   l   ÿÿ r   Tr/  rY  r“   r•   rj   rZ  rk  s          r   Útest_t2_seed_uint32_maxz7TestTier2BoundaryAndCornerCases.test_t2_seed_uint32_maxP  rc  r   c                óú  — t          j        d¦  «                             d¦  «        }g }d}|j        d         }||k    }|j        }d}||z
  }||k     }	|o|	}
|r/|	r-d}|j        d         }||k    }|j        }d}||z
  }||k     }|o|}
|
�sÐt          j        d||	fd|||f¦  «        t          j        |¦  «        t          j        |¦  «        dt          j
        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }d	d
|iz  }|                     |¦  «         |rÈ|	rÆt          j        d||fd|||f¦  «        t          j        |¦  «        t          j        |¦  «        dt          j
        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }|                     |¦  «         t          j        |d¦  «        i z  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}
x}x}x}x}	x}x}x}x}x}x}x}x}x}x}}d S )Nr$   rÐ   rº   r   )r‡  r%  )z%(py3)s <= %(py7)sz;%(py7)s < (%(py10)s
{%(py10)s = %(py8)s.width
} - %(py12)s)r,   )r½   r0   rl   rn   ro   z%(py15)sr§   )z%(py18)s <= %(py22)sz>%(py22)s < (%(py25)s
{%(py25)s = %(py23)s.height
} - %(py27)s))r9   r;   r‡   r<   r=   rë   r>   úassert %(py33)srÔ   )r   r?   r@   r–   r   r   rB   rC   rG   rD   rE   rF   rH   rI   rJ   rK   )rL   r,   rM   rŸ   rO   r´   rb  rv   rw   rP   rQ   rš   rU   rÚ   rV   rÜ   rÝ   rc  r�  rË   r^   r_   Ú@py_format32Ú@py_format34s                           r   Ú&test_t2_spawn_safe_zone_clamped_boundszFTestTier2BoundaryAndCornerCases.test_t2_spawn_safe_zone_clamped_boundsU  s  € Ý"Ô+Ð,AÑBÔB×KÒKÈAÑNÔNˆØ[Ð[ˆqÐ[�A”M !Ô$Ð[ˆqÐ$Ò2Ð[ q¤wÐ[°Ð[ w°¡{Ð[Ð$ {Ò2Ð[Ð[Ð[Ð[Ð[Ð[Ð[Ð[Ð[°qÐ[¸A¼MÈ!Ô<LÐ[°qÐ<LÒ7[Ð[ÈqÌxÐ[ÐZ[Ð[ÈxÐZ[É|Ð[Ð<LÈ|Ò7[Ð[Ð[Ð[Ð[Ð[Ð[Ñ[Õ[Ô[Ð[Ð[Ð[Ð[Ð[ˆqÐ$ {Ð[Ñ[Ô[Õ[Ô[ˆqÑ[Ô[Õ[Ô[Ð$Ñ[Ô[Ð[Õ[Ô[Ñ[Ô[Ð[Ð[Õ[Ô[ qÑ[Ô[Ð[Õ[Ô[ qÑ[Ô[Ð[Ð[Õ[Ô[ wÑ[Ô[Õ[Ô[°Ñ[Ô[Ð[Ð[Ñ[Ð[Ð[Ð[Ð[Ð[Ñ[Ð[Ð[×[Ò[Ð[Ñ[Ô[Ð[Ð[Ð[Ð[Ð[Õ[Ô[Ð[Ð[Ð[Ð[Ð[°qÐ<LÈ|Ð[Ñ[Ô[Õ[Ô[°qÑ[Ô[Õ[Ô[Ð<LÑ[Ô[Ð[Õ[Ô[Ñ[Ô[Ð[Ð[Õ[Ô[ÈqÑ[Ô[Ð[Õ[Ô[ÈqÑ[Ô[Ð[Ð[Õ[Ô[ÈxÑ[Ô[Õ[Ô[ÐZ[Ñ[Ô[Ð[Ð[Ñ[Ð[Ð[Ð[Ð[Ð[Ñ[Ð[Ð[×[Ò[Ð[Ñ[Ô[Ð[Õ[Ô[Ð[Ð[Ñ[Ô[Ð[Ñ[Ð[Ð[Ð[Ð[Ð[Ñ[Ð[Õ[Õ[Ô[Ð[Ñ[Ô[Ñ[Ô[Ð[Ð[Ð[Ð[Ð[Ð[Ð[Ð[Ð[Ð[Ð[Ð[Ð[Ð[Ð[Ð[Ð[Ð[Ð[Ð[Ð[Ð[Ð[Ð[Ð[Ð[Ð[Ð[Ð[Ð[Ð[Ð[Ð[Ð[Ð[r   c                óê  ‡— t          j        d¦  «                             d¦  «        Šˆfd„t          ‰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}}d S )Nr$   rÐ   c              3  óÀ   •K  — | ]X}‰j         |         d          j        t          j        k    o-‰j         |         ‰j        dz
           j        t          j        k    V — ŒYdS r9  )r˜   r‹   r   r   r   )r�   rÿ   r,   s     €r   r  zXTestTier2BoundaryAndCornerCases.test_t2_spawn_safe_clearing_in_bounds.<locals>.<genexpr>[  ss   øè è € ð  Mð  MÐwx�1”7˜1”:˜a”=Ô*­h¬mÒ;ÐrÀÄÈÄ
È1Ì7ÐUVÉ;Ô@WÔ@aÕemÔerÒ@rð  Mð  Mð  Mð  Mð  Mð  Mr   r  r  r  )r   r?   r@   rþ   r   r  rD   rE   rB   rF   rG   rJ   rK   r}  s       @r   Ú%test_t2_spawn_safe_clearing_in_boundszETestTier2BoundaryAndCornerCases.test_t2_spawn_safe_clearing_in_boundsY  s¿  ø€ Ý"Ô+Ð,AÑBÔB×KÒKÈAÑNÔNˆð Mð  Mð  Mð  Mõ  }Bð  CDô  CKñ  }Lô  }Lð  Mñ  Mô  Mð  	M�sð  Mñ  Mô  Mð  	Mð  Mð  	Mð  	Mð  	Mõ  	Mô  	Mñ  	Mô  	Mð  	Mð  	Mõ  	Mô  	M�sñ  	Mô  	Mð  	Mõ  	Mô  	M�sñ  	Mô  	Mð  	Mð  	Mõ  	Mô  	Mð  Mñ  	Mô  	Mõ  	Mô  	Mð  Mñ  	Mô  	Mð  	Mð  	Mñ  	Mð  	Mõ  	Mõ  	Mô  	Mð  	Mñ  	Mô  	Mñ  	Mô  	Mð  	Mð  	Mð  	Mð  	Mð  	Mð  	Mð  	Mr   c           	     ó

  — t          j        d¦  «                             d¦  «        }|j        }g }|}|rld}|j        }||k    }|}|rY|j        }|j        }	||	z   }
|j        }|
|k    }|}|r5d}|j        }||k    }|}|r"|j        }|j        }||z   }|j	        }||k    }|}|�s;dddt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndiz  }|                     |¦  «         |�rŸ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  }|                     |¦  «         |�rþ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        |	¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd|iz  }|                     |¦  «         |�rÎ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  }|                     |¦  «         |�r-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        |¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd|iz  }|                     |¦  «         t          j        |d¦  «        i z  }dd|iz  }t%          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}x}x}	x}
x}x}x}x}x}x}x}x}x}}d S )Nr$   rÐ   r   z%(py2)sr.   rº  )r‡  )z)%(py5)s <= %(py9)s
{%(py9)s = %(py7)s.x
})r²   r0   r2   r.  r5   )zp(%(py15)s
{%(py15)s = %(py13)s.x
} + %(py18)s
{%(py18)s = %(py16)s.w
}) <= %(py23)s
{%(py23)s = %(py21)s.width
}r,   )r6   r§   r7   r9   rÒ   r‡   z%(py25)sr<   )z-%(py28)s <= %(py32)s
{%(py32)s = %(py30)s.y
})rê   r>   rÓ   r=  rì   )zq(%(py38)s
{%(py38)s = %(py36)s.y
} + %(py41)s
{%(py41)s = %(py39)s.h
}) <= %(py46)s
{%(py46)s = %(py44)s.height
})rí   rî   rÖ   r  rK  r  z%(py48)sÚpy48zassert %(py51)sÚpy51)r   r?   r@   r’  r   ri   r   rÿ   rm   r   rD   rE   rB   rF   rG   rH   rC   rI   rJ   rK   ) rL   r,   rº  rM   rQ   r´   rª   rO   rT   rš   rÚ   rÛ   rc  rñ   rß   rÞ   râ   r  Ú@py_assert42Ú@py_assert45Ú@py_assert43Ú@py_format3rY   rŒ  rž   r\   r?  r@  r  Ú@py_format49Ú@py_format50Ú@py_format52s                                    r   Ú!test_t2_boss_arena_clamped_boundszATestTier2BoundaryAndCornerCases.test_t2_boss_arena_clamped_bounds]  sÂ  € Ý"Ô+Ð,AÑBÔB×KÒKÈAÑNÔNˆØŒ[ˆØdÐdˆrÐdˆrÐd�aÐd˜2œ4Ðd�a˜4’iÐdÐdÐdÐdÐd B¤DÐd¨2¬4Ðd D¨4¡KÐd°1´7Ðd K°7Ò$:ÐdÐdÐdÐdÐd¸qÐdÀBÄDÐd¸qÀDºyÐdÐdÐdÐdÐdÈRÌTÐdÐTVÔTXÐdÈTÐTXÉ[ÐdÐ\]Ô\dÐdÈ[Ð\dÒMdÐdÐdÐdÐdÑdÐdÐdÐdÕdÔdÑdÔdÐdÐdÕdÔdˆrÑdÔdÐdÕdÔdˆrÑdÔdÐdÐdÐdÑdÐdÐd×dÒdÐdÑdÔdÐdˆrÑdÕdÔdÐdÐdÐdÐd�a˜4ÐdÑdÔdÕdÔd�aÑdÔdÐdÕdÔdÑdÔdÐdÐdÕdÔd˜2ÑdÔdÐdÕdÔd˜2ÑdÔdÐdÐdÕdÔd˜4Ñ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 K°7ÐdÑdÔdÐdÕdÔdÑdÔdÐdÐdÕdÔd BÑdÔdÐdÕdÔd BÑdÔdÐdÐdÕdÔd DÑdÔdÐdÕdÔdÑdÔdÐdÐdÕdÔd¨2ÑdÔdÐdÕdÔd¨2ÑdÔdÐdÐdÕdÔd¨4ÑdÔdÐdÕdÔdÑdÔdÐdÐdÕdÔd°1ÑdÔdÐdÕdÔd°1ÑdÔdÐdÐdÕdÔd°7Ñ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¸qÀDÐdÑdÔdÕdÔd¸qÑdÔdÐdÕdÔdÑdÔdÐdÐdÕdÔdÀBÑdÔdÐdÕdÔdÀBÑ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È[Ð\dÐdÑdÔdÐdÕdÔdÑdÔdÐdÐdÕdÔdÈRÑdÔdÐdÕdÔdÈRÑdÔdÐdÐdÕdÔdÈTÑdÔdÐdÕdÔdÑdÔdÐdÐdÕdÔdÐTVÑdÔdÐdÕdÔdÐTVÑdÔdÐdÐdÕdÔdÐTXÑ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Ð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Ð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ÐdÐdr   c                óÐ  ‡— t          j        d¦  «                             d¦  «        Šˆfd„‰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}}d S )Nr$   rÐ   c              3  ó~   •K  — | ]7\  }}d |cxk    o‰j         d z
  k     nc od |cxk    o‰j        d z
  k     nc V — Œ8dS r¨  r^  r”  s      €r   r  zRTestTier2BoundaryAndCornerCases.test_t2_dead_end_clamped_bounds.<locals>.<genexpr>d  r©  r   r  r  r  r   r}  s       @r   Útest_t2_dead_end_clamped_boundsz?TestTier2BoundaryAndCornerCases.test_t2_dead_end_clamped_boundsb  sè   ø€ Ý"Ô+Ð,AÑBÔB×KÒKÈAÑNÔNˆØdÐdÐdÐdÐRSÔRcÐdÑdÔdÐd�sÐdÑdÔdÐdÐdÐdÐdÐdÕdÔdÑdÔdÐdÐdÕdÔd�sÑdÔdÐdÕdÔd�sÑ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Ðdr   c                óÐ  ‡— t          j        d¦  «                             d¦  «        Šˆfd„‰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}}d S )Nr$   rÐ   c              3  ó€   •K  — | ]8\  }}}d |cxk    o‰j         d z
  k     nc od |cxk    o‰j        d z
  k     nc V — Œ9dS r¨  r^  rÑ  s       €r   r  zMTestTier2BoundaryAndCornerCases.test_t2_poi_clamped_bounds.<locals>.<genexpr>h  ss   øè è € ÐbÐbÉ	ÈÈBÐPQ�1˜Ð(Ð(Ò(Ð(˜QœW q™[Ò(Ð(Ð(Ð(ÐC¨Q°"Ð-CÐ-CÒ-CÐ-C°q´xÀ!±|Ò-CÐ-CÐ-CÐ-CÐbÐbÐbÐbÐbÐbr   r  r  r  rÔ  r}  s       @r   Útest_t2_poi_clamped_boundsz:TestTier2BoundaryAndCornerCases.test_t2_poi_clamped_boundsf  sè   ø€ Ý"Ô+Ð,AÑBÔB×KÒKÈAÑNÔNˆØbÐbÐbÐbÐUVÔUaÐbÑbÔbÐb�sÐbÑbÔbÐbÐbÐbÐbÐbÕbÔbÑbÔbÐbÐbÕbÔb�sÑbÔbÐbÕbÔb�sÑ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   Nr  )r  r  r  r  r  r  r#  r&  r*  r0  r2  r6  r:  rA  rE  rG  rR  rT  rW  r[  r^  r`  rb  re  rj  rm  rx  r{  r~  r‰   r   r   r
  r
    sp  € € € € € ØLÐLðeð eð eð eðfð fð fð fðbð bð bð bð
2ð 2ð 2ð 2ðbð bð bð bð
Wð Wð Wð WðMð Mð Mð Mðzð zð zð zðMð Mð Mð MðKð Kð Kð KðTð Tð Tð TðTð Tð Tð Tðzð zð zð zðzð zð zð zðWð Wð Wð WðRð Rð Rð RðRð Rð Rð RðRð Rð Rð RðRð Rð Rð RðRð Rð Rð Rð
\ð \ð \ð \ðMð Mð Mð Mðeð eð eð eð
eð eð eð eðcð cð cð cð cð cr   r
  c                  ó:   — e Zd ZdZd
d„Zd
d„Zd
d„Zd
d„Zd
d„Zd	S )Ú!TestTier3CrossFeatureCombinationszATier 3: Cross-Feature State Interleaving & Pairwise Combinations.r   r"   c                ó¸  ‡‡— t          j        d¦  «                             d¦  «        Št          j        d¦  «                             d¦  «        Šˆˆf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t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        d	œz  }d
d|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}}d S )Nr$   ié  iÒ  c              3  ó®   •K  — | ]O}t          ‰j        ¦  «        D ]8}‰j        |         |         j        ‰j        |         |         j        k    ¯4d V — Œ9ŒPdS r¨  rý   )r�   rÿ   r   r€   r�   s      €€r   r  z]TestTier3CrossFeatureCombinations.test_t3_seed_variation_divergent_layouts.<locals>.<genexpr>q  sv   øè è € ð  Að  A˜½¸b¼h¹¼ð  Að  A°1È2Ì8ÐTUÌ;ÐWXÌ>ÔKcÐgiÔgoÐpqÔgrÐstÔguÔgÒKÐK�1ÐKÐKÐKÐKÐKð  Að  Ar   é2   r3  )z/%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} > %(py7)sÚsumrX  rY  r2   )r   r?   r@   rþ   r   r„  rB   rC   rD   rE   rF   rG   rJ   rK   )	rL   rM   rN   rO   rP   rX   rY   r€   r�   s	          @@r   Ú(test_t3_seed_variation_divergent_layoutszJTestTier3CrossFeatureCombinations.test_t3_seed_variation_divergent_layoutsn  sŒ  øø€ Ý#Ô,Ð-BÑCÔC×LÒLÈTÑRÔRˆÝ#Ô,Ð-BÑCÔC×LÒLÈTÑRÔRˆð Að  Að  Að  Að  A�e B¤IÑ.Ô.ð  Añ  Aô  Að  	F�sð  Añ  Aô  Að  	Fð  DFð  	Fð  Að  DFò  Fð  	Fð  	Fð  	Fõ  	Fô  	Fð  	Fð  	Fð  	Fð  	Fð  Að  DFð  	Fñ  	Fô  	Fð  	Fõ  	Fô  	Fñ  	Fô  	Fð  	Fð  	Fõ  	Fô  	F�sñ  	Fô  	Fð  	Fõ  	Fô  	F�sñ  	Fô  	Fð  	Fð  	Fõ  	Fô  	Fð  Añ  	Fô  	Fõ  	Fô  	Fð  Añ  	Fô  	Fõ  	Fô  	Fð  D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r   c                ó  ‡— t          j        d¦  «                             d¦  «        }t          ||j        |j        ¦  «        \  }Šˆfd„|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}}d S )Nr$   i»  c              3  óX   •‡K  — | ]#Št          ˆfd „‰D ¦   «         ¦  «        dk    V — Œ$dS )c              3  ó”   •K  — | ]B\  }}t          j        |‰j        ‰j        z   d z  z
  |‰j        ‰j        z   d z  z
  ¦  «        V — ŒCdS )r¹   N)r<  Úhypotry  rz  r{  r|  )r�   rÒ  rÓ  rj  s      €r   r  zfTestTier3CrossFeatureCombinations.test_t3_encounter_zones_along_main_path.<locals>.<genexpr>.<genexpr>v  s_   øè è € ÐuÐuÑflÐfhÐjl•t”z "¨¬°2´8Ñ(;¸qÑ'@Ñ"@À"ÈÌÐSUÔS[ÑH[Ð_`ÑG`ÑB`ÑaÔaÐuÐuÐuÐuÐuÐur   g      (@N)r  )r�   rj  r6  s    @€r   r  z\TestTier3CrossFeatureCombinations.test_t3_encounter_zones_along_main_path.<locals>.<genexpr>v  se   øøè è € ð  [ð  [ð  CE•3ÐuÐuÐuÐuÐptÐuÑuÔuÑuÔuÐy}Ò}ð  [ð  [ð  [ð  [ð  [ð  [r   r  r  r  )r   r?   r@   r   r–   r—   rØ   r  rD   rE   rB   rF   rG   rJ   rK   )rL   r,   rA  rM   rN   r    r6  s         @r   Ú'test_t3_encounter_zones_along_main_pathzITestTier3CrossFeatureCombinations.test_t3_encounter_zones_along_main_paths  sÃ  ø€ Ý"Ô+Ð,AÑBÔB×KÒKÈDÑQÔQˆÝ*¨1¨a¬m¸Q¼[ÑIÔI‰ˆˆ4ð [ð  [ð  [ð  [ð  IJô  IZð  [ñ  [ô  [ð  	[�sð  [ñ  [ô  [ð  	[ð  [ð  	[ð  	[ð  	[õ  	[ô  	[ñ  	[ô  	[ð  	[ð  	[õ  	[ô  	[�sñ  	[ô  	[ð  	[õ  	[ô  	[�sñ  	[ô  	[ð  	[ð  	[õ  	[ô  	[ð  [ñ  	[ô  	[õ  	[ô  	[ð  [ñ  	[ô  	[ð  	[ð  	[ñ  	[ð  	[õ  	[õ  	[ô  	[ð  	[ñ  	[ô  	[ñ  	[ô  	[ð  	[ð  	[ð  	[ð  	[ð  	[ð  	[ð  	[r   c                óÈ  — t          j        d¦  «                             d¦  «        }t          ||j        |j        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}}t          ||j        |j        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 )Nr$   i¤  F©Úallow_sealed_boss_gater   r/  rY  r“   r•   rj   T)r   r?   r@   r   r–   Ú
boss_pointrB   rC   rG   rJ   rK   rk  s          r   Ú,test_t3_boss_gate_unreachable_without_breachzNTestTier3CrossFeatureCombinations.test_t3_boss_gate_unreachable_without_breachx  s¯  € Ý"Ô+Ð,AÑBÔB×KÒKÈDÑQÔQˆÝ'¨¨1¬=¸!¼,Ð_dÐeÑeÔeÐfgÔhÐqÐlqÐqÐhÐlqÐqÐqÐqÐqÕqÔqÐqÐqÐqÐqÐhÐlqÐqÑqÔqÕqÔqÐhÑqÔqÕqÔqÐlqÑqÔqÐqÐqÑqÐqÐqÐqÐqÐqÑqÐqÕqÕqÔqÐqÑqÔqÑqÔqÐqÐqÐqÐqÐqÐqÐqÝ'¨¨1¬=¸!¼,Ð_cÐdÑdÔdÐefÔgÐoÐkoÐoÐgÐkoÐoÐoÐoÐoÕoÔoÐoÐoÐoÐoÐgÐkoÐoÑoÔoÕoÔoÐgÑoÔoÕoÔoÐkoÑoÔoÐoÐoÑoÐoÐoÐoÐoÐoÑoÐoÕoÕoÔoÐoÑoÔoÑoÔoÐoÐoÐoÐoÐoÐoÐoÐoÐor   c                ó†  — t          ¦   «         }|                     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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 )Nr$   Fg     Àb@)Úis_dummyr   rÿ   r   r/  rY  r“   r•   rj   g        T)r   Úvalidate_monster_spawnrB   rC   rG   rJ   rK   )rL   ÚzerQ   rN   rŸ   r    rx   s          r   Ú(test_t3_waypoint_safe_radius_in_tile_mapzJTestTier3CrossFeatureCombinations.test_t3_waypoint_safe_radius_in_tile_map}  s¡  € Ý‰\Œ\ˆØ×(Ò(Ð)>ÈÐRWÐ[`Ð(ÑaÔaÐbcÔdÐmÐhmÐmÐdÐhmÐmÐmÐmÐmÕmÔmÐmÐmÐmÐmÐdÐhmÐmÑmÔmÕmÔmÐdÑmÔmÕmÔmÐhmÑmÔmÐmÐmÑmÐmÐmÐmÐmÐmÑmÐmÕmÕmÔmÐmÑmÔmÑmÔmÐmÐmÐmÐmÐmÐmÐmØ×(Ò(Ð)>ÈÐRUÐY\Ð(Ñ]Ô]Ð^_Ô`ÐhÐdhÐhÐ`ÐdhÐhÐhÐhÐhÕhÔhÐhÐhÐhÐhÐ`ÐdhÐhÑhÔhÕhÔhÐ`ÑhÔhÕhÔhÐdhÑhÔhÐhÐhÑhÐhÐhÐhÐhÐhÑhÐhÕhÕhÔhÐhÑhÔhÑhÔhÐhÐhÐhÐhÐhÐhÐhÐhÐhr   c                óÂ  — t          j        d¦  «                             d¦  «        }t          t	          |¦  «        ¦  «        }t          ||j        |j        ¦  «        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 )
Nr$   i�  r   Tr/  rY  r“   r•   rj   )r   r?   r@   r   r   r   r–   r—   rB   rC   rG   rJ   rK   )rL   r,   rç   rQ   rN   rŸ   r    rx   s           r   Ú,test_t3_serialize_deserialize_preserves_pathzNTestTier3CrossFeatureCombinations.test_t3_serialize_deserialize_preserves_path‚  sö   € Ý"Ô+Ð,AÑBÔB×KÒKÈDÑQÔQˆÝ Õ!3°AÑ!6Ô!6Ñ7Ô7ˆÝ'¨¨1¬=¸!¼+ÑFÔFÀqÔIÐQÈTÐQÐIÈTÐQÐQÐQÐQÕQÔQÐQÐQÐQÐQÐIÈTÐQÑQÔQÕQÔQÐIÑQÔQÕQÔQÈTÑQÔQÐQÐQÑQÐQÐQÐQÐQÐQÑQÐQÕQÕQÔQÐQÑQÔQÑQÔQÐQÐQÐQÐQÐQÐQÐQÐQÐQr   Nr  )	r  r  r  r  r…  rŠ  r�  r”  r–  r‰   r   r   r€  r€  k  s”   € € € € € ØKÐKðFð Fð Fð Fð
[ð [ð [ð [ð
pð pð pð pð
ið ið ið ið
Rð Rð Rð Rð Rð Rr   r€  c                  óB   — e Zd ZdZdd„Zdd„Zdd„Zdd„Zdd„Zdd	„Z	d
S )ÚTestTier4RealWorldScenariosz4Tier 4: Real-World End-to-End Application Scenarios.r   r"   c                óü
  — t          j        d¦  «                             d¬¦  «        }t          |¦  «        }t	          |¦  «        }|j        \  }}g }|j        |         |         }|j        }t          j	        t          j
        f}	||	v }
|
}|
r|j        |         |         }|j        }|}|söt          j        d|
fd||	f¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |	¦  «        dœz  }dd|iz  }|                     |¦  «         |
rAd	t          j        |¦  «        t          j        |¦  «        d
œz  }|                     |¦  «         t          j        |d¦  «        i z  }dd|iz  }t#          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}
x}	x}}t'          |||f|j        ¦  «        \  }}g }d}||u }|}|rt+          |¦  «        }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  }|                     |¦  «         |ræ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  }dd|iz  }|                     |¦  «         t          j        |d¦  «        i z  }dd|iz  }t#          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}x}}t'          |||f|j        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}}|j        \  }}t          j	        ddc|j        |         |         _        |j        |         |         _        |j        |         |         _        d%\  |j        |j                 _        |j        |j                 _        d|_        t'          |||f|j        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 )&Nr$   i	  )Úseedr  r
  r  rƒ   rn   r  r  r   r  r9   TrG  r/  r1  r2  rÅ   rÆ   r0   r3  r5  rÑ   r6  r7  r8  rÇ   r¨   r:   FrŒ  rY  r“   r•   rj   )TF)r   r?   r@   r   r   r–   r˜   r‹   r   r  r  r  rB   rC   rG   rH   rI   rJ   rK   r   r—   rÑ   rD   rE   rF   rŽ  r(  Ú	obstaclesÚis_destroyedÚblocks_movementÚboss_gate_breached) rL   r,   Ú
wire_bytesÚ
client_maprÒ  rÓ  rM   rŸ   r´   r™   rO   rQ   rR   rT   ry   r›   rË   rZ   r[   r2  r6  rN   rv   rw   rµ   rX   r{   rœ   r    rx   rµ  r¶  s                                    r   Ú&test_t4_full_player_journey_simulationzBTestTier4RealWorldScenarios.test_t4_full_player_journey_simulation‹  sU  € å"Ô+Ð,AÑBÔB×KÒKÐQTÐKÑUÔUˆÝ'¨Ñ*Ô*ˆ
Ý)¨*Ñ5Ô5ˆ
àÔ'‰ˆˆBØzÐzˆzÔ Ô# BÔ'ÐzÐ'Ô1Ðzµh´nÅhÄmÐ5TÐzÐ1Ð5TÐTÐzÐzÐzÐzÐzÐYcÔYiÐjlÔYmÐnpÔYqÐzÐYqÔYzÐzÐYzÐzÐzÐzÕzÔzÐzÐzÐzÐzÐ1Ð5TÐzÑzÔzÕzÔzÐ'ÑzÔzÕzÔzÐ1ÑzÔzÕzÔzÐ5TÑzÔzÐzÐzÑzÐzÐzÐzÐzÐzÑzÐzÐz×zÒzÐzÑzÔzÐzÐzÐzÐzÕzÔzÐYqÑzÔzÕzÔzÐYzÑzÔzÐzÐzÑzÐzÐz×zÒzÐzÑzÔzÐzÕzÔzÐzÐzÑzÔzÐzÑzÐzÐzÐzÐzÐzÑzÐzÕzÕzÔzÐzÑzÔzÑzÔzÐzÐzÐzÐzÐzÐzÐzÐzÐzÐzÐzÐzÐzÐzÐzÐzÐzå+¨J¸¸R¸À*ÔBVÑWÔW‰ˆˆDØ,Ð,�TÐ,ˆr�TˆzÐ,Ð,Ð,Ð,Ð,�c $™iœiÐ,¨"Ð,˜i¨"šnÐ,Ð,Ð,Ð,Ñ,Õ,Ô,Ð,Ð,Ð,Ð,ˆr�TÐ,Ñ,Ô,Ð,Õ,Ô,Ñ,Ô,Ð,Ð,Õ,Ô,ˆrÑ,Ô,Ð,Õ,Ô,ˆrÑ,Ô,Ð,Ð,Õ,Ô,�TÑ,Ô,Ð,Ð,Ñ,Ð,Ð,Ð,Ð,Ð,Ñ,Ð,Ð,×,Ò,Ð,Ñ,Ô,Ð,Ð,Ð,Õ,Ô,Ð,Ð,Ð,Ð,˜i¨"Ð,Ñ,Ô,Ð,Õ,Ô,Ñ,Ô,Ð,Ð,Õ,Ô,�cÑ,Ô,Ð,Õ,Ô,�cÑ,Ô,Ð,Ð,Ð,Õ,Ô,Ñ,Ô,Ð,Ð,Õ,Ô, $Ñ,Ô,Ð,Õ,Ô, $Ñ,Ô,Ð,Ð,Õ,Ô,˜iÑ,Ô,Õ,Ô,¨"Ñ,Ô,Ð,Ð,Ñ,Ð,Ð,Ð,Ð,Ð,Ñ,Ð,Ð,×,Ò,Ð,Ñ,Ô,Ð,Õ,Ô,Ð,Ð,Ñ,Ô,Ð,Ñ,Ð,Ð,Ð,Ð,Ð,Ñ,Ð,Õ,Õ,Ô,Ð,Ñ,Ô,Ñ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,å'¨¨B°¨8°Q´\ÐZ_Ð`Ñ`Ô`ÐabÔcÐlÐglÐlÐcÐglÐlÐlÐlÐlÕlÔlÐlÐlÐlÐlÐcÐglÐlÑlÔlÕlÔlÐcÑlÔlÕlÔlÐglÑlÔlÐlÐlÑlÐlÐlÐlÐlÐlÑlÐlÕlÕlÔlÐlÑlÔlÑlÔlÐlÐlÐlÐlÐlÐlÐlà”‰ˆˆBÝ]eÔ]kÐmqÐsxÐZˆŒ�Œ�BŒÔ! 1¤7¨2¤;¨r¤?Ô#;¸Q¼WÀR¼[È¼_Ô=ZØZeÑWˆŒ�A”KÔ Ô-¨q¬{¸1¼;Ô/GÔ/WØ#ˆÔå'¨¨B°¨8°Q´\ÐZ^Ð_Ñ_Ô_Ð`aÔbÐjÐfjÐjÐbÐfjÐjÐjÐjÐjÕjÔjÐjÐjÐjÐjÐbÐfjÐjÑjÔjÕjÔjÐbÑjÔjÕjÔjÐfjÑjÔjÐjÐjÑjÐjÐjÐjÐjÐjÑjÐjÕjÕjÔjÐjÑjÔjÑjÔjÐjÐjÐjÐjÐjÐjÐjÐjÐjr   c           
     óª  — t           j                             ¦   «         t           j                             ¦   «         }}d}||k     }||k     }|r|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dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d x}x}}g }d}||z
  }d}	||	z  }
d	}t          |
|¦  «        }d
}||k    }|}|r(d}||z
  }||z  }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t	          j	        |¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |	¦  «        t	          j	        |¦  «        t	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }|                     |¦  «         |�rJt	          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	        |¦  «        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	          j        |d¦  «        i z  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d x}x}x}x}x}	x}
x}x}x}x}x}x}x}x}x}x}}d S )Ng      ð?)r%  r%  )z%(py0)s < %(py4)sz%(py4)s < %(py5)sÚ	path_costÚ
dense_cost)r¦   r/   r²   r³   r0   r¹   gš™™™™™É?g333333Ó?r)   )zU%(py13)s
{%(py13)s = %(py2)s(((%(py4)s - %(py5)s) / %(py8)s), %(py11)s)
} == %(py16)sÚround)r.   r/   r²   rl   r5   r6   r7   r8   r9   )zY%(py30)s
{%(py30)s = %(py20)s(((%(py21)s - %(py23)s) / %(py25)s), %(py28)s)
} == %(py33)s)r:   rÒ   r‡   r<   rê   r>   rÔ   z%(py35)srÕ   r   zassert %(py38)srî   )r   r  rJ  r   rB   rC   rD   rE   rF   rG   rJ   rK   r¥  rH   rI   )rL   r£  r¤  rN   rM   rŸ   rµ   rX   rO   r™   rb  rÁ   rR   rS   rT   rQ   rÛ   rV   rÜ   rñ   rÞ   r  rß   rZ   r[   ri  rò  Ú@py_format37rõ   s                                r   Ú'test_t4_terrain_speed_cost_optimizationzCTestTier4RealWorldScenarios.test_t4_terrain_speed_cost_optimization   sí  € Ý (¤× ;Ò ;Ñ =Ô =½xÔ?U×?cÒ?cÑ?eÔ?e�:ˆ	ØÐ+ˆy˜3Ò+Ð+˜3 Ò+Ð+Ð+Ð+Ð+Ð+Õ+Ô+Ð+Ð+Ð+Ð+Ð+ˆy˜3 Ð+Ñ+Ô+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+ˆyÑ+Ô+Ð+Õ+Ô+ˆyÑ+Ô+Ð+Ð+Õ+Ô+˜3Ñ+Ô+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+ Ñ+Ô+Ð+Õ+Ô+ Ñ+Ô+Ð+Ð+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+ØnÐn�cÐn�c˜I‘oÐn¨Ðn�o¨Ñ,Ðn¨aÐn�uÐ,¨aÑ0Ô0Ðn°DÐnÐ0°DÒ8ÐnÐnÐnÐnÐnÐQTÐnÀJÐQTÑDTÐnÐDTÐXbÑCbÐnÐdeÐn½UÐCbÐdeÑ=fÔ=fÐnÐjnÐnÐ=fÐjnÒ=nÐnÐnÐnÐnÑnÕnÔnÐnÐnÐnÐnÐ0°DÐnÑnÔnÐnÕnÔnÑnÔnÐnÐnÕnÔn�uÑnÔnÐnÕnÔn�uÑnÔnÐnÐnÕnÔn�cÑnÔnÐnÕnÔnÑnÔnÐnÐnÕnÔn˜IÑnÔnÐnÕnÔn˜IÑnÔnÐnÐnÕnÔn¨ÑnÔnÕnÔn¨aÑnÔnÕnÔnÐ0ÑnÔnÕnÔn°DÑnÔnÐnÐnÑnÐnÐnÐnÐnÐnÑnÐnÐn×nÒnÐnÑnÔnÐnÐnÑnÕnÔnÐnÐnÐnÐnÐ=fÐjnÐnÑnÔnÐnÕnÔnÑnÔnÐnÐnÕnÔn½UÑnÔnÐnÕnÔn½UÑnÔnÐnÐnÐnÕnÔnÑnÔnÐnÐnÕnÔnÀJÑnÔnÐnÕnÔnÀJÑnÔnÐnÐnÕnÔnÐQTÑnÔnÐnÕnÔnÑnÔnÐnÐnÕnÔnÐXbÑnÔnÐnÕnÔnÐXbÑnÔnÐnÐnÕnÔnÐdeÑnÔnÕnÔnÐ=fÑnÔnÕnÔnÐjnÑnÔnÐnÐnÑnÐnÐnÐnÐnÐnÑnÐnÐn×nÒnÐnÑnÔnÐnÕnÔnÐnÐnÑnÔnÐnÑnÐnÐnÐnÐnÐnÑnÐnÕnÕnÔnÐnÑnÔnÑnÔnÐnÐnÐnÐnÐnÐnÐnÐnÐnÐnÐnÐnÐnÐnÐnÐnÐnÐnÐnÐnÐnÐnÐnÐnÐnÐnÐnÐnÐnÐnÐnÐnÐnÐnÐnÐnÐnr   c                óä  — t          j        d¦  «                             d¦  «        }|j        d         \  }}}g }|j        |         |         }|j        }t          j        }||k    }	|	}
|	r|j        |         |         }|j        }|}
|
�s>t          j
        d|	fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        |¦  «        dœz  }dd	|iz  }|                     |¦  «         |	rAd
t          j        |¦  «        t          j        |¦  «        dœz  }|                     |¦  «         t          j        |d¦  «        i z  }dd|iz  }t#          t          j        |¦  «        ¦  «        ‚d x}
x}x}x}x}	x}x}}t'          ||j        ||f¦  «        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 )Nr$   ix  r   r)   )zJ%(py5)s
{%(py5)s = %(py3)s.tile_type
} == %(py9)s
{%(py9)s = %(py7)s.POI
}r   r-  r.  r5   z(%(py16)s
{%(py16)s = %(py14)s.walkable
}r/  rr   rs   Tr/  rY  r“   r•   rj   )r   r?   r@   r×   r˜   r‹   r   rŸ  r  rB   rC   rG   rD   rE   rF   rH   rI   rJ   rK   r   r–   )rL   r,   Úpoi_xÚpoi_yrA  rM   rŸ   r´   rª   rO   rQ   rw   rS   rY   rŒ  rZ   r{   r|   rN   r    rx   s                        r   Ú,test_t4_poi_ambush_and_reward_cache_scenariozHTestTier4RealWorldScenarios.test_t4_poi_ambush_and_reward_cache_scenario¥  sÓ  € Ý"Ô+Ð,AÑBÔB×KÒKÈCÑPÔPˆØœ, qœ/‰ˆˆu�aØaÐaˆqŒw�uŒ~˜eÔ$ÐaÐ$Ô.Ðaµ(´,ÐaÐ.°,Ò>ÐaÐaÐaÐaÐaÀ1Ä7È5Ä>ÐRWÔCXÐaÐCXÔCaÐaÐCaÐ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ÐaÑaÐaÐaÐaÐaÐaÑaÐaÐa×aÒaÐaÑaÔaÐaÐaÐaÐaÕaÔaÐCXÑaÔaÕaÔaÐCaÑ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ÐaÐaÐaÐaÐaÐaÐaÐaÐaÐaÝ'¨¨1¬=¸5À%¸.ÑIÔIÈ!ÔLÐTÐPTÐTÐLÐPTÐTÐTÐTÐTÕTÔTÐTÐTÐTÐTÐLÐPTÐTÑ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ÐTr   c           	     óX  — ddt          d¦  «        }}}d\  }}}t          t          d||z
  ¦  «        t          |||z   dz   ¦  «        ¦  «        D ]]}t          t          d||z
  ¦  «        t          |||z   dz   ¦  «        ¦  «        D ]%}||z
  dz  ||z
  dz  z   ||z  k    rd|||z  |z   <   Œ&Œ^g }	|d|z  dz            }
d}|
|k    }|}|r|d         }d}||k    }|}|�st	          j        d	|fd
|
|f¦  «        t	          j        |
¦  «        t	          j        |¦  «        dœz  }dd|iz  }|	                     |¦  «         |r`t	          j        d	|fd||f¦  «        t	          j        |¦  «        t	          j        |¦  «        dœz  }dd|iz  }|	                     |¦  «         t	          j        |	d¦  «        i z  }dd|iz  }t          t	          j
        |¦  «        ¦  «        ‚d x}x}	x}
x}x}x}x}}t          t          |¦  «        ¦  «        D ]}||         dk    rd||<   Œ|d|z  dz            }d}||k    }
|
slt	          j        d	|
fd||f¦  «        t	          j        |¦  «        t	          j        |¦  «        dœz  }dd|iz  }t          t	          j
        |¦  «        ¦  «        ‚d x}x}
}d S )Né   rG  r_  )rè  rè  rÄ   r   rº   r¹   rè  r)   r»   r¼   rk   rl   r¾   r¿   rq   r7   rr   rs   r’   r“   r•   rj   )Ú	bytearrayrþ   r  r  rB   rC   rG   rH   rI   rJ   rK   rÑ   )rL   ri   rm   ÚfogrÒ  rÓ  Úrrÿ   r   rM   rŸ   rP   r´   rQ   rÁ   rw   rR   rx   ry   rz   rZ   r{   r|   ÚirN   r    s                             r   Ú'test_t4_fog_of_war_reveal_state_machinezCTestTier4RealWorldScenarios.test_t4_fog_of_war_reveal_state_machine«  si  € Ø˜�I gÑ.Ô.ˆcˆ1ˆØ‰	ˆˆB�Ý•s˜1˜b 1™f‘~”~¥s¨1¨b°1©f°q©jÑ'9Ô'9Ñ:Ô:ð 	'ð 	'ˆAÝ�3˜q " q¡&™>œ>­3¨q°"°q±&¸1±*Ñ+=Ô+=Ñ>Ô>ð 'ð '�Ø˜‘F˜q‘= A¨¡F¨q¡=Ñ0°A¸±EÒ9Ð9Ø%&�C˜˜A™ ™	‘Nøð'ð 	5Ð4ˆs�2˜‘6˜B‘;ÔÐ4 1Ð4Ð 1Ò$Ð4Ð4Ð4Ð4Ð4¨¨Q¬Ð4°1Ð4¨°1ªÐ4Ð4Ð4Ð4Ñ4Õ4Ô4Ð4Ð4Ð4Ð4Ð 1Ð4Ñ4Ô4Õ4Ô4ÐÑ4Ô4Õ4Ô4 1Ñ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¨°1Ð4Ñ4Ô4Õ4Ô4¨Ñ4Ô4Õ4Ô4°1Ñ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Ð4Ð4Ð4Ý•s˜3‘x”x‘”ð 	ð 	ˆAØ�1Œv˜Š{ˆ{Ø��A‘øØ�2˜‘6˜B‘;ÔÐ$ 1Ð$Ð 1Ò$Ð$Ð$Ð$Õ$Ô$Ð$Ð$Ð$Ð$Ð 1Ð$Ñ$Ô$Õ$Ô$ÐÑ$Ô$Õ$Ô$ 1Ñ$Ô$Ð$Ð$Ñ$Ð$Ð$Ð$Ð$Ð$Ñ$Ð$Õ$Õ$Ô$Ð$Ñ$Ô$Ñ$Ô$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ð$r   c                óH  — t          j        dd¬¦  «                             d¦  «        }g }|j        }d}||k    }|}|r3|j        }d}||k    }	|	}|	r |j        }
t          |
¦  «        }d}||k    }|}|�szt          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  }|                     |¦  «         |�r™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  }|                     |¦  «         |	rù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        |¦  «        t          j        |¦  «        dœz  }dd|iz  }|                     |¦  «         t          j        |d¦  «        i z  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}x}x}	x}x}
x}x}}t#          ||j        |j        ¦  «        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 ) Nre   ÚCORRUPTED_FIEND_RUINSr¯   i'  rf   rg   rÏ   r)   r+   r,   r-   r1   r2   r3   r4   r8   r9   )z\%(py25)s
{%(py25)s = %(py20)s(%(py23)s
{%(py23)s = %(py21)s.encounter_zones
})
} == %(py28)srÑ   )r:   rÒ   r‡   r<   rê   rë   r>   r   rg  rÔ   Tr/  rY  r“   r•   rj   )r   r?   r@   r   r   rØ   rÑ   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   r   r–   r—   )rL   r,   rM   rN   rO   rP   rQ   rR   rS   rT   rÛ   rV   rñ   rÜ   rX   rY   rZ   r[   r^   r_   rh  ri  rŸ   r    rx   s                            r   Ú(test_t4_endgame_apex_generation_scenariozDTestTier4RealWorldScenarios.test_t4_endgame_apex_generation_scenario¸  s@  € Ý"Ô+Ð,MÐXoÐpÑpÔp×yÒyÐz~ÑÔˆØPÐPˆqŒwÐP˜#ÐPˆw˜#Š~ÐPÐPÐPÐPÐP !¤(ÐP¨bÐP (¨b¢.ÐPÐPÐPÐPÐP¸Ô9JÐPµSÐ9JÑ5KÔ5KÐPÈqÐPÐ5KÈqÒ5PÐPÐPÐPÐPÑPÕPÔPÐPÐPÐPÐPˆw˜#ÐPÑPÔPÐPÕPÔPÑPÔPÐPÐPÕPÔPˆqÑPÔPÐPÕPÔPˆqÑPÔPÐPÐPÕPÔPˆwÑPÔPÕPÔP˜#ÑPÔPÐPÐPÑPÐPÐPÐPÐPÐPÑPÐPÐP×PÒPÐPÑPÔPÐPÐPÑPÕPÔPÐPÐPÐPÐP (¨bÐPÑPÔPÐPÕPÔPÑPÔPÐPÐPÕPÔP !ÑPÔPÐPÕPÔP !ÑPÔPÐPÐPÕPÔP (ÑPÔPÕPÔP¨bÑPÔPÐPÐPÑPÐPÐPÐPÐPÐPÑPÐPÐP×PÒPÐPÑPÔPÐPÐPÐPÕPÔPÐPÐPÐPÐPÐ5KÈqÐPÑPÔPÐPÕPÔPÑPÔPÐPÐPÕPÔPµSÑPÔPÐPÕPÔPµSÑPÔPÐPÐPÐPÕPÔPÑPÔPÐPÐPÕPÔP¸ÑPÔPÐPÕPÔP¸ÑPÔPÐPÐPÕPÔPÐ9JÑPÔPÕPÔPÐ5KÑPÔPÕPÔPÈqÑPÔPÐPÐPÑPÐPÐPÐPÐPÐPÑPÐPÐP×PÒPÐPÑPÔPÐPÕPÔPÐPÐPÑPÔPÐPÑPÐPÐPÐPÐPÐPÑPÐPÕPÕPÔPÐPÑPÔPÑPÔPÐPÐPÐPÐPÐPÐPÐPÐPÐPÐPÐPÐPÐPÐPÐPÐPÐPÐPÐPÐPÐPÐPÐPÐPÐPÝ'¨¨1¬=¸!¼+ÑFÔFÀqÔIÐQÈTÐQÐIÈTÐQÐQÐQÐQÕQÔQÐQÐQÐQÐQÐIÈTÐQÑQÔQÕQÔQÐIÑQÔQÕQÔQÈTÑQÔQÐQÐQÑQÐQÐQÐQÐQÐQÑQÐQÕQÕQÔQÐQÑQÔQÑQÔQÐQÐQÐQÐQÐQÐQÐQÐQÐQr   c                ó  — g }t          t          ¦  «        }d}||k    }|}|rd}|t          v }|}|�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        t          ¦  «        rt          j        t          ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd	|iz  }	|                     |	¦  «         |ršt          j        d
|fd|t          f¦  «        t          j        |¦  «        dt	          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nddœz  }
dd|
iz  }|                     |¦  «         t          j	        |d¦  «        i z  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}x}}d S )Nr  r$   r¤   rL  rÑ   r   rN  rƒ   rn   r  )z%(py13)s in %(py15)sr  r8  rÇ   r   r¨   r:   )rÑ   r   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   )rL   rM   r´   r™   rO   rQ   rR   rT   ry   r›   rË   r{   r[   rœ   s                 r   Ú"test_t4_unit_test_regression_guardz>TestTier4RealWorldScenarios.test_t4_unit_test_regression_guard½  sS  € Ø[Ð[�sÕ%Ñ&Ô&Ð[¨!Ð[Ð&¨!Ò+Ð[Ð[Ð[Ð[Ð[Ð0EÐ[Ð0EÕI[Ð0[Ð[Ð[Ð[Ð[Ñ[Õ[Ô[Ð[Ð[Ð[Ð[Ð&¨!Ð[Ñ[Ô[Ð[Õ[Ô[Ñ[Ô[Ð[Ð[Õ[Ô[�sÑ[Ô[Ð[Õ[Ô[�sÑ[Ô[Ð[Ð[Ð[Õ[Ô[Ñ[Ô[Ð[Ð[Õ[Ô[Õ%Ñ[Ô[Ð[Õ[Ô[Õ%Ñ[Ô[Ð[Ð[Õ[Ô[Ð&Ñ[Ô[Õ[Ô[¨!Ñ[Ô[Ð[Ð[Ñ[Ð[Ð[Ð[Ð[Ð[Ñ[Ð[Ð[×[Ò[Ð[Ñ[Ô[Ð[Ð[Ð[Õ[Ô[Ð[Ð[Ð[Ð[Ð0EÕI[Ð[Ñ[Ô[Õ[Ô[Ð0EÑ[Ô[Ð[Õ[Ô[Ñ[Ô[Ð[Ð[Õ[Ô[ÕI[Ñ[Ô[Ð[Õ[Ô[ÕI[Ñ[Ô[Ð[Ð[Ð[Ð[Ñ[Ð[Ð[Ð[Ð[Ð[Ñ[Ð[Ð[×[Ò[Ð[Ñ[Ô[Ð[Õ[Ô[Ð[Ð[Ñ[Ô[Ð[Ñ[Ð[Ð[Ð[Ð[Ð[Ñ[Ð[Õ[Õ[Ô[Ð[Ñ[Ô[Ñ[Ô[Ð[Ð[Ð[Ð[Ð[Ð[Ð[Ð[Ð[Ð[Ð[Ð[Ð[Ð[Ð[Ð[Ð[r   Nr  )
r  r  r  r  r¡  r§  r«  r²  rµ  r·  r‰   r   r   r˜  r˜  ˆ  s¨   € € € € € Ø>Ð>ðkð kð kð kð*oð oð oð oð
Uð Uð Uð Uð%ð %ð %ð %ðRð Rð Rð Rð
\ð \ð \ð \ð \ð \r   r˜  )r   r   r   r   r   r   r   r   r   r   r   r   )%r  Ú
__future__r   ÚbuiltinsrD   Ú_pytest.assertion.rewriteÚ	assertionÚrewriterB   r<  rÈ   ÚpytestÚtypingr   r   Úserver.world.map_data_typesr   r   r   r	   r
   Ú%server.world.wilderness_map_generatorr   r   Ú"server.world.map_binary_serializerr   r   Ú"server.world.procedural_map_enginer   r   Úserver.world.zone_enginer   r   r!   r
  r€  r˜  r‰   r   r   ú<module>rÄ     sæ  ððð ð #Ð "Ð "Ð "Ð "Ð "Ø  € € € € € € € € € € € € €€€€Ø €€€Ø €€€Ø Ð Ð Ð Ð Ð Ð Ð à lÐ lÐ lÐ lÐ lÐ lÐ lÐ lÐ lÐ lÐ lÐ lÐ lÐ lØ \Ð \Ð \Ð \Ð \Ð \Ð \Ð \Ø WÐ WÐ WÐ WÐ WÐ WÐ WÐ WØ aÐ aÐ aÐ aÐ aÐ aÐ aÐ aØ /Ð /Ð /Ð /Ð /Ð /ð!ð !ð !ð !ðagð agð agð agð agñ agô agð agðHfcð fcð fcð fcð fcñ fcô fcð fcðRRð Rð Rð Rð Rñ Rô Rð Rð:6\ð 6\ð 6\ð 6\ð 6\ñ 6\ô 6\ð 6\ð 6\ð 6\r   