§
    èƒñjoÍ ã                   óˆ
  — 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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/m0Z0m1Z1m2Z2m3Z4m5Z6m7Z7 d dl8m9Z9m:Z: d dl;m<Z< d dl=m>Z> d dl?Z?d dl@Z@d dlAmBZB d dlCZCd dlDmEZE  eCjF        eG¦  «        ZHd„ ZIdeJe%         fd„ZK G d„ deL¦  «        ZM G d„ deM¦  «        ZN G d„ deN¦  «        ZO G d„ deN¦  «        ZP G d„ deP¦  «        ZQ G d„ deP¦  «        ZR G d „ d!eR¦  «        ZS G d"„ d#eOeR¦  «        ZT G d$„ d%eP¦  «        ZU G d&„ d'eP¦  «        ZV G d(„ d)eP¦  «        ZW G d*„ d+eP¦  «        ZX G d,„ d-eP¦  «        ZY G d.„ d/eP¦  «        ZZ G d0„ d1eP¦  «        Z[ G d2„ d3e[eX¦  «        Z\ G d4„ d5e[eV¦  «        Z] G d6„ d7e[eZ¦  «        Z^ G d8„ d9e[eR¦  «        Z_ G d:„ d;eN¦  «        Z` G d<„ d=eN¦  «        Za G d>„ d?ea¦  «        Zb G d@„ dAea¦  «        Zc G dB„ dCeV¦  «        Zd G dD„ dEeV¦  «        Ze G dF„ dGeN¦  «        Zf G dH„ dIef¦  «        Zg G dJ„ dKef¦  «        Zh G dL„ dMeh¦  «        Zi G dN„ dOeh¦  «        Zj G dP„ dQej¦  «        Zk G dR„ dSek¦  «        Zl G dT„ dUeN¦  «        Zm G dV„ dWeN¦  «        Zn G dX„ dYeM¦  «        Zo G dZ„ d[eo¦  «        Zp G d\„ d]eo¦  «        Zq G d^„ d_eq¦  «        Zr G d`„ daeq¦  «        Zs G db„ dcer¦  «        Zt G dd„ deer¦  «        Zu G df„ dgeo¦  «        Zv G dh„ dieq¦  «        Zw G dj„ dkerew¦  «        Zx G dl„ dmeq¦  «        Zy G dn„ doeP¦  «        Zz G dp„ dqez¦  «        Z{ G dr„ dseM¦  «        Z| G dt„ dueM¦  «        Z} G dv„ dweM¦  «        Z~ G dx„ dyeM¦  «        Z G dz„ d{eM¦  «        Z€ G d|„ d}e€¦  «        Z� G d~„ deM¦  «        Z‚ G d€„ d�eM¦  «        Zƒ G d‚„ dƒeM¦  «        Z„ G d„„ d…eM¦  «        Z… G d†„ d‡eM¦  «        Z† G dˆ„ d‰eM¦  «        Z‡ G dŠ„ d‹¦  «        Zˆ G dŒ„ d�eM¦  «        Z‰ G dŽ„ d�e‰¦  «        ZŠ G d�„ d‘eV¦  «        Z‹ G d’„ d“eX¦  «        ZŒ G d”„ d•eŒ¦  «        Z3 G d–„ d—eŒ¦  «        Z5 G d˜„ d™eE¦  «        Z� G dš„ d›eM¦  «        ZŽi dœeW“d�eU“džeY“dŸeQ“d eX“d¡eV“d¢eZ“d£eR“d¤en“d!eS“d#eT“dUem“d;e`“d=ea“d?eb“dAec“dCed“i dIeg“dMei“dOej“dQek“dSel“d¥eo“d¦eŽ“d§eq“d¨er“d©es“dqe{“d…e…“d‡e†“d‰e‡“d‘e‹“d•e3“d—e5“¥i dEee“dª e<e‰eˆ¬«¦  «        “d� e<eŠeˆ¬«¦  «        “d¬ e<e‰e)¬­¦  «        “d�eƒ“dƒe„“d®ep“d¯e~“d°ep“d±e“dsd²„ “dud³„ “dd´„ “d{dµ„ “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Ú
TTLibErrorÚgetSearchRangeé   )ÚCountReferenceÚFormatSwitchingBaseTableÚOTTableReaderÚOTTableWriterÚValueRecordFactory)Ú	FieldSpec)ÚlookupTypesÚFeatureListÚVarCompositeGlyphÚAATStateTableÚAATStateÚ	AATActionÚContextualMorphActionÚ	LigActionÚLigatureMorphActionÚInsertionMorphActionÚMortSubtableÚMorxSubtableÚ
ExtendModeÚCompositeModeÚNO_VARIATION_INDEX)Úzip_longestÚ
accumulate)Úpartial)ÚSimpleNamespaceN)ÚOptional)ÚIntFlagc                 ó,   — t          | t          ¦  «        S ©N)Ú
isinstanceÚtuple)Úts    úb/data/share/cad/hardware/.venv/lib/python3.11/site-packages/fontTools/ttLib/tables/otConverters.pyú<lambda>r7   1   s   € •J˜q¥%Ñ(Ô(€ ó    Ú	tableSpecc           	      ó  — g }i }| D �]}|j         }|j                              d¦  «        r|j        dk    sJ ‚t          }�n|j                              d¦  «        s	|j         dv r't
          t          t          t          dœ|j                 }nÏ|j         dk    rt          }n¼|j         dk    rt          }n©|j         dk    rt          }n–|j         d	k    rt          }nƒ|j         d
k    rt          }np|j         dk    r|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t/          |j        dd¦  «        |_        |j        r|j        }n9|j        dv r|                     |j        ¦  «        }n|                     |¦  «        }|j        s||_        |j         dv ri|d         |_        |j                             ¦   «         D ]B}	|	                     ¦   «         D ]+}
t9          |j         |j        |j        |
¦  «        ||
j        <   Œ,ŒC|j         d	k    r_|d         |_        |d	         |_        |j                             ¦   «         D ]+}
t9          |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)Úuint8r<   Úuint24Úuint32ÚSubTableÚExtSubTableÚ	SubStructÚFeatureParamsÚFeatureVariationsÚFeatureÚLOffset)ÚCIDGlyphMappingÚGlyphCIDMappingú(©Údescriptionú<string>Úeval)Ú	MortChainr&   Ú	MorxChain)rC   rD   rE   r   ÚfeatureParamTypes)!ÚnameÚ
startswithÚtyper;   ÚendswithÚComputedUInt8ÚComputedUShortÚComputedUInt24ÚComputedULongrC   rD   rE   rF   rG   ÚAlternateFeatureÚStructWithLengthÚconverterMappingÚStructrP   ÚrepeatÚauxrN   Ú	conditionÚcompileÚ
tableClassÚgetr   ÚvaluesÚTableÚ__name__rS   ÚdefaultFeatureParamsÚappend)r9   ÚtableNamespaceÚ
convertersÚconvertersByNameÚspecÚ	tableNameÚconverterClassÚconvrd   r5   Úclss              r6   ÚbuildConvertersrs   4   sc  € ð €JØÐØð C+ñ C+ˆØ”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ØŒY˜)Ò#Ð#¨¬	°YÒ(>Ð(>Ý-ˆNˆNØŒYÐ@Ð@Ð@Ý-ˆNˆNà”9Õ 0Ð0Ð0°SÀÄ	Ð5IÐ5IØ œI�	Ý!'��å!% d¤i°ÕAQÑ!RÔ!R�àˆ~ØŒI�t”{ D¤H¸$Ô:Jð
ñ 
ô 
ˆð Œ>ð 	IÝ$ T¤^°ZÀÑHÔHˆDŒNàŒ?ð 	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Ø&*Ð˜œÑ#Ñ#ØÐ'Ð'Ð'r8   c                   óŠ   — e Zd ZdZdddœd„Z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Ú rM   c                ó:  — || _         || _        || _        | j        r"| j        st          | j        dd¦  «        | _        || _        |                     d¦  «        p|dv | _        |                     d¦  «        p|dk    | _        |dv | _        || _	        d | _
        d S )NrO   rP   r=   )ÚDesignAxisRecordSizeÚValueRecordSizeÚ
LookupTyper?   )Ú
ClassCountÚClass2CountÚ
FeatureTagÚSettingsCountÚVarRegionCountÚMappingCountÚRegionAxisCountÚDesignAxisCountrx   ÚAxisValueCountry   Ú	AxisCountÚBaseGlyphRecordCountÚLayerRecordCountÚAxisIndicesListÚ	NumGlyphsÚMaxGlyphMapEntryIndexÚMaxEntryIndexÚ
NumEntries)rT   r`   ra   rc   rd   rW   ÚisCountÚisLookupTypeÚisPropagatedrN   rb   ©ÚselfrT   r`   ra   rd   rN   s         r6   Ú__init__zBaseConverter.__init__…   s±   € ØˆŒ	ØˆŒØˆŒØŒ8ð 	=˜DœKð 	=Ý˜tœx¨°VÑ<Ô<ˆDŒHØ$ˆŒØ—}’} WÑ-Ô-ð 
°ð :
ð 2
ˆŒð !ŸMšM¨,Ñ7Ô7ÐN¸4À;Ò;NˆÔØ ð %
ð 
ˆÔð, 'ˆÔØˆŒˆˆr8   c                 ó@   — | j         d u pt          | j         d |¦  «        S r2   )rb   rP   )r�   Útables     r6   Ú	isEnabledzBaseConverter.isEnabledª   s"   € ØŒ~ Ð%ÐJ­¨d¬n¸dÀEÑ)JÔ)JÐJr8   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 r2   )ÚseekÚread)ÚiÚfontÚposÚreader_copyÚ
recordSizer�   s    €€€€€r6   Ú	read_itemzABaseConverter.readArray.<locals>.get_read_item.<locals>.read_item¿   s6   ø€ Ø×$Ò$ S¨1¨z©>Ñ%9Ñ:Ô:Ð:ØŸ9š9 [°$¸Ñ;Ô;Ð;r8   ©Úcopyr�   )r    r�   rž   rœ   ÚreaderrŸ   r�   s    @@€€€€r6   Úget_read_itemz.BaseConverter.readArray.<locals>.get_read_item»   sN   øøø€ Ø$Ÿkšk™mœm�Ø”j�ð<ð <ð <ð <ð <ð <ð <ð <ð <ð !Ð r8   c              3   ó   •K  — | ]}‰V — Œd S r2   © )Ú.0r›   r    s     €r6   ú	<genexpr>z*BaseConverter.readArray.<locals>.<genexpr>Æ   s#   øè è € Ð9Ð9 q˜Ð9Ð9Ð9Ð9Ð9Ð9r8   )ÚlazyÚgetRecordSizeÚNotImplementedÚrangerj   rš   r   Úadvance)r�   r£   rœ   Ú	tableDictÚcountr©   Úlr›   r¤   r    rŸ   s   ```      @@r6   Ú	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 :Ñ-Ñ.Ô.Ð.àˆHr8   c                 ó>   — t          | d¦  «        r| j        S t          S )NÚ
staticSize)Úhasattrr³   r«   ©r�   r£   s     r6   rª   zBaseConverter.getRecordSizeË   s"   € Ý�4˜Ñ&Ô&ð 	#Ø”?Ð"ÝÐr8   c                 ó    — t          | ¦  «        ‚)zRead a value from the reader.©ÚNotImplementedError©r�   r£   rœ   r®   s       r6   rš   zBaseConverter.readÐ   ó   € å! $Ñ'Ô'Ð'r8   c                 óª   — 	 t          |¦  «        D ]\  }}|                      |||||¦  «         Œd S # t          $ r}|j        |fz   |_        ‚ d }~ww xY wr2   )Ú	enumerateÚwriteÚ	ExceptionÚargs)r�   Úwriterrœ   r®   rf   r›   ÚvalueÚes           r6   Ú
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         r6   r½   zBaseConverter.writeÜ   rº   r8   c                 ó    — t          | ¦  «        ‚)zRead a value from XML.r·   ©r�   ÚattrsÚcontentrœ   s       r6   ÚxmlReadzBaseConverter.xmlReadà   rº   r8   c                 ó    — t          | ¦  «        ‚)zWrite a value to XML.r·   ©r�   Ú	xmlWriterrœ   rÁ   rT   rÉ   s         r6   ÚxmlWritezBaseConverter.xmlWriteä   rº   r8   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ÚsearchrN   ÚintÚgroup)r�   Úms     r6   ÚgetVarIndexOffsetzBaseConverter.getVarIndexOffsetê   s>   € àÔ)×0Ò0°Ô1AÑBÔBˆØð 	Ø�4Ý�1—7’7˜1‘:”:‰ŒÐr8   r2   )rh   Ú
__module__Ú__qualname__Ú__doc__r‘   r”   r±   rª   rš   rÃ   r½   rË   rÏ   Úrerc   rÒ   r/   rÔ   r×   r¦   r8   r6   ru   ru   �   só   € € € € € ðð ð#È"ð #ð #ð #ð #ð #ðJKð Kð Kðð ð ð<ð ð ð
(ð (ð (ðð ð ð(ð (ð (ð (ð(ð (ð (ð(ð (ð (ð  *˜rœzÐ*FÑGÔGÐð 8¨C¤=ð ð ð ð ð ð r8   ru   c                   óF   — e Zd Zed„ ¦   «         Zed„ ¦   «         Zd„ Zd„ ZdS )ÚSimpleValuec                 ó   — | S r2   r¦   ©rÁ   s    r6   ÚtoStringzSimpleValue.toStringó   ó   € àˆr8   c                 ó   — | S r2   r¦   rß   s    r6   Ú
fromStringzSimpleValue.fromString÷   rá   r8   c                 óŒ   — |                      ||d|                      |¦  «        fgz   ¦  «         |                     ¦   «          d S ©NrÁ   )Ú	simpletagrà   ÚnewlinerÍ   s         r6   rÏ   zSimpleValue.xmlWriteû   sI   € Ø×Ò˜D %¨G°T·]²]À5Ñ5IÔ5IÐ+JÐ*KÑ"KÑLÔLÐLØ×ÒÑÔÐÐÐr8   c                 ó8   — |                       |d         ¦  «        S rå   )rã   rÈ   s       r6   rË   zSimpleValue.xmlReadÿ   s   € Ø�Š˜u Wœ~Ñ.Ô.Ð.r8   N)rh   rØ   rÙ   Ústaticmethodrà   rã   rÏ   rË   r¦   r8   r6   rÝ   rÝ   ò   sf   € € € € € Øðð ñ „\ðð ðð ñ „\ððð ð ð/ð /ð /ð /ð /r8   rÝ   c                   ó   — e Zd ZdZd„ Zd„ ZdS )ÚOptionalValueNc                 óÄ   — || j         k    r*|                     d|                      |¦  «        f¦  «         |                     ||¦  «         |                     ¦   «          d S rå   )ÚDEFAULTrj   rà   ræ   rç   rÍ   s         r6   rÏ   zOptionalValue.xmlWrite  s`   € Ø�D”LÒ Ð Ø�LŠL˜' 4§=¢=°Ñ#7Ô#7Ð8Ñ9Ô9Ð9Ø×Ò˜D %Ñ(Ô(Ð(Ø×ÒÑÔÐÐÐr8   c                 óN   — d|v r|                       |d         ¦  «        S | j        S rå   )rã   rí   rÈ   s       r6   rË   zOptionalValue.xmlRead  s+   € Ø�eÐÐØ—?’? 5¨¤>Ñ2Ô2Ð2ØŒ|Ðr8   )rh   rØ   rÙ   rí   rÏ   rË   r¦   r8   r6   rë   rë     s7   € € € € € Ø€Gðð ð ðð ð ð ð r8   rë   c                   ó$   — e Zd Zed„ ¦   «         ZdS )ÚIntValuec                 ó"   — t          | d¦  «        S ©Nr   ©rÔ   rß   s    r6   rã   zIntValue.fromString  s   € å�5˜!‰}Œ}Ðr8   N©rh   rØ   rÙ   ré   rã   r¦   r8   r6   rð   rð     s-   € € € € € Øðð ñ „\ðð ð r8   rð   c                   ó,   — e Zd ZdZd„ Zd„ Zdd„Zd„ ZdS )ÚLongé   c                 ó*   — |                      ¦   «         S r2   ©ÚreadLongr¹   s       r6   rš   z	Long.read  ó   € Ø�ŠÑ Ô Ð r8   c                 ó,   — |                      |¦  «        S r2   )ÚreadLongArray©r�   r£   rœ   r®   r¯   s        r6   r±   zLong.readArray  ó   € Ø×#Ò# EÑ*Ô*Ð*r8   Nc                 ó0   — |                      |¦  «         d S r2   )Ú	writeLongrÅ   s         r6   r½   z
Long.write!  ó   € Ø×Ò˜ÑÔÐÐÐr8   c                 ó0   — |                      |¦  «         d S r2   )ÚwriteLongArray©r�   rÀ   rœ   r®   rf   s        r6   rÃ   zLong.writeArray$  ó   € Ø×Ò˜fÑ%Ô%Ð%Ð%Ð%r8   r2   ©rh   rØ   rÙ   r³   rš   r±   r½   rÃ   r¦   r8   r6   rö   rö     óZ   € € € € € Ø€Jð!ð !ð !ð+ð +ð +ð ð  ð  ð  ð&ð &ð &ð &ð &r8   rö   c                   ó,   — e Zd ZdZd„ Zd„ Zdd„Zd„ ZdS )ÚULongr÷   c                 ó*   — |                      ¦   «         S r2   ©Ú	readULongr¹   s       r6   rš   z
ULong.read+  ó   € Ø×ÒÑ!Ô!Ð!r8   c                 ó,   — |                      |¦  «        S r2   )ÚreadULongArrayrþ   s        r6   r±   zULong.readArray.  ó   € Ø×$Ò$ UÑ+Ô+Ð+r8   Nc                 ó0   — |                      |¦  «         d S r2   ©Ú
writeULongrÅ   s         r6   r½   zULong.write1  ó   € Ø×Ò˜%Ñ Ô Ð Ð Ð r8   c                 ó0   — |                      |¦  «         d S r2   )ÚwriteULongArrayr  s        r6   rÃ   zULong.writeArray4  ó   € Ø×Ò˜vÑ&Ô&Ð&Ð&Ð&r8   r2   r  r¦   r8   r6   r
  r
  (  óZ   € € € € € Ø€Jð"ð "ð "ð,ð ,ð ,ð!ð !ð !ð !ð'ð 'ð 'ð 'ð 'r8   r
  c                   ó$   — e Zd Zed„ ¦   «         ZdS )ÚFlags32c                 ó   — d| z  S )Nz0x%08Xr¦   rß   s    r6   rà   zFlags32.toString9  ó   € à˜%ÑÐr8   N)rh   rØ   rÙ   ré   rà   r¦   r8   r6   r  r  8  s-   € € € € € Øð ð  ñ „\ð ð  ð  r8   r  c                   ó   — e Zd ZeZdS )ÚVarIndexN)rh   rØ   rÙ   r*   rí   r¦   r8   r6   r  r  >  s   € € € € € Ø €G€G€Gr8   r  c                   ó,   — e Zd ZdZd„ Zd„ Zdd„Zd„ ZdS )ÚShorté   c                 ó*   — |                      ¦   «         S r2   )Ú	readShortr¹   s       r6   rš   z
