§
    èƒñjø  ã                   ó¤
  — d Z ddlZddlZddlZddlmZ ddlZddlmZm	Z	 ddl
mZ ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddl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) ddl*m+Z+ ddl,m-Z-m.Z.  ej/        d¦  «        Z0ddl1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<  G d„ de=¦  «        Z> G d„ de>¦  «        Z?e? @                    ejA        d¦  «        d„ ¦   «         ZBd„ ZCdWd„ZDe? @                    ejE        ¦  «        d„ ¦   «         ZBe? @                    ejF        ¦  «        d „ ¦   «         ZBd!„ ZGd"„ ZHe? @                    ejI        ¦  «        d#„ ¦   «         ZBe? @                    ejJ        ¦  «        d$„ ¦   «         ZBd%„ ZKdXd&„ZLdXd'„ZMdYd)„ZNd*„ ZOe? @                    ejP        ¦  «        d+„ ¦   «         ZBdZd.„ZQe? @                    ejR        ¦  «        d/„ ¦   «         ZBe? @                    ejS        ¦  «        d0„ ¦   «         ZBd1„ ZTd2„ ZUd3„ ZVd4„ ZWd5„ ZXe? @                    ejY        ¦  «        d6„ ¦   «         ZBe? @                    ejZ        ¦  «        d7„ ¦   «         ZBejI        ejP        ejY        ejR        ejS        fZ[d8„ Z\e? @                    ej]        ¦  «        d9„ ¦   «         ZB G d:„ d;e?¦  «        Z^e^ @                    ej_        ¦  «        d<„ ¦   «         ZBe^ @                    ejF        ¦  «        d=„ ¦   «         ZBe^ @                    ejE        ¦  «        d>„ ¦   «         ZB G d?„ d@e?¦  «        Z`e` @                    ej_        eja        f¦  «        dA„ ¦   «         ZBe` @                    ejb        ¦  «        dB„ ¦   «         ZBe` @                    ejF        ¦  «        dC„ ¦   «         ZBe` @                    ejE        ¦  «        dD„ ¦   «         ZB G dE„ dFe?¦  «        ZcdG„ Zdec @                    eja        ¦  «        dH„ ¦   «         ZBec @                    ej_        ¦  «        dI„ ¦   «         ZBec @                    ejF        ¦  «        dJ„ ¦   «         ZBec @                    ejE        ¦  «        dK„ ¦   «         ZB G dL„ dMec¦  «        Zeee @                    ejf        ¦  «        dN„ ¦   «         ZBee @                    ejg        ¦  «        dO„ ¦   «         ZBdP„ ZhdQ„ Ziee @                    ejj        ejk        f¦  «        dR„ ¦   «         ZBee @                    ejl        ejm        f¦  «        dS„ ¦   «         ZBee @                    ejn        ¦  «        dT„ ¦   «         ZBee @                    ejo        dU¦  «        dV„ ¦   «         ZBdS )[z4
Merge OpenType Layout tables (GDEF / GPOS / GSUB).
é    N)Úior)ÚMAX_PAINT_COLR_LAYER_COUNTÚLayerReuseCache)ÚclassifyTools)ÚotRound)Úbuild_n_ary_tree)ÚotTables)ÚotBase)Ú_convert_layout_formats)ÚBaseFixedValue)Údfs_base_table)ÚDefaultTable)ÚbuilderÚmodelsÚvarStore)ÚnonNoneÚallNoneÚallEqualÚ
allEqualToÚsubList)ÚVarStoreInstancer)Úreduce)ÚbuildSinglePos)Ú_compression_level_from_envÚcompact_pair_poszfontTools.varLib.mergeré   )ÚShouldBeConstantÚ
FoundANoneÚMismatchedTypesÚNotANoneÚLengthsDifferÚ
KeysDifferÚInconsistentGlyphOrderÚInconsistentExtensionsÚInconsistentFormatsÚUnsupportedFormatÚVarLibMergeErrorc                   ób   — e Zd Zdd„Zedd„¦   «         Zei fd„¦   «         Zdd„Zd„ Zd	„ Z	d
„ Z
dS )ÚMergerNc                 ó"   — || _         d | _        d S ©N)ÚfontÚttfs)Úselfr,   s     úV/data/share/cad/hardware/.venv/lib/python3.11/site-packages/fontTools/varLib/merger.pyÚ__init__zMerger.__init__0   s   € ØˆŒ	àˆŒ	ˆ	ˆ	ó    r+   c                 óä   ‡ ‡‡— ‰ t           k    s
J d¦   «         ‚d‰ j        vri ‰ _        t          ‰¦  «        t          t          j        fv r‰fŠt          ‰¦  «        t          k    r‰fŠˆˆ ˆfd„}|S )NzSubclass Merger instead.Úmergersc                 óâ   •— | j         dk    sJ ‚g }‰D ][}||v rŒ|                     |¦  «         ‰j                             |i ¦  «        }‰D ]!}||vsJ d|j         ›d|›d�¦   «         ‚| ||<   Œ"Œ\d S )NÚmergezOops, class 'z' has merge function for 'z' defined already.)Ú__name__Úappendr3   Ú
setdefault)ÚmethodÚdoneÚclazzr3   ÚattrÚattrsÚcelfÚclazzess        €€€r/   ÚwrapperzMerger.merger.<locals>.wrapper?   s·   ø€ Ø”? gÒ-Ð-Ð-Ð-ØˆDØ ð 
+ð 
+�Ø˜D�=�=ØØ—’˜EÑ"Ô"Ð"Øœ,×1Ò1°%¸Ñ<Ô<�Ø!ð +ð +�DØ wÐ.Ð.Ð.Ð.à œ>˜>˜>¨4¨4¨4ð1ñ /Ô.Ð.ð %+�G˜D‘M�Mð+ð �4r1   )r)   Ú__dict__r3   ÚtypeÚenumÚEnumMetaÚstr)r>   r?   r=   r@   s   ``` r/   ÚmergerzMerger.merger5   sŽ   øøø€ à•vŠ~ˆ~ˆ~Ð9‰~Œ~ˆ~Ø˜DœMÐ)Ð)ØˆDŒLÝ�‰=Œ=�T¥4¤=Ð1Ð1Ð1Ø�jˆGÝ�‰;Œ;�#ÒÐØ�HˆEð	ð 	ð 	ð 	ð 	ð 	ð 	ð  ˆr1   c                 ó¾   — t          |¦  «        }|                      ¦   «         D ]8} t          | dd ¦  «        }|€ n"| j                             |d ¦  «        }|�|c S Œ9|S )Nr3   )rB   ÚmroÚgetattrr3   Úget)r>   ÚthingÚ_defaultÚtypr3   Úms         r/   Ú
mergersForzMerger.mergersForQ   sp   € å�5‰kŒkˆà—H’H‘J”Jð 	ð 	ˆDÝ˜d I¨tÑ4Ô4ˆGØˆØ�à”× Ò   dÑ+Ô+ˆAØˆ}Ø���ð ð ˆr1   © c                 óØ  ‡‡— t          |d¦  «        r|                     d¬¦  «         |D ](}t          |d¦  «        r|                     d¬¦  «         Œ)t          t          |¦  «                             ¦   «         ¦  «        Št          ˆfd„|D ¦   «         ¦  «        st          | ‰d„ |D ¦   «         ¬¦  «        ‚|                      |¦  «        }|                     d| j	        j
        ¦  «        }	 ‰D ]HŠ‰|v rŒt          |‰¦  «        }ˆfd„|D ¦   «         }|                     ‰|¦  «        }	 |	| ||¦  «         ŒId S # t          $ r#}
|
j                             d	‰z   ¦  «         ‚ d }
~
ww xY w)
NÚensureDecompiledF)Úrecursec              3   ó|   •K  — | ]6}‰t          t          |¦  «                             ¦   «         ¦  «        k    V — Œ7d S r+   ©ÚsortedÚvarsÚkeys)Ú.0ÚvrX   s     €r/   ú	<genexpr>z&Merger.mergeObjects.<locals>.<genexpr>g   s>   øè è € Ð?Ð?°a�4�6¥$ q¡'¤'§,¢,¡.¤.Ñ1Ô1Ò1Ð?Ð?Ð?Ð?Ð?Ð?r1   c                 ój   — g | ]0}t          t          |¦  «                             ¦   «         ¦  «        ‘Œ1S rP   rU   ©rY   rZ   s     r/   ú
<listcomp>z'Merger.mergeObjects.<locals>.<listcomp>i   s.   € Ð)NÐ)NÐ)NÀQ­&µ°a±´·²±´Ñ*@Ô*@Ð)NÐ)NÐ)Nr1   ©ÚexpectedÚgotÚ*c                 ó0   •— g | ]}t          |‰¦  «        ‘ŒS rP   ©rI   )rY   ÚtableÚkeys     €r/   r^   z'Merger.mergeObjects.<locals>.<listcomp>r   s#   ø€ Ð?Ð?Ð?°%�' %¨Ñ-Ô-Ð?Ð?Ð?r1   ú.)ÚhasattrrR   rV   rW   rX   Úallr"   rO   rJ   Ú	__class__ÚmergeThingsrI   r'   Ústackr7   )r.   ÚoutÚlstÚexcludeÚitemr3   ÚdefaultMergerÚvalueÚvaluesÚ
mergerFuncÚerf   rX   s              @@r/   ÚmergeObjectszMerger.mergeObjects`   sº  øø€ Ý�3Ð*Ñ+Ô+ð 	0Ø× Ò ¨Ð Ñ/Ô/Ð/Øð 	5ð 	5ˆDÝ�tÐ/Ñ0Ô0ð 5Ø×%Ò%¨eÐ%Ñ4Ô4Ð4øÝ•d˜3‘i”i—n’nÑ&Ô&Ñ'Ô'ˆÝÐ?Ð?Ð?Ð?¸3Ð?Ñ?Ô?Ñ?Ô?ð 	ÝØ˜tÐ)NÐ)NÈ#Ð)NÑ)NÔ)Nðñ ô ð ð —/’/ #Ñ&Ô&ˆØŸš C¨¬Ô)CÑDÔDˆð
	Øð 0ð 0�Ø˜'�>�>ØÝ  SÑ)Ô)�Ø?Ð?Ð?Ð?¸3Ð?Ñ?Ô?�Ø$Ÿ[š[¨¨mÑ<Ô<�
Ø�
˜4 ¨Ñ/Ô/Ð/Ð/ð0ð 0øõ  ð 	ð 	ð 	ØŒG�NŠN˜3 ™9Ñ%Ô%Ð%Øøøøøð	øøøs   Ã/AD< Ä<
E)ÅE$Å$E)c                 ól  — t          ||t          ¦  «        s)t          | t          |¦  «        d„ |D ¦   «         ¬¦  «        ‚t          t	          |t	          |Ž ¦  «        ¦  «        D ]O\  }\  }}	 |                      ||¦  «         Œ # t          $ r#}|j                             d|z  ¦  «         ‚ d }~ww xY wd S )Nc                 ó,   — g | ]}t          |¦  «        ‘ŒS rP   ©Úlen©rY   Úxs     r/   r^   z%Merger.mergeLists.<locals>.<listcomp>{   s   € Ð=RÐ=RÐ=RÈ½cÀ!¹f¼fÐ=RÐ=RÐ=Rr1   r_   z[%d])	r   rz   r!   Ú	enumerateÚziprk   r'   rl   r7   )r.   rm   rn   Úirr   rs   ru   s          r/   Ú
mergeListszMerger.mergeListsy   sÑ   € Ý˜#˜s¥CÑ(Ô(ð 	TÝ ­s°3©x¬xÐ=RÐ=RÈcÐ=RÑ=RÔ=RÐSÑSÔSÐSÝ"+­C°µS¸#°YÑ,?Ô,?Ñ"@Ô"@ð 	ð 	ÑˆA‰��vðØ× Ò  ¨Ñ/Ô/Ð/Ð/øÝ#ð ð ð Ø”—’˜v¨™zÑ*Ô*Ð*Øøøøøðøøøð	ð 	s   Á-BÂ
B1ÂB,Â,B1c                 ól  — t          ||t          ¦  «        s.t          | t          |¦  «        j        d„ |D ¦   «         ¬¦  «        ‚|                      |¦  «                             d d ¦  «        }|� || ||¦  «         d S t          |t          j        ¦  «        r$t          ||¦  «        st          | ||¬¦  «        ‚d S t          |d¦  «        r|                      ||¦  «         d S t          |t          ¦  «        r|                      ||¦  «         d S t          ||¦  «        st          | ||¬¦  «        ‚d S )Nc                 ó6   — g | ]}t          |¦  «        j        ‘ŒS rP   )rB   r6   r{   s     r/   r^   z&Merger.mergeThings.<locals>.<listcomp>†   s!   € Ð7VÐ7VÐ7VÈQ½¸Q¹¼Ô8HÐ7VÐ7VÐ7Vr1   r_   rA   )r   rB   r   r6   rO   rJ   Ú
isinstancerC   ÚEnumr   rh   rv   Úlistr€   )r.   rm   rn   rt   s       r/   rk   zMerger.mergeThingsƒ   sk  € Ý˜#˜s¥DÑ)Ô)ð 	Ý!Ø�t C™yœyÔ1Ð7VÐ7VÐRUÐ7VÑ7VÔ7Vðñ ô ð ð —_’_ SÑ)Ô)×-Ò-¨d°DÑ9Ô9ˆ
ØÐ!ØˆJ�t˜S #Ñ&Ô&Ð&Ð&Ð&Ý˜�TœYÑ'Ô'ð 	Dõ ˜c 3Ñ'Ô'ð DÝ& t°c¸sÐCÑCÔCÐCðDð Då�S˜*Ñ%Ô%ð 	DØ×Ò˜c 3Ñ'Ô'Ð'Ð'Ð'Ý˜�TÑ"Ô"ð 	DØ�OŠO˜C Ñ%Ô%Ð%Ð%Ð%å˜c 3Ñ'Ô'ð DÝ& t°c¸sÐCÑCÔCÐCðDð Dr1   c                 óÖ   ‡— |D ]dŠ‰|vrŒ	 || _         |                      |‰         ˆfd„|D ¦   «         ¦  «         Œ8# t          $ r }|j                             ‰¦  «         ‚ d }~ww xY wd S )Nc                 ó:   •— g | ]}|                      ‰¦  «        ‘ŒS rP   ©rJ   )rY   rN   Útags     €r/   r^   z&Merger.mergeTables.<locals>.<listcomp>ž   s#   ø€ Ð,MÐ,MÐ,M¸A¨Q¯UªU°3©Z¬ZÐ,MÐ,MÐ,Mr1   )r-   rk   r'   rl   r7   )r.   r,   Úmaster_ttfsÚ	tableTagsru   r‰   s        @r/   ÚmergeTableszMerger.mergeTables˜   sœ   ø€ Øð 	ð 	ˆCØ˜$ˆˆØðØ'�”	Ø× Ò   c¤Ð,MÐ,MÐ,MÐ,MÀÐ,MÑ,MÔ,MÑNÔNÐNÐNøÝ#ð ð ð Ø”—’˜sÑ#Ô#Ð#Øøøøøðøøøð	ð 	s   Œ/<¼
A&ÁA!Á!A&)r+   )rP   )r6   Ú
__module__Ú__qualname__r0   ÚclassmethodrF   rO   rv   r€   rk   rŒ   rP   r1   r/   r)   r)   /   s¯   € € € € € ðð ð ð ð
 ðð ð ñ „[ðð6 Ø)+ð ð ð ñ „[ððð ð ð ð2ð ð ðDð Dð Dð*	ð 	ð 	ð 	ð 	r1   r)   c                   ó   — e Zd ZdS )ÚAligningMergerN)r6   r�   rŽ   rP   r1   r/   r‘   r‘   §   s   € € € € € Ø€Dr1   r‘   )ÚGlyphClassDefÚGlyphClassDef2c                 óˆ  ‡— |€#t          |¦  «        st          | d |¬¦  «        ‚d S d„ |D ¦   «         }i |_        |j        }t          ¦   «         } |j        d„ |D ¦   «         Ž  |D ]\Št          ˆfd„|D ¦   «         ¦  «        }t          |¦  «        st          | |d         |d‰z   g¬¦  «        ‚|sd |‰<   ŒQ|d         |‰<   Œ]d S )Nr_   c                 ó   — g | ]	}|j         ‘Œ
S rP   )Ú	classDefs©rY   Úls     r/   r^   zmerge.<locals>.<listcomp>²   s   € Ð
$Ð
$Ð
$˜1ˆ1Œ;Ð
$Ð
$Ð
$r1   c                 ó6   — g | ]}|                      ¦   «         ‘ŒS rP   )rX   r—   s     r/   r^   zmerge.<locals>.<listcomp>¸   s    € Ð+Ð+Ð+ !�Q—V’V‘X”XÐ+Ð+Ð+r1   c              3   óB   •K  — | ]}|                      ‰¦  «        V — Œd S r+   rˆ   )rY   r˜   Úks     €r/   r[   zmerge.<locals>.<genexpr>º   s-   øè è € Ð2Ð2¨˜AŸEšE !™HœHÐ2Ð2Ð2Ð2Ð2Ð2r1   r   rg   )r`   ra   rl   )r   r    r–   ÚsetÚupdater   r   r   )rF   r.   rn   ÚallKeysÚ	allValuesr›   s        @r/   r5   r5   «   s  ø€ à€|Ý�s‰|Œ|ð 	;Ý˜6¨D°cÐ:Ñ:Ô:Ð:Øˆà
$Ð
$ Ð
$Ñ
$Ô
$€CØ€D„NàŒ>€Då‰eŒe€GØ€G„NÐ+Ð+ sÐ+Ñ+Ô+Ð,Ð,Øð 	#ð 	#ˆÝÐ2Ð2Ð2Ð2¨cÐ2Ñ2Ô2Ñ2Ô2ˆ	Ý˜	Ñ"Ô"ð 	Ý"Ø ¨1¤°3¸sÀQ¹w¸iðñ ô ð ð ð 	#ØˆD�‰GˆGà ”lˆD�‰GˆGð	#ð 	#r1   c                 óò   ‡ — ‰ j         dk    r‰ S t          j        ¦   «         }d|_         ‰ j        |_        ‰ j        |_        ˆ fd„|j        j        D ¦   «         |_        t          |j        ¦  «        |_        |S )Né   c                 ó   •— g | ]	}‰j         ‘Œ
S rP   ©ÚValue)rY   Ú_r.   s     €r/   r^   z._SinglePosUpgradeToFormat2.<locals>.<listcomp>Í   s   ø€ Ð9Ð9Ð9 �”Ð9Ð9Ð9r1   )	ÚFormatÚotÚ	SinglePosÚCoverageÚValueFormatÚglyphsr¤   rz   Ú
ValueCount)r.   Úrets   ` r/   Ú_SinglePosUpgradeToFormat2r®   Å   sn   ø€ Ø„{�aÒÐØˆå
Œ,‰.Œ.€CØ€C„JØ”=€C„LØÔ&€C„OØ9Ð9Ð9Ð9 S¤\Ô%8Ð9Ñ9Ô9€C„IÝ˜œ‘^”^€C„Nà€Jr1   c                 óÄ  ‡‡‡	— |€d„ |D ¦   «         }nd„ t          ||¦  «        D ¦   «         }t          ¦   «         } |j        |Ž  |                      ¦   «         j        Š	t          |‰	¬¦  «        Št          ˆ	fd„|D ¦   «         ¦  «        st          ¦   «         ‚~d}|€ˆˆfd„|D ¦   «         }n1t          |¦  «        t          |¦  «        k    sJ ‚ˆˆfd„|D ¦   «         }‰|fS )aT  Takes font and list of glyph lists (must be sorted by glyph id), and returns
    two things:
    - Combined glyph list,
    - If values_lst is None, return input glyph lists, but padded with None when a glyph
      was missing in a list.  Otherwise, return values_lst list-of-list, padded with None
      to match combined glyph lists.
    Nc                 ó,   — g | ]}t          |¦  «        ‘ŒS rP   )rœ   r—   s     r/   r^   z&_merge_GlyphOrders.<locals>.<listcomp>Ü   s   € Ð)Ð)Ð) •S˜‘V”VÐ)Ð)Ð)r1   c                 óH   — g | ]\  }}d „ t          ||¦  «        D ¦   «         ‘Œ S )c                 ó   — i | ]\  }}||“Œ	S rP   rP   )rY   ÚgrZ   s      r/   ú
<dictcomp>z1_merge_GlyphOrders.<locals>.<listcomp>.<dictcomp>Þ   s   € Ð2Ð2Ð2™t˜q !�a˜Ð2Ð2Ð2r1   )r~   )rY   r˜   Úvss      r/   r^   z&_merge_GlyphOrders.<locals>.<listcomp>Þ   s3   € ÐUÐUÐU±u°q¸"Ð2Ð2¥s¨1¨b¡z¤zÐ2Ñ2Ô2ÐUÐUÐUr1   ©rf   c              3   óB   •K  — | ]}t          |‰¬ ¦  «        |k    V — ŒdS )r¶   N)rV   )rY   rµ   ÚsortKeys     €r/   r[   z%_merge_GlyphOrders.<locals>.<genexpr>å   s5   øè è € Ð;Ð;°�v�b˜gÐ&Ñ&Ô&¨"Ò,Ð;Ð;Ð;Ð;Ð;Ð;r1   c                 ó0   •‡— g | ]Šˆˆfd „‰D ¦   «         ‘ŒS )c                 ó    •— g | ]
}|‰v r|n‰‘ŒS rP   rP   ©rY   ÚglyphÚdefaultÚdict_sets     €€r/   r^   z1_merge_GlyphOrders.<locals>.<listcomp>.<listcomp>ì   s'   ø€ ÐHÐHÐH¸�e˜xÐ'Ð'ˆUˆU¨WÐHÐHÐHr1   rP   ©rY   r¾   r½   Úorders    @€€r/   r^   z&_merge_GlyphOrders.<locals>.<listcomp>ë   sB   øø€ ð 
ð 
ð 
àð IÐHÐHÐHÐHÀ%ÐHÑHÔHð
ð 
ð 
r1   c                 ó0   •‡— g | ]Šˆˆfd „‰D ¦   «         ‘ŒS )c                 ó,   •— g | ]}|‰v r‰|         n‰‘ŒS rP   rP   r»   s     €€r/   r^   z1_merge_GlyphOrders.<locals>.<listcomp>.<listcomp>ò   s+   ø€ ÐRÐRÐRÀ5 ¨Ð 1Ð 1ˆX�eŒ_ˆ_°wÐRÐRÐRr1   rP   r¿   s    @€€r/   r^   z&_merge_GlyphOrders.<locals>.<listcomp>ñ   sB   øø€ ð 
ð 
ð 
àð SÐRÐRÐRÐRÈEÐRÑRÔRð
ð 
ð 
r1   )	r~   rœ   r�   ÚgetReverseGlyphMapÚ__getitem__rV   ri   r#   rz   )
r,   rn   Ú
values_lstr½   Ú	dict_setsÚcombinedÚpaddedValuesÚpaddedrÀ   r¸   s
      `    @@r/   Ú_merge_GlyphOrdersrÊ   Ó   sC  øøø€ ð ÐØ)Ð) SÐ)Ñ)Ô)ˆ	ˆ	àUÐUÅÀCÈÑ@TÔ@TÐUÑUÔUˆ	Ý‰uŒu€HØ€H„O�YÐÐà×%Ò%Ñ'Ô'Ô3€GÝ�8 Ð)Ñ)Ô)€EåÐ;Ð;Ð;Ð;°sÐ;Ñ;Ô;Ñ;Ô;ð 'Ý$Ñ&Ô&Ð&Øà€LØÐð
