Ë
    ^ãjø  ã                   ób
  — d Z ddlZddlZddlZddlmZ ddlZddlmZm	Z	 ddl
mZ ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZmZmZ ddl m!Z!m"Z"m#Z#m$Z$m%Z% ddl&m'Z' ddl(m)Z) ddl*m+Z+ ddl,m-Z-m.Z.  ej^                  d«      Z0ddl1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<  G d„ de=«      Z> G d„ de>«      Z?e?j�                  ej‚                  d«      d„ «       ZBd„ ZCdTd„ZDe?j�                  ejŠ                  «      d„ «       ZBe?j�                  ejŒ                  «      d „ «       ZBd!„ ZGd"„ ZHe?j�                  ej’                  «      d#„ «       ZBe?j�                  ej”                  «      d$„ «       ZBd%„ ZKdUd&„ZLdUd'„ZMdVd(„ZNd)„ ZOe?j�                  ej                   «      d*„ «       ZBdWd+„ZQe?j�                  ej¤                  «      d,„ «       ZBe?j�                  ej¦                  «      d-„ «       ZBd.„ ZTd/„ ZUd0„ ZVd1„ ZWd2„ ZXe?j�                  ej²                  «      d3„ «       ZBe?j�                  ej´                  «      d4„ «       ZBej’                  ej                   ej²                  ej¤                  ej¦                  fZ[d5„ Z\e?j�                  ejº                  «      d6„ «       ZB G d7„ d8e?«      Z^e^j�                  ej¾                  «      d9„ «       ZBe^j�                  ejŒ                  «      d:„ «       ZBe^j�                  ejŠ                  «      d;„ «       ZB G d<„ d=e?«      Z`e`j�                  ej¾                  ejÂ                  f«      d>„ «       ZBe`j�                  ejÄ                  «      d?„ «       ZBe`j�                  ejŒ                  «      d@„ «       ZBe`j�                  ejŠ                  «      dA„ «       ZB G dB„ dCe?«      ZcdD„ Zdecj�                  ejÂ                  «      dE„ «       ZBecj�                  ej¾                  «      dF„ «       ZBecj�                  ejŒ                  «      dG„ «       ZBecj�                  ejŠ                  «      dH„ «       ZB G dI„ dJec«      Zeeej�                  ejÌ                  «      dK„ «       ZBeej�                  ejÎ                  «      dL„ «       ZBdM„ ZhdN„ Zieej�                  ejÔ                  ejÖ                  f«      dO„ «       ZBeej�                  ejØ                  ejÚ                  f«      dP„ «       ZBeej�                  ejÜ                  «      dQ„ «       ZBeej�                  ejÞ                  dR«      dS„ «       ZBy)Xz4
Merge OpenType Layout tables (GDEF / GPOS / GSUB).
é    N)Úior)ÚMAX_PAINT_COLR_LAYER_COUNTÚLayerReuseCache)ÚclassifyTools)ÚotRound)Úbuild_n_ary_tree)ÚotTables)ÚotBase)Ú_convert_layout_formats)ÚBaseFixedValue)Údfs_base_table)ÚDefaultTable)ÚbuilderÚmodelsÚvarStore)ÚnonNoneÚallNoneÚallEqualÚ
allEqualToÚsubList)ÚVarStoreInstancer)Úreduce)ÚbuildSinglePos)Ú_compression_level_from_envÚcompact_pair_poszfontTools.varLib.mergeré   )ÚShouldBeConstantÚ
FoundANoneÚMismatchedTypesÚNotANoneÚLengthsDifferÚ
KeysDifferÚInconsistentGlyphOrderÚInconsistentExtensionsÚInconsistentFormatsÚUnsupportedFormatÚVarLibMergeErrorc                   óT   — 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
y)ÚMergerNc                 ó    — || _         d | _        y ©N)ÚfontÚttfs)Úselfr,   s     úY/var/www/html/metafoliadorv2/venv/lib/python3.12/site-packages/fontTools/varLib/merger.pyÚ__init__zMerger.__init__0   s   € ØˆŒ	àˆ�	ó    r+   c                 óÖ   ‡ ‡‡— ‰ t         k7  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                  |«       ‰j                  j                  |i «      }‰D ]#  }||vsJ d|j                   ›d|›d�«       ‚| ||<   Œ% Œ^ y )NÚmergezOops, class 'z' has merge function for 'z' defined already.)Ú__name__Úappendr3   Ú
setdefault)ÚmethodÚdoneÚclazzr3   ÚattrÚattrsÚcelfÚclazzess        €€€r/   ÚwrapperzMerger.merger.<locals>.wrapper?   s—   ø€ Ø—?‘? gÒ-Ð-Ð-ØˆDØ ò 
+�Ø˜D‘=ØØ—‘˜EÔ"ØŸ,™,×1Ñ1°%¸Ó<�Ø!ò +�DØ wÑ.ñ à Ÿ>›>ª4ð1óÐ.ð %+�G˜D’Mñ+ð
+ð r1   )r)   Ú__dict__r3   ÚtypeÚenumÚEnumMetaÚstr)r>   r?   r=   r@   s   ``` r/   ÚmergerzMerger.merger5   sc   ú€ à”vŠ~Ð9Ð9Ó9ˆ~Ø˜DŸM™MÑ)ØˆDŒLÜ�‹=œT¤4§=¡=Ð1Ñ1Ø�jˆGÜ�‹;œ#ÒØ�HˆEö	ð  ˆr1   c                 ó®   — t        |«      }| j                  «       D ]6  } t        | dd «      }|€ |S | j                  j	                  |d «      }|€Œ4|c S  |S )Nr3   )rB   ÚmroÚgetattrr3   Úget)r>   ÚthingÚ_defaultÚtypr3   Úms         r/   Ú
mergersForzMerger.mergersForQ   sf   € ä�5‹kˆà—H‘H“Jò 	ˆDÜ˜d I¨tÓ4ˆGØˆØð ˆð	 —‘× Ñ   dÓ+ˆAØ‰}Ø’ð	ð ˆr1   c                 óð  ‡— t        |d«      r|j                  d¬«       |D ]!  }t        |d«      sŒ|j                  d¬«       Œ# t        t        |«      j	                  «       «      Št        ˆfd„|D «       «      s<t        | ‰|D �cg c]$  }t        t        |«      j	                  «       «      ‘Œ& c}¬«      ‚| j                  |«      }|j                  d| j                  j                  «      }	 ‰D ]H  }||v rŒt        ||«      }	|D �
cg c]  }
t        |
|«      ‘Œ }}
|j                  ||«      } || |	|«       ŒJ y c c}w c c}
w # t        $ r$}|j                  j                  dz   «       ‚ d }~ww xY w)NÚensureDecompiledF)Úrecursec              3   óh   •K  — | ])  }‰t        t        |«      j                  «       «      k(  –— Œ+ y ­wr+   )ÚsortedÚvarsÚkeys)Ú.0ÚvrV   s     €r/   ú	<genexpr>z&Merger.mergeObjects.<locals>.<genexpr>g   s%   øè ø€ Ò?°a�4œ6¤$ q£'§,¡,£.Ó1Õ1Ñ?ùs   ƒ/2©ÚexpectedÚgotÚ*ú.)ÚhasattrrQ   rT   rU   rV   Úallr"   rO   rJ   Ú	__class__ÚmergeThingsrI   r'   Ústackr7   )r.   ÚoutÚlstÚexcludeÚitemrX   r3   ÚdefaultMergerÚkeyÚvalueÚtableÚvaluesÚ
mergerFuncÚerV   s                 @r/   ÚmergeObjectszMerger.mergeObjects`   s\  ø€ Ü�3Ð*Ô+Ø× Ñ ¨Ð Ô/Øò 	5ˆDÜ�tÐ/Õ0Ø×%Ñ%¨eÐ%Õ4ð	5ô ”d˜3“i—n‘nÓ&Ó'ˆÜÓ?¸3Ô?Ô?ÜØ˜tÈ#Ö)NÀQ¬&´°a³·±³Õ*@Ò)Nôð ð —/‘/ #Ó&ˆØŸ™ C¨¯©×)CÑ)CÓDˆð
	Øò 0�Ø˜'‘>ØÜ  SÓ)�Ø;>Ö?°%œ' %¨Õ-Ð?�Ð?Ø$Ÿ[™[¨¨mÓ<�
Ù˜4 ¨Õ/ñ0ùò *Oùò @øô  ò 	Ø�G‰G�N‰N˜3 ™9Ô%Øûð	ús0   Â)D>Ã0E Ä
EÄ E ÅE Å	E5ÅE0Å0E5c           
      ó^  — t        ||t        «      s.t        | t        |«      |D �cg c]  }t        |«      ‘Œ c}¬«      ‚t        t	        |t	        |Ž «      «      D ]  \  }\  }}	 | j                  ||«       Œ y c c}w # t        $ r$}|j                  j                  d|z  «       ‚ d }~ww xY w)NrZ   z[%d])	r   Úlenr!   Ú	enumerateÚziprb   r'   rc   r7   )r.   rd   re   ÚxÚirj   rl   rn   s           r/   Ú
mergeListszMerger.mergeListsy   sœ   € Ü˜#˜s¤CÔ(Ü ¬s°3«xÈcÖ=RÈ¼cÀ!½fÒ=RÔSÐSÜ"+¬C°´S¸#°YÓ,?Ó"@ò 	ÑˆA‰��vðØ× Ñ  ¨Õ/ñ	ùò >Søô $ò Ø—‘—‘˜v¨™zÔ*Øûðús   ¦A:Á%A?Á?	B,ÂB'Â'B,c           
      ó2  — t        ||t        «      sBt        | t        |«      j                  |D �cg c]  }t        |«      j                  ‘Œ c}¬«      ‚| j	                  |«      j                  d d «      }|� || ||«       y t        |t        j                  «      rt        ||«      st        | ||¬«      ‚y t        |d«      r| j                  ||«       y t        |t        «      r| j                  ||«       y t        ||«      st        | ||¬«      ‚y c c}w )NrZ   rA   )r   rB   r   r6   rO   rJ   Ú
isinstancerC   ÚEnumr   r_   ro   Úlistrv   )r.   rd   re   rt   rm   s        r/   rb   zMerger.mergeThingsƒ   sõ   € Ü˜#˜s¤DÔ)Ü!Øœt C›y×1Ñ1ÐRUÖ7VÈQ¼¸Q»×8HÓ8HÒ7Vôð ð —_‘_ SÓ)×-Ñ-¨d°DÓ9ˆ
ØÐ!Ù�t˜S #Õ&Ü˜œTŸY™YÔ'ô ˜c 3Ô'Ü& t°c¸sÔCÐCð (ä�S˜*Ô%Ø×Ñ˜c 3Õ'Ü˜œTÔ"Ø�O‰O˜C Õ%ä˜c 3Ô'Ü& t°c¸sÔCÐCð (ùò 8Ws   °Dc           
      óô   — |D ]A  }||vrŒ	 || _         | j                  ||   |D �cg c]  }|j                  |«      ‘Œ c}«       ŒC y c c}w # t        $ r!}|j                  j                  |«       ‚ d }~ww xY wr+   )r-   rb   rJ   r'   rc   r7   )r.   r,   Úmaster_ttfsÚ	tableTagsÚtagrN   rn   s          r/   ÚmergeTableszMerger.mergeTables˜   sw   € Øò 	ˆCØ˜$‰ØðØ'�”	Ø× Ñ   c¡ÀÖ,M¸A¨Q¯U©U°3­ZÒ,MÕNñ	ùò
 -NøÜ#ò Ø—‘—‘˜sÔ#Øûðús'   ŒA¦A¾AÁAÁ	A7ÁA2Á2A7)r+   )© )r6   Ú
__module__Ú__qualname__r0   ÚclassmethodrF   rO   ro   rv   rb   r   r€   r1   r/   r)   r)   /   sG   „ óð
 òó ðð6 Ø)+ò ó ðóò2òDó*	r1   r)   c                   ó   — e Zd Zy)ÚAligningMergerN)r6   r�   r‚   r€   r1   r/   r…   r…   §   s   „ Ør1   r…   )ÚGlyphClassDefÚGlyphClassDef2c                 ó¬  ‡— |€t        |«      st        | d |¬«      ‚y |D �cg c]  }|j                  ‘Œ }}i |_        |j                  }t        «       } |j                  |D �cg c]  }|j                  «       ‘Œ c}Ž  |D ]G  Št        ˆfd„|D «       «      }t        |«      st        | |d   |d‰z   g¬«      ‚|sd |‰<   Œ@|d   |‰<   ŒI y c c}w c c}w )NrZ   c              3   ó@   •K  — | ]  }|j                  ‰«      –— Œ y ­wr+   )rJ   )rW   ÚlÚks     €r/   rY   zmerge.<locals>.<genexpr>º   s   øè ø€ Ò2¨˜AŸE™E !ŸHÑ2ùs   ƒr   r^   )r[   r\   rc   )	r   r    Ú	classDefsÚsetÚupdaterV   r   r   r   )rF   r.   re   rŠ   ÚallKeysÚ	allValuesr‹   s         @r/   r5   r5   «   sÚ   ø€ à€|Ü�sŒ|Ü˜6¨D°cÔ:Ð:Øà #Ö