Short.readE  r  r8   c                 ó,   — |                      |¦  «        S r2   )ÚreadShortArrayrþ   s        r6   r±   zShort.readArrayH  r  r8   Nc                 ó0   — |                      |¦  «         d S r2   )Ú
writeShortrÅ   s         r6   r½   zShort.writeK  r  r8   c                 ó0   — |                      |¦  «         d S r2   )ÚwriteShortArrayr  s        r6   rÃ   zShort.writeArrayN  r  r8   r2   r  r¦   r8   r6   r!  r!  B  r  r8   r!  c                   ó,   — e Zd ZdZd„ Zd„ Zdd„Zd„ ZdS )ÚUShortr"  c                 ó*   — |                      ¦   «         S r2   ©Ú
readUShortr¹   s       r6   rš   zUShort.readU  ó   € Ø× Ò Ñ"Ô"Ð"r8   c                 ó,   — |                      |¦  «        S r2   )ÚreadUShortArrayrþ   s        r6   r±   zUShort.readArrayX  s   € Ø×%Ò% eÑ,Ô,Ð,r8   Nc                 ó0   — |                      |¦  «         d S r2   ©ÚwriteUShortrÅ   s         r6   r½   zUShort.write[  ó   € Ø×Ò˜5Ñ!Ô!Ð!Ð!Ð!r8   c                 ó0   — |                      |¦  «         d S r2   )ÚwriteUShortArrayr  s        r6   rÃ   zUShort.writeArray^  s   € Ø×Ò Ñ'Ô'Ð'Ð'Ð'r8   r2   r  r¦   r8   r6   r,  r,  R  sZ   € € € € € Ø€Jð#ð #ð #ð-ð -ð -ð"ð "ð "ð "ð(ð (ð (ð (ð (r8   r,  c                   ó,   — e Zd ZdZd„ Zd„ Zdd„Zd„ ZdS )ÚInt8r   c                 ó*   — |                      ¦   «         S r2   )ÚreadInt8r¹   s       r6   rš   z	Int8.reade  rû   r8   c                 ó,   — |                      |¦  «        S r2   )ÚreadInt8Arrayrþ   s        r6   r±   zInt8.readArrayh  rÿ   r8   Nc                 ó0   — |                      |¦  «         d S r2   )Ú	writeInt8rÅ   s         r6   r½   z
Int8.writek  r  r8   c                 ó0   — |                      |¦  «         d S r2   )ÚwriteInt8Arrayr  s        r6   rÃ   zInt8.writeArrayn  r  r8   r2   r  r¦   r8   r6   r:  r:  b  r  r8   r:  c                   ó,   — e Zd ZdZd„ Zd„ Zdd„Zd„ ZdS )ÚUInt8r   c                 ó*   — |                      ¦   «         S r2   )Ú	readUInt8r¹   s       r6   rš   z
UInt8.readu  r  r8   c                 ó,   — |                      |¦  «        S r2   )ÚreadUInt8Arrayrþ   s        r6   r±   zUInt8.readArrayx  r  r8   Nc                 ó0   — |                      |¦  «         d S r2   )Ú
writeUInt8rÅ   s         r6   r½   zUInt8.write{  r  r8   c                 ó0   — |                      |¦  «         d S r2   )ÚwriteUInt8Arrayr  s        r6   rÃ   zUInt8.writeArray~  r  r8   r2   r  r¦   r8   r6   rD  rD  r  r  r8   rD  c                   ó    — e Zd ZdZd„ Zdd„ZdS )ÚInt24é   c                 ó*   — |                      ¦   «         S r2   )Ú	readInt24r¹   s       r6   rš   z
Int24.read…  r  r8   Nc                 óh   — d|cxk    rdk     sn J |¦   «         ‚|                      |dz  ¦  «         d S )Ni  €ÿi  € éÿÿÿ ©ÚwriteUInt24rÅ   s         r6   r½   zInt24.writeˆ  sN   € Ø˜UÐ.Ð.Ò.Ð. gÒ.Ð.Ð.Ð.Ð.°Ñ.Ô.Ð.Ø×Ò˜5 8Ñ+Ñ,Ô,Ð,Ð,Ð,r8   r2   ©rh   rØ   rÙ   r³   rš   r½   r¦   r8   r6   rN  rN  ‚  s<   € € € € € Ø€Jð"ð "ð "ð-ð -ð -ð -ð -ð -r8   rN  c                   ó    — e Zd ZdZd„ Zdd„ZdS )ÚUInt24rO  c                 ó*   — |                      ¦   «         S r2   ©Ú
readUInt24r¹   s       r6   rš   zUInt24.read�  r0  r8   Nc                 ó0   — |                      |¦  «         d S r2   rT  rÅ   s         r6   r½   zUInt24.write“  r6  r8   r2   rV  r¦   r8   r6   rX  rX  �  s<   € € € € € Ø€Jð#ð #ð #ð"ð "ð "ð "ð "ð "r8   rX  c                   ó   — e Zd Zd„ ZdS )ÚComputedIntc                 ój   — |�0|                      |›d|›�¦  «         |                     ¦   «          d S d S )Nú=)Úcommentrç   rÍ   s         r6   rÏ   zComputedInt.xmlWrite˜  sG   € ØÐØ×Ò¨¨¨¨u¨uÐ5Ñ6Ô6Ð6Ø×ÒÑÔÐÐÐð Ðr8   N©rh   rØ   rÙ   rÏ   r¦   r8   r6   r^  r^  —  s#   € € € € € ð ð  ð  ð  ð  r8   r^  c                   ó   — e Zd ZdS )rX   N©rh   rØ   rÙ   r¦   r8   r6   rX   rX   ž  ó   € € € € € Ø€Dr8   rX   c                   ó   — e Zd ZdS )rY   Nrd  r¦   r8   r6   rY   rY   ¢  re  r8   rY   c                   ó   — e Zd ZdS )rZ   Nrd  r¦   r8   r6   rZ   rZ   ¦  re  r8   rZ   c                   ó   — e Zd ZdS )r[   Nrd  r¦   r8   r6   r[   r[   ª  re  r8   r[   c                   ó    — e Zd ZdZd„ Zdd„ZdS )ÚTagr÷   c                 ó*   — |                      ¦   «         S r2   )ÚreadTagr¹   s       r6   rš   zTag.read±  s   € Ø�~Š~ÑÔÐr8   Nc                 ó0   — |                      |¦  «         d S r2   )ÚwriteTagrÅ   s         r6   r½   z	Tag.write´  s   € Ø�Š˜ÑÔÐÐÐr8   r2   rV  r¦   r8   r6   rj  rj  ®  s<   € € € € € Ø€Jð ð  ð  ðð ð ð ð ð r8   rj  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 r2   )ÚgetGlyphNameManyr±   Útypecoder³   rþ   s        r6   r±   zGlyphID.readArray¼  s3   € Ø×$Ò$Ø×Ò˜Tœ]¨D¬O¸UÑCÔCñ
ô 
ð 	
r8   c                 óh   — |                      |                     | j        | j        ¦  «        ¦  «        S r2   )ÚgetGlyphNameÚ	readValuert  r³   r¹   s       r6   rš   zGlyphID.readÁ  s*   € Ø× Ò  ×!1Ò!1°$´-ÀÄÑ!QÔ!QÑRÔRÐRr8   c                 ób   — |                      | j        |                     |¦  «        ¦  «         d S r2   )rÃ   rt  ÚgetGlyphIDManyr  s        r6   rÃ   zGlyphID.writeArrayÄ  s.   € Ø×Ò˜$œ-¨×)<Ò)<¸VÑ)DÔ)DÑEÔEÐEÐEÐEr8   Nc                 ób   — |                      | j        |                     |¦  «        ¦  «         d S r2   )Ú
writeValuert  Ú
getGlyphIDrÅ   s         r6   r½   zGlyphID.writeÇ  s,   € Ø×Ò˜$œ-¨¯ª¸Ñ)?Ô)?Ñ@Ô@Ð@Ð@Ð@r8   r2   )	rh   rØ   rÙ   r³   rt  r±   rš   rÃ   r½   r¦   r8   r6   rp  rp  ¸  sk   € € € € € Ø€JØ€Hð
ð 
ð 
ð
Sð Sð SðFð Fð FðAð Að Að Að Að Ar8   rp  c                   ó,   — e Zd ZdZd„ Zd„ Zd„ Zdd„ZdS )Ú	GlyphID24rO  c                 óR   — |                      |                     |¦  «        ¦  «        S r2   )rs  ÚreadUInt24Arrayrþ   s        r6   r±   zGlyphID24.readArrayÎ  s$   € Ø×$Ò$ V×%;Ò%;¸EÑ%BÔ%BÑCÔCÐCr8   c                 óP   — |                      |                     ¦   «         ¦  «        S r2   )rv  r[  r¹   s       r6   rš   zGlyphID24.readÑ  s"   € Ø× Ò  ×!2Ò!2Ñ!4Ô!4Ñ5Ô5Ð5r8   c                 óV   — |                      |                     |¦  «        ¦  «         d S r2   )ÚwriteUInt24Arrayry  r  s        r6   rÃ   zGlyphID24.writeArrayÔ  s*   € Ø×Ò × 3Ò 3°FÑ ;Ô ;Ñ<Ô<Ð<Ð<Ð<r8   Nc                 óV   — |                      |                     |¦  «        ¦  «         d S r2   )rU  r|  rÅ   s         r6   r½   zGlyphID24.write×  s(   € Ø×Ò˜4Ÿ?š?¨5Ñ1Ô1Ñ2Ô2Ð2Ð2Ð2r8   r2   )rh   rØ   rÙ   r³   r±   rš   rÃ   r½   r¦   r8   r6   r~  r~  Ë  s]   € € € € € Ø€JðDð Dð Dð6ð 6ð 6ð=ð =ð =ð3ð 3ð 3ð 3ð 3ð 3r8   r~  c                   ó   — e Zd ZdZdZdS )Ú	GlyphID32r÷   ÚLN)rh   rØ   rÙ   r³   rt  r¦   r8   r6   r†  r†  Û  s   € € € € € Ø€JØ€H€H€Hr8   r†  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Á   rT   ú  éÿÿ  ÚNonezmissing from name tablez"name id %d missing from name table)ræ   re   ÚgetDebugNamer½   ra  ÚlogÚwarningrç   )r�   rÎ   rœ   rÁ   rT   rÉ   Ú	nameTables          r6   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Ø×ÒÑÔÐÐÐr8   Nrb  r¦   r8   r6   r‰  r‰  à  s#   € € € € € ðð ð ð ð r8   r‰  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"  ÚElidableAxisValueNamer‹  ú )ræ   rj   r½   ra  Újoinrç   ©r�   rÎ   rœ   rÁ   rT   rÉ   Úflagss          r6   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Ñ.Ô.Ð.Ø×ÒÑÔÐÐÐr8   Nrb  r¦   r8   r6   r“  r“  ò  s#   € € € € € ð
ð 
ð 
ð 
ð 
r8   r“  c                   ó$   — e Zd Zed„ ¦   «         ZdS )Ú
FloatValuec                 ó    — t          | ¦  «        S r2   )Úfloatrß   s    r6   rã   zFloatValue.fromString  ó   € å�U‰|Œ|Ðr8   Nrô   r¦   r8   r6   rœ  rœ     s-   € € € € € Øðð ñ „\ðð ð r8   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       r6   rš   zDeciPoints.read	  s   € Ø× Ò Ñ"Ô" RÑ'Ð'r8   Nc                 óP   — |                      t          |dz  ¦  «        ¦  «         d S r£  )r5  ÚroundrÅ   s         r6   r½   zDeciPoints.write  s(   € Ø×Ò�5 ¨¡Ñ,Ô,Ñ-Ô-Ð-Ð-Ð-r8   r2   rV  r¦   r8   r6   r¡  r¡    s<   € € € € € Ø€Jð(ð (ð (ð.ð .ð .ð .ð .ð .r8   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 r2   )ÚfromIntÚgetattrÚreaderMethodr¹   s       r6   rš   zBaseFixedValue.read  s*   € Ø�|Š|Ð>�G F¨DÔ,=Ñ>Ô>Ñ@Ô@ÑAÔAÐAr8   Nc                 óh   —  t          || j        ¦  «        |                      |¦  «        ¦  «         d S r2   )r«  ÚwriterMethodÚtoIntrÅ   s         r6   r½   zBaseFixedValue.write  s1   € Ø*��˜Ô)Ñ*Ô*¨4¯:ª:°eÑ+<Ô+<Ñ=Ô=Ð=Ð=Ð=r8   c                 ó,   — t          || j        ¦  «        S r2   )Úfi2flÚprecisionBits©rr   rÁ   s     r6   rª  zBaseFixedValue.fromInt  ó   € å�U˜CÔ-Ñ.Ô.Ð.r8   c                 ó,   — t          || j        ¦  «        S r2   )Úfl2fir²  r³  s     r6   r¯  zBaseFixedValue.toInt   r´  r8   c                 ó,   — t          || j        ¦  «        S r2   )Ústr2flr²  r³  s     r6   rã   zBaseFixedValue.fromString$  ó   € å�e˜SÔ.Ñ/Ô/Ð/r8   c                 ó,   — t          || j        ¦  «        S r2   )Úfl2strr²  r³  s     r6   rà   zBaseFixedValue.toString(  r¹  r8   r2   )rh   rØ   rÙ   r«   r³   r²  r¬  r®  rš   r½   Úclassmethodrª  r¯  rã   rà   r¦   r8   r6   r¨  r¨    sº   € € € € € Ø€JØ"€MØ!€LØ!€LðBð Bð Bð>ð >ð >ð >ð ð/ð /ñ „[ð/ð ð/ð /ñ „[ð/ð ð0ð 0ñ „[ð0ð ð0ð 0ñ „[ð0ð 0ð 0r8   r¨  c                   ó   — e Zd ZdZdZdZdZdS )ÚFixedr÷   é   rú   r  N©rh   rØ   rÙ   r³   r²  r¬  r®  r¦   r8   r6   r¾  r¾  -  s"   € € € € € Ø€JØ€MØ€LØ€L€L€Lr8   r¾  c                   ó   — e Zd ZdZdZdZdZdS )ÚF2Dot14r"  é   r$  r(  NrÀ  r¦   r8   r6   rÂ  rÂ  4  s"   € € € € € Ø€JØ€MØ€LØ€L€L€Lr8   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©rr   rÁ   Ú	__class__s     €r6   rª  zAngle.fromIntA  s%   ø€ å‘”—’ Ñ&Ô&¨¬Ñ1°SÑ8Ð8r8   c                 ó\   •— t          ¦   «                              |dz  | j        z
  ¦  «        S rÇ  )rÉ  r¯  rÊ  rË  s     €r6   r¯  zAngle.toIntE  s$   ø€ å‰wŒw�}Š}˜e c™k¨S¬XÑ5Ñ6Ô6Ð6r8   c                 óZ   — t          t          |¦  «        | j        z  ¦  «        | j        z  S r2   )r   rž  Úfactorr³  s     r6   rã   zAngle.fromStringI  s&   € õ •u˜U‘|”| c¤jÑ0Ñ1Ô1°C´JÑ>Ð>r8   c                 ó,   — t          || j        ¦  «        S r2   )r
   rÏ  r³  s     r6   rà   zAngle.toStringN  s   € å*¨5°#´*Ñ=Ô=Ð=r8   )rh   rØ   rÙ   rÊ  rÏ  r¼  rª  r¯  rã   rà   Ú__classcell__©rÌ  s   @r6   rÅ  rÅ  ;  s©   ø€ € € € € ð €DØ"€Fàð9ð 9ð 9ð 9ñ „[ð9ð ð7ð 7ð 7ð 7ñ „[ð7ð ð?ð ?ñ „[ð?ð ð>ð >ñ „[ð>ð >ð >ð >ð >r8   rÅ  c                   ó   — e Zd ZdZdS )ÚBiasedAngleg      ð?N)rh   rØ   rÙ   rÊ  r¦   r8   r6   rÔ  rÔ  S  s   € € € € € ð €D€D€Dr8   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 r2   rù   )r�   r£   rœ   r®   rÁ   s        r6   rš   zVersion.read\  s   € Ø—’Ñ!Ô!ˆØˆr8   Nc                 óN   — t          |¦  «        }|                     |¦  «         d S r2   )Úfi2ver  rÅ   s         r6   r½   zVersion.write`  s'   € Ý�e‘”ˆØ×Ò˜ÑÔÐÐÐr8   c                 ó    — t          | ¦  «        S r2   )Úve2firß   s    r6   rã   zVersion.fromStringd  rŸ  r8   c                 ó   — d| z  S )Nú0x%08xr¦   rß   s    r6   rà   zVersion.toStringh  r  r8   c                 ó"   — t          | d¦  «        S )Nr¿  )r¶  )Úvs    r6   Ú	fromFloatzVersion.fromFloatl  s   € å�Q˜‰|Œ|Ðr8   r2   )
