
    Ii              
      *   S SK Jr  S SKJrJr  S SKJr  S SKrSSKJrJ	r	J
r
  SSKJr  SS	KJrJrJrJr  SS
KJr  SSKJr  SSKJrJr  SSKJrJrJr  SSKJrJrJ r J!r!J"r"J#r#  SSK$J%r%  SSK&J'r'  SSK(J)r)  SSK*J+r+  SSK,J-r-J.r.J/r/  SSK0J1r1J2r2  SSK3J4r4J5r5  SSK6J7r7  SSK8J9r9  SSK:J;r;  S SK<J=r=  SSK>J?r?  SSK@JArA  / SQrBSSS S!S"S#S$S%S&S.	rC/ S'QrDS(S)S*S+S,S'.rE/ S-QrFS.S/S0S-.rG\ " S1 S2\	5      5       rH\ " S3 S4\
5      5       rI\\ " S5 S6\5      5       5       rJg)7    )annotations)	dataclassfield)datetimeN   )GamePlayerGameOptions)register_game   )Action	ActionSet
VisibilityEditboxInput)setup_poker_keybinds)	BotHelper)
GameResultPlayerResult)	IntOption
MenuOptionoption_field)CardDeckDeckFactory
read_cards
sort_cards	card_name)PokerBettingRound)PokerPotManager)PokerTableState)PokerTurnTimer)	best_handdescribe_handdescribe_partial_hand)compute_pot_limit_capsclamp_total_to_cap)order_winners_by_buttonformat_showdown_lines)resolve_pots_with_payouts)	poker_log)Localization)KeybindState   	bot_think)order_after_button)	5101520304560900zpoker-timer-5zpoker-timer-10zpoker-timer-15zpoker-timer-20zpoker-timer-30zpoker-timer-45zpoker-timer-60zpoker-timer-90zpoker-timer-unlimited)r1   r2   r3   r4   r5   zpoker-blind-timer-5zpoker-blind-timer-10zpoker-blind-timer-15zpoker-blind-timer-20zpoker-blind-timer-30)no_limit	pot_limit
double_potzpoker-raise-no-limitzpoker-raise-pot-limitzpoker-raise-double-potc                  V    \ rS rSr% \" \S9rS\S'   SrS\S'   Sr	S	\S
'   Sr
S	\S'   Srg)HoldemPlayer<   default_factory
list[Card]handr   intchipsFboolfoldedall_in N)__name__
__module____qualname____firstlineno__r   listrC   __annotations__rE   rG   rH   __static_attributes__rI       7c:\Users\dbart\PlayPalace11\server\games\holdem\game.pyr>   r>   <   s.    T2D*2E3NFDFDrQ   r>   c                     \ rS rSr% \" \" SSSSSSSS	95      rS
\S'   \" \" SSSSSSSS	95      rS
\S'   \" \" SSSSSSSS	95      r	S
\S'   \" \" SSSSSSSS	95      r
S
\S'   \" \" \\SSSSS 95      rS!\S"'   \" \" \\S#S$S%S&S 95      rS!\S''   \" \" \\S(S)S*S+S 95      rS!\S,'   \" \" SSS-SS.S/S0S	95      rS
\S1'   S2rg3)4HoldemOptionsD   i N  d   i@B countzholdem-set-starting-chipszholdem-enter-starting-chipsz$holdem-option-changed-starting-chips)defaultmin_valmax_val	value_keylabelprompt
change_msgrD   starting_chips   r-   zholdem-set-big-blindzholdem-enter-big-blindzholdem-option-changed-big-blind	big_blindr   zholdem-set-antezholdem-enter-antezholdem-option-changed-anteante   zholdem-set-ante-startzholdem-enter-ante-startz holdem-option-changed-ante-startante_start_levelr9   zholdem-set-turn-timerzholdem-select-turn-timerz holdem-option-changed-turn-timer)choiceschoice_labelsrX   r\   r]   r^   str
turn_timerr4   zholdem-set-blind-timerzholdem-select-blind-timerz!holdem-option-changed-blind-timerblind_timerr:   zholdem-set-raise-modezholdem-select-raise-modez holdem-option-changed-raise-mode
raise_mode
   zholdem-set-max-raiseszholdem-enter-max-raisesz holdem-option-changed-max-raises
max_raisesrI   N)rJ   rK   rL   rM   r   r   r_   rO   ra   rb   rd   r   TURN_TIMER_CHOICESTURN_TIMER_LABELSrh   BLIND_TIMER_CHOICESBLIND_TIMER_LABELSri   RAISE_MODESRAISE_MODE_LABELSrj   rl   rP   rI   rQ   rR   rT   rT   D   sx   &-0=	

NC 
 "(+8	

Is 
 #&3	

D# 
 )),9	

c 
 #&+)-9	
	J 	 $',*.:	
	K 	 #+)-9	
	J 	 #),9	

J 
rQ   rT   c                    ^  \ rS rSr% \" \S9rS\S'   \" \S9r	S\S'   Sr
S\S	'   \" \S9rS
\S'   \" \S9rS\S'   SrS\S'   \" \S9rS\S'   \" \S9rS\S'   SrS\S'   SrS\S'   \" \S9rS\S'   SrS\S'   SrS\S'   SrS\S '   SrS\S!'   SrS\S"'   SrS\S#'   SrS\S$'   SrS\S%'   \" \S9rS&\S''   SrS\S('   Sr S\S)'   \" \!S9r"S*\S+'   \#SvS, j5       r$\#SvS- j5       r%\#SvS. j5       r&\#SwS/ j5       r'\#SwS0 j5       r(SxSyS1 jjr)SzS2 jr*S{U 4S3 jjr+S|U 4S4 jjr,S|S5 jr-S|S6 jr.S|S7 jr/S|S8 jr0S}S9 jr1S|S: jr2S|S; jr3S~S< jr4SwS= jr5S~S> jr6SS? jr7SS@ jr8SSA jr9SSSB jjr:SSC jr;SSD jr<S|SE jr=S|SF jr>S|SG jr?S|U 4SH jjr@SSI jrASSJ jrBSSK jrCSSL jrDSSM jrESSN jrFS|SO jrGS|SP jrHS|SQ jrISSR jrJS|SS jrKSxSST jjrLSSU jrMSSV jrNSSW jrOSSX jrPSSY jrQSSZ jrRSS[ jrSSS\ jrTSS] jrUSS^ jrVSS_ jrWSS` jrXSSa jrYSSb jrZSSc jr[SSd jr\SSe jr]SSf jr^SSg jr_SSh jr`SSi jraSSj jrbSSk jrcSSl jrdSSm jreSSn jrfSSo jrgS|Sp jrhS|Sq jriSSr jrjSSs jrkSSt jrlSurmU =rn$ )
HoldemGame   r@   list[HoldemPlayer]playersrT   optionsNzDeck | NonedeckrB   	communityr   pot_managerzPokerBettingRound | Nonebettingr    table_stater!   timerr   rD   hand_numberlobbyrg   phasezlist[tuple[str, dict]]
action_logblind_levelblind_timer_ticksFrF   blinds_raise_next_handcurrent_small_blindcurrent_big_blindlast_sb_paylast_bb_paypending_showdownzlist[tuple[str, int]]pending_board_revealspending_board_delay_tickspending_board_wait_ticksset[str]last_showdown_winner_idsc                    g)NzTexas Hold'emrI   clss    rR   get_nameHoldemGame.get_name   s    rQ   c                    g)NholdemrI   r   s    rR   get_typeHoldemGame.get_type   s    rQ   c                    g)Nzcategory-pokerrI   r   s    rR   get_categoryHoldemGame.get_category   s    rQ   c                    g)Nr   rI   r   s    rR   get_min_playersHoldemGame.get_min_players   s    rQ   c                    g)N   rI   r   s    rR   get_max_playersHoldemGame.get_max_players   s    rQ   c                    [        XUSS9$ )Nr   )idnameis_botrE   )r>   )self	player_idr   r   s       rR   create_playerHoldemGame.create_player   s    yF!LLrQ   c                   U R                  U5      nU(       a  UR                  OSn[        SS9nUR                  [	        S[
        R                  " US5      SSSS	S