$˜1ˆ1�;‹;Ð
$€CÐ
$Ø€D„Nà�>‰>€Dä‹e€GØ€G‡N�N sÖ+ !�Q—V‘V•XÒ+Ñ,Øò 	#ˆÜÓ2¨cÔ2Ó2ˆ	Ü˜	Ô"Ü"Ø ¨1¡°3¸sÀQ¹w¸iôð ñ ØˆD�ŠGà ‘lˆD�ŠGñ	#ùò %ùò ,s   ¢CÁ$Cc                 óF  — | j                   dk(  r| S t        j                  «       }d|_         | j                  |_        | j                  |_        |j                  j
                  D �cg c]  }| j                  ‘Œ c}|_        t        |j                  «      |_        |S c c}w )Né   )	ÚFormatÚotÚ	SinglePosÚCoverageÚValueFormatÚglyphsÚValuerq   Ú
ValueCount)r.   ÚretÚ_s      r/   Ú_SinglePosUpgradeToFormat2r�   Å   sv   € Ø‡{�{�aÒØˆä
�,‰,‹.€CØ€C„JØ—=‘=€C„LØ×&Ñ&€C„OØ%(§\¡\×%8Ñ%8Ö9 �—“Ò9€C„IÜ˜Ÿ™“^€C„Nà€Jùò :s   Á'Bc                 ó®  ‡— |€|D �cg c]  }t        |«      ‘Œ }}n@t        ||«      D ����cg c]%  \  }}t        ||«      D ��ci c]  \  }}||“Œ
 c}}‘Œ' }}}}}t        «       }	 |	j                  |Ž  | j                  «       j                  Št        |	‰¬«      }
t        ˆfd„|D «       «      s
t        «       ‚~	d}|€)|D ��cg c]  }|
D �cg c]
  }||v r|n|‘Œ c}‘Œ }}}|
|fS t        |«      t        |«      k(  sJ ‚|D ��cg c]  }|
D �cg c]  }||v r||   n|‘Œ c}‘Œ }}}|
|fS c c}w c c}}w c c}}}}w c c}w c c}}w c c}w c c}}w )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.
    N©ri   c              3   ó>   •K  — | ]  }t        |‰¬ «      |k(  –— Œ y­w)rŸ   N)rT   )rW   ÚvsÚsortKeys     €r/   rY   z%_merge_GlyphOrders.<locals>.<genexpr>å   s   øè ø€ Ò;°Œv�b˜gÔ&¨"Õ,Ñ;ùó   ƒ)	r�   rs   rŽ   ÚgetReverseGlyphMapÚ__getitem__rT   r`   r#   rq   )r,   re   Ú
values_lstÚdefaultrŠ   Ú	dict_setsr¡   ÚgrX   ÚcombinedÚorderÚpaddedValuesÚdict_setÚglyphÚpaddedr¢   s                  @r/   Ú_merge_GlyphOrdersr°   Ó   s{  ø€ ð ÐØ%(Ö) ”S˜•VÐ)ˆ	Ñ)ä@CÀCÈÓ@T×UÑU±u°q¸"¤s¨1¨b£z×2™t˜q !�a˜‘dÕ2ÐUˆ	ÓUÜ‹u€HØ€H‡O�O�YÑà×%Ñ%Ó'×3Ñ3€GÜ�8 Ô)€EäÓ;°sÔ;Ô;Ü$Ó&Ð&Øà€LØÐð &÷
àð CHÖH¸�e˜xÑ'‰U¨WÑ4ÔHð
ˆñ 
ð �&ˆ=Ðô �3‹xœ3˜z›?Ò*Ð*Ð*ð &÷
àð MRÖRÀ5 ¨Ñ 1ˆX�eŠ_°wÑ>ÔRð
ˆñ 
ð �&ˆ=Ðùò3 *ùã2ùÕUùò Iùó
ùò Sùó
sL   ˆD.®D9
ÁD3ÁD9
Ã	EÃEÃEÄ	EÄEÄ"EÄ3D9
ÅEÅEc                 ól   — |d   j                   j                  «       |_         | j                  ||«       y ©Nr   ©rA   Úcopyro   ©rF   r.   re   s      r/   r5   r5   ø   ó,   € ð ˜‘F—O‘O×(Ñ(Ó*€D„MØ
×Ñ˜˜cÕ"r1   c                 ól   — |d   j                   j                  «       |_         | j                  ||«       y r²   r³   rµ   s      r/   r5   r5      r¶   r1   c                 óp  — |D ]±  }|�@t        |«      t        j                  k7  s$|j                  �||j                  j                  vrŒF|j
                  dk(  r|j                  c S |j
                  dk(  r4|j                  |j                  j                  j                  |«         c S t        | d¬«      ‚ y )Nr   r’   úsingle positioning lookup©Úsubtable)	rB   r”   r•   r–   r˜   r“   r™   Úindexr&   )rF   Ú	subtablesr®   r.   s       r/   Ú%_Lookup_SinglePos_get_effective_valuer¾     s    € Øò RˆàˆLÜ�D‹zœRŸ\™\Ò)Ø�}‰}Ð$Ø˜DŸM™M×0Ñ0Ñ0àØ�;‰;˜!ÒØ—:‘:ÒØ�[‰[˜AÒØ—:‘:˜dŸm™m×2Ñ2×8Ñ8¸Ó?Ñ@Ò@ä# FÐ5PÔQÐQðRð r1   c                 óx  — |D �]4  }|�@t        |«      t        j                  k7  s$|j                  �||j                  j                  vrŒG|j
                  dk(  r[|j                  |j                  j                  j                  |«         }|j                  }|D ]  }|j                  |k(  sŒ|c c S  Œ±|j
                  dk(  rj|j                  j                  j                  |d«      }|j                  j                  j                  |d«      }	|j                  |   j                  |	   c S t!        | d¬«      ‚ y )Nr   r’   r   úpair positioning lookuprº   )rB   r”   ÚPairPosr–   r˜   r“   ÚPairSetr¼   ÚPairValueRecordÚSecondGlyphÚ	ClassDef1rŒ   rJ   Ú	ClassDef2ÚClass1RecordÚClass2Recordr&   )
rF   r½   Ú
firstGlyphÚsecondGlyphr.   ÚpsÚpvrÚrecÚklass1Úklass2s
             r/   Ú(_Lookup_PairPos_get_effective_value_pairrÐ     s  € ð ó PˆàˆLÜ�D‹zœRŸZ™ZÒ'Ø�}‰}Ð$Ø §¡×!5Ñ!5Ñ5àØ�;‰;˜!ÒØ—‘˜dŸm™m×2Ñ2×8Ñ8¸ÓDÑEˆBØ×$Ñ$ˆCØò �Ø—?‘? kÓ1Ø”Jðð Ø�[‰[˜AÒØ—^‘^×-Ñ-×1Ñ1°*¸aÓ@ˆFØ—^‘^×-Ñ-×1Ñ1°+¸qÓAˆFØ×$Ñ$ VÑ,×9Ñ9¸&ÑAÒAä# FÐ5NÔOÐOð)Pð* r1   c                 óö  ‡— t        t        j                  |D �cg c]  }|j                  ‘Œ c}d«      x|_        }t	        |«      dk(  s|dz  dk(  st        | d¬«      ‚|j                  j                  Št        d„ |D «       «      r²t        ˆfd„|D «       «      ržt        j                  ||j                  «      |_        |dk7  rT| j                  |j                  |D �cg c].  }|j                  �|j                  nt        j                  «       ‘Œ0 c}«       |j                  j                  «       |_        y d|_        |D �cg c]  }t        |«      ‘Œ }}t!        | j"                  |D �cg c]  }|j                  j                  ‘Œ c}|D �cg c]  }|j                  ‘Œ c}«      \  }}||j                  _        |D �cg c]  }t        j                  |«      ‘Œ c}|_        t	        |j                  «      |_        t'        |«      D ]T  \  }	}
t'        |«      D ]A  \  }}|
|   �Œt)        | | j*                  |	   |«      }|€t        j                  |«      }||
|<   ŒC ŒV | j-                  |j                  |«       | j/                  ||d	¬
«       t        t        j                  |j                  D �cg c]  }|j1                  «       ‘Œ c}d«      |_        y c c}w c c}w c c}w c c}w c c}w c c}w c c}w )Nr   r   iðÿÿÿr¹   rº   c              3   ó:   K  — | ]  }|j                   d k(  –— Œ y­w)r   N©r“   ©rW   rX   s     r/   rY   zmerge.<locals>.<genexpr>=  s   è ø€ Ò
&˜Qˆ1�8‰8�q�=Ñ
&ùs   ‚c              3   óP   •K  — | ]  }‰|j                   j                  k(  –— Œ y ­wr+   )r–   r˜   )rW   rX   ÚcoverageGlyphss     €r/   rY   zmerge.<locals>.<genexpr>=  s%   øè ø€ ò /Ø01ˆ˜!Ÿ*™*×+Ñ+Õ+ñ/ùs   ƒ#&r’   )r“   r–   r™   rš   r—   ©rf   )r   ÚintÚ__or__r—   rq   r&   r–   r˜   r`   r
   ÚValueRecordr™   rb   Ú	getFormatr“   r�   r°   r,   rš   rr   r¾   Úlookup_subtablesrv   ro   ÚgetEffectiveFormat)rF   r.   re   rŠ   ÚvalueFormatrX   r˜   r¯   rœ   ru   rl   Újr®   rÖ   s                @r/   r5   r5   5  s£  ø€ ä%+¬C¯J©JÐPSÖ8TÈ1¸¿»Ò8TÐVWÓ%XÐX€DÔ�{Ü�‹H˜ŠM˜k¨DÑ0°AÒ5Ü Ð1LÔMÐMð —]‘]×)Ñ)€NÜ
Ñ
& #Ô
&Ô&¬3ó /Ø58ô/ô ,ô ×'Ñ'¨°T·Z±ZÓ@ˆŒ
Ø˜!Òð ×ÑØ—
‘
ØSVÖWÈa˜AŸG™GÐ/�—’´V×5GÑ5GÓ5IÑIÒWôð  Ÿ:™:×/Ñ/Ó1ˆÔØð €D„KØ25Ö
6¨QÔ% aÕ(Ð
6€CÐ
6ô (Ø�‰°Ö5¨A�a—j‘j×'Ó'Ò5ÈÖ7MÀA¸¿»Ò7Mó�N€FˆFð "€D‡M�MÔØ;AÖB°a”&×$Ñ$ [Õ1ÒB€D„JÜ˜$Ÿ*™*“o€D„Oä˜vÓ&ò ‰	ˆˆ6Ü! &Ó)ò 	‰HˆAˆuØ�a‰yÐ$Øô
 6Ø˜×/Ñ/°Ñ2°EóˆAð ˆyÜ×&Ñ& {Ó3�ØˆF�1ŠIñ	ðð ×Ñ�d—j‘j &Ô)ð ×ÑØˆcÐWð ô ô Ü�
‰
°T·Z±ZÖ@°�Q×)Ñ)Õ+Ò@À!ó€DÕùòo 9Uùò  Xùò 7ùò 6ùÒ7Mùò Cùò2 As)   šK
Ã3K
ÅK"Å,K'
ÆK,ÇK1Ê3K6
c                 óœ  — t        | j                  |D ��cg c]&  }|j                  D �cg c]  }|j                  ‘Œ c}‘Œ( c}}|D �cg c]  }|j                  ‘Œ c}«      \  }}g x|_        }|D ]’  }t	        j                  «       }	||	_        | j
                  rt        j                  | j
                  «      nd |	_        | j                  rt        j                  | j                  «      nd |	_
        |j                  |	«       Œ” 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'                  |j                  |«       y c c}w c c}}w c c}w )N©NNÚValue1ÚValue2)Úsrc)r°   r,   rÃ   rÄ   r”   ÚvalueFormat1r
   rÚ   râ   ÚvalueFormat2rã   r7   rq   ÚPairValueCountrr   rÐ   rÜ   Ú_firstGlyphrI   rv   )rF   r.   re   r¡   rX   r˜   r¯   Úpvrsr®   rÌ   ru   rl   rß   ÚvpairÚv1Úv2s                   r/   r5   r5   s  s+  € ô (Ø�‰Ø?B×C¸ ×!3Ñ!3Ö	4˜Aˆ!�-‹-Ô	4ÓCØ&)Ö* ˆ×	Ó	Ò*ó�N€FˆFð #%Ð$€DÔ˜4Øò 	ˆÜ× Ñ Ó"ˆØˆŒà7=×7JÒ7JŒF×Ñ˜v×2Ñ2Ô3ÐPTð 	Œ
ð 8>×7JÒ7JŒF×Ñ˜v×2Ñ2Ô3ÐPTð 	Œ
ð 	�‰�CÕð	ô ˜d×2Ñ2Ó3€DÔä˜vÓ&ò ‰	ˆˆ6Ü! &Ó)ò 	‰HˆAˆuä×"Ñ"Ó$ˆAØ!ˆAŒMØ�a‰yÐ$Ø˜q™	‘ä@Ø˜F×3Ñ3°AÑ6¸×8HÑ8HÈ%ó�ð ˆ}Ø#‘�‘Bä˜U H¨dÓ3�Ü˜U H¨dÓ3�ð ×&Ò&ô ×"Ñ" 6×#6Ñ#6¸BÕ?àð ŒHð ×&Ò&ô ×"Ñ" 6×#6Ñ#6¸BÕ?àð ŒHð
 ˆF�1ŠIñ3	ðð6 	Ðà