rh   rØ   rÙ   r³   rš   r½   ré   rã   rà   rà  r¦   r8   r6   rÖ  rÖ  Y  s�   € € € € € Ø€Jðð ð ð ð  ð  ð  ð ðð ñ „\ðð ð ð  ñ „\ð ð ðð ñ „\ðð ð r8   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   r�  r�  )r�   r£   rœ   r®   ÚdataÚzeroPosÚss          r6   rš   zChar64.readz  s‡   € Ø�Š˜tœÑ/Ô/ˆØ—)’)˜EÑ"Ô"ˆØ�aŠ<ˆ<Ø˜˜˜”>ˆDÝ�$ °Ð;Ñ;Ô;ˆØ•�d W°XÐ>Ñ>Ô>Ò>Ð>Ý�KŠKÐ?À!ÑCÑDÔDÐDØˆr8   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   r�  r�  Úlenr³   Ú	writeData)r�   rÀ   rœ   r®   rÁ   rÆ   rî  s          r6   r½   zChar64.write„  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ˆØ×Ò˜ÑÔÐÐÐr8   r2   )rh   rØ   rÙ   rÚ   r³   rš   r½   r¦   r8   r6   râ  râ  q  sH   € € € € € ðð ð €Jðð ð ð	ð 	ð 	ð 	ð 	ð 	r8   râ  c                   ó4   — e Zd Zd„ Zd„ Zdd„Zd„ Zd„ Zd„ ZdS )	r_   c                 óD   — | j         o| j                              |¦  «        S r2   )rd   rª   rµ   s     r6   rª   zStruct.getRecordSize‘  s   € ØŒÐH 4¤?×#@Ò#@ÀÑ#HÔ#HÐHr8   c                 óZ   — |                       ¦   «         }|                     ||¦  «         |S r2   )rd   Ú	decompile)r�   r£   rœ   r®   r“   s        r6   rš   zStruct.read”  s*   € Ø—’Ñ!Ô!ˆØ�Š˜ Ñ%Ô%Ð%Øˆr8   Nc                 ó2   — |                      ||¦  «         d S r2   ©rc   rÅ   s         r6   r½   zStruct.write™  s   € Ø�Š�f˜dÑ#Ô#Ð#Ð#Ð#r8   c                 ó¤   — |€4|r0|                      ||dgz   ¦  «         |                     ¦   «          d S d S |                     ||||¬¦  «         d S )N)Úemptyr   )rT   )ræ   rç   ÚtoXMLrÍ   s         r6   rÏ   zStruct.xmlWriteœ  sk   € Øˆ=Øð ð ×#Ò# D¨%°<°.Ñ*@ÑAÔAÐAØ×!Ò!Ñ#Ô#Ð#Ð#Ð#à�à�KŠK˜	 4¨°TˆKÑ:Ô:Ð:Ð:Ð:r8   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   rd   re   rÔ   rþ  r´   ÚgetConvertersrŽ   r   rT   Úsetattrr   Ú__dict__r3   r4   ÚfromXMLÚpopulateDefaultsr«  )r�   rÉ   rÊ   rœ   r“   rþ  Ú
noPostReadÚcleanPropagationrq   r  ÚelementrT   s               r6   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øàˆr8   c                 ó0   — dt          | j        ¦  «        z   S )Nz
Struct of )Úreprrd   ©r�   s    r6   Ú__repr__zStruct.__repr__Ó  s   € Ø�d 4¤?Ñ3Ô3Ñ3Ð3r8   r2   )	rh   rØ   rÙ   rª   rš   r½   rÏ   rË   r  r¦   r8   r6   r_   r_   �  sw   € € € € € ðIð Ið Iðð ð ð
$ð $ð $ð $ð;ð ;ð ;ð(ð (ð (ðT4ð 4ð 4ð 4ð 4r8   r_   c                   ó   — e Zd Zd„ Zdd„ZdS )r]   c                 ó¢   — |j         }|                      ¦   «         }|                     ||¦  «         |                     ||j        z   ¦  «         |S r2   )r�   rd   r÷  r™   r>   )r�   r£   rœ   r®   r�   r“   s         r6   rš   zStructWithLength.readØ  sK   € ØŒjˆØ—’Ñ!Ô!ˆØ�Š˜ Ñ%Ô%Ð%Ø�Š�C˜%Ô,Ñ,Ñ-Ô-Ð-Øˆr8   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   éÞ   é­Þ  ì   ï>[= )r   r"  r÷   ó   Þ­¾ï)r¼   r  rT   rò  Úitemsr3   r   r³   ÚgetDataLengthr>   rc   ÚgetSubWriterr½   Ú
getAllData)r�   rÀ   rœ   r®   rÁ   rÆ   Ú	convIndexrq   ÚlengthIndexÚdeadbeefÚbeforeÚlengthÚlengthWriters                r6   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×$;Ò$;Ñ$=Ô$=ˆŒ�[Ñ!Ð!Ð!r8   r2   ©rh   rØ   rÙ   rš   r½   r¦   r8   r6   r]   r]   ×  s7   € € € € € ðð ð ð>ð >ð >ð >ð >ð >r8   r]   c                   ó,   — e Zd ZdZd„ Zd„ Zd„ Zdd„ZdS )rg   r"  c                 ó*   — |                      ¦   «         S r2   r.  rµ   s     r6   Ú
readOffsetzTable.readOffsetõ  r0  r8   c                 ó0   — |                      d¦  «         d S rò   r4  ©r�   rÀ   s     r6   ÚwriteNullOffsetzTable.writeNullOffsetø  ó   € Ø×Ò˜1ÑÔÐÐÐr8   c                 óê   — |                       |¦  «        }|dk    rd S |                      ¦   «         }|                     |¦  «        }|j        r||_        ||_        n|                     ||¦  «         |S rò   )r"  rd   ÚgetSubReaderr©   r£   rœ   r÷  )r�   r£   rœ   r®   Úoffsetr“   s         r6   rš   z
Table.readû  sv   € Ø—’ Ñ(Ô(ˆØ�QŠ;ˆ;Ø�4Ø—’Ñ!Ô!ˆØ×$Ò$ VÑ,Ô,ˆØŒ9ð 	*Ø!ˆEŒLØˆEŒJˆJà�OŠO˜F DÑ)Ô)Ð)Øˆr8   Nc                 óî   — |€|                       |¦  «         d S |                     ¦   «         }| j        |_        |�||_        |                     || j        ¬¦  «         |                     ||¦  «         d S )N©Ú
offsetSize)r%  r  rT   rÆ   ÚwriteSubTabler³   rc   )r�   rÀ   rœ   r®   rÁ   rÆ   Ú	subWriters          r6   r½   zTable.write  s~   € Øˆ=Ø× Ò  Ñ(Ô(Ð(Ð(Ð(à×+Ò+Ñ-Ô-ˆIØ!œYˆIŒNØÐ&Ø(3�	Ô%Ø× Ò  °t´Ð ÑGÔGÐGØ�MŠM˜) TÑ*Ô*Ð*Ð*Ð*r8   r2   )rh   rØ   rÙ   r³   r"  r%  rš   r½   r¦   r8   r6   rg   rg   ò  sZ   € € € € € Ø€Jð#ð #ð #ðð ð ðð ð ð	+ð 	+ð 	+ð 	+ð 	+ð 	+r8   rg   c                   ó   — e Zd ZdZd„ Zd„ ZdS )ÚLTabler÷   c                 ó*   — |                      ¦   «         S r2   r  rµ   s     r6   r"  zLTable.readOffset  r  r8   c                 ó0   — |                      d¦  «         d S rò   r  r$  s     r6   r%  zLTable.writeNullOffset  s   € Ø×Ò˜!ÑÔÐÐÐr8   N©rh   rØ   rÙ   r³   r"  r%  r¦   r8   r6   r0  r0    s7   € € € € € Ø€Jð"ð "ð "ðð ð ð ð r8   r0  c                   ó   — e Zd ZdZd„ Zd„ ZdS )ÚTable24rO  c                 ó*   — |                      ¦   «         S r2   rZ  rµ   s     r6   r"  zTable24.readOffset"  r0  r8   c                 ó0   — |                      d¦  «         d S rò   rT  r$  s     r6   r%  zTable24.writeNullOffset%  r&  r8   Nr3  r¦   r8   r6   r5  r5    s7   € € € € € Ø€Jð#ð #ð #ðð ð ð ð r8   r5  c                   ó*   ‡ — e Zd Zˆ fd„Zdˆ fd„	Zˆ xZS )rG   c                 ó  •— |                       |                     ¦   «         ¦  «        dk    r»|                     d¦  «        }|                     dd¦  «        dk    ra|                     ¦   «         }|                     d| j        z  ¦  «         t          dd d t          ¦  «                             |||¦  «        }|�|}t          d„ t          |dd	¦  «        D ¦   «         ¦  «        |d
<   t          ¦   «                              |||¦  «        S )Nr   r   rÖ  é  r"  ÚFeatureList2c              3   ó$   K  — | ]}|j         V — Œd S r2   ©r}   ©r§   Úrecords     r6   r¨   z)FeatureVariations.read.<locals>.<genexpr>:  ó9   è è € ð *ð *àð Ô!ð*ð *ð *ð *ð *ð *r8   ÚFeatureRecordr¦   ÚFeatureTags)r"  r¢   re   r­   r³   r0  r   rš   r4   r«  rÉ  )r�   r£   rœ   r®   ÚfeatureListÚfeatureListReaderÚfeatureList2rÌ  s          €r6   rš   zFeatureVariations.read*  s  ø€ Ø�?Š?˜6Ÿ;š;™=œ=Ñ)Ô)¨QÒ.Ð.ð $Ÿ-š-¨Ñ6Ô6ˆKØ�}Š}˜Y¨Ñ*Ô*¨jÒ8Ð8ð %+§K¢K¡M¤MÐ!Ø!×)Ò)¨!¨d¬oÑ*=Ñ>Ô>Ð>Ý% n°d¸DÅ+ÑNÔN×SÒSØ% t¨Yñ ô  �ð  Ð+Ø".�KÝ$)ð *ð *å% k°?ÀBÑGÔGð*ñ *ô *ñ %ô %ˆF�=Ñ!õ ‰wŒw�|Š|˜F D¨)Ñ4Ô4Ð4r8   Nc                 ó8  •— |�q|                      d¦  «        }|                      dd¦  «        dk    r|                      d¦  «        p|}t          d„ t          |dd¦  «        D ¦   «         ¦  «        |d	<   t          ¦   «                              |||||¦  «         d S )
Nr   rÖ  r   r:  r;  c              3   ó$   K  — | ]}|j         V — Œd S r2   r=  r>  s     r6   r¨   z*FeatureVariations.write.<locals>.<genexpr>E  r@  r8   rA  r¦   rB  )re   r4   r«  rÉ  r½   )r�   rÀ   rœ   r®   rÁ   rÆ   rC  rÌ  s          €r6   r½   zFeatureVariations.write@  s«   ø€ ØÐØ#Ÿ-š-¨Ñ6Ô6ˆKØ�}Š}˜Y¨Ñ*Ô*¨jÒ8Ð8Ø'Ÿmšm¨NÑ;Ô;ÐJ¸{�Ý$)ð *ð *å% k°?ÀBÑGÔGð*ñ *ô *ñ %ô %ˆF�=Ñ!õ 	‰Œ�Š�f˜d I¨u°kÑBÔBÐBÐBÐBr8   r2   ©rh   rØ   rÙ   rš   r½   rÑ  rÒ  s   @r6   rG   rG   )  s`   ø€ € € € € ð5ð 5ð 5ð 5ð 5ð,	Cð 	Cð 	Cð 	Cð 	Cð 	Cð 	Cð 	Cð 	Cð 	Cr8   rG   c                   ó.   ‡ — e Zd ZdZˆ fd„Zdˆ fd„	Zˆ xZS )r\   zHResolve a FeatureTableSubstitutionRecord's tag through its FeatureIndex.c                 ó  •— d|v r[|                       |                     ¦   «         ¦  «        dk    r0|d         }|d         }|t          |¦  «        k     r||         nd |d<   t          ¦   «                              |||¦  «        S )NrB  r   ÚFeatureIndexr}   )r"  r¢   rò  rÉ  rš   )r�   r£   rœ   r®   ÚfeatureTagsÚfeatureIndexrÌ  s         €r6   rš   zAlternateFeature.readO  sˆ   ø€ Ø˜FÐ"Ð" t§¢°v·{²{±}´}Ñ'EÔ'EÈÒ'JÐ'JØ  Ô/ˆKØ$ ^Ô4ˆLð .:½CÀÑ<LÔ<LÒ-LÐ-L�˜LÔ)Ð)ÐRVð �<Ñ õ ‰wŒw�|Š|˜F D¨)Ñ4Ô4Ð4r8   Nc                 ó¼   •— |�3t          |dd ¦  «        �"d|j        pi v r|d         |d                  |d<   t          ¦   «                              |||||¦  «         d S )NrF   rB  rK  r}   )r«  Ú
localStaterÉ  r½   )r�   rÀ   rœ   r®   rÁ   rÆ   rÌ  s         €r6   r½   zAlternateFeature.writeY  sk   ø€ àÐÝ˜˜°Ñ5Ô5ÐAØ &Ô"3Ð"9°rÐ:Ð:à#)¨-Ô#8¸À>Ô9RÔ#SˆF�<Ñ Ý‰Œ�Š�f˜d I¨u°kÑBÔBÐBÐBÐBr8   r2   )rh   rØ   rÙ   rÚ   rš   r½   rÑ  rÒ  s   @r6   r\   r\   L  sf   ø€ € € € € ØRÐRð5ð 5ð 5ð 5ð 5ðCð Cð Cð Cð Cð Cð Cð Cð Cð Cr8   r\   c                   ó$   ‡ — e Zd Zd„ Zˆ fd„Zˆ xZS )rE   c                 óv   — | j         |         |         }|                      | j        | j        | j        |¦  «        S r2   ©r   rÌ  rT   r`   ra   ©r�   Ú	tableTypeÚ
lookupTyperd   s       r6   ÚgetConverterzSubStruct.getConverterg  ó2   € ØÔ% iÔ0°Ô<ˆ
Ø�~Š~˜dœi¨¬°d´hÀ
ÑKÔKÐKr8   c                 ó`   •— t          t          | ¦  «                             |||d |¦  «         d S r2   )rÉ  rE   rÏ   ©r�   rÎ   rœ   rÁ   rT   rÉ   rÌ  s         €r6   rÏ   zSubStruct.xmlWritek  s/   ø€ Ý�i˜ÑÔ×'Ò'¨	°4¸ÀÀeÑLÔLÐLÐLÐLr8   ©rh   rØ   rÙ   rV  rÏ   rÑ  rÒ  s   @r6   rE   rE   f  sS   ø€ € € € € ðLð Lð LðMð Mð Mð Mð Mð Mð Mð Mð Mr8   rE   c                   ó$   ‡ — e Zd Zd„ Zˆ fd„Zˆ xZS )rC   c                 óv   — | j         |         |         }|                      | j        | j        | j        |¦  «        S r2   rR  rS  s       r6   rV  zSubTable.getConverterp  rW  r8   c                 ó`   •— t          t          | ¦  «                             |||d |¦  «         d S r2   )rÉ  rC   rÏ   rY  s         €r6   rÏ   zSubTable.xmlWritet  s/   ø€ Ý�h˜ÑÔ×&Ò& y°$¸¸tÀUÑKÔKÐKÐKÐKr8   rZ  rÒ  s   @r6   rC   rC   o  sS   ø€ € € € € ðLð Lð LðLð Lð Lð Lð Lð Lð Lð Lð Lr8   rC   c                   ó   — e Zd Zdd„ZdS )rD   Nc                 óR   — d|_         t                               | |||||¦  «         d S )NT)Ú	Extensionrg   r½   rÅ   s         r6   r½   zExtSubTable.writey  s,   € ØˆÔÝ�Š�D˜& $¨	°5¸+ÑFÔFÐFÐFÐFr8   r2   )rh   rØ   rÙ   r½   r¦   r8   r6   rD   rD   x  s.   € € € € € ðGð Gð Gð Gð Gð Gr8   rD   c                   ó   — e Zd Zd„ ZdS )rF   c                 ó�   — | j                              || j        ¦  «        }|                      | j        | j        | j        |¦  «        S r2   )rS   re   ri   rÌ  rT   r`   ra   )r�   Ú
featureTagrd   s      r6   rV  zFeatureParams.getConverter  s;   € ØÔ+×/Ò/°
¸DÔ<UÑVÔVˆ
Ø�~Š~˜dœi¨¬°d´hÀ
ÑKÔKÐKr8   N)rh   rØ   rÙ   rV  r¦   r8   r6   rF   rF   ~  s(   € € € € € ðLð Lð Lð Lð Lr8   rF   c                   ó.   — e Zd ZdZdddœd„Zd„ Zdd„ZdS )	r;   r"  Nrv   rM   c                óv   — t                                | |||||¬¦  «         d|d         dk    rdndz   | _        d S )NrM   r;   éÿÿÿÿÚ2Ú1)ru   r‘   Úwhichr�   s         r6   r‘   zValueFormat.__init__‡  sN   € Ý×ÒØ�$˜  Z¸[ð 	ñ 	
ô 	
ð 	
ð #¨T°"¬X¸ª_¨_ c cÀ#ÑFˆŒ
ˆ
ˆ
r8   c                 ó\   — |                      ¦   «         }t          |¦  «        || j        <   |S r2   )r/  r   ri  ©r�   r£   rœ   r®   Úformats        r6   rš   zValueFormat.read�  s,   € Ø×"Ò"Ñ$Ô$ˆÝ/°Ñ7Ô7ˆˆtŒzÑØˆr8   c                 ó^   — |                      |¦  «         t          |¦  «        || j        <   d S r2   )r5  r   ri  )r�   rÀ   rœ   r®   rl  rÆ   s         r6   r½   zValueFormat.write’  s0   € Ø×Ò˜6Ñ"Ô"Ð"Ý/°Ñ7Ô7ˆˆtŒzÑÐÐr8   r2   )rh   rØ   rÙ   r³   r‘   rš   r½   r¦   r8   r6   r;   r;   „  sb   € € € € € Ø€JðGÈ"ð Gð Gð Gð Gð Gðð ð ð
8ð 8ð 8ð 8ð 8ð 8r8   r;   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ò  ri  rµ   s     r6   rª   zValueRecord.getRecordSize˜  s   € Ø•3�v˜dœjÔ)Ñ*Ô*Ñ*Ð*r8   c                 óD   — || j                                       ||¦  «        S r2   )ri  ÚreadValueRecordr¹   s       r6   rš   zValueRecord.read›  s   € Ø�d”jÔ!×1Ò1°&¸$Ñ?Ô?Ð?r8   Nc                 óJ   — || j                                       |||¦  «         d S r2   )ri  ÚwriteValueRecordrÅ   s         r6   r½   zValueRecord.writež  s'   € ØˆtŒzÔ×+Ò+¨F°D¸%Ñ@Ô@Ð@Ð@Ð@r8   c                 óH   — |€d S |                      ||| j        |¦  «         d S r2   )rü  rT   rÍ   s         r6   rÏ   zValueRecord.xmlWrite¡  s,   € Øˆ=ØˆDà�KŠK˜	 4¨¬°EÑ:Ô:Ð:Ð:Ð:r8   c                 óV   — ddl m}  |¦   «         }|                     d |||¦  «         |S )Nr   )ro  )ÚotBasero  r  )r�   rÉ   rÊ   rœ   ro  rÁ   s         r6   rË   zValueRecord.xmlRead§  s<   € Ø'Ð'Ð'Ð'Ð'Ð'à�‘”ˆØ�Š�d˜E 7¨DÑ1Ô1Ð1Øˆr8   r2   )rh   rØ   rÙ   rª   rš   r½   rÏ   rË   r¦   r8   r6   ro  ro  —  sk   € € € € € ð+ð +ð +ð@ð @ð @ðAð Að Að Að;ð ;ð ;ðð ð ð ð r8   ro  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¤  rv   rM   c                óò   — t                                | |||||¬¦  «         t          | j        t          ¦  «        r|                      dd d ¬¦  «        | _        d S t          dd d | j        ¬¦  «        | _        d S )NrM   ÚValue)rT   r`   ra   )rT   r`   ra   rd   )ru   r‘   Ú
issubclassrd   rÝ   Ú	converterrg   r�   s         r6   r‘   zAATLookup.__init__²  s„   € Ý×ÒØ�$˜  Z¸[ð 	ñ 	
ô 	
ð 	
õ �d”o¥{Ñ3Ô3ð 	Ø!Ÿ_š_°'À$ÈD˜_ÑQÔQˆDŒNˆNˆNå"Ø T¨tÀÄðñ ô ˆDŒNˆNˆNr8   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ÚreadFormat8rk  s        r6   rš   zAATLookup.read½  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ÐBr8   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¦   ©r|  )r§   ÚglyphÚvalrœ   s      €r6   ú
<listcomp>z#AATLookup.write.<locals>.<listcomp>Î  s.   ø€ ÐRÐRÐR±j°e¸S�T—_’_ UÑ+Ô+¨SÐ1ÐRÐRÐRr8   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Æ   rf   ÚformatsÚdataSizeÚlookupFormatÚwriteMethodr�   Ú
actualSizes     `          r6   r½   zAATLookup.writeÌ  s;  ø€ ÝÝÐRÐRÐRÐRÀEÇKÂKÁMÄMÐRÑRÔRÑSÔSñ
ô 
ˆõ ÝÝØà×)Ò)¨&°$¸Ñ?Ô?Ø×)Ò)¨&°$¸Ñ?Ô?Ø×)Ò)¨&°$¸Ñ?Ô?Ø×)Ò)¨&°$¸Ñ?Ô?ð	ñô ñ
ô 
ñ
ô 
ˆð /6°a¬jÑ+ˆ�, Ø×"Ò"Ñ$Ô$ˆØˆ‰ŒˆØ×)Ò)Ñ+Ô+¨cÑ1ˆ
à˜(Ò"Ð"Ð"ØHØØØðL
ñ 
ñ #Ô"Ð"Ð"Ð"r8   c                 ó  — |                       |¦  «         |                       |¦  «         t          ||¬¦  «        \  }}}|                       |¦  «         |                       |¦  «         |                       |¦  «         d S )N)ÚnÚitemSize)r5  r   )rÀ   ÚnumUnitsÚunitSizeÚsearchRangeÚentrySelectorÚ
rangeShifts         r6   ÚwriteBinSearchHeaderzAATLookup.writeBinSearchHeaderì  sŽ   € à×Ò˜8Ñ$Ô$Ð$Ø×Ò˜8Ñ$Ô$Ð$Ý1?Ø ð2
ñ 2
ô 2
Ñ.ˆ�] Jð 	×Ò˜;Ñ'Ô'Ð'Ø×Ò˜=Ñ)Ô)Ð)Ø×Ò˜:Ñ&Ô&Ð&Ð&Ð&r8   c                 ó°   ‡ ‡‡‡— t          ‰                     ¦   «         ¦  «        }t          ‰¦  «        |k    rd S ‰ j        j        }d||z  z   dˆˆ ˆˆfd„fS )Nr"  r   c                  ó2   •— ‰                      ‰‰ ‰¦  «        S r2   )ÚwriteFormat0©rœ   r�   rf   rÀ   s   €€€€r6   r7   z(AATLookup.buildFormat0.<locals>.<lambda>ÿ  ó   ø€ �D×%Ò% f¨d°FÑ;Ô;€ r8   )rò  ÚgetGlyphOrderr~  r³   )r�   rÀ   rœ   rf   Ú	numGlyphsÚ	valueSizes   ````  r6   r�  zAATLookup.buildFormat0÷  sn   øøøø€ Ý˜×*Ò*Ñ,Ô,Ñ-Ô-ˆ	Ýˆv‰;Œ;˜)Ò#Ð#Ø�4Ø”NÔ-ˆ	à�	˜IÑ%Ñ%ØØ;Ð;Ð;Ð;Ð;Ð;Ð;ð
ð 	
r8   c                 ó~   — |                      d¦  «         |D ]$\  }}| j                             ||d |d ¬¦  «         Œ%d S )Nr   ©r®   rÁ   rÆ   )r5  r~  r½   )r�   rÀ   rœ   rf   ÚglyphID_rÁ   s         r6   r£  zAATLookup.writeFormat0  sb   € Ø×Ò˜1ÑÔÐØ%ð 	ð 	‰OˆH�eØŒN× Ò Ø˜¨°EÀtð !ñ ô ð ð ð	ð 	r8   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 r2   )ÚwriteFormat2)rœ   Úsegmentsr�   rÀ   s   €€€€r6   r7   z(AATLookup.buildFormat2.<locals>.<lambda>  s   ø€ �D×%Ò% f¨d°HÑ=Ô=€ r8   )rj   r~  r³   rò  ÚBIN_SEARCH_HEADER_SIZE)r�   rÀ   rœ   rf   ÚsegStartÚsegValueÚsegEndÚglyphIDÚcurValuer¨  r›  rœ  r¯  s   ```         @r6   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ØØ=Ð=Ð=Ð=Ð=Ð=Ð=ð
ð 	
r8   c                 óÆ  — |                      d¦  «         | j        j        }t          |¦  «        |dz   }}|                      |||¦  «         |D ]O\  }}}	|                      |¦  «         |                      |¦  «         | j                             ||d |	d ¬¦  «         ŒP|                      d¦  «         |                      d¦  «         |                     d|z  ¦  «         d S )Nr"  r÷   rª  rŒ  rå  ©r5  r~  r³   rò  r   r½   ró  )
r�   rÀ   rœ   r¯  r¨  r›  rœ  Ú
firstGlyphÚ	lastGlyphrÁ   s
             r6   r®  zAATLookup.writeFormat2  s  € Ø×Ò˜1ÑÔÐØ”NÔ-ˆ	Ý  ™]œ]¨I¸©M�(ˆØ×!Ò! &¨(°HÑ=Ô=Ð=Ø,4ð 	ð 	Ñ(ˆJ˜	 5Ø×Ò˜yÑ)Ô)Ð)Ø×Ò˜zÑ*Ô*Ð*ØŒN× Ò Ø˜¨°EÀtð !ñ ô ð ð ð 	×Ò˜6Ñ"Ô"Ð"Ø×Ò˜6Ñ"Ô"Ð"Ø×Ò˜ 9Ñ,Ñ-Ô-Ð-Ð-Ð-r8   c                 ó‚   ‡ ‡‡‡— ‰ j         j        }t          ‰¦  «        |dz   }}d‰ j        z   |dz   |z  z   dˆˆ ˆˆfd„fS )Nr"  r   r€  c                  ó2   •— ‰                      ‰‰ ‰¦  «        S r2   )ÚwriteFormat6r¤  s   €€€€r6   r7   z(AATLookup.buildFormat6.<locals>.<lambda>2  r¥  r8   )r~  r³   rò  r°  )r�   rÀ   rœ   rf   r¨  r›  rœ  s   ````   r6   r‘  zAATLookup.buildFormat6,  s^   øøøø€ Ø”NÔ-ˆ	Ý  ™[œ[¨)°a©-�(ˆà�Ô+Ñ+¨x¸!©|¸xÑ.GÑGØØ;Ð;Ð;Ð;Ð;Ð;Ð;ð
ð 	
r8   c                 óp  — |                      d¦  «         | j        j        }t          |¦  «        |dz   }}|                      |||¦  «         |D ]9\  }}|                      |¦  «         | j                             ||d |d ¬¦  «         Œ:|                      d¦  «         |                     d|z  ¦  «         d S )Nr€  r"  rª  rŒ  rå  r·  )	r�   rÀ   rœ   rf   r¨  r›  rœ  r´  rÁ   s	            r6   r¼  zAATLookup.writeFormat65  sÖ   € Ø×Ò˜1ÑÔÐØ”NÔ-ˆ	Ý  ™[œ[¨)°a©-�(ˆØ×!Ò! &¨(°HÑ=Ô=Ð=Ø$ð 	ð 	‰NˆG�UØ×Ò˜wÑ'Ô'Ð'ØŒN× Ò Ø˜¨°EÀtð !ñ ô ð ð ð 	×Ò˜6Ñ"Ô"Ð"Ø×Ò˜ 9Ñ,Ñ-Ô-Ð-Ð-Ð-r8   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   rf  r   r€  r–   c                  ó2   •— ‰                      ‰‰ ‰¦  «        S r2   )ÚwriteFormat8r¤  s   €€€€r6   r7   z(AATLookup.buildFormat8.<locals>.<lambda>J  r¥  r8   )rò  r~  r³   )r�   rÀ   rœ   rf   Ú
minGlyphIDÚ
maxGlyphIDr¨  s   ````   r6   r’  zAATLookup.buildFormat8B  s~   øøøø€ Ø!'¨¤¨1¤¨v°b¬z¸!¬}�Jˆ
Ýˆv‰;Œ;˜* zÑ1°AÑ5Ò5Ð5Ø�4Ø”NÔ-ˆ	à•�F‘”˜iÑ'Ñ'ØØ;Ð;Ð;Ð;Ð;Ð;Ð;ð
ð 	
r8   c                 ó  — |d         d         }|                      d¦  «         |                      |¦  «         |                      t          |¦  «        ¦  «         |D ]$\  }}| j                             ||d |d ¬¦  «         Œ%d S )Nr   r–   rª  )r5  rò  r~  r½   )r�   rÀ   rœ   rf   ÚfirstGlyphIDÚ_rÁ   s          r6   rÀ  zAATLookup.writeFormat8M  s�   € Ø˜a”y ”|ˆØ×Ò˜1ÑÔÐØ×Ò˜<Ñ(Ô(Ð(Ø×Ò�3˜v™;œ;Ñ'Ô'Ð'Øð 	ð 	‰HˆAˆuØŒN× Ò Ø˜¨°EÀtð !ñ ô ð ð ð	ð 	r8   c                 ó¸   ‡— t          ‰                     ¦   «         ¦  «        }| j                             |‰d |¬¦  «        }ˆfd„t	          |¦  «        D ¦   «         S )N©r®   r¯   c                 óB   •— i | ]\  }}‰                      |¦  «        |“ŒS r¦   ©rv  )r§   ÚkrÁ   rœ   s      €r6   ú
<dictcomp>z)AATLookup.readFormat0.<locals>.<dictcomp>Z  s-   ø€ ÐLÐLÐL±°°5�×!Ò! !Ñ$Ô$ eÐLÐLÐLr8   )rò  r¦  r~  r±   r¼   )r�   r£   rœ   r§  rî  s     `  r6   r�  zAATLookup.readFormat0W  sZ   ø€ Ý˜×*Ò*Ñ,Ô,Ñ-Ô-ˆ	ØŒ~×'Ò'¨°ÀÈIÐ'ÑVÔVˆØLÐLÐLÐL½IÀd¹O¼OÐLÑLÔLÐLr8   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®   rŒ  r   ©r�   r/  r~  r³   r¬   r™   rš   rv  )r�   r£   rœ   Úmappingr�   rœ  r›  r›   ÚlastÚfirstrÁ   rÊ  s               r6   r‚  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øØˆr8   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"  r€  rÍ  rŒ  r   r   rÇ  )	r�   r/  r¬   r™   r(  r~  r±   r¼   rv  )r�   r£   rœ   rÐ  r�   rœ  r›   rÑ  rÒ  r)  Ú
dataReaderrî  rÊ  rß  s                 r6   rƒ  zAATLookup.readFormat4k  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øØˆr8   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Î  rŒ  rÏ  )	r�   r£   rœ   rÐ  r�   rœ  r›   r´  rÁ   s	            r6   r„  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øØˆr8   c                 óÊ   ‡‡— |                      ¦   «         Š|                      ¦   «         }| j                             |‰d |¬¦  «        }ˆˆfd„t          |¦  «        D ¦   «         S )NrÇ  c                 óH   •— i | ]\  }}‰                      ‰|z   ¦  «        |“ŒS r¦   rÉ  )r§   rÊ  rÁ   rÒ  rœ   s      €€r6   rË  z)AATLookup.readFormat8.<locals>.<dictcomp>�  s1   ø€ ÐVÐVÐV¹
¸¸E�×!Ò! %¨!¡)Ñ,Ô,¨eÐVÐVÐVr8   )r/  r~  r±   r¼   )r�   r£   rœ   r¯   rî  rÒ  s     `  @r6   r…  zAATLookup.readFormat8Œ  sh   øø€ Ø×!Ò!Ñ#Ô#ˆØ×!Ò!Ñ#Ô#ˆØŒ~×'Ò'¨°ÀÈEÐ'ÑRÔRˆØVÐVÐVÐVÐVÅiÐPTÁoÄoÐVÑVÔVÐVr8   c                 ó    — i }|D ]H}t          |t          ¦  «        r1|\  }}}|dk    r%| j                             |||¦  «        ||d         <   ŒI|S )NÚLookupr‰  )r3   r4   r~  rË   )	r�   rÉ   rÊ   rœ   rÁ   r	  rT   ÚaÚ
eltContents	            r6   rË   zAATLookup.xmlRead’  sj   € ØˆØð 	Tð 	TˆGÝ˜'¥5Ñ)Ô)ð TØ&-Ñ#��a˜Ø˜8Ò#Ð#Ø(,¬×(>Ò(>¸qÀ*ÈdÑ(SÔ(S�E˜!˜Gœ*Ñ%øØˆr8   c           	      ó>  — |                      ||¦  «         |                     ¦   «          t          |                     ¦   «         ¦  «        D ]'\  }}| j                             |||dd|fg¬¦  «         Œ(|                     |¦  «         |                     ¦   «          d S )NrÙ  r‰  )rÁ   rT   rÉ   )Úbegintagrç   r�  r  r~  rÏ   Úendtag)r�   rÎ   rœ   rÁ   rT   rÉ   r‰  s          r6   rÏ   zAATLookup.xmlWrite›  s²   € Ø×Ò˜4 Ñ'Ô'Ð'Ø×ÒÑÔÐÝ" 5§;¢;¡=¤=Ñ1Ô1ð 	ð 	‰LˆE�5ØŒN×#Ò#Ø˜4 u°8ÀWÈeÐDTÐCUð $ñ ô ð ð ð 	×Ò˜ÑÔÐØ×ÒÑÔÐÐÐr8   r2   )rh   rØ   rÙ   r°  r‘   rš   r½   ré   r   r�  r£  r�  r®  r‘  r¼  r’  rÀ  r�  r‚  rƒ  r„  r…  rË   rÏ   r¦   r8   r6   rz  rz  ¯  s_  € € € € € ØÐàEGð 	ð 	ð 	ð 	ð 	ðCð Cð Cð
ð 
ð 
ð 
ð@ ð'ð 'ñ „\ð'ð	
ð 	
ð 	
ðð ð ð
ð 
ð 
ð(.ð .ð .ð
ð 
ð 
ð.ð .ð .ð	
ð 	
ð 	
ðð ð ðMð Mð Mð
ð ð ðð ð ð(ð ð ðWð Wð Wðð ð ðð ð ð ð r8   rz  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(  rz  r,  rš   r  rd   r÷  )r�   r£   rœ   r®   ÚlookupOffsetÚ
dataOffsetÚlookupReaderÚlookupÚoffsetsÚresultr‰  r)  rÔ  Úitems                 r6   rš   zAATLookupWithDataOffset.read®  sÊ   € Ø×'Ò'Ñ)Ô)ˆØ×%Ò%Ñ'Ô'ˆ
Ø×*Ò*¨<Ñ8Ô8ˆÝ˜=¨$°µfÑ=Ô=ˆØ—+’+˜l¨D°)Ñ<Ô<ˆØˆØ$Ÿ]š]™_œ_ð 	!ð 	!‰MˆE�6Ø×,Ò,¨V°jÑ-@ÑAÔAˆJØ—?’?Ñ$Ô$ˆDØ�NŠN˜: tÑ,Ô,Ð,Ø ˆF�5‰MˆMØˆr8   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+  )r�  r|  r   rc   r  re   rò  rj   r  rz  r,  r½   r-  ró  )r�   rÀ   rœ   r®   rÁ   rÆ   ÚoffsetByGlyphÚoffsetByDataÚdataLenÚcompiledDatar‰  r.  rî  r)  ÚlookupWriterrç  Ú
dataWriterÚds                     r6   r½   zAATLookupWithDataOffset.write¼  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Ø× Ò  Ñ#Ô#Ð#Ð#ð	$ð 	$r8   c                 ó^   — t          dd d | j        ¦  «        }|                     |||¦  «        S râ  )rz  rd   rË   )r�   rÉ   rÊ   rœ   rç  s        r6   rË   zAATLookupWithDataOffset.xmlReadß  s-   € Ý˜=¨$°°d´oÑFÔFˆØ�~Š~˜e W¨dÑ3Ô3Ð3r8   c                 óf   — t          dd d | j        ¦  «        }|                     |||||¦  «         d S râ  )rz  rd   rÏ   )r�   rÎ   rœ   rÁ   rT   rÉ   rç  s          r6   rÏ   z AATLookupWithDataOffset.xmlWriteã  s7   € Ý˜=¨$°°d´oÑFÔFˆØ�Š˜	 4¨°°eÑ<Ô<Ð<Ð<Ð<r8   r2   ©rh   rØ   rÙ   rš   r½   rË   rÏ   r¦   r8   r6   rà  rà  ­  sV   € € € € € ðð ð ð!$ð !$ð !$ð !$ðF4ð 4ð 4ð=ð =ð =ð =ð =r8   rà  c                   ó(   — e Zd Zd„ Zd„ Zd„ Zdd„ZdS )ÚMortSubtableConverterc                 óº  — |j         }t          ¦   «         }|                     ¦   «         |_        |                     ¦   «         |_        |                     ¦   «         |_        |                     ¦   «         |_        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 )NÚmortFz!unsupported 'mort' lookup type %s©rî  ÚtableTag)r�   r&   r/  r>   rF  ÚCoverageFlagsr?   r  ÚSubFeatureFlagsr   re   rî  rò  r   rü  rE   r÷  r™   )
r�   r£   rœ   r®   r�   rÖ   rd   ÚheaderLengthrî  Ú	subReaders
             r6   rš   zMortSubtableConverter.readé  s9  € ØŒjˆÝ‰NŒNˆØ×*Ò*Ñ,Ô,ˆŒØ ×*Ò*Ñ,Ô,ˆŒØ×&Ò&Ñ(Ô(ˆŒØ"×,Ò,Ñ.Ô.ˆÔÝ  Ô(×,Ò,¨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˜!œ.Ñ(Ñ)Ô)Ð)Øˆr8   c                 ól  — |                      ||¦  «         |                     ¦   «          |                     d|j        z  ¦  «         |                     ¦   «          |                     d|j        ¬¦  «         |                     ¦   «          |                     d|j        z  ¦  «         |                     ¦   «          |                     dd|j        z  ¬¦  «         |                     ¦   «          |j         	                    ||¦  «         | 
                    |¦  «         |                     ¦   «          d S )NúStructLength=%drý  rß   úMorphType=%drþ  rÝ  )rÝ  rç   ra  r>   ræ   rý  r?   rþ  rE   rü  rÞ  rÍ   s         r6   rÏ   zMortSubtableConverter.xmlWrite   s,  € Ø×Ò˜4 Ñ'Ô'Ð'Ø×ÒÑÔÐØ×ÒÐ+¨eÔ.@Ñ@ÑAÔAÐAØ×ÒÑÔÐØ×Ò˜O°5Ô3FÐÑGÔGÐGØ×ÒÑÔÐØ×Ò˜.¨5¬?Ñ:Ñ;Ô;Ð;Ø×ÒÑÔÐØ×ÒÐ-°XÀÔ@UÑ5UÐÑVÔVÐVØ×ÒÑÔÐØŒ×Ò˜i¨Ñ.Ô.Ð.Ø×Ò˜ÑÔÐØ×ÒÑÔÐÐÐr8   c                 óZ  — t          ¦   «         }d|_        t          t          |¦  «        D ]\  }}}|dk    rt	          |d         ¦  «        |_        Œ'|dk    rt	          |d         ¦  «        |_        ŒH|                     d¦  «        r|                     ||||¦  «         ŒvJ |¦   «         ‚|S )Nr   rý  rÁ   rþ  ÚMorph)r&   rý  rŽ  Úistupler   rþ  rW   r  )r�   rÉ   rÊ   rœ   rÖ   ÚeltNameÚeltAttrsrÛ  s           r6   rË   zMortSubtableConverter.xmlRead  s»   € Ý‰NŒNˆØˆŒÝ-3µG¸WÑ-EÔ-Eð 	&ð 	&Ñ)ˆG�X˜zØ˜/Ò)Ð)Ý"*¨8°GÔ+<Ñ"=Ô"=�”�ØÐ-Ò-Ð-Ý$,¨X°gÔ->Ñ$?Ô$?�Ô!Ð!Ø×!Ò! 'Ñ*Ô*ð &Ø—	’	˜' 8¨Z¸Ñ>Ô>Ð>Ð>à%˜gÑ%Ô%Ð%Øˆr8   Nc                 óH  — t          |j        ¦  «        }|                     ¦   «         }d|_        |                     ||¦  «         |j        |         dk    sJ ‚|                     ¦   «         |z
  }|dk    rt          d¦  «        ‚t          j        d|¦  «        |j        |<   d S )Nr  s   Þ­rŒ  z!mort subtable exceeds 65535 bytesú>H)rò  r  r  r>   rc   Ú
ValueErrorÚstructÚpack)	r�   rÀ   rœ   r®   rÁ   rÆ   r  r  r  s	            r6   r½   zMortSubtableConverter.write  s¢   € Ý˜&œ,Ñ'Ô'ˆØ×%Ò%Ñ'Ô'ˆØ#ˆÔØ�Š�f˜dÑ#Ô#Ð#ØŒ|˜KÔ(¨KÒ7Ð7Ð7Ð7Ø×%Ò%Ñ'Ô'¨&Ñ0ˆØ�FŠ?ˆ?ÝÐ@ÑAÔAÐAÝ$*¤K°°fÑ$=Ô$=ˆŒ�[Ñ!Ð!Ð!r8   r2   )rh   rØ   rÙ   rš   rÏ   rË   r½   r¦   r8   r6   rø  rø  è  sU   € € € € € ðð ð ð.ð ð ðð ð ð	>ð 	>ð 	>ð 	>ð 	>ð 	>r8   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ì  rŠ  s      r6   rË  z MorxSubtableConverter.<dictcomp>2  s   € Ð"WÐ"WÐ"W±°°S 3¨Ð"WÐ"WÐ"Wr8   Nrv   rM   c                óF   — t                                | |||||¬¦  «         d S ©NrM   )ru   r‘   r�   s         r6   r‘   zMorxSubtableConverter.__init__4  s6   € Ý×ÒØ�$˜  Z¸[ð 	ñ 	
ô 	
ð 	
ð 	
ð 	
r8   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      r6   Ú"_setTextDirectionFromCoverageFlagsz8MorxSubtableConverter._setTextDirectionFromCoverageFlags9  sJ   € Ø�D‰L˜QÒÐØ%*ˆHÔ"Ð"Ð"Ø�d‰l˜qÒ Ð Ø%/ˆHÔ"Ð"Ð"à%1ˆHÔ"Ð"Ð"r8   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 %srû  )r�   r'   r  r>   rF  Ú_PROCESSING_ORDERSÚProcessingOrderr   r/  ÚReservedr?   rþ  r   re   rî  rò  r   rü  rE   r÷  r™   )r�   r£   rœ   r®   r�   rÖ   rš  ÚorderKeyrd   rÿ  rî  r   s               r6   rš   zMorxSubtableConverter.readA  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˜!œ.Ñ(Ñ)Ô)Ð)Øˆr8   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 )Nr  r  rß   r%  r   r&  z0x%04xr  rþ  rÝ  )rÝ  rç   ra  r>   ræ   r  r%  r&  r?   rþ  rE   rü  rÞ  rÍ   s         r6   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¨Ñ.Ô.Ð.Ø×Ò˜ÑÔÐØ×ÒÑÔÐÐÐr8   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   rý  rÁ   rã  r¿  r%  zunknown ProcessingOrder: %sr  >   r  r  r  zunknown TextDirection %sr&  rþ  r  Fr"  )r'   r&  rŽ  r  r   r$  r%  r   Ú_PROCESSING_ORDERS_REVERSEDr  rþ  rW   r  )
r�   rÉ   rÊ   rœ   rÖ   ÚcovFlagsr  r  rÛ  r'  s
             r6   rË   zMorxSubtableConverter.xmlReadp  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ˆŒ
Øˆr8   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  rŒ  r  z>L)r&  r*  r%  r  rý  rò  r  r  r>   rc   r  r  )r�   rÀ   rœ   r®   rÁ   rÆ   r+  ÚreverseOrderÚlogicalOrderr  r  ÚorigReservedr  s                r6   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Ñ$=Ô$=ˆŒ�[Ñ!Ð!Ð!r8   r2   )rh   rØ   rÙ   r$  r  r*  r‘   r   rš   rÏ   rË   r½   r¦   r8   r6   r  r  )  sÄ   € € € € € ð &Ø,Ø%Ø,ðð Ðð #XÐ"WÐ<N×<TÒ<TÑ<VÔ<VÐ"WÑ"WÔ"WÐð
È"ð 
ð 
ð 
ð 
ð 
ð
2ð 2ð 2ðð ð ð6ð ð ð(ð ð ð@>ð >ð >ð >ð >ð >r8   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 )Ú	STXHeaderrv   rM   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 )NrM   ÚGlyphClassesÚPerGlyphLookup)ru   r‘   r}  rd   r!   rz  r,  ÚclassLookupr"   rp  ÚperGlyphLookupr�   s         r6   r‘   zSTXHeader.__init__«  sœ   € Ý×ÒØ�$˜  Z¸[ð 	ñ 	
ô 	
ð 	
õ ˜$œ/­9Ñ5Ô5Ð5Ð5Ð5Ý$ ^°T¸4ÅÑHÔHˆÔÝ�d”oÕ'<Ñ=Ô=ð 	'Ý"+Ð,<¸dÀDÍ'Ñ"RÔ"RˆDÔÐÐà"&ˆDÔÐÐr8   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™   r6  r}  rd   r$   r2  ÚLigComponentsÚ_readLigaturesÚ	Ligaturesr%   r5  rš   r3  rÔ   r¬   r    ÚStatesrj   r/  Ú_readTransitionÚTransitionsÚ_readPerGlyphLookupsÚPerGlyphLookups)r�   r£   rœ   r®   r“   r�   ÚclassTableReaderÚstateArrayReaderÚentryTableReaderÚactionReaderÚligaturesReaderÚperGlyphTableReaderÚligComponentReaderÚnumLigComponentsÚ	numStatesÚ
stateIndexÚstateÚ
glyphClassÚ
entryIndexs                      r6   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Ô!ð ˆr8   c                 ó¦   — |                       ¦   «         }|                     |j        ||j        z  z   ¦  «        }|                     |||¦  «         |S r2   )rd   r(  r�   r³   r÷  )r�   r£   rM  rœ   rD  Ú
transitionÚentryReaders          r6   r=  zSTXHeader._readTransitionå  sX   € Ø—_’_Ñ&Ô&ˆ
Ø×)Ò)ØŒJ˜ jÔ&;Ñ;Ñ;ñ
ô 
ˆð 	×Ò˜[¨$°Ñ=Ô=Ð=ØÐr8   c                 ó”   — t          |j        ¦  «        }||j        z
  dz  }|                     |                     |¦  «        ¦  «        S rq  )rò  rî  r�   rs  r2  )r�   r£   rœ   ÚlimitÚnumLigatureGlyphss        r6   r:  zSTXHeader._readLigaturesí  sF   € Ý�F”KÑ Ô ˆØ" V¤ZÑ/°AÑ5ÐØ×$Ò$ V×%;Ò%;Ð<MÑ%NÔ%NÑOÔOÐOr8   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   rŒ  r   )r<  r>  rf   r3   r"   Ú	MarkIndexÚmaxÚCurrentIndex)r�   r“   Ú
numLookupsrK  r5   s        r6   Ú_countPerGlyphLookupszSTXHeader._countPerGlyphLookupsò  s¤   € ð
 ˆ
Ø”\ð 	Ið 	IˆEØÔ&×-Ò-Ñ/Ô/ð Ið I�Ý˜aÕ!6Ñ7Ô7ð IØ”{ fÒ,Ð,Ý%(¨°Q´[À1±_Ñ%EÔ%E˜
Ø”~¨Ò/Ð/Ý%(¨°Q´^ÀaÑ5GÑ%HÔ%H˜
øðIð Ðr8   c                 ó>  — |j         }g }t          |                      |¦  «        ¦  «        D ]p}|                     d¦  «        }|                     ||                     ¦   «         z   ¦  «         |                     | j                             ||i ¦  «        ¦  «         Œq|S rò   )	r�   r¬   rY  r(  r™   r  rj   r6  rš   )r�   r“   r£   rœ   r�   ÚlookupsrÅ  ræ  s           r6   r?  zSTXHeader._readPerGlyphLookups  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Øˆr8   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   r5  r½   r3  r   r  rV  rf   r6  rd   Ú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                          r6   r½   zSTXHeader.write
  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Ñ(Ô(Ð(ØÐ(Ø×ÒÐ.Ñ/Ô/Ð/ØÐ$Ø×Ò˜]Ñ+Ô+Ð+Ð+Ð+ð %Ð$r8   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>  rc   r  rò  r³   r  re   rj   r5  r   r   )r�   rœ   Ústatesre  rh  ÚstateArrayWriterÚentriesÚentryIDsrK  rL  rO  ÚentryWriterÚ	entryDatarM  ri  rj  s                   r6   r_  zSTXHeader._compileStatesA  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ˆØ˜~Ð-Ð-r8   c                 óš  — | j         €dS |                      |¦  «        }t          |j        ¦  «        |k    s!J dt          |j        ¦  «        |fz  ¦   «         ‚t	          ¦   «         }|j        D ]K}|                     ¦   «         }| j                              ||i |d ¦  «         |                     |d¬¦  «         ŒL|                     ¦   «         S )Nr8   zVlen(AATStateTable.PerGlyphLookups) is %d, but the actions inside the table refer to %dr÷   r+  )	r6  rY  rò  r@  r   r  r½   r-  r  )r�   r“   rœ   rX  rÀ   rç  rñ  s          r6   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Ø× Ò  ¸!Ð Ñ<Ô<Ð<Ð<Ø× Ò Ñ"Ô"Ð"r8   c                 ó¨   — t          |d¦  «        sd S t          ¦   «         }|j        D ]}|                     |¦  «         Œ|                     ¦   «         S )Nr9  )r´   r   r9  r5  r  )r�   r“   rœ   rÀ   Ú	components        r6   ra  zSTXHeader._compileLigComponentsk  s]   € Ý�u˜oÑ.Ô.ð 	Ø�4Ý‘”ˆØÔ,ð 	*ð 	*ˆIØ×Ò˜yÑ)Ô)Ð)Ð)Ø× Ò Ñ"Ô"Ð"r8   c                 óÎ   — t          |d¦  «        sd S t          ¦   «         }|j        D ]*}|                     |                     |¦  «        ¦  «         Œ+|                     ¦   «         S )Nr;  )r´   r   r;  r5  r|  r  )r�   r“   rœ   rÀ   Ú	glyphNames        r6   rb  zSTXHeader._compileLigaturess  sh   € Ý�u˜kÑ*Ô*ð 	Ø�4Ý‘”ˆØœð 	;ð 	;ˆIØ×Ò˜tŸš¨yÑ9Ô9Ñ:Ô:Ð:Ð:Ø× Ò Ñ"Ô"Ð"r8   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¦  «         |                     ¦   «          t          |d¦  «        r”|                      d¦  «         |                     ¦   «          t	          |j        ¦  «        D ]-}|                     d|¬¦  «         |                     ¦   «          Œ.|                     d¦  «         |                     ¦   «          |                      |||||¦  «         |                     |¦  «         |                     ¦   «          d S )NzGlyphClassCount=%sÚ
GlyphClass©r‰  rÁ   ÚState©ÚindexÚonGlyphClassÚ
Transition)rœ   rÉ   rT   r4  rÙ  r9  ÚLigComponent)r…  rÁ   Ú_MortLigatureRebaseÚMortLigatureRebaseÚ	Component)rÝ  rç   ra  r8  r�  r3  r  ræ   r¼   r<  r>  rü  rÞ  r@  r´   r«  r‰  Ú_xmlWriteLigatures)r�   rÎ   rœ   rÁ   rT   rÉ   ÚgÚklassrJ  rK  rL  Útransr›   rç  r‰  rŠ  ÚcomponentIndexs                    r6   rÏ   zSTXHeader.xmlWrite{  sî  € Ø×Ò˜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Ø×!Ò!Ñ#Ô#Ð#Ð#Ø×Ò˜_Ñ-Ô-Ð-Ø×ÒÑÔÐÝ�5Ð/Ñ0Ô0ð 	 Ø×ÒÐ3Ñ4Ô4Ð4Ø×ÒÑÔÐÝ"(¨Ô)BÑ"CÔ"Cð $ð $�Ø×#Ò# K°~Ð#ÑFÔFÐFØ×!Ò!Ñ#Ô#Ð#Ð#Ø×ÒÐ1Ñ2Ô2Ð2Ø×ÒÑÔÐØ×Ò 	¨4°¸¸eÑDÔDÐDØ×Ò˜ÑÔÐØ×ÒÑÔÐÐÐr8   c                 ól  — t          |d¦  «        sd S |                     d¦  «         |                     ¦   «          t          t	          |d¦  «        ¦  «        D ]1\  }}|                     d||¬¦  «         |                     ¦   «          Œ2|                     d¦  «         |                     ¦   «          d S )Nr;  ÚLigature)r…  r‰  )r´   rÝ  rç   r¼   r«  ræ   rÞ  )r�   rÎ   rœ   rÁ   rT   rÉ   r›   r�  s           r6   rŒ  zSTXHeader._xmlWriteLigatures«  sÀ   € Ý�u˜kÑ*Ô*ð 	ØˆFØ×Ò˜;Ñ'Ô'Ð'Ø×ÒÑÔÐÝ�g e¨[Ñ9Ô9Ñ:Ô:ð 	 ð 	 ‰DˆAˆqØ×Ò 
°!¸1ÐÑ=Ô=Ð=Ø×ÒÑÔÐÐØ×Ò˜Ñ%Ô%Ð%Ø×ÒÑÔÐÐÐr8   c                 óJ  — t          ¦   «         }t          t          |¦  «        D �]\  }}}|dk    r(|d         }|d         }	t          |	¦  «        |j        |<   Œ5|dk    r2|                      |||¦  «        }
|j                             |
¦  «         Œm|dk    r7| j         	                    |||¦  «        }|j
                             |¦  «         Œª|dk    r|                      |||¦  «        |_        ŒÍ|dk    r%d„ t          t          |¦  «        D ¦   «         |_        Œø|d	k    r|                      |||¦  «        |_        �Œt!          |j                             ¦   «         ¦  «        }|                     d
„ |j        D ¦   «         ¦  «         t'          |d¬¦  «        dz   |_        |S )Nr�  r‰  rÁ   rƒ  r4  r9  rŠ  c                 óL   — h | ]!\  }}}|d k    ¯t          |d         ¦  «        ’Œ"S )r‹  r…  ©r   )r§   ÚcomponentNameÚcomponentAttrsÚ_componentContents       r6   ú	<setcomp>z$STXHeader.xmlRead.<locals>.<setcomp>È  sE   € ð -ð -ð -áH˜ ~Ð7Hð %¨Ò3Ð3õ	 ˜^¨GÔ4Ñ5Ô5ð 4Ð3Ð3r8   r;  c              3   ó.   K  — | ]}|j         D ]}|V — ŒŒd S r2   )r>  )r§   rK  rL  s      r6   r¨   z$STXHeader.xmlRead.<locals>.<genexpr>Ò  sJ   è è € ð 
ð 
Ø À5ÔCTð
ð 
Ø5?ˆJð
ð 
ð 
ð 
ð 
ð 
ð 
r8   rf  ©Údefaultr   )r   rŽ  r  r   r3  Ú_xmlReadStater<  rj   r6  rË   r@  Ú_xmlReadLigComponentsr9  r‰  Ú_xmlReadLigaturesr;  rŒ  rf   ÚextendrV  r8  )r�   rÉ   rÊ   rœ   r“   r  r  rÛ  r‰  rÁ   rK  rç  ÚglyphClassess                r6   rË   zSTXHeader.xmlRead¶  sç  € Ý‘”ˆÝ-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¨$ñ'ô '�Ô#Ð#ð Ð0Ò0Ð0ð-ð -åLRÝ ñMô Mð-ñ -ô -�Ô)Ð)ð ˜KÒ'Ð'Ø"&×"8Ò"8¸À:ÈtÑ"TÔ"T�”ùÝ˜EÔ.×5Ò5Ñ7Ô7Ñ8Ô8ˆØ×Òð 
ð 
Ø$)¤Lð
ñ 
ô 
ñ 	
ô 	
ð 	
õ !$ L¸"Ð =Ñ =Ô =ÀÑ AˆÔØˆr8   c                 óü   — t          ¦   «         }t          t          |¦  «        D ]W\  }}}|dk    rKt          |d         ¦  «        }|                      ¦   «         }	|	                     ||||¦  «         |	|j        |<   ŒX|S )Nr‡  r†  )r    rŽ  r  r   rd   r  r>  )
r�   rÉ   rÊ   rœ   rK  r  r  rÛ  rL  rO  s
             r6   r�  zSTXHeader._xmlReadStateØ  s„   € Ý‘
”
ˆÝ-3µG¸WÑ-EÔ-Eð 	;ð 	;Ñ)ˆG�X˜zØ˜,Ò&Ð&Ý% h¨~Ô&>Ñ?Ô?�
Ø!Ÿ_š_Ñ.Ô.�
Ø×"Ò" 7¨H°jÀ$ÑGÔGÐGØ0:�Ô! *Ñ-øØˆr8   c                 óž   — g }t          t          |¦  «        D ]4\  }}}|dk    r(|                     t          |d         ¦  «        ¦  «         Œ5|S )Nrˆ  rÁ   )rŽ  r  rj   r   )r�   rÉ   rÊ   rœ   ÚligComponentsr  r  Ú_eltContents           r6   rž  zSTXHeader._xmlReadLigComponentsâ  s\   € ØˆÝ.4µW¸gÑ.FÔ.Fð 	Bð 	BÑ*ˆG�X˜{Ø˜.Ò(Ð(Ø×$Ò$¥X¨h°wÔ.?Ñ%@Ô%@ÑAÔAÐAøØÐr8   c                 ó„   — g }t          t          |¦  «        D ]'\  }}}|dk    r|                     |d         ¦  «         Œ(|S )Nr’  r‰  )rŽ  r  rj   )r�   rÉ   rÊ   rœ   Úligsr  r  r¥  s           r6   rŸ  zSTXHeader._xmlReadLigaturesé  sO   € ØˆÝ.4µW¸gÑ.FÔ.Fð 	/ð 	/Ñ*ˆG�X˜{Ø˜*Ò$Ð$Ø—’˜H WÔ-Ñ.Ô.Ð.øØˆr8   r2   )rh   rØ   rÙ   r‘   rš   r=  r:  rY  r?  r½   r_  r`  ra  rb  rÏ   rŒ  rË   r�  rž  rŸ  r¦   r8   r6   r1  r1  ª  s,  € € € € € ØEGð 	'ð 	'ð 	'ð 	'ð 	'ð-ð -ð -ð^ð ð ðPð Pð Pð
ð ð ðð ð ð5,ð 5,ð 5,ð 5,ðn.ð .ð .ð4#ð #ð #ð #ð #ð #ð#ð #ð #ð.ð .ð .ð`	ð 	ð 	ð ð  ð  ðDð ð ðð ð ðð ð ð ð r8   r1  c                   óp   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zed„ ¦   «         Z	dd„Z
ed	„ ¦   «         Zd
„ Zd„ Zd„ ZdS )ÚStateHeaderz@Converter for the obsolete, non-extended AAT state-table format.c                 ó˜	  ‡‡‡ ‡!— t          ¦   «         Š!|j        }|                     ¦   «         ‰!_        |                     ¦   «         }|                     ¦   «         }|                     ¦   «         }‰!j        dk    rt	          d¦  «        ‚d }d x}	x}
}d }t          | j        t          ¦  «        r|                     ¦   «         }�njt          | j        t          ¦  «        rõ|                     ¦   «         }	|                     ¦   «         }
|                     ¦   «         }|
|k    s||
z
  dz  rt	          d¦  «        ‚| 	                    d¦  «        }| 
                    ||
