ÿØÿàJFIFÿþ ÿÛC       ÿÛC ÿÀÿÄÿÄ"#QrÿÄÿÄ&1!A"2qQaáÿÚ ?Øy,æ/3JæÝ¹È߲؋5êXw²±ÉyˆR”¾I0ó2—PI¾IÌÚiMö¯–þrìN&"KgX:Šíµ•nTJnLK„…@!‰-ý ùúmë;ºgµŒ&ó±hw’¯Õ@”Ü— 9ñ-ë.²1<yà‚¹ïQÐU„ہ?.’¦èûbß±©Ö«Âw*VŒ) `$‰bØÔŸ’ëXÖ-ËTÜíGÚ3ð«g Ÿ§¯—Jx„–’U/ÂÅv_s(Hÿ@TñJÑãõçn­‚!ÈgfbÓc­:él[ðQe 9ÀPLbÃãCµm[5¿ç'ªjglå‡Ûí_§Úõl-;"PkÞÞÁQâ¼_Ñ^¢SŸx?"¸¦ùY騐ÒOÈ q’`~~ÚtËU¹CڒêV  I1Áß_ÿÙ xRc@s{ddlmZddlmZddlmZiZdZedZdefdYZ de fd YZ d S( i(tfull11(ttiny12(tpatterncCst|t|S(N(tstr(tprofiletdebug((sD/opt/alt/python27/lib/python2.7/site-packages/svgwrite/validator2.pyt cache_keyscCsytt||SWnktk r|dkr@t|}n+|dkr[t|}ntd||tt||<|SXdS(s Validator factory ttinytfulltbasictnonesUnsupported profile: '%s'N(RR R (tvalidator_cacheRtKeyErrortTiny12ValidatortFull11Validatort ValueError(RRt validator((sD/opt/alt/python27/lib/python2.7/site-packages/svgwrite/validator2.pyt get_validators   R cBseZdZedZdZdZdZdZdZ ddZ d Z d Z d Z d Zd ZeZRS(sTiny 1.2cCs4||_tj|_tj|_tj|_dS(N(RRt attributestelementst TypeCheckert typechecker(tselfR((sD/opt/alt/python27/lib/python2.7/site-packages/svgwrite/validator2.pyt__init__&s   cCs4x-|jD]\}}|j|||q WdS(s Check if attributes are valid for object 'elementname' and all svg attributes have valid types and values. Raises ValueError. N(titemstcheck_svg_attribute_value(Rt elementnameRt attributenametvalue((sD/opt/alt/python27/lib/python2.7/site-packages/svgwrite/validator2.pytcheck_all_svg_attribute_values,scCs'|j|||j|||dS(s Check if 'attributename' is valid for object 'elementname' and 'value' is a valid svg type and value. Raises ValueError. N(t_check_valid_svg_attribute_namet_check_svg_value(RRRR((sD/opt/alt/python27/lib/python2.7/site-packages/svgwrite/validator2.pyR6scCs|j|}x0|j|D]}|jj||rdSqWt|}||j|kr}td|||fndS(s Checks if 'value' is a valid svg-type for svg-attribute 'attributename' at svg-element 'elementname'. Raises TypeError. NsA'%s' is not a valid value for attribute '%s' at svg-element <%s>.(Rt get_typesRtcheckRt get_constt TypeError(RRRRt attributettypenametvaluestr((sD/opt/alt/python27/lib/python2.7/site-packages/svgwrite/validator2.pyR@s  cCs/|j||s+td||fndS(s~ Check if 'attributename' is a valid svg-attribute for svg-element 'elementname'. Raises ValueError. s,Invalid attribute '%s' for svg-element <%s>.N(tis_valid_svg_attributeR(RRR((sD/opt/alt/python27/lib/python2.7/site-packages/svgwrite/validator2.pyRQscCs@y|j|SWn*tk r;td||jfnXdS(Ns-<%s> is not valid for selected profile: '%s'.(RR t profilename(RR((sD/opt/alt/python27/lib/python2.7/site-packages/svgwrite/validator2.pyt _get_elementZs tstringcCs3|jj||r|Std||fdS(sZ Check if 'value' matches svg type 'typename'. Raises TypeError. s%s is not of type '%s'.N(RR!R#(RRR%((sD/opt/alt/python27/lib/python2.7/site-packages/svgwrite/validator2.pytcheck_svg_type`scCs ||jkS(s4 True if 'elementname' is a valid svg-element name. (R(RR((sD/opt/alt/python27/lib/python2.7/site-packages/svgwrite/validator2.pytis_valid_elementnamekscCs|j|}||jkS(sa True if 'attributename' is a valid svg-attribute for svg-element 'elementname'. (R)tvalid_attributes(RRRtelement((sD/opt/alt/python27/lib/python2.7/site-packages/svgwrite/validator2.pyR'oscCs|j|}||jkS(sf True if svg-element 'childrenname' is a valid children of svg-element 'elementname'. (R)tvalid_children(RRt childrennameR.((sD/opt/alt/python27/lib/python2.7/site-packages/svgwrite/validator2.pytis_valid_childrenvscCs/|j||s+td||fndS(s Checks if svg-element 'childrenname' is a valid children of svg-element 'elementname'. Raises ValueError. s+Invalid children '%s' for svg-element <%s>.N(R1R(RRR0((sD/opt/alt/python27/lib/python2.7/site-packages/svgwrite/validator2.pytcheck_valid_children}scCs|dkrtdnt|ttfr?|df}n^tjj|j}|r|j \}}}t|}nt d|||f}|j j |dr|Sd|j j }t d||fdS(sk Split value in (number, unit) if value has an unit or (number, None). Raises ValueError. sInvalid type 'None'.s#'%s' is not a valid svg-coordinate.is SVG %s %ss!%s is not a valid number for: %s.N(tNoneR#t isinstancetinttfloatRt coordinatetmatchtstriptgroupsRRt is_numbert get_version(RRtresulttnumberttmptunittversion((sD/opt/alt/python27/lib/python2.7/site-packages/svgwrite/validator2.pytget_coordinates  (t__name__t __module__R(tTrueRRRRRR)R+R,R'R1R2RBt get_length(((sD/opt/alt/python27/lib/python2.7/site-packages/svgwrite/validator2.pyR #s       RcBseZdZedZRS(sFull 1.1cCs4||_tj|_tj|_tj|_dS(N(RRRRRR(RR((sD/opt/alt/python27/lib/python2.7/site-packages/svgwrite/validator2.pyRs   (RCRDR(RER(((sD/opt/alt/python27/lib/python2.7/site-packages/svgwrite/validator2.pyRsN( t svgwrite.dataRRRR RRERtobjectR R(((sD/opt/alt/python27/lib/python2.7/site-packages/svgwrite/validator2.pyt s  }