§
    ¢”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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¦  «        Z.ddl/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:  G d„ de;¦  «        Z< G d„ de<¦  «        Z=e= >                    ej?        d¦  «        d„ ¦   «         Z@d„ ZAdTd„ZBe= >                    ejC        ¦  «        d„ ¦   «         Z@e= >                    ejD        ¦  «        d„ ¦   «         Z@d „ ZEd!„ ZFe= >                    ejG        ¦  «        d"„ ¦   «         Z@e= >                    ejH        ¦  «        d#„ ¦   «         Z@d$„ ZIdUd%„ZJdUd&„ZKdVd(„ZLd)„ ZMe= >                    ejN        ¦  «        d*„ ¦   «         Z@dWd-„ZOe= >                    ejP        ¦  «        d.„ ¦   «         Z@e= >                    ejQ        ¦  «        d/„ ¦   «         Z@d0„ ZRd1„ ZSd2„ ZTd3„ ZUd4„ ZVe= >                    ejW        ¦  «        d5„ ¦   «         Z@e= >                    ejX        ¦  «        d6„ ¦   «         Z@e= >                    ejY        ¦  «        d7„ ¦   «         Z@ G d8„ d9e=¦  «        ZZeZ >                    ej[        ¦  «        d:„ ¦   «         Z@eZ >                    ejD        ¦  «        d;„ ¦   «         Z@eZ >                    ejC        ¦  «        d<„ ¦   «         Z@ G d=„ d>e=¦  «        Z\e\ >                    ej[        ¦  «        d?„ ¦   «         Z@e\ >                    ejD        ¦  «        d@„ ¦   «         Z@e\ >                    ejC        ¦  «        dA„ ¦   «         Z@ G dB„ dCe=¦  «        Z]dD„ Z^e] >                    ej_        ¦  «        dE„ ¦   «         Z@e] >                    ej[        ¦  «        dF„ ¦   «         Z@e] >                    ejD        ¦  «        dG„ ¦   «         Z@e] >                    ejC        ¦  «        dH„ ¦   «         Z@ G dI„ dJe]¦  «        Z`e` >                    eja        ¦  «        dK„ ¦   «         Z@e` >                    ejb        ¦  «        dL„ ¦   «         Z@dM„ ZcdN„ Zde` >                    eje        ejf        f¦  «        dO„ ¦   «         Z@e` >                    ejg        ejh        f¦  «        dP„ ¦   «         Z@e` >                    eji        ¦  «        dQ„ ¦   «         Z@e` >                    ejj        dR¦  «        dS„ ¦   «         Z@dS )Xz4