z   ¦  «         |                     ||
z
  dz  ¦  «        }t          d„ |D ¦   «         ¦  «        rt	          d¦  «        ‚d„ |D ¦   «         ‰!_        g ‰!_        t          ¦   «         ‰!_        n[t          | j        t"          ¦  «        rA|                     ¦   «         }	| 	                    d¦  «        }| 
                    ||	z   ¦  «         | 	                    d¦  «        }| 
                    ||z   ¦  «         |                     ¦   «         Š|                     ¦   «         }|                     |¦  «        }ˆˆfd„t'          |¦  «        D ¦   «         ‰!_        | 	                    d¦  «        }| 
                    ||z   ¦  «         | 	                    d¦  «        }| 
                    ||z   ¦  «         ||z
  }|dk     rt	          d	¦  «        ‚|‰!j        z  }i }t+          |¦  «        D ]˜}t-          ¦   «         }‰!j                             |¦  «         t+          ‰!j        ¦  «        D ]Y}|                     ¦   «         }|                     |¦  «        }|€"|                      ||‰||||
|‰!¦	  «	        }|||<   ||j        |<   ŒZŒ™|�|                      ‰!|‰||¦  «         nÎ|�Ì|dz  Š ˆ ˆ!fd
„‰!j        D ¦   «         ‰!_        ‰!j        D ]}‰!j        |xx         ‰ z  cc<   Œ|                      ‰!t?          ‰                      ¦   «         ¦  «        ¦  «        }| 	                    d¦  «        }| 
                    ||z   ¦  «         ‰ !                    |                     |¦  «        ¦  «        ‰!_        ‰!S )Nr   z%mort state table has no glyph classesr"  z%invalid mort ligature component tablec              3   ó    K  — | ]	}|d z  V — Œ