×Ñ�d×*Ñ*¨FÕ3ùò] 
5ùÓCùÚ*s   –I©H>¼IÁI	È>Ic                 óÞ  — t        |D �cg c]  }|j                  sŒ|j                  dk(  ‘Œ  c}«      sJ d«       ‚|j                  | |d¬«       t	        j                  «       }g |_        d|_        t        |j                  |D �cg c]  }|j                  j                  ‘Œ c}|D �cg c]  }|j                  ‘Œ c}|¬«      \  }}|| j                  _
        |D �cg c]  }t	        j                  «       ‘Œ c}| _        t        | j                  «      | _        t        || j                  «      D ]  \  }	}
|	|
_        Œ |j                  | j                  |«       y c c}w c c}w c c}w c c}w )Nr   úReport bug against fonttools.)r–   rÂ   ÚPairSetCountÚValueFormat1ÚValueFormat2r×   ©r§   )r   rÂ   rñ   ro   r”   rÃ   rç   r°   r,   r–   r˜   rq   rï   rs   rè   rv   )r.   re   rF   rŠ   ÚemptyrX   r˜   r¯   rœ   r®   rË   s              r/   Ú_PairPosFormat1_mergerô   ©  s<  € ÜØ&)Ö7 ¨Q¯Y«Yˆ�‰˜1Ó	Ò7ôð 'à&ó'ð ð
 ×ÑØØØWð ô ô �J‰J‹L€EØ€EÔØ€EÔô (Ø�‰Ø$'Ö(˜qˆ�‰×	Ó	Ò(ØÖ �qˆ�‹Ò Øô	�N€FˆFð "€D‡M�MÔØ*0Ö1 Q”B—J‘J•LÒ1€D„LÜ˜DŸL™LÓ)€DÔÜ˜ §¡Ó.ò ‰	ˆˆrØˆ�ðð ×Ñ�d—l‘l FÕ+ùò9 	8ùò" 	)ùÚ ùò
 2s   ŠEœEÂE 
Â(E%ÃE*c                 óÜ  — t        | t        «      r| }n| r| j                  r| j                  ni }|rt        |j	                  «       «      nd}g }t        |dz   «      D ]  }|j                  t        «       «       Œ |j                  «       D ]  \  }}||   j                  |«       Œ |€d |d<   |S t        |«      x|d<   }|dd  D ]$  }	|	j                  |«       |j                  |	«       Œ& |S )Nr   r   )rx   ÚdictrŒ   Úmaxrl   Úranger7   r�   ÚitemsÚaddÚintersection_updateÚdifference_update)
r.   Ú	allGlyphsrŒ   rN   r›   rœ   r‹   rX   Úclass0Úss
             r/   Ú_ClassDef_invertr   Ê  sô   € Ü�$œÔØ‰	á&*¨t¯~ª~�D—N’NÀ2ˆ	Ù#,ŒˆI×ÑÓÔ°!€Aà
€CÜ�1�q‘5‹\ò ˆØ�
‰
”3“5Õðð —‘Ó!ò ‰ˆˆ1ØˆA‰�
‰
�1�ðð ÐØˆˆA‰ð €Jô ˜i›.Ð(ˆˆA‰�Ø�Q�R�ò 	(ˆAØ×!Ñ! &Ô)Ø×$Ñ$ QÕ'ð	(ð €Jr1   c                 ó¨  — t        j                  «       }i x|_        }|d u }|rd gt        | «      z  }t	        j
                  «       }t        | |«      D ])  \  }}t        ||«      }|€|dd  }|j                  |«       Œ+ |j                  «       }	|r|	j                  dt        «       «       t        |	«      D ]  \  }
}|
dk(  rŒ|D ]  }|
||<   Œ	 Œ ||	fS )Nr   r   )r”   ÚClassDefrŒ   rq   r   Ú
Classifierrs   r   rŽ   Ú
getClassesÚinsertr�   rr   )re   ÚallGlyphsesr.   rŒ   ÚallGlyphsesWasNoneÚ
classifierÚclassDefrý   ÚsetsÚclassesru   ÚclassSetr©   s                r/   Ú_ClassDef_merge_classifyr  æ  sô   € Ü�;‰;‹=€DØ!#Ð#€D„N�YØ$¨Ð,ÐÙØ�fœs 3›xÑ'ˆä×)Ñ)Ó+€JÜ" 3¨Ó4ò  Ñˆ�)Ü ¨)Ó4ˆØÐØ˜˜�8ˆDØ×Ñ˜$Õð	 ð
 ×#Ñ#Ó%€GáØ�‰�qœ#›%Ô ä  Ó)ò ‰ˆˆ8Ø�Š6ØØò 	ˆAØˆI�aŠLñ	ðð �ˆ=Ðr1   c                 óH  — |D �cg c]  }|j                   ‘Œ }}t        |D �cg c]  }|j                  ‘Œ c}|D �cg c]  }|j                  j                  ‘Œ c}«      \  | _        }t        |«      | _        g }t        ||«      D �]e  \  }}d }	t        |j                  j                  «      }
|j                  j                  }g }|D �]  }t        t        |«      «      }||
vrÌd }	|	€Åt        j                   «       }	g x}|	_        t        |j                  «      D ]�  }|rd }nxt        j                  «       }| j                   rt#        j$                  | j                   «      nd |_        | j(                  rt#        j$                  | j(                  «      nd |_        |j-                  |«       Œ’ |	}n|j/                  |d«      }||   }|j-                  |«       �Œ |j-                  |«       �Œh |}~t        |D �cg c]  }|j0                  ‘Œ c}«      \  | _        }t        |«      | _        g }t        ||«      D ]Í  \  }}|j0                  j                  }g }|D ]š  }|j                  }t        j                   «       }g x}|_        |D ]Y  }|s|d   }n+t        t        |«      «      }|j/                  |d«      }||   }|j-                  t3        j4                  |«      «       Œ[ |j-                  |«       Œœ |j-                  |«       ŒÏ |}~|S c c}w c c}w c c}w c c}w r²   )rÇ   r  rÅ   r–   r˜   rq   ÚClass1Countrs   r�   rŒ   ÚnextÚiterr”   rÈ   rø   ÚClass2Countrð   r
   rÚ   râ   rñ   rã   r7   rJ   rÆ   r´   Údeepcopy)r.   re   r,   ÚtransparentrŠ   Úmatricesr  Únew_matricesÚmatrixÚnullRowÚcoverageÚ	classDef1Úclass1Recordsr  ÚexemplarGlyphÚclass2recordsrœ   Úrec2Úrec1ÚklassÚ	classDef2Úrec1oldÚoldClass2RecordsÚrec1newÚclass2Recordss                            r/   Ú_PairPosFormat2_align_matricesr&    s  € Ø(+Ö, 1�—“Ð,€HÐ,ô 7Ø!Ö"˜ˆ�‹Ò"ÀÖ$D¸1 Q§Z¡Z×%6Ó%6Ò$DóÑ€D„N�Gô ˜7“|€DÔØ€LÜ˜˜hÓ'ó &+‰	ˆˆ6ØˆÜ�q—z‘z×(Ñ(Ó)ˆØ—K‘K×)Ñ)ˆ	ØˆØó  	'ˆHÜ ¤ h£Ó0ˆMØ HÑ,ð
 �Ø�?Ü Ÿo™oÓ/�GØ;=Ð=�M GÔ$8ä" 1§=¡=Ó1ò 3˜Ù&Ø#'™Dä#%§?¡?Ó#4˜Dð $(×#4Ò#4ô !'× 2Ñ 2°4×3DÑ3DÔ Eà%)ð !œKð $(×#4Ò#4ô !'× 2Ñ 2°4×3DÑ3DÔ Eà%)ð !œKð
 &×,Ñ,¨TÕ2ð3ð  ‘à!Ÿ™ m°QÓ7�Ø˜e‘}�Ø× Ñ  Ö&ðA 	'ðB 	×Ñ˜MÖ*ðM&+ðN €HØô 7ÈSÖ7QÈ¸¿»Ò7QÓRÑ€D„N�GÜ˜7“|€DÔØ€LÜ˜˜hÓ'ò +‰	ˆˆ6Ø—K‘K×)Ñ)ˆ	ØˆØò 	*ˆGØ&×3Ñ3ÐÜ—o‘oÓ'ˆGØ35Ð5ˆM˜GÔ0Ø#ò :�ÙØ+¨AÑ.‘Dä$(¬¨h«Ó$8�MØ%ŸM™M¨-¸Ó;�EØ+¨EÑ2�DØ×$Ñ$¤T§]¡]°4Ó%8Õ9ð:ð × Ñ  Õ)ð	*ð 	×Ñ˜MÕ*ð!+ð" €HØà€OùòU -ùò 	#ùÒ$Dùò^ 8Rs   …L£L¼L
Ç;Lc                 ó\  — t        |D �cg c]  }|j                  sŒ|j                  dk(  ‘Œ  c}«      sJ d«       ‚|j                  | |d¬«       t	        |j
                  |D �cg c]  }|j                  j                  ‘Œ c}«      \  }}|| j                  _        t        ||j                  «      D ])  \  }}|j                  j                  |k7  sŒ ||d   k(  rŒ)J ‚ t        | ||j
                  «      }t        |d   «      | _        |j                  | j                  |«       y c c}w c c}w )Nr   rî   )r–   rÅ   r  rÆ   r  rÇ   rð   rñ   r×   éÿÿÿÿ)r   rÇ   rñ   ro   r°   r,   r–   r˜   rs   rÜ   r&  rz   rv   )	r.   re   rF   rŠ   rX   r˜   rœ   r½   r  s	            r/   Ú_PairPosFormat2_merger)  O  s  € ÜØ&)Ö< ¨Q¯^«^ˆ�‰˜1Ó	Ò<ôð 'à&ó'ð ð ×ÑØØð	
ð ô ô  # 6§;¡;ÈCÖ0PÀq°·±×1BÓ1BÒ0PÓQ�I€FˆAØ!€D‡M�MÔô ˜C ×!8Ñ!8Ó9ò &‰ˆˆ9Ø�:‰:×Ñ Ó&Ø˜	 "™Ó%Ð%Ð%ð&ô .¨d°C¸¿¹ÓE€Hä˜X a™[Ó)€DÔØ
×Ñ�d×'Ñ'¨Õ2ùòI 	=ùò& 1Qs   ŠD$œD$Á#D)
c                 ó¨  — t        t        j                  |D �cg c]  }|j                  ‘Œ c}d«      x| _        |_        t        t        j                  |D �cg c]  }|j
                  ‘Œ c}d«      x| _        |_        |j                  dk(  rt        ||| «       n*|j                  dk(  rt        ||| «       nt        | d¬«      ‚| `| `d}d}|j                  dk(  rh|j                  D ]X  }|j                  D ]G  }t        |dd «      }|�||j                  «       z  }t        |dd «      }	|	€Œ5||	j                  «       z  }ŒI ŒZ nv|j                  dk(  rg|j                  D ]X  }
|
j                   D ]G  }t        |dd «      }|�||j                  «       z  }t        |dd «      }	|	€Œ5||	j                  «       z  }ŒI ŒZ ||_        ||_        y c c}w c c}w )Nr   r   r’   rÀ   rº   râ   rã   )r   rØ   rÙ   rð   rå   rñ   ræ   r“   rô   r)  r&   rÂ   rÃ   rI   rÛ   rÇ   rÈ   )rF   r.   re   rŠ   Úvf1Úvf2ÚpairSetÚpairValueRecordÚpv1Úpv2Úclass1RecordÚclass2Records               r/   r5   r5   x  sÒ  € ä.4Ü�
‰
¨SÖ1¨�Q—^“^Ò1°1ó/ð €FÔ˜$Ô+ô /5Ü�
‰
¨SÖ1¨�Q—^“^Ò1°1ó/ð €FÔ˜$Ô+ð ‡{�{�aÒÜ˜d C¨Õ0Ø	�‰˜Ò	Ü˜d C¨Õ0ä Ð1JÔKÐKàÐ˜VÐ0ð €CØ
€CØ‡{�{�aÒØ—|‘|ò 	+ˆGØ#*×#:Ñ#:ò +�Ü˜o¨x¸Ó>�Ø�?Ø˜3Ÿ=™=›?Ñ*�CÜ˜o¨x¸Ó>�Ø‘?Ø˜3Ÿ=™=›?Ñ*‘Cñ+ñ	+ð 
�‰˜Ò	Ø ×-Ñ-ò 	+ˆLØ ,× 9Ñ 9ò +�Ü˜l¨H°dÓ;�Ø�?Ø˜3Ÿ=™=›?Ñ*�CÜ˜l¨H°dÓ;�Ø‘?Ø˜3Ÿ=™=›?Ñ*‘Cñ+ð	+ð €DÔØ€DÕùòM 2ùò 2s   ™G

ÁG
c                 óZ  — t        d„ |D «       «      | _        t        |j                  |D �cg c]  }t	        ||dz   «      j
                  ‘Œ c}|D �cg c]  }t	        ||dz   «      j                  ‘Œ c}«      \  }}|t	        | |dz   «      _        t        |j                  |D �cg c]  }t	        ||dz   «      j
                  ‘Œ c}|D �cg c]  }t	        t	        ||dz   «      |dz   «      ‘Œ  c}«      \  }}	|t	        | |dz   «      _        g }