95        UR                  [	        S[
        R                  " US5      SSS	S95        UR                  [	        S[
        R                  " US5      SSS	[        SSSS9S95        UR                  [	        S[
        R                  " US5      SSS	S95        U$ )Nenturnr   call
poker-call_action_call_get_call_label_is_turn_action_enabled_is_turn_action_hidden)r   r\   handler	get_label
is_enabled	is_hiddenfoldz
poker-fold_action_foldr   r\   r   r   r   raisezpoker-raise_action_raisezpoker-enter-raise _bot_input_raise)r]   rX   	bot_input)r   r\   r   r   r   input_requestrH   zpoker-all-in_action_all_in)get_userlocaler   addr   r+   getr   )r   playeruserr   
action_sets        rR   create_turn_action_set!HoldemGame.create_turn_action_set   s	   }}V$ $$F+
"&&v|<&+42		
 	"&&v|<&42	
 	"&&v}='42*.0	
 	"&&v~>(42	
 rQ   c                  > [         TU ]  U5      nU R                  U5      nU(       a  UR                  OSn[	        S[
        R                  " US5      SSSS9[	        S[
        R                  " US	5      S
SSS9[	        S[
        R                  " US5      SSSS9[	        S[
        R                  " US5      SSSS9[	        S[
        R                  " US5      SSSS9[	        S[
        R                  " US5      SSSS9[	        S[
        R                  " US5      SSSS9[	        S[
        R                  " US5      SSSS9[	        S[
        R                  " US5      SSSS9[	        S [
        R                  " US!5      S"SSS9[	        S#[
        R                  " US$5      S%SSS9/n[        U5       Hy  nUR                  U5        UR                  UR                  ;   a%  UR                  R                  UR                  5        UR                  R                  S&UR                  5        M{     [        S'S(5       H6  nUR                  [	        S)U 3[
        R                  " US*US+9S,SS-S95        M8     UR                  [	        S.[
        R                  " US/5      S0S1S2S95        UR                  [	        S3[
        R                  " US45      S5S1S2S95        UR                  [	        S6[
        R                  " US75      S8S1S2S95        U$ )9Nr   	check_potzpoker-check-pot_action_check_pot_is_check_enabled_is_check_hiddenr   	check_betzpoker-check-bet_action_check_betcheck_min_raisezpoker-check-min-raise_action_check_min_raisecheck_hand_playerszpoker-check-hand-players_action_check_hand_playerscheck_turn_timerzpoker-check-turn-timer_action_check_turn_timer
speak_handzpoker-read-hand_action_read_handspeak_tablezpoker-read-table_action_read_tablespeak_hand_valuezpoker-hand-value_action_read_hand_valuecheck_buttonzpoker-check-button_action_check_buttoncheck_positionzpoker-check-position_action_check_positioncheck_blind_timerzpoker-check-blind-timer_action_check_blind_timerr   r-      speak_card_zpoker-read-card)index_action_read_card_is_always_hiddenreveal_bothzpoker-reveal-both_action_reveal_both_is_reveal_enabled_is_reveal_hiddenreveal_firstzpoker-reveal-first_action_reveal_firstreveal_secondzpoker-reveal-second_action_reveal_second)supercreate_standard_action_setr   r   r   r+   r   reversedr   r   _orderremoveinsertrange)	r   r   r   r   r   local_actionsactioni	__class__s	           rR   r   %HoldemGame.create_standard_action_set  s0   W7?
}}V$ $$"&&v/@A+., "&&v/@A+., $"&&v/FG1., '"&&v/IJ4., %"&&v/GH2., "&&v/@A+.,  "&&v/AB,., %"&&v/AB1., !"&&v/CD.., #"&&v/EF0., &"&&v/HI3.,ON
^ }-FNN6"yyJ---!!((3$$Q		2	 .
 q!ANN$QC(&**63DAN/21  	 "&&v/BC-/-	
 	!"&&v/CD./-	
 	""&&v/DE//-	
 rQ   c                N   > [         TU ]  5         [        U SSSSSSSSS	S
SSSS9  g )Nr   Buttonr   r   r   r   r   r   r   r   r   r      )check_dealerdealer_labelr   r   r   r   r   
read_tabler   r   r   r   read_cards_count)r   setup_keybindsr   )r   r   s    rR   r  HoldemGame.setup_keybinds  s@     '!+!-3/$1%')	
rQ   c                   SU l         SU l        U R                   H  nU R                  R                  Ul        M      SU R                  l        U R                  R                  U R                   Vs/ s H  o"R                  PM     sn5        U R                  5         U R                  U R                  5       5        U R                  S5        U R                  5         U R                  5         g s  snf )NplayingT
individualzgame_3cardpoker/mus.ogg)statusgame_activerw   rx   r_   rE   _team_manager	team_modesetup_teamsr   _sync_team_scoresset_turn_playersget_active_players
play_music_reset_blind_timer_start_new_handr   r   ps      rR   on_startHoldemGame.on_start  s    llF<<66FL #'3$&&'E1'EF d557812! (Fs   1C.c                     [        U R                  R                  5      nUS::  a  SU l        g US-  S-  U l        g ! [         a    Sn N*f = f)Nr   r?   rc   )rD   rx   ri   
ValueErrorr   )r   minutess     rR   r  HoldemGame._reset_blind_timer  sV    	$,,223G a<%&D"!(2!2  	G	s   = AAc                    U R                   S::  a  g U =R                   S-  sl         U R                   S:X  a  SU l        U R                  S5        g g )Nr   r-   Tpoker-blinds-raise-next-hand)r   r   broadcast_lr   s    rR   _tick_blind_timerHoldemGame._tick_blind_timer  sN    !!Q&!#!!Q&*.D';< 'rQ   c                    U R                   (       d  g U =R                  S-  sl        SU l         U R                  5         g )Nr-   F)r   r   r  r   s    rR   _advance_blind_levelHoldemGame._advance_blind_level  s3    **A&+#!rQ   c                    [        SU R                  R                  S-  5      nU R                  R                  nU R                  nUS::  a  X4$ / SQnU[	        U[        U5      S-
  5         nX-  X%-  4$ )Nr-   r   r   )r-   r   r         rk   rc      (   2   rV   )maxrx   ra   r   minlen)r   