dS )r"  Nr¦   ©r§   r}  s     r6   r¨   z#StateHeader.read.<locals>.<genexpr>  s&   è è € Ð@Ð@ Y�9˜q‘=Ð@Ð@Ð@Ð@Ð@Ð@r8   z%invalid mort ligature component valuec                 ó   — g | ]}|d z  ‘ŒS )r"  r¦   r¬  s     r6   r‹  z$StateHeader.read.<locals>.<listcomp>  s   € Ð"QÐ"QÐ"Q°i 9°¡>Ð"QÐ"QÐ"Qr8   c                 óH   •— i | ]\  }}‰                      ‰|z   ¦  «        |“ŒS r¦   rÉ  )r§   r›   rL  r¸  rœ   s      €€r6   rË  z$StateHeader.read.<locals>.<dictcomp>   sA   ø€ ð 
ð 
ð 
á��:ð ×Ò˜j¨1™nÑ-Ô-¨zð
ð 
ð 
r8   z/mort state-array offset follows its entry tablec                 ó6   •— h | ]}‰j         |         ‰k    ¯|’ŒS r¦   )r9  )r§   r�  ÚligatureBaser“   s     €€r6   r™  z#StateHeader.read.<locals>.<setcomp>I  s6   ø€ ð )ð )ð )à"ØÔ& ~Ô6¸,ÒFÐFð àFÐFÐFr8   )"r   r�   r/  r8  r  r}  rd   r"   r$   r(  r™   r2  Úanyr9  r;  Úsetr‰  r%   rH  r¼   r3  r¬   r    r<  rj   rF  re   r=  r>  Ú_readContextualLookupsÚ_countLegacyLigaturesrò  r¦  rs  )"r�   r£   rœ   r®   r�   ÚclassTableOffsetrk  rl  ÚsubstitutionTableOffsetro  ÚcomponentOffsetÚligatureOffsetrD  ÚcomponentReaderÚrawComponentsrA  Ú
glyphCountr¡  rB  rC  ÚstateDataLengthrI  ÚtransitionCacheÚ_stateIndexrK  rL  rM  rO  r�  ÚligatureCountÚligatureReaderr¸  r°  r“   s"     `                            @@@r6   rš   zStateHeader.readô  sc  øøøø€ Ý‘”ˆØŒjˆØ &× 1Ò 1Ñ 3Ô 3ˆÔØ!×,Ò,Ñ.Ô.ÐØ!×,Ò,Ñ.Ô.ÐØ!×,Ò,Ñ.Ô.ÐØÔ  AÒ%Ð%ÝÐDÑEÔEÐEà"&ÐØ:>Ð>ˆÐ>�¨ØˆÝ�d”oÕ'<Ñ=Ô=ð 	2Ø&,×&7Ò&7Ñ&9Ô&9Ð#Ñ#Ý˜œÕ)<Ñ=Ô=ð 	2Ø!×,Ò,Ñ.Ô.ˆLØ$×/Ò/Ñ1Ô1ˆOØ#×.Ò.Ñ0Ô0ˆNà .Ò0Ð0Ø" _Ñ4¸Ñ9ð 1õ !Ð!HÑIÔIÐIØ$×1Ò1°!Ñ4Ô4ˆOØ× Ò   Ñ!6Ñ7Ô7Ð7Ø+×;Ò;Ø /Ñ1°aÑ7ñô ˆMõ Ð@Ð@°-Ð@Ñ@Ô@Ñ@Ô@ð JÝ Ð!HÑIÔIÐIØ"QÐ"QÀ=Ð"QÑ"QÔ"QˆEÔØ ˆEŒOÝ(+©¬ˆEÔ%Ð%Ý˜œÕ)=Ñ>Ô>ð 	2Ø!×,Ò,Ñ.Ô.ˆLØ!×.Ò.¨qÑ1Ô1ˆLØ×Ò˜c LÑ0Ñ1Ô1Ð1à!×.Ò.¨qÑ1Ô1ÐØ×Ò˜cÐ$4Ñ4Ñ5Ô5Ð5Ø%×0Ò0Ñ2Ô2ˆ
Ø%×0Ò0Ñ2Ô2ˆ
Ø'×6Ò6°zÑBÔBˆð
ð 
ð 
ð 
ð 
å!*¨<Ñ!8Ô!8ð
ñ 
ô 
ˆÔð
 "×.Ò.¨qÑ1Ô1ÐØ×Ò˜cÐ$4Ñ4Ñ5Ô5Ð5Ø!×.Ò.¨qÑ1Ô1ÐØ×Ò˜cÐ$4Ñ4Ñ5Ô5Ð5Ø*Ð-=Ñ=ˆØ˜QÒÐÝÐNÑOÔOÐOØ# uÔ'<Ñ<ˆ	ØˆÝ  Ñ+Ô+ð 	;ð 	;ˆKÝ‘J”JˆEØŒL×Ò Ñ&Ô&Ð&Ý# EÔ$9Ñ:Ô:ð ;ð ;�
Ø-×7Ò7Ñ9Ô9�
Ø,×0Ò0°Ñ<Ô<�
ØÐ%Ø!%×!5Ò!5Ø(Ø"ØØ$ØØ(Ø'Ø&Øñ
"ô 
"�Jð 3=�O JÑ/Ø0:�Ô! *Ñ-Ð-ð!;ð$ #Ð.Ø×'Ò'Ø�v˜t SÐ*Añô ð ð ð Ð'Ø)¨QÑ.ˆLð)ð )ð )ð )ð )à&+Ô&?ð)ñ )ô )ˆEÔ%ð
 #(Ô";ð Dð D�ð Ô# NÐ3Ð3Ô3°|ÑCÐ3Ð3Ñ3Ð3à ×6Ò6°u½cÀ$×BTÒBTÑBVÔBVÑ>WÔ>WÑXÔXˆMØ#×0Ò0°Ñ3Ô3ˆNØ×Ò  nÑ 4Ñ5Ô5Ð5Ø"×3Ò3Ø×.Ò.¨}Ñ=Ô=ñô ˆEŒOð ˆr8   c
           	      ó  — |                       ¦   «         }
t          | j         t          ¦  «        rdn|
j        }|                     |j        ||z  z   ¦  «        }t          | j         t          ¦  «        r˜|                     ¦   «         |
_        |                     ¦   «         }t          |dz  ¦  «        |
_
        t          |dz  ¦  «        |
_        |dz  |
_        |                     ¦   «         |
_        |                     ¦   «         |
_        nÂt          | j         t          ¦  «        r‘|                     ¦   «         |
_        |                     ¦   «         }t          |dz  ¦  «        |
_        t          |dz  ¦  «        |
_        d|
_        g |
_        |dz  }|r |                      |||||||	¦  «        |
_        n|
                     |||¦  «         |
j        |z
  }|dk     s
||	j        z  rt+          d¦  «        ‚||	j        z  |
_        |
S )Nr÷   é €  é @  éÿ?  r   zinvalid mort new-state offset)rd   r}  r$   r³   r(  r�   r"   r/  ÚNewStateÚboolÚSetMarkÚDontAdvanceÚReservedFlagsr$  Ú_MortMarkOffsetÚ_MortCurrentOffsetÚSetComponentÚActionsÚ_readLigatureActionsr÷  r8  r  )r�   r£   rM  rœ   rD  ÚstateTablePosrk  r·  r¸  r“   rO  Ú	entrySizerP  rš  ÚligActionOffsetÚnewStateOffsets                   r6   r=  zStateHeader._readTransition[  s  € ð —_’_Ñ&Ô&ˆ
õ ˜$œ/Õ+>Ñ?Ô?ð'ˆAˆAàÔ&ð 	ð
 ×)Ò)¨&¬*°zÀIÑ7MÑ*MÑNÔNˆå�d”oÕ'<Ñ=Ô=ð 	BØ"-×"8Ò"8Ñ":Ô":ˆJÔØ×*Ò*Ñ,Ô,ˆEÝ!% e¨f¡nÑ!5Ô!5ˆJÔÝ%)¨%°&©.Ñ%9Ô%9ˆJÔ"Ø',¨v¡~ˆJÔ$Ø)4×)>Ò)>Ñ)@Ô)@ˆJÔ&Ø,7×,AÒ,AÑ,CÔ,CˆJÔ)Ð)Ý˜œÕ)<Ñ=Ô=ð 	BØ"-×"8Ò"8Ñ":Ô":ˆJÔØ×*Ò*Ñ,Ô,ˆEÝ&*¨5°6©>Ñ&:Ô&:ˆJÔ#Ý%)¨%°&©.Ñ%9Ô%9ˆJÔ"Ø'(ˆJÔ$Ø!#ˆJÔØ# f™nˆOØð 	Ø%)×%>Ò%>ØØØ!Ø#Ø#Ø"Øñ&ô &�
Ô"øð × Ò  ¨d°LÑAÔAÐAà#Ô,Ð/?Ñ?ˆØ˜AÒÐ °%Ô2GÑ!GÐÝÐ<Ñ=Ô=Ð=Ø,°Ô0EÑEˆ
ÔØÐr8   c                 ó  ‡‡‡— d„ |j         D ¦   «         }t          d„ |D ¦   «         ¦  «        }d„ t          |¦  «        D ¦   «         }‰                     ¦   «         Št	          |j        ¦  «        |z
  }	|D ]Ñ}
t          d|dz   dz  |
z
  ¦  «        Št          t	          ‰¦  «        dz
  |	dz
  dz  |
z
  ¦  «        }i }‰|k    rk|                     d¦  «        }| 	                    |d|
