Ë
    £eh0Œ  ã                  ón  — d Z ddlmZ ddlmZmZmZmZ ddlZddl	m
Z
 ddlmZ ddlZddlZ ej                  e«      Zg d¢Zg d¢Zd	„ Z ej*                  d
«      Zd„ Z ee«      \  ZZ ee«      \  ZZ G d„ de«      ZdZdZdZ de›de ›de›d�Z! ej*                  e!«      Z" ej*                  d«      Z# ej*                  d«      Z$ ej*                  d«      Z% ej*                  d«      Z&d„ Z' G d„ de(«      Z)d„ Z*edk(  r4ddl+Z+ddl,Z, e+jZ                   e,j\                  «       j^                  «       yy)zSttLib.tables.ttProgram.py -- Assembler/disassembler for TrueType bytecode programs.é    )Úannotations)Ú
num2binaryÚ
binary2numÚreadHexÚstrjoinN)ÚStringIO)ÚList))é@   ÚNPUSHBr   Ú
PushNBytesr   éÿÿÿÿ)éA   ÚNPUSHWr   Ú
PushNWordsr   r   )é°   ÚPUSHBé   Ú	PushBytesr   r   )é¸   ÚPUSHWr   Ú	PushWordsr   r   )w)é   ÚAAr   ÚAdjustAngleé   r   )éd   ÚABSr   ÚAbsoluter   r   )é`   ÚADDr   ÚAddé   r   )é'   ÚALIGNPTSr   ÚAlignPtsr"   r   )é<   ÚALIGNRPr   ÚAlignRelativePtr   r   )éZ   ÚANDr   Ú
LogicalAndr"   r   )é+   ÚCALLr   ÚCallFunctionr   r   )ég   ÚCEILINGr   ÚCeilingr   r   )é%   ÚCINDEXr   ÚCopyXToTopStackr   r   )é"   ÚCLEARr   Ú
ClearStackr   r   )éO   ÚDEBUGr   Ú	DebugCallr   r   )és   ÚDELTAC1r   ÚDeltaExceptionC1r   r   )ét   ÚDELTAC2r   ÚDeltaExceptionC2r   r   )éu   ÚDELTAC3r   ÚDeltaExceptionC3r   r   )é]   ÚDELTAP1r   ÚDeltaExceptionP1r   r   )éq   ÚDELTAP2r   ÚDeltaExceptionP2r   r   )ér   ÚDELTAP3r   ÚDeltaExceptionP3r   r   )é$   ÚDEPTHr   ÚGetDepthStackr   r   )éb   ÚDIVr   ÚDivider"   r   )é    ÚDUPr   ÚDuplicateTopStackr   r"   )éY   ÚEIFr   ÚEndIfr   r   )é   ÚELSEr   ÚElser   r   )é-   ÚENDFr   ÚEndFunctionDefinitionr   r   )éT   ÚEQr   ÚEqualr"   r   )éW   ÚEVENr   ÚEvenr   r   )é,   ÚFDEFr   ÚFunctionDefinitionr   r   )éN   ÚFLIPOFFr   ÚSetAutoFlipOffr   r   )éM   ÚFLIPONr   ÚSetAutoFlipOnr   r   )é€   ÚFLIPPTr   Ú	FlipPointr   r   )é‚   Ú	FLIPRGOFFr   ÚFlipRangeOffr"   r   )é�   ÚFLIPRGONr   ÚFlipRangeOnr"   r   )éf   ÚFLOORr   ÚFloorr   r   )éF   ÚGCr   ÚGetCoordOnPVectorr   r   )éˆ   ÚGETINFOr   ÚGetInfor   r   )é‘   ÚGETVARIATIONr   ÚGetVariationr   r   )é   ÚGFVr   Ú
GetFVectorr   r"   )é   ÚGPVr   Ú
GetPVectorr   r"   )éR   ÚGTr   ÚGreaterThanr"   r   )éS   ÚGTEQr   ÚGreaterThanOrEqualr"   r   )é‰   ÚIDEFr   ÚInstructionDefinitionr   r   )éX   ÚIFr   ÚIfr   r   )éŽ   ÚINSTCTRLr   ÚSetInstrExecControlr"   r   )é9   ÚIPr   ÚInterpolatePtsr   r   )é   ÚISECTr   ÚMovePtToIntersecté   r   )é0   ÚIUPr   ÚInterpolateUntPtsr   r   )é   ÚJMPRr   ÚJumpr   r   )éy   ÚJROFr   ÚJumpRelativeOnFalser"   r   )éx   ÚJROTr   ÚJumpRelativeOnTruer"   r   )é*   ÚLOOPCALLr   ÚLoopAndCallFunctionr"   r   )éP   ÚLTr   ÚLessThanr"   r   )éQ   ÚLTEQr   ÚLessThenOrEqualr"   r   )é‹   ÚMAXr   ÚMaximumr"   r   )éI   ÚMDr   ÚMeasureDistancer"   r   )é.   ÚMDAPr   ÚMoveDirectAbsPtr   r   )éÀ   ÚMDRPrž   ÚMoveDirectRelPtr   r   )é>   ÚMIAPr   ÚMoveIndirectAbsPtr"   r   )éŒ   ÚMINr   ÚMinimumr"   r   )é&   ÚMINDEXr   ÚMoveXToTopStackr   r   )éà   ÚMIRPrž   ÚMoveIndirectRelPtr"   r   )éK   ÚMPPEMr   ÚMeasurePixelPerEmr   r   )éL   ÚMPSr   ÚMeasurePointSizer   r   )é:   ÚMSIRPr   ÚMoveStackIndirRelPtr"   r   )éc   ÚMULr   ÚMultiplyr"   r   )ée   ÚNEGr   ÚNegater   r   )éU   ÚNEQr   ÚNotEqualr"   r   )é\   ÚNOTr   Ú
LogicalNotr   r   )él   ÚNROUNDr"   ÚNoRoundr   r   )éV   ÚODDr   ÚOddr   r   )é[   ÚORr   Ú	LogicalOrr"   r   )é!   ÚPOPr   ÚPopTopStackr   r   )éE   ÚRCVTr   ÚReadCVTr   r   )é}   ÚRDTGr   ÚRoundDownToGridr   r   )éz   ÚROFFr   ÚRoundOffr   r   )éŠ   ÚROLLr   ÚRollTopThreeStackr   r   )éh   ÚROUNDr"   ÚRoundr   r   )éC   ÚRSr   Ú	ReadStorer   r   )é=   ÚRTDGr   ÚRoundToDoubleGridr   r   )é   ÚRTGr   ÚRoundToGridr   r   )é   ÚRTHGr   ÚRoundToHalfGridr   r   )é|   ÚRUTGr   ÚRoundUpToGridr   r   )éw   ÚS45ROUNDr   ÚSuperRound45Degreesr   r   )é~   ÚSANGWr   ÚSetAngleWeightr   r   )é…   ÚSCANCTRLr   ÚScanConversionControlr   r   )é�   ÚSCANTYPEr   ÚScanTyper   r   )éH   ÚSCFSr   ÚSetCoordFromStackFPr"   r   )é   ÚSCVTCIr   ÚSetCVTCutInr   r   )é^   ÚSDBr   ÚSetDeltaBaseInGStater   r   )é†   ÚSDPVTLr   ÚSetDualPVectorToLiner"   r   )é_   ÚSDSr   ÚSetDeltaShiftInGStater   r   )é   ÚSFVFSr   ÚSetFVectorFromStackr"   r   )é   ÚSFVTCAr   ÚSetFVectorToAxisr   r   )é   ÚSFVTLr   ÚSetFVectorToLiner"   r   )é   ÚSFVTPVr   ÚSetFVectorToPVectorr   r   )é4   ÚSHCr   ÚShiftContourByLastPtr   r   )é2   ÚSHPr   ÚShiftPointByLastPointr   r   )é8   ÚSHPIXr   ÚShiftZoneByPixelr   r   )é6   ÚSHZr   ÚShiftZoneByLastPointr   r   )é   ÚSLOOPr   ÚSetLoopVariabler   r   )é   ÚSMDr   ÚSetMinimumDistancer   r   )é
   ÚSPVFSr   ÚSetPVectorFromStackr"   r   )r"   ÚSPVTCAr   ÚSetPVectorToAxisr   r   )é   ÚSPVTLr   ÚSetPVectorToLiner"   r   )év   ÚSROUNDr   Ú
SuperRoundr   r   )é   ÚSRP0r   ÚSetRefPoint0r   r   )é   ÚSRP1r   ÚSetRefPoint1r   r   )é   ÚSRP2r   ÚSetRefPoint2r   r   )é   ÚSSWr   ÚSetSingleWidthr   r   )é   ÚSSWCIr   ÚSetSingleWidthCutInr   r   )éa   ÚSUBr   ÚSubtractr"   r   )r   ÚSVTCAr   ÚSetFPVectorToAxisr   r   )é#   ÚSWAPr   ÚSwapTopStackr"   r"   )é   ÚSZP0r   ÚSetZonePointer0r   r   )é   ÚSZP1r   ÚSetZonePointer1r   r   )é   ÚSZP2r   ÚSetZonePointer2r   r   )é   ÚSZPSr   ÚSetZonePointerSr   r   )é)   ÚUTPr   Ú	UnTouchPtr   r   )ép   ÚWCVTFr   ÚWriteCVTInFUnitsr"   r   )éD   ÚWCVTPr   ÚWriteCVTInPixelsr"   r   )éB   ÚWSr   Ú
WriteStorer"   r   c                óJ   — d}t        |«      D ]  }d| dz     |z   }| dz	  } Œ |S )NÚ Ú01r   )Úrange)ÚvalueÚbitsÚsÚis       ú^/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/fontTools/ttLib/tables/ttProgram.pyÚbitReprr‡      s=   € Ø
€AÜ�4‹[ò ˆØ�˜‘Ñ Ñ!ˆØ˜‘
‰ðð €Hó    z[A-Z][A-Z0-9]*$c                óÆ   — i }i }| D ]U  \  }}}}}}t         j                  |«      sJ ‚|||f||<   |r"|}	t        d|z  «      D ]  }
|||	|f|||
z   <   Œ ŒM|dd|f||<   ŒW ||fS )Nr   r   )Ú_mnemonicPatÚmatchr�  )ÚinstructionListÚ
opcodeDictÚmnemonicDictÚopÚmnemonicÚargBitsÚnameÚpopsÚpushesÚ	argoffsetr…  s              r†  Ú	_makeDictr–  «   s§   € Ø€JØ€LØ5Dò 2Ñ1ˆˆH�g˜t T¨6Ü×!Ñ! (Ô+Ð+Ð+Ø!# W¨dÐ!2ˆ�XÑÙØˆIÜ˜1 ™<Ó(ò H�Ø%-¨w¸	À4Ð%G�
˜2 ™6Ò"ñHð & q¨!¨TÐ1ˆJ�rŠNð2ð �|Ð#Ð#rˆ  c                  ó   — e Zd Zd„ Zd„ Zy)Útt_instructions_errorc                ó   — || _         y ©N)Úerror)Úselfr›  s     r†  Ú__init__ztt_instructions_error.__init__¿   s	   € Øˆ�
rˆ  c                ó2   — dt        | j                  «      z  S )NzTT instructions error: %s)Úreprr›  ©rœ  s    r†  Ú__str__ztt_instructions_error.__str__Â   s   € Ø*¬T°$·*±*Ó-=Ñ=Ð=rˆ  N)Ú__name__Ú
__module__Ú__qualname__r�  r¡  © rˆ  r†  r˜  r˜  ¾   s   „ òó>rˆ  r˜  z	/\*.*?\*/z([A-Z][A-Z0-9]*)\s*\[(.*?)\]z-?[0-9]+ú(z)|(ú)z\s*z-[A-Z][A-Z0-9]*\s*\[.*?\]\s*/\* ([0-9]+).*?\*/z^FDEF|IF|ELSE\[ \]\t.+z^ELSE|ENDF|EIF\[ \]\t.+c                ód   — t         j                  | |«      }|j                  d   d   }||k\  sJ ‚|S )Nr   r   )Ú_whiteREr‹  Úregs)ÚdataÚposÚmÚnewPoss       r†  Ú
_skipWhiter¯  Ô   s4   € Ü�‰�t˜SÓ!€AØ�V‰V�A‰Y�q‰\€FØ�SŠ=Ðˆ=Ø€Mrˆ  c                  ót   — e Zd Zdd„Zdd„Zdd„Zdd„Zddd„Zdd„Zdd„Z	dd„Z
ddd	„Zdd
„ZeZdd„Zdd„Zy)ÚProgramc                 ó   — y rš  r¥  r   s    r†  r�  zProgram.__init__Ü   s   € Ørˆ  c                óX   — t        j                   d|«      | _        t        | d«      r| `y y )NÚBÚassembly)ÚarrayÚbytecodeÚhasattrrµ  )rœ  r·  s     r†  ÚfromBytecodezProgram.fromBytecodeß   s(   € ÜŸ™ C¨Ó2ˆŒÜ�4˜Ô$Ø‘ð %rˆ  c                óà   — t        |t        «      r|| _        nGt        |t        «      r|j	                  «       | _        n!t        dt        |«      j                  › �«      ‚t        | d«      r| `	y y )Nzexpected str or List[str], got r·  )
Ú
isinstanceÚlistrµ  ÚstrÚ
splitlinesÚ	TypeErrorÚtyper¢  r¸  r·  )rœ  rµ  s     r†  ÚfromAssemblyzProgram.fromAssemblyä   s_   € Ü�h¤Ô%Ø$ˆD�MÜ˜¤#Ô&Ø$×/Ñ/Ó1ˆD�MäÐ=¼dÀ8»n×>UÑ>UÐ=VÐWÓXÐXÜ�4˜Ô$Ø‘ð %rˆ  c                ón   — t        | d«      s| j                  «        | j                  j                  «       S )Nr·  )r¸  Ú	_assembler·  Útobytesr   s    r†  ÚgetBytecodezProgram.getBytecodeî   s)   € Ü�t˜ZÔ(Ø�N‰NÔØ�}‰}×$Ñ$Ó&Ð&rˆ  c                óV   — t        | d«      s| j                  |¬«       | j                  S )Nrµ  ©Úpreserve)r¸  Ú_disassemblerµ  )rœ  rÈ  s     r†  ÚgetAssemblyzProgram.getAssemblyó   s'   € Ü�t˜ZÔ(Ø×Ñ xÐÔ0Ø�}‰}Ðrˆ  c                ó¶  — t        |d«      r|j                  �rù	 | j                  «       }|sy |j                  d«       |j	                  «        d}d}t        |«      }||k  �r�||   }t        j                  |«      r|dz  }|j                  |j                  |z  «       |j                  |«       |j	                  «        t        j                  |«      }|dz   }|ròt        |j                  d«      «      }	g }
d}t        |	«      D ]p  }|rU|dz  sP|j                  |j                  |z  «       |j                  dj                  |
«      «       |j	                  «        g }
|
j                  |||z      «       Œr |j                  |j                  |z  «       |j                  dj                  |
«      «       |j	                  «        ||z   dz   }t         j                  |«      r|dz  }||k  r�Œ�|j#                  d«       |j	                  «        y | j7                  «       }|sy |j                  d	«       |j	                  «        |j5                  |«       |j#                  d	«       |j	                  «        y #  dd l}t'        «       }|j)                  |¬«       d}||j+                  «       z  }t,        j/                  |«       |j                  d	«       |j	                  «        |j1                  |j3                  «       «       |j	                  «        |j5                  | j7                  «       «       |j#                  d	«       |j	                  «        Y y xY w)
NÚdisassembleInstructionsrµ  r   r   r  ú )ÚfilezBAn exception occurred during the decompilation of glyph program:

r·  )r¸  rÌ  rÊ  ÚbegintagÚnewlineÚlenÚ_unindentREr‹  ÚwriteÚindentwhiteÚ_pushCountPatÚintÚgroupr�  ÚjoinÚappendÚ	_indentREÚendtagÚ	tracebackr   Ú	print_excÚgetvalueÚlogr›  ÚcommentÚstripÚdumphexrÅ  )rœ  ÚwriterÚttFontrµ  r…  ÚindentÚnInstrÚinstrr­  ÚnValuesÚlineÚjrÜ  ÚtmpÚmsgr·  s                   r†  ÚtoXMLzProgram.toXMLø   sµ  € ä˜Ð 9Ô:Ø×-Ó-ð4!Ø×+Ñ+Ó-�ñ"  ØØ—‘ 
Ô+Ø—‘Ô Ø�Ø�Ü˜X›�Ø˜&“jØ$ Q™K�EÜ"×(Ñ(¨Ô/Ø !™˜Ø—L‘L ×!3Ñ!3°fÑ!<Ô=Ø—L‘L Ô'Ø—N‘NÔ$Ü%×+Ñ+¨EÓ2�AØ˜A™�AÙÜ"% a§g¡g¨a£j£/˜Ø*,˜Ø˜Ü!& w£ò 9˜AÙ ¨!¨bª&Ø &§¡¨V×-?Ñ-?À&Ñ-HÔ IØ &§¡¨S¯X©X°d«^Ô <Ø &§¡Ô 0Ø') Ø ŸK™K¨°°Q±©Õ8ð9ð Ÿ™ V×%7Ñ%7¸&Ñ%@ÔAØŸ™ S§X¡X¨d£^Ô4ØŸ™Ô(Ø ™E A™I˜Ü —‘ uÔ-Ø !™˜ð3 ˜&”jð4 —‘˜jÔ)Ø—‘Õ à×'Ñ'Ó)ˆHÙØØ�O‰O˜JÔ'Ø�N‰NÔØ�N‰N˜8Ô$Ø�M‰M˜*Ô%Ø�N‰NÕøðw!Û ä“j�Ø×#Ñ#¨Ð#Ô-Ø\�Ø�s—|‘|“~Ñ%�Ü—	‘	˜#”Ø—‘ 
Ô+Ø—‘Ô Ø—‘˜sŸy™y›{Ô+Ø—‘Ô Ø—‘˜t×/Ñ/Ó1Ô2Ø—‘˜jÔ)Ø—‘Ö ús   ›I: É:CMc                óª   — |dk(  r-| j                  t        |«      «       | j                  «        | `y |dk(  sJ ‚| j	                  t        |«      «       y )Nrµ  r·  )rÁ  r   rÃ  rµ  r¹  r   )rœ  r’  ÚattrsÚcontenträ  s        r†  ÚfromXMLzProgram.fromXML<  sM   € Ø�:ÒØ×Ñœg gÓ.Ô/Ø�N‰NÔØ‘à˜:Ò%Ð%Ð%Ø×Ñœg gÓ.Õ/rˆ  c                óì  — dj                  t        | dg «      «      }g }|j                  }t        |«      }t	        |d«      }||k  �ròt
        j                  ||«      }|€t        d||dz
  |dz    z  «      ‚|j                  «       \  }}}	}
}|j                  d   d   }|rt	        ||«      }Œl|	j                  «       }	|j                  d«      rt        |dd  «      } ||«       �n@|d	vrQt        |   \  }}}t        |	«      |k7  rt        d
|›d|	›d�«      ‚|	rt        |	«      }	 |||	z   «       �nõ ||«       �nëg }t	        ||«      }||k  rˆt
        j                  ||«      }|€t        d|||dz    z  «      ‚|j                  «       \  }}}	}
}|
€|€nA|j                  d   d   }t	        ||«      }|�Œm|j                  t        |
«      «       ||k  rŒˆt        |«      }|dk(  �rŽd}|�r:||k  r6|dk  r1d||   cxk  rdk  s#n |dz  }||k  r|dk  rd||   cxk  rdk  sŒn Œ!d}||z   |k  r?|dk  r:d|||z      cxk  rdk  r)n n&|dz  }||z   |k  r|dk  rd|||z      cxk  rdk  rŒ$n |dk  r||z   dk  r||z   |k7  r||z  }Œ¢|rz|dk  rt        d   \  }}}||z   dz
  } ||«       nt        d   \  }}} ||«        ||«       |d | D ]2  }d|cxk  rdk  sn J d|z  «       ‚ ||dz	  dz  «        ||dz  «       Œ4 |rV	 |dk  rt        d   \  }}}||z   dz
  } ||«       nt        d   \  }}} ||«        ||«       ||||z    D ]
  } ||«       Œ ||z   }||d  }||z  }d}|r�Œˆn±|d   dk(  }t        |   \  }}}|d   dk7  r|dk  sJ |«       ‚||z   dz
  } ||«       n|dk  sJ ‚ ||«        ||«       |r8|D ]2  }d|cxk  rdk  sn J d|z  «       ‚ ||dz	  dz  «        ||dz  «       Œ4 n&|D ]!  }d|cxk  rdk  sn J d|z  «       ‚ ||«       Œ# t	        ||«      }||k  r�Œò|rt!        |«      dk  rt#        |«      dk\  sJ ‚t%        j$                  d|«      | _        y )NrÍ  rµ  r   zSyntax error in TT program (%s)rž   r›   r   ÚINSTR)ÚPUSHr   r   r   r   z#Incorrect number of argument bits (ú[z])rô  éÿ   r"   r,  r   r   i €ÿÿé €  zPUSH value out of range %dr   r   r   ÚWÚNé   zPUSHW value out of range %dzPUSHB value out of range %dr´  )rØ  ÚgetattrrÙ  rÑ  r¯  Ú_tokenREr‹  r˜  Úgroupsrª  rá  Ú
