PNG  IHDRxsBIT|d pHYs+tEXtSoftwarewww.inkscape.org<,tEXtComment File Manager

File Manager

Path: /opt/cloudlinux/venv/lib/python3.11/site-packages/svgwrite/data/

Viewing File: tiny12.py

#!/usr/bin/env python
#coding:utf-8
# Author:  mozman --<mozman@gmx.at>
# Purpose: tiny12 data
# Created: 15.10.2010
# Copyright (C) 2010, Manfred Moitzi
# License: MIT License

from svgwrite.data.types import SVGAttribute, SVGMultiAttribute
from svgwrite.data.types import SVGElement
from svgwrite.data.typechecker import Tiny12TypeChecker as TypeChecker

empty_list = []

attributes = {
'about': SVGAttribute('about', anim=True,
    types=frozenset(['string']),
    const=empty_list),
'accent-height': SVGAttribute('accent-height', anim=False,
    types=frozenset(['number']),
    const=empty_list),
'accumulate': SVGAttribute('accumulate', anim=False,
    types=empty_list,
    const=frozenset(['none', 'sum'])),
'additive': SVGAttribute('additive', anim=False,
    types=empty_list,
    const=frozenset(['replace', 'sum'])),
'alphabetic': SVGAttribute('alphabetic', anim=False,
    types=frozenset(['number']),
    const=empty_list),
'arabic-form': SVGAttribute('arabic-form', anim=False,
    types=empty_list,
    const=frozenset(['terminal', 'initial', 'isolated', 'medial'])),
'ascent': SVGAttribute('ascent', anim=False,
    types=frozenset(['number']),
    const=empty_list),
'attributeName': SVGAttribute('attributeName', anim=False,
    types=frozenset(['name']),
    const=empty_list),
'attributeType': SVGAttribute('attributeType', anim=False,
    types=empty_list,
    const=frozenset(['XML', 'CSS', 'auto'])),
'audio-level': SVGAttribute('audio-level', anim=True,
    types=frozenset(['number']),
    const=frozenset(['inherit'])),
'bandwidth': SVGAttribute('bandwidth', anim=False,
    types=frozenset(['number']),
    const=frozenset(['auto'])),
'baseProfile': SVGAttribute('baseProfile', anim=False,
    types=empty_list,
    const=frozenset(['none', 'tiny', 'basic', 'full'])),
'bbox': SVGAttribute('bbox', anim=False,
    types=frozenset(['string']),
    const=empty_list),
'begin': SVGAttribute('begin', anim=False,
    types=frozenset(['timing-value-list']),
    const=frozenset(['indefinite'])),
'buffered-rendering': SVGAttribute('buffered-rendering', anim=True,
    types=empty_list,
    const=frozenset(['auto', 'dynamic', 'static', 'inherit'])),
'by': SVGAttribute('by', anim=False,
    types=frozenset(['string']),
    const=empty_list),
'calcMode': SVGAttribute('calcMode', anim=False,
    types=empty_list,
    const=frozenset(['discrete', 'linear', 'paced', 'spline'])),
'cap-height': SVGAttribute('cap-height', anim=False,
    types=frozenset(['number']),
    const=empty_list),
'class': SVGAttribute('class', anim=True,
    types=frozenset(['list-of-name']),
    const=empty_list),
'color': SVGAttribute('color', anim=True,
    types=frozenset(['color']),
    const=frozenset(['inherit'])),
'color-rendering': SVGAttribute('color-rendering', anim=True,
    types=empty_list,
    const=frozenset(['auto', 'optimizeSpeed', 'optimizeQuality', 'inherit'])),
'content': SVGAttribute('content', anim=True,
    types=frozenset(['string']),
    const=empty_list),
'contentScriptType': SVGAttribute('contentScriptType', anim=False,
    types=frozenset(['content-type']),
    const=empty_list),
'cx': SVGAttribute('cx', anim=True,
    types=frozenset(['coordinate']),
    const=empty_list),
'cy': SVGAttribute('cy', anim=True,
    types=frozenset(['coordinate']),
    const=empty_list),
'd': SVGAttribute('d', anim=True,
    types=frozenset(['path-data']),
    const=empty_list),
'datatype': SVGAttribute('datatype', anim=True,
    types=frozenset(['string']),
    const=empty_list),
'defaultAction': SVGAttribute('defaultAction', anim=False,
    types=empty_list,
    const=frozenset(['perform', 'cancel'])),
'descent': SVGAttribute('descent', anim=False,
    types=frozenset(['number']),
    const=empty_list),
'direction': SVGAttribute('direction', anim=False,
    types=empty_list,
    const=frozenset(['ltr', 'rtl', 'inherit'])),
'display': SVGAttribute('display', anim=True,
    types=empty_list,
    const=frozenset(['inline', 'block', 'list-item', 'run-in', 'compact',
                     'marker', 'table', 'inline-table', 'table-row-group',
                     'table-header-group', 'table-footer-group', 'table-row',
                     'table-column-group', 'table-column', 'table-cell',
                     'table-caption', 'none', 'inherit'])),
'display-align': SVGAttribute('display-align', anim=True,
    types=empty_list,
    const=frozenset(['auto', 'before', 'center', 'after', 'inherit'])),
'dur': SVGAttribute('dur', anim=False,
    types=frozenset(['time']),
    const=frozenset(['media', 'indefinite'])),
'editable': SVGAttribute('editable', anim=True,
    types=empty_list,
    const=frozenset(['none', 'simple'])),
'end': SVGAttribute('end', anim=False,
    types=frozenset(['timing-value-list']),
    const=frozenset(['indefinite'])),
'ev:event': SVGAttribute('ev:event', anim=False,
    types=frozenset(['XML-Name']),
    const=empty_list),
'event': SVGAttribute('event', anim=False,
    types=frozenset(['XML-Name']),
    const=empty_list),
'externalResourcesRequired': SVGAttribute('externalResourcesRequired', anim=False,
    types=frozenset(['boolean']),
    const=empty_list),
'fill': SVGMultiAttribute({
    '*': SVGAttribute(
        'fill', anim=True,
        types=frozenset(['paint']),
        const=frozenset(['inherit'])),
    'set animateMotion animate animateColor animateTransform': SVGAttribute(
        'fill', anim=False,
        types=empty_list,
        const=frozenset(['freeze', 'remove']))
    }),
'fill-opacity': SVGAttribute('fill-opacity', anim=True,
    types=frozenset(['number']),
    const=frozenset(['inherit'])),
'fill-rule': SVGAttribute('fill-rule', anim=True,
    types=empty_list,
    const=frozenset(['nonzero', 'evenodd', 'inherit'])),
'focusHighlight': SVGAttribute('focusHighlight', anim=True,
    types=empty_list,
    const=frozenset(['auto', 'none'])),
'focusable': SVGAttribute('focusable', anim=True,
    types=frozenset(['boolean']),
    const=frozenset(['auto'])),
'font-family': SVGAttribute('font-family', anim=True,
    types=frozenset(['string']),
    const=frozenset(['inherit'])),
'font-size': SVGAttribute('font-size', anim=True,
    types=frozenset(['length']),
    const=frozenset(['inherit'])),
'font-stretch': SVGAttribute('font-stretch', anim=False,
    types=empty_list,
    const=frozenset(['condensed', 'normal', 'ultra-condensed', 'expanded',
                     'narrower', 'inherit', 'semi-condensed', 'extra-condensed',
                     'ultra-expanded', 'wider', 'semi-expanded', 'extra-expanded'])),
'font-style': SVGAttribute('font-style', anim=True,
    types=empty_list,
    const=frozenset(['normal', 'italic', 'oblique', 'inherit'])),
'font-variant': SVGAttribute('font-variant', anim=True,
    types=empty_list,
    const=frozenset(['normal', 'small-caps', 'inherit'])),
'font-weight': SVGAttribute('font-weight', anim=True,
    types=empty_list,
    const=frozenset(['normal', 'bold', 'bolder', 'lighter', '100', '200',
                     '300', '400', '500', '600', '700', '800', '900',
                     'inherit'])),
'from': SVGAttribute('from', anim=False,
    types=frozenset(['string']),
    const=empty_list),
'g1': SVGAttribute('g1', anim=False,
    types=frozenset(['list-of-name']),
    const=empty_list),
'g2': SVGAttribute('g2', anim=False,
    types=frozenset(['list-of-name']),
    const=empty_list),
'glyph-name': SVGAttribute('glyph-name', anim=False,
    types=frozenset(['list-of-name']),
    const=empty_list),
'gradientUnits': SVGAttribute('gradientUnits', anim=True,
    types=empty_list,
    const=frozenset(['userSpaceOnUse', 'objectBoundingBox'])),
'handler': SVGAttribute('handler', anim=False,
    types=frozenset(['IRI']),
    const=empty_list),
'hanging': SVGAttribute('hanging', anim=False,
    types=frozenset(['number']),
    const=empty_list),
'height': SVGMultiAttribute({
    '*': SVGAttribute(
        'height', anim=True,
        types=frozenset(['length']),
        const=empty_list),
    'textArea': SVGAttribute(
        'height', anim=True,
        types=frozenset(['length']),
        const=frozenset(['auto'])),
    }),
'horiz-adv-x': SVGAttribute('horiz-adv-x', anim=False,
    types=frozenset(['number']),
    const=empty_list),
'horiz-origin-x': SVGAttribute('horiz-origin-x', anim=False,
    types=frozenset(['number']),
    const=empty_list),
'id': SVGAttribute('id', anim=False,
    types=frozenset(['name']),
    const=empty_list),
'ideographic': SVGAttribute('ideographic', anim=False,
    types=frozenset(['number']),
    const=empty_list),
'image-rendering': SVGAttribute('image-rendering', anim=True,
    types=empty_list,
    const=frozenset(['auto', 'optimizeSpeed', 'optimizeQuality', 'inherit'])),
'initialVisibility': SVGAttribute('initialVisibility', anim=False,
    types=empty_list,
    const=frozenset(['whenStarted', 'always'])),
'k': SVGAttribute('k', anim=False,
    types=frozenset(['number']),
    const=empty_list),
'keyPoints': SVGAttribute('keyPoints', anim=False,
    types=frozenset(['semicolon-list']),
    const=empty_list),
'keySplines': SVGAttribute('keySplines', anim=False,
    types=frozenset(['semicolon-list']),
    const=empty_list),
'keyTimes': SVGAttribute('keyTimes', anim=False,
    types=frozenset(['semicolon-list']),
    const=empty_list),
'lang': SVGAttribute('lang', anim=False,
    types=frozenset(['list-of-name']),
    const=empty_list),
'line-increment': SVGAttribute('line-increment', anim=True,
    types=frozenset(['number']),
    const=frozenset(['auto', 'inherit'])),
'mathematical': SVGAttribute('mathematical', anim=False,
    types=frozenset(['number']),
    const=empty_list),
'max': SVGAttribute('max', anim=False,
    types=frozenset(['time']),
    const=frozenset(['media'])),
'mediaCharacterEncoding': SVGAttribute('mediaCharacterEncoding', anim=False,
    types=frozenset(['string']),
    const=empty_list),
'mediaContentEncodings': SVGAttribute('mediaContentEncodings', anim=False,
    types=frozenset(['string']),
    const=empty_list),
'mediaSize': SVGAttribute('mediaSize', anim=False,
    types=frozenset(['number']),
    const=empty_list),
'mediaTime': SVGAttribute('mediaTime', anim=False,
    types=frozenset(['time']),
    const=empty_list),
'min': SVGAttribute('min', anim=False,
    types=frozenset(['time']),
    const=frozenset(['media'])),
'nav-down': SVGAttribute('nav-down', anim=True,
    types=frozenset(['focus']),
    const=empty_list),
'nav-down-left': SVGAttribute('nav-down-left', anim=True,
    types=frozenset(['focus']),
    const=empty_list),
'nav-down-right': SVGAttribute('nav-down-right', anim=True,
    types=frozenset(['focus']),
    const=empty_list),
'nav-left': SVGAttribute('nav-left', anim=True,
    types=frozenset(['focus']),
    const=empty_list),
'nav-next': SVGAttribute('nav-next', anim=True,
    types=frozenset(['focus']),
    const=empty_list),
'nav-prev': SVGAttribute('nav-prev', anim=True,
    types=frozenset(['focus']),
    const=empty_list),
'nav-right': SVGAttribute('nav-right', anim=True,
    types=frozenset(['focus']),
    const=empty_list),
'nav-up': SVGAttribute('nav-up', anim=True,
    types=frozenset(['focus']),
    const=empty_list),
'nav-up-left': SVGAttribute('nav-up-left', anim=True,
    types=frozenset(['focus']),
    const=empty_list),
'nav-up-right': SVGAttribute('nav-up-right', anim=True,
    types=frozenset(['focus']),
    const=empty_list),
'observer': SVGAttribute('observer', anim=False,
    types=frozenset(['IDREF']),
    const=empty_list),
'offset': SVGAttribute('offset', anim=True,
    types=frozenset(['number']),
    const=empty_list),
'opacity': SVGAttribute('opacity', anim=True,
    types=frozenset(['number']),
    const=frozenset(['inherit'])),
'origin': SVGAttribute('origin', anim=False,
    types=empty_list,
    const=frozenset(['default'])),
'overlay': SVGAttribute('overlay', anim=False,
    types=empty_list,
    const=frozenset(['none', 'top'])),
'overline-position': SVGAttribute('overline-position', anim=False,
    types=frozenset(['number']),
    const=empty_list),
'overline-thickness': SVGAttribute('overline-thickness', anim=False,
    types=frozenset(['number']),
    const=empty_list),
'panose-1': SVGAttribute('panose-1', anim=False,
    types=frozenset(['list-of-integer']),
    const=empty_list),
'path': SVGAttribute('path', anim=False,
    types=frozenset(['path-data']),
    const=empty_list),
'pathLength': SVGAttribute('pathLength', anim=True,
    types=frozenset(['number']),
    const=empty_list),
'phase': SVGAttribute('phase', anim=False,
    types=empty_list,
    const=frozenset(['default', 'capture'])),
'playbackOrder': SVGAttribute('playbackOrder', anim=False,
    types=empty_list,
    const=frozenset(['all', 'forwardOnly'])),
'pointer-events': SVGAttribute('pointer-events', anim=True,
    types=empty_list,
    const=frozenset(['visiblePainted', 'visibleFill', 'visibleStroke', 'visible',
                     'painted', 'fill', 'stroke', 'all', 'none', 'inherit'])),
'points': SVGAttribute('points', anim=True,
    types=frozenset(['list-of-number']),
    const=empty_list),
'preserveAspectRatio': SVGAttribute('preserveAspectRatio', anim=True,
    types=frozenset(['string']),
    const=empty_list),
'propagate': SVGAttribute('propagate', anim=False,
    types=empty_list,
    const=frozenset(['continue', 'stop'])),
'property': SVGAttribute('property', anim=True,
    types=frozenset(['string']),
    const=empty_list),
'r': SVGAttribute('r', anim=True,
    types=frozenset(['length']),
    const=empty_list),
'rel': SVGAttribute('rel', anim=True,
    types=frozenset(['string']),
    const=empty_list),
'repeatCount': SVGAttribute('repeatCount', anim=False,
    types=frozenset(['number']),
    const=frozenset(['indefinite'])),
'repeatDur': SVGAttribute('repeatDur', anim=False,
    types=frozenset(['time']),
    const=frozenset(['indefinite'])),
'requiredExtensions': SVGAttribute('requiredExtensions', anim=False,
    types=frozenset(['list-of-IRI']),
    const=empty_list),
'requiredFeatures': SVGAttribute('requiredFeatures', anim=False,
    types=frozenset(['list-of-IRI']),
    const=empty_list),
'requiredFonts': SVGAttribute('requiredFonts', anim=False,
    types=frozenset(['string']),
    const=empty_list),
'requiredFormats': SVGAttribute('requiredFormats', anim=False,
    types=frozenset(['anything']),
    const=empty_list),
'resource': SVGAttribute('resource', anim=True,
    types=frozenset(['string']),
    const=empty_list),
'restart': SVGAttribute('restart', anim=False,
    types=empty_list,
    const=frozenset(['always', 'never', 'whenNotActive'])),
'rev': SVGAttribute('rev', anim=True,
    types=frozenset(['string']),
    const=empty_list),
'role': SVGAttribute('role', anim=True,
    types=frozenset(['string']),
    const=empty_list),
'rotate': SVGAttribute('rotate', anim=True,
    types=frozenset(['list-of-number']),
    const=empty_list),
'rx': SVGAttribute('rx', anim=True,
    types=frozenset(['length']),
    const=empty_list),
'ry': SVGAttribute('ry', anim=True,
    types=frozenset(['length']),
    const=empty_list),
'shape-rendering': SVGAttribute('shape-rendering', anim=True,
    types=empty_list,
    const=frozenset(['auto', 'optimizeSpeed', 'crispEdges', 'geometricPrecision', 'inherit'])),
'slope': SVGAttribute('slope', anim=False,
    types=frozenset(['number']),
    const=empty_list),
'snapshotTime': SVGAttribute('snapshotTime', anim=False,
    types=frozenset(['time']),
    const=frozenset(['none'])),
'solid-color': SVGAttribute('solid-color', anim=True,
    types=frozenset(['color']),
    const=frozenset(['currentColor', 'inherit'])),
'solid-opacity': SVGAttribute('solid-opacity', anim=True,
    types=frozenset(['number']),
    const=frozenset(['inherit'])),
'stemh': SVGAttribute('stemh', anim=False,
    types=frozenset(['number']),
    const=empty_list),
'stemv': SVGAttribute('stemv', anim=False,
    types=frozenset(['number']),
    const=empty_list),
'stop-color': SVGAttribute('stop-color', anim=True,
    types=frozenset(['color']),
    const=frozenset(['inherit'])),
'stop-opacity': SVGAttribute('stop-opacity', anim=True,
    types=frozenset(['number']),
    const=frozenset(['inherit'])),
'strikethrough-position': SVGAttribute('strikethrough-position', anim=False,
    types=frozenset(['number']),
    const=empty_list),
'strikethrough-thickness': SVGAttribute('strikethrough-thickness', anim=False,
    types=frozenset(['number']),
    const=empty_list),
'stroke': SVGAttribute('stroke', anim=True,
    types=frozenset(['paint']),
    const=frozenset(['inherit'])),
'stroke-dasharray': SVGAttribute('stroke-dasharray', anim=True,
    types=frozenset(['list-of-length']),
    const=frozenset(['none', 'inherit'])),
'stroke-dashoffset': SVGAttribute('stroke-dashoffset', anim=True,
    types=frozenset(['length']),
    const=frozenset(['inherit'])),
'stroke-linecap': SVGAttribute('stroke-linecap', anim=True,
    types=empty_list,
    const=frozenset(['butt', 'round', 'square', 'inherit'])),
'stroke-linejoin': SVGAttribute('stroke-linejoin', anim=True,
    types=empty_list,
    const=frozenset(['miter', 'round', 'bevel', 'inherit'])),
'stroke-miterlimit': SVGAttribute('stroke-miterlimit', anim=True,
    types=frozenset(['number']),
    const=frozenset(['inherit'])),
'stroke-opacity': SVGAttribute('stroke-opacity', anim=True,
    types=frozenset(['number']),
    const=frozenset(['inherit'])),
'stroke-width': SVGAttribute('stroke-width', anim=True,
    types=frozenset(['length']),
    const=frozenset(['inherit'])),
'syncBehavior': SVGAttribute('syncBehavior', anim=False,
    types=empty_list,
    const=frozenset(['canSlip', 'locked', 'independent', 'default'])),
'syncBehaviorDefault': SVGAttribute('syncBehaviorDefault', anim=False,
    types=empty_list,
    const=frozenset(['canSlip', 'locked', 'independent', 'inherit'])),
'syncMaster': SVGAttribute('syncMaster', anim=False,
    types=frozenset(['boolean']),
    const=empty_list),
'syncTolerance': SVGAttribute('syncTolerance', anim=False,
    types=frozenset(['time']),
    const=frozenset(['default'])),
'syncToleranceDefault': SVGAttribute('syncToleranceDefault', anim=False,
    types=frozenset(['time']),
    const=frozenset(['inherit'])),
'systemLanguage': SVGAttribute('systemLanguage', anim=False,
    types=frozenset(['string']),
    const=empty_list),
'target': SVGMultiAttribute({
    '* a': SVGAttribute(
        'target', anim=True,
        types=frozenset(['XML-Name']),
        const=frozenset(['_replace', '_self', '_parent', '_top', '_blank'])),
    'listener': SVGAttribute(
        'target', anim=False,
        types=frozenset(['XML-Name']),
        const=empty_list),
    }),
'text-align': SVGAttribute('text-align', anim=True,
    types=empty_list,
    const=frozenset(['start', 'center', 'end', 'inherit'])),
'text-anchor': SVGAttribute('text-anchor', anim=True,
    types=empty_list,
    const=frozenset(['start', 'middle', 'end', 'inherit'])),
'text-rendering': SVGAttribute('text-rendering', anim=True,
    types=empty_list,
    const=frozenset(['auto', 'optimizeSpeed', 'optimizeLegibility', 'geometricPrecision', 'inherit'])),
'timelineBegin': SVGAttribute('timelineBegin', anim=False,
    types=empty_list,
    const=frozenset(['onLoad', 'onStart'])),
'to': SVGAttribute('to', anim=False,
    types=frozenset(['string']),
    const=empty_list),
'transform': SVGAttribute('transform', anim=True,
    types=frozenset(['transform-list']),
    const=frozenset(['none'])),
'transformBehavior': SVGAttribute('transformBehavior', anim=False,
    types=empty_list,
    const=frozenset(['geometric', 'pinned', 'pinned90', 'pinned180', 'pinned270'])),
'type': SVGMultiAttribute({
    '* audio image video': SVGAttribute(
        'type', anim=True,
        types=frozenset(['content-type']),
        const=empty_list),
    'handler script': SVGAttribute(
        'type', anim=False,
        types=frozenset(['content-type']),
        const=empty_list),
    'animateTransform': SVGAttribute(
        'type', anim=False,
        types=empty_list,
        const=frozenset(['translate', 'scale', 'rotate', 'skewX', 'skewY'])),
    }),
'typeof': SVGAttribute('typeof', anim=True,
    types=frozenset(['string']),
    const=empty_list),
'u1': SVGAttribute('u1', anim=False,
    types=frozenset(['string']),
    const=empty_list),
'u2': SVGAttribute('u2', anim=False,
    types=frozenset(['string']),
    const=empty_list),
'underline-position': SVGAttribute('underline-position', anim=False,
    types=frozenset(['number']),
    const=empty_list),
'underline-thickness': SVGAttribute('underline-thickness', anim=False,
    types=frozenset(['number']),
    const=empty_list),
'unicode': SVGAttribute('unicode', anim=False,
    types=frozenset(['string']),
    const=empty_list),
'unicode-bidi': SVGAttribute('unicode-bidi', anim=False,
    types=empty_list,
    const=frozenset(['normal', 'embed', 'bidi-override', 'inherit'])),
'unicode-range': SVGAttribute('unicode-range', anim=False,
    types=frozenset(['string']),
    const=empty_list),
'units-per-em': SVGAttribute('units-per-em', anim=False,
    types=frozenset(['number']),
    const=empty_list),
'values': SVGAttribute('values', anim=False,
    types=frozenset(['list-of-number']),
    const=empty_list),
'vector-effect': SVGAttribute('vector-effect', anim=True,
    types=empty_list,
    const=frozenset(['none', 'non-scaling-stroke', 'inherit'])),
'version': SVGAttribute('version', anim=False,
    types=empty_list,
    const=frozenset(['1.1', '1.2'])),
'viewBox': SVGAttribute('viewBox', anim=True,
    types=frozenset(['four-numbers']),
    const=empty_list),
'viewport-fill': SVGAttribute('viewport-fill', anim=True,
    types=frozenset(['color']),
    const=frozenset(['none', 'inherit'])),
'viewport-fill-opacity': SVGAttribute('viewport-fill-opacity', anim=True,
    types=frozenset(['number']),
    const=frozenset(['inherit'])),
'visibility': SVGAttribute('visibility', anim=True,
    types=empty_list,
    const=frozenset(['visible', 'hidden', 'inherit'])),
'width': SVGMultiAttribute({
    '*': SVGAttribute(
        'width', anim=True,
        types=frozenset(['length']),
        const=empty_list),
    'textArea': SVGAttribute(
        'width', anim=True,
        types=frozenset(['length']),
        const=frozenset(['auto'])),
    }),
'widths': SVGAttribute('widths', anim=False,
    types=frozenset(['string']),
    const=empty_list),
'x': SVGMultiAttribute({
    '*': SVGAttribute(
        'x', anim=True,
        types=frozenset(['coordinate']),
        const=empty_list),
    'text': SVGAttribute(
        'x', anim=True,
        types=frozenset(['list-of-coordinate']),
        const=empty_list),
    }),
'x-height': SVGAttribute('x-height', anim=False,
    types=frozenset(['number']),
    const=empty_list),
'x1': SVGAttribute('x1', anim=True,
    types=frozenset(['coordinate']),
    const=empty_list),
'x2': SVGAttribute('x2', anim=True,
    types=frozenset(['coordinate']),
    const=empty_list),
'xlink:actuate': SVGMultiAttribute({
    '*': SVGAttribute(
        'xlink:actuate', anim=False,
        types=empty_list,
        const=frozenset(['onLoad'])),
    'a': SVGAttribute(
        'xlink:actuate', anim=False,
        types=empty_list,
        const=frozenset(['onRequest'])),
    }),
'xlink:arcrole': SVGAttribute('xlink:arcrole', anim=False,
    types=frozenset(['IRI']),
    const=empty_list),
'xlink:href': SVGAttribute('xlink:href', anim=True,
    types=frozenset(['IRI']),
    const=empty_list),
'xlink:role': SVGAttribute('xlink:role', anim=False,
    types=frozenset(['IRI']),
    const=empty_list),
'xlink:show': SVGMultiAttribute({
    '*': SVGAttribute(
        'xlink:show', anim=False,
        types=empty_list,
        const=frozenset(['other'])),
    'animation audio foreignObject image use video': SVGAttribute(
        'xlink:show', anim=False,
        types=empty_list,
        const=frozenset(['embed'])),
    'a': SVGAttribute(
        'xlink:show', anim=False,
        types=empty_list,
        const=frozenset(['new', 'replace'])),
    }),
'xlink:title': SVGAttribute('xlink:title', anim=False,
    types=frozenset(['string']),
    const=empty_list),
'xlink:type': SVGAttribute('xlink:type', anim=True,
    types=empty_list,
    const=frozenset(['simple'])),
'xmlns': SVGAttribute('xmlns', anim=False,
    types=frozenset(['IRI']),
    const=empty_list),
'xmlns:xlink': SVGAttribute('xmlns:xlink', anim=False,
    types=frozenset(['IRI']),
    const=empty_list),
'xmlns:ev': SVGAttribute('xmlns:ev', anim=False,
    types=frozenset(['IRI']),
    const=empty_list),
'xml:base': SVGAttribute('xml:base', anim=False,
    types=frozenset(['IRI']),
    const=empty_list),
'xml:id': SVGAttribute('xml:id', anim=False,
    types=frozenset(['name']),
    const=empty_list),
'xml:lang': SVGAttribute('xml:lang', anim=False,
    types=frozenset(['name']),
    const=empty_list),
'xml:space': SVGMultiAttribute({
    '*': SVGAttribute(
        'xml:space', anim=False,
        types=empty_list,
        const=frozenset(['preserve', 'default'])),
    'handler script': SVGAttribute(
        'xml:space', anim=False,
        types=empty_list,
        const=frozenset(['preserve'])),
    }),
'y': SVGMultiAttribute({
    '*': SVGAttribute(
        'y', anim=True,
        types=frozenset(['coordinate']),
        const=empty_list),
    'text': SVGAttribute(
        'y', anim=True,
        types=frozenset(['list-of-coordinate']),
        const=empty_list),
    }),
'y1': SVGAttribute('y1', anim=True,
    types=frozenset(['coordinate']),
    const=empty_list),
'y2': SVGAttribute('y2', anim=True,
    types=frozenset(['coordinate']),
    const=empty_list),
'zoomAndPan': SVGAttribute('zoomAndPan', anim=False,
    types=empty_list,
    const=frozenset(['disable', 'magnify'])),
}