‰z   z  z   ¦  «         | 
                    |‰z
  dz   ¦  «        }ˆˆˆfd„t          |¦  «        D ¦   «         }|j                             |¦  «         ŒÒ|D ]<}|j        r||j                 nd|_        |j        r||j                 nd|_        |`|`Œ=d S )	Nc                 óJ   — h | ] }|j                              ¦   «         D ]}|’ŒŒ!S r¦   ©r>  rf   ©r§   rK  rO  s      r6   r™  z5StateHeader._readContextualLookups.<locals>.<setcomp>•  óN   € ð 
ð 
ð 
àØ#Ô/×6Ò6Ñ8Ô8ð
ð 
ð ð ð
ð 
ð 
ð 
r8   c                 ó8   — h | ]}|j         |j        fD ]}|¯|’ŒŒS r¦   )rÊ  rË  )r§   rO  r)  s      r6   r™  z5StateHeader._readContextualLookups.<locals>.<setcomp>›  sU   € ð ð ð ààÔ.ØÔ1ððð ð ð ðØðð ð ð r8   c                 ó   — i | ]\  }}||“Œ	S r¦   r¦   )r§   r›   r)  s      r6   rË  z6StateHeader._readContextualLookups.<locals>.<dictcomp>¥  s   € ÐGÐGÐG¡y q¨&˜ ÐGÐGÐGr8   r   r   r"  c                 ó`   •— i | ]*\  }}|d k    ¯‰‰|z            ‰                      |¦  «        “Œ+S )r   rÉ  )r§   r›   Úreplacementr¸  rœ   Ú
glyphOrders      €€€r6   rË  z6StateHeader._readContextualLookups.<locals>.<dictcomp>¸  sK   ø€ ð ð ð á&˜˜;Ø" aÒ'Ð'ð ˜z¨A™~Ô.°×0AÒ0AÀ+Ñ0NÔ0Nà'Ð'Ð'r8   rŒ  )r<  r�  r¼   r¦  rò  rî  rV  Úminr(  r™   r2  r@  rj   rÊ  rU  rË  rW  )r�   r“   r£   rœ   rÏ  r¶  Útransitionsrè  ÚoffsetToIndexÚ	availabler)  r¹  rç  ræ  ÚreplacementsrO  r¸  rÜ  s      `            @@r6   r³  z"StateHeader._readContextualLookups’  s  øøø€ ð
ð 
àœð
ñ 
ô 
ˆõ
 ðð à"-ðñ ô ñ

ô 

ˆð HÐGµI¸gÑ4FÔ4FÐGÑGÔGˆØ×'Ò'Ñ)Ô)ˆ
õ ˜œÑ$Ô$ }Ñ4ˆ	Øð 	1ð 	1ˆFõ ˜QÐ!8¸1Ñ!<ÀÑ BÀVÑ KÑLÔLˆJÝ�C 
™OœO¨aÑ/°)¸a±-ÀAÑ1EÈÑ1NÑOÔOˆIØˆFØ˜YÒ&Ð&Ø%×2Ò2°1Ñ5Ô5�Ø×!Ò! -°!°vÀ
Ñ7JÑ2KÑ"KÑLÔLÐLØ+×;Ò;¸IÈ
Ñ<RÐUVÑ<VÑWÔW�ðð ð ð ð ð å*3°LÑ*AÔ*Aðñ ô �ð
 Ô!×(Ò(¨Ñ0Ô0Ð0Ð0Ø%ð 	.ð 	.ˆJð Ô-ð�˜jÔ8Ô9Ð9àð Ô ð Ô0ð�˜jÔ;Ô<Ð<àð Ô#ð
 Ð*ØÐ-Ð-ð	.ð 	.r8   c                 óä  — |                      d¦  «        }|                     ||z   ¦  «         t          |                     ¦   «         ¦  «        }	g }
d}d}|�s|                     ¦   «         }t          |dz  ¦  «        }t          |dz  ¦  «        }|dz  }|dz  r|dz  }||dz  z
  }|t          |j        ¦  «        k    s	||	z   dk    rt          d¦  «        ‚|s|ra|s_t          d|¦  «        }t          t          |j        ¦  «        ||	z   ¦  «        }|j
                             t          ||¦  «        ¦  «         d	}t          ¦   «         }||_        ||_        |
                     |¦  «         |�¯|
S )
Nr   Fì        é   @éÿÿÿ?é    r"  z/mort ligature component offset is out of boundsT)r(  r™   rò  r¦  r  rÆ  r9  r  rV  rÝ  r‰  Úupdater¬   r#   ÚStoreÚGlyphIndexDeltarj   )r�   r£   rœ   rÏ  rÑ  r·  r¸  r“   rD  r»  ré  ÚrebasedrÑ  rÁ   ÚstoreÚcomponentWordOffsetr�  ÚstartrR  Úactions                       r6   rÎ  z StateHeader._readLigatureActionsÌ  s¡  € ð ×*Ò*¨1Ñ-Ô-ˆØ×Ò˜-¨/Ñ9Ñ:Ô:Ð:Ý˜×+Ò+Ñ-Ô-Ñ.Ô.ˆ
ØˆØˆØˆØñ 	"Ø ×*Ò*Ñ,Ô,ˆEÝ˜ 
Ñ*Ñ+Ô+ˆDÝ˜ Ñ+Ñ,Ô,ˆEØ"'¨*Ñ"4ÐØ" ZÑ/ð 2Ø# zÑ1Ð#Ø0°?ÀaÑ3GÑGˆNà¥# eÔ&9Ñ":Ô":Ò:Ð:Ø! JÑ.°!Ò3Ð3å Ð!RÑSÔSÐSØð ˜ð  wð Ý˜A˜~Ñ.Ô.�Ý�C Ô 3Ñ4Ô4°nÀzÑ6QÑRÔR�ØÔ)×0Ò0µ°u¸eÑ1DÔ1DÑEÔEÐEØ�å‘[”[ˆFØ ˆFŒLØ%3ˆFÔ"Ø�MŠM˜&Ñ!Ô!Ð!ð- ñ 	"ð. ˆr8   c                 ó˜  — d}d„ | j         D ¦   «         }|D ]³}d}t          |j        ¦  «        D ]š\  }}t          d|j        ¦  «        }t          t          | j        ¦  «        |j        |z   ¦  «        }	|t          | j        ||	…         d¬¦  «        z  }|j        s|t          |j        ¦  «        dz
  k    rt          ||dz   ¦  «        }Œ›Œ´|S )Nr   c                 óJ   — h | ] }|j                              ¦   «         D ]}|’ŒŒ!S r¦   rÕ  rÖ  s      r6   r™  z4StateHeader._countLegacyLigatures.<locals>.<setcomp>ø  r×  r8   r›  r   )	r<  r¼   rÍ  rV  ré  rÝ  rò  r9  rè  )
r“   r»  r¯   rÞ  rO  ÚcumulativeMaxr…  rî  rí  rR  s
             r6   r´  z!StateHeader._countLegacyLigaturesõ  sÿ   € àˆð
ð 
àœð
ñ 
ô 
ˆð
 &ð 
	:ð 
	:ˆJØˆMÝ!*¨:Ô+=Ñ!>Ô!>ð :ð :‘��vÝ˜A˜vÔ5Ñ6Ô6�ÝÝ˜Ô+Ñ,Ô,ØÔ*¨ZÑ7ñô �ð ¥ UÔ%8¸¸u¸Ô%EÈqÐ!QÑ!QÔ!QÑQ�Ø”<ð : 5­C°
Ô0BÑ,CÔ,CÀaÑ,GÒ#GÐ#GÝ  }°qÑ'8Ñ9Ô9�Eøð:ð ˆr8   Nc           	      óÆ  ‡ ‡‡ ‡!‡"‡#‡$‡%— |j         Š#d‰#cxk     rdk    sn t          d¦  «        ‚t          ˆfd„|j                             ¦   «         D ¦   «         ¦  «        }|rX|d         d         }|d         d         }t          |¦  «        Š t          ˆ fd„t          ||dz   ¦  «        D ¦   «         ¦  «        }	nd}d}	t          j	        d	|t          |	¦  «        ¦  «        |	z   }
‰ j                             ‰|j        ¦  «        \  }Š"g }i }g }|j        D ]Û}g }t          ‰#¦  «        D ]²}|j        |         }t          ¦   «         }|                     |‰‰"¦  «         |                     ¦   «         }|                     |¦  «        }|€>t          |¦  «        }|d
k    rt          d¦  «        ‚|||<   |                     |¦  «         |                     |¦  «         Œ³|                     |¦  «         ŒÜd}t)          ‰ j        t*          ¦  «        rd}n9t)          ‰ j        t,          ¦  «        rd}nt)          ‰ j        t.          ¦  «        rd}d|z   }‰                      |t          |
¦  «        z   d¦  «        Š%t          d„ |D ¦   «         ¦  «        }‰                      ‰%t          |¦  «        z   d¦  «        }t)          ‰ j        t,          ¦  «        rdn‰ j        j        }|t          |¦  «        |z  z   }d}d}d Š!d Š$t)          ‰ j        t*          ¦  «        r‰                      |‰|¦  «        \  }}Š!n}t)          ‰ j        t,          ¦  «        r‰                      |‰||¦  «        \  }}Š$nFt)          ‰ j        t.          ¦  «        r,|dk    rt          d¦  «        ‚t          j	        d|¦  «        }|}d                     ˆ!ˆˆ"ˆ#ˆ$ˆ ˆ%fd„|D ¦   «         ¦  «        }t          j	        d‰#|‰%|¦  «        }|||
z   z  }t;          |d¦  «        |z   }t;          |d¦  «        |z   |z   }t;          |d¦  «        }t          |¦  «        dk    rt          d¦  «        ‚|                     |¦  «         d S )Nr   é   z0mort state tables support 1 to 256 glyph classesc              3   óL   •K  — | ]\  }}‰                      |¦  «        |fV — Œd S r2   rˆ  )r§   r‰  rL  rœ   s      €r6   r¨   z$StateHeader.write.<locals>.<genexpr>  sL   øè è € ð 
ð 
á!��zð �_Š_˜UÑ#Ô# ZÐ0ð
ð 
ð 
ð 
ð 
ð 
r8   rf  c              3   óD   •K  — | ]}‰                      |d ¦  «        V — ŒdS )r   N)re   )r§   r´  ÚclassValuess     €r6   r¨   z$StateHeader.write.<locals>.<genexpr>  sE   øè è € ð ð àð —’ ¨Ñ+Ô+ðð ð ð ð ð r8   r   r8   ú>HHéÿ   z-mort state tables support at most 256 entriesr"  r€  r–   c              3   ó$   K  — | ]}|D ]}|V — ŒŒd S r2   r¦   )r§   ÚrowÚentrys      r6   r¨   z$StateHeader.write.<locals>.<genexpr>B  s/   è è € ÐJÐJ CÀcÐJÐJ¸U˜%ÐJÐJÐJÐJÐJÐJÐJr8   r÷   rŒ  z,mort insertion-action offset exceeds 16 bitsr
  c           
   3   óN   •K  — | ]}‰                      |‰‰‰‰‰‰¦  «        V — Œ d S r2   )Ú_compileTransition)	r§   rO  ÚcontextOffsetsrœ   ÚgenericActionIndexre  ÚligatureActionOffsetsr�   rk  s	     €€€€€€€r6   r¨   z$StateHeader.write.<locals>.<genexpr>]  s^   øè è € ð 
ð 
ð ð ×#Ò#ØØØ"Ø ØØØ%ñô ð
ð 
ð 
ð 
ð 
ð 
r8   z>HHHHz$mort state table exceeds 65535 bytes)r8  r  r�  r3  r  ÚdictÚbytesr¬   r  r  rò  rd   r^  r<  r>  r   rc   r  re   rj   r}  r"   r$   r%   Ú_alignedr³   Ú_compileContextualLookupsÚ_compileLigatureDatar˜  r   ró  )&r�   rÀ   rœ   r®   rÁ   rÆ   r¡  r¸  r¹  ÚclassesÚ	classDataÚgenericActionDatarw  rx  ÚstateEntryIDsrK  rú  rL  rO  ÚtransitionWriterrì  rM  Ú	extraSizerµ  Ú	stateDatarl  rÐ  Ú
tailOffsetÚextraÚtailrz  rî  rö  rþ  rÿ  re  r   rk  s&   ` `                             @@@@@@r6   r½   zStateHeader.write
  s%  øøøøøøøø€ ØÔ/ˆØ�?Ð)Ð)Ò)Ð) cÒ)Ð)Ð)Ð)ÝÐOÑPÔPÐPåð 
ð 
ð 
ð 
à%*Ô%7×%=Ò%=Ñ%?Ô%?ð
ñ 
ô 
ñ 
ô 
ˆð ð 
	Ø% aœ¨Ô+ˆJØ$ RÔ(¨Ô+ˆIÝ˜|Ñ,Ô,ˆKÝð ð ð ð å$ Z°¸Q±Ñ?Ô?ðñ ô ñ ô ˆGˆGð
 ˆJØˆGÝ”K  zµ3°w±<´<Ñ@Ô@À7ÑJˆ	à04´×0NÒ0NØ�%”,ñ1
ô 1
Ñ-ÐÐ-ð ˆØˆØˆØ”\ð 	&ð 	&ˆEØˆCÝ# OÑ4Ô4ð 'ð '�
Ø"Ô.¨zÔ:�
Ý#0¡?¤?Ð Ø×"Ò"Ð#3°TÐ;MÑNÔNÐNØ&×1Ò1Ñ3Ô3�Ø%Ÿ\š\¨#Ñ.Ô.�
ØÐ%Ý!$ W¡¤�JØ! DÒ(Ð(Ý(ØKñô ð ð %/�H˜S‘MØ—N’N :Ñ.Ô.Ð.Ø—
’
˜:Ñ&Ô&Ð&Ð&Ø× Ò  Ñ%Ô%Ð%Ð%àˆ	Ý�d”oÕ'<Ñ=Ô=ð 	ØˆIˆIÝ˜œÕ)<Ñ=Ô=ð 	ØˆIˆIÝ˜œÕ)=Ñ>Ô>ð 	ØˆIØ˜y™=ÐØŸ=š=Ð)9½CÀ	¹N¼NÑ)JÈAÑNÔNÐÝÐJÐJ¨=ÐJÑJÔJÑJÔJˆ	ØŸ=š=Ð)9½CÀ	¹N¼NÑ)JÈAÑNÔNÐõ ˜$œ/Õ+>Ñ?Ô?ð,ˆAˆAà”Ô+ð 	ð
 &­¨G©¬°yÑ(@Ñ@ˆ
àˆØˆØˆØ $ÐÝ�d”oÕ'<Ñ=Ô=ð 	%Ø*.×*HÒ*HØ�t˜Zñ+ô +Ñ'ˆE�4˜˜õ ˜œÕ)<Ñ=Ô=ð 	%Ø15×1JÒ1JØ�t˜W jñ2ô 2Ñ.ˆE�4Ð.Ð.õ ˜œÕ)=Ñ>Ô>ð 	%Ø˜FÒ"Ð"Ý Ð!OÑPÔPÐPÝ”K  jÑ1Ô1ˆEØ$ˆDà—H’Hð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð &ð
ñ 
ô 
ñ 
ô 
ˆ	õ Œ{ØØØØØñ
ô 
ˆð 	�˜	Ñ!Ñ!ˆÝ�4˜‰|Œ|˜iÑ'ˆÝ�4˜‰|Œ|˜iÑ'¨$Ñ.ˆÝ�4˜‰|Œ|ˆÝˆt‰9Œ9�vÒÐÝÐCÑDÔDÐDØ×Ò˜ÑÔÐÐÐr8   c                 ó   — | |  |z  z   S r2   r¦   )rÁ   Ú	alignments     r6   r  zStateHeader._alignedx  s   € à˜˜ Ñ*Ñ+Ð+r8   c                 óž  — |                       |¦  «        }t          |j        ¦  «        |k    r&t          d|t          |j        ¦  «        fz  ¦  «        ‚|                     ¦   «         }g }d}|j        D ]®}|t          |¦  «        z   dz  }	|	dk    rt          d¦  «        ‚|                     |	¦  «         g }
|D ]C}|                     |¦  «        }|
                     |€dn|                     |¦  «        ¦  «         ŒD|t          j	        dt          |
¦  «        z  g|
¢R Ž z  }Œ¯|dk    rt          d	¦  «        ‚t          j	        d
|¦  «        ||fS )NzAmort contextual actions refer to %d lookups, but the table has %dr8   r"  éÿ  z/mort substitution offset exceeds signed 16 bitsr   z>%dHrŒ  z.mort substitution-table offset exceeds 16 bitsr
  )
rY  rò  r@  r  r¦  rj   re   r|  r  r  )r�   r“   rœ   r  r¯   rÜ  rè  rî  rç  r)  rá  r‰  rÛ  s                r6   r  z%StateHeader._compileContextualLookups|  s‚  € Ø×*Ò*¨5Ñ1Ô1ˆÝˆuÔ$Ñ%Ô%¨Ò.Ð.ÝØSØ�#˜eÔ3Ñ4Ô4Ð5ñ6ñô ð ð ×'Ò'Ñ)Ô)ˆ
ØˆØˆØÔ+ð 	Kð 	KˆFØ ¥3 t¡9¤9Ñ,°Ñ2ˆFØ˜ŠˆÝ Ð!RÑSÔSÐSØ�NŠN˜6Ñ"Ô"Ð"ØˆLØ#ð ð �Ø$Ÿjšj¨Ñ/Ô/�Ø×#Ò#Ø$Ð,�A�A°$·/²/À+Ñ2NÔ2Nñô ð ð ð •F”K ­¨\Ñ):Ô):Ñ :ÐJ¸\ÐJÐJÐJÑJˆDˆDØ˜ÒÐÝÐMÑNÔNÐNÝŒ{˜4 Ñ,Ô,¨d°GÐ;Ð;r8   c                 ó:  ‡— g }t          ¦   «         }|D ]P}t          d„ |j        D ¦   «         ¦  «        }|r.||vr*|                     |¦  «         |                     |¦  «         ŒQ|                      |d¦  «        }	t          d„ |D ¦   «         ¦  «        }
|	|
dz  z   }t          ‰                     ¦   «         ¦  «        }|t          |j	        ¦  «        dz  z   }t          |	||¦  «        dk    rt          d¦  «        ‚i }d}t          |dd ¦  «        }|€t          ¦   «         }nt          |¦  «        }|D �],}|	t          |¦  «        z   }|d	k    rt          d
¦  «        ‚|||<   d}t          |¦  «        D ]ë\  }\  }}|dz  |z   }d|cxk    rdk     sn t          d¦  «        ‚|dz  }|t          |¦  «        dz
  k    }||rdndz  }||rdndz  }|t          j        d|¦  «        z  }|s|o| }|rht!          |d¦  «        sXt          d|¦  «        }t#          t          |j	        ¦  «        ||z   ¦  «        }|                     t'          ||¦  «        ¦  «         ||p|z  }Œì�Œ.d}t          |j	        ¦  «        D ]I\  }}|dz  }||v r||z  }d|cxk    rdk    sn t          d¦  «        ‚|t          j        d|¦  «        z  }ŒJd                     ˆfd„|j        D ¦   «         ¦  «        }t          j        d|	||¦  «        }t-          |	|z
  ¦  «        |z   |z   |z   } || |fS )Nc              3   ó2   K  — | ]}|j         |j        fV — Œd S r2   ©ré  rè  ©r§   rî  s     r6   r¨   z3StateHeader._compileLigatureData.<locals>.<genexpr>š  ó=   è è € ð ð Ø;A�Ô'¨¬Ð6ðð ð ð ð ð r8   r÷   c              3   ó4   K  — | ]}t          |¦  «        V — Œd S r2   ©rò  )r§   Úsequences     r6   r¨   z3StateHeader._compileLigatureData.<locals>.<genexpr>¢  s(   è è € ÐBÐB¨H�#˜h™-œ-ÐBÐBÐBÐBÐBÐBr8   r"  rŒ  z*mort ligature-table offset exceeds 16 bitsr8   r‰  rÄ  z+mort ligature-action offset exceeds 14 bitsFi   àræ  z.mort ligature component offset exceeds 30 bitsrå  r   rä  r   rã  z>Iz-mort ligature component value exceeds 16 bitsr
  c              3   óh   •K  — | ],}t          j        d ‰                     |¦  «        ¦  «        V — Œ-dS )r
  N)r  r  r|  )r§   r‰  rœ   s     €r6   r¨   z3StateHeader._compileLigatureData.<locals>.<genexpr>Ï  sL   øè è € ð  
