§
    Å®½j_M  ã                  ó�  — d Z ddlmZ ddlZddlZddlZddlmZ ddlm	Z	m
Z
mZmZmZ ddlmZmZ  G d„ de¦  «        Z G d	„ d
e¦  «        Z G d„ de¦  «        Z edd¬¦  «         G d„ d¦  «        ¦   «         Z ed¬¦  «         G d„ d¦  «        ¦   «         Z ed¬¦  «         G d„ d¦  «        ¦   «         Z ed¬¦  «         G d„ d¦  «        ¦   «         Z ed¬¦  «         G d„ d¦  «        ¦   «         Zddddddœdd d!d"d#dœd$d!d%d&d'dœd(d)d*d+d,dœd-d.d/d0d0dœd1d2d3d4d5dœd6d7d8d9d:dœd;d<d=d>d?dœd@d=dAd?d?dœdBœ	Z G dC„ dD¦  «        ZdS )Eu°  
Player Private Hideout (TiÃªn Phá»§ Ä�á»™ng ThiÃªn) & Waygate Infrastructure Engine for FreeExile.
Architected following Path of Exile 2 (PoE2) Player Hideout & Endgame Map Device specifications.

Core Subsystems:
1. Private Sanctuary Instance: 100% Zero-Trust Server-Authoritative private world instance.
2. Astral Map Device (ThiÃªn Ä�áº¡o Tinh Ä�á»“ Nghi):
   - Accepts Tier 1 to Tier 16 Astral Map Tablets.
   - Summons 6 active Swirling Void Portals in a hexagonal ring around the device altar.
   - Each portal traversal consumes 1 portal charge (6 -> 5 -> ... -> 0).
3. World Exploration Waygate (Váº¡n Giá»›i Giá»›i MÃ´n):
   - Configurable portal link to any of the 10 Canonical Open World Zones.
4. Quest & Bounty Portal (ThiÃªn Má»‡nh BÃ­ Cáº£nh MÃ´n):
   - Synchronizes with active quests (Story Chapters, Boss Bounties, Cryptic Chambers).
   - Instant direct teleportation to the target quest objective area.
5. Interactive Hideout Facilities:
   - Consignment Vault & Seasonal Stash (Remove-Only Tab Consolidation).
   - Primal Spirit Stone Alchemy Cauldron & Forge.
   - Meridian Meditation Mat (BÃ¡t Máº¡ch Ä�á»“ Ä�Ã n).
   - AI Agent Orb Delegation Altar (PhÃ¢n Tháº§n Tu Luyá»‡n).
