+
    f7i4c  c                   s    ^ RI Hu Ht ^ RIHt ^ RIHt ^ RIHt RRRRR	R
RRRRRRRRRRRRRRRRRR/t	 ! R R]
4      t ! R R]
4      t ! R R]4      tR# )    N)Lexer)VoltLibError)openZ	DEF_GLYPHparse_def_glyph_Z	DEF_GROUPparse_def_group_Z
DEF_SCRIPTparse_def_script_Z
DEF_LOOKUPparse_def_lookup_Z
DEF_ANCHORparse_def_anchor_Z	GRID_PPEMparse_ppem_ZPRESENTATION_PPEMZPPOSITIONING_PPEMZCOMPILER_USEEXTENSIONLOOKUPSparse_noarg_option_ZCOMPILER_USEPAIRPOSFORMAT2ZCMAP_FORMATparse_cmap_formatZDO_NOT_TOUCH_CMAPc                   s   a  ] tR t^t o R tR tR tR tR tR t	R t
R tR	 tR
 tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR t R t!R t"R  t#R! t$R"t%V t&R## )$Parserc                sL   \         P                  ! 4       V n        \        4       V n        \        4       V n        / V n        \        4       V n        \        4       V n	        \        4       V n
        R R uV n        V n        R V n        V P                  V4       V P                  4        R # N)astZVoltFiledoc_OrderedSymbolTableglyphs_SymbolTablegroups_anchors_scripts_langs_lookups_next_token_type_next_token_next_token_location_make_lexer_advance_lexer_)selfZpath   &&?/usr/lib64/python3.14/site-packages/fontTools/voltLib/parser.py__init__ZParser.__init__   sx    LLN	)+"}#!m#37/t/$(!    c                s   \        VR 4      '       d   \        VRR4      pVP                  4       pM/Tp\        VR4      ;_uu_ 4       pVP                  4       pRRR4       \	        XV4      V n        R#   + '       g   i     L#; i)readnameNZr)Zhasattrgetattrr"   r   r   lexer_)r   Zfile_or_pathZfilenameZdataZfs   &&   r   r   ZParser.make_lexer_$   sf    <((|VT:H$$&D#HlC((Avvx )D(+ )(s   A33B	c           	     s   V P                   P                  pV P                  e   V P                  4        V P                  \
        P                  4       9   d:   \        V \
        V P                  ,          4      pVP                  V! 4       4       Kz  V P                  R4      '       d    V P                   # \        RRP                  \        \
        P                  4       4      4      ,           V P                  4      hV P                   # )NENDz	Expected z, )r   
statementsr   r   
cur_token_PARSE_FUNCSkeysr$   appendis_cur_keyword_r   ZjoinZsortedcur_token_location_)r   r'   Zfunc   &  r   parseZParser.parse.   s    YY))
##/!+"2"2"44t[%AB!!$&)%%e,, yy	 #$))F;3C3C3E,F"GG,,  yyr!   c           	     s   V P                   pV P                  4       pV P                  R 4       V P                  4       pV^ 8  d   \	        RV P                   4      hRpV P
                  R8X  dH   V P                  R4       V P                  4       .pV^ ,          ^ 8  d   \	        RV P                   4      hM2V P
                  R8X  d"   V P                  R4       V P                  4       pRpV P
                  R8X  d"   V P                  R4       V P                  4       pRpV P
                  R8X  d"   V P                  R4       V P                  4       pV P                  R4       V P                  P                  V4      e   \	        R	W#3,          V4      h\        P                  ! W#WEWaR