base_smallbase_biglevelmultipliersmults         rR   _current_blindsHoldemGame._current_blinds  sw    DLL22a78
<<))  A:))>3uc+&6&:;<!8?33rQ   c                N   U =R                   S-  sl         SU l        / U l        U R                  R	                  5         / U l        SU l        / U l        SU l        SU l	        [        R                  " 5       u  U l        nU R                  R                  5         U R                  5        Vs/ s H  o"R                  S:  d  M  UPM     nn[!        U5      S::  a  U R#                  U(       a  US   OS 5        g U R$                  R'                  U Vs/ s H  o"R(                  PM     sn5        U H  n/ Ul        SUl        SUl        M     U R1                  S5        U R3                  U5        U R5                  U5        U R7                  U5        U R9                  SS9  g s  snf s  snf )Nr-   preflopFr   zgame_cards/small_shuffle.oggTr7  )r   r   r   r{   resetrz   r   r   r   r   r   standard_deckry   shuffler  rE   r.  	_end_gamer}   advance_buttonr   rC   rG   rH   
play_sound_post_antes_post_blinds_deal_hole_cards_start_betting_round)r   _r  actives       rR   r  HoldemGame._start_new_hand  sa   A
  %%'")*&()%"002	1		!446F6''A+!6Fv;!NN6!9D9''v(>v!v(>?AAFAHAH 
 	67 &!f%!!$!/ G
 )?s   *FFF"c                    SU l         g )NrV   )_next_hand_wait_ticksr   s    rR   _queue_new_handHoldemGame._queue_new_hand  s
    %("rQ   c                v   U R                  5       nUS::  a  g U R                  S5        U Hk  n[        UR                  U5      nU=R                  U-  sl        UR                  S:X  a  SUl        U R
                  R                  UR                  U5        Mm     U R                  5         U R                  SUS9  g )Nr   game_3cardpoker/bet.oggTzholdem-antes-postedamount)
