§
    —ÿ®jb'  ã                   óæ   — d Z ddlZddlmc mZ ddlmZm	Z	 ddl
Z
ddlmZmZmZ ddlmZmZmZ  G d„ d¦  «        Z G d„ d	¦  «        Z G d
„ d¦  «        Z G d„ d¦  «        Z G d„ d¦  «        ZdS )u  Tests for Faustus Currency Exchange Handler & Waystone T15 Restock.
=====================================================================
Kiá»ƒm thá»­ toÃ n diá»‡n:
1. Cáº¥u hÃ¬nh & Ä�á»‹nh má»©c an toÃ n (Config defaults, Rule 4 tráº§n < 500 dÃ²ng).
2. Khu vá»±c an toÃ n (INV-EXCHANGE-SAFE-AREA): Cháº¥p nháº­n Hideout/Town, tá»« chá»‘i Map.
3. Ä�iá»�u kiá»‡n kÃ­ch hoáº¡t Restock: Waystone stock == 0 kÃ­ch hoáº¡t, stock > 0 bá»� qua.
4. Báº¥t biáº¿n dá»± trá»¯ Chaos sinh tá»“n (INV-EXCHANGE-RESERVE-SAFE): Tá»« chá»‘i khi Chaos <= 50.
5. Báº¥t biáº¿n thuáº¿ VÃ ng (INV-EXCHANGE-GOLD-TAX): Tá»« chá»‘i khi VÃ ng <= 5000.
6. Chuá»—i phÃ­m SSoT (Rule 7): PhÃ­m '/' (VK_OEM_2 0xBF) má»Ÿ sÃ n, Spacebar (VK_SPACE 0x20) Ä‘Ã³ng sÃ n.
7. Thá»±c thi trá»�n váº¹n chu trÃ¬nh Restock Waystone T15 (Chaos -> Waystone T15).
8. KhÃ³a an toÃ n mÃ´ phá»�ng (INV-FOCUS-SAFETY-SEPARATION):
   - is_simulated=True khÃ´ng rÃ² rá»‰ tÃ­n hiá»‡u pháº§n cá»©ng ra desktop.
   - Tá»« chá»‘i má»Ÿ sÃ n khi khÃ´ng cÃ³ Focus trÃªn mÃ´i trÆ°á»�ng thá»±c táº¿.
é    N)Ú	MagicMockÚpatch)ÚCurrencyExchangeHandlerÚCurrencyExchangeHandlerConfigÚExchangeResult)ÚVK_OEM_2ÚVK_SPACEÚset_input_simulation_modec                   ó   — e Zd Zd„ ZdS )Ú!TestCurrencyExchangeHandlerConfigc                 ó.	  — t          ¦   «         }|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚dx}x}}|j
        }d	}||k    }|sªt          j        d|fd