é    )ÚannotationsN)ÚEnum)ÚDictÚListÚOptionalÚTupleÚAny)Ú	dataclassÚfieldc                  ó   — e Zd ZdZdZdZdZdS )ÚHideoutThemeÚASTRAL_PEAKÚDRAGON_VALLEYÚBAMBOO_SHRINEÚLUNAR_SANCTUARYN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   © ó    ú4C:\Projects\FreeExile\server\world\hideout_engine.pyr   r       s"   € € € € € Ø€KØ#€MØ#€MØ'€O€O€Or   r   c                  ó   — e Zd ZdZdZdZdS )ÚHideoutPortalTypeÚMAP_DEVICE_PORTALÚWORLD_EXPLORATION_GATEÚQUEST_BOUNTY_GATEN)r   r   r   r   r   r   r   r   r   r   r   '   s"   € € € € € Ø+ÐØ5ÐØ+ÐÐÐr   r   c                  ó"   — e Zd ZdZdZdZdZdZdS )ÚFacilityTypeÚCONSIGNMENT_STASH_VAULTÚPRIMAL_FORGE_CAULDRONÚMERIDIAN_MEDITATION_MATÚAGENT_ORB_ALTARÚASTRAL_MAP_DEVICEN)r   r   r   r   r    r!   r"   r#   r   r   r   r   r   -   s-   € € € € € Ø7ÐØ3ÐØ7ÐØ'€OØ+ÐÐÐr   r   T)ÚslotsÚfrozenc                  ó~   — e Zd ZU ded<   ded<   ded<   ded<   dZded<   d	Zded
<   dZded<   dZded<   dZded<   dS )Ú	AstralMapÚstrÚmap_idÚnameÚintÚtierÚzone_template_idé#   Úitem_quantity_bonus_pcté   Úitem_rarity_bonus_pcté   Úmonster_pack_size_pctu   Thá»‘ng LÄ©nh Man Quá»·Ú	boss_name)u$   +25% SÃ¡t ThÆ°Æ¡ng QuÃ¡i Váº­t Há»�au"   QuÃ¡i Váº­t KhÃ¡ng HÃ n BÄƒng +30%u1   +40% Tá»‘c Ä�á»™ Di Chuyá»ƒn Cá»§a QuÃ¡i Tinh AnhzTuple[str, ...]ÚaffixesN)	r   r   r   Ú__annotations__r/   r1   r3   r4   r5   r   r   r   r'   r'   5   sŸ   € € € € € € à€K€K�KØ€I€I�IØ€I€I�IØÐÐÑØ#%ÐÐ%Ð%Ð%Ñ%Ø!#ÐÐ#Ð#Ð#Ñ#Ø!#ÐÐ#Ð#Ð#Ñ#Ø.€IÐ.Ð.Ð.Ñ.ð €Gð ð ð ñ ð ð r   r'   )r$   c                  ó®   — e Zd ZU ded<   dZded<   dZded<   dZded<   d	Zd
ed<   d	Zded<   dZ	ded<   dZ
ded<    ed„ ¬¦  «        Zded<   dZded<   d	S )ÚMapDeviceStater(   Ú	device_idç        ÚfloatÚcenter_xÚcenter_ygÍÌÌÌÌÌ@ÚradiusNzOptional[AstralMap]Ú
active_mapúOptional[str]Úactive_instance_idé   r+   Útotal_portalsr   Úportals_remainingc                 ó   — dgdz  S )NFrB   r   r   r   r   ú<lambda>zMapDeviceState.<lambda>P   s   € ¸u¸gÈ¹k€ r   ©Údefault_factoryz
List[bool]Úportal_statesÚactivated_timestamp_ms)r   r   r   r6   r<   r=   r>   r?   rA   rC   rD   r   rI   rJ   r   r   r   r8   r8   F   sÈ   € € € € € € à€N€N�NØ€HÐÐÐÑØ€HÐÐÐÑØ€FÐÐÐÑØ&*€JÐ*Ð*Ð*Ñ*Ø(,ÐÐ,Ð,Ð,Ñ,Ø€MÐÐÐÑØÐÐÐÐÑØ % Ð6IÐ6IÐ JÑ JÔ J€MÐJÐJÐJÑJØ"#ÐÐ#Ð#Ð#Ñ#Ð#Ð#r   r8   c                  ón   — e Zd ZU ded<   dZded<   dZded<   dZded	<   d
Zded<   dZded<   dZ	ded<   dS )ÚWorldGateStater(   Úgate_idg      Àr;   r<   ç       @r=   Úzone_tang_kiem_nhaiÚtarget_zone_idu   TÃ¡ng Kiáº¿m NhaiÚtarget_zone_nameTÚboolÚ	is_activez#38bdf8Úvortex_colorN)
r   r   r   r6   r<   r=   rP   rQ   rS   rT   r   r   r   rL   rL   T   s‚   € € € € € € à€L€L�LØ€HÐÐÐÑØ€HÐÐÐÑØ/€NÐ/Ð/Ð/Ñ/Ø/ÐÐ/Ð/Ð/Ñ/Ø€IÐÐÐÑØ!€LÐ!Ð!Ð!Ñ!Ð!Ð!r   rL   c                  ó¦   — e Zd ZU ded<   dZded<   dZded<   dZd	ed
<   dZded<   dZded<   dZ	ded<   dZ
ded<   dZded<   dZded<   dZded<   dS )ÚQuestGateStater(   rM   g      @r;   r<   rN   r=   Úquest_story_01_thuc_tinhr@   Úactive_quest_idu   Thá»©c Tá»‰nh Kiáº¿m TÃ¢mÚquest_titleÚzone_ancient_sword_barrowrP   u   Cá»• Kiáº¿m TrÅ©ngrQ   ç      ^@Útarget_objective_xg     @U@Útarget_objective_yTrR   rS   z#fbbf24rT   N)r   r   r   r6   r<   r=   rX   rY   rP   rQ   r\   r]   rS   rT   r   r   r   rV   rV   _   sÈ   € € € € € € à€L€L�LØ€HÐÐÐÑØ€HÐÐÐÑØ%?€OÐ?Ð?Ð?Ñ?Ø2€KÐ2Ð2Ð2Ñ2Ø5€NÐ5Ð5Ð5Ñ5Ø0ÐÐ0Ð0Ð0Ñ0Ø %ÐÐ%Ð%Ð%Ñ%Ø $ÐÐ$Ð$Ð$Ñ$Ø€IÐÐÐÑØ!€LÐ!Ð!Ð!Ñ!Ð!Ð!r   rV   c                  óü   — e Zd ZU ded<   ded<   ded<   dZded<   d	Zded
<    ed„ ¬¦  «        Zded<    ed„ ¬¦  «        Zded<    ed„ ¬¦  «        Z	ded<    ed„ ¬¦  «        Z
ded<    ee¬¦  «        Zded<   dS )ÚPlayerHideoutr(   Ú
hideout_idÚowner_player_idr   Úthemer:   r;   Úspawn_xg      ÀÚspawn_yc                 ó"   — t          d¬¦  «        S )NÚmap_device_primary©r9   )r8   r   r   r   rF   zPlayerHideout.<lambda>u   s   € ½~ÐXlÐ?mÑ?mÔ?m€ r   rG   r8   Ú
map_devicec                 ó"   — t          d¬¦  «        S )NÚworld_gate_primary©rM   )rL   r   r   r   rF   zPlayerHideout.<lambda>v   ó   € ½~ÐVjÐ?kÑ?kÔ?k€ r   rL   Ú
world_gatec                 ó"   — t          d¬¦  «        S )NÚquest_gate_primaryrk   )rV   r   r   r   rF   zPlayerHideout.<lambda>w   rl   r   rV   Ú
quest_gatec                 óH   — t          t          j        ¦   «         dz  ¦  «        S )Néè  )r+   Útimer   r   r   rF   zPlayerHideout.<lambda>x   s   € ½cÅ$Ä)Á+Ä+ÐPTÑBTÑ>UÔ>U€ r   r+   Úcreated_timestamp_mszSet[str]ÚvisitorsN)r   r   r   r6   rc   rd   r   rh   rm   rp   rt   Úsetru   r   r   r   r_   r_   n   sü   € € € € € € à€O€O�OØÐÐÑØÐÐÑØ€GÐÐÐÑØ€GÐÐÐÑØ!& Ð7mÐ7mÐ!nÑ!nÔ!n€JÐnÐnÐnÑnØ!& Ð7kÐ7kÐ!lÑ!lÔ!l€JÐlÐlÐlÑlØ!& Ð7kÐ7kÐ!lÑ!lÔ!l€JÐlÐlÐlÑlØ % Ð6UÐ6UÐ VÑ VÔ VÐÐVÐVÐVÑVØ˜¨sÐ3Ñ3Ô3€HÐ3Ð3Ð3Ñ3Ð3Ð3r   r_   u   Bá»� Ä�Ã¡ TÃ n XÆ°Æ¡ngé   é
   g      I@)r*   Ú	min_levelÚ	max_levelÚxÚyu   Ä�áº§m Láº§y Thá»‘i Rá»¯aé   r0   g      N@g     €F@u   Sa Cá»‘t Hoang Máº¡cr.   ç      Y@r[   u   Pháº¿ TÃ­ch Xáº» Thá»‹té   é-   g      T@g     €a@u   Táº¿ Ä�Ã n Man Hoangé(   é7   g     Àb@u   Vá»±c Ä�áº§m BÄƒng Ä�á»™cé2   éA   g     €V@g     €f@u   Vá»±c Ä�Ã³i Nuá»‘t Chá»­ngé<   éK   g      i@g     @j@u   Miá»‡ng Lá»­a Nung MÃ¡uéF   éU   g      d@g     @o@u   Bá»‡ Thá»� Quá»· Ä�oáº¡t Má»‡nhéd   )	rO   rZ   Úzone_boundless_sandstormÚzone_blood_scale_ruinsÚzone_five_elements_altarÚzone_abyssal_ice_pondÚzone_infinite_blood_riftÚzone_purgatory_lava_cavernÚzone_boundless_celestial_palacec                  ó€   — e Zd ZdZd)d„Zej        fd*d
