§
    ¢”j´O ã                   ó	  — d dl mZmZmZmZm	Z
mZ d dlmZ d dlmZmZ d dlmZmZmZmZmZ d dlmZ d dlmZmZ ddlmZmZm Z m!Z!m"Z" dd	l#m$Z$ dd
l%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z0m1Z2m3Z3 d dl4m5Z5m6Z6 d dl7m8Z8 d dl9m:Z: d dl;Z;d dl<Z<d dl=m>Z> d dl?Z?d dl@mAZA  e?jB        eC¦  «        ZDd„ ZEdeFe$         fd„ZG G d„ deH¦  «        ZI G d„ deI¦  «        ZJ G d„ deJ¦  «        ZK G d„ deJ¦  «        ZL G d„ deL¦  «        ZM G d„ deL¦  «        ZN G d „ d!eN¦  «        ZO G d"„ d#eKeN¦  «        ZP G d$„ d%eL¦  «        ZQ G d&„ d'eL¦  «        ZR G d(„ d)eL¦  «        ZS G d*„ d+eL¦  «        ZT G d,„ d-eL¦  «        ZU G d.„ d/eL¦  «        ZV G d0„ d1eVeT¦  «        ZW G d2„ d3eVeR¦  «        ZX G d4„ d5eVeN¦  «        ZY G d6„ d7eJ¦  «        ZZ G d8„ d9eJ¦  «        Z[ G d:„ d;e[¦  «        Z\ G d<„ d=eR¦  «        Z] G d>„ d?eR¦  «        Z^ G d@„ dAeJ¦  «        Z_ G dB„ dCe_¦  «        Z` G dD„ dEe_¦  «        Za G dF„ dGea¦  «        Zb G dH„ dIea¦  «        Zc G dJ„ dKec¦  «        Zd G dL„ dMed¦  «        Ze G dN„ dOeJ¦  «        Zf G dP„ dQeJ¦  «        Zg G dR„ dSeI¦  «        Zh G dT„ dUeh¦  «        Zi G dV„ dWeh¦  «        Zj G dX„ dYej¦  «        Zk G dZ„ d[ej¦  «        Zl G d\„ d]eh¦  «        Zm G d^„ d_ej¦  «        Zn G d`„ daeken¦  «        Zo G db„ dcej¦  «        Zp G dd„ deeL¦  «        Zq G df„ dgeq¦  «        Zr G dh„ dieI¦  «        Zs G dj„ dkeI¦  «        Zt G dl„ dmeI¦  «        Zu G dn„ doeI¦  «        Zv G dp„ dqeI¦  «        Zw G dr„ dseI¦  «        Zx G dt„ dueI¦  «        Zy G dv„ dweI¦  «        Zz G dx„ dyeI¦  «        Z{ G dz„ d{¦  «        Z| G d|„ d}eI¦  «        Z} G d~„ deR¦  «        Z~ G d€„ d�eT¦  «        Z G d‚„ dƒe¦  «        Z/ G d„„ d…e¦  «        Z1 G d†„ d‡eA¦  «        Z€ G dˆ„ d‰eI¦  «        Z�i dŠeS“d‹eQ“dŒeM“d�eT“dŽeR“d�eU“d�eN“d‘eg“d!eO“d#eP“dOef“d7eZ“d9e[“d;e\“d=e]“dCe`“dGeb“i dIec“dKed“dMee“d’eh“d“e�“d”ej“d•ek“d–el“dger“duey“dwez“dye{“de~“dƒe/“d…e1“d?e^“d— e8e}e|¬˜¦  «        “¥ e8e}e'¬™¦  «        ewexeieieieudš„ d›„ dœ„ d�„ dž„ dŸ„ d œ¥Z‚dS )¡é    )ÚfixedToFloatÚfloatToFixedÚfloatToFixedToStrÚstrToFixedToFloatÚensureVersionIsLongÚversionToFixed)ÚTupleVariation)ÚnearestMultipleShortestReprÚotRound)Ú	bytesjoinÚtobytesÚtostrÚpadÚsafeEval)ÚLazyList)ÚOPTIMIZE_FONT_SPEEDÚgetSearchRangeé   )ÚCountReferenceÚFormatSwitchingBaseTableÚOTTableReaderÚOTTableWriterÚValueRecordFactory)Ú	FieldSpec)ÚlookupTypesÚVarCompositeGlyphÚAATStateTableÚAATStateÚ	AATActionÚContextualMorphActionÚLigatureMorphActionÚInsertionMorphActionÚMorxSubtableÚ
ExtendModeÚCompositeModeÚNO_VARIATION_INDEX)Úzip_longestÚ
accumulate)Úpartial)ÚSimpleNamespaceN)ÚOptional)ÚIntFlagc                 ó,   — t          | t          ¦  «        S ©N)Ú
isinstanceÚtuple)Úts    úr/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/fontTools/ttLib/tables/otConverters.pyú<lambda>r3   .   s   € •J˜q¥%Ñ(Ô(€ ó    Ú	tableSpecc           	      óh  — g }i }| D �]§}|j         }|j                              d¦  «        r|j        dk    sJ ‚t          }nâ|j                              d¦  «        s	|j         dv r!t
          t          t          dœ|j                 }nž|j         dk    rt          }n‹|j         dk    rt          }nx|j         dk    rt          }ne|j         d	k    rt          }nR|j         d
v rt          }nA|j        t          vrd|j        vr|j        }t          }nt          |j        |t          ¦  «        } ||j         |j        |j        |j        ¬¦  «        }|j        r|j        }n9|j        dv r|                     |j        ¦  «        }n|                     |¦  «        }|j        s||_        |j         dv ri|d         |_        |j                             ¦   «         D ]B}	|	                     ¦   «         D ]+}
t/          |j         |j        |j        |
¦  «        ||
j        <   Œ,ŒC|j         d	k    r_|d         |_        |d	         |_        |j                             ¦   «         D ]+}
t/          |j         |j        |j        |
¦  «        ||
j        <   Œ,|                     |¦  «         |j         |vsJ |j         ¦   «         ‚|||j         <   �Œ©||fS )zÔGiven a table spec from otData.py, build a converter object for each
    field of the table. This is called for each table in otData.py, and
    the results are assigned to the corresponding class in otTables.py.ÚValueFormatÚuint16ÚCount)ÚStructLengthÚ	MorphType)Úuint8r8   Úuint32ÚSubTableÚExtSubTableÚ	SubStructÚFeatureParams)ÚCIDGlyphMappingÚGlyphCIDMappingú(©Údescription)Ú	MortChainÚMortSubtableÚ	MorxChain)r>   r?   r@   r   ÚfeatureParamTypes)ÚnameÚ
startswithÚtyper7   ÚendswithÚComputedUInt8ÚComputedUShortÚComputedULongr>   r?   r@   rA   ÚStructWithLengthÚconverterMappingÚStructÚevalÚrepeatÚauxrF   Ú
tableClassÚgetr   ÚvaluesÚTableÚ__name__rJ   ÚdefaultFeatureParamsÚappend)r5   ÚtableNamespaceÚ
convertersÚconvertersByNameÚspecÚ	tableNameÚconverterClassÚconvrX   r1   Úclss              r2   ÚbuildConvertersrg   1   s	  € ð €JØÐØð <+ñ <+ˆØ”Iˆ	ØŒ9×Ò Ñ.Ô.ð 	SØ”9 Ò(Ð(Ð(Ð(Ý(ˆNˆNØŒY×Ò Ñ(Ô(ð 	S¨D¬IÐ9VÐ,VÐ,Vå&Ý(Ý'ðð ð Œiô	ˆNˆNð
 ŒY˜*Ò$Ð$Ý%ˆNˆNØŒY˜-Ò'Ð'Ý(ˆNˆNØŒY˜+Ò%Ð%Ý&ˆNˆNØŒY˜/Ò)Ð)Ý*ˆNˆNØŒYÐ@Ð@Ð@Ý-ˆNˆNà”9Õ 0Ð0Ð0°SÀÄ	Ð5IÐ5IØ œI�	Ý!'��å!% d¤i°ÕAQÑ!RÔ!R�àˆ~ØŒI�t”{ D¤H¸$Ô:Jð
ñ 
ô 
ˆð Œ?ð 	7àœˆJˆJØŒYÐDÐDÐDØ'×+Ò+¨D¬IÑ6Ô6ˆJˆJà'×+Ò+¨IÑ6Ô6ˆJàŒð 	)Ø(ˆDŒOàŒ9Ð@Ð@Ð@Ø-¨mÔ<ˆDÔàÔ%×,Ò,Ñ.Ô.ð ð �ØŸ8š8™:œ:ð ð �CÝ5:Øœ	 4¤;°´¸#ñ6ô 6Ð$ S¤\Ñ2Ð2ðð Œ9˜Ò'Ð'Ø%3Ð4GÔ%HˆDÔ"Ø(6°Ô(GˆDÔ%ØÔ-×4Ò4Ñ6Ô6ð ð �Ý16Ø”I˜tœ{¨D¬H°cñ2ô 2Ð  ¤Ñ.Ð.ð 	×Ò˜$ÑÔÐØŒyÐ 0Ð0Ð0Ð0°$´)Ñ0Ô0Ð0Ø&*Ð˜œÑ#Ñ#ØÐ'Ð'Ð'r4   c                   ó„   — e Zd ZdZdddœd„Zd„ Zd„ Zd„ Zd	„ Zdd
„Z	d„ Z
d„ Z ej        d¦  «        Zdee         fd„ZdS )ÚBaseConverterz\Base class for converter objects. Apart from the constructor, this
    is an abstract class.NÚ rE   c                ó,  — || _         || _        || _        | j        r"| j        st          | j        dd¦  «        | _        || _        |                     d¦  «        p|dv | _        |                     d¦  «        p|dk    | _        |dv | _        || _	        d S )Nz<string>rU   r9   )ÚDesignAxisRecordSizeÚValueRecordSizeÚ
LookupTyper;   )Ú
ClassCountÚClass2CountÚ
FeatureTagÚSettingsCountÚVarRegionCountÚMappingCountÚRegionAxisCountÚDesignAxisCountrl   ÚAxisValueCountrm   Ú	AxisCountÚBaseGlyphRecordCountÚLayerRecordCountÚAxisIndicesListÚ	NumGlyphsÚMaxGlyphMapEntryIndexÚMaxEntryIndexÚ
NumEntries)
rK   rV   rW   ÚcompilerX   rN   ÚisCountÚisLookupTypeÚisPropagatedrF   ©ÚselfrK   rV   rW   rX   rF   s         r2   Ú__init__zBaseConverter.__init__{   s¬   € ØˆŒ	ØˆŒØˆŒØŒ8ð 	=˜DœKð 	=Ý˜tœx¨°VÑ<Ô<ˆDŒHØ$ˆŒØ—}’} WÑ-Ô-ð 
°ð :
ð 2
ˆŒð !ŸMšM¨,Ñ7Ô7ÐN¸4À;Ò;NˆÔØ ð %
ð 
ˆÔð, 'ˆÔÐÐr4   c                 ó–  ‡ ‡‡‡	‡
— ‰j         o|dk    }|r ‰                      ‰¦  «        Š
‰
t          u rd}|s@g }t          |¦  «        D ],}|                     ‰                      ‰‰|¦  «        ¦  «         Œ-|S ˆˆˆ
ˆ fd„} |¦   «         Š	t          ˆ	fd„t          |¦  «        D ¦   «         ¦  «        }‰                     |‰
z  ¦  «         |S )z(Read an array of values from the reader.é   Fc                  óT   •‡‡— ‰                      ¦   «         Š‰j        Šˆˆˆˆˆfd„} | S )Nc                 óh   •— ‰                      ‰| ‰z  z   ¦  «         ‰                     ‰‰i ¦  «        S r.   )ÚseekÚread)ÚiÚfontÚposÚreader_copyÚ
recordSizer…   s    €€€€€r2   Ú	read_itemzABaseConverter.readArray.<locals>.get_read_item.<locals>.read_item±   s6   ø€ Ø×$Ò$ S¨1¨z©>Ñ%9Ñ:Ô:Ð:ØŸ9š9 [°$¸Ñ;Ô;Ð;r4   ©Úcopyr�   )r’   r�   r�   rŽ   Úreaderr‘   r…   s    @@€€€€r2   Úget_read_itemz.BaseConverter.readArray.<locals>.get_read_item­   sN   øøø€ Ø$Ÿkšk™mœm�Ø”j�ð<ð <ð <ð <ð <ð <ð <ð <ð <ð !Ð r4   c              3   ó   •K  — | ]}‰V — Œd S r.   © )Ú.0r�   r’   s     €r2   ú	<genexpr>z*BaseConverter.readArray.<locals>.<genexpr>¸   s#   øè è € Ð9Ð9 q˜Ð9Ð9Ð9Ð9Ð9Ð9r4   )ÚlazyÚgetRecordSizeÚNotImplementedÚranger^   rŒ   r   Úadvance)r…   r•   rŽ   Ú	tableDictÚcountr›   Úlr�   r–   r’   r‘   s   ```      @@r2   Ú	readArrayzBaseConverter.readArrayŸ   s  øøøøø€ àŒyÐ&˜U QšYˆØð 	Ø×+Ò+¨FÑ3Ô3ˆJØ�^Ð+Ð+Ø�Øð 	ØˆAÝ˜5‘\”\ð =ð =�Ø—’˜Ÿš 6¨4°Ñ;Ô;Ñ<Ô<Ð<Ð<ØˆHð!ð !ð !ð !ð !ð !ð !ð !ð &˜™œˆIÝÐ9Ð9Ð9Ð9­E°%©L¬LÐ9Ñ9Ô9Ñ9Ô9ˆAØ�NŠN˜5 :Ñ-Ñ.Ô.Ð.àˆHr4   c                 ó>   — t          | d¦  «        r| j        S t          S )NÚ
staticSize)Úhasattrr¥   r�   ©r…   r•   s     r2   rœ   zBaseConverter.getRecordSize½   s"   € Ý�4˜Ñ&Ô&ð 	#Ø”?Ð"ÝÐr4   c                 ó    — t          | ¦  «        ‚)zRead a value from the reader.©ÚNotImplementedError©r…   r•   rŽ   r    s       r2   rŒ   zBaseConverter.readÂ   ó   € å! $Ñ'Ô'Ð'r4   c                 óª   — 	 t          |¦  «        D ]\  }}|                      |||||¦  «         Œd S # t          $ r}|j        |fz   |_        ‚ d }~ww xY wr.   )Ú	enumerateÚwriteÚ	ExceptionÚargs)r…   ÚwriterrŽ   r    rZ   r�   ÚvalueÚes           r2   Ú
writeArrayzBaseConverter.writeArrayÆ   sz   € ð	Ý% fÑ-Ô-ð >ð >‘��5Ø—
’
˜6 4¨°E¸1Ñ=Ô=Ð=Ð=ð>ð >øåð 	ð 	ð 	Ø”V˜q˜d‘]ˆAŒFØøøøøð	øøøs   ‚.2 ²
A¼AÁAc                 ó    — t          | ¦  «        ‚)zWrite a value to the writer.r©   ©r…   r²   rŽ   r    r³   ÚrepeatIndexs         r2   r¯   zBaseConverter.writeÎ   r¬   r4   c                 ó    — t          | ¦  «        ‚)zRead a value from XML.r©   ©r…   ÚattrsÚcontentrŽ   s       r2   ÚxmlReadzBaseConverter.xmlReadÒ   r¬   r4   c                 ó    — t          | ¦  «        ‚)zWrite a value to XML.r©   ©r…   Ú	xmlWriterrŽ   r³   rK   r»   s         r2   ÚxmlWritezBaseConverter.xmlWriteÖ   r¬   r4   zVarIndexBase\s*\+\s*(\d+)Úreturnc                 óŒ   — | j                              | j        ¦  «        }|sdS t          |                     d¦  «        ¦  «        S )zJIf description has `VarIndexBase + {offset}`, return the offset else None.Nr   )ÚvarIndexBasePlusOffsetREÚsearchrF   ÚintÚgroup)r…   Úms     r2   ÚgetVarIndexOffsetzBaseConverter.getVarIndexOffsetÜ   s>   € àÔ)×0Ò0°Ô1AÑBÔBˆØð 	Ø�4Ý�1—7’7˜1‘:”:‰ŒÐr4   r.   )r\   Ú
__module__Ú__qualname__Ú__doc__r†   r£   rœ   rŒ   rµ   r¯   r½   rÁ   Úrer€   rÄ   r+   rÆ   rÉ   r˜   r4   r2   ri   ri   w   sá   € € € € € ðð ð"'È"ð "'ð "'ð "'ð "'ð "'ðHð ð ð<ð ð ð
(ð (ð (ðð ð ð(ð (ð (ð (ð(ð (ð (ð(ð (ð (ð  *˜rœzÐ*FÑGÔGÐð 8¨C¤=ð ð ð ð ð ð r4   ri   c                   óF   — e Zd Zed„ ¦   «         Zed„ ¦   «         Zd„ Zd„ ZdS )ÚSimpleValuec                 ó   — | S r.   r˜   ©r³   s    r2   ÚtoStringzSimpleValue.toStringå   ó   € àˆr4   c                 ó   — | S r.   r˜   rÑ   s    r2   Ú
fromStringzSimpleValue.fromStringé   rÓ   r4   c                 óŒ   — |                      ||d|                      |¦  «        fgz   ¦  «         |                     ¦   «          d S ©Nr³   )Ú	simpletagrÒ   Únewliner¿   s         r2   rÁ   zSimpleValue.xmlWriteí   sI   € Ø×Ò˜D %¨G°T·]²]À5Ñ5IÔ5IÐ+JÐ*KÑ"KÑLÔLÐLØ×ÒÑÔÐÐÐr4   c                 ó8   — |                       |d         ¦  «        S r×   )rÕ   rº   s       r2   r½   zSimpleValue.xmlReadñ   s   € Ø�Š˜u Wœ~Ñ.Ô.Ð.r4   N)r\   rÊ   rË   ÚstaticmethodrÒ   rÕ   rÁ   r½   r˜   r4   r2   rÏ   rÏ   ä   sf   € € € € € Øðð ñ „\ðð ðð ñ „\ððð ð ð/ð /ð /ð /ð /r4   rÏ   c                   ó   — e Zd ZdZd„ Zd„ ZdS )ÚOptionalValueNc                 óÄ   — || j         k    r*|                     d|                      |¦  «        f¦  «         |                     ||¦  «         |                     ¦   «          d S r×   )ÚDEFAULTr^   rÒ   rØ   rÙ   r¿   s         r2   rÁ   zOptionalValue.xmlWriteø   s`   € Ø�D”LÒ Ð Ø�LŠL˜' 4§=¢=°Ñ#7Ô#7Ð8Ñ9Ô9Ð9Ø×Ò˜D %Ñ(Ô(Ð(Ø×ÒÑÔÐÐÐr4   c                 óN   — d|v r|                       |d         ¦  «        S | j        S r×   )rÕ   rß   rº   s       r2   r½   zOptionalValue.xmlReadþ   s+   € Ø�eÐÐØ—?’? 5¨¤>Ñ2Ô2Ð2ØŒ|Ðr4   )r\   rÊ   rË   rß   rÁ   r½   r˜   r4   r2   rÝ   rÝ   õ   s7   € € € € € Ø€Gðð ð ðð ð ð ð r4   rÝ   c                   ó$   — e Zd Zed„ ¦   «         ZdS )ÚIntValuec                 ó"   — t          | d¦  «        S ©Nr   ©rÆ   rÑ   s    r2   rÕ   zIntValue.fromString  s   € å�5˜!‰}Œ}Ðr4   N©r\   rÊ   rË   rÛ   rÕ   r˜   r4   r2   râ   râ     s-   € € € € € Øðð ñ „\ðð ð r4   râ   c                   ó,   — e Zd ZdZd„ Zd„ Zdd„Zd„ ZdS )ÚLongé   c                 ó*   — |                      ¦   «         S r.   ©ÚreadLongr«   s       r2   rŒ   z	Long.read  ó   € Ø�ŠÑ Ô Ð r4   c                 ó,   — |                      |¦  «        S r.   )ÚreadLongArray©r…   r•   rŽ   r    r¡   s        r2   r£   zLong.readArray  ó   € Ø×#Ò# EÑ*Ô*Ð*r4   Nc                 ó0   — |                      |¦  «         d S r.   )Ú	writeLongr·   s         r2   r¯   z
Long.write  ó   € Ø×Ò˜ÑÔÐÐÐr4   c                 ó0   — |                      |¦  «         d S r.   )ÚwriteLongArray©r…   r²   rŽ   r    rZ   s        r2   rµ   zLong.writeArray  ó   € Ø×Ò˜fÑ%Ô%Ð%Ð%Ð%r4   r.   ©r\   rÊ   rË   r¥   rŒ   r£   r¯   rµ   r˜   r4   r2   rè   rè   
  óZ   € € € € € Ø€Jð!ð !ð !ð+ð +ð +ð ð  ð  ð  ð&ð &ð &ð &ð &r4   rè   c                   ó,   — e Zd ZdZd„ Zd„ Zdd„Zd„ ZdS )ÚULongré   c                 ó*   — |                      ¦   «         S r.   ©Ú	readULongr«   s       r2   rŒ   z
ULong.read  ó   € Ø×ÒÑ!Ô!Ð!r4   c                 ó,   — |                      |¦  «        S r.   )ÚreadULongArrayrð   s        r2   r£   zULong.readArray   ó   € Ø×$Ò$ UÑ+Ô+Ð+r4   Nc                 ó0   — |                      |¦  «         d S r.   ©Ú
writeULongr·   s         r2   r¯   zULong.write#  ó   € Ø×Ò˜%Ñ Ô Ð Ð Ð r4   c                 ó0   — |                      |¦  «         d S r.   )ÚwriteULongArrayr÷   s        r2   rµ   zULong.writeArray&  ó   € Ø×Ò˜vÑ&Ô&Ð&Ð&Ð&r4   r.   rù   r˜   r4   r2   rü   rü     óZ   € € € € € Ø€Jð"ð "ð "ð,ð ,ð ,ð!ð !ð !ð !ð'ð 'ð 'ð 'ð 'r4   rü   c                   ó$   — e Zd Zed„ ¦   «         ZdS )ÚFlags32c                 ó   — d| z  S )Nz0x%08Xr˜   rÑ   s    r2   rÒ   zFlags32.toString+  ó   € à˜%ÑÐr4   N)r\   rÊ   rË   rÛ   rÒ   r˜   r4   r2   r  r  *  s-   € € € € € Øð ð  ñ „\ð ð  ð  r4   r  c                   ó   — e Zd ZeZdS )ÚVarIndexN)r\   rÊ   rË   r&   rß   r˜   r4   r2   r  r  0  s   € € € € € Ø €G€G€Gr4   r  c                   ó,   — e Zd ZdZd„ Zd„ Zdd„Zd„ ZdS )ÚShorté   c                 ó*   — |                      ¦   «         S r.   )Ú	readShortr«   s       r2   rŒ   z
Short.read7  r   r4   c                 ó,   — |                      |¦  «        S r.   )ÚreadShortArrayrð   s        r2   r£   zShort.readArray:  r  r4   Nc                 ó0   — |                      |¦  «         d S r.   )Ú
writeShortr·   s         r2   r¯   zShort.write=  r  r4   c                 ó0   — |                      |¦  «         d S r.   )ÚwriteShortArrayr÷   s        r2   rµ   zShort.writeArray@  r
  r4   r.   rù   r˜   r4   r2   r  r  4  r  r4   r  c                   ó,   — e Zd ZdZd„ Zd„ Zdd„Zd„ ZdS )ÚUShortr  c                 ó*   — |                      ¦   «         S r.   ©Ú