||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚dx}x}}|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚dx}x}}|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚dx}x}}|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚dx}x}}|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚dx}x}}dS )uH   XÃ¡c minh cÃ¡c háº±ng sá»‘ báº¥t biáº¿n trong cáº¥u hÃ¬nh máº·c Ä‘á»‹nh.éˆ  ©ú==)z8%(py2)s
{%(py2)s = %(py0)s.min_gold_reserve
} == %(py5)sÚcfg©Úpy0Úpy2Úpy5úassert %(py7)sÚpy7Nç      I@)z9%(py2)s
{%(py2)s = %(py0)s.min_chaos_reserve
} == %(py5)sç       @)z>%(py2)s
{%(py2)s = %(py0)s.chaos_per_waystone_t15
} == %(py5)sé–   )z=%(py2)s
{%(py2)s = %(py0)s.gold_tax_per_waystone
} == %(py5)sé   )z9%(py2)s
{%(py2)s = %(py0)s.default_buy_count
} == %(py5)sr   )zB%(py2)s
{%(py2)s = %(py0)s.waystone_restock_threshold
} == %(py5)s)r   Úmin_gold_reserveÚ
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanationÚmin_chaos_reserveÚchaos_per_waystone_t15Úgold_tax_per_waystoneÚdefault_buy_countÚwaystone_restock_threshold)Úselfr   Ú@py_assert1Ú@py_assert4Ú@py_assert3Ú@py_format6Ú@py_format8s          ú<C:\Projects\AutoPOE2\tests\test_currency_exchange_handler.pyÚtest_default_config_valuesz<TestCurrencyExchangeHandlerConfig.test_default_config_values    sY  € å+Ñ-Ô-ˆØÔ#Ð+ tÐ+Ð# tÒ+Ð+Ð+Ð+Õ+Ô+Ð+Ð+Ð+Ð+Ð# tÐ+Ñ+Ô+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+ˆsÑ+Ô+Ð+Õ+Ô+ˆsÑ+Ô+Ð+Ð+Õ+Ô+Ð#Ñ+Ô+Õ+Ô+ tÑ+Ô+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+ØÔ$Ð,¨Ð,Ð$¨Ò,Ð,Ð,Ð,Õ,Ô,Ð,Ð,Ð,Ð,Ð$¨Ð,Ñ,Ô,Ð,Õ,Ô,Ñ,Ô,Ð,Ð,Õ,Ô,ˆsÑ,Ô,Ð,Õ,Ô,ˆsÑ,Ô,Ð,Ð,Õ,Ô,Ð$Ñ,Ô,Õ,Ô,¨Ñ,Ô,Ð,Ð,Ñ,Ð,Ð,Ð,Ð,Ð,Ñ,Ð,Õ,Õ,Ô,Ð,Ñ,Ô,Ñ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,ØÔ)Ð0¨SÐ0Ð)¨SÒ0Ð0Ð0Ð0Õ0Ô0Ð0Ð0Ð0Ð0Ð)¨SÐ0Ñ0Ô0Ð0Õ0Ô0Ñ0Ô0Ð0Ð0Õ0Ô0ˆsÑ0Ô0Ð0Õ0Ô0ˆsÑ0Ô0Ð0Ð0Õ0Ô0Ð)Ñ0Ô0Õ0Ô0¨SÑ0Ô0Ð0Ð0Ñ0Ð0Ð0Ð0Ð0Ð0Ñ0Ð0Õ0Õ0Ô0Ð0Ñ0Ô0Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð0ØÔ(Ð/¨CÐ/Ð(¨CÒ/Ð/Ð/Ð/Õ/Ô/Ð/Ð/Ð/Ð/Ð(¨CÐ/Ñ/Ô/Ð/Õ/Ô/Ñ/Ô/Ð/Ð/Õ/Ô/ˆsÑ/Ô/Ð/Õ/Ô/ˆsÑ/Ô/Ð/Ð/Õ/Ô/Ð(Ñ/Ô/Õ/Ô/¨CÑ/Ô/Ð/Ð/Ñ/Ð/Ð/Ð/Ð/Ð/Ñ/Ð/Õ/Õ/Ô/Ð/Ñ/Ô/Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/Ð/ØÔ$Ð)¨Ð)Ð$¨Ò)Ð)Ð)Ð)Õ)Ô)Ð)Ð)Ð)Ð)Ð$¨Ð)Ñ)Ô)Ð)Õ)Ô)Ñ)Ô)Ð)Ð)Õ)Ô)ˆsÑ)Ô)Ð)Õ)Ô)ˆsÑ)Ô)Ð)Ð)Õ)Ô)Ð$Ñ)Ô)Õ)Ô)¨Ñ)Ô)Ð)Ð)Ñ)Ð)Ð)Ð)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)ØÔ-Ð2°Ð2Ð-°Ò2Ð2Ð2Ð2Õ2Ô2Ð2Ð2Ð2Ð2Ð-°Ð2Ñ2Ô2Ð2Õ2Ô2Ñ2Ô2Ð2Ð2Õ2Ô2ˆsÑ2Ô2Ð2Õ2Ô2ˆsÑ2Ô2Ð2Ð2Õ2Ô2Ð-Ñ2Ô2Õ2Ô2°Ñ2Ô2Ð2Ð2Ñ2Ð2Ð2Ð2Ð2Ð2Ñ2Ð2Õ2Õ2Ô2Ð2Ñ2Ô2Ñ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2ó    N)Ú__name__Ú
__module__Ú__qualname__r1   © r2   r0   r   r      s#   € € € € € ð3ð 3ð 3ð 3ð 3r2   r   c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )Ú&TestCurrencyExchangeHandlerAreaAndNeedc                 óÂ	  — t          d¬¦  «        }|j        }d} ||¦  «        }d}||u }|sÐt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd	|iz  }t          t          j	        |¦  «        ¦  «        ‚d
x}x}x}x}}|j        }d} ||¦  «        }d}||u }|sÐt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd	|iz  }t          t          j	        |¦  «        ¦  «        ‚d
x}x}x}x}}|j        }d} ||¦  «        }d}||u }|sÐt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd	|iz  }t          t          j	        |¦  «        ¦  «        ‚d
x}x}x}x}}|j        }d} ||¦  «        }d}||u }|sÐt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd	|iz  }t          t          j	        |¦  «        ¦  «        ‚d
x}x}x}x}}|j        }d} ||¦  «        }d}||u }|sÐt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd	|iz  }t          t          j	        |¦  «        ¦  «        ‚d
x}x}x}x}}d
S )uB   INV-EXCHANGE-SAFE-AREA: Chá»‰ má»Ÿ sÃ n táº¡i Hideout hoáº·c Town.T©Úis_simulatedúShoreline Hideout©Úis)zR%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.is_safe_area
}(%(py4)s)
} is %(py9)sÚhandler)r   r   Úpy4Úpy6Úpy9zassert %(py11)sÚpy11NzLioneye's Watch TownzForest EncampmentúCemetery Map (Tier 15)FzDeserted Arena)
r   Úis_safe_arear   r   r   r    r!   r"   r#   r$   )	r*   r?   r+   r-   Ú@py_assert5Ú@py_assert8Ú@py_assert7Ú@py_format10Ú@py_format12s	            r0   Útest_safe_area_filteringz?TestCurrencyExchangeHandlerAreaAndNeed.test_safe_area_filtering,   sÇ  € å)°tÐ<Ñ<Ô<ˆØÔ#Ð@Ð$7Ð@Ð#Ð#Ð$7Ñ8Ô8Ð@¸DÐ@Ð8¸DÐ@Ð@Ð@Ð@Õ@Ô@Ð@Ð@Ð@Ð@Ð8¸DÐ@Ñ@Ô@Ð@Õ@Ô@Ñ@Ô@Ð@Ð@Õ@Ô@ˆwÑ@Ô@Ð@Õ@Ô@ˆwÑ@Ô@Ð@Ð@Õ@Ô@Ð#Ñ@Ô@Õ@Ô@Ð$7Ñ@Ô@Õ@Ô@Ð8Ñ@Ô@Õ@Ô@¸DÑ@Ô@Ð@Ð@Ñ@Ð@Ð@Ð@Ð@Ð@Ñ@Ð@Õ@Õ@Ô@Ð@Ñ@Ô@Ñ@Ô@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@ØÔ#ÐCÐ$:ÐCÐ#Ð#Ð$:Ñ;Ô;ÐC¸tÐCÐ;¸tÐCÐCÐCÐCÕCÔCÐCÐCÐCÐCÐ;¸tÐCÑCÔCÐCÕCÔCÑCÔCÐCÐCÕCÔCˆwÑCÔCÐCÕCÔCˆwÑCÔCÐCÐCÕCÔCÐ#ÑCÔCÕCÔCÐ$:ÑCÔCÕCÔCÐ;ÑCÔCÕCÔC¸tÑCÔCÐCÐCÑCÐCÐCÐCÐCÐCÑCÐCÕCÕCÔCÐCÑCÔCÑCÔCÐCÐCÐCÐCÐCÐCÐCÐCÐCÐCÐCØÔ#Ð@Ð$7Ð@Ð#Ð#Ð$7Ñ8Ô8Ð@¸DÐ@Ð8¸DÐ@Ð@Ð@Ð@Õ@Ô@Ð@Ð@Ð@Ð@Ð8¸DÐ@Ñ@Ô@Ð@Õ@Ô@Ñ@Ô@Ð@Ð@Õ@Ô@ˆwÑ@Ô@Ð@Õ@Ô@ˆwÑ@Ô@Ð@Ð@Õ@Ô@Ð#Ñ@Ô@Õ@Ô@Ð$7Ñ@Ô@Õ@Ô@Ð8Ñ@Ô@Õ@Ô@¸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ˆwÑFÔFÐFÕFÔFˆwÑFÔFÐFÐFÕFÔFÐ#ÑFÔFÕFÔFÐ$<ÑFÔFÕFÔFÐ=ÑFÔFÕFÔFÀÑFÔFÐFÐFÑFÐFÐFÐFÐFÐFÑFÐFÕFÕFÔFÐFÑFÔFÑFÔFÐFÐFÐFÐFÐFÐFÐFÐFÐFÐFÐFØÔ#Ð>Ð$4Ð>Ð#Ð#Ð$4Ñ5Ô5Ð>¸Ð>Ð5¸Ð>Ð>Ð>Ð>Õ>Ô>Ð>Ð>Ð>Ð>Ð5¸Ð>Ñ>Ô>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô>ˆwÑ>Ô>Ð>Õ>Ô>ˆwÑ>Ô>Ð>Ð>Õ>Ô>Ð#Ñ>Ô>Õ>Ô>Ð$4Ñ>Ô>Õ>Ô>Ð5Ñ>Ô>Õ>Ô>¸Ñ>Ô>Ð>Ð>Ñ>Ð>Ð>Ð>Ð>Ð>Ñ>Ð>Õ>Õ>Ô>Ð>Ñ>Ô>Ñ>Ô>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>r2   c                 óÖ  — t          d¬¦  «        }|                     dd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        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚dx}x}}|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚dx}x}}d}|j        }||v }	|	sªt          j        d|	fd||f¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚dx}x}	}dS )u=   Tá»« chá»‘i giao dá»‹ch náº¿u Ä‘ang trong Map chiáº¿n Ä‘áº¥u.Tr:   r   ç      Y@é'  rD   ©Úwaystone_stockÚavailable_chaosÚavailable_goldÚ	area_nameFr=   ©z/%(py2)s
{%(py2)s = %(py0)s.success
} is %(py5)sÚresr   r   r   NÚREJECTED_UNSAFE_AREAr   ©z4%(py2)s
{%(py2)s = %(py0)s.action_taken
} == %(py5)su   khÃ´ng an toÃ n©Úin©z.%(py1)s in %(py5)s
{%(py5)s = %(py3)s.reason
}©Úpy1Úpy3r   )r   Úexecute_waystone_t15_restockÚsuccessr   r   r   r    r!   r"   r#   r$   Úaction_takenÚreason)
r*   r?   rU   r+   r,   r-   r.   r/   Ú@py_assert0Ú@py_assert2s
             r0   Útest_unsafe_area_rejectedz@TestCurrencyExchangeHandlerAreaAndNeed.test_unsafe_area_rejected5   sâ  € å)°tÐ<Ñ<Ô<ˆØ×2Ò2ØØ!Ø Ø.ð	 3ñ 