Merge OpenType Layout tables (GDEF / GPOS / GSUB).
é    N)Úior)ÚMAX_PAINT_COLR_LAYER_COUNTÚLayerReuseCache)ÚclassifyTools)ÚotRound)Úbuild_n_ary_tree)ÚotTables)ÚotBase)Ú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     úf/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/fontTools/varLib/merger.pyÚ__init__zMerger.__init__/   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__Úappendr2   Ú
setdefault)ÚmethodÚdoneÚclazzr2   Ú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ð+ð �4r0   )r(   Ú__dict__r2   ÚtypeÚenumÚEnumMetaÚstr)r=   r>   r<   r?   s   ``` r.   ÚmergerzMerger.merger4   sŽ   øøø€ à•vŠ~ˆ~ˆ~Ð9‰~Œ~ˆ~Ø˜DœMÐ)Ð)ØˆDŒLÝ�‰=Œ=�T¥4¤=Ð1Ð1Ð1Ø�jˆGÝ�‰;Œ;�#ÒÐØ�HˆEð	ð 	ð 	ð 	ð 	ð 	ð 	ð  ˆr0   c                 ó¾   — t          |¦  «        }|                      ¦   «         D ]8} t          | dd ¦  «        }|€ n"| j                             |d ¦  «        }|�|c S Œ9|S )Nr2   )rA   ÚmroÚgetattrr2   Úget)r=   ÚthingÚ_defaultÚtypr2   Úms         r.   Ú
mergersForzMerger.mergersForP   sp   € å�5‰kŒkˆà—H’H‘J”Jð 	ð 	ˆDÝ˜d I¨tÑ4Ô4ˆGØˆØ�à”× Ò   dÑ+Ô+ˆAØˆ}Ø���ð ð ˆr0   © 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ÚvrW   s     €r.   ú	<genexpr>z&Merger.mergeObjects.<locals>.<genexpr>f   s>   øè è € Ð?Ð?°a�4�6¥$ q¡'¤'§,¢,¡.¤.Ñ1Ô1Ò1Ð?Ð?Ð?Ð?Ð?Ð?r0   c                 ój   — g | ]0}t          t          |¦  «                             ¦   «         ¦  «        ‘Œ1S rO   rT   ©rX   rY   s     r.   ú
<listcomp>z'Merger.mergeObjects.<locals>.<listcomp>h   s.   € Ð)NÐ)NÐ)NÀQ­&µ°a±´·²±´Ñ*@Ô*@Ð)NÐ)NÐ)Nr0   ©ÚexpectedÚgotÚ*c                 ó0   •— g | ]}t          |‰¦  «        ‘ŒS rO   ©rH   )rX   ÚtableÚkeys     €r.   r]   z'Merger.mergeObjects.<locals>.<listcomp>q   s#   ø€ Ð?Ð?Ð?°%�' %¨Ñ-Ô-Ð?Ð?Ð?r0   ú.)ÚhasattrrQ   rU   rV   rW   Úallr!   rN   rI   Ú	__class__ÚmergeThingsrH   r&   Ústackr6   )r-   ÚoutÚlstÚexcludeÚitemr2   ÚdefaultMergerÚvalueÚvaluesÚ
mergerFuncÚere   rW   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 rO   ©Úlen©rX   Úxs     r.   r]   z%Merger.mergeLists.<locals>.<listcomp>z   s   € Ð=RÐ=RÐ=RÈ½cÀ!¹f¼fÐ=RÐ=RÐ=Rr0   r^   z[%d])	r   ry   r    Ú	enumerateÚziprj   r&   rk   r6   )r-   rl   rm   Úirq   rr   rt   s          r.   Ú
mergeListszMerger.mergeListsx   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 rO   )rA   r5   rz   s     r.   r]   z&Merger.mergeThings.<locals>.<listcomp>…   s!   € Ð7VÐ7VÐ7VÈQ½¸Q¹¼Ô8HÐ7VÐ7VÐ7Vr0   r^   r@   )r   rA   r   r5   rN   rI   Ú
isinstancerB   ÚEnumr   rg   ru   Úlistr   )r-   rl   rm   rs   s       r.   rj   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r0   c                 óÖ   ‡— |D ]dŠ‰|vrŒ	 || _         |                      |‰         ˆfd„|D ¦   «         ¦  «         Œ8# t          $ r }|j                             ‰¦  «         ‚ d }~ww xY wd S )Nc                 ó:   •— g | ]}|                      ‰¦  «        ‘ŒS rO   ©rI   )rX   rM   Útags     €r.   r]   z&Merger.mergeTables.<locals>.<listcomp>�   s#   ø€ Ð,MÐ,MÐ,M¸A¨Q¯UªU°3©Z¬ZÐ,MÐ,MÐ,Mr0   )r,   rj   r&   rk   r6   )r-   r+   Úmaster_ttfsÚ	tableTagsrt   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*   )rO   )r5   Ú
__module__Ú__qualname__r/   ÚclassmethodrE   rN   ru   r   rj   r‹   rO   r0   r.   r(   r(   .   s¯   € € € € € ðð ð ð ð
 ðð ð ñ „[ðð6 Ø)+ð ð ð ñ „[ððð ð ð ð2ð ð ðDð Dð Dð*	ð 	ð 	ð 	ð 	r0   r(   c                   ó   — e Zd ZdS )ÚAligningMergerN)r5   rŒ   r�   rO   r0   r.   r�   r�   ¦   s   € € € € € Ø€Dr0   r�   ÚGlyphClassDefc                 óˆ  ‡— |€#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 rO   )Ú	classDefs©rX   Úls     r.   r]   zmerge.<locals>.<listcomp>±   s   € Ð
$Ð
$Ð
$˜1ˆ1Œ;Ð
$Ð
$Ð
$r0   c                 ó6   — g | ]}|                      ¦   «         ‘ŒS rO   )rW   r•   s     r.   r]   zmerge.<locals>.<listcomp>·   s    € Ð+Ð+Ð+ !�Q—V’V‘X”XÐ+Ð+Ð+r0   c              3   óB   •K  — | ]}|                      ‰¦  «        V — Œd S r*   r‡   )rX   r–   Úks     €r.   rZ   zmerge.<locals>.<genexpr>¹   s-   øè è € Ð2Ð2¨˜AŸEšE !™HœHÐ2Ð2Ð2Ð2Ð2Ð2r0   r   rf   )r_   r`   rk   )r   r   r”   ÚsetÚupdater   r   r   )rE   r-   rm   ÚallKeysÚ	allValuesr™   s        @r.   r4   r4   ª   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ð	#ð 	#r0   c                 óò   ‡ — ‰ j         dk    r‰ S t          j        ¦   «         }d|_         ‰ j        |_        ‰ j        |_        ˆ fd„|j        j        D ¦   «         |_        t          |j        ¦  «        |_        |S )Né   c                 ó   •— g | ]	}‰j         ‘Œ
S rO   ©ÚValue)rX   Ú_r-   s     €r.   r]   z._SinglePosUpgradeToFormat2.<locals>.<listcomp>Ì   s   ø€ Ð9Ð9Ð9 �”Ð9Ð9Ð9r0   )	ÚFormatÚotÚ	SinglePosÚCoverageÚValueFormatÚglyphsr¢   ry   Ú
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à€Jr0   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 rO   )rš   r•   s     r.   r]   z&_merge_GlyphOrders.<locals>.<listcomp>Û   s   € Ð)Ð)Ð) •S˜‘V”VÐ)Ð)Ð)r0   c                 óH   — g | ]\  }}d „ t          ||¦  «        D ¦   «         ‘Œ S )c                 ó   — i | ]\  }}||“Œ	S rO   rO   )rX   ÚgrY   s      r.   ú
<dictcomp>z1_merge_GlyphOrders.<locals>.<listcomp>.<dictcomp>Ý   s   € Ð2Ð2Ð2™t˜q !�a˜Ð2Ð2Ð2r0   )r}   )rX   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ÐUr0   ©re   c              3   óB   •K  — | ]}t          |‰¬ ¦  «        |k    V — ŒdS )r´   N)rU   )rX   r³   ÚsortKeys     €r.   rZ   z%_merge_GlyphOrders.<locals>.<genexpr>ä   s5   øè è € Ð;Ð;°�v�b˜gÐ&Ñ&Ô&¨"Ò,Ð;Ð;Ð;Ð;Ð;Ð;r0   c                 ó0   •‡— g | ]Šˆˆfd „‰D ¦   «         ‘ŒS )c                 ó    •— g | ]
}|‰v r|n‰‘ŒS rO   rO   ©rX   ÚglyphÚdefaultÚdict_sets     €€r.   r]   z1_merge_GlyphOrders.<locals>.<listcomp>.<listcomp>ë   s'   ø€ ÐHÐHÐH¸�e˜xÐ'Ð'ˆUˆU¨WÐHÐHÐHr0   rO   ©rX   r¼   r»   Úorders    @€€r.   r]   z&_merge_GlyphOrders.<locals>.<listcomp>ê   sB   øø€ ð 
ð 
ð 
àð IÐHÐHÐHÐHÀ%ÐHÑHÔHð
ð 
ð 
r0   c                 ó0   •‡— g | ]Šˆˆfd „‰D ¦   «         ‘ŒS )c                 ó,   •— g | ]}|‰v r‰|         n‰‘ŒS rO   rO   r¹   s     €€r.   r]   z1_merge_GlyphOrders.<locals>.<listcomp>.<listcomp>ñ   s+   ø€ ÐRÐRÐRÀ5 ¨Ð 1Ð 1ˆX�eŒ_ˆ_°wÐRÐRÐRr0   rO   r½   s    @€€r.   r]   z&_merge_GlyphOrders.<locals>.<listcomp>ð   sB   øø€ ð 
ð 
ð 
àð SÐRÐRÐRÐRÈEÐRÑRÔRð
ð 
ð 
r0   )	r}   rš   r›   ÚgetReverseGlyphMapÚ__getitem__rU   rh   r"   ry   )
r+   rm   Ú
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™?œ?Ò*Ð*Ð*Ð*ð
ð 
ð 
ð 
ð 
à%ð
ñ 
ô 
ˆð �&ˆ=Ðr0   c                 óz   — |d         j                              ¦   «         |_         |                      ||¦  «         d S ©Nr   ©r@   Úcopyru   ©rE   r-   rm   s      r.   r4   r4   ÷   ó9   € ð ˜”F”O×(Ò(Ñ*Ô*€D„MØ
×Ò˜˜cÑ"Ô"Ð"Ð"Ð"r0   c                 óz   — |d         j                              ¦   «         |_         |                      ||¦  «         d S rÊ   rË   rÍ   s      r.   r4   r4   ÿ   rÎ   r0   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)	rA   r¥   r¦   r§   r©   r¤   r¢   Úindexr%   )rE   Ú	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Øˆ4r0   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Ò   )rA   r¥   ÚPairPosr§   r©   r¤   ÚPairSetrÔ   ÚPairValueRecordÚSecondGlyphÚ	ClassDef1r”   rI   Ú	ClassDef2ÚClass1RecordÚClass2Recordr%   )
rE   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Øˆ4r0   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 rO   ©r¨   r•   s     r.   r]   zmerge.<locals>.<listcomp>6  s   € Ð8TÐ8TÐ8TÈ1¸¼Ð8TÐ8TÐ8Tr0   r   r   iðÿÿÿrÑ   rÒ   c              3   ó,   K  — | ]}|j         d k    V — ŒdS )r   N©r¤   r\   s     r.   rZ   zmerge.<locals>.<genexpr><  s(   è è € Ð
&Ð
&˜Qˆ1Œ8�qŠ=Ð
&Ð
&Ð
&Ð
&Ð
&Ð
&r0   c              3   ó8   •K  — | ]}‰|j         j        k    V — Œd S r*   ©r§   r©   )rX   rY   ÚcoverageGlyphss     €r.   rZ   zmerge.<locals>.<genexpr><  s>   øè è € ð /ð /Ø01ˆ˜!œ*Ô+Ò+ð/ð /ð /ð /ð /ð /r0   c                 óP   — g | ]#}|j         �|j         nt          j        ¦   «         ‘Œ$S r*   )r¢   r
   ÚValueRecordr\   s     r.   r]   zmerge.<locals>.<listcomp>F  s.   € ÐWÐWÐWÈa˜AœGÐ/�”�µVÔ5GÑ5IÔ5IÐWÐWÐWr0   rŸ   c                 ó,   — g | ]}t          |¦  «        ‘ŒS rO   )r¬   r\   s     r.   r]   zmerge.<locals>.<listcomp>M  s!   € Ð
6Ð
6Ð
6¨QÕ% aÑ(Ô(Ð
6Ð
6Ð
6r0   c                 ó&   — g | ]}|j         j        ‘ŒS rO   rï   r\   s     r.   r]   zmerge.<locals>.<listcomp>Q  s   € Ð5Ð5Ð5¨A�a”jÔ'Ð5Ð5Ð5r0   c                 ó   — g | ]	}|j         ‘Œ
S rO   r¡   r\   s     r.   r]   zmerge.<locals>.<listcomp>Q  s   € Ð7MÐ7MÐ7MÀA¸¼Ð7MÐ7MÐ7Mr0   c                 ó8   •— g | ]}t          j        ‰¦  «        ‘ŒS rO   )r
   rò   )rX   r£   ÚvalueFormats     €r.   r]   zmerge.<locals>.<listcomp>U  s$   ø€ ÐBÐBÐB°a•&Ô$ [Ñ1Ô1ÐBÐBÐBr0   )r¤   r§   r¢   rª   r¨   ©rn   c                 ó6   — g | ]}|                      ¦   «         ‘ŒS rO   )ÚgetEffectiveFormatr\   s     r.   r]   zmerge.<locals>.<listcomp>n  s$   € Ð@Ð@Ð@°�Q×)Ò)Ñ+Ô+Ð@Ð@Ð@r0   )r   ÚintÚ__or__r¨   ry   r%   r§   r©   rh   r
   rò   r¢   rj   Ú	getFormatr¤   rÈ   r+   rª   r|   rÖ   Úlookup_subtablesr   ru   )rE   r-   rm   r©   rÇ   r~   rr   Újrº   rY   rð   r÷   s             @@r.   r4   r4   4  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ÔÐÐr0   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 rO   ©rÜ   r\   s     r.   r]   z$merge.<locals>.<listcomp>.<listcomp>w  ó   € Ð	4Ð	4Ð	4˜Aˆ!Œ-Ð	4Ð	4Ð	4r0   ©rÛ   ©rX   r³   s     r.   r]   zmerge.<locals>.<listcomp>w  ó*   € ÐCÐCÐC¸Ð	4Ð	4 Ô!3Ð	4Ñ	4Ô	4ÐCÐCÐCr0   c                 ó   — g | ]	}|j         ‘Œ