_current_anter>  r-  rE   rH   r{   add_contributionr   r  r  )r   rD  rb   r  pays        rR   r?  HoldemGame._post_antes  s    !!#1912Aaggt$CGGsNGww!|--addC8  	 .t<rQ   c                   U R                   R                  S::  a  gU R                   R                  S::  a  U R                   R                  $ U R                  U R                   R                  :  a  U R                   R                  $ S$ Nr   )rx   rb   rd   r   r   s    rR   rN  HoldemGame._current_ante  sf    <<!<<((A-<<$$$$($4$48U8U$Ut||  \[\\rQ   c                   U R                  5       u  p#X l        X0l        U R                  R	                  U Vs/ s H  oDR
                  PM     sn5      u  pVX   nX   n[        UR                  U5      n	[        UR                  U5      n
Xl        Xl	        U=R                  U	-  sl        U=R                  U
-  sl        U R                  S5        UR                  S:X  a  SUl        UR                  S:X  a  SUl        U R                  R                  UR
                  U	5        U R                  R                  UR
                  U
5        U R                  5         U R                  SXS9  g s  snf )NrK  r   Tzholdem-blinds-postedsbbb)r4  r   r   r}   get_blind_indicesr   r-  rE   r   r   r>  rH   r{   rO  r  r  )r   rD  smallbigr  sb_idxbb_idx	sb_player	bb_playersb_paybb_pays              rR   r@  HoldemGame._post_blinds  s,   ))+
#( !$));;6<R6aTT6<RSN	N	Y__e,Y__c*!!6!6!12??a#I??a#I))),,?))),,? /FF# =Ss   E,c                   U(       d  g [        U5      S:X  a#  U R                  R                  [        U5      -  nO%U R                  R                  S-   [        U5      -  nXS  US U -   nSn[        S5       H  nU R	                  SUSS9  U R	                  SUS-   SS9  U HT  nU R
                  (       a  U R
                  R                  5       OS nU(       d  M9  UR                  R                  U5        MV     US-  nM     U He  n[        UR                  5      Ul        U R                  U5      nU(       d  M7  UR                  S[        UR                  UR                  5      S	9  Mg     g )
Nr   r-   r'  game_cards/draw3.oggrV   volume   zpoker-dealt-cardscards)r.  r}   button_indexr   schedule_soundry   draw_onerC   appendr   r   speak_lr   r   )	r   rw   start_indexorderdelay_ticksrC  r  cardr   s	            rR   rA  HoldemGame._deal_hole_cards  s;   w<1**77#g,FK++881<GLK%(==qA 6CP 6aPST/3yytyy))+d4FFMM$'  1K  A'AF==#Dt0
1664;;8WX	 rQ   c                   US:X  a%  U R                  S[        U R                  S5      S9  g US:X  a(  U R                  S[        U R                  S   S5      S9  g US	:X  a(  U R                  S
[        U R                  S   S5      S9  g g )Nflopz
poker-flopr   rh  r   z
poker-turn)rr  riverzpoker-river)r  r   rz   r   )r   stages     rR   _announce_boardHoldemGame._announce_board+  s    F?\DNND1QRf_\	$..:Ld0STg]4>>";Mt1TU rQ   c                   U R                   (       a9  U R                   R                  5       (       d  U R                   R                  5         [        U5       H  nU R                   (       a  U R                   R                  5       OS nU(       a  U R                  R                  U5        US:X  a#  U R                  SSS9  U R                  SSSS9  M{  U R                  SUS-  SS9  U R                  SUS-  S-   SS9  M     g )Nr   rd  rV   re  r-   )rq  rf  rg  )ry   is_emptyrl  r   rz   rm  r>  rk  )r   rW   idxrr  s       rR   _deal_communityHoldemGame._deal_community3  s    99TYY//11II <C+/99499%%'$D%%d+ax 6sC##$:RU#V##$:aX[#\##$:aRS\_#`  rQ   c                   U R                   (       a  g S[        U R                  5      -
  nUS::  a  U R                  5         g SU l         [	        SU5      U l        SU l        / n[        U R                  5      S:X  a  UR                  S5        US-  nUS:  a3  [        U5      S:X  a  SOSnUR                  US45        US-  nUS:  a  M3  X0l        g )	Nr(  r   T)ru  r   r   r-   r   rw  )	r   r.  rz   	_showdownr,  r   r   rm  r   )r   delay_between_roundsneededreveal_countsrx  s        rR   _start_all_in_showdown!HoldemGame._start_all_in_showdownB  s      S((Q;NN $),Q0D)E&()%/1t~~!#  -aKFqj!-0A5F7E  %,aKF qj &3"rQ   c                h   U R                  5        Vs/ s H3  o"R                  S:  d  M  UR                  (       a  M'  UR                  PM5     nnU R                  5        Vs/ s H   o"R                  U;   d  M  UR                  PM"     nn[	        X@R
                  R                  =(       d    S S9U l        U(       d  U R                  SS9  g U(       a  U R                  R                  U5      u  pVU(       a  XE   OS nU(       a  XF   OS n0 n	U(       a  U R                  X'   U(       a  U R                  X'   U R                  R                  U R                  U R                  U	S9  O#U R                  R                  U R                  S9  U(       a.  [        U5      S:X  a  U R                  R                  U5      S   n
OZU(       a.  U R                  R                  U5      S   S-   [        U5      -  n
O%U R                  R                   S-   [        U5      -  n
U R#                  X5        g s  snf s  snf )	Nr   )rp  rl   rV   r  )current_betlast_raise_sizeinitial_bets)r  r   r-   )r  rE   rG   r   r   rx   rl   r|   r  r}   rY  r   r   r9  r   r.  rj  _set_turn_by_index)r   r7  r  
active_idsrp  r\  r]  sb_idbb_idinitialro  s              rR   rB  HoldemGame._start_betting_roundV  s   $($;$;$=^$=q1dUVU]U]dadd$=
^#668O8!DDJ<N8O(uAXAXA`\`a''S'A!--??FNF%*EME%*EMEG!%!1!1!%!1!1LL ,, $ 6 6$   LLt/E/EFs5zQ**<<UCAFK++==eDQG!KsSXzYK++881<E
JK3= _Os   H*H*H*!H/8H/c                h    U(       d  g U[        U5      -  nX l        X0l        U R                  5         g N)r.  turn_player_ids
turn_index_start_turn)r   ro  rp  r}  s       rR   r  HoldemGame._set_turn_by_indexx  s-    CJ&$rQ   c                   U R                   nU(       d  g [        U[        5      (       a  UOS nU(       a"  UR                  (       d  UR                  (       a  U R                  5         g U R                  SS9  UR                  (       a*  [        R                  " U[        R                  " SS5      S9  U R                  5         U R                  5         g )Nzgame_3cardpoker/turn.ogg)
turn_soundr)  r+  )ticks)current_player
isinstancer>   rG   rH   _advance_turnannounce_turnr   r   jolt_botrandomrandint_start_turn_timerrebuild_all_menusr  s      rR   r  HoldemGame._start_turn  s    $$ 66FDAHH &@A88qr2(>?  rQ   c                6   U R                   (       d  g U R                  5       nU R                   R                  U R                  (       a  U R                  R                  OS U5      nUc  g U R
                  R                  U5      U l        U R                  5         g r  )	r|   _active_betting_idsnext_playerr  r   r  r   r  r  )r   r  next_ids      rR   r  HoldemGame._advance_turn  sw    ||--/
,,**&*&9&9D""tZ
 ?..44W=rQ   c                     [        U R                  R                  5      nUS::  a  U R                  R                  5         g U R                  R                  U5        g ! [         a    Sn NKf = frS  )rD   rx   rh   r  r~   clearstart)r   secondss     rR   r  HoldemGame._start_turn_timer  s_    	$,,112G a<JJ

!  	G	s   A A-,A-c                "  > [         TU ]  5         U R                  (       d  g [        U SS5      S:  a6  U =R                  S-  sl        U R                  S:X  a  U R                  5         g U R                  (       a  U R                  S:  a  U =R                  S-  sl        g U R                  (       ar  U R                  R                  S5      u  pU R                  U5        U R                  U5        U R                  (       a!  U R                  S:  a  U R                  U l        g SU l        U R                  5         g U R                  R                  5       (       a  U R!                  5         U R#                  5         [$        R                  " U 5        g )NrG  r   r-   F)r   on_tickr  getattrrG  r  r   r   r   popr~  ry  r   r  r~   tick_handle_turn_timeoutr!  r   )r   rx  rW   r   s      rR   r  HoldemGame.on_tick  s5   40!4q8&&!+&))Q.$$&  ,,q0--2-))#99==a@$$U+$$U+--$2P2PST2T484R4RD1$)D!NN::??%%' $rQ   c                    [        X5      $ r  r.   r   r   s     rR   r/   HoldemGame.bot_think  s    &&rQ   c                8   U R                  U5      nU(       d  g SUl        U R                  R                  UR                  5        [
        R                  " U R                  UR                  5        U R                  SUR                  S9  U R                  5         g )NTzpoker-player-foldsr   )_require_active_playerrG   r{   mark_foldedr   r*   log_foldr   r   r  _after_action)r   r   	action_idr  s       rR   r   HoldemGame._action_fold  ss    ''/$$QTT*4??AFF3-aff=rQ   c                   U R                  U5      nU(       a  U R                  (       d  g U R                  R                  UR                  5      n[	        UR
                  U5      nU=R
                  U-  sl        UR
                  S:X  a  SUl        U R                  R                  UR                  U5        U R                  R                  UR                  USS9  US:X  aF  [        R                  " U R                  UR                  5        U R                  SUR                  S9  OXU R                  S5        [        R                   " U R                  UR                  U5        U R                  SUR                  US	9  UR                  (       a!  US:  a  U R                  S
UR                  US	9  U R#                  5         U R%                  5         g )Nr   TFis_raisepoker-player-checksr  rK  poker-player-callsr   rM  poker-player-all-in)r  r|   amount_to_callr   r-  rE   rH   r{   rO  
record_betr*   	log_checkr   r   r  r>  log_callr  r  )r   r   r  r  to_callrP  s         rR   r   HoldemGame._action_call  sS   ''/,,--add3!''7#	377a<AH))!$$4cE:a<82166BOO56t<1!&&M88a2166#N rQ   c                p   U R                  U5      nU(       a  U R                  (       d  g  [        U5      nUS::  a  g U R                  R	                  5       (       d  U R                  S5        g U R                  R                  UR                  5      n[        U R                  R                  S5      nXTR                  :  a  U R                  USS5        g XTR                  :X  a  U R                  US5        g XW:  a  U R                  SUS9  g Xe-   n[        U R                  R                  5       X`R                   R"                  5      n	[%        X5      nXR                  :  a  UR                  nXU-   :  a  U R                  US5        g U=R                  U-  sl
        UR                  S:X  a  SUl        U R)                  S	5        U R                  R+                  UR                  U5        U R                  R-                  UR                  USS
9  [.        R0                  " U R2                  UR4                  U5        U R                  SUR4                  US9  UR&                  (       a  U R                  SUR4                  US9  U R7                  5         U R9                  5         g ! [         a     g f = f)Nr   zpoker-raise-cap-reachedr-   zpoker-raise-too-largerH   zpoker-raise-too-smallrL  TrK  r  poker-player-raisesr  r  )r  r|   rD   r  	can_raiser  r  r   r,  r  rE   broadcast_personal_lr   r%   r{   	total_potrx   rj   r&   rH   r>  rO  r  r*   	log_raiser   r   r  r  )
r   r   
amount_strr  r  rM  r  	min_raisetotalcapss
             rR   r   HoldemGame._action_raise  s8   ''/	_F Q;||%%''67,,--add344a8	GG%%a)@BYZWW8,4YG %&&('<<3J3J
 #5/77?GGEY&&8,	577a<AH12))!$$6ed;DOOQVVU;.qvveL882166%P S  		s   J( (
J54J5c                   U R                   (       d  gU R                   R                  UR                  5      n[        U R                   R                  S5      nUn[        U R                  R                  5       X R                  R                  5      n[        X$-   U5      n[        X6U-
  5      n[        SUR                  U-
  5      n[        XG5      n[        [        SU5      5      $ )N1r-   )r|   r  r   r,  r  r%   r{   r  rx   rj   r&   rE   r-  rg   )r   r   r  r  rM  r  r  max_affordables           rR   r   HoldemGame._bot_input_raise  s    ||,,--fii844a8	%&&('<<3J3J
 #7#3T:Y0Qw 67V,3q&>""rQ   c                   U R                  U5      nU(       a  U R                  (       d  g UR                  nUS::  a  g U R                  R                  UR                  5      n[        U R                  R                  S5      n[        U[        U R                  R                  5       XPR                  R                  5      5      nU=R                  U-  sl        UR                  S:H  Ul        U R                  S5        U R                  R                  UR                  U5        Xu-
  nX:  =(       a    Xu:  n	U R                  R!                  UR                  XyS9  Xu:  aH  ["        R$                  " U R&                  UR(                  U5        U R+                  SUR(                  US9  OUS:X  aF  ["        R,                  " U R&                  UR(                  5        U R+                  SUR(                  S9  OG["        R.                  " U R&                  UR(                  U5        U R+                  S	UR(                  US9  UR                  (       a  U R+                  S
UR(                  US9  U R1                  5         U R3                  5         g )Nr   r-   rK  r  r  r  r  r  r  r  )r  r|   rE   r  r   r,  r  r&   r%   r{   r  rx   rj   rH   r>  rO  r  r*   r  r   r   r  r  r  r  r  )
r   r   r  r  rM  r  r  rP  raise_amountr  s
             rR   r   HoldemGame._action_all_in'  s   ''/Q;,,--add344a8	 "4#3#3#=#=#?,,JaJab
 	
377a<12))!$$4},>c===2166#N\82166Bt<1!&&M882166#N rQ   c                   U R                   (       d  g U R                  5       n[        U5      S::  a  U R                  U5        g U(       a4  UR	                  U R                  5       5      (       a  U R                  SS9  g U R                   R                  XR                  5       5      (       a  U R                  5         g U R                  5         g )Nr-   rV   r  )
r|   r  r.  _award_uncontestedissubset_all_in_idsr  is_complete_advance_phaser  )r   r  s     rR   r  HoldemGame._after_actionL  s    ||--/
z?a##J/*--d.>.>.@AA''S'A<<##J0@0@0BCC!rQ   c                   U R                   S:X  a*  SU l         U R                  S5        U R                  S5        OU R                   S:X  a*  SU l         U R                  S5        U R                  S5        OKU R                   S:X  a*  SU l         U R                  S5        U R                  S5        OU R                  5         g U R	                  SS9  g )	Nr7  ru  r   r   r-   rw  Fr8  )r   r~  ry  r  rB  r   s    rR   r  HoldemGame._advance_phase\  s    ::"DJ  #  (ZZ6!DJ  #  (ZZ6! DJ  #  )NN!!%!0rQ   c                    SU l         U R                  S5        U R                  5         U R                  SS9  U R	                  5         U R                  5         g )Nshowdownzpoker-showdownT)	skip_best)r   r  _resolve_pots_announce_showdown_handsr$  rH  r   s    rR   r  HoldemGame._showdownn  sM    
)*%%%5!!#rQ   c                   U(       a#  U R                  [        [        U5      5      5      OS nU(       d  g U R                  R	                  5       n[        U[        5      (       a  U=R                  U-  sl        U R                  [        R                  " / SQ5      5        U R                  SUR                  US9  U R                  5         U R                  5         U R                  5         g )Nzgame_blackjack/win1.oggzgame_blackjack/win2.oggzgame_blackjack/win3.oggzpoker-player-wins-potr  )get_player_by_idnextiterr{   r  r  r>   rE   r>  r  choicer  r   r  r$  rH  )r   r  winnerrM  s       rR   r  HoldemGame._award_uncontestedv  s    BL&&tD,<'=>RV!!++-fl++LLF"LMMa	

 	0VT !!#rQ   c           
     P  ^  T R                   R                  5         T R                  5        Vs/ s H  oR                  PM     nnT R                  R                  U5      n[        T R                  R                  5       U 4S jUUS U 4S jS 5      nU GH  nT R                   R                  S UR                   5       5        [        UR                  S5      n[        UR                  5      S:X  a  UR                  S   n[        UR                  S5      nUR                   S:X  d  [        UR"                  5      S::  aP  T R%                  [&        R(                  " / S	Q5      5        T R+                  S
UR,                  UR.                  UUS9  M  T R%                  [&        R(                  " / S	Q5      5        T R+                  SUR,                  UR.                  UR                   UUS9  GMY  SR1                  S UR                   5       5      n	T R%                  [&        R(                  " / S	Q5      5        UR                   S:X  a  T R+                  SU	UR.                  US9  GM  T R+                  SU	UR.                  UR                   US9  GM     T R3                  5         g s  snf )Nc                X   > [        TR                  U 5      =n[        5      (       a  U$ S $ r  )r  r  r>   )r   r   r   s     rR   <lambda>*HoldemGame._resolve_pots.<locals>.<lambda>  s2    )>)>y)IIvLYY  rQ   c                    U R                   $ r  r   r  s    rR   r  r        addrQ   c                N   > [        U R                  TR                  -   5      S   $ rS  )r"   rC   rz   r  r   s    rR   r  r    s    i 78;rQ   c                6    [        U SU R                  U-   5      $ )NrE   )setattrrE   )r  payouts     rR   r  r    s    767FLL6<Q#RrQ   c              3  8   #    U  H  oR                   v   M     g 7fr  r  .0ws     rR   	<genexpr>+HoldemGame._resolve_pots.<locals>.<genexpr>  s     0R?Q!?Q   r   r-   r   r  zpoker-player-wins-pot-hand)r   rM  ri  rC   zpoker-player-wins-side-pot-hand)r   rM  r   ri  rC   , c              3  8   #    U  H  oR                   v   M     g 7fr  r   r  s     rR   r  r	    s     !E2DQ&&2Dr
  zpoker-players-split-pot)rw   rM  rC   zpoker-players-split-side-pot)rw   rM  r   rC   )r   r  r  r   r}   get_button_idr)   r{   get_potsupdatewinnersr#   
best_scorer.  r   rC   	pot_indexeligible_player_idsr>  r  r  r  r   
pot_amountjoinr  )
r   r  r  	button_idpot_results
pot_resultdescr  ri  namess
   `         rR   r  HoldemGame._resolve_pots  se   %%++-$($;$;$=>$=qdd$=
>$$22:>	/%%'
 ;R
 &J))000Rz?Q?Q0RR !6!6=D:%%&!+#++A."6;;5''1,J4R4R0SWX0XOO $$4%{{)44#! %  OO $$9%{{)44(22#! %  		!E*2D2D!EEMM ''1,$$1 %)44!	 %  $$6 %)44(22! % y &F 	 e ?s   J#c                ,  ^  T R                  5        Vs/ s H/  n[        U[        5      (       d  M  UR                  (       a  M-  UPM1     nn[	        U5      S::  a  g [        5       nU(       a&  T R                  (       a  [        T R                  5      nU Vs/ s H  o"R                  PM     nn[        UUT R                  R                  U5      S U 4S j5      nU H*  u  nu  pn
U(       a  Xt;   a  M  T R                  " U40 U	D6  M,     g s  snf s  snf )Nr-   c                    U R                   $ r  r  r  s    rR   r  5HoldemGame._announce_showdown_hands.<locals>.<lambda>  r  rQ   c           	        > SU R                   [        U R                  S5      [        [	        U R                  TR
                  -   5      S   S5      S.4[	        U R                  TR
                  -   5      S   4$ )Nzpoker-show-handr   r   )r   ri  rC   )r   r   rC   r#   r"   rz   r   s    rR   r  r    si    %"#&&!+AFFD!9 -i8O.PQR.SUY Z !&&4>>1215
rQ   )r  r  r>   rG   r.  setr   r   r(   r}   r  r  )r   r  r  rD  skip_idsr  linesr   
message_idkwargs_scores   `          rR   r  #HoldemGame._announce_showdown_hands  s    ..0
0!Jq,4OAXYX`X`A0 	 
 v;! U664889H$*+FqddF
+%**:6

" 8=3I+
VI1Z262 8=5
 ,s   DDDDc                    [        U5      S::  a  U$ U R                  5        Vs/ s H  o"R                  PM     nn[        XU R                  R                  U5      S 5      $ s  snf )Nr-   c                    U R                   $ r  r  r  s    rR   r  5HoldemGame._order_winners_by_button.<locals>.<lambda>  s    WXW[W[rQ   )r.  r  r   r'   r}   r  )r   r  r  r  s       rR   _order_winners_by_button#HoldemGame._order_winners_by_button  s^    w<1N$($;$;$=>$=qdd$=
>&!1!1!?!?
!K^
 	
 ?s   A"c                   U R                  U5      nU(       d  g U R                  R                  5       nU(       d  UR                  SSS9  g UR                  SU R                  R	                  5       S9  U R                  5       (       d  g UR                  SUS   R                  S9  [        USS  SS9 H  u  pVUR                  SXVR                  S9  M!     g )	Nzpoker-pot-totalr   rL  zpoker-pot-mainr-   )r  zpoker-pot-side)r   rM  )r   r{   r  rn  r  r  rM  	enumerate)r   r   r  r   potsr}  pots          rR   r   HoldemGame._action_check_pot  s    }}V$((*LL*1L5&t/?/?/I/I/KL!!%d1gnn=!$qr(!4HCLL)ZZLH 5rQ   c                    U R                   (       d  g U R                   R                  UR                  5      nU R                  U5      nU(       a  UR	                  SUS9  g g )Nzpoker-to-callrL  )r|   r  r   r   rn  )r   r   r  r  r   s        rR   r   HoldemGame._action_check_bet  sJ    ||,,--fii8}}V$LLL9 rQ   c                    U R                   (       d  g [        U R                   R                  S5      nU R                  U5      nU(       a  UR	                  SUS9  g g )Nr-   zpoker-min-raiserL  )r|   r,  r  r   rn  )r   r   r  r  r   s        rR   r   "HoldemGame._action_check_min_raise  sI    ||44a8	}}V$LL*9L= rQ   c                   U R                  U5      nU(       d  g U R                  5        Vs/ s H9  n[        U[        5      (       d  M  UR                  (       a  M-  UR
                  PM;     nn[        U5      nUS:X  a  UR                  S5        g SR                  U5      nUS:X  a  UR                  SXvS9  g UR                  SXvS9  g s  snf )Nr   zpoker-hand-players-noner  r-   zpoker-hand-players-one)r  rW   zpoker-hand-players)	r   r  r  r>   rG   r   r.  rn  r  )r   r   r  r   r  rD  rW   r  s           rR   r   %HoldemGame._action_check_hand_players'  s    }}V$ ,,.
.!\* 3488 AFF. 	 

 FA:LL23		&!A:LL1LLLL-ULH
s   C
	C
C
c                    [        U[        5      (       a  UOS nU(       d  g U R                  U5      nU(       a0  UR                  [	        UR
                  UR                  5      5        g g r  )r  r>   r   speakr   rC   r   r   r   r  r  r   s        rR   r   HoldemGame._action_read_hand:  sL     66FD}}V$JJz!&&$++67 rQ   c                    U R                  U5      nU(       a0  UR                  [        U R                  UR                  5      5        g g r  )r   r8  r   rz   r   )r   r   r  r   s       rR   r   HoldemGame._action_read_tableB  s3    }}V$JJz$..$++>? rQ   c                    [        U[        5      (       a  UOS nU(       d  g U R                  U5      nU(       a?  [        UR                  U R
                  -   UR                  5      nUR                  U5        g g r  )r  r>   r   r$   rC   rz   r   r8  )r   r   r  r  r   r  s         rR   r   "HoldemGame._action_read_hand_valueG  sZ     66FD}}V$($..)@$++NDJJt rQ   c                   [        U[        5      (       a  UOS nU(       d  g  [        UR                  S5      S   5      S-
  nUR
                  U R                  -   nUS:  d  U[        U5      :  a  g U R                  U5      nU(       a(  UR                  [        XT   UR                  5      5        g g ! [         a     g f = f)NrC  rv  r-   r   )r  r>   rD   splitr  rC   rz   r.  r   r8  r   r   )r   r   r  r  r}  	all_cardsr   s          rR   r   HoldemGame._action_read_cardP  s     66FD	iooc*2./!3C FFT^^+	7cS^+}}V$JJy=>   		s    B3 3
C ?C c                   U R                  U5      nU(       d  g U R                  5        Vs/ s H  oDR                  S:  d  M  UPM     nnU R                  R	                  U Vs/ s H  oDR
                  PM     sn5      nU(       a  U R                  U5      OS nU(       a  UR                  SUR                  S9  g g s  snf s  snf )Nr   zpoker-button-isr  )	r   r  rE   r}   r  r   r  rn  r   )r   r   r  r   r  rD  r  button_players           rR   r   HoldemGame._action_check_button_  s    }}V$!446F6''A+!6F$$22&3I&QDD&3IJ	<E--i84LL*=3E3ELF  G3Is   B=B=$Cc                x   U R                  U5      nU(       d  g U R                  5        Vs/ s H  oDR                  S:  d  M  UPM     nnU(       d  g U R                  R	                  U Vs/ s H  oDR
                  PM     sn5      nU Vs/ s H  oDR
                  PM     nnU(       az  UR
                  U;   aj  UR                  UR
                  5      UR                  U5      -
  [        U5      -  nUS:X  a  UR                  S5        OUS:X  a  SOSn	UR                  XS9  [        U5      S:  ay  U R                  R                  U5      u  pU R                  Xz   5      nU R                  X{   5      nU(       a.  U(       a&  UR                  SUR                  UR                  S	9  g g g g s  snf s  snf s  snf )
Nr   zpoker-position-buttonr-   zpoker-position-seatzpoker-position-seats)positionr   zpoker-blinds-playersrV  )r   r  rE   r}   r  r   r   r.  rn  rY  r  r   )r   r   r  r   r  rD  r  rp  r}  keyr\  r]  r^  r_  s                 rR   r   !HoldemGame._action_check_positioni  sj   }}V$!446F6''A+!6F$$22&3I&QDD&3IJ	%&v!v&e+;;vyy)EKK	,BBc%jPCax45/2ax+=SS/u:?!--??FNF--em<I--em<IY3	9>>Z 'y	  G 4J&s   F-F-,F2F7c                    U R                  U5      nU(       d  g U R                  R                  5       nUS::  a  UR                  S5        g UR                  SUS9  g )Nr   zpoker-timer-disabledzpoker-timer-remaining)r  )r   r~   seconds_remainingrn  )r   r   r  r   	remainings        rR   r   #HoldemGame._action_check_turn_timer  sM    }}V$JJ002	>LL/0LL0)LDrQ   c                   U R                  U5      nU(       d  g U R                  (       a  UR                  S5        g U R                  S::  a  UR                  S5        g U R                  S-   S-  nUS-  nUS-  nUR                  SXVS9  g )	Nr  r   zpoker-blind-timer-disabled   rc   r?   zpoker-blind-timer-remaining-ms)r  r  )r   r   rn  r   )r   r   r  r   rL  r  r  s          rR   r   $HoldemGame._action_check_blind_timer  s    }}V$&&LL78!!Q&LL56++b0R7	r/b.5wXrQ   c                   U R                   S:w  a  g [        U[        5      (       a  UOS nU(       a  UR                  (       a  g U R	                  U5      nU(       a/  UR                  S[        UR                  UR                  5      S9  g g )Nr  zpoker-your-handrh  )	r   r  r>   rG   r   rn  r   rC   r   r9  s        rR   r   HoldemGame._action_reveal_both  sf    ::# 66FDAHH}}V$LL**QVVT[[2QLR rQ   c                D   U R                   S:w  a  g [        U[        5      (       a  UOS nU(       a  UR                  (       a  g U R	                  U5      nU(       aE  UR
                  (       a3  UR                  [        UR
                  S   UR                  5      5        g g g )Nr  r   )	r   r  r>   rG   r   rC   r8  r   r   r9  s        rR   r   HoldemGame._action_reveal_first  sm    ::# 66FDAHH}}V$AFFJJyDKK89 4rQ   c                T   U R                   S:w  a  g [        U[        5      (       a  UOS nU(       a  UR                  (       a  g U R	                  U5      nU(       aM  [        UR                  5      S:  a3  UR                  [        UR                  S   UR                  5      5        g g g )Nr  r-   )
r   r  r>   rG   r   r.  rC   r8  r   r   r9  s        rR   r    HoldemGame._action_reveal_second  su    ::# 66FDAHH}}V$CK!OJJyDKK89 $4rQ   c                    U R                  5        Vs1 s H\  n[        U[        5      (       d  M  UR                  (       a  M-  UR                  S:  d  UR
                  (       d  MP  UR                  iM^     sn$ s  snf rS  )r  r  r>   rG   rE   rH   r   r   r  s     rR   r  HoldemGame._active_betting_ids  sg     ,,.
.!\* 3488 AB1PQPXPX ADD.
 	
 
s   A9A9A9&A9c                    U R                  5        Vs1 s H9  n[        U[        5      (       d  M  UR                  (       d  M-  UR                  iM;     sn$ s  snf r  )r  r  r>   rH   r   rX  s     rR   r  HoldemGame._all_in_ids  s?    "557d7:a;V[\[c[c7ddds   AAAc                x    [        U[        5      (       d  g U R                  U:w  a  g UR                  (       a  g U$ r  )r  r>   r  rG   r  s     rR   r  !HoldemGame._require_active_player  s2    &,//&(==rQ   c                l    U R                   S:w  a  gUR                  (       a  gU R                  U:w  a  gg )Nr  action-not-playingzaction-spectatorzaction-not-your-turn)r
  is_spectatorr  r  s     rR   r   "HoldemGame._is_turn_action_enabled  s1    ;;)#'%&()rQ   c                    U R                   S:w  d  UR                  (       a  [        R                  $ U R                  U:w  a  [        R                  $ [        R
                  $ )Nr  )r
  r`  r   HIDDENr  VISIBLEr  s     rR   r   !HoldemGame._is_turn_action_hidden  sH    ;;)#v':':$$$&($$$!!!rQ   c                &    U R                   S:w  a  gg )Nr  r_  )r
  r  s     rR   r   HoldemGame._is_check_enabled  s    ;;)#'rQ   c                "    [         R                  $ r  r   rc  r  s     rR   r   HoldemGame._is_check_hidden         rQ   c                &    U R                   S:w  a  gg )Nr  zpoker-reveal-only-showdown)r   r  s     rR   r   HoldemGame._is_reveal_enabled  s    ::#/rQ   c                (   U R                   (       d  [        R                  " SS5      $ U R                   R                  UR                  5      nUS:X  a  SOSnU R                  U5      nU(       a  UR                  OSn[        R                  " Xd5      $ )Nr   r   r   zpoker-check)r|   r+   r   r  r   r   r   )r   r   r  r  rH  r   r   s          rR   r   HoldemGame._get_call_label  sm    ||##D,77,,--fii8&!|m}}V$ $$,,rQ   c                b    U R                   S:w  a  [        R                  $ [        R                  $ )Nr  )r   r   rc  rd  r  s     rR   r   HoldemGame._is_reveal_hidden  s&    ::#$$$!!!rQ   c                "    [         R                  $ r  ri  r  s     rR   r   HoldemGame._is_always_hidden  rk  rQ   c                l    U R                   n[        U[        5      (       d  g U R                  US5        g )Nr   )r  r  r>   r   r  s     rR   r  HoldemGame._handle_turn_timeout  s-    $$&,//&&)rQ   c                    U R                   R                   H
  nSUl        M     U R                   HB  nU R                   R	                  UR
                  5      nU(       d  M1  UR                  Ul        MD     g rS  )r  teamstotal_scorerw   get_teamr   rE   )r   teamr  s      rR   r  HoldemGame._sync_team_scores  sY    &&,,D D -A%%..qvv6Dt#$77  rQ   c                   U R                  5       n[        US S S9nU Vs0 s H  o3R                  UR                  _M     nn[	        U R                  5       [        R                  " 5       R                  5       U R                  U Vs/ s H8  n[        UR                  UR                  UR                  [        USS5      S9PM:     snU(       a  UR                  OS U(       a  UR                  OSUS.S9$ s  snf s  snf )	Nc                    U R                   $ r  )rE   r  s    rR   r  .HoldemGame.build_game_result.<locals>.<lambda>  s    177rQ   )rH  rX   is_virtual_botF)r   player_namer   r  r   )winner_namewinner_chipsfinal_chips)	game_type	timestampduration_ticksplayer_resultscustom_data)r  r,  r   rE   r   r   r   now	isoformatsound_scheduler_tickr   r   r   r  )r   rD  r  r  r  s        rR   build_game_resultHoldemGame.build_game_result	  s    ((*V!2DA0671vvqww7mmolln..044    A dd !88#*1.>#F	   /5v{{$06A*
 	
 8
s    C7?C<c                    U R                  S5        U(       a  U R                  SUR                  S9  U R                  5         g )Nzgame_pig/win.oggzpoker-player-wins-gamer  )r>  r  r   finish_game)r   r  s     rR   r<  HoldemGame._end_game!  s6    *+5fkkJrQ   c           	        [         R                  " US5      /nUR                  R                  S0 5      n[        UR	                  5       S SS9n[        US5       H"  u  nu  pxUR                  U SU SU S	35        M$     U$ )
Nzgame-final-scoresr  c                    U S   $ )Nr-   rI   )items    rR   r  .HoldemGame.format_end_screen.<locals>.<lambda>*  s    T!WrQ   T)rH  reverser-   z. z: z chips)r+   r   r  sorteditemsr-  rm  )	r   resultr   r"  r  sorted_scoresr   r   rE   s	            rR   format_end_screenHoldemGame.format_end_screen'  s    !!&*=>?((,,]B?{0028LVZ[ )- ;A}LLA3bbv67 !<rQ   )rG  r   r|   r   r   rz   r   r   ry   r  r   r   r   r   r   r   r   r
  r  r  )returnrg   )r  rD   )F)r   rg   r   rg   r   rF   r  r>   )r   r>   r  r   )r   r	   r  r   )r  None)r  ztuple[int, int])rD  rv   r  r  )rw   rv   r  r  )rx  rg   r  r  )rW   rD   r  r  )r   )r  rD   r  r  )r7  rF   r  r  )ro  rD   rp  	list[str]r  r  )r   r>   r  
str | None)r   r	   r  rg   r  r  )r   r	   r  rg   r  rg   r  r  )r   r	   r  rg   )r  r   r  r  )r  rF   r  r  )r  rv   r  rv   )r  r   )r   r	   r  HoldemPlayer | None)r   r	   r  r  )r   r	   r  r   )r   r	   r  rg   r  rg   )r  r   )r  r  r  r  )r  r   r   rg   r  r  )orJ   rK   rL   rM   r   rN   rw   rO   rT   rx   ry   rz   r   r{   r|   r    r}   r!   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   classmethodr   r   r   r   r   r   r   r   r  r  r  r!  r$  r4  r  rH  r?  rN  r@  rA  ry  r~  r  rB  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   r   r   r   r   r   r   r  r  r  r   r   r   r   r   r   r   r   r  r  r  r<  r  rP   __classcell__)r   s   @rR   rt   rt      s    #("=G="=AG]AD+!$7Iz7#(#IKI(,G%,#(#IKI!.AE>AKE3).t)DJ&DKs#(D(  sKK"d"383N0N%&s&$%c%).s)ChC           M.`}~
,3="40<)=]G.Y.Va3(4D!
" 8'./b# J 1$"T!l3@
I:>I&8@
?G[.EYS::
e"
!
-"
!*+
0 rQ   rt   )K
__future__r   dataclassesr   r   r   r  baser   r	   r
   registryr   game_utils.actionsr   r   r   r   game_utils.poker_keybindsr   game_utils.bot_helperr   game_utils.game_resultr   r   game_utils.optionsr   r   r   game_utils.cardsr   r   r   r   r   r   game_utils.poker_bettingr   game_utils.poker_potr   game_utils.poker_tabler    game_utils.poker_timerr!   game_utils.poker_evaluatorr"   r#   r$   game_utils.poker_actionsr%   r&   game_utils.poker_showdownr'   r(   game_utils.poker_payoutr)   
game_utilsr*   messages.localizationr+   server.core.ui.keybindsr,   botr/   game_utils.poker_stater0   rm   rn   ro   rp   rq   rr   r>   rT   rt   rI   rQ   rR   <module>r     s"   " (   , , $ M M = . > E E Z Z 9 3 5 4 Y Y R W @ # 1 0  8 J 	






	 
  4 	
 
 
 
   6&(*  6   UK U Up N N  NrQ   