ð 
ð 
ð 
ð 
à%ð
ñ 
ô 
ˆˆõ
 �3‰xŒx�3˜z™?œ?Ò*Ð*Ð*Ð*ð
ð 
ð 
ð 
ð 
à%ð
ñ 
ô 
ˆð �&ˆ=Ðr1   c                 óz   — |d         j                              ¦   «         |_         |                      ||¦  «         d S ©Nr   ©rA   Úcopyrv   ©rF   r.   rn   s      r/   r5   r5   ø   ó9   € ð ˜”F”O×(Ò(Ñ*Ô*€D„MØ
×Ò˜˜cÑ"Ô"Ð"Ð"Ð"r1   c                 óz   — |d         j                              ¦   «         |_         |                      ||¦  «         d S rÌ   rÍ   rÏ   s      r/   r5   r5      rÐ   r1   c                 ó0  — |D ]’}|�2t          |¦  «        t          j        k    s|j        �||j        j        vrŒ7|j        dk    r	|j        c S |j        dk    r,|j        |j        j                             |¦  «                 c S t          | d¬¦  «        ‚d S )Nr   r¡   úsingle positioning lookup©Úsubtable)	rB   r§   r¨   r©   r«   r¦   r¤   Úindexr&   )rF   Ú	subtablesr¼   r.   s       r/   Ú%_Lookup_SinglePos_get_effective_valuerØ     s­   € Øð Rð RˆàˆLÝ�D‰zŒz�Rœ\Ò)Ð)ØŒ}Ð$Ø˜DœMÔ0Ð0Ð0àØŒ;˜!ÒÐØ”:ÐÐÐØŒ[˜AÒÐØ”:˜dœmÔ2×8Ò8¸Ñ?Ô?Ô@Ð@Ð@Ð@å# FÐ5PÐQÑQÔQÐQØˆ4r1   c                 ó
  — |D ]ÿ}|�2t          |¦  «        t          j        k    s|j        �||j        j        vrŒ7|j        dk    rH|j        |j        j                             |¦  «                 }|j        }|D ]}|j	        |k    r|c c S ŒŒŠ|j        dk    rZ|j
        j                             |d¦  «        }|j        j                             |d¦  «        }	|j        |         j        |	         c S t!          | d¬¦  «        ‚d S )Nr   r¡   r   úpair positioning lookuprÔ   )rB   r§   ÚPairPosr©   r«   r¦   ÚPairSetrÖ   ÚPairValueRecordÚSecondGlyphÚ	ClassDef1r–   rJ   Ú	ClassDef2ÚClass1RecordÚClass2Recordr&   )
rF   r×   Ú
firstGlyphÚsecondGlyphr.   ÚpsÚpvrÚrecÚklass1Úklass2s
             r/   Ú(_Lookup_PairPos_get_effective_value_pairrê     s#  € ð ð Pð PˆàˆLÝ�D‰zŒz�RœZÒ'Ð'ØŒ}Ð$Ø ¤Ô!5Ð5Ð5àØŒ;˜!ÒÐØ”˜dœmÔ2×8Ò8¸ÑDÔDÔEˆBØÔ$ˆCØð ð �Ø”? kÒ1Ð1Ø�J�J�J�J�Jð 2àØŒ[˜AÒÐØ”^Ô-×1Ò1°*¸aÑ@Ô@ˆFØ”^Ô-×1Ò1°+¸qÑAÔAˆFØÔ$ VÔ,Ô9¸&ÔAÐAÐAÐAå# FÐ5NÐOÑOÔOÐOØˆ4r1   c                 ó˜  ‡
‡— t          t          j        d„ |D ¦   «         d¦  «        x|_        Št	          |¦  «        dk    s‰dz  dk    st          | d¬¦  «        ‚|j        j        Š
t          d„ |D ¦   «         ¦  «        r…t          ˆ
fd„|D ¦   «         ¦  «        rjt          j
        ‰|j        ¦  «        |_        ‰dk    r%|                      |j        d	„ |D ¦   «         ¦  «         |j                             ¦   «         |_        d S d
|_        d„ |D ¦   «         }t          | j        d„ |D ¦   «         d„ |D ¦   «         ¦  «        \  }}||j        _        ˆfd„|D ¦   «         |_        t	          |j        ¦  «        |_        t%          |¦  «        D ]Z\  }}t%          |¦  «        D ]E\  }}||         �Œt'          | | j        |         |¦  «        }	|	€t          j
        ‰¦  «        }	|	||<   ŒFŒ[|                      |j        |¦  «         |                      ||d¬¦  «         t          t          j        d„ |j        D ¦   «         d¦  «        |_        d S )Nc                 ó   — g | ]	}|j         ‘Œ
S rP   ©rª   r—   s     r/   r^   zmerge.<locals>.<listcomp>7  s   € Ð8TÐ8TÐ8TÈ1¸¼Ð8TÐ8TÐ8Tr1   r   r   iðÿÿÿrÓ   rÔ   c              3   ó,   K  — | ]}|j         d k    V — ŒdS )r   N©r¦   r]   s     r/   r[   zmerge.<locals>.<genexpr>=  s(   è è € Ð
&Ð
&˜Qˆ1Œ8�qŠ=Ð
&Ð
&Ð
&Ð
&Ð
&Ð
&r1   c              3   ó8   •K  — | ]}‰|j         j        k    V — Œd S r+   ©r©   r«   )rY   rZ   ÚcoverageGlyphss     €r/   r[   zmerge.<locals>.<genexpr>=  s>   øè è € ð /ð /Ø01ˆ˜!œ*Ô+Ò+ð/ð /ð /ð /ð /ð /r1   c                 óP   — g | ]#}|j         �|j         nt          j        ¦   «         ‘Œ$S r+   )r¤   r
   ÚValueRecordr]   s     r/   r^   zmerge.<locals>.<listcomp>G  s.   € ÐWÐWÐWÈa˜AœGÐ/�”�µVÔ5GÑ5IÔ5IÐWÐWÐWr1   r¡   c                 ó,   — g | ]}t          |¦  «        ‘ŒS rP   )r®   r]   s     r/   r^   zmerge.<locals>.<listcomp>N  s!   € Ð
6Ð
6Ð
6¨QÕ% aÑ(Ô(Ð
6Ð
6Ð
6r1   c                 ó&   — g | ]}|j         j        ‘ŒS rP   rñ   r]   s     r/   r^   zmerge.<locals>.<listcomp>R  s   € Ð5Ð5Ð5¨A�a”jÔ'Ð5Ð5Ð5r1   c                 ó   — g | ]	}|j         ‘Œ
S rP   r£   r]   s     r/   r^   zmerge.<locals>.<listcomp>R  s   € Ð7MÐ7MÐ7MÀA¸¼Ð7MÐ7MÐ7Mr1   c                 ó8   •— g | ]}t          j        ‰¦  «        ‘ŒS rP   )r
   rô   )rY   r¥   ÚvalueFormats     €r/   r^   zmerge.<locals>.<listcomp>V  s$   ø€ ÐBÐBÐB°a•&Ô$ [Ñ1Ô1ÐBÐBÐBr1   )r¦   r©   r¤   r¬   rª   ©ro   c                 ó6   — g | ]}|                      ¦   «         ‘ŒS rP   )ÚgetEffectiveFormatr]   s     r/   r^   zmerge.<locals>.<listcomp>o  s$   € Ð@Ð@Ð@°�Q×)Ò)Ñ+Ô+Ð@Ð@Ð@r1   )r   ÚintÚ__or__rª   rz   r&   r©   r«   ri   r
   rô   r¤   rk   Ú	getFormatr¦   rÊ   r,   r¬   r}   rØ   Úlookup_subtablesr€   rv   )rF   r.   rn   r«   rÉ   r   rs   Újr¼   rZ   rò   rù   s             @@r/   r5   r5   5  sÂ  øø€ å%+­C¬JÐ8TÐ8TÐPSÐ8TÑ8TÔ8TÐVWÑ%XÔ%XÐX€DÔ�{Ý�‰HŒH˜ŠMˆM˜k¨DÑ0°AÒ5Ð5Ý Ð1LÐMÑMÔMÐMð ”]Ô)€NÝ
Ð
&Ð
& #Ð
&Ñ
&Ô
&Ñ&Ô&ð ­3ð /ð /ð /ð /Ø58ð/ñ /ô /ñ ,ô ,ð õ Ô'¨°T´ZÑ@Ô@ˆŒ
Ø˜!ÒÐð ×ÒØ”
ØWÐWÐSVÐWÑWÔWñô ð ð  œ:×/Ò/Ñ1Ô1ˆÔØˆð €D„KØ
6Ð
6°#Ð
6Ñ
6Ô
6€Cõ (ØŒÐ5Ð5°Ð5Ñ5Ô5Ð7MÐ7MÈÐ7MÑ7MÔ7Mñô �N€FˆFð "€D„MÔØBÐBÐBÐB¸6ÐBÑBÔB€D„JÝ˜$œ*‘o”o€D„Oå˜vÑ&Ô&ð ð ‰	ˆˆ6Ý! &Ñ)Ô)ð 	ð 	‰HˆAˆuØ�aŒyÐ$Øõ
 6Ø˜Ô/°Ô2°Eñô ˆAð ˆyÝÔ& {Ñ3Ô3�ØˆF�1‰IˆIð	ð ×Ò�d”j &Ñ)Ô)Ð)ð ×ÒØˆcÐWð ñ ô ð õ ÝŒ
Ð@Ð@°T´ZÐ@Ñ@Ô@À!ñô €DÔÐÐr1   c                 óÒ  — t          | j        d„ |D ¦   «         d„ |D ¦   «         ¦  «        \  }}g x|_        }|D ]}t          j        ¦   «         }||_        | j        rt          j        | j        ¦  «        nd |_        | j	        rt          j        | j	        ¦  «        nd |_
        |                     |¦  «         Œ€t          |j        ¦  «        |_        t          |¦  «        D ]è\  }}	t          |¦  «        D ]Ó\  }
}t          j        ¦   «         }||_        |	|
         �	|	|
         }n"t          | | j        |         |j        |¦  «        }|€d\  }}n"t%          |dd ¦  «        }t%          |dd ¦  «        }| j        rt          j        | j        |¬¦  «        nd |_        | j	        rt          j        | j	        |¬¦  «        nd |_
        ||	|