t        |t        |Ž «      D ]Ë  \  }}|D �cg c]  }|€Œ|j                  ‘Œ }}t        |«      st        ||d   |¬«      ‚t        j                  «       }|d   |_        |D �cg c]  }|€d n|j                  ‘Œ }}t        |«      rd }n-t        j                  «       }d|_        |j!                  ||«       ||_        |
j#                  |«       ŒÍ t        j$                  «       }|
|_        t'        |
«      |_        t+        | |dz   |«       g }
t        |t        |	Ž «      D ]ù  \  }}t        |«      rd }nÕ t	        t        |dz   «      «       }g }t+        ||dz   |«       |D �cg c]  }|€g nt	        ||dz   «      ‘Œ }}|D ]-  }|j-                  d g| j                  t'        |«      z
  z  «       Œ/ t        |Ž D ]N  }t        |«      rd }n-t        j                  «       }d|_        |j!                  ||«       |j#                  |«       ŒP |
j#                  |«       Œû  t	        t        |dz   «      «       }t+        ||dz   |
«       t+        ||d	z   t'        |
«      «       t+        | |dz   |«       y c c}w c c}w c c}w c c}w c c}w c c}w c c}w )
Nc              3   ó4   K  — | ]  }|j                   –— Œ y ­wr+   )Ú
ClassCount©rW   rŠ   s     r/   rY   z,_MarkBasePosFormat1_merge.<locals>.<genexpr>¥  s   è ø€ Ò4¨1˜!Ÿ,�,Ñ4ùó   ‚r–   ÚArrayÚRecordr   rZ   r   ÚAnchorÚCount)r÷   r5  r°   r,   rI   r˜   Ú
MarkRecordrs   ÚClassr   r   r”   Ú
MarkAnchorr   r:  r“   rb   r7   Ú	MarkArrayrq   Ú	MarkCountÚsetattrÚextend)r.   re   rF   ÚMarkÚBaserŠ   ÚMarkCoverageGlyphsÚMarkRecordsÚBaseCoverageGlyphsÚBaseRecordsÚrecordsr©   ÚglyphRecordsÚrÚ
allClassesrÍ   Ú
allAnchorsÚanchorÚarrayÚanchorsÚglyphAnchorss                        r/   Ú_MarkBasePosFormat1_mergerR  ¤  sƒ  € ÜÑ4°Ô4Ó4€D„Oä&8Ø�‰Ø7:Ö;°!Œ��D˜:Ñ%Ó	&×	-Ó	-Ò;Ø8;Ö<°1Œ��D˜7‘NÓ	#×	.Ó	.Ò<ó'Ñ#Ð˜ð
 /A„GˆD�$˜Ñ#Ó$Ô+ä&8Ø�‰Ø7:Ö;°!Œ��D˜:Ñ%Ó	&×	-Ó	-Ò;ØGJÖKÀ!Œ”˜˜D 7™NÓ+¨T°H©_Õ	=ÒKó'Ñ#Ð˜ð
 /A„GˆD�$˜Ñ#Ó$Ô+ð €GÜÐ1´3¸Ð3DÓEò  ‰ˆˆ<Ø'3ÖE !°q±}�a—g“gÐEˆ
ÐEô$ ˜
Ô#Ü" 6°J¸q±MÀzÔRÐRä—-‘-“/ˆCØ" 1™ˆCŒIØGSÖTÀ! ! )™$°·±Ñ=ÐTˆJÐTÜ�zÔ"Ø‘äŸ™›�Ø !�”Ø×"Ñ" 6¨:Ô6Ø#ˆCŒNØ�‰�sÕðA ôB �L‰L‹N€EØ€EÔÜ˜'“l€E„OÜˆD�$˜‘. %Ô(ð €GÜÐ1´3¸Ð3DÓEò ‰ˆˆ<Ü�<Ô Ø‰Cà.”'œ"˜d X™oÓ.Ó0ˆCØˆGÜ�C˜ ™¨'Ô2àJVöØEF�a�i‘¤W¨Q°°x±Ó%@Ñ@ðˆLð ð "ò >�Ø—‘˜$˜ 4§?¡?´S¸³VÑ#;Ñ<Õ=ð>ä! <Ð0ò '�
Ü˜:Ô&Ø!‘FäŸY™Y›[�FØ$%�F”MØ×&Ñ& v¨zÔ:Ø—‘˜vÕ&ð'ð 	�‰�sÕð)ð* (ŒG”B˜˜w™Ó'Ó)€EÜˆE�4˜(‘? GÔ,ÜˆE�4˜'‘>¤3 w£<Ô0ÜˆD�$˜‘. %Õ(ùò] 	<ùÚ<ùò 	<ùÚKùò Fùò. Uùò.s/   ¬ N

Á NÂ$ N
Ã
#NÄ)NÄ1NÅ?N#É>N(c           	      óü   — t        |j                  d„ |D «       «      s1t        | d|j                  |D �cg c]  }|j                  ‘Œ c}¬«      ‚|j                  dk(  rt        ||| «       y t	        | d¬«      ‚c c}w )Nc              3   ó4   K  — | ]  }|j                   –— Œ y ­wr+   rÓ   r6  s     r/   rY   zmerge.<locals>.<genexpr>ü  ó   è ø€ Ò#:° A§H¥HÑ#:ùr7  zmark-to-base positioning lookup©r»   r[   r\   r   rº   ©r   r“   r%   rR  r&   ©rF   r.   re   rŠ   s       r/   r5   r5   ú  so   € ä�d—k‘kÑ#:°cÔ#:Ô;Ü!ØØ6Ø—[‘[Ø#&Ö'˜a�—“Ò'ô	
ð 	
ð ‡{�{�aÒÜ! $¨¨VÕ4ä Ð1RÔSÐSùò (s   ´A9c           	      ó   — t        |j                  d„ |D «       «      s1t        | d|j                  |D �cg c]  }|j                  ‘Œ c}¬«      ‚|j                  dk(  rt        ||| dd«       y t	        | d¬«      ‚c c}w )Nc              3   ó4   K  — | ]  }|j                   –— Œ y ­wr+   rÓ   r6  s     r/   rY   zmerge.<locals>.<genexpr>  rU  r7  zmark-to-mark positioning lookuprV  r   ÚMark1ÚMark2rº   rW  rX  s       r/   r5   r5   	  ss   € ä�d—k‘kÑ#:°cÔ#:Ô;Ü!ØØ6Ø—[‘[Ø#&Ö'˜a�—“Ò'ô	
ð 	
ð ‡{�{�aÒÜ! $¨¨V°W¸gÕFä Ð1RÔSÐSùò (s   ´A;c                 óð  — t        j                  «       }t        j                  «       |_        t        || D ��cg c]&  }|j                  D �cg c]  }|j
                  ‘Œ c}‘Œ( c}}| D �cg c]  }|j                  ‘Œ c}«      \  }}||j                  _        g x|_        }t        |Ž D ]  }|D ]  }|€Œ|j                  |«        Œ J ‚ t        |j                  «      |_
        |S c c}w c c}}w c c}w r+   )r”   rÂ   r–   r°   rÃ   rÄ   r˜   rs   r7   rq   rç   )	re   r,   r.   r¡   rX   r˜   r¯   ré   rl   s	            r/   Ú_PairSet_flattenr^    sà   € Ü�:‰:‹<€DÜ—K‘K“M€D„Mô (ØØ?B×C¸ ×!3Ñ!3Ö	4˜Aˆ!�-‹-Ô	4ÓCØ&)Ö* ˆ×	Ó	Ò*ó�N€FˆFð "€D‡M�MÔØ"$Ð$€DÔ˜4Ü�v�,ò ˆØò 	ˆAØ‰}Ø—‘˜A”Ùð	ð
 �5ðô ˜d×2Ñ2Ó3€DÔà€Kùò 
5ùÓCùÚ*s   ¹C-ÁC(ÁC-Á+C3Ã(C-c           
      ód  — t        | D �cg c]  }|j                  sŒ|j                  dk(  ‘Œ  c}«      sJ d«       ‚t        j                  «       }d|_        t        j                  «       |_        t        t        j                  | D �cg c]  }|j                  ‘Œ c}d«      |_
        t        t        j                  | D �cg c]  }|j                  ‘Œ c}d«      |_        t        || D �cg c]  }|j                  j                  ‘Œ c}| D �cg c]  }|j                  ‘Œ c}«      \  }}||j                  _        t        |Ž D ��cg c]  }t        |D �cg c]  }|€Œ|‘Œ	 c}|«      ‘Œ! c}}|_        t        |j                  «      |_        |S c c}w c c}w c c}w c c}w c c}w c c}w c c}}w )Nr   rî   r   )r   rÂ   rñ   r”   rÁ   r“   r–   r   rØ   rÙ   rð   r°   r˜   rs   r^  rq   rï   )re   r,   rŠ   r.   rX   r˜   r¯   rl   s           r/   Ú(_Lookup_PairPosFormat1_subtables_flattenr`  1  sY  € ÜØ&)Ö7 ¨Q¯Y«Yˆ�‰˜1Ó	Ò7ôð 'à&ó'ð ô �:‰:‹<€DØ€D„KÜ—K‘K“M€D„MÜœsŸz™zÀCÖ+H¸q¨A¯N«NÒ+HÈ!ÓL€DÔÜœsŸz™zÀCÖ+H¸q¨A¯N«NÒ+HÈ!ÓL€DÔô (Ø¨#Ö. Qˆq�z‰z× Ó Ò.ÀCÖ0H¸q°·³Ò0Hó�N€FˆFð "€D‡M�MÔô ˜6�l÷àô 	 VÖ= ¨q©}š!Ò=¸tÕDó€D„Lô ˜DŸL™LÓ)€DÔØ€Kùò) 	8ùò ,IùÚ+Hùò /ùÒ0Hùò
 >ùós@   ŠFœFÂF
Â?F
Ã)F
ÄF"ÅF,ÅF'ÅF'Å
F,Æ'F,c                 óº  — t        | D �cg c]  }|j                  sŒ|j                  dk(  ‘Œ  c}«      sJ d«       ‚t        j                  «       }d|_        t        j                  «       |_        t        t        j                  | D �cg c]  }|j                  ‘Œ c}d«      |_
        t        t        j                  | D �cg c]  }|j                  ‘Œ c}d«      |_        t        || D �cg c]  }|j                  j                  ‘Œ c}«      \  }}||j                  _        t        || |d¬«      }g x}|_        t        |Ž D ]ƒ  }	t        j                  «       }
|j                  |
«       g |
_        |
j                   }
t        t#        d„ |	D «       «      Ž D ].  }t%        t'        d„ |D «       «      «      }|
j                  |«       Œ0 Œ… |S c c}w c c}w c c}w c c}w )Nr   rî   r’   T)r  c              3   ó4   K  — | ]  }|j                   –— Œ y ­wr+   )rÈ   )rW   rK  s     r/   rY   z;_Lookup_PairPosFormat2_subtables_flatten.<locals>.<genexpr>a  s   è ø€ Ò;°˜aŸn�nÑ;ùr7  c              3   ó&   K  — | ]	  }|€Œ|–— Œ y ­wr+   r€   ©rW   Úcs     r/   rY   z;_Lookup_PairPosFormat2_subtables_flatten.<locals>.<genexpr>b  s   è ø€ Ò= !¨q©}œAÑ=ùs   ‚Š)r   rÇ   rñ   r”   rÁ   r“   r–   r   rØ   rÙ   rð   r°   r˜   r&  rs   r7   rÈ   rz   r  r  )re   r,   rŠ   r.   rX   r˜   rœ   r  r  ÚrowsÚrowÚcolsÚcols                r/   Ú(_Lookup_PairPosFormat2_subtables_flattenrj  J  sŠ  € ÜØ&)Ö< ¨Q¯^«^ˆ�‰˜1Ó	Ò<ôð 'à&ó'ð ô �:‰:‹<€DØ€D„KÜ—K‘K“M€D„MÜœsŸz™zÀCÖ+H¸q¨A¯N«NÒ+HÈ!ÓL€DÔÜœsŸz™zÀCÖ+H¸q¨A¯N«NÒ+HÈ!ÓL€DÔô # 4ÀSÖ)IÀ¨!¯*©*×*;Ó*;Ò)IÓJ�I€FˆAØ!€D‡M�MÔä-¨d°C¸È4ÔP€Hà!#Ð#€FˆTÔÜ�X�ò ˆÜ�o‰oÓˆØ�‰�cÔØˆÔØ×ÑˆÜœÑ;°dÔ;Ó;Ð<ò 	ˆDÜ”tÑ= tÔ=Ó=Ó>ˆCØ�J‰J�s�Oñ	ðð €Kùò3 	=ùò ,IùÚ+Hùò *Js   ŠG	œG	ÂG
Â?G
Ã)G
c                 óx  — t        | «      } t        | «      }d}||k  r/| |   j                  dk(  r|dz  }||k  r| |   j                  dk(  rŒt        | d| |«      g| d| t        | «      }|}|dkD  r5| |dz
     j                  dk(  r |dz  }|dkD  r| |dz
     j                  dk(  rŒ 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’   )rz   rq   r“   r`  rj  )re   r,   rŠ   ru   s       r/   Ú&_Lookup_PairPos_subtables_canonicalizerl  h  sÞ   € ô ˆs‹)€CäˆC‹€AØ	€AØ
ˆaŠ%�C˜‘F—M‘M QÒ&Ø	ˆQ‰ˆð ˆaŠ%�C˜‘F—M‘M QÓ&ä7¸¸B¸Q¸ÀÓFÐG€Cˆˆ€GäˆC‹€AØ	€AØ
ˆaŠ%�C˜˜A™‘J×%Ñ%¨Ò*Ø	ˆQ‰ˆð ˆaŠ%�C˜˜A™‘J×%Ñ%¨Ó*ä7¸¸A¸B¸ÀÓFÐG€Cˆˆ€Gà€Jr1   c                 ó  — t        || D �cg c]  }|j                  j                  ‘Œ c}d «      \  }}t        |«      }t	        j
                  «       }d|_        ||_        t	        j                  «       |_        ||j                  _        ||_        d g|z  |_	        | D ]å  }|j                  dk(  r[|j                  }	|j                  j                  D ]5  }