ô 
ˆð Œ{Ð#˜eÐ#ˆ{˜eÐ#Ð#Ð#Ð#Õ#Ô#Ð#Ð#Ð#Ð#ˆ{˜eÐ#Ñ#Ô#Ð#Õ#Ô#Ñ#Ô#Ð#Ð#Õ#Ô#ˆsÑ#Ô#Ð#Õ#Ô#ˆsÑ#Ô#Ð#Ð#Õ#Ô#ˆ{Ñ#Ô#Õ#Ô#˜eÑ#Ô#Ð#Ð#Ñ#Ð#Ð#Ð#Ð#Ð#Ñ#Ð#Õ#Õ#Ô#Ð#Ñ#Ô#Ñ#Ô#Ð#Ð#Ð#Ð#Ð#Ð#Ð#ØÔÐ9Ð#9Ð9ÐÐ#9Ò9Ð9Ð9Ð9Õ9Ô9Ð9Ð9Ð9Ð9ÐÐ#9Ð9Ñ9Ô9Ð9Õ9Ô9Ñ9Ô9Ð9Ð9Õ9Ô9ˆsÑ9Ô9Ð9Õ9Ô9ˆsÑ9Ô9Ð9Ð9Õ9Ô9ÐÑ9Ô9Õ9Ô9Ð#9Ñ9Ô9Ð9Ð9Ñ9Ð9Ð9Ð9Ð9Ð9Ñ9Ð9Õ9Õ9Ô9Ð9Ñ9Ô9Ñ9Ô9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ø Ð. C¤JÐ.Ð  JÐ.Ð.Ð.Ð.Õ.Ô.Ð.Ð.Ð.Ð.Ð  JÐ.Ñ.Ô.Õ.Ô.Ð Ñ.Ô.Ð.Õ.Ô.Ñ.Ô.Ð.Ð.Õ.Ô. CÑ.Ô.Ð.Õ.Ô. CÑ.Ô.Ð.Ð.Õ.Ô. JÑ.Ô.Ð.Ð.Ñ.Ð.Ð.Ð.Ð.Ð.Ñ.Ð.Õ.Õ.Ô.Ð.Ñ.Ô.Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.r2   c                 óâ
  — t          d¬¦  «        }|                     dd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        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚dx}x}}|j        }d}||k    }|sªt          j        d|fd||f¦  «        d