readUShortr«   s       r2   rŒ   zUShort.readG  ó   € Ø× Ò Ñ"Ô"Ð"r4   c                 ó,   — |                      |¦  «        S r.   )ÚreadUShortArrayrð   s        r2   r£   zUShort.readArrayJ  s   € Ø×%Ò% eÑ,Ô,Ð,r4   Nc                 ó0   — |                      |¦  «         d S r.   ©ÚwriteUShortr·   s         r2   r¯   zUShort.writeM  ó   € Ø×Ò˜5Ñ!Ô!Ð!Ð!Ð!r4   c                 ó0   — |                      |¦  «         d S r.   )ÚwriteUShortArrayr÷   s        r2   rµ   zUShort.writeArrayP  s   € Ø×Ò Ñ'Ô'Ð'Ð'Ð'r4   r.   rù   r˜   r4   r2   r  r  D  sZ   € € € € € Ø€Jð#ð #ð #ð-ð -ð -ð"ð "ð "ð "ð(ð (ð (ð (ð (r4   r  c                   ó,   — e Zd ZdZd„ Zd„ Zdd„Zd„ ZdS )ÚInt8r   c                 ó*   — |                      ¦   «         S r.   )ÚreadInt8r«   s       r2   rŒ   z	Int8.readW  rí   r4   c                 ó,   — |                      |¦  «        S r.   )ÚreadInt8Arrayrð   s        r2   r£   zInt8.readArrayZ  rñ   r4   Nc                 ó0   — |                      |¦  «         d S r.   )Ú	writeInt8r·   s         r2   r¯   z
Int8.write]  rô   r4   c                 ó0   — |                      |¦  «         d S r.   )ÚwriteInt8Arrayr÷   s        r2   rµ   zInt8.writeArray`  rø   r4   r.   rù   r˜   r4   r2   r,  r,  T  rú   r4   r,  c                   ó,   — e Zd ZdZd„ Zd„ Zdd„Zd„ ZdS )ÚUInt8r   c                 ó*   — |                      ¦   «         S r.   )Ú	readUInt8r«   s       r2   rŒ   z
UInt8.readg  r   r4   c                 ó,   — |                      |¦  «        S r.   )ÚreadUInt8Arrayrð   s        r2   r£   zUInt8.readArrayj  r  r4   Nc                 ó0   — |                      |¦  «         d S r.   )Ú
writeUInt8r·   s         r2   r¯   zUInt8.writem  r  r4   c                 ó0   — |                      |¦  «         d S r.   )ÚwriteUInt8Arrayr÷   s        r2   rµ   zUInt8.writeArrayp  r
  r4   r.   rù   r˜   r4   r2   r6  r6  d  r  r4   r6  c                   ó    — e Zd ZdZd„ Zdd„ZdS )ÚUInt24é   c                 ó*   — |                      ¦   «         S r.   ©Ú
readUInt24r«   s       r2   rŒ   zUInt24.readw  r"  r4   Nc                 ó0   — |                      |¦  «         d S r.   ©ÚwriteUInt24r·   s         r2   r¯   zUInt24.writez  r(  r4   r.   ©r\   rÊ   rË   r¥   rŒ   r¯   r˜   r4   r2   r@  r@  t  s<   € € € € € Ø€Jð#ð #ð #ð"ð "ð "ð "ð "ð "r4   r@  c                   ó   — e Zd Zd„ ZdS )ÚComputedIntc                 ój   — |�0|                      |›d|›�¦  «         |                     ¦   «          d S d S )Nú=)ÚcommentrÙ   r¿   s         r2   rÁ   zComputedInt.xmlWrite  sG   € ØÐØ×Ò¨¨¨¨u¨uÐ5Ñ6Ô6Ð6Ø×ÒÑÔÐÐÐð Ðr4   N©r\   rÊ   rË   rÁ   r˜   r4   r2   rJ  rJ  ~  s#   € € € € € ð ð  ð  ð  ð  r4   rJ  c                   ó   — e Zd ZdS )rO   N©r\   rÊ   rË   r˜   r4   r2   rO   rO   …  ó   € € € € € Ø€Dr4   rO   c                   ó   — e Zd ZdS )rP   NrP  r˜   r4   r2   rP   rP   ‰  rQ  r4   rP   c                   ó   — e Zd ZdS )rQ   NrP  r˜   r4   r2   rQ   rQ   �  rQ  r4   rQ   c                   ó    — e Zd ZdZd„ Zdd„ZdS )ÚTagré   c                 ó*   — |                      ¦   «         S r.   )ÚreadTagr«   s       r2   rŒ   zTag.read”  s   € Ø�~Š~ÑÔÐr4   Nc                 ó0   — |                      |¦  «         d S r.   )ÚwriteTagr·   s         r2   r¯   z	Tag.write—  s   € Ø�Š˜ÑÔÐÐÐr4   r.   rH  r˜   r4   r2   rU  rU  ‘  s<   € € € € € Ø€Jð ð  ð  ðð ð ð ð ð r4   rU  c                   ó0   — e Zd ZdZdZd„ Zd„ Zd„ Zdd„ZdS )	ÚGlyphIDr  ÚHc                 ój   — |                      |                     | j        | j        |¦  «        ¦  «        S r.   )ÚgetGlyphNameManyr£   Útypecoder¥   rð   s        r2   r£   zGlyphID.readArrayŸ  s3   € Ø×$Ò$Ø×Ò˜Tœ]¨D¬O¸UÑCÔCñ
ô 
ð 	
r4   c                 óh   — |                      |                     | j        | j        ¦  «        ¦  «        S r.   )ÚgetGlyphNameÚ	readValuer_  r¥   r«   s       r2   rŒ   zGlyphID.read¤  s*   € Ø× Ò  ×!1Ò!1°$´-ÀÄÑ!QÔ!QÑRÔRÐRr4   c                 ób   — |                      | j        |                     |¦  «        ¦  «         d S r.   )rµ   r_  ÚgetGlyphIDManyr÷   s        r2   rµ   zGlyphID.writeArray§  s.   € Ø×Ò˜$œ-¨×)<Ò)<¸VÑ)DÔ)DÑEÔEÐEÐEÐEr4   Nc                 ób   — |                      | j        |                     |¦  «        ¦  «         d S r.   )Ú
writeValuer_  Ú
getGlyphIDr·   s         r2   r¯   zGlyphID.writeª  s,   € Ø×Ò˜$œ-¨¯ª¸Ñ)?Ô)?Ñ@Ô@Ð@Ð@Ð@r4   r.   )	r\   rÊ   rË   r¥   r_  r£   rŒ   rµ   r¯   r˜   r4   r2   r[  r[  ›  sk   € € € € € Ø€JØ€Hð
ð 
ð 
ð
Sð Sð SðFð Fð FðAð Að Að Að Að Ar4   r[  c                   ó   — e Zd ZdZdZdS )Ú	GlyphID32ré   ÚLN)r\   rÊ   rË   r¥   r_  r˜   r4   r2   ri  ri  ®  s   € € € € € Ø€JØ€H€H€Hr4   ri  c                   ó   — e Zd Zd„ ZdS )ÚNameIDc                 ó¼  — |                      ||d|fgz   ¦  «         |r©|r§|                     d¦  «        }|r�|                     |¦  «        }|                     d¦  «         |r|                     |¦  «         nN|dk    r|                     d¦  «         n2|                     d¦  «         t
                               d|z  ¦  «         |                     ¦   «          d S )Nr³   rK   ú  éÿÿ  ÚNonezmissing from name tablez"name id %d missing from name table)rØ   rY   ÚgetDebugNamer¯   rM  ÚlogÚwarningrÙ   )r…   rÀ   rŽ   r³   rK   r»   Ú	nameTables          r2   rÁ   zNameID.xmlWrite´  sú   € Ø×Ò˜D %¨G°UÐ+;Ð*<Ñ"<Ñ=Ô=Ð=Øð 	N�Eð 	NØŸš Ñ(Ô(ˆIØð 	NØ ×-Ò-¨eÑ4Ô4�Ø—’ Ñ%Ô%Ð%Øð NØ×%Ò% dÑ+Ô+Ð+Ð+Ø˜f’_�_Ø×%Ò% fÑ-Ô-Ð-Ð-à×%Ò%Ð&?Ñ@Ô@Ð@Ý—K’KÐ DÀuÑ LÑMÔMÐMØ×ÒÑÔÐÐÐr4   NrN  r˜   r4   r2   rl  rl  ³  s#   € € € € € ðð ð ð ð r4   rl  c                   ó   — e Zd Zd„ ZdS )Ú	STATFlagsc                 óP  — |                      ||d|fgz   ¦  «         g }|dz  r|                     d¦  «         |dz  r|                     d¦  «         |r=|                     d¦  «         |                     d                     |¦  «        ¦  «         |                     ¦   «          d S )Nr³   r   ÚOlderSiblingFontAttributer  ÚElidableAxisValueNamern  ú )rØ   r^   r¯   rM  ÚjoinrÙ   ©r…   rÀ   rŽ   r³   rK   r»   Úflagss          r2   rÁ   zSTATFlags.xmlWriteÆ  s¸   € Ø×Ò˜D %¨G°UÐ+;Ð*<Ñ"<Ñ=Ô=Ð=ØˆØ�4‰<ð 	6Ø�LŠLÐ4Ñ5Ô5Ð5Ø�4‰<ð 	2Ø�LŠLÐ0Ñ1Ô1Ð1Øð 	/Ø�OŠO˜DÑ!Ô!Ð!Ø×Ò˜cŸhšh u™oœoÑ.Ô.Ð.Ø×ÒÑÔÐÐÐr4   NrN  r˜   r4   r2   rv  rv  Å  s#   € € € € € ð
ð 
ð 
ð 
ð 
r4   rv  c                   ó$   — e Zd Zed„ ¦   «         ZdS )Ú
FloatValuec                 ó    — t          | ¦  «        S r.   )ÚfloatrÑ   s    r2   rÕ   zFloatValue.fromStringÔ  ó   € å�U‰|Œ|Ðr4   Nræ   r˜   r4   r2   r  r  Ó  s-   € € € € € Øðð ñ „\ðð ð r4   r  c                   ó    — e Zd ZdZd„ Zdd„ZdS )Ú
DeciPointsr  c                 ó0   — |                      ¦   «         dz  S ©Né
   r   r«   s       r2   rŒ   zDeciPoints.readÜ  s   € Ø× Ò Ñ"Ô" RÑ'Ð'r4   Nc                 óP   — |                      t          |dz  ¦  «        ¦  «         d S r†  )r'  Úroundr·   s         r2   r¯   zDeciPoints.writeß  s(   € Ø×Ò�5 ¨¡Ñ,Ô,Ñ-Ô-Ð-Ð-Ð-r4   r.   rH  r˜   r4   r2   r„  r„  Ù  s<   € € € € € Ø€Jð(ð (ð (ð.ð .ð .ð .ð .ð .r4   r„  c                   ó„   — e Zd ZeZeZeZeZd„ Zdd„Z	e
d„ ¦   «         Ze
d„ ¦   «         Ze
d„ ¦   «         Ze
d„ ¦   «         ZdS )	ÚBaseFixedValuec                 ób   — |                        t          || j        ¦  «        ¦   «         ¦  «        S r.   )ÚfromIntÚgetattrÚreaderMethodr«   s       r2   rŒ   zBaseFixedValue.readé  s*   € Ø�|Š|Ð>�G F¨DÔ,=Ñ>Ô>Ñ@Ô@ÑAÔAÐAr4   Nc                 óh   —  t          || j        ¦  «        |                      |¦  «        ¦  «         d S r.   )rŽ  ÚwriterMethodÚtoIntr·   s         r2   r¯   zBaseFixedValue.writeì  s1   € Ø*��˜Ô)Ñ*Ô*¨4¯:ª:°eÑ+<Ô+<Ñ=Ô=Ð=Ð=Ð=r4   c                 ó,   — t          || j        ¦  «        S r.   )Úfi2flÚprecisionBits©rf   r³   s     r2   r�  zBaseFixedValue.fromIntï  ó   € å�U˜CÔ-Ñ.Ô.Ð.r4   c                 ó,   — t          || j        ¦  «        S r.   )Úfl2fir•  r–  s     r2   r’  zBaseFixedValue.toIntó  r—  r4   c                 ó,   — t          || j        ¦  «        S r.   )Ústr2flr•  r–  s     r2   rÕ   zBaseFixedValue.fromString÷  ó   € å�e˜SÔ.Ñ/Ô/Ð/r4   c                 ó,   — t          || j        ¦  «        S r.   )Úfl2strr•  r–  s     r2   rÒ   zBaseFixedValue.toStringû  rœ  r4   r.   )r\   rÊ   rË   r�   r¥   r•  r�  r‘  rŒ   r¯   Úclassmethodr�  r’  rÕ   rÒ   r˜   r4   r2   r‹  r‹  ã  sº   € € € € € Ø€JØ"€MØ!€LØ!€LðBð Bð Bð>ð >ð >ð >ð ð/ð /ñ „[ð/ð ð/ð /ñ „[ð/ð ð0ð 0ñ „[ð0ð ð0ð 0ñ „[ð0ð 0ð 0r4   r‹  c                   ó   — e Zd ZdZdZdZdZdS )ÚFixedré   é   rì   ró   N©r\   rÊ   rË   r¥   r•  r�  r‘  r˜   r4   r2   r¡  r¡     s"   € € € € € Ø€JØ€MØ€LØ€L€L€Lr4   r¡  c                   ó   — e Zd ZdZdZdZdZdS )ÚF2Dot14r  é   r  r  Nr£  r˜   r4   r2   r¥  r¥    s"   € € € € € Ø€JØ€MØ€LØ€L€L€Lr4   r¥  c                   ó|   ‡ — e Zd ZdZdZeˆ fd„¦   «         Zeˆ fd„¦   «         Zed„ ¦   «         Zed„ ¦   «         Z	ˆ xZ
S )ÚAngleg        g     €†?c                 ó\   •— t          ¦   «                              |¦  «        | j        z   dz  S ©Né´   )Úsuperr�  Úbias©rf   r³   Ú	__class__s     €r2   r�  zAngle.fromInt  s%   ø€ å‘”—’ Ñ&Ô&¨¬Ñ1°SÑ8Ð8r4   c                 ó\   •— t          ¦   «                              |dz  | j        z
  ¦  «        S rª  )r¬  r’  r­  r®  s     €r2   r’  zAngle.toInt  s$   ø€ å‰wŒw�}Š}˜e c™k¨S¬XÑ5Ñ6Ô6Ð6r4   c                 óZ   — t          t          |¦  «        | j        z  ¦  «        | j        z  S r.   )r   r�  Úfactorr–  s     r2   rÕ   zAngle.fromString  s&   € õ •u˜U‘|”| c¤jÑ0Ñ1Ô1°C´JÑ>Ð>r4   c                 ó,   — t          || j        ¦  «        S r.   )r
   r²  r–  s     r2   rÒ   zAngle.toString!  s   € å*¨5°#´*Ñ=Ô=Ð=r4   )r\   rÊ   rË   r­  r²  rŸ  r�  r’  rÕ   rÒ   Ú__classcell__©r¯  s   @r2   r¨  r¨    s©   ø€ € € € € ð €DØ"€Fàð9ð 9ð 9ð 9ñ „[ð9ð ð7ð 7ð 7ð 7ñ „[ð7ð ð?ð ?ñ „[ð?ð ð>ð >ñ „[ð>ð >ð >ð >ð >r4   r¨  c                   ó   — e Zd ZdZdS )ÚBiasedAngleg      ð?N)r\   rÊ   rË   r­  r˜   r4   r2   r·  r·  &  s   € € € € € ð €D€D€Dr4   r·  c                   ób   — e Zd ZdZd„ Zdd„Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Z	dS )	ÚVersionré   c                 ó.   — |                      ¦   «         }|S r.   rë   )r…   r•   rŽ   r    r³   s        r2   rŒ   zVersion.read/  s   € Ø—’Ñ!Ô!ˆØˆr4   Nc                 óN   — t          |¦  «        }|                     |¦  «         d S r.   )Úfi2veró   r·   s         r2   r¯   zVersion.write3  s'   € Ý�e‘”ˆØ×Ò˜ÑÔÐÐÐr4   c                 ó    — t          | ¦  «        S r.   )Úve2firÑ   s    r2   rÕ   zVersion.fromString7  r‚  r4   c                 ó   — d| z  S )Nú0x%08xr˜   rÑ   s    r2   rÒ   zVersion.toString;  r  r4   c                 ó"   — t          | d¦  «        S )Nr¢  )r™  )Úvs    r2   Ú	fromFloatzVersion.fromFloat?  s   € å�Q˜‰|Œ|Ðr4   r.   )
r\   rÊ   rË   r¥   rŒ   r¯   rÛ   rÕ   rÒ   rÃ  r˜   r4   r2   r¹  r¹  ,  s�   € € € € € Ø€Jðð ð ð ð  ð  ð  ð ðð ñ „\ðð ð ð  ñ „\ð ð ðð ñ „\ðð ð r4   r¹  c                   ó$   — e Zd ZdZdZd„ Zdd„ZdS )ÚChar64z›An ASCII string with up to 64 characters.

    Unused character positions are filled with 0x00 bytes.
    Used in Apple AAT fonts in the `gcid` table.
    é@   c                 ó  — |                      | j        ¦  «        }|                     d¦  «        }|dk    r
|d |…         }t          |dd¬¦  «        }|t          |dd¬¦  «        k    rt                               d|z  ¦  «         |S )Nó    r   ÚasciiÚreplace©ÚencodingÚerrorsÚignorez%replaced non-ASCII characters in "%s")ÚreadDatar¥   Úfindr   rr  rs  )r…   r•   rŽ   r    ÚdataÚzeroPosÚss          r2   rŒ   zChar64.readM  s‡   € Ø�Š˜tœÑ/Ô/ˆØ—)’)˜EÑ"Ô"ˆØ�aŠ<ˆ<Ø˜˜˜”>ˆDÝ�$ °Ð;Ñ;Ô;ˆØ•�d W°XÐ>Ñ>Ô>Ò>Ð>Ý�KŠKÐ?À!ÑCÑDÔDÐDØˆr4   Nc                 óf  — t          |dd¬¦  «        }|t          |dd¬¦  «        k    rt                               d|z  ¦  «         t          |¦  «        | j        k    r$t                               d|| j        fz  ¦  «         |d| j        z  z   d | j        …         }|                     |¦  «         d S )NrÉ  rÊ  rË  rÎ  z&replacing non-ASCII characters in "%s"z$truncating overlong "%s" to %d bytesrÈ  )r   rr  rs  Úlenr¥   Ú	writeData)r…   r²   rŽ   r    r³   r¸   rÑ  s          r2   r¯   zChar64.writeW  sº   € Ý�u w°yÐAÑAÔAˆØ•7˜5¨7¸8ÐDÑDÔDÒDÐDÝ�KŠKÐ@À5ÑHÑIÔIÐIÝˆt‰9Œ9�t”Ò&Ð&Ý�KŠKØ6¸%ÀÄÐ9QÑQñô ð ð �u˜tœÑ.Ñ.Ð0A°$´/Ð0AÔBˆØ×Ò˜ÑÔÐÐÐr4   r.   )r\   rÊ   rË   rÌ   r¥   rŒ   r¯   r˜   r4   r2   rÅ  rÅ  D  sH   € € € € € ðð ð €Jðð ð ð	ð 	ð 	ð 	ð 	ð 	r4   rÅ  c                   ó4   — e Zd Zd„ Zd„ Zdd„Zd„ Zd„ Zd„ ZdS )	rT   c                 óD   — | j         o| j                              |¦  «        S r.   )rX   rœ   r§   s     r2   rœ   zStruct.getRecordSized  s   € ØŒÐH 4¤?×#@Ò#@ÀÑ#HÔ#HÐHr4   c                 óZ   — |                       ¦   «         }|                     ||¦  «         |S r.   )rX   Ú	decompile)r…   r•   rŽ   r    Útables        r2   rŒ   zStruct.readg  s*   € Ø—’Ñ!Ô!ˆØ�Š˜ Ñ%Ô%Ð%Øˆr4   Nc                 ó2   — |                      ||¦  «         d S r.   ©r€   r·   s         r2   r¯   zStruct.writel  s   € Ø�Š�f˜dÑ#Ô#Ð#Ð#Ð#r4   c                 ó¤   — |€4|r0|                      ||dgz   ¦  «         |                     ¦   «          d S d S |                     ||||¬¦  «         d S )N)Úemptyr   )rK   )rØ   rÙ   ÚtoXMLr¿   s         r2   rÁ   zStruct.xmlWriteo  sk   € Øˆ=Øð ð ×#Ò# D¨%°<°.Ñ*@ÑAÔAÐAØ×!Ò!Ñ#Ô#Ð#Ð#Ð#à�à�KŠK˜	 4¨°TˆKÑ:Ô:Ð:Ð:Ð:r4   c                 ó*  — d|v rt          |d         ¦  «        rd S |                      ¦   «         }|                     d¦  «        }|�t          |¦  «        |_        t          |d¦  «         }|r’d}|                     ¦   «         D ]{}|j        rrd}t          |d¦  «        si |_        |j        }	|j	        |	vsJ |j	        |	f¦   «         ‚t          ||j	        d ¦  «         t          |j        |j	        ¦  «        |	|j	        <   Œ||D ]6}
t          |
t          ¦  «        r|
\  }}}|                     ||||¦  «         Œ6Œ7|                     t#          |dd ¦  «        ¬¦  «         |r3|r1|                     ¦   «         D ]}|j        r|j        }	|	|j	        = |	s|`Œ|S )Nrß  ÚFormatÚpostReadFTÚ_propagator)Ú
propagator)r   rX   rY   rÆ   râ  r¦   ÚgetConvertersrƒ   rä  rK   Úsetattrr   Ú__dict__r/   r0   ÚfromXMLÚpopulateDefaultsrŽ  )r…   r»   r¼   rŽ   rÛ  râ  Ú
noPostReadÚcleanPropagationre   rå  ÚelementrK   s               r2   r½   zStruct.xmlRead|  sã  € Ø�eÐÐ¥¨¨w¬Ñ 8Ô 8ÐØ�4Ø—’Ñ!Ô!ˆØ—’˜8Ñ$Ô$ˆØÐÝ˜v™;œ;ˆEŒLå  ¨
Ñ3Ô3Ð3ˆ
Øð 	Và$ÐØ×+Ò+Ñ-Ô-ð Vð V�ØÔ$ð VØ'+Ð$Ý" 4¨Ñ7Ô7ð .Ø+-˜Ô(Ø!%Ô!1�JØœ9¨JÐ6Ð6Ð6¸¼ÀJÐ8OÑ6Ô6Ð6Ý˜E 4¤9¨dÑ3Ô3Ð3Ý,:¸5¼>È4Ì9Ñ,UÔ,U�J˜tœyÑ)øàð 	ð 	ˆGÝ˜'¥5Ñ)Ô)ð Ø'.Ñ$��e˜WØ—’˜d E¨7°DÑ9Ô9Ð9Ð9àà×Ò­'°$¸ÀtÑ*LÔ*LÐÑMÔMÐMàð 	1Øð 1Ø!×/Ò/Ñ1Ô1ð 1ð 1�DØÔ(ð 1Ø%)Ô%5˜
Ø& t¤yÐ1Ø)ð 1Ø $Ð 0øàˆr4   c                 ó0   — dt          | j        ¦  «        z   S )Nz
Struct of )ÚreprrX   ©r…   s    r2   Ú__repr__zStruct.__repr__¦  s   € Ø�d 4¤?Ñ3Ô3Ñ3Ð3r4   r.   )	r\   rÊ   rË   rœ   rŒ   r¯   rÁ   r½   rñ  r˜   r4   r2   rT   rT   c  sw   € € € € € ðIð Ið Iðð ð ð
$ð $ð $ð $ð;ð ;ð ;ð(ð (ð (ðT4ð 4ð 4ð 4ð 4r4   rT   c                   ó   — e Zd Zd„ Zdd„ZdS )rR   c                 ó¢   — |j         }|                      ¦   «         }|                     ||¦  «         |                     ||j        z   ¦  «         |S r.   )r�   rX   rÚ  r‹   r:   )r…   r•   rŽ   r    r�   rÛ  s         r2   rŒ   zStructWithLength.read«  sK   € ØŒjˆØ—’Ñ!Ô!ˆØ�Š˜ Ñ%Ô%Ð%Ø�Š�C˜%Ô,Ñ,Ñ-Ô-Ð-Øˆr4   Nc                 óR  — t          |                     ¦   «         ¦  «        D ]\  }}|j        dk    r nŒt          |j        ¦  «        |z   }t          |t          ¦  «        r|dz  }ddddœ|j                 }	|                     ¦   «         }
|	|_	        | 
                    ||¦  «         |                     ¦   «         |