7      pV P                  P                  W'4       V# )ZIDzInvalid glyph IDNZUNICODEzInvalid glyph UNICODEZUNICODEVALUESZTYPEZ
COMPONENTSZ	END_GLYPHz#Glyph "%s" (gid %i) already definedlocation)r-   expect_string_expect_keyword_expect_number_r   r   parse_unicode_values_expect_name_r   resolver   ZGlyphDefinitiondefine)r   r1   r#   gidZgunicodeZgtypeZ
componentsZ	def_glyphs   &       r   r   ZParser.parse_def_glyph_>   s   ++""$T"!!#7143K3KLLy(  +++-.H{Q"#:D<T<TUU 0  1113Hv%  (%%'E
|+  .,,.J[)<<%15CX  ''x

	 	D,r!   c                sl   V P                   pV P                  4       pR pV P                  R8X  d   V P                  4       pV P	                  R4       V P
                  P                  V4      e   \        RV,          V4      h\        P                  ! W#VR7      pV P
                  P                  W$4       V# )NENUMZ	END_GROUPzBGlyph group "%s" already defined, group names are case insensitiver0   )r-   r2   r   parse_enum_r3   r   r7   r   r   ZGroupDefinitionr8   )r   r1   r#   enumZ	def_group   &    r   r   ZParser.parse_def_group_c   s    ++""$v%##%D[)<<%1359: 
 ''XF	D,r!   c                s   V P                   pR pV P                  R8X  d"   V P                  R4       V P                  4       pV P                  R4       V P                  4       pV P                  P                  V4      e   \        RV,          V4      hV P                  P                  4        . pV P                  R8w  d   V P                  4        V P                  4       pV P                  R4       V P                  P                  VP                  4      e    \        RVP                  : RV: R2V4      hV P                  P                  VP                  V4       VP                  V4       K  V P                  R4       V P                  P                  4        \        P                   ! W#WAR	7      pV P                  P                  W64       V# )
NNAMETAGz=Script "%s" already defined, script tags are case insensitiveZ
END_SCRIPTEND_LANGSYSz
Language "z" already defined in script "z%", language tags are case insensitiver0   )r-   r   r3   r2   r   r7   r   r   enter_scoper   parse_langsys_tagr8   r+   
exit_scoper   ZScriptDefinition)r   r1   r#   rC   ZlangsZlangZ
def_script   &      r   r   ZParser.parse_def_script_u   s}   ++v%  (&&(DU#!!#==  %13589 
 	!,.!&&(D  /{{""488,8"<@HHcK 
 KKtxx.LL\* ))$UN
S-r!   c                s   V P                   pR pV P                  R8X  d"   V P                  R4       V P                  4       pV P                  R4       V P                  4       p. pV P                  R8w  dE   V P	                  4        V P                  4       pV P                  R4       VP                  V4       KU  \        P                  ! W#WAR7      pV# )Nr>   r?   r@   END_FEATUREr0   )	r-   r   r3   r2   r   parse_feature_r+   r   ZLangSysDefinition)r   r1   r#   rC   ZfeaturesfeatureZdef_langsysrE   r   rB   ZParser.parse_langsys_   s    ++v%  (&&(DU#!!#-/!))+G  /OOG$++DxSr!   c                s`   V P                   pV P                  R 4       V P                  4       pV P                  R4       V P                  4       p. pV P                  R8w  d5   V P                  R4       V P                  4       pVP	                  V4       KE  \
        P                  ! W#WAR7      pV# )r>   r?   rF   ZLOOKUPr0   )r-   r3   r2   r   r+   r   ZFeatureDefinition)r   r1   r#   rC   ZlookupsZlookuprH   rE   r   rG   ZParser.parse_feature_   s    ++V$""$U#!!#-/  *((*FNN6"''7Nr!   c                sT   V P                   pV P                  4       pV^ ,          P                  4       '       g   \        RV,          V4      hV P                  P                  V4      e   \        RV,          V4      hRpV P                  R8X  d   V P                  4        M#V P                  R8X  d   V P                  4        RpRpRpV P                  R8X  d   V P                  4        V P                  R	8X  d"   V P                  4        V P                  4       pMV P                  R
8X  d   V P                  4        MV P                  R8X  d   V P                  4        RpMpV P                  \        P                  8X  d   V P                  4       pM@\        RV P                  ,          V4      hV P                  R8X  d   V P                  4        RpRpV P                  R8X  d"   V P                  R4       V P                  4       pRpV P                  R8X  d   V P                  R4       RpRpV P                  R8X  d2   V P                  R4       V P                  4       P                  RR4      p. p	V P                  R9   d   V P                  4       p	K#  V P                  4       p
RpRpV
R8X  d   V P                  V4      pM+V
R8X  d   V P!                  4       pM\        RV
,          V4      h\"        P$                  ! VVVVVVVV	VVVR7      pV P                  P'                  W-4       V# )r    z)Lookup name "%s" must start with a letterNz>Lookup "%s" already defined, lookup names are case insensitiveTZPROCESS_BASEZ	SKIP_BASEFZPROCESS_MARKSZMARK_GLYPH_SETZALLZNONEz3Expected ALL, NONE, MARK_GLYPH_SET or an ID. Got %sZ
SKIP_MARKSZ	DIRECTIONZREVERSALZCOMMENTSz\nZ
ZAS_SUBSTITUTIONZAS_POSITIONz/Expected AS_SUBSTITUTION or AS_POSITION. Got %sr0   EXCEPT_CONTEXTZ
IN_CONTEXT)r-   r2   Zisalphar   r   r7   r   r   r   r   STRINGr3   r6   Zreplaceparse_context_parse_substitution_parse_position_r   ZLookupDefinitionr8   )r   r1   r#   Zprocess_baseZprocess_marksZmark_glyph_setZ	directionreversalZcommentscontextZas_pos_or_subsubposZ
def_lookups   &             r   r   ZParser.parse_def_lookup_   s    ++""$Aw  ;dBH  ==  &246:; 
 ~-!,! L.!#33##%!%!4!4!6!!U*##%!!V+##% %&&%,,6 $ 3 3 5" $ 5 57 
 -!!M	{*  -))+Iz)  ,Hz)  ,**,44UDAH"BB))+G))+--**84Cm+&&(CDV  ))

 	T.r!   c                s   V P                   p. pV P                  R9   d   RpRpV P                  4       pV P                  R8w  d   . p. pV P                  R9   dN   V P                  4       pV P                  4       pVR8X  d   VP	                  V4       KK  VP	                  V4       K^  V P                  R4       \        P                  ! WVWqR7      pVP	                  V4       K  V P                  R4       K  V# )rJ   NZEND_CONTEXTLEFTr0   rI   )rS   ZRIGHT)r-   r   r6   parse_coverage_r+   r3   r   ZContextDefinition)	r   r1   ZcontextsZsidecoverageZex_or_inZleftZrightrP   	   &        r   rL   ZParser.parse_context_  s    ++"BBDH((*H=0&&*;;,,.D#335Hv~H-X.$$]3//E ($$]3r!   c                s   V P                   p. p. pV P                  R 8w  d   \        RV4      hV P                  R 8X  dt   V P                  R 4       VP	                  V P                  4       4       V P                  R4       VP	                  V P                  4       4       V P                  R4       K  V P                  R4       \        V Uu. uF  p\        V4      NK  	  up4      p\        V Uu. uF  p\        V4      NK  	  up4      pV^8  d   V^8  d   \        RV4      h\        \        \        V4      \        V4      4      4      pV^8X  d   V^8X  d   V UU	u. uF  qU F  qP                  4       NK  	  K  	  p
