
    h2                         S SK Jr  S SKJr  S SKJr  S SKrS SKr\R                  " S5      r	S r
S rS rS	 rS
 rS rS rS rS rS rS r " S S\5      r " S S\5      r " S S\5      rg)    timestampNow)DefaultTable)reduceNzfontTools.mergec                    ^ [        U 5      n [        U 5      n[        U5      m[        U4S jU 5       5      (       d
   SU -  5       eT$ )Nc              3   ,   >#    U  H	  oT:H  v   M     g 7fN ).0itemfirsts     F/var/www/html/env/lib/python3.13/site-packages/fontTools/merge/util.py	<genexpr>equal.<locals>.<genexpr>   s     +u}s   z"Expected all items to be equal: %s)listiternextall)lsttr   s     @r   equalr      sF    
s)CS	AGE++++W-QTW-WW+L    c                 *    [        [        U 5      5      $ r	   )r   r   r   s    r   r   r      s    S	?r   c                     [         $ r	   NotImplementedr   s    r   recalculater      s    r   c                     [        5       $ r	   r   r   s    r   current_timer    "   s
    >r   c                 6    [        [        R                  U 5      $ r	   )r   operatorand_r   s    r   bitwise_andr$   &   s    (--%%r   c                 6    [        [        R                  U 5      $ r	   )r   r"   or_r   s    r   
bitwise_orr'   *   s    (,,$$r   c                 F    [        U 5      n [        U 5      [        U 5      -  $ r	   )r   sumlenr   s    r   avg_intr+   .   s    
s)Cs8s3xr   c                    ^  U 4S jnU$ )zReturns a filter func that when called with a list,
only calls func on the non-NotImplemented items of the list,
and only so if there's at least one item remaining.
Otherwise returns NotImplemented.c                 p   > U  Vs/ s H  o[         Ld  M  UPM     nnU(       a  T" U5      $ [         $ s  snf r	   r   )r   r   itemsfuncs      r   wrapperonlyExisting.<locals>.wrapper9   s3    "%D#$^)C#D#tE{77 Es   33r
   )r/   r0   s   ` r   onlyExistingr2   3   s    8 Nr   c                 >    / nU  H  nUR                  U5        M     U$ r	   )extend)r   lr   s      r   sumListsr6   @   !    
A	 Hr   c                 >    0 nU  H  nUR                  U5        M     U$ r	   )update)r   dr   s      r   sumDictsr;   G   r7   r   c                    ^  U 4S jnU$ )Nc                    >^ [        U 5      n Sn[        TS   5       H'  n TU   nSU-  mU" U4S jU  5       5      nXU-  -  nM)     U$ ! [         a%     TS   n N6! [         a    [        SU-  5      ef = ff = f)Nr   size*zDon't know how to merge bit %s   c              3   @   >#    U  H  n[        UT-  5      v   M     g 7fr	   )bool)r   r   
shiftedBits     r   r   -mergeBits.<locals>.wrapper.<locals>.<genexpr>[   s     $MT$*;%<%<s   )r   rangeKeyError	Exception)r   returnValue	bitNumber
mergeLogicmergedValuerC   bitmaps        @r   r0   mergeBits.<locals>.wrapperO   s    3ivf~.IR#I.
 iJ$$M$MMK)33K /   RR!'J R#$Dy$PQQRRs   A
A:AA66A:r
   )rL   r0   s   ` r   	mergeBitsrN   N   s      Nr   c                   $    \ rS rSrSrS rS rSrg)AttendanceRecordingIdentityDictb   zUA dictionary-like object that records indices of items actually accessed
from a list.c                     Xl         [        U5       VVs0 s H  u  p#[        U5      U_M     snnU l        [	        5       U l        g s  snnf r	   )r5   	enumerateidr:   sets)selfr   ivs       r   __init__(AttendanceRecordingIdentityDict.__init__f   s9    '0~6~tq"Q%(~6 7s   Ac                 h    U R                   R                  U R                  [        U5         5        U$ r	   )rV   addr:   rT   rW   rY   s     r   __getitem__+AttendanceRecordingIdentityDict.__getitem__k   s#    

466"Q%=!r   )r:   r5   rV   N__name__
__module____qualname____firstlineno____doc__rZ   r_   __static_attributes__r
   r   r   rP   rP   b   s    
r   rP   c                   $    \ rS rSrSrS rS rSrg)GregariousIdentityDictp   znA dictionary-like object that welcomes guests without reservations and
adds them to the end of the guest list.c                 >    Xl         [        S U 5       5      U l        g )Nc              3   8   #    U  H  n[        U5      v   M     g 7fr	   )rT   )r   rY   s     r   r   2GregariousIdentityDict.__init__.<locals>.<genexpr>v   s     (CqRUUCs   )r5   rU   rV   )rW   r   s     r   rZ   GregariousIdentityDict.__init__t   s    (C((r   c                     [        U5      U R                  ;  a?  U R                  R                  [        U5      5        U R                  R	                  U5        U$ r	   )rT   rV   r]   r5   appendr^   s     r   r_   "GregariousIdentityDict.__getitem__x   s;    a5FFJJr!uFFMM!r   )r5   rV   Nra   r
   r   r   ri   ri   p   s    /)r   ri   c                   4    \ rS rSrSrS	S jrS rS rS rSr	g)
NonhashableDict   z3A dictionary-like object mapping objects to values.Nc                     Uc0  [        U5       VVs0 s H  u  p4[        U5      U_M     snnU l        g [        X5       VVs0 s H  u  pT[        U5      U_M     snnU l        g s  snnf s  snnf r	   )rS   rT   r:   zip)rW   keysvaluesrX   rY   ks         r   rZ   NonhashableDict.__init__   sZ    >+4T?;?41beQh?;DF+.t+<=+<41beQh+<=DF <=s   A$A*c                 2    U R                   [        U5         $ r	   r:   rT   rW   ry   s     r   r_   NonhashableDict.__getitem__   s    vvbe}r   c                 2    X R                   [        U5      '   g r	   r|   )rW   ry   rY   s      r   __setitem__NonhashableDict.__setitem__   s    r!ur   c                 0    U R                   [        U5      	 g r	   r|   r}   s     r   __delitem__NonhashableDict.__delitem__   s    FF2a5Mr   )r:   r	   )
rb   rc   rd   re   rf   rZ   r_   r   r   rg   r
   r   r   rs   rs      s    =>r   rs   )fontTools.misc.timeToolsr   #fontTools.ttLib.tables.DefaultTabler   	functoolsr   r"   logging	getLoggerlogr   r   r   r    r$   r'   r+   r2   r6   r;   rN   objectrP   ri   rs   r
   r   r   <module>r      s   
 2 <    )*&% 

(f V f r   