z
  }|                     ¦   «         }|                     ||||¦  «         |j        |         dd |j        …         k    sJ ‚|                     ¦   «         |j        |<   d S )Nr:   r   éÞ   i­Þ  ì   ï>[= )r   r  ré   ó   Þ­¾ï)r®   ræ  rK   rÕ  Úitemsr/   r   r¥   ÚgetDataLengthr:   r€   ÚgetSubWriterr¯   Ú
getAllData)r…   r²   rŽ   r    r³   r¸   Ú	convIndexre   ÚlengthIndexÚdeadbeefÚbeforeÚlengthÚlengthWriters                r2   r¯   zStructWithLength.write²  s7  € Ý(¨×)<Ò)<Ñ)>Ô)>Ñ?Ô?ð 	ð 	‰OˆI�tØŒy˜NÒ*Ð*Ø�ð +å˜&œ,Ñ'Ô'¨)Ñ3ˆÝ�eÕ5Ñ6Ô6ð 	Ø˜1ÑˆKØ ¨:Ð6Ð6°t´ÔGˆà×%Ò%Ñ'Ô'ˆØ%ˆÔØ�Š�f˜dÑ#Ô#Ð#Ø×%Ò%Ñ'Ô'¨&Ñ0ˆØ×*Ò*Ñ,Ô,ˆØ�
Š
�<  y°&Ñ9Ô9Ð9ØŒ|˜KÔ(Ð,?Ð@QÀ$Ä/Ð@QÔ,RÒRÐRÐRÐRØ$0×$;Ò$;Ñ$=Ô$=ˆŒ�[Ñ!Ð!Ð!r4   r.   ©r\   rÊ   rË   rŒ   r¯   r˜   r4   r2   rR   rR   ª  s7   € € € € € ðð ð ð>ð >ð >ð >ð >ð >r4   rR   c                   ó,   — e Zd ZdZd„ Zd„ Zd„ Zdd„ZdS )r[   r  c                 ó*   — |                      ¦   «         S r.   r   r§   s     r2   Ú
readOffsetzTable.readOffsetÈ  r"  r4   c                 ó0   — |                      d¦  «         d S rä   r&  ©r…   r²   s     r2   ÚwriteNullOffsetzTable.writeNullOffsetË  ó   € Ø×Ò˜1ÑÔÐÐÐr4   c                 óê   — |                       |¦  «        }|dk    rd S |                      ¦   «         }|                     |¦  «        }|j        r||_        ||_        n|                     ||¦  «         |S rä   )r  rX   ÚgetSubReaderr›   r•   rŽ   rÚ  )r…   r•   rŽ   r    ÚoffsetrÛ  s         r2   rŒ   z
Table.readÎ  sv   € Ø—’ Ñ(Ô(ˆØ�QŠ;ˆ;Ø�4Ø—’Ñ!Ô!ˆØ×$Ò$ VÑ,Ô,ˆØŒ9ð 	*Ø!ˆEŒLØˆEŒJˆJà�OŠO˜F DÑ)Ô)Ð)Øˆr4   Nc                 óî   — |€|                       |¦  «         d S |                     ¦   «         }| j        |_        |�||_        |                     || j        ¬¦  «         |                     ||¦  «         d S )N©Ú
offsetSize)r  rú  rK   r¸   ÚwriteSubTabler¥   r€   )r…   r²   rŽ   r    r³   r¸   Ú	subWriters          r2   r¯   zTable.writeÛ  s~   € Øˆ=Ø× Ò  Ñ(Ô(Ð(Ð(Ð(à×+Ò+Ñ-Ô-ˆIØ!œYˆIŒNØÐ&Ø(3�	Ô%Ø× Ò  °t´Ð ÑGÔGÐGØ�MŠM˜) TÑ*Ô*Ð*Ð*Ð*r4   r.   )r\   rÊ   rË   r¥   r  r  rŒ   r¯   r˜   r4   r2   r[   r[   Å  sZ   € € € € € Ø€Jð#ð #ð #ðð ð ðð ð ð	+ð 	+ð 	+ð 	+ð 	+ð 	+r4   r[   c                   ó   — e Zd ZdZd„ Zd„ ZdS )ÚLTableré   c                 ó*   — |                      ¦   «         S r.   rþ   r§   s     r2   r  zLTable.readOffsetê  r   r4   c                 ó0   — |                      d¦  «         d S rä   r  r  s     r2   r  zLTable.writeNullOffsetí  s   € Ø×Ò˜!ÑÔÐÐÐr4   N©r\   rÊ   rË   r¥   r  r  r˜   r4   r2   r  r  ç  s7   € € € € € Ø€Jð"ð "ð "ðð ð ð ð r4   r  c                   ó   — e Zd ZdZd„ Zd„ ZdS )ÚTable24rA  c                 ó*   — |                      ¦   «         S r.   rC  r§   s     r2   r  zTable24.readOffsetõ  r"  r4   c                 ó0   — |                      d¦  «         d S rä   rF  r  s     r2   r  zTable24.writeNullOffsetø  r	  r4   Nr  r˜   r4   r2   r  r  ò  s7   € € € € € Ø€Jð#ð #ð #ðð ð ð ð r4   r  c                   ó$   ‡ — e Zd Zd„ Zˆ fd„Zˆ xZS )r@   c                 óv   — | j         |         |         }|                      | j        | j        | j        |¦  «        S r.   ©r   r¯  rK   rV   rW   ©r…   Ú	tableTypeÚ
lookupTyperX   s       r2   ÚgetConverterzSubStruct.getConverter   ó2   € ØÔ% iÔ0°Ô<ˆ
Ø�~Š~˜dœi¨¬°d´hÀ
ÑKÔKÐKr4   c                 ó`   •— t          t          | ¦  «                             |||d |¦  «         d S r.   )r¬  r@   rÁ   ©r…   rÀ   rŽ   r³   rK   r»   r¯  s         €r2   rÁ   zSubStruct.xmlWrite  s/   ø€ Ý�i˜ÑÔ×'Ò'¨	°4¸ÀÀeÑLÔLÐLÐLÐLr4   ©r\   rÊ   rË   r!  rÁ   r´  rµ  s   @r2   r@   r@   ÿ  sS   ø€ € € € € ðLð Lð LðMð Mð Mð Mð Mð Mð Mð Mð Mr4   r@   c                   ó$   ‡ — e Zd Zd„ Zˆ fd„Zˆ xZS )r>   c                 óv   — | j         |         |         }|                      | j        | j        | j        |¦  «        S r.   r  r  s       r2   r!  zSubTable.getConverter	  r"  r4   c                 ó`   •— t          t          | ¦  «                             |||d |¦  «         d S r.   )r¬  r>   rÁ   r$  s         €r2   rÁ   zSubTable.xmlWrite  s/   ø€ Ý�h˜ÑÔ×&Ò& y°$¸¸tÀUÑKÔKÐKÐKÐKr4   r%  rµ  s   @r2   r>   r>     sS   ø€ € € € € ðLð Lð LðLð Lð Lð Lð Lð Lð Lð Lð Lr4   r>   c                   ó   — e Zd Zdd„ZdS )r?   Nc                 óR   — d|_         t                               | |||||¦  «         d S )NT)Ú	Extensionr[   r¯   r·   s         r2   r¯   zExtSubTable.write  s,   € ØˆÔÝ�Š�D˜& $¨	°5¸+ÑFÔFÐFÐFÐFr4   r.   )r\   rÊ   rË   r¯   r˜   r4   r2   r?   r?     s.   € € € € € ðGð Gð Gð Gð Gð Gr4   r?   c                   ó   — e Zd Zd„ ZdS )rA   c                 ó�   — | j                              || j        ¦  «        }|                      | j        | j        | j        |¦  «        S r.   )rJ   rY   r]   r¯  rK   rV   rW   )r…   Ú
featureTagrX   s      r2   r!  zFeatureParams.getConverter  s;   € ØÔ+×/Ò/°
¸DÔ<UÑVÔVˆ
Ø�~Š~˜dœi¨¬°d´hÀ
ÑKÔKÐKr4   N)r\   rÊ   rË   r!  r˜   r4   r2   rA   rA     s(   € € € € € ðLð Lð Lð Lð Lr4   rA   c                   ó.   — e Zd ZdZdddœd„Zd„ Zdd„ZdS )	r7   r  Nrj   rE   c                óv   — t                                | |||||¬¦  «         d|d         dk    rdndz   | _        d S )NrE   r7   éÿÿÿÿÚ2Ú1)ri   r†   Úwhichr„   s         r2   r†   zValueFormat.__init__   sN   € Ý×ÒØ�$˜  Z¸[ð 	ñ 	
ô 	
ð 	
ð #¨T°"¬X¸ª_¨_ c cÀ#ÑFˆŒ
ˆ
ˆ
r4   c                 ó\   — |                      ¦   «         }t          |¦  «        || j        <   |S r.   )r!  r   r4  ©r…   r•   rŽ   r    Úformats        r2   rŒ   zValueFormat.read&  s,   € Ø×"Ò"Ñ$Ô$ˆÝ/°Ñ7Ô7ˆˆtŒzÑØˆr4   c                 ó^   — |                      |¦  «         t          |¦  «        || j        <   d S r.   )r'  r   r4  )r…   r²   rŽ   r    r7  r¸   s         r2   r¯   zValueFormat.write+  s0   € Ø×Ò˜6Ñ"Ô"Ð"Ý/°Ñ7Ô7ˆˆtŒzÑÐÐr4   r.   )r\   rÊ   rË   r¥   r†   rŒ   r¯   r˜   r4   r2   r7   r7     sb   € € € € € Ø€JðGÈ"ð Gð Gð Gð Gð Gðð ð ð
8ð 8ð 8ð 8ð 8ð 8r4   r7   c                   ó.   — e Zd Zd„ Zd„ Zdd„Zd„ Zd„ ZdS )ÚValueRecordc                 ó<   — dt          || j                 ¦  «        z  S ©Nr  )rÕ  r4  r§   s     r2   rœ   zValueRecord.getRecordSize1  s   € Ø•3�v˜dœjÔ)Ñ*Ô*Ñ*Ð*r4   c                 óD   — || j                                       ||¦  «        S r.   )r4  ÚreadValueRecordr«   s       r2   rŒ   zValueRecord.read4  s   € Ø�d”jÔ!×1Ò1°&¸$Ñ?Ô?Ð?r4   Nc                 óJ   — || j                                       |||¦  «         d S r.   )r4  ÚwriteValueRecordr·   s         r2   r¯   zValueRecord.write7  s'   € ØˆtŒzÔ×+Ò+¨F°D¸%Ñ@Ô@Ð@Ð@Ð@r4   c                 óH   — |€d S |                      ||| j        |¦  «         d S r.   )rà  rK   r¿   s         r2   rÁ   zValueRecord.xmlWrite:  s,   € Øˆ=ØˆDà�KŠK˜	 4¨¬°EÑ:Ô:Ð:Ð:Ð:r4   c                 óV   — ddl m}  |¦   «         }|                     d |||¦  «         |S )Nr   )r:  )ÚotBaser:  ré  )r…   r»   r¼   rŽ   r:  r³   s         r2   r½   zValueRecord.xmlRead@  s<   € Ø'Ð'Ð'Ð'Ð'Ð'à�‘”ˆØ�Š�d˜E 7¨DÑ1Ô1Ð1Øˆr4   r.   )r\   rÊ   rË   rœ   rŒ   r¯   rÁ   r½   r˜   r4   r2   r:  r:  0  sk   € € € € € ð+ð +ð +ð@ð @ð @ðAð Að Að Að;ð ;ð ;ðð ð ð ð r4   r:  c                   óœ   — e Zd ZdZddœd„Zd„ Zdd„Zed„ ¦   «         Zd	„ Z	d
„ Z
d„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )Ú	AATLookupr‡  rj   rE   c                óò   — t                                | |||||¬¦  «         t          | j        t          ¦  «        r|                      dd d ¬¦  «        | _        d S t          dd d | j        ¬¦  «        | _        d S )NrE   ÚValue)rK   rV   rW   )rK   rV   rW   rX   )ri   r†   Ú
issubclassrX   rÏ   Ú	converterr[   r„   s         r2   r†   zAATLookup.__init__K  s„   € Ý×ÒØ�$˜  Z¸[ð 	ñ 	
ô 	
ð 	
õ �d”o¥{Ñ3Ô3ð 	Ø!Ÿ_š_°'À$ÈD˜_ÑQÔQˆDŒNˆNˆNå"Ø T¨tÀÄðñ ô ˆDŒNˆNˆNr4   c                 ó\  — |                      ¦   «         }|dk    r|                      ||¦  «        S |dk    r|                      ||¦  «        S |dk    r|                      ||¦  «        S |dk    r|                      ||¦  «        S |dk    r|                      ||¦  «        S J d|z  ¦   «         ‚)Nr   r  ré   é   rˆ   Fzunsupported lookup format: %d)r!  ÚreadFormat0ÚreadFormat2ÚreadFormat4ÚreadFormat6ÚreadFormat8r6  s        r2   rŒ   zAATLookup.readV  sÂ   € Ø×"Ò"Ñ$Ô$ˆØ�QŠ;ˆ;Ø×#Ò# F¨DÑ1Ô1Ð1Ø�qŠ[ˆ[Ø×#Ò# F¨DÑ1Ô1Ð1Ø�qŠ[ˆ[Ø×#Ò# F¨DÑ1Ô1Ð1Ø�qŠ[ˆ[Ø×#Ò# F¨DÑ1Ô1Ð1Ø�qŠ[ˆ[Ø×#Ò# F¨DÑ1Ô1Ð1àBÐ9¸FÑBÑBÔBÐBr4   Nc                 ó.  ‡— t          t          ˆfd„|                     ¦   «         D ¦   «         ¦  «        ¦  «        }t          t          t          d |                      |‰|¦  «        |                      |‰|¦  «        |                      |‰|¦  «        |                      |‰|¦  «        g¦  «        ¦  «        ¦  «        }|d         \  }}	}
|                     ¦   «         } |
¦   «          |                     ¦   «         |z
  }||k    sJ d|	||fz  ¦   «         ‚d S )Nc                 óD   •— g | ]\  }}‰                      |¦  «        |f‘ŒS r˜   ©rg  )r™   ÚglyphÚvalrŽ   s      €r2   ú
<listcomp>z#AATLookup.write.<locals>.<listcomp>g  s.   ø€ ÐRÐRÐR±j°e¸S�T—_’_ UÑ+Ô+¨SÐ1ÐRÐRÐRr4   r   z;AATLookup format %d claimed to write %d bytes, but wrote %d)	ÚlistÚsortedrø  ÚfilterÚbuildFormat0ÚbuildFormat2ÚbuildFormat6ÚbuildFormat8rù  )r…   r²   rŽ   r    r³   r¸   rZ   ÚformatsÚdataSizeÚlookupFormatÚwriteMethodr�   Ú
actualSizes     `          r2   r¯   zAATLookup.writee  s;  ø€ ÝÝÐRÐRÐRÐRÀEÇKÂKÁMÄMÐRÑRÔRÑSÔSñ
ô 
ˆõ ÝÝØà×)Ò)¨&°$¸Ñ?Ô?Ø×)Ò)¨&°$¸Ñ?Ô?Ø×)Ò)¨&°$¸Ñ?Ô?Ø×)Ò)¨&°$¸Ñ?Ô?ð	ñô ñ
ô 
ñ
ô 
ˆð /6°a¬jÑ+ˆ�, Ø×"Ò"Ñ$Ô$ˆØˆ‰ŒˆØ×)Ò)Ñ+Ô+¨cÑ1ˆ
à˜(Ò"Ð"Ð"ØHØØØðL
ñ 
ñ #Ô"Ð"Ð"Ð"r4   c                 ó  — |                       |¦  «         |                       |¦  «         t          ||¬¦  «        \  }}}|                       |¦  «         |                       |¦  «         |                       |¦  «         d S )N)ÚnÚitemSize)r'  r   )r²   ÚnumUnitsÚunitSizeÚsearchRangeÚentrySelectorÚ
rangeShifts         r2   ÚwriteBinSearchHeaderzAATLookup.writeBinSearchHeader…  sŽ   € à×Ò˜8Ñ$Ô$Ð$Ø×Ò˜8Ñ$Ô$Ð$Ý1?Ø ð2
ñ 2
ô 2
Ñ.ˆ�] Jð 	×Ò˜;Ñ'Ô'Ð'Ø×Ò˜=Ñ)Ô)Ð)Ø×Ò˜:Ñ&Ô&Ð&Ð&Ð&r4   c                 ó°   ‡ ‡‡‡— t          ‰                     ¦   «         ¦  «        }t          ‰¦  «        |k    rd S ‰ j        j        }d||z  z   dˆˆ ˆˆfd„fS )Nr  r   c                  ó2   •— ‰                      ‰‰ ‰¦  «        S r.   )ÚwriteFormat0©rŽ   r…   rZ   r²   s   €€€€r2   r3   z(AATLookup.buildFormat0.<locals>.<lambda>˜  ó   ø€ �D×%Ò% f¨d°FÑ;Ô;€ r4   )rÕ  ÚgetGlyphOrderrI  r¥   )r…   r²   rŽ   rZ   Ú	numGlyphsÚ	valueSizes   ````  r2   rZ  zAATLookup.buildFormat0�  sn   øøøø€ Ý˜×*Ò*Ñ,Ô,Ñ-Ô-ˆ	Ýˆv‰;Œ;˜)Ò#Ð#Ø�4Ø”NÔ-ˆ	à�	˜IÑ%Ñ%ØØ;Ð;Ð;Ð;Ð;Ð;Ð;ð
ð 	
r4   c                 ó~   — |                      d¦  «         |D ]$\  }}| j                             ||d |d ¬¦  «         Œ%d S )Nr   ©r    r³   r¸   )r'  rI  r¯   )r…   r²   rŽ   rZ   ÚglyphID_r³   s         r2   rn  zAATLookup.writeFormat0›  sb   € Ø×Ò˜1ÑÔÐØ%ð 	ð 	‰OˆH�eØŒN× Ò Ø˜¨°EÀtð !ñ ô ð ð ð	ð 	r4   c                 óP  ‡ ‡‡‡— |d         \  }}|}g Š|dd …         D ]5\  }}||dz   k    s||k    r‰                      |||f¦  «         |x}}|}Œ3|}Œ6‰                      |||f¦  «         ‰ j        j        }	t          ‰¦  «        dz   |	dz   }}
d‰ j        z   |
|z  z   dˆˆˆ ˆfd„fS )Nr   r   ré   r  c                  ó2   •— ‰                      ‰‰ ‰¦  «        S r.   )ÚwriteFormat2)rŽ   Úsegmentsr…   r²   s   €€€€r2   r3   z(AATLookup.buildFormat2.<locals>.<lambda>³  s   ø€ �D×%Ò% f¨d°HÑ=Ô=€ r4   )r^   rI  r¥   rÕ  ÚBIN_SEARCH_HEADER_SIZE)r…   r²   rŽ   rZ   ÚsegStartÚsegValueÚsegEndÚglyphIDÚcurValuers  rf  rg  rz  s   ```         @r2   r[  zAATLookup.buildFormat2¢  sö   øøøø€ Ø# AœYÑˆ�(ØˆØˆØ!'¨¨¨¤ð 	!ð 	!ÑˆG�XØ˜& 1™*Ò$Ð$¨°HÒ(<Ð(<Ø—’ ¨6°8Ð <Ñ=Ô=Ð=Ø$+Ð+�˜6Ø#��à ��Ø�Š˜ 6¨8Ð4Ñ5Ô5Ð5Ø”NÔ-ˆ	Ý  ™]œ]¨QÑ.°	¸A±�(ˆà�Ô+Ñ+¨h¸Ñ.AÑAØØ=Ð=Ð=Ð=Ð=Ð=Ð=ð
ð 	
r4   c                 óÆ  — |                      d¦  «         | j        j        }t          |¦  «        |dz   }}|                      |||¦  «         |D ]O\  }}}	|                      |¦  «         |                      |¦  «         | j                             ||d |	d ¬¦  «         ŒP|                      d¦  «         |                      d¦  «         |                     d|z  ¦  «         d S )Nr  ré   ru  ro  rÈ  ©r'  rI  r¥   rÕ  rk  r¯   rÖ  )
r…   r²   rŽ   rz  rs  rf  rg  Ú
firstGlyphÚ	lastGlyphr³   s
             r2   ry  zAATLookup.writeFormat2¶  s  € Ø×Ò˜1ÑÔÐØ”NÔ-ˆ	Ý  ™]œ]¨I¸©M�(ˆØ×!Ò! &¨(°HÑ=Ô=Ð=Ø,4ð 	ð 	Ñ(ˆJ˜	 5Ø×Ò˜yÑ)Ô)Ð)Ø×Ò˜zÑ*Ô*Ð*ØŒN× Ò Ø˜¨°EÀtð !ñ ô ð ð ð 	×Ò˜6Ñ"Ô"Ð"Ø×Ò˜6Ñ"Ô"Ð"Ø×Ò˜ 9Ñ,Ñ-Ô-Ð-Ð-Ð-r4   c                 ó‚   ‡ ‡‡‡— ‰ j         j        }t          ‰¦  «        |dz   }}d‰ j        z   |dz   |z  z   dˆˆ ˆˆfd„fS )Nr  r   rK  c                  ó2   •— ‰                      ‰‰ ‰¦  «        S r.   )ÚwriteFormat6ro  s   €€€€r2   r3   z(AATLookup.buildFormat6.<locals>.<lambda>Ë  rp  r4   )rI  r¥   rÕ  r{  )r…   r²   rŽ   rZ   rs  rf  rg  s   ````   r2   r\  zAATLookup.buildFormat6Å  s^   øøøø€ Ø”NÔ-ˆ	Ý  ™[œ[¨)°a©-�(ˆà�Ô+Ñ+¨x¸!©|¸xÑ.GÑGØØ;Ð;Ð;Ð;Ð;Ð;Ð;ð
ð 	
r4   c                 óp  — |                      d¦  «         | j        j        }t          |¦  «        |dz   }}|                      |||¦  «         |D ]9\  }}|                      |¦  «         | j                             ||d |d ¬¦  «         Œ:|                      d¦  «         |                     d|z  ¦  «         d S )NrK  r  ru  ro  rÈ  r‚  )	r…   r²   rŽ   rZ   rs  rf  rg  r  r³   s	            r2   r‡  zAATLookup.writeFormat6Î  sÖ   € Ø×Ò˜1ÑÔÐØ”NÔ-ˆ	Ý  ™[œ[¨)°a©-�(ˆØ×!Ò! &¨(°HÑ=Ô=Ð=Ø$ð 	ð 	‰NˆG�UØ×Ò˜wÑ'Ô'Ð'ØŒN× Ò Ø˜¨°EÀtð !ñ ô ð ð ð 	×Ò˜6Ñ"Ô"Ð"Ø×Ò˜ 9Ñ,Ñ-Ô-Ð-Ð-Ð-r4   c                 óÌ   ‡ ‡‡‡— ‰d         d         ‰d         d         }}t          ‰¦  «        ||z
  dz   k    rd S ‰ j        j        }dt          ‰¦  «        |z  z   dˆˆ ˆˆfd„fS )Nr   r1  r   rK  rˆ   c                  ó2   •— ‰                      ‰‰ ‰¦  «        S r.   )ÚwriteFormat8ro  s   €€€€r2   r3   z(AATLookup.buildFormat8.<locals>.<lambda>ã  rp  r4   )rÕ  rI  r¥   )r…   r²   rŽ   rZ   Ú