<   ŒÔŒé|`|                      |j        |¦  «         d S )Nc                 ó0   — g | ]}d „ |j         D ¦   «         ‘ŒS )c                 ó   — g | ]	}|j         ‘Œ
S rP   ©rÞ   r]   s     r/   r^   z$merge.<locals>.<listcomp>.<listcomp>x  ó   € Ð	4Ð	4Ð	4˜Aˆ!Œ-Ð	4Ð	4Ð	4r1   ©rÝ   ©rY   rµ   s     r/   r^   zmerge.<locals>.<listcomp>x  ó*   € ÐCÐCÐC¸Ð	4Ð	4 Ô!3Ð	4Ñ	4Ô	4ÐCÐCÐCr1   c                 ó   — g | ]	}|j         ‘Œ
S rP   r  r  s     r/   r^   zmerge.<locals>.<listcomp>y  ó   € Ð*Ð*Ð* ˆÔ	Ð*Ð*Ð*r1   ©NNÚValue1ÚValue2)Úsrc)rÊ   r,   rÝ   r§   rÞ   ÚvalueFormat1r
   rô   r  ÚvalueFormat2r  r7   rz   ÚPairValueCountr}   rê   r   Ú_firstGlyphrI   r€   )rF   r.   rn   r«   rÉ   Úpvrsr¼   ræ   r   rs   r  rZ   ÚvpairÚv1Úv2s                  r/   r5   r5   s  s7  € õ (ØŒØCÐC¸sÐCÑCÔCØ*Ð* cÐ*Ñ*Ô*ñô �N€FˆFð #%Ð$€DÔ˜4Øð 	ð 	ˆÝÔ Ñ"Ô"ˆØˆŒà7=Ô7JÐT�FÔ˜vÔ2Ñ3Ô3Ð3ÐPTð 	Œ
ð 8>Ô7JÐT�FÔ˜vÔ2Ñ3Ô3Ð3ÐPTð 	Œ
ð 	�Š�CÑÔÐÐÝ˜dÔ2Ñ3Ô3€DÔå˜vÑ&Ô&ð ð ‰	ˆˆ6Ý! &Ñ)Ô)ð 	ð 	‰HˆAˆuåÔ"Ñ$Ô$ˆAØ!ˆAŒMØ�aŒyÐ$Ø˜qœ	��å@Ø˜FÔ3°AÔ6¸Ô8HÈ%ñô �ð ˆ}Ø#‘��B�Bå˜U H¨dÑ3Ô3�Ý˜U H¨dÑ3Ô3�ð Ô&ð•Ô" 6Ô#6¸BÐ?Ñ?Ô?Ð?àð ŒHð Ô&ð•Ô" 6Ô#6¸BÐ?Ñ?Ô?Ð?àð ŒHð
 ˆF�1‰IˆIð3	ð4 	Ðà
×Ò�dÔ*¨FÑ3Ô3Ð3Ð3Ð3r1   c                 ó  — t          d„ |D ¦   «         ¦  «        s
J d¦   «         ‚|                     | |d¬¦  «         t          j        ¦   «         }g |_        d|_        t          |j        d„ |D ¦   «         d„ |D ¦   «         |¬¦  «        \  }}|| j        _	        d	„ |D ¦   «         | _        t          | j        ¦  «        | _        t          || j        ¦  «        D ]\  }}||_        Œ|                     | j        |¦  «         d S )
Nc                 ó2   — g | ]}|j         ¯	|j        d k    ‘ŒS ©r   ©rÜ   ÚValueFormat2r—   s     r/   r^   z)_PairPosFormat1_merge.<locals>.<listcomp>«  ó&   € Ð7Ð7Ð7 ¨Q¬YÐ7ˆŒ˜1Ò	Ð7Ð7Ð7r1   úReport bug against fonttools.)r©   rÜ   ÚPairSetCountÚValueFormat1r  rú   r   c                 ó&   — g | ]}|j         j        ‘ŒS rP   rñ   r]   s     r/   r^   z)_PairPosFormat1_merge.<locals>.<listcomp>¼  ó   € Ð(Ð(Ð(˜qˆŒÔ	Ð(Ð(Ð(r1   c                 ó   — g | ]	}|j         ‘Œ
S rP   ©rÜ   r]   s     r/   r^   z)_PairPosFormat1_merge.<locals>.<listcomp>½  s   € Ð Ð Ð �qˆŒÐ Ð Ð r1   ©r½   c                 ó4   — g | ]}t          j        ¦   «         ‘ŒS rP   )r§   rÜ   )rY   r¥   s     r/   r^   z)_PairPosFormat1_merge.<locals>.<listcomp>Â  s   € Ð1Ð1Ð1 Q•B”J‘L”LÐ1Ð1Ð1r1   )r   rv   r§   rÜ   rÝ   r  rÊ   r,   r©   r«   rz   r  r~   r  r€   )r.   rn   rF   Úemptyr«   rÉ   r¼   rå   s           r/   Ú_PairPosFormat1_merger(  ©  s>  € ÝØ7Ð7 cÐ7Ñ7Ô7ñô ð 'ð 'à&ñ'ô 'ð 'ð
 ×ÒØØØWð ñ ô ð õ ŒJ‰LŒL€EØ€EÔØ€EÔõ (ØŒØ(Ð( CÐ(Ñ(Ô(Ø Ð ˜CÐ Ñ Ô Øð	ñ ô �N€FˆFð "€D„MÔØ1Ð1¨&Ð1Ñ1Ô1€D„LÝ˜DœLÑ)Ô)€DÔÝ˜ ¤Ñ.Ô.ð ð ‰	ˆˆrØˆŒˆà
×Ò�d”l FÑ+Ô+Ð+Ð+Ð+r1   c                 ó$  — t          | t          ¦  «        r| }n| r| j        r| j        ni }|r!t          |                     ¦   «         ¦  «        nd}g }t          |dz   ¦  «        D ]#}|                     t          ¦   «         ¦  «         Œ$|                     ¦   «         D ] \  }}||          	                    |¦  «         Œ!|€d |d<   nKt          |¦  «        x|d<   }|dd …         D ],}	|	 
                    |¦  «         |                     |	¦  «         Œ-|S )Nr   r   )rƒ   Údictr–   Úmaxrs   Úranger7   rœ   ÚitemsÚaddÚintersection_updateÚdifference_update)
r.   Ú	allGlyphsr–   rN   r­   r¥   r›   rZ   Úclass0Úss
             r/   Ú_ClassDef_invertr4  Ê  s/  € Ý�$�ÑÔð FØˆ	ˆ	à&*ÐE¨t¬~ÐE�D”N�NÀ2ˆ	Ø#,Ð3�ˆI×ÒÑÔÑÔÐ°!€Aà
€CÝ�1�q‘5‰\Œ\ð ð ˆØ�
Š
•3‘5”5ÑÔÐÐà—’Ñ!Ô!ð ð ‰ˆˆ1ØˆAŒ�
Š
�1‰Œˆˆð ÐØˆˆA‰ˆõ ˜i™.œ.Ð(ˆˆA‰�Ø�Q�R�R”ð 	(ð 	(ˆAØ×!Ò! &Ñ)Ô)Ð)Ø×$Ò$ QÑ'Ô'Ð'Ð'à€Jr1   c                 óä  — t          j        ¦   «         }i x|_        }|d u }|rd gt          | ¦  «        z  }t	          j        ¦   «         }t          | |¦  «        D ]6\  }}t          ||¦  «        }|€
|dd …         }|                     |¦  «         Œ7| 	                    ¦   «         }	|r"|	 
                    dt          ¦   «         ¦  «         t          |	¦  «        D ]\  }
}|
dk    rŒ|D ]}|
||<   ŒŒ||	fS )Nr   r   )r§   ÚClassDefr–   rz   r   Ú
Classifierr~   r4  r�   Ú
getClassesÚinsertrœ   r}   )rn   ÚallGlyphsesr.   r–   ÚallGlyphsesWasNoneÚ
classifierÚclassDefr1  ÚsetsÚclassesr   ÚclassSetr³   s                r/   Ú_ClassDef_merge_classifyrA  æ  s&  € ÝŒ;‰=Œ=€DØ!#Ð#€D„N�YØ$¨Ð,ÐØð (Ø�f�s 3™xœxÑ'ˆåÔ)Ñ+Ô+€JÝ" 3¨Ñ4Ô4ð  ð  Ñˆ�)Ý ¨)Ñ4Ô4ˆØÐØ˜˜˜”8ˆDØ×Ò˜$ÑÔÐÐØ×#Ò#Ñ%Ô%€Gàð !Ø�Š�q�#™%œ%Ñ Ô Ð å  Ñ)Ô)ð ð ‰ˆˆ8Ø�Š6ˆ6ØØð 	ð 	ˆAØˆI�a‰LˆLð	ð �ˆ=Ðr1   Fc                 ó´  — d„ |D ¦   «         }t          d„ |D ¦   «         d„ |D ¦   «         ¦  «        \  | _        }t          |¦  «        | _        g }t	          ||¦  «        D �]S\  }}d }	t          |j        j        ¦  «        }
|j        j        }g }|D �]}t          t          |¦  «        ¦  «        }||
vrµd }	|	€®t          j        ¦   «         }	g x}|	_        t          |j        ¦  «        D ]}}|rd }nat          j        ¦   «         }| j        rt#          j        | j        ¦  «        nd |_        | j        rt#          j        | j        ¦  «        nd |_        |                     |¦  «         Œ~|	}n|                     |d¦  «        }||         }|                     |¦  «         �Œ|                     |¦  «         �ŒU|}~t          d„ |D ¦   «         ¦  «        \  | _        }t          |¦  «        | _        g }t	          ||¦  «        D ]Ö\  }}|j        j        }g }|D ]«}|j        }t          j        ¦   «         }g x}|_        |D ]n}|s	|d         }n:t          t          |¦  «        ¦  «        }|                     |d¦  «        }||         }|                     t3          j        |¦  «        ¦  «         Œo|                     |¦  «         Œ¬|                     |¦  «         Œ×|}~|S )Nc                 ó   — g | ]	}|j         ‘Œ
S rP   )rá   r—   s     r/   r^   z2_PairPosFormat2_align_matrices.<locals>.<listcomp>  s   € Ð,Ð,Ð, 1�”Ð,Ð,Ð,r1   c                 ó   — g | ]	}|j         ‘Œ
S rP   )rß   r—   s     r/   r^   z2_PairPosFormat2_align_matrices.<locals>.<listcomp>  s   € Ð"Ð"Ð"˜ˆŒÐ"Ð"Ð"r1   c                 ó&   — g | ]}|j         j        ‘ŒS rP   rñ   r—   s     r/   r^   z2_PairPosFormat2_align_matrices.<locals>.<listcomp>  s   € Ð$DÐ$DÐ$D¸1 Q¤ZÔ%6Ð$DÐ$DÐ$Dr1   r   c                 ó   — g | ]	}|j         ‘Œ
S rP   )rà   r—   s     r/   r^   z2_PairPosFormat2_align_matrices.<locals>.<listcomp>5  s   € Ð7QÐ7QÐ7QÈ¸¼Ð7QÐ7QÐ7Qr1   )rA  rß   rz   ÚClass1Countr~   rœ   r©   r«   r–   ÚnextÚiterr§   rá   râ   r,  ÚClass2Countr   r
   rô   r  r  r  r7   rJ   rà   rÎ   Údeepcopy)r.   rn   r,   ÚtransparentÚmatricesr?  Únew_matricesr˜   ÚmatrixÚnullRowÚcoverageÚ	classDef1Úclass1Recordsr@  ÚexemplarGlyphÚclass2recordsr¥   Úrec2Úrec1ÚklassÚ	classDef2Úrec1oldÚoldClass2RecordsÚrec1newÚclass2Recordss                            r/   Ú_PairPosFormat2_align_matricesr^    s:  € Ø,Ð,¨Ð,Ñ,Ô,€Hõ 7Ø"Ð"˜cÐ"Ñ"Ô"Ð$DÐ$DÀÐ$DÑ$DÔ$Dñô Ñ€D„N�Gõ ˜7‘|”|€DÔØ€LÝ˜˜hÑ'Ô'ð &+ñ &+‰	ˆˆ6ØˆÝ�q”zÔ(Ñ)Ô)ˆØ”KÔ)ˆ	ØˆØð  	'ñ  	'ˆHÝ ¥ h¡¤Ñ0Ô0ˆMØ HÐ,Ð,ð
 �Ø�?Ý œoÑ/Ô/�GØ;=Ð=�M GÔ$8å" 1¤=Ñ1Ô1ð 3ð 3˜Ø&ð Ø#'˜D˜Då#%¤?Ñ#4Ô#4˜Dð $(Ô#4ð!*¥Ô 2°4Ô3DÑ EÔ EÐ Eà%)ð !œKð $(Ô#4ð!*¥Ô 2°4Ô3DÑ EÔ EÐ Eà%)ð !œKð
 &×,Ò,¨TÑ2Ô2Ð2Ð2Ø��à!Ÿš m°QÑ7Ô7�Ø˜e”}�Ø× Ò  Ñ&Ô&Ð&Ñ&Ø×Ò˜MÑ*Ô*Ð*Ñ*Ø€HØõ 7Ð7QÐ7QÈSÐ7QÑ7QÔ7QÑRÔRÑ€D„N�GÝ˜7‘|”|€DÔØ€LÝ˜˜hÑ'Ô'ð +ð +‰	ˆˆ6Ø”KÔ)ˆ	ØˆØð 	*ð 	*ˆGØ&Ô3ÐÝ”oÑ'Ô'ˆGØ35Ð5ˆM˜GÔ0Ø#ð :ð :�Øð 3Ø+¨AÔ.�D�Då$(­¨h©¬Ñ$8Ô$8�MØ%ŸMšM¨-¸Ñ;Ô;�EØ+¨EÔ2�DØ×$Ò$¥T¤]°4Ñ%8Ô%8Ñ9Ô9Ð9Ð9Ø× Ò  Ñ)Ô)Ð)Ð)Ø×Ò˜MÑ*Ô*Ð*Ð*Ø€HØà€Or1   c                 óà  — t          d„ |D ¦   «         ¦  «        s
J d¦   «         ‚|                     | |d¬¦  «         t          |j        d„ |D ¦   «         ¦  «        \  }}|| j        _        t          ||j        ¦  «        D ]#\  }}|j        j        |k    r||d         k    sJ ‚Œ$t          | ||j        ¦  «        }t          |d         ¦  «        | _
        |                     | j
        |¦  «         d S )Nc                 ó2   — g | ]}|j         ¯	|j        d k    ‘ŒS r  ©rá   r  r—   s     r/   r^   z)_PairPosFormat2_merge.<locals>.<listcomp>Q  ó&   € Ð<Ð<Ð< ¨Q¬^Ð<ˆŒ˜1Ò	Ð<Ð<Ð<r1   r  )r©   rß   rG  rà   rJ  rá   r   r  rú   c                 ó&   — g | ]}|j         j        ‘ŒS rP   rñ   r]   s     r/   r^   z)_PairPosFormat2_merge.<locals>.<listcomp>d  s   € Ð0PÐ0PÐ0PÀq°´Ô1BÐ0PÐ0PÐ0Pr1   éÿÿÿÿr   )r   rv   rÊ   r,   r©   r«   r~   r   r^  r…   rá   r€   )r.   rn   rF   r«   r¥   r˜   r×   rM  s           r/   Ú_PairPosFormat2_mergere  O  s$  € ÝØ<Ð< cÐ<Ñ<Ô<ñô ð 'ð 'à&ñ'ô 'ð 'ð ×ÒØØð	
ð ñ ô ð õ  # 6¤;Ð0PÐ0PÈCÐ0PÑ0PÔ0PÑQÔQ�I€FˆAØ!€D„MÔõ ˜C Ô!8Ñ9Ô9ð &ð &‰ˆˆ9ØŒ:Ô Ò&Ð&Ø˜	 "œÒ%Ð%Ð%Ð%øå-¨d°C¸¼ÑEÔE€Hå˜X aœ[Ñ)Ô)€DÔØ
×Ò�dÔ'¨Ñ2Ô2Ð2Ð2Ð2r1   c                 óZ  — t          t          j        d„ |D ¦   «         d¦  «        x| _        |_        t          t          j        d„ |D ¦   «         d¦  «        x| _        |_        |j        dk    rt          ||| ¦  «         n.|j        dk    rt          ||| ¦  «         nt          | d¬¦  «        ‚| `| `d}d}|j        dk    ri|j        D ]`}|j        D ]V}t          |dd ¦  «        }|�||                     ¦   «         z  }t          |d	d ¦  «        }|�||                     ¦   «         z  }ŒWŒans|j        dk    rh|j        D ]`}	|	j        D ]V}
t          |
dd ¦  «        }|�||                     ¦   «         z  }t          |
d	d ¦  «        }|�||                     ¦   «         z  }ŒWŒa||_        ||_        d S )
Nc                 ó   — g | ]	}|j         ‘Œ
S rP   ©r   r—   s     r/   r^   zmerge.<locals>.<listcomp>{  ó   € Ð1Ð1Ð1¨�Q”^Ð1Ð1Ð1r1   r   c                 ó   — g | ]	}|j         ‘Œ
S rP   ©r  r—   s     r/   r^   zmerge.<locals>.<listcomp>~  ri  r1   r   r¡   rÚ   rÔ   r  r  )r   rý   rþ   r  r   r  r  r¦   r(  re  r&   rÜ   rÝ   rI   rÿ   rá   râ   )rF   r.   rn   Úvf1Úvf2ÚpairSetÚpairValueRecordÚpv1Úpv2Úclass1RecordÚclass2Records              r/   r5   r5   x  s	  € å.4ÝŒ
Ð1Ð1¨SÐ1Ñ1Ô1°1ñ/ô /ð €FÔ˜$Ô+õ /5ÝŒ
Ð1Ð1¨SÐ1Ñ1Ô1°1ñ/ô /ð €FÔ˜$Ô+ð „{�aÒÐÝ˜d C¨Ñ0Ô0Ð0Ð0Ø	Œ˜Ò	Ð	Ý˜d C¨Ñ0Ô0Ð0Ð0å Ð1JÐKÑKÔKÐKàÐ˜VÐ0ð €CØ
€CØ„{�aÒÐØ”|ð 	+ð 	+ˆGØ#*Ô#:ð +ð +�Ý˜o¨x¸Ñ>Ô>�Ø�?Ø˜3Ÿ=š=™?œ?Ñ*�CÝ˜o¨x¸Ñ>Ô>�Ø�?Ø˜3Ÿ=š=™?œ?Ñ*�Cøð+ð	+ð 
Œ˜Ò	Ð	Ø Ô-ð 	+ð 	+ˆLØ ,Ô 9ð +ð +�Ý˜l¨H°dÑ;Ô;�Ø�?Ø˜3Ÿ=š=™?œ?Ñ*�CÝ˜l¨H°dÑ;Ô;�Ø�?Ø˜3Ÿ=š=™?œ?Ñ*�Cøð+ð €DÔØ€DÔÐÐr1   ÚMarkÚBasec           	      ó¼  ‡‡— t          d„ |D ¦   «         ¦  «        | _        t          |j        ˆfd„|D ¦   «         ˆfd„|D ¦   «         ¦  «        \  }}|t	          | ‰dz   ¦  «        _        t          |j        ˆfd„|D ¦   «         ˆfd„|D ¦   «         ¦  «        \  }}|t	          | ‰dz   ¦  «        _        g }	t          |t          |Ž ¦  «        D ]Â\  }
}d„ |D ¦   «         }t          |¦  «        st          ||d         |¬	¦  «        ‚t          j
        ¦   «         }|d         |_        d
„ |D ¦   «         }t          |¦  «        rd }n0t          j        ¦   «         }d|_        |                     ||¦  «         ||_        |	                     |¦  «         ŒÃt          j        ¦   «         }|	|_
        t'          |	¦  «        |_        t+          | ‰dz   |¦  «         g }	t          |t          |Ž ¦  «        D �]\  }
}t          |¦  «        rd }nÚ t	          t          ‰dz   ¦  «        ¦   «         }g }t+          |‰dz   |¦  «         ˆfd„|D ¦   «         }|D ]0}|                     d g| j        t'          |¦  «        z
  z  ¦  «         Œ1t          |Ž D ]Y}t          |¦  «        rd }n0t          j        ¦   «         }d|_        |                     ||¦  «         |                     |¦  «         ŒZ|	                     |¦  «         �Œ	 t	          t          ‰dz   ¦  «        ¦   «         }t+          |‰dz   |	¦  «         t+          |‰dz   t'          |	¦  «        ¦  «         t+          | ‰dz   |¦  «         d S )Nc              3   ó$   K  — | ]}|j         V — Œd S r+   )Ú
ClassCountr—   s     r/   r[   z,_MarkBasePosFormat1_merge.<locals>.<genexpr>¥  s$   è è € Ð4Ð4¨1˜!œ,Ð4Ð4Ð4Ð4Ð4Ð4r1   c                 ó@   •— g | ]}t          |‰d z   ¦  «        j        ‘ŒS ©r©   ©rI   r«   ©rY   r˜   rt  s     €r/   r^   z-_MarkBasePosFormat1_merge.<locals>.<listcomp>©  ó+   ø€ Ð;Ð;Ð;°!���D˜:Ñ%Ñ	&Ô	&Ô	-Ð;Ð;Ð;r1   c                 ó@   •— g | ]}t          |‰d z   ¦  «        j        ‘ŒS )ÚArray)rI   Ú
MarkRecordr|  s     €r/   r^   z-_MarkBasePosFormat1_merge.<locals>.<listcomp>ª  s*   ø€ Ð<Ð<Ð<°1���D˜7‘NÑ	#Ô	#Ô	.Ð<Ð<Ð<r1   r©   c                 ó@   •— g | ]}t          |‰d z   ¦  «        j        ‘ŒS rz  r{  ©rY   r˜   ru  s     €r/   r^   z-_MarkBasePosFormat1_merge.<locals>.<listcomp>°  r}  r1   c           	      óX   •— g | ]&}t          t          |‰d z   ¦  «        ‰dz   ¦  «        ‘Œ'S )r  ÚRecordrd   r‚  s     €r/   r^   z-_MarkBasePosFormat1_merge.<locals>.<listcomp>±  s5   ø€ ÐKÐKÐKÀ!�•˜˜D 7™NÑ+Ô+¨T°H©_Ñ	=Ô	=ÐKÐKÐKr1   c                 ó    — g | ]}|®|j         ‘ŒS r+   )ÚClass©rY   Úrs     r/   r^   z-_MarkBasePosFormat1_merge.<locals>.<listcomp>¸  s   € ÐEÐEÐE !°q°}�a”g°}°}°}r1   r   r_   c                 ó$   — g | ]}|€d n|j         ‘ŒS r+   )Ú
MarkAnchorr‡  s     r/   r^   z-_MarkBasePosFormat1_merge.<locals>.<listcomp>Ï  s"   € ÐTÐTÐTÀ! ! )˜$˜$°´ÐTÐTÐTr1   r   r  r„  ÚAnchorc                 ó>   •— g | ]}|€g nt          |‰dz   ¦  «        ‘ŒS )Nr‹  rd   )rY   rˆ  ru  s     €r/   r^   z-_MarkBasePosFormat1_merge.<locals>.<listcomp>æ  s<   ø€ ð ð ð ØEF�a�i��¥W¨Q°°x±Ñ%@Ô%@ðð ð r1   ÚCount)r+  rx  rÊ   r,   rI   r«   r~   r   r   r§   r€  r†  r   r‹  r¦   rk   rŠ  r7   Ú	MarkArrayrz   Ú	MarkCountÚsetattrÚextend)r.   rn   rF   rt  ru  ÚMarkCoverageGlyphsÚMarkRecordsÚBaseCoverageGlyphsÚBaseRecordsÚrecordsr³   ÚglyphRecordsÚ
allClassesrç   Ú
allAnchorsÚanchorÚarrayÚanchorsÚglyphAnchorsr˜   s      ``               r/   Ú_MarkBasePosFormat1_mergerž  ¤  sÇ  øø€ ÝÐ4Ð4°Ð4Ñ4Ô4Ñ4Ô4€D„Oå&8ØŒØ;Ð;Ð;Ð;°sÐ;Ñ;Ô;Ø<Ð<Ð<Ð<¸Ð<Ñ<Ô<ñ'ô 'Ñ#Ð˜ð
 /A…GˆD�$˜Ñ#Ñ$Ô$Ô+å&8ØŒØ;Ð;Ð;Ð;°sÐ;Ñ;Ô;ØKÐKÐKÐKÀsÐKÑKÔKñ'ô 'Ñ#Ð˜ð
 /A…GˆD�$˜Ñ#Ñ$Ô$Ô+ð €GÝÐ1µ3¸Ð3DÑEÔEð  ð  ‰ˆˆ<ØEÐE |ÐEÑEÔEˆ
õ$ ˜
Ñ#Ô#ð 	$Ý" 6°J¸q´MÀzÐRÑRÔRÐRå”-‘/”/ˆCØ" 1œˆCŒIØTÐTÀ|ÐTÑTÔTˆJÝ�zÑ"Ô"ð 7Ø��åœ™œ�Ø !�”Ø×"Ò" 6¨:Ñ6Ô6Ð6Ø#ˆCŒNØ�Š�sÑÔÐÐÝŒL‰NŒN€EØ€EÔÝ˜'‘l”l€E„OÝˆD�$˜‘. %Ñ(Ô(Ð(ð €GÝÐ1µ3¸Ð3DÑEÔEð ñ ‰ˆˆ<Ý�<Ñ Ô ð 	'ØˆCˆCà.•'�"˜d X™oÑ.Ô.Ñ0Ô0ˆCØˆGÝ�C˜ ™¨'Ñ2Ô2Ð2ðð ð ð ØJVðñ ô ˆLð "ð >ð >�Ø—’˜$˜ 4¤?µS¸±V´VÑ#;Ñ<Ñ=Ô=Ð=Ð=Ý! <Ð0ð 'ð '�
Ý˜:Ñ&Ô&ð ;Ø!�F�FåœY™[œ[�FØ$%�F”MØ×&Ò& v¨zÑ:Ô:Ð:Ø—’˜vÑ&Ô&Ð&Ð&Ø�Š�sÑÔÐÑØ'�G•B˜˜w™Ñ'Ô'Ñ)Ô)€EÝˆE�4˜(‘? GÑ,Ô,Ð,ÝˆE�4˜'‘>¥3 w¡<¤<Ñ0Ô0Ð0ÝˆD�$˜‘. %Ñ(Ô(Ð(Ð(Ð(r1   c                 óâ   — t          |j        d„ |D ¦   «         ¦  «        s"t          | d|j        d„ |D ¦   «         ¬¦  «        ‚|j        dk    rt          ||| ¦  «         d S t	          | d¬¦  «        ‚)Nc              3   ó$   K  — | ]}|j         V — Œd S r+   rï   r—   s     r/   r[   zmerge.<locals>.<genexpr>ü  ó$   è è € Ð#:Ð#:° A¤HÐ#:Ð#:Ð#:Ð#:Ð#:Ð#:r1   zmark-to-base positioning lookupc                 ó   — g | ]	}|j         ‘Œ
S rP   rï   r—   s     r/   r^   zmerge.<locals>.<listcomp>  ó   € Ð'Ð'Ð'˜a�”Ð'Ð'Ð'r1   ©rÕ   r`   ra   r   rÔ   ©r   r¦   r%   rž  r&   rÏ   s      r/   r5   r5   ú  s“   € å�d”kÐ#:Ð#:°cÐ#:Ñ#:Ô#:Ñ;Ô;ð 
Ý!ØØ6Ø”[Ø'Ð' 3Ð'Ñ'Ô'ð	
ñ 
ô 
ð 	
ð „{�aÒÐÝ! $¨¨VÑ4Ô4Ð4Ð4Ð4å Ð1RÐSÑSÔSÐSr1   c                 óæ   — t          |j        d„ |D ¦   «         ¦  «        s"t          | d|j        d„ |D ¦   «         ¬¦  «        ‚|j        dk    rt          ||| dd¦  «         d S t	          | d¬¦  «        ‚)	Nc              3   ó$   K  — | ]}|j         V — Œd S r+   rï   r—   s     r/   r[   zmerge.<locals>.<genexpr>  r¡  r1   zmark-to-mark positioning lookupc                 ó   — g | ]	}|j         ‘Œ
S rP   rï   r—   s     r/   r^   zmerge.<locals>.<listcomp>  r£  r1   r¤  r   ÚMark1ÚMark2rÔ   r¥  rÏ   s      r/   r5   r5   	  s—   € å�d”kÐ#:Ð#:°cÐ#:Ñ#:Ô#:Ñ;Ô;ð 
Ý!ØØ6Ø”[Ø'Ð' 3Ð'Ñ'Ô'ð	
ñ 
ô 
ð 	
ð „{�aÒÐÝ! $¨¨V°W¸gÑFÔFÐFÐFÐFå Ð1RÐSÑSÔSÐSr1   c                 ó`  — t          j        ¦   «         }t          j        ¦   «         |_        t          |d„ | D ¦   «         d„ | D ¦   «         ¦  «        \  }}||j        _        g x|_        }t          |Ž D ]"}|D ]}|�|                     |¦  «          nŒJ ‚Œ#t          |j        ¦  «        |_	        |S )Nc                 ó0   — g | ]}d „ |j         D ¦   «         ‘ŒS )c                 ó   — g | ]	}|j         ‘Œ
S rP   r  r]   s     r/   r^   z/_PairSet_flatten.<locals>.<listcomp>.<listcomp>  r  r1   r  r  s     r/   r^   z$_PairSet_flatten.<locals>.<listcomp>  r	  r1   c                 ó   — g | ]	}|j         ‘Œ
S rP   r  r  s     r/   r^   z$_PairSet_flatten.<locals>.<listcomp>   r  r1   )
r§   rÜ   r©   rÊ   r«   rÝ   r~   r7   rz   r  )rn   r,   r.   r«   rÉ   r  rs   rZ   s           r/   Ú_PairSet_flattenr¯    sÓ   € ÝŒ:‰<Œ<€DÝ”K‘M”M€D„Mõ (ØØCÐC¸sÐCÑCÔCØ*Ð* cÐ*Ñ*Ô*ñô �N€FˆFð "€D„MÔØ"$Ð$€DÔ˜4Ý�v�,ð ð ˆØð 	ð 	ˆAØˆ}Ø—’˜A‘”�Ø�ð ð ˆLð õ ˜dÔ2Ñ3Ô3€DÔà€Kr1   c                 ó(  ‡— t          d„ | D ¦   «         ¦  «        s
J d¦   «         ‚t          j        ¦   «         }d|_        t          j        ¦   «         |_        t          t          j        d„ | D ¦   «         d¦  «        |_        t          t          j        d„ | D ¦   «         d¦  «        |_	        t          ‰d„ | D ¦   «         d„ | D ¦   «         ¦  «        \  }}||j        _        ˆfd	„t          |Ž D ¦   «         |_        t          |j        ¦  «        |_        |S )
Nc                 ó2   — g | ]}|j         ¯	|j        d k    ‘ŒS r  r  r—   s     r/   r^   z<_Lookup_PairPosFormat1_subtables_flatten.<locals>.<listcomp>3  r  r1   r  r   c                 ó   — g | ]	}|j         ‘Œ
S rP   rh  r—   s     r/   r^   z<_Lookup_PairPosFormat1_subtables_flatten.<locals>.<listcomp>9  ó   € Ð+HÐ+HÐ+H¸q¨A¬NÐ+HÐ+HÐ+Hr1   r   c                 ó   — g | ]	}|j         ‘Œ
S rP   rk  r—   s     r/   r^   z<_Lookup_PairPosFormat1_subtables_flatten.<locals>.<listcomp>:  r³  r1   c                 ó&   — g | ]}|j         j        ‘ŒS rP   rñ   r]   s     r/   r^   z<_Lookup_PairPosFormat1_subtables_flatten.<locals>.<listcomp>>  s   € Ð.Ð.Ð. QˆqŒzÔ Ð.Ð.Ð.r1   c                 ó   — g | ]	}|j         ‘Œ
S rP   r$  r]   s     r/   r^   z<_Lookup_PairPosFormat1_subtables_flatten.<locals>.<listcomp>>  s   € Ð0HÐ0HÐ0H¸q°´Ð0HÐ0HÐ0Hr1   c                 óD   •— g | ]}t          d „ |D ¦   «         ‰¦  «        ‘ŒS )c                 ó   — g | ]}|®|‘ŒS r+   rP   r]   s     r/   r^   zG_Lookup_PairPosFormat1_subtables_flatten.<locals>.<listcomp>.<listcomp>C  s   € Ð=Ð=Ð= ¨q¨}˜!¨}¨}¨}r1   )r¯  )rY   rs   r,   s     €r/   r^   z<_Lookup_PairPosFormat1_subtables_flatten.<locals>.<listcomp>B  sB   ø€ ð ð ð àõ 	Ð=Ð= VÐ=Ñ=Ô=¸tÑDÔDðð ð r1   )r   r§   rÛ   r¦   r©   r   rý   rþ   r   r  rÊ   r«   r~   rÜ   rz   r  )rn   r,   r.   r«   rÉ   s    `   r/   Ú(_Lookup_PairPosFormat1_subtables_flattenr¹  1  s5  ø€ ÝØ7Ð7 cÐ7Ñ7Ô7ñô ð 'ð 'à&ñ'ô 'ð 'õ Œ:‰<Œ<€DØ€D„KÝ”K‘M”M€D„MÝ�sœzÐ+HÐ+HÀCÐ+HÑ+HÔ+HÈ!ÑLÔL€DÔÝ�sœzÐ+HÐ+HÀCÐ+HÑ+HÔ+HÈ!ÑLÔL€DÔõ (ØÐ.Ð.¨#Ð.Ñ.Ô.Ð0HÐ0HÀCÐ0HÑ0HÔ0Hñô �N€FˆFð "€D„MÔðð ð ð å˜6�lðñ ô €D„Lõ ˜DœLÑ)Ô)€DÔØ€Kr1   c                 ó"  — t          d„ | D ¦   «         ¦  «        s
J d¦   «         ‚t          j        ¦   «         }d|_        t          j        ¦   «         |_        t          t          j        d„ | D ¦   «         d¦  «        |_        t          t          j        d„ | D ¦   «         d¦  «        |_	        t          |d„ | D ¦   «         ¦  «        \  }}||j        _        t          || |d¬	¦  «        }g x}|_        t          |Ž D ]–}t          j        ¦   «         }|                     |¦  «         g |_        |j        }t          t#          d
„ |D ¦   «         ¦  «        Ž D ]=}	t%          t'          d„ |	D ¦   «         ¦  «        ¦  «        }
|                     |
¦  «         Œ>Œ—|S )Nc                 ó2   — g | ]}|j         ¯	|j        d k    ‘ŒS r  ra  r—   s     r/   r^   z<_Lookup_PairPosFormat2_subtables_flatten.<locals>.<listcomp>L  rb  r1   r  r¡   c                 ó   — g | ]	}|j         ‘Œ
S rP   rh  r—   s     r/   r^   z<_Lookup_PairPosFormat2_subtables_flatten.<locals>.<listcomp>R  r³  r1   r   c                 ó   — g | ]	}|j         ‘Œ
S rP   rk  r—   s     r/   r^   z<_Lookup_PairPosFormat2_subtables_flatten.<locals>.<listcomp>S  r³  r1   c                 ó&   — g | ]}|j         j        ‘ŒS rP   rñ   r]   s     r/   r^   z<_Lookup_PairPosFormat2_subtables_flatten.<locals>.<listcomp>V  ó   € Ð)IÐ)IÐ)IÀ¨!¬*Ô*;Ð)IÐ)IÐ)Ir1   T)rL  c              3   ó$   K  — | ]}|j         V — Œd S r+   )râ   r‡  s     r/   r[   z;_Lookup_PairPosFormat2_subtables_flatten.<locals>.<genexpr>a  s$   è è € Ð;Ð;°˜aœnÐ;Ð;Ð;Ð;Ð;Ð;r1   c              3   ó   K  — | ]}|®|V — Œ	d S r+   rP   ©rY   Úcs     r/   r[   z;_Lookup_PairPosFormat2_subtables_flatten.<locals>.<genexpr>b  s"   è è € Ð=Ð= !¨q¨}˜A¨}¨}¨}¨}Ð=Ð=r1   )r   r§   rÛ   r¦   r©   r   rý   rþ   r   r  rÊ   r«   r^  rá   r~   r7   râ   r…   rH  rI  )rn   r,   r.   r«   r¥   rM  rO  ÚrowsÚrowÚcolsÚcols              r/   Ú(_Lookup_PairPosFormat2_subtables_flattenrÈ  J  s¦  € ÝØ<Ð< cÐ<Ñ<Ô<ñô ð 'ð 'à&ñ'ô 'ð 'õ Œ:‰<Œ<€DØ€D„KÝ”K‘M”M€D„MÝ�sœzÐ+HÐ+HÀCÐ+HÑ+HÔ+HÈ!ÑLÔL€DÔÝ�sœzÐ+HÐ+HÀCÐ+HÑ+HÔ+HÈ!ÑLÔL€DÔõ # 4Ð)IÐ)IÀSÐ)IÑ)IÔ)IÑJÔJ�I€FˆAØ!€D„MÔå-¨d°C¸È4ÐPÑPÔP€Hà!#Ð#€FˆTÔÝ�X�ð ð ˆÝŒoÑÔˆØ�Š�cÑÔÐØˆÔØÔˆÝ�Ð;Ð;°dÐ;Ñ;Ô;Ñ;Ô;Ð<ð 	ð 	ˆDÝ•tÐ=Ð= tÐ=Ñ=Ô=Ñ=Ô=Ñ>Ô>ˆCØ�JŠJ�s‰OŒOˆOˆOð	ð €Kr1   c                 ó¸  — t          | ¦  «        } t          | ¦  «        }d}||k     r-| |         j        dk    r|dz  }||k     r| |         j        dk    °t          | d|…         |¦  «        g| d|…<   t          | ¦  «        }|}|dk    r3| |dz
           j        dk    r|dz  }|dk    r| |dz
           j        dk    °t	          | |d…         |¦  «        g| |d…<   | S )zÍMerge multiple Format1 subtables at the beginning of lst,
    and merge multiple consecutive Format2 subtables that have the same
    Class2 (ie. were split because of offset overflows).  Returns new list.r   r   Nr¡   )r…   rz   r¦   r¹  rÈ  )rn   r,   r˜   r   s       r/   Ú&_Lookup_PairPos_subtables_canonicalizerÊ  h  sü   € õ ˆs‰)Œ)€CåˆC‰Œ€AØ	€AØ