„Zd+d„Zd,d„Z		 	 d-d.d„Z
	 d/d0d„Zd1d„Z	 	 d2d3d#„Zd4d&„Zd5d(„ZdS )6ÚHideoutEnginez†
    Authoritative Hideout Manager for FreeExile.
    Manages private sanctums, 6-portal map device mechanics, and routing gates.
    ÚreturnÚNonec                ó   — i | _         d S ©N)Ú	_hideouts)Úselfs    r   Ú__init__zHideoutEngine.__init__�   s   € Ø35ˆŒˆˆr   Ú	player_idr(   rb   r   r_   c                ó  — || j         v r| j         |         S dt          j        ¦   «         j        dd…         › �}t	          |||t          d|› �¬¦  «        t          d|› �¬¦  «        t          d|› �¬¦  «        ¬	¦  «        }|| j         |<   |S )
zKRetrieves an existing hideout or instantiates a new sanctum for the player.Úho_Né   Údev_rg   Úwgate_rk   Úqgate_)r`   ra   rb   rh   rm   rp   )r—   ÚuuidÚuuid4Úhexr_   r8   rL   rV   )r˜   rš   rb   r`   Úhideouts        r   Úget_or_create_hideoutz#HideoutEngine.get_or_create_hideout“   s²   € ð ˜œÐ&Ð&Ø”> )Ô,Ð,à2�4œ:™<œ<Ô+¨C¨R¨CÔ0Ð2Ð2ˆ
ÝØ!Ø%ØÝ%Ð0C°zÐ0CÐ0CÐDÑDÔDÝ%Ð.C°zÐ.CÐ.CÐDÑDÔDÝ%Ð.C°zÐ.CÐ.CÐDÑDÔDð
ñ 
ô 
ˆð %,ˆŒ�yÑ!Øˆr   Ú	new_themeúTuple[bool, str]c                óT   — |                       |¦  «        }||_        dd|j        › d�fS )z>Modifies the aesthetic theme of the player's personal hideout.Tu0   Chuyá»ƒn Ä‘á»•i cáº£nh quan Ä�á»™ng Phá»§ sang [u   ] thÃ nh cÃ´ng.)r¥   rb   Úvalue)r˜   rš   r¦   r¤   s       r   Úchange_hideout_themez"HideoutEngine.change_hideout_theme¨   s5   € à×,Ò,¨YÑ7Ô7ˆØ!ˆŒØÐhÈ	ÌÐhÐhÐhÐhÐhr   Ú
astral_mapr'   ú&Tuple[bool, str, List[Dict[str, Any]]]c                ó$  — |j         dk     s|j         dk    rdd|j         › d�g fS |                      |¦  «        }|j        }d|j        › dt	          j        ¦   «         j        dd	…         › �}||_        ||_        d
|_	        d
|_
        dgd