S rO   r  r  s     r.   r]   zmerge.<locals>.<listcomp>x  ó   € Ð*Ð*Ð* ˆÔ	Ð*Ð*Ð*r0   ©NNÚValue1ÚValue2)Úsrc)rÈ   r+   rÛ   r¥   rÜ   ÚvalueFormat1r
   rò   r  ÚvalueFormat2r  r6   ry   ÚPairValueCountr|   rè   rþ   Ú_firstGlyphrH   r   )rE   r-   rm   r©   rÇ   Úpvrsrº   rä   r~   rr   rÿ   rY   ÚvpairÚv1Úv2s                  r.   r4   r4   r  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Ð3r0   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Ð7r0   úReport bug against fonttools.)r§   rÚ   ÚPairSetCountÚValueFormat1r  rø   r   c                 ó&   — g | ]}|j         j        ‘ŒS rO   rï   r\   s     r.   r]   z)_PairPosFormat1_merge.<locals>.<listcomp>»  ó   € Ð(Ð(Ð(˜qˆŒÔ	Ð(Ð(Ð(r0   c                 ó   — g | ]	}|j         ‘Œ
S rO   ©rÚ   r\   s     r.   r]   z)_PairPosFormat1_merge.<locals>.<listcomp>¼  s   € Ð Ð Ð �qˆŒÐ Ð Ð r0   ©r»   c                 ó4   — g | ]}t          j        ¦   «         ‘ŒS rO   )r¥   rÚ   )rX   r£   s     r.   r]   z)_PairPosFormat1_merge.<locals>.<listcomp>Á  s   € Ð1Ð1Ð1 Q•B”J‘L”LÐ1Ð1Ð1r0   )r   ru   r¥   rÚ   rÛ   r  rÈ   r+   r§   r©   ry   r  r}   r  r   )r-   rm   rE   Ú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Ñ+Ô+Ð+Ð+Ð+r0   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”   Úmaxrr   Úranger6   rš   ÚitemsÚaddÚintersection_updateÚdifference_update)
r-   Ú	allGlyphsr”   rM   r«   r£   r™   rY   Úclass0Úss
             r.   Ú_ClassDef_invertr2  É  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Ñ'Ô'Ð'Ð'à€Jr0   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”   ry   r   Ú
Classifierr}   r2  r›   Ú
getClassesÚinsertrš   r|   )rm   ÚallGlyphsesr-   r”   ÚallGlyphsesWasNoneÚ
classifierÚclassDefr/  ÚsetsÚclassesr~   ÚclassSetr±   s                r.   Ú_ClassDef_merge_classifyr?  å  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ð	ð �ˆ=Ðr0   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 rO   )rß   r•   s     r.   r]   z2_PairPosFormat2_align_matrices.<locals>.<listcomp>  s   € Ð,Ð,Ð, 1�”Ð,Ð,Ð,r0   c                 ó   — g | ]	}|j         ‘Œ
S rO   )rÝ   r•   s     r.   r]   z2_PairPosFormat2_align_matrices.<locals>.<listcomp>  s   € Ð"Ð"Ð"˜ˆŒÐ"Ð"Ð"r0   c                 ó&   — g | ]}|j         j        ‘ŒS rO   rï   r•   s     r.   r]   z2_PairPosFormat2_align_matrices.<locals>.<listcomp>  s   € Ð$DÐ$DÐ$D¸1 Q¤ZÔ%6Ð$DÐ$DÐ$Dr0   r   c                 ó   — g | ]	}|j         ‘Œ
S rO   )rÞ   r•   s     r.   r]   z2_PairPosFormat2_align_matrices.<locals>.<listcomp>4  s   € Ð7QÐ7QÐ7QÈ¸¼Ð7QÐ7QÐ7Qr0   )r?  rÝ   ry   ÚClass1Countr}   rš   r§   r©   r”   ÚnextÚiterr¥   rß   rà   r*  ÚClass2Countr  r
   rò   r  r  r  r6   rI   rÞ   rÌ   Údeepcopy)r-   rm   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Øà€Or0   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>P  ó&   € Ð<Ð<Ð< ¨Q¬^Ð<ˆŒ˜1Ò	Ð<Ð<Ð<r0   r  )r§   rÝ   rE  rÞ   rH  rß   r  r  rø   c                 ó&   — g | ]}|j         j        ‘ŒS rO   rï   r\   s     r.   r]   z)_PairPosFormat2_merge.<locals>.<listcomp>c  s   € Ð0PÐ0PÐ0PÀq°´Ô1BÐ0PÐ0PÐ0Pr0   éÿÿÿÿr   )r   ru   rÈ   r+   r§   r©   r}   rþ   r\  r„   rß   r   )r-   rm   rE   r©   r£   r–   rÕ   rK  s           r.   Ú_PairPosFormat2_mergerc  N  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Ð2r0   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 rO   ©r  r•   s     r.   r]   zmerge.<locals>.<listcomp>z  ó   € Ð1Ð1Ð1¨�Q”^Ð1Ð1Ð1r0   r   c                 ó   — g | ]	}|j         ‘Œ