ˆaŠ%ˆ%�C˜”F”M QÒ&Ð&Ø	ˆQ‰ˆð ˆaŠ%ˆ%�C˜”F”M QÒ&Ð&å7¸¸B¸Q¸B¼ÀÑFÔFÐG€Cˆˆˆ�GåˆC‰Œ€AØ	€AØ
ˆaŠ%ˆ%�C˜˜A™”JÔ%¨Ò*Ð*Ø	ˆQ‰ˆð ˆaŠ%ˆ%�C˜˜A™”JÔ%¨Ò*Ð*å7¸¸A¸B¸B¼ÀÑFÔFÐG€Cˆˆˆ�Gà€Jr1   c                 ó�  — t          |d„ | D ¦   «         d ¦  «        \  }}t          |¦  «        }t          j        ¦   «         }d|_        ||_        t          j        ¦   «         |_        ||j        _        ||_        d g|z  |_	        | D ]½}|j        dk    rH|j	        }|j        j        D ]3}	| 
                    |	¦  «        }
t          j        |¦  «        |j	        |
<   Œ4ŒU|j        dk    r]t          |j        j        ¦  «        D ]C\  }}	|j	        |         }| 
                    |	¦  «        }
t          j        |¦  «        |j	        |
<   ŒDŒ¾|gS )Nc                 ó&   — g | ]}|j         j        ‘ŒS rP   rñ   r]   s     r/   r^   z7_Lookup_SinglePos_subtables_flatten.<locals>.<listcomp>~  r¿  r1   r¡   r   )rÊ   rz   r§   r¨   r¦   rª   r©   r«   r¬   r¤   rÖ   rÎ   rK  r}   )rn   r,   Úmin_inclusive_rec_formatr«   r¥   Ú
num_glyphsÚnewÚ	singlePosÚval_recÚgnamer   r  s               r/   Ú#_Lookup_SinglePos_subtables_flattenrÓ  }  sI  € Ý" 4Ð)IÐ)IÀSÐ)IÑ)IÔ)IÈ4ÑPÔP�I€FˆAÝ�V‘”€JÝ
Œ,‰.Œ.€CØ€C„JØ.€C„OÝ”;‘=”=€C„LØ €C„LÔØ€C„NØ�˜Ñ#€C„IØð 
6ð 
6ˆ	ØÔ˜qÒ Ð Ø”oˆGØ"Ô+Ô2ð 6ð 6�Ø—L’L Ñ'Ô'�Ý#œ}¨WÑ5Ô5�”	˜!‘�ð6ð Ô Ò"Ð"Ý% iÔ&8Ô&?Ñ@Ô@ð 6ð 6‘��5Ø#œ/¨!Ô,�Ø—L’L Ñ'Ô'�Ý#œ}¨WÑ5Ô5�”	˜!‘�øØˆ5€Lr1   c                 ó   — t          | j        d„ |D ¦   «         d„ |D ¦   «         ¦  «        \  }}d|_        t          j        ¦   «         |_        ||j        _        g |_        |D ]w}t          j        ¦   «         }t          j        ¦   «         |_        d|j        _        t          j        ¦   «         |_	        d|j	        _        |j         
                    |¦  «         Œx|                      |j        |¦  «         t          |j        ¦  «        |_        d S )Nc                 ó&   — g | ]}|j         j        ‘ŒS rP   rñ   r—   s     r/   r^   zmerge.<locals>.<listcomp>š  r"  r1   c                 ó   — g | ]	}|j         ‘Œ