minGlyphIDÚ
maxGlyphIDrs  s   ````   r2   r]  zAATLookup.buildFormat8Û  s~   øøøø€ Ø!'¨¤¨1¤¨v°b¬z¸!¬}�Jˆ
Ýˆv‰;Œ;˜* zÑ1°AÑ5Ò5Ð5Ø�4Ø”NÔ-ˆ	à•�F‘”˜iÑ'Ñ'ØØ;Ð;Ð;Ð;Ð;Ð;Ð;ð
ð 	
r4   c                 ó  — |d         d         }|                      d¦  «         |                      |¦  «         |                      t          |¦  «        ¦  «         |D ]$\  }}| j                             ||d |d ¬¦  «         Œ%d S )Nr   rˆ   ru  )r'  rÕ  rI  r¯   )r…   r²   rŽ   rZ   ÚfirstGlyphIDÚ_r³   s          r2   r‹  zAATLookup.writeFormat8æ  s�   € Ø˜a”y ”|ˆØ×Ò˜1ÑÔÐØ×Ò˜<Ñ(Ô(Ð(Ø×Ò�3˜v™;œ;Ñ'Ô'Ð'Øð 	ð 	‰HˆAˆuØŒN× Ò Ø˜¨°EÀtð !ñ ô ð ð ð	ð 	r4   c                 ó¸   ‡— t          ‰                     ¦   «         ¦  «        }| j                             |‰d |¬¦  «        }ˆfd„t	          |¦  «        D ¦   «         S )N©r    r¡   c                 óB   •— i | ]\  }}‰                      |¦  «        |“ŒS r˜   ©ra  )r™   Úkr³   rŽ   s      €r2   ú
<dictcomp>z)AATLookup.readFormat0.<locals>.<dictcomp>ó  s-   ø€ ÐLÐLÐL±°°5�×!Ò! !Ñ$Ô$ eÐLÐLÐLr4   )rÕ  rq  rI  r£   r®   )r…   r•   rŽ   rr  rÑ  s     `  r2   rL  zAATLookup.readFormat0ð  sZ   ø€ Ý˜×*Ò*Ñ,Ô,Ñ-Ô-ˆ	ØŒ~×'Ò'¨°ÀÈIÐ'ÑVÔVˆØLÐLÐLÐL½IÀd¹O¼OÐLÑLÔLÐLr4   c                 óú  — i }|j         dz
  }|                     ¦   «         |                     ¦   «         }}|d| j        j        z   k    s
J |¦   «         ‚t	          |¦  «        D ]™}|                     |||z  z   dz   ¦  «         |                     ¦   «         }|                     ¦   «         }	| j                             ||d ¬¦  «        }
|dk    r.t	          |	|dz   ¦  «        D ]}|
||                     |¦  «        <   ŒŒš|S )Nr  ré   é   ©r    ro  r   ©r�   r!  rI  r¥   rž   r‹   rŒ   ra  )r…   r•   rŽ   Úmappingr�   rg  rf  r�   ÚlastÚfirstr³   r•  s               r2   rM  zAATLookup.readFormat2õ  s  € ØˆØŒj˜1‰nˆØ#×.Ò.Ñ0Ô0°&×2CÒ2CÑ2EÔ2E�(ˆØ˜1˜tœ~Ô8Ñ8Ò8Ð8Ð8¸(Ñ8Ô8Ð8Ý�x‘”ð 	:ð 	:ˆAØ�KŠK˜˜a (™lÑ*¨RÑ/Ñ0Ô0Ð0Ø×$Ò$Ñ&Ô&ˆDØ×%Ò%Ñ'Ô'ˆEØ”N×'Ò'¨°ÀÐ'ÑEÔEˆEØ�vŠ~ˆ~Ý˜u d¨Q¡hÑ/Ô/ð :ð :�AØ49�G˜D×-Ò-¨aÑ0Ô0Ñ1Ð1øØˆr4   c                 óp  — i }|j         dz
  }|                     ¦   «         }|dk    s
J |¦   «         ‚t          |                     ¦   «         ¦  «        D ]ã}|                     |||z  z   dz   ¦  «         |                     ¦   «         }|                     ¦   «         }|                     ¦   «         }	|dk    r�|                     d¦  «        }
|
                     ||	z   ¦  «         | j                             |
|d ||z
  dz   ¬¦  «        }t          |¦  «        D ] \  }}|||                     ||z   ¦  «        <   Œ!Œä|S )Nr  rK  r˜  ro  r   r   r’  )	r�   r!  rž   r‹   r  rI  r£   r®   ra  )r…   r•   rŽ   r›  r�   rg  r�   rœ  r�  r  Ú
dataReaderrÑ  r•  rÂ  s                 r2   rN  zAATLookup.readFormat4  sL  € ØˆØŒj˜1‰nˆØ×$Ò$Ñ&Ô&ˆØ˜1Š}ˆ}ˆ}˜h‰}Œ}ˆ}Ý�v×(Ò(Ñ*Ô*Ñ+Ô+ð 	>ð 	>ˆAØ�KŠK˜˜a (™lÑ*¨RÑ/Ñ0Ô0Ð0Ø×$Ò$Ñ&Ô&ˆDØ×%Ò%Ñ'Ô'ˆEØ×&Ò&Ñ(Ô(ˆFØ�vŠ~ˆ~Ø#×0Ò0°Ñ3Ô3�
Ø—’  f¡Ñ-Ô-Ð-Ø”~×/Ò/Ø °¸DÀ5¹LÈ1Ñ<Lð 0ñ ô �õ & d™OœOð >ð >‘D�A�qØ<=�G˜D×-Ò-¨e°a©iÑ8Ô8Ñ9Ð9øØˆr4   c                 ó¢  — i }|j         dz
  }|                     ¦   «         }|d| j        j        z   k    s
J |¦   «         ‚t	          |                     ¦   «         ¦  «        D ]o}|                     |||z  z   dz   ¦  «         |                     ¦   «         }| j                             ||d ¬¦  «        }|dk    r|||                     |¦  «        <   Œp|S )Nr  r˜  r™  ro  rš  )	r…   r•   rŽ   r›  r�   rg  r�   r  r³   s	            r2   rO  zAATLookup.readFormat6  sß   € ØˆØŒj˜1‰nˆØ×$Ò$Ñ&Ô&ˆØ˜1˜tœ~Ô8Ñ8Ò8Ð8Ð8¸(Ñ8Ô8Ð8Ý�v×(Ò(Ñ*Ô*Ñ+Ô+ð 	<ð 	<ˆAØ�KŠK˜˜a (™lÑ*¨RÑ/Ñ0Ô0Ð0Ø×'Ò'Ñ)Ô)ˆGØ”N×'Ò'¨°ÀÐ'ÑEÔEˆEØ˜&Ò Ð Ø6;�˜×)Ò)¨'Ñ2Ô2Ñ3øØˆr4   c                 óÊ   ‡‡— |                      ¦   «         Š|                      ¦   «         }| j                             |‰d |¬¦  «        }ˆˆfd„t          |¦  «        D ¦   «         S )Nr’  c                 óH   •— i | ]\  }}‰                      ‰|z   ¦  «        |“ŒS r˜   r”  )r™   r•  r³   r�  rŽ   s      €€r2   r–  z)AATLookup.readFormat8.<locals>.<dictcomp>)  s1   ø€ ÐVÐVÐV¹
¸¸E�×!Ò! %¨!¡)Ñ,Ô,¨eÐVÐVÐVr4   )r!  rI  r£   r®   )r…   r•   rŽ   r¡   rÑ  r�  s     `  @r2   rP  zAATLookup.readFormat8%  sh   øø€ Ø×!Ò!Ñ#Ô#ˆØ×!Ò!Ñ#Ô#ˆØŒ~×'Ò'¨°ÀÈEÐ'ÑRÔRˆØVÐVÐVÐVÐVÅiÐPTÁoÄoÐVÑVÔVÐVr4   c                 ó    — i }|D ]H}t          |t          ¦  «        r1|\  }}}|dk    r%| j                             |||¦  «        ||d         <   ŒI|S )NÚLookuprT  )r/   r0   rI  r½   )	r…   r»   r¼   rŽ   r³   rí  rK   ÚaÚ
eltContents	            r2   r½   zAATLookup.xmlRead+  sj   € ØˆØð 	Tð 	TˆGÝ˜'¥5Ñ)Ô)ð TØ&-Ñ#��a˜Ø˜8Ò#Ð#Ø(,¬×(>Ò(>¸qÀ*ÈdÑ(SÔ(S�E˜!˜Gœ*Ñ%øØˆr4   c           	      ó>  — |                      ||¦  «         |                     ¦   «          t          |                     ¦   «         ¦  «        D ]'\  }}| j                             |||dd|fg¬¦  «         Œ(|                     |¦  «         |                     ¦   «          d S )Nr¤  rT  )r³   rK   r»   )ÚbegintagrÙ   rX  rø  rI  rÁ   Úendtag)r…   rÀ   rŽ   r³   rK   r»   rT  s          r2   rÁ   zAATLookup.xmlWrite4  s²   € Ø×Ò˜4 Ñ'Ô'Ð'Ø×ÒÑÔÐÝ" 5§;¢;¡=¤=Ñ1Ô1ð 	ð 	‰LˆE�5ØŒN×#Ò#Ø˜4 u°8ÀWÈeÐDTÐCUð $ñ ô ð ð ð 	×Ò˜ÑÔÐØ×ÒÑÔÐÐÐr4   r.   )r\   rÊ   rË   r{  r†   rŒ   r¯   rÛ   rk  rZ  rn  r[  ry  r\  r‡  r]  r‹  rL  rM  rN  rO  rP  r½   rÁ   r˜   r4   r2   rE  rE  H  s_  € € € € € ØÐàEGð 	ð 	ð 	ð 	ð 	ðCð Cð Cð
ð 
ð 
ð 
ð@ ð'ð 'ñ „\ð'ð	
ð 	
ð 	
ðð ð ð
ð 
ð 
ð(.ð .ð .ð
ð 
ð 
ð.ð .ð .ð	
ð 	
ð 	
ðð ð ðMð Mð Mð
ð ð ðð ð ð(ð ð ðWð Wð Wðð ð ðð ð ð ð r4   rE  c                   ó(   — e Zd Zd„ Zdd„Zd„ Zd„ ZdS )ÚAATLookupWithDataOffsetc                 ó¢  — |                      ¦   «         }|                      ¦   «         }|                     |¦  «        }t          dd d t          ¦  «        }|                     |||¦  «        }i }	|                     ¦   «         D ]L\  }
}|                     ||z   ¦  «        }|                      ¦   «         }|                     ||¦  «         ||	|
<   ŒM|	S ©NÚDataOffsets)rÿ   r  rE  r  rŒ   rø  rX   rÚ  )r…   r•   rŽ   r    ÚlookupOffsetÚ
dataOffsetÚlookupReaderÚlookupÚoffsetsÚresultrT  r  rŸ  Úitems                 r2   rŒ   zAATLookupWithDataOffset.readG  sÊ   € Ø×'Ò'Ñ)Ô)ˆØ×%Ò%Ñ'Ô'ˆ
Ø×*Ò*¨<Ñ8Ô8ˆÝ˜=¨$°µfÑ=Ô=ˆØ—+’+˜l¨D°)Ñ<Ô<ˆØˆØ$Ÿ]š]™_œ_ð 	!ð 	!‰MˆE�6Ø×,Ò,¨V°jÑ-@ÑAÔAˆJØ—?’?Ñ$Ô$ˆDØ�NŠN˜: tÑ,Ô,Ð,Ø ˆF�5‰MˆMØˆr4   Nc                 ó¢  — i i d}}}g }	t          ||j        ¬¦  «        D ]�}
t          ¦   «         }||
                              ||¦  «         |                     ¦   «         }|                     |d ¦  «        }|d k    r.|}|t          |¦  «        z   }|||<   |	                     |¦  «         |||
<   Œ�|                     ¦   «         }t          dd d t          ¦  «        }|                     ||||d ¦  «         |                     ¦   «         }|                     |d¬¦  «         |                     |d¬¦  «         |	D ]}|                     |¦  «         Œd S )Nr   )Úkeyr®  ré   r  )rX  rg  r   r€   rû  rY   rÕ  r^   rú  rE  r  r¯   r  rÖ  )r…   r²   rŽ   r    r³   r¸   ÚoffsetByGlyphÚoffsetByDataÚdataLenÚcompiledDatarT  r  rÑ  r  ÚlookupWriterr²  Ú
dataWriterÚds                     r2   r¯   zAATLookupWithDataOffset.writeU  sy  € ð 02°2°q W�|ˆØˆÝ˜E t¤Ð7Ñ7Ô7ð 
	*ð 
	*ˆEÝ%™œˆIØ�%ŒL× Ò  ¨DÑ1Ô1Ð1Ø×'Ò'Ñ)Ô)ˆDØ!×%Ò% d¨DÑ1Ô1ˆFØ˜Š~ˆ~Ø �Ø!¥C¨¡I¤IÑ-�Ø%+�˜TÑ"Ø×#Ò# DÑ)Ô)Ð)Ø#)ˆM˜%Ñ Ð ð ×*Ò*Ñ,Ô,ˆÝ˜=¨$°µfÑ=Ô=ˆØ�Š�\ 4¨°MÀ4ÑHÔHÐHà×(Ò(Ñ*Ô*ˆ
Ø×Ò˜\°aÐÑ8Ô8Ð8Ø×Ò˜Z°AÐÑ6Ô6Ð6Øð 	$ð 	$ˆAØ× Ò  Ñ#Ô#Ð#Ð#ð	$ð 	$r4   c                 ó^   — t          dd d | j        ¦  «        }|                     |||¦  «        S r­  )rE  rX   r½   )r…   r»   r¼   rŽ   r²  s        r2   r½   zAATLookupWithDataOffset.xmlReadx  s-   € Ý˜=¨$°°d´oÑFÔFˆØ�~Š~˜e W¨dÑ3Ô3Ð3r4   c                 óf   — t          dd d | j        ¦  «        }|                     |||||¦  «         d S r­  )rE  rX   rÁ   )r…   rÀ   rŽ   r³   rK   r»   r²  s          r2   rÁ   z AATLookupWithDataOffset.xmlWrite|  s7   € Ý˜=¨$°°d´oÑFÔFˆØ�Š˜	 4¨°°eÑ<Ô<Ð<Ð<Ð<r4   r.   ©r\   rÊ   rË   rŒ   r¯   r½   rÁ   r˜   r4   r2   r«  r«  F  sV   € € € € € ðð ð ð!$ð !$ð !$ð !$ðF4ð 4ð 4ð=ð =ð =ð =ð =r4   r«  c                   ó†   — e Zd ZdddddœZd„ e                     ¦   «         D ¦   «         Zddd	œd
„Zd„ Zd„ Zd„ Z	d„ Z
dd„ZdS )ÚMorxSubtableConverterÚLayoutOrderÚReversedLayoutOrderÚLogicalOrderÚReversedLogicalOrder))FF)TF©FT)TTc                 ó   — i | ]\  }}||“Œ	S r˜   r˜   )r™   r·  rU  s      r2   r–  z MorxSubtableConverter.<dictcomp>Š  s   € Ð"WÐ"WÐ"W±°°S 3¨Ð"WÐ"WÐ"Wr4   Nrj   rE   c                óF   — t                                | |||||¬¦  «         d S ©NrE   )ri   r†   r„   s         r2   r†   zMorxSubtableConverter.__init__Œ  s6   € Ý×ÒØ�$˜  Z¸[ð 	ñ 	
ô 	
ð 	
ð 	
ð 	
r4   c                 ó\   — |dz  dk    r	d|_         d S |dz  dk    r	d|_         d S d|_         d S )Né    r   ÚAnyé€   ÚVerticalÚ
Horizontal)ÚTextDirection)r…   r}  Úsubtables      r2   Ú"_setTextDirectionFromCoverageFlagsz8MorxSubtableConverter._setTextDirectionFromCoverageFlags‘  sJ   € Ø�D‰L˜QÒÐØ%*ˆHÔ"Ð"Ð"Ø�d‰l˜qÒ Ð Ø%/ˆHÔ"Ð"Ð"à%1ˆHÔ"Ð"Ð"r4   c                 ó‚  — |j         }t          ¦   «         }|                     ¦   «         |_        |                     ¦   «         }|dz  dk    |dz  dk    f}| j        |         |_        |                      ||¦  «         |                     ¦   «         |_	        |xj	        |dz  dz  z  c_	        |                     ¦   «         |_
        |                     ¦   «         |_        t          d                              |j
        ¦  «        }|€J d|j
        z  ¦   «         ‚|j         |z
  }	|j        |j         |j         |j        z   |	z
  …         }
t          |
¦  «        |j        |	z
  k    sJ ‚t!          |
|j        ¬¦  «        } |¦   «         |_        |j                             ||¦  «         |                     ||j        z   ¦  «         |S )	NrÆ  r   r¢  é   ÚmorxFz!unsupported 'morx' lookup type %s)rÑ  ÚtableTag)r�   r#   rÿ   r:   r8  Ú_PROCESSING_ORDERSÚProcessingOrderrÔ  r!  ÚReservedr;   ÚSubFeatureFlagsr   rY   rÑ  rÕ  r   rØ  r@   rÚ  r‹   )r…   r•   rŽ   r    r�   rÈ   r}  ÚorderKeyrX   ÚheaderLengthrÑ  Ú	subReaders               r2   rŒ   zMorxSubtableConverter.read™  s¥  € ØŒjˆÝ‰NŒNˆØ×)Ò)Ñ+Ô+ˆŒØ× Ò Ñ"Ô"ˆØ˜T‘\ aÒ'¨%°$©,¸1Ò)<Ð=ˆØ Ô3°HÔ=ˆÔØ×/Ò/°°qÑ9Ô9Ð9Ø×&Ò&Ñ(Ô(ˆŒ
Ø	ˆ
Œ
�u˜s‘{ rÑ)Ñ)ˆ
Œ
Ø×&Ò&Ñ(Ô(ˆŒØ"×,Ò,Ñ.Ô.ˆÔÝ  Ô(×,Ò,¨Q¬[Ñ9Ô9ˆ
ØÐØKÐ=ÀÄÑKÑKÔKÐKð ”z CÑ'ˆØŒ{˜6œ:¨¬
°Q´^Ñ(CÀlÑ(RÐRÔSˆÝ�4‰yŒy˜AœN¨\Ñ9Ò9Ð9Ð9Ð9Ý! t°f´oÐFÑFÔFˆ	Ø �j‘l”lˆŒØ	Œ×Ò˜i¨Ñ.Ô.Ð.Ø�Š�C˜!œ.Ñ(Ñ)Ô)Ð)Øˆr4   c                 óH  — |                      ||¦  «         |                     ¦   «          |                     d|j        z  ¦  «         |                     ¦   «          |                     d|j        ¬¦  «         |                     ¦   «          |                     d|j        ¬¦  «         |                     ¦   «          |j        dk    r3|                     dd|j        z  ¬¦  «         |                     ¦   «          |                     d|j        z  ¦  «         |                     ¦   «          |                     d	d
|j	        z  ¬¦  «         |                     ¦   «          |j
                             ||¦  «         |                     |¦  «         |                     ¦   «          d S )NzStructLength=%drÒ  rÑ   rÚ  r   rÛ  z0x%04xzMorphType=%drÜ  rÀ  )r¨  rÙ   rM  r:   rØ   rÒ  rÚ  rÛ  r;   rÜ  r@   rà  r©  r¿   s         r2   rÁ   zMorxSubtableConverter.xmlWrite´  sš  € Ø×Ò˜4 Ñ'Ô'Ð'Ø×ÒÑÔÐØ×ÒÐ+¨eÔ.@Ñ@ÑAÔAÐAØ×ÒÑÔÐØ×Ò˜O°5Ô3FÐÑGÔGÐGØ×ÒÑÔÐØ×ÒÐ-°UÔ5JÐÑKÔKÐKØ×ÒÑÔÐØŒ>˜QÒÐØ×Ò 