ð  
Ø:?�FŒK˜˜dŸošo¨eÑ4Ô4Ñ5Ô5ð 
ð  
ð  
ð  
ð  
ð  
r8   z>HHH)r²  r4   rÍ  Úaddrj   r  Úsumrò  r¦  r9  rV  r  r«  r¼   r  r  r´   rÝ  rç  r¬   r˜  r;  r  )!r�   r“   rœ   rw  r  Ú	sequencesÚsequenceSetrO  r  ro  ÚactionCountr·  r»  r¸  ÚactionOffsetsrg  ÚrebaseComponentsÚsequenceOffsetrê  r…  Údeltarë  rÁ   rÑ  ÚaddBaserí  rR  ÚcomponentDatar�  r}  ÚligatureDatar  r  s!     `                              r6   r  z StateHeader._compileLigatureData–  sù  ø€ Øˆ	Ý‘e”eˆØ!ð 	+ð 	+ˆJÝð ð ØEOÔEWðñ ô ñ ô ˆHð ð +˜H¨KÐ7Ð7Ø—’ Ñ)Ô)Ð)Ø× Ò  Ñ*Ô*Ð*øà—}’} Z°Ñ3Ô3ˆÝÐBÐB¸	ÐBÑBÔBÑBÔBˆØ&¨°q©Ñ8ˆÝ˜×+Ò+Ñ-Ô-Ñ.Ô.ˆ
Ø(­3¨uÔ/BÑ+CÔ+CÀaÑ+GÑGˆÝˆ|˜_¨nÑ=Ô=ÀÒFÐFÝÐIÑJÔJÐJàˆØˆ
Ý" 5Ð*?ÀÑFÔFÐØÐ#Ý"™uœuÐÐå"Ð#3Ñ4Ô4ÐØ!ð 	)ñ 	)ˆHØ)­C°
©O¬OÑ;ˆNØ Ò&Ð&Ý Ð!NÑOÔOÐOØ&4ˆM˜(Ñ#ØˆGÝ)2°8Ñ)<Ô)<ð )ð )Ñ%�‘~˜˜uØ'¨1Ñ,¨uÑ4�Ø! UÐ6Ð6Ò6Ð6¨gÒ6Ð6Ð6Ð6Ý$Ð%UÑVÔVÐVØ˜Ñ#�Ø¥ H¡¤°Ñ 1Ò1�Ø uÐ3˜˜°!Ñ3�Ø tÐ2˜˜°Ñ2�Ø�fœk¨$°Ñ6Ô6Ñ6�
Ø ˜= DÐ9°'¨k�Øð A¥7¨5Ð2GÑ#HÔ#Hð AÝ  5™MœM�EÝ¥ EÔ$7Ñ 8Ô 8¸%À*Ñ:LÑMÔM�EØ$×+Ò+­E°%¸Ñ,?Ô,?Ñ@Ô@Ð@Ø˜5˜= DÑ(��ñ)ð  ˆÝ)2°5Ô3FÑ)GÔ)Gð 	:ð 	:Ñ%ˆN˜IØ˜‰NˆIØÐ!1Ð1Ð1Ø˜^Ñ+�	Ø˜	Ð+Ð+Ò+Ð+ VÒ+Ð+Ð+Ð+Ý Ð!PÑQÔQÐQØ�Vœ[¨¨yÑ9Ô9Ñ9ˆMˆMà—x’xð  
ð  
ð  
ð  
ØCHÄ?ð 
ñ  
ô  
ñ 
ô 
ˆõ ”˜F L°/À>ÑRÔRˆå�, Ñ+Ñ,Ô,¨zÑ9¸MÑIÈLÑXð 	ð �d˜MÐ)Ð)r8   c                 óH  — ||j         |z  z   }d|cxk    rdk    sn t          d¦  «        ‚t          | j        t          ¦  «        ro|j        }	|	|j        rdndz  }	|	|j        rdndz  }	|j        dk    rdn||j                 }
|j	        dk    rdn||j	                 }t          j        d||	|
|¦  «        S t          | j        t          ¦  «        r||j        rt          d¦  «        ‚|j        rdnd}	|	|j        rdndz  }	t          d„ |j        D ¦   «         ¦  «        }|	|                     |d¦  «        z  }	t          j        d	||	¦  «        S t#          ¦   «         }|                     |||¦  «         |                     ¦   «         }t          j        d
|¦  «        |dd …         z   S )Nr   rŒ  z%mort new-state offset exceeds 16 bitsrÂ  rÃ  z>HHhhz2mort ligature entries cannot encode reserved flagsc              3   ó2   K  — | ]}|j         |j        fV — Œd S r2   r  r  s     r6   r¨   z1StateHeader._compileTransition.<locals>.<genexpr>û  r  r8   r÷  r
  r"  )rÅ  r  r}  rd   r"   rÉ  rÇ  rÈ  rU  rW  r  r  r$   rÌ  r4   rÍ  re   r   rc   r  )r�   rO  rœ   rh  rk  re  rþ  r   ÚnewStaterš  Ú
markOffsetÚcurrentOffsetr  r
  rî  s                  r6   rý  zStateHeader._compileTransitionØ  sÿ  € ð $ jÔ&9¸OÑ&KÑKˆØ�HÐ&Ð&Ò&Ð& Ò&Ð&Ð&Ð&ÝÐDÑEÔEÐEå�d”oÕ'<Ñ=Ô=ð 	TØÔ,ˆEØ˜zÔ1Ð8�V�V°qÑ8ˆEØ˜zÔ5Ð<�V�V¸1Ñ<ˆEð Ô'¨6Ò1Ð1ð �à# JÔ$8Ô9ð ð Ô*¨fÒ4Ð4ð �à# JÔ$;Ô<ð õ
 ”;˜w¨°%¸À]ÑSÔSÐSå�d”oÕ':Ñ;Ô;ð 		7ØÔ'ð WÝ Ð!UÑVÔVÐVØ(Ô5Ð<�F�F¸1ˆEØ˜zÔ5Ð<�V�V¸1Ñ<ˆEÝð ð ØEOÔEWðñ ô ñ ô ˆHð Ð*×.Ò.¨x¸Ñ;Ô;Ñ;ˆEÝ”;˜u h°Ñ6Ô6Ð6å(™?œ?ÐØ×ÒÐ+¨T°;Ñ?Ô?Ð?Ø×*Ò*Ñ,Ô,ˆÝŒ{˜4 Ñ*Ô*¨T°!°"°"¬XÑ5Ð5r8   r2   )rh   rØ   rÙ   rÚ   rš   r=  r³  rÎ  ré   r´  r½   r  r  r  rý  r¦   r8   r6   r©  r©  ñ  sÝ   € € € € € ØJÐJðeð eð eðN5ð 5ð 5ðn8.ð 8.ð 8.ðt'ð 'ð 'ðR ðð ñ „\ðð(lð lð lð lð\ ð,ð ,ñ „\ð,ð<ð <ð <ð4@*ð @*ð @*ðD,6ð ,6ð ,6ð ,6ð ,6r8   r©  c                   ó>   — e Zd ZdZddœd„Zd„ Zd„ Zdd„Zd	„ Zd
„ Z	dS )ÚMorphStateTablezFDispatch to classic or extended AAT state-table encoding by table tag.rv   rM   c                óª   — t                                | |||||¬¦  «         t          |||||¬¦  «        | _        t	          |||||¬¦  «        | _        d S r  )ru   r‘   r©  Úlegacyr1  Úextendedr�   s         r6   r‘   zMorphStateTable.__init__
	  sv   € Ý×ÒØ�$˜  Z¸[ð 	ñ 	
ô 	
ð 	
õ "Ø�&˜#˜z°{ð
ñ 
ô 
ˆŒõ "Ø�&˜#˜z°{ð
ñ 
ô 
ˆŒˆˆr8   c                 ó*   — |dk    r| j         n| j        S )Nrú  )r1  r2  )r�   rü  s     r6   Ú
_converterzMorphStateTable._converter	  s   € Ø&¨&Ò0Ð0ˆtŒ{ˆ{°d´mÐCr8   c                 ó`   — |                       |j        ¦  «                             |||¦  «        S r2   )r4  rü  rš   r¹   s       r6   rš   zMorphStateTable.read	  s(   € Ø�Š˜vœÑ/Ô/×4Ò4°V¸TÀ9ÑMÔMÐMr8   Nc                 ód   — |                       |j        ¦  «                             |||||¦  «        S r2   )r4  rü  r½   rÅ   s         r6   r½   zMorphStateTable.write	  s3   € Ø�Š˜vœÑ/Ô/×5Ò5Ø�D˜) U¨Kñ
ô 
ð 	
r8   c                 ó:   — | j                              |||¦  «        S r2   )r2  rË   rÈ   s       r6   rË   zMorphStateTable.xmlRead 	  s   € ØŒ}×$Ò$ U¨G°TÑ:Ô:Ð:r8   c                 ó>   — | j                              |||||¦  «        S r2   )r2  rÏ   rÍ   s         r6   rÏ   zMorphStateTable.xmlWrite#	  s    € ØŒ}×%Ò% i°°u¸dÀEÑJÔJÐJr8   r2   )
rh   rØ   rÙ   rÚ   r‘   r4  rš   r½   rË   rÏ   r¦   r8   r6   r/  r/  	  s‘   € € € € € ØPÐPàEGð 	
ð 	
ð 	
ð 	
ð 	
ðDð Dð DðNð Nð Nð
ð 
ð 
ð 
ð
;ð ;ð ;ðKð Kð Kð Kð Kr8   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 ©NrŒ  )r/  r¼   r2  rv  )r�   r£   rœ   r®   ÚnumCIDsré  Úcidr´  s           r6   rš   zCIDGlyphMap.read(	  si   € Ø×#Ò#Ñ%Ô%ˆØˆÝ% f×&<Ò&<¸WÑ&EÔ&EÑFÔFð 	9ð 	9‰LˆC�Ø˜&Ò Ð Ø"×/Ò/°Ñ8Ô8��s‘øØˆr8   Nc                 ó  ‡— ˆfd„|                      ¦   «         D ¦   «         }|rt          |¦  «        dz   nd}|                     |¦  «         t          |¦  «        D ]+}|                     |                     |d¦  «        ¦  «         Œ,d S )Nc                 óB   •— i | ]\  }}|‰                      |¦  «        “ŒS r¦   rˆ  )r§   r>  r‰  rœ   s      €r6   rË  z%CIDGlyphMap.write.<locals>.<dictcomp>1	  s+   ø€ ÐMÐMÐM±°°e��d—o’o eÑ,Ô,ÐMÐMÐMr8   r   r   rŒ  ©r  rV  r5  r¬   re   )	r�   rÀ   rœ   r®   rÁ   rÆ   r  r¯   r>  s	     `      r6   r½   zCIDGlyphMap.write0	  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ð 	7r8   c                 ó®   — i }t          t          |¦  «        D ]<\  }}}|dk    r0|d                              ¦   «         |t          |d         ¦  «        <   Œ=|S )NÚCIDr‰  r>  )rŽ  r  Ústripr   ©r�   rÉ   rÊ   rœ   ré  ÚeNameÚeAttrsÚ	_eContents           r6   rË   zCIDGlyphMap.xmlRead7	  s^   € ØˆÝ(.­w¸Ñ(@Ô(@ð 	Jð 	JÑ$ˆE�6˜9Ø˜Š~ˆ~Ø28¸´/×2GÒ2GÑ2IÔ2I�•x  u¤Ñ.Ô.Ñ/øØˆr8   c                 ób  — |                      ||¦  «         |                     ¦   «          t          |                     ¦   «         ¦  «        D ]9\  }}|�2|dk    r,|                     d||¬¦  «         |                     ¦   «          Œ:|                     |¦  «         |                     ¦   «          d S )NrŒ  rC  )r>  r‰  ©rÝ  rç   r�  r  ræ   rÞ  )r�   rÎ   rœ   rÁ   rT   rÉ   r>  r‰  s           r6   rÏ   zCIDGlyphMap.xmlWrite>	  sµ   € Ø×Ò˜4 Ñ'Ô'Ð'Ø×ÒÑÔÐÝ  §¢¡¤Ñ/Ô/ð 	$ð 	$‰JˆC�ØÐ  U¨f¢_ _Ø×#Ò# E¨s¸%Ð#Ñ@Ô@Ð@Ø×!Ò!Ñ#Ô#Ð#øØ×Ò˜ÑÔÐØ×ÒÑÔÐÐÐr8   r2   rö  r¦   r8   r6   r:  r:  '	  sU   € € € € € ðð ð ð7ð 7ð 7ð 7ðð ð ðð ð ð ð r8   r:  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 restrŒ  )r¦  r/  r2  rò  r�  r�  r¬   rÝ  )
r�   r£   rœ   r®   rÜ  r¯   Úcidsré  r´  r>  s
             r6   rš   zGlyphCIDMap.readJ	  sÑ   € Ø×'Ò'Ñ)Ô)ˆ
Ø×!Ò!Ñ#Ô#ˆØ×%Ò% eÑ,Ô,ˆØ•3�z‘?”?Ò"Ð"Ý�KŠKð$à',­c°*©o¬oÐ&>ñ?ñô ð ð
 ˆÝ�S¥ T¡¤­C°
©O¬OÑ<Ô<Ñ=Ô=ð 	2ð 	2ˆGØ�w”-ˆCØ�fŠ}ˆ}Ø.1��z 'Ô*Ñ+øØˆr8   Nc                 ó  ‡— ˆfd„|                      ¦   «         D ¦   «         }|rt          |¦  «        dz   nd}|                     |¦  «         t          |¦  «        D ]+}|                     |                     |d¦  «        ¦  «         Œ,d S )Nc                 óR   •— i | ]#\  }}|®|dk    ¯‰                      |¦  «        |“Œ$S r<  rˆ  )r§   r�  r>  rœ   s      €r6   rË  z%GlyphCIDMap.write.<locals>.<dictcomp>\	  s@   ø€ ð 
ð 
ð 
á��3Øˆ 3¨&¢= =ð �OŠO˜AÑÔ à#0 = =r8   r   r   rŒ  rA  )	r�   rÀ   rœ   r®   rÁ   rÆ   r  r¯   r´  s	     `      r6   r½   zGlyphCIDMap.write[	  s¥   ø€ ð
ð 
ð 
ð 
àŸ+š+™-œ-ð
ñ 
ô 
ˆð
 #(Ð.•�E‘
”
˜Q‘�¨QˆØ×Ò˜5Ñ!Ô!Ð!Ý˜U‘|”|ð 	;ð 	;ˆGØ×Ò˜uŸyšy¨°&Ñ9Ô9Ñ:Ô:Ð:Ð:ð	;ð 	;r8   c                 óŠ   — i }t          t          |¦  «        D ]*\  }}}|dk    rt          |d         ¦  «        ||d         <   Œ+|S )NrC  rÁ   r‰  )rŽ  r  r   rE  s           r6   rË   zGlyphCIDMap.xmlReadf	  sR   € ØˆÝ(.­w¸Ñ(@Ô(@ð 	Dð 	DÑ$ˆE�6˜9Ø˜Š~ˆ~Ý*2°6¸'´?Ñ*CÔ*C��v˜g”Ñ'øØˆr8   c                 ób  — |                      ||¦  «         |                     ¦   «          t          |                     ¦   «         ¦  «        D ]9\  }}|�2|dk    r,|                     d||¬¦  «         |                     ¦   «          Œ:|                     |¦  «         |                     ¦   «          d S )NrŒ  rC  r‚  rJ  )r�   rÎ   rœ   rÁ   rT   rÉ   r‰  r>  s           r6   rÏ   zGlyphCIDMap.xmlWritem	  s´   € Ø×Ò˜4 Ñ'Ô'Ð'Ø×ÒÑÔÐÝ  §¢¡¤Ñ/Ô/ð 	$ð 	$‰JˆE�3Øˆ 3¨&¢= =Ø×#Ò# E°¸cÐ#ÑBÔBÐBØ×!Ò!Ñ#Ô#Ð#øØ×Ò˜ÑÔÐØ×ÒÑÔÐÐÐr8   r2   rö  r¦   r8   r6   rL  rL  I	  sU   € € € € € ðð ð ð"	;ð 	;ð 	;ð 	;ðð ð ðð ð ð ð r8   rL  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"  rO  úillegal DeltaFormatr   )r   r   r   r¿  )r¬   r/  rj   )r�   r£   rœ   r®   rV  rW  rX  ÚnItemsÚnBitsÚminusOffsetÚmaskÚsignMaskrT  ÚtmpÚshiftr›   rÁ   s                    r6   rš   zDeltaValue.ready	  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Ñ$Ô$Ð$Ð$ØÐr8   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 )
NrV  rW  rX  rY  rZ  r   )r   r¿  r   r¿  )rò  r5  )r�   rÀ   rœ   r®   rÁ   rÆ   rV  rW  rX  rT  r[  r\  r^  r`  ra  s                  r6   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Ñ#Ô#Ð#Ð#Ð#ð ˆ;r8   c                 óf   — |                      ||d|fgz   ¦  «         |                     ¦   «          d S rå   ©ræ   rç   rÍ   s         r6   rÏ   zDeltaValue.xmlWrite¥	  ó=   € Ø×Ò˜D %¨G°UÐ+;Ð*<Ñ"<Ñ=Ô=Ð=Ø×ÒÑÔÐÐÐr8   c                 ó,   — t          |d         ¦  «        S rå   r•  rÈ   s       r6   rË   zDeltaValue.xmlRead©	  ó   € Ý˜˜gœÑ'Ô'Ð'r8   r2   ©rh   rØ   rÙ   rš   r½   rÏ   rË   r¦   r8   r6   rT  rT  x	  sU   € € € € € ðð ð ð.$ð $ð $ð $ð*ð ð ð(ð (ð (ð (ð (r8   rT  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ÚEntryFormatr€   r   r"  l   ÿÿ r¿  é0   r÷   ©r   r"  rO  r÷   c                 ó,   •— g | ]}|‰z  ‰z  |‰z  z  ‘ŒS r¦   r¦   )r§   ÚrawÚ	innerMaskÚ	outerMaskÚ
outerShifts     €€€r6   r‹  z'VarIdxMapValue.read.<locals>.<listcomp>¿	  s;   ø€ ð 
ð 
ð 
àð �Y‰ :Ñ-°#¸	±/ÑBð
ð 
ð 
r8   ©rH  r2  r€  r  )r�   r£   rœ   r®   Úfmtr[  Ú	innerBitsrÐ  r±   rq  rr  rs  s            @@@r6   rš   zVarIdxMapValue.read®	  sÈ   øøø€ Ø˜Ô&ˆØ˜>Ô*ˆà˜˜v™Ñ&ˆ	Ø˜)‘^ qÑ(ˆ	Ø Ñ*ˆ	Ø˜)‘^ˆ
à˜# ™,¨1Ñ,Ñ-ˆ	àÔ$ØÔ%ØÔ%ØÔ$ð	
ð 
ð
 ôˆ	ð
ð 
ð 
ð 
ð 
ð 
à �y Ñ(Ô(ð
ñ 
ô 
ð 	
r8   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 )
Nrl  r€   r   r"  r¿  rm  r÷   rn  c                 ó,   •— g | ]}|d z  ‰z	  |‰z  z  ‘ŒS )l     þ r¦   )r§   Úidxrq  rs  s     €€r6   r‹  z(VarIdxMapValue.write.<locals>.<listcomp>Ö	  s<   ø€ ð ð ð àð ˜Ñ#¨
Ñ2°s¸Y±ÑGðð ð r8   )ÚsetValuerò  rL  r8  rƒ  r  )r�   rÀ   rœ   r®   rÁ   rÆ   ru  rÐ  rv  rÐ  rÃ   rq  rs  s              @@r6   r½   zVarIdxMapValue.writeÄ	  sã   øø€ Ø˜Ô&ˆØˆØˆ~Ô×'Ò'­¨G©¬Ñ5Ô5Ð5à˜˜v™Ñ&ˆ	Ø˜)‘^ qÑ(ˆ	Ø˜)‘^ˆ
à˜# ™,¨1Ñ,Ñ-ˆ	àÔ%ØÔ&ØÔ&ØÔ%ð	
ð 
ð
 ôˆ
ð 	ˆ
ðð ð ð ð à"ðñ ô ñ	
ô 	
ð 	
ð 	
ð 	
r8   r2   r  r¦   r8   r6   rj  rj  ­	  s7   € € € € € ð
ð 
ð 
ð,
ð 
ð 
ð 
ð 
ð 
r8   rj  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 )Nr   Ú	NumShortsrÂ  r  )rÆ  rý   r&  r>  rÝ  rV  r   )r�   r£   rœ   r®   rf   ÚregionCountÚ	wordCountÚ	longWordsÚreadBigArrayÚreadSmallArrayÚn1Ún2s               r6   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Ñ-Ô-Ñ.Ô.Ð.Ø�ÒÐØ�{�|�|Ð$àˆr8   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 )Nr   r~  rÂ  r  r  r   )rÆ  r*  rB  r  rÝ  rV  ÚwriteSmallArray)r�   rÀ   rœ   r®   rf   rÆ   r  r€  r�  ÚwriteBigArrayr‡  r„  r…  s                r6   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¨"¨{Ñ*:Ñ#;Ñ<Ô<Ð<Ð<Ð<ð Ðr8   c                 óf   — |                      ||d|fgz   ¦  «         |                     ¦   «          d S rå   rd  rÍ   s         r6   rÏ   zVarDataValue.xmlWrite
  re  r8   c                 ó,   — t          |d         ¦  «        S rå   r•  rÈ   s       r6   rË   zVarDataValue.xmlRead
  rg  r8   r2   rh  r¦   r8   r6   r|  r|  Ý	  sU   € € € € € ðð ð ð.=ð =ð =ð =ð&ð ð ð(ð (ð (ð (ð (r8   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      r6   rš   zTupleValues.read
  s   € ÝÔ.¨t°TÑ:Ô:¸1Ô=Ð=r8   Nc                 ón   — |j         t                   }t          t          j        || ¬¦  «        ¦  «        S )N)ÚoptimizeSize)Úcfgr   r  r	   ÚcompileDeltaValues_)r�   rÀ   rœ   r®   rf   rÆ   ÚoptimizeSpeeds          r6   r½   zTupleValues.write
  s7   € ØœÕ!4Ô5ˆÝÝÔ.¨vÈÐDUÐVÑVÔVñ
ô 
ð 	
r8   c                 ó,   — t          |d         ¦  «        S rå   r•  rÈ   s       r6   rË   zTupleValues.xmlRead
  rg  r8   c                 óf   — |                      ||d|fgz   ¦  «         |                     ¦   «          d S rå   rd  rÍ   s         r6   rÏ   zTupleValues.xmlWrite
  re  r8   r2   rö  r¦   r8   r6   rŒ  rŒ  
  sU   € € € € € ð>ð >ð >ð
ð 
ð 
ð 
ð(ð (ð (ðð ð ð ð r8   rŒ  c                   ó<   — e Zd Z	 d	ddddœd„Zd„ Zd	d„Zd„ Zd„ ZdS )
Ú	CFF2IndexNrv   )Ú	itemClassÚitemConverterClassrN   c                óz   — t                                | |||||¬¦  «         || _        |�
 |¦   «         nd | _        d S r  )ru   r‘   Ú
_itemClassr4  )r�   rT   r`   ra   rd   r˜  r™  rN   s           r6   r‘   zCFF2Index.__init__#
  sY   € õ 	×ÒØ�$˜  Z¸[ð 	ñ 	
ô 	
ð 	
ð $ˆŒà$6Ð$BÐÐÑ Ô Ð Èð 	Œˆˆr8   c                 óL  ‡ ‡‡‡‡‡— ‰                      ¦   «         Š‰dk    rg S ‰                     ¦   «         Š‰dvrt          d‰› �¦  «        ‚‰j        ‰dz   ‰z  z   t	          ‰j        ¦  «        k    rt          d‰› d�¦  «        ‚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   rn  zinvalid CFF2 INDEX offSize: r   zCFF2 INDEX count z exceeds available datac                 óD   — | j         | j        | j        | j        dœ|         S )Nrn  rt  )r£   ÚoffSizes     r6   ÚgetReadArrayz$CFF2Index.read.<locals>.getReadArray@
  s3   € àÔ(ØÔ)ØÔ)ØÔ(ð	ð ð
 ôð r8   Fr–   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÷  rO  r4  rš   )r›   rè  rê  ÚobjÚdata_posrœ   rž  Ú