S rP   )ÚEntryExitRecordr—   s     r/   r^   zmerge.<locals>.<listcomp>›  s   € Ð(Ð(Ð(˜qˆÔ	Ð(Ð(Ð(r1   r   )rÊ   r,   r¦   r§   r©   r«   r×  r‹  ÚEntryAnchorÚ
ExitAnchorr7   r€   rz   ÚEntryExitCount)rF   r.   rn   r«   rÉ   r¥   rç   s          r/   r5   r5   •  sý   € õ (ØŒØ(Ð( CÐ(Ñ(Ô(Ø(Ð( CÐ(Ñ(Ô(ñô �N€FˆFð €D„KÝ”K‘M”M€D„MØ!€D„MÔØ€DÔØð )ð )ˆÝÔ Ñ"Ô"ˆÝœ)™+œ+ˆŒØ!"ˆŒÔÝœ™œˆŒØ !ˆŒÔØÔ×#Ò# CÑ(Ô(Ð(Ð(Ø
×Ò�dÔ*¨FÑ3Ô3Ð3Ý˜dÔ2Ñ3Ô3€DÔÐÐr1   c                 ó²   — t          d„ |D ¦   «         ¦  «        rd |_        t          d„ |D ¦   «         ¦  «        rd |_        |                      ||¦  «         d S )Nc              3   ó(   K  — | ]}|j         d u V — Œd S r+   )rØ  ©rY   Úmasters     r/   r[   zmerge.<locals>.<genexpr>¯  s*   è è € Ð
8Ð
8¨&ˆ6Ô Ð%Ð
8Ð
8Ð
8Ð
8Ð
8Ð
8r1   c              3   ó(   K  — | ]}|j         d u V — Œd S r+   )rÙ  rÝ  s     r/   r[   zmerge.<locals>.<genexpr>±  s*   è è € Ð
7Ð
7¨ˆ6Ô Ð$Ð
7Ð
7Ð
7Ð
7Ð
7Ð
7r1   )ri   rØ  rÙ  rv   rÏ   s      r/   r5   r5   ­  sk   € å
Ð
8Ð
8°CÐ
8Ñ
8Ô
8Ñ8Ô8ð  ØˆÔÝ
Ð
7Ð
7°3Ð
7Ñ
7Ô
7Ñ7Ô7ð ØˆŒØ
×Ò˜˜cÑ"Ô"Ð"Ð"Ð"r1   c                 ó^   — | pg D ]'}t          |t          ¦  «        rt          ||¦  «         Œ(d S r+   )rƒ   Ú_BEYOND64K_GPOS_TYPESr   )r×   ÚextendedÚsts      r/   Ú_convert_beyond64k_GPOSrä  Ê  sC   € Øˆo˜2ð 2ð 2ˆÝ�bÕ/Ñ0Ô0ð 	2Ý# B¨Ñ1Ô1Ð1øð2ð 2r1   c                 ót	  ‡ ‡‡— d„ |D ¦   «         x}‰ _         t          t          ||¦  «        ¦  «        ||j        fgz   D ]Â\  }}|sŒ|d         j        j                             d¦  «        r•t          d„ |D ¦   «         ¦  «        st          ‰ dd„ |D ¦   «         ¬¦  «        ‚t          d„ |D ¦   «         ¦  «        st          ‰ ¦  «        ‚|d         j	        |_
        d„ |D ¦   «         }|d d …= |                     |¦  «         ŒÃ‰ j                             ¦   «         p!t          d	„ |j        g|z   D ¦   «         ¦  «        }|r*t          |j        d
¦  «         |D ]}t          |d
¦  «         Œ|j        o$t!          |j        d         t"          j        ¦  «        }|r5t'          |j        ‰ j        ¦  «        |_        ˆ fd„|D ¦   «         x}‰ _         n±|j        o$t!          |j        d         t"          j        ¦  «        }	|	rƒd„ |D ¦   «         Št+          ˆfd„‰D ¦   «         ¦  «        sZd„ |D ¦   «         }
t-          t.          |
¦  «        Št1          |j        ‰ j        ‰¦  «        |_        ˆ ˆfd„|D ¦   «         x}‰ _         d}nd
}‰                      |j        |¦  «         t5          |j        ¦  «        |_        |�rit5          |j        ¦  «        dk    r|j        d         j        dk    sJ ‚|j        d         j        j        s*|j                             d¦  «         |xj        dz  c_        t5          |j        ¦  «        dk    r|j        d         j        dk    sJ ‚|j        d         j        j        s*|j                             d¦  «         |xj        dz  c_        ‰ j        j          !                    dtE          ¦   «         ¬¦  «        }|dk    rStF           $                    d¦  «         tK          ‰ j        ||j        ¦  «        |_        t5          |j        ¦  «        |_        nh|	rf|rd|j        d         }|j        j        }d„ t          ||j&        ¦  «        D ¦   «         }tO          |‰ j         (                    ¦   «         ¦  «        |_        ‰  )                    ||ddg¬¦  «         |rt          |j        d¦  «         ‰ ` d S )Nc                 ó   — g | ]	}|j         ‘Œ
S rP   )ÚSubTabler—   s     r/   r^   zmerge.<locals>.<listcomp>Ò  s   € Ð*CÐ*CÐ*C¸!¨1¬:Ð*CÐ*CÐ*Cr1   r   Ú	Extensionc                 ó   — g | ]	}|j         ‘Œ
S rP   ©rj   ©rY   rã  s     r/   r^   zmerge.<locals>.<listcomp>Ù  s   € Ð8Ð8Ð8¨b˜Rœ\Ð8Ð8Ð8r1   c                 ó&   — g | ]}|j         j        ‘ŒS rP   )rj   r6   rë  s     r/   r^   zmerge.<locals>.<listcomp>Ý  s   € Ð=Ð=Ð=°2˜œÔ.Ð=Ð=Ð=r1   r_   c                 ó   — g | ]	}|j         ‘Œ
S rP   )ÚExtensionLookupTyperë  s     r/   r^   zmerge.<locals>.<listcomp>ß  s   € ÐBÐBÐB¸˜RÔ3ÐBÐBÐBr1   c                 ó   — g | ]	}|j         ‘Œ
S rP   )ÚExtSubTablerë  s     r/   r^   zmerge.<locals>.<listcomp>â  s   € Ð4Ð4Ð4¨"�r”~Ð4Ð4Ð4r1   c              3   ó¬   K  — | ]O}|D ]J}t          |t          ¦  «        ¯|j        t          |t          j        t          j        f¦  «        rd ndv V — ŒKŒPdS ))é   é   )r¡   N)rƒ   rá  r¦   r§   r¨   rÛ   )rY   Ústsrã  s      r/   r[   zmerge.<locals>.<genexpr>é  s‚   è è € ð 8ð 8àØð8ð 8ð Ý�bÕ/Ñ0Ô0ð	8Ø
Œ	¥
¨2µ´½b¼jÐ/IÑ JÔ JÐT�f�fÐPTÐUð8ð 8ð 8ð 8ð 8ð 8ð 8r1   Fc                 ó:   •— g | ]}t          |‰j        ¦  «        ‘ŒS rP   )rÊ  r,   )rY   rã  rF   s     €r/   r^   zmerge.<locals>.<listcomp>ý  s3   ø€ ð /
ð /
ð /
ØHJÕ2°2°v´{ÑCÔCð/
ð /
ð /
r1   c                 ó,   — g | ]}t          |¦  «        ‘ŒS rP   ry   rë  s     r/   r^   zmerge.<locals>.<listcomp>  s   € Ð8Ð8Ð8¨�C ™GœGÐ8Ð8Ð8r1   c                 ó(   •— g | ]}|‰d          k    ‘ŒS r  rP   )rY   ÚnumsÚnumSubtabless     €r/   r^   zmerge.<locals>.<listcomp>  s"   ø€ ÐIÐIÐI°D˜ ¨Q¤Ò/ÐIÐIÐIr1   c                 ó&   — g | ]}|D ]	}|j         ‘Œ
ŒS rP   rí   )rY   rã  Úts      r/   r^   zmerge.<locals>.<listcomp>  s'   € Ð"QÐ"QÐ"Q°RÈbÐ"QÐ"QÈ 1¤=Ð"QÐ"QÐ"QÐ"Qr1   c                 ó<   •— g | ]}t          |‰j        ‰¦  «        ‘ŒS rP   )rÓ  r,   )rY   rã  rF   Úmirfs     €€r/   r^   zmerge.<locals>.<listcomp>  s7   ø€ ð 7ð 7ð 7àõ 8¸¸F¼KÈÑNÔNð7ð 7ð 7r1   Tr   rd  r¡   z0fontTools.otlLib.optimize.gpos:COMPRESSION_LEVELr%  zCompacting GPOS...c                 ó   — i | ]\  }}||“Œ	S rP   rP   )rY   rÒ  Ú	valRecords      r/   r´   zmerge.<locals>.<dictcomp>8  s+   € ð 
ð 
ð 
Ù!1 ¨	ˆE�9ð
ð 
ð 
r1   rç  ÚSubTableCountrú   )*r   r…   r~   rç  rj   r6   Ú
startswithr   r$   rî  Ú
LookupTyper‘  r,   ÚhasExtendedGlyphIDsÚanyrä  rƒ   r§   rÛ   rÊ  r¨   ri   r   r   rÓ  r€   rz   r   r¦   r©   r«   ÚpopÚcfgrJ   r   ÚlogÚinfor   r¤   r   rÃ   rv   )rF   r.   rn   r×   r˜   rô  Únew_stsrâ  Ú	isPairPosÚisSinglePosÚvalueFormatListÚ	flattenedÚlevelÚsinglePosTabler«   ÚsinglePosMappingrý  rù  s   `               @@r/   r5   r5   Ð  sj  øøø€ à*CÐ*C¸sÐ*CÑ*CÔ*CÐC€I�Ô'õ •s˜3 	Ñ*Ô*Ñ+Ô+°°d´mÐ/DÐ.EÑEð  ð  ‰ˆˆ3Øð 	ØØˆqŒ6ÔÔ$×/Ò/°Ñ<Ô<ð 	 ÝÐ8Ð8°CÐ8Ñ8Ô8Ñ9Ô9ð Ý,ØØ(Ø=Ð=¸Ð=Ñ=Ô=ðñ ô ð õ
 ÐBÐB¸cÐBÑBÔBÑCÔCð 5Ý,¨VÑ4Ô4Ð4Ø˜qœ6Ô5ˆAŒLØ4Ð4°Ð4Ñ4Ô4ˆGØ�A�A�A�Ø�JŠJ�wÑÔÐøð
 Œ{×.Ò.Ñ0Ô0ð µCð 8ð 8à”M�? YÑ.ð8ñ 8ô 8ñ 5ô 5€Hð ð 0Ý ¤¨uÑ5Ô5Ð5Øð 	0ð 	0ˆCÝ# C¨Ñ/Ô/Ð/Ð/à”ÐJ¥*¨T¬]¸1Ô-=½r¼zÑ"JÔ"J€Iàð "õ ?ØŒM˜6œ;ñ
ô 
ˆŒð/
ð /
ð /
ð /
ØNWð/
ñ /
ô /
ð 	
ˆ	�FÔ+Ð+ð ”mÐR­
°4´=ÀÔ3CÅRÄ\Ñ(RÔ(RˆØð 	"Ø8Ð8¨iÐ8Ñ8Ô8ˆLÝÐIÐIÐIÐI¸LÐIÑIÔIÑJÔJð "ð #RÐ"Q¸9Ð"QÑ"QÔ"Q�å�c ?Ñ3Ô3�Ý CØ”M 6¤;°ñ!ô !�”ð7ð 7ð 7ð 7ð 7à'ð7ñ 7ô 7ð �	˜FÔ3ð !�	�	à!�	à
×Ò�d”m YÑ/Ô/Ð/Ý˜Tœ]Ñ+Ô+€DÔàñ $
å�4”=Ñ!Ô! QÒ&Ð&¨4¬=¸Ô+;Ô+BÀaÒ+GÐ+GÐ+GÐ+GØŒ}˜QÔÔ(Ô/ð 	$ØŒM×Ò˜aÑ Ô Ð ØÐÔ !Ñ#ÐÔõ �4”=Ñ!Ô! QÒ&Ð&¨4¬=¸Ô+<Ô+CÀqÒ+HÐ+HÐ+HÐ+HØŒ}˜RÔ Ô)Ô0ð 	$ØŒM×Ò˜bÑ!Ô!Ð!ØÐÔ !Ñ#ÐÔð ””×#Ò#Ø>Ý/Ñ1Ô1ð $ñ 
ô 
ˆð �AŠ:ˆ:Ý�HŠHÐ)Ñ*Ô*Ð*Ý,¨V¬[¸%ÀÄÑOÔOˆDŒMÝ!$ T¤]Ñ!3Ô!3ˆDÔøà	ð 

˜ð 

Øœ qÔ)ˆØÔ(Ô/ˆð
ð 
Ý58¸ÀÔAUÑ5VÔ5Vð
ñ 
ô 
Ðõ 'Ø˜fœk×<Ò<Ñ>Ô>ñ
ô 
ˆŒð ×Ò˜˜c¨J¸Ð+HÐÑIÔIÐIð
 ð 5Ý ¤¨tÑ4Ô4Ð4àÐÐÐr1   c                   ó   — e Zd ZdZd„ ZdS )ÚInstancerMergerzLA merger that takes multiple master fonts, and instantiates
    an instance.c                 óŒ   — t                                | |¦  «         || _        || _        |                     |¦  «        | _        d S r+   )r)   r0   ÚmodelÚlocationÚgetMasterScalarsÚmasterScalars)r.   r,   r  r  s       r/   r0   zInstancerMerger.__init__R  s@   € Ý�Š˜˜dÑ#Ô#Ð#ØˆŒ