startswithrÖ  rŽ  r   ÚstreamMnemonicDictÚmaxÚminr¶  r·  )rœ  rµ  r·  ÚpushÚlenAssemblyr¬  r­  Údummyr�  ÚargÚnumberrà  r�  r‘  r’  ÚargsÚ	_mnemonicÚnArgsÚnWordsÚnBytesr‚  ÚnTotalÚwordss                          r†  rÃ  zProgram._assembleE  s~  € Ø—8‘8œG D¨*°bÓ9Ó:ˆØ ˆØ�‰ˆÜ˜(“mˆÜ˜ 1Ó%ˆØ�KÓÜ—‘˜x¨Ó-ˆAØˆyÜ+Ø5¸ÀÀqÁÈ3ÐQSÉ8Ð8TÑTóð ð 56·H±H³JÑ1ˆE�8˜S &¨'Ø—&‘&˜‘)˜A‘,ˆCÙÜ  ¨3Ó/�Øà—)‘)“+ˆCØ×"Ñ" 7Ô+ä˜ ! "˜Ó&�Ù�R–ØÐ!OÑOÜ$0°Ñ$:Ñ!��G˜TÜ�s“8˜wÒ&Ý/ÚHPÒRUÐVóð ñ Ü$ S›/�CÙ˜˜c™–Ná˜–Hà�Ü  ¨3Ó/�Ø˜KÒ'Ü Ÿ™ x°Ó5�AØ�yÜ3Ø=ÀÈÈsÐUWÉxÐ@XÑXóð ð >?¿X¹X»ZÑ:�E˜9 c¨6°7Ø�~¨'¨/ØØŸ&™& ™) A™,�CÜ$ X¨sÓ3�CØÐ*Ø Ø—K‘K¤ F£Ô,ð ˜KÓ'ô ˜D›	�Ø˜vÓ%à�FÚà" UšNØ &¨¢Ø%&¨$¨v©,Ô%=¸#Ô%=à" a™K˜Fð	 # UšNØ &¨¢Ø%&¨$¨v©,Ô%=¸#Ö%=ð "#˜à" V™O¨eÒ3Ø &¨¢Ø ! T¨&°6©/Ñ%:Ô A¸cÕ Aà" a™K˜Fð	 # V™O¨eÒ3Ø &¨¢Ø ! T¨&°6©/Ñ%:Ô A¸cÕ Að # QšJØ &¨¡°#Ò 5Ø &¨¡°5Ò 8ð # fÑ,˜FØ$ñ "Ø%¨š{Ü4FÀwÑ4OÑ 1  G¨TØ%'¨&¡[°1¡_ Ù $ R¥ä4FÀxÑ4PÑ 1  G¨TÙ $ R¤Ù $ V¤Ø)-¨g¨v¨ò 3 Ø'-°Ô'>¸Ô'>ð !"Ø$@À5Ñ$Hó!"Ð'>ñ !% e¨q¡j°DÑ%8Ô 9Ù $ U¨T¡\Õ 2ð3ñ "Ø Ø%¨š{Ü4FÀwÑ4OÑ 1  G¨TØ%'¨&¡[°1¡_ Ù $ R¥ä4FÀxÑ4PÑ 1  G¨TÙ $ R¤Ù $ V¤Ø)-¨f°vÀ±Ð)Gò , Ù $ U¥ð,ð "(¨&¡˜Ø# F G˜}˜Ø ™˜Ø!"˜ôs  ðx % R™L¨CÑ/�EÜ(:¸8Ñ(DÑ%�B˜ Ø ‘{ cÒ)Ø$¨šzÐ0¨5Ó0˜zØ %™Z¨!™^˜Ù˜R�à$ sš{Ð*˜{Ù˜RœÙ˜UœÙØ%)ò /˜EØ#)¨UÔ#:°UÔ#:ð Ø =ÀÑ EóÐ#:ñ ! %¨1¡*°Ñ!4Ô5Ù  ¨¡Õ.ñ/ð &*ò (˜EØ#$¨Ô#3°Ô#3ð Ø =ÀÑ EóÐ#3ñ ! �Kð	(ô ˜X sÓ+ˆCðK �KÔñN Ü�x“= 3Ò&¬3¨x«=¸AÒ+=Ð=Ð=ÜŸ™ C¨Ó2ˆ�rˆ  c                óÒ  — g }d}t        | dg «      }t        |«      }||k  ra||   }	 t        |   \  }}}	}
|r)|j                  |dt	        ||	z
  |«      ›d|