t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd
t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚dx}x}}|j        }d}||k    }|sªt          j        d|fd||f¦  «        d
t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd
t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚dx}x}}|j        }d}||k    }|sªt          j        d|fd||f¦  «        d
t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd
t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚dx}x}}|j        }d}||k    }|sªt          j        d|fd||f¦  «        d
t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd
t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚dx}x}}|j        }d}||k    }|sªt          j        d|fd||f¦  «        d
t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd
t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚dx}x}}|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 )u@   Kho Stash váº«n cÃ²n Waystone (> 0) thÃ¬ khÃ´ng cáº§n mua thÃªm.Tr:   é   rM   rN   r<   rO   r=   rT   rU   r   r   r   NÚNO_ACTION_REQUIREDr   rW   r   ©z8%(py2)s
{%(py2)s = %(py0)s.waystones_bought
} == %(py5)sg        ©z3%(py2)s
{%(py2)s = %(py0)s.chaos_spent
} == %(py5)s©z2%(py2)s
{%(py2)s = %(py0)s.gold_spent
} == %(py5)s©z7%(py2)s
{%(py2)s = %(py0)s.remaining_chaos
} == %(py5)s©z6%(py2)s
{%(py2)s = %(py0)s.remaining_gold
} == %(py5)s)r   r^   r_   r   r   r   r    r!   r"   r#   r$   r`   Úwaystones_boughtÚchaos_spentÚ
gold_spentÚremaining_chaosÚremaining_gold)r*   r?   rU   r+   r,   r-   r.   r/   s           r0   Ú+test_restock_not_needed_when_stock_positivezRTestCurrencyExchangeHandlerAreaAndNeed.test_restock_not_needed_when_stock_positiveB   s_  € å)°tÐ<Ñ<Ô<ˆØ×2Ò2ØØ!Ø Ø)ð	 3ñ 
ô 
ˆð Œ{Ð"˜dÐ"ˆ{˜dÐ"Ð"Ð"Ð"Õ"Ô"Ð"Ð"Ð"Ð"ˆ{˜dÐ"Ñ"Ô"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"ˆsÑ"Ô"Ð"Õ"Ô"ˆsÑ"Ô"Ð"Ð"Õ"Ô"ˆ{Ñ"Ô"Õ"Ô"˜dÑ"Ô"Ð"Ð"Ñ"Ð"Ð"Ð"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"ØÔÐ7Ð#7Ð7ÐÐ#7Ò7Ð7Ð7Ð7Õ7Ô7Ð7Ð7Ð7Ð7ÐÐ#7Ð7Ñ7Ô7Ð7Õ7Ô7Ñ7Ô7Ð7Ð7Õ7Ô7ˆsÑ7Ô7Ð7Õ7Ô7ˆsÑ7Ô7Ð7Ð7Õ7Ô7ÐÑ7Ô7Õ7Ô7Ð#7Ñ7Ô7Ð7Ð7Ñ7Ð7Ð7Ð7Ð7Ð7Ñ7Ð7Õ7Õ7Ô7Ð7Ñ7Ô7Ñ7Ô7Ð7Ð7Ð7Ð7Ð7Ð7Ð7ØÔ#Ð( qÐ(Ð# qÒ(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(Ð# qÐ(Ñ(Ô(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(ˆsÑ(Ô(Ð(Õ(Ô(ˆsÑ(Ô(Ð(Ð(Õ(Ô(Ð#Ñ(Ô(Õ(Ô( qÑ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(ØŒÐ% #Ð%ˆ #Ò%Ð%Ð%Ð%Õ%Ô%Ð%Ð%Ð%Ð%ˆ #Ð%Ñ%Ô%Ð%Õ%Ô%Ñ%Ô%Ð%Ð%Õ%Ô%ˆsÑ%Ô%Ð%Õ%Ô%ˆsÑ%Ô%Ð%Ð%Õ%Ô%ˆÑ%Ô%Õ%Ô% #Ñ%Ô%Ð%Ð%Ñ%Ð%Ð%Ð%Ð%Ð%Ñ%Ð%Õ%Õ%Ô%Ð%Ñ%Ô%Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Ð%Ð%ØŒ~Ð" Ð"ˆ~ Ò"Ð"Ð"Ð"Õ"Ô"Ð"Ð"Ð"Ð"ˆ~ Ð"Ñ"Ô"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"ˆsÑ"Ô"Ð"Õ"Ô"ˆsÑ"Ô"Ð"Ð"Õ"Ô"ˆ~Ñ"Ô"Õ"Ô" Ñ"Ô"Ð"Ð"Ñ"Ð"Ð"Ð"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"ØÔ"Ð+ eÐ+Ð" eÒ+Ð+Ð+Ð+Õ+Ô+Ð+Ð+Ð+Ð+Ð" eÐ+Ñ+Ô+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+ˆsÑ+Ô+Ð+Õ+Ô+ˆsÑ+Ô+Ð+Ð+Õ+Ô+Ð"Ñ+Ô+Õ+Ô+ eÑ+Ô+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+ØÔ!Ð* UÐ*Ð! UÒ*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*Ð! UÐ*Ñ*Ô*Ð*Õ*Ô*Ñ*Ô*Ð*Ð*Õ*Ô*ˆsÑ*Ô*Ð*Õ*Ô*ˆsÑ*Ô*Ð*Ð*Õ*Ô*Ð!Ñ*Ô*Õ*Ô* UÑ*Ô*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*r2   N)r3   r4   r5   rK   rd   rr   r6   r2   r0   r8   r8   +   sA   € € € € € ð?ð ?ð ?ð/ð /ð /ð+ð +ð +ð +ð +r2   r8   c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )Ú#TestCurrencyExchangeHandlerReservesc                 óú  — t          dd¬¦  «        }t          |d¬¦  «        }|                     dd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	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}}|j        }d}||k    }|sªt	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}}d}	|j        }|	|v }
|
sªt	          j        d|
fd|	|f¦  «        t	          j	        |	¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}	x}
}dS )uF   INV-EXCHANGE-RESERVE-SAFE: Tá»« chá»‘i khi Chaos <= min_chaos_reserve.r   r   )r%   r&   T©Úconfigr;   r   g     €I@rN   r<   rO   Fr=   rT   rU   r   r   r   NÚREJECTED_LOW_CHAOSr   rW   u   Báº£o vá»‡ Chaos OrbrX   rZ   r[   ©r   r   r^   r_   r   r   r   r    r!   r"   r#   r$   r`   ra   ©r*   r   r?   rU   r+   r,   r-   r.   r/   rb   rc   s              r0   Útest_reject_low_chaos_reservezATestCurrencyExchangeHandlerReserves.test_reject_low_chaos_reserveU   sù  € å+¸dÐ[^Ð_Ñ_Ô_ˆÝ)°À4ÐHÑHÔHˆð ×2Ò2ØØ Ø Ø)ð	 3ñ 
ô 
ˆð Œ{Ð#˜eÐ#ˆ{˜eÐ#Ð#Ð#Ð#Õ#Ô#Ð#Ð#Ð#Ð#ˆ{˜eÐ#Ñ#Ô#Ð#Õ#Ô#Ñ#Ô#Ð#Ð#Õ#Ô#ˆsÑ#Ô#Ð#Õ#Ô#ˆsÑ#Ô#Ð#Ð#Õ#Ô#ˆ{Ñ#Ô#Õ#Ô#˜eÑ#Ô#Ð#Ð#Ñ#Ð#Ð#Ð#Ð#Ð#Ñ#Ð#Õ#Õ#Ô#Ð#Ñ#Ô#Ñ#Ô#Ð#Ð#Ð#Ð#Ð#Ð#Ð#ØÔÐ7Ð#7Ð7ÐÐ#7Ò7Ð7Ð7Ð7Õ7Ô7Ð7Ð7Ð7Ð7ÐÐ#7Ð7Ñ7Ô7Ð7Õ7Ô7Ñ7Ô7Ð7Ð7Õ7Ô7ˆsÑ7Ô7Ð7Õ7Ô7ˆsÑ7Ô7Ð7Ð7Õ7Ô7ÐÑ7Ô7Õ7Ô7Ð#7Ñ7Ô7Ð7Ð7Ñ7Ð7Ð7Ð7Ð7Ð7Ñ7Ð7Õ7Õ7Ô7Ð7Ñ7Ô7Ñ7Ô7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ø%Ð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Ð3Ð3Ð3Ð3r2   c                 óú  — t          dd¬¦  «        }t          |d¬¦  «        }|                     dd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	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}}|j        }d}||k    }|sªt	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}}d}	|j        }|	|v }
|
sªt	          j        d|
fd|	|f¦  «        t	          j	        |	¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}	x}
}dS )uA   INV-EXCHANGE-GOLD-TAX: Tá»« chá»‘i khi VÃ ng <= min_gold_reserve.r   r   )r   r'   Trv   r   rM   iì  r<   rO   Fr=   rT   rU   r   r   r   NÚREJECTED_LOW_GOLDr   rW   u   Báº£o vá»‡ Gold TaxrX   rZ   r[   ry   rz   s              r0   Útest_reject_low_gold_taxz<TestCurrencyExchangeHandlerReserves.test_reject_low_gold_taxe   sù  € å+¸TÐY\Ð]Ñ]Ô]ˆÝ)°À4ÐHÑHÔHˆð ×2Ò2ØØ!ØØ)ð	 3ñ 
ô 
ˆð Œ{Ð#˜eÐ#ˆ{˜eÐ#Ð#Ð#Ð#Õ#Ô#Ð#Ð#Ð#Ð#ˆ{˜eÐ#Ñ#Ô#Ð#Õ#Ô#Ñ#Ô#Ð#Ð#Õ#Ô#ˆsÑ#Ô#Ð#Õ#Ô#ˆsÑ#Ô#Ð#Ð#Õ#Ô#ˆ{Ñ#Ô#Õ#Ô#˜eÑ#Ô#Ð#Ð#Ñ#Ð#Ð#Ð#Ð#Ð#Ñ#Ð#Õ#Õ#Ô#Ð#Ñ#Ô#Ñ#Ô#Ð#Ð#Ð#Ð#Ð#Ð#Ð#ØÔÐ6Ð#6Ð6ÐÐ#6Ò6Ð6Ð6Ð6Õ6Ô6Ð6Ð6Ð6Ð6ÐÐ#6Ð6Ñ6Ô6Ð6Õ6Ô6Ñ6Ô6Ð6Ð6Õ6Ô6ˆsÑ6Ô6Ð6Õ6Ô6ˆsÑ6Ô6Ð6Ð6Õ6Ô6ÐÑ6Ô6Õ6Ô6Ð#6Ñ6Ô6Ð6Ð6Ñ6Ð6Ð6Ð6Ð6Ð6Ñ6Ð6Õ6Õ6Ô6Ð6Ñ6Ô6Ñ6Ô6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ø$Ð2¨¬
Ð2Ð$¨
Ð2Ð2Ð2Ð2Õ2Ô2Ð2Ð2Ð2Ð2Ð$¨
Ð2Ñ2Ô2Õ2Ô2Ð$Ñ2Ô2Ð2Õ2Ô2Ñ2Ô2Ð2Ð2Õ2Ô2¨Ñ2Ô2Ð2Õ2Ô2¨Ñ2Ô2Ð2Ð2Õ2Ô2¨
Ñ2Ô2Ð2Ð2Ñ2Ð2Ð2Ð2Ð2Ð2Ñ2Ð2Õ2Õ2Ô2Ð2Ñ2Ô2Ñ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2r2   c                 ó  — t          ddddd¬¦  «        }t          |d¬¦  «        }|                     d	d
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	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}}|j        }d}||k    }|sªt	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}}|j        }d}||k    }|sªt	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}}|j        }d}||k    }|sªt	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}}|j        }d}||k    }|sªt	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}}|j        }d}||k    }|sªt	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}}|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 )!uQ   Mua sá»‘ lÆ°á»£ng giá»›i háº¡n theo ngÃ¢n sÃ¡ch kháº£ dá»¥ng thay vÃ¬ mua full 5.r   r   r   r   r   )r%   r&   r   r'   r(   Trv   r   g      K@rN   r<   rO   r=   rT   rU   r   r   r   NÚRESTOCKED_WAYSTONESr   rW   é   rh   g      @ri   i,  rj   rk   iä%  rl   )r   r   r^   r_   r   r   r   r    r!   r"   r#   r$   r`   rm   rn   ro   rp   rq   )	r*   r   r?   rU   r+   r,   r-   r.   r/   s	            r0   Ú$test_partial_restock_budget_clampingzHTestCurrencyExchangeHandlerReserves.test_partial_restock_budget_clampingu   sˆ  € å+Ø"Ø#&Ø!Ø"%Øð
ñ 
ô 
ˆõ *°À4ÐHÑHÔHˆð ×2Ò2ØØ Ø Ø)ð	 3ñ 
ô 
ˆð Œ{Ð"˜dÐ"ˆ{˜dÐ"Ð"Ð"Ð"Õ"Ô"Ð"Ð"Ð"Ð"ˆ{˜dÐ"Ñ"Ô"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"ˆsÑ"Ô"Ð"Õ"Ô"ˆsÑ"Ô"Ð"Ð"Õ"Ô"ˆ{Ñ"Ô"Õ"Ô"˜dÑ"Ô"Ð"Ð"Ñ"Ð"Ð"Ð"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"ØÔÐ8Ð#8Ð8ÐÐ#8Ò8Ð8Ð8Ð8Õ8Ô8Ð8Ð8Ð8Ð8ÐÐ#8Ð8Ñ8Ô8Ð8Õ8Ô8Ñ8Ô8Ð8Ð8Õ8Ô8ˆsÑ8Ô8Ð8Õ8Ô8ˆsÑ8Ô8Ð8Ð8Õ8Ô8ÐÑ8Ô8Õ8Ô8Ð#8Ñ8Ô8Ð8Ð8Ñ8Ð8Ð8Ð8Ð8Ð8Ñ8Ð8Õ8Õ8Ô8Ð8Ñ8Ô8Ñ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8Ð8ØÔ#Ð( qÐ(Ð# qÒ(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(Ð# qÐ(Ñ(Ô(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(ˆsÑ(Ô(Ð(Õ(Ô(ˆsÑ(Ô(Ð(Ð(Õ(Ô(Ð#Ñ(Ô(Õ(Ô( qÑ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(ØŒÐ% #Ð%ˆ #Ò%Ð%Ð%Ð%Õ%Ô%Ð%Ð%Ð%Ð%ˆ #Ð%Ñ%Ô%Ð%Õ%Ô%Ñ%Ô%Ð%Ð%Õ%Ô%ˆsÑ%Ô%Ð%Õ%Ô%ˆsÑ%Ô%Ð%Ð%Õ%Ô%ˆÑ%Ô%Õ%Ô% #Ñ%Ô%Ð%Ð%Ñ%Ð%Ð%Ð%Ð%Ð%Ñ%Ð%Õ%Õ%Ô%Ð%Ñ%Ô%Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Ð%Ð%ØŒ~Ð$ Ð$ˆ~ Ò$Ð$Ð$Ð$Õ$Ô$Ð$Ð$Ð$Ð$ˆ~ Ð$Ñ$Ô$Ð$Õ$Ô$Ñ$Ô$Ð$Ð$Õ$Ô$ˆsÑ$Ô$Ð$Õ$Ô$ˆsÑ$Ô$Ð$Ð$Õ$Ô$ˆ~Ñ$Ô$Õ$Ô$ Ñ$Ô$Ð$Ð$Ñ$Ð$Ð$Ð$Ð$Ð$Ñ$Ð$Õ$Õ$Ô$Ð$Ñ$Ô$Ñ$Ô$Ð$Ð$Ð$Ð$Ð$Ð$Ð$ØÔ"Ð* dÐ*Ð" dÒ*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*Ð" dÐ*Ñ*Ô*Ð*Õ*Ô*Ñ*Ô*Ð*Ð*Õ*Ô*ˆsÑ*Ô*Ð*Õ*Ô*ˆsÑ*Ô*Ð*Ð*Õ*Ô*Ð"Ñ*Ô*Õ*Ô* dÑ*Ô*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*ØÔ!Ð) TÐ)Ð! TÒ)Ð)Ð)Ð)Õ)Ô)Ð)Ð)Ð)Ð)Ð! TÐ)Ñ)Ô)Ð)Õ)Ô)Ñ)Ô)Ð)Ð)Õ)Ô)ˆsÑ)Ô)Ð)Õ)Ô)ˆsÑ)Ô)Ð)Ð)Õ)Ô)Ð!Ñ)Ô)Õ)Ô) TÑ)Ô)Ð)Ð)Ñ)Ð)Ð)Ð)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)Ð)Ð)r2   N)r3   r4   r5   r{   r~   r‚   r6   r2   r0   rt   rt   T   sA   € € € € € ð4ð 4ð 4ð 3ð 3ð 3ð *ð *ð *ð *ð *r2   rt   c                   ó   — e Zd Zd„ Zd„ ZdS )Ú+TestCurrencyExchangeHandlerExecutionAndKeysc                 óØ  ‡— g Šdt           fˆfd„}t          d|¬¦  «        }|                     ¦   «         }d}||u }|s—t          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }d	d
|iz  }t          t          j
        |¦  «        ¦  «        ‚dx}}|j        }d}||u }	|	sªt          j        d|	fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }
t          t          j
        |
¦  «        ¦  «        ‚dx}x}	}t          g}‰|k    }|s—t          j        d|fd‰|f¦  «        dt          j        ¦   «         v st          j        ‰¦  «        rt          j        ‰¦  «        ndt          j        |¦  «        dœz  }d	d
|iz  }t          t          j
        |¦  «        ¦  «        ‚dx}}|                     ¦   «         }d}||u }|s—t          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }d	d
|iz  }t          t          j
        |¦  «        ¦  «        ‚dx}}|j        }d}||u }	|	sªt          j        d|	fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }
t          t          j
        |
¦  «        ¦  «        ‚dx}x}	}t          t          g}‰|k    }|s—t          j        d|fd‰|f¦  «        dt          j        ¦   «         v st          j        ‰¦  «        rt          j        ‰¦  «        ndt          j        |¦  «        dœz  }d	d
|iz  }t          t          j
        |¦  «        ¦  «        ‚dx}}dS )uT   Rule 7 SSoT: Má»Ÿ sÃ n báº±ng '/' (0xBF) vÃ  Ä‘Ã³ng an toÃ n báº±ng Spacebar (0x20).Úvkc                 ó2   •— ‰                      | ¦  «         d S ©N©Úappend©r†   Úcaptured_keyss    €r0   Ú