Ø ˆŒØ"×3Ò3°HÑ=Ô=ˆÔÐÐr1   N©r6   r�   rŽ   Ú__doc__r0   rP   r1   r/   r  r  N  s-   € € € € € ðð ð>ð >ð >ð >ð >r1   r  c                 ó¤   — |j         dk    sJ ‚d„ |D ¦   «         }| j        }| j        }t          |                     ||¦  «        ¦  «        |_        d S )Nr   c                 ó   — g | ]	}|j         ‘Œ
S rP   ©Ú
Coordinate©rY   Úas     r/   r^   zmerge.<locals>.<listcomp>\  s   € Ð(Ð(Ð(˜qˆaŒlÐ(Ð(Ð(r1   )r¦   r  r  r   ÚinterpolateFromValuesAndScalarsr  )rF   r.   rn   ÚCoordsr  r  s         r/   r5   r5   Y  s_   € àŒ;˜!ÒÐÐÐØ(Ð( CÐ(Ñ(Ô(€FØŒL€EØÔ(€MÝØ×-Ò-¨f°mÑDÔDñô €D„O€O€Or1   c                 ó  — |j         dk    sJ ‚d„ |D ¦   «         }d„ |D ¦   «         }| j        }| j        }t          |                     ||¦  «        ¦  «        |_        t          |                     ||¦  «        ¦  «        |_        d S )Nr   c                 ó   — g | ]	}|j         ‘Œ
S rP   ©ÚXCoordinater  s     r/   r^   zmerge.<locals>.<listcomp>g  ó   € Ð*Ð*Ð* ˆqŒ}Ð*Ð*Ð*r1   c                 ó   — g | ]	}|j         ‘Œ
S rP   ©ÚYCoordinater  s     r/   r^   zmerge.<locals>.<listcomp>h  r&  r1   )r¦   r  r  r   r   r%  r)  )rF   r.   rn   ÚXCoordsÚYCoordsr  r  s          r/   r5   r5   d  sœ   € àŒ;˜!ÒÐÐÐØ*Ð* cÐ*Ñ*Ô*€GØ*Ð* cÐ*Ñ*Ô*€GØŒL€EØÔ(€MÝØ×-Ò-¨g°}ÑEÔEñô €DÔõ Ø×-Ò-¨g°}ÑEÔEñô €DÔÐÐr1   c                 óü   ‡— | j         }| j        }dD ]i\  Š}t          ||¦  «        rJ ‚t          |‰¦  «        rBˆfd„|D ¦   «         }t          |                     ||¦  «        ¦  «        }t          |‰|¦  «         Œjd S )N©)ÚXAdvanceÚ
XAdvDevice)ÚYAdvanceÚ
YAdvDevice)Ú
XPlacementÚ
XPlaDevice)Ú
YPlacementÚ
YPlaDevicec                 ó2   •— g | ]}t          |‰d ¦  «        ‘ŒS r  rd   ©rY   r  Únames     €r/   r^   zmerge.<locals>.<listcomp>�  s%   ø€ Ð7Ð7Ð7¨a•g˜a  qÑ)Ô)Ð7Ð7Ð7r1   )r  r  rh   r   r   r�  )	rF   r.   rn   r  r  Ú	tableNamers   rr   r8  s	           @r/   r5   r5   s  s«   ø€ àŒL€EØÔ(€Mðð 'ð '‰ˆˆiõ ˜4 Ñ+Ô+Ð+Ð+Ð+å�4˜ÑÔð 	'Ø7Ð7Ð7Ð7°3Ð7Ñ7Ô7ˆFÝØ×5Ò5°f¸mÑLÔLñô ˆEõ �D˜$ Ñ&Ô&Ð&øð'ð 'r1   c                   ó   — e Zd ZdZdd„ZdS )ÚMutatorMergerzËA merger that takes a variable font, and instantiates
    an instance.  While there's no "merging" to be done per se,
    the operation can benefit from many operations that the
    aligning merger does.Tc                 óX   — t                                | |¦  «         || _        || _        d S r+   )r)   r0   Ú	instancerÚdeleteVariations)r.   r,   r=  r>  s       r/   r0   zMutatorMerger.__init__“  s+   € Ý�Š˜˜dÑ#Ô#Ð#Ø"ˆŒØ 0ˆÔÐÐr1   N©Tr  rP   r1   r/   r;  r;  �  s2   € € € € € ðð ð
1ð 1ð 1ð 1ð 1ð 1r1   r;  c                 óF  — |d         j                              ¦   «         |_         |j        dk    rd S | j        }|j        }|�|j        dk    rd S | j        r|`|r7|j        dz  |j        z   }t          ||         ¦  «        }|xj
        |z  c_
        | j        r	d|_        d S d S )Nr   rò  é €  é   r   )rA   rÎ   r¦   r=  ÚDeviceTableÚDeltaFormatr>  Ú	StartSizeÚEndSizer   r  )rF   r.   rn   r=  ÚdevÚvaridxÚdeltas          r/   r5   r5   ™  sÃ   € ð ˜”F”O×(Ò(Ñ*Ô*€D„Mà„{�aÒÐØˆàÔ €IØ
Ô
€CØ
€˜3œ?¨fÒ4Ð4ØˆØÔð ØÐØ
ð !Ø”- 2Ñ%¨¬Ñ4ˆÝ˜	 &Ô)Ñ*Ô*ˆØˆŒ˜5Ñ ˆŒàÔð ØˆŒˆˆðð r1   c                 ó"  — |d         j                              ¦   «         |_         t          |dd ¦  «        }|�|j        dk    rd S |j        dz  |j        z   }|xj        t          | j        |         ¦  «        z  c_        | j	        r	d |_
        d S d S )Nr   rC  rA  rB  )rA   rÎ   rI   rD  rE  rF  r¤   r   r=  r>  rC  )rF   r.   rn   rG  rH  s        r/   r5   r5   °  s˜   € à˜”F”O×(Ò(Ñ*Ô*€D„MÝ
�$˜ tÑ
,Ô
,€CØ
€{�c”o¨Ò/Ð/ØˆØŒm˜rÑ! S¤[Ñ0€FØ€J„J•'˜&Ô*¨6Ô2Ñ3Ô3Ñ3€J„JØÔð  ØˆÔÐÐð ð  r1   c           	      ó  ‡— |d         j                              ¦   «         ‰_         ‰j        dk    rd S | j        }dD ]ž}|dz   }t	          ‰|¦  «        sŒt          ‰|¦  «        }|�|j        dk    rŒ6| j        rt          ‰|¦  «         |€ŒP|j	        dz  |j
        z   }t          ||         ¦  «        }|dz   }	t          ‰|	t          ‰|	¦  «        |z   ¦  «         ŒŸ| j        r$t          ˆfd„dD ¦   «         ¦  «        sd	‰_        d S d S d S )
Nr   rò  ÚXYrC  rA  rB  r  c              3   ó@   •K  — | ]}t          ‰|d z   d¦  «        V — ŒdS )rC  Nrd   )rY   Úaxisr.   s     €r/   r[   zmerge.<locals>.<genexpr>Ö  sE   øè è € ð +ð +Ø6:���d˜]Ñ*¨DÑ1Ô1ð+ð +ð +ð +ð +ð +r1   r   )rA   rÎ   r¦   r=  rh   rI   rD  r>  ÚdelattrrE  rF  r   r�  r  )
rF   r.   rn   r=  rZ   r9  rG  rH  rI  r<   s
    `        r/   r5   r5   ¼  sb  ø€ ð ˜”F”O×(Ò(Ñ*Ô*€D„Mà„{�aÒÐØˆàÔ €IØð 9ð 9ˆØ˜Ñ%ˆ	Ý�t˜YÑ'Ô'ð 	ØÝ�d˜IÑ&Ô&ˆØˆ?˜sœ°&Ò8Ð8ØØÔ"ð 	%Ý�D˜)Ñ$Ô$Ð$Øˆ;ØØ”- 2Ñ%¨¬Ñ4ˆÝ˜	 &Ô)Ñ*Ô*ˆà�<ÑˆÝ��d�G D¨$Ñ/Ô/°%Ñ7Ñ8Ô8Ð8Ð8àÔð ¥sð +ð +ð +ð +Ø>Bð+ñ +ô +ñ (ô (ð ð ˆŒˆˆðð ð ð r1   c           
      ó’  — |d         j                              ¦   «         |_         | j        }dD ]˜\  }}t          ||¦  «        sŒt	          ||¦  «        }|�|j        dk    rŒ4| j        rt          ||¦  «         |€ŒN|j        dz  |j	        z   }t          ||         ¦  «        }t          ||t	          ||d¦  «        |z   ¦  «         Œ™d S )Nr   r-  rA  rB  )rA   rÎ   r=  rh   rI   rD  r>  rO  rE  rF  r   r�  )	rF   r.   rn   r=  r8  r9  rG  rH  rI  s	            r/   r5   r5   Ü  sì   € ð ˜”F”O×(Ò(Ñ*Ô*€D„MàÔ €Iðð <ð <‰ˆˆiõ �t˜YÑ'Ô'ð 	ØÝ�d˜IÑ&Ô&ˆØˆ?˜sœ°&Ò8Ð8ØØÔ"ð 	%Ý�D˜)Ñ$Ô$Ð$Øˆ;ØØ”- 2Ñ%¨¬Ñ4ˆÝ˜	 &Ô)Ñ*Ô*ˆå��d�G D¨$°Ñ2Ô2°UÑ:Ñ;Ô;Ð;Ð;ð%<ð <r1   c                   ó.   ‡ — e Zd ZdZd„ Zd„ Zˆ fd„Zˆ xZS )ÚVariationMergerzJA merger that takes multiple master fonts, and builds a
    variable font.c                 ó˜   — t                                | |¦  «         t          j        |¦  «        | _        |                      |¦  «         d S r+   )r)   r0   r   ÚOnlineVarStoreBuilderÚstore_builderÚsetModel)r.   r  ÚaxisTagsr,   s       r/   r0   zVariationMerger.__init__   sA   € Ý�Š˜˜dÑ#Ô#Ð#Ý%Ô;¸HÑEÔEˆÔØ�Š�eÑÔÐÐÐr1   c                 óH   — || _         | j                             |¦  «         d S r+   )r  rU  rV  )r.   r  s     r/   rV  zVariationMerger.setModel  s&   € ØˆŒ
ØÔ×#Ò# EÑ*Ô*Ð*Ð*Ð*r1   c                 óÂ  •— d }d }d |v rŠt          |¦  «        r|�t          | |¬¦  «        ‚d S | j        }| j        r$t          d„ |D ¦   «         | j        ¦  «        | _        | j        }|                     |¦  «        \  }}|                      |¦  «         t          t          | ¦  «         	                    ||¦  «         |r|                      |¦  «         |r	|| _        d S d S )N)ra   c                 ó   — g | ]}|d u‘ŒS r+   rP   r]   s     r/   r^   z/VariationMerger.mergeThings.<locals>.<listcomp>  s   € Ð$@Ð$@Ð$@°q Q¨d ]Ð$@Ð$@Ð$@r1   )
r   r   r-   r   r  ÚgetSubModelrV  ÚsuperrR  rk   )r.   rm   rn   ÚmasterModelÚorigTTFsr  rj   s         €r/   rk   zVariationMerger.mergeThings	  sþ   ø€ ØˆØˆØ�3ˆ;ˆ;Ý�s‰|Œ|ð Ø�?Ý$ T¨sÐ3Ñ3Ô3Ð3Ø�ð ”yˆHØŒyð MÝ#Ð$@Ð$@¸CÐ$@Ñ$@Ô$@À$Ä)ÑLÔL�”	àœ*ˆKØ$×0Ò0°Ñ5Ô5‰JˆE�3Ø�MŠM˜%Ñ Ô Ð å�o˜tÑ$Ô$×0Ò0°°cÑ:Ô:Ð:àð 	'Ø�MŠM˜+Ñ&Ô&Ð&Øð 	!Ø ˆDŒIˆIˆIð	!ð 	!r1   )r6   r�   rŽ   r  r0   rV  rk   Ú__classcell__rê  s   @r/   rR  rR  ü  s`   ø€ € € € € ðð ðð ð ð
+ð +ð +ð!ð !ð !ð !ð !ð !ð !ð !ð !r1   rR  c                 ó�   — t          |¦  «        r
|d         d fS |                      |¦  «        \  }}|t          j        |¦  «        fS rÌ   )r   ÚstoreMastersr   ÚbuildVarDevTable)rU  Úmaster_valuesÚbaseÚvarIdxs       r/   rb  rb  $  sO   € Ý�ÑÔð &Ø˜QÔ Ð%Ð%Ø ×-Ò-¨mÑ<Ô<�L€Dˆ&Ø•Ô)¨&Ñ1Ô1Ð1Ð1r1   c                 ó°   — |j         dk    rt          | d¬¦  «        ‚t          | j        d„ |D ¦   «         ¦  «        \  |_        }|rd|_         ||_        d S d S )Nr   za baseline coordinaterÔ   c                 ó   — g | ]	}|j         ‘Œ
S rP   r  r  s     r/   r^   zmerge.<locals>.<listcomp>0  ó   € Ð9Ð9Ð9°˜qœ|Ð9Ð9Ð9r1   rò  ©r¦   r&   rb  rU  r  rC  ©rF   r.   rn   rC  s       r/   r5   r5   +  sy   € à„{�aÒÐÝ Ð1HÐIÑIÔIÐIÝ#3ØÔÐ9Ð9°SÐ9Ñ9Ô9ñ$ô $Ñ €D„O�[ð ð 'ØˆŒØ&ˆÔÐÐð'ð 'r1   c                 ó°   — |j         dk    rt          | d¬¦  «        ‚t          | j        d„ |D ¦   «         ¦  «        \  |_        }|rd|_         ||_        d S d S )Nr   za caretrÔ   c                 ó   — g | ]	}|j         ‘Œ
S rP   r  r  s     r/   r^   zmerge.<locals>.<listcomp><  rh  r1   rò  ri  rj  s       r/   r5   r5   7  sx   € à„{�aÒÐÝ °Ð;Ñ;Ô;Ð;Ý#3ØÔÐ9Ð9°SÐ9Ñ9Ô9ñ$ô $Ñ €D„O�[ð ð 'ØˆŒØ&ˆÔÐÐð'ð 'r1   c                 ó  — |j         dk    rt          | d¬¦  «        ‚t          | j        d„ |D ¦   «         ¦  «        \  |_        }t          | j        d„ |D ¦   «         ¦  «        \  |_        }|s|rd|_         ||_        ||_        d S d S )Nr   z	an anchorrÔ   c                 ó   — g | ]	}|j         ‘Œ
S rP   r$  r  s     r/   r^   zmerge.<locals>.<listcomp>H  ó   € Ð:Ð:Ð:°˜qœ}Ð:Ð:Ð:r1   c                 ó   — g | ]	}|j         ‘Œ
S rP   r(  r  s     r/   r^   zmerge.<locals>.<listcomp>K  ro  r1   rò  )r¦   r&   rb  rU  r%  r)  ÚXDeviceTableÚYDeviceTable)rF   r.   rn   rq  rr  s        r/   r5   r5   C  s¸   € à„{�aÒÐÝ °Ð=Ñ=Ô=Ð=Ý%5ØÔÐ:Ð:°cÐ:Ñ:Ô:ñ&ô &Ñ"€DÔ�lõ &6ØÔÐ:Ð:°cÐ:Ñ:Ô:ñ&ô &Ñ"€DÔ�lð ð )�|ð )ØˆŒØ(ˆÔØ(ˆÔÐÐð)ð )r1   c                 óÈ   ‡— dD ]]\  Š}t          |‰¦  «        rHt          | j        ˆfd„|D ¦   «         ¦  «        \  }}t          |‰|¦  «         |rt          |||¦  «         Œ^d S )Nr-  c                 ó2   •— g | ]}t          |‰d ¦  «        ‘ŒS r  rd   r7  s     €r/   r^   zmerge.<locals>.<listcomp>]  s%   ø€ Ð&HÐ&HÐ&H¸q¥w¨q°$¸Ñ':Ô':Ð&HÐ&HÐ&Hr1   )rh   rb  rU  r�  )rF   r.   rn   r9  rr   ÚdeviceTabler8  s         @r/   r5   r5   S  s–   ø€ ðð 6ð 6‰ˆˆiõ �4˜ÑÔð 	6Ý!1ØÔ$Ð&HÐ&HÐ&HÐ&HÀCÐ&HÑ&HÔ&Hñ"ô "ÑˆE�;õ �D˜$ Ñ&Ô&Ð&Øð 6Ý˜˜i¨Ñ5Ô5Ð5øð6ð 6r1   c                   ó„   — e Zd ZdZdd„Zdd„Zd„ fd„Zd„ Zd	„ Zd
„ Z	de
fd„Zde
fd„Zed„ ¦   «         Zed„ ¦   «         ZdS )ÚCOLRVariationMergera½  A specialized VariationMerger that takes multiple master fonts containing
    COLRv1 tables, and builds a variable COLR font.

    COLR tables are special in that variable subtables can be associated with
    multiple delta-set indices (via VarIndexBase).
    They also contain tables that must change their type (not simply the Format)
    as they become variable (e.g. Affine2x3 -> VarAffine2x3) so this merger takes
    care of that too.
    Tc                 óÖ   — t                                | |||¦  «         i | _        g | _        t	          ¦   «         | _        g | _        d | _        |rt          ¦   «         | _        d| _	        d S )NF)