›d�z   «       n|j                  |d|
z  z   «       |dz   }||k  rŒa|| _
        y # t
        $ �rQ |t        v �r+g }||   t        v rÌ||   }t        |   \  }}}	}
|d   d	k(  }|r	||	z
  dz   }n
|dz   }||   }|dz   }|dkD  sJ ‚|s5t        |«      D ]&  }||   }|j                  t        |«      «       |dz   }Œ( nJt        |«      D ]<  }||   d
z  ||dz      z  }|dk\  r|dz
  }|j                  t        |«      «       |dz   }Œ> |rn||   t        v rŒÌ|sd}t        |«      }|dk(  r|j                  dz  «       n|j                  ›d|›d�«       |j                  |«       n|j                  d|z  «       |dz   }Y �Œhw xY w)Nr   r·  rõ  z]	/* z */z[ ]	/* %s */r   r   rø  r,  r÷  i   r"   rô  z%s[ ]	/* 1 value pushed */z[ ]	/* z values pushed */z
INSTR%d[ ])rû  rÑ  r�  rÙ  r   ÚKeyErrorÚstreamOpcodeDictr�  rŸ  Úextendrµ  )rœ  rÈ  rµ  r…  r·  ÚnumBytecoder�  r�  r‘  r•  r’  Úvaluesr  rè  rê  r‚  s                   r†  rÉ  zProgram._disassembleÖ  sQ  € ØˆØˆÜ˜4 ¨RÓ0ˆÜ˜(“mˆØ�+ŠoØ˜!‘ˆBð7Ü5?À±^Ñ2�˜' 9¨dñ^ Ø—O‘OÙ Ü-7¸¸Y¹ÈÕ-PÒRVÐWñXõð
 —O‘O H¨~ÀÑ/DÑ$DÔEØ˜‘E�ðs �+‹oðt !ˆ�øôm ó ,ØÔ)Ò)Ø�Fð # 1™+Ô)9Ñ9Ø% a™[˜Ü=MÈbÑ=QÑ:˜ '¨9°dØ (¨¡°Ñ 3˜Ù"Ø&(¨9¡n°qÑ&8™Gà ! A¡˜AØ&.¨q¡k˜GØ ™E˜Ø&¨š{Ð*˜{Ù$Ü%*¨7£^ò * Ø(0°© Ø &§¡¬d°5«kÔ :Ø$%¨¡E¡ñ*ô
 &+¨7£^ò * à)1°!©¸Ñ)9¸XÀaÈ!Áe¹_Ñ(L Ø#(¨F¢?Ø,1°G©O EØ &§¡¬d°5«kÔ :Ø$%¨¡E¡ð*ñ $Ø!ð3 # 1™+Ô)9Ò9ñ6 $Ø#)˜Ü! &›k�GØ !’|Ø Ÿ™Ð(DÀxÑ(OÕPà Ÿ™Ú>FÊÐPôð —O‘O FÕ+à—O‘O L°2Ñ$5Ô6Ø˜A™�AúðY,ús   ¨B ÂC+G&Å7A+G&Ç%G&c                óž   — t        | d«      xr t        | j                  «      dkD  xs& t        | d«      xr t        | j                  «      dkD  S )aÂ  
        >>> p = Program()
        >>> bool(p)
        False
        >>> bc = array.array("B", [0])
        >>> p.fromBytecode(bc)
        >>> bool(p)
        True
        >>> p.bytecode.pop()
        0
        >>> bool(p)
        False

        >>> p = Program()
        >>> asm = ['SVTCA[0]']
        >>> p.fromAssembly(asm)
        >>> bool(p)
        True
        >>> p.assembly.pop()
        'SVTCA[0]'
        >>> bool(p)
        False
        rµ  r   r·  )r¸  rÑ  rµ  r·  r   s    r†  Ú__bool__zProgram.__bool__  sH   € ô0 ˜˜jÓ)ÒD¬c°$·-±-Ó.@À1Ñ.Dò 