pp	\        \        V
4      4      \        V
4      8w  d   \        P                  ! WR7      pV# V'       d   \        P                  ! WR7      pV# \        P                   ! WR7      p V# V^8X  d!   V^8  d   \        P"                  ! WR7      pV# V^8  d   V^8X  d   \        P$                  ! WR7      pX# u upi u upi u up	pi )ZSUBzExpected SUBZWITHZEND_SUBZEND_SUBSTITUTIONzInvalid substitution typer0   )r-   r   r   r3   r+   rT   ZmaxZlenZdictZziptupleZglyphSetZsetr   ZSubstitutionAlternateDefinitionZ+SubstitutionReverseChainingSingleDefinitionZSubstitutionSingleDefinitionZSubstitutionMultipleDefinitionZSubstitutionLigatureDefinition)r   rO   r1   ZsrcZdestcovZmax_srcZmax_destZmappingZxZglyphsrQ   s   &&          r   rM   ZParser.parse_substitution_,  s    ++u$~x88%'  'JJt++-.  (KK,,./  +/03/3Cs3x3/0D1DSCD12 Q;8a<:HEEs5:uT{34a<HM /2?cs3ajjl3lcF?3v;3v;.99'U 
  IIC 
 ::7VC
 
	 \hl44WPC 
 q[X]44WPC