°(¸U¼^Ñ2KÐÑLÔLÐLØ×ÒÑÔÐØ×Ò˜.¨5¬?Ñ:Ñ;Ô;Ð;Ø×ÒÑÔÐØ×ÒÐ-°XÀÔ@UÑ5UÐÑVÔVÐVØ×ÒÑÔÐØŒ×Ò˜i¨Ñ.Ô.Ð.Ø×Ò˜ÑÔÐØ×ÒÑÔÐÐÐr4   c                 ó   — t          ¦   «         }d}d|_        t          t          |¦  «        D �]:\  }}}|dk    rPt	          |d         ¦  «        }|dz  dk    |dz  dk    f}	| j        |	         |_        |                      ||¦  «         Œ]|dk    r.|d         |_        |j        | j        v sJ d|j        z  ¦   «         ‚Œ‘|dk    r)|d         |_	        |j	        d	v sJ d
|j	        z  ¦   «         ‚ŒÀ|dk    rt	          |d         ¦  «        |_        Œá|dk    rt	          |d         ¦  «        |_
        �Œ|                     d¦  «        r|                     ||||¦  «         �Œ2J |¦   «         ‚|dz  dz  |j        z  |_        |S )Nr   ÚCoverageFlagsr³   rÆ  r¢  rÚ  zunknown ProcessingOrder: %srÒ  >   rÎ  rÐ  rÑ  zunknown TextDirection %srÛ  rÜ  ÚMorphFrÖ  )r#   rÛ  rY  Úistupler   rÙ  rÚ  rÔ  Ú_PROCESSING_ORDERS_REVERSEDrÒ  rÜ  rN   ré  )
r…   r»   r¼   rŽ   rÈ   ÚcovFlagsÚeltNameÚeltAttrsr¦  rÝ  s
             r2   r½   zMorxSubtableConverter.xmlReadÈ  sÅ  € Ý‰NŒNˆØˆØˆŒ
Ý-3µG¸WÑ-EÔ-Eð 	&ñ 	&Ñ)ˆG�X˜zØ˜/Ò)Ð)å# H¨WÔ$5Ñ6Ô6�Ø%¨™_°Ò2°XÀ±_ÈÒ4JÐK�Ø$(Ô$;¸HÔ$E�Ô!Ø×7Ò7¸À!ÑDÔDÐDÐDØÐ-Ò-Ð-Ø$,¨WÔ$5�Ô!ØÔ(¨DÔ,LÐLÐLÐLØ1°AÔ4EÑEñ MÔLÐLÐLð ˜OÒ+Ð+Ø"*¨7Ô"3�”Ø”Ð*KÐKÐKÐKØ.°´Ñ@ñ LÔKÐKÐKð ˜JÒ&Ð&Ý% h¨wÔ&7Ñ8Ô8�”
�
ØÐ-Ò-Ð-Ý$,¨X°gÔ->Ñ$?Ô$?�Ô!Ñ!Ø×!Ò! 'Ñ*Ô*ð &Ø—	’	˜' 8¨Z¸Ñ>Ô>Ð>Ñ>à%˜gÑ%Ô%Ð%Ø ‘n¨Ñ+¨a¬jÑ8ˆŒ
Øˆr4   c                 ó  — |j         dz  dz	  }| j        |j                 \  }}||j        dk    rdndz  }||rdndz  }||j        dk    rdndz  }||rdndz  }||_        t          |j        ¦  «        }	|                     ¦   «         }
d	|_        |j         }|j         d
z  |_         | 	                    ||¦  «         ||_         |j        |	         dk    sJ ‚|                     ¦   «         |
z
  }t          j        d|¦  «        |j        |	<   d S )Ni   r¢  rÐ  rÏ  r   rÆ  rÎ  rÍ  rö  ro  r÷  z>L)rÛ  rå  rÚ  rÒ  râ  rÕ  rø  rù  r:   r€   ÚstructÚpack)r…   r²   rŽ   r    r³   r¸   ræ  ÚreverseOrderÚlogicalOrderrý  rÿ  ÚorigReservedr   s                r2   r¯   zMorxSubtableConverter.writeè  s8  € Ø”N ZÑ/°BÑ6ˆØ%)Ô%EØÔ!ô&
Ñ"ˆ�lð 	˜EÔ/°:Ò=Ð=�D�DÀ1ÑDˆØ˜LÐ/�D�D¨aÑ/ˆØ˜EÔ/°5Ò8Ð8�D�D¸aÑ?ˆØ˜LÐ/�D�D¨aÑ/ˆØ&ˆÔÝ˜&œ,Ñ'Ô'ˆØ×%Ò%Ñ'Ô'ˆØ'ˆÔð ”~ˆØœ¨&Ñ0ˆŒØ�Š�f˜dÑ#Ô#Ð#Ø%ˆŒØŒ|˜KÔ(Ð,?Ò?Ð?Ð?Ð?Ø×%Ò%Ñ'Ô'¨&Ñ0ˆÝ$*¤K°°fÑ$=Ô$=ˆŒ�[Ñ!Ð!Ð!r4   r.   )r\   rÊ   rË   rÙ  rø  rå  r†   rÔ  rŒ   rÁ   r½   r¯   r˜   r4   r2   rÃ  rÃ  �  sÄ   € € € € € ð &Ø,Ø%Ø,ðð Ðð #XÐ"WÐ<N×<TÒ<TÑ<VÔ<VÐ"WÑ"WÔ"WÐð
È"ð 
ð 
ð 
ð 
ð 
ð
2ð 2ð 2ðð ð ð6ð ð ð(ð ð ð@>ð >ð >ð >ð >ð >r4   rÃ  c                   ó|   — e Zd Zddœd„Zd„ Zd„ Zd„ Zd„ Zd„ Zdd
„Z	d„ Z
d„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd	S )Ú	STXHeaderrj   rE   c                ó4  — t                                | |||||¬¦  «         t          | j        t          ¦  «        sJ ‚t          dd d t          ¦  «        | _        t          | j        t          ¦  «        rt          dd d t          ¦  «        | _
        d S d | _
        d S )NrE   ÚGlyphClassesÚPerGlyphLookup)ri   r†   rH  rX   r   rE  r  ÚclassLookupr    r[  ÚperGlyphLookupr„   s         r2   r†   zSTXHeader.__init__  sœ   € Ý×ÒØ�$˜  Z¸[ð 	ñ 	
ô 	
ð 	
õ ˜$œ/­9Ñ5Ô5Ð5Ð5Ð5Ý$ ^°T¸4ÅÑHÔHˆÔÝ�d”oÕ'<Ñ=Ô=ð 	'Ý"+Ð,<¸dÀDÍ'Ñ"RÔ"RˆDÔÐÐà"&ˆDÔÐÐr4   c                 óR  — t          ¦   «         }|j        }|                     d¦  «        }|                     d¦  «        }|                     d¦  «        }d }	d }
|                     ¦   «         |_        |                     ||                     ¦   «         z   ¦  «         |                     ||                     ¦   «         z   ¦  «         |                     ||                     ¦   «         z   ¦  «         | j        �?|                     d¦  «        }|                     ||                     ¦   «         z   ¦  «         t          | j        t          ¦  «        �r|                     d¦  «        }	|	                     ||                     ¦   «         z   ¦  «         |                     d¦  «        }|                     ||                     ¦   «         z   ¦  «         |                     d¦  «        }
|
                     ||                     ¦   «         z   ¦  «         |
j        |j        z
  dz  }|dk    sJ ‚| 
                    |¦  «        |_        |                      |
|¦  «        |_        nYt          | j        t          ¦  «        r?|                     d¦  «        }	|	                     ||                     ¦   «         z   ¦  «         | j                             |||¦  «        |_        t%          |j        |j        z
  |j        dz  z  ¦  «        }t'          |¦  «        D ]u}t)          ¦   «         }|j                             |¦  «         t'          |j        ¦  «        D ]6}|                     ¦   «         }|                      ||||	¦  «        |j        |<   Œ7Œv| j        �|                      |||¦  «        |_        |S )Nr   r  )r   r�   r  rÿ   ÚGlyphClassCountr‹   rõ  rH  rX   r!   r$  ÚLigComponentsÚ_readLigaturesÚ	Ligaturesr"   rô  rŒ   rò  rÆ   rž   r   ÚStatesr^   r!  Ú_readTransitionÚTransitionsÚ_readPerGlyphLookupsÚPerGlyphLookups)r…   r•   rŽ   r    rÛ  r�   ÚclassTableReaderÚstateArrayReaderÚentryTableReaderÚactionReaderÚligaturesReaderÚperGlyphTableReaderÚligComponentReaderÚnumLigComponentsÚ	numStatesÚ
stateIndexÚstateÚ
glyphClassÚ
entryIndexs                      r2   rŒ   zSTXHeader.read  sŽ  € Ý‘”ˆØŒjˆØ!×.Ò.¨qÑ1Ô1ÐØ!×.Ò.¨qÑ1Ô1ÐØ!×.Ò.¨qÑ1Ô1ÐØˆØˆØ &× 0Ò 0Ñ 2Ô 2ˆÔØ×Ò˜c F×$4Ò$4Ñ$6Ô$6Ñ6Ñ7Ô7Ð7Ø×Ò˜c F×$4Ò$4Ñ$6Ô$6Ñ6Ñ7Ô7Ð7Ø×Ò˜c F×$4Ò$4Ñ$6Ô$6Ñ6Ñ7Ô7Ð7ØÔÐ*Ø"(×"5Ò"5°aÑ"8Ô"8ÐØ×$Ò$ S¨6×+;Ò+;Ñ+=Ô+=Ñ%=Ñ>Ô>Ð>Ý�d”oÕ':Ñ;Ô;ñ 	8Ø!×.Ò.¨qÑ1Ô1ˆLØ×Ò˜c F×$4Ò$4Ñ$6Ô$6Ñ6Ñ7Ô7Ð7Ø!'×!4Ò!4°QÑ!7Ô!7ÐØ×#Ò# C¨&×*:Ò*:Ñ*<Ô*<Ñ$<Ñ=Ô=Ð=Ø$×1Ò1°!Ñ4Ô4ˆOØ× Ò   v×'7Ò'7Ñ'9Ô'9Ñ!9Ñ:Ô:Ð:Ø /Ô 3Ð6HÔ6LÑ LÐQRÑRÐØ# qÒ(Ð(Ð(Ð(Ø"4×"DÒ"DÐEUÑ"VÔ"VˆEÔØ"×1Ò1°/À4ÑHÔHˆEŒOˆOÝ˜œÕ)=Ñ>Ô>ð 	8Ø!×.Ò.¨qÑ1Ô1ˆLØ×Ò˜c F×$4Ò$4Ñ$6Ô$6Ñ6Ñ7Ô7Ð7Ø!Ô-×2Ò2Ð3CÀTÈ9ÑUÔUˆÔÝØÔ!Ð$4Ô$8Ñ8¸UÔ=RÐUVÑ=VÑWñ
ô 
ˆ	õ   	Ñ*Ô*ð 	ð 	ˆJÝ‘J”JˆEØŒL×Ò Ñ&Ô&Ð&Ý# EÔ$9Ñ:Ô:ð ð �
Ø-×8Ò8Ñ:Ô:�
Ø04×0DÒ0DØ$ j°$¸ñ1ô 1�Ô! *Ñ-Ð-ðð
 ÔÐ*Ø$(×$=Ò$=ØÐ*¨Dñ%ô %ˆEÔ!ð ˆr4   c                 ó¦   — |                       ¦   «         }|                     |j        ||j        z  z   ¦  «        }|                     |||¦  «         |S r.   )rX   r  r�   r¥   rÚ  )r…   r•   r  rŽ   r  Ú
transitionÚentryReaders          r2   rü  zSTXHeader._readTransition=  sX   € Ø—_’_Ñ&Ô&ˆ
Ø×)Ò)ØŒJ˜ jÔ&;Ñ;Ñ;ñ
ô 
ˆð 	×Ò˜[¨$°Ñ=Ô=Ð=ØÐr4   c                 ó”   — t          |j        ¦  «        }||j        z
  dz  }|                     |                     |¦  «        ¦  «        S r<  )rÕ  rÑ  r�   r^  r$  )r…   r•   rŽ   ÚlimitÚnumLigatureGlyphss        r2   rù  zSTXHeader._readLigaturesE  sF   € Ý�F”KÑ Ô ˆØ" V¤ZÑ/°AÑ5ÐØ×$Ò$ V×%;Ò%;Ð<MÑ%NÔ%NÑOÔOÐOr4   c                 ó  — d}|j         D ]y}|j                             ¦   «         D ]]}t          |t          ¦  «        rF|j        dk    rt          ||j        dz   ¦  «        }|j        dk    rt          ||j        dz   ¦  «        }Œ^Œz|S )Nr   ro  r   )rû  rý  rZ   r/   r    Ú	MarkIndexÚmaxÚCurrentIndex)r…   rÛ  Ú
numLookupsr
  r1   s        r2   Ú_countPerGlyphLookupszSTXHeader._countPerGlyphLookupsJ  s¤   € ð
 ˆ
Ø”\ð 	Ið 	IˆEØÔ&×-Ò-Ñ/Ô/ð Ið I�Ý˜aÕ!6Ñ7Ô7ð IØ”{ fÒ,Ð,Ý%(¨°Q´[À1±_Ñ%EÔ%E˜
Ø”~¨Ò/Ð/Ý%(¨°Q´^ÀaÑ5GÑ%HÔ%H˜
øðIð Ðr4   c                 ó>  — |j         }g }t          |                      |¦  «        ¦  «        D ]p}|                     d¦  «        }|                     ||                     ¦   «         z   ¦  «         |                     | j                             ||i ¦  «        ¦  «         Œq|S rä   )	r�   rž   r  r  r‹   rÿ   r^   rõ  rŒ   )r…   rÛ  r•   rŽ   r�   Úlookupsr�  r±  s           r2   rþ  zSTXHeader._readPerGlyphLookupsY  sœ   € ØŒjˆØˆÝ�t×1Ò1°%Ñ8Ô8Ñ9Ô9ð 	Mð 	MˆAØ!×.Ò.¨qÑ1Ô1ˆLØ×Ò˜c F×$4Ò$4Ñ$6Ô$6Ñ6Ñ7Ô7Ð7Ø�NŠN˜4Ô.×3Ò3°LÀ$ÈÑKÔKÑLÔLÐLÐLØˆr4   Nc                 ó  — t          ¦   «         }| j                             ||||j        d ¬¦  «         t	          |                     ¦   «         d¦  «        }t          |j                             ¦   «         ¦  «        dz   }d}	| j        �|	dz  }	|	| j	        j
        z  }	| j	                             ||j        ¦  «        \  }
}|                      ||j        ||¦  «        \  }}|	t          |¦  «        z   }|t          |¦  «        z   }|t          |¦  «        z   }t	          |                      ||¦  «        d¦  «        }|
�|t          |¦  «        z   }nd }d\  }}|                      ||¦  «        }|                      ||¦  «        }|�9t          |¦  «        dk    sJ ‚|t          |
¦  «        z   }|t          |¦  «        z   }|                     |¦  «         |                     |	¦  «         |                     |¦  «         |                     |¦  «         | j        �|                     |¦  «         |�|                     |¦  «         |�*|                     |¦  «         |                     |¦  «         |                     |¦  «         |                     |¦  «         |                     |¦  «         |                     |¦  «         |
�|                     |
¦  «         |�|                     |¦  «         |�|                     |¦  «         d S d S )N)r¸   r  r   r¢  ré   )NNr   )r   rô  r¯   rò  r   rû  r  rZ   rõ  rX   ÚactionHeaderSizeÚcompileActionsrû  Ú_compileStatesrÕ  Ú_compilePerGlyphLookupsÚ_compileLigComponentsÚ_compileLigaturesr  rÖ  )r…   r²   rŽ   r    r³   r¸   ÚglyphClassWriterÚglyphClassDataÚglyphClassCountÚglyphClassTableOffsetÚ
actionDataÚactionIndexÚstateArrayDataÚentryTableDataÚstateArrayOffsetÚentryTableOffsetÚperGlyphOffsetÚperGlyphDataÚactionOffsetÚligaturesOffsetÚligComponentsOffsetÚligComponentsDataÚligaturesDatas                          r2   r¯   zSTXHeader.writeb  s=  € Ý(™?œ?ÐØÔ×ÒØ˜d I¨uÔ/AÈtð 	ñ 	
ô 	
ð 	
õ Ð-×8Ò8Ñ:Ô:¸AÑ>Ô>ˆÝ˜eÔ0×7Ò7Ñ9Ô9Ñ:Ô:¸QÑ>ˆØ "ÐØÔÐ*Ø! QÑ&Ð!à ¤Ô!AÑAÐØ"&¤/×"@Ò"@ÀÀuÄ|Ñ"TÔ"TÑˆ
�KØ)-×)<Ò)<Ø�%”, °ñ*
ô *
Ñ&ˆ˜ð 1µ3°~Ñ3FÔ3FÑFÐØ+­c°.Ñ.AÔ.AÑAÐØ)­C°Ñ,?Ô,?Ñ?ˆÝ˜4×7Ò7¸¸tÑDÔDÀaÑHÔHˆØÐ!Ø+­c°.Ñ.AÔ.AÑAˆLˆLàˆLà/9Ñ,ˆÐ,Ø ×6Ò6°u¸dÑCÔCÐØ×.Ò.¨u°dÑ;Ô;ˆØÐ(Ý�|Ñ$Ô$¨Ò)Ð)Ð)Ð)Ø".µ°Z±´Ñ"@ÐØ1µCÐ8IÑ4JÔ4JÑJˆOà×Ò˜/Ñ*Ô*Ð*Ø×ÒÐ/Ñ0Ô0Ð0Ø×ÒÐ*Ñ+Ô+Ð+Ø×ÒÐ*Ñ+Ô+Ð+ØÔÐ*Ø×Ò˜nÑ-Ô-Ð-ØÐ#Ø×Ò˜lÑ+Ô+Ð+ØÐ*Ø×ÒÐ1Ñ2Ô2Ð2Ø×Ò˜oÑ.Ô.Ð.Ø×Ò˜Ñ(Ô(Ð(Ø×Ò˜Ñ(Ô(Ð(Ø×Ò˜Ñ(Ô(Ð(Ø×Ò˜Ñ&Ô&Ð&ØÐ!Ø×Ò˜ZÑ(Ô(Ð(ØÐ(Ø×ÒÐ.Ñ/Ô/Ð/ØÐ$Ø×Ò˜]Ñ+Ô+Ð+Ð+Ð+ð %Ð$r4   c           	      óž  — t          ¦   «         }g i }}|D ]ö}t          |¦  «        D ]ä}	|j        |	         }
t          ¦   «         }|
                     |||¦  «         |                     ¦   «         }t          |¦  «        |