S rO   ©r  r•   s     r.   r]   zmerge.<locals>.<listcomp>}  rg  r0   r   rŸ   rØ   rÒ   r  r  )r   rû   rü   r  r  r  r  r¤   r&  rc  r%   rÚ   rÛ   rH   rý   rß   rà   )rE   r-   rm   Úvf1Úvf2ÚpairSetÚpairValueRecordÚpv1Úpv2Úclass1RecordÚclass2Records              r.   r4   r4   w  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ÔÐÐr0   Ú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.   rZ   z,_MarkBasePosFormat1_merge.<locals>.<genexpr>¤  s$   è è € Ð4Ð4¨1˜!œ,Ð4Ð4Ð4Ð4Ð4Ð4r0   c                 ó@   •— g | ]}t          |‰d z   ¦  «        j        ‘ŒS ©r§   ©rH   r©   ©rX   r–   rr  s     €r.   r]   z-_MarkBasePosFormat1_merge.<locals>.<listcomp>¨  ó+   ø€ Ð;Ð;Ð;°!���D˜:Ñ%Ñ	&Ô	&Ô	-Ð;Ð;Ð;r0   c                 ó@   •— g | ]}t          |‰d z   ¦  «        j        ‘ŒS )ÚArray)rH   Ú
MarkRecordrz  s     €r.   r]   z-_MarkBasePosFormat1_merge.<locals>.<listcomp>©  s*   ø€ Ð<Ð<Ð<°1���D˜7‘NÑ	#Ô	#Ô	.Ð<Ð<Ð<r0   r§   c                 ó@   •— g | ]}t          |‰d z   ¦  «        j        ‘ŒS rx  ry  ©rX   r–   rs  s     €r.   r]   z-_MarkBasePosFormat1_merge.<locals>.<listcomp>¯  r{  r0   c           	      óX   •— g | ]&}t          t          |‰d z   ¦  «        ‰dz   ¦  «        ‘Œ'S )r}  ÚRecordrc   r€  s     €r.   r]   z-_MarkBasePosFormat1_merge.<locals>.<listcomp>°  s5   ø€ ÐKÐKÐKÀ!�•˜˜D 7™NÑ+Ô+¨T°H©_Ñ	=Ô	=ÐKÐKÐKr0   c                 ó    — g | ]}|®|j         ‘ŒS r*   )ÚClass©rX   Úrs     r.   r]   z-_MarkBasePosFormat1_merge.<locals>.<listcomp>·  s   € ÐEÐEÐE !°q°}�a”g°}°}°}r0   r   r^   c                 ó$   — g | ]}|€d n|j         ‘ŒS r*   )Ú
MarkAnchorr…  s     r.   r]   z-_MarkBasePosFormat1_merge.<locals>.<listcomp>Î  s"   € ÐTÐTÐTÀ! ! )˜$˜$°´ÐTÐTÐTr0   r   r}  r‚  ÚAnchorc                 ó>   •— g | ]}|€g nt          |‰dz   ¦  «        ‘ŒS )Nr‰  rc   )rX   r†  rs  s     €r.   r]   z-_MarkBasePosFormat1_merge.<locals>.<listcomp>å  s<   ø€ ð ð ð ØEF�a�i��¥W¨Q°°x±Ñ%@Ô%@ðð ð r0   ÚCount)r)  rv  rÈ   r+   rH   r©   r}   r   r   r¥   r~  r„  r   r‰  r¤   rj   rˆ  r6   Ú	MarkArrayry   Ú	MarkCountÚsetattrÚextend)r-   rm   rE   rr  rs  Ú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�$˜‘. %Ñ(Ô(Ð(Ð(Ð(r0   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.   rZ   zmerge.<locals>.<genexpr>û  ó$   è è € Ð#:Ð#:° A¤HÐ#:Ð#:Ð#:Ð#:Ð#:Ð#:r0   zmark-to-base positioning lookupc                 ó   — g | ]	}|j         ‘Œ
S rO   rí   r•   s     r.   r]   zmerge.<locals>.<listcomp>   ó   € Ð'Ð'Ð'˜a�”Ð'Ð'Ð'r0   ©rÓ   r_   r`   r   rÒ   ©r   r¤   r$   rœ  r%   rÍ   s      r.   r4   r4   ù  s“   € å�d”kÐ#:Ð#:°cÐ#:Ñ#:Ô#:Ñ;Ô;ð 
Ý!ØØ6Ø”[Ø'Ð' 3Ð'Ñ'Ô'ð	
ñ 
ô 
ð 	
ð „{�aÒÐÝ! $¨¨VÑ4Ô4Ð4Ð4Ð4å Ð1RÐSÑSÔSÐSr0   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.   rZ   zmerge.<locals>.<genexpr>
  rŸ  r0   zmark-to-mark positioning lookupc                 ó   — g | ]	}|j         ‘Œ
S rO   rí   r•   s     r.   r]   zmerge.<locals>.<listcomp>  r¡  r0   r¢  r   ÚMark1ÚMark2rÒ   r£  rÍ   s      r.   r4   r4     s—   € å�d”kÐ#:Ð#:°cÐ#:Ñ#:Ô#:Ñ;Ô;ð 
Ý!ØØ6Ø”[Ø'Ð' 3Ð'Ñ'Ô'ð	
ñ 
ô 
ð 	
ð „{�aÒÐÝ! $¨¨V°W¸gÑFÔFÐFÐFÐFå Ð1RÐSÑSÔSÐSr0   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 rO   r  r\   s     r.   r]   z/_PairSet_flatten.<locals>.<listcomp>.<listcomp>  r  r0   r  r  s     r.   r]   z$_PairSet_flatten.<locals>.<listcomp>  r  r0   c                 ó   — g | ]	}|j         ‘Œ
S rO   r  r  s     r.   r]   z$_PairSet_flatten.<locals>.<listcomp>  r	  r0   )
r¥   rÚ   r§   rÈ   r©   rÛ   r}   r6   ry   r  )rm   r+   r-   r©   rÇ   r  rr   rY   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Ôà€Kr0   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>2  r  r0   r  r   c                 ó   — g | ]	}|j         ‘Œ
S rO   rf  r•   s     r.   r]   z<_Lookup_PairPosFormat1_subtables_flatten.<locals>.<listcomp>8  ó   € Ð+HÐ+HÐ+H¸q¨A¬NÐ+HÐ+HÐ+Hr0   r   c                 ó   — g | ]	}|j         ‘Œ
S rO   ri  r•   s     r.   r]   z<_Lookup_PairPosFormat1_subtables_flatten.<locals>.<listcomp>9  r±  r0   c                 ó&   — g | ]}|j         j        ‘ŒS rO   rï   r\   s     r.   r]   z<_Lookup_PairPosFormat1_subtables_flatten.<locals>.<listcomp>=  s   € Ð.Ð.Ð. QˆqŒzÔ Ð.Ð.Ð.r0   c                 ó   — g | ]	}|j         ‘Œ
S rO   r"  r\   s     r.   r]   z<_Lookup_PairPosFormat1_subtables_flatten.<locals>.<listcomp>=  s   € Ð0HÐ0HÐ0H¸q°´Ð0HÐ0HÐ0Hr0   c                 óD   •— g | ]}t          d „ |D ¦   «         ‰¦  «        ‘ŒS )c                 ó   — g | ]}|®|‘ŒS r*   rO   r\   s     r.   r]   zG_Lookup_PairPosFormat1_subtables_flatten.<locals>.<listcomp>.<listcomp>B  s   € Ð=Ð=Ð= ¨q¨}˜!¨}¨}¨}r0   )r­  )rX   rr   r+   s     €r.   r]   z<_Lookup_PairPosFormat1_subtables_flatten.<locals>.<listcomp>A  sB   ø€ ð ð ð àõ 	Ð=Ð= VÐ=Ñ=Ô=¸tÑDÔDðð ð r0   )r   r¥   rÙ   r¤   r§   r   rû   rü   r  r  rÈ   r©   r}   rÚ   ry   r  )rm   r+   r-   r©   rÇ   s    `   r.   Ú(_Lookup_PairPosFormat1_subtables_flattenr·  0  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ÔØ€Kr0   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  r_  r•   s     r.   r]   z<_Lookup_PairPosFormat2_subtables_flatten.<locals>.<listcomp>K  r`  r0   r  rŸ   c                 ó   — g | ]	}|j         ‘Œ
S rO   rf  r•   s     r.   r]   z<_Lookup_PairPosFormat2_subtables_flatten.<locals>.<listcomp>Q  r±  r0   r   c                 ó   — g | ]	}|j         ‘Œ
S rO   ri  r•   s     r.   r]   z<_Lookup_PairPosFormat2_subtables_flatten.<locals>.<listcomp>R  r±  r0   c                 ó&   — g | ]}|j         j        ‘ŒS rO   rï   r\   s     r.   r]   z<_Lookup_PairPosFormat2_subtables_flatten.<locals>.<listcomp>U  ó   € Ð)IÐ)IÐ)IÀ¨!¬*Ô*;Ð)IÐ)IÐ)Ir0   T)rJ  c              3   ó$   K  — | ]}|j         V — Œd S r*   )rà   r…  s     r.   rZ   z;_Lookup_PairPosFormat2_subtables_flatten.<locals>.<genexpr>`  s$   è è € Ð;Ð;°˜aœnÐ;Ð;Ð;Ð;Ð;Ð;r0   c              3   ó   K  — | ]}|®|V — Œ	d S r*   rO   ©rX   Úcs     r.   rZ   z;_Lookup_PairPosFormat2_subtables_flatten.<locals>.<genexpr>a  s"   è è € Ð=Ð= !¨q¨}˜A¨}¨}¨}¨}Ð=Ð=r0   )r   r¥   rÙ   r¤   r§   r   rû   rü   r  r  rÈ   r©   r\  rß   r}   r6   rà   r„   rF  rG  )rm   r+   r-   r©   r£   rK  rM  ÚrowsÚrowÚcolsÚcols              r.   Ú(_Lookup_PairPosFormat2_subtables_flattenrÆ  I  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ð	ð €Kr0   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„   ry   r¤   r·  rÆ  )rm   r+   r–   r~   s       r.   Ú&_Lookup_PairPos_subtables_canonicalizerÈ  g  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à€Jr0   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 rO   rï   r\   s     r.   r]   z7_Lookup_SinglePos_subtables_flatten.<locals>.<listcomp>}  r½  r0   rŸ   r   )rÈ   ry   r¥   r¦   r¤   r¨   r§   r©   rª   r¢   rÔ   rÌ   rI  r|   )rm   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€Lr0   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 rO   rï   r•   s     r.   r]   zmerge.<locals>.<listcomp>™  r   r0   c                 ó   — g | ]	}|j         ‘Œ
S rO   )ÚEntryExitRecordr•   s     r.   r]   zmerge.<locals>.<listcomp>š  s   € Ð(Ð(Ð(˜qˆÔ	Ð(Ð(Ð(r0   r   )rÈ   r+   r¤   r¥   r§   r©   rÕ  r‰  ÚEntryAnchorÚ
ExitAnchorr6   r   ry   ÚEntryExitCount)rE   r-   rm   r©   rÇ   r£   rå   s          r.   r4   r4   ”  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ÔÐÐr0   c                 ó²   — t          d„ |D ¦   «         ¦  «        rd |_        t          d„ |D ¦   «         ¦  «        rd |_        |                      ||¦  «         d S )Nc              3   ó(   K  — | ]}|j         d u V — Œd S r*   )rÖ  ©rX   Úmasters     r.   rZ   zmerge.<locals>.<genexpr>®  s*   è è € Ð
8Ð
8¨&ˆ6Ô Ð%Ð
8Ð
8Ð
8Ð
8Ð
8Ð
8r0   c              3   ó(   K  — | ]}|j         d u V — Œd S r*   )r×  rÛ  s     r.   rZ   zmerge.<locals>.<genexpr>°  s*   è è € Ð
7Ð
7¨ˆ6Ô Ð$Ð
7Ð
7Ð
7Ð
7Ð
7Ð
7r0   )rh   rÖ  r×  ru   rÍ   s      r.   r4   r4   ¬  sk   € å
Ð
8Ð
8°CÐ
8Ñ
8Ô
8Ñ8Ô8ð  ØˆÔÝ
Ð
7Ð
7°3Ð
7Ñ
7Ô
7Ñ7Ô7ð ØˆŒØ
×Ò˜˜cÑ"Ô"Ð"Ð"Ð"r0   c                 óx  ‡ ‡‡— 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        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(          |	¦  «        Št+          |j        ‰ j        ‰¦  «        |_        ˆ ˆfd„|D ¦   «         x}‰ _         d}
nd}
‰                      |j        |¦  «         t/          |j        ¦  «        |_        |�rit/          |j        ¦  «        dk    r|j        d         j        dk    sJ ‚|j        d         j        j        s*|j                             d¦  «         |xj        dz  c_        t/          |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t?          ¦   «         ¬¦  «        }|dk    rSt@           !                    d¦  «         tE          ‰ j        ||j        ¦  «        |_        t/          |j        ¦  «        |_        nh|rf|
rd|j        d         }|j        j        }d„ t          ||j#        ¦  «        D ¦   «         }tI          |‰ j         %                    ¦   «         ¦  «        |_        ‰  &                    ||ddg¬¦  «         ‰ ` d S )Nc                 ó   — g | ]	}|j         ‘Œ
S rO   )ÚSubTabler•   s     r.   r]   zmerge.<locals>.<listcomp>·  s   € Ð*CÐ*CÐ*C¸!¨1¬:Ð*CÐ*CÐ*Cr0   r   Ú	Extensionc                 ó   — g | ]	}|j         ‘Œ
S rO   ©ri   ©rX   Ústs     r.   r]   zmerge.<locals>.<listcomp>¾  s   € Ð8Ð8Ð8¨b˜Rœ\Ð8Ð8Ð8r0   c                 ó&   — g | ]}|j         j        ‘ŒS rO   )ri   r5   rä  s     r.   r]   zmerge.<locals>.<listcomp>Â  s   € Ð=Ð=Ð=°2˜œÔ.Ð=Ð=Ð=r0   r^   c                 ó   — g | ]	}|j         ‘Œ
S rO   )ÚExtensionLookupTyperä  s     r.   r]   zmerge.<locals>.<listcomp>Ä  s   € ÐBÐBÐB¸˜RÔ3ÐBÐBÐBr0   c                 ó   — g | ]	}|j         ‘Œ
S rO   )ÚExtSubTablerä  s     r.   r]   zmerge.<locals>.<listcomp>Ç  s   € Ð4Ð4Ð4¨"�r”~Ð4Ð4Ð4r0   c                 ó:   •— g | ]}t          |‰j        ¦  «        ‘ŒS rO   )rÈ  r+   )rX   rå  rE   s     €r.   r]   zmerge.<locals>.<listcomp>Ô  s3   ø€ ð /
ð /
ð /
ØHJÕ2°2°v´{ÑCÔCð/
ð /
ð /
r0   c                 ó,   — g | ]}t          |¦  «        ‘ŒS rO   rx   rä  s     r.   r]   zmerge.<locals>.<listcomp>Ú  s   € Ð8Ð8Ð8¨�C ™GœGÐ8Ð8Ð8r0   c                 ó(   •— g | ]}|‰d          k    ‘ŒS r  rO   )rX   ÚnumsÚnumSubtabless     €r.   r]   zmerge.<locals>.<listcomp>Û  s"   ø€ ÐIÐIÐI°D˜ ¨Q¤Ò/ÐIÐIÐIr0   c                 ó&   — g | ]}|D ]	}|j         ‘Œ
ŒS rO   rë   )rX   rå  Úts      r.   r]   zmerge.<locals>.<listcomp>ß  s'   € Ð"QÐ"QÐ"Q°RÈbÐ"QÐ"QÈ 1¤=Ð"QÐ"QÐ"QÐ"Qr0   c                 ó<   •— g | ]}t          |‰j        ‰¦  «        ‘ŒS rO   )rÑ  r+   )rX   rå  rE   Úmirfs     €€r.   r]   zmerge.<locals>.<listcomp>å  s7   ø€ ð 7ð 7ð 7àõ 8¸¸F¼KÈÑNÔNð7ð 7ð 7r0   TFr   rb  rŸ   z0fontTools.otlLib.optimize.gpos:COMPRESSION_LEVELr#  zCompacting GPOS...c                 ó   — i | ]\  }}||“Œ	S rO   rO   )rX   rÐ  Ú	valRecords      r.   r²   zmerge.<locals>.<dictcomp>  s+   € ð 
ð 
ð 
Ù!1 ¨	ˆE�9ð
ð 
ð 
r0   rà  ÚSubTableCountrø   )'rþ   r„   r}   rà  ri   r5   Ú
startswithr   r#   rè  Ú
LookupTyper�  r‚   r¥   rÙ   rÈ  r+   r¦   rh   r   r   rÑ  r   ry   rö  r¤   r§   r©   ÚpopÚcfgrI   r   ÚlogÚinfor   r¢   r   rÁ   ru   )rE   r-   rm   rÕ   r–   ÚstsÚnew_stsÚ	isPairPosÚisSinglePosÚvalueFormatListÚ	flattenedÚlevelÚsinglePosTabler©   ÚsinglePosMappingró  rï  s   `              @@r.   r4   r4   µ  sÅ  øøø€ à*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ÑÔÐøà”Ð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àÐÐÐr0   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(   r/   ÚmodelÚlocationÚgetMasterScalarsÚmasterScalars)r-   r+   r	  r
  s       r.   r/   zInstancerMerger.__init__#  s@   € Ý�Š˜˜dÑ#Ô#Ð#ØˆŒ
Ø ˆŒØ"×3Ò3°HÑ=Ô=ˆÔÐÐr0   N©r5   rŒ   r�   Ú__doc__r/   rO   r0   r.   r  r    s-   € € € € € ðð ð>ð >ð >ð >ð >r0   r  c                 ó¤   — |j         dk    sJ ‚d„ |D ¦   «         }| j        }| j        }t          |                     ||¦  «        ¦  «        |_        d S )Nr   c                 ó   — g | ]	}|j         ‘Œ
S rO   ©Ú
Coordinate©rX   Úas     r.   r]   zmerge.<locals>.<listcomp>-  s   € Ð(Ð(Ð(˜qˆaŒlÐ(Ð(Ð(r0   )r¤   r	  r  r   ÚinterpolateFromValuesAndScalarsr  )rE   r-   rm   ÚCoordsr	  r  s         r.   r4   r4   *  s_   € àŒ;˜!ÒÐÐÐØ(Ð( CÐ(Ñ(Ô(€FØŒL€EØÔ(€MÝØ×-Ò-¨f°mÑDÔDñô €D„O€O€Or0   c                 ó  — |j         dk    sJ ‚d„ |D ¦   «         }d„ |D ¦   «         }| j        }| j        }t          |                     ||¦  «        ¦  «        |_        t          |                     ||¦  «        ¦  «        |_        d S )Nr   c                 ó   — g | ]	}|j         ‘Œ
S rO   ©ÚXCoordinater  s     r.   r]   zmerge.<locals>.<listcomp>8  ó   € Ð*Ð*Ð* ˆqŒ}Ð*Ð*Ð*r0   c                 ó   — g | ]	}|j         ‘Œ
S rO   ©ÚYCoordinater  s     r.   r]   zmerge.<locals>.<listcomp>9  r  r0   )r¤   r	  r  r   r  r  r  )rE   r-   rm   ÚXCoordsÚYCoordsr	  r  s          r.   r4   r4   5  sœ   € àŒ;˜!ÒÐÐÐØ*Ð* cÐ*Ñ*Ô*€GØ*Ð* cÐ*Ñ*Ô*€GØŒL€EØÔ(€MÝØ×-Ò-¨g°}ÑEÔEñô €DÔõ Ø×-Ò-¨g°}ÑEÔEñô €DÔÐÐr0   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  rc   ©rX   r  Únames     €r.   r]   zmerge.<locals>.<listcomp>R  s%   ø€ Ð7Ð7Ð7¨a•g˜a  qÑ)Ô)Ð7Ð7Ð7r0   )r	  r  rg   r   r  rŽ  )	rE   r-   rm   r	  r  Ú	tableNamerr   rq   r-  s	           @r.   r4   r4   D  s«   ø€ àŒL€EØÔ(€Mðð 'ð '‰ˆˆiõ ˜4 Ñ+Ô+Ð+Ð+Ð+å�4˜ÑÔð 	'Ø7Ð7Ð7Ð7°3Ð7Ñ7Ô7ˆFÝØ×5Ò5°f¸mÑLÔLñô ˆEõ �D˜$ Ñ&Ô&Ð&øð'ð 'r0   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(   r/   Ú	instancerÚdeleteVariations)r-   r+   r2  r3  s       r.   r/   zMutatorMerger.__init__d  s+   € Ý�Š˜˜dÑ#Ô#Ð#Ø"ˆŒØ 0ˆÔÐÐr0   N©Tr  rO   r0   r.   r0  r0  ^  s2   € € € € € ðð ð
1ð 1ð 1ð 1ð 1ð 1r0   r0  c                 óB  — |d         j                              ¦   «         |_         |j        dk    rd S | j        }|j        }| j        r|`|rD|j        dk    sJ ‚|j        dz  |j        z   }t          ||         ¦  «        }|xj
        |z  c_
        | j        r	d|_        d S d S )Nr   é   é €  é   r   )r@   rÌ   r¤   r2  ÚDeviceTabler3  ÚDeltaFormatÚ	StartSizeÚEndSizer   r  )rE   r-   rm   r2  ÚdevÚvaridxÚdeltas          r.   r4   r4   j  sÀ   € ð ˜”F”O×(Ò(Ñ*Ô*€D„Mà„{�aÒÐØˆàÔ €IØ
Ô
€CØÔð ØÐØ
ð !ØŒ &Ò(Ð(Ð(Ð(Ø”- 2Ñ%¨¬Ñ4ˆÝ˜	 &Ô)Ñ*Ô*ˆØˆŒ˜5Ñ ˆŒàÔð ØˆŒˆˆðð r0   c           	      óÖ  — |d         j                              ¦   «         |_         |j        dk    rd S | j        }dD ]�}|dz   }t	          ||¦  «        sŒt          ||¦  «        }| j        rt          ||¦  «         |€ŒB|j        dk    sJ ‚|j	        dz  |j
        z   }t          ||         ¦  «        }|dz   }	t          ||	t          ||	¦  «        |z   ¦  «         Œž| j        r	d|_        d S d S )	Nr   r6  ÚXYr9  r7  r8  r  r   )r@   rÌ   r¤   r2  rg   rH   r3  Údelattrr:  r;  r<  r   rŽ  )