7 01 @s   I0I Ic                sD   V P                   pV P                  4       pVR9  d   \        RV4      hVR 8X  d   V P                  4       pMGVR8X  d   V P	                  4       pM/VR8X  d   V P                  4       pMVR8X  d   V P                  4       pV P                  R4       X# )ATTACHATTACH_CURSIVEADJUST_PAIRADJUST_SINGLEz;Expected ATTACH, ATTACH_CURSIVE, ADJUST_PAIR, ADJUST_SINGLEZEND_POSITION)rY   rZ   r[   r\   )r-   r6   r   parse_attach_parse_attach_cursive_parse_adjust_pair_parse_adjust_single_r3   )r   r1   Zpos_typepositions   &   r   rN   ZParser.parse_position_W  s    ++$$&WWMx  x))+H))113H&..0H(002H^,r!   c                s   V P                   pV P                  4       p. pV P                  R 4       V P                  R8w  dW   V P                  4       pV P                  R4       V P                  R4       V P	                  4       pVP                  WE34       Kg  V P                  R4       \        P                  ! W#VR7      pV# )TO
END_ATTACHATZANCHORr0   )r-   rT   r3   r   r2   r+   r   ZPositionAttachDefinition)r   r1   rU   Zcoverage_torX   Zanchor_namera   rE   r   r]   ZParser.parse_attach_j  s    ++'')T",.&&(C  &  *--/K12\*//H
 r!   c                s   V P                   p. p. pV P                  R 8w  d3   V P                  R4       VP                  V P	                  4       4       KC  V P                  R8w  d3   V P                  R 4       VP                  V P	                  4       4       KC  V P                  R4       \
        P                  ! W#VR7      pV# )ZENTERZEXITrc   r0   )r-   r   r3   r+   rT   r   ZPositionAttachCursiveDefinition)r   r1   Zcoverages_exitZcoverages_enterra   r=   r   r^   ZParser.parse_attach_cursive_|  s    ++')  (!!$"6"6"89,.  )""4#7#7#9:\*66h
 r!   c                sb   V P                   p. p. p/ pV P                  R 8X  d4   V P                  4        V P                  4       pVP	                  V4       KD  V P                  R8X  d4   V P                  4        V P                  4       pVP	                  V4       KD  V P                  R8w  d[   V P                  4       pV P                  4       pV P                  R4       V P                  4       p	V P                  4       p
W3WGV3&   Kk  V P                  R4       \        P                  ! W#WAR7      pV# )ZFIRSTZSECOND
END_ADJUSTBYr0   )
r-   r   r   rT   r+   r4   r3   
parse_pos_r   ZPositionAdjustPairDefinition)r   r1   Zcoverages_1Zcoverages_2Zadjust_pairZ
coverage_1Z
coverage_2Zid_1Zid_2Zpos_1Zpos_2ra   s   &           r   r_   ZParser.parse_adjust_pair_  s   ++')!--/Jz*(*!--/Jz*,.&&(D&&(D  &OO%EOO%E).Kt%\*33k
 r!   c                s   V P                   p. pV P                  R 8w  dF   V P                  4       pV P                  R4       V P	                  4       pVP                  W434       KV  V P                  R 4       \        P                  ! W!R7      pV# )re   rf   r0   )r-   r   rT   r3   rg   r+   r   ZPositionAdjustSingleDefinition)r   r1   Zadjust_singleZ	coveragesrR   ra   s   &     r   r`   ZParser.parse_adjust_single_  s|    ++,.,,.I  &//#C  )!12\*55mWr!   c           
     s.   V P                   pV P                  4       pV P                  R 4       V P                  4       pV P                  R4       V P	                  4       pV P                  R4       V P                  4       pW@P
                  9   dK   V P
                  V,          P                  V4      pVe%   VP                  V8X  d   \        RV,          V4      hV P                  R8X  d   RpV P                  4        MRpV P                  R4       V P                  4       pV P                  R4       \        P                  ! W#WEWxVR	7      pW@P
                  9  d   \        4       V P
                  V&   V P
                  V,          P                  W&4       V# )