j        k    s/J dt          |
¦  «        |
j        t          |¦  «        fz  ¦   «         ‚|                     |¦  «        }|€)t          |¦  «        }|||<   | 	                    |¦  «         | 
                    |¦  «         ŒåŒ÷t          |                     ¦   «         d¦  «        }t          t          |¦  «        d¦  «        }||fS )Nz1%s has staticSize %d, but actually wrote %d bytesré   )r   rž   rý  r€   rû  rÕ  r¥   rï  rY   r^   r'  r   r   )r…   rŽ   Ústatesr$  r'  ÚstateArrayWriterÚentriesÚentryIDsr
  r  r  ÚentryWriterÚ	entryDatar  r(  r)  s                   r2   r  zSTXHeader._compileStates™  s`  € Ý(™?œ?ÐØ �ˆØð 	9ð 	9ˆEÝ# OÑ4Ô4ð 9ð 9�
Ø"Ô.¨zÔ:�
Ý+™oœo�Ø×"Ò" ;°°kÑBÔBÐBØ'×2Ò2Ñ4Ô4�	å˜	‘N”N jÔ&;Ò;Ð;Ð;ØIÝ˜Ñ$Ô$ØÔ)Ý˜	‘N”NðMñ ñ <Ô;Ð;ð &Ÿ\š\¨)Ñ4Ô4�
ØÐ%Ý!$ W¡¤�JØ*4�H˜YÑ'Ø—N’N 9Ñ-Ô-Ð-Ø ×,Ò,¨ZÑ8Ô8Ð8Ð8ð#9õ$ Ð-×8Ò8Ñ:Ô:¸AÑ>Ô>ˆÝ�Y wÑ/Ô/°Ñ3Ô3ˆØ˜~Ð-Ð-r4   c                 óš  — | j         €dS |                      |¦  «        }t          |j        ¦  «        |k    s!J dt          |j        ¦  «        |fz  ¦   «         ‚t	          ¦   «         }|j        D ]K}|                     ¦   «         }| j                              ||i |d ¦  «         |                     |d¬¦  «         ŒL|                     ¦   «         S )Nr4   zVlen(AATStateTable.PerGlyphLookups) is %d, but the actions inside the table refer to %dré   r  )	rõ  r  rÕ  rÿ  r   rú  r¯   r  rû  )r…   rÛ  rŽ   r  r²   r²  r¼  s          r2   r  z!STXHeader._compilePerGlyphLookups³  sß   € ØÔÐ&Ø�3Ø×/Ò/°Ñ6Ô6ˆ
Ý�5Ô(Ñ)Ô)¨ZÒ7Ð7Ð7ð;å�5Ô(Ñ)Ô)¨:Ð6ñ7ñ 8Ô7Ð7õ
 ‘”ˆØÔ+ð 	=ð 	=ˆFØ!×.Ò.Ñ0Ô0ˆLØÔ×%Ò% l°D¸"¸fÀdÑKÔKÐKØ× Ò  ¸!Ð Ñ<Ô<Ð<Ð<Ø× Ò Ñ"Ô"Ð"r4   c                 ó¨   — t          |d¦  «        sd S t          ¦   «         }|j        D ]}|                     |¦  «         Œ|                     ¦   «         S )Nrø  )r¦   r   rø  r'  rû  )r…   rÛ  rŽ   r²   Ú	components        r2   r   zSTXHeader._compileLigComponentsÃ  s]   € Ý�u˜oÑ.Ô.ð 	Ø�4Ý‘”ˆØÔ,ð 	*ð 	*ˆIØ×Ò˜yÑ)Ô)Ð)Ð)Ø× Ò Ñ"Ô"Ð"r4   c                 óÎ   — t          |d¦  «        sd S t          ¦   «         }|j        D ]*}|                     |                     |¦  «        ¦  «         Œ+|                     ¦   «         S )Nrú  )r¦   r   rú  r'  rg  rû  )r…   rÛ  rŽ   r²   Ú	glyphNames        r2   r!  zSTXHeader._compileLigaturesË  sh   € Ý�u˜kÑ*Ô*ð 	Ø�4Ý‘”ˆØœð 	;ð 	;ˆIØ×Ò˜tŸš¨yÑ9Ô9Ñ:Ô:Ð:Ð:Ø× Ò Ñ"Ô"Ð"r4   c                 ó>  — |                      ||¦  «         |                     ¦   «          |                     d|j        z  ¦  «         |                     ¦   «          t	          |j                             ¦   «         ¦  «        D ]1\  }}|                     d||¬¦  «         |                     ¦   «          Œ2t          |j	        ¦  «        D ] \  }}	|                      d|¬¦  «         |                     ¦   «          t	          |	j
                             ¦   «         ¦  «        D ] \  }
}|                     ||d|
id¬¦  «         Œ!|                     d¦  «         |                     ¦   «          Œ¡t          |j        ¦  «        D ]¬\  }}|                      d	|¬¦  «         |                     ¦   «          t	          |                     ¦   «         ¦  «        D ]1\  }}|                     d
||¬¦  «         |                     ¦   «          Œ2|                     d	¦  «         |                     ¦   «          Œ­t          |d¦  «        r¡|                      d¦  «         |                     ¦   «          t          t          |d¦  «        ¦  «        D ]1\  }}|                     d||¬¦  «         |                     ¦   «          Œ2|                     d¦  «         |                     ¦   «          |                      |||||¦  «         |                     |¦  «         |                     ¦   «          d S )NzGlyphClassCount=%sÚ
GlyphClass©rT  r³   ÚState©ÚindexÚonGlyphClassÚ
Transition)rŽ   r»   rK   ró  r¤  rø  ÚLigComponent)rD  r³   )r¨  rÙ   rM  r÷  rX  rò  rø  rØ   r®   rû  rý  rà  r©  rÿ  r¦   rŽ  Ú_xmlWriteLigatures)r…   rÀ   rŽ   r³   rK   r»   ÚgÚklassr	  r
  r  Útransr�   r²  rT  rU  s                   r2   rÁ   zSTXHeader.xmlWriteÓ  sE  € Ø×Ò˜4 Ñ'Ô'Ð'Ø×ÒÑÔÐØ×ÒÐ.°Ô1FÑFÑGÔGÐGØ×ÒÑÔÐÝ˜uÔ1×7Ò7Ñ9Ô9Ñ:Ô:ð 	 ð 	 ‰HˆAˆuØ×Ò °A¸UÐÑCÔCÐCØ×ÒÑÔÐÐÝ!*¨5¬<Ñ!8Ô!8ð 	 ð 	 ÑˆJ˜Ø×Ò˜w¨jÐÑ9Ô9Ð9Ø×ÒÑÔÐÝ%+¨EÔ,=×,CÒ,CÑ,EÔ,EÑ%FÔ%Fð ð Ñ!�
˜EØ—’ØØØ)¨:Ð6Ø%ð	 ñ ô ð ð ð ×Ò˜WÑ%Ô%Ð%Ø×ÒÑÔÐÐÝ" 5Ô#8Ñ9Ô9ð 	 ð 	 ‰IˆAˆvØ×ÒÐ/°qÐÑ9Ô9Ð9Ø×ÒÑÔÐÝ$ V§\¢\¡^¤^Ñ4Ô4ð $ð $‘
��sØ×#Ò# H°EÀÐ#ÑEÔEÐEØ×!Ò!Ñ#Ô#Ð#Ð#Ø×ÒÐ-Ñ.Ô.Ð.Ø×ÒÑÔÐÐÝ�5˜/Ñ*Ô*ð 	 Ø×Ò˜Ñ/Ô/Ð/Ø×ÒÑÔÐÝ#¥G¨E°?Ñ$CÔ$CÑDÔDð $ð $‘��3Ø×#Ò# N¸!À3Ð#ÑGÔGÐGØ×!Ò!Ñ#Ô#Ð#Ð#Ø×Ò˜_Ñ-Ô-Ð-Ø×ÒÑÔÐØ×Ò 	¨4°¸¸eÑDÔDÐDØ×Ò˜ÑÔÐØ×ÒÑÔÐÐÐr4   c                 ól  — t          |d¦  «        sd S |                     d¦  «         |                     ¦   «          t          t	          |d¦  «        ¦  «        D ]1\  }}|                     d||¬¦  «         |                     ¦   «          Œ2|                     d¦  «         |                     ¦   «          d S )Nrú  ÚLigature)rD  rT  )r¦   r¨  rÙ   r®   rŽ  rØ   r©  )r…   rÀ   rŽ   r³   rK   r»   r�   rI  s           r2   rH  zSTXHeader._xmlWriteLigaturesû  sÀ   € Ý�u˜kÑ*Ô*ð 	ØˆFØ×Ò˜;Ñ'Ô'Ð'Ø×ÒÑÔÐÝ�g e¨[Ñ9Ô9Ñ:Ô:ð 	 ð 	 ‰DˆAˆqØ×Ò 
°!¸1ÐÑ=Ô=Ð=Ø×ÒÑÔÐÐØ×Ò˜Ñ%Ô%Ð%Ø×ÒÑÔÐÐÐr4   c                 ó†  — t          ¦   «         }t          t          |¦  «        D ]î\  }}}|dk    r(|d         }|d         }	t          |	¦  «        |j        |<   Œ4|dk    r2|                      |||¦  «        }
|j                             |
¦  «         Œl|dk    r7| j         	                    |||¦  «        }|j
                             |¦  «         Œ©|dk    r|                      |||¦  «        |_        ŒÌ|dk    r|                      |||¦  «        |_        Œït          |j                             ¦   «         ¦  «        dz   |_        |S )	Nr@  rT  r³   rB  ró  rø  rú  r   )r   rY  rä  r   rò  Ú_xmlReadStaterû  r^   rõ  r½   rÿ  Ú_xmlReadLigComponentsrø  Ú_xmlReadLigaturesrú  r  rZ   r÷  )r…   r»   r¼   rŽ   rÛ  rç  rè  r¦  rT  r³   r
  r²  s               r2   r½   zSTXHeader.xmlRead  sZ  € Ý‘”ˆÝ-3µG¸WÑ-EÔ-Eð 	Uð 	UÑ)ˆG�X˜zØ˜,Ò&Ð&Ø  Ô)�Ø  Ô)�Ý,4°U©O¬O�Ô" 5Ñ)Ð)Ø˜GÒ#Ð#Ø×*Ò*¨8°ZÀÑFÔF�Ø”×#Ò# EÑ*Ô*Ð*Ð*ØÐ,Ò,Ð,ØÔ,×4Ò4°X¸zÈ4ÑPÔP�ØÔ%×,Ò,¨VÑ4Ô4Ð4Ð4Ø˜OÒ+Ð+Ø&*×&@Ò&@Ø˜j¨$ñ'ô '�Ô#Ð#ð ˜KÒ'Ð'Ø"&×"8Ò"8¸À:ÈtÑ"TÔ"T�”øÝ # EÔ$6×$=Ò$=Ñ$?Ô$?Ñ @Ô @À1Ñ DˆÔØˆr4   c                 óü   — t          ¦   «         }t          t          |¦  «        D ]W\  }}}|dk    rKt          |d         ¦  «        }|                      ¦   «         }	|	                     ||||¦  «         |	|j        |<   ŒX|S )NrF  rE  )r   rY  rä  r   rX   ré  rý  )
r…   r»   r¼   rŽ   r
  rç  rè  r¦  r  r  s
             r2   rO  zSTXHeader._xmlReadState  s„   € Ý‘
”
ˆÝ-3µG¸WÑ-EÔ-Eð 	;ð 	;Ñ)ˆG�X˜zØ˜,Ò&Ð&Ý% h¨~Ô&>Ñ?Ô?�
Ø!Ÿ_š_Ñ.Ô.�
Ø×"Ò" 7¨H°jÀ$ÑGÔGÐGØ0:�Ô! *Ñ-øØˆr4   c                 óž   — g }t          t          |¦  «        D ]4\  }}}|dk    r(|                     t          |d         ¦  «        ¦  «         Œ5|S )NrG  r³   )rY  rä  r^   r   )r…   r»   r¼   rŽ   ÚligComponentsrç  rè  Ú_eltContents           r2   rP  zSTXHeader._xmlReadLigComponents&  s\   € ØˆÝ.4µW¸gÑ.FÔ.Fð 	Bð 	BÑ*ˆG�X˜{Ø˜.Ò(Ð(Ø×$Ò$¥X¨h°wÔ.?Ñ%@Ô%@ÑAÔAÐAøØÐr4   c                 ó„   — g }t          t          |¦  «        D ]'\  }}}|dk    r|                     |d         ¦  «         Œ(|S )NrM  rT  )rY  rä  r^   )r…   r»   r¼   rŽ   Úligsrç  rè  rU  s           r2   rQ  zSTXHeader._xmlReadLigatures-  sO   € ØˆÝ.4µW¸gÑ.FÔ.Fð 	/ð 	/Ñ*ˆG�X˜{Ø˜*Ò$Ð$Ø—’˜H WÔ-Ñ.Ô.Ð.øØˆr4   r.   )r\   rÊ   rË   r†   rŒ   rü  rù  r  rþ  r¯   r  r  r   r!  rÁ   rH  r½   rO  rP  rQ  r˜   r4   r2   rð  rð    s+  € € € € € ØEGð 	'ð 	'ð 	'ð 	'ð 	'ð-ð -ð -ð^ð ð ðPð Pð Pð
ð ð ðð ð ð5,ð 5,ð 5,ð 5,ðn.ð .ð .ð4#ð #ð #ð #ð #ð #ð#ð #ð #ð&ð &ð &ðP	ð 	ð 	ðð ð ð,ð ð ðð ð ðð ð ð ð r4   rð  c                   ó(   — e Zd Zd„ Zdd„Zd„ Zd„ ZdS )ÚCIDGlyphMapc                 ó¾   — |                      ¦   «         }i }t          |                     |¦  «        ¦  «        D ]#\  }}|dk    r|                     |¦  «        ||<   Œ$|S ©Nro  )r!  r®   r$  ra  )r…   r•   rŽ   r    ÚnumCIDsr´  Úcidr  s           r2   rŒ   zCIDGlyphMap.read6  si   € Ø×#Ò#Ñ%Ô%ˆØˆÝ% f×&<Ò&<¸WÑ&EÔ&EÑFÔFð 	9ð 	9‰LˆC�Ø˜&Ò Ð Ø"×/Ò/°Ñ8Ô8��s‘øØˆr4   Nc                 ó  ‡— ˆfd„|                      ¦   «         D ¦   «         }|rt          |¦  «        dz   nd}|                     |¦  «         t          |¦  «        D ]+}|                     |                     |d¦  «        ¦  «         Œ,d S )Nc                 óB   •— i | ]\  }}|‰                      |¦  «        “ŒS r˜   rS  )r™   r]  rT  rŽ   s      €r2   r–  z%CIDGlyphMap.write.<locals>.<dictcomp>?  s+   ø€ ÐMÐMÐM±°°e��d—o’o eÑ,Ô,ÐMÐMÐMr4   r   r   ro  ©rø  r  r'  rž   rY   )	r…   r²   rŽ   r    r³   r¸   rø  r¡   r]  s	     `      r2   r¯   zCIDGlyphMap.write>  s”   ø€ ØMÐMÐMÐM¸u¿{º{¹}¼}ÐMÑMÔMˆØ"'Ð.•�E‘
”
˜Q‘�¨QˆØ×Ò˜5Ñ!Ô!Ð!Ý˜‘<”<ð 	7ð 	7ˆCØ×Ò˜uŸyšy¨¨fÑ5Ô5Ñ6Ô6Ð6Ð6ð	7ð 	7r4   c                 ó®   — i }t          t          |¦  «        D ]<\  }}}|dk    r0|d                              ¦   «         |t          |d         ¦  «        <   Œ=|S )NÚCIDrT  r]  )rY  rä  Ústripr   ©r…   r»   r¼   rŽ   r´  ÚeNameÚeAttrsÚ	_eContents           r2   r½   zCIDGlyphMap.xmlReadE  s^   € ØˆÝ(.­w¸Ñ(@Ô(@ð 	Jð 	JÑ$ˆE�6˜9Ø˜Š~ˆ~Ø28¸´/×2GÒ2GÑ2IÔ2I�•x  u¤Ñ.Ô.Ñ/øØˆr4   c                 ób  — |                      ||¦  «         |                     ¦   «          t          |                     ¦   «         ¦  «        D ]9\  }}|�2|dk    r,|                     d||¬¦  «         |                     ¦   «          Œ:|                     |¦  «         |                     ¦   «          d S )Nro  rb  )r]  rT  ©r¨  rÙ   rX  rø  rØ   r©  )r…   rÀ   rŽ   r³   rK   r»   r]  rT  s           r2   rÁ   zCIDGlyphMap.xmlWriteL  sµ   € Ø×Ò˜4 Ñ'Ô'Ð'Ø×ÒÑÔÐÝ  §¢¡¤Ñ/Ô/ð 	$ð 	$‰JˆC�ØÐ  U¨f¢_ _Ø×#Ò# E¨s¸%Ð#Ñ@Ô@Ð@Ø×!Ò!Ñ#Ô#Ð#øØ×Ò˜ÑÔÐØ×ÒÑÔÐÐÐr4   r.   rÁ  r˜   r4   r2   rY  rY  5  sU   € € € € € ðð ð ð7ð 7ð 7ð 7ðð ð ðð ð ð ð r4   rY  c                   ó(   — e Zd Zd„ Zdd„Zd„ Zd„ ZdS )ÚGlyphCIDMapc                 ó¨  — |                      ¦   «         }|                     ¦   «         }|                     |¦  «        }|t          |¦  «        k    r,t                               d|t          |¦  «        fz  ¦  «         i }t          t          t          |¦  «        t          |¦  «        ¦  «        ¦  «        D ]}||         }	|	dk    r|	|||         <   Œ|S )NzOGlyphCIDMap has %d elements, but the font has only %d glyphs; ignoring the restro  )rq  r!  r$  rÕ  rr  rs  rž   Úmin)
r…   r•   rŽ   r    Ú
glyphOrderr¡   Úcidsr´  r  r]  s
             r2   rŒ   zGlyphCIDMap.readX  sÑ   € Ø×'Ò'Ñ)Ô)ˆ
Ø×!Ò!Ñ#Ô#ˆØ×%Ò% eÑ,Ô,ˆØ•3�z‘?”?Ò"Ð"Ý�KŠKð$à',­c°*©o¬oÐ&>ñ?ñô ð ð
 ˆÝ�S¥ T¡¤­C°
©O¬OÑ<Ô<Ñ=Ô=ð 	2ð 	2ˆGØ�w”-ˆCØ�fŠ}ˆ}Ø.1��z 'Ô*Ñ+øØˆr4   Nc                 ó  ‡— ˆfd„|                      ¦   «         D ¦   «         }|rt          |¦  «        dz   nd}|                     |¦  «         t          |¦  «        D ]+}|                     |                     |d¦  «        ¦  «         Œ,d S )Nc                 óR   •— i | ]#\  }}|®|dk    ¯‰                      |¦  «        |“Œ$S r[  rS  )r™   rI  r]  rŽ   s      €r2   r–  z%GlyphCIDMap.write.<locals>.<dictcomp>j  s@   ø€ ð 
ð 
ð 
á��3Øˆ 3¨&¢= =ð �OŠO˜AÑÔ à#0 = =r4   r   r   ro  r`  )	r…   r²   rŽ   r    r³   r¸   rø  r¡   r  s	     `      r2   r¯   zGlyphCIDMap.writei  s¥   ø€ ð
ð 
ð 
ð 
àŸ+š+™-œ-ð
ñ 
ô 
ˆð
 #(Ð.•�E‘
”
˜Q‘�¨QˆØ×Ò˜5Ñ!Ô!Ð!Ý˜U‘|”|ð 	;ð 	;ˆGØ×Ò˜uŸyšy¨°&Ñ9Ô9Ñ:Ô:Ð:Ð:ð	;ð 	;r4   c                 óŠ   — i }t          t          |¦  «        D ]*\  }}}|dk    rt          |d         ¦  «        ||d         <   Œ+|S )Nrb  r³   rT  )rY  rä  r   rd  s           r2   r½   zGlyphCIDMap.xmlReadt  sR   € ØˆÝ(.­w¸Ñ(@Ô(@ð 	Dð 	DÑ$ˆE�6˜9Ø˜Š~ˆ~Ý*2°6¸'´?Ñ*CÔ*C��v˜g”Ñ'øØˆr4   c                 ób  — |                      ||¦  «         |                     ¦   «          t          |                     ¦   «         ¦  «        D ]9\  }}|�2|dk    r,|                     d||¬¦  «         |                     ¦   «          Œ:|                     |¦  «         |                     ¦   «          d S )Nro  rb  rA  ri  )r…   rÀ   rŽ   r³   rK   r»   rT  r]  s           r2   rÁ   zGlyphCIDMap.xmlWrite{  s´   € Ø×Ò˜4 Ñ'Ô'Ð'Ø×ÒÑÔÐÝ  §¢¡¤Ñ/Ô/ð 	$ð 	$‰JˆE�3Øˆ 3¨&¢= =Ø×#Ò# E°¸cÐ#ÑBÔBÐBØ×!Ò!Ñ#Ô#Ð#øØ×Ò˜ÑÔÐØ×ÒÑÔÐÐÐr4   r.   rÁ  r˜   r4   r2   rk  rk  W  sU   € € € € € ðð ð ð"	;ð 	;ð 	;ð 	;ðð ð ðð ð ð ð r4   rk  c                   ó(   — e Zd Zd„ Zdd„Zd„ Zd„ ZdS )Ú
DeltaValuec                 óX  — |d         }|d         }|d         }|dv s
J d¦   «         ‚||z
  dz   }d|z  }d|z  }	d|z  dz
  }
d|dz
  z  }g }d\  }}t          |¦  «        D ]J}|dk    r|                     ¦   «         d	}}||z
  }||z	  |
z  }||z  r||	z
  }|                     |¦  «         ŒK|S )
NÚ	StartSizeÚEndSizeÚDeltaFormat©r   r  rA  úillegal DeltaFormatr   )r   r   r   r¢  )rž   r!  r^   )r…   r•   rŽ   r    rw  rx  ry  ÚnItemsÚnBitsÚminusOffsetÚmaskÚsignMaskru  ÚtmpÚshiftr�   r³   s                    r2   rŒ   zDeltaValue.read‡  s  € Ø˜kÔ*ˆ	Ø˜IÔ&ˆØ Ô.ˆØ˜iÐ'Ð'Ð'Ð)>Ñ'Ô'Ð'Ø˜9Ñ$ qÑ(ˆØ�[Ñ ˆØ˜5‘jˆØ�U‘
˜aÑˆØ˜ ™Ñ#ˆàˆ
Ø‰
ˆˆUÝ�v‘”ð 	%ð 	%ˆAØ˜ŠzˆzØ#×.Ò.Ñ0Ô0°"�U�Ø˜E‘MˆEØ˜E‘\ TÑ)ˆEØ�xÑð ,Ø Ñ+�Ø×Ò˜eÑ$Ô$Ð$Ð$ØÐr4   Nc                 óX  — |d         }|d         }|d         }|}	|dv s
J d¦   «         ‚||z
  dz   }
d|z  }t          |	¦  «        |
k    sJ ‚d|z  dz
  }d\  }}|	D ]2}||z
  }|||z  |z  z  }|dk    r|                     |¦  «         d\  }}Œ3|d	k    r|                     |¦  «         d S d S )
Nrw  rx  ry  rz  r{  r   )r   r¢  r   r¢  )rÕ  r'  )r…   r²   rŽ   r    r³   r¸   rw  rx  ry  ru  r|  r}  r  r�  r‚  s                  r2   r¯   zDeltaValue.writež  s  € Ø˜kÔ*ˆ	Ø˜IÔ&ˆØ Ô.ˆØˆ
Ø˜iÐ'Ð'Ð'Ð)>Ñ'Ô'Ð'Ø˜9Ñ$ qÑ(ˆØ�[Ñ ˆÝ�:‰Œ &Ò(Ð(Ð(Ð(Ø�U‘
˜aÑˆà‰
ˆˆUØð 	#ð 	#ˆEØ˜E‘MˆEØ˜% $™,¨5Ñ0Ñ1ˆCØ˜ŠzˆzØ×"Ò" 3Ñ'Ô'Ð'Ø"‘
��UøØ�BŠ;ˆ;Ø×Ò˜sÑ#Ô#Ð#Ð#Ð#ð ˆ;r4   c                 óf   — |                      ||d|fgz   ¦  «         |                     ¦   «          d S r×   ©rØ   rÙ   r¿   s         r2   rÁ   zDeltaValue.xmlWrite³  ó=   € Ø×Ò˜D %¨G°UÐ+;Ð*<Ñ"<Ñ=Ô=Ð=Ø×ÒÑÔÐÐÐr4   c                 ó,   — t          |d         ¦  «        S r×   ©r   rº   s       r2   r½   zDeltaValue.xmlRead·  ó   € Ý˜˜gœÑ'Ô'Ð'r4   r.   ©r\   rÊ   rË   rŒ   r¯   rÁ   r½   r˜   r4   r2   ru  ru  †  sU   € € € € € ðð ð ð.$ð $ð $ð $ð*ð ð ð(ð (ð (ð (ð (r4   ru  c                   ó   — e Zd Zd„ Zdd„ZdS )ÚVarIdxMapValuec                 óæ   ‡	‡
‡— |d         }|d         }d|dz  z   }d|z  dz
  Š	d‰	z
  Š
d|z
  Šd|dz  dz	  z   }|j         |j        |j        |j        d	œ|         }ˆ	ˆ
ˆfd
„ ||¦  «        D ¦   «         S )NÚEntryFormatrt   r   rÖ  l   ÿÿ r¢  é0   ré   ©r   r  rA  ré   c                 ó,   •— g | ]}|‰z  ‰z  |‰z  z  ‘ŒS r˜   r˜   )r™   ÚrawÚ	innerMaskÚ	outerMaskÚ
outerShifts     €€€r2   rV  z'VarIdxMapValue.read.<locals>.<listcomp>Í  s;   ø€ ð 
ð 
ð 
àð �Y‰ :Ñ-°#¸	±/ÑBð
ð 
ð 
r4   ©r:  r$  ÚreadUInt24Arrayr  )r…   r•   rŽ   r    Úfmtr|  Ú	innerBitsÚ	entrySizer£   r“  r”  r•  s            @@@r2   rŒ   zVarIdxMapValue.read¼  sÈ   øøø€ Ø˜Ô&ˆØ˜>Ô*ˆà˜˜v™Ñ&ˆ	Ø˜)‘^ qÑ(ˆ	Ø Ñ*ˆ	Ø˜)‘^ˆ
à˜# ™,¨1Ñ,Ñ-ˆ	àÔ$ØÔ%ØÔ%ØÔ$ð	
ð 
ð
 ôˆ	ð
ð 
ð 
ð 
ð 
ð 
à �y Ñ(Ô(ð
ñ 
ô 
ð 	
r4   Nc                 ó   ‡‡— |d         }|}|d                               t          |¦  «        ¦  «         d|dz  z   }d|z  dz
  Šd|z
  Šd|dz  dz	  z   }	|j        |j        |j        |j        dœ|	         }
 |
ˆˆfd	„|D ¦   «         ¦  «         d S )
NrŽ  rt   r   rÖ  r¢  r�  ré   r�  c                 ó,   •— g | ]}|d z  ‰z	  |‰z  z  ‘ŒS )l     þ r˜   )r™   Úidxr“  r•  s     €€r2   rV  z(VarIdxMapValue.write.<locals>.<listcomp>ä  s<   ø€ ð ð ð àð ˜Ñ#¨
Ñ2°s¸Y±ÑGðð ð r4   )ÚsetValuerÕ  r>  r*  ÚwriteUInt24Arrayr	  )r…   r²   rŽ   r    r³   r¸   r˜  r›  r™  rš  rµ   r“  r•  s              @@r2   r¯   zVarIdxMapValue.writeÒ  sã   øø€ Ø˜Ô&ˆØˆØˆ~Ô×'Ò'­¨G©¬Ñ5Ô5Ð5à˜˜v™Ñ&ˆ	Ø˜)‘^ qÑ(ˆ	Ø˜)‘^ˆ
à˜# ™,¨1Ñ,Ñ-ˆ	àÔ%ØÔ&ØÔ&ØÔ%ð	
ð 
ð
 ôˆ