z  |_        t          t          j        ¦   «         dz  ¦  «        |_        g }t          d
¦  «        D ]­}|dt           j        z  dz  z  }|j        |j        t!          j        |¦  «        z  z   }	|j        |j        t!          j        |¦  «        z  z   }
|                     ||j        › d|› �t3          |	d¦  «        t3          |
d¦  «        d|j         |j        ddœ¦  «         Œ®d|j        › d|j         › d�}d||fS )uµ   
        Activates the 6-Portal Astral Map Device (ThiÃªn Ä�áº¡o Tinh Ä�á»“ Nghi).
        Opens exactly 6 swirling portals around the dais perimeter in a hexagonal layout.
        rw   é   Fu   Cáº¥p Ä‘á»™ Tinh Ä�á»“ (Tier u/   ) khÃ´ng há»£p lá»‡! Chá»‰ cho phÃ©p Tier 1-16.Ú	inst_map_Ú_Nr}   rB   Trr   rN   g      @Ú_pé   z#a855f7)Úportal_indexÚ	portal_idr{   r|   Úis_openr,   Úmap_nameÚcoloru;   [THIÃŠN Ä�áº O TINH Ä�á»’ NGHI] KÃ­ch hoáº¡t thÃ nh cÃ´ng [z] (Tier u*   )! Ä�Ã£ triá»‡u há»“i 6 Cá»•ng HÆ° KhÃ´ng.)r,   r¥   rh   r)   r¡   r¢   r£   r?   rA   rC   rD   rI   r+   rs   rJ   ÚrangeÚmathÚpir<   r>   Úcosr=   ÚsinÚappendr9   Úroundr*   )r˜   rš   r«   r¤   ÚdevÚinstance_idÚportal_info_listÚiÚangleÚpxÚpyÚmsgs               r   Úactivate_map_devicez!HideoutEngine.activate_map_device®   sÖ  € ð Œ?˜QÒÐ *¤/°BÒ"6Ð"6ØÐz¸*¼/ÐzÐzÐzÐ|~Ð~Ð~à×,Ò,¨YÑ7Ô7ˆØÔ ˆð M *Ô"3ÐLÐLµd´j±l´lÔ6FÀrÈÀrÔ6JÐLÐLˆà#ˆŒØ!,ˆÔØˆÔØ !ˆÔØ!˜F Q™JˆÔÝ%(­¬©¬°tÑ);Ñ%<Ô%<ˆÔ"ð 24ÐÝ�q‘”ð 	ð 	ˆAØ˜�tœw™¨Ñ,Ñ-ˆEØ” ¤