|j                  |
«      }t        j                  |	«      |j                  |<   Œ7 Œm|j                  dk(  sŒ}t        |j                  j                  «      D ]G  \  }}
|j                  |   }	|j                  |
«      }t        j                  |	«      |j                  |<   ŒI Œç |gS c c}w )Nr’   r   )r°   r–   r˜   rq   r”   r•   r“   r—   rš   r™   r¼   r´   r  rr   )re   r,   Úmin_inclusive_rec_formatrX   r˜   rœ   Ú
num_glyphsÚnewÚ	singlePosÚval_recÚgnameru   rß   s                r/   Ú#_Lookup_SinglePos_subtables_flattenrt  }  sS  € Ü" 4ÀSÖ)IÀ¨!¯*©*×*;Ó*;Ò)IÈ4ÓP�I€FˆAÜ�V“€JÜ
�,‰,‹.€CØ€C„JØ.€C„OÜ—;‘;“=€C„LØ €C‡L�LÔØ€C„NØ�˜Ñ#€C„IØò 
6ˆ	Ø×Ñ˜qÒ Ø—o‘oˆGØ"×+Ñ+×2Ñ2ò 6�Ø—L‘L Ó'�Ü#Ÿ}™}¨WÓ5�—	‘	˜!’ñ6ð ×Ñ Ó"Ü% i×&8Ñ&8×&?Ñ&?Ó@ò 6‘��5Ø#Ÿ/™/¨!Ñ,�Ø—L‘L Ó'�Ü#Ÿ}™}¨WÓ5�—	‘	˜!’ñ6ð
6ð ˆ5€Lùò) *Js   ‹F	
c                 ó°  — t        | j                  |D �cg c]  }|j                  j                  ‘Œ c}|D �cg c]  }|j                  ‘Œ c}«      \  }}d|_        t        j                  «       |_        ||j                  _        g |_        |D ]…  }t        j                  «       }t        j                  «       |_        d|j                  _        t        j                  «       |_	        d|j                  _        |j                  j                  |«       Œ‡ | j                  |j                  |«       t        |j                  «      |_        y c c}w c c}w ©Nr   )r°   r,   r–   r˜   ÚEntryExitRecordr“   r”   r:  ÚEntryAnchorÚ
ExitAnchorr7   rv   rq   ÚEntryExitCount)rF   r.   re   rŠ   r˜   r¯   rœ   rÍ   s           r/   r5   r5   •  s  € ô (Ø�‰Ø$'Ö(˜qˆ�‰×	Ó	Ò(Ø$'Ö(˜qˆ×	Ó	Ò(ó�N€FˆFð €D„KÜ—K‘K“M€D„MØ!€D‡M�MÔØ€DÔØò )ˆÜ× Ñ Ó"ˆÜŸ)™)›+ˆŒØ!"ˆ�‰ÔÜŸ™›ˆŒØ !ˆ�‰ÔØ×Ñ×#Ñ# CÕ(ð)ð ×Ñ�d×*Ñ*¨FÔ3Ü˜d×2Ñ2Ó3€DÕùò! 	)ùÚ(s
   •E
¸Ec                 óŒ   — t        d„ |D «       «      rd |_        t        d„ |D «       «      rd |_        | j                  ||«       y )Nc              3   ó8   K  — | ]  }|j                   d u –— Œ y ­wr+   )rx  ©rW   Úmasters     r/   rY   zmerge.<locals>.<genexpr>¯  s   è ø€ Ò
8¨&ˆ6×Ñ Ô%Ñ
8ùó   ‚c              3   ó8   K  — | ]  }|j                   d u –— Œ y ­wr+   )ry  r}  s     r/   rY   zmerge.<locals>.<genexpr>±  s   è ø€ Ò
7¨ˆ6×Ñ Ô$Ñ
7ùr  )r`   rx  ry  ro   rµ   s      r/   r5   r5   ­  s=   € ä
Ñ
8°CÔ
8Ô8ØˆÔÜ
Ñ
7°3Ô
7Ô7ØˆŒØ
×Ñ˜˜cÕ"r1   c                 óT   — | xs g D ]  }t        |t        «      sŒt        ||«       Œ! y r+   )rx   Ú_BEYOND64K_GPOS_TYPESr   )r½   ÚextendedÚsts      r/   Ú_convert_beyond64k_GPOSr…  Ê  s*   € ØŠo˜2ò 2ˆÜ�bÔ/Õ0Ü# B¨Õ1ñ2r1   c           	      ó¾  — |D �cg c]  }|j                   ‘Œ c}x}| _        t        t        ||«      «      ||j                   fgz   D ]õ  \  }}|sŒ	|d   j                  j
                  j                  d«      sŒ2t        |D �cg c]  }|j                  ‘Œ c}«      s0t        | d|D �cg c]  }|j                  j
                  ‘Œ c}¬«      ‚t        |D �cg c]  }|j                  ‘Œ c}«      st        | «      ‚|d   j                  |_
        |D �cg c]  }|j                  ‘Œ }}|d d …= |j                  |«       Œ÷ | j                  j                  «       xs  t        d„ |j                   g|z   D «       «      }|r)t!        |j                   d«       |D ]  }t!        |d«       Œ |j                   xr' t#        |j                   d   t$        j&                  «      }	|	rQt)        |j                   | j                  «      |_         |D �cg c]  }t)        || j                  «      ‘Œ c}x}| _        n÷|j                   xr' t#        |j                   d   t$        j*                  «      }
|
rÀ|D �cg c]  }t-        |«      ‘Œ }}t/        |D �cg c]
  }||d   k(  ‘Œ c}«      s‡|D ��cg c]  }|D ]  }|j0                  ‘Œ Œ }}}t3        t4        |«      }t7        |j                   | j                  |«      |_         |D �cg c]  }t7        || j                  |«      ‘Œ c}x}| _        d}nd}| j9                  |j                   |«       t-        |j                   «      |_        |	�rœt-        |j                   «      dk\  r|j                   d   j<                  dk(  sJ ‚|j                   d   j>                  j@                  s0|j                   jC                  d«       |xj:                  dz  c_        t-        |j                   «      dk\  r|j                   d   j<                  d	k(  sJ ‚|j                   d   j>                  j@                  s0|j                   jC                  d«       |xj:                  dz  c_        | j                  jD                  jG                  d
tI        «       ¬«      }|dk7  rÑtJ        jM                  d«       tO        | j                  ||j                   «      |_         t-        |j                   «      |_        n{
ryrw|j                   d   }|j>                  j@                  }t        ||jP                  «      D ��ci c]  \  }}||“Œ
 }}}tS        || j                  jU                  «       «      |_         | jW                  ||ddg¬«       |rt!        |j                   d«       | `y c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}}w c c}w c c}}w )Nr   Ú	ExtensionrZ   c              3   ó¾   K  — | ]U  }|D ]N  }t        |t        «      r<|j                  t        |t        j                  t        j
                  f«      rd ndv –— ŒP ŒW y­w))é   é   )r’   N)rx   r‚  r“   r”   r•   rÁ   )rW   Ústsr„  s      r/   rY   zmerge.<locals>.<genexpr>é  sZ   è ø€ ò 8àØò8ð Ü�bÔ/Ô0ð 	�	‰	¤
¨2´·±¼b¿j¹jÐ/IÔ J‘fÐPTÔUð8ØUñ8ùs   ‚AAFTr   r(  r’   z0fontTools.otlLib.optimize.gpos:COMPRESSION_LEVELrò   zCompacting GPOS...ÚSubTableÚSubTableCountr×   ),rŒ  rÜ   rz   rs   ra   r6   Ú
startswithr   r$   ÚExtensionLookupTypeÚ
LookupTypeÚExtSubTablerB  r,   ÚhasExtendedGlyphIDsÚanyr…  rx   r”   rÁ   rl  r•   rq   r`   r—   r   r   rt  rv   r�  r“   r–   r˜   ÚpopÚcfgrJ   r   ÚlogÚinfor   r™   r   r¤   ro   )rF   r.   re   rŠ   r½   r‹  r„  Únew_stsrƒ  Ú	isPairPosÚisSinglePosÚnumSubtablesÚnumsÚtÚvalueFormatListÚmirfÚ	flattenedÚlevelÚsinglePosTabler˜   rs  Ú	valRecordÚsinglePosMappings                          r/   r5   r5   Ð  s  € à?BÖ*C¸!¨1¯:«:Ò*CÐC€I�Ô'ô ”s˜3 	Ó*Ó+°°d·m±mÐ/DÐ.EÑEò  ‰ˆˆ3ÙØØˆq‰6×Ñ×$Ñ$×/Ñ/°Õ<Ü°CÖ8¨b˜RŸ\›\Ò8Ô9Ü,ØØ(Ø9<Ö=°2˜Ÿ™×.Ó.Ò=ôð ô
 ¸cÖB¸˜R×3Ó3ÒBÔCÜ,¨VÓ4Ð4Ø˜q™6×5Ñ5ˆAŒLØ03Ö4¨"�r—~“~Ð4ˆGÐ4Ø’A�Ø�J‰J�wÕð ð( �{‰{×.Ñ.Ó0ò ´Cñ 8à—M‘M�? YÑ.ô8ó 5€Hñ Ü §¡¨uÔ5Øò 	0ˆCÜ# C¨Õ/ð	0ð —‘ÒJ¤*¨T¯]©]¸1Ñ-=¼r¿z¹zÓ"J€Iáô ?Ø�M‰M˜6Ÿ;™;ó
ˆŒð OXö/
ØHJÔ2°2°v·{±{ÕCò/
ð 	
ˆ	�FÕ+ð —m‘mÒR¬
°4·=±=ÀÑ3CÄRÇ\Á\Ó(RˆÙØ.7Ö8¨œC �GÐ8ˆLÐ8Ü¸LÖI°D˜ ¨Q¡Ó/ÒIÔJð <E×"Q°RÈbÒ"QÈ 1§=£=Ð"Q =Ð"Q�Ñ"Qäœc ?Ó3�Ü CØ—M‘M 6§;¡;°ó!�”ð
 (ö7àô 8¸¸F¿K¹KÈÕNò7ð �	˜FÔ3ð !‘	à!�	à
×Ñ�d—m‘m YÔ/Ü˜TŸ]™]Ó+€DÔâä�4—=‘=Ó! QÒ&¨4¯=©=¸Ñ+;×+BÑ+BÀaÒ+GÐGÐGØ�}‰}˜QÑ×(Ñ(×/Ò/Ø�M‰M×Ñ˜aÔ Ø×Ò !Ñ#Õô �4—=‘=Ó! QÒ&¨4¯=©=¸Ñ+<×+CÑ+CÀqÒ+HÐHÐHØ�}‰}˜RÑ ×)Ñ)×0Ò0Ø�M‰M×Ñ˜bÔ!Ø×Ò !Ñ#Õð —‘—‘×#Ñ#Ø>Ü/Ó1ð $ó 
ˆð �AŠ:Ü�H‰HÐ)Ô*Ü,¨V¯[©[¸%ÀÇÁÓOˆDŒMÜ!$ T§]¡]Ó!3ˆDÕá	™ØŸ™ qÑ)ˆØ×(Ñ(×/Ñ/ˆô 69¸À×AUÑAUÓ5V÷
Ù!1 ¨	ˆE�9Ñð
Ðñ 
ô 'Ø˜fŸk™k×<Ñ<Ó>ó
ˆŒð ×Ñ˜˜c¨J¸Ð+HÐÔIñ
 Ü §¡¨tÔ4àÑùòi +Dùò 9ùò >ùâBùò 5ùò6/
ùò 9ùÚIùó #Rùò7ùóT
sA   …V&ÂV+
Â'V0ÃV5
ÄV:ÈV?É)WÊW	Ê!WË8WÔ<Wc                   ó   — e Zd ZdZd„ Zy)ÚInstancerMergerzLA merger that takes multiple master fonts, and instantiates
    an instance.c                 óx   — t         j                  | |«       || _        || _        |j	                  |«      | _        y r+   )r)   r0   ÚmodelÚlocationÚgetMasterScalarsÚmasterScalars)r.   r,   r¨  r©  s       r/   r0   zInstancerMerger.__init__R  s1   € Ü�‰˜˜dÔ#ØˆŒ
Ø ˆŒØ"×3Ñ3°HÓ=ˆÕr1   N©r6   r�   r‚   Ú__doc__r0   r€   r1   r/   r¦  r¦  N  s   „ ñó>r1   r¦  c                 óÒ   — |j                   dk(  sJ ‚|D �cg c]  }|j                  ‘Œ }}| j                  }| j                  }t	        |j                  ||«      «      |_        y c c}w rv  )r“   Ú
Coordinater¨  r«  r   ÚinterpolateFromValuesAndScalars)rF   r.   re   ÚaÚCoordsr¨  r«  s          r/   r5   r5   Y  s`   € à�;‰;˜!ÒÐÐØ$'Ö(˜qˆa�l‹lÐ(€FÐ(Ø�L‰L€EØ×(Ñ(€MÜØ×-Ñ-¨f°mÓDó€D…Oùò )s   –A$c                 óN  — |j                   dk(  sJ ‚|D �cg c]  }|j                  ‘Œ }}|D �cg c]  }|j                  ‘Œ }}| j                  }| j                  }t        |j                  ||«      «      |_        t        |j                  ||«      «      |_        y c c}w c c}w rv  )r“   ÚXCoordinateÚYCoordinater¨  r«  r   r°  )rF   r.   re   r±  ÚXCoordsÚYCoordsr¨  r«  s           r/   r5   r5   d  sš   € à�;‰;˜!ÒÐÐØ&)Ö* ˆq�}‹}Ð*€GÐ*Ø&)Ö* ˆq�}‹}Ð*€GÐ*Ø�L‰L€EØ×(Ñ(€MÜØ×-Ñ-¨g°}ÓEó€DÔô Ø×-Ñ-¨g°}ÓEó€DÕùò +ùÚ*s
   –B¯B"c           	      ó  — | j                   }| j                  }dD ]b  \  }}t        ||«      rJ ‚t        ||«      sŒ!|D �cg c]  }t        ||d«      ‘Œ }}t	        |j                  ||«      «      }	t        |||	«       Œd y c c}w ©N©)ÚXAdvanceÚ