mock_presszfTestCurrencyExchangeHandlerExecutionAndKeys.test_key_sequence_ssot_slash_and_space.<locals>.mock_press–   ó   ø€ Ø× Ò  Ñ$Ô$Ð$Ð$Ð$r2   T)r;   Úpress_key_funcr=   ©z%(py0)s is %(py3)sÚopened©r   r]   úassert %(py5)sr   N©z2%(py2)s
{%(py2)s = %(py0)s.is_ui_open
} is %(py5)sr?   r   r   r   r   ©z%(py0)s == %(py3)srŒ   ÚclosedF)Úintr   Úopen_currency_exchanger   r   r   r    r!   r"   r#   r$   Ú
is_ui_openr   Úclose_currency_exchanger	   )r*   r�   r?   r‘   rc   r+   Ú@py_format4r.   r,   r-   r/   r–   rŒ   s               @r0   Ú&test_key_sequence_ssot_slash_and_spacezRTestCurrencyExchangeHandlerExecutionAndKeys.test_key_sequence_ssot_slash_and_space’   sG  ø€ àˆð	%�3ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%õ *ØØ%ð
ñ 
ô 
ˆð ×/Ò/Ñ1Ô1ˆØÐˆv˜ˆ~ÐÐÐÕÔÐÐÐÐˆv˜ÐÑÔÐÕÔÑÔÐÐÕÔˆvÑÔÐÕÔˆvÑÔÐÐÕÔ˜ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØÔ!Ð) TÐ)Ð! TÐ)Ð)Ð)Ð)Õ)Ô)Ð)Ð)Ð)Ð)Ð! TÐ)Ñ)Ô)Ð)Õ)Ô)Ñ)Ô)Ð)Ð)Õ)Ô)ˆwÑ)Ô)Ð)Õ)Ô)ˆwÑ)Ô)Ð)Ð)Õ)Ô)Ð!Ñ)Ô)Õ)Ô) TÑ)Ô)Ð)Ð)Ñ)Ð)Ð)Ð)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)Ý!) 
Ð*ˆ} 
Ò*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*ˆ} 
Ð*Ñ*Ô*Ð*Õ*Ô*Ñ*Ô*Ð*Ð*Õ*Ô*ˆ}Ñ*Ô*Ð*Õ*Ô*ˆ}Ñ*Ô*Ð*Ð*Õ*Ô* 
Ñ*Ô*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*ð ×0Ò0Ñ2Ô2ˆØÐˆv˜ˆ~ÐÐÐÕÔÐÐÐÐˆv˜ÐÑÔÐÕÔÑÔÐÐÕÔˆvÑÔÐÕÔˆvÑÔÐÐÕÔ˜ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØÔ!Ð* UÐ*Ð! UÐ*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*Ð! UÐ*Ñ*Ô*Ð*Õ*Ô*Ñ*Ô*Ð*Ð*Õ*Ô*ˆwÑ*Ô*Ð*Õ*Ô*ˆwÑ*Ô*Ð*Ð*Õ*Ô*Ð!Ñ*Ô*Õ*Ô* UÑ*Ô*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ý!)­8Ð 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Ð4Ð4Ð4Ð4Ð4Ð4r2   c                 ó¾  ‡‡— g Šg Šdt           fˆfd„}dt           dt           fˆfd„}t          ddd||¬	¦  «        }|                     d
dd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	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }	t          t	          j        |	¦  «        ¦  «        ‚dx}x}}|j        }d}||k    }|sªt	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }	t          t	          j        |	¦  «        ¦  «        ‚dx}x}}|j        }d}||k    }|sªt	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }	t          t	          j        |	¦  «        ¦  «        ‚dx}x}}|j        }d}||k    }|sªt	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }	t          t	          j        |	¦  «        ¦  «        ‚dx}x}}|j        }d}||k    }|sªt	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }	t          t	          j        |	¦  «        ¦  «        ‚dx}x}}|j        }d}||k    }|sªt	          j        d|fd ||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }	t          t	          j        |	¦  «        ¦  «        ‚dx}x}}|j        }d!}||k    }|sªt	          j        d|fd"||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }	t          t	          j        |	¦  «        ¦  «        ‚dx}x}}|j        }d#}||k    }|sªt	          j        d|fd$||f¦  «        d%t          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        nd%t	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }	t          t	          j        |	¦  «        ¦  «        ‚dx}x}}|j        }d&}||u }|sªt	          j        d|fd'||f¦  «        d%t          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        nd%t	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }	t          t	          j        |	¦  «        ¦  «        ‚dx}x}}t(          t*          g}
‰|
k    }|s—t	          j        d|fd(‰|
f¦  «        d)t          j        ¦   «         v st	          j        ‰¦  «        rt	          j	        ‰¦  «        nd)t	          j	        |
¦  «        d*œz  }d+d,|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}}
t-          ‰¦  «        }
d-}|
|k    }|sòt	          j        d|fd.|
|f¦  «        d/t          j        ¦   «         v st	          j        t,          ¦  «        rt	          j	        t,          ¦  «        nd/d0t          j        ¦   «         v st	          j        ‰¦  «        rt	          j	        ‰¦  «        nd0t	          j	        |
¦  «        t	          j	        |¦  «        d1œz  }d2d3|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}
x}}dS )4uG   ToÃ n bá»™ quy trÃ¬nh restock Waystone T15 thÃ nh cÃ´ng khi stock == 0.r†   c                 ó2   •— ‰                      | ¦  «         d S rˆ   r‰   r‹   s    €r0   r�   zfTestCurrencyExchangeHandlerExecutionAndKeys.test_full_successful_restock_lifecycle.<locals>.mock_press¯   rŽ   r2   ÚxÚyc                 ó6   •— ‰                      | |f¦  «         dS )NTr‰   )rŸ   r    Úcaptured_clickss     €r0   Ú
mock_clickzfTestCurrencyExchangeHandlerExecutionAndKeys.test_full_successful_restock_lifecycle.<locals>.mock_click²   s    ø€ Ø×"Ò" A q 6Ñ*Ô*Ð*Ø�4r2   i 
  i   T)Úscreen_wÚscreen_hr;   r�   Ú