­T¬X°e©_¬_Ñ <Ñ<ˆBØ” ¤
­T¬X°e©_¬_Ñ <Ñ<ˆBØ×#Ò#Ø !Ø #¤Ð4Ð4°Ð4Ð4Ý˜2˜q‘\”\Ý˜2˜q‘\”\ØØ"œØ&œOØ"ð	%ð 	%ñ 	ô 	ð 	ð 	ðQÈ*Ì/ð Qð QØ”_ðQð Qð Qð 	ð �SÐ*Ð*Ð*r   Nr³   úOptional[int]Úzone_engineúOptional[Any]ú*Tuple[bool, str, Optional[Dict[str, Any]]]c           	     óÜ  — |�t          |t          ¦  «        s|€|}d}|                      |¦  «        }|j        }|j        r|j        dk    s|j        sdS d}|� d|cxk    rdk     rn n|j        |         r|}n t          |j        ¦  «        D ]\  }}|r|} nŒ|dk    rdS d|j        |<   |xj        dz  c_        |j        |j        j	        |j        j
        |j        j        d	d	|j        |d
œ}	|j        dk    r_|�Et          |d¦  «        r5|j        r.|j        |j        v r |j                             |j        d¦  «         d|_        d|_        d|dz   › d�}
nd|dz   › d|j        › d�}
d|
|	fS )z¼
        Enters an active Map Device portal.
        Consumes exactly 1 portal from the remaining 6 charges.
        When 0 portals remain, the map instance is sealed permanently.
        Nr   )Fuf   ThiÃªn Ä�áº¡o Tinh Ä�á»“ Nghi hiá»‡n khÃ´ng cÃ³ Cá»•ng nÃ o má»Ÿ hoáº·c Ä‘Ã£ háº¿t lÆ°á»£t vÃ o (0/6)!NéÿÿÿÿrB   )Fu=   KhÃ´ng tÃ¬m tháº¥y Cá»•ng kháº£ dá»¥ng trÃªn Tinh Ä�á»“ Nghi!NFrw   r:   )rÀ   r¶   r,   Útarget_zone_templaterc   rd   rD   Úconsumed_portal_indexÚactive_instancesu   Ä�Ã£ bÆ°á»›c qua cá»•ng #uH   . Ä�Ã¢y lÃ  Cá»”NG CUá»�I CÃ™NG (0/6)! Tinh Ä�á»“ Nghi Ä‘Ã£ khÃ©p láº¡i.u   . CÃ²n láº¡i u   /6 Cá»•ng Tinh Ä�á»“.T)Ú
isinstancer+   r¥   rh   r?   rD   rA   rI   Ú	enumerater*   r,   r-   ÚhasattrrÐ   Úpop)r˜   rš   r³   rÉ   r¤   r¿   Ú
target_idxrÂ   rµ   ÚresultrÆ   s              r   Úenter_map_portalzHideoutEngine.enter_map_portalÞ   s  € ð Ð#­J°|ÅSÑ,IÔ,IÐ#ÈkÐNaØ&ˆKØˆLà×,Ò,¨YÑ7Ô7ˆØÔ ˆàŒ~ð 	I Ô!6¸!Ò!;Ð!;À3ÔCYÐ!;ð Ið  Ið ˆ
ØÐ#¨¨\Ð(=Ð(=Ò(=Ð(=¸AÒ(=Ð(=Ð(=Ð(=Ð(=À#ÔBSÐT`ÔBaÐ(=Ø%ˆJˆJõ (¨Ô(9Ñ:Ô:ð ð ‘
��7Øð Ø!"�JØ�Eðð ˜ÒÐØ_Ð_ð ).ˆÔ˜*Ñ%ØÐÔ Ñ"ÐÔð Ô1ØœÔ+Ø”NÔ'Ø$'¤NÔ$CØØØ!$Ô!6Ø%/ð	
ð 	
ˆð Ô  AÒ%Ð%ØÐ&­7°;Ð@RÑ+SÔ+SÐ&ØÔ)ð S¨cÔ.DÈÔHdÐ.dÐ.dØÔ0×4Ò4°SÔ5KÈTÑRÔRÐRØ!ˆCŒNØ%)ˆCÔ"ð G¨j¸1©nð  Gð  Gð  GˆCˆCàw¨j¸1©nÐwÐwÈ3ÔK`ÐwÐwÐwˆCà�S˜&Ð Ð r   ú Tuple[bool, str, Dict[str, Any]]c                óÔ  — |                       ||¦  «        \  }}}|sd|i fS |                      |¦  «        }|j        }|j        p	d|j        › �||j        |j        dœ}	|�…t          |d¦  «        ruddlm	}
 ddl