XAdvDevice)ÚYAdvanceÚ
YAdvDevice)Ú
XPlacementÚ
XPlaDevice)Ú
YPlacementÚ
YPlaDevicer   )r¨  r«  r_   rI   r   r°  rA  )
rF   r.   re   r¨  r«  ÚnameÚ	tableNamer±  rl   rj   s
             r/   r5   r5   s  s�   € à�L‰L€EØ×(Ñ(€Mðò '‰ˆˆiô ˜4 Ô+Ð+Ð+ä�4˜ÕØ36Ö7¨a”g˜a  qÕ)Ð7ˆFÐ7ÜØ×5Ñ5°f¸mÓLóˆEô �D˜$ Õ&ñ'ùò 8s   Á Bc                   ó   — e Zd ZdZdd„Zy)Ú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.c                 óL   — t         j                  | |«       || _        || _        y r+   )r)   r0   Ú	instancerÚdeleteVariations)r.   r,   rÈ  rÉ  s       r/   r0   zMutatorMerger.__init__“  s   € Ü�‰˜˜dÔ#Ø"ˆŒØ 0ˆÕr1   N©Tr¬  r€   r1   r/   rÆ  rÆ  �  s   „ ñô
1r1   rÆ  c                 ó‚  — |d   j                   j                  «       |_         |j                  dk7  ry | j                  }|j                  }|�|j
                  dk7  ry | j                  r|`|r?|j                  dz  |j                  z   }t        ||   «      }|xj                  |z  c_
        | j                  rd|_        y y )Nr   r‰  é €  é   r   )rA   r´   r“   rÈ  ÚDeviceTableÚDeltaFormatrÉ  Ú	StartSizeÚEndSizer   r¯  )rF   r.   re   rÈ  ÚdevÚvaridxÚdeltas          r/   r5   r5   ™  s¯   € ð ˜‘F—O‘O×(Ñ(Ó*€D„Mà‡{�{�aÒØà× Ñ €IØ
×
Ñ
€CØ
€˜3Ÿ?™?¨fÒ4ØØ×ÒØÐÙ
Ø—-‘- 2Ñ%¨¯©Ñ4ˆÜ˜	 &Ñ)Ó*ˆØ�Š˜5Ñ �à×ÒØˆ�ð r1   c                 ó<  — |d   j                   j                  «       |_         t        |dd «      }|�|j                  dk7  ry |j                  dz  |j
                  z   }|xj                  t        | j                  |   «      z  c_        | j                  rd |_
        y y )Nr   rÎ  rÌ  rÍ  )rA   r´   rI   rÏ  rÐ  rÑ  r™   r   rÈ  rÉ  rÎ  )rF   r.   re   rÒ  rÓ  s        r/   r5   r5   °  s†   € à˜‘F—O‘O×(Ñ(Ó*€D„MÜ
�$˜ tÓ
,€CØ
€{�c—o‘o¨Ò/ØØ�m‰m˜rÑ! S§[¡[Ñ0€FØ‡J‚J”'˜&×*Ñ*¨6Ñ2Ó3Ñ3…JØ×ÒØˆÕð r1   c           	      ó
  ‡— |d   j                   j                  «       ‰_         ‰j                  dk7  ry | j                  }dD ]–  }|dz   }t	        ‰|«      sŒt        ‰|«      }|�|j                  dk7  rŒ3| j                  rt        ‰|«       |€ŒN|j                  dz  |j                  z   }t        ||   «      }|dz   }	t        ‰|	t        ‰|	«      |z   «       Œ˜ | j                  rt        ˆfd„dD «       «      sd	‰_        y y y )
Nr   r‰  ÚXYrÎ  rÌ  rÍ  r¯  c              3   ó>   •K  — | ]  }t        ‰|d z   d«      –— Œ y­w)rÎ  N)rI   )rW   Úaxisr.   s     €r/   rY   zmerge.<locals>.<genexpr>Ö  s$   øè ø€ ò +Ø6:Œ��d˜]Ñ*¨D×1ñ+ùr£   r   )rA   r´   r“   rÈ  r_   rI   rÏ  rÉ  ÚdelattrrÐ  rÑ  r   rA  r“  )
rF   r.   re   rÈ  rX   rÄ  rÒ  rÓ  rÔ  r<   s
    `        r/   r5   r5   ¼  s  ø€ ð ˜‘F—O‘O×(Ñ(Ó*€D„Mà‡{�{�aÒØà× Ñ €IØò 9ˆØ˜Ñ%ˆ	Ü�t˜YÔ'ØÜ�d˜IÓ&ˆØˆ?˜sŸ™°&Ò8ØØ×"Ò"Ü�D˜)Ô$Øˆ;ØØ—-‘- 2Ñ%¨¯©Ñ4ˆÜ˜	 &Ñ)Ó*ˆà�<ÑˆÜ��dœG D¨$Ó/°%Ñ7Õ8ð9ð" ×Ò¤só +Ø>Bô+ô (ð ˆ�ð(Ðr1   c           
      óŠ  — |d   j                   j                  «       |_         | j                  }dD ]�  \  }}t        ||«      sŒt	        ||«      }|�|j
                  dk7  rŒ1| j                  rt        ||«       |€ŒL|j                  dz  |j                  z   }t        ||   «      }t        ||t	        ||d«      |z   «       Œ’ y )Nr   rº  rÌ  rÍ  )rA   r´   rÈ  r_   rI   rÏ  rÉ  rÚ  rÐ  rÑ  r   rA  )	rF   r.   re   rÈ  rÃ  rÄ  rÒ  rÓ  rÔ  s	            r/   r5   r5   Ü  sÅ   € ð ˜‘F—O‘O×(Ñ(Ó*€D„Mà× Ñ €Iðò <‰ˆˆiô �t˜YÔ'ØÜ�d˜IÓ&ˆØˆ?˜sŸ™°&Ò8ØØ×"Ò"Ü�D˜)Ô$Øˆ;ØØ—-‘- 2Ñ%¨¯©Ñ4ˆÜ˜	 &Ñ)Ó*ˆä��dœG D¨$°Ó2°UÑ:Õ;ñ%<r1   c                   ó.   ‡ — e Zd ZdZd„ Zd„ Zˆ fd„Zˆ xZS )ÚVariationMergerzJA merger that takes multiple master fonts, and builds a
    variable font.c                 ó†   — t         j                  | |«       t        j                  |«      | _        | j                  |«       y r+   )r)   r0   r   ÚOnlineVarStoreBuilderÚstore_builderÚsetModel)r.   r¨  ÚaxisTagsr,   s       r/   r0   zVariationMerger.__init__   s/   € Ü�‰˜˜dÔ#Ü%×;Ñ;¸HÓEˆÔØ�‰�eÕr1   c                 óH   — || _         | j                  j                  |«       y r+   )r¨  rà  rá  )r.   r¨  s     r/   rá  zVariationMerger.setModel  s   € ØˆŒ
Ø×Ñ×#Ñ# EÕ*r1   c                 ó   •— d }d }d |v r�t        |«      r|�t        | |¬«      ‚y | j                  }| j                  r+t        |D �cg c]  }|d u‘Œ c}| j                  «      | _        | j                  }|j                  |«      \  }}| j                  |«       t        t        | �'  ||«       |r| j                  |«       |r|| _        y y c c}w )N)r\   )
r   r   r-   r   r¨  ÚgetSubModelrá  ÚsuperrÝ  rb   )r.   rd   re   ÚmasterModelÚorigTTFsrX   r¨  ra   s          €r/   rb   zVariationMerger.mergeThings	  sÁ   ø€ ØˆØˆØ�3‰;Ü�sŒ|Ø�?Ü$ T¨sÔ3Ð3Øð —y‘yˆHØ�yŠyÜ#¸CÖ$@°q Q¨d¢]Ò$@À$Ç)Á)ÓL�”	àŸ*™*ˆKØ$×0Ñ0°Ó5‰JˆE�3Ø�M‰M˜%Ô äŒo˜tÑ0°°cÔ:áØ�M‰M˜+Ô&ÙØ ˆD�Ið ùò %As   ÁC)r6   r�   r‚   r­  r0   rá  rb   Ú__classcell__)ra   s   @r/   rÝ  rÝ  ü  s   ø„ ñòò
+÷!ð !r1   rÝ  c                 ó|   — t        |«      r|d   d fS | j                  |«      \  }}|t        j                  |«      fS r²   )r   ÚstoreMastersr   ÚbuildVarDevTable)rà  Úmaster_valuesÚbaseÚvarIdxs       r/   rì  rì  $  sD   € Ü�ÔØ˜QÑ Ð%Ð%Ø ×-Ñ-¨mÓ<�L€Dˆ&Ø”×)Ñ)¨&Ó1Ð1Ð1r1   c                 óÔ   — |j                   dk7  rt        | d¬«      ‚t        | j                  |D �cg c]  }|j                  ‘Œ c}«      \  |_        }|rd|_         ||_        y y c c}w )Nr   za baseline coordinaterº   r‰  ©r“   r&   rì  rà  r¯  rÎ  ©rF   r.   re   r±  rÎ  s        r/   r5   r5   +  se   € à‡{�{�aÒÜ Ð1HÔIÐIÜ#3Ø×Ñ°SÖ9°˜qŸ|›|Ò9ó$Ñ €D„O�[ñ ØˆŒØ&ˆÕð ùò :ó   ±A%
c                 óÔ   — |j                   dk7  rt        | d¬«      ‚t        | j                  |D �cg c]  }|j                  ‘Œ c}«      \  |_        }|rd|_         ||_        y y c c}w )Nr   za caretrº   r‰  rñ  rò  s        r/   r5   r5   7  sd   € à‡{�{�aÒÜ °Ô;Ð;Ü#3Ø×Ñ°SÖ9°˜qŸ|›|Ò9ó$Ñ €D„O�[ñ ØˆŒØ&ˆÕð ùò :ró  c                 ó\  — |j                   dk7  rt        | d¬«      ‚t        | j                  |D �cg c]  }|j                  ‘Œ c}«      \  |_        }t        | j                  |D �cg c]  }|j
                  ‘Œ c}«      \  |_        }|s|rd|_         ||_        ||_        y y c c}w c c}w )Nr   z	an anchorrº   r‰  )r“   r&   rì  rà  r´  rµ  ÚXDeviceTableÚYDeviceTable)rF   r.   re   r±  rö  r÷  s         r/   r5   r5   C  s¢   € à‡{�{�aÒÜ °Ô=Ð=Ü%5Ø×Ñ°cÖ:°˜qŸ}›}Ò:ó&Ñ"€DÔ�lô &6Ø×Ñ°cÖ:°˜qŸ}›}Ò:ó&Ñ"€DÔ�lñ ‘|ØˆŒØ(ˆÔØ(ˆÕð $ùò ;ùò ;s   ±B$
Á'B)
c                 óÚ   — dD ]a  \  }}t        ||«      sŒt        | j                  |D �cg c]  }t        ||d«      ‘Œ c}«      \  }}t	        |||«       |sŒUt	        |||«       Œc y c c}w r¹  )r_   rì  rà  rI   rA  )rF   r.   re   rÃ  rÄ  r±  rj   ÚdeviceTables           r/   r5   r5   S  st   € ðò 6‰ˆˆiô �4˜ÕÜ!1Ø×$Ñ$ÀCÖ&H¸q¤w¨q°$¸Õ':Ò&Hó"ÑˆE�;ô �D˜$ Ô&ÚÜ˜˜i¨Õ5ñ6ùò 'Is   ªA(c                   óv   — 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y)Ú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.
    c                 óº   — t         j                  | |||«       i | _        g | _        t	        «       | _        g | _        d | _        |rt        «       | _        d| _	        y )NF)
rÝ  r0   ÚvarIndexCacheÚvarIdxesr�   ÚvarTableIdsÚlayersÚlayerReuseCacher   Ú_doneBaseGlyphs)r.   r¨  râ  r,   ÚallowLayerReuses        r/   r0   zCOLRVariationMerger.__init__o  sX   € Ü× Ñ   u¨h¸Ô=ð  ˆÔàˆŒô ›5ˆÔàˆŒØ#ˆÔÙÜ#2Ó#4ˆDÔ à$ˆÕr1   c                 ó€   — d|v r"d|v r| j                  |d   j                  «       t        j                  | |||«       y )NÚCOLR)ÚexpandPaintColrLayersrk   rÝ  r   )r.   r,   r|   r}   s       r/   r   zCOLRVariationMerger.mergeTables�  s>   € Ø�YÑ 6¨T¡>ð ×&Ñ& t¨F¡|×'9Ñ'9Ô:Ü×#Ñ# D¨$°¸YÕGr1   c                  ó   — y)NTr€   )rœ   s    r/   ú<lambda>zCOLRVariationMerger.<lambda>Ž  s   � r1   c                 óž  — |j                   }|j                  }d}	  ||«      } ||«      }|s!t        | t	        |«      j
                  |¬«      ‚|}g }|D ])  }	t        |	dd «      }	  ||«      }|j                  |«       Œ+ t        ||«      s"t        | t	        |«      j
                  ||¬«      ‚|S # t        $ r Y Œ�w xY w# t        $ r Y Œ]w xY w)NF)r»   rj   r“   rV  )