attribute_names = ['slope', 'keySplines', 'rx', 'accumulate', 'bandwidth',
                   'attributeType', 'unicode', 'nav-right', 'arabic-form',
                   'y2', 'horiz-origin-x', 'underline-position', 'zoomAndPan',
                   'cap-height', 'defaultAction', 'to', 'syncBehavior',
                   'alphabetic', 'g2', 'g1', 'panose-1', 'strikethrough-thickness',
                   'attributeName', 'bbox', 'nav-up-left', 'nav-left',
                   'restart', 'target', 'xlink:actuate', 'rotate', 'resource',
                   'd', 'syncToleranceDefault', 'initialVisibility',
                   'transformBehavior', 'nav-up-right', 'keyTimes',
                   'x', 'requiredFormats', 'nav-next', 'glyph-name',
                   'xml:lang', 'mathematical', 'observer', 'repeatDur',
                   'hanging', 'y1', 'xml:base', 'ascent', 'event',
                   'strikethrough-position', 'overlay', 'rev', 'ry',
                   'overline-thickness', 'content', 'version', 'rel',
                   'focusable', 'requiredFonts', 'nav-down-right', 'xml:id',
                   'offset', 'additive', 'underline-thickness', 'font-family',
                   'by', 'mediaTime', 'timelineBegin', 'about', 'horiz-adv-x',
                   'widths', 'k', 'requiredFeatures', 'preserveAspectRatio',
                   'contentScriptType', 'origin', 'xml:space', 'xlink:href',
                   'height', 'baseProfile', 'cy', 'cx', 'path', 'xlink:role',
                   'from', 'u1', 'transform', 'units-per-em', 'u2', 'width',
                   'handler', 'font-variant', 'x-height', 'dur', 'xlink:arcrole',
                   'type', 'focusHighlight', 'mediaCharacterEncoding',
                   'xlink:title', 'editable', 'stemv', 'systemLanguage',
                   'x2', 'x1', 'ideographic', 'xlink:show', 'overline-position',
                   'syncTolerance', 'gradientUnits', 'r', 'values', 'typeof',
                   'mediaContentEncodings', 'property', 'requiredExtensions',
                   'repeatCount', 'ev:event', 'nav-down', 'mediaSize', 'pathLength',
                   'syncMaster', 'font-style', 'fill', 'end', 'descent',
                   'calcMode', 'min', 'stemh', 'id', 'unicode-range',
                   'nav-up', 'font-stretch', 'role', 'font-weight', 'begin',
                   'xlink:type', 'syncBehaviorDefault', 'max', 'snapshotTime',
                   'playbackOrder', 'keyPoints', 'nav-prev', 'propagate',
                   'phase', 'externalResourcesRequired', 'nav-down-left',
                   'class', 'lang', 'datatype', 'viewBox', 'points',
                   'accent-height', 'y']
