+
    Ë£j·  ã                   ór   € R t ^ RIHt ^ RIHt ^ RIHtHt ^¯^^¬^
/tRR R llt	RR R llt
RR	 R
 llt]tR# )zCDatabase-only network selection helpers used by installation forms.)Úselect)ÚAsyncSession)ÚCustomerÚVlanMappingRuleNc                ó<   € V ^8„  d   QhR\         R\        R\         /# )é   Úsource_vlanÚpurposeÚreturn)ÚintÚstr)Úformats   "Ú3C:\Users\MF Sangadji\bestweb\app\core\networking.pyÚ__annotate__r      s!   € ÷ 	ñ 	œ#ð 	¬ð 	Ìñ 	ó    c                ó>  € Vf   \         p\        V\        4      '       d%   \        VP	                  \        V 4      V 4      4      # V FI  pVP
                  V 8X  g   K  VP                  V8X  g   K)  VP                  '       g   K=  VP                  u # 	  \        V 4      # )z@Map a service VLAN without contacting an OLT or MikroTik device.)	ÚDEFAULT_VLAN_MAPPINGSÚ
isinstanceÚdictr   Úgetr   r	   Ú	is_activeÚtarget_vlan)r   r	   ÚrulesÚrules   &&& r   Úmap_vlanr      sx   € à‚}Ü%ˆÜ�%œ×ÒÜ�5—9‘9œS Ó-¨{Ó;Ó<Ð<ÛˆØ×Ñ˜{Ö*¨t¯|©|¸wÖ/FÈ4Ï>Ï>Ê>Ø×#Ñ#Ò#ñ ô ˆ{ÓÐr   c                óH   € V ^8„  d   QhR\         R\        R\        R\        /# )r   Úsessionr   r	   r
   )r   r   r   )r   s   "r   r   r      s/   € ÷ Hñ H¤Lð H¼sð HÌSð HÔadñ Hr   c           	   ƒ   ó8  "  € V P                  \        \        4      P                  \        P                  V8H  \        P
                  V8H  \        P                  P                  R 4      4      4      G Rj  x€L
 pV'       d   VP                  # \        W4      #  L#5i)TN)
Úscalarr   r   Úwherer   r	   r   Úis_r   r   )r   r   r	   r   s   &&& r   Úmap_vlan_from_dbr!      sz   é € Ø—‘ÜŒÓ×%Ñ%Ü×'Ñ'¨;Ñ6Ü×#Ñ# wÑ.Ü×%Ñ%×)Ñ)¨$Ó/ó	
ó÷ €D÷  $ˆ4×ÑÐG¬°+Ó)GÐGñùs   ‚A2BÁ4BÁ5BÂBc                ób   € V ^8„  d   QhR\         R\        R\        R\        R\        R,          /# )r   r   Úolt_portÚstartÚendr
   N)r   r   r   )r   s   "r   r   r   "   sE   € ÷ Zñ ZÜðZäðZô ðZô 
ð	Zô
 	ˆ4…ZñZr   c              ƒ  ó¦  a"  € V^8  g   W28  d   \        R4      hV P                  \        \        P                  4      P                  \        P                  V8H  \        P                  V8¬  \        P                  V8*  4      4      G Rj  x€L
 p\        VP                  4       4      o\        V3R l\        W#^,           4       4       R4      #  LC5i)zÉReturn the lowest ONU ID not present for *olt_port*.

This is intentionally a pure database read. Callers should run it and the
subsequent Customer insert in one transaction; no hardware is contacted.
zONU ID range tidak validNc              3   ó8   <"  € T F  qS9  g   K  Vx € K  	  R # 5i)N© )Ú.0Úonu_idÚuseds   & €r   Ú	<genexpr>Ú%lowest_free_onu_id.<locals>.<genexpr>7   s   øé € ÐRÑ&;˜FÈTÑ?Q—’Ó&;ùs   ƒ�
)Ú
ValueErrorÚscalarsr   r   r*   r   r#   ÚsetÚallÚnextÚrange)r   r#   r$   r%   Úresultr+   s   &&&& @r   Úlowest_free_onu_idr5   "   s£   øé € ð ˆq„y�C”KÜÐ3Ó4Ð4Ø—?‘?ÜŒx�‰Ó×%Ñ%Ü×Ñ Ñ)Ü�O‰O˜uÑ$Ü�O‰O˜sÑ"ó	
ó÷ €Fô ˆv�z‰z‹|Ó€DÜÔR¤e¨E¸µ7Ô&;ÓRÐTXÓYÐYñùs   ƒBCÂCÂAC)ÚserviceN)r6   )é   é€   )Ú__doc__Ú
sqlalchemyr   Úsqlalchemy.ext.asyncior   Úapp.models.modelsr   r   r   r   r!   r5   Úfind_lowest_free_onu_idr(   r   r   Ú<module>r>      s9   ðÙ Iå Ý /ç 7à˜b # rÐ*Ð ÷	÷H÷Zð0 -Ò r   