rR  r0   ÚvarIndexCacheÚvarIdxesrœ   ÚvarTableIdsÚlayersÚlayerReuseCacher   Ú_doneBaseGlyphs)r.   r  rW  r,   ÚallowLayerReuses        r/   r0   zCOLRVariationMerger.__init__o  sn   € Ý× Ò   u¨h¸Ñ=Ô=Ð=ð  ˆÔàˆŒõ ™5œ5ˆÔàˆŒØ#ˆÔØð 	5Ý#2Ñ#4Ô#4ˆDÔ à$ˆÔÐÐr1   ©ÚCOLRc                 ó�   — d|v r$d|v r |                       |d         j        ¦  «         t                               | |||¦  «         d S )Nr�  )ÚexpandPaintColrLayersre   rR  rŒ   )r.   r,   rŠ   r‹   s       r/   rŒ   zCOLRVariationMerger.mergeTables�  sR   € Ø�YÐÐ 6¨T > >ð ×&Ò& t¨F¤|Ô'9Ñ:Ô:Ð:Ý×#Ò# D¨$°¸YÑGÔGÐGÐGÐGr1   c                 ó   — dS )NTrP   )r¥   s    r/   ú<lambda>zCOLRVariationMerger.<lambda>Ž  s   € ¸4€ r1   c                 óÄ  — |j         }|j        }d}	  ||¦  «        } ||¦  «        }n# t          $ r Y nw xY w|s$t          | t	          |¦  «        j        |¬¦  «        ‚|}g }|D ]E}	t          |	dd ¦  «        }	  ||¦  «        }n# t          $ r Y nw xY w|                     |¦  «         ŒFt          ||¦  «        s%t          | t	          |¦  «        j        ||¬¦  «        ‚|S )NF)rÕ   rr   r¦   r¤  )
r¦   Ú
formatEnumÚ
ValueErrorr&   rB   r6   rI   r7   r   r%   )
r.   rm   rn   ÚvalidateÚfmtr‡  Úokr`   ra   rZ   s
             r/   ÚcheckFormatEnumz#COLRVariationMerger.checkFormatEnumŽ  s7  € ØŒjˆØ”^ˆ
Øˆð	Ø�*˜S‘/”/ˆCð �˜#‘”ˆBˆBøõ ð 	ð 	ð 	ØˆDð	øøøð ð 	RÝ# Dµ4¸±9´9Ô3EÈSÐQÑQÔQÐQØˆØˆØð 	ð 	ˆAÝ˜!˜X tÑ,Ô,ˆCðØ �j ‘o”o��øÝð ð ð Ø�ðøøøà�JŠJ�s‰OŒOˆOˆOÝ˜( CÑ(Ô(ð 	Ý%ØÝ˜c™œÔ+Ø!Øð	ñ ô ð ð ˆs   ’) ©
6µ6Á9BÂ
BÂBc                 óê   ‡— |                      ¦   «         D ]\Š	 |                      |‰         ˆfd„|D ¦   «         ¦  «         Œ,# t          $ r$}|j                             d‰›d�¦  «         ‚ d }~ww xY wd S )Nc                 ó:   •— g | ]}|                      ‰¦  «        ‘ŒS rP   rˆ   )rY   rZ   r›   s     €r/   r^   z7COLRVariationMerger.mergeSparseDict.<locals>.<listcomp>¯  s#   ø€ Ð)@Ð)@Ð)@°q¨!¯%ª%°©(¬(Ð)@Ð)@Ð)@r1   ú[ú])rX   rk   r'   rl   r7   )r.   rm   rn   ru   r›   s       @r/   ÚmergeSparseDictz#COLRVariationMerger.mergeSparseDict¬  s™   ø€ Ø—’‘”ð 	ð 	ˆAðØ× Ò   Q¤Ð)@Ð)@Ð)@Ð)@¸CÐ)@Ñ)@Ô)@ÑAÔAÐAÐAøÝ#ð ð ð Ø”—’˜z 1˜z˜z˜zÑ*Ô*Ð*Øøøøøðøøøð	ð 	s   ™(AÁ
A0ÁA+Á+A0c                 óÜ   ‡— |D ]gŠt          |‰¦  «        }ˆfd„|D ¦   «         }	 |                      ||¦  «         Œ8# t          $ r#}|j                             d‰› �¦  «         ‚ d }~ww xY wd S )Nc                 ó0   •— g | ]}t          |‰¦  «        ‘ŒS rP   rd   ©rY   rp   r<   s     €r/   r^   z2COLRVariationMerger.mergeAttrs.<locals>.<listcomp>·  s#   ø€ Ð:Ð:Ð:¨d•g˜d DÑ)Ô)Ð:Ð:Ð:r1   rg   )rI   rk   r'   rl   r7   )r.   rm   rn   r=   rr   rs   ru   r<   s          @r/   Ú
mergeAttrszCOLRVariationMerger.mergeAttrs´  sž   ø€ Øð 	ð 	ˆDÝ˜C Ñ&Ô&ˆEØ:Ð:Ð:Ð:°cÐ:Ñ:Ô:ˆFðØ× Ò  ¨Ñ/Ô/Ð/Ð/øÝ#ð ð ð Ø”—’˜z 4˜z˜zÑ*Ô*Ð*Øøøøøðøøøð	ð 	s   ¥<¼
A)ÁA$Á$A)c                 óP  ‡‡— ˆfd„|D ¦   «         }d}|                      ‰¦  «        Št          ‰t          ¦  «        rd}ˆfd„|D ¦   «         }|d         }t          j        }t          |¦  «        s| j                             |¦  «        \  }}|r‰                     |¦  «        }||fS )Nc                 ó0   •— g | ]}t          |‰¦  «        ‘ŒS rP   rd   r”  s     €r/   r^   z;COLRVariationMerger.storeMastersForAttr.<locals>.<listcomp>¿  s#   ø€ Ð=Ð=Ð=°�  tÑ,Ô,Ð=Ð=Ð=r1   FTc                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS rP   )ÚtoInt)rY   rZ   Úconvs     €r/   r^   z;COLRVariationMerger.storeMastersForAttr.<locals>.<listcomp>È  s#   ø€ ÐBÐBÐB¨q˜TŸZšZ¨™]œ]ÐBÐBÐBr1   r   )	ÚgetConverterByNamerƒ   r   r§   ÚNO_VARIATION_INDEXr   rU  ra  ÚfromInt)	r.   rm   rn   r<   rc  Úis_fixed_size_floatÚ	baseValuere  rš  s	      `    @r/   ÚstoreMastersForAttrz'COLRVariationMerger.storeMastersForAttr¾  sÌ   øø€ Ø=Ð=Ð=Ð=¸Ð=Ñ=Ô=ˆð
 $ÐØ×%Ò% dÑ+Ô+ˆÝ�d�NÑ+Ô+ð 	CØ"&ÐØBÐBÐBÐB°MÐBÑBÔBˆMà! !Ô$ˆ	ÝÔ&ˆÝ˜Ñ&Ô&ð 	OØ $Ô 2× ?Ò ?ÀÑ NÔ NÑˆI�vàð 	0ØŸš YÑ/Ô/ˆIà˜&Ð Ð r1   Úreturnc                 ó®  — t          |¦  «        }| j                             |¦  «        }|€ht          t	          | j        ¦  «        t	          |¦  «        z
  dz   ¦  «        D ]3}| j        ||t	          |¦  «        z   …         |k    r|x| j        |<   } nŒ4|€…t          t	          |¦  «        dz
  dd¦  «        D ]c}| j        | d …         |d |…         k    rEt	          | j        ¦  «        |z
  }|| j        |<   | j                             ||d …         ¦  «          nŒd|€8t	          | j        ¦  «        x| j        |<   }| j                             |¦  «         |S )Nr   r   rd  )Útuplery  rJ   r,  rz   rz  r‘  )r.   rz  rf   ÚvarIndexBaser   Úns         r/   ÚstoreVariationIndicesz)COLRVariationMerger.storeVariationIndicesÔ  sr  € õ �H‰oŒoˆØÔ)×-Ò-¨cÑ2Ô2ˆàÐå�3˜tœ}Ñ-Ô-µ°H±´Ñ=ÀÑAÑBÔBð ð �Ø”=  Q­¨X©¬Ñ%6Ð!6Ô7¸8ÒCÐCØ=>Ð>�DÔ& sÑ+¨lØ�Eð Dð Ðå�3˜x™=œ=¨1Ñ,¨a°Ñ4Ô4ð ð �Ø”= !   Ô%¨°"°1°"¬Ò5Ð5Ý#& t¤}Ñ#5Ô#5¸Ñ#9�LØ.:�DÔ& sÑ+Ø”M×(Ò(¨°!°"°"¬Ñ6Ô6Ð6Ø�Eð	 6ð Ðå58¸¼Ñ5GÔ5GÐGˆDÔ˜sÑ# lØŒM× Ò  Ñ*Ô*Ð*àÐr1   c                 ó  — t           j        }g }|D ]B}|                      |||¦  «        \  }}t          |||¦  «         |                     |¦  «         ŒCt          d„ |D ¦   «         ¦  «        r|                      |¦  «        }|S )Nc              3   ó6   K  — | ]}|t           j        k    V — Œd S r+   )r§   rœ  r]   s     r/   r[   z9COLRVariationMerger.mergeVariableAttrs.<locals>.<genexpr>ù  s*   è è € Ð<Ð<¨aˆq•BÔ)Ò)Ð<Ð<Ð<Ð<Ð<Ð<r1   )r§   rœ  r   r�  r7   r  r¦  )	r.   rm   rn   r=   r¤  rz  r<   rŸ  re  s	            r/   ÚmergeVariableAttrsz&COLRVariationMerger.mergeVariableAttrsñ  sš   € ÝÔ,ˆØˆØð 	$ð 	$ˆDØ $× 8Ò 8¸¸cÀ4Ñ HÔ HÑˆI�vÝ�C˜˜yÑ)Ô)Ð)Ø�OŠO˜FÑ#Ô#Ð#Ð#åÐ<Ð<°8Ð<Ñ<Ô<Ñ<Ô<ð 	@Ø×5Ò5°hÑ?Ô?ˆLàÐr1   c                 ó‚  — t          |dd„ ¬¦  «        D ]ª}|d         }|j        }t          |¦  «        j        } |¦   «         }|j                             |j        ¦  «         |                     ¦   «          |d         j        }|j        �|t          ||j	        ¦  «        |j        <   Œ”t          ||j	        |¦  «         Œ«d S )NTc                 óX   — t          t          | d         j        ¦  «        dd ¦  «        d uS )Nrd  ÚVarType)rI   rB   rr   )Úpaths    r/   r…  z?COLRVariationMerger.convertSubTablesToVarType.<locals>.<lambda>  s)   € Ý�˜T "œXœ^Ñ,Ô,¨i¸Ñ>Ô>ÀdÐJð r1   )Ú	skip_rootÚ	predicaterd  éþÿÿÿ)r   rr   rB   r¬  rA   r�   ÚpopulateDefaultsrÖ   rI   r8  r�  )Úclsre   r­  rã  ÚsubTableÚvarTypeÚnewSubTableÚparents           r/   ÚconvertSubTablesToVarTypez-COLRVariationMerger.convertSubTablesToVarTypeþ  sÖ   € å"ØØðð ð
ñ 
ô 
ð 	6ð 	6ˆDð �b”ˆBØ”xˆHÝ˜8‘n”nÔ,ˆGØ!˜'™)œ)ˆKØÔ ×'Ò'¨Ô(9Ñ:Ô:Ð:Ø×(Ò(Ñ*Ô*Ð*Ø˜"”X”^ˆFØŒxÐ#Ø5@•˜ ¤Ñ(Ô(¨¬Ñ2Ð2å˜ ¤¨Ñ5Ô5Ð5Ð5ð#	6ð 	6r1   c                 ó|  — | j         sdS t          ¦   «         }g }| j        j        D �]M}|j        g}|�r?|                     ¦   «         }|j        t          j        j	        k    rŒ2|j        t          j        j
        k    r¼t          t          || ¦  «        ¦  «        }t          |¦  «        }|D ]q}t          |¦  «        |v r't          j        |¦  «        }t          |¦  «        |vsJ ‚|                     |¦  «         |                     t          |¦  «        ¦  «         Œr||_        t          |¦  «        |_        n|                     | ¦  «        }|                     t/          |¦  «        ¦  «         |�°?�ŒOt          |¦  «        t          |¦  «        k    sJ ‚|| j         _        t          |¦  «        | j         _        dS )aû  Rebuild LayerList without PaintColrLayers reuse.

        Each base paint graph is fully DFS-traversed (with exception of PaintColrGlyph
        which are irrelevant for this); any layers referenced via PaintColrLayers are
        collected into a new LayerList and duplicated when reuse is detected, to ensure
        that all paints are distinct objects at the end of the process.
        PaintColrLayers's FirstLayerIndex/NumLayers are updated so that no overlap
        is left. Also, any consecutively nested PaintColrLayers are flattened.
        The COLR table's LayerList is replaced with the new unique layers.
        A side effect is also that any layer from the old LayerList which is not
        referenced by any PaintColrLayers is dropped.
        N)Ú	LayerListrœ   ÚBaseGlyphListÚBaseGlyphPaintRecordÚPaintr  r¦   r§   ÚPaintFormatÚPaintColrGlyphÚPaintColrLayersr…   Ú_flatten_layersrz   ÚidrÎ   rK  r7   r.  ÚFirstLayerIndexÚ	NumLayersÚgetChildrenr‘  ÚreversedÚ
LayerCount)	ÚcolrÚuniqueLayerIDsÚnewLayerListrç   ÚfrontierÚpaintÚchildrenÚfirst_layer_indexÚlayers	            r/   rƒ  z)COLRVariationMerger.expandPaintColrLayers  s­  € ð Œ~ð 	àˆFÝ™œˆØˆØÔ%Ô:ð 	4ñ 	4ˆCØœ	�{ˆHØñ 4Ø Ÿš™œ�Ø”<¥2¤>Ô#@Ò@Ð@àØ”\¥R¤^Ô%CÒCÐCõ  $¥O°E¸4Ñ$@Ô$@ÑAÔA�HÝ(+¨LÑ(9Ô(9Ð%Ø!)ð 6ð 6˜Ý˜e™9œ9¨Ð6Ð6Ý$(¤M°%Ñ$8Ô$8˜EÝ#% e¡9¤9°NÐ#BÐ#BÐ#BÐ#BØ$×+Ò+¨EÑ2Ô2Ð2Ø&×*Ò*­2¨e©9¬9Ñ5Ô5Ð5Ð5Ø,=�EÔ)Ý&)¨(¡m¤m�E”O�Oà$×0Ò0°Ñ6Ô6�HØ—’¥¨Ñ 2Ô 2Ñ3Ô3Ð3ð) ñ 4ùõ, �<Ñ Ô ¥C¨Ñ$7Ô$7Ò7Ð7Ð7Ð7Ø+ˆŒÔÝ$'¨Ñ$5Ô$5ˆŒÔ!Ð!Ð!r1   Nr?  )r€  )r6   r�   rŽ   r  r0   rŒ   rŒ  r‘  r•  r   rý   r¦  r©  r�   r·  Ústaticmethodrƒ  rP   r1   r/   rw  rw  d  sÿ   € € € € € ðð ð%ð %ð %ð %ð$Hð Hð Hð Hð 2@°ð ð ð ð ð<ð ð ðð ð ð!ð !ð !ð,°ð ð ð ð ð:°Sð ð ð ð ð ð6ð 6ñ „[ð6ð( ð,6ð ,6ñ „\ð,6ð ,6ð ,6r1   rw  c                 ól  ‡— d„ |j         D ¦   «         }d„ |D ¦   «         }t          |                     ¦   «         ¦  «        D ]l\  }Š	 |                      |‰         ˆfd„|D ¦   «         ¦  «         Œ/# t          $ r1}|j                             d|› d�¦  «         d‰›�|j        d<   ‚ d }~ww xY wd| _        d S )	Nc                 ó   — i | ]
}|j         |“ŒS rP   ©Ú	BaseGlyph©rY   rç   s     r/   r´   zmerge.<locals>.<dictcomp>F  s   € Ð
CÐ
CÐ
C #ˆ3Œ=˜#Ð
CÐ
CÐ
Cr1   c                 ó0   — g | ]}d „ |j         D ¦   «         ‘ŒS )c                 ó   — i | ]
}|j         |“ŒS rP   rÒ  rÔ  s     r/   r´   z$merge.<locals>.<listcomp>.<dictcomp>G  s   € ÐEÐEÐE s�”˜sÐEÐEÐEr1   )r»  )rY   rN   s     r/   r^   zmerge.<locals>.<listcomp>G  s*   € ÐSÐSÐSÈ!ÐEÐE¨aÔ.DÐEÑEÔEÐSÐSÐSr1   c                 ó:   •— g | ]}|                      ‰¦  «        ‘ŒS rP   rˆ   )rY   rZ   r³   s     €r/   r^   zmerge.<locals>.<listcomp>L  s#   ø€ Ð'BÐ'BÐ'B°Q¨¯ª¨a©¬Ð'BÐ'BÐ'Br1   z.BaseGlyphPaintRecord[r�  zbase glyph r  T)	r»  r}   rX   rk   r'   rl   r7   Úcauser~  )rF   r.   rn   rm   Úmastersr   ru   r³   s          @r/   r5   r5   C  sï   ø€ ð DÐ
C¨Ô)BÐ
CÑ
CÔ
C€CØSÐSÈsÐSÑSÔS€Gå˜#Ÿ(š(™*œ*Ñ%Ô%ð ð ‰ˆˆ1ð	à×Ò˜s 1œvÐ'BÐ'BÐ'BÐ'B¸'Ð'BÑ'BÔ'BÑCÔCÐCÐCøÝð 	ð 	ð 	ØŒG�NŠNÐ8°AÐ8Ð8Ð8Ñ9Ô9Ð9Ø"5°Ð"5Ð"5ˆAŒG�JÑØøøøøð	øøøð
 "€FÔÐÐs   Á(A/Á/