ð 	ˆ
ðð ð ð ð à"ðñ ô ñ	
ô 	
ð 	
ð 	
ð 	
r4   r.   r  r˜   r4   r2   rŒ  rŒ  »  s7   € € € € € ð
ð 
ð 
ð,
ð 
ð 
ð 
ð 
ð 
r4   rŒ  c                   ó(   — e Zd Zd„ Zdd„Zd„ Zd„ ZdS )ÚVarDataValuec                 ój  — g }|d         }|d         }t          |dz  ¦  «        }|dz  }|r|j        |j        }	}n|j        |j        }	}t	          ||¦  «        t          ||¦  «        }}
|                      ||
¦  «        ¦  «         |                      |	||
z
  ¦  «        ¦  «         ||k    r||d …= |S )Nrs   Ú	NumShortsé €  éÿ  )Úboolrï   r  r0  rm  r  Úextend)r…   r•   rŽ   r    rZ   ÚregionCountÚ	wordCountÚ	longWordsÚreadBigArrayÚreadSmallArrayÚn1Ún2s               r2   rŒ   zVarDataValue.readì  sØ   € ØˆàÐ 0Ô1ˆØ˜kÔ*ˆ	õ ˜ VÑ+Ñ,Ô,ˆ	Ø Ñ&ˆ	àð 	WØ+1Ô+?ÀÔAV˜.ˆLˆLà+1Ô+@À&ÔBV˜.ˆLå�[ )Ñ,Ô,­c°+¸yÑ.IÔ.IˆBˆØ�Š�l�l 2Ñ&Ô&Ñ'Ô'Ð'Ø�Š�n�n R¨"¡WÑ-Ô-Ñ.Ô.Ð.Ø�ÒÐØ�{�|�|Ð$àˆr4   Nc                 ót  — |d         }|d         }t          |dz  ¦  «        }|dz  }|j        |j        f|j        |j        fdœ|         \  }	}
t	          ||¦  «        t          ||¦  «        }} |	|d |…         ¦  «          |
|||…         ¦  «         ||k    r|                     dg||z
  z  ¦  «         d S d S )Nrs   r£  r¤  r¥  rÈ  r   )r¦  r  r4  rö   rm  r  ÚwriteSmallArray)r…   r²   rŽ   r    rZ   r¸   r¨  r©  rª  ÚwriteBigArrayr°  r­  r®  s                r2   r¯   zVarDataValue.write  s÷   € ØÐ 0Ô1ˆØ˜kÔ*ˆ	õ ˜ VÑ+Ñ,Ô,ˆ	Ø Ñ&ˆ	ð Ô*¨FÔ,AÐBØÔ(¨&Ô*@ÐAð*
ð *
ð ô*Ñ&ˆ�õ
 �[ )Ñ,Ô,­c°+¸yÑ.IÔ.IˆBˆØˆ�f˜S˜b˜S”kÑ"Ô"Ð"Øˆ˜˜r +˜~Ô.Ñ/Ô/Ð/Ø�ÒÐØ×"Ò" A 3¨"¨{Ñ*:Ñ#;Ñ<Ô<Ð<Ð<Ð<ð Ðr4   c                 óf   — |                      ||d|fgz   ¦  «         |                     ¦   «          d S r×   r…  r¿   s         r2   rÁ   zVarDataValue.xmlWrite  r†  r4   c                 ó,   — t          |d         ¦  «        S r×   rˆ  rº   s       r2   r½   zVarDataValue.xmlRead  r‰  r4   r.   rŠ  r˜   r4   r2   r¡  r¡  ë  sU   € € € € € ðð ð ð.=ð =ð =ð =ð&ð ð ð(ð (ð (ð (ð (r4   r¡  c                   ó(   — e Zd Zd„ Zdd„Zd„ Zd„ ZdS )ÚTupleValuesc                 ó8   — t          j        d |¦  «        d         S rä   )r	   ÚdecompileDeltas_)r…   rÑ  rŽ   s      r2   rŒ   zTupleValues.read  s   € ÝÔ.¨t°TÑ:Ô:¸1Ô=Ð=r4   Nc                 ón   — |j         t                   }t          t          j        || ¬¦  «        ¦  «        S )N)ÚoptimizeSize)Úcfgr   Úbytesr	   ÚcompileDeltaValues_)r…   r²   rŽ   r    rZ   r¸   ÚoptimizeSpeeds          r2   r¯   zTupleValues.write"  s7   € ØœÕ!4Ô5ˆÝÝÔ.¨vÈÐDUÐVÑVÔVñ
ô 
ð 	
r4   c                 ó,   — t          |d         ¦  «        S r×   rˆ  rº   s       r2   r½   zTupleValues.xmlRead(  r‰  r4   c                 óf   — |                      ||d|fgz   ¦  «         |                     ¦   «          d S r×   r…  r¿   s         r2   rÁ   zTupleValues.xmlWrite+  r†  r4   r.   rÁ  r˜   r4   r2   rµ  rµ    sU   € € € € € ð>ð >ð >ð
ð 
ð 
ð 
ð(ð (ð (ðð ð ð ð r4   rµ  c                   ó<   — e Zd Z	 d	ddddœd„Zd„ Zd	d„Zd„ Zd„ ZdS )
Ú	CFF2IndexNrj   )Ú	itemClassÚitemConverterClassrF   c                óz   — t                                | |||||¬¦  «         || _        |�
 |¦   «         nd | _        d S rË  )ri   r†   Ú
_itemClassÚ
_converter)r…   rK   rV   rW   rX   rÂ  rÃ  rF   s           r2   r†   zCFF2Index.__init__1  sY   € õ 	×ÒØ�$˜  Z¸[ð 	ñ 	
ô 	
ð 	
ð $ˆŒà$6Ð$BÐÐÑ Ô Ð Èð 	Œˆˆr4   c                 ó®  ‡ ‡‡‡‡‡— ‰                      ¦   «         Š‰dk    rg S ‰                     ¦   «         Šd„ Š ‰‰‰¦  «        }‰j        duo‰dk    }|s× |‰dz   ¦  «        }g }|                     d¦  «        }‰                     |dz
  ¦  «         |D ]•}	||	k    sJ ‚‰                     |	|z
  ¦  «        }
‰ j        �3‰                      ¦   «         }|                     |
‰‰j        ¦  «         |}
n"‰ j        �‰ j         	                    |
‰¦  «        }
| 
                    |
¦  «         |	}Œ–|S ˆˆˆˆˆˆ fd„} |¦   «         }t          |g‰z  ¦  «        }|S )Nr   c                 óD   — | j         | j        | j        | j        dœ|         S )Nr�  r–  )r•   ÚoffSizes     r2   ÚgetReadArrayz$CFF2Index.read.<locals>.getReadArrayJ  s3   € àÔ(ØÔ)ØÔ)ØÔ(ð	ð ð
 ôð r4   Frˆ   r   c                  ó�   •‡‡‡‡— ‰	                      ¦   «         Š‰	j        Š‰‰dz   ‰z  z   dz
  Š ‰‰‰¦  «        Šˆˆˆˆˆˆˆ
fd„} | S )Nr   c                 ó�  •— ‰	                      ‰| ‰z  z   ¦  «          ‰d¦  «        }‰	                      ‰|d         z   ¦  «         ‰	                     |d         |d         z
  ¦  «        }‰
j        �3‰
                     ¦   «         }|                     |‰‰	j        ¦  «         |}n"‰