r“   Ú
formatEnumÚ
ValueErrorr&   rB   r6   rI   r7   r   r%   )
r.   rd   re   ÚvalidateÚfmtr
  Úokr[   r\   rX   s
             r/   ÚcheckFormatEnumz#COLRVariationMerger.checkFormatEnumŽ  sí   € Ø�j‰jˆØ—^‘^ˆ
Øˆð	Ù˜S“/ˆCñ ˜#“ˆBÙÜ# D´4¸³9×3EÑ3EÈSÔQÐQØˆØˆØò 	ˆAÜ˜!˜X tÓ,ˆCðÙ  “o�ð �J‰J�s�Oð	ô ˜( CÔ(Ü%ØÜ˜c›×+Ñ+Ø!Øô	ð ð ˆøô- ò 	Ùð	ûô ò Ùðús#   œB1 Á&C Â1	B=Â<B=Ã 	CÃCc           
      ó   — |j                  «       D ]5  }	 | j                  ||   |D �cg c]  }|j                  |«      ‘Œ c}«       Œ7 y c c}w # t        $ r%}|j                  j                  d|›d�«       ‚ d }~ww xY w)Nú[ú])rV   rb   rJ   r'   rc   r7   )r.   rd   re   r‹   rX   rn   s         r/   ÚmergeSparseDictz#COLRVariationMerger.mergeSparseDict¬  sq   € Ø—‘“ò 	ˆAðØ× Ñ   Q¡¸CÖ)@°q¨!¯%©%°­(Ò)@ÕAñ	ùâ)@øÜ#ò Ø—‘—‘  1 % q˜zÔ*Øûðús(   •A¨A
Á AÁ
AÁ	A=Á A8Á8A=c                 óì   — |D ]:  }t        ||«      }|D �cg c]  }t        ||«      ‘Œ }}	 | j                  ||«       Œ< y c c}w # t        $ r$}|j                  j	                  d|› �«       ‚ d }~ww xY w)Nr^   )rI   rb   r'   rc   r7   )	r.   rd   re   r=   r<   rj   rg   rl   rn   s	            r/   Ú
mergeAttrszCOLRVariationMerger.mergeAttrs´  sz   € Øò 	ˆDÜ˜C Ó&ˆEØ69Ö:¨d”g˜d DÕ)Ð:ˆFÐ:ðØ× Ñ  ¨Õ/ñ		ùâ:øô $ò Ø—‘—‘  4 &˜zÔ*Øûðús   –A¬AÁ	A3ÁA.Á.A3c                 óx  — |D �cg c]  }t        ||«      ‘Œ }}d}|j                  |«      }t        |t        «      r d}|D �cg c]  }|j	                  |«      ‘Œ }}|d   }	t
        j                  }
t        |«      s| j                  j                  |«      \  }	}
|r|j                  |	«      }	|	|
fS c c}w c c}w )NFTr   )rI   ÚgetConverterByNamerx   r   ÚtoIntr”   ÚNO_VARIATION_INDEXr   rà  rë  ÚfromInt)r.   rd   re   r<   rg   rí  Úis_fixed_size_floatÚconvrX   Ú	baseValuerï  s              r/   ÚstoreMastersForAttrz'COLRVariationMerger.storeMastersForAttr¾  s¾   € Ø9<Ö=°œ  tÕ,Ð=ˆÐ=ð
 $ÐØ×%Ñ% dÓ+ˆÜ�dœNÔ+Ø"&ÐØ4AÖB¨q˜TŸZ™Z¨�]ÐBˆMÐBà! !Ñ$ˆ	Ü×&Ñ&ˆÜ˜Ô&Ø $× 2Ñ 2× ?Ñ ?ÀÓ NÑˆI�váØŸ™ YÓ/ˆIà˜&Ð Ð ùò' >ùò Cs   …B2ÁB7Úreturnc                 ó˜  — t        |«      }| j                  j                  |«      }|€ct        t	        | j
                  «      t	        |«      z
  dz   «      D ]3  }| j
                  ||t	        |«      z    |k(  sŒ"|x| j                  |<   } n |€{t        t	        |«      dz
  dd«      D ]_  }| j
                  | d  |d | k(  sŒt	        | j
                  «      |z
  }|| j                  |<   | j
                  j                  ||d  «        n |€?t	        | j
                  «      x| j                  |<   }| j
                  j                  |«       |S )Nr   r   r(  )Útuplerý  rJ   rø   rq   rþ  rB  )r.   rþ  ri   ÚvarIndexBaseru   Úns         r/   ÚstoreVariationIndicesz)COLRVariationMerger.storeVariationIndicesÔ  sH  € ô �H‹oˆØ×)Ñ)×-Ñ-¨cÓ2ˆàÐäœ3˜tŸ}™}Ó-´°H³Ñ=ÀÑAÓBò �Ø—=‘=  Q¬¨X«Ñ%6Ð7¸8ÓCØ=>Ð>�D×&Ñ& sÑ+¨lÙðð
 Ðäœ3˜x›=¨1Ñ,¨a°Ó4ò �Ø—=‘= !  Ð%¨°"°1¨Ó5Ü#& t§}¡}Ó#5¸Ñ#9�LØ.:�D×&Ñ& sÑ+Ø—M‘M×(Ñ(¨°!°"¨Ô6Ùðð Ðä58¸¿¹Ó5GÐGˆD×Ñ˜sÑ# lØ�M‰M× Ñ  Ô*àÐr1   c                 óæ   — t         j                  }g }|D ]6  }| j                  |||«      \  }}t        |||«       |j	                  |«       Œ8 t        d„ |D «       «      r| j                  |«      }|S )Nc              3   óB   K  — | ]  }|t         j                  k7  –— Œ y ­wr+   )r”   r  rÔ   s     r/   rY   z9COLRVariationMerger.mergeVariableAttrs.<locals>.<genexpr>ù  s   è ø€ Ò<¨aˆq”B×)Ñ)Õ)Ñ<ùs   ‚)r”   r  r  rA  r7   r“  r$  )	r.   rd   re   r=   r"  rþ  r<   r  rï  s	            r/   ÚmergeVariableAttrsz&COLRVariationMerger.mergeVariableAttrsñ  sx   € Ü×,Ñ,ˆØˆØò 	$ˆDØ $× 8Ñ 8¸¸cÀ4Ó HÑˆI�vÜ�C˜˜yÔ)Ø�O‰O˜FÕ#ð	$ô
 Ñ<°8Ô<Ô<Ø×5Ñ5°hÓ?ˆLàÐr1   c                 óœ  — t        |dd„ ¬«      D ]º  }|d   }|j                  }t        |«      j                  } |«       }|j                  j                  |j                  «       |j                  «        |d   j                  }|j                  �$|t        ||j                  «      |j                  <   Œ¤t        ||j                  |«       Œ¼ y )NTc                 óL   — t        t        | d   j                  «      dd «      d uS )Nr(  ÚVarType)rI   rB   rj   )Úpaths    r/   r  z?COLRVariationMerger.convertSubTablesToVarType.<locals>.<lambda>  s%   € Üœ˜T "™XŸ^™^Ó,¨i¸Ó>ÀdÐJð r1   )Ú	skip_rootÚ	predicater(  éþÿÿÿ)r   rj   rB   r*  rA   rŽ   ÚpopulateDefaultsr¼   rI   rÃ  rA  )Úclsrk   r+  r„  ÚsubTableÚvarTypeÚnewSubTableÚparents           r/   ÚconvertSubTablesToVarTypez-COLRVariationMerger.convertSubTablesToVarTypeþ  s±   € ä"ØØñô
ò 	6ˆDð �b‘ˆBØ—x‘xˆHÜ˜8“n×,Ñ,ˆGÙ!›)ˆKØ× Ñ ×'Ñ'¨×(9Ñ(9Ô:Ø×(Ñ(Ô*Ø˜"‘X—^‘^ˆFØ�x‰xÐ#Ø5@”˜ §¡Ó(¨¯©Ò2ä˜ §¡¨Õ5ñ#	6r1   c                 ój  — | j                   syt        «       }g }| j                  j                  D �]<  }|j                  g}|sŒ|j                  «       }|j                  t        j                  j                  k(  rŒ;|j                  t        j                  j                  k(  r›t        t        || «      «      }t        |«      }|D ]^  }t        |«      |v r$t        j                   |«      }t        |«      |vsJ ‚|j#                  |«       |j%                  t        |«      «       Œ` ||_        t        |«      |_        n|j+                  | «      }|j-                  t/        |«      «       |r�Œ)�Œ? t        |«      t        |«      k(  sJ ‚|| j                   _        t        |«      | j                   _        y)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ÚPaintColrLayersrz   Ú_flatten_layersrq   Úidr´   r  r7   rú   ÚFirstLayerIndexÚ	NumLayersÚgetChildrenrB  ÚreversedÚ
LayerCount)	ÚcolrÚuniqueLayerIDsÚnewLayerListrÍ   ÚfrontierÚpaintÚchildrenÚfirst_layer_indexÚlayers	            r/   r  z)COLRVariationMerger.expandPaintColrLayers  sh  € ð �~Š~àÜ›ˆØˆØ×%Ñ%×:Ñ:ó 	4ˆCØŸ	™	�{ˆHÚØ Ÿ™›�Ø—<‘<¤2§>¡>×#@Ñ#@Ò@àØ—\‘\¤R§^¡^×%CÑ%CÒCô  $¤O°E¸4Ó$@ÓA�HÜ(+¨LÓ(9Ð%Ø!)ò 6˜Ü˜e›9¨Ñ6Ü$(§M¡M°%Ó$8˜EÜ#% e£9°NÑ#BÐBÐ#BØ$×+Ñ+¨EÔ2Ø&×*Ñ*¬2¨e«9Õ5ð6ð ->�EÔ)Ü&)¨(£m�E•Oà$×0Ñ0°Ó6�HØ—‘¤¨Ó 2Ô3õ) ð	4ô0 �<Ó ¤C¨Ó$7Ò7Ð7Ð7Ø+ˆ�‰ÔÜ$'¨Ó$5ˆ�‰Õ!r1   NrÊ  ))r  )r6   r�   r‚   r­  r0   r   r  r  r  r  rØ   r$  r'  rƒ   r5  Ústaticmethodr  r€   r1   r/   rû  rû  d  sl   „ ñó%ó$Hñ 2@ó ò<òò!ð,°ó ð:°Só ð ñ6ó ð6ð( ñ,6ó ñ,6r1   rû  c           
      ó  — |j                   D �ci c]  }|j                  |“Œ }}|D ��cg c]'  }|j                   D �ci c]  }|j                  |“Œ c}‘Œ) }}}t        |j                  «       «      D ]8  \  }}	 | j	                  ||   |D �	cg c]  }	|	j                  |«      ‘Œ c}	«       Œ: d| _
        y c c}w c c}w c c}}w c c}	w # t        $ r7}