offset_posr±   rž   r�   s       €€€€€€€r6   r    z8CFF2Index.read.<locals>.get_read_item.<locals>.read_itemg
  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¸$Ñ?Ô?˜Ø�Kr8   r¡   )r    r£  r¤  r±   rž   r¯   rœ   rŸ  rž  r£   r�   s    @@@@€€€€€€r6   r¤   z%CFF2Index.read.<locals>.get_read_itema
  sƒ   øøøøø€ Ø$Ÿkšk™mœm�Ø#œZ�
Ø%¨°©°gÑ(=Ñ=ÀÑA�Ø(˜L¨°gÑ>Ô>�	ð ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð !Ð r8   )r  rF  r   r�   rò  rî  r©   Úpoprì  r›  r÷  rO  r4  rš   rj   r   )r�   r£   rœ   r®   r±   r©   rè  r  Ú
lastOffsetr)  rê  r¢  r¤   r    r°   r¯   rŸ  rž  s   ```            @@@r6   rš   zCFF2Index.read6
  s  øøøøøø€ Ø× Ò Ñ"Ô"ˆØ�AŠ:ˆ:ØˆIØ×"Ò"Ñ$Ô$ˆØ˜,Ð&Ð&ÝÐE¸GÐEÐEÑFÔFÐFØŒ:˜ ™ gÑ-Ñ-µ°F´KÑ0@Ô0@Ò@Ð@ÝÐO°ÐOÐOÐOÑPÔPÐPð	ð 	ð 	ð !�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ð ˆHr8   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     €r6   r‹  z#CFF2Index.write.<locals>.<listcomp>†
  s%   ø€ Ð:Ð:Ð:¨D�T—\’\ $Ñ'Ô'Ð:Ð:Ð:r8   c           	      óR   •— g | ]#\  }}‰j                              ‰‰‰||¦  «        ‘Œ$S r¦   )r4  r½   )r§   r›   rê  rœ   r�   r®   rÀ   s      €€€€r6   r‹  z#CFF2Index.write.<locals>.<listcomp>ˆ
  sE   ø€ ð ð ð á�A�tð ”×%Ò% f¨d°I¸tÀQÑGÔGðð ð r8   c                 ó,   — g | ]}t          |¦  «        ‘ŒS r¦   r  )r§   rê  s     r6   r‹  z#CFF2Index.write.<locals>.<listcomp>�
  s   € Ð/Ð/Ð/ •3�t‘9”9Ð/Ð/Ð/r8   r   )Úinitialrf  ró  i   r"  i   rO  r÷   rn  )r  rò  r›  r4  r¼   rŒ  r,   rJ  rL  r8  rƒ  r  ró  )r�   rÀ   rœ   r®   rf   rÆ   r  rè  r¦  rž  rÃ   rê  s   ````        r6   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Ñ"Ô"Ð"Ð"ð	#ð 	#r8   c                 óÎ   — | j         �.|                       ¦   «         }|                     d |||¦  «         |S | j        �| j                             |||¦  «        S t	          ¦   «         ‚r2   )r›  r  r4  rË   r¸   )r�   rÉ   rÊ   rœ   r¢  s        r6   rË   zCFF2Index.xmlRead£
  sd   € ØŒ?Ð&Ø—/’/Ñ#Ô#ˆCØ�KŠK˜˜e W¨dÑ3Ô3Ð3ØˆJØŒ_Ð(Ø”?×*Ò*¨5°'¸4Ñ@Ô@Ð@å%Ñ'Ô'Ð'r8   c           
      ó  — | j         �2t          |¦  «        D ] \  }}|                     ||d|fg|¦  «         Œ!d S | j        �;t          |¦  «        D ])\  }}| j                             |||||d|fgz   ¦  «         Œ*d S t          ¦   «         ‚)Nr…  )r›  r¼   rü  r4  rÏ   r¸   )r�   rÎ   rœ   rÁ   rT   rÉ   r›   rê  s           r6   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ñô ð ð ðð õ
 &Ñ'Ô'Ð'r8   r2   )rh   rØ   rÙ   r‘   rš   r½   rË   rÏ   r¦   r8   r6   r—  r—  "
  sˆ   € € € € € ð ð
ð ØØð
ð 
ð 
ð 
ð 
ð&Fð Fð FðP##ð ##ð ##ð ##ðJ(ð (ð (ð
(ð 
(ð 
(ð 
(ð 
(r8   r—  c                   ó*   ‡ — e Zd Zˆ fd„Zdˆ fd„	Zˆ xZS )ÚTupleListOffsetc                 ó¨   •— |                      ¦   «         }|dk    sJ ‚t          ¦   «                              |                     |¦  «        ||¦  «        S rò   )r  rÉ  rš   r(  )r�   r£   rœ   r®   r)  rÌ  s        €r6   rš   zTupleListOffset.read»
  sI   ø€ Ø×!Ò!Ñ#Ô#ˆØ˜Š{ˆ{ˆ{ˆ{Ý‰wŒw�|Š|˜F×/Ò/°Ñ7Ô7¸¸yÑIÔIÐIr8   Nc                 óÀ   •— |                      ¦   «         }| j        |_        |                     |d¬¦  «         t          ¦   «                              |||||¦  «         d S )Nr÷   r+  )r  rT   r-  rÉ  r½   )r�   rÀ   rœ   r®   rf   rÆ   r.  rÌ  s          €r6   r½   zTupleListOffset.writeÀ
  sZ   ø€ Ø×'Ò'Ñ)Ô)ˆ	Øœˆ	ŒØ×Ò˜Y°1ÐÑ5Ô5Ð5Ý‰Œ�Š�i  y°&¸+ÑFÔFÐFÐFÐFr8   r2   rH  rÒ  s   @r6   r¯  r¯  º
  se   ø€ € € € € ðJð Jð Jð Jð Jð
Gð Gð Gð Gð Gð Gð Gð Gð Gð Gr8   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]r—  )ræ   rj   ra  r˜  rç   r™  s          r6   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Ñ.Ô.Ð.Ø×ÒÑÔÐÐÐr8   Nrb  r¦   r8   r6   r³  r³  Ç
  s#   € € € € € ðð ð ð ð r8   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 r2   )Ú	enumClassrÉ  rš   )r�   r£   rœ   r®   rÌ  s       €r6   rš   z_UInt8Enum.readß
  s)   ø€ Ø�~Š~�e™gœgŸlšl¨6°4¸ÑCÔCÑDÔDÐDr8   c                 óP   — t          | j        |                     ¦   «         ¦  «        S r2   )r«  r½  Úupperr³  s     r6   rã   z_UInt8Enum.fromStringâ
  s   € å�s”} e§k¢k¡m¤mÑ4Ô4Ð4r8   c                 óZ   — |                       |¦  «        j                             ¦   «         S r2   )r½  rT   Úlowerr³  s     r6   rà   z_UInt8Enum.toStringæ
  s#   € à�}Š}˜UÑ#Ô#Ô(×.Ò.Ñ0Ô0Ð0r8   )
rh   rØ   rÙ   r«   r½  rš   r¼  rã   rà   rÑ  rÒ  s   @r6   r»  r»  Ü
  sx   ø€ € € € € Ø€IðEð Eð Eð Eð Eð ð5ð 5ñ „[ð5ð ð1ð 1ñ „[ð1ð 1ð 1ð 1ð 1r8   r»  c                   ó   — e Zd ZeZdS )r(   N)rh   rØ   rÙ   Ú_ExtendModer½  r¦   r8   r6   r(   r(   ë
  s   € € € € € Ø€I€I€Ir8   r(   c                   ó   — e Zd ZeZdS )r)   N)rh   rØ   rÙ   Ú_CompositeModer½  r¦   r8   r6   r)   r)   ï
  s   € € € € € Ø€I€I€Ir8   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–   rm  c                 ó(   — | t           j        z  dk    S )Nr  ©rÇ  ÚCODE_POINT_BIAS_BITSr  s    r6   Úbias_present_u16z#MappingEntryFormat.bias_present_u16û
  ó   € àÕ)Ô>Ñ>À4ÒGÐGr8   c                 ó(   — | t           j        z  dk    S )Nrm  rÉ  r  s    r6   Úbias_present_u24z#MappingEntryFormat.bias_present_u24ÿ
  rÌ  r8   N)rh   rØ   rÙ   ÚHAS_SUBSET_DEFÚHAS_CHILD_ENTRIESÚHAS_ENTRY_IDÚHAS_PATCH_FORMATrÊ  ÚpropertyrË  rÎ  r¦   r8   r6   rÇ  rÇ  ó
  sl   € € € € € Ø€NØÐØ€LØÐàÐàðHð Hñ „XðHð ðHð Hñ „XðHð Hð Hr8   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‹   rf  ÚformatFlagsrL  r¿  ©Útagrí  ÚendÚdesignSpaceSegmentsr  é   ÚchildEntryConjunctiveÚchildEntryIndicesTr   ÚentryIdsÚpatchFormatÚcodePointsBiasiÿÿ )rÊ  ÚmaxValueÚ
codePoints)ÚfontTools.misc.fixedToolsr   ÚfontTools.misc.iftSparseBitSetr×  r¬   rÇ  rF  rÏ  rl  rj   r/  rú   rÐ  rÆ  r[  rÑ  rQ  rÒ  rÊ  rÎ  rË  rî  r�   r­   r�  )!r�   r£   rœ   r®   r±  Ú	sbsDecodeÚ
entryCountrw  ÚlastEntryIdrÅ  rû  rØ  ÚfeatureCountÚfeaturesrÚ  ÚdesignSpaceCountr¯  ÚsegTagrí  rÛ  ÚmodeAndCountÚconjunctiveÚ
childCountÚchildIndicesry  ÚidsÚ
encodedValr%  ÚhasMoreÚcurrentEntryIdrÊ  Ú
codepointsÚconsumeds!                                    r6   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Ñ!Ô!Ð!Ñ!Øˆr8   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   rf  rØ  rL  rÜ  rÚ  rí  r¿  rÛ  rß  rÞ  FrÝ  r  rà  r   rS  rá  râ  rä  c                 ó&   •— g | ]}|‰k    ¯|‰z
  ‘ŒS r¦   r¦   )r§   ÚcrÊ  s     €r6   r‹  z1MappingEntriesConverter.write.<locals>.<listcomp>’  s#   ø€ Ð+VÐ+VÐ+V¸ÈAÐQUÊIÈI¨A°©HÈIÈIÈIr8   )ræ  rù  rå  r   re   rÇ  rJ  rÁ   rÏ  rò  rn  r5  r  rÐ  rU  rÑ  r¼   rÒ  rÊ  rÎ  rË  ró  )r�   rÀ   rœ   r®   rÁ   rÆ   Ú	sbsEncoder¶  rw  ÚlastIdrû  rØ  rë  rÚ  r¯  Úsegrñ  rï  rî  ry  rò  r›   Úeidr%  Úhas_moreÚencoded_valuerö  rÊ  s                              @r6   r½   zMappingEntriesConverter.writeY  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r8   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ß   rL  rc  rÜ  ÚdesignSpaceSegmentrÚ  rí  rÛ  rÙ  rß  rÞ  FÚ
childEntryr„  rá  rä  râ  r—  c              3   ó4   K  — | ]}t          |¦  «        V — Œd S r2   )Ústr©r§   rû  s     r6   r¨   z3MappingEntriesConverter.xmlWrite.<locals>.<genexpr>»  s(   è è € Ð(MÐ(M°A­¨Q©¬Ð(MÐ(MÐ(MÐ(MÐ(MÐ(Mr8   )	re   rÇ  rÝ  rÁ   rç   ræ   rÔ   r˜  rÞ  )r�   rÎ   rœ   rÁ   rT   rÉ   rû  Úformat_flagsrÿ  rÚ  rþ  ry  ÚcodePointsStrs                r6   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*	 ð *	 r8   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Ø  Ú0r  rà  rÁ   rc  rL  r  rÜ  rÚ  rí  rÛ  rÙ  rÞ  r  rß  r…  rá  râ  rä  c                 ó0   — g | ]}|¯t          |¦  «        ‘ŒS r¦   ró   r  s     r6   r‹  z3MappingEntriesConverter.xmlRead.<locals>.<listcomp>ç  s3   € ð /ð /ð /Ø'(Àqð/Ý ™FœFð/ð /ð /r8   )
r3   r4   r   re   rÇ  Ú
setdefaultrj   rž  rÆ  Úsplit)r�   rÉ   rÊ   rœ   rw  ÚelemrT   Úformat_flags_intrû  Úe_elemÚenameÚeattrsÚecontents                r6   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Ñ%Ô%Ð%ùØˆr8   r2   rh  r¦   r8   r6   rÕ  rÕ    s_   € € € € € ðPð Pð Pðd9Yð 9Yð 9Yð 9Yðv+ ð + ð + ðZ*ð *ð *ð *ð *r8   rÕ  Úint8Úint16Úint24Úint32r@   r<   rA   rB   Úchar64r  ÚMappingEntriesÚOffsetrI   ÚOffset24Ú	TupleList)r™  ÚVarCompositeGlyphList)r˜  rQ   r&   rR   r'   c                 ó.   — t          t          | ¬¦  «        S ©N)rd   )r-   rz  ©ÚCs    r6   r7   r7     ó   € �7¥9¸Ð;Ñ;Ô;€ r8   c                 ó.   — t          t          | ¬¦  «        S r!  )r-   rà  r"  s    r6   r7   r7     s   € ­Õ1HÐUVÐ)WÑ)WÔ)W€ r8   c                 ó.   — t          t          | ¬¦  «        S r!  )r-   r/  r"  s    r6   r7   r7      s   € ¥­ÀQÐ!GÑ!GÔ!G€ r8   c                 ó.   — t          t          | ¬¦  «        S r!  )r-   r1  r"  s    r6   r7   r7   !  r$  r8   ÚOffsetToc                 ó.   — t          t          | ¬¦  «        S r!  )r-   rg   r"  s    r6   r7   r7   "  s   € �'¥%°AÐ6Ñ6Ô6€ r8   Ú	LOffsetToc                 ó.   — t          t          | ¬¦  «        S r!  )r-   r0  r"  s    r6   r7   r7   #  s   € �7¥6°aÐ8Ñ8Ô8€ r8   Ú
Offset24Toc                 ó.   — t          t          | ¬¦  «        S r!  )r-   r5  r"  s    r6   r7   r7   $  s   € �G¥G¸Ð:Ñ:Ô:€ r8   )�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   r   rx  r   r   r   r   r   ÚotDataSchemar   ÚotTablesr   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   rÃ  r)   rÅ  r*   Ú	itertoolsr+   r,   Ú	functoolsr-   Útypesr.   rÛ   r  Útypingr/   ÚloggingÚenumr0   Ú	getLoggerrh   r�  r  rŒ  rs   Úobjectru   rÝ   rë   rð   rö   r
  r  r  r!  r,  r:  rD  rN  rX  r^  rX   rY   rZ   r[   rj  rp  r~  r†  r‰  r“  rœ  r¡  r¨  r¾  rÂ  rÅ  rÔ  rÖ  râ  r_   r]   rg   r0  r5  rG   r\   rE   rC   rD   rF   r;   ro  rz  rà  rø  r  r1  r©  r/  r:  rL  rT  rj  r|  rŒ  r—  r¯  r³  r»  rÇ  rÕ  r^   r¦   r8   r6   ú<module>r=     sm  ððð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð AÐ @Ð @Ð @Ð @Ð @Ø JÐ JÐ JÐ JÐ JÐ JÐ JÐ JØ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MØ -Ð -Ð -Ð -Ð -Ð -Ø KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ Kðð ð ð ð ð ð ð ð ð ð ð ð ð ð $Ð #Ð #Ð #Ð #Ð #ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð" .Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ø Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ø 	€	€	€	Ø €€€Ø Ð Ð Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð à€gÔ˜Ñ!Ô!€Ø
(Ð
(€ðJ(˜t Iœð J(ð J(ð J(ð J(ðZnð nð nð nð n�Fñ nô nð nðb/ð /ð /ð /ð /�-ñ /ô /ð /ð"ð ð ð ð �Kñ ô ð ðð ð ð ð ˆ{ñ ô ð ð&ð &ð &ð &ð &ˆ8ñ &ô &ð &ð 'ð 'ð 'ð 'ð 'ˆHñ 'ô 'ð 'ð  ð  ð  ð  ð  ˆeñ  ô  ð  ð!ð !ð !ð !ð !ˆ}˜eñ !ô !ð !ð'ð 'ð 'ð 'ð 'ˆHñ 'ô 'ð 'ð (ð (ð (ð (ð (ˆXñ (ô (ð (ð &ð &ð &ð &ð &ˆ8ñ &ô &ð &ð 'ð 'ð 'ð 'ð 'ˆHñ 'ô 'ð 'ð -ð -ð -ð -ð -ˆHñ -ô -ð -ð"ð "ð "ð "ð "ˆXñ "ô "ð "ð ð  ð  ð  ð  �(ñ  ô  ð  ð	ð 	ð 	ð 	ð 	�K ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	�[ &ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	�[ &ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	�K ñ 	ô 	ð 	ðð ð ð ð ˆ+ñ ô ð ðAð Að Að Að Aˆkñ Aô Að Að&3ð 3ð 3ð 3ð 3�ñ 3ô 3ð 3ð ð ð ð ð �ñ ô ð ð
ð ð ð ð ˆ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ñ ô ð ð Cð  Cð  Cð  Cð  C˜ñ  Cô  Cð  CðFCð Cð Cð Cð C�vñ Cô Cð Cð4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|>ð |>ð |>ð |>ð |>˜Mñ |>ô |>ð |>ðBDð Dð Dð Dð D�ñ Dô Dð DðN
S6ð S6ð S6ð S6ð S6�)ñ S6ô S6ð S6ðlKð Kð Kð Kð K�mñ Kô Kð Kð@ð ð ð ð �-ñ ô ð ðD,ð ,ð ,ð ,ð ,�-ñ ,ô ,ð ,ð^2(ð 2(ð 2(ð 2(ð 2(�ñ 2(ô 2(ð 2(ðj-
ð -
ð -
ð -
ð -
�]ñ -
ô -
ð -
ð`0(ð 0(ð 0(ð 0(ð 0(�=ñ 0(ô 0(ð 0(ðfð ð ð ð ñ ô ð ð$U(ð U(ð U(ð U(ð U(�ñ U(ô U(ð U(ðp
Gð 
Gð 
Gð 
Gð 
G�iñ 
Gô 
Gð 
Gðð ð ð ð �ñ ô ð ð*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7à
ˆDð7ð ˆUð7ð ˆUð	7ð
 ˆTð7ð ˆUð7ð ˆfð7ð ˆfð7ð ˆeð7ð ˆfð7ð ˆwð7ð �ð7ð ˆwð7ð 
ˆ3ð7ð ˆwð7ð  �ð!7ð" �ð#7ð$ ˆfð%7ð 7ð& �*ð'7ð( ˆUð)7ð* ˆwð+7ð, ˆUð-7ð. �;ð/7ð0 ˆfð17ð2 Ð-ð37ð4 ˆeð57ð6 ˆvð77ð8 �ð97ð: �;ð;7ð< �*ð=7ð> �nð?7ð@ �LðA7ðB �*ðC7ðD �*ðE7ðF �]ðG7ð 7ð 7ðH �ðI7ðJ ��˜°{ÐCÑCÔCðK7ðL �w�w˜À;ÐOÑOÔOðM7ðN ˜W˜W YÐ:KÐLÑLÔLðO7ðR �;ðS7ðT �;ðU7ðV Ð!ðW7ðX Ð)ðY7ðZ Ð!ð[7ð\ Ð)ð]7ð` Ð;Ð;ða7ðb ÐWÐWðc7ðd ÐGÐGðe7ðf Ð;Ð;ðg7ðh Ð6Ð6ði7ðj Ð8Ð8ðk7ðl Ð:Ð:ðm7ð 7Ð Ð Ð r8   