click_funcr   g      ^@i˜:  r   r<   )rP   rQ   rR   Ú	buy_countrS   r=   rT   rU   r   r   r   Nr€   r   rW   rh   g      $@ri   iî  rj   g     €[@rk   iª7  rl   é   )z@%(py2)s
{%(py2)s = %(py0)s.total_restock_operations
} == %(py5)sr?   Fr”   r•   rŒ   r’   r“   r   rf   )z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)sÚlenr¢   )r   r\   r]   rA   zassert %(py8)sÚpy8)r—   r   r^   r_   r   r   r   r    r!   r"   r#   r$   r`   rm   rn   ro   rp   rq   Útotal_restock_operationsr™   r   r	   r©   )r*   r�   r£   r?   rU   r+   r,   r-   r.   r/   rc   r›   rF   Ú@py_format7Ú@py_format9r¢   rŒ   s                  @@r0   Ú&test_full_successful_restock_lifecyclezRTestCurrencyExchangeHandlerExecutionAndKeys.test_full_successful_restock_lifecycleª   s„
  øø€ àˆØˆð	%�3ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð	�#ð 	¥#ð 	ð 	ð 	ð 	ð 	ð 	õ *ØØØØ%Ø!ð
ñ 
ô 
ˆð ×2Ò2ØØ!Ø ØØ)ð 3ñ 
ô 
ˆð Œ{Ð"˜dÐ"ˆ{˜dÐ"Ð"Ð"Ð"Õ"Ô"Ð"Ð"Ð"Ð"ˆ{˜dÐ"Ñ"Ô"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"ˆsÑ"Ô"Ð"Õ"Ô"ˆsÑ"Ô"Ð"Ð"Õ"Ô"ˆ{Ñ"Ô"Õ"Ô"˜dÑ"Ô"Ð"Ð"Ñ"Ð"Ð"Ð"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"ØÔÐ8Ð#8Ð8ÐÐ#8Ò8Ð8Ð8Ð8Õ8Ô8Ð8Ð8Ð8Ð8ÐÐ#8Ð8Ñ8Ô8Ð8Õ8Ô8Ñ8Ô8Ð8Ð8Õ8Ô8ˆsÑ8Ô8Ð8Õ8Ô8ˆsÑ8Ô8Ð8Ð8Õ8Ô8ÐÑ8Ô8Õ8Ô8Ð#8Ñ8Ô8Ð8Ð8Ñ8Ð8Ð8Ð8Ð8Ð8Ñ8Ð8Õ8Õ8Ô8Ð8Ñ8Ô8Ñ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8Ð8ØÔ#Ð( qÐ(Ð# qÒ(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(Ð# qÐ(Ñ(Ô(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(ˆsÑ(Ô(Ð(Õ(Ô(ˆsÑ(Ô(Ð(Ð(Õ(Ô(Ð#Ñ(Ô(Õ(Ô( qÑ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(ØŒÐ& $Ð&ˆ $Ò&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&ˆ $Ð&Ñ&Ô&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&ˆsÑ&Ô&Ð&Õ&Ô&ˆsÑ&Ô&Ð&Ð&Õ&Ô&ˆÑ&Ô&Õ&Ô& $Ñ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&ØŒ~Ð$ Ð$ˆ~ Ò$Ð$Ð$Ð$Õ$Ô$Ð$Ð$Ð$Ð$ˆ~ Ð$Ñ$Ô$Ð$Õ$Ô$Ñ$Ô$Ð$Ð$Õ$Ô$ˆsÑ$Ô$Ð$Õ$Ô$ˆsÑ$Ô$Ð$Ð$Õ$Ô$ˆ~Ñ$Ô$Õ$Ô$ Ñ$Ô$Ð$Ð$Ñ$Ð$Ð$Ð$Ð$Ð$Ñ$Ð$Õ$Õ$Ô$Ð$Ñ$Ô$Ñ$Ô$Ð$Ð$Ð$Ð$Ð$Ð$Ð$ØÔ"Ð+ eÐ+Ð" eÒ+Ð+Ð+Ð+Õ+Ô+Ð+Ð+Ð+Ð+Ð" eÐ+Ñ+Ô+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+ˆsÑ+Ô+Ð+Õ+Ô+ˆsÑ+Ô+Ð+Ð+Õ+Ô+Ð"Ñ+Ô+Õ+Ô+ eÑ+Ô+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+ØÔ!Ð* UÐ*Ð! UÒ*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*Ð! UÐ*Ñ*Ô*Ð*Õ*Ô*Ñ*Ô*Ð*Ð*Õ*Ô*ˆsÑ*Ô*Ð*Õ*Ô*ˆsÑ*Ô*Ð*Ð*Õ*Ô*Ð!Ñ*Ô*Õ*Ô* UÑ*Ô*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*ØÔ/Ð4°1Ð4Ð/°1Ò4Ð4Ð4Ð4Õ4Ô4Ð4Ð4Ð4Ð4Ð/°1Ð4Ñ4Ô4Ð4Õ4Ô4Ñ4Ô4Ð4Ð4Õ4Ô4ˆwÑ4Ô4Ð4Õ4Ô4ˆwÑ4Ô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ØÔ!Ð* UÐ*Ð! UÐ*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*Ð! UÐ*Ñ*Ô*Ð*Õ*Ô*Ñ*Ô*Ð*Ð*Õ*Ô*ˆwÑ*Ô*Ð*Õ*Ô*ˆwÑ*Ô*Ð*Ð*Õ*Ô*Ð!Ñ*Ô*Õ*Ô* UÑ*Ô*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*õ "*­8Ð 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Ð4Ð4Ð4Ð4å�?Ñ#Ô#Ð( qÐ(Ð# qÒ(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(Ð# qÐ(Ñ(Ô(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(�sÑ(Ô(Ð(Õ(Ô(�sÑ(Ô(Ð(Ð(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(�?Ñ(Ô(Ð(Õ(Ô(�?Ñ(Ô(Ð(Ð(Õ(Ô(Ð#Ñ(Ô(Õ(Ô( qÑ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(r2   N)r3   r4   r5   rœ   r®   r6   r2   r0   r„   r„   ‘   s2   € € € € € ð5ð 5ð 5ð0))ð ))ð ))ð ))ð ))r2   r„   c                   ó   — e Zd Zd„ Zd„ ZdS )Ú)TestCurrencyExchangeFocusSafetySeparationc           	      ó´  — t          d¬¦  «        }t          dd¬¦  «        5  t          d¦  «        5  |                     ¦   «         }d}||u }|s—t          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        d	œz  }d
d|iz  }t          t          j
        |¦  «        ¦  «        ‚dx}}|j        }d}||u }|sªt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }	t          t          j
        |	¦  «        ¦  «        ‚dx}x}}ddd¦  «         n# 1 swxY w Y   ddd¦  «         dS # 1 swxY w Y   dS )uX   INV-FOCUS-SAFETY-SEPARATION: Khi is_simulated=False vÃ  máº¥t focus -> CHáº¶N má»Ÿ sÃ n.Fr:   zJsrc.assistant_tool.market.currency_exchange_handler.is_poe2_window_focused)Úreturn_valuezGsrc.assistant_tool.market.currency_exchange_handler.ensure_window_focusr=   r�   r‘   r’   r“   r   Nr”   r?   r   r   r   )r   r   r˜   r   r   r   r    r!   r"   r#   r$   r™   )