|
j                  j                  d|› d�«       d|›�|
j                  d<   ‚ d }
~
ww xY w)Nz.BaseGlyphPaintRecord[r  zbase glyph r©  T)r9  Ú	BaseGlyphrr   rV   rb   rJ   r'   rc   r7   Úcauser  )rF   r.   re   rÍ   rd   rN   Úmastersru   r©   rX   rn   s              r/   r5   r5   C  sû   € ð *.×)BÑ)BÖ
C #ˆ3�=‰=˜#ÑÐ
C€CÐ
CØOR×SÈ!¨a×.DÑ.DÖE s�—‘˜sÑ"ÔEÐS€GÑSä˜#Ÿ(™(›*Ó%ò ‰ˆˆ1ð	à×Ñ˜s 1™v¸'Ö'B°Q¨¯©¨a­Ò'BÕCðð "€FÕùò DùÚEùÓSùò
 (CøÜò 	Ø�G‰G�N‰NÐ3°A°3°aÐ8Ô9Ø$/°¨uÐ"5ˆA�G‰G�JÑØûð	úsE   �B5ªB?½B:ÁB?Á9C
ÂCÂ$C
Â:B?ÃC
Ã
	D
Ã2DÄD
c                 ó€   — | j                   sJ d«       ‚t        | j                  «      |_        | j                  |_        y )Nz-BaseGlyphList must be merged before LayerList)r  rq   r   rD  r:  rµ   s      r/   r5   r5   U  s4   € ð ×!Ò!ÐRÐ#RÓRÐ!ä˜&Ÿ-™-Ó(€D„OØ—‘€D…Jr1   c              #   ó  K  — | j                   t        j                  j                  k(  sJ ‚| j	                  |«      D ]B  }|j                   t        j                  j                  k(  rt        ||«      E d {  –—†  Œ?|–— ŒD y 7 Œ­wr+   )r“   r”   r;  r=  rB  r>  )ÚrootrE  rI  s      r/   r>  r>  _  sj   è ø€ Ø�;‰;œ"Ÿ.™.×8Ñ8Ò8Ð8Ð8Ø×!Ñ! $Ó'ò ˆØ�<‰<œ2Ÿ>™>×9Ñ9Ò9Ü& u¨dÓ3×3Ñ3à‹Kñ	à3ús   ‚A4BÁ6BÁ7Bc           
      ó^  ‡ ‡	— t        t        |‰ j                  d   j                  «      «      }t	        ‰ j
                  «      t	        |«      k(  sJ ‚t        t	        |«      «      D �cg c]4  }t        t        ||   ‰ j
                  |   d   j                  «      «      ‘Œ6 }}	 ‰ j                  ||«       ‰ j                  �‰ j                  j                  |«      }t	        |«      t        kD  }t        |t        ¬«      }ˆ	ˆ fd„Š	|D �cg c]
  } ‰	|«      ‘Œ }}t	        |«      dk(  rS|d   j                  t         j"                  j$                  k(  r)|d   j&                  |_        |d   j(                  |_        y t	        |«      |_        t	        ‰ j*                  «      |_        ‰ j*                  j-                  |«       ‰ j                  �*|s'‰ j                  j/                  ||j(                  «       y y y c c}w # t        $ r!}|j                  j                  d«       ‚ d }~ww xY wc c}w )Nr  z.Layers)r#  c                 óÂ  •— t        | t        «      rÈ| D �cg c]
  } ‰|«      ‘Œ }}t        j                  «       } t	        t        j
                  j                  «      | _        t        |«      | _	        t        ‰j                  «      | _        ‰j                  j                  |«       ‰j                  �&‰j                  j                  || j                  «       | S c c}w r+   )rx   rz   r”   r:  rØ   r;  r=  r“   rq   rA  r   r@  rB  r  rú   )rI  rŠ   r   ÚlistToColrLayersr.   s      €€r/   rW  z0_merge_PaintColrLayers.<locals>.listToColrLayers‹  s§   ø€ Ü�eœTÔ"Ø38Ö9¨aÑ& qÕ)Ð9ˆFÐ9Ü—H‘H“JˆEÜœrŸ~™~×=Ñ=Ó>ˆEŒLÜ! &›kˆEŒOÜ$'¨¯©Ó$4ˆEÔ!Ø�K‰K×Ñ˜vÔ&Ø×#Ñ#Ð/Ø×$Ñ$×(Ñ(¨°×1FÑ1FÔGØˆùò :s   –Cr   r   )rz   r>  r,   rk   rq   r-   rø   rv   r'   rc   r7   r  Ú	try_reuser   r   r“   r”   r;  r=  rA  r@  r   rB  rú   )
r.   rd   re   Ú
out_layersru   Úmaster_layersesrn   Úis_treerŠ   rW  s
   `        @r/   Ú_merge_PaintColrLayersr\  h  sß  ù€ ô ”o c¨4¯9©9°VÑ+<×+BÑ+BÓCÓD€Jô ˆt�y‰y‹>œS ›XÒ%Ð%Ð%ô ”s˜3“x“öàô 	Œ_˜S ™V T§Y¡Y¨q¡\°&Ñ%9×%?Ñ%?Ó@ÕAð€Oð ð
Ø�‰˜
 OÔ4ð ×ÑÐ'à×)Ñ)×3Ñ3°JÓ?ˆ
ô �*‹oÔ :Ñ:€GÜ! *Ô0JÔK€Jõ
ð 0:Ö:¨!Ñ" 1Õ%Ð:€JÐ:ä
ˆ:ƒ˜!Ò 
¨1¡× 4Ñ 4¼¿¹×8VÑ8VÒ Vð
 # 1™×/Ñ/ˆŒØ(¨™m×;Ñ;ˆÕä˜J›ˆŒÜ! $§+¡+Ó.ˆÔà�‰×Ñ˜:Ô&ð ×ÑÐ+±GØ× Ñ ×$Ñ$ Z°×1DÑ1DÕEð 5<Ð+ùòoøô ò ð 	
�‰�‰�yÔ!Øûð	üò> ;s$   Á(9G8Â$G= Ä
H*Ç=	H'ÈH"È"H'c                 óx  ‡ ‡
— ‰ j                  ||d„ «      }|t        j                  j                  u rt	        ‰ ||«       y |j                  «       }dŠ
|�t        j                  t        |«      |«      Š
ˆ
fd„|j                  «       D «       }‰ j                  |||«       ‰ j                  ||‰
«      }|j                  «       D �cg c]  }|j                  ‘Œ }}|t        j                  k7  xs t        ˆ fd„|D «       «      }	|	r1‰
r||_        |r‰ j#                  |«       |€J ‚t%        |«      |_        y y c c}w )Nc                 ó$   — | j                  «        S r+   )Úis_variable)r  s    r/   r  zmerge.<locals>.<lambda>®  s   € ¸C¿O¹OÓ<MÐ8M€ r1   r€   c              3   óT   •K  — | ]  }|j                   ‰vsŒ|j                   –— Œ! y ­wr+   ©rÃ  ©rW   re  ÚvarAttrss     €r/   rY   zmerge.<locals>.<genexpr>¹  ó    øè ø€ ÒR˜a¸1¿6¹6ÈÒ;Q�1—6•6ÑRùó   ƒ(—(c              3   óL   •K  — | ]  }t        |«      ‰j                  v –— Œ y ­wr+   ©r?  rÿ  )rW   rk   rF   s     €r/   rY   zmerge.<locals>.<genexpr>Â  s%   øè ø€ ò >Ø,1Œˆ5‹	�V×'Ñ'Ô'ñ>ùó   ƒ!$)r  r”   r;  r=  r\  Úas_variabler
   ÚgetVariableAttrsrB   ÚgetConvertersr  r'  ÚiterSubTablesrj   r  r“  ÚVarIndexBaser5  rØ   r“   )rF   r.   re   r  Ú	varFormatÚstaticAttrsr"  r„  Ú	subTablesÚ
isVariablerc  s   `         @r/   r5   r5   ¬  s.  ù€ à
×
 Ñ
   sÑ,MÓ
N€Cà
Œb�n‰n×,Ñ,Ñ,Ü˜v t¨SÔ1Øà—‘Ó!€Ià€HØÐÜ×*Ñ*¬4°«:°yÓAˆÛR 4×#5Ñ#5Ó#7ÔR€Kà
×Ñ�d˜C Ô-à×,Ñ,¨T°3¸ÓA€Là$(×$6Ñ$6Ó$8Ö9˜b�—“Ð9€IÐ9ð ¤×!6Ñ!6Ñ6ò ¼#ó >Ø5>ô>ó ;€Jñ Ùð !-ˆDÔáà×,Ñ,¨TÔ2àÐ$Ð$Ð$Ü˜)“nˆ�ð ùò :s   ÃD7c                 óV  ‡— t        |«      j                  }t        j                  |«      Šˆfd„|j	                  «       D «       }| j                  |||«       | j                  ||‰«      }|t        j                  k7  r,||_	        | j                  j                  t        |«      «       y y )Nc              3   óT   •K  — | ]  }|j                   ‰vsŒ|j                   –— Œ! y ­wr+   ra  rb  s     €r/   rY   zmerge.<locals>.<genexpr>Ú  rd  re  )rB   r*  r
   rj  rk  r  r'  r”   r  rm  rÿ  rú   r?  )rF   r.   re   r2  ro  r"  rc  s         @r/   r5   r5   Õ  sŽ   ø€ ä�4‹j× Ñ €Gä×&Ñ& wÓ/€HÛR 4×#5Ñ#5Ó#7ÔR€Kà
×Ñ�d˜C Ô-à×,Ñ,¨T°3¸ÓA€Là”r×,Ñ,Ò,Ø(ˆÔà×Ñ×Ñœr $›xÕ(ð -r1   c                 óþ   ‡ — ‰ j                  ||d„ |j                  «       D «       «       t        ˆ fd„|j                  D «       «      r6‰ j	                  |«       ‰ j
                  j                  t        |«      «       y y )Nc              3   ó4   K  — | ]  }|j                   –— Œ y ­wr+   ra  rd  s     r/   rY   zmerge.<locals>.<genexpr>è  s   è ø€ Ò!G¨Q !§&¥&Ñ!Gùr7  c              3   óL   •K  — | ]  }t        |«      ‰j                  v –— Œ y ­wr+   rg  )rW   ÚstoprF   s     €r/   rY   zmerge.<locals>.<genexpr>ê  s    øè ø€ Ò
E¨dŒ2ˆd‹8�v×)Ñ)Ô)Ñ
Eùrh  )r  rk  r“  Ú	ColorStopr5  rÿ  rú   r?  rµ   s   `  r/   r5   r5   æ  sb   ø€ à
×Ñ�d˜CÑ!G°$×2DÑ2DÓ2FÔ!GÔHä
Ó
E°d·n±nÔ
EÔEØ×(Ñ(¨Ô.Ø×Ñ×Ñœr $›xÕ(ð Fr1   Úclipsc                 ó(   — | j                  ||«       y r+   )r  rµ   s      r/   r5   r5   ï  s   € ð ×Ñ˜4 Õ%r1   rá   r+   )F)rC  rD  )pr­  Úosr´   rC   Úoperatorr   ÚloggingÚfontTools.colorLib.builderr   r   ÚfontTools.miscr   ÚfontTools.misc.roundToolsr   ÚfontTools.misc.treeToolsr   ÚfontTools.ttLib.tablesr	   r”   r
   ÚfontTools.ttLib.beyond64kr   Ú#fontTools.ttLib.tables.otConvertersr   Ú!fontTools.ttLib.tables.otTraverser   Ú#fontTools.ttLib.tables.DefaultTabler   ÚfontTools.varLibr   r   r   ÚfontTools.varLib.modelsr   r   r   r   r   ÚfontTools.varLib.varStorer   Ú	functoolsr   ÚfontTools.otlLib.builderr   ÚfontTools.otlLib.optimize.gposr   r   Ú	getLoggerr–  Úerrorsr   r   r   r    r!   r"   r#   r$   r%   r&   r'   Úobjectr)   r…   rF   ÚGDEFr5   r�   r°   rÚ   r:  r¾   rÐ   r•   rÂ   rô   r   r  r&  r)  rÁ   rR  ÚMarkBasePosÚMarkMarkPosr^  r`  rj  rl  rt  Ú
CursivePosrw  r‚  r…  ÚLookupr¦  Ú
CaretValuerÆ  Ú	BaseCoordÚMathValueRecordrÝ  rì  rû  r8  r7  r>  r\  r:  ÚClipBoxÚ	Affine2x3rx  Ú	ColorLineÚClipListr€   r1   r/   ú<module>rœ     so  ðñó 
Û Û Ý Û ß RÝ (Ý -Ý 5Ý 1Ý 3Ý =Ý >Ý <Ý <ß 6Ñ 6ß SÕ SÝ 7Ý Ý 3÷ð
 €g×ÑÐ1Ó2€÷÷ ÷ ñ ôrˆVô rôp	�Vô 	ð ×Ñ�r—w‘wÐ CÓDñ#ó Eð#ò2ó"ðJ ×Ñ�v×)Ñ)Ó*ñ#ó +ð#ð ×Ñ�r—y‘yÓ!ñ#ó "ð#òò$ð6 ×Ñ�r—|‘|Ó$ñ:ó %ð:ðz ×Ñ�r—z‘zÓ"ñ24ó #ð24òj,óBó8ó6Kò\&3ðR ×Ñ�r—z‘zÓ"ñ(ó #ð(óVS)ðl ×Ñ�r—~‘~Ó&ñTó 'ðTð ×Ñ�r—~‘~Ó&ñTó 'ðTòò2ò2ò<ò*ð0 ×Ñ�r—}‘}Ó%ñ4ó &ð4ð. ×Ñ�r×)Ñ)Ó*ñ#ó +ð#ð( ‡L�LØ‡J�JØ‡M�MØ‡N�NØ‡N�NðÐ ò2ð ×Ñ�r—y‘yÓ!ñu ó "ðu ôz>�nô >ð ×Ñ˜Ÿ™Ó&ñó 'ðð ×Ñ˜Ÿ	™	Ó"ñó #ðð ×Ñ˜×*Ñ*Ó+ñ'ó ,ð'ô2	1�Nô 	1ð ×Ñ�r—}‘} b§l¡lÐ3Ó4ñó 5ðð, ×Ñ�b×(Ñ(Ó)ñ ó *ð ð ×Ñ�b—i‘iÓ ñó !ðð> ×Ñ�f×(Ñ(Ó)ñ<ó *ð<ô>%!�nô %!òP2ð ×Ñ˜Ÿ™Ó%ñ'ó &ð'ð ×Ñ˜Ÿ™Ó&ñ'ó 'ð'ð ×Ñ˜Ÿ	™	Ó"ñ)ó #ð)ð ×Ñ˜×*Ñ*Ó+ñ6ó ,ð6ô \6˜/ô \6ð~ ×Ñ˜B×,Ñ,Ó-ñ"ó .ð"ð" ×Ñ˜BŸL™LÓ)ñó *ðòòAFðH ×Ñ˜RŸX™X r§z¡zÐ2Ó3ñ%%ó 4ð%%ðP ×Ñ˜RŸ\™\¨2¯<©<Ð8Ó9ñ)ó :ð)ð  ×Ñ˜BŸL™LÓ)ñ)ó *ð)ð ×Ñ˜BŸK™K¨Ó1ñ&ó 2ñ&r1   