m}  ||j        p	d|j        › �|j        |j        |g d	d	d
dt          t          j        ¦   «         dz  ¦  «         |
d¬¦  «        ¬¦  «        }||j        |j        <   d||	fS )zl
        Activates map device and optionally registers an isolated InstanceSession with ZoneEngine.
        Fr¯   )rÀ   Úportalsr¶   r,   NrÐ   r   )ÚSpatialGrid)ÚInstanceSessionrw   rB   i   rr   g      P@)Ú	cell_size)rÀ   Útemplate_idÚinstance_zone_idÚleader_player_idÚmember_player_idsÚcurrent_layerÚ
max_layersÚlives_remainingÚtime_limit_secÚstart_timestamp_msÚspatial_gridT)rÇ   r¥   rh   rA   r)   r*   r,   rÓ   Úserver.world.spatial_gridrÛ   Úserver.world.zone_typesrÜ   r-   r+   rs   rÐ   rÀ   )r˜   rš   r«   rÉ   ÚokrÆ   rÚ   r¤   r¿   ÚresrÛ   rÜ   Úsessions                r   Úcreate_map_instance_sessionz)HideoutEngine.create_map_instance_session  sL  € ð  ×3Ò3°I¸zÑJÔJÑˆˆC�Øð 	"Ø˜#˜r�>Ð!à×,Ò,¨YÑ7Ô7ˆØÔ ˆàÔ1ÐTÐ5TÀÔARÐ5TÐ5TØØ"œØ”Oð	
ð 
ˆð Ð"¥w¨{Ð<NÑ'OÔ'OÐ"Ø=Ð=Ð=Ð=Ð=Ð=Ø?Ð?Ð?Ð?Ð?Ð?à%�oØÔ2ÐUÐ6UÀ*ÔBSÐ6UÐ6UØ&Ô-Ø!+Ô!<Ø!*Ø"$ØØØ !Ø#Ý#&¥t¤y¡{¤{°TÑ'9Ñ#:Ô#:Ø(˜[°4Ð8Ñ8Ô8ðñ ô ˆGð AHˆKÔ(¨Ô)<Ñ=à�S˜#ˆ~Ðr   rP   c           
     ó<  — |t           vr	dd|› d�i fS |                      |¦  «        }t           |         }|j        }||_        |d         |_        d|_        |j        |j        |j        ||d         |d         |d         |d         |j	        d	œ	}dd
|d         › d�|fS )z`
        Configures the World Exploration Waygate to open a rift to an open-world zone.
        Fu   VÃ¹ng Ä‘áº¥t [u5   ] khÃ´ng tá»“n táº¡i trÃªn Tháº§n ChÃ¢u Ä‘áº¡i lá»¥c!r*   Tr{   r|   ry   )	rM   r{   r|   rP   rQ   rc   rd   ry   rT   u?   Váº¡n Giá»›i Giá»›i MÃ´n Ä‘Ã£ thiáº¿t láº­p káº¿t ná»‘i tá»›i [ú].)
ÚCANONICAL_ZONESr¥   rm   rP   rQ   rS   rM   r<   r=   rT   )r˜   rš   rP   r¤   Ú	zone_metaÚwgÚgate_payloads          r   Úconfigure_world_gatez"HideoutEngine.configure_world_gateH  sÐ   € ð ¥Ð0Ð0ØÐp¨>ÐpÐpÐpÐrtÐtÐtà×,Ò,¨YÑ7Ô7ˆÝ# NÔ3ˆ	àÔˆØ*ˆÔØ'¨Ô/ˆÔØˆŒð ”zØ”Ø”Ø,Ø )¨&Ô 1Ø  ”~Ø  ”~Ø" ;Ô/ØœOð

ð 

ˆð ÐlÐW`ÐagÔWhÐlÐlÐlÐnzÐzÐzr   r~   Úquest_idrY   Úobjective_xr;   Úobjective_yc                óT  — |                       |¦  «        }|j        }t                               |i ¦  «                             dd¦  «        }	||_        ||_        ||_        |	|_        ||_        ||_	        d|_
        |j        |j        |j        ||||	|||j        dœ
}
dd|› d|	› d�|
fS )zi
        Configures the Quest Waygate to direct the player directly to the quest objective area.
        r*   u   VÃ¹ng Ä�áº¥t LÆ°u Ä�Ã yT)