ZONGLYPHZ	COMPONENTz>Anchor "%s" already defined, anchor names are case insensitiveZLOCKEDTFrd   Z
END_ANCHORr0   )r-   r2   r3   r4   r6   r   r7   	componentr   r   r   rg   r   ZAnchorDefinitionr   r8   )	r   r1   r#   r9   Z
glyph_nameri   ZanchorZlockedrR   rV   r   r   ZParser.parse_def_anchor_  sa   ++""$T"!!#W%&&(
[)'')	&]]:.66t<F!f&6&6)&C"8:>? 
 x'F!FT"oo\*%%zfH
 ]]*(3DMM*%j!((6r!   c                s    V P                  4        V P                  4       pV P                  R 4       V P                  4       pW3# )rd   )r   r4   r3   )r   
adjustmentsizer.   r   parse_adjust_by_ZParser.parse_adjust_by_  sA    ((*
T"""$r!   c                s   V P                  4        V P                  pR pR pR p/ p/ p/ pV P                  R8X  dJ   V P                  4        V P                  4       pV P                  R8X  d   V P	                  4       w  rWV	&   K)  V P                  R8X  dJ   V P                  4        V P                  4       pV P                  R8X  d   V P	                  4       w  rWV	&   K)  V P                  R8X  dJ   V P                  4        V P                  4       pV P                  R8X  d   V P	                  4       w  rWV	&   K)  V P                  R4       \        P                  ! W#WEWg4      # )NZADVZ	ADJUST_BYZDXZDYZEND_POS)r   r-   r   r4   rl   r3   r   ZPos)
r   r1   ZadvZdxZdyZadv_adjust_byZdx_adjust_byZdy_adjust_byrj   rk   s
   &         r   rg   ZParser.parse_pos_  sE   ++u$!%%'C""k1#'#8#8#: 
&0d#t#!$$&B""k1#'#8#8#: 
%/T"t#!$$&B""k1#'#8#8#: 
%/T"Y'wws<NNr!   c                s   V P                   p V P                  4       P                  R 4      pV Uu. uF  q3R8w  g   K  \        VR,          ^4      NK   	  ppT. 8w  d   T# R# u upi   \         d   p\        \        T4      T4      hRp?ii ; i)Z,Z :i   NNN)r-   r2   ZsplitZintZ
ValueErrorr   Zstr)r   r1   Zunicode_valuesZuniZerrr=   r   r5   ZParser.parse_unicode_values_   s    ++	3!00288=N:HV.3SUI.c#b'2..NV "02!5~?4? W 	3s3x22	3s-   #A' A"A"A' "A' 'B2BBc                s    V P                  R 4       V P                  p\        P                  ! V P	                  4       VR7      pV P                  R4       V# )r:   r0   ZEND_ENUM)r3   r-   r   ZEnumrT   )r   r1   r<   r.   r   r;   ZParser.parse_enum_	  sG    V$++xx,,.BZ(r!   c           	     s*   . pV P                   pV P                  R9   Edj   V P                  R8X  d$   V P                  4       pVP                  V4       KF  V P                  R 8X  dJ   V P	                  R 4       V P                  4       pVP                  \        P                  ! WBR7      4       K  V P                  R8X  dK   V P	                  R4       V P                  4       pVP                  \        P                  ! W@VR7      4       K  V P                  R8X  g   EK  V P	                  R4       V P                  4       pV P	                  R4       V P                  4       pVP                  \        P                  ! WVWR7      4       EK{  \        V4      # )rh   GROUPRANGEr:   r0   rb   )rh   rm   rn   r:   )r-   r   r;   r+   r3   r2   r   Z	GlyphNameZ	GroupNameZRangerW   )r   rU   r1   r<   r#   startendrE   r   rT   ZParser.parse_coverage_  s0   ++"EE6)'')%!!W,$$W-**,d FG!!W,$$W-**,d8 LM!!W,$$W-++-$$T*))+		%d NOXr!   c                s8    V P                   P                  V4      # r   )r   r7   )r   Z
group_namer   r   resolve_groupZParser.resolve_group'  s    ||##J//r!   c                s8    V P                   P                  W4      # r   )r   range)r   ro   rp      &&&r   glyph_rangeZParser.glyph_range*  s    ||!!%--r!   c                s    V P                   pV P                  pV P                  4       p\        P                  ! W#VR 7      pV# r0   r-   r(   r4   r   SettingDefinition)r   r1   Z	ppem_namevaluesettingr=   r   r	   ZParser.parse_ppem_-  s;    ++OO	##%''	8Lr!   c                sj    V P                   pV P                  pR p\        P                  ! W#VR7      pV# )Tr0   )r-   r(   r   rw   r   r1   r#   rx   ry   r=   r   r
   ZParser.parse_noarg_option_4  s2    ++''hGr!   c                s    V P                   pV P                  pV P                  4       V P                  4       V P                  4       3p\        P                  ! W#VR 7      pV# ru   rv   rz   r=   r   r   ZParser.parse_cmap_format;  sT    ++$$&(;(;(=t?R?R?TU''hGr!   c                sh    V P                   \        P                  J ;'       d    V P                  V8H  # r   )cur_token_type_r   r>   r(   )r   Zkr   r   r,   ZParser.is_cur_keyword_B  s(    $$

2NNA9MNr!   c                    V P                  4        V P                  \        P                  Jd   \	        R V P
                  4      hV P                  # )zExpected a string)r   r{   r   rK   r   r-   r(   r      &r   r2   ZParser.expect_string_E  >    u||32D4L4LMMr!   c                s    V P                  4        V P                  \        P                  J d   V P                  V8X  d   V P                  # \        R V,          V P                  4      h)zExpected "%s"r   r{   r   r>   r(   r   r-   )r   Zkeywordr   r   r3   ZParser.expect_keyword_K  sM    5::-$//W2L??"?W4d6N6NOOr!   c                s    V P                  4        V P                  \        P                  J d   V P                  # \        R V P                  4      h)zExpected a namer   r}   r~   r   r6   ZParser.expect_name_Q  s>    5::-??",d.F.FGGr!   c                r|   )zExpected a number)r   r{   r   ZNUMBERr   r-   r(   r}   r~   r   r4   ZParser.expect_number_W  r   r!   c                sF   V P                   V P                  V P                  uV n        V n        V n         V P                  R 4      '       d   \        hV P                  P                  4       w  V n         V n        V n        R#   \         d    RRuT n         T n         R# i ; i)r&   N)
r   r   r   r{   r(   r-   r,   ZStopIterationr%   Znextr}   r~   r   r   ZParser.advance_lexer_]  s    !!%% 	Hdot/G
		C##E**##
   "	% ) 	C7;T3D!4#3	Cs   A
B B B )r   r(   r-   r{   r   r   r   r   r%   r   r   r   r   r   N)'__name__
__module____qualname____firstlineno__r    r   r/   r   r   r   rB   rG   r   rL   rM   rN   r]   r^   r_   r`   r   rl   rg   r5   r;   rT   rq   rt   r	   r
   r   r,   r2   r3   r6   r4   r   __static_attributes____classdictcell__Z__classdict__   @r   r   r      s     , #J$!F$ Un6)V&$"6!F O@@.0.OPHC Cr!   r   c                   sB   a  ] tR tRt o R tR tR tR tR	R ltRt	V t
R# )
r   io  c                    / .V n         R # r   scopes_r}   r~   r   r    ZSymbolTable.__init__p      tr!   c                <    V P                   P                  / 4       R # r   r   r+   r}   r~   r   rA   ZSymbolTable.enter_scopes      Br!   c                s:    V P                   P                  4        R # r   )r   Zpopr}   r~   r   rD   ZSymbolTable.exit_scopev  s    r!   c                s0    W P                   R,          V&   R# )   Nir   )r   r#   itemrs   r   r8   ZSymbolTable.definey  s    !%Rr!   c                s    \        V P                  4       F   pVP                  V4      pV'       g   K  Vu # 	  V'       d7   X F0  pVP                  4       VP                  4       8X  g   K(  W5,          u # 	  R # r   )reversedr   ZgetZlower)r   r#   case_insensitivescoper   Zkey   &&&   r   r7   ZSymbolTable.resolve|  s\    dll+E99T?Dt , 99;$**,. :%  r!   r   N)T)r   r   r   r   r    rA   rD   r8   r7   r   r   r   r   r   r   r   o  s#      &	 	r!   r   c                   s<   a  ] tR tRt o R tR tRR ltR tRtV t	R# )	r   i  c                r   r   r   r}   r~   r   r    ZOrderedSymbolTable.__init__  r   r!   c                r   r   r   r}   r~   r   rA   ZOrderedSymbolTable.enter_scope  r   r!   c                s4    \         P                  WVR 7       R# ))r   N)r   r7   )r   r#   r   rs   r   r7   ZOrderedSymbolTable.resolve  s    D9IJr!   c                sB   \        V P                  4       F  pW9   g   K  W#9   g   K  \        VP                  4       4      P	                  V4      p\        VP                  4       4      P	                  V4      p\        VP                  4       4      WE^,            u # 	  R# )r   N)r   r   Zlistr*   Zindex)r   ro   rp   r   Z	start_idxZend_idxr   r   rr   ZOrderedSymbolTable.range  ss    dll+E~#, .44U;	uzz|,2237EJJL))kBB	 ,
 r!   r   N)F)
r   r   r   r   r    rA   r7   rr   r   r   r   r   r   r   r     s      K r!   r   )ZfontTools.voltLib.astZvoltLibr   ZfontTools.voltLib.lexerr   ZfontTools.voltLib.errorr   Zior   r)   Zobjectr   r   r   ) r!   r   <module>r      s    # # ) 0  ##%%%"$9 "7&. V	CV V	Cr& 2 r!   