)Ej ddlmZddlmZddlmZddlZddlZejdZ dZ dZ dZ d Z d Zd Zd Zd ZdZdZdZGddeZGddeZGddeZdS) timestampNow) DefaultTable)reduceNzfontTools.mergect|}t|}t|tfd|Ds Jd|zS)Nc3$K|] }|kV dSN).0itemfirsts FC:\PYTHON\MyICR_Suite\python\Lib\site-packages\fontTools/merge/util.py zequal..s'++tu}++++++z"Expected all items to be equal: %s)listiternextall)lsttr s @requalrsa s))C S A GGE +++++++ + +WW-QTW-WWW + Lrc:tt|Sr )rrrs rr r s S ??rctSr NotImplementedrs r recalculaters rctSr rrs r current_timer"s >>rc6ttj|Sr )roperatorand_rs r bitwise_andr#&s (- % %%rc6ttj|Sr )rr!or_rs r bitwise_orr&*s (, $ $$rc^t|}t|t|zSr )rsumlenrs ravg_intr*.s$ s))C s88s3xx rcfd}|S)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.cDd|D}|r |ntS)Nc$g|] }|tu |Sr r)r r s r z1onlyExisting..wrapper..:s"DDD$^)C)C)C)C)Crr)ritemsfuncs rwrapperzonlyExisting..wrapper9s-DD#DDD#7ttE{{{7rr )r0r1s` r onlyExistingr23s# 88888 Nrc>g}|D]}|||Sr )extend)rlr s rsumListsr6@, A  Hrc>i}|D]}|||Sr )update)rdr s rsumDictsr;Gr7rcfd}|S)Nc,t|}d}tdD]j} |}n:#t$r- d}n #t$rtd|zwxYwYnwxYwd|z|fd|D}|||zz}k|S)Nrsize*zDon't know how to merge bit %sc3<K|]}t|zVdSr )bool)r r shiftedBits rrz-mergeBits..wrapper..[s0$M$MT$*;%<%<$M$M$M$M$M$Mr)rrangeKeyError Exception)r returnValue bitNumber mergeLogic mergedValuerCbitmaps @rr1zmergeBits..wrapperOs3ii vf~.. 4 4I R#I.  R R RR!'JJRRR#$Dy$PQQQRJ R iJ$*$M$M$M$M$M$M$MMMK ;)3 3KKs'5 A,A A, A&&A,+A,r )rKr1s` r mergeBitsrLNs# NrceZdZdZdZdZdS)AttendanceRecordingIdentityDictzYA dictionary-like object that records indices of items actually accessed from a list.cv||_dt|D|_t|_dS)Nc4i|]\}}t||Sr idr ivs r z.hs$666tq!"Q%%666r)r5 enumerater:setsselfrs r__init__z(AttendanceRecordingIdentityDict.__init__fs366y~~666rcj|j|jt||Sr )rYaddr:rRr[rUs r __getitem__z+AttendanceRecordingIdentityDict.__getitem__ks'  46"Q%%=!!!rN__name__ __module__ __qualname____doc__r\r`r rrrNrNbs< rrNceZdZdZdZdZdS)GregariousIdentityDictzrA dictionary-like object that welcomes guests without reservations and adds them to the end of the guest list.cP||_td|D|_dS)Nc34K|]}t|VdSr rQ)r rUs rrz2GregariousIdentityDict.__init__..vs(((qRUU((((((r)r5rXrYrZs rr\zGregariousIdentityDict.__init__ts+((C(((((rct||jvrA|jt||j||Sr )rRrYr^r5appendr_s rr`z"GregariousIdentityDict.__getitem__xsH a55   FJJr!uu    FMM!   rNrar rrrgrgps<//)))rrgc,eZdZdZddZdZdZdZdS)NonhashableDictz3A dictionary-like object mapping objects to values.Nc| dt|D|_dSdt||D|_dS)Nc4i|]\}}t||Sr rQrSs rrVz,NonhashableDict.__init__..s$;;;41abeeQ;;;rc4i|]\}}t||Sr rQ)r krUs rrVz,NonhashableDict.__init__..s$===41abeeQ===r)rWr:zip)r[keysvaluess rr\zNonhashableDict.__init__sI >;;9T??;;;DFFF==3tV+<+<===DFFFrc6|jt|Sr r:rRr[rqs rr`zNonhashableDict.__getitem__svbee}rc4||jt|<dSr rv)r[rqrUs r __setitem__zNonhashableDict.__setitem__sr!uu rc0|jt|=dSr rvrws r __delitem__zNonhashableDict.__delitem__s F2a55MMMrr )rbrcrdrer\r`ryr{r rrrmrms[==>>>> rrm)fontTools.misc.timeToolsr#fontTools.ttLib.tables.DefaultTabler functoolsrr!logging getLoggerlogrr rrr#r&r*r2r6r;rLobjectrNrgrmr rrrs 211111<<<<<<g)** &&&%%%           (     f        V   fr