r*   r?   r‘   rc   r+   r›   r.   r,   r-   r/   s
             r0   Ú$test_unfocused_real_mode_blocks_openzNTestCurrencyExchangeFocusSafetySeparation.test_unfocused_real_mode_blocks_open×   s¢  € å)°uÐ=Ñ=Ô=ˆåÐ_ÐnsÐtÑtÔtð 	3ð 	3ÝÐ`ÑaÔað 3ð 3Ø ×7Ò7Ñ9Ô9�Ø!&Ð&�v �Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&�v Ð&Ñ&Ô&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&�vÑ&Ô&Ð&Õ&Ô&�vÑ&Ô&Ð&Ð&Õ&Ô& Ñ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&ØÔ)Ð2¨UÐ2Ð)¨UÐ2Ð2Ð2Ð2Õ2Ô2Ð2Ð2Ð2Ð2Ð)¨UÐ2Ñ2Ô2Ð2Õ2Ô2Ñ2Ô2Ð2Ð2Õ2Ô2�wÑ2Ô2Ð2Õ2Ô2�wÑ2Ô2Ð2Ð2Õ2Ô2Ð)Ñ2Ô2Õ2Ô2¨UÑ2Ô2Ð2Ð2Ñ2Ð2Ð2Ð2Ð2Ð2Ñ2Ð2Õ2Õ2Ô2Ð2Ñ2Ô2Ñ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2Ð2ð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ð 	3s5   ¢G²E7F5Æ)GÆ5F9	Æ9GÆ<F9	Æ=GÇGÇGc                 ód  — t          d¦  «         	 t          d¬¦  «        }|                     ¦   «         }d}||u }|s—t          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d	x}}|j        }d}||u }|sªt          j        d|fd
||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }	t          t          j
        |	¦  «        ¦  «        ‚d	x}x}}|                     ¦   «         }
d}|
|u }|s—t          j        d|fd|
|f¦  «        dt          j        ¦   «         v st          j        |
¦  «        rt          j        |
¦  «        ndt          j        |¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d	x}}|j        }d}||u }|sªt          j        d|fd
||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }	t          t          j
        |	¦  «        ¦  «        ‚d	x}x}}t          d	¦  «         d	S # t          d	¦  «         w xY w)uO   INV-FOCUS-SAFETY-SEPARATION: is_simulated=True khÃ´ng phÃ¡t sinh pháº§n cá»©ng.Tr:   r=   r�   r‘   r’   r“   r   Nr”   r?   r   r   r   r–   F)r
   r   r˜   r   r   r   r    r!   r"   r#   r$   r™   rš   )r*   r?   r‘   rc   r+   r›   r.   r,   r-   r/   r–   s              r0   Ú*test_simulation_mode_zero_hardware_leakagezTTestCurrencyExchangeFocusSafetySeparation.test_simulation_mode_zero_hardware_leakageá   s¶  € å! $Ñ'Ô'Ð'ð	,Ý-¸4Ð@Ñ@Ô@ˆGð ×3Ò3Ñ5Ô5ˆFØ!Ð!�6˜T�>Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!�6˜TÐ!Ñ!Ô!Ð!Õ!Ô!Ñ!Ô!Ð!Ð!Õ!Ô!�6Ñ!Ô!Ð!Õ!Ô!�6Ñ!Ô!Ð!Ð!Õ!Ô!˜TÑ!Ô!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!ØÔ%Ð-¨Ð-Ð%¨Ð-Ð-Ð-Ð-Õ-Ô-Ð-Ð-Ð-Ð-Ð%¨Ð-Ñ-Ô-Ð-Õ-Ô-Ñ-Ô-Ð-Ð-Õ-Ô-�7Ñ-Ô-Ð-Õ-Ô-�7Ñ-Ô-Ð-Ð-Õ-Ô-Ð%Ñ-Ô-Õ-Ô-¨Ñ-Ô-Ð-Ð-Ñ-Ð-Ð-Ð-Ð-Ð-Ñ-Ð-Õ-Õ-Ô-Ð-Ñ-Ô-Ñ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-à×4Ò4Ñ6Ô6ˆFØ!Ð!�6˜T�>Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!�6˜TÐ!Ñ!Ô!Ð!Õ!Ô!Ñ!Ô!Ð!Ð!Õ!Ô!�6Ñ!Ô!Ð!Õ!Ô!�6Ñ!Ô!Ð!Ð!Õ!Ô!˜TÑ!Ô!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!ØÔ%Ð.¨Ð.Ð%¨Ð.Ð.Ð.Ð.Õ.Ô.Ð.Ð.Ð.Ð.Ð%¨Ð.Ñ.Ô.Ð.Õ.Ô.Ñ.Ô.Ð.Ð.Õ.Ô.�7Ñ.Ô.Ð.Õ.Ô.�7Ñ.Ô.Ð.Ð.Õ.Ô.Ð%Ñ.Ô.Õ.Ô.¨Ñ.Ô.Ð.Ð.Ñ.Ð.Ð.Ð.Ð.Ð.Ñ.Ð.Õ.Õ.Ô.Ð.Ñ.Ô.Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.Ð.å% dÑ+Ô+Ð+Ð+Ð+øÕ% dÑ+Ô+Ð+Ð+øøøs   ‘K<L ÌL/N)r3   r4   r5   r³   rµ   r6   r2   r0   r°   r°   Ö   s2   € € € € € ð3ð 3ð 3ð,ð ,ð ,ð ,ð ,r2   r°   )Ú__doc__Úbuiltinsr   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter   Úunittest.mockr   r   ÚpytestÚ3src.assistant_tool.market.currency_exchange_handlerr   r   r   Úsrc.common.win32_inputr   r	   r
   r   r8   rt   r„   r°   r6   r2   r0   ú<module>r¿      sŽ  ððð ð € € € € € € € € € € € € Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ø €€€ðð ð ð ð ð ð ð ð ð ð
ð ð ð ð ð ð ð ð ð ð	3ð 	3ð 	3ð 	3ð 	3ñ 	3ô 	3ð 	3ð&+ð &+ð &+ð &+ð &+ñ &+ô &+ð &+ðR:*ð :*ð :*ð :*ð :*ñ :*ô :*ð :*ðzB)ð B)ð B)ð B)ð B)ñ B)ô B)ð B)ðJ,ð ,ð ,ð ,ð ,ñ ,ô ,ð ,ð ,ð ,r2   