B*Á9,B%Â%B*c                 ór   — | j         s
J d¦   «         ‚t          | j        ¦  «        |_        | j        |_        d S )Nz-BaseGlyphList must be merged before LayerList)r~  rz   r|  rÆ  r¼  rÏ   s      r/   r5   r5   U  s:   € ð Ô!ÐRÐRÐ#RÑRÔRÐRå˜&œ-Ñ(Ô(€D„OØ”€D„J€J€Jr1   c              #   óÜ   K  — | j         t          j        j        k    sJ ‚|                      |¦  «        D ]7}|j         t          j        j        k    rt          ||¦  «        E d {V —† Œ3|V — Œ8d S r+   )r¦   r§   r½  r¿  rÄ  rÀ  )ÚrootrÇ  rË  s      r/   rÀ  rÀ  _  s‡   è è € ØŒ;�"œ.Ô8Ò8Ð8Ð8Ð8Ø×!Ò! $Ñ'Ô'ð ð ˆØŒ<�2œ>Ô9Ò9Ð9Ý& u¨dÑ3Ô3Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ð3àˆKˆKˆKˆKð	ð r1   c                 óð  ‡ ‡‡— t          t          |‰ j        d         j        ¦  «        ¦  «        }t	          ‰ j        ¦  «        t	          ‰¦  «        k    sJ ‚ˆˆ fd„t          t	          ‰¦  «        ¦  «        D ¦   «         }	 ‰                      ||¦  «         n-# t          $ r }|j	         
                    d¦  «         ‚ d }~ww xY w‰ j        �‰ j                             |¦  «        }t	          |¦  «        t          k    }t          |t          ¬¦  «        }ˆˆ fd„Šˆfd„|D ¦   «         }t	          |¦  «        dk    rF|d         j        t           j        j        k    r&|d         j        |_        |d         j        |_        d S t	          |¦  «        |_        t	          ‰ j        ¦  «        |_        ‰ j                             |¦  «         ‰ j        �$|s$‰ j                             ||j        ¦  «         d S d S d S )	Nr�  c           	      ó‚   •— g | ];}t          t          ‰|         ‰j        |         d          j        ¦  «        ¦  «        ‘Œ<S r€  )r…   rÀ  r-   re   )rY   r   rn   r.   s     €€r/   r^   z*_merge_PaintColrLayers.<locals>.<listcomp>q  sM   ø€ ð ð ð àõ 	�_˜S œV T¤Y¨q¤\°&Ô%9Ô%?Ñ@Ô@ÑAÔAðð ð r1   z.Layers)r¥  c                 ó–  •— t          | t          ¦  «        r²ˆfd„| D ¦   «         }t          j        ¦   «         } t	          t          j        j        ¦  «        | _        t          |¦  «        | _	        t          ‰j
        ¦  «        | _        ‰j
                             |¦  «         ‰j        � ‰j                             || j        ¦  «         | S )Nc                 ó&   •— g | ]} ‰|¦  «        ‘ŒS rP   rP   ©rY   r˜   ÚlistToColrLayerss     €r/   r^   zD_merge_PaintColrLayers.<locals>.listToColrLayers.<locals>.<listcomp>�  s%   ø€ Ð9Ð9Ð9¨aÐ&Ð& qÑ)Ô)Ð9Ð9Ð9r1   )rƒ   r…   r§   r¼  rý   r½  r¿  r¦   rz   rÃ  r|  rÂ  r‘  r}  r.  )rË  r|  râ  r.   s     €€r/   râ  z0_merge_PaintColrLayers.<locals>.listToColrLayers‹  s­   ø€ Ý�e�TÑ"Ô"ð 	HØ9Ð9Ð9Ð9°5Ð9Ñ9Ô9ˆFÝ”H‘J”JˆEÝ�rœ~Ô=Ñ>Ô>ˆEŒLÝ! &™kœkˆEŒOÝ$'¨¬Ñ$4Ô$4ˆEÔ!ØŒK×Ò˜vÑ&Ô&Ð&ØÔ#Ð/ØÔ$×(Ò(¨°Ô1FÑGÔGÐGØˆr1   c                 ó&   •— g | ]} ‰|¦  «        ‘ŒS rP   rP   rá  s     €r/   r^   z*_merge_PaintColrLayers.<locals>.<listcomp>—  s%   ø€ Ð:Ð:Ð:¨!Ð"Ð" 1Ñ%Ô%Ð:Ð:Ð:r1   r   r   )r…   rÀ  r,   re   rz   r-   r,  r€   r'   rl   r7   r}  Ú	try_reuser   r   r¦   r§   r½  r¿  rÃ  rÂ  r|  r‘  r.  )r.   rm   rn   Ú
out_layersÚmaster_layersesru   Úis_treerâ  s   ` `    @r/   Ú_merge_PaintColrLayersrè  h  s  øøø€ õ •o c¨4¬9°VÔ+<Ô+BÑCÔCÑDÔD€Jõ ˆtŒy‰>Œ>�S ™XœXÒ%Ð%Ð%Ð%ðð ð ð ð å•s˜3‘x”x‘”ðñ ô €Oð
Ø�Š˜
 OÑ4Ô4Ð4Ð4øÝð ð ð ð 	
Œ�Š�yÑ!Ô!Ð!Øøøøøð	øøøð ÔÐ'àÔ)×3Ò3°JÑ?Ô?ˆ
õ �*‰oŒoÕ :Ò:€GÝ! *Õ0JÐKÑKÔK€Jð
ð 
ð 
ð 
ð 
ð 
ð ;Ð:Ð:Ð:¨zÐ:Ñ:Ô:€Jå
ˆ:�„˜!ÒÐ 
¨1¤Ô 4½¼Ô8VÒ VÐ Vð
 # 1œÔ/ˆŒØ(¨œmÔ;ˆÔÐÐå˜J™œˆŒÝ! $¤+Ñ.Ô.ˆÔàŒ×Ò˜:Ñ&Ô&Ð&ð ÔÐ+°GÐ+ØÔ ×$Ò$ Z°Ô1DÑEÔEÐEÐEÐEð ,Ð+Ð+Ð+s   ÂB Â
CÂ#B>Â>Cc                 ó   ‡ ‡	— ‰                       ||d„ ¦  «        }|t          j        j        u rt	          ‰ ||¦  «         d S |                     ¦   «         }dŠ	|�"t          j        t          |¦  «        |¦  «        Š	ˆ	fd„| 	                    ¦   «         D ¦   «         }‰  
                    |||¦  «         ‰                      ||‰	¦  «        }d„ |                     ¦   «         D ¦   «         }|t          j        k    pt          ˆ fd„|D ¦   «         ¦  «        }|r:‰	r||_        |r‰                      |¦  «         |€J ‚t#          |¦  «        |_        d S d S )Nc                 ó,   — |                       ¦   «          S r+   )Úis_variable)rŠ  s    r/   r…  zmerge.<locals>.<lambda>®  s   € ¸C¿OºOÑ<MÔ<MÐ8M€ r1   rP   c              3   ó8   •K  — | ]}|j         ‰v¯|j         V — Œd S r+   ©r8  ©rY   rÃ  ÚvarAttrss     €r/   r[   zmerge.<locals>.<genexpr>¹  ó1   øè è € ÐRÐR˜a¸1¼6ÈÐ;QÐ;Q�1”6Ð;QÐ;QÐ;QÐ;QÐRÐRr1   c                 ó   — g | ]	}|j         ‘Œ
S rP   )rr   rë  s     r/   r^   zmerge.<locals>.<listcomp>¿  s   € Ð9Ð9Ð9˜b�”Ð9Ð9Ð9r1   c              3   óD   •K  — | ]}t          |¦  «        ‰j        v V — Œd S r+   ©rÁ  r{  )rY   re   rF   s     €r/   r[   zmerge.<locals>.<genexpr>Â  sB   øè è € ð >ð >Ø,1�ˆ5‰	Œ	�VÔ'Ð'ð>ð >ð >ð >ð >ð >r1   )rŒ  r§   r½  r¿  rè  Úas_variabler
   ÚgetVariableAttrsrB   ÚgetConvertersr•  r©  ÚiterSubTablesrœ  r  ÚVarIndexBaser·  rý   r¦   )
rF   r.   rn   rŠ  Ú	varFormatÚstaticAttrsr¤  Ú	subTablesÚ
isVariablerï  s
   `        @r/   r5   r5   ¬  s�  øø€ à
×
 Ò
   sÐ,MÐ,MÑ
NÔ
N€Cà
�bŒnÔ,Ð,Ð,Ý˜v t¨SÑ1Ô1Ð1Øˆà—’Ñ!Ô!€Ià€HØÐÝÔ*­4°©:¬:°yÑAÔAˆØRÐRÐRÐR 4×#5Ò#5Ñ#7Ô#7ÐRÑRÔR€Kà
×Ò�d˜C Ñ-Ô-Ð-à×,Ò,¨T°3¸ÑAÔA€Là9Ð9 D×$6Ò$6Ñ$8Ô$8Ð9Ñ9Ô9€Ið ¥Ô!6Ò6ð ½#ð >ð >ð >ð >Ø5>ð>ñ >ô >ñ ;ô ;€Jð ð %Øð 	-ð !-ˆDÔàð 	3à×,Ò,¨TÑ2Ô2Ð2àÐ$Ð$Ð$Ý˜)‘n”nˆŒˆˆð%ð %r1   c                 ót  ‡— t          |¦  «        j        }t          j        |¦  «        Šˆfd„|                     ¦   «         D ¦   «         }|                      |||¦  «         |                      ||‰¦  «        }|t          j        k    r0||_	        | j
                             t          |¦  «        ¦  «         d S d S )Nc              3   ó8   •K  — | ]}|j         ‰v¯|j         V — Œd S r+   rí  rî  s     €r/   r[   zmerge.<locals>.<genexpr>Ú  rð  r1   )rB   r¬  r
   rõ  rö  r•  r©  r§   rœ  rø  r{  r.  rÁ  )rF   r.   rn   r´  rú  r¤  rï  s         @r/   r5   r5   Õ  s¶   ø€ å�4‰jŒjÔ €GåÔ& wÑ/Ô/€HØRÐRÐRÐR 4×#5Ò#5Ñ#7Ô#7ÐRÑRÔR€Kà
×Ò�d˜C Ñ-Ô-Ð-à×,Ò,¨T°3¸ÑAÔA€Là•rÔ,Ò,Ð,Ø(ˆÔàÔ×Ò�r $™xœxÑ(Ô(Ð(Ð(Ð(ð -Ð,r1   c                 ó*  ‡ — ‰                       ||d„ |                     ¦   «         D ¦   «         ¦  «         t          ˆ fd„|j        D ¦   «         ¦  «        r>‰                      |¦  «         ‰ j                             t          |¦  «        ¦  «         d S d S )Nc              3   ó$   K  — | ]}|j         V — Œd S r+   rí  rÂ  s     r/   r[   zmerge.<locals>.<genexpr>è  s$   è è € Ð!GÐ!G¨Q !¤&Ð!GÐ!GÐ!GÐ!GÐ!GÐ!Gr1   c              3   óD   •K  — | ]}t          |¦  «        ‰j        v V — Œd S r+   ró  )rY   ÚstoprF   s     €r/   r[   zmerge.<locals>.<genexpr>ê  s1   øè è € Ð
EÐ
E¨d�2ˆd‰8Œ8�vÔ)Ð)Ð
EÐ
EÐ
EÐ
EÐ
EÐ
Er1   )r•  rö  r  Ú	ColorStopr·  r{  r.  rÁ  rÏ   s   `  r/   r5   r5   æ  sž   ø€ à
×Ò�d˜CÐ!GÐ!G°$×2DÒ2DÑ2FÔ2FÐ!GÑ!GÔ!GÑHÔHÐHå
Ð
EÐ
EÐ
EÐ
E°d´nÐ
EÑ
EÔ
EÑEÔEð )Ø×(Ò(¨Ñ.Ô.Ð.ØÔ×Ò�r $™xœxÑ(Ô(Ð(Ð(Ð(ð)ð )r1   Úclipsc                 ó2   — |                       ||¦  «         d S r+   )r‘  rÏ   s      r/   r5   r5   ï  s    € ð ×Ò˜4 Ñ%Ô%Ð%Ð%Ð%r1   r  r+   )F)rt  ru  )pr  ÚosrÎ   rC   Úoperatorr   ÚloggingÚfontTools.colorLib.builderr   r   ÚfontTools.miscr   ÚfontTools.misc.roundToolsr   ÚfontTools.misc.treeToolsr   ÚfontTools.ttLib.tablesr	   r§   r
   ÚfontTools.ttLib.beyond64kr   Ú#fontTools.ttLib.tables.otConvertersr   Ú!fontTools.ttLib.tables.otTraverser   Ú#fontTools.ttLib.tables.DefaultTabler   ÚfontTools.varLibr   r   r   ÚfontTools.varLib.modelsr   r   r   r   r   ÚfontTools.varLib.varStorer   Ú	functoolsr   ÚfontTools.otlLib.builderr   ÚfontTools.otlLib.optimize.gposr   r   Ú	getLoggerr  Úerrorsr   r   r   r    r!   r"   r#   r$   r%   r&   r'   Úobjectr)   r‘   rF   ÚGDEFr5   r®   rÊ   rô   r‹  rØ   rê   r¨   rÜ   r(  r4  rA  r^  re  rÛ   rž  ÚMarkBasePosÚMarkMarkPosr¯  r¹  rÈ  rÊ  rÓ  Ú
CursivePosr×  rá  rä  ÚLookupr  Ú
CaretValuer;  Ú	BaseCoordÚMathValueRecordrR  rb  rw  rº  r¹  rÀ  rè  r¼  ÚClipBoxÚ	Affine2x3r  Ú	ColorLineÚClipListrP   r1   r/   ú<module>r'     sÄ	  ððð ð 
€	€	€	Ø €€€Ø €€€Ø Ð Ð Ð Ð Ð Ø €€€Ø RÐ RÐ RÐ RÐ RÐ RÐ RÐ RØ (Ð (Ð (Ð (Ð (Ð (Ø -Ð -Ð -Ð -Ð -Ð -Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø =Ð =Ð =Ð =Ð =Ð =Ø >Ð >Ð >Ð >Ð >Ð >Ø <Ð <Ð <Ð <Ð <Ð <Ø <Ð <Ð <Ð <Ð <Ð <Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SØ 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø Ð Ð Ð Ð Ð Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3ðð ð ð ð ð ð ð ð
 €gÔÐ1Ñ2Ô2€ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðrð rð rð rð rˆVñ rô rð rðp	ð 	ð 	ð 	ð 	�Vñ 	ô 	ð 	ð ×Ò�r”wÐ CÑDÔDð#ð #ñ EÔDð#ð2ð ð ð"ð "ð "ð "ðJ ×Ò�vÔ)Ñ*Ô*ð#ð #ñ +Ô*ð#ð ×Ò�r”yÑ!Ô!ð#ð #ñ "Ô!ð#ðð ð ð$ð ð ð6 ×Ò�r”|Ñ$Ô$ð:ð :ñ %Ô$ð:ðz ×Ò�r”zÑ"Ô"ð24ð 24ñ #Ô"ð24ðj,ð ,ð ,ðBð ð ð ð8ð ð ð ð6Kð Kð Kð Kð\&3ð &3ð &3ðR ×Ò�r”zÑ"Ô"ð(ð (ñ #Ô"ð(ðVS)ð S)ð S)ð S)ðl ×Ò�r”~Ñ&Ô&ðTð Tñ 'Ô&ðTð ×Ò�r”~Ñ&Ô&ðTð Tñ 'Ô&ðTðð ð ð2ð ð ð2ð ð ð<ð ð ð*ð ð ð0 ×Ò�r”}Ñ%Ô%ð4ð 4ñ &Ô%ð4ð. ×Ò�rÔ)Ñ*Ô*ð#ð #ñ +Ô*ð#ð( „LØ„JØ„MØ„NØ„NðÐ ð2ð 2ð 2ð ×Ò�r”yÑ!Ô!ðu ð u ñ "Ô!ðu ðz>ð >ð >ð >ð >�nñ >ô >ð >ð ×Ò˜œÑ&Ô&ðð ñ 'Ô&ðð ×Ò˜œ	Ñ"Ô"ðð ñ #Ô"ðð ×Ò˜Ô*Ñ+Ô+ð'ð 'ñ ,Ô+ð'ð2	1ð 	1ð 	1ð 	1ð 	1�Nñ 	1ô 	1ð 	1ð ×Ò�r”} b¤lÐ3Ñ4Ô4ðð ñ 5Ô4ðð, ×Ò�bÔ(Ñ)Ô)ð ð  ñ *Ô)ð ð ×Ò�b”iÑ Ô ðð ñ !Ô ðð> ×Ò�fÔ(Ñ)Ô)ð<ð <ñ *Ô)ð<ð>%!ð %!ð %!ð %!ð %!�nñ %!ô %!ð %!ðP2ð 2ð 2ð ×Ò˜œÑ%Ô%ð'ð 'ñ &Ô%ð'ð ×Ò˜œÑ&Ô&ð'ð 'ñ 'Ô&ð'ð ×Ò˜œ	Ñ"Ô"ð)ð )ñ #Ô"ð)ð ×Ò˜Ô*Ñ+Ô+ð6ð 6ñ ,Ô+ð6ð \6ð \6ð \6ð \6ð \6˜/ñ \6ô \6ð \6ð~ ×Ò˜BÔ,Ñ-Ô-ð"ð "ñ .Ô-ð"ð" ×Ò˜BœLÑ)Ô)ðð ñ *Ô)ððð ð ðAFð AFð AFðH ×Ò˜RœX r¤zÐ2Ñ3Ô3ð%%ð %%ñ 4Ô3ð%%ðP ×Ò˜Rœ\¨2¬<Ð8Ñ9Ô9ð)ð )ñ :Ô9ð)ð  ×Ò˜BœLÑ)Ô)ð)ð )ñ *Ô)ð)ð ×Ò˜BœK¨Ñ1Ô1ð&ð &ñ 2Ô1ð&ð &ð &r1   