property_names = ['stroke-linejoin', 'font-size', 'text-rendering', 'color-rendering',
                  'fill-opacity', 'color', 'shape-rendering', 'solid-color', 'stroke',
                  'stroke-linecap', 'vector-effect', 'stroke-width', 'font-style',
                  'fill', 'solid-opacity', 'fill-rule', 'viewport-fill-opacity',
                  'display-align', 'buffered-rendering', 'stroke-miterlimit',
                  'font-variant', 'stop-opacity', 'font-weight', 'opacity', 'direction',
                  'audio-level', 'visibility', 'unicode-bidi', 'line-increment',
                  'image-rendering', 'font-family', 'viewport-fill', 'text-align',
                  'stroke-opacity', 'stroke-dashoffset', 'text-anchor', 'stop-color',
                  'pointer-events', 'stroke-dasharray', 'display']
media_group_names = ['audio-level', 'buffered-rendering', 'display', 'image-rendering',
                     'pointer-events', 'shape-rendering', 'text-rendering',
                     'viewport-fill', 'viewport-fill-opacity', 'visibility']

elements = {
    'a': SVGElement('a',
    attributes=['about', 'class', 'content', 'datatype', 'externalResourcesRequired', 'focusHighlight', 'focusable', 'id', 'nav-down', 'nav-down-left', 'nav-down-right', 'nav-left', 'nav-next', 'nav-prev', 'nav-right', 'nav-up', 'nav-up-left', 'nav-up-right', 'property', 'rel', 'requiredExtensions', 'requiredFeatures', 'requiredFonts', 'requiredFormats', 'resource', 'rev', 'role', 'systemLanguage', 'target', 'transform', 'typeof', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
    properties=property_names,
    children=['likeparent', 'defs', 'text', 'g', 'textArea', 'svg']),

    'animate': SVGElement('animate',
    attributes=['about', 'accumulate', 'additive', 'attributeName', 'attributeType', 'begin', 'by', 'calcMode', 'class', 'content', 'datatype', 'dur', 'end', 'fill', 'from', 'id', 'keySplines', 'keyTimes', 'max', 'min', 'property', 'rel', 'repeatCount', 'repeatDur', 'requiredExtensions', 'requiredFeatures', 'requiredFonts', 'requiredFormats', 'resource', 'restart', 'rev', 'role', 'systemLanguage', 'to', 'typeof', 'values', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
    properties=empty_list,
    children=['desc', 'handler', 'metadata', 'switch', 'title']),

    'animateColor': SVGElement('animateColor',
    attributes=['about', 'accumulate', 'additive', 'attributeName', 'attributeType', 'begin', 'by', 'calcMode', 'class', 'content', 'datatype', 'dur', 'end', 'fill', 'from', 'id', 'keySplines', 'keyTimes', 'max', 'min', 'property', 'rel', 'repeatCount', 'repeatDur', 'requiredExtensions', 'requiredFeatures', 'requiredFonts', 'requiredFormats', 'resource', 'restart', 'rev', 'role', 'systemLanguage', 'to', 'typeof', 'values', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
    properties=empty_list,
    children=['desc', 'handler', 'metadata', 'switch', 'title']),

    'animateMotion': SVGElement('animateMotion',
    attributes=['about', 'accumulate', 'additive', 'begin', 'by', 'calcMode', 'class', 'content', 'datatype', 'dur', 'end', 'fill', 'from', 'id', 'keyPoints', 'keySplines', 'keyTimes', 'max', 'min', 'origin', 'path', 'property', 'rel', 'repeatCount', 'repeatDur', 'requiredExtensions', 'requiredFeatures', 'requiredFonts', 'requiredFormats', 'resource', 'restart', 'rev', 'role', 'rotate', 'systemLanguage', 'to', 'typeof', 'values', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
    properties=empty_list,
    children=['desc', 'handler', 'metadata', 'mpath', 'switch', 'title']),

    'animateTransform': SVGElement('animateTransform',
    attributes=['about', 'accumulate', 'additive', 'attributeName', 'attributeType', 'begin', 'by', 'calcMode', 'class', 'content', 'datatype', 'dur', 'end', 'fill', 'from', 'id', 'keySplines', 'keyTimes', 'max', 'min', 'property', 'rel', 'repeatCount', 'repeatDur', 'requiredExtensions', 'requiredFeatures', 'requiredFonts', 'requiredFormats', 'resource', 'restart', 'rev', 'role', 'systemLanguage', 'to', 'type', 'typeof', 'values', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
    properties=empty_list,
    children=['desc', 'handler', 'metadata', 'switch', 'title']),

    'animation': SVGElement('animation',
    attributes=['about', 'begin', 'class', 'content', 'datatype', 'dur', 'end', 'externalResourcesRequired', 'fill', 'focusHighlight', 'focusable', 'height', 'id', 'initialVisibility', 'max', 'min', 'nav-down', 'nav-down-left', 'nav-down-right', 'nav-left', 'nav-next', 'nav-prev', 'nav-right', 'nav-up', 'nav-up-left', 'nav-up-right', 'preserveAspectRatio', 'property', 'rel', 'repeatCount', 'repeatDur', 'requiredExtensions', 'requiredFeatures', 'requiredFonts', 'requiredFormats', 'resource', 'restart', 'rev', 'role', 'syncBehavior', 'syncMaster', 'syncTolerance', 'systemLanguage', 'transform', 'typeof', 'width', 'x', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:id', 'xml:lang', 'xml:space', 'y'],
    properties=media_group_names,
    children=['animate', 'animateColor', 'animateMotion', 'animateTransform', 'desc', 'discard', 'handler', 'metadata', 'set', 'switch', 'title']),

    'audio': SVGElement('audio',
    attributes=['about', 'begin', 'class', 'content', 'datatype', 'dur', 'end', 'externalResourcesRequired', 'fill', 'id', 'max', 'min', 'property', 'rel', 'repeatCount', 'repeatDur', 'requiredExtensions', 'requiredFeatures', 'requiredFonts', 'requiredFormats', 'resource', 'restart', 'rev', 'role', 'syncBehavior', 'syncMaster', 'syncTolerance', 'systemLanguage', 'type', 'typeof', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
    properties=media_group_names,
    children=['animate', 'animateColor', 'animateMotion', 'animateTransform', 'desc', 'discard', 'handler', 'metadata', 'set', 'switch', 'title']),

    'circle': SVGElement('circle',
    attributes=['about', 'class', 'content', 'cx', 'cy', 'datatype', 'focusHighlight', 'focusable', 'id', 'nav-down', 'nav-down-left', 'nav-down-right', 'nav-left', 'nav-next', 'nav-prev', 'nav-right', 'nav-up', 'nav-up-left', 'nav-up-right', 'property', 'r', 'rel', 'requiredExtensions', 'requiredFeatures', 'requiredFonts', 'requiredFormats', 'resource', 'rev', 'role', 'systemLanguage', 'transform', 'typeof', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
    properties=property_names,
    children=['animate', 'animateColor', 'animateMotion', 'animateTransform', 'desc', 'discard', 'handler', 'metadata', 'set', 'switch', 'title']),

    'defs': SVGElement('defs',
    attributes=['about', 'class', 'content', 'datatype', 'id', 'property', 'rel', 'resource', 'rev', 'role', 'typeof', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
    properties=property_names,
    children=['a', 'animate', 'animateColor', 'animateMotion', 'animateTransform', 'animation', 'audio', 'circle', 'defs', 'desc', 'discard', 'ellipse', 'font', 'font-face', 'foreignObject', 'g', 'handler', 'image', 'line', 'linearGradient', 'listener', 'metadata', 'path', 'polygon', 'polyline', 'prefetch', 'radialGradient', 'rect', 'script', 'set', 'solidColor', 'switch', 'text', 'textArea', 'title', 'use', 'video']),

    'desc': SVGElement('desc',
    attributes=['about', 'class', 'content', 'datatype', 'id', 'property', 'rel', 'requiredExtensions', 'requiredFeatures', 'requiredFonts', 'requiredFormats', 'resource', 'rev', 'role', 'systemLanguage', 'typeof', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
    properties=media_group_names,
    children=empty_list),

    'discard': SVGElement('discard',
    attributes=['about', 'begin', 'class', 'content', 'datatype', 'id', 'property', 'rel', 'requiredExtensions', 'requiredFeatures', 'requiredFonts', 'requiredFormats', 'resource', 'rev', 'role', 'systemLanguage', 'typeof', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
    properties=empty_list,
    children=['desc', 'handler', 'metadata', 'switch', 'title']),

    'ellipse': SVGElement('ellipse',
    attributes=['about', 'class', 'content', 'cx', 'cy', 'datatype', 'focusHighlight', 'focusable', 'id', 'nav-down', 'nav-down-left', 'nav-down-right', 'nav-left', 'nav-next', 'nav-prev', 'nav-right', 'nav-up', 'nav-up-left', 'nav-up-right', 'property', 'rel', 'requiredExtensions', 'requiredFeatures', 'requiredFonts', 'requiredFormats', 'resource', 'rev', 'role', 'rx', 'ry', 'systemLanguage', 'transform', 'typeof', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
    properties=property_names,
    children=['animate', 'animateColor', 'animateMotion', 'animateTransform', 'desc', 'discard', 'handler', 'metadata', 'set', 'switch', 'title']),

    'font': SVGElement('font',
    attributes=['about', 'class', 'content', 'datatype', 'externalResourcesRequired', 'horiz-adv-x', 'horiz-origin-x', 'id', 'property', 'rel', 'resource', 'rev', 'role', 'typeof', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
    properties=empty_list,
    children=['desc', 'font-face', 'glyph', 'hkern', 'metadata', 'missing-glyph', 'switch', 'title']),

    'font-face': SVGElement('font-face',
    attributes=['about', 'accent-height', 'alphabetic', 'ascent', 'bbox', 'cap-height', 'class', 'content', 'datatype', 'descent', 'externalResourcesRequired', 'font-family', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'hanging', 'id', 'ideographic', 'mathematical', 'overline-position', 'overline-thickness', 'panose-1', 'property', 'rel', 'resource', 'rev', 'role', 'slope', 'stemh', 'stemv', 'strikethrough-position', 'strikethrough-thickness', 'typeof', 'underline-position', 'underline-thickness', 'unicode-range', 'units-per-em', 'widths', 'x-height', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
    properties=empty_list,
    children=['desc', 'font-face-src', 'metadata', 'switch', 'title']),

    'font-face-src': SVGElement('font-face-src',
    attributes=['about', 'class', 'content', 'datatype', 'id', 'property', 'rel', 'resource', 'rev', 'role', 'typeof', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
    properties=empty_list,
    children=['desc', 'font-face-uri', 'metadata', 'switch', 'title']),

    'font-face-uri': SVGElement('font-face-uri',
    attributes=['about', 'class', 'content', 'datatype', 'externalResourcesRequired', 'id', 'property', 'rel', 'resource', 'rev', 'role', 'typeof', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
    properties=empty_list,
    children=['desc', 'metadata', 'switch', 'title']),

    'foreignObject': SVGElement('foreignObject',
    attributes=['about', 'class', 'content', 'datatype', 'externalResourcesRequired', 'focusHighlight', 'focusable', 'height', 'id', 'nav-down', 'nav-down-left', 'nav-down-right', 'nav-left', 'nav-next', 'nav-prev', 'nav-right', 'nav-up', 'nav-up-left', 'nav-up-right', 'property', 'rel', 'requiredExtensions', 'requiredFeatures', 'requiredFonts', 'requiredFormats', 'resource', 'rev', 'role', 'systemLanguage', 'transform', 'typeof', 'width', 'x', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:id', 'xml:lang', 'xml:space', 'y'],
    properties=property_names,
    children=['desc', 'metadata', 'svg', 'switch', 'title']),

    'g': SVGElement('g',
    attributes=['about', 'class', 'content', 'datatype', 'externalResourcesRequired', 'focusHighlight', 'focusable', 'id', 'nav-down', 'nav-down-left', 'nav-down-right', 'nav-left', 'nav-next', 'nav-prev', 'nav-right', 'nav-up', 'nav-up-left', 'nav-up-right', 'property', 'rel', 'requiredExtensions', 'requiredFeatures', 'requiredFonts', 'requiredFormats', 'resource', 'rev', 'role', 'systemLanguage', 'transform', 'typeof', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
    properties=property_names,
    children=['a', 'animate', 'animateColor', 'animateMotion', 'animateTransform', 'animation', 'audio', 'circle', 'defs', 'desc', 'discard', 'ellipse', 'font', 'font-face', 'foreignObject', 'g', 'handler', 'image', 'line', 'linearGradient', 'listener', 'metadata', 'path', 'polygon', 'polyline', 'prefetch', 'radialGradient', 'rect', 'script', 'set', 'solidColor', 'switch', 'text', 'textArea', 'title', 'use', 'video']),

    'glyph': SVGElement('glyph',
    attributes=['about', 'arabic-form', 'class', 'content', 'd', 'datatype', 'glyph-name', 'horiz-adv-x', 'id', 'lang', 'property', 'rel', 'resource', 'rev', 'role', 'typeof', 'unicode', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
    properties=empty_list,
    children=['desc', 'metadata', 'switch', 'title']),

    'handler': SVGElement('handler',
    attributes=['about', 'class', 'content', 'datatype', 'ev:event', 'externalResourcesRequired', 'id', 'property', 'rel', 'resource', 'rev', 'role', 'type', 'typeof', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
    properties=empty_list,
    children=['desc', 'metadata', 'switch', 'title']),

    'hkern': SVGElement('hkern',
    attributes=['about', 'class', 'content', 'datatype', 'g1', 'g2', 'id', 'k', 'property', 'rel', 'resource', 'rev', 'role', 'typeof', 'u1', 'u2', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
    properties=empty_list,
    children=['desc', 'metadata', 'switch', 'title']),

    'image': SVGElement('image',
    attributes=['about', 'class', 'content', 'datatype', 'externalResourcesRequired', 'focusHighlight', 'focusable', 'height', 'id', 'nav-down', 'nav-down-left', 'nav-down-right', 'nav-left', 'nav-next', 'nav-prev', 'nav-right', 'nav-up', 'nav-up-left', 'nav-up-right', 'opacity', 'preserveAspectRatio', 'property', 'rel', 'requiredExtensions', 'requiredFeatures', 'requiredFonts', 'requiredFormats', 'resource', 'rev', 'role', 'systemLanguage', 'transform', 'type', 'typeof', 'width', 'x', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:id', 'xml:lang', 'xml:space', 'y'],
    properties=media_group_names,
    children=['animate', 'animateColor', 'animateMotion', 'animateTransform', 'desc', 'discard', 'handler', 'metadata', 'set', 'switch', 'title']),

    'line': SVGElement('line',
    attributes=['about', 'class', 'content', 'datatype', 'focusHighlight', 'focusable', 'id', 'nav-down', 'nav-down-left', 'nav-down-right', 'nav-left', 'nav-next', 'nav-prev', 'nav-right', 'nav-up', 'nav-up-left', 'nav-up-right', 'property', 'rel', 'requiredExtensions', 'requiredFeatures', 'requiredFonts', 'requiredFormats', 'resource', 'rev', 'role', 'systemLanguage', 'transform', 'typeof', 'x1', 'x2', 'xml:base', 'xml:id', 'xml:lang', 'xml:space', 'y1', 'y2'],
    properties=property_names,
    children=['animate', 'animateColor', 'animateMotion', 'animateTransform', 'desc', 'discard', 'handler', 'metadata', 'set', 'switch', 'title']),

    'linearGradient': SVGElement('linearGradient',
    attributes=['about', 'class', 'content', 'datatype', 'gradientUnits', 'id', 'property', 'rel', 'resource', 'rev', 'role', 'typeof', 'x1', 'x2', 'xml:base', 'xml:id', 'xml:lang', 'xml:space', 'y1', 'y2'],
    properties=property_names,
    children=['animate', 'animateColor', 'animateMotion', 'animateTransform', 'desc', 'discard', 'metadata', 'set', 'stop', 'switch', 'title']),

    'listener': SVGElement('listener',
    attributes=['about', 'class', 'content', 'datatype', 'defaultAction', 'event', 'handler', 'id', 'observer', 'phase', 'propagate', 'property', 'rel', 'resource', 'rev', 'role', 'target', 'typeof', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
    properties=empty_list,
    children=empty_list),

    'metadata': SVGElement('metadata',
    attributes=['about', 'class', 'content', 'datatype', 'id', 'property', 'rel', 'requiredExtensions', 'requiredFeatures', 'requiredFonts', 'requiredFormats', 'resource', 'rev', 'role', 'systemLanguage', 'typeof', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
    properties=media_group_names,
    children=empty_list),

    'missing-glyph': SVGElement('missing-glyph',
    attributes=['about', 'class', 'content', 'd', 'datatype', 'horiz-adv-x', 'id', 'property', 'rel', 'resource', 'rev', 'role', 'typeof', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
    properties=empty_list,
    children=['desc', 'metadata', 'switch', 'title']),

    'mpath': SVGElement('mpath',
    attributes=['about', 'class', 'content', 'datatype', 'id', 'property', 'rel', 'resource', 'rev', 'role', 'typeof', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
    properties=empty_list,
    children=['desc', 'metadata', 'switch', 'title']),

    'path': SVGElement('path',
    attributes=['about', 'class', 'content', 'd', 'datatype', 'focusHighlight', 'focusable', 'id', 'nav-down', 'nav-down-left', 'nav-down-right', 'nav-left', 'nav-next', 'nav-prev', 'nav-right', 'nav-up', 'nav-up-left', 'nav-up-right', 'pathLength', 'property', 'rel', 'requiredExtensions', 'requiredFeatures', 'requiredFonts', 'requiredFormats', 'resource', 'rev', 'role', 'systemLanguage', 'transform', 'typeof', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
    properties=property_names,
    children=['animate', 'animateColor', 'animateMotion', 'animateTransform', 'desc', 'discard', 'handler', 'metadata', 'set', 'switch', 'title']),

    'polygon': SVGElement('polygon',
    attributes=['about', 'class', 'content', 'datatype', 'focusHighlight', 'focusable', 'id', 'nav-down', 'nav-down-left', 'nav-down-right', 'nav-left', 'nav-next', 'nav-prev', 'nav-right', 'nav-up', 'nav-up-left', 'nav-up-right', 'points', 'property', 'rel', 'requiredExtensions', 'requiredFeatures', 'requiredFonts', 'requiredFormats', 'resource', 'rev', 'role', 'systemLanguage', 'transform', 'typeof', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
    properties=property_names,
    children=['animate', 'animateColor', 'animateMotion', 'animateTransform', 'desc', 'discard', 'handler', 'metadata', 'set', 'switch', 'title']),

    'polyline': SVGElement('polyline',
    attributes=['about', 'class', 'content', 'datatype', 'focusHighlight', 'focusable', 'id', 'nav-down', 'nav-down-left', 'nav-down-right', 'nav-left', 'nav-next', 'nav-prev', 'nav-right', 'nav-up', 'nav-up-left', 'nav-up-right', 'points', 'property', 'rel', 'requiredExtensions', 'requiredFeatures', 'requiredFonts', 'requiredFormats', 'resource', 'rev', 'role', 'systemLanguage', 'transform', 'typeof', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
    properties=property_names,
    children=['animate', 'animateColor', 'animateMotion', 'animateTransform', 'desc', 'discard', 'handler', 'metadata', 'set', 'switch', 'title']),

    'prefetch': SVGElement('prefetch',
    attributes=['about', 'bandwidth', 'class', 'content', 'datatype', 'id', 'mediaCharacterEncoding', 'mediaContentEncodings', 'mediaSize', 'mediaTime', 'property', 'rel', 'resource', 'rev', 'role', 'typeof', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
    properties=empty_list,
    children=['desc', 'metadata', 'switch', 'title']),

    'radialGradient': SVGElement('radialGradient',
    attributes=['about', 'class', 'content', 'cx', 'cy', 'datatype', 'gradientUnits', 'id', 'property', 'r', 'rel', 'resource', 'rev', 'role', 'typeof', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
    properties=property_names,
    children=['animate', 'animateColor', 'animateMotion', 'animateTransform', 'desc', 'discard', 'metadata', 'set', 'stop', 'switch', 'title']),

    'rect': SVGElement('rect',
    attributes=['about', 'class', 'content', 'datatype', 'focusHighlight', 'focusable', 'height', 'id', 'nav-down', 'nav-down-left', 'nav-down-right', 'nav-left', 'nav-next', 'nav-prev', 'nav-right', 'nav-up', 'nav-up-left', 'nav-up-right', 'property', 'rel', 'requiredExtensions', 'requiredFeatures', 'requiredFonts', 'requiredFormats', 'resource', 'rev', 'role', 'rx', 'ry', 'systemLanguage', 'transform', 'typeof', 'width', 'x', 'xml:base', 'xml:id', 'xml:lang', 'xml:space', 'y'],
    properties=property_names,
    children=['animate', 'animateColor', 'animateMotion', 'animateTransform', 'desc', 'discard', 'handler', 'metadata', 'set', 'switch', 'title']),

    'script': SVGElement('script',
    attributes=['about', 'class', 'content', 'datatype', 'externalResourcesRequired', 'id', 'property', 'rel', 'resource', 'rev', 'role', 'type', 'typeof', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
    properties=empty_list,
    children=['desc', 'metadata', 'switch', 'title']),

    'set': SVGElement('set',
    attributes=['about', 'attributeName', 'attributeType', 'begin', 'class', 'content', 'datatype', 'dur', 'end', 'fill', 'id', 'max', 'min', 'property', 'rel', 'repeatCount', 'repeatDur', 'requiredExtensions', 'requiredFeatures', 'requiredFonts', 'requiredFormats', 'resource', 'restart', 'rev', 'role', 'systemLanguage', 'to', 'typeof', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
    properties=empty_list,
    children=['desc', 'handler', 'metadata', 'switch', 'title']),

    'solidColor': SVGElement('solidColor',
    attributes=['about', 'class', 'content', 'datatype', 'id', 'property', 'rel', 'resource', 'rev', 'role', 'typeof', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
    properties=property_names,
    children=['animate', 'animateColor', 'animateMotion', 'animateTransform', 'desc', 'discard', 'handler', 'metadata', 'set', 'switch', 'title']),

    'stop': SVGElement('stop',
    attributes=['about', 'class', 'content', 'datatype', 'id', 'offset', 'property', 'rel', 'resource', 'rev', 'role', 'typeof', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
    properties=property_names,
    children=['animate', 'animateColor', 'animateMotion', 'animateTransform', 'desc', 'discard', 'metadata', 'set', 'switch', 'title']),

    'svg': SVGElement('svg',
    attributes=['about', 'baseProfile', 'class', 'content', 'contentScriptType', 'datatype', 'externalResourcesRequired', 'focusHighlight', 'focusable', 'height', 'id', 'nav-down', 'nav-down-left', 'nav-down-right', 'nav-left', 'nav-next', 'nav-prev', 'nav-right', 'nav-up', 'nav-up-left', 'nav-up-right', 'playbackOrder', 'preserveAspectRatio', 'property', 'rel', 'resource', 'rev', 'role', 'snapshotTime', 'syncBehaviorDefault', 'syncToleranceDefault', 'timelineBegin', 'transform', 'typeof', 'version', 'viewBox', 'width', 'xml:base', 'xml:id', 'xml:lang', 'xml:space', 'xmlns', 'xmlns:xlink', 'xmlns:ev', 'zoomAndPan'],
    properties=property_names,
    children=['a', 'animate', 'animateColor', 'animateMotion', 'animateTransform', 'animation', 'audio', 'circle', 'defs', 'desc', 'discard', 'ellipse', 'font', 'font-face', 'foreignObject', 'g', 'handler', 'image', 'line', 'linearGradient', 'listener', 'metadata', 'path', 'polygon', 'polyline', 'prefetch', 'radialGradient', 'rect', 'script', 'set', 'solidColor', 'switch', 'text', 'textArea', 'title', 'use', 'video']),

    'switch': SVGElement('switch',
    attributes=['about', 'class', 'content', 'datatype', 'externalResourcesRequired', 'focusHighlight', 'focusable', 'id', 'nav-down', 'nav-down-left', 'nav-down-right', 'nav-left', 'nav-next', 'nav-prev', 'nav-right', 'nav-up', 'nav-up-left', 'nav-up-right', 'property', 'rel', 'requiredExtensions', 'requiredFeatures', 'requiredFonts', 'requiredFormats', 'resource', 'rev', 'role', 'systemLanguage', 'transform', 'typeof', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
    properties=property_names,
    children=['likeparent', 'set', 'textArea', 'text', 'image', 'missing-glyph', 'font-face', 'video', 'path', 'animate', 'font', 'ellipse', 'glyph', 'use', 'font-face-src', 'polygon', 'script', 'handler', 'circle', 'radialGradient', 'prefetch', 'defs', 'mpath', 'stop', 'animateMotion', 'animateColor', 'discard', 'solidColor', 'hkern', 'line', 'animation', 'rect', 'g', 'svg', 'animateTransform', 'linearGradient', 'font-face-uri', 'foreignObject', 'polyline', 'audio']),

    'tbreak': SVGElement('tbreak',
    attributes=['about', 'class', 'content', 'datatype', 'id', 'property', 'rel', 'requiredExtensions', 'requiredFeatures', 'requiredFonts', 'requiredFormats', 'resource', 'rev', 'role', 'systemLanguage', 'typeof', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
    properties=empty_list,
    children=empty_list),

    'text': SVGElement('text',
    attributes=['about', 'class', 'content', 'datatype', 'editable', 'focusHighlight', 'focusable', 'id', 'nav-down', 'nav-down-left', 'nav-down-right', 'nav-left', 'nav-next', 'nav-prev', 'nav-right', 'nav-up', 'nav-up-left', 'nav-up-right', 'property', 'rel', 'requiredExtensions', 'requiredFeatures', 'requiredFonts', 'requiredFormats', 'resource', 'rev', 'role', 'rotate', 'systemLanguage', 'transform', 'typeof', 'x', 'xml:base', 'xml:id', 'xml:lang', 'xml:space', 'y'],
    properties=property_names,
    children=['a', 'animate', 'animateColor', 'animateMotion', 'animateTransform', 'desc', 'discard', 'handler', 'metadata', 'set', 'switch', 'title', 'tspan']),

    'textArea': SVGElement('textArea',
    attributes=['about', 'class', 'content', 'datatype', 'editable', 'focusHighlight', 'focusable', 'height', 'id', 'nav-down', 'nav-down-left', 'nav-down-right', 'nav-left', 'nav-next', 'nav-prev', 'nav-right', 'nav-up', 'nav-up-left', 'nav-up-right', 'property', 'rel', 'requiredExtensions', 'requiredFeatures', 'requiredFonts', 'requiredFormats', 'resource', 'rev', 'role', 'systemLanguage', 'transform', 'typeof', 'width', 'x', 'xml:base', 'xml:id', 'xml:lang', 'xml:space', 'y'],
    properties=property_names,
    children=['a', 'animate', 'animateColor', 'animateMotion', 'animateTransform', 'desc', 'discard', 'handler', 'metadata', 'set', 'switch', 'tbreak', 'title', 'tspan']),

    'title': SVGElement('title',
    attributes=['about', 'class', 'content', 'datatype', 'id', 'property', 'rel', 'requiredExtensions', 'requiredFeatures', 'requiredFonts', 'requiredFormats', 'resource', 'rev', 'role', 'systemLanguage', 'typeof', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
    properties=media_group_names,
    children=empty_list),

    'tspan': SVGElement('tspan',
    attributes=['about', 'class', 'content', 'datatype', 'focusHighlight', 'focusable', 'id', 'nav-down', 'nav-down-left', 'nav-down-right', 'nav-left', 'nav-next', 'nav-prev', 'nav-right', 'nav-up', 'nav-up-left', 'nav-up-right', 'property', 'rel', 'requiredExtensions', 'requiredFeatures', 'requiredFonts', 'requiredFormats', 'resource', 'rev', 'role', 'systemLanguage', 'typeof', 'xml:base', 'xml:id', 'xml:lang', 'xml:space'],
    properties=property_names,
    children=['likeparent', 'text', 'textArea']),

    'use': SVGElement('use',
    attributes=['about', 'class', 'content', 'datatype', 'externalResourcesRequired', 'focusHighlight', 'focusable', 'id', 'nav-down', 'nav-down-left', 'nav-down-right', 'nav-left', 'nav-next', 'nav-prev', 'nav-right', 'nav-up', 'nav-up-left', 'nav-up-right', 'property', 'rel', 'requiredExtensions', 'requiredFeatures', 'requiredFonts', 'requiredFormats', 'resource', 'rev', 'role', 'systemLanguage', 'transform', 'typeof', 'x', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:id', 'xml:lang', 'xml:space', 'y'],
    properties=property_names,
    children=['animate', 'animateColor', 'animateMotion', 'animateTransform', 'desc', 'discard', 'handler', 'metadata', 'set', 'switch', 'title']),

    'video': SVGElement('video',
    attributes=['about', 'begin', 'class', 'content', 'datatype', 'dur', 'end', 'externalResourcesRequired', 'fill', 'focusHighlight', 'focusable', 'height', 'id', 'initialVisibility', 'max', 'min', 'nav-down', 'nav-down-left', 'nav-down-right', 'nav-left', 'nav-next', 'nav-prev', 'nav-right', 'nav-up', 'nav-up-left', 'nav-up-right', 'overlay', 'preserveAspectRatio', 'property', 'rel', 'repeatCount', 'repeatDur', 'requiredExtensions', 'requiredFeatures', 'requiredFonts', 'requiredFormats', 'resource', 'restart', 'rev', 'role', 'syncBehavior', 'syncMaster', 'syncTolerance', 'systemLanguage', 'transform', 'transformBehavior', 'type', 'typeof', 'width', 'x', 'xlink:actuate', 'xlink:arcrole', 'xlink:href', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type', 'xml:base', 'xml:id', 'xml:lang', 'xml:space', 'y'],
    properties=media_group_names,
    children=['animate', 'animateColor', 'animateMotion', 'animateTransform', 'desc', 'discard', 'handler', 'metadata', 'set', 'switch', 'title']),
}
b IDATxytVսϓ22 A@IR :hCiZ[v*E:WũZA ^dQeQ @ !jZ'>gsV仿$|?g)&x-EIENT ;@xT.i%-X}SvS5.r/UHz^_$-W"w)Ɗ/@Z &IoX P$K}JzX:;` &, ŋui,e6mX ԵrKb1ԗ)DADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADA݀!I*]R;I2$eZ#ORZSrr6mteffu*((Pu'v{DIߔ4^pIm'77WEEE;vƎ4-$]'RI{\I&G :IHJ DWBB=\WR޽m o$K(V9ABB.}jѢv`^?IOȅ} ڶmG}T#FJ`56$-ھ}FI&v;0(h;Б38CӧOWf!;A i:F_m9s&|q%=#wZprrrla A &P\\СC[A#! {olF} `E2}MK/vV)i{4BffV\|ۭX`b@kɶ@%i$K z5zhmX[IXZ` 'b%$r5M4º/l ԃߖxhʔ)[@=} K6IM}^5k㏷݆z ΗÿO:gdGBmyT/@+Vɶ纽z񕏵l.y޴it뭷zV0[Y^>Wsqs}\/@$(T7f.InݺiR$푔n.~?H))\ZRW'Mo~v Ov6oԃxz! S,&xm/yɞԟ?'uaSѽb,8GלKboi&3t7Y,)JJ c[nzӳdE&KsZLӄ I?@&%ӟ۶mSMMњ0iؐSZ,|J+N ~,0A0!5%Q-YQQa3}$_vVrf9f?S8`zDADADADADADADADADAdqP,تmMmg1V?rSI꒟]u|l RCyEf٢9 jURbztѰ!m5~tGj2DhG*{H9)꒟ר3:(+3\?/;TUݭʴ~S6lڧUJ*i$d(#=Yݺd{,p|3B))q:vN0Y.jkק6;SɶVzHJJЀ-utѹսk>QUU\޲~]fFnK?&ߡ5b=z9)^|u_k-[y%ZNU6 7Mi:]ۦtk[n X(e6Bb."8cۭ|~teuuw|ήI-5"~Uk;ZicEmN/:]M> cQ^uiƞ??Ңpc#TUU3UakNwA`:Y_V-8.KKfRitv޲* 9S6ֿj,ՃNOMߤ]z^fOh|<>@Å5 _/Iu?{SY4hK/2]4%it5q]GGe2%iR| W&f*^]??vq[LgE_3f}Fxu~}qd-ږFxu~I N>\;͗O֊:̗WJ@BhW=y|GgwܷH_NY?)Tdi'?խwhlmQi !SUUsw4kӺe4rfxu-[nHtMFj}H_u~w>)oV}(T'ebʒv3_[+vn@Ȭ\S}ot}w=kHFnxg S 0eޢm~l}uqZfFoZuuEg `zt~? b;t%>WTkķh[2eG8LIWx,^\thrl^Ϊ{=dž<}qV@ ⠨Wy^LF_>0UkDuʫuCs$)Iv:IK;6ֲ4{^6եm+l3>݆uM 9u?>Zc }g~qhKwڭeFMM~pМuqǿz6Tb@8@Y|jx](^]gf}M"tG -w.@vOqh~/HII`S[l.6nØXL9vUcOoB\xoǤ'T&IǍQw_wpv[kmO{w~>#=P1Pɞa-we:iǏlHo׈꒟f9SzH?+shk%Fs:qVhqY`jvO'ρ?PyX3lх]˾uV{ݞ]1,MzYNW~̈́ joYn}ȚF߾׮mS]F z+EDxm/d{F{-W-4wY듏:??_gPf ^3ecg ҵs8R2מz@TANGj)}CNi/R~}c:5{!ZHӋӾ6}T]G]7W6^n 9*,YqOZj:P?Q DFL|?-^.Ɵ7}fFh׶xe2Pscz1&5\cn[=Vn[ĶE鎀uˌd3GII k;lNmشOuuRVfBE]ۣeӶu :X-[(er4~LHi6:Ѻ@ԅrST0trk%$Č0ez" *z"T/X9|8.C5Feg}CQ%͞ˣJvL/?j^h&9xF`њZ(&yF&Iݻfg#W;3^{Wo^4'vV[[K';+mӍִ]AC@W?1^{එyh +^]fm~iԵ]AB@WTk̏t uR?l.OIHiYyԶ]Aˀ7c:q}ힽaf6Z~қm(+sK4{^6}T*UUu]n.:kx{:2 _m=sAߤU@?Z-Vކеz왍Nэ{|5 pڶn b p-@sPg]0G7fy-M{GCF'%{4`=$-Ge\ eU:m+Zt'WjO!OAF@ik&t݆ϥ_ e}=]"Wz_.͜E3leWFih|t-wZۍ-uw=6YN{6|} |*={Ѽn.S.z1zjۻTH]흾 DuDvmvK.`V]yY~sI@t?/ϓ. m&["+P?MzovVЫG3-GRR[(!!\_,^%?v@ҵő m`Y)tem8GMx.))A]Y i`ViW`?^~!S#^+ѽGZj?Vģ0.))A꨷lzL*]OXrY`DBBLOj{-MH'ii-ϰ ok7^ )쭡b]UXSְmռY|5*cֽk0B7镹%ڽP#8nȎq}mJr23_>lE5$iwui+ H~F`IjƵ@q \ @#qG0".0" l`„.0! ,AQHN6qzkKJ#o;`Xv2>,tێJJ7Z/*A .@fفjMzkg @TvZH3Zxu6Ra'%O?/dQ5xYkU]Rֽkق@DaS^RSּ5|BeHNN͘p HvcYcC5:y #`οb;z2.!kr}gUWkyZn=f Pvsn3p~;4p˚=ē~NmI] ¾ 0lH[_L hsh_ғߤc_њec)g7VIZ5yrgk̞W#IjӪv>՞y睝M8[|]\շ8M6%|@PZڨI-m>=k='aiRo-x?>Q.}`Ȏ:Wsmu u > .@,&;+!!˱tﭧDQwRW\vF\~Q7>spYw$%A~;~}6¾ g&if_=j,v+UL1(tWake:@Ș>j$Gq2t7S?vL|]u/ .(0E6Mk6hiۺzښOrifޱxm/Gx> Lal%%~{lBsR4*}{0Z/tNIɚpV^#Lf:u@k#RSu =S^ZyuR/.@n&΃z~B=0eg뺆#,Þ[B/?H uUf7y Wy}Bwegל`Wh(||`l`.;Ws?V@"c:iɍL֯PGv6zctM̠':wuW;d=;EveD}9J@B(0iհ bvP1{\P&G7D޴Iy_$-Qjm~Yrr&]CDv%bh|Yzni_ˆR;kg}nJOIIwyuL}{ЌNj}:+3Y?:WJ/N+Rzd=hb;dj͒suݔ@NKMԄ jqzC5@y°hL m;*5ezᕏ=ep XL n?מ:r`۵tŤZ|1v`V뽧_csج'ߤ%oTuumk%%%h)uy]Nk[n 'b2 l.=͜E%gf$[c;s:V-͞WߤWh-j7]4=F-X]>ZLSi[Y*We;Zan(ӇW|e(HNNP5[= r4tP &0<pc#`vTNV GFqvTi*Tyam$ߏWyE*VJKMTfFw>'$-ؽ.Ho.8c"@DADADADADADADADADA~j*֘,N;Pi3599h=goضLgiJ5փy~}&Zd9p֚ e:|hL``b/d9p? fgg+%%hMgXosج, ΩOl0Zh=xdjLmhݻoO[g_l,8a]٭+ӧ0$I]c]:粹:Teꢢ"5a^Kgh,&= =՟^߶“ߢE ܹS J}I%:8 IDAT~,9/ʃPW'Mo}zNƍ쨓zPbNZ~^z=4mswg;5 Y~SVMRXUյڱRf?s:w ;6H:ºi5-maM&O3;1IKeamZh͛7+##v+c ~u~ca]GnF'ټL~PPPbn voC4R,ӟgg %hq}@#M4IÇ Oy^xMZx ) yOw@HkN˖-Sǎmb]X@n+i͖!++K3gd\$mt$^YfJ\8PRF)77Wא!Cl$i:@@_oG I{$# 8磌ŋ91A (Im7֭>}ߴJq7ޗt^ -[ԩSj*}%]&' -ɓ'ꫯVzzvB#;a 7@GxI{j޼ƌ.LÇWBB7`O"I$/@R @eee@۷>}0,ɒ2$53Xs|cS~rpTYYY} kHc %&k.], @ADADADADADADADADA@lT<%''*Lo^={رc5h %$+CnܸQ3fҥK}vUVVs9G R,_{xˇ3o߾;TTTd}馛]uuuG~iԩ@4bnvmvfϞ /Peeeq}}za I~,誫{UWW뮻}_~YƍSMMMYχ֝waw\ďcxꩧtEƍկ_?۷5@u?1kNׯWzz/wy>}zj3 k(ٺuq_Zvf̘:~ ABQ&r|!%KҥKgԞ={<_X-z !CyFUUz~ ABQIIIjݺW$UXXDٳZ~ ABQƍecW$<(~<RSSvZujjjԧOZQu@4 8m&&&jԩg$ď1h ͟?_{768@g =@`)))5o6m3)ѣƌJ;wҿUTT /KZR{~a=@0o<*狔iFɶ[ˎ;T]]OX@?K.ۈxN pppppppppppppppppPfl߾] ,{ァk۶mڿo5BTӦMӴiӴ|r DB2e|An!Dy'tkΝ[A $***t5' "!駟oaDnΝ:t֭[gDШQ06qD;@ x M6v(PiizmZ4ew"@̴ixf [~-Fٱc&IZ2|n!?$@{[HTɏ#@hȎI# _m(F /6Z3z'\r,r!;w2Z3j=~GY7"I$iI.p_"?pN`y DD?: _  Gÿab7J !Bx@0 Bo cG@`1C[@0G @`0C_u V1 aCX>W ` | `!<S `"<. `#c`?cAC4 ?c p#~@0?:08&_MQ1J h#?/`7;I  q 7a wQ A 1 Hp !#<8/#@1Ul7=S=K.4Z?E_$i@!1!E4?`P_  @Bă10#: "aU,xbFY1 [n|n #'vEH:`xb #vD4Y hi.i&EΖv#O H4IŶ}:Ikh @tZRF#(tXҙzZ ?I3l7q@õ|ۍ1,GpuY Ꮿ@hJv#xxk$ v#9 5 }_$c S#=+"K{F*m7`#%H:NRSp6I?sIՖ{Ap$I$I:QRv2$Z @UJ*$]<FO4IENDB`