rE   r-   rm   r2  rY   r.  r=  r>  r?  r;   s
             r.   r4   r4   €  s  € ð ˜”F”O×(Ò(Ñ*Ô*€D„Mà„{�aÒÐØˆàÔ €IØð 9ð 9ˆØ˜Ñ%ˆ	Ý�t˜YÑ'Ô'ð 	ØÝ�d˜IÑ&Ô&ˆØÔ"ð 	%Ý�D˜)Ñ$Ô$Ð$Øˆ;ØàŒ &Ò(Ð(Ð(Ð(Ø”- 2Ñ%¨¬Ñ4ˆÝ˜	 &Ô)Ñ*Ô*ˆà�<ÑˆÝ��d�G D¨$Ñ/Ô/°%Ñ7Ñ8Ô8Ð8Ð8àÔð ØˆŒˆˆðð r0   c           
      ó�  — |d         j                              ¦   «         |_         | j        }dD ]—\  }}t          ||¦  «        sŒt	          ||¦  «        }| j        rt          ||¦  «         |€Œ@|j        dk    sJ ‚|j        dz  |j	        z   }t          ||         ¦  «        }t          ||t	          ||d¦  «        |z   ¦  «         Œ˜d S )Nr   r"  r7  r8  )r@   rÌ   r2  rg   rH   r3  rB  r:  r;  r<  r   rŽ  )	rE   r-   rm   r2  r-  r.  r=  r>  r?  s	            r.   r4   r4   ž  së   € ð ˜”F”O×(Ò(Ñ*Ô*€D„MàÔ €Iðð <ð <‰ˆˆiõ �t˜YÑ'Ô'ð 	ØÝ�d˜IÑ&Ô&ˆØÔ"ð 	%Ý�D˜)Ñ$Ô$Ð$Øˆ;ØàŒ &Ò(Ð(Ð(Ð(Ø”- 2Ñ%¨¬Ñ4ˆÝ˜	 &Ô)Ñ*Ô*ˆå��d�G D¨$°Ñ2Ô2°UÑ:Ñ;Ô;Ð;Ð;ð%<ð <r0   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(   r/   r   ÚOnlineVarStoreBuilderÚstore_builderÚsetModel)r-   r	  ÚaxisTagsr+   s       r.   r/   zVariationMerger.__init__Â  sA   € Ý�Š˜˜dÑ#Ô#Ð#Ý%Ô;¸HÑEÔEˆÔØ�Š�eÑÔÐÐÐr0   c                 óH   — || _         | j                             |¦  «         d S r*   )r	  rH  rI  )r-   r	  s     r.   rI  zVariationMerger.setModelÇ  s&   € ØˆŒ
ØÔ×#Ò# EÑ*Ô*Ð*Ð*Ð*r0   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)r`   c                 ó   — g | ]}|d u‘ŒS r*   rO   r\   s     r.   r]   z/VariationMerger.mergeThings.<locals>.<listcomp>Ø  s   € Ð$@Ð$@Ð$@°q Q¨d ]Ð$@Ð$@Ð$@r0   )
r   r   r,   r   r	  ÚgetSubModelrI  ÚsuperrE  rj   )r-   rl   rm   ÚmasterModelÚorigTTFsr	  ri   s         €r.   rj   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ð	!ð 	!r0   )r5   rŒ   r�   r  r/   rI  rj   Ú__classcell__rã  s   @r.   rE  rE  ¾  s`   ø€ € € € € ðð ðð ð ð
+ð +ð +ð!ð !ð !ð !ð !ð !ð !ð !ð !r0   rE  c                 ó�   — t          |¦  «        r
|d         d fS |                      |¦  «        \  }}|t          j        |¦  «        fS rÊ   )r   ÚstoreMastersr   ÚbuildVarDevTable)rH  Úmaster_valuesÚbaseÚvarIdxs       r.   rU  rU  æ  sO   € Ý�ÑÔð &Ø˜QÔ Ð%Ð%Ø ×-Ò-¨mÑ<Ô<�L€Dˆ&Ø•Ô)¨&Ñ1Ô1Ð1Ð1r0   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 rO   r  r  s     r.   r]   zmerge.<locals>.<listcomp>ò  ó   € Ð9Ð9Ð9°˜qœ|Ð9Ð9Ð9r0   r6  ©r¤   r%   rU  rH  r  r9  ©rE   r-   rm   r9  s       r.   r4   r4   í  sy   € à„{�aÒÐÝ Ð1HÐIÑIÔIÐIÝ#3ØÔÐ9Ð9°SÐ9Ñ9Ô9ñ$ô $Ñ €D„O�[ð ð 'ØˆŒØ&ˆÔÐÐð'ð 'r0   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 rO   r  r  s     r.   r]   zmerge.<locals>.<listcomp>þ  r[  r0   r6  r\  r]  s       r.   r4   r4   ù  sx   € à„{�aÒÐÝ °Ð;Ñ;Ô;Ð;Ý#3ØÔÐ9Ð9°SÐ9Ñ9Ô9ñ$ô $Ñ €D„O�[ð ð 'ØˆŒØ&ˆÔÐÐð'ð 'r0   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 rO   r  r  s     r.   r]   zmerge.<locals>.<listcomp>
  ó   € Ð:Ð:Ð:°˜qœ}Ð:Ð:Ð:r0   c                 ó   — g | ]	}|j         ‘Œ
S rO   r  r  s     r.   r]   zmerge.<locals>.<listcomp>  rb  r0   r6  )r¤   r%   rU  rH  r  r  ÚXDeviceTableÚYDeviceTable)rE   r-   rm   rd  re  s        r.   r4   r4     s¸   € à„{�aÒÐÝ °Ð=Ñ=Ô=Ð=Ý%5ØÔÐ:Ð:°cÐ:Ñ:Ô:ñ&ô &Ñ"€DÔ�lõ &6ØÔÐ:Ð:°cÐ:Ñ:Ô:ñ&ô &Ñ"€DÔ�lð ð )�|ð )ØˆŒØ(ˆÔØ(ˆÔÐÐð)ð )r0   c                 óÈ   ‡— dD ]]\  Š}t          |‰¦  «        rHt          | j        ˆfd„|D ¦   «         ¦  «        \  }}t          |‰|¦  «         |rt          |||¦  «         Œ^d S )Nr"  c                 ó2   •— g | ]}t          |‰d ¦  «        ‘ŒS r  rc   r,  s     €r.   r]   zmerge.<locals>.<listcomp>  s%   ø€ Ð&HÐ&HÐ&H¸q¥w¨q°$¸Ñ':Ô':Ð&HÐ&HÐ&Hr0   )rg   rU  rH  rŽ  )rE   r-   rm   r.  rq   ÚdeviceTabler-  s         @r.   r4   r4     s–   ø€ ðð 6ð 6‰ˆˆiõ �4˜ÑÔð 	6Ý!1ØÔ$Ð&HÐ&HÐ&HÐ&HÀCÐ&HÑ&HÔ&Hñ"ô "ÑˆE�;õ �D˜$ Ñ&Ô&Ð&Øð 6Ý˜˜i¨Ñ5Ô5Ð5øð6ð 6r0   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)
rE  r/   ÚvarIndexCacheÚvarIdxesrš   ÚvarTableIdsÚlayersÚlayerReuseCacher   Ú_doneBaseGlyphs)r-   r	  rJ  r+   ÚallowLayerReuses        r.   r/   zCOLRVariationMerger.__init__1  sn   € Ý× Ò   u¨h¸Ñ=Ô=Ð=ð  ˆÔàˆŒõ ™5œ5ˆÔàˆŒØ#ˆÔØð 	5Ý#2Ñ#4Ô#4ˆDÔ à$ˆÔÐÐr0   ©ÚCOLRc                 ó�   — d|v r$d|v r |                       |d         j        ¦  «         t                               | |||¦  «         d S )Nrt  )ÚexpandPaintColrLayersrd   rE  r‹   )r-   r+   r‰   rŠ   s       r.   r‹   zCOLRVariationMerger.mergeTablesC  sR   € Ø�YÐÐ 6¨T > >ð ×&Ò& t¨F¤|Ô'9Ñ:Ô:Ð:Ý×#Ò# D¨$°¸YÑGÔGÐGÐGÐGr0   c                 ó   — dS )NTrO   )r£   s    r.   ú<lambda>zCOLRVariationMerger.<lambda>P  s   € ¸4€ r0   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Ó   rq   r¤   r¢  )
r¤   Ú
formatEnumÚ
ValueErrorr%   rA   r5   rH   r6   r   r$   )
r-   rl   rm   ÚvalidateÚfmtrz  Úokr_   r`   rY   s
             r.   ÚcheckFormatEnumz#COLRVariationMerger.checkFormatEnumP  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 rO   r‡   )rX   rY   r™   s     €r.   r]   z7COLRVariationMerger.mergeSparseDict.<locals>.<listcomp>q  s#   ø€ Ð)@Ð)@Ð)@°q¨!¯%ª%°©(¬(Ð)@Ð)@Ð)@r0   ú[ú])rW   rj   r&   rk   r6   )r-   rl   rm   rt   r™   s       @r.   ÚmergeSparseDictz#COLRVariationMerger.mergeSparseDictn  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 rO   rc   ©rX   ro   r;   s     €r.   r]   z2COLRVariationMerger.mergeAttrs.<locals>.<listcomp>y  s#   ø€ Ð:Ð:Ð:¨d•g˜d DÑ)Ô)Ð:Ð:Ð:r0   rf   )rH   rj   r&   rk   r6   )r-   rl   rm   r<   rq   rr   rt   r;   s          @r.   Ú
mergeAttrszCOLRVariationMerger.mergeAttrsv  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 rO   rc   r‡  s     €r.   r]   z;COLRVariationMerger.storeMastersForAttr.<locals>.<listcomp>�  s#   ø€ Ð=Ð=Ð=°�  tÑ,Ô,Ð=Ð=Ð=r0   FTc                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS rO   )ÚtoInt)rX   rY   Úconvs     €r.   r]   z;COLRVariationMerger.storeMastersForAttr.<locals>.<listcomp>Š  s#   ø€ ÐBÐBÐB¨q˜TŸZšZ¨™]œ]ÐBÐBÐBr0   r   )	ÚgetConverterByNamer‚   r   r¥   ÚNO_VARIATION_INDEXr   rH  rT  ÚfromInt)	r-   rl   rm   r;   rV  Úis_fixed_size_floatÚ	baseValuerX  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à˜&Ð Ð r0   Ú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   rb  )Útuplerl  rI   r*  ry   rm  r�  )r-   rm  re   Ú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× Ò  Ñ*Ô*Ð*àÐr0   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.   rZ   z9COLRVariationMerger.mergeVariableAttrs.<locals>.<genexpr>»  s*   è è € Ð<Ð<¨aˆq•BÔ)Ò)Ð<Ð<Ð<Ð<Ð<Ð<r0   )r¥   r�  r“  rŽ  r6   Úanyr™  )	r-   rl   rm   r<   r—  rm  r;   r’  rX  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àÐr0   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 )Nrb  ÚVarType)rH   rA   rq   )Úpaths    r.   rx  z?COLRVariationMerger.convertSubTablesToVarType.<locals>.<lambda>Å  s)   € Ý�˜T "œXœ^Ñ,Ô,¨i¸Ñ>Ô>ÀdÐJð r0   )Ú	skip_rootÚ	predicaterb  éþÿÿÿ)r   rq   rA   r   r@   r›   ÚpopulateDefaultsrÔ   rH   r-  rŽ  )Úclsrd   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ð 	6r0   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_layersry   ÚidrÌ   rI  r6   r,  ÚFirstLayerIndexÚ	NumLayersÚgetChildrenr�  ÚreversedÚ
LayerCount)	ÚcolrÚuniqueLayerIDsÚnewLayerListrå   ÚfrontierÚpaintÚchildrenÚfirst_layer_indexÚlayers	            r.   rv  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ˆŒÔ!Ð!Ð!r0   Nr4  )rs  )r5   rŒ   r�   r  r/   r‹   r  r„  rˆ  r“  rû   r™  r�  rŽ   r«  Ústaticmethodrv  rO   r0   r.   rj  rj  &  sÿ   € € € € € ðð ð%ð %ð %ð %ð$Hð Hð Hð Hð 2@°ð ð ð ð ð<ð ð ðð ð ð!ð !ð !ð,°ð ð ð ð ð:°Sð ð ð ð ð ð6ð 6ñ „[ð6ð( ð,6ð ,6ñ „\ð,6ð ,6ð ,6r0   rj  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 rO   ©Ú	BaseGlyph©rX   rå   s     r.   r²   zmerge.<locals>.<dictcomp>  s   € Ð
CÐ
CÐ
C #ˆ3Œ=˜#Ð
CÐ
CÐ
Cr0   c                 ó0   — g | ]}d „ |j         D ¦   «         ‘ŒS )c                 ó   — i | ]
}|j         |“ŒS rO   rÆ  rÈ  s     r.   r²   z$merge.<locals>.<listcomp>.<dictcomp>	  s   € ÐEÐEÐE s�”˜sÐEÐEÐEr0   )r¯  )rX   rM   s     r.   r]   zmerge.<locals>.<listcomp>	  s*   € ÐSÐSÐSÈ!ÐEÐE¨aÔ.DÐEÑEÔEÐSÐSÐSr0   c                 ó:   •— g | ]}|                      ‰¦  «        ‘ŒS rO   r‡   )rX   rY   r±   s     €r.   r]   zmerge.<locals>.<listcomp>  s#   ø€ Ð'BÐ'BÐ'B°Q¨¯ª¨a©¬Ð'BÐ'BÐ'Br0   z.BaseGlyphPaintRecord[rƒ  zbase glyph r
  T)	r¯  r|   rW   rj   r&   rk   r6   Úcauserq  )rE   r-   rm   rl   Úmastersr~   rt   r±   s          @r.   r4   r4     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)rq  ry   ro  rº  r°  rÍ   s      r.   r4   r4     s:   € ð Ô!ÐRÐRÐ#RÑRÔRÐRå˜&œ-Ñ(Ô(€D„OØ”€D„J€J€Jr0   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ð	ð r0   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 )	Nrt  c           	      ó‚   •— g | ];}t          t          ‰|         ‰j        |         d          j        ¦  «        ¦  «        ‘Œ<S rs  )r„   r´  r,   rd   )rX   r~   rm   r-   s     €€r.   r]   z*_merge_PaintColrLayers.<locals>.<listcomp>3  sM   ø€ ð ð ð àõ 	�_˜S œV T¤Y¨q¤\°&Ô%9Ô%?Ñ@Ô@ÑAÔAðð ð r0   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 rO   rO   ©rX   r–   ÚlistToColrLayerss     €r.   r]   zD_merge_PaintColrLayers.<locals>.listToColrLayers.<locals>.<listcomp>O  s%   ø€ Ð9Ð9Ð9¨aÐ&Ð& qÑ)Ô)Ð9Ð9Ð9r0   )r‚   r„   r¥   r°  rû   r±  r³  r¤   ry   r·  ro  r¶  r�  rp  r,  )r¿  ro  rÖ  r-   s     €€r.   rÖ  z0_merge_PaintColrLayers.<locals>.listToColrLayersM  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Øˆr0   c                 ó&   •— g | ]} ‰|¦  «        ‘ŒS rO   rO   rÕ  s     €r.   r]   z*_merge_PaintColrLayers.<locals>.<listcomp>Y  s%   ø€ Ð:Ð:Ð:¨!Ð"Ð" 1Ñ%Ô%Ð:Ð:Ð:r0   r   r   )r„   r´  r+   rd   ry   r,   r*  r   r&   rk   r6   rp  Ú	try_reuser   r   r¤   r¥   r±  r³  r·  r¶  ro  r�  r,  )r-   rl   rm   Ú