rM   r{   r|   rõ   rY   rP   rQ   Útarget_xÚtarget_yrT   u>   ThiÃªn Má»‡nh BÃ­ Cáº£nh MÃ´n Ä‘Ã£ Ä‘á»“ng bá»™ nhiá»‡m vá»¥ [u	   ] táº¡i [rï   )r¥   rp   rð   ÚgetrX   rY   rP   rQ   r\   r]   rS   rM   r<   r=   rT   )r˜   rš   rõ   rY   rP   rö   r÷   r¤   ÚqgÚ	zone_nameró   s              r   Úconfigure_quest_gatez"HideoutEngine.configure_quest_gatei  sß   € ð ×,Ò,¨YÑ7Ô7ˆØÔˆå#×'Ò'¨¸Ñ;Ô;×?Ò?ÀÐHaÑbÔbˆ	à%ˆÔØ$ˆŒØ*ˆÔØ'ˆÔØ +ˆÔØ +ˆÔØˆŒð ”zØ”Ø”Ø Ø&Ø,Ø )Ø#Ø#ØœOð
ð 
ˆð ÐyÐVaÐyÐyÐluÐyÐyÐyð  |Hð  Hð  	Hr   Úfacility_typer   c                óH  — |                       |¦  «        }|t          j        k    r	ddddddœfS |t          j        k    rdddddœfS |t          j        k    rddd	dd
œfS |t          j        k    rdddddœfS |t          j        k    r|j        j        }dd|› d�d|dœfS ddi fS )zG
        Handles interaction with domestic hideout facilities.
        TuD   Má»Ÿ RÆ°Æ¡ng Váº¡n Giá»›i Ká»³ TrÃ¢n & Tab LuÃ¢n Há»“i thÃ nh cÃ´ng.ÚSTASH)ÚfacilityÚcan_withdrawÚcan_deposituN   Tiáº¿p cáº­n Luyá»‡n Ä�an LÃ´ & LÃ² Ä�Ãºc Linh Tháº¡ch sáºµn sÃ ng cháº¿ tÃ¡c.ÚFORGE)r  Úcrafting_availableue   Ngá»“i vÃ o BÃ¡t Máº¡ch Ä�á»“ Ä�Ã n, khÃ­ huyáº¿t lÆ°u thÃ´ng, sáºµn sÃ ng Ä‘áº£ thÃ´ng huyá»‡t vá»‹.ÚMERIDIAN)r  Úmeditation_activeuX   KÃ­ch hoáº¡t Ä�á»‹nh Há»“n Tháº§n ChÃ¢u Ä�Ã i uá»· thÃ¡c AI Agent tá»± Ä‘á»™ng du hÃ nh.Ú	AGENT_ORB)r  Údelegation_readyu>   ThiÃªn Ä�áº¡o Tinh Ä�á»“ Nghi sáºµn sÃ ng (Cá»•ng cÃ²n láº¡i: z/6).Ú
MAP_DEVICE)r  rD   Fu!   CÃ´ng trÃ¬nh khÃ´ng xÃ¡c Ä‘á»‹nh.)	r¥   r   r   r    r!   r"   r#   rh   rD   )r˜   rš   rÿ   r¤   rÚ   s        r   Úinteract_facilityzHideoutEngine.interact_facility‘  s<  € ð ×,Ò,¨YÑ7Ô7ˆà�LÔ@Ò@Ð@ØÐ_Ø#Ø $Ø#ðbð bð ð ð
 �lÔ@Ò@Ð@ØÐiØ#Ø&*ðlð lð ð ð �lÔBÒBÐBØð  AØ&Ø%)ðCð Cð ð ð �lÔ:Ò:Ð:ØÐsØ'Ø$(ðvð vð ð ð �lÔ<Ò<Ð<ØÔ(Ô:ˆGØÐgÐZaÐgÐgÐgØ(Ø%,ðjð jð ð ð
 Ð9¸2Ð=Ð=r   úDict[str, Any]c           
     óx  — |                       |¦  «        }|j        }|j        }|j        }|j        |j        j        |j        r|j        j        nd|j        r|j        j	        nd|j
        |j        t          |j        ¦  «        dœ|j        |j        |j        dœ|j        |j        |j        |j        |j        dœdœS )z>Provides a structured overview of the player's hideout status.N)r?   r,   rD   rC   rI   )rP   rQ   rS   )rõ   rY   rP   rQ   rS   )r`   rb   rh   rm   rp   )r¥   rh   rm   rp   r`   rb   r©   r?   r*   r,   rD   rC   ÚlistrI   rP   rQ   rS   rX   rY   )r˜   rš   Úhr¿   rò   rü   s         r   Úget_hideout_summaryz!HideoutEngine.get_hideout_summary¹  sØ   € à×&Ò& yÑ1Ô1ˆØŒlˆØŒ\ˆØŒ\ˆð œ,Ø”W”]à58´^ÐM˜cœnÔ1Ð1ÈØ/2¬~ÐG˜œÔ+Ð+À4Ø%(Ô%:Ø!$Ô!2Ý!% cÔ&7Ñ!8Ô!8ðð ð #%Ô"3Ø$&Ô$7Øœ\ðð ð Ô.Ø!œ~Ø"$Ô"3Ø$&Ô$7Øœ\ðð ð