j        �‰
j                             |‰¦  «        }|S )Nr  r   r   )r‹   rÏ  rÅ  rÚ  Ú
localStaterÆ  rŒ   )r�   r³  rµ  ÚobjÚdata_posrŽ   rÉ  Ú
offset_posr£   r�   r…   s       €€€€€€€r2   r’   z8CFF2Index.read.<locals>.get_read_item.<locals>.read_itemq  sÅ   ø€ Ø×$Ò$ Z°!°g±+Ñ%=Ñ>Ô>Ð>Ø'˜i¨™lœl�GØ×$Ò$ X°¸´
Ñ%:Ñ;Ô;Ð;Ø&×/Ò/°¸´
¸WÀQ¼ZÑ0GÑHÔH�Dà”Ð2Ø"ŸošoÑ/Ô/˜ØŸš d¨D°+Ô2HÑIÔIÐIØ"˜˜ØœÐ4Ø#œ×3Ò3°D¸$Ñ?Ô?˜Ø�Kr4   r“   )r’   rÏ  rÐ  r£   r�   r¡   rŽ   rÊ  rÉ  r•   r…   s    @@@@€€€€€€r2   r–   z%CFF2Index.read.<locals>.get_read_itemk  sƒ   øøøøø€ Ø$Ÿkšk™mœm�Ø#œZ�
Ø%¨°©°gÑ(=Ñ=ÀÑA�Ø(˜L¨°gÑ>Ô>�	ð ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð !Ð r4   )rÿ   r8  r›   ÚpoprÏ  rÅ  rÚ  rÍ  rÆ  rŒ   r^   r   )r…   r•   rŽ   r    r£   r›   r³  rø  Ú
lastOffsetr  rµ  rÎ  r–   r’   r¢   r¡   rÊ  rÉ  s   ```            @@@r2   rŒ   zCFF2Index.readD  s¸  øøøøøø€ Ø× Ò Ñ"Ô"ˆØ�AŠ:ˆ:ØˆIØ×"Ò"Ñ$Ô$ˆð	ð 	ð 	ð !�L ¨Ñ1Ô1ˆ	àŒy Ð%Ð3¨%°!ª)ˆØð 1	Ø�i ¨¡	Ñ*Ô*ˆGØˆEØ Ÿš Q™œˆJØ�OŠO˜J¨™NÑ+Ô+Ð+à!ð $ð $�Ø! VÒ+Ð+Ð+Ð+Ø—’ v°
Ñ':Ñ;Ô;�à”?Ð.ØŸ/š/Ñ+Ô+�CØ—M’M $¨¨fÔ.?Ñ@Ô@Ð@Ø�D�DØ”_Ð0Øœ?×/Ò/°°dÑ;Ô;�Dà—’˜TÑ"Ô"Ð"Ø#�
�
ØˆLð!ð !ð !ð !ð !ð !ð !ð !ð !ð !ð, &˜™œˆIÝ˜)˜ uÑ,Ñ-Ô-ˆAð ˆHr4   c                 ó<  ‡ ‡‡‡— |}‰                      t          |¦  «        ¦  «         t          |¦  «        sd S ‰ j        �ˆfd„|D ¦   «         }n%‰ j        �ˆˆ ˆˆfd„t	          |¦  «        D ¦   «         }d„ |D ¦   «         }t          t          |d¬¦  «        ¦  «        }|d         }|dk     rdn|dk     rd	n	|d
k     rdnd}	‰                     |	¦  «         ‰j        ‰j	        ‰j
        ‰j        dœ|	         }
 |
|¦  «         |D ]}‰                     |¦  «         Œd S )Nc                 ó:   •— g | ]}|                      ‰¦  «        ‘ŒS r˜   rÝ  )r™   rµ  rŽ   s     €r2   rV  z#CFF2Index.write.<locals>.<listcomp>�  s%   ø€ Ð:Ð:Ð:¨D�T—\’\ $Ñ'Ô'Ð:Ð:Ð:r4   c           	      óR   •— g | ]#\  }}‰j                              ‰‰‰||¦  «        ‘Œ$S r˜   )rÆ  r¯   )r™   r�   rµ  rŽ   r…   r    r²   s      €€€€r2   rV  z#CFF2Index.write.<locals>.<listcomp>’  sE   ø€ ð ð ð á�A�tð ”×%Ò% f¨d°I¸tÀQÑGÔGðð ð r4   c                 ó,   — g | ]}t          |¦  «        ‘ŒS r˜   )rÕ  )r™   rµ  s     r2   rV  z#CFF2Index.write.<locals>.<listcomp>—  s   € Ð/Ð/Ð/ •3�t‘9”9Ð/Ð/Ð/r4   r   )Úinitialr1  é   i   r  i   rA  ré   r�  )r  rÕ  rÅ  rÆ  r®   rW  r(   r<  r>  r*  rŸ  r	  rÖ  )r…   r²   rŽ   r    rZ   r¸   rø  r³  rÒ  rÉ  rµ   rµ  s   ````        r2   r¯   zCFF2Index.writeˆ  s›  øøøø€ Øˆà×Ò�#˜e™*œ*Ñ%Ô%Ð%Ý�5‰zŒzð 	ØˆFàŒ?Ð&Ø:Ð:Ð:Ð:°EÐ:Ñ:Ô:ˆEˆEØŒ_Ð(ðð ð ð ð ð ð å(¨Ñ/Ô/ðñ ô ˆEð
 0Ð/¨Ð/Ñ/Ô/ˆÝ•z '°1Ð5Ñ5Ô5Ñ6Ô6ˆà˜R”[ˆ
ð ˜EÒ!Ð!ð ˆAà  7Ò*Ð*��°ZÀ)Ò5KÐ5K°°ÐQRð 	ð
 	×Ò˜'Ñ"Ô"Ð"ð Ô%ØÔ&ØÔ&ØÔ%ð	
ð 
ð
 ôˆ
ð 	ˆ
�7ÑÔÐØð 	#ð 	#ˆDØ×Ò˜TÑ"Ô"Ð"Ð"ð	#ð 	#r4   c                 óÎ   — | j         �.|                       ¦   «         }|                     d |||¦  «         |S | j        �| j                             |||¦  «        S t	          ¦   «         ‚r.   )rÅ  ré  rÆ  r½   rª   )r…   r»   r¼   rŽ   rÎ  s        r2   r½   zCFF2Index.xmlRead­  sd   € ØŒ?Ð&Ø—/’/Ñ#Ô#ˆCØ�KŠK˜˜e W¨dÑ3Ô3Ð3ØˆJØŒ_Ð(Ø”?×*Ò*¨5°'¸4Ñ@Ô@Ð@å%Ñ'Ô'Ð'r4   c           
      ó  — | j         �2t          |¦  «        D ] \  }}|                     ||d|fg|¦  «         Œ!d S | j        �;t          |¦  «        D ])\  }}| j                             |||||d|fgz   ¦  «         Œ*d S t          ¦   «         ‚)NrD  )rÅ  r®   rà  rÆ  rÁ   rª   )r…   rÀ   rŽ   r³   rK   r»   r�   rµ  s           r2   rÁ   zCFF2Index.xmlWrite·  sÄ   € ØŒ?Ð&Ý$ UÑ+Ô+ð Bð B‘��4Ø—
’
˜9 d¨g°q¨\¨N¸DÑAÔAÐAÐAðBð BàŒ_Ð(Ý$ UÑ+Ô+ð ð ‘��4Ø”×(Ò(Ø˜t T¨4°¸7ÀA¸,¸Ñ1Gñô ð ð ðð õ
 &Ñ'Ô'Ð'r4   r.   )r\   rÊ   rË   r†   rŒ   r¯   r½   rÁ   r˜   r4   r2   rÁ  rÁ  0  sˆ   € € € € € ð ð
ð ØØð
ð 
ð 
ð 
ð 
ð&Bð Bð BðH##ð ##ð ##ð ##ðJ(ð (ð (ð
(ð 
(ð 
(ð 
(ð 
(r4   rÁ  c                   ó   — e Zd Zd„ ZdS )Ú
LookupFlagc                 ó  — |                      ||d|fgz   ¦  «         g }|dz  r|                     d¦  «         |dz  r|                     d¦  «         |dz  r|                     d¦  «         |dz  r|                     d	¦  «         |d
z  r|                     d¦  «         |dz  r|                     d|dz	  z  ¦  «         |r(|                     d                     |¦  «        ¦  «         |                     ¦   «          d S )Nr³   r   ÚrightToLeftr  ÚignoreBaseGlyphsré   ÚignoreLigaturesrˆ   ÚignoreMarksr¢  ÚuseMarkFilteringSeti ÿ  zmarkAttachmentType[%i]rz  )rØ   r^   rM  r{  rÙ   r|  s          r2   rÁ   zLookupFlag.xmlWriteÅ  s*  € Ø×Ò˜D %¨G°UÐ+;Ð*<Ñ"<Ñ=Ô=Ð=ØˆØ�4‰<ð 	(Ø�LŠL˜Ñ'Ô'Ð'Ø�4‰<ð 	-Ø�LŠLÐ+Ñ,Ô,Ð,Ø�4‰<ð 	,Ø�LŠLÐ*Ñ+Ô+Ð+Ø�4‰<ð 	(Ø�LŠL˜Ñ'Ô'Ð'Ø�4‰<ð 	0Ø�LŠLÐ.Ñ/Ô/Ð/Ø�6‰>ð 	BØ�LŠLÐ1°U¸a±ZÑ@ÑAÔAÐAØð 	/Ø×Ò˜cŸhšh u™oœoÑ.Ô.Ð.Ø×ÒÑÔÐÐÐr4   NrN  r˜   r4   r2   rÜ  rÜ  Ä  s#   € € € € € ðð ð ð ð r4   rÜ  c                   óN   ‡ — e Zd ZeZˆ fd„Zed„ ¦   «         Zed„ ¦   «         Zˆ xZ	S )Ú
_UInt8Enumc                 óp   •— |                       t          ¦   «                              |||¦  «        ¦  «        S r.   )Ú	enumClassr¬  rŒ   )r…   r•   rŽ   r    r¯  s       €r2   rŒ   z_UInt8Enum.readÜ  s)   ø€ Ø�~Š~�e™gœgŸlšl¨6°4¸ÑCÔCÑDÔDÐDr4   c                 óP   — t          | j        |                     ¦   «         ¦  «        S r.   )rŽ  ræ  Úupperr–  s     r2   rÕ   z_UInt8Enum.fromStringß  s   € å�s”} e§k¢k¡m¤mÑ4Ô4Ð4r4   c                 óZ   — |                       |¦  «        j                             ¦   «         S r.   )ræ  rK   Úlowerr–  s     r2   rÒ   z_UInt8Enum.toStringã  s#   € à�}Š}˜UÑ#Ô#Ô(×.Ò.Ñ0Ô0Ð0r4   )
r\   rÊ   rË   r�   ræ  rŒ   rŸ  rÕ   rÒ   r´  rµ  s   @r2   rä  rä  Ù  sx   ø€ € € € € Ø€IðEð Eð Eð Eð Eð ð5ð 5ñ „[ð5ð ð1ð 1ñ „[ð1ð 1ð 1ð 1ð 1r4   rä  c                   ó   — e Zd ZeZdS )r$   N)r\   rÊ   rË   Ú_ExtendModeræ  r˜   r4   r2   r$   r$   è  s   € € € € € Ø€I€I€Ir4   r$   c                   ó   — e Zd ZeZdS )r%   N)r\   rÊ   rË   Ú_CompositeModeræ  r˜   r4   r2   r%   r%   ì  s   € € € € € Ø€I€I€Ir4   r%   c                   óN   — e Zd ZdZdZdZdZdZed„ ¦   «         Z	ed„ ¦   «         Z
dS )	ÚMappingEntryFormatr   r  ré   rˆ   r�  c                 ó(   — | t           j        z  dk    S )NrÍ  ©rð  ÚCODE_POINT_BIAS_BITSrð  s    r2   Úbias_present_u16z#MappingEntryFormat.bias_present_u16ø  ó   € àÕ)Ô>Ñ>À4ÒGÐGr4   c                 ó(   — | t           j        z  dk    S )Nr�  rò  rð  s    r2   Úbias_present_u24z#MappingEntryFormat.bias_present_u24ü  rõ  r4   N)r\   rÊ   rË   ÚHAS_SUBSET_DEFÚHAS_CHILD_ENTRIESÚHAS_ENTRY_IDÚHAS_PATCH_FORMATró  Úpropertyrô  r÷  r˜   r4   r2   rð  rð  ð  sl   € € € € € Ø€NØÐØ€LØÐàÐàðHð Hñ „XðHð ðHð Hñ „XðHð Hð Hr4   rð  c                   ó(   — e Zd Zd„ Zdd„Zd„ Zd„ ZdS )ÚMappingEntriesConverterc                 ó  — ddl m} ddlm} |d         }g }d}t	          |¦  «        D �]à}	i }
t          |                     ¦   «         ¦  «        }||
d<   |t
          j        z  rì|                     ¦   «         }g }t	          |¦  «        D ]+}	|                     ¦   «         }| 	                    |¦  «         Œ,||
d<   | 
                    ¦   «         }g }t	          |¦  «        D ]k}	|                     ¦   «         } ||                     ¦   «         d¦  «        } ||                     ¦   «         d¦  «        }| 	                    |||d	œ¦  «         Œl||
d
<   |t
          j        z  rr|                     ¦   «         }t          |dz  ¦  «        }|dz  }||
d<   g }t	          |¦  «        D ]+}	|                     ¦   «         }| 	                    |¦  «         Œ,||
d<   |t
          j        z  rJg }	 |                     ¦   «         }|dz	  }|dz  }|dz   |z   }| 	                    |¦  «         |}|snŒA||
d<   n|dz   g|
d<   |dz   }|t
          j        z  r|                     ¦   «         |
d<   |t
          j        z  rˆd}|j        r|                     ¦   «         }n|j        r| 
                    ¦   «         }||
d<    ||j        |j        d …         |d¬¦  «        \  }} |                     | ¦  «         t1          |¦  «        |
d<   | 	                    |
¦  «         �Œâ|S )Nr   )r   )Údecoder   r1  ÚformatFlagsÚfeatureTagsr¢  ©ÚtagÚstartÚendÚdesignSpaceSegmentsrÏ  é   ÚchildEntryConjunctiveÚchildEntryIndicesTr   ÚentryIdsÚpatchFormatÚcodePointsBiasiÿÿ )r­  ÚmaxValueÚ
codePoints)ÚfontTools.misc.fixedToolsr   ÚfontTools.misc.iftSparseBitSetr   rž   rð  r8  rø  rW  r^   r!  rì   rù  r¦  rD  rú  Ú	readInt24rû  ró  r÷  rô  rÑ  r�   rŸ   rX  )!r…   r•   rŽ   r    r”  Ú	sbsDecodeÚ
entryCountr6  ÚlastEntryIdr�  Úentryr  ÚfeatureCountÚfeaturesr  ÚdesignSpaceCountrz  ÚsegTagr  r  ÚmodeAndCountÚconjunctiveÚ
childCountÚchildIndicesr�  ÚidsÚ
encodedValÚdeltaÚhasMoreÚcurrentEntryIdr­  Ú
codepointsÚconsumeds!                                    r2   rŒ   zMappingEntriesConverter.read  s¯  € ØCÐCÐCÐCÐCÐCØFÐFÐFÐFÐFÐFà˜LÔ)ˆ
ØˆØˆå�zÑ"Ô"ð G	"ñ G	"ˆAØˆEÝ,¨V×-=Ò-=Ñ-?Ô-?Ñ@Ô@ˆKØ#.ˆE�-Ñ àÕ/Ô>Ñ>ð 8Ø%×/Ò/Ñ1Ô1�Ø�Ý˜|Ñ,Ô,ð )ð )�AØ Ÿ.š.Ñ*Ô*�CØ—O’O CÑ(Ô(Ð(Ð(Ø'/��mÑ$Ø#)×#4Ò#4Ñ#6Ô#6Ð Ø�ÝÐ/Ñ0Ô0ð Qð Q�AØ#Ÿ^š^Ñ-Ô-�FØ!˜E &§/¢/Ñ"3Ô"3°RÑ8Ô8�EØ˜% §¢Ñ 1Ô 1°2Ñ6Ô6�CØ—O’O¨F¸UÈ3Ð$OÐ$OÑPÔPÐPÐPØ/7�Ð+Ñ,àÕ/ÔAÑAð 	:Ø%×/Ò/Ñ1Ô1�Ý" <°$Ñ#6Ñ7Ô7�Ø)¨DÑ0�
Ø1<�Ð-Ñ.Ø!�Ý˜zÑ*Ô*ð -ð -�AØ ×+Ò+Ñ-Ô-�CØ ×'Ò'¨Ñ,Ô,Ð,Ð,Ø-9�Ð)Ñ*àÕ/Ô<Ñ<ð .Ø�ðð "(×!1Ò!1Ñ!3Ô!3�JØ&¨!™O�EØ(¨4Ñ/�GØ%0°1¡_°uÑ%<�NØ—J’J˜~Ñ.Ô.Ð.Ø"0�Kà"ð Øðð %(��jÑ!Ð!à%0°1¡_Ð$5��jÑ!Ø)¨A™o�àÕ/Ô@Ñ@ð :Ø'-×'7Ò'7Ñ'9Ô'9��mÑ$àÕ/ÔDÑDð 9Ø�ØÔ/ð /Ø!×,Ò,Ñ.Ô.�D�DØ Ô1ð /Ø!×,Ò,Ñ.Ô.�DØ*.�Ð&Ñ'à'0 yØ”K ¤
  Ô-°DÀ8ð(ñ (ô (Ñ$�
˜Hð —’˜xÑ(Ô(Ð(Ý&,¨ZÑ&8Ô&8��lÑ#à�NŠN˜5Ñ!Ô!Ð!Ñ!Øˆr4   Nc                 óp  ‡— ddl m} ddlm} |}d}	|D �] }
|
                     dt          d¦  «        ¦  «        }|                     |j        ¦  «         |t
          j        z  rô|
                     dg ¦  «        }|                     t          |¦  «        ¦  «         |D ]}| 
                    |¦  «         Œ|
                     dg ¦  «        }|                     t          |¦  «        ¦  «         |D ]g}| 
                    |d         ¦  «         |                      ||d	         d
¦  «        ¦  «         |                      ||d         d
¦  «        ¦  «         Œh|t
          j        z  rt|
                     dg ¦  «        }|
                     dd¦  «        }t          |¦  «        dz  |rdndz  }|                     |¦  «         |D ]}|                     |¦  «         Œ|t
          j        z  rp|
                     dg ¦  «        }t!          |¦  «        D ]I\  }}||	z
  dz
  }|t          |¦  «        dz
  k     rdnd}|dz  |z  }|                     |dz  ¦  «         |}	ŒJn|	dz  }	|t
          j        z  r)|                     |
                     dd¦  «        ¦  «         |t
          j        z  r�|
                     dd¦  «        Š|j        r|                     ‰¦  «         n|j        r|                     ‰¦  «         |
                     dg ¦  «        }|                      |ˆfd„|D ¦   «         ¦  «        ¦  «         �Œ"d S )Nr   )Úencode)r   r1  r  r  r  r  r  r¢  r  r
  r	  Fr  rÏ  r  r   iÿÿÿ r  r  r  c                 ó&   •— g | ]}|‰k    ¯|‰z
  ‘ŒS r˜   r˜   )r™   Úcr­  s     €r2   rV  z1MappingEntriesConverter.write.<locals>.<listcomp>�  s#   ø€ Ð+VÐ+VÐ+V¸ÈAÐQUÊIÈI¨A°©HÈIÈIÈIr4   )r  r'  r  r   rY   rð  r<  r³   rø  rÕ  rY  r'  ró   rù  rG  rú  r®   rû  ró  r÷  rô  rÖ  )r…   r²   rŽ   r    r³   r¸   Ú	sbsEncoder™  r6  ÚlastIdr  r  r  r  rz  Úsegr  r  r  r�  r  r�   Úeidr!  Úhas_moreÚencoded_valuer$  r­  s                              @r2   r¯   zMappingEntriesConverter.writeV  s¡  ø€ ØFÐFÐFÐFÐFÐFØCÐCÐCÐCÐCÐCàˆØˆàð 2	Yñ 2	YˆEð  Ÿ)š) MÕ3EÀaÑ3HÔ3HÑIÔIˆKØ×Ò˜kÔ/Ñ0Ô0Ð0àÕ/Ô>Ñ>ð 
<Ø Ÿ9š9 ]°BÑ7Ô7�Ø×!Ò!¥# h¡-¤-Ñ0Ô0Ð0Ø#ð )ð )�CØ—O’O CÑ(Ô(Ð(Ð(Ø Ÿ9š9Ð%:¸BÑ?Ô?�Ø×"Ò"¥3 x¡=¤=Ñ1Ô1Ð1Ø#ð <ð <�CØ—O’O C¨¤JÑ/Ô/Ð/Ø×$Ò$ U U¨3¨w¬<¸Ñ%<Ô%<Ñ=Ô=Ð=Ø×$Ò$ U U¨3¨u¬:°rÑ%:Ô%:Ñ;Ô;Ð;Ð;àÕ/ÔAÑAð ,Ø$ŸyšyÐ)<¸bÑAÔA�Ø#ŸišiÐ(?ÀÑGÔG�Ý # LÑ 1Ô 1°DÑ 8À[Ð=W¸T¸TÐVWÑX�Ø×!Ò! ,Ñ/Ô/Ð/Ø'ð ,ð ,�CØ×&Ò& sÑ+Ô+Ð+Ð+àÕ/Ô<Ñ<ð Ø—i’i 
¨BÑ/Ô/�Ý'¨™nœnð !ð !‘F�A�sð   &™L¨1Ñ,�EØ$%­¨C©¬°1©Ò$4Ð$4˜q˜q¸!�HØ%*¨a¡Z°8Ñ$;�MØ×&Ò& }°xÑ'?Ñ@Ô@Ð@Ø �F�Fð!ð ˜!‘�àÕ/Ô@Ñ@ð ?Ø×!Ò! %§)¢)¨M¸1Ñ"=Ô"=Ñ>Ô>Ð>àÕ/ÔDÑDð YØ—y’yÐ!1°1Ñ5Ô5�ØÔ/ð -Ø×&Ò& tÑ,Ô,Ð,Ð,Ø Ô1ð -Ø×&Ò& tÑ,Ô,Ð,Ø"ŸYšY |°RÑ8Ô8�
Ø× Ò   Ð+VÐ+VÐ+VÐ+V¸jÐ+VÑ+VÔ+VÑ!WÔ!WÑXÔXÐXùðe2	Yð 2	Yr4   c           
      ó,  — |D �]�}|                      dt          d¦  «        ¦  «        }|                     d|j        ¬¦  «         |                     ¦   «          d|v r6|d         D ]-}|                     d|¬¦  «         |                     ¦   «          Œ.d|v r6|d         D ]-}	|                     d	|	¬¦  «         |                     ¦   «          Œ.d
|v rJ|d
         D ]A}
|                     d|
d         |
d         |
d         ¬¦  «         |                     ¦   «          ŒBd|v r‚|                     dt          |                      dd¦  «        ¦  «        ¬¦  «         |                     ¦   «          |d         D ]-}|                     d|¬¦  «         |                     ¦   «          Œ.d|v r1|                     d|d         ¬¦  «         |                     ¦   «          d|v r�|                     d|                      dd¦  «        ¬¦  «         |                     ¦   «          d                     d„ |d         D ¦   «         ¦  «        }|                     d|¬¦  «         |                     ¦   «          |                     d¦  «         |                     ¦   «          �Œ‘d S )Nr  r   r  )r  r  ÚentryIdrÑ   r  r.  r  ÚdesignSpaceSegmentr  r  r  r  r
  r	  FÚ
childEntryrC  r  r  r  rz  c              3   ó4   K  — | ]}t          |¦  «        V — Œd S r.   )Ústr©r™   r)  s     r2   rš   z3MappingEntriesConverter.xmlWrite.<locals>.<genexpr>¸  s(   è è € Ð(MÐ(M°A­¨Q©¬Ð(MÐ(MÐ(MÐ(MÐ(MÐ(Mr4   )	rY   rð  r¨  r³   rÙ   rØ   rÆ   r{  r©  )r…   rÀ   rŽ   r³   rK   r»   r  Úformat_flagsr-  r  r,  r�  ÚcodePointsStrs                r2   rÁ   z MappingEntriesConverter.xmlWrite‘  s  € Øð *	 ñ *	 ˆEØ Ÿ9š9 ]Õ4FÀqÑ4IÔ4IÑJÔJˆLØ×Ò˜w°LÔ4FÐÑGÔGÐGØ×ÒÑÔÐØ˜UÐ"Ð"Ø  Ô,ð (ð (�CØ×'Ò'¨	¸Ð'Ñ=Ô=Ð=Ø×%Ò%Ñ'Ô'Ð'Ð'Ø Ð%Ð%Ø  Ô/ð (ð (�CØ×'Ò'¨¸CÐ'Ñ@Ô@Ð@Ø×%Ò%Ñ'Ô'Ð'Ð'Ø$¨Ð-Ð-Ø Ð!6Ô7ð (ð (�CØ×'Ò'Ø,Ø œJØ! 'œlØ œJð	 (ñ ô ð ð ×%Ò%Ñ'Ô'Ð'Ð'Ø" eÐ+Ð+Ø×#Ò#Ø+Ý˜eŸišiÐ(?ÀÑGÔGÑHÔHð $ñ ô ð ð ×!Ò!Ñ#Ô#Ð#Ø Ð!4Ô5ð (ð (�CØ×'Ò'¨¸CÐ'Ñ@Ô@Ð@Ø×%Ò%Ñ'Ô'Ð'Ð'Ø Ð%Ð%Ø×#Ò# M¸¸}Ô9MÐ#ÑNÔNÐNØ×!Ò!Ñ#Ô#Ð#Ø˜uÐ$Ð$Ø×#Ò#Ø$¨E¯IªIÐ6FÈÑ,JÔ,Jð $ñ ô ð ð ×!Ò!Ñ#Ô#Ð#Ø #§¢Ð(MÐ(M¸¸|Ô9LÐ(MÑ(MÔ(MÑ MÔ M�Ø×#Ò# L¸Ð#ÑFÔFÐFØ×!Ò!Ñ#Ô#Ð#Ø×Ò˜WÑ%Ô%Ð%Ø×ÒÑÔÐÑðU*	 ð *	 r4   c           
      ó¤  — g }|D �]I}t          |t          ¦  «        sŒ|\  }}}|dk    �r#t          |                     dd¦  «        ¦  «        }dt	          |¦  «        i}|D �]Ö}	t          |	t          ¦  «        sŒ|	\  }
}}|
dk    r=|                     dg ¦  «                             t          |d         ¦  «        ¦  «         Œb|
dk    r0|                     dg ¦  «                             |d         ¦  «         Œ˜|
d	k    rZ|                     d
g ¦  «                             |d         t          |d         ¦  «        t          |d         ¦  «        dœ¦  «         Œø|
dk    r't          t          |d         ¦  «        ¦  «        |d<   �Œ%|
dk    r>|                     dg ¦  «                             t          |d         ¦  «        ¦  «         �Œi|
dk    rt          |d         ¦  «        |d<   �Œ‰|
dk    rt          |d         ¦  «        |d<   �Œ©|
dk    r'd„ |d          	                    ¦   «         D ¦   «         |d<   �ŒØ|                     |¦  «         �ŒK|S )Nr  r  Ú0r1  r  r³   r.  r  r2  r  r  r  r  r  r	  r3  r
  rD  r  r  r  c                 ó0   — g | ]}|¯t          |¦  «        ‘ŒS r˜   rå   r6  s     r2   rV  z3MappingEntriesConverter.xmlRead.<locals>.<listcomp>ä  s3   € ð /ð /ð /Ø'(Àqð/Ý ™FœFð/ð /ð /r4   )
r/   r0   r   rY   rð  Ú
setdefaultr^   r�  r¦  Úsplit)r…   r»   r¼   rŽ   r6  ÚelemrK   Úformat_flags_intr  Úe_elemÚenameÚeattrsÚecontents                r2   r½   zMappingEntriesConverter.xmlRead¾  s¥  € ØˆØð '	&ñ '	&ˆDÝ˜d¥EÑ*Ô*ð ØØ#'Ñ ˆD�%˜Ø�wŠ‰Ý#+¨E¯IªI°mÀSÑ,IÔ,IÑ#JÔ#JÐ Ø&Õ(:Ð;KÑ(LÔ(LÐM�Ø%ð ñ �FÝ% f­eÑ4Ô4ð !Ø Ø.4Ñ+�E˜6 8Ø 	Ò)Ð)Ø×(Ò(¨°RÑ8Ô8×?Ò?Ý$ V¨G¤_Ñ5Ô5ñô ð ð ð  ,Ò.Ð.Ø×(Ò(¨¸Ñ;Ô;×BÒBÀ6È'Ä?ÑSÔSÐSÐSØÐ"6Ò6Ð6Ø×(Ò(Ð)>ÀÑCÔC×JÒJà'-¨e¤}Ý).¨v°g¬Ñ)?Ô)?Ý',¨V°E¬]Ñ';Ô';ðð ñô ð ð ð Ð"9Ò9Ð9Ý9=½hÀvÈgÄÑ>WÔ>WÑ9XÔ9X˜Ð5Ñ6Ñ6Ø ,Ò.Ð.Ø×(Ò(Ð)<¸bÑAÔA×HÒHÝ$ V¨G¤_Ñ5Ô5ñô ð ñ ð  -Ò/Ð/Ý/7¸¸w¼Ñ/HÔ/H˜˜mÑ,Ñ,ØÐ"2Ò2Ð2Ý2:¸6À'¼?Ñ2KÔ2K˜Ð.Ñ/Ñ/Ø ,Ò.Ð.ð/ð /Ø,2°7¬O×,AÒ,AÑ,CÔ,Cð/ñ /ô /˜˜lÑ+ùð —’˜uÑ%Ô%Ð%ùØˆr4   r.   rŠ  r˜   r4   r2   rþ  rþ    s_   € € € € € ðPð Pð Pðd9Yð 9Yð 9Yð 9Yðv+ ð + ð + ðZ*ð *ð *ð *ð *r4   rþ  Úint8Úint16Úint32r<   r8   Úuint24r=   Úchar64rê  ÚMappingEntriesÚOffsetÚLOffsetÚOffset24Ú	TupleList)rÃ  )rÂ  c                 ó.   — t          t          | ¬¦  «        S ©N)rX   )r)   rE  ©ÚCs    r2   r3   r3   	  ó   € �7¥9¸Ð;Ñ;Ô;€ r4   c                 ó.   — t          t          | ¬¦  «        S rO  )r)   r«  rP  s    r2   r3   r3   	  s   € ­Õ1HÐUVÐ)WÑ)WÔ)W€ r4   c                 ó.   — t          t          | ¬¦  «        S rO  )r)   rð  rP  s    r2   r3   r3   	  rR  r4   c                 ó.   — t          t          | ¬¦  «        S rO  )r)   r[   rP  s    r2   r3   r3   	  s   € �'¥%°AÐ6Ñ6Ô6€ r4   c                 ó.   — t          t          | ¬¦  «        S rO  )r)   r  rP  s    r2   r3   r3   	  s   € �7¥6°aÐ8Ñ8Ô8€ r4   c                 ó.   — t          t          | ¬¦  «        S rO  )r)   r  rP  s    r2   r3   r3   	  s   € �W¥W¸Ð;Ñ;Ô;€ r4   )ÚVarCompositeGlyphListrY  rk  rG   rH   rI   r#   rE  r«  rð  ÚOffsetToÚ	LOffsetToÚLOffset24To)ƒr  r   r”  r   r™  r   rž  r   r›  r   r¼  r   r¾  Ú%fontTools.ttLib.tables.TupleVariationr	   ÚfontTools.misc.roundToolsr
   r   ÚfontTools.misc.textToolsr   r   r   r   r   ÚfontTools.misc.lazyToolsr   ÚfontTools.ttLibr   r   rC  r   r   r   r   r   ÚotDataSchemar   ÚotTablesr   r   r   r   r   r    r!   r"   r#   r$   rì  r%   rî  r&   Ú	itertoolsr'   r(   Ú	functoolsr)   Útypesr*   rÍ   rê  Útypingr+   ÚloggingÚenumr,   Ú	getLoggerr\   rr  rä  rW  rg   Úobjectri   rÏ   rÝ   râ   rè   rü   r  r  r  r  r,  r6  r@  rJ  rO   rP   rQ   rU  r[  ri  rl  rv  r  r„  r‹  r¡  r¥  r¨  r·  r¹  rÅ  rT   rR   r[   r  r  r@   r>   r?   rA   r7   r:  rE  r«  rÃ  rð  rY  rk  ru  rŒ  r¡  rµ  rÁ  rÜ  rä  rð  rþ  rS   r˜   r4   r2   ú<module>rk     sÆ  ððð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð AÐ @Ð @Ð @Ð @Ð @Ø JÐ JÐ JÐ JÐ JÐ JÐ JÐ JØ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MØ -Ð -Ð -Ð -Ð -Ð -Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?ðð ð ð ð ð ð ð ð ð ð ð ð ð ð $Ð #Ð #Ð #Ð #Ð #ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð .Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ø Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ø 	€	€	€	Ø €€€Ø Ð Ð Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð à€gÔ˜Ñ!Ô!€Ø
(Ð
(€ðC(˜t Iœð C(ð C(ð C(ð C(ðLjð jð jð jð j�Fñ jô jð jðZ/ð /ð /ð /ð /�-ñ /ô /ð /ð"ð ð ð ð �Kñ ô ð ðð ð ð ð ˆ{ñ ô ð ð&ð &ð &ð &ð &ˆ8ñ &ô &ð &ð 'ð 'ð 'ð 'ð 'ˆHñ 'ô 'ð 'ð  ð  ð  ð  ð  ˆeñ  ô  ð  ð!ð !ð !ð !ð !ˆ}˜eñ !ô !ð !ð'ð 'ð 'ð 'ð 'ˆHñ 'ô 'ð 'ð (ð (ð (ð (ð (ˆXñ (ô (ð (ð &ð &ð &ð &ð &ˆ8ñ &ô &ð &ð 'ð 'ð 'ð 'ð 'ˆHñ 'ô 'ð 'ð "ð "ð "ð "ð "ˆXñ "ô "ð "ð ð  ð  ð  ð  �(ñ  ô  ð  ð	ð 	ð 	ð 	ð 	�K ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	�[ &ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	�K ñ 	ô 	ð 	ðð ð ð ð ˆ+ñ ô ð ðAð Að Að Að Aˆkñ Aô Að Að&ð ð ð ð �ñ ô ð ð
ð ð ð ð ˆVñ ô ð ð$ð ð ð ð �ñ ô ð ðð ð ð ð �ñ ô ð ð.ð .ð .ð .ð .�ñ .ô .ð .ð0ð 0ð 0ð 0ð 0�Zñ 0ô 0ð 0ð:ð ð ð ð ˆNñ ô ð ð ð  ð  ð  ð  ˆnñ  ô  ð  ð>ð >ð >ð >ð >ˆGñ >ô >ð >ð0ð ð ð ð �%ñ ô ð ðð ð ð ð ˆkñ ô ð ð0ð ð ð ð ˆ[ñ ô ð ð>D4ð D4ð D4ð D4ð D4ˆ]ñ D4ô D4ð D4ðN>ð >ð >ð >ð >�vñ >ô >ð >ð6+ð +ð +ð +ð +ˆFñ +ô +ð +ðDð ð ð ð ˆUñ ô ð ðð ð ð ð ˆeñ ô ð ðMð Mð Mð Mð M�ñ Mô Mð MðLð Lð Lð Lð Lˆuñ Lô Lð LðGð Gð Gð Gð G�&˜(ñ Gô Gð GðLð Lð Lð Lð L�Eñ Lô Lð Lð8ð 8ð 8ð 8ð 8�(ñ 8ô 8ð 8ð&ð ð ð ð �+ñ ô ð ð0tð tð tð tð t�ñ tô tð tð|8=ð 8=ð 8=ð 8=ð 8=˜mñ 8=ô 8=ð 8=ðv|>ð |>ð |>ð |>ð |>˜Mñ |>ô |>ð |>ðBpð pð pð pð p�ñ pô pð pðf	ð ð ð ð �-ñ ô ð ðD,ð ,ð ,ð ,ð ,�-ñ ,ô ,ð ,ð^2(ð 2(ð 2(ð 2(ð 2(�ñ 2(ô 2(ð 2(ðj-
ð -
ð -
ð -
ð -
�]ñ -
ô -
ð -
ð`0(ð 0(ð 0(ð 0(ð 0(�=ñ 0(ô 0(ð 0(ðfð ð ð ð ñ ô ð ð$Q(ð Q(ð Q(ð Q(ð Q(�ñ Q(ô Q(ð Q(ðhð ð ð ð �ñ ô ð ð*1ð 1ð 1ð 1ð 1�ñ 1ô 1ð 1ðð ð ð ð �ñ ô ð ðð ð ð ð �Jñ ô ð ðHð Hð Hð Hð H˜ñ Hô Hð Hð&eð eð eð eð e˜mñ eô eð eðP3à
ˆDð3ð ˆUð3ð ˆTð	3ð
 ˆUð3ð ˆfð3ð ˆfð3ð ˆeð3ð ˆfð3ð ˆwð3ð �ð3ð ˆwð3ð 
ˆ3ð3ð ˆwð3ð �ð3ð  ˆfð!3ð" �*ð#3ð$ ˆUð%3ð 3ð& ˆwð'3ð( ˆUð)3ð* �;ð+3ð, ˆfð-3ð. Ð-ð/3ð0 ˆeð13ð2 ˆvð33ð4 �ð53ð6 �;ð73ð8 �*ð93ð: �nð;3ð< �Lð=3ð> �*ð?3ð@ �*ðA3ðB �]ðC3ðD �ðE3ðF ��˜°{ÐCÑCÔCðG3ð 3ðH %˜W YÐ:KÐLÑLÔLàØØ!Ø$Ø!Ø)à;Ð;ØWÐWØ;Ð;Ø6Ð6Ø8Ð8Ø;Ð;ðe3ð 3ð 3Ð Ð Ð r4   