out_layersÚmaster_layersesrt   Úis_treerÖ  s   ` `    @r.   Ú_merge_PaintColrLayersrÜ  *  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.   rx  zmerge.<locals>.<lambda>p  s   € ¸C¿OºOÑ<MÔ<MÐ8M€ r0   rO   c              3   ó8   •K  — | ]}|j         ‰v¯|j         V — Œd S r*   ©r-  ©rX   rÁ  ÚvarAttrss     €r.   rZ   zmerge.<locals>.<genexpr>{  ó1   øè è € ÐRÐR˜a¸1¼6ÈÐ;QÐ;Q�1”6Ð;QÐ;QÐ;QÐ;QÐRÐRr0   c                 ó   — g | ]	}|j         ‘Œ
S rO   )rq   rä  s     r.   r]   zmerge.<locals>.<listcomp>�  s   € Ð9Ð9Ð9˜b�”Ð9Ð9Ð9r0   c              3   óD   •K  — | ]}t          |¦  «        ‰j        v V — Œd S r*   ©rµ  rn  )rX   rd   rE   s     €r.   rZ   zmerge.<locals>.<genexpr>„  sB   øè è € ð >ð >Ø,1�ˆ5‰	Œ	�VÔ'Ð'ð>ð >ð >ð >ð >ð >r0   )r  r¥   r±  r³  rÜ  Úas_variabler
   ÚgetVariableAttrsrA   ÚgetConvertersrˆ  r�  ÚiterSubTablesr�  rœ  ÚVarIndexBaser«  rû   r¤   )