ð 
ð 	
r   )r“   r”   )rš   r(   rb   r   r“   r_   )rš   r(   r¦   r   r“   r§   )rš   r(   r«   r'   r“   r¬   )NN)rš   r(   r³   rÈ   rÉ   rÊ   r“   rË   r–   )rš   r(   r«   r'   rÉ   rÊ   r“   rØ   )rš   r(   rP   r(   r“   rØ   )r~   r~   )rš   r(   rõ   r(   rY   r(   rP   r(   rö   r;   r÷   r;   r“   rØ   )rš   r(   rÿ   r   r“   rØ   )rš   r(   r“   r  )r   r   r   Ú__doc__r™   r   r   r¥   rª   rÇ   r×   rí   rô   rþ   r  r  r   r   r   r’   r’   Š   s*  € € € € € ðð ð
6ð 6ð 6ð 6ð +Ô8ðð ð ð ð ð*ið ið ið ið.+ð .+ð .+ð .+ðf '+Ø%)ð	=!ð =!ð =!ð =!ð =!ðF &*ð	)ð )ð )ð )ð )ðV{ð {ð {ð {ðN #Ø"ð&Hð &Hð &Hð &Hð &HðP&>ð &>ð &>ð &>ðP
ð 
ð 
ð 
ð 
ð 
r   r’   )r  Ú
__future__r   r¹   rs   r¡   Úenumr   Útypingr   r   r   r   r	   Údataclassesr
   r   r   r   r   r'   r8   rL   rV   r_   rð   r’   r   r   r   ú<module>r     ss  ððð ð, #Ð "Ð "Ð "Ð "Ð "Ø €€€Ø €€€Ø €€€Ø Ð Ð Ð Ð Ð Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (ð(ð (ð (ð (ð (�4ñ (ô (ð (ð,ð ,ð ,ð ,ð ,˜ñ ,ô ,ð ,ð,ð ,ð ,ð ,ð ,�4ñ ,ô ,ð ,ð €�˜dÐ#Ñ#Ô#ðð ð ð ð ñ ô ñ $Ô#ðð  €�ÐÑÔð
$ð 
$ð 
$ð 
$ð 
$ñ 
$ô 
$ñ Ôð
$ð €�ÐÑÔð"ð "ð "ð "ð "ñ "ô "ñ Ôð"ð €�ÐÑÔð"ð "ð "ð "ð "ñ "ô "ñ Ôð"ð €�ÐÑÔð
4ð 
4ð 
4ð 
4ð 
4ñ 
4ô 
4ñ Ôð
4ð %=È1Ð[]ÐdhÐosÐtÐtØ*EÐTUÐdfÐmqÐx|Ð!}Ð!}Ø)?ÈbÐ_aÐhmÐtyÐ zÐ zØ'@ÈrÐ`bÐimÐtyÐzÐzØ)?ÈbÐ_aÐhmÐtyÐ zÐ zØ&AÐPRÐacÐjnÐuzÐ{Ð{Ø)EÐTVÐegÐnsÐzð  !Að  !AØ+DÐSUÐdfÐmrÐy~Ð"Ð"Ø0QÐ`bÐqtð  |Að  HMð  (Nð  (Nð
ð 
€ðL
ð L
ð L
ð L
ð L
ñ L
ô L
ð L
ð L
ð L
r   