Ü�D˜*Ó%Ò@¬#¨d¯m©mÓ*<¸qÑ*@ð	
rˆ  c                ón   — t        | «      t        |«      k7  rt        S | j                  |j                  k(  S rš  )rÀ  ÚNotImplementedÚ__dict__)rœ  Úothers     r†  Ú__eq__zProgram.__eq__5  s+   € Ü�‹:œ˜e›Ò$Ü!Ð!Ø�}‰} §¡Ñ.Ð.rˆ  c                ó>   — | j                  |«      }|t        u r|S | S rš  )r  r  )rœ  r  Úresults      r†  Ú__ne__zProgram.__ne__:  s$   € Ø—‘˜UÓ#ˆØ¤>Ñ1ˆvÐA¸6°zÐArˆ  N)ÚreturnÚNone)r·  Úbytesr  r  )rµ  zList[str] | strr  r  )r  r   )T)r  z	List[str])F)r  Úbool)r¢  r£  r¤  r�  r¹  rÁ  rÅ  rÊ  rí  rñ  rÃ  rÉ  r  Ú__nonzero__r  r  r¥  rˆ  r†  r±  r±  Û   sK   „ óóó
ó'ô
ó
BóH0óO3ôb?!óB
ð8 €Kó/ô
Brˆ  r±  c                 ó¼   — d} t        «       }|j                  | «       |j                  d¬«      }|j                  |«       t	        | |j                  «       k(  «       y)z
    >>> _test()
    True
    s·  @;:9876543210/.-,+*)('&%$#"! 
	 ,°CXEj°C`°F#D# °FNðM/° !#3Y-,°CX°+° K°PX± @8Y°+!#3Y-,°CXN°%ò!° M E°%°%#Jad°(RX!#Ö°%ò!° YY-,°CX!!°%°%I°%°%Ja d°PX!!!°%°%I° PX° PX¸ÿâ8!°8!Y° RX°8!¸ÿð8!YYYY-,°CX°+° K°PX¹  ÿÀ8Y°+!#3Y-,NŠ±FCD° ± Fâ° ¹  ÿð8 ° <°(+°%° <-,° /°ò°°M° -,°CX°+° ¹  ÿà8°+!#3Y-,°CXEdj#Edi°Cd``°F#D# °Fð/° !! Š ŠRX3!!YY-,±
C#Ce
-, ±
C#C-, °F#p±F>°F#p±FE:± -,°+°%E°%Ej°@‹`°%#D!!!-,°+°%E°%Ej¸ÿÀŒ`°%#D!!!-,° °+!!!-,° °+!!!-,°C°Ce
-, i°@a° ‹ ±,ÀŠŒ¸ b`+d#da\X°aY-,± %EhT°KPZX°%E°%E`h °%#D°%#D°% Eh Š#D°%Eh`°%#DY-,°% Eh Š#D°%Edhe`°%°`#D-,°	CX‡!À°CX‡E°+°G#D°GzäŠEi °G#DŠŠ‡ ° QX°+°G#D°Gzä!°GzäYYY-, ŠE#Eh`D-,EjB-,/-,°CX°%°%Id#Edi°@‹a °€bj°%°%aŒ°C`°F#D!Š°Fö!!!!!Y-,°CX°%E°%Ed`j°%Eja °%Ej Š‹e°%#DŒ°%#D!! EjD EjDY-, E° U°CZXEh#Ei°@‹a °€bj Š#a °%‹e°%#DŒ°%#D!!!!°+Y-,ŠŠEd#EdadB-,°%°%°+°CX°%°%°%°+°%C°@T°%C° TZX°% E°@aDY°%C° T°%C°@TZX°% E°@`DYY!!!!-,KRXC°%E#aD!!Y-,KRXC°%E#`D!!Y-,KRXED!!Y-, °%#I°@`° c ° RX#°%8#°%e8 Šc8!!!!!Y-,KPXED!!Y-,°%# Šõ °`#íì-,°%# Šõ °a#íì-,°%õ íì-,F#F`ŠŠF# FŠ`Ša¸ÿ€b# #Š±KKŠpE` ° PX°a¸ÿº‹°FŒY°`h:-, E°%FRX°%F ha°%°%?#!8!Y-, E°%FPX°%F ha°%°%?#!8!Y-, °C°C-,Šì-,°CX! F° RX¸ÿð8°8YY-, ° UX¸ c°%Ed°%Eda° SX°°@a°Y%EiSXED!!Y!°%E°%Ead°(QXED!!YY-,!!d#d‹¸@ b-,!°€QXd#d‹¸  b² @/+Y°`-,!°ÀQXd#d‹¸Ub² €/+Y°`-,d#d‹¸@ b`#!-,KSX°%°%Id#Edi°@‹a °€bj°%°%aŒ°F#D!Š°Fö!!Š# 9/Y-,°%°%Id°ÀTX¸ÿø8°8!!Y-,°CXY-,°CXY-,°
+# <°+-,°%¸ÿð8°(+Š# Ð#°+°CXÀ<Y ° -,KS#KQZX8!!Y-,°%Ð#É°° °<°-,° °°%I°8°-,KS#KQZX EŠ`D!!Y-, 9/-TrÇ  N)r±  r¹  rÊ  rÁ  ÚprintrÅ  )ÚbcÚpÚasms      r†  Ú_testr(  ?  sL   € ð 
K>€Bä‹	€AØ‡N�N�2ÔØ
�-‰- ˆ-Ó
&€CØ‡N�N�3ÔÜ	ˆ"�—‘“Ñ
Õ rˆ  Ú__main__)0Ú__doc__Ú
__future__r   ÚfontTools.misc.textToolsr   r   r   r   r¶  Úior   Útypingr	   ÚreÚloggingÚ	getLoggerr¢  rß  ÚstreamInstructionsÚinstructionsr‡  ÚcompilerŠ  r–  r  rÿ  r�  rŽ  Ú	Exceptionr˜  Ú_commentÚ_instructionÚ_numberÚ_tokenrü  r©  rÕ  rÚ  rÒ  r¯  Úobjectr±  r(  ÚsysÚdoctestÚexitÚtestmodÚfailedr¥  rˆ  r†  ú<module>r@     sN  ðÙ Yå "ç MÓ MÛ Ý Ý Û 	Û ð €g×Ñ˜Ó!€òÐ ò{€ò@ð ˆr�z‰zÐ,Ó-€ò$ñ (1Ð1CÓ'DÑ $Ð Ð$Ù$ \Ó2Ñ €
ˆLô>˜Iô >ð €Ø.€Ø
�Ú)ª7²HÐ	=€àˆ2�:‰:�fÓ€Øˆ2�:‰:�fÓ€à�—
‘
ÐKÓL€àˆB�J‰JÐ0Ó1€	Øˆb�j‰jÐ3Ó4€òôaBˆfô aBòH!ð ˆzÒÛÛà€C‡H�Hˆ_ˆW�_‰_Ó×%Ñ%Õ&ð	 rˆ  