rE   r-   rm   r}  Ú	varFormatÚstaticAttrsr—  Ú	subTablesÚ
isVariablerã  s
   `        @r.   r4   r4   n  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ˆŒˆˆð%ð %r0   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.   rZ   zmerge.<locals>.<genexpr>œ  rä  r0   )rA   r   r
   ré  rê  rˆ  r�  r¥   r�  rì  rn  r,  rµ  )rE   r-   rm   r¨  rî  r—  rã  s         @r.   r4   r4   —  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Ñ(Ô(Ð(Ð(Ð(ð -Ð,r0   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.   rZ   zmerge.<locals>.<genexpr>ª  s$   è è € Ð!GÐ!G¨Q !¤&Ð!GÐ!GÐ!GÐ!GÐ!GÐ!Gr0   c              3   óD   •K  — | ]}t          |¦  «        ‰j        v V — Œd S r*   rç  )rX   ÚstoprE   s     €r.   rZ   zmerge.<locals>.<genexpr>¬  s1   øè è € Ð
EÐ
E¨d�2ˆd‰8Œ8�vÔ)Ð)Ð
EÐ
EÐ
EÐ
EÐ
EÐ
Er0   )rˆ  rê  rœ  Ú	ColorStopr«  rn  r,  rµ  rÍ   s   `  r.   r4   r4   ¨  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Ñ(Ô(Ð(Ð(Ð(ð)ð )r0   Úclipsc                 ó2   — |                       ||¦  «         d S r*   )r„  rÍ   s      r.   r4   r4   ±  s    € ð ×Ò˜4 Ñ%Ô%Ð%Ð%Ð%r0   r
  r*   )F)rr  rs  )kr  ÚosrÌ   rB   Úoperatorr   ÚloggingÚfontTools.colorLib.builderr   r   ÚfontTools.miscr   ÚfontTools.misc.roundToolsr   ÚfontTools.misc.treeToolsr   ÚfontTools.ttLib.tablesr	   r¥   r
   Ú#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�   rE   ÚGDEFr4   r¬   rÈ   rò   r‰  rÖ   rè   r¦   rÚ   r&  r2  r?  r\  rc  rÙ   rœ  ÚMarkBasePosÚMarkMarkPosr­  r·  rÆ  rÈ  rÑ  Ú
CursivePosrÕ  ÚLookupr  Ú
CaretValuer0  rE  rU  Ú	BaseCoordrj  r®  r­  r´  rÜ  r°  ÚClipBoxÚ	Affine2x3r÷  Ú	ColorLineÚClipListrO   r0   r.   ú<module>r     sJ	  ððð ð 
€	€	€	Ø €€€Ø €€€Ø Ð Ð Ð Ð Ð Ø €€€Ø 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 Ñ0Ô0ð#ð #ñ 1Ô0ð#ð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Ô)Ñ*Ô*ð#ð #ñ +Ô*ð#ð ×Ò�r”yÑ!Ô!ða ð a ñ "Ô!ða ðR>ð >ð >ð >ð >�nñ >ô >ð >ð ×Ò˜œÑ&Ô&ðð ñ 'Ô&ðð ×Ò˜œ	Ñ"Ô"ðð ñ #Ô"ðð ×Ò˜Ô*Ñ+Ô+ð'ð 'ñ ,Ô+ð'ð2	1ð 	1ð 	1ð 	1ð 	1�Nñ 	1ô 	1ð 	1ð ×Ò�b”mÑ$Ô$ðð ñ %Ô$ðð* ×Ò�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ð&ð &ð &r0   